我正在创建这个使用PushWoosh (www.pushwoosh.com)通知服务的iOS应用程序。通知工作正常,但现在我想根据应用程序的区域设置来区分通知:我希望运行英语操作系统的应用程序的用户收到英语的通知,德语用户收到德语的通知,等等。为此,我在PushWoosh上注册了几次这个应用程序,因此每个本地化程序都有自己的Pushwoosh应用程序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中的所有其他字符串都被调用得很好,所以我猜这是一个语法问题。
具体问题:我在代码方面做错了什么?另外,如果这通常是一种不受欢迎的方法,请杀了我。
提前感谢!
发布于 2013-06-10 21:47:08
为了本地化Info.plist值,您需要在特定于语言的项目目录(如en.lproj等)下创建一个名为InfoPlist.strings的单独字符串文件,并将键和翻译后的值放在那里,例如:
Pushwoosh_APPID = "2B46A-F82CC";看一看reference of Information Property List Key
...将特定本地化的值存储在名为InfoPlist.strings的字符串文件中。您可以将此文件放在用于存储相同本地化的其他资源的语言特定的项目目录中。InfoPlist.strings文件的内容是您想要本地化的各个键和经过适当转换的值。在Info.plist文件中查找键值的例程会考虑用户的语言首选项,并返回(从适当的InfoPlist.strings文件)键的本地化版本(如果存在)。如果键的本地化版本不存在,例程将返回存储在Info.plist文件中的值。
发布于 2013-06-11 15:49:39
FYI Pushwoosh为以操作系统中设置的语言发送通知提供多语言支持。它基于标签,可以通过控制面板和API使用。我认为不重复发明轮子会容易得多:)
https://stackoverflow.com/questions/17023800
复制相似问题