Java中的Locale解析

转载 2012年03月29日 14:18:36

在项目中经常要用到将字符串解析成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就不支持。

 参考其它方法,写了下面的类,做个笔记,也希望对解决类似问题的人有点帮助。

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.util.Locale简单了解

1:java.util.Locale的主要用途是什么?java.util.Locale主要在软件的本地化时使用。它本身没有什么功能,更多的是作为一个参数辅助其他方法完成输出的本地化。 2:java.u...
  • revo
  • revo
  • 2006年04月05日 21:11
  • 14148

java的Locale类

Java国际化 我们使用java.lang.Locale来构造Java国际化的情境。 java.lang.Locale代表特定的地理、政治和文化。需要Locale来执行其任务的操作叫语言环境敏感的...

国际化: 理解Java平台上的Locale

 语言和地理环境对我们的文化产生重要影响.我们同他人之间的交流以及生活中的事件都发生在语言和地理环境所产生的一个系统里.由于语言和环境的不同,以至需要我们来制定一个适合的方式来达到向他人表述我们自己或...

Java 国际化 语言切换

Java国际化我们使用java.lang.Locale来构造Java国际化的情境。java.lang.Locale代表特定的地理、政治和文化。需要Locale来执行其任务的操作叫语言环境敏感的操作。构...

java locale详解

关于locale的设定,为什么要设定locale 关于locale的设定 locale是国际化与本土化过程中的一个非常重要的概念,个人认为,对于中文用户来说,通常会涉及到的国际化或者本土...

java Locale介绍

定义:       public final class Locale extends Object       Locale 对象表示了特定的地理、政治和文化地区   字段摘要       Loca...

Java支持的Locale语言和国家-----示例

Locale[] locales = Locale.getAvailableLocales(); for( Locale locale : locales ){ System.out.print...
  • gqltt
  • gqltt
  • 2011年07月18日 11:34
  • 3687

Java中的locale设定

IT瘾 IT社区推荐资讯 首页热链 locale错误导致Java中文乱码错误的总结 标签:locale错误java| 发表时间:2014-12-02 12:57...
  • hnhbdss
  • hnhbdss
  • 2015年06月02日 00:01
  • 2206

解决 java.util.MissingResourceException: Can't find bundle for base name com...config, locale zh_CN 错误

解决 java.util.MissingResourceException: Can't find bundle for base name com...config, locale zh_CN 错误...

JAVA操作properties配置文件——总结(Locale&ResourceBundle& PropertyResourceBundle)

配置文件在开发中至关重要,对其读取与更改操作也是比较频繁的。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java中的Locale解析
举报原因:
原因补充:

(最多只允许输入30个字)