我正在构建一个已经发布的应用程序的版本,但有一些更改。这并不完全是精简版/完整版的关系,但它们足够相似,以至于我在不同的目标上使用相同的项目。
我想将我在第一个版本中使用的几乎所有字符串重写为新版本,并且想知道解决此问题的最佳方法。我考虑使用 NSLocalizedStrings,而不是在每个字符串的声明之前使用 #ifdef/#else 语句。然而,实际的语言仍然是相同的。
我读到这个帖子 https://stackoverflow.com/questions/1669645/how-to-force-nslocalizedstring-to-use-a-specific-language你可以自己设置语言,所以大概我可以发明自己的语言并将其设置为该语言。但我想知道这是否是解决问题的最佳方式?任何建议将非常受欢迎。
对于任何给定的语言,您可以有多个字符串表(即多个.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
table.
Full.strings
"SomeKey" = "This string appears in the full version";
Lite.strings
"SomeKey" = "This string appears in the lite version";
您可能不想将它们一起发送,如果是这种情况,您可以配置 Info.plist 以包含用于特定目标的表的名称(如果您添加一个名为"TableToUse"
,你可以通过[[[NSBundle mainBundle] infoDictionary] objectForKey:@"TableToUse"]
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)