Изменение значения NumberConstants.decimalSeparator()

Я работаю с NumberField и NumberFormat. Как изменить значение NumberConstants.decimalSeparator() без изменения локали? Например, я хочу иметь "." или "," в качестве десятичных разделителей для всех локалей. Можно ли создать собственный файл свойств NumberConstants_bla.properties и заставить gxt использовать его вместо стандартных NumberConstants_ru_RU.properties или NumberConstants_en_US.properties (в зависимости от текущей локали)? Куда мне поместить этот файл?


person sandlex    schedule 01.06.2009    source источник


Ответы (2)



Вы можете создать свои собственные 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. Я использую его только для форматирования некоторого измерения, которое, как я полагаю, отображается одинаково для всех.

person user2147970    schedule 28.03.2013