无论我尝试什么,CFBundleDisplayName的本地化都不起作用

时间:2010-12-08 12:15:01

标签: iphone localization plist

有人可以告诉我如何找到问题。 我有一个名为“MyApp”的应用程序。我想将应用名称本地化为德语。我在主项目目录中有一个目录de.lproj。它包含一个文件Localizable.strings,并且工作正常。 我添加了一个InfoPlist.strings文件,在那里我放了:

CFBundleDisplayName =“Applikationsname”;

但它不会显示已翻译的名称,它会保留在“MyApp”上。这是我到目前为止所尝试的:

  • 三重检查拼写和大写
  • 全部清理
  • 从设备中删除应用 模拟器
  • 在模拟器中删除用户目录
  • 更改了MyApp-Info.plist中的英文应用名称 - 这有效。
  • 重读我能找到的任何内容 苹果文档和大量的谷歌搜索,确认 它应该工作。

无论我尝试了什么,应用程序名称都来自MyApp-Info.plist。 我还在app 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文件? 任何想法如何从这里继续?

提前感谢您的回复。

3 个答案:

答案 0 :(得分:4)

就我而言,我的Xcode项目只有以下的本地化:

  • 英语(发展语言)
  • 日本

(并选中“使用基准国际化”)

...但我的InfoPlist.strings文件只有以下版本的本地化版本:

  • 日本

一旦我添加了该文件的英文版本,它就开始工作了。  在此之前,无论我尝试什么,应用程序图标都会显示目标名称(产品名称)。

我假设“Base”作为默认值(即“所有语言不明确支持”),但似乎实际行为更复杂......

希望这有助于某人。

答案 1 :(得分:1)

好吧,它似乎终于有效了。我想我用错误的方式创建了InfoPlist.strings: 从“资源”选项卡中选择字符串文件,并将de.lproj指定为目标文件夹。

删除文件并在项目根目录中创建新文件后,创建可本地化的版本就可以了。 如果有人发现这一点,请注意您还必须编辑en.lproj中的相应文件。

答案 2 :(得分:1)

我今天解决了这个问题。您应该使用NSBundle的{​​{1}}方法来获取字典,因此您可以获取CFBundleDislplayName的本地化字符串