如果不使用genstrings,NSLocalizedString对localizedStringForKey的任何好处:value:table:?

时间:2013-01-11 21:55:18

标签: ios cocoa internationalization

如果不打算使用genstrings控制台工具创建 .strings 文件,使用NSLocalizedString宏是否有任何好处,而不是直接调用NSBundle localizedStringForKey:value:table:方法?

那些宏调用相同的NSBundle方法。支持 genstrings 这些宏的唯一目的是什么?

2 个答案:

答案 0 :(得分:1)

它们也更短,更容易阅读。有时您需要使用底层方法调用(例如非常常使用的非标准字符串文件),但通常NSLocalizedString()更方便。审核也更容易(有关此示例,请参阅find_nonlocalized。)

答案 1 :(得分:1)

如果你看一下NSLocalizedString定义:

#define NSLocalizedString(key, comment) \
    [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]

很明显,NSLocalizedString只使用默认参数调用localizedStringForKey:,同时还允许注释的注释(localizedStringForKey:忽略该注释。)

因此,localizedStringForKey:适用于:

  1. 处理多个字符串表;

  2. 在未找到翻译时指定自定义返回值(value arg)。

  3. 相反,

    NSLocalizedString

    1. 更适合最简单(最常见的?)的情况(只有一个字符串表);

    2. 更紧凑;

    3. 允许指定上下文注释。

    4. 何时使用其中一种?

      IMO,最大的标准是你有多个字符串表。如果是这样,您必须使用localizedStringForKey:,否则NSLocalizedString会很好。

      希望这有帮助。