Tuesday, March 31, 2020

Liferay DXP 7.1 言語リソースカスタマイズの共有

こんにちは、うです。

前回、Liferay DXP 7でのカスタイムモジュール(ポートレット)の言語リソースを他モジュールに共有する方法を紹介しました。今回は、Liferay DXP 7.1以降、既存モジュール言語リソースに対するカスタマイズを複数既存モジュールに適用する方法を紹介します。

みなさまはすでにご存知かもしれませんが、Liferay DXP 7.1から、モジュール言語リソースのカスタマイズ方式は従来のOSGI-Service方式からOSGI-Capability方式になりました。従って、bnd-tools Provide-Capabilityのみで、複数モジュールが同じ言語リソースカスタマイズを利用できます。

公式例:
Provide-Capability:\
  liferay.resource.bundle;\
    resource.bundle.base.name="content.Language",\
  liferay.resource.bundle;\
    resource.bundle.aggregate:String="(bundle.symbolic.name=com.liferay.docs.l10n.myapp.lang),\
      (bundle.symbolic.name=com.liferay.blogs.web)";\
    bundle.symbolic.name=com.liferay.blogs.web;\
    resource.bundle.base.name="content.Language";\
    service.ranking:Long="2";\
    servlet.context.name=blogs-web

複数カスタマイズ共有(例として、blogs-webproduct-navigbation-control-menu-webを対象にする)例。

Provide-Capability:\
  liferay.resource.bundle;\
    resource.bundle.base.name="content.Language",\
  liferay.resource.bundle;\
    resource.bundle.aggregate:String="(bundle.symbolic.name=com.liferay.docs.l10n.myapp.lang),\
      (bundle.symbolic.name=com.liferay.blogs.web)";\
    bundle.symbolic.name=com.liferay.blogs.web;\
    resource.bundle.base.name="content.Language";\
    service.ranking:Long="2";\
    servlet.context.name=blogs-web
  liferay.resource.bundle;\
    resource.bundle.aggregate:String="(bundle.symbolic.name=com.liferay.docs.l10n.myapp.lang),\
      (bundle.symbolic.name=com.liferay.product.navigation.control.menu.web)";\
    bundle.symbolic.name=com.liferay.product.navigation.control.menu.web;\
    resource.bundle.base.name="content.Language";\
    service.ranking:Long="2";\
    servlet.context.name=product-navigation-control-menu-web

まとめると、Liferay DXP 7.1にでの言語リソース定義は、以下のルールに従いましょう。

  •  bnd.bndProvide-Capabilityを追加する
  •  Provide-Capabilityに以下のディレクティブを追加する
    1. liferay.resource.bundle;resource.bundle.base.name=...: 言語キー所在パッケージパスを定義する
    2. liferay.resource.bundle;resource.bundle.aggregate...: カスタム対象モジュールを宣言する
    3. 複数の対象モジュールがある場合、上記2のディレクテイブを複数記入する
    4. 全てディレクテイブはコンマ,で区切る

No comments: