java 本地化_【Java学习笔记】本地化

先介绍几个术语: i18n: 就是internationalization, 国际化,由于首字母"i"和末尾字母"n"间有18个字符,所以简称i18n. internationalization指为了使应用程序能适应不同的语言和地区间的变化而不作系统性的变化所采取的设计措施。

l10n: 就是localization, 本地化,由于首字母"l"和末尾字母"n"间有10个字母,所以简称l10n. localization指为了使应用软件能够在某一特定语言环境或地区使用而加入本地特殊化部件和翻译后文本的过程。

locale: 简单来说是指语言和区域进行特殊组合的一个标志。

1.文字的本地化

import java.util.ResourceBundle;

import java.util.Locale;

public class I18nDemo1 {

static public void main(String arg[]) {

Locale loc;

ResourceBundle bundle;

/* File: Demo1_en_US.properties */

loc = new Locale("en","US");

bundle = ResourceBundle.getBundle("Demo1 ",loc);

System.out.println(bundle.getString("greeting"));

System.out.println(bundle.getString("question"));

System.out.println(bundle.getString("farewell"));

System.out.println("--------------------------");

/* File: Demo1_en_US_TX.properties */

loc = new Locale("en","US","TX ");

bundle = ResourceBundle.getBundle("Demo1 ",loc);

System.out.println(bundle.getString("greeting"));

System.out.println(bundle.getString("question"));

System.out.println(bundle.getString("farewell"));

}

}

而本地化配置文件如下:

Demo1_en_US.properties:

greeting = Hello.

farewell = Goodbye.

question = Are you ready?

Demo1_en_US_TX.properties:

greeting = Howdy.

farewell = S'long.

question = Is your gun loaded?

国际化资源文件的命名规范规定资源名称采用以下的方式进行命名:__.properties

其中,语言代码和国家/地区代码都是可选的。

2.数字的本地化:

import java.util.Locale;

import java.util.Date;

import java.text.NumberFormat;

import java.text.DateFormat;

public class I18nDemo2 {

static public void main(String arg[]) {

I18nDemo2 demo = new I18nDemo2();

demo.showLoc(new Locale("en","US"));

System.out.println("-----------");

demo.showLoc(new Locale("fr","FR"));

System.out.println("-----------");

demo.showLoc(new Locale("de","DE"));

}

public void showLoc(Locale loc) {

NumberFormat nfmt;

DateFormat dfmt;

System.out.println(loc);

nfmt = NumberFormat.getNumberInstance(loc);

System.out.println(nfmt.format(123456));

System.out.println(nfmt.format(123456.78));

nfmt = NumberFormat.getCurrencyInstance(loc);

System.out.println(nfmt.format(123456.78));

nfmt = NumberFormat.getPercentInstance(loc);

System.out.println(nfmt.format(.78));

dfmt = DateFormat.getDateInstance(DateFormat.DEFAULT,loc);

System.out.println(dfmt.format(new Date()));

}

}

3.看看到底支持什么本地化:

import java.util.Locale;

import java.text.NumberFormat;

public class I18nDemo3 {

static public void main(String arg[]) {

Locale loc[] = NumberFormat.getAvailableLocales();

for(int i=0; i

System.out.println(loc[i]);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值