1// © 2016 and later: Unicode, Inc. and others. 2// License & terms of use: http://www.unicode.org/copyright.html#License 3/* 4 ******************************************************************************* 5 * Copyright (C) 2008-2012, International Business Machines Corporation and * 6 * others. All Rights Reserved. * 7 ******************************************************************************* 8 */ 9package com.ibm.icu.impl.javaspi.util; 10 11import java.util.Locale; 12import java.util.spi.LocaleNameProvider; 13 14import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider; 15import com.ibm.icu.impl.locale.AsciiUtil; 16import com.ibm.icu.text.LocaleDisplayNames; 17 18public class LocaleNameProviderICU extends LocaleNameProvider { 19 20 @Override 21 public String getDisplayCountry(String countryCode, Locale locale) { 22 countryCode = AsciiUtil.toUpperString(countryCode); 23 String disp = LocaleDisplayNames.getInstance(ICULocaleServiceProvider.toULocaleNoSpecialVariant(locale)) 24 .regionDisplayName(countryCode); 25 if (disp == null || disp.length() == 0 || disp.equals(countryCode)) { 26 return null; 27 } 28 return disp; 29 } 30 31 @Override 32 public String getDisplayLanguage(String languageCode, Locale locale) { 33 languageCode = AsciiUtil.toLowerString(languageCode); 34 String disp = LocaleDisplayNames.getInstance(ICULocaleServiceProvider.toULocaleNoSpecialVariant(locale)) 35 .languageDisplayName(languageCode); 36 if (disp == null || disp.length() == 0 || disp.equals(languageCode)) { 37 return null; 38 } 39 return disp; 40 } 41 42 // Not available in Java 6 43 // @Override 44 public String getDisplayScript(String scriptCode, Locale locale) { 45 scriptCode = AsciiUtil.toTitleString(scriptCode); 46 String disp = LocaleDisplayNames.getInstance(ICULocaleServiceProvider.toULocaleNoSpecialVariant(locale)) 47 .scriptDisplayName(scriptCode); 48 if (disp == null || disp.length() == 0 || disp.equals(scriptCode)) { 49 return null; 50 } 51 return disp; 52 } 53 54 @Override 55 public String getDisplayVariant(String variant, Locale locale) { 56 variant = AsciiUtil.toUpperString(variant); 57 String disp = LocaleDisplayNames.getInstance(ICULocaleServiceProvider.toULocaleNoSpecialVariant(locale)) 58 .variantDisplayName(variant); 59 if (disp == null || disp.length() == 0 || disp.equals(variant)) { 60 return null; 61 } 62 return disp; 63 } 64 65 @Override 66 public Locale[] getAvailableLocales() { 67 return ICULocaleServiceProvider.getAvailableLocales(); 68 } 69} 70