ローカライズされたメッセージの共有
アプリケーションで作業するときに、複数のモジュールがあり、それぞれに独自の言語キーが設定されている場合があります。 さまざまな言語プロパティファイルをさまざまな場所に保持するのではなく、それらを1つの場所に統合します。 このサンプルプロジェクトでは、言語キーを異なるモジュール間で共有する方法について示しています。
チュートリアルコードを実行する
新しいLiferay インスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.55-ga55。
http://localhost:8080でLiferayへのサインインします。 メールアドレス[email protected]_とパスワード_test_を使用してください。 プロンプトが表示されたら、パスワードを _learn_に変更します。
次に、以下の手順に従います。
サンプルをダウンロードして解凍します。
curl https://resources.learn.liferay.com/dxp/latest/ja/building-applications/developing-a-java-web-application/using-mvc/liferay-u8t2.zip -O
unzip liferay-u8t2.zip
モジュールのルートから、ビルドおよびデプロイします。
./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)
noteこのコマンドは、デプロイされたjarをDockerコンテナの
/opt/liferay/osgi/modules
にコピーするのと同じです。Liferay Dockerコンテナコンソールでデプロイを確認します。
STARTED com.acme.u8t2.impl_1.0.0 [1650] STARTED com.acme.u8t2.web_1.0.0 [1651]
サンプルのモジュールが機能していることを確認します。 ブラウザで
https://localhost:8080
を開きます。U8T2ポートレットをページに追加します。 サンプルポートレットは、サンプルウィジェットの下にあります。
ウェルカムメッセージのヘッダと色のリストが表示されます。 色の言語キーは、共有言語キーに由来することに注意してください。 言語キー
colors
は、Liferayのグローバル言語キーに由来します。このサンプルプロジェクトには、ポルトガル語と日本語のロケールも含まれています。 たとえば、言語セレクターを使用してブラジルポルトガル語または日本語を選択すると、ウェルカムメッセージと色のリストが表示されます。
次に、どのように機能するかを見ていきましょう。
言語プロパティファイルを作成する
すべての共有言語キーを保持するための個別のプロジェクトモジュールを作成します。 サンプルプロジェクトでは、共有キーはAcme U8T2 Impl
モジュールにあります。
Language.properties
ファイルを作成し、モジュールのsrc/main/resources/content
フォルダに追加します。 ファイルで、他のモジュールと共有するキーを定義します。
サンプルプロジェクトには、Acme U8T2 Web
モジュールで使用される6色のリストがあります。
blue=Blue
green=Green
orange=Orange
purple=Purple
red=Red
yellow=Yellow
他のロケールの言語プロパティファイルもフォルダに含めることができます。 たとえば、日本語の言語キーを含めるには、Language_ja.properties
ファイルをフォルダに追加します。
bnd命令を追加する
言語キーを共有するモジュールごとに、bndヘッダでリソースを指定する必要があります。
Bundle-Name: Acme U8T2 Web
Bundle-SymbolicName: com.acme.u8t2.web
Bundle-Version: 1.0.0
-liferay-aggregate-resource-bundles: com.acme.u8t2.impl
サンプルプロジェクトには、Acme U8T2 Impl
のカラー言語キーを使用するWebポートレットがあります。 Acme U8T2 Web
モジュールのbnd.bnd
ファイルでは、リソースバンドルが指定されています。
-liferay-aggregate-resource-bundles: com.acme.u8t2.impl
個々のモジュールにいくつかの言語キーを配置できることに注意してください。 たとえば、サンプルプロジェクトのウェルカムメッセージは、Acme U8T2 Impl
の共有キーではなく、Acme U8T2 Web
モジュールの言語キーから送信されます。 個々のモジュールの言語キーは、-liferay-aggregate-resource-bundles
で指定された共有キーよりも優先されます。