「多言語化?しないと思うけど・・・」ならやっておこう!
最近、初めて作ったiOSアプリを英語に対応させました。
リリースしてみると、実は海外の方が需要があるようで、それではと途中から対応となりました。
しかし、最初はそんなことを考えずに作っていたため、
「あれ、どこに文章あったっけ・・」
「そうか、変わったらボタンのタイトルが変わるから・・・あれ、アラートはやったっけ・・・」
と、まあなかなかの手間とミスと時間がかかってしまったため、最初からそれを見越しつつ、管理していた方がいいよ!ということで、
簡単に、「とりあえず」テキスト管理をしよう!というメモです。
今回はiOS版
Xcode9.0
Swift4.0
テキストの管理が目標ですが、わかりやすく、
・日本語の場合
・日本語以外の場合
を想定して、Strings Fileを触っていきます。
まずは、info.plistの辺りに、新しいファイルを作ります。
「Strings File」を選択します。
ファイル名は、必ず「Localizable」とします。
その後、できたLocalizable.stringsのユーティリティエリア内のLocalize... というボタンをクリックします。
ちゃんと作成されたようです。
次は、対応言語に日本語を増やしましょう。
PROJECT -> Info -> Localizations に日本語を追加します。
プラスボタンから、対応したい言語を探して追加します。
Japaneseを追加します。
その際に、
- Main.storyboard
- LaunchScreen.storyboard
- Localizable.strings
の3つがありますが、Localizable.stringsにのみチェックを入れます。
storyboard上でも多言語化はできます。が、今回はstoryboardは使わないので、チェックをはずしておきます。
その後、EnglishをLocalizationsから削除します。
Localizable.stringsに戻ると、このようにEnglishが消え、Japaneseが追加されていることがわかります。
次は、Localizable.stringsはどの言語に対応させるか、決めましょう。
Baseを指定すると、作った言語以外の場合表示するファイルとなり(今回の場合は、日本語以外)、
Japaneseなどの言語を指定すると、指定した言語(Japaneseの場合、端末を日本語に選択していると)の場合、そこで指定した文字を表示します。
先ほど作ったファイルは、日本語に対応したファイルとしましょう。
同様に、Baseも作ろうと思います。
Japaneseのみ選択されていたところを、Baseも選択します。
すると、BaseとJapaneseのLocalizable.stringsファイルができます。
これでファイルの準備は完了です。
※BaseのLocalizable.stringsを見ると、Japanがチェックされていますが問題ありません(わかりずらい・・・)
実際に使っていきましょう。
今回は、Labelにテキストを表示させます。
まずは、Localizable.stringsに使用するテキストを追加します。
両方に書くのを忘れないように!
//Localizable.strings(Base) //キー = 文言 "hello" = "Hello";
//Localizable.strings(Japanese) //キー = 文言 "hello" = "こんにちは";
使用するときは、以下のようにします。
override func viewDidLoad() { super.viewDidLoad() testLabel.text = NSLocalizedString("hello", comment: "hello") }
commentは、なくても問題はないですが、とりあえずキーと同じにしておきます。
まだ有効的に使えていないので、わかりしだい追記します。
さて、これだけです!
シュミレーターで確認して見ます。
まずは、端末の言語が日本語の場合。
端末の言語が日本語以外の場合。
きちんと端末の言語によって、変わっているのを確認できました!
今回は、日本語とその他と分けて見ましたが、
最初にプロジェクトを作る際に、Localizable.stringsを作っておけば管理も楽です。こうして作っておけば、内容を変更したいとき、修正したいときなど、一箇所にかいておけばミスも減ります。
少しの手間ですが、後々の事を考えれば楽です。
次回はAndroidも書いていこうと思います。