我们说我们有以下代码行:
<p> <g:message code="nav.usuario.show" /> </p>
如果我们使用意大利语计算机,Grails将首先查看messages_it.properties
。如果grails在那里找不到nav.usuario.show=textLabel
,将尝试在messages.properties
中找到它。我想更改此行为以查看 message_es.properties
而不是默认 messages.properties
(但仅当标签不在当前语言环境)
我尝试了以下代码,但我没有看到任何变化。 resources.groovy
:
beans = {
localeResolver(org.springframework.web.servlet.i18n.SessionLocaleResolver) {
defaultLocale = new Locale("it","")
java.util.Locale.setDefault(defaultLocale)
}
}
答案 0 :(得分:4)
只需将默认语言的代码(例如messages_es.properties
)复制到默认的messages.properties
文件中。
如果您想保留英语,则必须创建一个名为messages_en.properties
的新文件。将messages.properties
的代码移到那里。
答案 1 :(得分:0)
如果要修复区域设置,请将以下几行放入BootStrap.groovy
的初始化闭包中:
TimeZone.setDefault(TimeZone.getTimeZone("CET"))
Locale.setDefault(new Locale("it"));
或
Locale.setDefault(new Locale("es"));
答案 2 :(得分:0)
beans = {
localeResolver(org.springframework.web.servlet.i18n.SessionLocaleResolver)
}
然后设置过滤器以根据请求更改默认语言环境。
//Filter
class LocaleFilters {
def localeResolver
def filters = {
localize(controller: '*') {
before = {
Locale.setDefault(localeResolver.resolveLocale(request))
return true
}
}
}
}
如果本地上下文为Spanish
,则默认设置为_es
,因此基于访问应用程序的区域设置,其他语言环境也是如此。