Home | History | Annotate | Download | only in unicode
      1 /*
      2 ******************************************************************************
      3 * Copyright (C) 2010-2012, 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 #ifndef U_HIDE_DRAFT_API
     65     /**
     66      * Returns an instance of LocaleDisplayNames that returns names formatted
     67      * for the provided locale, using the provided UDisplayContext settings.
     68      *
     69      * @param locale the display locale
     70      * @param contexts List of one or more context settings (e.g. for dialect
     71      *               handling, capitalization, etc.
     72      * @param length Number of items in the contexts list
     73      * @return a LocaleDisplayNames instance
     74      * @draft ICU 51
     75      */
     76     static LocaleDisplayNames* U_EXPORT2 createInstance(const Locale& locale,
     77                             UDisplayContext *contexts, int32_t length);
     78 #endif  /* U_HIDE_DRAFT_API */
     79 
     80     // getters for state
     81     /**
     82      * Returns the locale used to determine the display names. This is
     83      * not necessarily the same locale passed to {@link #createInstance}.
     84      * @return the display locale
     85      * @stable ICU 4.4
     86      */
     87     virtual const Locale& getLocale() const = 0;
     88 
     89     /**
     90      * Returns the dialect handling used in the display names.
     91      * @return the dialect handling enum
     92      * @stable ICU 4.4
     93      */
     94     virtual UDialectHandling getDialectHandling() const = 0;
     95 
     96     /**
     97      * Returns the UDisplayContext value for the specified UDisplayContextType.
     98      * @param type the UDisplayContextType whose value to return
     99      * @return the UDisplayContext for the specified type.
    100      * @draft ICU 51
    101      */
    102     virtual UDisplayContext getContext(UDisplayContextType type) const = 0;
    103 
    104     // names for entire locales
    105     /**
    106      * Returns the display name of the provided locale.
    107      * @param locale the locale whose display name to return
    108      * @param result receives the locale's display name
    109      * @return the display name of the provided locale
    110      * @stable ICU 4.4
    111      */
    112     virtual UnicodeString& localeDisplayName(const Locale& locale,
    113                          UnicodeString& result) const = 0;
    114 
    115     /**
    116      * Returns the display name of the provided locale id.
    117      * @param localeId the id of the locale whose display name to return
    118      * @param result receives the locale's display name
    119      * @return the display name of the provided locale
    120      * @stable ICU 4.4
    121      */
    122     virtual UnicodeString& localeDisplayName(const char* localeId,
    123                          UnicodeString& result) const = 0;
    124 
    125     // names for components of a locale id
    126     /**
    127      * Returns the display name of the provided language code.
    128      * @param lang the language code
    129      * @param result receives the language code's display name
    130      * @return the display name of the provided language code
    131      * @stable ICU 4.4
    132      */
    133     virtual UnicodeString& languageDisplayName(const char* lang,
    134                            UnicodeString& result) const = 0;
    135 
    136     /**
    137      * Returns the display name of the provided script code.
    138      * @param script the script code
    139      * @param result receives the script code's display name
    140      * @return the display name of the provided script code
    141      * @stable ICU 4.4
    142      */
    143     virtual UnicodeString& scriptDisplayName(const char* script,
    144                          UnicodeString& result) const = 0;
    145 
    146     /**
    147      * Returns the display name of the provided script code.
    148      * @param scriptCode the script code number
    149      * @param result receives the script code's display name
    150      * @return the display name of the provided script code
    151      * @stable ICU 4.4
    152      */
    153     virtual UnicodeString& scriptDisplayName(UScriptCode scriptCode,
    154                          UnicodeString& result) const = 0;
    155 
    156     /**
    157      * Returns the display name of the provided region code.
    158      * @param region the region code
    159      * @param result receives the region code's display name
    160      * @return the display name of the provided region code
    161      * @stable ICU 4.4
    162      */
    163     virtual UnicodeString& regionDisplayName(const char* region,
    164                          UnicodeString& result) const = 0;
    165 
    166     /**
    167      * Returns the display name of the provided variant.
    168      * @param variant the variant string
    169      * @param result receives the variant's display name
    170      * @return the display name of the provided variant
    171      * @stable ICU 4.4
    172      */
    173     virtual UnicodeString& variantDisplayName(const char* variant,
    174                           UnicodeString& result) const = 0;
    175 
    176     /**
    177      * Returns the display name of the provided locale key.
    178      * @param key the locale key name
    179      * @param result receives the locale key's display name
    180      * @return the display name of the provided locale key
    181      * @stable ICU 4.4
    182      */
    183     virtual UnicodeString& keyDisplayName(const char* key,
    184                       UnicodeString& result) const = 0;
    185 
    186     /**
    187      * Returns the display name of the provided value (used with the provided key).
    188      * @param key the locale key name
    189      * @param value the locale key's value
    190      * @param result receives the value's display name
    191      * @return the display name of the provided value
    192      * @stable ICU 4.4
    193      */
    194     virtual UnicodeString& keyValueDisplayName(const char* key, const char* value,
    195                            UnicodeString& result) const = 0;
    196 };
    197 
    198 inline LocaleDisplayNames* LocaleDisplayNames::createInstance(const Locale& locale) {
    199   return LocaleDisplayNames::createInstance(locale, ULDN_STANDARD_NAMES);
    200 }
    201 
    202 U_NAMESPACE_END
    203 
    204 #endif
    205 
    206 #endif
    207