Arm*_*ohn 15 grails internationalization
我想让我的Grails应用程序只支持一种语言,我可以在某处定义,完全忽略客户端的标题或"lang"参数.我有什么方法可以这样做吗?谢谢.
dav*_*vid 19
LocaleResolver在您的bean中定义一个bean config/spring/resources.groovy来设置默认语言环境.
beans = {
localeResolver(org.springframework.web.servlet.i18n.SessionLocaleResolver) {
defaultLocale = new Locale("de","DE")
java.util.Locale.setDefault(defaultLocale)
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不必处理lang参数,这将非常有用- 否则会被覆盖.要忽略lang参数值,您可以Filter在每个请求中设置区域设置:
import org.springframework.web.servlet.support.RequestContextUtils as RCU
...
def filters = {
all(controller:'*', action:'*') {
before = {
def locale = new Locale("sv","SV")
RCU.getLocaleResolver(request).setLocale(request, response, locale)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法似乎有点重复,因为每次请求都会重置Locale.通过config选项禁用浏览器区域设置检测会更优雅.
删除所有messages_xx.properties文件并仅保留messages.properties文件.这是默认消息包,如果找不到正确的消息包,系统将始终回退到该消息包.
这样您仍然可以使用消息(从而保留选项以使您的应用程序国有化),但用户将始终使用相同的语言.
LocaleResolverGrails的默认值是SessionLocaleResolver. 如果您想始终使用 de_DE,您可以将其更改为FixedLocaleResolver.
beans {
localeResolver(FixedLocaleResolver) {
locale = new Locale("de", "DE")
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想限制为一组语言环境,那么您将需要一个过滤器,并使用该SessionLocaleResolver#setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)方法。
| 归档时间: |
|
| 查看次数: |
6339 次 |
| 最近记录: |