0

genstringsコンソール ツールを使用して.stringsファイルを作成しない場合、NSBundle のlocalizedStringForKey:value:table:メソッドを直接呼び出すよりも、 NSLocalizedStringマクロを使用する利点はありますか?

これらのマクロは、同じ NSBundle メソッドを呼び出します。では、これらのマクロの唯一の目的はgenstringsのサポートですか?

4

2 に答える 2

2

NSLocalizedString定義を見ると:

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

コメントの指定も可能にしながら、デフォルトの引数NSLocalizedStringで呼び出すだけであることが明らかになります(これは.によって無視されます)。localizedStringForKey:localizedStringForKey:

したがって、localizedStringForKey:次の用途に適しています。

  1. 複数の文字列テーブルの処理。

  2. 翻訳が見つからない場合のカスタム戻り値の指定 ( valuearg)。

NSLocalizedStringそれどころか:

  1. 最も単純な (最も一般的な?) ケース (1 つの文字列テーブルのみ) により適しています。

  2. よりコンパクトです。

  3. コンテキスト コメントを指定できます。

いつどちらを使用するのですか?

IMO、最大の基準は、複数の文字列テーブルがあるかどうかです。localizedStringForKey:そうでない場合は、 を使用する必要がありますNSLocalizedString

お役に立てれば。

于 2013-01-12T09:40:32.647 に答える
1

また、入力が短くなり、読みやすくなります。基礎となるメソッド呼び出し (非標準の文字列ファイルなど、私はかなり頻繁に使用します) を使用する必要がある場合もありますが、通常NSLocalizedString()ははるかに便利です。監査も簡単です (この例については、find_nonlocalizedを参照してください)。

于 2013-01-12T03:36:44.783 に答える