From 94a37ec70d3fa80fdbbf90c77189f0609b779201 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Sun, 26 Oct 2014 09:19:23 -0500 Subject: [PATCH] IDEMPIERE-939 A lot of Russian language on Login panel --- .../src/org/compiere/util/Language.java | 82 ++++++++----------- 1 file changed, 33 insertions(+), 49 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/util/Language.java b/org.adempiere.base/src/org/compiere/util/Language.java index c35c3b5ad3..d6a06c9a4e 100644 --- a/org.adempiere.base/src/org/compiere/util/Language.java +++ b/org.adempiere.base/src/org/compiere/util/Language.java @@ -22,7 +22,7 @@ import java.text.DateFormat; import java.text.DecimalFormatSymbols; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Arrays; +import java.util.List; import java.util.Locale; import java.util.logging.Level; @@ -42,7 +42,7 @@ public class Language implements Serializable /** * */ - private static final long serialVersionUID = 6705748825004207885L; + private static final long serialVersionUID = 8855937839841807335L; /** * @@ -59,19 +59,19 @@ public class Language implements Serializable /*** * System Languages. - * If you want to add a language, extend the array - * - or use the addLanguage() method. + * If you want to add a language, use the method getLanguage which extends the array **/ - static private Language[] s_languages = new Language[] { - new Language ("English", - AD_Language_en_US, Locale.US, null, null, - MediaSize.NA.LETTER) - }; + private static List s_languages = new ArrayList(); /** Base Language */ - private static Language s_baseLanguage = s_languages[0]; + private static Language s_baseLanguage = null; private static boolean isBaseLanguageSet = false; + static { + s_languages.add(new Language ("English", AD_Language_en_US, Locale.US, null, null, MediaSize.NA.LETTER)); + s_baseLanguage = s_languages.get(0); + } + /** Logger */ private static CLogger log = CLogger.getCLogger(Language.class.getName()); @@ -81,7 +81,7 @@ public class Language implements Serializable */ public static int getLanguageCount() { - return s_languages.length; + return s_languages.size(); } // getLanguageCount /** @@ -91,33 +91,18 @@ public class Language implements Serializable */ public static Language getLanguage (int index) { - if (index < 0 || index >= s_languages.length) + if (index < 0 || index >= s_languages.size()) return s_baseLanguage; - return s_languages[index]; + return s_languages.get(index); } // getLanguage - /** - * Add Language to supported Languages - * @param language new language - * @deprecated IDEMPIERE-489 Configure the language in the database - */ - public static void addLanguage (Language language) - { - if (language == null) - return; - ArrayList list = new ArrayList(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 that 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) + public synchronized static Language getLanguage (String langInfo) { int idxReplace = -1; String lang = langInfo; @@ -125,17 +110,17 @@ public class Language implements Serializable lang = System.getProperty("user.language", ""); // Search existing Languages - for (int i = 0; i < s_languages.length; i++) + for (int i = 0; i < s_languages.size(); i++) { - if ( lang.equals(s_languages[i].getName()) - || lang.equals(s_languages[i].getLanguageCode()) - || lang.equals(s_languages[i].getAD_Language())) { - if (!s_languages[i].m_fromDB && DB.isConnected()) { + if ( lang.equals(s_languages.get(i).getAD_Language()) + || lang.equals(s_languages.get(i).getLanguageCode()) + || lang.equals(s_languages.get(i).getName())) { + if (!s_languages.get(i).m_fromDB && DB.isConnected()) { // if language was not get from DB and now we're connected idxReplace = i; break; } else { - return s_languages[i]; + return s_languages.get(i); } } } @@ -181,17 +166,16 @@ public class Language implements Serializable if (ll == null) { ll = new Language (lang, lang, locale); } + if (log.isLoggable(Level.INFO)) { + StringBuilder msglog = new StringBuilder("Adding Language=").append(language).append(", Country=").append(country).append(", Locale=").append(locale); + log.info (msglog.toString()); + } StringBuilder msglog = new StringBuilder("Adding Language=").append(language).append(", Country=").append(country).append(", Locale=").append(locale); - if (log.isLoggable(Level.INFO)) log.info (msglog.toString()); + log.warning(msglog.toString()); if (idxReplace >= 0) { - s_languages[idxReplace] = ll; + s_languages.set(idxReplace, ll); } else { - // Add to Languages - ArrayList list = new ArrayList(Arrays.asList(s_languages)); - list.add(ll); - s_languages = new Language [list.size()]; - list.toArray(s_languages); - // Return Language + s_languages.add(ll); } return ll; } @@ -274,10 +258,10 @@ public class Language implements Serializable { if (locale != null) { - for (int i = 0; i < s_languages.length; i++) + for (int i = 0; i < s_languages.size(); i++) { - if (locale.getLanguage().equals(s_languages[i].getLocale().getLanguage())) - return s_languages[i].getAD_Language(); + if (locale.getLanguage().equals(s_languages.get(i).getLocale().getLanguage())) + return s_languages.get(i).getAD_Language(); } } return s_baseLanguage.getAD_Language(); @@ -309,9 +293,9 @@ public class Language implements Serializable */ 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(); + String[] retValue = new String[s_languages.size()]; + for (int i = 0; i < s_languages.size(); i++) + retValue[i] = s_languages.get(i).getName(); return retValue; } // getNames