ToolTipで表示される文字列をローカライズする。
ローカライズの手順は次の通り。
(1) 英語のLocalizable.strings を作成
(2) 日本語のローカリゼーションを追加
(3) 日本語の Localizable.strings を作成
(4) ソースコード中の文字列を NSLocalizedString( )に置き換える。
追って説明する。
(1) 英語のLocalizable.strings を作成
新規ファイルを Localizable.strings という名前で作成する。
ここに key = value; 形式で文字列を定義していく。key は後で NSLocalizedString()で使う。valueが実際のメッセージ文字列となる。
Localizable.strings
"CancelCapture" = "Cancel capture";
"TimerSelection" = "Timer selection";
"CopySelection" = "Copy selection";
"CaptureSelection" = "Capture selection";
(2) 日本語のローカリゼーションを追加
英語のメッセージが用意できたら日本語用のファイルを用意する。ファイルの情報を開き、一番下の「ローカリゼーションを追加...」で "Japanese"を選択する。
するとプロジェクト内にローカリゼーション用のフォルダが日本語、英語で作成される。日本語用フォルダには Localizable.strings が作成される。
|--English.lproj
| |--InfoPlist.strings
| |--Localizable.strings
| |--MainMenu.nib
|--Japanese.lproj
| |--Localizable.strings
(3) 日本語の Localizable.strings を作成
初期状態では英語のコピーになっているのでこれを日本語で書き換える。
Japanese.lproj/Localizable.strings
"CancelCapture" = "キャンセル";
"TimerSelection" = "タイマー起動";
"CopySelection" = "コピー";
"CaptureSelection" = "キャプチャ";
ファイルエンコーディングは "Unicode (UTF-16)" にしておく。
(参考)Internationalization Programming Topics / Strings
(4) ソースコード中の文字列を NSLocalizedString( )に置き換える。
こんな感じ。
[_button_bar addButtonWithImageResource:@"icon_cancel"
alterImageResource:@"icon_cancel2"
tag:TAG_CANCEL
tooltip:NSLocalizedString(@"CancelCapture", @"A")];
- - - -
Localizable.strings の最後の ; (セミコロン)を忘れると実行時に下記のエラーが出る。
2008-05-18 17:39:30.398 RubberBand[23503:10b] CFPropertyListCreateFromXMLData(): Old-style plist parser: missing semicolon in dictionary.
セミコロンを付けてもこのエラーは出続ける。その場合はクリーニングを一度かけてから再ビルドすると消える(これでハマってしまった。。)。