Я работаю с NumberField и NumberFormat. Как изменить значение NumberConstants.decimalSeparator() без изменения локали? Например, я хочу иметь "." или "," в качестве десятичных разделителей для всех локалей. Можно ли создать собственный файл свойств NumberConstants_bla.properties и заставить gxt использовать его вместо стандартных NumberConstants_ru_RU.properties или NumberConstants_en_US.properties (в зависимости от текущей локали)? Куда мне поместить этот файл?
Изменение значения NumberConstants.decimalSeparator()
Ответы (2)
В 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);
person
Mark
schedule
01.06.2009
К сожалению, это не вариант для com.google.gwt.i18n.client.NumberFormat :(
- person sandlex; 01.06.2009
Ах, только что заметил тег GWT. Опыта нет, так что ничего другого предложить не могу.
- person Mark; 01.06.2009
Вы можете создать свои собственные 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