更改 NumberConstants.decimalSeparator() 值

发布于 2024-07-22 22:32:16 字数 286 浏览 5 评论 0原文

我正在使用 NumberField 和 NumberFormat。 如何在不更改区域设置的情况下更改 NumberConstants.decimalSeparator() 值? 例如我想要“。” 或“,”作为所有语言环境的小数点分隔符。 是否可以创建自定义属性文件 NumberConstants_bla.properties 并强制 gxt 使用它而不是标准 NumberConstants_ru_RU.properties 或 NumberConstants_en_US.properties (取决于当前区域设置)? 我应该将该文件放在哪里?

I'm working with NumberField and NumberFormat.
How can I change NumberConstants.decimalSeparator() value without changing my locale? For instance I want to have "." or "," as decimal separators for all locales.
Is it possible to create custom property file NumberConstants_bla.properties and force gxt use it instead of standard NumberConstants_ru_RU.properties or NumberConstants_en_US.properties (depending on current locale)? Where should I place this file to?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏雨凉 2024-07-29 22:32:16

在 Java 中,您可以使用 DecimalFormatSymbols。

// default symbols for the locale
DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
// set your required separator
decimalFormatSymbols.setDecimalSeparator(',');
// create a decimal format and set your symbols
DecimalFormat format = new DecimalFormat();
format.setDecimalFormatSymbols(decimalFormatSymbols);

In Java you can set the decimal separator using DecimalFormatSymbols.

// default symbols for the locale
DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
// set your required separator
decimalFormatSymbols.setDecimalSeparator(',');
// create a decimal format and set your symbols
DecimalFormat format = new DecimalFormat();
format.setDecimalFormatSymbols(decimalFormatSymbols);
旧竹 2024-07-29 22:32:16

您可以创建自己的 NumberConstants(在其中放置所需的小数分隔符),然后使用它来创建自己的 NumberFormat。

我自己的 NumberConstants 示例:

import com.google.gwt.i18n.client.constants.NumberConstants;

public class MyNumberConstants implements NumberConstants {
  @Override
  public String notANumber() {
    return "NaN";
  }

  @Override
  public String currencyPattern() {
    return "#,##0.00\\u00A0\\u00A4";
  }

  @Override
  public String decimalPattern() {
    return "#,##0.###";
  }

  @Override
  public String decimalSeparator() {
    return ".";
  }

  @Override
  public String defCurrencyCode() {
    return "EUR";
  }

  @Override
  public String exponentialSymbol() {
    return "e";
  }

  @Override
  public String globalCurrencyPattern() {
    return "#,##0.00\\u00A0\\u00A4";
  }

  @Override
  public String groupingSeparator() {
    return "\\u00A0";
  }

  @Override
  public String infinity() {
    return "\u221E";
  }

  @Override
  public String minusSign() {
    return "-";
  }

  @Override
  public String monetaryGroupingSeparator() {
    return ",";
  }

  @Override
  public String monetarySeparator() {
    return "\\u00A0";
  }

  @Override
  public String percent() {
    return "%";
  }

  @Override
  public String percentPattern() {
    return "#,##0\\u00A0%";
  }

  @Override
  public String perMill() {
    return "\\u2030";
  }

  @Override
  public String plusSign() {
    return "+";
  }

  @Override
  public String scientificPattern() {
    return "#E0";
  }

  @Override
  public String simpleCurrencyPattern() {
    return "#,##0.00\\u00A0\\u00A4";
  }

  @Override
  public String zeroDigit() {
    return "0";
  }
}

MyFormat 示例:

public class MyFormat extends NumberFormat{

  public MyFormat(){
    super(new MyNumberConstants(),"0.0", CurrencyList.get().getDefault(),true);
  }
}

警告:这是一个丑陋的解决方法,可能会导致 i18n 出现问题。 我用它只是为了格式化某些维度,我假设这些维度以相同的方式显示给每个人。

You can create your own NumberConstants (In which you put the decimal separator you want) then use it to create your own NumberFormat.

Example of my own NumberConstants:

import com.google.gwt.i18n.client.constants.NumberConstants;

public class MyNumberConstants implements NumberConstants {
  @Override
  public String notANumber() {
    return "NaN";
  }

  @Override
  public String currencyPattern() {
    return "#,##0.00\\u00A0\\u00A4";
  }

  @Override
  public String decimalPattern() {
    return "#,##0.###";
  }

  @Override
  public String decimalSeparator() {
    return ".";
  }

  @Override
  public String defCurrencyCode() {
    return "EUR";
  }

  @Override
  public String exponentialSymbol() {
    return "e";
  }

  @Override
  public String globalCurrencyPattern() {
    return "#,##0.00\\u00A0\\u00A4";
  }

  @Override
  public String groupingSeparator() {
    return "\\u00A0";
  }

  @Override
  public String infinity() {
    return "\u221E";
  }

  @Override
  public String minusSign() {
    return "-";
  }

  @Override
  public String monetaryGroupingSeparator() {
    return ",";
  }

  @Override
  public String monetarySeparator() {
    return "\\u00A0";
  }

  @Override
  public String percent() {
    return "%";
  }

  @Override
  public String percentPattern() {
    return "#,##0\\u00A0%";
  }

  @Override
  public String perMill() {
    return "\\u2030";
  }

  @Override
  public String plusSign() {
    return "+";
  }

  @Override
  public String scientificPattern() {
    return "#E0";
  }

  @Override
  public String simpleCurrencyPattern() {
    return "#,##0.00\\u00A0\\u00A4";
  }

  @Override
  public String zeroDigit() {
    return "0";
  }
}

Example of MyFormat:

public class MyFormat extends NumberFormat{

  public MyFormat(){
    super(new MyNumberConstants(),"0.0", CurrencyList.get().getDefault(),true);
  }
}

Warning : this is an ugly workaround and could cause problems for i18n. I use it just to format some dimension which I assume to be displayed in the same way for everyone.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文