Maybe that should be added to the comments in Util since it is not apparent.

Caleb

Vincent Massol wrote:
> IMO we'll need to find a better place than Util for this since Util is meant 
> to be deprecated and we should slim it down instead.
> 
> Thanks
> -Vincent
> 
> On Aug 18, 2010, at 11:44 PM, abusenius (SVN) wrote:
> 
>> Author: abusenius
>> Date: 2010-08-18 23:44:07 +0200 (Wed, 18 Aug 2010)
>> New Revision: 30697
>>
>> Modified:
>>   platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/util/Util.java
>> Log:
>> Added Util.normalizeLanguage(String)
>>
>> Modified: 
>> platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/util/Util.java
>> ===================================================================
>> --- 
>> platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/util/Util.java    
>>     2010-08-18 19:11:05 UTC (rev 30696)
>> +++ 
>> platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/util/Util.java    
>>     2010-08-18 21:44:07 UTC (rev 30697)
>> @@ -37,7 +37,9 @@
>> import java.util.HashSet;
>> import java.util.Hashtable;
>> import java.util.List;
>> +import java.util.Locale;
>> import java.util.Map;
>> +import java.util.MissingResourceException;
>> import java.util.Set;
>> import java.util.Vector;
>>
>> @@ -880,4 +882,54 @@
>>
>>         return 
>> Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);
>>     }
>> +
>> +    /**
>> +     * Normalize the given language code. Converts the given language code 
>> to lower case and checks its validity (i.e.
>> +     * whether it is an ISO 639 language code or the string "default").
>> +     * <p><pre>
>> +     * Util.normalizeLanguage(null)      = null
>> +     * Util.normalizeLanguage("")        = ""
>> +     * Util.normalizeLanguage("  ")      = ""
>> +     * Util.normalizeLanguage("default") = "default"
>> +     * Util.normalizeLanguage("DeFault") = "default"
>> +     * Util.normalizeLanguage("invalid") = "default"
>> +     * Util.normalizeLanguage("en")      = "en"
>> +     * Util.normalizeLanguage("DE_at")   = "de_AT"
>> +     * </pre></p>
>> +     * 
>> +     * @param languageCode the language code to normalize
>> +     * @return normalized language code or the string "default" if the code 
>> is invalid
>> +     */
>> +    public static String normalizeLanguage(String languageCode)
>> +    {
>> +        if (languageCode == null) {
>> +            return null;
>> +        }
>> +        if (StringUtils.isBlank(languageCode)) {
>> +            return "";
>> +        }
>> +        // handle language_COUNTRY case
>> +        final String separator = "_";
>> +        String[] parts = languageCode.toLowerCase().split(separator);
>> +        String result = parts[0];
>> +        if (parts.length > 1) {
>> +            parts[1] = parts[1].toUpperCase();
>> +            // NOTE cannot use Locale#toString(), because it would change 
>> some language codes
>> +            result = parts[0] + separator + parts[1];
>> +        }
>> +        // handle the "default" case
>> +        final String defaultLanguage = "default";
>> +        if (defaultLanguage.equals(result)) {
>> +            return defaultLanguage;
>> +        }
>> +        try {
>> +            Locale l = new Locale(parts[0], parts.length > 1 ? parts[1] : 
>> "");
>> +            // Will throw an exception if the language code is not valid
>> +            l.getISO3Language();
>> +            return result;
>> +        } catch (MissingResourceException ex) {
>> +            LOG.warn("Invalid language: " + languageCode);
>> +        }
>> +        return defaultLanguage;
>> +    }
>> }
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
> 

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to