Closed5

Xcode15で新登場したString Catalogsを使って個人開発アプリをローカライズ対応した

Ryo TakahashiRyo Takahashi

Xcode15で新登場したString Catalogsを使って個人開発アプリをローカライズしました。いくつか戸惑った部分があったので知見を共有します

参考

前提

  • iOS ネイティブアプリ iOS 15以上対応
  • 3画面ほどUIKitでそれ意外はSwiftUI
  • 未ローカライズ状態 -> 英語ローカライズ対応
Ryo TakahashiRyo Takahashi

Localizable.xcstrings を作ったのに翻訳の自動生成に検知されない文字列がある

  • Build Settings > Localization > Use Compiler to Extract Swift StringsYes にする
  • String で型定義している箇所を変更
    • UIKitの場合
      • UIAction(title: "ほげ") -> UIAction(title: String(localized: "ほげ")) にする
    • SwiftUIの場合
      • String -> LocalizedStringKey にする
  • 2回ビルドするとうまくいったりする

コード上で処理を分岐したい場合

@Environment(\.locale) var locale

let isJA = locale.identifier.hasPrefix("ja")

ローカライズの動作テスト

  • 本体の言語設定を変えずとも、アプリ個別で言語を切り替えられる
  • (iPhone) 設定 > アプリ > 言語の切り替え
    • アプリ名のローカライズ確認はできないので適当なシミュレータの本体言語を変えてテストするのが楽

storyboardのローカライズ

  • storyboardを開き、右側のInspectorのなかにある Localize... を押下して行う

ローカライズしなくないテキスト

  • あえてローカライズしたくないケース(デバッグメニューの文字列など)においては、以下の工夫で除外できます

https://stackoverflow.com/questions/76330486/exclude-strings-in-previews-from-localization-export

Ryo TakahashiRyo Takahashi

翻訳作業

  • 翻訳データの実体はJSONデータなので、xcodeを介さなくても簡単に人間が読み書きできる。
  • vscodeで開いてGitHub Copilotに任せたらあっというまに終わった

Ryo TakahashiRyo Takahashi

英語以外に下記の言語に対応した。選定基準は話者が多いこと+自分でもニュアンスの違いがわかりそうなもの

  • 中国語
  • スペイン語
  • ポルトガル語
  • ロシア語
  • ドイツ語
  • 韓国語
  • フランス語
  • ベトナム語

ヒンディー語、アラビア語は話者こそ多いものの自分が理解するのには興味・時間的に厳しかったため除外した。

このスクラップは2023/11/04にクローズされました