MVCポートレットでのローカライズされたメッセージの使用
Liferay のローカリゼーション フレームワークは、MVC ポートレットでローカライズされたメッセージを作成するためのものです。
サンプルコードをデプロイする
新しい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-b6f5.zip -Ounzip liferay-b6f5.zip -
モジュールのルートから、ビルドおよびデプロイします。
./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)注このコマンドは、デプロイされた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 タグライブラリリファレンスをご覧ください。 各タグライブラリには、タグに渡すことができる属性のリストがあります。
コンポーネント定義を追加する
カスタム 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"