【Swift】ローカライゼーション(Localization)で多言語対応する

ういうい、しょーさんです。

今日はローカライゼーション(Localization)で多言語対応する、という話をしようと思います。

と言ってますが、私も久しぶりにやるのでやり方を確認しながらやっていきます。
最近 Karaokey というカラオケで歌う曲のキーをメモれるアプリを作ったのですが、それのローカライズをまだしていないので日本語対応やっていきたいと思います。

Karaokey

詳細は以下を見てどうぞ!
【アプリリリース】Karaokey リリースのお知らせ

ローカライゼーション(Localization) とは

要は多言語対応です。端末で設定された言語によって、その言語で表示する方法なのですがマニュアルで設定してあげないと表示されないんですね。
コード上では日本語をStringで書いたり、英語をStringで書いたりしていると思いますが、ローカライゼーションしたい言語分だけ設定をしないといけません。

今回Karaokeyでは英語で初めは文字列を書いているので、それを日本語にしていきたいと思います。

Localizationを追加する

はじめに、

Project > Info > Localizations

の + ボタンで追加したい言語を追加します。
私は日本語を追加したいのでJapaneseを選択します。追加したい言語を選択してください。

Main.storyboardがある人はそれを選択、storyboardを使用しない人は削除しているかと思いますのでLaunchScreenを選択します。

右側にセレクションがありますが

  • Interface Bulder で設定するか
  • Strings ファイルでコードベースで設定するか

を選択できます。

私はコードベースで調整したいのでLocalizable Stringsを選択します。
そうすれば希望の言語が追加されるかと思います。

Localizable.stringsファイルを作成する

このファイルにキーワードを登録して、端末言語に応じて言語変更します。

新しいファイルを作成して、Strings File を追加します。

ファイル名は Localizable.strings としましょう。

次にInspector の下部にあるLocalizeというボタンを押下すると

言語選択ウィンドウが現れます。ここで希望の言語を選択してください。

さらに、InspectorのLocalizationでトランスレートしたい言語(私はEnglish ⇄ Japaneseをしたいので)にチェックを入れます。

さすれば二つのstringsファイルが作成されているはず。

これで追加作業はおしまい。
次に言語設定をやっていくぞい。

キーワードを登録する。

キーワード登録のやり方は簡単です。

// Japanese
"add item" = " アイテムを追加する";

とそれぞれ記述していくだけになります。
※セミコロン忘れないで!

私はこんな感じになりました。

// tabs
"Songs" = "曲";
"Playlist" = "プレイリスト";
"Add" = "追加";
"Setting" = "設定";

//Songs
"All" = "全て";
"Cancel" = "キャンセル";
"Delete" = "削除";
"Item was removed." = "曲が削除されました。";

// Playlist
"Playlist 1" = "プレイリスト1";
"Playlist 2" = "プレイリスト2";
"Edit" = "編集";
"Add mode" = "追加モード";
"Add tems" = "アイテムを追加";
"New item was added to Playlist." = "新しい曲が追加されました。";

// Add
"Title" = "タイトル";
"Artist" = "アーティスト";
"ADD" = "追加";
"Input tag here" = "タグを追加";
"SAVE" = "追加";
"New Song was added." = "曲が追加されました。";
"About App" = "アプリについて";
"Jump to Support" = "サポートへアクセス";

記述方法

これらを翻訳したい場合、文字列を入れる場所で NSLocalizedString(_:) を使用します。

使い方は

navigationItem.title = NSLocalizedString("Songs", comment: "")

のように記述します。
commentに関してはコメントなので特に必要なかったらブランクで良いかと思います。

シミュレーターで確認する場合

シミュレーターで確認する場合は設定言語を該当のものに変更しないといけません。

シミュレーター上で

Settings > General > Language & Region > iPhone Language > 言語を選択

で可能です。

結果

変わりましたー!イエイ!

バナーが被ってるのは気にしないでくれ!シミュレータの設定だけ整っていないのだ!
製品ではちゃんと表示されているぜ!

終わりに

案外簡単でしたね。
文字列は別のところにまとめたり、何か手を加えないと一つ一つやらなければいけなくなるので大変だなぁという印象でした。
少しだけなら良いんですけどね。

ていうかプロジェクト名がSingSongなのは気にしないでください、過去の名前です。
(ダブリングチェックしないままプロジェクト作ってしまったから、、、そのうち変えんと)

そんな感じでみんなもやってみよーぜ!
以上だ!
じゃーな!

お疲れさんです!