2009-06-24 10 views
7

辞書キーをグループ化されたテーブルに出力したい。これは他のすべてのコンテンツにローカライズする必要があります。 NSLocalizedStringをキーとして使用できますか?NSLocalizedStringを辞書のキーとして使用できますか?

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: 
    first_array, NSLocalizedString(@"First Array", @"The First Array"), 
    second_array, NSLocalizedString(@"Second Array", @"The Second Array"), nil]; 

答えて

13

これは単なる文字列なので、できます。つまり、書き留めて後で読み込むディクショナリでは、このテクニックを使用しないでください。ユーザーが言語を変更して間違ったキーを探してしまう可能性があります。

2

これは静的な辞書のように見えますが、これはプログラムで一度作成されてから再び変更されることはありません。私はそれに問題は見られません。私はあなたが変更不可能な辞書を作っているので、これは変更されずにアーカイブされます。そうであれば、異なるロケールを持つユーザ間でアーカイブファイルを交換することはできません。これは、キーが異なるためです。

ただし、ローカライズされた配列を作成して辞書に読み込むのではなく、ローカライズされたplistファイルを辞書に読み込むことができます。コードを読みやすくするかもしれません。

4

Peterが指摘しているように、辞書は、キーがNSCopyingプロトコルを実装するオブジェクトであることのみを気にします。文字列はそれを統計し、合法性に関しては内容は重要ではありません。

おそらくこの場合は問題にはなりませんが、単語の使用のコンテキストに応じて、1つの言語で1つの単語が異なる言語で2つの異なる単語にマップされることが何度もあります。逆も可能です。ある言語の2つの単語は、異なる言語の同じ単語にマッピングされます。この問題は発生する可能性は低いですが、ローカライズされた値のみをユーザーに表示する値として扱い、より密接に定義された値をキーとして使用するのが最善の方法です。

関連する問題