Messages externalisation and i18n
语言指定信息存放在应用的 conf/application.conf
文件中:
你可以在 conf/messages.xxx
文件中外部化(externalize)信息。
conf/messages
文件默认适配所有语言。你可以添加你所指定语言所对应的文件,譬如 conf/messages.fr
或 conf/messages.en-US
。
val title = Messages("home.title")
所有国际化相关的API都隐式调用 play.api.i18n.Lang
参数,其中参数的值根据当前环境给出。你可以自己显式地指定:
val title = Messages("home.title")(Lang("fr"))
注意:如果你在当前范围发出一个隐式请求,程序会根据头部的 Accept-Language
从应用支持语言匹配一个,然后隐式地返回给你一个 Lang
参数。你应当像这样在模板文件中添加 Lang
变量: 。
消息使用 java.text.MessageFormat
库来定义格式,譬如你的消息这样定义:
由于我们使用 java.text.MessageFormat
来定义消息格式,所以要注意的是单引号会被作为转意字符。
譬如你定义了如下一段消息:
info.error=You aren''t logged in!
你应期望如下结果:
Messages("info.error") == "You aren't logged in!"
Messages("example.formatting") == "When using MessageFormat, '{0}' is replaced with the first parameter."