1 /* GIMP - The GNU Image Manipulation Program
2 * Copyright (C) 1995 Spencer Kimball and Peter Mattis
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <https://www.gnu.org/licenses/>.
18 /* Win32 language lookup table:
19 * Copyright (C) 2007-2008 Dieter Verfaillie <dieterv@optionexplicit.be>
37 language_init (const gchar
*language
)
41 g_getenv ("LANG") == NULL
&&
42 g_getenv ("LC_MESSAGES") == NULL
&&
43 g_getenv ("LC_ALL") == NULL
&&
44 g_getenv ("LANGUAGE") == NULL
)
46 /* FIXME: This is a hack. gettext doesn't pick the right language
47 * by default on Windows, so we enforce the right one. The
48 * following code is an adaptation of Python code from
49 * pynicotine. For reasons why this approach is needed, and why
50 * the GetLocaleInfo() approach in other libs falls flat, see:
51 * http://blogs.msdn.com/b/michkap/archive/2007/04/15/2146890.aspx
54 switch (GetUserDefaultUILanguage())
57 language
= "af"; /* Afrikaans - South Africa */
60 language
= "sq"; /* Albanian - Albania */
63 language
= "am"; /* Amharic - Ethiopia */
66 language
= "ar_SA"; /* Arabic - Saudi Arabia */
69 language
= "ar_DZ"; /* Arabic - Algeria */
72 language
= "ar_BH"; /* Arabic - Bahrain */
75 language
= "ar_EG"; /* Arabic - Egypt */
78 language
= "ar_IQ"; /* Arabic - Iraq */
81 language
= "ar_JO"; /* Arabic - Jordan */
84 language
= "ar_KW"; /* Arabic - Kuwait */
87 language
= "ar_LB"; /* Arabic - Lebanon */
90 language
= "ar_LY"; /* Arabic - Libya */
93 language
= "ar_MO"; /* Arabic - Morocco */
96 language
= "ar_OM"; /* Arabic - Oman */
99 language
= "ar_QA"; /* Arabic - Qatar */
102 language
= "ar_SY"; /* Arabic - Syria */
105 language
= "ar_TN"; /* Arabic - Tunisia */
108 language
= "ar_AE"; /* Arabic - U.A.E. */
111 language
= "ar_YE"; /* Arabic - Yemen */
114 language
= "hy"; /* Armenian - Armenia */
117 language
= "as"; /* Assamese */
120 language
= NULL
; /* Azeri (Cyrillic) */
123 language
= NULL
; /* Azeri (Latin) */
126 language
= "eu"; /* Basque */
129 language
= "be"; /* Belarusian */
132 language
= "bn_IN"; /* Bengali (India) */
135 language
= "bn_BD"; /* Bengali (Bangladesh) */
138 language
= "bs"; /* Bosnian (Bosnia/Herzegovina) */
141 language
= "bg"; /* Bulgarian */
144 language
= "my"; /* Burmese */
147 language
= "ca"; /* Catalan */
150 language
= NULL
; /* Cherokee - United States */
153 language
= "zh_CN"; /* Chinese - People"s Republic of China */
156 language
= "zh_SG"; /* Chinese - Singapore */
159 language
= "zh_TW"; /* Chinese - Taiwan */
162 language
= "zh_HK"; /* Chinese - Hong Kong SAR */
165 language
= "zh_MO"; /* Chinese - Macao SAR */
168 language
= "hr_HR"; /* Croatian */
171 language
= "hr_BA"; /* Croatian (Bosnia/Herzegovina) */
174 language
= "cs"; /* Czech */
177 language
= "da"; /* Danish */
180 language
= "dv"; /* Divehi */
183 language
= "nl_NL"; /* Dutch - Netherlands */
186 language
= "nl_BE"; /* Dutch - Belgium */
189 language
= NULL
; /* Edo */
192 language
= "en_US"; /* English - United States */
195 language
= "en_UK"; /* English - United Kingdom */
198 language
= "en_AU"; /* English - Australia */
201 language
= "en_BZ"; /* English - Belize */
204 language
= "en_CA"; /* English - Canada */
207 language
= "en"; /* English - Caribbean */
210 language
= "en_HK"; /* English - Hong Kong SAR */
213 language
= "en_IN"; /* English - India */
216 language
= "en_ID"; /* English - Indonesia */
219 language
= "en_IR"; /* English - Ireland */
222 language
= "en_JM"; /* English - Jamaica */
225 language
= "en_MW"; /* English - Malaysia */
228 language
= "en_NZ"; /* English - New Zealand */
231 language
= "en_PH"; /* English - Philippines */
234 language
= "en_SG"; /* English - Singapore */
237 language
= "en_ZA"; /* English - South Africa */
240 language
= "en_TT"; /* English - Trinidad */
243 language
= "en_ZW"; /* English - Zimbabwe */
246 language
= "et"; /* Estonian */
249 language
= "fo"; /* Faroese */
252 language
= "fa"; /* Farsi */
255 language
= NULL
; /* Filipino */
258 language
= "fi"; /* Finnish */
261 language
= "fr_FR"; /* French - France */
264 language
= "fr_BE"; /* French - Belgium */
267 language
= "fr_CM"; /* French - Cameroon */
270 language
= "fr_CA"; /* French - Canada */
273 language
= "fr_CD"; /* French - Democratic Rep. of Congo */
276 language
= "fr_CI"; /* French - Cote d"Ivoire */
279 language
= "fr_HT"; /* French - Haiti */
282 language
= "fr_LU"; /* French - Luxembourg */
285 language
= "fr_ML"; /* French - Mali */
288 language
= "fr_MC"; /* French - Monaco */
291 language
= "fr_MA"; /* French - Morocco */
294 language
= "fr"; /* French - North Africa */
297 language
= "fr_RE"; /* French - Reunion */
300 language
= "fr_SN"; /* French - Senegal */
303 language
= "fr_CH"; /* French - Switzerland */
306 language
= "fr"; /* French - West Indies */
309 language
= "fy"; /* Frisian - Netherlands */
312 language
= NULL
; /* Fulfulde - Nigeria */
315 language
= "mk"; /* FYRO Macedonian */
318 language
= "ga"; /* Gaelic (Ireland) */
321 language
= "gd"; /* Gaelic (Scotland) */
324 language
= "gl"; /* Galician */
327 language
= "ka"; /* Georgian */
330 language
= "de_DE"; /* German - Germany */
333 language
= "de_AT"; /* German - Austria */
336 language
= "de_LI"; /* German - Liechtenstein */
339 language
= "de_LU"; /* German - Luxembourg */
342 language
= "de_CH"; /* German - Switzerland */
345 language
= "el"; /* Greek */
348 language
= "gn"; /* Guarani - Paraguay */
351 language
= "gu"; /* Gujarati */
354 language
= "ha"; /* Hausa - Nigeria */
357 language
= NULL
; /* Hawaiian - United States */
360 language
= "he"; /* Hebrew */
363 language
= "hi"; /* Hindi */
366 language
= "hu"; /* Hungarian */
369 language
= NULL
; /* Ibibio - Nigeria */
372 language
= "is"; /* Icelandic */
375 language
= "ig"; /* Igbo - Nigeria */
378 language
= "id"; /* Indonesian */
381 language
= "iu"; /* Inuktitut */
384 language
= "it_IT"; /* Italian - Italy */
387 language
= "it_CH"; /* Italian - Switzerland */
390 language
= "ja"; /* Japanese */
393 language
= "kn"; /* Kannada */
396 language
= "kr"; /* Kanuri - Nigeria */
399 language
= "ks"; /* Kashmiri */
402 language
= "ks"; /* Kashmiri (Arabic) */
405 language
= "kk"; /* Kazakh */
408 language
= "km"; /* Khmer */
411 language
= NULL
; /* Konkani */
414 language
= "ko"; /* Korean */
417 language
= "ky"; /* Kyrgyz (Cyrillic) */
420 language
= "lo"; /* Lao */
423 language
= "la"; /* Latin */
426 language
= "lv"; /* Latvian */
429 language
= "lt"; /* Lithuanian */
432 language
= "ms_MY"; /* Malay - Malaysia */
435 language
= "ms_BN"; /* Malay - Brunei Darussalam */
438 language
= "ml"; /* Malayalam */
441 language
= "mt"; /* Maltese */
444 language
= NULL
; /* Manipuri */
447 language
= "mi"; /* Maori - New Zealand */
450 language
= "mr"; /* Marathi */
453 language
= "mn"; /* Mongolian (Cyrillic) */
456 language
= "mn"; /* Mongolian (Mongolian) */
459 language
= "ne_NP"; /* Nepali */
462 language
= "ne_IN"; /* Nepali - India */
465 language
= "no"; /* Norwegian (Bokmᅢᆬl) */
468 language
= "no"; /* Norwegian (Nynorsk) */
471 language
= "or"; /* Oriya */
474 language
= "om"; /* Oromo */
477 language
= NULL
; /* Papiamentu */
480 language
= "ps"; /* Pashto */
483 language
= "pl"; /* Polish */
486 language
= "pt_BR"; /* Portuguese - Brazil */
489 language
= "pt_PT"; /* Portuguese - Portugal */
492 language
= "pa"; /* Punjabi */
495 language
= "pa_PK"; /* Punjabi (Pakistan) */
498 language
= "qu_BO"; /* Quecha - Bolivia */
501 language
= "qu_EC"; /* Quecha - Ecuador */
504 language
= "qu_PE"; /* Quecha - Peru */
507 language
= "rm"; /* Rhaeto-Romanic */
510 language
= "ro_RO"; /* Romanian */
513 language
= "ro_MD"; /* Romanian - Moldava */
516 language
= "ru_RU"; /* Russian */
519 language
= "ru_MD"; /* Russian - Moldava */
522 language
= NULL
; /* Sami (Lappish) */
525 language
= "sa"; /* Sanskrit */
528 language
= NULL
; /* Sepedi */
531 language
= "sr"; /* Serbian (Cyrillic) */
534 language
= "sr@latin"; /* Serbian (Latin) */
537 language
= "sd_IN"; /* Sindhi - India */
540 language
= "sd_PK"; /* Sindhi - Pakistan */
543 language
= "si"; /* Sinhalese - Sri Lanka */
546 language
= "sk"; /* Slovak */
549 language
= "sl"; /* Slovenian */
552 language
= "so"; /* Somali */
555 language
= NULL
; /* Sorbian */
558 language
= "es"; /* Spanish - Spain (Modern Sort) */
561 language
= "es"; /* Spanish - Spain (Traditional Sort) */
564 language
= "es_AR"; /* Spanish - Argentina */
567 language
= "es_BO"; /* Spanish - Bolivia */
570 language
= "es_CL"; /* Spanish - Chile */
573 language
= "es_CO"; /* Spanish - Colombia */
576 language
= "es_CR"; /* Spanish - Costa Rica */
579 language
= "es_DO"; /* Spanish - Dominican Republic */
582 language
= "es_EC"; /* Spanish - Ecuador */
585 language
= "es_SV"; /* Spanish - El Salvador */
588 language
= "es_GT"; /* Spanish - Guatemala */
591 language
= "es_HN"; /* Spanish - Honduras */
594 language
= "es"; /* Spanish - Latin America */
597 language
= "es_MX"; /* Spanish - Mexico */
600 language
= "es_NI"; /* Spanish - Nicaragua */
603 language
= "es_PA"; /* Spanish - Panama */
606 language
= "es_PY"; /* Spanish - Paraguay */
609 language
= "es_PE"; /* Spanish - Peru */
612 language
= "es_PR"; /* Spanish - Puerto Rico */
615 language
= "es_US"; /* Spanish - United States */
618 language
= "es_UY"; /* Spanish - Uruguay */
621 language
= "es_VE"; /* Spanish - Venezuela */
624 language
= NULL
; /* Sutu */
627 language
= "sw"; /* Swahili */
630 language
= "sv_SE"; /* Swedish */
633 language
= "sv_FI"; /* Swedish - Finland */
636 language
= NULL
; /* Syriac */
639 language
= "tg"; /* Tajik */
642 language
= NULL
; /* Tamazight (Arabic) */
645 language
= NULL
; /* Tamazight (Latin) */
648 language
= "ta"; /* Tamil */
651 language
= "tt"; /* Tatar */
654 language
= "te"; /* Telugu */
657 language
= "th"; /* Thai */
660 language
= "bo_BT"; /* Tibetan - Bhutan */
663 language
= "bo_CN"; /* Tibetan - People"s Republic of China */
666 language
= "ti_ER"; /* Tigrigna - Eritrea */
669 language
= "ti_ET"; /* Tigrigna - Ethiopia */
672 language
= "ts"; /* Tsonga */
675 language
= "tn"; /* Tswana */
678 language
= "tr"; /* Turkish */
681 language
= "tk"; /* Turkmen */
684 language
= "ug"; /* Uighur - China */
687 language
= "uk"; /* Ukrainian */
690 language
= "ur"; /* Urdu */
693 language
= "ur_IN"; /* Urdu - India */
696 language
= "uz"; /* Uzbek (Cyrillic) */
699 language
= "uz@latin"; /* Uzbek (Latin) */
702 language
= "ve"; /* Venda */
705 language
= "vi"; /* Vietnamese */
708 language
= "cy"; /* Welsh */
711 language
= "xh"; /* Xhosa */
714 language
= NULL
; /* Yi */
717 language
= "yi"; /* Yiddish */
720 language
= "yo"; /* Yoruba */
723 language
= "zu"; /* Zulu */
731 /* We already set the locale according to the environment, so just
732 * return early if no language is set in gimprc.
737 g_setenv ("LANGUAGE", language
, TRUE
);
738 setlocale (LC_ALL
, "");