150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/* 250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho****************************************************************************** 3fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* Copyright (C) 2010-2014, International Business Machines Corporation and 4103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* others. All Rights Reserved. 550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho****************************************************************************** 650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho*/ 750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#ifndef LOCDSPNM_H 950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#define LOCDSPNM_H 1050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/utypes.h" 1250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 1450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \file 1550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \brief C++ API: Provides display names of Locale and its components. 1650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 1750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_FORMATTING 1950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/locid.h" 2150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/uscript.h" 2250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/uldnames.h" 2354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include "unicode/udisplaycontext.h" 2450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_BEGIN 2650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 2850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns display names of Locales and components of Locales. For 2950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * more information on language, script, region, variant, key, and 3050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * values, see Locale. 3127f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 3250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 3350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoclass U_I18N_API LocaleDisplayNames : public UObject { 3450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehopublic: 3550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 3650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Destructor. 3727f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 3850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 3950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual ~LocaleDisplayNames(); 4050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 4150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 4250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Convenience overload of 4350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * {@link #createInstance(const Locale& locale, UDialectHandling dialectHandling)} 4450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * that specifies STANDARD dialect handling. 4550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param locale the display locale 4650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return a LocaleDisplayNames instance 4727f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 4850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 4950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho static LocaleDisplayNames* U_EXPORT2 createInstance(const Locale& locale); 5050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 5150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 5250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns an instance of LocaleDisplayNames that returns names 5350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * formatted for the provided locale, using the provided 5450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * dialectHandling. 5550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 5650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param locale the display locale 5750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param dialectHandling how to select names for locales 5850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return a LocaleDisplayNames instance 5927f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 6050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 6150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho static LocaleDisplayNames* U_EXPORT2 createInstance(const Locale& locale, 6254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UDialectHandling dialectHandling); 6354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 6454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /** 6554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Returns an instance of LocaleDisplayNames that returns names formatted 6654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * for the provided locale, using the provided UDisplayContext settings. 6754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * 6854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param locale the display locale 6954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param contexts List of one or more context settings (e.g. for dialect 7054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * handling, capitalization, etc. 7154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param length Number of items in the contexts list 7254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @return a LocaleDisplayNames instance 73fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 7454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 7554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius static LocaleDisplayNames* U_EXPORT2 createInstance(const Locale& locale, 7654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UDisplayContext *contexts, int32_t length); 7750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 7850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // getters for state 7950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 8050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns the locale used to determine the display names. This is 81b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * not necessarily the same locale passed to {@link #createInstance}. 8250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the display locale 8327f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 8450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 8550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual const Locale& getLocale() const = 0; 8650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 8750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 8850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns the dialect handling used in the display names. 8950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the dialect handling enum 9027f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 9150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 9250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UDialectHandling getDialectHandling() const = 0; 9350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 9454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /** 9554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Returns the UDisplayContext value for the specified UDisplayContextType. 9654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param type the UDisplayContextType whose value to return 9754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @return the UDisplayContext for the specified type. 98fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 9954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 10054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius virtual UDisplayContext getContext(UDisplayContextType type) const = 0; 10154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 10250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // names for entire locales 10350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 10450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns the display name of the provided locale. 10550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param locale the locale whose display name to return 10650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param result receives the locale's display name 10750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the display name of the provided locale 10827f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 10950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 11050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& localeDisplayName(const Locale& locale, 11154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString& result) const = 0; 11250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 11350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 11450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns the display name of the provided locale id. 11550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param localeId the id of the locale whose display name to return 11650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param result receives the locale's display name 11750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the display name of the provided locale 11827f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 11950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 12050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& localeDisplayName(const char* localeId, 12154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString& result) const = 0; 12250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 12350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // names for components of a locale id 12450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 12550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns the display name of the provided language code. 12650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param lang the language code 12750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param result receives the language code's display name 12850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the display name of the provided language code 12927f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 13050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 13150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& languageDisplayName(const char* lang, 13254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString& result) const = 0; 13350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 13450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 13550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns the display name of the provided script code. 13650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param script the script code 13750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param result receives the script code's display name 13850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the display name of the provided script code 13927f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 14050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 14150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& scriptDisplayName(const char* script, 14254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString& result) const = 0; 14350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 14450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 14550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns the display name of the provided script code. 14650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param scriptCode the script code number 14750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param result receives the script code's display name 14850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the display name of the provided script code 14927f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 15050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 15150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& scriptDisplayName(UScriptCode scriptCode, 15254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString& result) const = 0; 15350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 15450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 15550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns the display name of the provided region code. 15650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param region the region code 15750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param result receives the region code's display name 15850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the display name of the provided region code 15927f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 16050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 16150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& regionDisplayName(const char* region, 16254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString& result) const = 0; 16350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 16450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 16550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns the display name of the provided variant. 16650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param variant the variant string 16750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param result receives the variant's display name 16850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the display name of the provided variant 16927f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 17050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 17150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& variantDisplayName(const char* variant, 17254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString& result) const = 0; 17350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 17450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 17550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns the display name of the provided locale key. 17650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param key the locale key name 17750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param result receives the locale key's display name 17850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the display name of the provided locale key 17927f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 18050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 18150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& keyDisplayName(const char* key, 18254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString& result) const = 0; 18350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 18450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 18550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Returns the display name of the provided value (used with the provided key). 18650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param key the locale key name 18750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param value the locale key's value 18850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param result receives the value's display name 18950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the display name of the provided value 19027f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 19150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 19250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& keyValueDisplayName(const char* key, const char* value, 19354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString& result) const = 0; 19450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho}; 19550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 19650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoinline LocaleDisplayNames* LocaleDisplayNames::createInstance(const Locale& locale) { 19750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return LocaleDisplayNames::createInstance(locale, ULDN_STANDARD_NAMES); 19850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 19950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 20050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_END 20150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 20250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif 20350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 20450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif 205