Merge "Modify DataSet::CloneN to deep copy" into tizen_2.1
[platform/framework/native/appfw.git] / inc / FLclLocale.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file        FLclLocale.h
20  * @brief       This is the header file for the %Locale class.
21  *
22  * This header file contains the declarations of the %Locale class.
23  */
24 #ifndef _FLCL_LOCALE_H_
25 #define _FLCL_LOCALE_H_
26
27 #include <FBaseObject.h>
28 #include <FBaseString.h>
29
30 namespace Tizen { namespace Locales
31 {
32
33 /**
34  * @enum        CalendarType
35  *
36  * Defines the calendar type.
37  *
38  * @since               2.0
39  */
40 enum CalendarType
41 {
42         CALENDAR_GREGORIAN,             /**< The calendar type: Gregorian calendar (default) */
43         CALENDAR_BUDDHIST,              /**< The calendar type: Buddhist calendar (same as Gregorian except for the year)  */
44         CALENDAR_CHINESE,               /**< The calendar type: Traditional Chinese calendar  */
45         CALENDAR_COPTIC,                /**< The calendar type: Coptic calendar  */
46         CALENDAR_ETHIOPIC_AMETE_ALEM,   /**< The calendar type: Ethiopic calendar, Amete Alem (epoch approx. 5493 B.C.E.)  */
47         CALENDAR_ETHIOPIC,              /**< The calendar type: Ethiopic calendar, Amete Mihret (epoch approx. 8 C.E.)  */
48         CALENDAR_HEBREW,                /**< The calendar type: TraditionalHebrew calendar  */
49         CALENDAR_INDIAN,                /**< The calendar type: Indian calendar  */
50         CALENDAR_ISLAMIC,               /**< The calendar type: Astronomical Arabic calendar  */
51         CALENDAR_ISLAMIC_CIVIL,         /**< The calendar type: Civil (algorithmic) Arabic calendar  */
52         CALENDAR_JAPANESE,              /**< The calendar type: Japanese Imperial calendar (same as Gregorian except for the year, with one era for each Emperor)  */
53         CALENDAR_PERSIAN,               /**< The calendar type: Persian calendar  */
54         CALENDAR_ROC,                   /**< The calendar type: Republic of China calendar  */
55         CALENDAR_TAIWAN,                /**< The calendar type: Taiwan calendar  */
56         CALENDAR_ISO8601,               /**< The calendar type: ISO8601 calendar  */
57         CALENDAR_COUNT,
58 };
59
60 /**
61  * @enum        LanguageCode
62  *
63  * Defines the ISO 639-2 language code. @n
64  * The LanguageCode enumerator represents the ISO 639-2 language codes. @n
65  * The specific LanguageCode represents the language code with the locale's ISO-15924 abbreviation script code. @n
66  * The supported ISO-15924 script codes are Arabic, Cyrillic, Latin, Hans, Hant and Gurmukhi.
67  *
68  * @since               2.0
69  */
70 enum LanguageCode
71 {
72         LANGUAGE_INVALID = -1, /**< An invalid language code */
73         LANGUAGE_AAR, /**< Afar */
74         LANGUAGE_ABK, /**< Abkhazian */
75         LANGUAGE_ACE, /**< Achinese */
76         LANGUAGE_ACH, /**< Acoli */
77         LANGUAGE_ADA, /**< Adangme */
78         LANGUAGE_ADY, /**< Adyghe; Adygei */
79         LANGUAGE_AFA, /**< Afro-Asiatic languages */
80         LANGUAGE_AFH, /**< Afrihili */
81         LANGUAGE_AFR, /**< Afrikaans */
82         LANGUAGE_AIN, /**< Ainu */
83         LANGUAGE_AKA, /**< Akan */
84         LANGUAGE_AKK, /**< Akkadian */
85         LANGUAGE_SQI, /**< Albanian */
86         LANGUAGE_ALE, /**< Aleut */
87         LANGUAGE_ALG, /**< Algonquian languages */
88         LANGUAGE_ALT, /**< Southern Altai */
89         LANGUAGE_AMH, /**< Amharic */
90         LANGUAGE_ANG, /**< English, Old (ca.450-1100) */
91         LANGUAGE_ANP, /**< Angika */
92         LANGUAGE_APA, /**< Apache languages */
93         LANGUAGE_ARA, /**< Arabic */
94         LANGUAGE_ARC, /**< Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE) */
95         LANGUAGE_ARG, /**< Aragonese */
96         LANGUAGE_HYE, /**< Armenian */
97         LANGUAGE_ARN, /**< Mapudungun; Mapuche */
98         LANGUAGE_ARP, /**< Arapaho */
99         LANGUAGE_ART, /**< Artificial languages */
100         LANGUAGE_ARW, /**< Arawak */
101         LANGUAGE_ASM, /**< Assamese */
102         LANGUAGE_AST, /**< Asturian; Bable; Leonese; Asturleonese */
103         LANGUAGE_ATH, /**< Athapascan languages */
104         LANGUAGE_AUS, /**< Australian languages */
105         LANGUAGE_AVA, /**< Avaric */
106         LANGUAGE_AVE, /**< Avestan */
107         LANGUAGE_AWA, /**< Awadhi */
108         LANGUAGE_AYM, /**< Aymara */
109         LANGUAGE_AZE, /**< Azerbaijani */
110         LANGUAGE_AZE_ARAB, /**< Azerbaijani (Arabic) */
111         LANGUAGE_AZE_CYRL, /**< Azerbaijani (Cyrillic) */
112         LANGUAGE_AZE_LATIN, /**< Azerbaijani (Latin) */
113         LANGUAGE_BAD, /**< Banda languages */
114         LANGUAGE_BAI, /**< Bamileke languages */
115         LANGUAGE_BAK, /**< Bashkir */
116         LANGUAGE_BAL, /**< Baluchi */
117         LANGUAGE_BAM, /**< Bambara */
118         LANGUAGE_BAN, /**< Balinese */
119         LANGUAGE_EUS, /**< Basque */
120         LANGUAGE_BAS, /**< Basa */
121         LANGUAGE_BAT, /**< Baltic languages */
122         LANGUAGE_BEJ, /**< Beja; Bedawiyet */
123         LANGUAGE_BEL, /**< Belarusian */
124         LANGUAGE_BEM, /**< Bemba */
125         LANGUAGE_BEN, /**< Bengali */
126         LANGUAGE_BER, /**< Berber languages */
127         LANGUAGE_BHO, /**< Bhojpuri */
128         LANGUAGE_BIH, /**< Bihari */
129         LANGUAGE_BIK, /**< Bikol */
130         LANGUAGE_BIN, /**< Bini; Edo */
131         LANGUAGE_BIS, /**< Bislama */
132         LANGUAGE_BLA, /**< Siksika */
133         LANGUAGE_BNT, /**< Bantu (Other) */
134         LANGUAGE_BOS, /**< Bosnian */
135         LANGUAGE_BRA, /**< Braj */
136         LANGUAGE_BRE, /**< Breton */
137         LANGUAGE_BTK, /**< Batak languages */
138         LANGUAGE_BUA, /**< Buriat */
139         LANGUAGE_BUG, /**< Buginese */
140         LANGUAGE_BUL, /**< Bulgarian */
141         LANGUAGE_MYA, /**< Burmese */
142         LANGUAGE_BYN, /**< Blin; Bilin */
143         LANGUAGE_CAD, /**< Caddo */
144         LANGUAGE_CAI, /**< Central American Indian languages */
145         LANGUAGE_CAR, /**< Galibi Carib */
146         LANGUAGE_CAT, /**< Catalan; Valencian */
147         LANGUAGE_CAU, /**< Caucasian languages */
148         LANGUAGE_CEB, /**< Cebuano */
149         LANGUAGE_CEL, /**< Celtic languages */
150         LANGUAGE_CHA, /**< Chamorro */
151         LANGUAGE_CHB, /**< Chibcha */
152         LANGUAGE_CHE, /**< Chechen */
153         LANGUAGE_CHG, /**< Chagatai */
154         LANGUAGE_ZHO, /**< Chinese */
155         LANGUAGE_ZHO_HANS, /**< Chinese (Simplified)  */
156         LANGUAGE_ZHO_HANT, /**< Chinese (Traditional)  */
157         LANGUAGE_CHK, /**< Chuukese */
158         LANGUAGE_CHM, /**< Mari */
159         LANGUAGE_CHN, /**< Chinook jargon */
160         LANGUAGE_CHO, /**< Choctaw */
161         LANGUAGE_CHP, /**< Chipewyan; Dene Suline */
162         LANGUAGE_CHR, /**< Cherokee */
163         LANGUAGE_CHU, /**< Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic */
164         LANGUAGE_CHV, /**< Chuvash */
165         LANGUAGE_CHY, /**< Cheyenne */
166         LANGUAGE_CMC, /**< Chamic languages */
167         LANGUAGE_COP, /**< Coptic */
168         LANGUAGE_COR, /**< Cornish */
169         LANGUAGE_COS, /**< Corsican */
170         LANGUAGE_CPE, /**< Creoles and pidgins, English based */
171         LANGUAGE_CPF, /**< Creoles and pidgins, French-based  */
172         LANGUAGE_CPP, /**< Creoles and pidgins, Portuguese-based  */
173         LANGUAGE_CRE, /**< Cree */
174         LANGUAGE_CRH, /**< Crimean Tatar; Crimean Turkish */
175         LANGUAGE_CRP, /**< Creoles and pidgins  */
176         LANGUAGE_CSB, /**< Kashubian */
177         LANGUAGE_CUS, /**< Cushitic languages */
178         LANGUAGE_CES, /**< Czech */
179         LANGUAGE_DAK, /**< Dakota */
180         LANGUAGE_DAN, /**< Danish */
181         LANGUAGE_DAR, /**< Dargwa */
182         LANGUAGE_DAY, /**< Land Dayak languages */
183         LANGUAGE_DEL, /**< Delaware */
184         LANGUAGE_DEN, /**< Slave (Athapascan) */
185         LANGUAGE_DGR, /**< Dogrib */
186         LANGUAGE_DIN, /**< Dinka */
187         LANGUAGE_DIV, /**< Divehi; Dhivehi; Maldivian */
188         LANGUAGE_DOI, /**< Dogri */
189         LANGUAGE_DRA, /**< Dravidian languages */
190         LANGUAGE_DSB, /**< Lower Sorbian */
191         LANGUAGE_DUA, /**< Duala */
192         LANGUAGE_DUM, /**< Dutch, Middle (ca.1050-1350) */
193         LANGUAGE_NLD, /**< Dutch; Flemish */
194         LANGUAGE_DYU, /**< Dyula */
195         LANGUAGE_DZO, /**< Dzongkha */
196         LANGUAGE_EFI, /**< Efik */
197         LANGUAGE_EGY, /**< Egyptian (Ancient) */
198         LANGUAGE_EKA, /**< Ekajuk */
199         LANGUAGE_ELX, /**< Elamite */
200         LANGUAGE_ENG, /**< English */
201         LANGUAGE_ENM, /**< English, Middle (1100-1500) */
202         LANGUAGE_EPO, /**< Esperanto */
203         LANGUAGE_EST, /**< Estonian */
204         LANGUAGE_EWE, /**< Ewe */
205         LANGUAGE_EWO, /**< Ewondo */
206         LANGUAGE_FAN, /**< Fang */
207         LANGUAGE_FAO, /**< Faroese */
208         LANGUAGE_FAT, /**< Fanti */
209         LANGUAGE_FIJ, /**< Fijian */
210         LANGUAGE_FIL, /**< Filipino; Pilipino */
211         LANGUAGE_FIN, /**< Finnish */
212         LANGUAGE_FIU, /**< Finno-Ugrian languages */
213         LANGUAGE_FON, /**< Fon */
214         LANGUAGE_FRA, /**< French */
215         LANGUAGE_FRM, /**< French, Middle (ca.1400-1600) */
216         LANGUAGE_FRO, /**< French, Old (842-ca.1400) */
217         LANGUAGE_FRR, /**< Northern Frisian */
218         LANGUAGE_FRS, /**< Eastern Frisian */
219         LANGUAGE_FRY, /**< Western Frisian */
220         LANGUAGE_FUL, /**< Fulah */
221         LANGUAGE_FUR, /**< Friulian */
222         LANGUAGE_GAA, /**< Ga */
223         LANGUAGE_GAY, /**< Gayo */
224         LANGUAGE_GBA, /**< Gbaya */
225         LANGUAGE_GEM, /**< Germanic languages */
226         LANGUAGE_KAT, /**< Georgian */
227         LANGUAGE_DEU, /**< German */
228         LANGUAGE_GEZ, /**< Geez */
229         LANGUAGE_GIL, /**< Gilbertese */
230         LANGUAGE_GLA, /**< Gaelic; Scottish Gaelic */
231         LANGUAGE_GLE, /**< Irish */
232         LANGUAGE_GLG, /**< Galician */
233         LANGUAGE_GLV, /**< Manx */
234         LANGUAGE_GMH, /**< German, Middle High (ca.1050-1500) */
235         LANGUAGE_GOH, /**< German, Old High (ca.750-1050) */
236         LANGUAGE_GON, /**< Gondi */
237         LANGUAGE_GOR, /**< Gorontalo */
238         LANGUAGE_GOT, /**< Gothic */
239         LANGUAGE_GRB, /**< Grebo */
240         LANGUAGE_GRC, /**< Greek, Ancient (to 1453) */
241         LANGUAGE_ELL, /**< Greek, Modern (1453-) */
242         LANGUAGE_GRN, /**< Guarani */
243         LANGUAGE_GSW, /**< Swiss German; Alemannic; Alsatian */
244         LANGUAGE_GUJ, /**< Gujarati */
245         LANGUAGE_GWI, /**< Gwich'in */
246         LANGUAGE_HAI, /**< Haida */
247         LANGUAGE_HAT, /**< Haitian; Haitian Creole */
248         LANGUAGE_HAU, /**< Hausa */
249         LANGUAGE_HAU_LATIN, /**< Hausa (Latin) */
250         LANGUAGE_HAW, /**< Hawaiian */
251         LANGUAGE_HEB, /**< Hebrew */
252         LANGUAGE_HER, /**< Herero */
253         LANGUAGE_HIL, /**< Hiligaynon */
254         LANGUAGE_HIM, /**< Himachali */
255         LANGUAGE_HIN, /**< Hindi */
256         LANGUAGE_HIT, /**< Hittite */
257         LANGUAGE_HMN, /**< Hmong */
258         LANGUAGE_HMO, /**< Hiri Motu */
259         LANGUAGE_HRV, /**< Croatian */
260         LANGUAGE_HSB, /**< Upper Sorbian */
261         LANGUAGE_HUN, /**< Hungarian */
262         LANGUAGE_HUP, /**< Hupa */
263         LANGUAGE_IBA, /**< Iban */
264         LANGUAGE_IBO, /**< Igbo */
265         LANGUAGE_ISL, /**< Icelandic */
266         LANGUAGE_IDO, /**< Ido */
267         LANGUAGE_III, /**< Sichuan Yi; Nuosu */
268         LANGUAGE_IJO, /**< Ijo languages */
269         LANGUAGE_IKU, /**< Inuktitut */
270         LANGUAGE_ILE, /**< Interlingue; Occidental */
271         LANGUAGE_ILO, /**< Iloko */
272         LANGUAGE_INA, /**< Interlingua (International Auxiliary Language Association) */
273         LANGUAGE_INC, /**< Indic languages */
274         LANGUAGE_IND, /**< Indonesian */
275         LANGUAGE_INE, /**< Indo-European languages */
276         LANGUAGE_INH, /**< Ingush */
277         LANGUAGE_IPK, /**< Inupiaq */
278         LANGUAGE_IRA, /**< Iranian languages */
279         LANGUAGE_IRO, /**< Iroquoian languages */
280         LANGUAGE_ITA, /**< Italian */
281         LANGUAGE_JAV, /**< Javanese */
282         LANGUAGE_JBO, /**< Lojban */
283         LANGUAGE_JPN, /**< Japanese */
284         LANGUAGE_JPR, /**< Judeo-Persian */
285         LANGUAGE_JRB, /**< Judeo-Arabic */
286         LANGUAGE_KAA, /**< Kara-Kalpak */
287         LANGUAGE_KAB, /**< Kabyle */
288         LANGUAGE_KAC, /**< Kachin; Jingpho */
289         LANGUAGE_KAL, /**< Kalaallisut; Greenlandic */
290         LANGUAGE_KAM, /**< Kamba */
291         LANGUAGE_KAN, /**< Kannada */
292         LANGUAGE_KAR, /**< Karen languages */
293         LANGUAGE_KAS, /**< Kashmiri */
294         LANGUAGE_KAU, /**< Kanuri */
295         LANGUAGE_KAW, /**< Kawi */
296         LANGUAGE_KAZ, /**< Kazakh */
297         LANGUAGE_KAZ_CYRL, /**< Kazakh (Cyrillic)  */
298         LANGUAGE_KBD, /**< Kabardian */
299         LANGUAGE_KHA, /**< Khasi */
300         LANGUAGE_KHI, /**< Khoisan languages */
301         LANGUAGE_KHM, /**< Central Khmer */
302         LANGUAGE_KHO, /**< Khotanese; Sakan */
303         LANGUAGE_KIK, /**< Kikuyu; Gikuyu */
304         LANGUAGE_KIN, /**< Kinyarwanda */
305         LANGUAGE_KIR, /**< Kirghiz; Kyrgyz */
306         LANGUAGE_KMB, /**< Kimbundu */
307         LANGUAGE_KOK, /**< Konkani */
308         LANGUAGE_KOM, /**< Komi */
309         LANGUAGE_KON, /**< Kongo */
310         LANGUAGE_KOR, /**< Korean */
311         LANGUAGE_KOS, /**< Kosraean */
312         LANGUAGE_KPE, /**< Kpelle */
313         LANGUAGE_KRC, /**< Karachay-Balkar */
314         LANGUAGE_KRL, /**< Karelian */
315         LANGUAGE_KRO, /**< Kru languages */
316         LANGUAGE_KRU, /**< Kurukh */
317         LANGUAGE_KUA, /**< Kuanyama; Kwanyama */
318         LANGUAGE_KUM, /**< Kumyk */
319         LANGUAGE_KUR, /**< Kurdish */
320         LANGUAGE_KUT, /**< Kutenai */
321         LANGUAGE_LAD, /**< Ladino */
322         LANGUAGE_LAH, /**< Lahnda */
323         LANGUAGE_LAM, /**< Lamba */
324         LANGUAGE_LAO, /**< Lao */
325         LANGUAGE_LAT, /**< Latin */
326         LANGUAGE_LAV, /**< Latvian */
327         LANGUAGE_LEZ, /**< Lezghian */
328         LANGUAGE_LIM, /**< Limburgan; Limburger; Limburgish */
329         LANGUAGE_LIN, /**< Lingala */
330         LANGUAGE_LIT, /**< Lithuanian */
331         LANGUAGE_LOL, /**< Mongo */
332         LANGUAGE_LOZ, /**< Lozi */
333         LANGUAGE_LTZ, /**< Luxembourgish; Letzeburgesch */
334         LANGUAGE_LUA, /**< Luba-Lulua */
335         LANGUAGE_LUB, /**< Luba-Katanga */
336         LANGUAGE_LUG, /**< Ganda */
337         LANGUAGE_LUI, /**< Luiseno */
338         LANGUAGE_LUN, /**< Lunda */
339         LANGUAGE_LUO, /**< Luo (Kenya and Tanzania) */
340         LANGUAGE_LUS, /**< Lushai */
341         LANGUAGE_MKD, /**< Macedonian */
342         LANGUAGE_MAD, /**< Madurese */
343         LANGUAGE_MAG, /**< Magahi */
344         LANGUAGE_MAH, /**< Marshallese */
345         LANGUAGE_MAI, /**< Maithili */
346         LANGUAGE_MAK, /**< Makasar */
347         LANGUAGE_MAL, /**< Malayalam */
348         LANGUAGE_MAN, /**< Mandingo */
349         LANGUAGE_MRI, /**< Maori */
350         LANGUAGE_MAP, /**< Austronesian languages */
351         LANGUAGE_MAR, /**< Marathi */
352         LANGUAGE_MAS, /**< Masai */
353         LANGUAGE_MSA, /**< Malay */
354         LANGUAGE_MDF, /**< Moksha */
355         LANGUAGE_MDR, /**< Mandar */
356         LANGUAGE_MEN, /**< Mende */
357         LANGUAGE_MGA, /**< Irish, Middle (900-1200) */
358         LANGUAGE_MIC, /**< Mi'kmaq; Micmac */
359         LANGUAGE_MIN, /**< Minangkabau */
360         LANGUAGE_MIS, /**< Uncoded languages */
361         LANGUAGE_MKH, /**< Mon-Khmer languages */
362         LANGUAGE_MLG, /**< Malagasy */
363         LANGUAGE_MLT, /**< Maltese */
364         LANGUAGE_MNC, /**< Manchu */
365         LANGUAGE_MNI, /**< Manipuri */
366         LANGUAGE_MNO, /**< Manobo languages */
367         LANGUAGE_MOH, /**< Mohawk */
368         LANGUAGE_MON, /**< Mongolian */
369         LANGUAGE_MOS, /**< Mossi */
370         LANGUAGE_MUL, /**< Multiple languages */
371         LANGUAGE_MUN, /**< Munda languages */
372         LANGUAGE_MUS, /**< Creek */
373         LANGUAGE_MWL, /**< Mirandese */
374         LANGUAGE_MWR, /**< Marwari */
375         LANGUAGE_MYN, /**< Mayan languages */
376         LANGUAGE_MYV, /**< Erzya */
377         LANGUAGE_NAH, /**< Nahuatl languages */
378         LANGUAGE_NAI, /**< North American Indian languages */
379         LANGUAGE_NAP, /**< Neapolitan */
380         LANGUAGE_NAU, /**< Nauru */
381         LANGUAGE_NAV, /**< Navajo; Navaho */
382         LANGUAGE_NBL, /**< Ndebele, South; South Ndebele */
383         LANGUAGE_NDE, /**< Ndebele, North; North Ndebele */
384         LANGUAGE_NDO, /**< Ndonga */
385         LANGUAGE_NDS, /**< Low German; Low Saxon; German, Low; Saxon, Low */
386         LANGUAGE_NEP, /**< Nepali */
387         LANGUAGE_NEW, /**< Nepal Bhasa; Newari */
388         LANGUAGE_NIA, /**< Nias */
389         LANGUAGE_NIC, /**< Niger-Kordofanian languages */
390         LANGUAGE_NIU, /**< Niuean */
391         LANGUAGE_NNO, /**< Norwegian Nynorsk; Nynorsk, Norwegian */
392         LANGUAGE_NOB, /**< Bokmal, Norwegian; Norwegian Bokmal */
393         LANGUAGE_NOG, /**< Nogai */
394         LANGUAGE_NON, /**< Norse, Old */
395         LANGUAGE_NOR, /**< Norwegian */
396         LANGUAGE_NQO, /**< N'Ko */
397         LANGUAGE_NSO, /**< Pedi; Sepedi; Northern Sotho */
398         LANGUAGE_NUB, /**< Nubian languages */
399         LANGUAGE_NWC, /**< Classical Newari; Old Newari; Classical Nepal Bhasa */
400         LANGUAGE_NYA, /**< Chichewa; Chewa; Nyanja */
401         LANGUAGE_NYM, /**< Nyamwezi */
402         LANGUAGE_NYN, /**< Nyankole */
403         LANGUAGE_NYO, /**< Nyoro */
404         LANGUAGE_NZI, /**< Nzima */
405         LANGUAGE_OCI, /**< Occitan (post 1500); Provencal */
406         LANGUAGE_OJI, /**< Ojibwa */
407         LANGUAGE_ORI, /**< Oriya */
408         LANGUAGE_ORM, /**< Oromo */
409         LANGUAGE_OSA, /**< Osage */
410         LANGUAGE_OSS, /**< Ossetian; Ossetic */
411         LANGUAGE_OTA, /**< Turkish, Ottoman (1500-1928) */
412         LANGUAGE_OTO, /**< Otomian languages */
413         LANGUAGE_PAA, /**< Papuan languages */
414         LANGUAGE_PAG, /**< Pangasinan */
415         LANGUAGE_PAL, /**< Pahlavi */
416         LANGUAGE_PAM, /**< Pampanga; Kapampangan */
417         LANGUAGE_PAN, /**< Panjabi; Punjabi */
418         LANGUAGE_PAN_ARAB, /**< Panjabi; Punjabi (Arabic)  */
419         LANGUAGE_PAN_GURU, /**< Panjabi; Punjabi (Gurmukhi)  */
420         LANGUAGE_PAP, /**< Papiamento */
421         LANGUAGE_PAU, /**< Palauan */
422         LANGUAGE_PEO, /**< Persian, Old (ca.600-400 B.C.) */
423         LANGUAGE_FAS, /**< Persian */
424         LANGUAGE_PHI, /**< Philippine languages */
425         LANGUAGE_PHN, /**< Phoenician */
426         LANGUAGE_PLI, /**< Pali */
427         LANGUAGE_POL, /**< Polish */
428         LANGUAGE_PON, /**< Pohnpeian */
429         LANGUAGE_POR, /**< Portuguese */
430         LANGUAGE_PRA, /**< Prakrit languages */
431         LANGUAGE_PRO, /**< Provencal, Old (to 1500) */
432         LANGUAGE_PUS, /**< Pushto; Pashto */
433         LANGUAGE_QAA_QTZ, /**< Reserved for local use */
434         LANGUAGE_QUE, /**< Quechua */
435         LANGUAGE_RAJ, /**< Rajasthani */
436         LANGUAGE_RAP, /**< Rapanui */
437         LANGUAGE_RAR, /**< Rarotongan; Cook Islands Maori */
438         LANGUAGE_ROA, /**< Romance languages */
439         LANGUAGE_ROH, /**< Romansh */
440         LANGUAGE_ROM, /**< Romany */
441         LANGUAGE_RON, /**< Romanian; Moldavian; Moldovan */
442         LANGUAGE_RUN, /**< Rundi */
443         LANGUAGE_RUP, /**< Aromanian; Arumanian; Macedo-Romanian */
444         LANGUAGE_RUS, /**< Russian */
445         LANGUAGE_SAD, /**< Sandawe */
446         LANGUAGE_SAG, /**< Sango */
447         LANGUAGE_SAH, /**< Yakut */
448         LANGUAGE_SAI, /**< South American Indian (Other) */
449         LANGUAGE_SAL, /**< Salishan languages */
450         LANGUAGE_SAM, /**< Samaritan Aramaic */
451         LANGUAGE_SAN, /**< Sanskrit */
452         LANGUAGE_SAS, /**< Sasak */
453         LANGUAGE_SAT, /**< Santali */
454         LANGUAGE_SCN, /**< Sicilian */
455         LANGUAGE_SCO, /**< Scots */
456         LANGUAGE_SEL, /**< Selkup */
457         LANGUAGE_SEM, /**< Semitic languages */
458         LANGUAGE_SGA, /**< Irish, Old (to 900) */
459         LANGUAGE_SGN, /**< Sign Languages */
460         LANGUAGE_SHN, /**< Shan */
461         LANGUAGE_SID, /**< Sidamo */
462         LANGUAGE_SIN, /**< Sinhala; Sinhalese */
463         LANGUAGE_SIO, /**< Siouan languages */
464         LANGUAGE_SIT, /**< Sino-Tibetan languages */
465         LANGUAGE_SLA, /**< Slavic languages */
466         LANGUAGE_SLK, /**< Slovak */
467         LANGUAGE_SLV, /**< Slovenian */
468         LANGUAGE_SMA, /**< Southern Sami */
469         LANGUAGE_SME, /**< Northern Sami */
470         LANGUAGE_SMI, /**< Sami languages */
471         LANGUAGE_SMJ, /**< Lule Sami */
472         LANGUAGE_SMN, /**< Inari Sami */
473         LANGUAGE_SMO, /**< Samoan */
474         LANGUAGE_SMS, /**< Skolt Sami */
475         LANGUAGE_SNA, /**< Shona */
476         LANGUAGE_SND, /**< Sindhi */
477         LANGUAGE_SNK, /**< Soninke */
478         LANGUAGE_SOG, /**< Sogdian */
479         LANGUAGE_SOM, /**< Somali */
480         LANGUAGE_SON, /**< Songhai languages */
481         LANGUAGE_SOT, /**< Sotho, Southern */
482         LANGUAGE_SPA, /**< Spanish; Castilian */
483         LANGUAGE_SRD, /**< Sardinian */
484         LANGUAGE_SRN, /**< Sranan Tongo */
485         LANGUAGE_SRP, /**< Serbian */
486         LANGUAGE_SRP_CYRL, /**< Serbian (Cyrillic)  */
487         LANGUAGE_SRP_LATIN, /**< Serbian (Latin)  */
488         LANGUAGE_SRR, /**< Serer */
489         LANGUAGE_SSA, /**< Nilo-Saharan languages */
490         LANGUAGE_SSW, /**< Swati */
491         LANGUAGE_SUK, /**< Sukuma */
492         LANGUAGE_SUN, /**< Sundanese */
493         LANGUAGE_SUS, /**< Susu */
494         LANGUAGE_SUX, /**< Sumerian */
495         LANGUAGE_SWA, /**< Swahili */
496         LANGUAGE_SWE, /**< Swedish */
497         LANGUAGE_SYC, /**< Classical Syriac */
498         LANGUAGE_SYR, /**< Syriac */
499         LANGUAGE_TAH, /**< Tahitian */
500         LANGUAGE_TAI, /**< Tai languages */
501         LANGUAGE_TAM, /**< Tamil */
502         LANGUAGE_TAT, /**< Tatar */
503         LANGUAGE_TEL, /**< Telugu */
504         LANGUAGE_TEM, /**< Timne */
505         LANGUAGE_TER, /**< Tereno */
506         LANGUAGE_TET, /**< Tetum */
507         LANGUAGE_TGK, /**< Tajik */
508         LANGUAGE_TGL, /**< Tagalog */
509         LANGUAGE_THA, /**< Thai */
510         LANGUAGE_BOD, /**< Tibetan */
511         LANGUAGE_TIG, /**< Tigre */
512         LANGUAGE_TIR, /**< Tigrinya */
513         LANGUAGE_TIV, /**< Tiv */
514         LANGUAGE_TKL, /**< Tokelau */
515         LANGUAGE_TLH, /**< Klingon; tlhIngan-Hol */
516         LANGUAGE_TLI, /**< Tlingit */
517         LANGUAGE_TMH, /**< Tamashek */
518         LANGUAGE_TOG, /**< Tonga (Nyasa) */
519         LANGUAGE_TON, /**< Tonga (Tonga Islands) */
520         LANGUAGE_TPI, /**< Tok Pisin */
521         LANGUAGE_TSI, /**< Tsimshian */
522         LANGUAGE_TSN, /**< Tswana */
523         LANGUAGE_TSO, /**< Tsonga */
524         LANGUAGE_TUK, /**< Turkmen */
525         LANGUAGE_TUK_CYRL, /**< Turkmen (Cyrillic)  */
526         LANGUAGE_TUK_LATIN, /**< Turkmen (Latin)  */
527         LANGUAGE_TUM, /**< Tumbuka */
528         LANGUAGE_TUP, /**< Tupi languages */
529         LANGUAGE_TUR, /**< Turkish */
530         LANGUAGE_TUT, /**< Altaic languages */
531         LANGUAGE_TVL, /**< Tuvalu */
532         LANGUAGE_TWI, /**< Twi */
533         LANGUAGE_TYV, /**< Tuvinian */
534         LANGUAGE_UDM, /**< Udmurt */
535         LANGUAGE_UGA, /**< Ugaritic */
536         LANGUAGE_UIG, /**< Uighur; Uyghur */
537         LANGUAGE_UKR, /**< Ukrainian */
538         LANGUAGE_UMB, /**< Umbundu */
539         LANGUAGE_UND, /**< Undetermined */
540         LANGUAGE_URD, /**< Urdu */
541         LANGUAGE_UZB, /**< Uzbek */
542         LANGUAGE_UZB_ARAB, /**< Uzbek (Arabic) */
543         LANGUAGE_UZB_CYRL, /**< Uzbek (Cyrillic)  */
544         LANGUAGE_UZB_LATIN, /**< Uzbek (Latin)  */
545         LANGUAGE_VAI, /**< Vai */
546         LANGUAGE_VEN, /**< Venda */
547         LANGUAGE_VIE, /**< Vietnamese */
548         LANGUAGE_VLS, /**< Vlaams; Flemish"  */
549         LANGUAGE_VOL, /**< Volapuk */
550         LANGUAGE_VOT, /**< Votic */
551         LANGUAGE_WAK, /**< Wakashan languages */
552         LANGUAGE_WAL, /**< Walamo */
553         LANGUAGE_WAR, /**< Waray */
554         LANGUAGE_WAS, /**< Washo */
555         LANGUAGE_CYM, /**< Welsh */
556         LANGUAGE_WEN, /**< Sorbian languages */
557         LANGUAGE_WLN, /**< Walloon */
558         LANGUAGE_WOL, /**< Wolof */
559         LANGUAGE_XAL, /**< Kalmyk; Oirat */
560         LANGUAGE_XHO, /**< Xhosa */
561         LANGUAGE_YAO, /**< Yao */
562         LANGUAGE_YAP, /**< Yapese */
563         LANGUAGE_YID, /**< Yiddish */
564         LANGUAGE_YOR, /**< Yoruba */
565         LANGUAGE_YPK, /**< Yupik languages */
566         LANGUAGE_ZAP, /**< Zapotec */
567         LANGUAGE_ZBL, /**< Blissymbols; Blissymbolics; Bliss */
568         LANGUAGE_ZEN, /**< Zenaga */
569         LANGUAGE_ZHA, /**< Zhuang; Chuang */
570         LANGUAGE_ZND, /**< Zande languages */
571         LANGUAGE_ZUL, /**< Zulu */
572         LANGUAGE_ZUN, /**< Zuni */
573         LANGUAGE_ZXX, /**< No linguistic content; Not applicable */
574         LANGUAGE_ZZA, /**< Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki */
575         LANGUAGE_MAX, // Language max count
576
577     LANGUAGE_INVALID_RESERVED = LANGUAGE_ZZA + 2, // An invalid language code for internal (LANGUAGE_ZZA+2)
578 }; // LanguageCode
579
580
581 /**
582  * @enum        CountryCode
583  *
584  * Defines the ISO 3166-1 alpha-2 country code. @n
585  * The CountryCode enumerator represents the ISO 3166-1 alpha-2 country codes.
586  * The area code for Latin america and the Caribbean represents the ISO 3166-1 numeric-3.
587  *
588  * @since               2.0
589  */
590 enum CountryCode
591 {
592     COUNTRY_INVALID = -1, /**< An invalid country code */
593         COUNTRY_AF, /**< AFGHANISTAN  */
594         COUNTRY_AX, /**< ALAND ISLANDS */
595         COUNTRY_AL, /**< ALBANIA */
596         COUNTRY_DZ, /**< ALGERIA */
597         COUNTRY_AS, /**< AMERICAN SAMOA */
598         COUNTRY_AD, /**< ANDORRA */
599         COUNTRY_AO, /**< ANGOLA */
600         COUNTRY_AI, /**< ANGUILLA */
601         COUNTRY_AQ, /**< ANTARCTICA */
602         COUNTRY_AG, /**< ANTIGUA AND BARBUDA */
603         COUNTRY_AR, /**< ARGENTINA */
604         COUNTRY_AM, /**< ARMENIA */
605         COUNTRY_AW, /**< ARUBA */
606         COUNTRY_AU, /**< AUSTRALIA */
607         COUNTRY_AT, /**< AUSTRIA */
608         COUNTRY_AZ, /**< AZERBAIJAN */
609         COUNTRY_BS, /**< BAHAMAS */
610         COUNTRY_BH, /**< BAHRAIN */
611         COUNTRY_BD, /**< BANGLADESH */
612         COUNTRY_BB, /**< BARBADOS */
613         COUNTRY_BY, /**< BELARUS */
614         COUNTRY_BE, /**< BELGIUM */
615         COUNTRY_BZ, /**< BELIZE */
616         COUNTRY_BJ, /**< BENIN */
617         COUNTRY_BM, /**< BERMUDA */
618         COUNTRY_BT, /**< BHUTAN */
619         COUNTRY_BO, /**< BOLIVIA */
620         COUNTRY_BA, /**< BOSNIA AND HERZEGOVINA */
621         COUNTRY_BW, /**< BOTSWANA */
622         COUNTRY_BV, /**< BOUVET ISLAND */
623         COUNTRY_BR, /**< BRAZIL */
624         COUNTRY_IO, /**< BRITISH INDIAN OCEAN TERRITORY */
625         COUNTRY_BN, /**< BRUNEI DARUSSALAM */
626         COUNTRY_BG, /**< BULGARIA */
627         COUNTRY_BF, /**< BURKINA FASO */
628         COUNTRY_BI, /**< BURUNDI */
629         COUNTRY_KH, /**< CAMBODIA */
630         COUNTRY_CM, /**< CAMEROON */
631         COUNTRY_CA, /**< CANADA */
632         COUNTRY_CV, /**< CAPE VERDE */
633         COUNTRY_KY, /**< CAYMAN ISLANDS */
634         COUNTRY_CF, /**< CENTRAL AFRICAN REPUBLIC */
635         COUNTRY_TD, /**< CHAD */
636         COUNTRY_CL, /**< CHILE */
637         COUNTRY_CN, /**< CHINA */
638         COUNTRY_CX, /**< CHRISTMAS ISLAND */
639         COUNTRY_CC, /**< COCOS (KEELING) ISLANDS */
640         COUNTRY_CO, /**< COLOMBIA */
641         COUNTRY_KM, /**< COMOROS */
642         COUNTRY_CG, /**< CONGO */
643         COUNTRY_CD, /**< CONGO, THE DEMOCRATIC REPUBLIC OF THE */
644         COUNTRY_CK, /**< COOK ISLANDS */
645         COUNTRY_CR, /**< COSTA RICA */
646         COUNTRY_CI, /**< COTE D'IVOIRE */
647         COUNTRY_HR, /**< CROATIA */
648         COUNTRY_CU, /**< CUBA */
649         COUNTRY_CY, /**< CYPRUS */
650         COUNTRY_CZ, /**< CZECH REPUBLIC */
651         COUNTRY_DK, /**< DENMARK */
652         COUNTRY_DJ, /**< DJIBOUTI */
653         COUNTRY_DM, /**< DOMINICA */
654         COUNTRY_DO, /**< DOMINICAN REPUBLIC */
655         COUNTRY_EC, /**< ECUADOR */
656         COUNTRY_EG, /**< EGYPT */
657         COUNTRY_SV, /**< EL SALVADOR */
658         COUNTRY_GQ, /**< EQUATORIAL GUINEA */
659         COUNTRY_ER, /**< ERITREA */
660         COUNTRY_EE, /**< ESTONIA */
661         COUNTRY_ET, /**< ETHIOPIA */
662         COUNTRY_FK, /**< FALKLAND ISLANDS (MALVINAS) */
663         COUNTRY_FO, /**< FAROE ISLANDS */
664         COUNTRY_FJ, /**< FIJI */
665         COUNTRY_FI, /**< FINLAND */
666         COUNTRY_FR, /**< FRANCE */
667         COUNTRY_GF, /**< FRENCH GUIANA */
668         COUNTRY_PF, /**< FRENCH POLYNESIA */
669         COUNTRY_TF, /**< FRENCH SOUTHERN TERRITORIES */
670         COUNTRY_GA, /**< GABON  */
671         COUNTRY_GM, /**< GAMBIA */
672         COUNTRY_GE, /**< GEORGIA */
673         COUNTRY_DE, /**< GERMANY */
674         COUNTRY_GH, /**< GHANA */
675         COUNTRY_GI, /**< GIBRALTAR */
676         COUNTRY_GR, /**< GREECE */
677         COUNTRY_GL, /**< GREENLAND */
678         COUNTRY_GD, /**< GRENADA */
679         COUNTRY_GP, /**< GUADELOUPE */
680         COUNTRY_GU, /**< GUAM */
681         COUNTRY_GT, /**< GUATEMALA */
682         COUNTRY_GN, /**< GUINEA */
683         COUNTRY_GW, /**< GUINEA-BISSAU */
684         COUNTRY_GY, /**< GUYANA */
685         COUNTRY_HT, /**< HAITI */
686         COUNTRY_HM, /**< HEARD ISLAND AND MCDONALD ISLANDS */
687         COUNTRY_VA, /**< HOLY SEE (VATICAN CITY STATE) */
688         COUNTRY_HN, /**< HONDURAS */
689         COUNTRY_HK, /**< HONG KONG */
690         COUNTRY_HU, /**< HUNGARY */
691         COUNTRY_IS, /**< ICELAND */
692         COUNTRY_IN, /**< INDIA */
693         COUNTRY_ID, /**< INDONESIA */
694         COUNTRY_IR, /**< IRAN, ISLAMIC REPUBLIC OF */
695         COUNTRY_IQ, /**< IRAQ */
696         COUNTRY_IE, /**< IRELAND */
697         COUNTRY_IL, /**< ISRAEL */
698         COUNTRY_IT, /**< ITALY */
699         COUNTRY_JM, /**< JAMAICA */
700         COUNTRY_JP, /**< JAPAN */
701         COUNTRY_JO, /**< JORDAN */
702         COUNTRY_KZ, /**< KAZAKHSTAN */
703         COUNTRY_KE, /**< KENYA */
704         COUNTRY_KI, /**< KIRIBATI */
705         COUNTRY_KP, /**< KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF */
706         COUNTRY_KR, /**< KOREA, REPUBLIC OF */
707         COUNTRY_KW, /**< KUWAIT */
708         COUNTRY_KG, /**< KYRGYZSTAN */
709         COUNTRY_LA, /**< LAO PEOPLE'S DEMOCRATIC REPUBLIC  */
710         COUNTRY_LV, /**< LATVIA */
711         COUNTRY_LB, /**< LEBANON */
712         COUNTRY_LS, /**< LESOTHO */
713         COUNTRY_LR, /**< LIBERIA */
714         COUNTRY_LY, /**< LIBYAN ARAB JAMAHIRIYA */
715         COUNTRY_LI, /**< LIECHTENSTEIN */
716         COUNTRY_LT, /**< LITHUANIA */
717         COUNTRY_LU, /**< LUXEMBOURG */
718         COUNTRY_MO, /**< MACAO */
719         COUNTRY_MK, /**< MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF */
720         COUNTRY_MG, /**< MADAGASCAR */
721         COUNTRY_MW, /**< MALAWI */
722         COUNTRY_MY, /**< MALAYSIA */
723         COUNTRY_MV, /**< MALDIVES */
724         COUNTRY_ML, /**< MALI */
725         COUNTRY_MT, /**< MALTA */
726         COUNTRY_MH, /**< MARSHALL ISLANDS */
727         COUNTRY_MQ, /**< MARTINIQUE */
728         COUNTRY_MR, /**< MAURITANIA */
729         COUNTRY_MU, /**< MAURITIUS */
730         COUNTRY_YT, /**< MAYOTTE */
731         COUNTRY_MX, /**< MEXICO */
732         COUNTRY_FM, /**< MICRONESIA, FEDERATED STATES OF */
733         COUNTRY_MD, /**< MOLDOVA, REPUBLIC OF */
734         COUNTRY_MC, /**< MONACO */
735         COUNTRY_MN, /**< MONGOLIA */
736         COUNTRY_MS, /**< MONTSERRAT */
737         COUNTRY_MA, /**< MOROCCO */
738         COUNTRY_MZ, /**< MOZAMBIQUE */
739         COUNTRY_MM, /**< MYANMAR */
740         COUNTRY_NA, /**< NAMIBIA */
741         COUNTRY_NR, /**< NAURU */
742         COUNTRY_NP, /**< NEPAL */
743         COUNTRY_NL, /**< NETHERLANDS */
744         COUNTRY_AN, /**< NETHERLANDS ANTILLES */
745         COUNTRY_NC, /**< NEW CALEDONIA */
746         COUNTRY_NZ, /**< NEW ZEALAND */
747         COUNTRY_NI, /**< NICARAGUA */
748         COUNTRY_NE, /**< NIGER */
749         COUNTRY_NG, /**< NIGERIA */
750         COUNTRY_NU, /**< NIUE */
751         COUNTRY_NF, /**< NORFOLK ISLAND */
752         COUNTRY_MP, /**< NORTHERN MARIANA ISLANDS */
753         COUNTRY_NO, /**< NORWAY */
754         COUNTRY_OM, /**< OMAN */
755         COUNTRY_PK, /**< PAKISTAN */
756         COUNTRY_PW, /**< PALAU */
757         COUNTRY_PS, /**< PALESTINIAN TERRITORY, OCCUPIED */
758         COUNTRY_PA, /**< PANAMA */
759         COUNTRY_PG, /**< PAPUA NEW GUINEA */
760         COUNTRY_PY, /**< PARAGUAY */
761         COUNTRY_PE, /**< PERU */
762         COUNTRY_PH, /**< PHILIPPINES */
763         COUNTRY_PN, /**< PITCAIRN */
764         COUNTRY_PL, /**< POLAND */
765         COUNTRY_PT, /**< PORTUGAL */
766         COUNTRY_PR, /**< PUERTO RICO */
767         COUNTRY_QA, /**< QATAR */
768         COUNTRY_RE, /**< REUNION */
769         COUNTRY_RO, /**< ROMANIA */
770         COUNTRY_RU, /**< RUSSIAN FEDERATION */
771         COUNTRY_RW, /**< RWANDA */
772         COUNTRY_SH, /**< SAINT HELENA  */
773         COUNTRY_KN, /**< SAINT KITTS AND NEVIS */
774         COUNTRY_LC, /**< SAINT LUCIA */
775         COUNTRY_PM, /**< SAINT PIERRE AND MIQUELON */
776         COUNTRY_VC, /**< SAINT VINCENT AND THE GRENADINES */
777         COUNTRY_WS, /**< SAMOA */
778         COUNTRY_SM, /**< SAN MARINO */
779         COUNTRY_ST, /**< SAO TOME AND PRINCIPE */
780         COUNTRY_SA, /**< SAUDI ARABIA */
781         COUNTRY_SN, /**< SENEGAL */
782         COUNTRY_SC, /**< SEYCHELLES */
783         COUNTRY_SL, /**< SIERRA LEONE */
784         COUNTRY_SG, /**< SINGAPORE */
785         COUNTRY_SK, /**< SLOVAKIA */
786         COUNTRY_SI, /**< SLOVENIA */
787         COUNTRY_SB, /**< SOLOMON ISLANDS */
788         COUNTRY_SO, /**< SOMALIA */
789         COUNTRY_ZA, /**< SOUTH AFRICA */
790         COUNTRY_GS, /**< SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS */
791         COUNTRY_ES, /**< SPAIN */
792         COUNTRY_LK, /**< SRI LANKA */
793         COUNTRY_SD, /**< SUDAN */
794         COUNTRY_SR, /**< SURINAME */
795         COUNTRY_SJ, /**< SVALBARD AND JAN MAYEN */
796         COUNTRY_SZ, /**< SWAZILAND */
797         COUNTRY_SE, /**< SWEDEN */
798         COUNTRY_CH, /**< SWITZERLAND */
799         COUNTRY_SY, /**< SYRIAN ARAB REPUBLIC */
800         COUNTRY_TW, /**< TAIWAN, PROVINCE OF CHINA */
801         COUNTRY_TJ, /**< TAJIKISTAN */
802         COUNTRY_TZ, /**< TANZANIA, UNITED REPUBLIC OF */
803         COUNTRY_TH, /**< THAILAND */
804         COUNTRY_TL, /**< TIMOR-LESTE */
805         COUNTRY_TG, /**< TOGO */
806         COUNTRY_TK, /**< TOKELAU */
807         COUNTRY_TO, /**< TONGA */
808         COUNTRY_TT, /**< TRINIDAD AND TOBAGO */
809         COUNTRY_TN, /**< TUNISIA */
810         COUNTRY_TR, /**< TURKEY */
811         COUNTRY_TM, /**< TURKMENISTAN */
812         COUNTRY_TC, /**< TURKS AND CAICOS ISLANDS */
813         COUNTRY_TV, /**< TUVALU */
814         COUNTRY_UG, /**< UGANDA */
815         COUNTRY_UA, /**< UKRAINE */
816         COUNTRY_AE, /**< UNITED ARAB EMIRATES */
817         COUNTRY_GB, /**< UNITED KINGDOM */
818         COUNTRY_US, /**< UNITED STATES */
819         COUNTRY_UM, /**< UNITED STATES MINOR OUTLYING ISLANDS */
820         COUNTRY_UY, /**< URUGUAY */
821         COUNTRY_UZ, /**< UZBEKISTAN */
822         COUNTRY_VU, /**< VANUATU */
823         COUNTRY_VE, /**< VENEZUELA */
824         COUNTRY_VN, /**< VIET NAM */
825         COUNTRY_VG, /**< VIRGIN ISLANDS, BRITISH */
826         COUNTRY_VI, /**< VIRGIN ISLANDS, U.S. */
827         COUNTRY_WF, /**< WALLIS AND FUTUNA */
828         COUNTRY_EH, /**< WESTERN SAHARA */
829         COUNTRY_YE, /**< YEMEN */
830         COUNTRY_ZM, /**< ZAMBIA */
831         COUNTRY_ZW, /**< ZIMBABWE */
832         COUNTRY_RS, /**< SERBIA */
833         COUNTRY_ME, /**< MONTENEGRO */
834         COUNTRY_BL, /**< SAINT BARTHELEMY @b Since: @b 2.1  */
835         COUNTRY_MF, /**< SAINT MARTIN (FRENCH PART) @b Since: @b 2.1 */
836         COUNTRY_AREA_419, /**< Latin America and the Caribbean @b Since: @b 2.1  */
837         COUNTRY_MAX,    //< Country max count
838
839     COUNTRY_INVALID_RESERVED = COUNTRY_ME + 2, // An invalid country code for internal (COUNTRY_ME+2)
840 };
841
842
843 /**
844  * @class               Locale
845  * @brief               This class is for the locale identification.
846  *
847  * @since               2.0
848  *
849  * @final       This class is not intended for extension.
850  *
851  * @remarks     For more information on the example codes for %Locale class, see LocaleManager.
852  *
853  * The %Locale class represents a specific geographical, political, or cultural region. @n
854  * A %Locale object has three attributes:
855  * - Language Code
856  * - Country Code
857  * - Variant Code
858  *
859  * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/locales/lang_country_codes.htm">Retrieving Language and Country Codes</a>.
860  *
861  * @see LanguageCode
862  * @see CountryCode
863  * @see LocaleManager
864  */
865
866 class _OSP_EXPORT_ Locale
867         : public Tizen::Base::Object
868 {
869 public:
870         /**
871          * Initializes an instance of %Locale with the values of the specified locale. @n
872          * Copying of objects using this copy constructor is allowed.
873          *
874          * @since                               2.0
875          *
876          * @param[in]                   otherLocale                     An instance of %Locale
877          */
878         Locale(const Locale& otherLocale);
879
880         /**
881          * Initializes an instance of %Locale with the specified language, country, and variant code.
882          *
883          * @since                               2.0
884          *
885          * @param[in]                   languageCode                                    The language code
886          * @param[in]                   countryCode                                             The country code
887          * @param[in]                   pVariantCodeString                              A pointer to the variant code string @n
888          *                                                                              It is converted to a uppercase letter if it is written in a lowercase letter.
889          */
890         Locale(LanguageCode languageCode, CountryCode countryCode, const Tizen::Base::String* pVariantCodeString = null);
891
892         /**
893          * Assigns the value of the specified instance to the current instance of %Locale. @n
894          * Copying of objects using this copy assignment operator is allowed.
895          *
896          * @since                               2.0
897          *
898          * @return                      A reference to the current instance of %Locale
899          * @param[in]           otherLocale                                                     An instance of %Locale
900          */
901         Locale& operator =(const Locale& otherLocale);
902
903         /**
904          * This is the destructor for this class. @n
905          * This destructor overrides Tizen::Base::Object::~Object().
906          *
907          * @since               2.0
908          */
909         virtual ~Locale(void);
910
911         /**
912          * Compares the current instance of %Locale with the specified instance of %Locale.
913          *
914          * @since                               2.0
915          *
916          * @return                      @c true if the value of the specified instance is equal to the value of the current instance, @n
917          *                                      else @c false
918          * @param[in]           otherLocale                                             An instance of %Locale
919          */
920         bool operator ==(const Locale& otherLocale) const;
921
922         /**
923          * Compares the current instance of %Locale with the specified instance of %Locale.
924          *
925          * @since               2.0
926          *
927          * @return              @c true if the value of the specified instance is not equal to the value of the current instance, @n
928          *                              else @c false
929          * @param[in]   otherLocale             An instance of %Locale
930          */
931         bool operator !=(const Locale& otherLocale) const;
932
933         /**
934          *      Converts the operand @c obj to an object of the %Locale type and then compares it with the current instance of %Locale.
935          *
936          * @since               2.0
937          *
938          * @return              @c true if the value of the current instance is equal to the value of the specified Tizen::Base::Object, @n
939          *                              else @c false
940          * @param[in]   obj             The object to compare with the current instance
941          * @see         Tizen::Base::Object::Equals()
942          */
943         virtual bool Equals(const Object& obj) const;
944
945         /**
946          * Gets the hash value of the current instance.
947          *
948          * @since               2.0
949          *
950          * @return              The hash value of the current instance
951          */
952         virtual int GetHashCode(void) const;
953
954         /**
955          * Gets the language code (ISO 639-2 code) of the current instance of %Locale.
956          *
957          * @since               2.0
958          *
959          * @return              The language code enum value of the instance
960          *
961          * @remark              The specific LanguageCode represents the language code with the locale's ISO-15924 abbreviation script code.
962          */
963         LanguageCode GetLanguageCode(void) const;
964
965         /**
966          * Gets the country code (ISO 3166-1 alpha-2 code) or the area code (ISO 3166-1 numeric-3 code) of the current instance of %Locale.
967          *
968          * @since               2.0
969          *
970          * @return              The country code enum value of the instance
971          */
972         CountryCode GetCountryCode(void) const;
973
974         /**
975          * Gets the language code (ISO 639-2 code) string of the current instance of %Locale.
976          *
977          * @since               2.0
978          *
979          * @return              The language code, @n
980          *                      The specific language code string has the locale's ISO-15924 abbreviation script code.
981          */
982         Tizen::Base::String GetLanguageCodeString(void) const;
983
984         /**
985          * Gets the country code (ISO 3166-1 alpha-2 code) or the area code (ISO 3166-1 numeric-3 code) string of the current instance of %Locale.
986          *
987          * @since               2.0
988          *
989          * @return              The country code @n
990          *                              else the area code if the country code represents Latin America.
991          */
992         Tizen::Base::String GetCountryCodeString(void) const;
993
994         /**
995          * Gets the variant code string of the current instance of %Locale.
996          *
997          * @since               2.0
998          *
999          * @return              The variant code string written in a uppercase letter even if it was set to a lowercase letter, @n
1000          *                              else an empty string if the variant is not specified
1001          * @see                 SetVariantCodeString()
1002          */
1003         Tizen::Base::String GetVariantCodeString(void) const;
1004
1005
1006         /**
1007          * Gets the string representing the current instance of %Locale. @n
1008          * The string consists of the values returned by GetLanguageCodeString(), GetCountryCodeString(), and GetVariantCodeString() assembled into a string.
1009          *
1010          * @since                                       2.0
1011          *
1012          * @return                              A concatenated string with the language code string, country code string, and variant string @n
1013          *                                              For example, if the language code is LANGUAGE_ENG, country code is COUNTRY_US, and variant string is empty, @n
1014          *                                              the locale code string is "eng_US".
1015          * @see                                 GetLanguageCodeString()
1016          * @see                                 GetCountryCodeString()
1017          * @see                                 GetVariantCodeString()
1018          */
1019         Tizen::Base::String GetLocaleCodeString(void) const;
1020
1021         /**
1022          * Gets the country name of the current instance of %Locale that is appropriate for display to the user. @n
1023          * The name is localized for this locale. For example, if this locale is eng_US, the name is "United States".
1024          *
1025          * @since                               2.0
1026          *
1027          * @return                              An error code
1028          * @param[out]                  countryName                             The country name of the locale
1029          * @exception                   E_SUCCESS                               The method is successful.
1030          * @exception                   E_UNSUPPORTED_OPERATION The current @c locale does not have country name entry in the database.
1031          */
1032         result GetCountryName(Tizen::Base::String& countryName) const;
1033
1034         /**
1035          * Gets the country name of the current instance of %Locale that is appropriate for display to the user in the specified %Locale. @n
1036          * The country name is localized for the specified locale(@c otherLocale). For example, if
1037          * the current instance of %Locale is fra_FR and the @c otherLocale is eng_US, the name is "France";
1038          * if the current instance is eng_US and the @c otherLocale is fra_FR, the name returned is "Etats-Unis".
1039          *
1040          * @since                                       2.0
1041          *
1042          * @return                                      An error code
1043          * @param[in]                           otherLocale                             An instance of %Locale according to which the country name of the specified %Locale is displayed
1044          * @param[out]                          countryName                             The country name of the locale
1045          * @exception                           E_SUCCESS                               The method is successful.
1046          * @exception                           E_UNSUPPORTED_OPERATION         The specified @c locale is not supported, or the current @c locale does not have country name entry in the database.
1047          */
1048         result GetCountryName(const Locale& otherLocale, Tizen::Base::String& countryName) const;
1049
1050         /**
1051          * Gets the language name of the current instance of %Locale that is appropriate for display to the user. @n
1052          * The name is localized for the locale. For example, if this locale is
1053          * eng_US, the name is "English".
1054          *
1055          * @since                                       2.0
1056          *
1057          * @return                                      An error code
1058          * @param[out]                          languageName            The language name of the locale
1059          * @exception                           E_SUCCESS                       The method is successful.
1060          * @exception                           E_UNSUPPORTED_OPERATION         The current @c locale does not have country name entry in the database.
1061          */
1062         result GetLanguageName(Tizen::Base::String& languageName) const;
1063
1064         /**
1065          * Gets the language name of the current instance of %Locale that is appropriate for display to the user in the specified %Locale. @n
1066          * The name is localized for the specified locale (@c otherLocale). For example, if
1067          * the current instance is fra_FR and the @c otherLocale is eng_US, the name is "French";
1068          * if the current instance is engUS and the @c otherLocale is fra_FR, the name returned is "anglais".
1069          *
1070          * @since                                       2.0
1071          *
1072          * @return                                      An error code
1073          * @param[in]                           otherLocale                             An instance of %Locale according to which the language name of the specified %Locale is displayed
1074          * @param[out]                          languageName                    The language name of the locale
1075          * @exception                           E_SUCCESS                               The method is successful.
1076          * @exception                           E_UNSUPPORTED_OPERATION         The specified @c locale is not supported, or the current @c locale does not have country name entry in the database.
1077          */
1078         result GetLanguageName(const Locale& otherLocale, Tizen::Base::String& languageName) const;
1079
1080         /**
1081          * Sets the variant code with the specified variant code string. @n
1082          * The variant code string is converted to a uppercase letter even if it is set to a lowercase letter.
1083          *
1084          * @since                                       2.0
1085          *
1086          * @param[in]                           pVariantCode                    A pointer to the variant code
1087          */
1088         void SetVariantCodeString(const Tizen::Base::String* pVariantCode = null);
1089
1090         /**
1091          * Gets the language code equivalent to the specified language code string.
1092          *
1093          * @since                       2.0
1094          *
1095          * @param[in]           languageCodeString                              The language code, @n
1096          *                                                                      To get the specfied LanguageCode with the locale's ISO-15924 abbreviation script code, @n
1097          *                                                                      the form of languageCodeString should combine the ISO 639-2 language codes and the locale's ISO-15924 abbreviation script code by "-". @n
1098          *                                                                      For example, if the language code is "aze" and the script code is "latn", @n
1099          *                                                                      the languageCodeString is "aze-latn", and the LanguageCode is LANGUAGE_AZE_LATIN.
1100          * @return              An instance of LanguageCode associated with the @c languageCodeString.
1101          */
1102         static LanguageCode StringToLanguageCode(const Tizen::Base::String& languageCodeString);
1103
1104         /**
1105          * Gets the country code equivalent to the specified country code string.
1106          *
1107          * @since                       2.0
1108          *
1109          * @param[in]           countryCodeString                               The country code
1110          * @return              An instance of CountryCode associated with the @c countryCodeString.
1111          */
1112         static CountryCode StringToCountryCode(const Tizen::Base::String& countryCodeString);
1113
1114         /**
1115          * Gets the language code string equivalent to the specified @c languageCode.
1116          *
1117          * @since                       2.0
1118          *
1119          * @param[in]           languageCode                                    The language code
1120          * @return              The language code string associated with the @c languageCode, @n
1121          *                              else an empty string if languageCode is invaild.
1122          * @see StringToLanguageCode()
1123          */
1124         static Tizen::Base::String LanguageCodeToString(LanguageCode languageCode);
1125
1126         /**
1127          * Gets the country code string equivalent to the specified @c countryCode.
1128          *
1129          * @since                       2.0
1130          *
1131          * @param[in]           countryCode                                             The country code
1132          * @return              The ISO 3166-1 alpha-2 country code string associated with the @c countryCode, @n
1133          *                              else an empty string if countryCode is invaild.
1134          */
1135         static Tizen::Base::String CountryCodeToString(CountryCode countryCode);
1136
1137         /**
1138          * Gets the 2-letter language code string equivalent to the specified @c languageCode.
1139          *
1140          * @since                       2.0
1141          *
1142          * @param[in]           languageCode                                    The language code
1143          * @return              The ISO 639-2 language code string associated with the @c languageCode, @n
1144          *                              or The ISO 639-2 language code string with the ISO-15924 script code @n
1145          *                              if the @c languageCode represents The ISO 639-2 language code with the ISO-15924 script code, @n
1146          *                              else an empty string if languageCode is invaild.
1147          */
1148         static Tizen::Base::String LanguageCodeToTwoLetterLanguageCodeString(LanguageCode languageCode);
1149
1150         /**
1151          * Gets the language code equivalent to the specified 2-letter language code string.
1152          *
1153          * @since                       2.0
1154          *
1155          * @param[in]           languageCodeString                              The language code string
1156          * @return              An instance of LanguageCode associated with the @c languageCodeString.
1157          * @see                 StringToLanguageCode()
1158          */
1159         static LanguageCode TwoLetterLanguageCodeStringToLanguageCode(const Tizen::Base::String& languageCodeString);
1160
1161         /**
1162          * Gets the 3-letter country code string equivalent to the specified @c countryCode.
1163          *
1164          * @since                       2.0
1165          *
1166          * @param[in]           countryCode                                             The country code
1167          * @return              The ISO 3166-1 alpha-3 country code string associated with the @c countryCode, @n
1168          *                              else an empty string if countryCode is invaild
1169          * @see                 CountryCodeToString()
1170          * @remark              COUNTRY_AREA_419 returns an empty string, since it is not defined in the ISO 3166-1 alpha-3.
1171          */
1172         static Tizen::Base::String CountryCodeToThreeLetterCountryCodeString(CountryCode countryCode);
1173
1174         /**
1175          * Gets the country code equivalent to the specified 3-letter country code string.
1176          *
1177          * @since                       2.0
1178          *
1179          * @param[in]           countryCodeString                                The country code string
1180          * @return              An instance of CountryCode associated with the @c countryCodeString.
1181          * @see                 StringToCountryCode()
1182          */
1183         static CountryCode ThreeLetterCountryCodeStringToCountryCode(const Tizen::Base::String& countryCodeString);
1184
1185 private:
1186
1187         LanguageCode __languageCode;
1188         CountryCode __countryCode;
1189
1190         friend class _LocaleImpl;
1191         class _LocaleImpl* __pLocaleImpl;
1192
1193 }; // Locale
1194
1195 }} // Tizen::Locales
1196
1197 #endif //_FLCL_LOCALE_H_