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