com.ibm.icu.impl.javaspi.util.LocaleNameProviderICU Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of icu4j-localespi Show documentation
Show all versions of icu4j-localespi Show documentation
icu4j-localespi is a supplemental library for icu4j, implementing Java Locale SPI.
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
/*
*******************************************************************************
* Copyright (C) 2008-2012, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.impl.javaspi.util;
import java.util.Locale;
import java.util.spi.LocaleNameProvider;
import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
import com.ibm.icu.impl.locale.AsciiUtil;
import com.ibm.icu.text.LocaleDisplayNames;
public class LocaleNameProviderICU extends LocaleNameProvider {
@Override
public String getDisplayCountry(String countryCode, Locale locale) {
countryCode = AsciiUtil.toUpperString(countryCode);
String disp = LocaleDisplayNames.getInstance(ICULocaleServiceProvider.toULocaleNoSpecialVariant(locale))
.regionDisplayName(countryCode);
if (disp == null || disp.length() == 0 || disp.equals(countryCode)) {
return null;
}
return disp;
}
@Override
public String getDisplayLanguage(String languageCode, Locale locale) {
languageCode = AsciiUtil.toLowerString(languageCode);
String disp = LocaleDisplayNames.getInstance(ICULocaleServiceProvider.toULocaleNoSpecialVariant(locale))
.languageDisplayName(languageCode);
if (disp == null || disp.length() == 0 || disp.equals(languageCode)) {
return null;
}
return disp;
}
// Not available in Java 6
// @Override
public String getDisplayScript(String scriptCode, Locale locale) {
scriptCode = AsciiUtil.toTitleString(scriptCode);
String disp = LocaleDisplayNames.getInstance(ICULocaleServiceProvider.toULocaleNoSpecialVariant(locale))
.scriptDisplayName(scriptCode);
if (disp == null || disp.length() == 0 || disp.equals(scriptCode)) {
return null;
}
return disp;
}
@Override
public String getDisplayVariant(String variant, Locale locale) {
variant = AsciiUtil.toUpperString(variant);
String disp = LocaleDisplayNames.getInstance(ICULocaleServiceProvider.toULocaleNoSpecialVariant(locale))
.variantDisplayName(variant);
if (disp == null || disp.length() == 0 || disp.equals(variant)) {
return null;
}
return disp;
}
@Override
public Locale[] getAvailableLocales() {
return ICULocaleServiceProvider.getAvailableLocales();
}
}