无法本地化infoplist.strings

时间:2012-02-04 14:08:31

标签: iphone xcode

我尝试使用推荐的InfoPlist.strings

向Info.plist添加本地化值

我是否还需要将密钥保存在Info.plist中?

我的信息列表

 <key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>

我的本​​地化字符串

en.proj
  -> InfoPlist.strings
    /* Localized versions of Info.plist keys */ 
    CFBundleName = "ABC-EN";

it.proj
  -> InfoPlist.strings
    /* Localized versions of Info.plist keys */ 
    CFBundleName = "ABC-IT";

如果我将密钥保存在Info.Plist中,如上所述,在代码中,一个应该具有键值的变量

_localisedName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];

返回Info.plist(myApp)中的字符串 如果我从Info.plist中删除CFBundleName,则字符串为&lt; nil&gt;

我还缺少另一种设置? 我尝试在复制包中添加和删除这两个文件(没有任何更改)。

2 个答案:

答案 0 :(得分:4)

搜索它相当“复杂”,但我最终发现它,我希望它对其他人有用

_localisedName = [[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:@"CFBundleName"];

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/Reference/Reference.html#//apple_ref/occ/instm/NSBundle/localizedInfoDictionary

  

<强> localizedInfoDictionary

     

使用bundle的本地化属性列表中的键返回一个字典。

     
      
  • (NSDictionary *)localizedInfoDictionary
  •   
     

返回值   包含来自bundle的本地化属性列表(InfoPlist.strings)的键的字典。

     

<强>讨论

     

此方法在确定要返回的资源时使用当前用户的首选本地化。如果首选本地化不可用,则此方法会选择捆绑包中最合适的本地化。

答案 1 :(得分:0)

你没有错过任何设置,你正在调用错误的方法。您需要调用其中一个本地化的字符串方法,例如:

_localisedName = NSLocalizedString(@"CFBundleName", nil);