加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iphone – 同一应用程序的不同目标的替代字符串 – 使用NSLocali

发布时间:2020-12-14 19:52:39 所属栏目:百科 来源:网络整理
导读:我正在构建一个我已经发布的应用程序版本,但有一些更改.它不是一个精简/完整版本关系,但它们足够相似,我正在使用具有不同目标的相同项目. 我想重新编写我在新版本的第一个版本中使用的几乎所有字符串,并且想知道解决此问题的最佳方法.我没有在声明每个字符串
我正在构建一个我已经发布的应用程序版本,但有一些更改.它不是一个精简/完整版本关系,但它们足够相似,我正在使用具有不同目标的相同项目.

我想重新编写我在新版本的第一个版本中使用的几乎所有字符串,并且想知道解决此问题的最佳方法.我没有在声明每个字符串之前使用#ifdef / #else语句,而是考虑使用NSLocalizedStrings.但是,实际语言仍然相同.

我在this post读到你可以自己设置语言,所以我想我可以发明自己的语言并将其设置为.但我想知道这是不是最好的办法?任何建议都是最受欢迎的.

解决方法

您可以为任何给定语言(即多个.strings文件)提供多个字符串表.如果需要本地化字符串,可以通过以下方式获取:

NSString *str;

// Look up string in Full.strings
str = [[NSBundle mainBundle] localizedStringForKey:@"SomeKey"
                                             value:@"DefaultValue"
                                             table:@"Full"];

// Look up strings in Lite.strings
str = [[NSBundle mainBundle] localizedStringForKey:@"SomeKey"
                                             value:@"DefaultValue"
                                             table:@"Lite"];

由于此方法的表可以是可变的,因此您甚至可以在运行时切换它.以上假设您有一个Full.strings表和一个Lite.strings表.

Full.strings

"SomeKey" = "This string appears in the full version";

Lite.strings

"SomeKey" = "This string appears in the lite version";

您可能不希望将它们一起发送,如果是这种情况,您可以将Info.plist配置为包含要用于特定目标的表的名称(如果添加名为“TableToUse”的条目,则可以获取它via [[[NSBundle mainBundle] infoDictionary] objectForKey:@“TableToUse”])

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读