「java中locale」java中locale是什么意思

博主:adminadmin 2022-12-24 23:21:06 56

今天给各位分享java中locale的知识,其中也会对java中locale是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java中 locale类 及相关方法

在项目中经常要用到将字符串解析成Locale,但是没有一个比较好用的类。

java本身提供了3个构造函数

Locale(langugae)

locale(language,country)

Locale(String language, String country, String variant)

Apache 有个 LocaleUtils.toLocale(String language)但是不支持最后2个字符为小写的,如:zh_CN支持, zh_cn就不支持。

[java] view plaincopyprint?

import java.util.Locale;

public class LocaleUtil

{

private final static Locale DEFAULT_LOCALE = Locale.ENGLISH;

public final static String IETF_SEPARATOR = "-";

public final static String SEPARATOR = "_";

public final static String EMPTY_STRING = "";

public static Locale toLocale( String language )

{

if( !StringUtil.isNullOrEmpty( language ) )

{

return langToLocale( language, SEPARATOR );

}

return DEFAULT_LOCALE;

}

public static Locale langToLocale( String lang , String separator )

{

if( StringUtil.isNullOrEmpty( lang ) )

{

return DEFAULT_LOCALE;

}

String language = EMPTY_STRING;

String country = EMPTY_STRING;

String variant = EMPTY_STRING;

int i1 = lang.indexOf( separator );

if ( i1 0 )

{

language = lang;

} else

{

language = lang.substring(0, i1);

++i1;

int i2 = lang.indexOf( separator, i1);

if (i2 0)

{

country = lang.substring(i1);

} else

{

country = lang.substring(i1, i2);

variant = lang.substring(i2+1);

}

}

if(language.length() == 2)

{

language = language.toLowerCase();

}else

{

language = EMPTY_STRING;

}

if(country.length() == 2)

{

country = country.toUpperCase();

}else

{

country = EMPTY_STRING;

}

if( (variant.length() 0)

((language.length() == 2) ||(country.length() == 2)) )

{

variant = variant.toUpperCase();

}else

{

variant = EMPTY_STRING;

}

return new Locale(language, country, variant );

}

}

import java.util.Locale;

public class LocaleUtil

{

private final static Locale DEFAULT_LOCALE = Locale.ENGLISH;

public final static String IETF_SEPARATOR = "-";

public final static String SEPARATOR = "_";

public final static String EMPTY_STRING = "";

public static Locale toLocale( String language )

{

if( !StringUtil.isNullOrEmpty( language ) )

{

return langToLocale( language, SEPARATOR );

}

return DEFAULT_LOCALE;

}

public static Locale langToLocale( String lang , String separator )

{

if( StringUtil.isNullOrEmpty( lang ) )

{

return DEFAULT_LOCALE;

}

String language = EMPTY_STRING;

String country = EMPTY_STRING;

String variant = EMPTY_STRING;

int i1 = lang.indexOf( separator );

if ( i1 0 )

{

language = lang;

} else

{

language = lang.substring(0, i1);

++i1;

int i2 = lang.indexOf( separator, i1);

if (i2 0)

{

country = lang.substring(i1);

} else

{

country = lang.substring(i1, i2);

variant = lang.substring(i2+1);

}

}

if(language.length() == 2)

{

language = language.toLowerCase();

}else

{

language = EMPTY_STRING;

}

if(country.length() == 2)

{

country = country.toUpperCase();

}else

{

country = EMPTY_STRING;

}

if( (variant.length() 0)

((language.length() == 2) ||(country.length() == 2)) )

{

variant = variant.toUpperCase();

}else

{

variant = EMPTY_STRING;

}

return new Locale(language, country, variant );

}

}

注意:

public class StringUtil

{

public static boolean isNullOrEmpty(String target) {

return target == null || "".equals(target);

}

}

java国际化怎么实现

以下分3点进行讲述

1、我们使用java.lang.Locale来实现java国际化。

java.lang.Locale代表特定的地理、政治和文化。需要Locale来执行其任务的操作叫语言环境敏感的操作。

构造一个系统默认的Locale:

Locale defaultLocale = Locale.getDefault();

String country = defaultLocale.getCountry();//返回国家地区代码

String language = defaultLocale.getLanguage();//返回国家的语言

String displayCountry = defaultLocale.getDisplayCountry();//返回适合向用户显示的国家信息

String displayLanaguage = defaultLocale.getDisplayLanaguage();//返回适合向用户展示的语言信息

String displayName = defaultLocale.getDisplayName();//返回适合向用户展示的语言环境名

加入当前Java虚拟机线程所处的操作系统的区域语言设置为“中文(简体,中国)”,则上边的运行结果依次将会是:

CN

zh

中国

中文

中文(中国)

根据国家地区和语言构造一个Locale(语言环境)

Locale currentLocale = new Locale(“zh”, ”CN”);

构造方法为:Locale(String language, String country);

2、使用ResouceBundle读取国际化资源文件

ResourceBundle资源包包含特定语言环境的对象。使用其可以加载并读取语言环境资源。

1. 轻松的本地化或者翻译成不同的语言

2. 一次处理多个语言环境

3. 以后可以轻松的进行修改,一遍支持更多的语言环境。

当程序需要特定于语言环境的对象时,它使用getBundle()方法加载ResourceBundle类

ResourceBundle rb = ResourceBundle.getBundle(“res.MessageBundle”, currentLocale);

其中,res.MessageBundle代表的是我们在src下建立了一个res文件夹,而res文件夹下有一个名为MessageBundle.properteis的资源文件。我们允许在此建立多个国际化资源文件:MessageBundle_zh_CN.properties;

MessageBundle_en_US.properteis;

其中MessageBundle就是要在构造ResourceBundle时使用的字符串,这个名字合法即可,不需要特定约束。后边的名字一定要遵循规则,resourceName_language_country.properteis;

然后我们使用rb.getString(key);就可以获取资源文件中的Key对应的value。

3、实际应用距离:struts

在jsp页面中,即可直接使用s:text name="key"/来调用ResourceBundle资源文件中的内容

如何获取当前Locale和设定Locale-java

在Android

中,Context

几乎无处不在。最常见的Activity

本身就是一个Context,而所有的

View

在构造时,都必须传入Context;而且,同一个App,使用的BaseContext

是共享的。

所以通过Context

来确定当前应用的Locale

可以说是最安全,也最有效的。这里,我们以在

Activity

中onCreate(Bundle

savedInstanceState)方法中获取Locale

来示例,代码如下:

Resources

res

=

this.getResources();

Configuration

cfg

=

res.getConfiguration();

Locale

locale

=

cfg.locale;

res.updateConfiguration(cfg,

null);

setContentView(R.layout.xxxx);

关于java中locale和java中locale是什么意思的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-24,除非注明,否则均为首码项目网原创文章,转载请注明出处。