我正在创建这个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中的所有其他字符串都被称为正常,所以我猜这是一个语法问题。
具体问题:我做错了什么,代码明智?另外,如果这是一种不受欢迎的方法,请拍我。
提前致谢!
答案 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使用。我想如果不重新发明轮子会更容易:)