§メッセージの外部ファイル化と多言語対応
§アプリケーションの対応言語を指定する
アプリケーションの対応言語を指定するためには、まず正しい言語コードが必要です。言語コードの形式は、**ISO 言語コード**の後に省略可能な ISO 国コード を続ける、というものです。例えば、 fr
や en-US
は正しい言語コードです。
次に、その言語コードを使って、 conf/application.conf
ファイル内でアプリケーションの対応言語を指定しましょう。
application.langs="en,en-US,fr"
§メッセージの外部ファイル化
メッセージは conf/messages.xxx
のようなファイルに外部化することができます。
デフォルトの conf/messages
というファイルは、全ての言語にマッチします。このファイルに加えて conf/messages.fr
や conf/messages.en-US
のように言語ごとのメッセージファイルを指定することができます。
現在の言語向けのメッセージは、play.i18n.Messages
オブジェクトから取得することができます。
String title = Messages.get("home.title")
言語を明示的に指定することもできます。
String title = Messages.get(new Lang(Lang.forCode("fr")), "home.title")
ノート:
Request
がスコープ内に存在する場合は、そのAccept-Language
ヘッダとアプリケーションの対応言語を考慮した上で適切な言語が決定されて、デフォルトのLang
値として提供されます。また以下のように暗黙のパラメータLang
をテンプレートに追加する必要があります:@()(implicit lang: Lang)
.
§テンプレートにおける利用
@import play.i18n._
@Messages.get("key")
§メッセージのフォーマット
メッセージは java.text.MessageFormat
ライブラリを使ってフォーマットされます。例えば、次のようなメッセージが定義されているとしましょう。
files.summary=The disk {1} contains {0} file(s).
このメッセージのパラメータは次のように指定できます。
Messages.get("files.summary", d.files.length, d.name)
§HTTP リクエストから対応言語を取得する
HTTP リクエストから対応言語を取得することができます。
public static Result index() {
return ok(request().acceptLanguages());
}
次ページ: Global オブジェクト