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

📄 language.java

📁 大家共享愉快, 共享愉快, 共享愉快, 共享愉快,共享愉快
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
 * The contents of this file are subject to the   Compiere License  Version 1.1
 * ("License"); You may not use this file except in compliance with the License
 * You may obtain a copy of the License at http://www.compiere.org/license.html
 * 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 Compiere ERP & CRM Smart Business Solution. The Initial
 * Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
 * are Copyright (C) 1999-2005 Jorg Janke.
 * All parts are Copyright (C) 1999-2005 ComPiere, Inc.  All Rights Reserved.
 * Contributor(s): ______________________________________.
 *****************************************************************************/
package org.compiere.util;

import java.awt.*;
import java.io.*;
import java.text.*;
import java.util.*;
import java.util.logging.*;
import javax.print.attribute.standard.*;

/**
 *  Language Management.
 *
 *  @author     Jorg Janke
 *  @version    $Id: Language.java,v 1.52 2005/12/02 16:21:09 jjanke Exp $
 */
public class Language implements Serializable
{
	/**************************************************************************
	 *  Languages
	 *      http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt
	 *  Countries
	 *      http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html
	 *************************************************************************/

	/** Base Language               */
	public static final String  AD_Language_en_US = "en_US";
	/** Additional Languages         */
	private static final String AD_Language_en_GB = "en_GB";
	private static final String AD_Language_en_AU = "en_AU";
	private static final String AD_Language_ca_ES = "ca_ES";
	private static final String AD_Language_hr_HR = "hr_HR";
	private static final String AD_Language_de_DE = "de_DE";
	private static final String AD_Language_it_IT = "it_IT";
	private static final String AD_Language_es_ES = "es_ES";
	private static final String AD_Language_fr_FR = "fr_FR";
	private static final String AD_Language_bg_BG = "bg_BG";
	private static final String AD_Language_th_TH = "th_TH";
	private static final String AD_Language_pl_PL = "pl_PL";
	private static final String AD_Language_zh_TW = "zh_TW";
	private static final String AD_Language_nl_NL = "nl_NL";
	private static final String AD_Language_no_NO = "no_NO";
	private static final String AD_Language_pt_BR = "pt_BR";
	private static final String AD_Language_ru_RU = "ru_RU";
	private static final String AD_Language_sl_SI = "sl_SI";
	private static final String AD_Language_sv_SE = "sv_SE";
	private static final String AD_Language_vi_VN = "vi_VN";
	private static final String AD_Language_zh_CN = "zh_CN";
	private static final String AD_Language_da_DK = "da_DK";
	private static final String AD_Language_ml_ML = "ml_ML";
	private static final String AD_Language_fa_IR = "fa_IR";
	private static final String AD_Language_fi_FI = "fi_FI";
	private static final String AD_Language_ro_RO = "ro_RO";
	private static final String AD_Language_ja_JP = "ja_JP";
	private static final String AD_Language_in_ID = "in_ID";
	private static final String AD_Language_ar_TN = "ar_TN";

	/***
	 *  System Languages.
	 *  If you want to add a language, extend the array
	 *  - or use the addLanguage() method.
	 **/
	static private Language[]   s_languages = {
		new Language ("English",
			AD_Language_en_US,  Locale.US,      null, null,
			MediaSize.NA.LETTER),							    //  Base Language
		new Language ("\u7b80\u4f53\u4e2d\u6587 (CN)",
				AD_Language_zh_CN,  Locale.CHINA,  null, "yyyy-MM-dd",
				MediaSize.ISO.A4),
		new Language ("\u7e41\u9ad4\u4e2d\u6587 (TW)",
				AD_Language_zh_TW,  Locale.TAIWAN,  null, null,		//  dd.MM.yy
				MediaSize.ISO.A4),
		//	ordered by locale
		//	Not predefined Locales - need to define decimal Point and date pattern (not sure about time)
		new Language ("\uFE94\uFEF4\uFE91\uFEAE\uFECC\uFEDF\uFE8D (AR)",
			AD_Language_ar_TN,  new Locale("ar","TN"), new Boolean(true), "dd.MM.yyyy",
			MediaSize.ISO.A4),
		new Language ("\u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438 (BG)",
			AD_Language_bg_BG,  new Locale("bg","BG"), new Boolean(false), "dd/MM/yyyy",
			MediaSize.ISO.A4),
		new Language ("Catal\u00e0",
			AD_Language_ca_ES, new Locale("ca", "ES"), null, "dd/MM/yyyy",
			MediaSize.ISO.A4),
		new Language ("Deutsch",
			AD_Language_de_DE,  Locale.GERMANY, null, null,
			MediaSize.ISO.A4),
		new Language ("Dansk",
			AD_Language_da_DK,  new Locale("da","DK"),  new Boolean(false), "dd-MM-yyyy",
			MediaSize.ISO.A4),
		new Language ("English (AU)",
			AD_Language_en_AU,  new Locale("en","AU"), null, "dd/MM/yyyy",
			MediaSize.ISO.A4),
		new Language ("English (UK)",
			AD_Language_en_GB,  Locale.UK,      null, null,
			MediaSize.ISO.A4),
		new Language ("Espa\u00f1ol",
			AD_Language_es_ES,  new Locale("es","ES"), new Boolean(false), "dd/MM/yyyy",
			MediaSize.ISO.A4),
		new Language ("Farsi",
			AD_Language_fa_IR,  new Locale("fa","IR"),  new Boolean(false), "dd-MM-yyyy",
			MediaSize.ISO.A4),
		new Language ("Finnish",
			AD_Language_fi_FI,  new Locale("fi","FI"),  new Boolean(true), "dd.MM.yyyy",
			MediaSize.ISO.A4),
		new Language ("Fran\u00e7ais",
			AD_Language_fr_FR,  Locale.FRANCE,  null, null,		//  dd.MM.yy
			MediaSize.ISO.A4),
		new Language ("Hrvatski",
			AD_Language_hr_HR, new Locale("hr", "HR"), null, "dd.MM.yyyy",
			MediaSize.ISO.A4),
		new Language ("Indonesia Bahasa",
			AD_Language_in_ID, new Locale("in","ID"), new Boolean(false), "dd-MM-yyyy",
			MediaSize.ISO.A4),
		new Language ("Italiano",
			AD_Language_it_IT,  Locale.ITALY,   null, null,		//  dd.MM.yy
			MediaSize.ISO.A4),
		new Language ("\u65e5\u672c\u8a9e (JP)",
			AD_Language_ja_JP, Locale.JAPAN, null, null,
			MediaSize.ISO.A4),
		new Language ("Malay",
			AD_Language_ml_ML, new Locale("ml","ML"), new Boolean(false), "dd-MM-yyyy",
			MediaSize.ISO.A4),
		new Language ("Nederlands",
			AD_Language_nl_NL, new Locale("nl","NL"), new Boolean(false), "dd-MM-yyyy",
			MediaSize.ISO.A4),
		new Language ("Norsk",
			AD_Language_no_NO,  new Locale("no","NO"), new Boolean(false), "dd/MM/yyyy",
			MediaSize.ISO.A4),
		new Language ("Polski",
			AD_Language_pl_PL, new Locale("pl","PL"), new Boolean(false), "dd-MM-yyyy",
			MediaSize.ISO.A4),
		new Language ("Portuguese (BR)",
			AD_Language_pt_BR, new Locale("pt","BR"), new Boolean(false), "dd/MM/yyyy",
			MediaSize.ISO.A4),
		new Language ("Rom\u00e2n\u0103",
			AD_Language_ro_RO, new Locale("ro","RO"), new Boolean(false), "dd.MM.yyyy",
			MediaSize.ISO.A4),
		new Language ("\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (Russian)",
			AD_Language_ru_RU, new Locale("ru","RU"), new Boolean(false), "dd-MM-yyyy",
			MediaSize.ISO.A4),
		new Language ("Slovenski",
			AD_Language_sl_SI, new Locale("sl", "SI"), null, "dd.MM.yyyy",
			MediaSize.ISO.A4),
		new Language ("Svenska",
			AD_Language_sv_SE,  new Locale("sv","SE"),  new Boolean(false), "dd.MM.yyyy",
			MediaSize.ISO.A4),
		new Language ("\u0e44\u0e17\u0e22 (TH)",
			AD_Language_th_TH,  new Locale("th","TH"), new Boolean(false), "dd/MM/yyyy",
			MediaSize.ISO.A4),
		new Language ("Vi\u1EC7t Nam",
			AD_Language_vi_VN, new Locale("vi","VN"), new Boolean(false), "dd-MM-yyyy",
			MediaSize.ISO.A4)

	};
	/** Default Language            */
	private static Language     s_loginLanguage = s_languages[0];

	/**	Logger			*/
	private static Logger log = Logger.getLogger(Language.class.getName());
	
	/**
	 *  Get Number of Languages
	 *  @return Language count
	 */
	public static int getLanguageCount()
	{
		return s_languages.length;
	}   //  getLanguageCount

	/**
	 *  Get Language
	 *  @param index index
	 *  @return Language
	 */
	public static Language getLanguage (int index)
	{
		if (index < 0 || index >= s_languages.length)
			return s_loginLanguage;
		return s_languages[index];
	}   //  getLanguage

	/**
	 *  Add Language to supported Languages
	 *  @param language new language
	 */
	public static void addLanguage (Language language)
	{
		if (language == null)
			return;
		ArrayList<Language> list = new ArrayList<Language>(Arrays.asList(s_languages));
		list.add(language);
		s_languages = new Language[list.size()];
		list.toArray(s_languages);
	}   //  addLanguage

	/**************************************************************************
	 *  Get Language.
	 * 	If language does not exist, create it on the fly assuming taht it is valid
	 *  @param langInfo either language (en) or locale (en-US) or display name
	 *  @return Name (e.g. Deutsch)
	 */
	public static Language getLanguage (String langInfo)
	{
		String lang = langInfo;
		if (lang == null || lang.length() == 0)
			lang = System.getProperty("user.language", "");

		//	Search existing Languages
		for (int i = 0; i < s_languages.length; i++)
		{
			if 	(lang.equals(s_languages[i].getName())
				||  lang.equals(s_languages[i].getLanguageCode())
				|| lang.equals(s_languages[i].getAD_Language()))
				return s_languages[i];
		}

		//	Create Language on the fly
		if (lang.length() == 5)		//	standard format <language>_<Country>
		{
			String language = lang.substring(0,2);
			String country = lang.substring(3);
			Locale locale = new Locale(language, country);
			log.info ("Adding Language=" + language + ", Country=" + country + ", Locale=" + locale);
			Language ll = new Language (lang, lang, locale);
			//	Add to Languages
			ArrayList<Language> list = new ArrayList<Language>(Arrays.asList(s_languages));
			list.add(ll);
			s_languages = new Language [list.size()];
			list.toArray(s_languages);
			//	Return Language
			return ll;
		}
		//	Get the default one
		return s_loginLanguage;
	}   //  getLanguage

	/**
	 *  Is it the base language
	 *  @param langInfo either language (en) or locale (en-US) or display name
	 *  @return true if base language
	 */
	public static boolean isBaseLanguage (String langInfo)
	{
		if (langInfo == null || langInfo.length() == 0
			|| langInfo.equals(s_languages[0].getName())
			|| langInfo.equals(s_languages[0].getLanguageCode())
			|| langInfo.equals(s_languages[0].getAD_Language()))
			return true;
		return false;
	}   //  isBaseLanguage

	/**
	 *  Get Base Language
	 *  @return Base Language
	 */
	public static Language getBaseLanguage()
	{
		return s_languages[0];
	}   //  getBase

	/**
	 *  Get Base Language code. (e.g. en-US)
	 *  @return Base Language
	 */
	public static String getBaseAD_Language()
	{
		return s_languages[0].getAD_Language();
	}   //  getBase

	/**
	 *  Get Supported Locale
	 *  @param langInfo either language (en) or locale (en-US) or display name
	 *  @return Supported Locale
	 */
	public static Locale getLocale (String langInfo)
	{
		return getLanguage(langInfo).getLocale();
	}   //  getLocale

	/**
	 *  Get Supported Language
	 *  @param langInfo either language (en) or locale (en-US) or display name
	 *  @return AD_Language (e.g. en-US)
	 */
	public static String getAD_Language (String langInfo)
	{
		return getLanguage(langInfo).getAD_Language();
	}   //  getAD_Language

	/**
	 *  Get Supported Language
	 *  @param locale Locale
	 *  @return AD_Language (e.g. en-US)
	 */
	public static String getAD_Language (Locale locale)
	{
		if (locale != null)
		{
			for (int i = 0; i < s_languages.length; i++)
			{
				if 	(locale.equals(s_languages[i].getLocale()))
					return s_languages[i].getAD_Language();
			}
		}
		return s_loginLanguage.getAD_Language();
	}   //  getLocale

	/**
	 *  Get Language Name
	 *  @param langInfo either language (en) or locale (en-US) or display name
	 *  @return Langauge Name (e.g. English)
	 */
	public static String getName (String langInfo)
	{
		return getLanguage(langInfo).getName();
	}   //  getAD_Language

	/**
	 *  Returns true if Decimal Point (not comma)
	 *  @param langInfo either language (en) or locale (en-US) or display name
	 *  @return use of decimal point
	 */
	public static boolean isDecimalPoint(String langInfo)
	{
		return getLanguage(langInfo).isDecimalPoint();
	}   //  getAD_Language

	/**
	 *  Get Display names of supported languages
	 *  @return Array of Language names
	 */
	public static String[] getNames()
	{
		String[] retValue = new String[s_languages.length];
		for (int i = 0; i < s_languages.length; i++)
			retValue[i] = s_languages[i].getName();
		return retValue;
	}   //  getNames

	
	/**************************************************************************
	 *  Get Default Login Language
	 *  @return default Language
	 */

⌨️ 快捷键说明

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