SwiftUIの多言語対応

この記事は約4分で読めます。

SwiftUIにおいて多言語に対応したい場合、ローカライズを使うと便利です。

設定手順

ローカライズは以下の手順で行うことができます。

1.Infoタブを開く

Project設定から「Info」タブを選択してください

Localizations の項目はデフォルトで以下のような設定となっているかと思います。

2.言語を追加する

Localizations の項目で「+」を選択すると、言語の一覧が表示されます。
追加したい言語を選択すると追加できます。

この例では「Japanese」を選択しました。以下のように追加されています。

3.Strings Fileを追加する

任意のディレクトリに「Strings File」を追加します。ファイルの追加方法は他のファイルの追加方法と同様でディレクトリを選択してNew File…をタップします。

すると以下の通りファイル形式の選択画面が表示されるため、下にスクロールしていき『Strings File』を選択、Nextボタンを押してください。

Localization.stringsファイルが追加されました。

4.対応する言語を選択する

追加したLocalization.stringsファイルを選択すると画面右側に『Localize…』というボタンが表示されるためタップしてください。

すると、右の画面が表示されます。デフォルトでEnglishが表示されていると思います。そのままLocalizeボタンを押して先に進めてください。

先ほどLocalizationの項目にボタンが表示されていましたが、EnglishとJapaneseというチェックボックスが表示されています。使用する言語にチェックをしてください。

➡️

するとチェックをした言語に対応するLocalizable.stringが追加されました。

5.対応言語ごとに文字列を設定する

各言語のLocalizable.stringsファイルに置き換える文字列を設定していきます。

Localizable.string(English)とLocalizable.string(Japanese)のファイルそれぞれのサンプルコードは以下の通りです。

注意点として行末に『 ; 』が必要なので忘れないようにしてください。

/* 
  Localizable.strings
  samplecode
*/
"HelloWorld" = "Hello World";//←;を忘れずに!
/* 
  Localizable.strings
  samplecode
*/
"HelloWorld" = "こんにちは";

6.プログラム中で使用する

プログラムで使用するには、文字列として”HelloWorld”を使用すると、Localizeで設定されている言語に対応した文字列に自動で置き換わります。

注意点:関数化する際など、引数として渡された場合はもう一つ手順が必要となります。以下のページで紹介しています。
https://swappli.com/localizable0902/

import SwiftUI

struct SheetView: View {
    var body: some View {
        Text("HelloWorld")
    }
}

struct SheetView_Previews: PreviewProvider {
    static var previews: some View {
        SheetView()
            .environment(\.locale, .init(identifier: "en"))
    }
}

参考:プレビューで言語の切り替えを確認

.environment(\.locale, .init(identifier: “en”))の部分を .environment(\.locale, .init(identifier: “ja”))に置き換えると日本語のプレビューを確認することができます。

struct SheetView_Previews: PreviewProvider {
    static var previews: some View {
        SheetView()
            .environment(\.locale, .init(identifier: "ja"))
    }
}
タイトルとURLをコピーしました