ページ

2008年5月29日木曜日

RubberBand(その34)ToolTipをローカライズ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

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.

セミコロンを付けてもこのエラーは出続ける。その場合はクリーニングを一度かけてから再ビルドすると消える(これでハマってしまった。。)。