国际化

来源:互联网 发布:网络卫星电视直播 编辑:程序博客网 时间:2024/05/08 23:01

如果想要国际化的不仅仅只是指定语言和国家,应对IEFT BCP 47语言标签进行理解。


提供常用的ISO-639-1语言,ISO-3166-1国家代码用于构建Locale对象(也可以使用java SE预定义的对象,例如Locale.CHINA,Locale.TAIWAN)


通过一下步骤对特定Locale的数字进行格式化:

使用一个工厂方法接受一个Locale类型的参数。总共有3个方法:getNumberInstance,getCurrencyInstance和getPercentInstance返回的对象可以分别对数字,货币量和百分比进行格式化和解析。:

Locale loc = new Locale("de", "DE");

NumberFormat currFmt = NumberFormat.getCurrenctInstance(loc);

double amt = 12345.67;

String result = currFmt.format(amt);


相反地,读取一个按照某个Locale的惯用方法而输入或存储的数字,那么就需要使用parse方法。:

TextField inputField;

````

NumberFormat fmt = NumberFormat.getNumberInstance();

Number input = fmt.parse(inputField.getText().trim());

double x = input.doubleValue();

parse返回的类型是Number.如果不关心是double还是long,直接用doubleValue方法来读取数字。trim方法可以去掉字符串空白开头的字符(否则抛出ParseException异常)


国际化时间和日期时,通过类似的DateFormat类处理,:

fmt = DateFormat.getDateInstance(dateStyle, loc);

fmt = DateFormat.getTimeInstance(timeStyle, loc);

fmt = DateFormat.getDateTimeInstance(dateStyle, timeStyle, loc);

风格包括:DateFormat.DEFAULT和FULL,LONG,MEDIUM,SHORT

Date now = new Date();

String s = fmt.format(now);

读取输入格式:

TextField inputField;

```

DateFormat fmt = DateFormat.getDateInstance(DateFormat.MEDIUM);

Date input = fmt.parse(inputField.getText().trim());

0 0
原创粉丝点击