at_yasu's blog

ロード的なことを

文字列の国際化

よく忘れてしまう事となのでメモ書き。


基本的にCocoaはKVCが取り入れられており、国際化をする際にもKVCを利用する。.stringsという拡張子のファイルは、言語用のファイルで中身は以下のようなフォーマットになっている。ご覧の通り、これは左辺がKeyで右辺がValueとなっている。

"Key1" = "value1";
"Key2" = "value2";


Cocoaアプリケーションでは、標準ではLocalizable.stringsが言語ファイルとなっている。これは、Nibファイルが使うのではなく、プログラム側で使うファイルになる。
例えば、モーダル・ダイアログなどに出てくるメッセージ等。


そしてプログラムでの実装方法。至って簡単で、NSBundleのlocalizedStringForKeyメソッドを使えばいい。

NSString *aString = nil;

aString = [[NSBundle mainBundle] localizedStringForKey:@"key1"
                                                 value:@"default value"
                                                 table:@"Find"];


各引数のそれぞれの意味

@"key1"
検索するKeyとなる文字列(NSString型)
@"default value"
値が無い場合に返す値
@"Find"
値を検索するファイル名。この場合だと、Find.stringsから値を検索する。


実際に国際化する場合は、japanese.lprog/Localization.stringsなどといった、言語名/Localization.stringsという型で保存されている。
iTunesやFinderもこのようになっている。


関連事項:2007-09-20 - at_yasuの日記もといメモ書き