代码之家  ›  专栏  ›  技术社区  ›  Benoit Wickramarachi

Grails如何更改当前的语言环境

  •  22
  • Benoit Wickramarachi  · 技术社区  · 16 年前

    如何更改当前区域设置?

    • controller/action?lang=de 但我的地方还是 en_US
    • 我试图用这段代码覆盖这个值:

      def key = "org.springframework.web.servlet.DispatcherServlet.LOCALE_RESOLVER"
      def localeResolver = request.getAttribute(key)
      localeResolver.setLocale(request, response, new Locale("de","DE"))
      

    什么都没变。

    • 我试图用这段代码覆盖这个值:

      import org.springframework.web.servlet.support.RequestContextUtils as RCU;
      RCU.getLocaleResolver(request).setLocale(request, response, new Locale("de","DE"))
      

    还有。。。什么也没发生。我还是把我的区域设置为 恩修 .

    有没有办法换个地方?

    6 回复  |  直到 14 年前
        1
  •  27
  •   Pascal Thivent    16 年前

    根据章节 10. Internationalization lang 参数:

    默认情况下,会检测到用户区域设置 Accept-Language 标题。但是,您可以为用户提供 切换区域设置的能力 只需传递一个名为

    /book/list?lang=de
    

    Grails会自动切换 用户区域设置并将其存储在cookie中 新标题。

    localeResolver resources.groovy 弹簧配置文件如下:

    beans = {
       localeResolver(org.springframework.web.servlet.i18n.SessionLocaleResolver) {
          defaultLocale = new Locale("de","DE")
          java.util.Locale.setDefault(defaultLocale)
       }
    }
    

    现在,如果没有更多细节,我不知道为什么要使用 参数在您的情况下无效。以防万一,你怎么知道现场还在我们这里?。

        2
  •  6
  •   Stephan    13 年前

    你应该用“ LocaleContextHolder.locale

    2.0.3款 lang=someLocale .

        3
  •  6
  •   Pavel Vlasov Jaiwo99    10 年前

    您是否尝试更改应用程序根url中的区域设置(例如。 http://localhost:8080/myapp/?lang=de

    在Grails中,尝试更改应用程序根url中的区域设置的基本设置不起作用。Grails在中更改区域设置 localChangeInterceptor 在调用所有控制器之前调用。当您访问应用程序根url时,不会调用在默认url映射中可以看到的控制器。

    这就是为什么在应用程序根url中更改区域设置不起作用。如果您尝试在某个控制器中更改url,它会起作用。

    当前区域设置存储在键下 org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME

    正确的解决方案是将根url映射到UrlMappings中的某个控制器。

        4
  •  5
  •   jecolon    14 年前

    session['org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE'] = new Locale("es", "PR")
    
        5
  •  1
  •   chelder    12 年前

    我也有类似的问题,那是因为一个空间。我有:

    [space]messages_de.properties messages_de.properties

        6
  •  0
  •   Nathan Dunn    10 年前

    我有一段时间在通过旧版Apache2.2代理并使用grails(2.3.9)war文件时遇到过这个问题。我在使用mod_proxy_html(3.1)/Apache2.4时运气更好。也许更高级的grails版本可以解决这个问题。