XcodeでのiOSローカライズ手順
- 言語の追加:
- String Catalogの作成(Xcode 15以降推奨):
- アプリ名のローカライズ:
- コード内での利用:
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")) } |
コメント