intra-mart Accel Platform TERASOLUNA Server Framework for Java (5.x) プログラミングガイド 第18版 2024-04-01

多言語化されたメッセージを取得する

概要

MessageManager やMessageSource、タグを使って、多言語化されたメッセージを取得する方法を説明します。

MessageManager によるメッセージの取得

メッセージコードを指定してメッセージを取得する

メッセージコードと、現在ログインしているユーザの言語から、メッセージプロパティファイルに定義されたメッセージを取得します。
String exampleMsg = jp.co.intra_mart.foundation.security.message.MessageManager.getInstance().getMessage("I18N.MESSAGE.EXAMPLE");
メッセージは、次のように自動解決されます。
  1. アカウントコンテキスト言語のメッセージ
  2. テナント言語のメッセージ
  3. システム・デフォルト言語のメッセージ
  4. 言語 ID の付いていないメッセージプロパティファイルのメッセージ
  5. ユーザ言語で「未定義」を意味するメッセージ
上記のいずれにも該当しない場合は、文字列「undefined」が返却されます。

メッセージコードと言語を指定してメッセージを取得する

メッセージコードと、指定された言語から、メッセージプロパティファイルに定義されたメッセージを取得します。
String exampleMsg = jp.co.intra_mart.foundation.security.message.MessageManager.getInstance().getMessage(Locale.ENGLISH, "I18N.MESSAGE.EXAMPLE");
メッセージは、次のように自動解決されます。
  1. 指定された言語のメッセージ
  2. 言語 ID の付いていないメッセージプロパティファイルのメッセージ
上記のいずれにも該当しない場合、文字列「undefined」が返却されます。

タグによるメッセージの取得

MessageManager に対応するタグが提供されています。
動作は MessageManager と同じです。

メッセージコードを指定してメッセージを取得する

<%@ taglib prefix="imarttag" uri="http://www.intra-mart.co.jp/taglib/core/standard" %>
<imarttag:message id="I18N.MESSAGE.EXAMPLE"></imarttag:message>

メッセージコードと言語を指定してメッセージを取得する

<%@ taglib prefix="imarttag" uri="http://www.intra-mart.co.jp/taglib/core/standard" %>
<imarttag:message id="I18N.MESSAGE.EXAMPLE" locale="en"></imarttag:message>

MessageSource によるメッセージの取得

MessageManager をラップした MessageSource の実装クラス IntramartMessageSource が提供されています。
applicationContext-im_tgfw_common.xml に IntramartMessageSource の bean を登録しています。
<bean id="messageSource" class="jp.co.intra_mart.framework.extension.spring.message.IntramartMessageSource" />
メッセージは、次のように自動解決されます。
  1. 指定された言語のメッセージ
  2. 言語 ID の付いていないメッセージプロパティファイルのメッセージ
上記のいずれにも該当しない場合、文字列「undefined」が返却されます。 NoSuchMessageException はスローされません。

spring.tldのmessageタグによるメッセージの取得

設定されている messageSource により、メッセージを取得します。