Smi*_*key 7 iphone xcode objective-c target nslocalizedstring
我正在构建一个我已经发布的应用程序版本,但有一些更改.它不是一个精简/完整版本关系,但它们足够相似,我正在使用具有不同目标的相同项目.
我想重新编写我在新版本的第一个版本中使用的几乎所有字符串,并且想知道解决此问题的最佳方法.我没有在声明每个字符串之前使用#ifdef/#else语句,而是考虑使用NSLocalizedStrings.但是,实际语言仍然相同.
我在这篇文章中读到你可以自己设置语言,所以大概我可以发明自己的语言并将其设置为那个.但我想知道这是不是最好的办法?任何建议都是最受欢迎的.
dre*_*lax 12
您可以为任何给定语言(即多个.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"];
Run Code Online (Sandbox Code Playgroud)
由于此方法的表可以是可变的,因此您甚至可以在运行时切换它.以上假设您有一张Full.strings桌子和一张Lite.strings桌子.
Full.strings"SomeKey" = "This string appears in the full version";
Run Code Online (Sandbox Code Playgroud)
Lite.strings"SomeKey" = "This string appears in the lite version";
Run Code Online (Sandbox Code Playgroud)
您可能不希望将它们一起发送,如果是这种情况,您可以将Info.plist配置为包含要用于特定目标的表的名称(如果添加一个名为的条目"TableToUse",则可以通过它获取[[[NSBundle mainBundle] infoDictionary] objectForKey:@"TableToUse"])
| 归档时间: |
|
| 查看次数: |
3738 次 |
| 最近记录: |