NSLocalizableString和info.plist

我正在创建这个iOS应用程序,我使用PushWoosh(www.pushwoosh.com)通知服务。 通知工作正常,但现在我想区分基于应用程序语言环境的通知:我希望运行英语操作系统的应用程序用户接收英语通知,德语用户德语等。为此,我使用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中的所有其他字符串都被称为很好,所以我想这是一个语法的东西。

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

提前致谢!


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

Pushwoosh_APPID = "2B46A-F82CC";

看一下信息属性列表键的参考:

...将特定本地化的值存储在名称为InfoPlist.strings的字符串文件中。 将该文件放置在您用于为同一本地化存储其他资源的特定于语言的项目目录中。 InfoPlist.strings文件的内容是您希望本地化的个人密钥以及适当翻译的值。 在Info.plist文件中查找关键值的例程将用户的语言首选项考虑在内,并在存在关键字(从相应的InfoPlist.strings文件)时返回该关键字的本地化版本。 如果某个键的本地化版本不存在,那么这些例程将返回Info.plist文件中存储的值。


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

链接地址: http://www.djcxy.com/p/78991.html

上一篇: NSLocalizableString and info.plist

下一篇: How to set a delegate for a single cell in Qt item view?