+1 We should write something about it.

Alex


On 09/01/2010 01:33 PM, Caleb James DeLisle wrote:
> 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
> 
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to