国际化英文单词为:Internationalization,又称I18N,I为因为单词的第一个字母,18为这个单词的长度,而N代表这个单词的最后一个字母。国际化又称本地化(Localization,L10N)。
国际化相关的Java类
Java国际化主要通过如下3个类完成
java.util.ResourceBundle:用于加载一个资源包
java.util.Locale:对应一个特定的国家/区域、语言环境。
java.text.MessageFormat:用于将消息格式化
国际化资源文件
为实现程序的国际化,必须提供程序所需要的资源文件。资源文件的内容由key-value对组成。
资源文件的命名可以有3种格式:
basename_language_country.properties
basename_language.properties
basename_properties
若资源文件包含非西方字符,则需要用JDK自带的工具来处理:native2ascii
Locale类可获取各国区域环境(如:Locale.ENGLISH、Locale.CHINESE,这些常量返回一个Locale实例),也可以获取当前系统所使用的区域语言环境。
ResourceBundle类可根据指定参数获取相应的资源,常用方法如下:
ResourceBundle.getBundle(basename)//获取当前系统所使用的区域环境获得指定资源文件
ResourceBundle.getBundle(basename,locale)//根据指定的区域获取对应的资源文件
import java.util.Locale;
import java.util.ResourceBundle;
/**
* 国际化测
* @author 流浪鱼
*/
public class I18NTest {
private ResourceBundle rb;
public I18NTest(ResourceBundle rb){
this.rb = rb;
}
/**
* 打印信息
* @param msg
* @return
*/
public String say( String msg ) {
return rb.getString( msg );
}
public static void main(String[] args) {
ResourceBundle bundleZh = ResourceBundle.getBundle("Ralasafe_Web", Locale.CHINA);
ResourceBundle bundleEn = ResourceBundle.getBundle("Ralasafe_Web", Locale.ENGLISH);
I18NTest zh = new I18NTest(bundleZh);
I18NTest en = new I18NTest(bundleEn);
//System.out.println(en.say("Action"));
System.out.println(zh.say("Action")+" "+en.say("Action"));
System.out.println(zh.say("Add_policy")+" "+en.say("Add_policy"));
System.out.println(zh.say("Bottom")+" "+en.say("Bottom"));
System.out.println(zh.say("Privilege_Constants")+" "+en.say("Privilege_Constants"));
System.out.println(zh.say("Ralasafe_Console")+" "+en.say("Ralasafe_Console"));
}
}
本文深入探讨了Java国际化的核心概念,包括国际化英文单词、本地化(Localization)与国际化(Internationalization)的区别,以及如何利用Java类实现程序的国际化。文章详细介绍了Java中用于国际化的主要类及其使用方法,并通过示例展示了如何创建和使用国际化资源文件。
884

被折叠的 条评论
为什么被折叠?



