首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSLocalizableString和info.plist

NSLocalizableString和info.plist
EN

Stack Overflow用户
提问于 2013-06-10 20:23:37
回答 2查看 594关注 0票数 0

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

在.plist中,我替换了

代码语言:javascript
复制
<key>Pushwoosh_APPID</key>
<string>2B46A-F82CC</string>

使用

代码语言:javascript
复制
<key>Pushwoosh_APPID</key>
<string>PUSHWOOSH_ID</string>

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

代码语言:javascript
复制
"PUSHWOOSH_ID" = "2B46A-F82CC";

最后,在代码中,我将

代码语言:javascript
复制
[[NSUserDefaults standardUserDefaults] setObject:appCode forKey:@"Pushwoosh_APPID"];

使用

代码语言:javascript
复制
[[NSUserDefaults standardUserDefaults] setObject:appCode forKey:NSLocalizedString(@"Pushwoosh_APPID", nil)];

然而,当运行应用程序时,"Pushwoosh_APPID“解析为"PUSHWOOSH_ID",而不是"2B46A-F82CC”。

localizable.strings中的所有其他字符串都被调用得很好,所以我猜这是一个语法问题。

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

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-10 21:47:08

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

代码语言:javascript
复制
Pushwoosh_APPID = "2B46A-F82CC";

看一看reference of Information Property List Key

...将特定本地化的值存储在名为InfoPlist.strings的字符串文件中。您可以将此文件放在用于存储相同本地化的其他资源的语言特定的项目目录中。InfoPlist.strings文件的内容是您想要本地化的各个键和经过适当转换的值。在Info.plist文件中查找键值的例程会考虑用户的语言首选项,并返回(从适当的InfoPlist.strings文件)键的本地化版本(如果存在)。如果键的本地化版本不存在,例程将返回存储在Info.plist文件中的值。

票数 0
EN

Stack Overflow用户

发布于 2013-06-11 15:49:39

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17023800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档