如果不打算使用genstrings控制台工具创建 .strings 文件,使用NSLocalizedString宏是否有任何好处,而不是直接调用NSBundle localizedStringForKey:value:table:方法?
那些宏调用相同的NSBundle方法。支持 genstrings 这些宏的唯一目的是什么?
答案 0 :(得分:1)
它们也更短,更容易阅读。有时您需要使用底层方法调用(例如非常常使用的非标准字符串文件),但通常NSLocalizedString()
更方便。审核也更容易(有关此示例,请参阅find_nonlocalized。)
答案 1 :(得分:1)
如果你看一下NSLocalizedString
定义:
#define NSLocalizedString(key, comment) \
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
很明显,NSLocalizedString
只使用默认参数调用localizedStringForKey:
,同时还允许注释的注释(localizedStringForKey:
忽略该注释。)
因此,localizedStringForKey:
适用于:
处理多个字符串表;
在未找到翻译时指定自定义返回值(value
arg)。
NSLocalizedString
:
更适合最简单(最常见的?)的情况(只有一个字符串表);
更紧凑;
允许指定上下文注释。
何时使用其中一种?
IMO,最大的标准是你有多个字符串表。如果是这样,您必须使用localizedStringForKey:
,否则NSLocalizedString
会很好。
希望这有帮助。