软件的本地化与国际化
1:有一件事,大家都知道:不同的区域却有不同的语言、风俗和文化。
2:软件的国际化就是使软件能够根据不同的区域实现不同的本地化。
3:
4:Java是从一开始就支持软件本地化的第一种编程语言。
与Java本地化相关的类有:
(1)Locale类
java.util.Locale
一个Locale对象代表一种特定的语言和地区。它本身并不会执行本地化相关的格式化和解析工作,而是被其他能够使用Locale对象的方法作为参数使用。Locale对象为这些方法提供本地化信息。
比如:DateForlmat类依据Local对象来确定日期的格式,然后对日期进行语法分析和格式化。
简单测试:
package one;
import java.util.Locale;
public class LocaleOne {
public static void main(String[] args) {
Locale myLocale = Locale.getDefault();
System.out.println(myLocale.getCountry());
System.out.println(myLocale.getLanguage());
System.out.println(myLocale.getDisplayCountry());
System.out.println(myLocale.getDisplayLanguage());
}
}
输出如下:
CN
zh
中国
中文
(2)ResourceBundle类
java.util.ResourceBundle
我们把程序中的消息字符串、按钮标签、图片等统称称为资源。
把消息字符串、按钮标签、图片的URL等统一定义到一个外部位置,可以方便得进行查找修改和翻译,从而减轻了国际化任务的工作量。
ResourceBundle类则提供了这个“外部位置”。而且对于管理国际化的资源有与生俱来的优势。
简单例程如下:
import java.util.Enumeration;
import java.util.ResourceBundle;
public class TestResource extends ResourceBundle {
public Enumeration getKeys() {
return null;
}
protected Object handleGetObject(String key) {
if (key.equals(“ok”)) {
return “OK”;
} else if (key.equals(“cancel”)) {
return “CANCEL”;
}
return null;
}
}
import java.util.Enumeration;
import java.util.ResourceBundle;
public class TestResource_zh_CN extends ResourceBundle {
public Enumeration getKeys() {
return null;
}
protected Object handleGetObject(String key) {
if (key.equals(“ok”)) {
return “提交”;
} else if (key.equals(“cancel”)) {
return “取消”;
}
return null;
}
}
import java.util.ResourceBundle;
public class RBTest {
public static void main(String[] args){
ResourceBundle resource = ResourceBundle.getBundle(“TestResource”) ;
System.out.println(resource.getString(“ok”));
System.out.println(resource.getString(“cancel”));
}
}
输出如下:
提交
取消
参考:
http://publib.boulder.ibm.com/infocenter/ad11help/index.jsp?topic=/com.sun.api.doc/java/util/ResourceBundle.html
MessageFormat类
5:
Sorry, the comment form is closed at this time.
No comments yet.