Documentation

You are viewing the documentation for the 2.3.x release series. 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.i18n.Messages オブジェクトから取得することができます。

val title = Messages("home.title")

全ての国際化対応に関する API は、現在のスコープ内の implicit な play.api.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)

§アポストロフィに対する注意

メッセージには java.text.MessageFormat を使うので、シングルクォーテーションは引数代入をエスケープするためのメタキャラクタとして使われることに注意してください。

例えば、以下のようなメッセージが定義されているとします:

info.error=You aren''t logged in!
example.formatting=When using MessageFormat, '''{0}''' is replaced with the first parameter.

結果は以下のようになるでしょう:

Messages("info.error") == "You aren't logged in!"
Messages("example.formatting") == "When using MessageFormat, '{0}' is replaced with the first parameter."

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

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

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

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


このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。