【问题标题】:How to localize the whole java spring application如何本地化整个java spring应用程序
【发布时间】:2014-03-13 11:20:56
【问题描述】:

我知道通过添加 ?lang=en(fr, de, ch) 来本地化 java spring 应用程序的标准方法,但它只本地化一个页面,而不是移动到其他页面后(按任何 href="/newpage "),再次出现默认语言环境,之前未选择。我的问题是:我如何无法确定登录页面(或索引页面)用户区域设置并将其设置为整个 Web 应用程序的默认区域设置?

更新问题 14.02.2014-16:32 补充信息。

本地化的默认 Spring 实现是添加“?lang=en”来请求 URI 并从包中获取新消息。所以有一个例子: 默认语言环境设置为 en uri:http://example.com/index - 语言环境。 uri:http://example.com/index?lang=de - 德语区域设置 - 页面翻译成德语。 但是,我点击了链接,它得到了 href="/profile"。当我点击: uri: http://example.com/profile - 我有默认语言环境 - en。

我想要什么: uri:http://example.com/index - 用户按下站点顶部的德国国旗,而不是一些 bean 获得此操作并设置默认语言环境 - 德语。比所有页面都将使用默认的德语语言环境加载。 uri:http://example.com/profile - 默认语言环境 - 德语。

在 uri 请求示例中,我想要这样的东西: example.com - 检测用户区域设置 - 设置默认区域设置,例如德语/ 用户按下英语标志 - 所有页面的默认区域设置为英语。

更新问题 14.02.2014-17:38 补充资料。关于我的错误的信息 一切都是好的。我标记了正确答案。 Spring 标准实现效果很好,正是我想要的。我在没有完全翻译的 JSP 页面中出错,当我更改语言环境时,我虽然没有翻译所有内容 - 但确实如此。谢谢!

【问题讨论】:

    标签: java spring localization


    【解决方案1】:

    Spring 文档非常适合这个主题:17.8 Using locales 你需要两件事:

    • LocalResolver - 为用户保存本地,当用户发送请求时,它将本地添加到请求上下文(可通过RequestContext.getLocale() 获得) - 通常SessionLocalResolverCookieLocaleResolver 是用于基于普通网页的应用程序 - 重要的是 bean id/名称是 localeResolver (DispatcherServlet.LOCALE_RESOLVER_BEAN_NAME="localeResolver") - (如果名称不同,则 DispatcherServlet 将找不到语言环境解析器!
    • 一个LocaleChangeInterceptor,当用户将?lang=de 添加到其请求时更改语言环境。

    示例配置

    <bean class="org.springframework.web.servlet.i18n.CookieLocaleResolver"
          id="localeResolver"
          name="localeResolver">        
       <property name="defaultLocale" value="en"/>
    </bean>
    
    <mvc:interceptors>
         <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
               p:paramName="lang">          
         </bean>
         ...
    </mvc:interceptors>
    

    对于您的问题,LocalResolver 的某些内容很可能是错误的,也许您只是忘记将其 id/name* 设置为 localeResolver 或者您使用 AcceptHeaderLocaleResolver(总是“下降返回"请求标头区域设置)

    * 请参阅 this answer 了解 Id 和 Name 之间的区别

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多