试图读取InfoPlist.strings文件...获取密钥(?)

时间:2016-02-11 20:03:55

标签: ios localization nsbundle

许多人不知道,在iOS和OSX上本地化应用程序名称的方法是在包中添加InfoPlist.strings文件并本地化该文件。人们将此文件与Info.Plist文件混合在一起。未在Info.plist中完成本地化,在InfoPlist.strings文件中完成。

说,我用两个键创建了这个文件:CFBundleDisplayNameCFBundleName,就像我一直做的那样。这非常有效,您可以在不同的本地化中为您的应用定义不同的名称。此文件无缝地工作。您不必做任何事情,只需将文件添加到项目并进行本地化即可。

InfoPlist.strings是一个像这样的字符串文件:

"CFBundleDisplayName" = "My Localized App Name";
"CFBundleName" = "My Localized App Name";

特别是对于这个项目,我还要在运行时读取CFBundleDisplayName的值。

我试过使用这段代码:

NSString *appName = [[NSBundle mainBundle] localizedStringForKey:@"CFBundleDisplayName" value:nil table:@"InfoPlist"];

读取CFBundleDisplayName键但我得到的值是CFBundleDisplayName。换句话说,我提供密钥并接收密钥,而不是值。我应该收到My Localized App Name

我错过了什么?

1 个答案:

答案 0 :(得分:2)

我在Swift中做到了这一点,它按预期工作。

let appname = NSBundle.mainBundle().localizedStringForKey("CFBundleDisplayName", value: nil, table: "InfoPlist")

但是,如果我从相应的InfoPlist.strings文件中删除de localization string,则返回" CFBundleDisplayName"

因此,请检查您是否遗漏了.strings个文件

中的内容
  

尝试了几种可能性后......

BUG是"项目内的第二个InfoPlist.strings副本"