&tag(iPhoneSDK/ローカライゼーション); *目次 [#we572e89] #contents *参考情報 [#od195501] -[[livedoor Techブログ : iPhoneアプリを多言語対応にする:http://blog.livedoor.jp/techblog/archives/65158071.html]] *概要 [#d3a29695] -以下の情報はXcode4.6での話。 -検索するとja.lproj、en.lprojを手動で作らないと行けないかというような話もあるけど、GUIで追加したらフォルダを作ってフォルダに勝手にファイルを作ってくれるので意識的に操作する必要はない。 -InfoPlist.stringsはアプリ名など。Localizable.stringsは文字列リソース。その他画像なども多言語化できる。 *InfoPlist.stringsのローカライズ [#pb63cd83] -[[Xcode4.5におけるiOSアプリのローカライズ方法 - えんたつの記録:http://blog.livedoor.jp/tattyamm/archives/4303398.html]] -プロジェクトを選択し右側のタブの[Info]タブのLocalizationsでプラスボタンを押して言語を追加する。 *Localizable.stringsを使ってローカライズする手順 [#j833d1a7] -NSLocalizedStringを使ってソースを修正する。 **NSLocalizedStringで文字列指定部分を書き直す [#rbac6edb] -@"日本語文字列"形式で文字列を指定している部分をNSLocalizedStringで全て置き換える。 self.title = @"テスト"; -これを次のように修正する。 self.title = NSLocalizedString(@"test", @"test message"); -NSLocalizedStringの引数は「文字列リソースのキー」、「コメント」の順。 **genstringsを実行する。 [#sb56ba1d] -ターミナルでXcodeプロジェクトのルートディレクトリに移動し、genstringsコマンドを実行する。 genstrings ./Classes/*.m -Localizable.stringsというファイルが作られる **Localizable.stringsを取り込みローカライズする [#dc423cfb] -XcodeでResourcesフォルダを右クリック→既存の項目を追加→Localizable.stringsを選択し取り込む。 -Localizable.stringsを右クリックし、情報を見る→一般タブ→ファイルをローカライズ可能にする、をクリックする。 -一般タブに戻る→ローカリゼーションを追加でローカリゼーションの名前を入力し追加をクリックする。名前は日本の場合は"ja"。 -Localization.stringsに右三角が表示され開けるようになる。Englishが英語リソース、jaが日本語リソースになる。中身は次のように記述する。 --Localizable.strings(English) #pre{{ /* 閉じる */ "Close" = "Close"; }} --Localizable.strings(ja) #pre{{ /* 閉じる */ "Close" = "閉じる"; }} -文字列リソースファイルのエンコーディングはUTF-16。文字化けして表示される場合は、情報→一般タブ→エンコーディングでUTF-16を指定し、「再解釈」してみる **ローカリゼーションの名前 [#y8a7fad0] -追加するローカリゼーションの名前は、ISO 639の言語コードで指定されている2文字または3文字の名前。 -Wikipediaを参照すると次のようになっている(http://ja.wikipedia.org/wiki/ISO_639)。 ,Japanese, 日本語, ja ,English,英語,en ,French,フランス語,fr ,German,ドイツ語,de ,Italian,イタリア語,it ,Spanish,スペイン語,es -ローカリゼーションの名前を入力するダイアログで"English", "Japanese"などの名前を選択できるばISO 639形式を選んだ方がいいらしい(?) *トラブルシューティング [#secb3e33] **コンパイルエラーが発生する [#caea26bd] 文字列リソースのセミコロンを忘れてないかどうか確認する。 "Close" = "閉じる"; ←必要 **"Edit" "Cancel" "Done"などのボタンが日本語にならない。 [#h62e61d0] -initWithBarButtonSystemItemで生成したボタン(UIBarButtonSystemItemCancelやUIBarButtonSystemItemDone)が日本語表示にならないのは、Localizable.stringsがないせいかも。 -info.plistの"Localization native development region"を"Japan"にすれば表示されるという情報があちこちになるがこれだけだと表示されず、Localizable.stringsを作ったら表示された。