ブリッジモード
既存のi18nライブラリを維持しながら、i1nのタイプセーフなオートコンプリート、AI翻訳、ファイル管理機能を追加できます。
ブリッジモードとは何ですか?
ブリッジモードを使用すると、既存のi18nライブラリ(i18next、react-intl、vue-i18n、ngx-translate、i18n-js)を維持しながら、i1nを使用して翻訳ファイル、AI翻訳、および型生成を管理できます。
registerI1n()を使用して、ライブラリを1行で接続します。i1n t()関数は、バックグラウンドでライブラリに委譲しますが、厳密な型チェックと生成されたi1n.d.tsからの完全なIDEオートコンプリートが可能です。
ライブラリによるセットアップ
ライブラリごとに1行。ライブラリの翻訳関数でregisterI1n()を呼び出すだけで完了です。あとはi1nが処理します。特定のセットアップについては、以下のコード例を参照してください。
vue-i18n: registerI1n((key, params) => i18n.global.t(key, params)). ngx-translate (Angular): registerI1n((key, params) => translateService.instant(key, params)). i18n-js (React Native): registerI1n((key, params) => i18n.t(key, params)).
カスタム関数:registerI1n((key, params) => yourLookup(key, params))。ブリッジモードは、キーとオプションのパラメータを受け取り、文字列を返す任意の関数で機能します。
仕組み
registerI1n() を呼び出した後、i1n t() 関数のすべての呼び出しは登録済みのコールバックに転送されます。i1n はその上に型安全性を追加します。キーが翻訳ファイルに存在しない場合、TypeScript はコンパイル時にエラーを検出します。
i1nは、翻訳ファイル(プッシュ、プル、AI翻訳)の管理とi1n.d.tsの生成を継続します。あなたのライブラリは、実行時のロード、補間、複数形処理を継続して処理します。両方のシステムはシームレスに連携します。
ブリッジモードとスタンドアロンモードの使い分け
既存のプロジェクトに確立されたi18nライブラリがあり、アプリケーションコードを書き直したくない場合は、ブリッジモードを使用してください。ブリッジモードは、コストゼロの移行パスを提供します。1つのコンポーネントを変更することなく、i1nのインフラストラクチャを採用できます。
新規プロジェクトの場合や、i18nライブラリを完全に置き換えたい場合は、スタンドアロンモードを使用してください。i1n SDKは、初期化、補間、複数形、ロケール切り替えを外部依存なしにネイティブで処理します。
import { registerI1n } from 'i1n'
import i18next from 'i18next'
registerI1n((key, params) => i18next.t(key, params)) import { registerI1n } from 'i1n'
import { useIntl } from 'react-intl'
const intl = useIntl()
registerI1n((key, params) => intl.formatMessage({ id: key }, params)) import { registerI1n } from 'i1n'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
registerI1n((key, params) => t(key, params)) import { registerI1n } from 'i1n'
import { TranslateService } from '@ngx-translate/core'
constructor(private translate: TranslateService) {
registerI1n((key, params) => this.translate.instant(key, params))
} import { registerI1n } from 'i1n'
import { I18n } from 'i18n-js'
const i18n = new I18n(translations)
registerI1n((key, params) => i18n.t(key, params)) import { registerI1n } from 'i1n'
// Works with any function: (key, params?) => string
registerI1n((key, params) => myCustomLookup(key, params))