NSLocalizableString和info.plist

时间:2013-06-10 12:23:37

标签: info.plist nslocalizedstring

我正在创建这个iOS应用程序,我在其中使用PushWoosh(www.pushwoosh.com)通知服务。通知工作正常,但现在我想区分基于应用程序的区域设置的通知:我希望运行其英文操作系统的应用程序的用户接收英语通知,德语用户等。 为此,我使用PushWoosh多次注册这个应用程序,因此每个本地化都有自己的Pushwoosh App ID。为简单起见,我的目标是将所有本地化内容放在一个文件中(“localizable.strings”)。 PushWoosh要求在info.plist中列出他们的APPID。那么对我来说有意义的是将PushWoosh .plist键的值本地化。这就是我所做的:

在.plist中,我替换了

<key>Pushwoosh_APPID</key>
<string>2B46A-F82CC</string>

<key>Pushwoosh_APPID</key>
<string>PUSHWOOSH_ID</string>

然后,在localizable.strings中,我添加了以下条目:

"PUSHWOOSH_ID" = "2B46A-F82CC";

最后,在代码中,我替换了

[[NSUserDefaults standardUserDefaults] setObject:appCode forKey:@"Pushwoosh_APPID"];

[[NSUserDefaults standardUserDefaults] setObject:appCode forKey:NSLocalizedString(@"Pushwoosh_APPID", nil)];

然而,不知何故,在运行应用程序时,“Pushwoosh_APPID”会解析为“PUSHWOOSH_ID”,而不是“2B46A-F82CC”。

localizable.strings中的所有其他字符串都被称为正常,所以我猜这是一个语法问题。

具体问题:我做错了什么,代码明智?另外,如果这是一种不受欢迎的方法,请拍我。

提前致谢!

2 个答案:

答案 0 :(得分:0)

为了本地化Info.plist值,您需要在特定于语言的项目目录下创建一个名为InfoPlist.strings的单独的字符串文件,例如en.lproj等,并将密钥和翻译的值放在那里,例如:

Pushwoosh_APPID = "2B46A-F82CC";

查看reference of Information Property List Key

  

...您将特定本地化的值存储在字符串文件中   名称为InfoPlist.strings。您将此文件放在同一个文件中   特定于语言的项目目录,用于存储其他目录   同一本地化的资源。的内容   InfoPlist.strings文件是您想要本地化的各个键   适当翻译的价值。查找键的例程   Info.plist文件中的值采用用户的语言首选项   考虑并返回密钥的本地化版本(来自   适当的InfoPlist.strings文件)当存在时。如果是本地化的   一个键的版本不存在,例程返回存储的值   在Info.plist文件中。

答案 1 :(得分:0)

FYI Pushwoosh提供多语言支持,用于在操作系统中设置的语言发送通知。它基于标签,可以通过控制面板和API使用。我想如果不重新发明轮子会更容易:)