MVCポートレットでのローカライズされたメッセージの使用
Liferayのローカライズフレームワークは、MVCポートレットでローカライズされたメッセージを作成するためのものです。
サンプルコードをデプロイする
新しい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-b6f5.zip -O
unzip liferay-b6f5.zip
モジュールのルートから、ビルドおよびデプロイします。
./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)
noteこのコマンドは、デプロイされたjarをDockerコンテナの/opt/liferay/osgi/modulesにコピーするのと同じです。
Liferay Dockerコンテナコンソールでデプロイを確認します。
STARTED com.acme.b6f5.web.0.0 [1009]
サンプルのモジュールが機能していることを確認します。 ブラウザで
https://localhost:8080
を開きます。B6F5ポートレットをページに追加します。 サンプルポートレットは、サンプルウィジェットの下にあります。
例のウェルカムメッセージのヘッダが表示されます。
このサンプルプロジェクトには、ポルトガル語と日本語のロケールも含まれています。 たとえば、言語セレクターを使用してブラジルポルトガル語または日本語を選択すると、ウェルカムメッセージが表示されます。
次に、どのように機能するかを確認します。
言語プロパティファイルを作成する
Language.properties
ファイルを作成し、モジュールのsrc/main/resources/content
フォルダに追加します。 ファイルで、MVCポートレットで使用するキーを定義します。
他のロケールの言語プロパティファイルもフォルダに含めることができます。 たとえば、日本語の言語キーを含めるには、Language_ja.properties
ファイルをフォルダに追加します。
JSPファイルを作成する
JSPファイルを作成し、モジュールの/src/main/resources/META-INF/resources
フォルダに追加します。
サンプルプロジェクトには、liferay-uiタグライブラリを使用する簡単なウェルカムメッセージを含むview.jspファイルが含まれています。
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<h4>B6F5 Portlet</h4>
<h5><liferay-ui:message key="b6f5-portlet-welcome" /></h5>
サンプルのjspファイルに追加のliferay-ui:message
が含まれていることに注意してください。
<liferay-ui:message key="supercalifragilisticexpialidocious" />
これは、Language.properties
ファイルにそのようなキーが見つからない場合、代わりにラベルが表示されることを示しています。
タグライブラリの詳細については、 Liferay Tag Library Reference をご覧ください。 各タグライブラリには、タグに渡すことができる属性のリストがあります。
コンポーネント定義を追加する
カスタムMVCポートレットを作成するときは、クラスの@Component
定義に言語リソースバンドルプロパティを含めるようにしてください。
@Component(
property = {
...
"javax.portlet.resource-bundle=content.Language",
"javax.portlet.supported-locale=en_US,ja,pt_BR"
},
service = Portlet.class
)
サンプルプロジェクトには、言語リソースバンドルを使用するための次のプロパティが含まれています。
"javax.portlet.resource-bundle=content.Language"
ポートレットがサポートするすべての言語に対して、さまざまなロケールも定義されています。
"javax.portlet.supported-locale=en_US,ja,pt_BR"