SwiftUI | iOS Appを多言語対応(Localize)する方法

SwiftUI

SwiftUIでiOS Appを多言語対応する方法を説明する。

App内の多言語対応

完成イメージ

完成イメージを以下に示す。iPhone側の言語設定に応じてApp側の言語が切り替わる。

iPhone側の言語設定が日本語のとき

iPhone側の言語設定が英語のとき

文字列を定義するための箱を準備

XcodeのPROJECT > Info > Localizationsから追加したい言語を「+」で選択して追加する。

日本語を追加した。

「File」→「New」→「File」で「Strings File」を選択し「Next」をクリックする。

ファイル名を「Localizable.strings」としTargetsにチェックしCreateをクリックする。

Localizable.stringsを選択して右上のボタンで右パネルを表示させて「Localize」をクリックする。

Japaneseを選択しLocalizeをクリックする。

EnglishとJapaneseにチェックを入れる。

Localizable.strings(Japanese)とLocalizable.strings(English)が生成された。あとはこれらのファイルに文字列を定義していく。

文字列を定義

ローカライズしたい文字列をKey-Valueの形で定義していく。例として次のように定義したいとする。

KeyValue(日本語)Value(英語)
strAなまえname
strBヨシヒコYoshihiko
strCしょくぎょうjob
strDあそびにんplay boy

Localizable.strings(Japanese)に日本語の定義を記述する。

コピペ用コード

"strA" = "なまえ";
"strB" = "ヨシヒコ";
"strC" = "しょくぎょう";
"strD" = "あそびにん";

Localizable.strings(English)に英語の定義を記述する。

コピペ用コード

"strA" = "name";
"strB" = "Yoshihiko";
"strC" = "job";
"strD" = "play boy";

定義した文字列を使う

英語と日本語の文字列を定義できたのであとは使うだけである。使用前、使用後のコードを以下に示す。

使用前

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("なまえ")
        Text("ヨシヒコ")
        Spacer()
            .frame(height: 50)
        Text("しょくぎょう")
        Text("あそびにん")
    }
}

使用後

import SwiftUI

struct ContentView: View {
    let 変数A = NSLocalizedString("strA", comment: "")
    let 変数B = NSLocalizedString("strB", comment: "")
    let 変数C = NSLocalizedString("strC", comment: "")
    let 変数D = NSLocalizedString("strD", comment: "")
    var body: some View {
        Text(変数A)
        Text(変数B)
        Spacer()
            .frame(height: 50)
        Text(変数C)
        Text(変数D)
    }
}

完成

iPhone側の言語設定が日本語のとき

iPhone側の言語設定が英語のとき

ホーム画面上のApp名の多言語対応

ホーム画面上のApp名を多言語対応させる方法を説明する。

完成イメージ

完成イメージを以下に示す。

iPhone側の言語設定が日本語のときはApp名が「ヨシヒコ」と表示される。

iPhone側の言語設定が英語のときはApp名が「Yoshihiko」と表示される。

App名を定義するための箱を準備

「File」→「New」→「File」で「Strings File」を選択し「Next」をクリックする。

ファイル名を「InfoPlist.strings」としTargetsにチェックしCreateをクリックする。

InfoPlist.stringsを選択して右上のボタンで右パネルを表示させて「Localize」をクリックする。

Japaneseを選択しLocalizeをクリックする。

EnglishとJapaneseにチェックを入れる。

InfoPlist.strings(Japanese)とInfoPlist.strings(English)が生成された。あとはこれらのファイルにホーム画面上のApp名を定義していく。

ホーム画面上のApp名を定義

InfoPlist.strings(Japanese)に日本語の定義を記述する。

コピペ用コード

CFBundleDisplayName = "ヨシヒコ";

InfoPlist.strings(English)に英語の定義を記述する。

コピペ用コード

CFBundleDisplayName = "Yoshihiko";

完成

iPhone側の言語設定が日本語のとき

iPhone側の言語設定が英語のとき

App Storeの多言語対応

App Storeに表示される言語を多言語対応する方法を説明する。

完成イメージ

ヨシヒコのAppはさすがにAppleの審査を通らないであろうからAppleの審査を通ったAppを例に完成イメージを示す。

日本語のページ(https://apps.apple.com/jp/app/id1605432862)では説明文などが日本語で表示される。

‎絶対音感チェッカー
‎■概要 鳴った音が何かを当てるだけの超ウルトラとてもシンプルなゲームです。 ■上達のコツ 絶対音感は暗記ゲーなので、次のような暗記のテクニックを使えば楽勝で暗記できます。 ・インプットとアウトプット ・分散学習 ・困難は分割 ■インプット 良く聞く曲と関連付けて音を覚えます。例えば「ド」はブラームス弦楽五重奏曲...

英語のページ(https://apps.apple.com/us/app/id1605432862)では英語で表示される。

‎Absolute Pitch Checker
‎■ Tips for improving Absolute pitch is a memorization game, so you can easily memorize it by using the following memorization techniques. ・ Input and output ・ ...

手順

これはApp自体のバージョンアップと同時に行う必要があるため、まずApp自体のバージョンアップ版をビルドする。ビルドしたらApp Store Connectへアクセスする。

https://appstoreconnect.apple.com/

Appのページに行き右側の「日本語」をクリックし「ローカライズされていない」の中から多言語対応したい言語(今回の場合は英語)を選択しその言語にチェックを付ける。

スクリーンショットを登録するところに英語版のAppのスクショを登録し、プロモーション用テキスト、概要、このバージョンの最新情報、キーワードを英語で記入する。

App情報のページで名前とサブタイトルを英語で記入する。

これで審査に提出する。

まとめ

SwiftUIでiOS Appを多言語対応する方法を説明した。

コメント

タイトルとURLをコピーしました