如何在GWT中实现运行时区域设置

如何在GWT中实现运行时区域设置,gwt,localization,locale,smartgwt,Gwt,Localization,Locale,Smartgwt,我试图在GWT中实现运行时区域设置,但无法使其正常工作。网上提供的文档非常有限。所以,您能帮助我在GWT中实现运行时区域设置吗。如果有人给出一个关于如何实现运行时区域设置的示例,这将非常有用,因为我已经在实现运行时区域设置上花费了很多时间。所以,如果有人用一个例子来解释如何实现它,那就太好了 我需要运行时区域设置的原因是,我想根据区域设置字符串(例如:en_US、es_MX等)获取日期格式、月份名称和工作日名称,我的意思是我想从区域设置字符串获取区域设置对象,因为这在Java中是可能的。据我所知

我试图在GWT中实现运行时区域设置,但无法使其正常工作。网上提供的文档非常有限。所以,您能帮助我在GWT中实现运行时区域设置吗。如果有人给出一个关于如何实现运行时区域设置的示例,这将非常有用,因为我已经在实现运行时区域设置上花费了很多时间。所以,如果有人用一个例子来解释如何实现它,那就太好了

我需要运行时区域设置的原因是,我想根据区域设置字符串(例如:en_US、es_MX等)获取日期格式、月份名称和工作日名称,我的意思是我想从区域设置字符串获取区域设置对象,因为这在Java中是可能的。据我所知,除了GWT加载的默认语言环境之外,我们无法获得任何其他语言环境的信息。我不想使用编译时区域设置,因为编译时开销和静态占用空间的增加

这是在GWT中实现Locale的文档,我指的是-

谢谢


Madhusudhan。

我认为您错过了运行时区域设置的一个重要方面:

[…]GWT知道的所有从编译时区域设置继承的区域设置将自动包括[…]

例如,您可能有一套拉丁美洲所有西班牙语的翻译(
es_419
),但允许用户选择特定国家/地区,如阿根廷西班牙语(
es_AR

请注意,DateTimeFormatInfoImpl_es_AR扩展了DateTimeFormatInfoImpl_es_419

但有一个技巧允许您通过直接获取给定区域设置的
DateTimeFormatInfo
实现来获取任何区域设置中的日期格式:

DateTimeFormatInfo format = new DateTimeFormatInfoImpl_es_MX();
format.dateFormatLong(); // d 'de' MMMM 'de' y

我认为您忽略了运行时区域设置的一个重要方面:

[…]GWT知道的所有从编译时区域设置继承的区域设置将自动包括[…]

例如,您可能有一套拉丁美洲所有西班牙语的翻译(
es_419
),但允许用户选择特定国家/地区,如阿根廷西班牙语(
es_AR

请注意,DateTimeFormatInfoImpl_es_AR扩展了DateTimeFormatInfoImpl_es_419

但有一个技巧允许您通过直接获取给定区域设置的
DateTimeFormatInfo
实现来获取任何区域设置中的日期格式:

DateTimeFormatInfo format = new DateTimeFormatInfoImpl_es_MX();
format.dateFormatLong(); // d 'de' MMMM 'de' y

嗨,亚当,谢谢你的回复。如果我使用这个选项“DateTimeFormatInfo format=new DateTimeFormatInfo\u es_MX()”,它有点静态,如果我从其他语言环境获取日期格式,那么我需要实例化该类。我的意思是它不是动态的。这里我需要的是一个通过传递Locale字符串来获取Locale对象的方法。在我的应用程序的登录屏幕中,用户选择区域设置,因此我需要根据所选区域设置显示日期格式。嗨,Adam,感谢您的回复。如果我使用这个选项“DateTimeFormatInfo format=new DateTimeFormatInfo\u es_MX()”,它有点静态,如果我从其他语言环境获取日期格式,那么我需要实例化该类。我的意思是它不是动态的。这里我需要的是一个通过传递Locale字符串来获取Locale对象的方法。在“登录”屏幕的“我的应用程序”中,用户选择区域设置,因此我需要根据所选区域设置显示日期格式。如果使用“常量”界面显示本地化内容,只需将月份名称和周天数添加到相应的.properties文件中即可。如果你不是,你如何翻译你的应用程序?你想只翻译周、日、月的名字,而其他的都用英语吗?你好,瓦伦,谢谢你的回复。由于我无法实现运行时语言环境,我将使用属性文件。登录时,我将使用所选区域设置向服务器发送请求,并从属性文件中获取日期格式、月份和工作日名称。我们为每种语言提供了资源包实现。但我们不想在属性文件中硬编码月份和工作日的名称,所以我们试图从区域设置中获取这些信息。现在我们只讨论属性文件。要使其动态化,您必须在客户端代码中包含所有区域设置。这意味着每个用户都必须加载不必要的代码,因为他们“可能”选择了不同的语言环境,而大多数用户永远不会更改他们的首选语言。如果您使用常量界面显示本地化内容,只需将月份名称和周日添加到相应的.properties文件中即可。如果你不是,你如何翻译你的应用程序?你想只翻译周、日、月的名字,而其他的都用英语吗?你好,瓦伦,谢谢你的回复。由于我无法实现运行时语言环境,我将使用属性文件。登录时,我将使用所选区域设置向服务器发送请求,并从属性文件中获取日期格式、月份和工作日名称。我们为每种语言提供了资源包实现。但我们不想在属性文件中硬编码月份和工作日的名称,所以我们试图从区域设置中获取这些信息。现在我们只讨论属性文件。要使其动态化,您必须在客户端代码中包含所有区域设置。这意味着每个用户都将不得不加载不必要的代码,因为他们“可能”选择不同的语言环境——而且大多数用户永远不会更改他们的首选语言。