読者です 読者をやめる 読者になる 読者になる

ベティーのブログ / 作曲、ボカロ、主に結月ゆかり

ベティーです。歌を作っています。Vocaloid、主に結月ゆかり。

アプリの英語化・多言語対応その1 - ストーリーボードとアプリタイトル(SwiftでiOSアプリ開発)

iPhoneアプリ開発

iOSアプリを多言語化する方法です。

この設定を行うと、端末の言語設定にしたがって表示する言語を分けることができます。ここでは、英語と日本語の2か国語対応をおこないます。

 

なお、基本的な考え方としては、デフォルトは英語表示で、例外設定として、端末の言語設定が日本語の場合のみ、日本語を表示するようにします。

 

ストーリーボード

多言語設定

下記の設定を追加します。

f:id:bettychang:20160418223235j:plain

  1. Xcode左上のプロジェクト名
  2. ProjectのProject名
  3. infoタブ
  4. Localizations

 

LocalizationsにはデフォルトでEnglishの設定が入っています。ここにjapaneseの設定を追加します。

f:id:bettychang:20160418223559j:plain

  1. プラスを押す
  2. Japanese (ja)を選択

 

下記のウインドウが表示されます

f:id:bettychang:20160418223904j:plain

  1. Finishを押す

 

では追加された箇所を確認してみましょう。

f:id:bettychang:20160418224119j:plain

ストーリーボードと、ランチスクリーン配下にそれぞれ、(Japanese)というファイルができていればOKです。

 

ストーリーボードの英語文言を記述する

ストーリーボードはMain.storyboard(Base)と、Main.string(Japanese)の2つのコンテンツで構成されています。

 

Main.storyboard(Base) 

こちらは通常のストーリーボードです。

 例として、私がいま作成しているプロジェクトの画面で説明します。

f:id:bettychang:20160419025646j:plain

なお、楽器のアプリなので、ほとんど日本語がないのですが、真ん中のボタンに「移動ド」という日本語が書かれていますので、これを英語対応してみます。

では、ストーリーボード上の文言を英語にする具体的な方法ですが、この画面の日本語を英語に書き換えればそれでOKです。

なぜなら、英語の言語設定のiOSでアプリが実行されると、Main.storyboard(Base)に記載されている文言が使用されるからです。

というわけで、ストーリーボードのボタンの文言を英語に書き換えました。

f:id:bettychang:20160419025709j:plain

この状態で、ビルドしてみます。

言語設定が英語でのアプリ実行画面がこちらです。

f:id:bettychang:20160419025929j:plain

ボタンの文言が先ほど書き換えた英語で表示されました。

 

今度は端末の言語設定を日本語に変更して再度アプリを起動してみます。

f:id:bettychang:20160419030033j:plain

日本語で表示されました。

ところで、先ほどストーリーボードのボタンの文言は英語に書き換えてしまったはずです。ではこの日本語の設定はどこからやってきたのでしょうか。

それは、Main.strings(Japanese)ファイルです。

中身を開いてみましょう。

f:id:bettychang:20160419030357j:plain

"移動ド"という日本語表示がこのファイルに残っているのが見えると思います。

つまり、ストーリーボード上のオブジェクトの文言は、通常はMain.storyboard (Base)の記述を使用しますが、iOSの言語設定が日本語だった場合には、このMain.strings (Japanese)のこのファイルの定義を使用する、という設定になっているわけです。

 

ここで注意する点は、このファイルはLocalization設定を行った時点の内容を元に作成されているので、これ以降追加したオブジェクトの設定は反映されない点です。

よって、ストーリーボードの多言語対応は、ひととおりアプリが完成してから実行するほうがよいでしょう。

 

タイトル名の多言語対応

アプリアイコンの下に表示されるタイトルを多言語化します。

 

InfoPlist.stringsファイルの追加

 プロジェクトにInfoPlist.stringsというファイルを追加します。

f:id:bettychang:20160418225805j:plain

  1.  Xcodeメニューから、File
  2. New
  3. File...を選択

 

下記のファイル選択画面が開きますので、ファイルの種類を選びます。

f:id:bettychang:20160418230022j:plain

  1. iOSのエリアの「Resource」
  2. Strings File
  3. Next

ファイル名を指定します。

f:id:bettychang:20160418230333j:plain

  1. Save As の箇所に、「InfoPlist.strings」と入力
  2. Createを押す

 

これでInfoPlist.stringsファイルが作成されました。

Xcodeの左側のファイルツリー上に「InfoPlist.strings」が存在することを確認してください。

f:id:bettychang:20160418230637j:plain

 

Localize...の実行

InfoPlist.stringsファイルのLocalizationを設定します。

f:id:bettychang:20160419020817j:plain

  1. Xcode左側のツリーでInfoPlist.stringsファイルを選択
  2. Xcode右側の「Localize...」ボタンを押す

 

下記の確認ダイアログが表示されます。

f:id:bettychang:20160419021156j:plain

  1. Japaneseを選択
  2. Localizeを実行

 

InfoPlist.stringsにアプリの日本語表示名を設定する

続いて、作成したInfoPlist.stringsファイルに値を設定します。設定する内容は、日本語のアプリ名称です。

 

Xcode左のツリー上からInfoPlist.stringsファイルを選択して、下記を追記します。

 

CFBundleDisplayName = "日本語アプリ名";

 

私の場合、下記のように設定しました。

f:id:bettychang:20160418231858j:plain

では実機で確認してみます。

iOS側の言語設定が日本語の状態で、ビルドします。

 

こちらがビルド後のアプリアイコンの画面です。

f:id:bettychang:20160418232349j:plain

 InfoPlist.StringsファイルのCFBundleDisplayNameに設定した名前が表示されています。

 

では、端末の言語が日本語以外の言語設定の場合の表示状態も見てみましょう。

ちなみに、iOS上の言語設定は、設定 > 一般 >言語と地域 で変更できます。

 

言語設定を英語に変更した時の画面がこちらです。

f:id:bettychang:20160419022109j:plain

 

英語の名前になりました。

 

というわけで、今回はここまでです。その2では、コード内の文言を多言語対応する方法を説明します。ご覧頂きありがとうございました。