1 /* 2 ****************************************************************************** 3 * Copyright (C) 2010, International Business Machines Corporation and * 4 * others. All Rights Reserved. * 5 ****************************************************************************** 6 */ 7 8 #ifndef LOCDSPNM_H 9 #define LOCDSPNM_H 10 11 #include "unicode/utypes.h" 12 13 /** 14 * \file 15 * \brief C++ API: Provides display names of Locale and its components. 16 */ 17 18 #if !UCONFIG_NO_FORMATTING 19 20 #include "unicode/locid.h" 21 #include "unicode/uscript.h" 22 #include "unicode/uldnames.h" 23 24 U_NAMESPACE_BEGIN 25 26 /** 27 * Returns display names of Locales and components of Locales. For 28 * more information on language, script, region, variant, key, and 29 * values, see Locale. 30 * @stable ICU 4.4 31 */ 32 class U_I18N_API LocaleDisplayNames : public UObject { 33 public: 34 /** 35 * Destructor. 36 * @stable ICU 4.4 37 */ 38 virtual ~LocaleDisplayNames(); 39 40 /** 41 * Convenience overload of 42 * {@link #createInstance(const Locale& locale, UDialectHandling dialectHandling)} 43 * that specifies STANDARD dialect handling. 44 * @param locale the display locale 45 * @return a LocaleDisplayNames instance 46 * @stable ICU 4.4 47 */ 48 static LocaleDisplayNames* U_EXPORT2 createInstance(const Locale& locale); 49 50 /** 51 * Returns an instance of LocaleDisplayNames that returns names 52 * formatted for the provided locale, using the provided 53 * dialectHandling. 54 * 55 * @param locale the display locale 56 * @param dialectHandling how to select names for locales 57 * @return a LocaleDisplayNames instance 58 * @stable ICU 4.4 59 */ 60 static LocaleDisplayNames* U_EXPORT2 createInstance(const Locale& locale, 61 UDialectHandling dialectHandling); 62 63 // getters for state 64 /** 65 * Returns the locale used to determine the display names. This is 66 * not necessarily the same locale passed to {@link #getInstance}. 67 * @return the display locale 68 * @stable ICU 4.4 69 */ 70 virtual const Locale& getLocale() const = 0; 71 72 /** 73 * Returns the dialect handling used in the display names. 74 * @return the dialect handling enum 75 * @stable ICU 4.4 76 */ 77 virtual UDialectHandling getDialectHandling() const = 0; 78 79 // names for entire locales 80 /** 81 * Returns the display name of the provided locale. 82 * @param locale the locale whose display name to return 83 * @param result receives the locale's display name 84 * @return the display name of the provided locale 85 * @stable ICU 4.4 86 */ 87 virtual UnicodeString& localeDisplayName(const Locale& locale, 88 UnicodeString& result) const = 0; 89 90 /** 91 * Returns the display name of the provided locale id. 92 * @param localeId the id of the locale whose display name to return 93 * @param result receives the locale's display name 94 * @return the display name of the provided locale 95 * @stable ICU 4.4 96 */ 97 virtual UnicodeString& localeDisplayName(const char* localeId, 98 UnicodeString& result) const = 0; 99 100 // names for components of a locale id 101 /** 102 * Returns the display name of the provided language code. 103 * @param lang the language code 104 * @param result receives the language code's display name 105 * @return the display name of the provided language code 106 * @stable ICU 4.4 107 */ 108 virtual UnicodeString& languageDisplayName(const char* lang, 109 UnicodeString& result) const = 0; 110 111 /** 112 * Returns the display name of the provided script code. 113 * @param script the script code 114 * @param result receives the script code's display name 115 * @return the display name of the provided script code 116 * @stable ICU 4.4 117 */ 118 virtual UnicodeString& scriptDisplayName(const char* script, 119 UnicodeString& result) const = 0; 120 121 /** 122 * Returns the display name of the provided script code. 123 * @param scriptCode the script code number 124 * @param result receives the script code's display name 125 * @return the display name of the provided script code 126 * @stable ICU 4.4 127 */ 128 virtual UnicodeString& scriptDisplayName(UScriptCode scriptCode, 129 UnicodeString& result) const = 0; 130 131 /** 132 * Returns the display name of the provided region code. 133 * @param region the region code 134 * @param result receives the region code's display name 135 * @return the display name of the provided region code 136 * @stable ICU 4.4 137 */ 138 virtual UnicodeString& regionDisplayName(const char* region, 139 UnicodeString& result) const = 0; 140 141 /** 142 * Returns the display name of the provided variant. 143 * @param variant the variant string 144 * @param result receives the variant's display name 145 * @return the display name of the provided variant 146 * @stable ICU 4.4 147 */ 148 virtual UnicodeString& variantDisplayName(const char* variant, 149 UnicodeString& result) const = 0; 150 151 /** 152 * Returns the display name of the provided locale key. 153 * @param key the locale key name 154 * @param result receives the locale key's display name 155 * @return the display name of the provided locale key 156 * @stable ICU 4.4 157 */ 158 virtual UnicodeString& keyDisplayName(const char* key, 159 UnicodeString& result) const = 0; 160 161 /** 162 * Returns the display name of the provided value (used with the provided key). 163 * @param key the locale key name 164 * @param value the locale key's value 165 * @param result receives the value's display name 166 * @return the display name of the provided value 167 * @stable ICU 4.4 168 */ 169 virtual UnicodeString& keyValueDisplayName(const char* key, const char* value, 170 UnicodeString& result) const = 0; 171 172 private: 173 // No ICU "poor man's RTTI" for this class nor its subclasses. 174 virtual UClassID getDynamicClassID() const; 175 }; 176 177 inline LocaleDisplayNames::~LocaleDisplayNames() { 178 } 179 180 inline LocaleDisplayNames* LocaleDisplayNames::createInstance(const Locale& locale) { 181 return LocaleDisplayNames::createInstance(locale, ULDN_STANDARD_NAMES); 182 } 183 184 U_NAMESPACE_END 185 186 #endif 187 188 #endif 189