文字列の国際化
よく忘れてしまう事となのでメモ書き。
基本的に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もこのようになっている。