⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 localeutility.java

📁 本系统有十分强大的功能
💻 JAVA
字号:
/*******************************************************************************
 * ***** BEGIN LICENSE BLOCK Version: MPL 1.1
 * 
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with the
 * License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
 * 
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specific language governing rights and limitations under the License.
 * 
 * The Original Code is the OpenCustomer CRM.
 * 
 * The Initial Developer of the Original Code is Thomas Bader (Bader & Jene
 * Software-Ingenieurb�ro). Portions created by the Initial Developer are
 * Copyright (C) 2005 the Initial Developer. All Rights Reserved.
 * 
 * Contributor(s): Thomas Bader <thomas.bader@bader-jene.de>
 * 
 * ***** END LICENSE BLOCK *****
 */

package org.opencustomer.framework.util;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import org.apache.commons.lang.builder.CompareToBuilder;
import org.apache.log4j.Logger;

public final class LocaleUtility {
    
    private final static Logger log = Logger.getLogger(LocaleUtility.class);
    
    private static LocaleUtility instance;
    
    private List<Locale> availableLocales = new ArrayList<Locale>();
    
    private LocaleUtility() {        
    }
    
    public static LocaleUtility getInstance() {
        if(instance == null)
            instance = new LocaleUtility();
        
        return instance;
    }
    
    public static Locale parseLocale(String str) {
        String[] parts = str.split("_", 3);
        
        String language = "";
        String country = "";
        String variant = "";
        
        if(parts.length >= 1)
            language = parts[0];
        if(parts.length >= 2)
            country = parts[1];
        if(parts.length >= 3)
            variant = parts[2];
        
        return new Locale(language, country, variant);
    }

    public void load(String name) {
        final String start  = name+"_";
        final String ending = ".properties";
        
        if(log.isDebugEnabled())
            log.debug("file default locale: "+name+ending);
        
        File defaultLocale = new File(LocaleUtility.class.getClassLoader().getResource(name+ending).getFile());
        
        File[] localeFiles = defaultLocale.getParentFile().listFiles(new FileFilter() {
            public boolean accept(File file) {
                if(file.getName().startsWith(start) && file.getName().endsWith(ending)) {
                    return true;
                } else {
                    return false;
                }
            };
        });
        
        for(File localeFile : localeFiles) {
            String localeName = localeFile.getName();
            localeName = localeName.replaceFirst(start, "");
            localeName = localeName.replaceFirst(ending, "");

            Locale locale = LocaleUtility.parseLocale(localeName);
            if(locale != null)
                availableLocales.add(locale);
        }
    }     
    
    public List<Locale> getLocales() {
        return availableLocales;
    }
    
    public static class LocaleBean implements Comparable {
        private String localizedName;
        private Locale locale;
        
        public LocaleBean() {            
        }

        public LocaleBean(Locale locale, String localizedName) {     
            this.locale = locale;
            this.localizedName = localizedName;
        }

        public final Locale getLocale()
        {
            return locale;
        }

        public final void setLocale(Locale locale)
        {
            this.locale = locale;
        }

        public final String getLocalizedName()
        {
            return localizedName;
        }

        public final void setLocalizedName(String localizedName)
        {
            this.localizedName = localizedName;
        }

        public int compareTo(Object obj)
        {
            int compare = -1;

            if (obj == null)
                compare = -1;
            else if (this == obj)
                compare = 0;
            else if (!(obj instanceof LocaleBean))
                compare = -1;
            else
            {
                LocaleBean castObj = (LocaleBean) obj;

                CompareToBuilder builder = new CompareToBuilder();

                builder.append(this.getLocalizedName(), castObj.getLocalizedName());

                compare = builder.toComparison();
            }

            return compare;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -