在我的iPhone应用程序中,我可以成功更改应用程序设置中的语言(仅用户必须重新启动应用程序)。我使用这篇文章中提到的技巧:link。我做了一些修改。我所选择的语言中存储NSUserDefaults的,并在main.m文件:在应用程序设置中设置iPhone应用程序语言,但应用程序名称不变
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";
如果我改变了语言,之后重新启动应用程序,一切工作正常(笔尖文件,字符串),除了应用程序的名称。它不会改变...
有人可以告诉我什么是问题?
是的,你是对的,但是如果我把这个键添加到Info.plist中,不会发生任何事情。在文档中,它是什么意思:“访问本地显示名称信息的函数在检索信息之前检查是否存在此键”? – madik
请参阅上面对我的回答的编辑 –
我有一个关于编辑答案的问题。我提到过,我在项目的根目录下有一个Info.plist文件,在构建设置中,我指向该文件。在这个文件中,应用程序的名称也有一个关键。直到现在,我在hu.lproj文件夹中只有一个InfoPlist.strings文件,并将该文件添加到项目中。现在我必须本地化这个文件(并且这个'操作'的结果是,在正确的文件夹中会有两个InfoPlist.strings文件)? – madik