[gimp] app: Force a default language on Win32



commit c9a9b1211cab22583e08c3119cce3f85a8bf4684
Author: Jernej SimonÄiÄ <jernej ena si>
Date:   Wed Aug 31 03:55:22 2011 +0530

    app: Force a default language on Win32

 app/app.c |  701 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 701 insertions(+), 0 deletions(-)
---
diff --git a/app/app.c b/app/app.c
index 5db4879..9da1d0f 100644
--- a/app/app.c
+++ b/app/app.c
@@ -15,6 +15,11 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* Win32 language lookup table:
+ * Copyright (C) 2007-2008 Dieter Verfaillie <dieterv optionexplicit be>
+ */
+
+
 #include "config.h"
 
 #include <stdio.h>
@@ -32,6 +37,11 @@
 
 #include <gegl.h>
 
+#ifdef G_OS_WIN32
+#include <windows.h>
+#include <winnls.h>
+#endif
+
 #include "libgimpbase/gimpbase.h"
 #include "libgimpconfig/gimpconfig.h"
 
@@ -277,6 +287,697 @@ app_init_update_noop (const gchar *text1,
 static void
 app_init_language (const gchar *language)
 {
+#ifdef G_OS_WIN32
+  if (! language)
+    {
+      /* FIXME: This is a hack. gettext doesn't pick the right language
+         by default on Windows, so we enforce the right one. */
+
+      /* ISO 639-1
+       *    http:www.loc.gov/standards/iso639-2/
+       * List of existing mui packs:
+       *    http:www.microsoft.com/globaldev/reference/win2k/setup/Langid.mspx
+       * List of known id's
+       *    http:www.microsoft.com/globaldev/reference/lcid-all.mspx
+       */
+
+      switch (GetUserDefaultUILanguage())
+        {
+        case 1078:
+          language = "af";    /* Afrikaans - South Africa */
+          break;
+        case 1052:
+          language = "sq";    /* Albanian - Albania */
+          break;
+        case 1118:
+          language = "am";    /* Amharic - Ethiopia */
+          break;
+        case 1025:
+          language = "ar";    /* Arabic - Saudi Arabia */
+          break;
+        case 5121:
+          language = "ar";    /* Arabic - Algeria */
+          break;
+        case 15361:
+          language = "ar";    /* Arabic - Bahrain */
+          break;
+        case 3073:
+          language = "ar";    /* Arabic - Egypt */
+          break;
+        case 2049:
+          language = "ar";    /* Arabic - Iraq */
+          break;
+        case 11265:
+          language = "ar";    /* Arabic - Jordan */
+          break;
+        case 13313:
+          language = "ar";    /* Arabic - Kuwait */
+          break;
+        case 12289:
+          language = "ar";    /* Arabic - Lebanon */
+          break;
+        case 4097:
+          language = "ar";    /* Arabic - Libya */
+          break;
+        case 6145:
+          language = "ar";    /* Arabic - Morocco */
+          break;
+        case 8193:
+          language = "ar";    /* Arabic - Oman */
+          break;
+        case 16385:
+          language = "ar";    /* Arabic - Qatar */
+          break;
+        case 10241:
+          language = "ar";    /* Arabic - Syria */
+          break;
+        case 7169:
+          language = "ar";    /* Arabic - Tunisia */
+          break;
+        case 14337:
+          language = "ar";    /* Arabic - U.A.E. */
+          break;
+        case 9217:
+          language = "ar";    /* Arabic - Yemen */
+          break;
+        case 1067:
+          language = "hy";    /* Armenian - Armenia */
+          break;
+        case 1101:
+          language = "as";    /* Assamese */
+          break;
+        case 2092:
+          language = NULL;    /* Azeri (Cyrillic) */
+          break;
+        case 1068:
+          language = NULL;    /* Azeri (Latin) */
+          break;
+        case 1069:
+          language = "eu";    /* Basque */
+          break;
+        case 1059:
+          language = "be";    /* Belarusian */
+          break;
+        case 1093:
+          language = "bn";    /* Bengali (India) */
+          break;
+        case 2117:
+          language = "bn";    /* Bengali (Bangladesh) */
+          break;
+        case 5146:
+          language = "bs";    /* Bosnian (Bosnia/Herzegovina) */
+          break;
+        case 1026:
+          language = "bg";    /* Bulgarian */
+          break;
+        case 1109:
+          language = "my";    /* Burmese */
+          break;
+        case 1027:
+          language = "ca";    /* Catalan */
+          break;
+        case 1116:
+          language = NULL;    /* Cherokee - United States */
+          break;
+        case 2052:
+          language = "zh";    /* Chinese - People"s Republic of China */
+          break;
+        case 4100:
+          language = "zh";    /* Chinese - Singapore */
+          break;
+        case 1028:
+          language = "zh";    /* Chinese - Taiwan */
+          break;
+        case 3076:
+          language = "zh";    /* Chinese - Hong Kong SAR */
+          break;
+        case 5124:
+          language = "zh";    /* Chinese - Macao SAR */
+          break;
+        case 1050:
+          language = "hr";    /* Croatian */
+          break;
+        case 4122:
+          language = "hr";    /* Croatian (Bosnia/Herzegovina) */
+          break;
+        case 1029:
+          language = "cs";    /* Czech */
+          break;
+        case 1030:
+          language = "da";    /* Danish */
+          break;
+        case 1125:
+          language = "dv";    /* Divehi */
+          break;
+        case 1043:
+          language = "nl";    /* Dutch - Netherlands */
+          break;
+        case 2067:
+          language = "nl";    /* Dutch - Belgium */
+          break;
+        case 1126:
+          language = NULL;    /* Edo */
+          break;
+        case 1033:
+          language = "en";    /* English - United States */
+          break;
+        case 2057:
+          language = "en";    /* English - United Kingdom */
+          break;
+        case 3081:
+          language = "en";    /* English - Australia */
+          break;
+        case 10249:
+          language = "en";    /* English - Belize */
+          break;
+        case 4105:
+          language = "en";    /* English - Canada */
+          break;
+        case 9225:
+          language = "en";    /* English - Caribbean */
+          break;
+        case 15369:
+          language = "en";    /* English - Hong Kong SAR */
+          break;
+        case 16393:
+          language = "en";    /* English - India */
+          break;
+        case 14345:
+          language = "en";    /* English - Indonesia */
+          break;
+        case 6153:
+          language = "en";    /* English - Ireland */
+          break;
+        case 8201:
+          language = "en";    /* English - Jamaica */
+          break;
+        case 17417:
+          language = "en";    /* English - Malaysia */
+          break;
+        case 5129:
+          language = "en";    /* English - New Zealand */
+          break;
+        case 13321:
+          language = "en";    /* English - Philippines */
+          break;
+        case 18441:
+          language = "en";    /* English - Singapore */
+          break;
+        case 7177:
+          language = "en";    /* English - South Africa */
+          break;
+        case 11273:
+          language = "en";    /* English - Trinidad */
+          break;
+        case 12297:
+          language = "en";    /* English - Zimbabwe */
+          break;
+        case 1061:
+          language = "et";    /* Estonian */
+          break;
+        case 1080:
+          language = "fo";    /* Faroese */
+          break;
+        case 1065:
+          language = NULL;    /* Farsi */
+          break;
+        case 1124:
+          language = NULL;    /* Filipino */
+          break;
+        case 1035:
+          language = "fi";    /* Finnish */
+          break;
+        case 1036:
+          language = "fr";    /* French - France */
+          break;
+        case 2060:
+          language = "fr";    /* French - Belgium */
+          break;
+        case 11276:
+          language = "fr";    /* French - Cameroon */
+          break;
+        case 3084:
+          language = "fr";    /* French - Canada */
+          break;
+        case 9228:
+          language = "fr";    /* French - Democratic Rep. of Congo */
+          break;
+        case 12300:
+          language = "fr";    /* French - Cote d"Ivoire */
+          break;
+        case 15372:
+          language = "fr";    /* French - Haiti */
+          break;
+        case 5132:
+          language = "fr";    /* French - Luxembourg */
+          break;
+        case 13324:
+          language = "fr";    /* French - Mali */
+          break;
+        case 6156:
+          language = "fr";    /* French - Monaco */
+          break;
+        case 14348:
+          language = "fr";    /* French - Morocco */
+          break;
+        case 58380:
+          language = "fr";    /* French - North Africa */
+          break;
+        case 8204:
+          language = "fr";    /* French - Reunion */
+          break;
+        case 10252:
+          language = "fr";    /* French - Senegal */
+          break;
+        case 4108:
+          language = "fr";    /* French - Switzerland */
+          break;
+        case 7180:
+          language = "fr";    /* French - West Indies */
+          break;
+        case 1122:
+          language = "fy";    /* Frisian - Netherlands */
+          break;
+        case 1127:
+          language = NULL;    /* Fulfulde - Nigeria */
+          break;
+        case 1071:
+          language = "mk";    /* FYRO Macedonian */
+          break;
+        case 2108:
+          language = "ga";    /* Gaelic (Ireland) */
+          break;
+        case 1084:
+          language = "gd";    /* Gaelic (Scotland) */
+          break;
+        case 1110:
+          language = "gl";    /* Galician */
+          break;
+        case 1079:
+          language = "ka";    /* Georgian */
+          break;
+        case 1031:
+          language = "de";    /* German - Germany */
+          break;
+        case 3079:
+          language = "de";    /* German - Austria */
+          break;
+        case 5127:
+          language = "de";    /* German - Liechtenstein */
+          break;
+        case 4103:
+          language = "de";    /* German - Luxembourg */
+          break;
+        case 2055:
+          language = "de";    /* German - Switzerland */
+          break;
+        case 1032:
+          language = "el";    /* Greek */
+          break;
+        case 1140:
+          language = "gn";    /* Guarani - Paraguay */
+          break;
+        case 1095:
+          language = "gu";    /* Gujarati */
+          break;
+        case 1128:
+          language = "ha";    /* Hausa - Nigeria */
+          break;
+        case 1141:
+          language = NULL;    /* Hawaiian - United States */
+          break;
+        case 1037:
+          language = "he";    /* Hebrew */
+          break;
+        case 1081:
+          language = "hi";    /* Hindi */
+          break;
+        case 1038:
+          language = "hu";    /* Hungarian */
+          break;
+        case 1129:
+          language = NULL;    /* Ibibio - Nigeria */
+          break;
+        case 1039:
+          language = "is";    /* Icelandic */
+          break;
+        case 1136:
+          language = "ig";    /* Igbo - Nigeria */
+          break;
+        case 1057:
+          language = "id";    /* Indonesian */
+          break;
+        case 1117:
+          language = "iu";    /* Inuktitut */
+          break;
+        case 1040:
+          language = "it";    /* Italian - Italy */
+          break;
+        case 2064:
+          language = "it";    /* Italian - Switzerland */
+          break;
+        case 1041:
+          language = "ja";    /* Japanese */
+          break;
+        case 1099:
+          language = "kn";    /* Kannada */
+          break;
+        case 1137:
+          language = "kr";    /* Kanuri - Nigeria */
+          break;
+        case 2144:
+          language = "ks";    /* Kashmiri */
+          break;
+        case 1120:
+          language = "ks";    /* Kashmiri (Arabic) */
+          break;
+        case 1087:
+          language = "kk";    /* Kazakh */
+          break;
+        case 1107:
+          language = "km";    /* Khmer */
+          break;
+        case 1111:
+          language = NULL;    /* Konkani */
+          break;
+        case 1042:
+          language = "ko";    /* Korean */
+          break;
+        case 1088:
+          language = "ky";    /* Kyrgyz (Cyrillic) */
+          break;
+        case 1108:
+          language = "lo";    /* Lao */
+          break;
+        case 1142:
+          language = "la";    /* Latin */
+          break;
+        case 1062:
+          language = "lv";    /* Latvian */
+          break;
+        case 1063:
+          language = "lt";    /* Lithuanian */
+          break;
+        case 1086:
+          language = "ms";    /* Malay - Malaysia */
+          break;
+        case 2110:
+          language = "ms";    /* Malay - Brunei Darussalam */
+          break;
+        case 1100:
+          language = "ml";    /* Malayalam */
+          break;
+        case 1082:
+          language = "mt";    /* Maltese */
+          break;
+        case 1112:
+          language = NULL;    /* Manipuri */
+          break;
+        case 1153:
+          language = "mi";    /* Maori - New Zealand */
+          break;
+        case 1102:
+          language = "mr";    /* Marathi */
+          break;
+        case 1104:
+          language = "mn";    /* Mongolian (Cyrillic) */
+          break;
+        case 2128:
+          language = "mn";    /* Mongolian (Mongolian) */
+          break;
+        case 1121:
+          language = "ne";    /* Nepali */
+          break;
+        case 2145:
+          language = "ne";    /* Nepali - India */
+          break;
+        case 1044:
+          language = "no";    /* Norwegian (Bokmïïl) */
+          break;
+        case 2068:
+          language = "no";    /* Norwegian (Nynorsk) */
+          break;
+        case 1096:
+          language = "or";    /* Oriya */
+          break;
+        case 1138:
+          language = "om";    /* Oromo */
+          break;
+        case 1145:
+          language = NULL;    /* Papiamentu */
+          break;
+        case 1123:
+          language = "ps";    /* Pashto */
+          break;
+        case 1045:
+          language = "pl";    /* Polish */
+          break;
+        case 1046:
+          language = "pt";    /* Portuguese - Brazil */
+          break;
+        case 2070:
+          language = "pt";    /* Portuguese - Portugal */
+          break;
+        case 1094:
+          language = "pa";    /* Punjabi */
+          break;
+        case 2118:
+          language = "pa";    /* Punjabi (Pakistan) */
+          break;
+        case 1131:
+          language = "qu";    /* Quecha - Bolivia */
+          break;
+        case 2155:
+          language = "qu";    /* Quecha - Ecuador */
+          break;
+        case 3179:
+          language = "qu";    /* Quecha - Peru */
+          break;
+        case 1047:
+          language = "rm";    /* Rhaeto-Romanic */
+          break;
+        case 1048:
+          language = "ro";    /* Romanian */
+          break;
+        case 2072:
+          language = "ro";    /* Romanian - Moldava */
+          break;
+        case 1049:
+          language = "ru";    /* Russian */
+          break;
+        case 2073:
+          language = "ru";    /* Russian - Moldava */
+          break;
+        case 1083:
+          language = NULL;    /* Sami (Lappish) */
+          break;
+        case 1103:
+          language = "sa";    /* Sanskrit */
+          break;
+        case 1132:
+          language = NULL;    /* Sepedi */
+          break;
+        case 3098:
+          language = "sr";    /* Serbian (Cyrillic) */
+          break;
+        case 2074:
+          language = "sr";    /* Serbian (Latin) */
+          break;
+        case 1113:
+          language = "sd";    /* Sindhi - India */
+          break;
+        case 2137:
+          language = "sd";    /* Sindhi - Pakistan */
+          break;
+        case 1115:
+          language = "si";    /* Sinhalese - Sri Lanka */
+          break;
+        case 1051:
+          language = "sk";    /* Slovak */
+          break;
+        case 1060:
+          language = "sl";    /* Slovenian */
+          break;
+        case 1143:
+          language = "so";    /* Somali */
+          break;
+        case 1070:
+          language = NULL;    /* Sorbian */
+          break;
+        case 3082:
+          language = "es";    /* Spanish - Spain (Modern Sort) */
+          break;
+        case 1034:
+          language = "es";    /* Spanish - Spain (Traditional Sort) */
+          break;
+        case 11274:
+          language = "es";    /* Spanish - Argentina */
+          break;
+        case 16394:
+          language = "es";    /* Spanish - Bolivia */
+          break;
+        case 13322:
+          language = "es";    /* Spanish - Chile */
+          break;
+        case 9226:
+          language = "es";    /* Spanish - Colombia */
+          break;
+        case 5130:
+          language = "es";    /* Spanish - Costa Rica */
+          break;
+        case 7178:
+          language = "es";    /* Spanish - Dominican Republic */
+          break;
+        case 12298:
+          language = "es";    /* Spanish - Ecuador */
+          break;
+        case 17418:
+          language = "es";    /* Spanish - El Salvador */
+          break;
+        case 4106:
+          language = "es";    /* Spanish - Guatemala */
+          break;
+        case 18442:
+          language = "es";    /* Spanish - Honduras */
+          break;
+        case 58378:
+          language = "es";    /* Spanish - Latin America */
+          break;
+        case 2058:
+          language = "es";    /* Spanish - Mexico */
+          break;
+        case 19466:
+          language = "es";    /* Spanish - Nicaragua */
+          break;
+        case 6154:
+          language = "es";    /* Spanish - Panama */
+          break;
+        case 15370:
+          language = "es";    /* Spanish - Paraguay */
+          break;
+        case 10250:
+          language = "es";    /* Spanish - Peru */
+          break;
+        case 20490:
+          language = "es";    /* Spanish - Puerto Rico */
+          break;
+        case 21514:
+          language = "es";    /* Spanish - United States */
+          break;
+        case 14346:
+          language = "es";    /* Spanish - Uruguay */
+          break;
+        case 8202:
+          language = "es";    /* Spanish - Venezuela */
+          break;
+        case 1072:
+          language = NULL;    /* Sutu */
+          break;
+        case 1089:
+          language = "sw";    /* Swahili */
+          break;
+        case 1053:
+          language = "sv";    /* Swedish */
+          break;
+        case 2077:
+          language = "sv";    /* Swedish - Finland */
+          break;
+        case 1114:
+          language = NULL;    /* Syriac */
+          break;
+        case 1064:
+          language = "tg";    /* Tajik */
+          break;
+        case 1119:
+          language = NULL;    /* Tamazight (Arabic) */
+          break;
+        case 2143:
+          language = NULL;    /* Tamazight (Latin) */
+          break;
+        case 1097:
+          language = "ta";    /* Tamil */
+          break;
+        case 1092:
+          language = "tt";    /* Tatar */
+          break;
+        case 1098:
+          language = "te";    /* Telugu */
+          break;
+        case 1054:
+          language = "th";    /* Thai */
+          break;
+        case 2129:
+          language = "bo";    /* Tibetan - Bhutan */
+          break;
+        case 1105:
+          language = "bo";    /* Tibetan - People"s Republic of China */
+          break;
+        case 2163:
+          language = "ti";    /* Tigrigna - Eritrea */
+          break;
+        case 1139:
+          language = "ti";    /* Tigrigna - Ethiopia */
+          break;
+        case 1073:
+          language = "ts";    /* Tsonga */
+          break;
+        case 1074:
+          language = "tn";    /* Tswana */
+          break;
+        case 1055:
+          language = "tr";    /* Turkish */
+          break;
+        case 1090:
+          language = "tk";    /* Turkmen */
+          break;
+        case 1152:
+          language = "ug";    /* Uighur - China */
+          break;
+        case 1058:
+          language = "uk";    /* Ukrainian */
+          break;
+        case 1056:
+          language = "ur";    /* Urdu */
+          break;
+        case 2080:
+          language = "ur";    /* Urdu - India */
+          break;
+        case 2115:
+          language = "uz";    /* Uzbek (Cyrillic) */
+          break;
+        case 1091:
+          language = "uz";    /* Uzbek (Latin) */
+          break;
+        case 1075:
+          language = "ve";    /* Venda */
+          break;
+        case 1066:
+          language = "vi";    /* Vietnamese */
+          break;
+        case 1106:
+          language = "cy";    /* Welsh */
+          break;
+        case 1076:
+          language = "xh";    /* Xhosa */
+          break;
+        case 1144:
+          language = NULL;    /* Yi */
+          break;
+        case 1085:
+          language = "yi";    /* Yiddish */
+          break;
+        case 1130:
+          language = "yo";    /* Yoruba */
+          break;
+        case 1077:
+          language = "zu";    /* Zulu */
+          break;
+        default:
+          language = NULL;
+        }
+    }
+#endif
+
   /*  We already set the locale according to the environment, so just
    *  return early if no language is set in gimprc.
    */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]