0

我正在创建这个 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 中的所有其他字符串都被调用得很好,所以我想这是一个语法问题。

具体问题:代码方面我做错了什么?另外,如果这通常是一种不受欢迎的方法,请向我开枪。

提前致谢!

4

2 回答 2

0

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

于 2013-06-11T07:49:39.233 回答
0

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

Pushwoosh_APPID = "2B46A-F82CC";

看一下Information Property List Key 的参考

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

于 2013-06-10T13:47:07.593 回答