バッチインポート値のローカライズ
Liferay DXP 2026.Q3+
ローカライズされたフィールド値は、 _i18n マップに表示され、例えば value_i18n や name_i18n などがあります。 マップ内の各エントリは、言語IDと翻訳された文字列をペアにしたものです。
すべての言語 ID を手動でリストする代わりに、 [$FOR_EACH_LANGUAGE_ID$] トークンを追加し、 言語キー という名前を付けることができます。 言語キーは、用語の翻訳を保持する Language.properties ファイルのエントリです。 必要な翻訳が既に言語キーに存在する場合は、トークンを使用してください。
トークンの追加
キーが [$FOR_EACH_LANGUAGE_ID$] で、値が言語キーであるエントリを1つ追加します。
"value_i18n": {
"[$FOR_EACH_LANGUAGE_ID$]": "welcome-to-liferay"
}
トークンはエントリの値ではなくキーなので、ファイルは依然として有効なJSONです。
インポート処理により、そのエントリは有効化されている言語ごとに1つのエントリに置き換えられます。 例えば、英語、スペイン語、ブラジルポルトガル語が有効になっているインスタンスでは、インポートによって以下のエントリが生成されます。
"value_i18n": {
"en_US": "Liferay へようこそ"、
"es_ES": "ビアンベニド a Liferay"、
"pt_BR": "ベム・ビンド・アオ・ライフレイ"
}
このトークンは、バッチエンジンを介してインポートされたすべてのデータ(バッチクライアント拡張機能からのデータを含む)で解決されます。 サイト初期化処理では、ページ定義、表示ページテンプレート、およびオブジェクト定義ファイルも解決されます。
サイト初期化子内の他の場所( roles.json や通知テンプレートなど)では、トークンは展開されず、フィールドは翻訳されないままです。 一部のアセットタイプでは、このような事態が発生してもログが記録されません。 ログではなく、インポートされたデータを確認してください。
Liferay に付属の言語キーを再利用するのではなく、独自の言語キーを追加するには、 言語クライアント拡張機能 を参照してください。
拡張マップの言語
インポート機能は、Liferayインスタンスで有効になっている言語ごとに1つのエントリを書き込みますが、Liferayに付属するすべての言語に対して書き込むわけではありません。 言語クライアント拡張機能または言語オーバーライドツールを使用して追加したキーは、動作が異なります。
| 主要情報源 | 内容 |
|---|---|
| Liferay独自のキー | 有効になっている言語ごとにエントリが作成されます。 独自の翻訳を持たない言語は、他のロケールから値を取得します。 |
| カスタムキー | キーに記載されている言語のみ、エントリーできます。 その他の有効言語はマップから削除され、ログにも何も記録されません。 |
手書きで入力した言語エントリが優先され、インポートによってマップに不足している言語のみが補完されます。 この例では、 en_US は値 Customを保持し、残りの言語は welcome-to-liferay キーから翻訳を取得します。
"value_i18n": {
"en_US": "Custom",
"[$FOR_EACH_LANGUAGE_ID$]": "welcome-to-liferay"
}
インポートによって展開中に [$FOR_EACH_LANGUAGE_ID$] エントリが削除されるため、生のトークンが翻訳として表示されることはありません。
展開処理は決定論的であるため、同じファイルを2回インポートしても結果は同じになります。 インポート後にエクスポートされるデータには、トークンではなく解決済みの翻訳が含まれており、そのデータを後でインポートすると、値は変更されずに渡されます。
未解決の言語キー
キーに対応する言語の翻訳がない場合でも、インポートは失敗しません。 Liferay は com.liferay.batch.engine.internal.language.LanguageKeyResolverImpl からの警告をログに記録し、トークンエントリを削除するため、手動で書き込んだエントリのみが残ります。
言語キー "[キー]" を解決できません
手書きの書き込みがない地図は空白である。
トークンの値は、単一の言語キー文字列でなければなりません。 値がオブジェクトまたは配列の場合、Liferay はそのエントリをそのまま残し、何もログに記録しません。
言語キー解決の有効化
言語キー解決有効化 設定は、Liferay インスタンスの解決をオンまたはオフにします。 変更するには、 グローバルメニュー → インスタンス設定 → バッチエンジン に移動し、 バッチエンジンタスク構成 エントリを開きます。
この設定はデフォルトで有効になっています。 無効になっている場合、インポートは解決をスキップし、書き込まれたとおりにリテラルな [$FOR_EACH_LANGUAGE_ID$] キーをマップに格納します。