2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0
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.
19 * @file FLclLocale.cpp
20 * @brief This is the implementation file for Locale class.
23 #include <unique_ptr.h>
25 #include <FBaseSysLog.h>
26 #include "FBase_StringConverter.h"
27 #include <FLclLocale.h>
29 #include "FLcl_LocaleImpl.h"
31 using namespace Tizen::Base;
33 namespace Tizen { namespace Locales
36 static const char* LanguageCodeString3LetterArray[LANGUAGE_MAX] =
39 "abk", /**< Abkhazian */
40 "ace", /**< Achinese */
42 "ada", /**< Adangme */
43 "ady", /**< Adyghe; Adygei */
44 "afa", /**< Afro-Asiatic languages */
45 "afh", /**< Afrihili */
46 "afr", /**< Afrikaans */
49 "akk", /**< Akkadian */
50 "sqi", /**< Albanian */
52 "alg", /**< Algonquian languages */
53 "alt", /**< Southern Altai */
54 "amh", /**< Amharic */
55 "ang", /**< English, Old (ca.450-1100) */
57 "apa", /**< Apache languages */
59 "arc", /**< Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE) */
60 "arg", /**< Aragonese */
61 "hye", /**< Armenian */
62 "arn", /**< Mapudungun; Mapuche */
63 "arp", /**< Arapaho */
64 "art", /**< Artificial languages */
66 "asm", /**< Assamese */
67 "ast", /**< Asturian; Bable; Leonese; Asturleonese */
68 "ath", /**< Athapascan languages */
69 "aus", /**< Australian languages */
71 "ave", /**< Avestan */
74 "aze", /**< Azerbaijani */
75 "aze-arab", /**< Azerbaijani (Arabic) */
76 "aze-cyrl", /**< Azerbaijani (Cyrillic) */
77 "aze-latn", /**< Azerbaijani (Latin) */
78 "bad", /**< Banda languages */
79 "bai", /**< Bamileke languages */
80 "bak", /**< Bashkir */
81 "bal", /**< Baluchi */
82 "bam", /**< Bambara */
83 "ban", /**< Balinese */
86 "bat", /**< Baltic languages */
87 "bej", /**< Beja; Bedawiyet */
88 "bel", /**< Belarusian */
90 "ben", /**< Bengali */
91 "ber", /**< Berber languages */
92 "bho", /**< Bhojpuri */
95 "bin", /**< Bini; Edo */
96 "bis", /**< Bislama */
97 "bla", /**< Siksika */
98 "bnt", /**< Bantu (Other) */
99 "bos", /**< Bosnian */
101 "bre", /**< Breton */
102 "btk", /**< Batak languages */
103 "bua", /**< Buriat */
104 "bug", /**< Buginese */
105 "bul", /**< Bulgarian */
106 "mya", /**< Burmese */
107 "byn", /**< Blin; Bilin */
109 "cai", /**< Central American Indian languages */
110 "car", /**< Galibi Carib */
111 "cat", /**< Catalan; Valencian */
112 "cau", /**< Caucasian languages */
113 "ceb", /**< Cebuano */
114 "cel", /**< Celtic languages */
115 "cha", /**< Chamorro */
116 "chb", /**< Chibcha */
117 "che", /**< Chechen */
118 "chg", /**< Chagatai */
119 "zho", /**< Chinese */
120 "zho-hans", /**< Chinese (Simplified) */
121 "zho-hant", /**< Chinese (Traditional) */
122 "chk", /**< Chuukese */
124 "chn", /**< Chinook jargon */
125 "cho", /**< Choctaw */
126 "chp", /**< Chipewyan; Dene Suline */
127 "chr", /**< Cherokee */
128 "chu", /**< Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic */
129 "chv", /**< Chuvash */
130 "chy", /**< Cheyenne */
131 "cmc", /**< Chamic languages */
132 "cop", /**< Coptic */
133 "cor", /**< Cornish */
134 "cos", /**< Corsican */
135 "cpe", /**< Creoles and pidgins, English based */
136 "cpf", /**< Creoles and pidgins, French-based */
137 "cpp", /**< Creoles and pidgins, Portuguese-based */
139 "crh", /**< Crimean Tatar; Crimean Turkish */
140 "crp", /**< Creoles and pidgins */
141 "csb", /**< Kashubian */
142 "cus", /**< Cushitic languages */
144 "dak", /**< Dakota */
145 "dan", /**< Danish */
146 "dar", /**< Dargwa */
147 "day", /**< Land Dayak languages */
148 "del", /**< Delaware */
149 "den", /**< Slave (Athapascan) */
150 "dgr", /**< Dogrib */
152 "div", /**< Divehi; Dhivehi; Maldivian */
154 "dra", /**< Dravidian languages */
155 "dsb", /**< Lower Sorbian */
157 "dum", /**< Dutch, Middle (ca.1050-1350) */
158 "nld", /**< Dutch; Flemish */
160 "dzo", /**< Dzongkha */
162 "egy", /**< Egyptian (Ancient) */
163 "eka", /**< Ekajuk */
164 "elx", /**< Elamite */
165 "eng", /**< English */
166 "enm", /**< English, Middle (1100-1500) */
167 "epo", /**< Esperanto */
168 "est", /**< Estonian */
170 "ewo", /**< Ewondo */
172 "fao", /**< Faroese */
174 "fij", /**< Fijian */
175 "fil", /**< Filipino; Pilipino */
176 "fin", /**< Finnish */
177 "fiu", /**< Finno-Ugrian languages */
179 "fra", /**< French */
180 "frm", /**< French, Middle (ca.1400-1600) */
181 "fro", /**< French, Old (842-ca.1400) */
182 "frr", /**< Northern Frisian */
183 "frs", /**< Eastern Frisian */
184 "fry", /**< Western Frisian */
186 "fur", /**< Friulian */
190 "gem", /**< Germanic languages */
191 "kat", /**< Georgian */
192 "deu", /**< German */
194 "gil", /**< Gilbertese */
195 "gla", /**< Gaelic; Scottish Gaelic */
197 "glg", /**< Galician */
199 "gmh", /**< German, Middle High (ca.1050-1500) */
200 "goh", /**< German, Old High (ca.750-1050) */
202 "gor", /**< Gorontalo */
203 "got", /**< Gothic */
205 "grc", /**< Greek, Ancient (to 1453) */
206 "ell", /**< Greek, Modern (1453-) */
207 "grn", /**< Guarani */
208 "gsw", /**< Swiss German; Alemannic; Alsatian */
209 "guj", /**< Gujarati */
210 "gwi", /**< Gwich'in */
212 "hat", /**< Haitian; Haitian Creole */
214 "hau-latn", /**< Hausa (Latin) */
215 "haw", /**< Hawaiian */
216 "heb", /**< Hebrew */
217 "her", /**< Herero */
218 "hil", /**< Hiligaynon */
219 "him", /**< Himachali */
221 "hit", /**< Hittite */
223 "hmo", /**< Hiri Motu */
224 "hrv", /**< Croatian */
225 "hsb", /**< Upper Sorbian */
226 "hun", /**< Hungarian */
230 "isl", /**< Icelandic */
232 "iii", /**< Sichuan Yi; Nuosu */
233 "ijo", /**< Ijo languages */
234 "iku", /**< Inuktitut */
235 "ile", /**< Interlingue; Occidental */
237 "ina", /**< Interlingua (International Auxiliary Language Association) */
238 "inc", /**< Indic languages */
239 "ind", /**< Indonesian */
240 "ine", /**< Indo-European languages */
241 "inh", /**< Ingush */
242 "ipk", /**< Inupiaq */
243 "ira", /**< Iranian languages */
244 "iro", /**< Iroquoian languages */
245 "ita", /**< Italian */
246 "jav", /**< Javanese */
247 "jbo", /**< Lojban */
248 "jpn", /**< Japanese */
249 "jpr", /**< Judeo-Persian */
250 "jrb", /**< Judeo-Arabic */
251 "kaa", /**< Kara-Kalpak */
252 "kab", /**< Kabyle */
253 "kac", /**< Kachin; Jingpho */
254 "kal", /**< Kalaallisut; Greenlandic */
256 "kan", /**< Kannada */
257 "kar", /**< Karen languages */
258 "kas", /**< Kashmiri */
259 "kau", /**< Kanuri */
261 "kaz", /**< Kazakh */
262 "kaz-cyrl", /**< Kazakh (Cyrillic) */
263 "kbd", /**< Kabardian */
265 "khi", /**< Khoisan languages */
266 "khm", /**< Central Khmer */
267 "kho", /**< Khotanese; Sakan */
268 "kik", /**< Kikuyu; Gikuyu */
269 "kin", /**< Kinyarwanda */
270 "kir", /**< Kirghiz; Kyrgyz */
271 "kmb", /**< Kimbundu */
272 "kok", /**< Konkani */
275 "kor", /**< Korean */
276 "kos", /**< Kosraean */
277 "kpe", /**< Kpelle */
278 "krc", /**< Karachay-Balkar */
279 "krl", /**< Karelian */
280 "kro", /**< Kru languages */
281 "kru", /**< Kurukh */
282 "kua", /**< Kuanyama; Kwanyama */
284 "kur", /**< Kurdish */
285 "kut", /**< Kutenai */
286 "lad", /**< Ladino */
287 "lah", /**< Lahnda */
291 "lav", /**< Latvian */
292 "lez", /**< Lezghian */
293 "lim", /**< Limburgan; Limburger; Limburgish */
294 "lin", /**< Lingala */
295 "lit", /**< Lithuanian */
298 "ltz", /**< Luxembourgish; Letzeburgesch */
299 "lua", /**< Luba-Lulua */
300 "lub", /**< Luba-Katanga */
302 "lui", /**< Luiseno */
304 "luo", /**< Luo (Kenya and Tanzania) */
305 "lus", /**< Lushai */
306 "mkd", /**< Macedonian */
307 "mad", /**< Madurese */
308 "mag", /**< Magahi */
309 "mah", /**< Marshallese */
310 "mai", /**< Maithili */
311 "mak", /**< Makasar */
312 "mal", /**< Malayalam */
313 "man", /**< Mandingo */
315 "map", /**< Austronesian languages */
316 "mar", /**< Marathi */
319 "mdf", /**< Moksha */
320 "mdr", /**< Mandar */
322 "mga", /**< Irish, Middle (900-1200) */
323 "mic", /**< Mi'kmaq; Micmac */
324 "min", /**< Minangkabau */
325 "mis", /**< Uncoded languages */
326 "mkh", /**< Mon-Khmer languages */
327 "mlg", /**< Malagasy */
328 "mlt", /**< Maltese */
329 "mnc", /**< Manchu */
330 "mni", /**< Manipuri */
331 "mno", /**< Manobo languages */
332 "moh", /**< Mohawk */
333 "mon", /**< Mongolian */
335 "mul", /**< Multiple languages */
336 "mun", /**< Munda languages */
338 "mwl", /**< Mirandese */
339 "mwr", /**< Marwari */
340 "myn", /**< Mayan languages */
342 "nah", /**< Nahuatl languages */
343 "nai", /**< North American Indian languages */
344 "nap", /**< Neapolitan */
346 "nav", /**< Navajo; Navaho */
347 "nbl", /**< Ndebele, South; South Ndebele */
348 "nde", /**< Ndebele, North; North Ndebele */
349 "ndo", /**< Ndonga */
350 "nds", /**< Low German; Low Saxon; German, Low; Saxon, Low */
351 "nep", /**< Nepali */
352 "new", /**< Nepal Bhasa; Newari */
354 "nic", /**< Niger-Kordofanian languages */
355 "niu", /**< Niuean */
356 "nno", /**< Norwegian Nynorsk; Nynorsk, Norwegian */
357 "nob", /**< Bokmal, Norwegian; Norwegian Bokmal */
359 "non", /**< Norse, Old */
360 "nor", /**< Norwegian */
362 "nso", /**< Pedi; Sepedi; Northern Sotho */
363 "nub", /**< Nubian languages */
364 "nwc", /**< Classical Newari; Old Newari; Classical Nepal Bhasa */
365 "nya", /**< Chichewa; Chewa; Nyanja */
366 "nym", /**< Nyamwezi */
367 "nyn", /**< Nyankole */
370 "oci", /**< Occitan (post 1500); Provencal */
371 "oji", /**< Ojibwa */
375 "oss", /**< Ossetian; Ossetic */
376 "ota", /**< Turkish, Ottoman (1500-1928) */
377 "oto", /**< Otomian languages */
378 "paa", /**< Papuan languages */
379 "pag", /**< Pangasinan */
380 "pal", /**< Pahlavi */
381 "pam", /**< Pampanga; Kapampangan */
382 "pan", /**< Panjabi; Punjabi */
383 "pan-arab", /**< Panjabi; Punjabi (Arabic) */
384 "pan-guru", /**< Panjabi; Punjabi (Gurmukhi) */
385 "pap", /**< Papiamento */
386 "pau", /**< Palauan */
387 "peo", /**< Persian, Old (ca.600-400 B.C.) */
388 "fas", /**< Persian */
389 "phi", /**< Philippine languages */
390 "phn", /**< Phoenician */
392 "pol", /**< Polish */
393 "pon", /**< Pohnpeian */
394 "por", /**< Portuguese */
395 "pra", /**< Prakrit languages */
396 "pro", /**< Provencal, Old (to 1500) */
397 "pus", /**< Pushto; Pashto */
398 "qaa-qtz", /**< Reserved for local use */
399 "que", /**< Quechua */
400 "raj", /**< Rajasthani */
401 "rap", /**< Rapanui */
402 "rar", /**< Rarotongan; Cook Islands Maori */
403 "roa", /**< Romance languages */
404 "roh", /**< Romansh */
405 "rom", /**< Romany */
406 "ron", /**< Romanian; Moldavian; Moldovan */
408 "rup", /**< Aromanian; Arumanian; Macedo-Romanian */
409 "rus", /**< Russian */
410 "sad", /**< Sandawe */
413 "sai", /**< South American Indian (Other) */
414 "sal", /**< Salishan languages */
415 "sam", /**< Samaritan Aramaic */
416 "san", /**< Sanskrit */
418 "sat", /**< Santali */
419 "scn", /**< Sicilian */
421 "sel", /**< Selkup */
422 "sem", /**< Semitic languages */
423 "sga", /**< Irish, Old (to 900) */
424 "sgn", /**< Sign Languages */
426 "sid", /**< Sidamo */
427 "sin", /**< Sinhala; Sinhalese */
428 "sio", /**< Siouan languages */
429 "sit", /**< Sino-Tibetan languages */
430 "sla", /**< Slavic languages */
431 "slk", /**< Slovak */
432 "slv", /**< Slovenian */
433 "sma", /**< Southern Sami */
434 "sme", /**< Northern Sami */
435 "smi", /**< Sami languages */
436 "smj", /**< Lule Sami */
437 "smn", /**< Inari Sami */
438 "smo", /**< Samoan */
439 "sms", /**< Skolt Sami */
441 "snd", /**< Sindhi */
442 "snk", /**< Soninke */
443 "sog", /**< Sogdian */
444 "som", /**< Somali */
445 "son", /**< Songhai languages */
446 "sot", /**< Sotho, Southern */
447 "spa", /**< Spanish; Castilian */
448 "srd", /**< Sardinian */
449 "srn", /**< Sranan Tongo */
450 "srp", /**< Serbian */
451 "srp-cyrl", /**< Serbian (Cyrillic) */
452 "srp-latn", /**< Serbian (Latin) */
454 "ssa", /**< Nilo-Saharan languages */
456 "suk", /**< Sukuma */
457 "sun", /**< Sundanese */
459 "sux", /**< Sumerian */
460 "swa", /**< Swahili */
461 "swe", /**< Swedish */
462 "syc", /**< Classical Syriac */
463 "syr", /**< Syriac */
464 "tah", /**< Tahitian */
465 "tai", /**< Tai languages */
468 "tel", /**< Telugu */
470 "ter", /**< Tereno */
473 "tgl", /**< Tagalog */
475 "bod", /**< Tibetan */
477 "tir", /**< Tigrinya */
479 "tkl", /**< Tokelau */
480 "tlh", /**< Klingon; tlhIngan-Hol */
481 "tli", /**< Tlingit */
482 "tmh", /**< Tamashek */
483 "tog", /**< Tonga (Nyasa) */
484 "ton", /**< Tonga (Tonga Islands) */
485 "tpi", /**< Tok Pisin */
486 "tsi", /**< Tsimshian */
487 "tsn", /**< Tswana */
488 "tso", /**< Tsonga */
489 "tuk", /**< Turkmen */
490 "tuk-cyrl", /**< Turkmen (Cyrillic) */
491 "tuk-latn", /**< Turkmen (Latin) */
492 "tum", /**< Tumbuka */
493 "tup", /**< Tupi languages */
494 "tur", /**< Turkish */
495 "tut", /**< Altaic languages */
496 "tvl", /**< Tuvalu */
498 "tyv", /**< Tuvinian */
499 "udm", /**< Udmurt */
500 "uga", /**< Ugaritic */
501 "uig", /**< Uighur; Uyghur */
502 "ukr", /**< Ukrainian */
503 "umb", /**< Umbundu */
504 "und", /**< Undetermined */
507 "uzb-arab", /**< Uzbek (Arabic) */
508 "uzb-cyrl", /**< Uzbek (Cyrillic) */
509 "uzb-latn", /**< Uzbek (Latin) */
512 "vie", /**< Vietnamese */
513 "vls", /**< Vlaams; Flemish */
514 "vol", /**< Volapuk */
516 "wak", /**< Wakashan languages */
517 "wal", /**< Walamo */
521 "wen", /**< Sorbian languages */
522 "wln", /**< Walloon */
524 "xal", /**< Kalmyk; Oirat */
527 "yap", /**< Yapese */
528 "yid", /**< Yiddish */
529 "yor", /**< Yoruba */
530 "ypk", /**< Yupik languages */
531 "zap", /**< Zapotec */
532 "zbl", /**< Blissymbols; Blissymbolics; Bliss */
533 "zen", /**< Zenaga */
534 "zha", /**< Zhuang; Chuang */
535 "znd", /**< Zande languages */
538 "zxx", /**< No linguistic content; Not applicable */
539 "zza", /**< Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki */
543 static const char CountryCodeString2LetterArray[COUNTRY_MAX][4] =
545 "AF", /**< AFGHANISTAN */
546 "AX", /**< ALAND ISLANDS */
547 "AL", /**< ALBANIA */
548 "DZ", /**< ALGERIA */
549 "AS", /**< AMERICAN SAMOA */
550 "AD", /**< ANDORRA */
552 "AI", /**< ANGUILLA */
553 "AQ", /**< ANTARCTICA */
554 "AG", /**< ANTIGUA AND BARBUDA */
555 "AR", /**< ARGENTINA */
556 "AM", /**< ARMENIA */
558 "AU", /**< AUSTRALIA */
559 "AT", /**< AUSTRIA */
560 "AZ", /**< AZERBAIJAN */
561 "BS", /**< BAHAMAS */
562 "BH", /**< BAHRAIN */
563 "BD", /**< BANGLADESH */
564 "BB", /**< BARBADOS */
565 "BY", /**< BELARUS */
566 "BE", /**< BELGIUM */
569 "BM", /**< BERMUDA */
571 "BO", /**< BOLIVIA */
572 "BA", /**< BOSNIA AND HERZEGOVINA */
573 "BW", /**< BOTSWANA */
574 "BV", /**< BOUVET ISLAND */
576 "IO", /**< BRITISH INDIAN OCEAN TERRITORY */
577 "BN", /**< BRUNEI DARUSSALAM */
578 "BG", /**< BULGARIA */
579 "BF", /**< BURKINA FASO */
580 "BI", /**< BURUNDI */
581 "KH", /**< CAMBODIA */
582 "CM", /**< CAMEROON */
584 "CV", /**< CAPE VERDE */
585 "KY", /**< CAYMAN ISLANDS */
586 "CF", /**< CENTRAL AFRICAN REPUBLIC */
590 "CX", /**< CHRISTMAS ISLAND */
591 "CC", /**< COCOS (KEELING) ISLANDS */
592 "CO", /**< COLOMBIA */
593 "KM", /**< COMOROS */
595 "CD", /**< CONGO, THE DEMOCRATIC REPUBLIC OF THE */
596 "CK", /**< COOK ISLANDS */
597 "CR", /**< COSTA RICA */
598 "CI", /**< COTE D'IVOIRE */
599 "HR", /**< CROATIA */
602 "CZ", /**< CZECH REPUBLIC */
603 "DK", /**< DENMARK */
604 "DJ", /**< DJIBOUTI */
605 "DM", /**< DOMINICA */
606 "DO", /**< DOMINICAN REPUBLIC */
607 "EC", /**< ECUADOR */
609 "SV", /**< EL SALVADOR */
610 "GQ", /**< EQUATORIAL GUINEA */
611 "ER", /**< ERITREA */
612 "EE", /**< ESTONIA */
613 "ET", /**< ETHIOPIA */
614 "FK", /**< FALKLAND ISLANDS (MALVINAS) */
615 "FO", /**< FAROE ISLANDS */
617 "FI", /**< FINLAND */
619 "GF", /**< FRENCH GUIANA */
620 "PF", /**< FRENCH POLYNESIA */
621 "TF", /**< FRENCH SOUTHERN TERRITORIES */
624 "GE", /**< GEORGIA */
625 "DE", /**< GERMANY */
627 "GI", /**< GIBRALTAR */
629 "GL", /**< GREENLAND */
630 "GD", /**< GRENADA */
631 "GP", /**< GUADELOUPE */
633 "GT", /**< GUATEMALA */
635 "GW", /**< GUINEA-BISSAU */
638 "HM", /**< HEARD ISLAND AND MCDONALD ISLANDS */
639 "VA", /**< HOLY SEE (VATICAN CITY STATE) */
640 "HN", /**< HONDURAS */
641 "HK", /**< HONG KONG */
642 "HU", /**< HUNGARY */
643 "IS", /**< ICELAND */
645 "ID", /**< INDONESIA */
646 "IR", /**< IRAN, ISLAMIC REPUBLIC OF */
648 "IE", /**< IRELAND */
651 "JM", /**< JAMAICA */
654 "KZ", /**< KAZAKHSTAN */
656 "KI", /**< KIRIBATI */
657 "KP", /**< KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF */
658 "KR", /**< KOREA, REPUBLIC OF */
660 "KG", /**< KYRGYZSTAN */
661 "LA", /**< LAO PEOPLE'S DEMOCRATIC REPUBLIC */
663 "LB", /**< LEBANON */
664 "LS", /**< LESOTHO */
665 "LR", /**< LIBERIA */
666 "LY", /**< LIBYAN ARAB JAMAHIRIYA */
667 "LI", /**< LIECHTENSTEIN */
668 "LT", /**< LITHUANIA */
669 "LU", /**< LUXEMBOURG */
671 "MK", /**< MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF */
672 "MG", /**< MADAGASCAR */
674 "MY", /**< MALAYSIA */
675 "MV", /**< MALDIVES */
678 "MH", /**< MARSHALL ISLANDS */
679 "MQ", /**< MARTINIQUE */
680 "MR", /**< MAURITANIA */
681 "MU", /**< MAURITIUS */
682 "YT", /**< MAYOTTE */
684 "FM", /**< MICRONESIA, FEDERATED STATES OF */
685 "MD", /**< MOLDOVA, REPUBLIC OF */
687 "MN", /**< MONGOLIA */
688 "MS", /**< MONTSERRAT */
689 "MA", /**< MOROCCO */
690 "MZ", /**< MOZAMBIQUE */
691 "MM", /**< MYANMAR */
692 "NA", /**< NAMIBIA */
695 "NL", /**< NETHERLANDS */
696 "AN", /**< NETHERLANDS ANTILLES */
697 "NC", /**< NEW CALEDONIA */
698 "NZ", /**< NEW ZEALAND */
699 "NI", /**< NICARAGUA */
701 "NG", /**< NIGERIA */
703 "NF", /**< NORFOLK ISLAND */
704 "MP", /**< NORTHERN MARIANA ISLANDS */
707 "PK", /**< PAKISTAN */
709 "PS", /**< PALESTINIAN TERRITORY, OCCUPIED */
711 "PG", /**< PAPUA NEW GUINEA */
712 "PY", /**< PARAGUAY */
714 "PH", /**< PHILIPPINES */
715 "PN", /**< PITCAIRN */
717 "PT", /**< PORTUGAL */
718 "PR", /**< PUERTO RICO */
720 "RE", /**< REUNION */
721 "RO", /**< ROMANIA */
722 "RU", /**< RUSSIAN FEDERATION */
724 "SH", /**< SAINT HELENA */
725 "KN", /**< SAINT KITTS AND NEVIS */
726 "LC", /**< SAINT LUCIA */
727 "PM", /**< SAINT PIERRE AND MIQUELON */
728 "VC", /**< SAINT VINCENT AND THE GRENADINES */
730 "SM", /**< SAN MARINO */
731 "ST", /**< SAO TOME AND PRINCIPE */
732 "SA", /**< SAUDI ARABIA */
733 "SN", /**< SENEGAL */
734 "SC", /**< SEYCHELLES */
735 "SL", /**< SIERRA LEONE */
736 "SG", /**< SINGAPORE */
737 "SK", /**< SLOVAKIA */
738 "SI", /**< SLOVENIA */
739 "SB", /**< SOLOMON ISLANDS */
740 "SO", /**< SOMALIA */
741 "ZA", /**< SOUTH AFRICA */
742 "GS", /**< SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS */
744 "LK", /**< SRI LANKA */
746 "SR", /**< SURINAME */
747 "SJ", /**< SVALBARD AND JAN MAYEN */
748 "SZ", /**< SWAZILAND */
750 "CH", /**< SWITZERLAND */
751 "SY", /**< SYRIAN ARAB REPUBLIC */
752 "TW", /**< TAIWAN, PROVINCE OF CHINA */
753 "TJ", /**< TAJIKISTAN */
754 "TZ", /**< TANZANIA, UNITED REPUBLIC OF */
755 "TH", /**< THAILAND */
756 "TL", /**< TIMOR-LESTE */
758 "TK", /**< TOKELAU */
760 "TT", /**< TRINIDAD AND TOBAGO */
761 "TN", /**< TUNISIA */
763 "TM", /**< TURKMENISTAN */
764 "TC", /**< TURKS AND CAICOS ISLANDS */
767 "UA", /**< UKRAINE */
768 "AE", /**< UNITED ARAB EMIRATES */
769 "GB", /**< UNITED KINGDOM */
770 "US", /**< UNITED STATES */
771 "UM", /**< UNITED STATES MINOR OUTLYING ISLANDS */
772 "UY", /**< URUGUAY */
773 "UZ", /**< UZBEKISTAN */
774 "VU", /**< VANUATU */
775 "VE", /**< VENEZUELA */
776 "VN", /**< VIET NAM */
777 "VG", /**< VIRGIN ISLANDS, BRITISH */
778 "VI", /**< VIRGIN ISLANDS, U.S. */
779 "WF", /**< WALLIS AND FUTUNA */
780 "EH", /**< WESTERN SAHARA */
783 "ZW", /**< ZIMBABWE */
785 "ME" /**< MONTENEGRO */
789 /////////////////////////////////////////////////////////////////////////////////////////////////////
792 Locale::Locale(const Locale& other)
793 : __languageCode(other.__languageCode)
794 , __countryCode(other.__countryCode)
795 , __pLocaleImpl(other.__pLocaleImpl->CloneN())
797 SysAssert(__pLocaleImpl);
801 Locale::Locale(LanguageCode languageCode, CountryCode countryCode, const String* pVariantCodeString)
802 : __languageCode((languageCode < LANGUAGE_MAX)? languageCode : LANGUAGE_INVALID)
803 , __countryCode((countryCode < COUNTRY_MAX) ? countryCode : COUNTRY_INVALID)
804 , __pLocaleImpl(null)
806 const char* pLanguage = (languageCode != LANGUAGE_INVALID) ? LanguageCodeString3LetterArray[__languageCode] : null;
807 const char* pCountry = (countryCode != COUNTRY_INVALID) ? CountryCodeString2LetterArray[__countryCode] : null;
809 std::unique_ptr<char[]> pVariantCode (null);
810 if (pVariantCodeString)
812 pVariantCode.reset(_StringConverter::CopyToCharArrayN(*pVariantCodeString));
815 __pLocaleImpl = new (std::nothrow) _LocaleImpl(pLanguage, pCountry, pVariantCode.get());
816 SysAssert(__pLocaleImpl);
821 Locale::operator =(const Locale& other)
825 __languageCode = other.__languageCode;
826 __countryCode = other.__countryCode;
828 delete __pLocaleImpl;
829 __pLocaleImpl = other.__pLocaleImpl->CloneN();
835 Locale::~Locale(void)
837 delete __pLocaleImpl;
838 __pLocaleImpl = null;
843 Locale::SetVariantCodeString(const String* pVariantCode)
845 std::unique_ptr<char[]> pVariant (null);
848 pVariant.reset(_StringConverter::CopyToCharArrayN(*pVariantCode));
850 __pLocaleImpl->SetVariantCodeString(pVariant.get());
856 Locale::GetLanguageCode(void) const
858 return __languageCode;
863 Locale::GetCountryCode(void) const
865 return __countryCode;
870 Locale::GetLanguageCodeString(void) const
872 return __pLocaleImpl->GetLanguageCodeString(false);
877 Locale::GetCountryCodeString(void) const
879 return __pLocaleImpl->Get2LetterCountryCodeString();
884 Locale::GetVariantCodeString(void) const
886 return __pLocaleImpl->GetVariantCodeString();
891 Locale::GetLocaleCodeString(void) const
893 String lclCode(__pLocaleImpl->GetLanguageCodeString(false));
894 if (!lclCode.IsEmpty())
896 lclCode.Append(L"_");
897 lclCode.Append(GetCountryCodeString());
899 String varCode(__pLocaleImpl->GetVariantCodeString());
900 if (!varCode.IsEmpty())
902 lclCode.Append(L"_");
903 lclCode.Append(varCode);
911 Locale::GetCountryName(String& countryName) const
913 return __pLocaleImpl->GetCountryName(countryName);
918 Locale::GetCountryName(const Locale& otherLocale, String& countryName) const
920 return __pLocaleImpl->GetCountryName(*otherLocale.__pLocaleImpl, countryName);
925 Locale::GetLanguageName(String& languageName) const
927 return __pLocaleImpl->GetLanguageName(languageName);
932 Locale::GetLanguageName(const Locale& otherLocale, String& languageName) const
934 return __pLocaleImpl->GetLanguageName(*otherLocale.__pLocaleImpl, languageName);
938 Locale::operator ==(const Locale& other) const
940 bool isEqual = ((this->GetCountryCode() == other.GetCountryCode())
941 && (this->GetLanguageCode() == other.GetLanguageCode())
942 && (this->GetVariantCodeString() == other.GetVariantCodeString()));
947 Locale::operator !=(const Locale& other) const
949 return !(*this == other);
953 Locale::Equals(const Object& obj) const
955 const Locale* pOtherLocale = dynamic_cast< const Locale* >(&obj);
958 return *this == *pOtherLocale;
964 Locale::GetHashCode(void) const
966 return __pLocaleImpl->GetHashCode();
971 Locale::StringToLanguageCode(const String& languageCodeString)
973 for (int i = 0; i < LANGUAGE_MAX; i++)
975 if (languageCodeString == LanguageCodeString3LetterArray[i])
977 return (LanguageCode) i;
980 SysTryReturn(NID_LCL, false,LANGUAGE_INVALID, E_INVALID_ARG, "languageCodeStirng [%ls] is invalid", languageCodeString.GetPointer());
981 return LANGUAGE_INVALID;
986 Locale::StringToCountryCode(const String& countryCodeString)
988 for (int i = 0; i < COUNTRY_MAX; i++)
990 if (countryCodeString == CountryCodeString2LetterArray[i])
992 return (CountryCode) i;
995 SysTryReturn (NID_LCL, false, COUNTRY_INVALID, E_INVALID_ARG , "countryCodeString [%ls] is invalid", countryCodeString.GetPointer());
996 return COUNTRY_INVALID;
1001 Locale::LanguageCodeToString(LanguageCode languageCode)
1003 return (languageCode < LANGUAGE_MAX)
1004 ? LanguageCodeString3LetterArray[languageCode]
1010 Locale::CountryCodeToString(CountryCode countryCode)
1012 return (countryCode < COUNTRY_MAX)
1013 ? CountryCodeString2LetterArray[countryCode]
1019 Locale::LanguageCodeToTwoLetterLanguageCodeString(LanguageCode languageCode)
1021 return (languageCode < LANGUAGE_MAX)
1022 ? _LocaleImpl::Get2LetterLanguageCodeString(LanguageCodeString3LetterArray[languageCode])
1028 Locale::TwoLetterLanguageCodeStringToLanguageCode(const String& languageCodeString)
1032 languageCodeString.IndexOf(L"-", 0, index);
1034 if (languageCodeString.GetLength() == 2 || index == 2)
1036 std::unique_ptr<char[]> pLangStr (_StringConverter::CopyToCharArrayN(languageCodeString));
1037 return StringToLanguageCode(_LocaleImpl::Get3LetterLanguageCodeString(pLangStr.get()));
1039 return LANGUAGE_INVALID;
1044 Locale::CountryCodeToThreeLetterCountryCodeString(CountryCode countryCode)
1046 return (countryCode < COUNTRY_MAX)
1047 ? _LocaleImpl::Get3LetterCountryCodeString(CountryCodeString2LetterArray[countryCode])
1053 Locale::ThreeLetterCountryCodeStringToCountryCode(const String& countryCodeString)
1055 if (countryCodeString.GetLength() == 3)
1057 for (int i = 0; i < COUNTRY_MAX; i++)
1059 String countryCode(_LocaleImpl::Get3LetterCountryCodeString(CountryCodeString2LetterArray[i]));
1060 if (countryCodeString.Equals(countryCode, false))
1062 return static_cast<CountryCode> (i);
1067 return COUNTRY_INVALID;
1072 }; // Tizen::Locales