Line data Source code
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 0 : 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 0 : inline LocaleDisplayNames* LocaleDisplayNames::createInstance(const Locale& locale) {
200 0 : return LocaleDisplayNames::createInstance(locale, ULDN_STANDARD_NAMES);
201 : }
202 :
203 : U_NAMESPACE_END
204 :
205 : #endif
206 :
207 : #endif
|