Documentation

You are viewing the documentation for the 2.1.5 release in the 2.1.x series of releases. The latest stable release series is 2.4.x.

§メッセージ API と多言語対応

§アプリケーションの対応言語を指定する

アプリケーションの対応言語は、fren-US のように、**ISO 639-2 言語コード** の後に省略可能な ISO 3166-1 alpha-2 国コード を続けて指定します。

初めに、 conf/application/conf. ファイルであなたのアプリケーションの対応言語を指定しましょう。

application.langs="en,en-US,fr"

§メッセージの外部ファイル化

メッセージは conf/messages.xxx のようなファイルに外部化することができます。

デフォルトの conf/messages というファイルは、全ての言語にマッチします。このファイルに加えて conf/messages.frconf/messages.en-US のように言語ごとのメッセージファイルを指定することができます。

メッセージは、play.api.libs.i18n.Messages オブジェクトから取得することができます。

val title = Messages("home.title")

全ての国際化対応に関する API は、現在のスコープ内の implicit な play.api.libs.i18n.Lang を implicit parameter として受け取ります。implicit なしで、次のように明示することも可能です。

val title = Messages("home.title")(Lang("fr"))

Note: implicit な Request がスコープ内に存在する場合は、その Accept-Language ヘッダとアプリケーションの対応言語を考慮した上で適切な言語が決定されて、 implicit な Lang として提供されます。 テンプレートに @()(implicit lang: Lang) のように、 implicit パラメータ LANG を追加する必要があります。

§メッセージの書式

メッセージは java.text.MessageFormat ライブラリを使ってフォーマットされます。例えば、次のようなメッセージが定義されているとしましょう。

files.summary=The disk {1} contains {0} file(s).

このメッセージのパラメータは次のように指定できます。

Messages("files.summary", d.files.length, d.name)

§HTTP リクエストから対応言語を取得する

HTTP リクエストから対応言語を取得することができます。

def index = Action { request =>
  Ok("Languages: " + request.acceptLanguages.map(_.code).mkString(", "))
}

次ページ: Global オブジェクト