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