0

在java中这很容易做到:

NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
myNumber = nf.parse(myString);

但是,我似乎无法在 GWT 中做同样的事情。首先,我将语言环境合并到 MyModule.gwt.xml

<inherits name="com.google.gwt.i18n.I18N"/>
<extend-property name="locale" values="sl_SI"/>

还有 NumberFormat 类:com.google.gwt.i18n.client.NumberFormat;它使用“默认”语言环境。这里的默认是指与“en_US”非常相似的固定语言环境,并且不是由浏览器或应用程序默认选择的。

似乎没有办法将 NumberFormat 设置为接受不同的语言环境。坦率地说,我当时看不出任何意义。

我错过了什么吗?

4

2 回答 2

1

尝试添加<meta name='gwt:property' content='locale=sl_SI' />到 html 主机页面

以下是它为什么会这样工作的解释:https ://stackoverflow.com/a/16295300/572830

这是更广泛和详细的解释:https ://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocale

于 2013-04-30T10:28:18.430 回答
0

不幸的是,没有。客户端上特定于语言环境的代码在 GWT 中非常有限。您可以尝试使用本机 JavaScript(有所有缺点)。

但我发现在这种情况下调用服务器方法更容易。一方面,我通常不需要转换很多值,而且我需要这种方法的速率很低,因此在这种情况下通过网络发送字节的过度杀伤是可以忍受的。

如果这不是您的选择,并且您只需要能够解析这样的数字,我建议您将语言环境的格式分开。如果您遵循这种方法,这比看起来更容易:

  • 弄清楚小数点(逗号或点)是什么。
  • 创建一个匹配任何不是小数点或数字的否定模式,即:'[^0-9' + decimalPoint + ']'
  • 使用此模式从字符串中删除任何匹配的内容
  • 将小数点替换为.

这允许解析。对于格式化,我没有一个好的解决方案。

于 2013-04-30T10:14:35.070 回答