忍者ブログ

[PR]

2024年03月28日
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

文字列のローカライズ

2008年11月22日
 各言語に応じて表示内容を変えたい場合

プロジェクトの入っているフォルダ(*.xcodeprojが入ってるフォルダ)内にフォルダを作ります。フォルダ名は英語ならEnglish.lproj、日本語ならJapanese.lprojです。
それぞれのフォルダの中にLocalizable.stringsという名前のテキストファイルを作っておきます。
実際のプログラム内で、言語毎に変える文字列をNSLocalizedStringを使って書きます。
例:cell.text = NSLocalizedString(@"Add new category", @"Level1 add new text");
@"Add new category"がLocalizable.strings内部を探す際のキーワードになります。@"Level1 add new text"の方は自分が何のために書いたか思い出すためにつけておくラベルなので、何でもよいみたいです。多分@""でも問題ないはずです。そして、先ほどの各言語フォルダのLocalizable.stringsに、キーワードに対応させる行を加えておきます。

English.lproj内のLocalizable.strings
"Add new category" = "ADD NEW CATEGORY!";

Japanese.lproj内のLocalizable.strings
"Add new category" = "新カテゴリ";

こうしておくと、上に書いたNSLocalizedString命令の実行結果として、デバイスの言語設定が英語の場合はADD NEW CATEGORY!が返り、日本語の場合は新カテゴリが返ります。ローカライズ用のフォルダを作っていない他の言語の場合はどうなるかというと、NSLocalizedStringの1個目の引数であるAdd new categoryがそのまま返ります。また、各言語のLocalizable.strings内に一致するキーワードが無い場合も同様にNSLocalizedStringの1個目の引数であるAdd new categoryがそのまま返ります。上の例では理解しやすいように英語の場合に入る文字列を大文字にしていますが、

"Add new category" = "Add new category";

としていても何の問題もありません。この場合我々には全く見分けはつきませんが、実際にはイコールの右側にあるAdd new categoryが返っています。
PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Trackback
トラックバックURL: