genstringsコンソール ツールを使用して.stringsファイルを作成しない場合、NSBundle のlocalizedStringForKey:value:table:メソッドを直接呼び出すよりも、 NSLocalizedStringマクロを使用する利点はありますか?
これらのマクロは、同じ NSBundle メソッドを呼び出します。では、これらのマクロの唯一の目的はgenstringsのサポートですか?
genstringsコンソール ツールを使用して.stringsファイルを作成しない場合、NSBundle のlocalizedStringForKey:value:table:メソッドを直接呼び出すよりも、 NSLocalizedStringマクロを使用する利点はありますか?
これらのマクロは、同じ NSBundle メソッドを呼び出します。では、これらのマクロの唯一の目的はgenstringsのサポートですか?
NSLocalizedString定義を見ると:
#define NSLocalizedString(key, comment) \
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
コメントの指定も可能にしながら、デフォルトの引数NSLocalizedStringで呼び出すだけであることが明らかになります(これは.によって無視されます)。localizedStringForKey:localizedStringForKey:
したがって、localizedStringForKey:次の用途に適しています。
複数の文字列テーブルの処理。
翻訳が見つからない場合のカスタム戻り値の指定 ( valuearg)。
NSLocalizedStringそれどころか:
最も単純な (最も一般的な?) ケース (1 つの文字列テーブルのみ) により適しています。
よりコンパクトです。
コンテキスト コメントを指定できます。
いつどちらを使用するのですか?
IMO、最大の基準は、複数の文字列テーブルがあるかどうかです。localizedStringForKey:そうでない場合は、 を使用する必要がありますNSLocalizedString。
お役に立てれば。
また、入力が短くなり、読みやすくなります。基礎となるメソッド呼び出し (非標準の文字列ファイルなど、私はかなり頻繁に使用します) を使用する必要がある場合もありますが、通常NSLocalizedString()ははるかに便利です。監査も簡単です (この例については、find_nonlocalizedを参照してください)。