/*
* #%L
* Talend :: ESB :: Job :: API
* %%
* Copyright (C) 2011 - 2012 Talend Inc.
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
package routines.system;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
// ============================================================================
//
// Talend Community Edition
//
// Copyright (C) 2006-2011 Talend - www.talend.com
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// ============================================================================
public class LocaleProvider {
private static Map<String, Locale> cache;
public static void main(String[] args) {
System.out.println("FR => " + getLocale("FR")); //$NON-NLS-1$ //$NON-NLS-2$
System.out.println("fr => " + getLocale("fr")); //$NON-NLS-1$ //$NON-NLS-2$
System.out.println("tw => " + getLocale("tw")); //$NON-NLS-1$ //$NON-NLS-2$
System.out.println("TW => " + getLocale("TW")); //$NON-NLS-1$ //$NON-NLS-2$
System.out.println("zh => " + getLocale("zh")); //$NON-NLS-1$ //$NON-NLS-2$
System.out.println("ZH => " + getLocale("ZH")); //$NON-NLS-1$ //$NON-NLS-2$
}
public static Locale getLocale(String languageOrCountyCode) {
if (cache == null) {
initCache();
}
Locale locale = null;
if (languageOrCountyCode != null) {
locale = cache.get(languageOrCountyCode.toLowerCase());
}
if (locale == null) {
locale = Locale.ENGLISH;
}
return locale;
}
/**
* DOC amaumont Comment method "initCache".
*/
private static void initCache() {
cache = new HashMap<String, Locale>();
Locale[] availableLocales = Locale.getAvailableLocales();
for (int i = 0; i < availableLocales.length; i++) {
Locale locale = availableLocales[i];
String country = locale.getCountry();
String language = locale.getLanguage();
String key = null;
if (country.length() > 0) {
key = country;
} else if (language.length() > 0) {
key = language;
}
if (key != null) {
cache.put(key.toLowerCase(), locale);
}
}
}
}