Xcode アプリのローカライズ - shirajira/family-account-ios GitHub Wiki
Xcode アプリのローカライズ
iOS では,端末またはアプリの言語設定によってアプリ内の言語を切り替えることができる。
切り替え可能な言語はアプリにバンドルされている言語に限られる。
初期設定では英語しか実装されていないので,必要に応じて他の言語を追加すること。
実装方法
プロジェクト設定 -> PROJECT -> Info -> Localizations まで進むと,デフォルトでは以下のような設定になっていると思われる。
Localization | Resources |
---|---|
Base | 2 Files Localized |
English - Development Language | 0 Files Localized |
*Use Base Internationalization にチェックあり
これは,デフォルトの言語 Base が English になっていることを意味している。
1. 言語を追加する
先ほどの表の下部にある + を押して,追加したい言語を選択する。
追加したい言語を選択するとローカライズファイルの追加方法を選択できる。
Checked | Resource File | Reference Language | File Types |
---|---|---|---|
Yes | Main.storyboard | Base | Localizable Strings |
Yes | LaunchScreen.storyboard | Base | Localizable Strings |
基本的にはこのままでOK。
特殊な理由や事情があり言語によって UI を大きく変更したい場合に限り,File Types を変更する必要がある。
選択可能なオプションは以下の通り。
File Types | 説明 |
---|---|
Localizable Strings | 言語ごとにテキストのみを切り替える |
Interface Builder Storyboard | 言語ごとに Storyboard を切り替える |
前者は簡易的なローカライズ(単なるテキストの置換),後者は本格的なローカライズである。
言語的あるいは文化的な背景への配慮が必要なアプリについては,後者のローカライズが好まれるでしょう。
プロダクトの性質によって適切なものを選択すること。
(本稿では前者の Localizable Strings を選択した場合について説明する)
追加後,PROJECT -> Info -> Localizations が以下のようになっていればOK。
(下表は日本語を追加した場合の例)
Localization | Resources |
---|---|
Base | 2 Files Localized |
English - Development Language | 0 Files Localized |
Japanese | 2 Files Localized |
2. ローカライズファイルを追加する
新たに追加した Storyboard をローカライズする場合の手順について示す。
1) デフォルトの言語を設定する
対象 Storyboard を開き,Show the Inspectors -> File Inspector を開く。
(視覚的に説明すると,Xcode の右メニューを開き,その中にある左端のファイルアイコン)
下のほうに Localization グループがあるので,Localize... ボタンをクリックする。
どの言語にローカライズするか聞かれるので,Base を選択する。
この設定により,対象 Storyboard の言語が Base になる。(デフォルトでは英語)
2) 他の言語を追加する
先ほどの手順と同様に File Inspector を開くと,Localization グループが以下のようなフォーマットになっていると思われる。
Checked | Language | File Types |
---|---|---|
Yes | Base | 項目なし |
No | English | Localizable Strings |
No | Japanse | Localizable Strings |
これから追加する言語(例えば Japanse)にチェックを入れる。
チェックを入れると,Project Navigator の対象 Storyboard グループに以下のファイルが追加される。
(視覚的に説明すると,Xcode の左メニュー,その中にある左端のファイルアイコン)
Sample.storyboard
Sample.storyboard (Base)
Sample.strings (Japanese)
Sample.storyboard
が UI 定義(Base 言語用),Sample.strings
が置換ルール定義(カッコ内言語用)となっている。
なお,チェックを外すと Sample.strings (Japanese)
はプロジェクトから外される。
Sample.storyboard
を作り直したときは チェックを外す -> チェックを入れる -> Replace file 操作によって strings
ファイルを最新化できる。
3) 置換ルールの定義
まずは Sample.storyboard
を完成させよう。
その後 2) の手順に戻り Sample.strings
を最新化すると,Sample.storyboard
内で使用しているテキストが Sample.strings
に転記される。
フォーマットは以下の通り。
これは ID が k8t-1z-EM1
である UILabel
に「Cancel」が設定されている場合の例である。
/* Class = "UILabel"; text = "Cancel"; ObjectID = "k8t-1z-EM1"; */
"k8t-1z-EM1.text" = "Cancel";
これを次のように書き換えると,言語設定が日本語のときは「キャンセル」と表示されるようになる。
/* Class = "UILabel"; text = "Cancel"; ObjectID = "k8t-1z-EM1"; */
"k8t-1z-EM1.text" = "キャンセル";
各ルールはセミコロンで区切る必要がある。つけ忘れに要注意。
(Xcode 12 くらいからビルド時に警告を出してくれるようになったようです。昔は出なくて苦労した覚えが…)