• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 *******************************************************************************
3 *   Copyright (C) 2010, International Business Machines Corporation and       *
4 *   others.  All Rights Reserved.                                             *
5 *******************************************************************************
6 */
7 
8 #ifndef __ULDNAMES_H__
9 #define __ULDNAMES_H__
10 
11 /**
12  * \file
13  * \brief C++ API: Provides display names of Locale ids and their components.
14  */
15 
16 #include "unicode/utypes.h"
17 #include "unicode/localpointer.h"
18 #include "unicode/uscript.h"
19 
20 /**
21  * Enum used in LocaleDisplayNames::createInstance.
22  * @stable ICU 4.4
23  */
24 typedef enum {
25     /**
26      * Use standard names when generating a locale name,
27      * e.g. en_GB displays as 'English (United Kingdom)'.
28      * @stable ICU 4.4
29      */
30     ULDN_STANDARD_NAMES = 0,
31     /**
32      * Use dialect names, when generating a locale name,
33      * e.g. en_GB displays as 'British English'.
34      * @stable ICU 4.4
35      */
36     ULDN_DIALECT_NAMES
37 } UDialectHandling;
38 
39 /**
40  * Opaque C service object type for the locale display names API
41  * @stable ICU 4.4
42  */
43 struct ULocaleDisplayNames;
44 
45 /**
46  * C typedef for struct ULocaleDisplayNames.
47  * @stable ICU 4.4
48  */
49 typedef struct ULocaleDisplayNames ULocaleDisplayNames;
50 
51 #if !UCONFIG_NO_FORMATTING
52 
53 /**
54  * Returns an instance of LocaleDisplayNames that returns names
55  * formatted for the provided locale, using the provided
56  * dialectHandling.  The usual value for dialectHandling is
57  * ULOC_STANDARD_NAMES.
58  *
59  * @param locale the display locale
60  * @param dialectHandling how to select names for locales
61  * @return a ULocaleDisplayNames instance
62  * @param pErrorCode the status code
63  * @stable ICU 4.4
64  */
65 U_STABLE ULocaleDisplayNames * U_EXPORT2
66 uldn_open(const char * locale,
67           UDialectHandling dialectHandling,
68           UErrorCode *pErrorCode);
69 
70 /**
71  * Closes a ULocaleDisplayNames instance obtained from uldn_open().
72  * @param ldn the ULocaleDisplayNames instance to be closed
73  * @stable ICU 4.4
74  */
75 U_STABLE void U_EXPORT2
76 uldn_close(ULocaleDisplayNames *ldn);
77 
78 #if U_SHOW_CPLUSPLUS_API
79 
80 U_NAMESPACE_BEGIN
81 
82 /**
83  * \class LocalULocaleDisplayNamesPointer
84  * "Smart pointer" class, closes a ULocaleDisplayNames via uldn_close().
85  * For most methods see the LocalPointerBase base class.
86  *
87  * @see LocalPointerBase
88  * @see LocalPointer
89  * @stable ICU 4.4
90  */
91 U_DEFINE_LOCAL_OPEN_POINTER(LocalULocaleDisplayNamesPointer, ULocaleDisplayNames, uldn_close);
92 
93 U_NAMESPACE_END
94 
95 #endif
96 
97 /* getters for state */
98 
99 /**
100  * Returns the locale used to determine the display names. This is
101  * not necessarily the same locale passed to {@link #uldn_open}.
102  * @param ldn the LocaleDisplayNames instance
103  * @return the display locale
104  * @stable ICU 4.4
105  */
106 U_STABLE const char * U_EXPORT2
107 uldn_getLocale(const ULocaleDisplayNames *ldn);
108 
109 /**
110  * Returns the dialect handling used in the display names.
111  * @param ldn the LocaleDisplayNames instance
112  * @return the dialect handling enum
113  * @stable ICU 4.4
114  */
115 U_STABLE UDialectHandling U_EXPORT2
116 uldn_getDialectHandling(const ULocaleDisplayNames *ldn);
117 
118 /* names for entire locales */
119 
120 /**
121  * Returns the display name of the provided locale.
122  * @param ldn the LocaleDisplayNames instance
123  * @param locale the locale whose display name to return
124  * @param result receives the display name
125  * @param maxResultSize the size of the result buffer
126  * @param pErrorCode the status code
127  * @return the actual buffer size needed for the display name.  If it's
128  * greater than maxResultSize, the returned name will be truncated.
129  * @stable ICU 4.4
130  */
131 U_STABLE int32_t U_EXPORT2
132 uldn_localeDisplayName(const ULocaleDisplayNames *ldn,
133                        const char *locale,
134                        UChar *result,
135                        int32_t maxResultSize,
136                        UErrorCode *pErrorCode);
137 
138 /* names for components of a locale */
139 
140 /**
141  * Returns the display name of the provided language code.
142  * @param ldn the LocaleDisplayNames instance
143  * @param lang the language code whose display name to return
144  * @param result receives the display name
145  * @param maxResultSize the size of the result buffer
146  * @param pErrorCode the status code
147  * @return the actual buffer size needed for the display name.  If it's
148  * greater than maxResultSize, the returned name will be truncated.
149  * @stable ICU 4.4
150  */
151 U_STABLE int32_t U_EXPORT2
152 uldn_languageDisplayName(const ULocaleDisplayNames *ldn,
153                          const char *lang,
154                          UChar *result,
155                          int32_t maxResultSize,
156                          UErrorCode *pErrorCode);
157 
158 /**
159  * Returns the display name of the provided script.
160  * @param ldn the LocaleDisplayNames instance
161  * @param script the script whose display name to return
162  * @param result receives the display name
163  * @param maxResultSize the size of the result buffer
164  * @param pErrorCode the status code
165  * @return the actual buffer size needed for the display name.  If it's
166  * greater than maxResultSize, the returned name will be truncated.
167  * @stable ICU 4.4
168  */
169 U_STABLE int32_t U_EXPORT2
170 uldn_scriptDisplayName(const ULocaleDisplayNames *ldn,
171                        const char *script,
172                        UChar *result,
173                        int32_t maxResultSize,
174                        UErrorCode *pErrorCode);
175 
176 /**
177  * Returns the display name of the provided script code.
178  * @param ldn the LocaleDisplayNames instance
179  * @param scriptCode the script code whose display name to return
180  * @param result receives the display name
181  * @param maxResultSize the size of the result buffer
182  * @param pErrorCode the status code
183  * @return the actual buffer size needed for the display name.  If it's
184  * greater than maxResultSize, the returned name will be truncated.
185  * @stable ICU 4.4
186  */
187 U_STABLE int32_t U_EXPORT2
188 uldn_scriptCodeDisplayName(const ULocaleDisplayNames *ldn,
189                            UScriptCode scriptCode,
190                            UChar *result,
191                            int32_t maxResultSize,
192                            UErrorCode *pErrorCode);
193 
194 /**
195  * Returns the display name of the provided region code.
196  * @param ldn the LocaleDisplayNames instance
197  * @param region the region code whose display name to return
198  * @param result receives the display name
199  * @param maxResultSize the size of the result buffer
200  * @param pErrorCode the status code
201  * @return the actual buffer size needed for the display name.  If it's
202  * greater than maxResultSize, the returned name will be truncated.
203  * @stable ICU 4.4
204  */
205 U_STABLE int32_t U_EXPORT2
206 uldn_regionDisplayName(const ULocaleDisplayNames *ldn,
207                        const char *region,
208                        UChar *result,
209                        int32_t maxResultSize,
210                        UErrorCode *pErrorCode);
211 
212 /**
213  * Returns the display name of the provided variant
214  * @param ldn the LocaleDisplayNames instance
215  * @param variant the variant whose display name to return
216  * @param result receives the display name
217  * @param maxResultSize the size of the result buffer
218  * @param pErrorCode the status code
219  * @return the actual buffer size needed for the display name.  If it's
220  * greater than maxResultSize, the returned name will be truncated.
221  * @stable ICU 4.4
222  */
223 U_STABLE int32_t U_EXPORT2
224 uldn_variantDisplayName(const ULocaleDisplayNames *ldn,
225                         const char *variant,
226                         UChar *result,
227                         int32_t maxResultSize,
228                         UErrorCode *pErrorCode);
229 
230 /**
231  * Returns the display name of the provided locale key
232  * @param ldn the LocaleDisplayNames instance
233  * @param key the locale key whose display name to return
234  * @param result receives the display name
235  * @param maxResultSize the size of the result buffer
236  * @param pErrorCode the status code
237  * @return the actual buffer size needed for the display name.  If it's
238  * greater than maxResultSize, the returned name will be truncated.
239  * @stable ICU 4.4
240  */
241 U_STABLE int32_t U_EXPORT2
242 uldn_keyDisplayName(const ULocaleDisplayNames *ldn,
243                     const char *key,
244                     UChar *result,
245                     int32_t maxResultSize,
246                     UErrorCode *pErrorCode);
247 
248 /**
249  * Returns the display name of the provided value (used with the provided key).
250  * @param ldn the LocaleDisplayNames instance
251  * @param key the locale key
252  * @param value the locale key's value
253  * @param result receives the display name
254  * @param maxResultSize the size of the result buffer
255  * @param pErrorCode the status code
256  * @return the actual buffer size needed for the display name.  If it's
257  * greater than maxResultSize, the returned name will be truncated.
258  * @stable ICU 4.4
259  */
260 U_STABLE int32_t U_EXPORT2
261 uldn_keyValueDisplayName(const ULocaleDisplayNames *ldn,
262                          const char *key,
263                          const char *value,
264                          UChar *result,
265                          int32_t maxResultSize,
266                          UErrorCode *pErrorCode);
267 
268 
269 #endif  /* !UCONFIG_NO_FORMATTING */
270 #endif  /* __ULDNAMES_H__ */
271