Documentation

ローカライズされたメッセージの共有

アプリケーションで作業するときに、複数のモジュールがあり、それぞれに独自の言語キーが設定されている場合があります。 さまざまな言語プロパティファイルをさまざまな場所に保持するのではなく、それらを1つの場所に統合します。 このサンプルプロジェクトでは、言語キーを異なるモジュール間で共有する方法について示しています。

チュートリアルコードを実行する

  1. Liferay DXPを起動します。 まだDockerコンテナがない場合は、以下を使用します。

    docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.22-ga22
    

    別のLiferay PortalバージョンまたはLiferay DXPを実行している場合は、上記のコマンドを適宜調整してください。

  2. サンプルをダウンロードして解凍します。

    curl https://learn.liferay.com/dxp/latest/ja/building-applications/developing-a-java-web-application/using-mvc/liferay-u8t2.zip -O
    
    unzip liferay-u8t2.zip
    
  3. モジュールのルートから、ビルドおよびデプロイします。

    ./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)
    

    注釈

    このコマンドは、デプロイされたjarをDockerコンテナの/opt/liferay/osgi/modulesにコピーするのと同じです。

  4. Liferay Dockerコンテナコンソールでデプロイを確認します。

    STARTED com.acme.u8t2.impl_1.0.0 [1650]
    STARTED com.acme.u8t2.web_1.0.0 [1651]
    
  5. サンプルのモジュールが機能していることを確認します。 ブラウザでhttps://localhost:8080を開きます。

  6. U8T2ポートレットをページに追加します。 サンプルポートレットは、サンプルウィジェットの下にあります。

    U8T2ポートレットをページに追加します。

    ウェルカムメッセージのヘッダと色のリストが表示されます。 色の言語キーは、共有言語キーに由来することに注意してください。 言語キーcolorsは、Liferayのグローバル言語キーに由来します。

  7. このサンプルプロジェクトには、ポルトガル語と日本語のロケールも含まれています。 たとえば、言語セレクターを使用してブラジルポルトガル語または日本語を選択すると、ウェルカムメッセージと色のリストが表示されます。

    このサンプルでは、ポルトガル語と日本語のロケールが表示されています。

次に、どのように機能するかを見ていきましょう。

言語プロパティファイルを作成する

すべての共有言語キーを保持するための個別のプロジェクトモジュールを作成します。 サンプルプロジェクトでは、共有キーは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で指定された共有キーよりも優先されます。

関連トピック

  • Aggregating Resource Bundles