如何在运行时强制更改 GWT 常量区域设置

问题描述

对于 Spring 应用程序中的某些端点,我需要将 GWT 常量区域设置更改为 en。我可以在管理面板中更改用户语言环境。而且我想在某些情况下为某些常量强制使用 gwt 语言环境,无论用户有什么语言环境设置。我的端点与后端相关。如何强制设置 en locale?

在我的应用程序中,当我更改用户语言环境时,无论我如何获取,所有端点的所有常量都会更改 - 在浏览器或邮递员中(未在查询中指定语言环境参数)。我不知道它是如何工作的。继承 com.google.gwt.i18n.client.Constants 类的 AppContants 类没有任何设置语言环境的方法

解决方法

语言环境选择在模块 XML 中定义。例如,以下模块添加多个区域设置值:

<module>
  <inherits name="com.google.gwt.user.User"/>
  <inherits name="com.google.gwt.i18n.I18N"/>

   <!-- Available Locales -->
   <extend-property name="locale" values="pt"/>
   <extend-property name="locale" values="de"/>
   <extend-property name="locale" values="en"/>

   <!-- Fallback -->
   <set-property-fallback name="locale" value="en"/>
</module>

可以使用元标记或作为主机页面 URL 中查询字符串的一部分来指定语言环境客户端属性。如果两者都指定,则查询字符串优先。

要在主机页面中使用元标记指定区域设置客户端属性,请为 gwt:property 嵌入一个元标记,如下所示:

<meta name="gwt:property" content="locale=en">

要使用查询字符串指定语言环境客户端属性,请为名称语言环境指定一个值。例如,

https://www.example.org/myapp.html?locale=en

要强制使用所需的语言环境,您的应用应忽略管理面板中的用户设置,并使用查询字符串加载所需的语言环境。或者,如果您希望页面上的所有用户默认使用相同的语言环境,您可以将元标记设置为您想要的语言环境。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...