LoginSignup
3
3

[iOS] Localizable.strings からString catarogsに移行する

Posted at

はじめに

Localizable.strings使って多言語対応していたものをXcode15から使えるString catarogsに移行してみました。

環境

Xcode 15.0

内容

まずは既存のLocalizable.stringsMigrate to String Catalogしていきます

Localizable.stringsを選択してMigrate

Localizable.stringsLocalizable.xcstringsに変わりました
とても簡単
コメントは修正する必要がありそうですが、各行にコメント書いていたら綺麗に入りそうです

文字表示部分の実装を変更します

もともとR.Swiftを使っていました

iOS15.0以上で使えるString(localized:)を使います

    var headerTitle: String {
        switch self {
        case .gameModeSection:
-           return R.string.localizable.mode()
+           return String(localized: "Mode")
        case .gameResultSection:
-           return R.string.localizable.gameResult()
+           return String(localized: "Game Result")
        case .courtSection:
-           return R.string.localizable.court()
+           return String(localized: "Court")
        case .pairingSection:
-           return R.string.localizable.pairing()
+           return String(localized: "Pairing")
        case .playerSection:
-           return R.string.localizable.player()
+           return String(localized: "Player")
        }
    }

SwiftUIの場合はそのまま使えますね

// SwiftUI localizable text.
Text("Welcome")

iOS15.0未満をサポートしている場合はこれまで通りの方法で
NSLocalizedString(_:tableName:bundle:value:comment:)

String catarogsに移行後の動作確認をします
Edit Schemeから

Run -> Options -> App Languageの設定を変えることでローカライズの表示確認ができました

無事ローカライズされた文言の表示が確認できました🎉

公式ドキュメントには他にも参考になることが書いてありました

おわりに

Localizable.stringsから一瞬でString catarogsを生成してくれるのはとても楽でありがたかったです

参考

3
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3