问题描述
对于 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
要强制使用所需的语言环境,您的应用应忽略管理面板中的用户设置,并使用查询字符串加载所需的语言环境。或者,如果您希望页面上的所有用户默认使用相同的语言环境,您可以将元标记设置为您想要的语言环境。