Langsysの仕組み
Langsys は、UI にすでにある文章をそのまま翻訳システムに変えます。管理すべきキーファイルも、ビルド時の抽出手順もありません。コード内のフレーズが、検索キーであると同時にベース言語のデフォルトにもなります。
フレーズがそのままキーになる
従来の i18n では、文字列ごとに識別子を考え、実際のテキストをロケールファイルに保存し、その 2 つを常に同期させ続ける必要があります。Langsys はこの間接的な仕組みをなくします。実際の文を書くだけで、その文自体がキーになります。
// Traditional i18n — indirection + a keys file to maintain
t('greetings.hello'); // what does this say? open en.json to find out
// en.json
{ "greetings": { "hello": "Hello, {name}!" } } // Langsys — the phrase IS the key and the base-language default
t('Hello, {name}!', 'Greetings', { name }); 原文そのものがキーであるため、アプリ内のどこに書かれていても同じフレーズは1つの翻訳エントリーとして扱われ(重複排除は自動です)、まだ翻訳されていないロケールでは単に原文にフォールバックします。キーが見つからないことを示すプレースホルダーは存在しません。
リアルタイムと継続的な運用
抽出コマンドを実行する必要はありません。アプリが表示される際に、SDK が使用されているフレーズを検出します。新しいフレーズはバックグラウンドで機械翻訳され、プロジェクトのターゲットロケールに追加されます。アプリは完成したカタログを取得します。新しい文を今日リリースしても、その後すぐに翻訳されるため、ロケールバンドルの再デプロイは不要です。
ライフサイクル
- UI は
t()、<Translate>などでフレーズを表示します。 - 開発環境では、書き込みキーを使うと、SDKが新しいフレーズを検出して登録できます。
- Langsysが、プロジェクトのすべてのターゲットロケールに機械翻訳します。
- 本番環境では、読み取り専用キーを使って、ユーザーのロケール向けの完成したカタログを取得します。
- ロケールを変更すると、UI 全体が翻訳された状態で再レンダリングされます。リロードは不要で、即座に切り替わります。
従来の i18n との違い。手作業で編集する en.json も、t('some.nested.key') のような間接参照も、ビルド時の抽出ステップも不要で、キー欠落時のフォールバックもありません。原文がそのままフォールバックになります。