Closed5
Xcode15で新登場したString Catalogsを使って個人開発アプリをローカライズ対応した
Xcode15で新登場したString Catalogsを使って個人開発アプリをローカライズしました。いくつか戸惑った部分があったので知見を共有します
参考
- https://developer.apple.com/jp/localization/
- https://thwork.net/2022/10/06/swiftui_app_localize/
- https://zenn.dev/akatsuki174/articles/63952ae0ce3ca3#ローカライズ
- https://zenn.dev/d_date/articles/d8640a8cbae8e2
- https://www.fuwamaki.com/article/494
前提
- iOS ネイティブアプリ iOS 15以上対応
- 3画面ほどUIKitでそれ意外はSwiftUI
- 未ローカライズ状態 -> 英語ローカライズ対応
Localizable.xcstrings
を作ったのに翻訳の自動生成に検知されない文字列がある
-
Build Settings > Localization > Use Compiler to Extract Swift Strings
をYes
にする -
String
で型定義している箇所を変更- UIKitの場合
-
UIAction(title: "ほげ")
->UIAction(title: String(localized: "ほげ"))
にする
-
- SwiftUIの場合
-
String
->LocalizedStringKey
にする
-
- UIKitの場合
- 2回ビルドするとうまくいったりする
コード上で処理を分岐したい場合
@Environment(\.locale) var locale
let isJA = locale.identifier.hasPrefix("ja")
ローカライズの動作テスト
- 本体の言語設定を変えずとも、アプリ個別で言語を切り替えられる
- (iPhone) 設定 > アプリ > 言語の切り替え
- アプリ名のローカライズ確認はできないので適当なシミュレータの本体言語を変えてテストするのが楽
storyboardのローカライズ
- storyboardを開き、右側のInspectorのなかにある
Localize...
を押下して行う
ローカライズしなくないテキスト
- あえてローカライズしたくないケース(デバッグメニューの文字列など)においては、以下の工夫で除外できます
翻訳作業
- 翻訳データの実体はJSONデータなので、xcodeを介さなくても簡単に人間が読み書きできる。
- vscodeで開いてGitHub Copilotに任せたらあっというまに終わった
英語以外に下記の言語に対応した。選定基準は話者が多いこと+自分でもニュアンスの違いがわかりそうなもの
- 中国語
- スペイン語
- ポルトガル語
- ロシア語
- ドイツ語
- 韓国語
- フランス語
- ベトナム語
ヒンディー語、アラビア語は話者こそ多いものの自分が理解するのには興味・時間的に厳しかったため除外した。
宣伝
XにてiOSアプリ開発や個人アプリ開発周りの情報を発信しています!
MENTAはじめました!iOSアプリ開発でお困りの方はぜひご相談ください 👋
個人で開発したアプリが10万DL突破しました!
このスクラップは2023/11/04にクローズされました