在我的iPhone应用程序中,我可以在应用程序的设置中成功更改语言(只需用户重新启动应用程序)。我使用了这篇文章中提到的技巧:link。我做了一些修改。我将所选语言存储在NSUserDefaults和main.m中:
int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
if ( [[NSUserDefaults standardUserDefaults] objectForKey:@"language"] == nil ) {
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"hu"] forKey:@"AppleLanguages"];
} else {
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:[[NSUserDefaults standardUserDefaults] objectForKey:@"language"]] forKey:@"AppleLanguages"];
}
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
“默认”Info.plist文件是英文的,我把它放在项目的根目录中。因为应用程序名称,我对此进行了匈牙利语翻译。这个文件是InfoPlist.strings,我把它放在hu.lproj文件夹中。在这个文件中:
CFBundleDisplayName = "Sör";
如果我更改语言,重新启动应用程序后,除应用程序名称外,一切正常(nib文件,字符串)。它不会改变......
有人可以告诉我这是什么问题吗?
答案 0 :(得分:1)
你已经完成几乎你需要做的一切。
您还需要指示您的应用具有本地化的应用名称。您可以通过将以下密钥添加到应用程序的info.plist
来完成此操作LSHasLocalizedDisplayName
将其类型设置为布尔值,并将其值设置为true。
完成此操作后,您的应用应本地化其名称。
您可以阅读更多here
编辑:
您需要做的另一件事是在en.lproj文件夹中创建一个InfoPlist.strings文件,并使用相同的英语为其添加相同的密钥
CFBundleDisplayName = "<Replace Me>";
此添加的信用将转至this link
答案 1 :(得分:0)
应用程序名称由iOS读取,未设置为应用程序设置的语言。 因此,它将显示为系统语言设置的应用程序名称。