Author: sebb
Date: Mon Nov 17 05:16:24 2008
New Revision: 718239

URL: http://svn.apache.org/viewvc?rev=718239&view=rev
Log:
Check that Locale is loaded correctly
Add utility method to support additional languages

Modified:
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java

Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java?rev=718239&r1=718238&r2=718239&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java 
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java Mon 
Nov 17 05:16:24 2008
@@ -51,6 +51,7 @@
 import org.apache.jmeter.gui.GuiPackage;
 import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.test.UnitTestManager;
+import org.apache.jorphan.util.JMeterError;
 import org.apache.jorphan.util.JOrphanUtils;
 import org.apache.log.Logger;
 import org.apache.oro.text.PatternCacheLRU;
@@ -303,7 +304,9 @@
          * found.
          */
         Locale def = null;
+        boolean isDefault = false; // Are we the default language?
         if (loc.getLanguage().equals(Locale.ENGLISH.getLanguage())) {
+            isDefault = true;
             def = Locale.getDefault();
             // Don't change locale from en_GB to en
             if (!def.getLanguage().equals(Locale.ENGLISH.getLanguage())) {
@@ -318,8 +321,14 @@
             // Keep existing settings
         } else {
             ignoreResorces = false;
-            locale = loc;
-            resources = 
ResourceBundle.getBundle("org.apache.jmeter.resources.messages", locale); // 
$NON-NLS-1$
+            ResourceBundle resBund = 
ResourceBundle.getBundle("org.apache.jmeter.resources.messages", loc); // 
$NON-NLS-1$
+            if (isDefault || resBund.getLocale().equals(loc)) {// language 
change worked
+                resources = resBund;
+                locale = loc;                
+            } else {
+                log.error("Unable to change language to "+loc.toString());
+                throw new JMeterError("Unable to change language to 
"+loc.toString());
+            }
         }
         notifyLocaleChangeListeners();
         /*
@@ -424,6 +433,23 @@
     }
 
     /**
+     * Get the locale name as a resource.
+     * Does not log an error if the resource does not exist.
+     * This is needed to support additional locales, as they won't be in 
existing messages files.
+     * 
+     * @param locale name
+     * @return the locale display name as defined in the current Locale or the 
original string if not present
+     */
+    public static String getLocaleString(String locale){
+        // All keys in messages.properties are lowercase (historical reasons?)
+        String resKey = locale.toLowerCase(java.util.Locale.ENGLISH);
+        try {
+            return resources.getString(resKey);
+        } catch (MissingResourceException e) {
+        }
+        return locale;
+    }
+    /**
      * This gets the currently defined appProperties. It can only be called
      * after the [EMAIL PROTECTED] #getProperties(String)} method is called.
      *



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to