📜  Java 国际化和本地化

📅  最后修改于: 2020-10-13 06:55:58             🧑  作者: Mango

Java的国际化和本地化

国际化也缩写为I18N,因为第一个字母“ I”和最后一个字母“ N”之间总共有18个字符。

国际化是一种创建可以适应不同语言和地区的应用程序的机制。

如果您要开发应用程序并希望根据特定地区或语言显示消息,货币,日期,时间等,则国际化是Java的强大概念之一。

本地化也缩写为I10N,因为第一个字母“ L”和最后一个字母“ N”之间总共有10个字符。本地化是一种通过添加特定于语言环境的文本和组件来创建可适应特定语言和区域的应用程序的机制。

开始国际化之前了解文化相关数据

开始国际化之前,让我们首先了解一个地区与另一个地区之间有哪些不同的信息。有文化相关数据的列表:

  • 留言内容
  • 日期
  • 时报
  • 号码
  • 货币
  • 测量
  • 电话号码
  • 邮政地址
  • GUI组件等上的标签

语言环境类在国际化中的重要性

语言环境类别的对象表示地理或文化区域。此对象可用于获取特定于语言环境的信息,例如国家/地区名称,语言,变体等。

区域设置类的字段

有Locale类的字段:

  • 公共静态最终语言环境
  • 公共静态最终语言环境(法语)
  • 公共静态最终语言环境GERMAN
  • 公共静态最终语言环境ITALIAN
  • 公共静态最终语言环境JAPANESE
  • 公共静态最终语言环境KOREAN
  • 公共静态最终语言环境中文
  • 公共静态最终语言环境SIMPLIFIED_CHINESE
  • 公共静态最终语言环境TRADITIONAL_CHINESE
  • 公共静态最终Locale法国
  • 公共静态最终语言环境德国
  • 公共静态最终语言环境意大利
  • 公共静态最终语言环境JAPAN
  • 公共静态最终语言环境韩国
  • 公共静态最终语言环境CHINA
  • 公共静态最终语言环境
  • 公共静态最终语言环境台湾
  • 公共静态最终语言环境英国
  • 公共静态最终语言环境US
  • 公共静态最终语言环境加拿大
  • 公共静态最终语言环境CANADA_FRENCH
  • 公共静态最终语言环境ROOT

语言环境类的构造函数

Locale类的三个构造函数如下:

  • 语言环境(字符串语言)
  • 语言环境(字符串语言,字符串国家/地区)
  • 语言环境(字符串语言,字符串国家/地区,字符串变体)

语言环境类的常用方法

提供了Locale类的常用方法。

  • public static Locale getDefault()返回当前Locale的实例
  • public static Locale [] getAvailableLocales()返回一个可用语言环境的数组。
  • public String getDisplayCountry()返回此语言环境对象的国家/地区名称。
  • public String getDisplayLanguage()返回此语言环境对象的语言名称。
  • public String getDisplayVariant()返回此语言环境对象的变体代码。
  • public String getISO3Country()返回当前语言环境所在国家/地区的三个字母的缩写。
  • public String getISO3Language()返回当前语言环境的语言的三个字母的缩写。

显示默认语言环境信息的Local类示例

在此示例中,我们将显示默认语言环境的信息。如果要获取有关任何特定语言环境的信息,请在main方法中注释第一行语句,并取消注释第二行语句。


import java.util.*;
public class LocaleExample {
public static void main(String[] args) {
Locale locale=Locale.getDefault();
//Locale locale=new Locale("fr","fr");//for the specific locale

System.out.println(locale.getDisplayCountry());
System.out.println(locale.getDisplayLanguage());
System.out.println(locale.getDisplayName());
System.out.println(locale.getISO3Country());
System.out.println(locale.getISO3Language());
System.out.println(locale.getLanguage());
System.out.println(locale.getCountry());

}
}


Output:United States
       English
       English (United States)
       USA
       eng
       en
       US

以不同语言打印英语的Local类示例

在此示例中,我们以不同的语言显示英语。让我们看看英语是如何用法语和西班牙语写的。


import java.util.*;
public class LocaleExample2 {
public static void main(String[] args) {
Locale enLocale = new Locale("en", "US");
Locale frLocale = new Locale("fr", "FR");
Locale esLocale = new Locale("es", "ES");
System.out.println("English language name (default): " + 
                    enLocale.getDisplayLanguage());

System.out.println("English language name in French: " + 
                    enLocale.getDisplayLanguage(frLocale));
System.out.println("English language name in spanish: " + 
                enLocale.getDisplayLanguage(esLocale));
}

}

print许多语言环境的显示语言的Local类的示例

在此示例中,我们将显示许多语言环境的显示区域。


import java.util.*;
public class LocaleEx {
public static void main(String[] args) {
Locale[] locales = { new Locale("en", "US"),
 new Locale("es", "ES"), new Locale("it", "IT") }; 

for (int i=0; i< locales.length; i++) { 
 String displayLanguage = locales[i].getDisplayLanguage(locales[i]); 
 System.out.println(locales[i].toString() + ": " + displayLanguage); 
} 
}

}

Output:en_US: English
       es_ES: espa?ol
       it_IT: italiano