ドキュメント React Native & Expo

React Native & Expo

i1n SDKまたはi18n-jsとのブリッジモードを使用して、i1nをReact NativeおよびExpoと統合します。

セットアップ

React Nativeプロジェクトでi1n initを実行します。CLIは、expo-localizationが存在する場合に自動検出を行い、locales/ディレクトリにJSON形式を設定します。

i1n SDKをスタンドアロンモードで使用するか、Bridge Mode経由でi18n-jsに接続することができます。

スタンドアロンモード

デバイスのロケール検出には、expo-localization を使用して i1n SDK を直接使用します。init() で初期化し、リソースをロードして、コンポーネントで t() を使用します。

Reactプロバイダーパターンは、Reactウェブプロジェクトと全く同じように機能します。型安全な翻訳と実行時のロケール切り替えには、useI1n()フックを使用してください。

i18n-js を使用したブリッジモード

プロジェクトでi18n-jsを使用している場合、registerI1n((key, params) => i18n.t(key, params))で接続します。i1nのt()関数は、厳密な型チェックとオートコンプリートを提供しながら、i18n-jsに委譲します。

i1nは翻訳ファイルと型生成を管理します。i18n-jsは引き続き実行時の複数形化と補間を処理します。Expo管理およびベアReact Nativeワークフローの両方で動作します。

デプロイメント

アプリをビルドする前にi1n pullを実行してください。翻訳はアプリケーションバイナリにバンドルされます。

オーバー・ザ・エア翻訳アップデートのために、i1n pull を OTA アップデート戦略(例:Expo Updates または CodePush)と組み合わせてください。

App.tsx
import * as Localization from 'expo-localization'
import { I18n } from 'i18n-js'

const i18n = new I18n(translations)
i18n.locale = Localization.locale

<Text>{i18n.t('welcome')}</Text>
Bridge Mode — src/i18n.ts
import { registerI1n } from 'i1n'
import { I18n } from 'i18n-js'

const i18n = new I18n(translations)
registerI1n((key, params) => i18n.t(key, params))

関連