在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设置为接受不同的语言环境。坦率地说,我当时没有看到任何意义。
我错过了什么吗?
答案 0 :(得分: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
答案 1 :(得分:0)
不幸的是,不是。客户端上的区域设置特定代码在GWT中非常有限。您可以尝试使用本机JavaScript(具有所有缺点)。
但我发现在这种情况下调用服务器方法更容易。首先,我通常不需要转换许多值,并且我需要这个方法的速率很低,因此在这种情况下,通过网络发送字节的过度杀伤是可以忍受的。
如果这不是您的选项而您只需要能够解析这样的数字,我建议将区域设置的格式分开。如果您遵循这种方法,这比看起来更容易:
'[^0-9' + decimalPoint + ']'
.
这允许解析。对于格式化,我没有一个好的解决方案。