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

标签 iphone localization plist

有人可以告诉我如何找到问题吗? 我有一个名为“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/

相关文章:

iphone - 自动化 iPhone 应用程序的特定状态

controller - 如何从Laravel 5中的 Controller 访问我的lang文件

r-markdown:德语引号将 HTML 文档中的粗体文本分隔开

c# - 如何检测一个字符是否属于从右到左的语言?

ios - 如何将 plist 填充到 UITableView - ios

ios - 通过 UIButton 将数据传递到另一个 Controller 上的 UITableView

ios - 如何构建 .ipa 并将其从 xcode 安装到 iphone 上?

iphone - 游戏中心好友列表

objective-c - cocoa Objective-C关于原子保存plist的问题

iphone - 当单元格尚未构建时,如何计算 heightForRowAtIndexPath?