/src/libstaroffice/src/lib/StarLanguage.cxx
Line | Count | Source |
1 | | /* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */ |
2 | | |
3 | | /* libstaroffice |
4 | | * Version: MPL 2.0 / LGPLv2+ |
5 | | * |
6 | | * The contents of this file are subject to the Mozilla Public License Version |
7 | | * 2.0 (the "License"); you may not use this file except in compliance with |
8 | | * the License or as specified alternatively below. You may obtain a copy of |
9 | | * the License at http://www.mozilla.org/MPL/ |
10 | | * |
11 | | * Software distributed under the License is distributed on an "AS IS" basis, |
12 | | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
13 | | * for the specific language governing rights and limitations under the |
14 | | * License. |
15 | | * |
16 | | * Major Contributor(s): |
17 | | * Copyright (C) 2002 William Lachance (wrlach@gmail.com) |
18 | | * Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net) |
19 | | * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch) |
20 | | * Copyright (C) 2006, 2007 Andrew Ziem |
21 | | * Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr) |
22 | | * |
23 | | * |
24 | | * All Rights Reserved. |
25 | | * |
26 | | * For minor contributions see the git repository. |
27 | | * |
28 | | * Alternatively, the contents of this file may be used under the terms of |
29 | | * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"), |
30 | | * in which case the provisions of the LGPLv2+ are applicable |
31 | | * instead of those above. |
32 | | */ |
33 | | |
34 | | #include <map> |
35 | | #include <string> |
36 | | |
37 | | #include <librevenge/librevenge.h> |
38 | | |
39 | | #include "STOFFStringStream.hxx" |
40 | | |
41 | | #include "StarLanguage.hxx" |
42 | | |
43 | | namespace StarLanguage |
44 | | { |
45 | | //! the different language |
46 | | enum Language { |
47 | | LANGUAGE_DONTKNOW=0x03FF, |
48 | | LANGUAGE_NONE=0x00FF, |
49 | | LANGUAGE_SYSTEM=0x0000, |
50 | | LANGUAGE_AFRIKAANS=0x0436, |
51 | | LANGUAGE_ALBANIAN=0x041C, |
52 | | LANGUAGE_ARABIC=0x0001, |
53 | | LANGUAGE_ARABIC_SAUDI_ARABIA=0x0401, |
54 | | LANGUAGE_ARABIC_IRAQ=0x0801, |
55 | | LANGUAGE_ARABIC_EGYPT=0x0C01, |
56 | | LANGUAGE_ARABIC_LIBYA=0x1001, |
57 | | LANGUAGE_ARABIC_ALGERIA=0x1401, |
58 | | LANGUAGE_ARABIC_MOROCCO=0x1801, |
59 | | LANGUAGE_ARABIC_TUNISIA=0x1C01, |
60 | | LANGUAGE_ARABIC_OMAN=0x2001, |
61 | | LANGUAGE_ARABIC_YEMEN=0x2401, |
62 | | LANGUAGE_ARABIC_SYRIA=0x2801, |
63 | | LANGUAGE_ARABIC_JORDAN=0x2C01, |
64 | | LANGUAGE_ARABIC_LEBANON=0x3001, |
65 | | LANGUAGE_ARABIC_KUWAIT=0x3401, |
66 | | LANGUAGE_ARABIC_UAE=0x3801, |
67 | | LANGUAGE_ARABIC_BAHRAIN=0x3C01, |
68 | | LANGUAGE_ARABIC_QATAR=0x4001, |
69 | | LANGUAGE_ARMENIAN=0x042B, |
70 | | LANGUAGE_ASSAMESE=0x044D, |
71 | | LANGUAGE_AZERI=0x002C, |
72 | | LANGUAGE_AZERI_LATIN=0x042C, |
73 | | LANGUAGE_AZERI_CYRILLIC=0x082C, |
74 | | LANGUAGE_BASQUE=0x042D, |
75 | | LANGUAGE_BELARUSIAN=0x0423, |
76 | | LANGUAGE_BENGALI=0x0445, |
77 | | LANGUAGE_BULGARIAN=0x0402, |
78 | | LANGUAGE_BURMESE=0x0455, |
79 | | LANGUAGE_CATALAN=0x0403, |
80 | | LANGUAGE_CHINESE=0x0004, |
81 | | LANGUAGE_CHINESE_TRADITIONAL=0x0404, |
82 | | LANGUAGE_CHINESE_SIMPLIFIED=0x0804, |
83 | | LANGUAGE_CHINESE_HONGKONG=0x0C04, |
84 | | LANGUAGE_CHINESE_SINGAPORE=0x1004, |
85 | | LANGUAGE_CHINESE_MACAU=0x1404, |
86 | | LANGUAGE_CZECH=0x0405, |
87 | | LANGUAGE_DANISH=0x0406, |
88 | | LANGUAGE_DUTCH=0x0413, |
89 | | LANGUAGE_DUTCH_BELGIAN=0x0813, |
90 | | LANGUAGE_ENGLISH=0x0009, |
91 | | LANGUAGE_ENGLISH_US=0x0409, |
92 | | LANGUAGE_ENGLISH_UK=0x0809, |
93 | | LANGUAGE_ENGLISH_AUS=0x0C09, |
94 | | LANGUAGE_ENGLISH_CAN=0x1009, |
95 | | LANGUAGE_ENGLISH_NZ=0x1409, |
96 | | LANGUAGE_ENGLISH_EIRE=0x1809, |
97 | | LANGUAGE_ENGLISH_SAFRICA=0x1C09, |
98 | | LANGUAGE_ENGLISH_JAMAICA=0x2009, |
99 | | LANGUAGE_ENGLISH_CARRIBEAN=0x2409, |
100 | | LANGUAGE_ENGLISH_BELIZE=0x2809, |
101 | | LANGUAGE_ENGLISH_TRINIDAD=0x2C09, |
102 | | LANGUAGE_ENGLISH_ZIMBABWE=0x3009, |
103 | | LANGUAGE_ENGLISH_PHILIPPINES=0x3409, |
104 | | LANGUAGE_ESTONIAN=0x0425, |
105 | | LANGUAGE_FAEROESE=0x0438, |
106 | | LANGUAGE_FARSI=0x0429, |
107 | | LANGUAGE_FINNISH=0x040B, |
108 | | LANGUAGE_FRENCH=0x040C, |
109 | | LANGUAGE_FRENCH_BELGIAN=0x080C, |
110 | | LANGUAGE_FRENCH_CANADIAN=0x0C0C, |
111 | | LANGUAGE_FRENCH_SWISS=0x100C, |
112 | | LANGUAGE_FRENCH_LUXEMBOURG=0x140C, |
113 | | LANGUAGE_FRENCH_MONACO=0x180C, |
114 | | LANGUAGE_FRENCH_WEST_INDIES=0x1C0C, |
115 | | LANGUAGE_FRENCH_REUNION=0x200C, |
116 | | LANGUAGE_FRENCH_ZAIRE=0x240C, |
117 | | LANGUAGE_FRENCH_SENEGAL=0x280C, |
118 | | LANGUAGE_FRENCH_CAMEROON=0x2C0C, |
119 | | LANGUAGE_FRENCH_COTE_D_IVOIRE=0x300C, |
120 | | LANGUAGE_FRENCH_MALI=0x340C, |
121 | | LANGUAGE_FRISIAN_NETHERLANDS=0x0462, |
122 | | LANGUAGE_GAELIC_SCOTLAND=0x043C, |
123 | | LANGUAGE_GAELIC_IRELAND=0x083C, |
124 | | LANGUAGE_GALICIAN=0x0456, |
125 | | LANGUAGE_GEORGIAN=0x0437, |
126 | | LANGUAGE_GERMAN=0x0407, |
127 | | LANGUAGE_GERMAN_SWISS=0x0807, |
128 | | LANGUAGE_GERMAN_AUSTRIAN=0x0C07, |
129 | | LANGUAGE_GERMAN_LUXEMBOURG=0x1007, |
130 | | LANGUAGE_GERMAN_LIECHTENSTEIN=0x1407, |
131 | | LANGUAGE_GREEK=0x0408, |
132 | | LANGUAGE_GUJARATI=0x0447, |
133 | | LANGUAGE_HEBREW=0x040D, |
134 | | LANGUAGE_HINDI=0x0439, |
135 | | LANGUAGE_HUNGARIAN=0x040E, |
136 | | LANGUAGE_ICELANDIC=0x040F, |
137 | | LANGUAGE_INDONESIAN=0x0421, |
138 | | LANGUAGE_ITALIAN=0x0410, |
139 | | LANGUAGE_ITALIAN_SWISS=0x0810, |
140 | | LANGUAGE_JAPANESE=0x0411, |
141 | | LANGUAGE_KANNADA=0x044B, |
142 | | LANGUAGE_KASHMIRI=0x0460, |
143 | | LANGUAGE_KASHMIRI_INDIA=0x0860, |
144 | | LANGUAGE_KAZAK=0x043F, |
145 | | LANGUAGE_KHMER=0x0453, |
146 | | LANGUAGE_KIRGHIZ=0x0440, |
147 | | LANGUAGE_KONKANI=0x0457, |
148 | | LANGUAGE_KOREAN=0x0412, |
149 | | LANGUAGE_KOREAN_JOHAB=0x0812, |
150 | | LANGUAGE_LAO=0x0454, |
151 | | LANGUAGE_LATVIAN=0x0426, |
152 | | LANGUAGE_LITHUANIAN=0x0427, |
153 | | LANGUAGE_LITHUANIAN_CLASSIC=0x0827, |
154 | | LANGUAGE_MACEDONIAN=0x042F, |
155 | | LANGUAGE_MALAY=0x003E, |
156 | | LANGUAGE_MALAY_MALAYSIA=0x043E, |
157 | | LANGUAGE_MALAY_BRUNEI_DARUSSALAM=0x083E, |
158 | | LANGUAGE_MALAYALAM=0x044C, |
159 | | LANGUAGE_MALTESE=0x043A, |
160 | | LANGUAGE_MANIPURI=0x0458, |
161 | | LANGUAGE_MARATHI=0x044E, |
162 | | LANGUAGE_MONGOLIAN=0x0450, |
163 | | LANGUAGE_NEPALI=0x0461, |
164 | | LANGUAGE_NEPALI_INDIA=0x0861, |
165 | | LANGUAGE_NORWEGIAN=0x0014, |
166 | | LANGUAGE_NORWEGIAN_BOKMAL=0x0414, |
167 | | LANGUAGE_NORWEGIAN_NYNORSK=0x0814, |
168 | | LANGUAGE_SEPEDI=0x046C, |
169 | | LANGUAGE_NORTHERNSOTHO=LANGUAGE_SEPEDI, |
170 | | LANGUAGE_ORIYA=0x0448, |
171 | | LANGUAGE_POLISH=0x0415, |
172 | | LANGUAGE_PORTUGUESE=0x0816, |
173 | | LANGUAGE_PORTUGUESE_BRAZILIAN=0x0416, |
174 | | LANGUAGE_PUNJABI=0x0446, |
175 | | LANGUAGE_RHAETO_ROMAN=0x0417, |
176 | | LANGUAGE_ROMANIAN=0x0418, |
177 | | LANGUAGE_ROMANIAN_MOLDOVA=0x0818, |
178 | | LANGUAGE_RUSSIAN=0x0419, |
179 | | LANGUAGE_RUSSIAN_MOLDOVA=0x0819, |
180 | | LANGUAGE_SAMI_LAPPISH=0x043B, |
181 | | LANGUAGE_SANSKRIT=0x044F, |
182 | | LANGUAGE_SERBIAN=0x001A, |
183 | | LANGUAGE_CROATIAN=0x041A, |
184 | | LANGUAGE_SERBIAN_LATIN=0x081A, |
185 | | LANGUAGE_SERBIAN_CYRILLIC=0x0C1A, |
186 | | LANGUAGE_SESOTHO=0x0430, |
187 | | LANGUAGE_SINDHI=0x0459, |
188 | | LANGUAGE_SLOVAK=0x041B, |
189 | | LANGUAGE_SLOVENIAN=0x0424, |
190 | | LANGUAGE_SORBIAN=0x042E, |
191 | | LANGUAGE_SPANISH=0x040A, |
192 | | LANGUAGE_SPANISH_MEXICAN=0x080A, |
193 | | LANGUAGE_SPANISH_MODERN=0x0C0A, |
194 | | LANGUAGE_SPANISH_GUATEMALA=0x100A, |
195 | | LANGUAGE_SPANISH_COSTARICA=0x140A, |
196 | | LANGUAGE_SPANISH_PANAMA=0x180A, |
197 | | LANGUAGE_SPANISH_DOMINICAN_REPUBLIC=0x1C0A, |
198 | | LANGUAGE_SPANISH_VENEZUELA=0x200A, |
199 | | LANGUAGE_SPANISH_COLOMBIA=0x240A, |
200 | | LANGUAGE_SPANISH_PERU=0x280A, |
201 | | LANGUAGE_SPANISH_ARGENTINA=0x2C0A, |
202 | | LANGUAGE_SPANISH_ECUADOR=0x300A, |
203 | | LANGUAGE_SPANISH_CHILE=0x340A, |
204 | | LANGUAGE_SPANISH_URUGUAY=0x380A, |
205 | | LANGUAGE_SPANISH_PARAGUAY=0x3C0A, |
206 | | LANGUAGE_SPANISH_BOLIVIA=0x400A, |
207 | | LANGUAGE_SPANISH_EL_SALVADOR=0x440A, |
208 | | LANGUAGE_SPANISH_HONDURAS=0x480A, |
209 | | LANGUAGE_SPANISH_NICARAGUA=0x4C0A, |
210 | | LANGUAGE_SPANISH_PUERTO_RICO=0x500A, |
211 | | LANGUAGE_SWAHILI=0x0441, |
212 | | LANGUAGE_SWEDISH=0x041D, |
213 | | LANGUAGE_SWEDISH_FINLAND=0x081D, |
214 | | LANGUAGE_TAJIK=0x0428, |
215 | | LANGUAGE_TAMIL=0x0449, |
216 | | LANGUAGE_TATAR=0x0444, |
217 | | LANGUAGE_TELUGU=0x044A, |
218 | | LANGUAGE_THAI=0x041E, |
219 | | LANGUAGE_TIBETAN=0x0451, |
220 | | LANGUAGE_TSONGA=0x0431, |
221 | | LANGUAGE_TSWANA=0x0432, |
222 | | LANGUAGE_TURKISH=0x041F, |
223 | | LANGUAGE_TURKMEN=0x0442, |
224 | | LANGUAGE_UKRAINIAN=0x0422, |
225 | | LANGUAGE_URDU=0x0020, |
226 | | LANGUAGE_URDU_PAKISTAN=0x0420, |
227 | | LANGUAGE_URDU_INDIA=0x0820, |
228 | | LANGUAGE_UZBEK=0x0043, |
229 | | LANGUAGE_UZBEK_LATIN=0x0443, |
230 | | LANGUAGE_UZBEK_CYRILLIC=0x0843, |
231 | | LANGUAGE_VENDA=0x0433, |
232 | | LANGUAGE_VIETNAMESE=0x042A, |
233 | | LANGUAGE_WELSH=0x0452, |
234 | | LANGUAGE_XHOSA=0x0434, |
235 | | LANGUAGE_ZULU=0x0435, |
236 | | LANGUAGE_USER1=0x0201, |
237 | | LANGUAGE_USER2=0x0202, |
238 | | LANGUAGE_USER3=0x0203, |
239 | | LANGUAGE_USER4=0x0204, |
240 | | LANGUAGE_USER5=0x0205, |
241 | | LANGUAGE_USER6=0x0206, |
242 | | LANGUAGE_USER7=0x0207, |
243 | | LANGUAGE_USER8=0x0208, |
244 | | LANGUAGE_USER9=0x0209, |
245 | | LANGUAGE_SYSTEM_DEFAULT=0x0800, |
246 | | LANGUAGE_PROCESS_OR_USER_DEFAULT=0x0400, |
247 | | LANGUAGE_USER_LATIN=0x0610, |
248 | | LANGUAGE_USER_ESPERANTO=0x0611, |
249 | | LANGUAGE_USER_MAORI=0x0620, |
250 | | LANGUAGE_USER_KINYARWANDA=0x0621 |
251 | | }; |
252 | | |
253 | | struct IdIsoLanguageEntry { |
254 | | int m_languageId; |
255 | | char m_language[3]; |
256 | | std::string m_country; |
257 | | }; |
258 | | |
259 | | class IdIsoLanguageMap |
260 | | { |
261 | | public: |
262 | 8 | IdIsoLanguageMap() : m_idLanguageMap() |
263 | 8 | { |
264 | 8 | IdIsoLanguageEntry const idIsoList[] = { |
265 | 8 | { LANGUAGE_ENGLISH, "en", "" }, |
266 | 8 | { LANGUAGE_ENGLISH_US, "en", "US" }, |
267 | 8 | { LANGUAGE_ENGLISH_UK, "en", "GB" }, |
268 | 8 | { LANGUAGE_ENGLISH_AUS, "en", "AU" }, |
269 | 8 | { LANGUAGE_ENGLISH_CAN, "en", "CA" }, |
270 | 8 | { LANGUAGE_FRENCH, "fr", "FR" }, |
271 | 8 | { LANGUAGE_GERMAN, "de", "DE" }, |
272 | 8 | { LANGUAGE_ITALIAN, "it", "IT" }, |
273 | 8 | { LANGUAGE_DUTCH, "nl", "NL" }, |
274 | 8 | { LANGUAGE_SPANISH, "es", "ES" }, |
275 | 8 | { LANGUAGE_SPANISH_MODERN, "es", "ES" }, |
276 | 8 | { LANGUAGE_PORTUGUESE, "pt", "PT" }, |
277 | 8 | { LANGUAGE_PORTUGUESE_BRAZILIAN, "pt", "BR" }, |
278 | 8 | { LANGUAGE_DANISH, "da", "DK" }, |
279 | 8 | { LANGUAGE_GREEK, "el", "GR" }, |
280 | 8 | { LANGUAGE_CHINESE, "zh", "" }, |
281 | 8 | { LANGUAGE_CHINESE_TRADITIONAL, "zh", "TW" }, |
282 | 8 | { LANGUAGE_CHINESE_SIMPLIFIED, "zh", "CN" }, |
283 | 8 | { LANGUAGE_CHINESE_HONGKONG, "zh", "HK" }, |
284 | 8 | { LANGUAGE_CHINESE_SINGAPORE, "zh", "SG" }, |
285 | 8 | { LANGUAGE_CHINESE_MACAU, "zh", "MO" }, |
286 | 8 | { LANGUAGE_JAPANESE, "ja", "JP" }, |
287 | 8 | { LANGUAGE_KOREAN, "ko", "KR" }, |
288 | 8 | { LANGUAGE_KOREAN_JOHAB, "ko", "KR" }, |
289 | 8 | { LANGUAGE_KOREAN, "ko", "KP" }, // North Korea |
290 | 8 | { LANGUAGE_SWEDISH, "sv", "SE" }, |
291 | 8 | { LANGUAGE_SWEDISH_FINLAND, "sv", "FI" }, |
292 | 8 | { LANGUAGE_FINNISH, "fi", "FI" }, |
293 | 8 | { LANGUAGE_RUSSIAN, "ru", "RU" }, |
294 | 8 | { LANGUAGE_ENGLISH_NZ, "en", "NZ" }, |
295 | 8 | { LANGUAGE_ENGLISH_EIRE, "en", "IE" }, |
296 | 8 | { LANGUAGE_ENGLISH_SAFRICA, "en", "ZA" }, |
297 | 8 | { LANGUAGE_DUTCH_BELGIAN, "nl", "BE" }, |
298 | 8 | { LANGUAGE_FRENCH_BELGIAN, "fr", "BE" }, |
299 | 8 | { LANGUAGE_FRENCH_CANADIAN, "fr", "CA" }, |
300 | 8 | { LANGUAGE_FRENCH_SWISS, "fr", "CH" }, |
301 | 8 | { LANGUAGE_GERMAN_SWISS, "de", "CH" }, |
302 | 8 | { LANGUAGE_GERMAN_AUSTRIAN, "de", "AT" }, |
303 | 8 | { LANGUAGE_ITALIAN_SWISS, "it", "CH" }, |
304 | 8 | { LANGUAGE_ARABIC, "ar", "" }, |
305 | 8 | { LANGUAGE_ARABIC_SAUDI_ARABIA, "ar", "SA" }, |
306 | 8 | { LANGUAGE_ARABIC_EGYPT, "ar", "EG" }, |
307 | 8 | { LANGUAGE_ARABIC_UAE, "ar", "AE" }, |
308 | 8 | { LANGUAGE_AFRIKAANS, "af", "ZA" }, |
309 | 8 | { LANGUAGE_ALBANIAN, "sq", "AL" }, |
310 | 8 | { LANGUAGE_ARABIC_IRAQ, "ar", "IQ" }, |
311 | 8 | { LANGUAGE_ARABIC_LIBYA, "ar", "LY" }, |
312 | 8 | { LANGUAGE_ARABIC_ALGERIA, "ar", "DZ" }, |
313 | 8 | { LANGUAGE_ARABIC_MOROCCO, "ar", "MA" }, |
314 | 8 | { LANGUAGE_ARABIC_TUNISIA, "ar", "TN" }, |
315 | 8 | { LANGUAGE_ARABIC_OMAN, "ar", "OM" }, |
316 | 8 | { LANGUAGE_ARABIC_YEMEN, "ar", "YE" }, |
317 | 8 | { LANGUAGE_ARABIC_SYRIA, "ar", "SY" }, |
318 | 8 | { LANGUAGE_ARABIC_JORDAN, "ar", "JO" }, |
319 | 8 | { LANGUAGE_ARABIC_LEBANON, "ar", "LB" }, |
320 | 8 | { LANGUAGE_ARABIC_KUWAIT, "ar", "KW" }, |
321 | 8 | { LANGUAGE_ARABIC_BAHRAIN, "ar", "BH" }, |
322 | 8 | { LANGUAGE_ARABIC_QATAR, "ar", "QA" }, |
323 | 8 | { LANGUAGE_BASQUE, "eu", "" }, |
324 | 8 | { LANGUAGE_BULGARIAN, "bg", "BG" }, |
325 | 8 | { LANGUAGE_CROATIAN, "hr", "HR" }, |
326 | 8 | { LANGUAGE_CZECH, "cs", "CZ" }, |
327 | 8 | { LANGUAGE_CZECH, "cz", "" }, |
328 | 8 | { LANGUAGE_ENGLISH_JAMAICA, "en", "JM" }, |
329 | 8 | { LANGUAGE_ENGLISH_CARRIBEAN, "en", "BS" }, // not 100%, because AG is Bahamas |
330 | 8 | { LANGUAGE_ENGLISH_BELIZE, "en", "BZ" }, |
331 | 8 | { LANGUAGE_ENGLISH_TRINIDAD, "en", "TT" }, |
332 | 8 | { LANGUAGE_ENGLISH_ZIMBABWE, "en", "ZW" }, |
333 | 8 | { LANGUAGE_ENGLISH_PHILIPPINES, "en", "PH" }, |
334 | 8 | { LANGUAGE_ESTONIAN, "et", "EE" }, |
335 | 8 | { LANGUAGE_FAEROESE, "fo", "FO" }, |
336 | 8 | { LANGUAGE_FARSI, "fa", "" }, |
337 | 8 | { LANGUAGE_FRENCH_LUXEMBOURG, "fr", "LU" }, |
338 | 8 | { LANGUAGE_FRENCH_MONACO, "fr", "MC" }, |
339 | 8 | { LANGUAGE_GERMAN_LUXEMBOURG, "de", "LU" }, |
340 | 8 | { LANGUAGE_GERMAN_LIECHTENSTEIN, "de", "LI" }, |
341 | 8 | { LANGUAGE_HEBREW, "he", "IL" }, // new: old was "iw" |
342 | 8 | { LANGUAGE_HEBREW, "iw", "IL" }, // old: new is "he" |
343 | 8 | { LANGUAGE_HUNGARIAN, "hu", "HU" }, |
344 | 8 | { LANGUAGE_ICELANDIC, "is", "IS" }, |
345 | 8 | { LANGUAGE_INDONESIAN, "id", "ID" }, // new: old was "in" |
346 | 8 | { LANGUAGE_INDONESIAN, "in", "ID" }, // old: new is "id" |
347 | 8 | { LANGUAGE_NORWEGIAN, "no", "NO" }, |
348 | 8 | { LANGUAGE_NORWEGIAN_BOKMAL, "nb", "NO" }, |
349 | 8 | { LANGUAGE_NORWEGIAN_NYNORSK, "nn", "NO" }, |
350 | 8 | { LANGUAGE_POLISH, "pl", "PL" }, |
351 | 8 | { LANGUAGE_RHAETO_ROMAN, "rm", "" }, |
352 | 8 | { LANGUAGE_ROMANIAN, "ro", "RO" }, |
353 | 8 | { LANGUAGE_ROMANIAN_MOLDOVA, "ro", "MD" }, |
354 | 8 | { LANGUAGE_SLOVAK, "sk", "SK" }, |
355 | 8 | { LANGUAGE_SLOVENIAN, "sl", "SI" }, |
356 | 8 | { LANGUAGE_SPANISH_MEXICAN, "es", "MX" }, |
357 | 8 | { LANGUAGE_SPANISH_GUATEMALA, "es", "GT" }, |
358 | 8 | { LANGUAGE_SPANISH_COSTARICA, "es", "CR" }, |
359 | 8 | { LANGUAGE_SPANISH_PANAMA, "es", "PA" }, |
360 | 8 | { LANGUAGE_SPANISH_DOMINICAN_REPUBLIC, "es", "DO" }, |
361 | 8 | { LANGUAGE_SPANISH_VENEZUELA, "es", "VE" }, |
362 | 8 | { LANGUAGE_SPANISH_COLOMBIA, "es", "CO" }, |
363 | 8 | { LANGUAGE_SPANISH_PERU, "es", "PE" }, |
364 | 8 | { LANGUAGE_SPANISH_ARGENTINA, "es", "AR" }, |
365 | 8 | { LANGUAGE_SPANISH_ECUADOR, "es", "EC" }, |
366 | 8 | { LANGUAGE_SPANISH_CHILE, "es", "CL" }, |
367 | 8 | { LANGUAGE_SPANISH_URUGUAY, "es", "UY" }, |
368 | 8 | { LANGUAGE_SPANISH_PARAGUAY, "es", "PY" }, |
369 | 8 | { LANGUAGE_SPANISH_BOLIVIA, "es", "BO" }, |
370 | 8 | { LANGUAGE_SPANISH_EL_SALVADOR, "es", "SV" }, |
371 | 8 | { LANGUAGE_SPANISH_HONDURAS, "es", "HN" }, |
372 | 8 | { LANGUAGE_SPANISH_NICARAGUA, "es", "NI" }, |
373 | 8 | { LANGUAGE_SPANISH_PUERTO_RICO, "es", "PR" }, |
374 | 8 | { LANGUAGE_TURKISH, "tr", "TR" }, |
375 | 8 | { LANGUAGE_UKRAINIAN, "uk", "UA" }, |
376 | 8 | { LANGUAGE_VIETNAMESE, "vi", "VN" }, |
377 | 8 | { LANGUAGE_LATVIAN, "lv", "LV" }, |
378 | 8 | { LANGUAGE_MACEDONIAN, "mk", "MK" }, |
379 | 8 | { LANGUAGE_MALAY, "ms", "" }, |
380 | 8 | { LANGUAGE_MALAY_MALAYSIA, "ms", "MY" }, |
381 | 8 | { LANGUAGE_MALAY_BRUNEI_DARUSSALAM, "ms", "BN" }, |
382 | 8 | { LANGUAGE_THAI, "th", "TH" }, |
383 | 8 | { LANGUAGE_LITHUANIAN, "lt", "LT" }, |
384 | 8 | { LANGUAGE_LITHUANIAN_CLASSIC, "lt", "LT" }, |
385 | 8 | { LANGUAGE_CROATIAN, "hr", "HR" }, // Croatian in Croatia |
386 | 8 | { LANGUAGE_SERBIAN_LATIN, "sh", "YU" }, // Serbo-Croatian in Yugoslavia (default) |
387 | 8 | { LANGUAGE_SERBIAN_LATIN, "sh", "BA" }, // Serbo-Croatian in Bosnia And Herzegovina |
388 | 8 | { LANGUAGE_SERBIAN_CYRILLIC, "sr", "YU" }, |
389 | 8 | { LANGUAGE_SERBIAN, "sr", "" }, // SERBIAN is only LID, MS-LCID not defined (was dupe of CROATIAN) |
390 | 8 | { LANGUAGE_ARMENIAN, "hy", "AM" }, |
391 | 8 | { LANGUAGE_AZERI, "az", "" }, |
392 | 8 | { LANGUAGE_BENGALI, "bn", "BD" }, |
393 | 8 | { LANGUAGE_KAZAK, "kk", "KZ" }, |
394 | 8 | { LANGUAGE_URDU, "ur", "IN" }, |
395 | 8 | { LANGUAGE_HINDI, "hi", "IN" }, |
396 | 8 | { LANGUAGE_GUJARATI, "gu", "IN" }, |
397 | 8 | { LANGUAGE_KANNADA, "kn", "IN" }, |
398 | 8 | { LANGUAGE_ASSAMESE, "as", "IN" }, |
399 | 8 | { LANGUAGE_KASHMIRI, "ks", "" }, |
400 | 8 | { LANGUAGE_KASHMIRI_INDIA, "ks", "IN" }, |
401 | 8 | { LANGUAGE_MALAYALAM, "ml", "IN" }, |
402 | 8 | { LANGUAGE_MARATHI, "mr", "IN" }, |
403 | 8 | { LANGUAGE_NEPALI, "ne", "NP" }, |
404 | 8 | { LANGUAGE_NEPALI_INDIA, "ne", "IN" }, |
405 | 8 | { LANGUAGE_ORIYA, "or", "IN" }, |
406 | 8 | { LANGUAGE_PUNJABI, "pa", "IN" }, |
407 | 8 | { LANGUAGE_SANSKRIT, "sa", "IN" }, |
408 | 8 | { LANGUAGE_SINDHI, "sd", "IN" }, |
409 | 8 | { LANGUAGE_TAMIL, "ta", "IN" }, |
410 | 8 | { LANGUAGE_TELUGU, "te", "IN" }, |
411 | 8 | { LANGUAGE_BELARUSIAN, "be", "BY" }, |
412 | 8 | { LANGUAGE_CATALAN, "ca", "ES" }, // Spain (default) |
413 | 8 | { LANGUAGE_CATALAN, "ca", "AD" }, // Andorra |
414 | 8 | { LANGUAGE_FRENCH_CAMEROON, "fr", "CM" }, |
415 | 8 | { LANGUAGE_FRENCH_COTE_D_IVOIRE, "fr", "CI" }, |
416 | 8 | { LANGUAGE_FRENCH_MALI, "fr", "ML" }, |
417 | 8 | { LANGUAGE_FRENCH_SENEGAL, "fr", "SN" }, |
418 | 8 | { LANGUAGE_FRENCH_ZAIRE, "fr", "CD" }, // Democratic Republic Of Congo |
419 | 8 | { LANGUAGE_FRISIAN_NETHERLANDS, "fy", "NL" }, |
420 | 8 | { LANGUAGE_GAELIC_IRELAND, "ga", "IE" }, |
421 | 8 | { LANGUAGE_GAELIC_SCOTLAND, "gd", "GB" }, |
422 | 8 | { LANGUAGE_GALICIAN, "gl", "ES" }, |
423 | 8 | { LANGUAGE_GEORGIAN, "ka", "GE" }, |
424 | 8 | { LANGUAGE_KHMER, "km", "KH" }, |
425 | 8 | { LANGUAGE_KIRGHIZ, "ky", "KG" }, |
426 | 8 | { LANGUAGE_LAO, "lo", "LA" }, |
427 | 8 | { LANGUAGE_MALTESE, "mt", "MT" }, |
428 | 8 | { LANGUAGE_MONGOLIAN, "mn", "MN" }, |
429 | 8 | { LANGUAGE_RUSSIAN_MOLDOVA, "mo", "MD" }, |
430 | 8 | { LANGUAGE_SESOTHO, "st", "LS" }, // Lesotho (default) |
431 | 8 | { LANGUAGE_SESOTHO, "st", "ZA" }, // South Africa |
432 | 8 | { LANGUAGE_SWAHILI, "sw", "KE" }, |
433 | 8 | { LANGUAGE_TAJIK, "tg", "TJ" }, |
434 | 8 | { LANGUAGE_TIBETAN, "bo", "CN" }, // CN politically correct? |
435 | 8 | { LANGUAGE_TSONGA, "ts", "ZA" }, |
436 | 8 | { LANGUAGE_TSWANA, "tn", "BW" }, // Botswana (default) |
437 | 8 | { LANGUAGE_TSWANA, "tn", "ZA" }, // South Africa |
438 | 8 | { LANGUAGE_TURKMEN, "tk", "TM" }, |
439 | 8 | { LANGUAGE_WELSH, "cy", "GB" }, |
440 | 8 | { LANGUAGE_NORTHERNSOTHO, "ns", "ZA" }, |
441 | 8 | { LANGUAGE_XHOSA, "xh", "ZA" }, |
442 | 8 | { LANGUAGE_ZULU, "zu", "ZA" }, |
443 | 8 | { LANGUAGE_USER_KINYARWANDA, "rw", "RW" }, |
444 | 8 | { LANGUAGE_USER_MAORI, "mi", "NZ" }, |
445 | 8 | { LANGUAGE_USER_LATIN, "la", "" }, |
446 | 8 | { LANGUAGE_USER_ESPERANTO, "eo", "" }, |
447 | 8 | { LANGUAGE_NORWEGIAN_BOKMAL, "no", "BOK" }, // registered subtags for "no" in rfc1766 |
448 | 8 | { LANGUAGE_NORWEGIAN_NYNORSK, "no", "NYN" }, // registered subtags for "no" in rfc1766 |
449 | 8 | { LANGUAGE_SERBIAN_LATIN, "sr", "latin" }, |
450 | 8 | { LANGUAGE_SERBIAN_CYRILLIC, "sr", "cyrillic" }, |
451 | 8 | { LANGUAGE_AZERI_LATIN, "az", "latin" }, |
452 | 8 | { LANGUAGE_AZERI_CYRILLIC, "az", "cyrillic" } |
453 | 8 | }; |
454 | | |
455 | 8 | for (auto const &l : idIsoList) |
456 | 1.50k | m_idLanguageMap.insert(std::map<int,IdIsoLanguageEntry>::value_type(l.m_languageId,l)); |
457 | 8 | } |
458 | | bool getLanguageId(int id, std::string &lang, std::string &country) const |
459 | 91.1k | { |
460 | 91.1k | if (m_idLanguageMap.find(id)==m_idLanguageMap.end()) |
461 | 23.4k | return false; |
462 | 67.7k | lang=m_idLanguageMap.find(id)->second.m_language; |
463 | 67.7k | country=m_idLanguageMap.find(id)->second.m_country; |
464 | 67.7k | return true; |
465 | 91.1k | } |
466 | | protected: |
467 | | std::map<int,IdIsoLanguageEntry> m_idLanguageMap; |
468 | | }; |
469 | | |
470 | | static IdIsoLanguageMap s_idLanguageMap; |
471 | | bool getLanguageId(int id, std::string &lang, std::string &country) |
472 | 91.1k | { |
473 | 91.1k | return s_idLanguageMap.getLanguageId(id, lang, country); |
474 | 91.1k | } |
475 | | } |
476 | | // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab: |