有人可以告诉我如何找到问题吗? 我有一个名为“MyApp”的应用程序。我想将应用程序名称本地化为德语。我在主项目目录中有一个目录 de.lproj 。它包含一个文件 Localized.strings 并且工作正常。 我添加了一个 InfoPlist.strings 文件,并在其中放置:
CFBundleDisplayName = "应用程序名称";
但它不会显示翻译名称,它保留在“MyApp”上。这是我迄今为止尝试过的:
- 三重拼写和大小写检查
- 全部清理
- 从设备和中删除应用程序 模拟器
- 删除模拟器中的用户目录
- 更改了 MyApp-Info.plist 中的英文应用程序名称 - 有效。
- 重读我能在其中找到的所有内容 苹果的文档和大量的谷歌搜索,证实了这一点 它应该有效。
无论我尝试什么,应用程序名称都是来自 MyApp-Info.plist 的名称。 我还将其记录在应用程序委托(delegate)中:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
NSString *currentLanguage = [languages objectAtIndex:0];
NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *info = [bundle infoDictionary];
NSString *prodName = [info objectForKey:@"CFBundleDisplayName"];
NSLog(@"Product Name:%@",prodName);
NSLog(@"Current Locale: %@", [[NSLocale currentLocale] localeIdentifier]);
NSLog(@"Current language: %@", currentLanguage);
输出是:
2010-12-08 12:51:00.886 MyApp[25148:207] Product Name:MyApp
2010-12-08 12:51:00.946 MyApp[25148:207] Current Locale: de_DE
2010-12-08 12:51:00.946 MyApp[25148:207] Current language: de
所以语言设置是正确的,但应用程序不会读取 InfoPlist.strings 文件? 有什么想法如何从这里继续吗?
预先感谢您的回复。
最佳答案
就我而言,我的 Xcode 项目仅具有以下本地化内容:
- 英语(开发语言)
- 日语
(并选中“使用基础国际化”)
...但我的 InfoPlist.strings 文件仅具有以下本地化内容:
- 基础
- 日语
当我添加该文件的英文版本后,它就开始工作了。 在此之前,无论我尝试什么,应用程序图标都会显示目标名称(产品名称)。
我假设“Base”作为默认值(即“未明确支持的所有语言”),但实际行为似乎更复杂......
希望这对某人有帮助。
关于iphone - 无论我尝试什么,CFBundleDisplayName 的本地化都不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4387294/