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