コードを書かずにStoryboardで多言語対応


Xcode開発における多言語対応については記事はいろいろありますが、この記事では極力コードを書かずStoryboardで多言語対応する方法について説明します。

0. 環境

Xcode 11.0

1. プロジェクト自体の多言語対応手順

PROJECTのInfo - Localizationから、Japaneseを追加します。
※今回は英語をデフォルト言語とし、日本語を追加した場合を想定します。

これにより選択したstoryboardには.stringsファイル(日本語での表示文字列を記述するためのファイル)が生成されます。
- .storyboardファイル:英語を記述
- .stringsファイル:日本語を記述(書き方は 「2. Storyboardを更新したときの多言語対応手順」参照)
とすれば多言語対応は完了です。

ただ.stringsファイルのUI要素の指定の仕方が特殊で、UIの種類によって指定すべきキーが変わってきます。
UI要素を追加したときにそのキーを調べて手打ちするのは手間なので、そうしたケースでのコツを以下で説明します。

2. Storyboardを更新したときの多言語対応手順

一旦Japaneseのチェックを外します。
このときに確認ダイアログが表示されることがありますが、"Remove"を選びます(つまりこれまでの.stringsファイルは削除されるので、要バックアップです)。

そしてJapaneseに再度チェックを入れます。
出てきたダイアログで"Replace file"を選ぶと、storyboardの内容に基づいてstringsファイルが再生成されます。


上の画像の例で言えば
"cgO-CO-O4B.text": UILabelの表示文字列
"qY6-pH-68Q.normalTitle": UIButtonの表示文字列
となっているので、これらの右辺に好きな日本語を指定すれば良いわけです(下のコードでは自動生成されたコメントを省略しています)。

"cgO-CO-O4B.text" = "こんにちは!";
"qY6-pH-68Q.normalTitle" = "ボタン";

UI要素を追加した場合はこのやり方が良いですが、追加がない場合であれば.stringsファイルを直接編集する方が簡単ですね。

3. Storyboardを追加したときの多言語対応手順

Localizeから、まずはBaseを選び、その後でJapaneseにチェックを入れて追加します。
あとはこれまでと同様ですね。

4. 多言語対応の動作確認

シミュレータ(もしくは実機)の言語設定を切り替えることで、アプリの英語・日本語表示が切り替わることを確認できます。