ローカライズされたメッセージの共有
アプリケーションで作業する場合、複数のモジュールが存在し、各モジュールに独自の言語キーがある場合があります。 さまざまな言語プロパティファイルをさまざまな場所に保持するのではなく、それらを1つの場所に統合します。 このサンプルプロジェクトでは、言語キーを異なるモジュール間で共有する方法について示しています。
チュートリアルコードを実行する
新しいLiferay インスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.132-ga132
http://localhost:8080でLiferayにサインインします。 メールアドレス test@liferay.com とパスワード testを使用してください。 プロンプトが表示されたら、パスワードを learnに変更します。
次に、以下の手順に従います。
-
サンプルをダウンロードして解凍します。
curl https://resources.learn.liferay.com/examples/liferay-u8t2.zip -Ounzip liferay-u8t2.zip -
モジュールのルートから、ビルドおよびデプロイします。
./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)注このコマンドは、デプロイされた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で指定された共有キーよりも優先されます。