iOS

String Catalogの導入から基本的な使い方までを分かりやすく解説

XCode15に追加された新しい多言語対応の機能、String Catalogをどうやって追加してどう使えば良いのか。

基本のキをまとめて置きました。String Catalogが気になってたけど入れるの面倒くさいなぁと思ってる方、すごく簡単だったので参考にしてみてください!

まず導入

XCodeの適当な場所で右クリックをしNew File..を選んだら右上の検索窓に「string」と入れるとString  Catalogファイルが見つかるので選んでNextボタンを押します。

するとLocalizableファイルを作成するか聞かれるのでCreateを押せば無事String Catalogの導入完了です。
昔のローカライズ対応手順よりとてもシンプルになっていて嬉しいですね。

 

使い方

対応言語の追加

追加されたLocalizableファイルを選ぶと対応したい言語の一覧が表示されるので、言語を追加したい場合は左下の+ボタンを押して追加します。

文字の登録

一度ビルドしてみると既に文字列を記入している箇所が自動で抽出されて追加されます。
NSLocalizedString指定(古いローカライズ方法)している所も抽出されてゴチャゴチャに。

Keyは変更出来ないので、ベタ書きで「閉じる」と書いた所を書き換えて再ビルドしてみると..

String Catalogの方もKey名がbtn-closeに変わっているので、英語と日本語を記入してビルドすれば..

これで画面の方も自動的にローカライズされます。
SwiftUIの場合は上記の様に文字列を書くだけでローカライズされますが、Swiftの場合は

String(localized: "btn-close")

の様にlocalized:という引数名でKeyを指定する必要があるので気をつけてください。

新規にKeyを追加したい場合は上にある+ボタンを押すと..

新しい行が追加されるので「btn-yes」とKey名を指定して、Japanese(ja)欄には「はい」と入力した後…

Englishの方にも自動でKeyが追加されているのでEnglish(en)欄に「Yes」と入れれば完成です。

既にLocalized.stringsを導入している場合

既にLocalizable.stringsで旧式のローカライズを適用済の場合は、Localizableファイルを右クリックして…

「Migrate to String Catalog…」を選ぶと自動的にString Catalogに変換してくれます。

どんな大修正をしているのかとgitの差分を見てみたら、旧式のLocalizable.stringsが消えて、String Catalogが追加されているだけで他のソースには修正が無かったのですが問題なく動作していました。

要するに、旧式のLocalizedString(“hogehoge”)と指定するのと、String(localized: “hogehoge”)と指定するのは同じ動作をするということですね。