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


10

誰かが私を助けてくれますか?Swift UIでローカリゼーションの説明が見つかりません。たとえば、ローカライズする方法の例やアドバイスを誰かに教えてもらえますText()か?

回答:


15

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))
        }
    }
}

ありがとう、役に立ちました!しかし、すでにいくつかの言語が追加されていたため、いくつか問題がありました。
Oleh H

私はこれらの指示に従って手紙を書いたが、うまくいかなかった。iOS 10.15.1 BetaとXcode 11.1を実行しています。どんな助言も喜んで受け入れました。今のところ、私はベータ版ソフトウェアの不具合を想定し、これについてこれ以上の時間を失うことはありません
ジョセフBeuysのママ

正確には何が問題でしたか?
LuLuGaGa

1
@LuLuGaGaに問題が見つかりました。私が言ったように、私が手紙への指示に従っていなかったことは、あらわれます。私のローカリゼーション文字列ファイルはサブフォルダーにありました。プロジェクトレベルで配置すると、問題なく動作します
Joseph Beuysの母'30年

1
以外の文字列ファイルを呼び出すこと(と思う)もを発見したローカライズそれが仕事ではないことを意味します
ヨーゼフ・ボイスママ

3

迅速な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";

結果は こちら


0

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

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

0

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)
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.