Locale类:Java本地化

QuibblerQuibbler 2020-03-24 约 9 分钟 2678 次阅读

Locale类:Java本地化

Android提供了丰富的国家化API支持APP的国际化。Java中也有用于转换和划分地区的国际化Locale类位于包java.lang中,国际化在程序中设置语言和时间等时非常有用。

1、Locale类

1.1、构造Locale

①Locale getDefault():返回当前JVM虚拟机默认的地区语言环境值

②Locale(String language):构造函数,传入语言码

③Locale(String language, String country):传入语言和地区码

public Locale(String language, String country) {
        this(language, country, "");
    }

④Locale(String language, String country, String variant):语言码、国家码及用于指示语言环境变化的任意值。

例:

//默认Locale
    Locale currentLocale = Locale.getDefault();
    
    //指定语言和国家地区
    Locale locale = new Locale("zh", "CN");

1.2、Locale字段

Locale类中提供很多现成的国家Locale实例,可以直接引用使用。

static public final Locale ENGLISH = createConstant("en", "");
    static public final Locale FRENCH = createConstant("fr", "");
    static public final Locale GERMAN = createConstant("de", "");
    static public final Locale ITALIAN = createConstant("it", "");
    static public final Locale JAPANESE = createConstant("ja", "");
    static public final Locale KOREAN = createConstant("ko", "");
    static public final Locale CHINESE = createConstant("zh", "");
    static public final Locale SIMPLIFIED_CHINESE = createConstant("zh", "CN");
    static public final Locale TRADITIONAL_CHINESE = createConstant("zh", "TW");
    static public final Locale FRANCE = createConstant("fr", "FR");
    static public final Locale GERMANY = createConstant("de", "DE");
    static public final Locale ITALY = createConstant("it", "IT");
    static public final Locale JAPAN = createConstant("ja", "JP");
    static public final Locale KOREA = createConstant("ko", "KR");
    static public final Locale CHINA = SIMPLIFIED_CHINESE;
    static public final Locale PRC = SIMPLIFIED_CHINESE;
    static public final Locale TAIWAN = TRADITIONAL_CHINESE;
    static public final Locale UK = createConstant("en", "GB");
    static public final Locale US = createConstant("en", "US");
    static public final Locale CANADA = createConstant("en", "CA");
    static public final Locale CANADA_FRENCH = createConstant("fr", "CA");

例:

Locale china = Locale.CHINA;

2、Locale方法

2.1、getAvailableLocales()

获取Locale支持的全部区域的Locale[]数组,在我电脑上Java 1.8.0_201上运行,支持的Locale共有683之多。

Locale[] locales = Locale.getAvailableLocales();
    for (Locale locale : locales) {
        Log.e("QUIBBLER", locale.getCountry());
    }

        (打印Log发现AndroidStudio中如果Log内容为空可能就自动过滤掉)。

2.2、getCountry()

获取Locale对象中的国家地区码

2.3、getLanguage()

返回国家的语言码

2.4、其它方法

Locale类中的其它方法,如下。

Object             clone()
	boolean            equals(Object object)
	static Locale[]    getAvailableLocales()
	static Locale      getDefault()
	String             getDisplayCountry(Locale locale)
	final  String      getDisplayCountry()                 //返回适合向用户显示的国家信息
	final  String      getDisplayLanguage()                //返回适合向用户展示的语言信息
	String             getDisplayLanguage(Locale locale)
	String             getDisplayName(Locale locale)
	final  String      getDisplayName()                    //返回适合向用户展示的语言环境名
	final  String      getDisplayVariant()
	String             getDisplayVariant(Locale locale)
	String             getISO3Country()
	String             getISO3Language()
	static String[]    getISOCountries()
	static String[]    getISOLanguages()
	String             getVariant()
	synchronized int   hashCode()
	final  String      toString()
	synchronized static void   setDefault(Locale locale)

参考博客:

       详解Java中用于国际化的locale类

        Java的Locale类

       sun.util.locale.BaseLocale的Java代码示例

相关推荐

精选
获取系统SDK版本、判断手机ROM
Code

获取系统SDK版本、判断手机ROM

Build获取系统SDK版本Android中部分API的使用,需要在特定的SDK版本之后才能使用,因此在兼容老版本SDK的时候,经常需要判断API的版本。各种Android版本的对应关系参考《Android各版本对应的SDK版本》判断手机ROM有时候需要判断手机系统的ROM,检测ROM是MIUI、EMUI还是Flyme,可以使用getprop命令,去系统build.prop文件(关于build.p

3.7k
精选
AndroidStudio中各种中文乱码问题
Code

AndroidStudio中各种中文乱码问题

AndroidStudio中各种中文乱码问题1、编译Java错误信息乱码在出现这个Annotation processors must be explicitly declared now...问题的时候,正好也发现AndroidStudio Build Output错误信息都乱码。经常遇到各种问题,习惯了,现在遇到的问题,都是以后的答案。 1.1、修改项目build.gradle(无效)在整个p

2.4k
AndroidStudio 报错:has no declaration in the base values folder
Code

AndroidStudio 报错:has no declaration in the base values folder

在资源文件中正常定义的值,也能编译运行。昨天还正常,今天一打开就报错。应该又是AndroidStudio自身的Bug了。原因众说纷纭,参考Stack Overflow 一篇类似的讨论。解决:File => Invalidate Caches / Restart => Invalidate and Restart.

4.4k