同计算机编程有关的国际化是设计和编写应用程序以便可以在全球或多国环境中使用的过程。国际化程序能够支持不同的语言以及不同格式的日期、时间、货币和其它值,而无须软件修改。这通常涉及“软编码”或将文本组件同程序代码分离并且可能涉及可插入代码模块。
国际化资源文件命名: 名称_语言_国家.properties
英文: Message_en_US.properties
内容:
k1=hello!
k2=good bye!
k3=Can I help you! {0},{1}
中文: Message_zh_CN.properties
内容:
k1=你好吗?
k2=再见!
k3=我能帮助你吗?{0},{1}
k1=hello!
k2=good bye!
k3=Can I help you! {0},{1}
k1=\u4F60\u597D\u5417\uFF1F
k2=\u518D\u89C1\uFF01
k3=\u6211\u80FD\u5E2E\u52A9\u4F60\u5417\uFF1F{0}\uFF0C{1}
package com.what21.base29;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
/**
* Java国际化
*/
public class I18NTest {
/**
* 获取计算机默认的locale
*
* @return
*/
public static Locale getDefaultLocale() {
Locale defaultLocale = Locale.getDefault();
String defaultLanguage = defaultLocale.getLanguage();
String defaultCountry = defaultLocale.getCountry();
System.out.println("默认语言:" + defaultLanguage);
System.out.println("默认国家:" + defaultCountry);
return defaultLocale;
}
/**
* 获取构造的Locale
*
* @param language
* @param country
* @return
*/
public static Locale getNewLocale(String language, String country) {
Locale locale = new Locale(language, country);
String newLanguage = locale.getLanguage();
String newCountry = locale.getCountry();
System.out.println("语言:" + newLanguage);
System.out.println("国家:" + newCountry);
return locale;
}
/**
* 输出国际化资源文件
*
* @param fileName
* @param locale
* @param str1
* @param str2
*/
public static void message(String fileName, Locale locale,
String str1, String str2) {
ResourceBundle bundle = ResourceBundle.getBundle(fileName, locale);
System.out.println("k1 = " + bundle.getString("k1"));
System.out.println("k2 = " + bundle.getString("k2"));
// 填充占位符(2个占位符)
MessageFormat messageFormat = new MessageFormat(bundle.getString("k3"));
String k3 = messageFormat.format(new Object[] { str1, str2 });
System.out.println("k3 = " + k3);
}
/**
* @param args
*/
public static void main(String[] args) {
message("com/what21/base29/Message", getDefaultLocale(), "汤姆", "小张");
System.out.println("---------------------------------------------");
message("com/what21/base29/Message", getNewLocale("en", "US"), "tom", "zhang");
}
}
package com.what21.base29;
import java.util.Locale;
/**
* Java国际化
*/
public class LocaleTest {
public static void main(String[] args) {
// 返回所有已安装语言环境的数组
Locale[] locals = Locale.getAvailableLocales();
for (Locale locale : locals) {
// 国家
System.out.print(locale.getDisplayCountry() + " : "
+ locale.getCountry() + " | ");
// 语言
System.out.println(locale.getDisplayLanguage() + " : "
+ locale.getLanguage());
}
}
}