Swiftuiアプリケーションを翻訳する方法


我々のアプリケーションのローカライズは、我々が考えるより重要です.私たちは普通英語を第一言語として扱う.世界の78億人の住民の4.9 %が英語を話す.ほとんどの人は英語のネイティブスピーカーではない.物事の壮大なスキームでは、たったの360万人が最初の言語として英語を話す.
Swiftuiは、複数の言語に我々のアプリケーションを翻訳するには、偉大な使いやすいオプションを与えます.我々は、すべてのことに精通している可能性がありますLocalizable.strings すべての翻訳を置くファイル.私はあなたのプロジェクトのためにこれを作成する方法には行かない.
さらに、Xcodeは、ビルド設定を変更し、システム言語自体を変更せずに既定の言語を変更するオプションがあります.

この記事では、我々はどのように組み込み機能をチェックアウトすることによってSwiftuiアプリを翻訳する方法について説明します.また、動的に変更するテキストを翻訳する方法も参照してください.

テキストアプローチ


ほとんどすべてのSwiftuiビルディングブロックのようなText , Button , TextField , そして、より多くのイニシアチブが舞台裏でローカライズを使用して来る.
例えば、私たちがAを作ると言いましょうText タイトルを見るName . 我々は、それを加えることができますLocalizable.strings ファイルは、何もしないで翻訳されます.翻訳が提供されないならば、それは指定されたデフォルトタイトルに戻るでしょう.我々はSwiftuiは余分な仕事を行うことなく私たちのアプリを翻訳の世話をすることができます.
少し深く掘りましょうText 初期化.
init(_ key: LocalizedStringKey, tableName: String? = nil, bundle: Bundle? = nil, comment: StaticString? = nil)
最初のパラメータはLocalizedStringKey . 探検しましょう.

LocalizedStringKeyは何ですか?


The LocalizedStringKey 魔法は、我々のSwiftuiアプリのすべての翻訳をパワーです.それは何をしているLocalizable.strings ファイルとチェックがこのキーであるならば、チェックしてください.準拠ExpressibleByStringLiteral そして、それは我々が我々のSwiftui View Initializersでそれを使うことができる理由です.
別の使い方LocalizedStringKey 翻訳がビューに渡されるときです.挨拶テキストをパラメータとして受け取る挨拶ビューがあるとしましょう.このような場合、型を持つパラメータを作成する必要がありますLocalizedStringKey . これを構築するとき、我々はString 値初期化LocalizedStringKey を使用してLocalizedStringKey(_ value: String) 初期化.この場合、それは単なるテキストとして扱われませんが、翻訳文字列ファイルからのキーです.

文字列補間


今、我々は静的な翻訳作業を知っているが、どのように動的に作成されたテキストで動作しますか?たとえば、私たちは、ユーザー提供の名前で挨拶を表示するテキストビューを持っています.であろうHello, Mary! , でもMary テキストフィールドからエントリを置換します.この種のテキストを翻訳するには、文字列補間を使用する必要があります.
上の例では、Localizable.strings ファイル入力Hello, %@!%@String パラメータの作成時にLocalizedStringKey このように:
Text("Hello, \(name)!")
舞台裏では、あなたのユーザーのロケールを考慮に入れて、数字、日付、通貨とより多くをフォーマットすることができるストリング書式設定を使用しています.このブログ記事では、私たちはそのトピックに深く掘り下げるつもりはありません.

TLドクター


地球上のすべての人々の4.9 %だけが彼らの最初の言語として英語を話します.これは、我々はより広い視聴者に到達し、よりアクセスできるように我々のアプリを翻訳する必要があることを意味します.
SwifTuiは、翻訳を容易にする組み込み機能の素晴らしいセットをしています.ビュー要素のほとんどは、Localizable.strings ファイル.
動的テキストを使用すると、文字列の補間を使用し、それに応じて書式を指定する必要があります.Swiftuiはユーザの定義されたロケールでそれをフォーマットします.

リンク

  • Sample code
  • Localization guide by Apple
  • Localization in SwiftUI
  • Localization in SwiftUI forum thread
  • Localization with SwiftUI, how to preview your localized content
  • Localization with Zach Brass
  • Introduction to SwiftUI Localization tutorial
  • Localize your SwiftUI app WWDC talk
  • Preparing Views for Localization