0

如果不打算使用genstrings控制台工具来创建.strings文件,那么使用NSLocalizedString宏而不是直接调用 NSBundle本地化StringForKey:value:table:方法有什么好处吗?

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

4

2 回答 2

2

如果你看NSLocalizedString定义:

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

很明显,NSLocalizedStringlocalizedStringForKey:使用默认参数进行调用,同时还允许指定注释(被localizedStringForKey:. 忽略)

因此,localizedStringForKey:适用于:

  1. 处理多个字符串表;

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

NSLocalizedString相反:

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

  2. 更紧凑;

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

何时使用其中一种?

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

希望这可以帮助。

于 2013-01-12T09:40:32.647 回答
1

它们的打字时间也更短,更容易阅读。有时您需要使用底层方法调用(例如我经常使用的非标准字符串文件),但通常NSLocalizedString()更方便。它也更容易审计(参见find_nonlocalized的例子)。

于 2013-01-12T03:36:44.783 回答