web-dev-qa-db-ja.com

Swift UIでローカリゼーションを実装する方法

誰かが私を助けてくれますか? Swift UIでローカライズの説明が見つかりません。誰かがText()などのローカライズ方法のアドバイスやより良い例を教えてもらえますか?

8
Oleh H

Textのドキュメントを見ると、初期化子にStringではなくLocalizedStringKeyが含まれていることがわかります。

init(_ key: LocalizedStringKey, tableName: String? = nil, bundle: Bundle? = nil, comment: StaticString? = nil)

それはローカライズを非常にまっすぐにすることです。あなたがしなければならないすべては:

  • タイプStrings Fileの新しいファイルを作成し、Localizableと呼びます。
  • 新しいファイルを選択し、右側のパネルのファイルインスペクターに移動し、[ローカライズ...]をクリックします。
  • プロジェクトファイルのローカリゼーションセクションに移動し、リストに別の言語を追加します-Xcodeがローカリゼーションファイルを作成します

Localizable.stringsを選択すると、元の言語と追加した言語のファイルが含まれていることがわかります。ここに翻訳、つまりキーとローカライズされたテキストのペアを配置します。

あなたがこのようなテキストを持っている場合はあなたのアプリです:

Text("Hello World!")

Localizable.stringsに翻訳を追加する必要があります。

あなたのベース言語:

"Hello World!" = "Hello World!";

そしてあなたの第二言語(この場合はドイツ語):

"Hello World!" = "Hallo Welt!";

ローカライズされたプレビューを表示するには、次のように定義できます。

struct ContentViewView_Previews: PreviewProvider {

    static var previews: some View {
        ForEach(["en", "de"], id: \.self) { id in
            ContentView()
                .environment(\.locale, .init(identifier: id))
        }
    }
}
11
LuLuGaGa

Swift UIファイルの場合、ローカリゼーション.stringsファイルから文字列キーを挿入するだけです

swiftUIをインポートする

struct ContentView: View {
    var body: some View {
        VStack {
            Text("selectLanguage")
            Text("languagesList")
        }



    }
}

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

これは.stringsファイルの例です

"selectLanguage" = "Select language";
"languagesList" = "Languages list";

結果は ここ

3
Oleh H

SwiftUIでLocalazableを使用するには、次の方法を実行できます。

swiftUIをインポートして、ファイルでLocalizedStringKeyを使用する

//MARK: - File where you enum your keys to your Localized file
enum ButtonName: LocalizedStringKey {
case submit
case cancel
}

//MARK: - Your Localized file where are your translation
"submit" = "Submit is pressed";
"cancel" = "Cancel";

//MARK: - In your code
let submitButtonName = ButtonName.submit.rawValue
let cancelButtonName = ButtonName.cancel.rawValue

VStack {
Text(submitButtonName)
Text(cancelButtonName)
}
0
Roland Lariotte

アプリをローカライズするには、以下が必要です。

  1. Text( "Nice")のようなSwiftUI要素を使用します。 NiceがLocalizable.stringsのキーになります。
  2. テキストがSwiftUI要素にない場合は、NSLocalizedStringを使用する必要があります。
  3. アプリのターゲットを選択します。
  4. ローカリゼーションのエクスポート:編集-> ローカリゼーションのエクスポート...
  5. エクスポートしたファイルを翻訳者に渡します。
  6. 翻訳のインポート:編集-> ローカリゼーションのインポート...
0
Ramis