問題
- 私たちはReactを使用してカスタムエレメントクライアントの拡張機能を構築しています。 私たちは、コントロールパネルの言語オーバーライド機能を使用して、異なる言語へのすべての翻訳を管理したいと考えています。
環境
- Liferay DXP 7.4 +
解像度
- Liferay.Languate.key("")を使い、Liferayの言語オーバーライドを使って翻訳できるようにするために、アプリケーションのpackage.jsonに以下を追加します。
"eslintConfig": {
"globals": {
"Liferay": true
}
},
追加情報
- JavascriptのコードにLiferay.Language.get()関数の呼び出しが含まれている場合:
- 引数が文字列リテラルとして提供される場合、LanguageFilterは提供されたキーをリクエストターゲット言語に翻訳しようとします。
- 引数が式の場合(つまり、キーが動的に計算される場合)、提供されるJavascriptはそれを置き換えず、関数はブラウザで実行され、受け取ったキーを返します。
- Liferay.Language.get()は動的なローカリゼーションに使えるAPIではありません。
- 言語フィルターは、静的なキーの置き換え方しか知らない。
- 私たちは、各クライアント・エクステンションが独自の言語キーを持ち、リアクト・コンポーネントが独自の翻訳を管理することを推奨します。
- パフォーマンスの観点から言えば。 言語キーの検索にはかなりの費用がかかる。
- また、クライアント・エクステンションは、クライアント・エクステンションの外部にある言語キーの存在に依存すべきではない。 そうでなければ、環境やプロジェクトを超えたクライアント拡張の移植性は、常に誰かがLiferayに言語キーを追加することに依存することになります。
- また、開発段階にある新機能もあり、ユーザーは国際化対応の利点を利用できるようになる。 https://liferay.atlassian.net/browse/LPS-187877