XcodeでのiOSローカライズ手順
言語の追加:
・Xcodeのプロジェクトナビゲータでプロジェクトファイル(一番上の青いアイコン)を選択。
・PROJECT -> Info -> Localizations の「+」ボタンから対応したい言語(日本語など)を追加する。
String Catalogの作成(Xcode 15以降推奨):
・File -> New -> File で「String Catalog」を選択し、Localizable.xcstrings という名前で作成。
・このカタログファイルを開き、各言語の列に翻訳テキストを入力する。
アプリ名のローカライズ:
・File -> New -> File で「String Catalog」を作成し、名前を InfoPlist.xcstrings にする。
・キーに CFBundleDisplayName を使用し、アプリ名を設定する。
コード内での利用:
・SwiftUIやUIKitでは、文字列を直接記述するだけで自動的にString Catalogに反映される
Localizable.xcstringsに対象語句が出てこない時
SwiftUIのView以外に設定した文字列は出てきません、変数に宣言した場合も同様です。
対策①:LocalizedStringKey を使う(SwiftUI部)
|
1 2 |
@State var buttonTitle: LocalizedStringKey = "enable_button" Text(buttonTitle) |
対策②:String(localized:) を使う(ロジック側)
SwiftUI 以外・ロジック層ならこちら。
|
1 |
let title = String(localized: "enable_button") |
動的切り替え
|
1 2 |
let key = isOn ? "button_on" : "button_off" Text(String(localized: key)) |
対策③:enum でキーを管理(おすすめ)
定義
|
1 2 3 4 |
enum L10n { static let buttonOn = LocalizedStringKey("button_on") static let buttonOff = LocalizedStringKey("button_off") } |
使用
|
1 |
Text(isOn ? L10n.buttonOn : L10n.buttonOff) |
他
|
1 2 3 4 |
#if false Text("button_on") Text("button_off") #endif |
シミュレーターデバッグ時の言語切り替え
✔ 一番簡単な方法(スキームで言語を切り替え)
- Xcode の上部バーで
「実行ターゲット(シミュレーター)」の横にあるスキーム名をクリック - Edit Scheme… を選択
- 左の Run → Options タブへ
- Application Language を変更(例:French / German)
- 必要なら Application Region も変更
- Run(⌘R)
👉 これでシミュレーターの言語設定を変えなくても、そのアプリだけ言語変更できます。
Previewでも確認できる
|
1 2 3 4 |
#Preview { ContentView() .environment(\.locale, .init(identifier: "fr")) } |
✔ より実践的な方法(複数言語を同時確認)
複数Preview:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#Preview("English") { ContentView() .environment(\.locale, .init(identifier: "en")) } #Preview("French") { ContentView() .environment(\.locale, .init(identifier: "fr")) } #Preview("German") { ContentView() .environment(\.locale, .init(identifier: "de")) } |
アプリ名のローカライズ
- string検索でString File(Legacy)を選択する。
- ファイル名を「InfoPlist.strings」にする。
- 右のサイドバーを開きLocalizationで該当する国にチェックをいれる。
- 左のサイドバー内の「InfoPlist.strings」の配下にチェックを入れた国のファイルができているのでそこに下記を入力する。
CFBundleDisplayName = "My App Name";
CFBundleName = "My App Name";
2つのキーの本当の役割 ? (真偽不明)
| キー(Key) | 主な役割 |
|---|---|
CFBundleDisplayName | 最優先されるアプリ名。 ホーム画面のアイコンの下に表示される名前です。Xcodeの「Display Name」に入力した内容と連動(上書き)します。 |
CFBundleName | 副次的なアプリ名。 CFBundleDisplayName が長すぎて表示しきれない場合や、Spotlight検索、設定画面、通知、App Storeの仕様などで補完的に参照される、15文字以内の短い識別名です。 |