summary refs log tree commit diff stats
path: root/src/common
diff options
context:
space:
mode:
authorBerke Viktor <bviktor@hexchat.org>2012-10-18 16:34:40 +0200
committerBerke Viktor <bviktor@hexchat.org>2012-10-18 16:34:40 +0200
commit5acd848f79b248511c298ae6321417e1488dc696 (patch)
treeeda7e2ef517d153a46c04debd189bf8edef23999 /src/common
parent4732505e3030574ccdacbefc1d0ef696813ff705 (diff)
Initial version of language selector GUI
Diffstat (limited to 'src/common')
-rw-r--r--src/common/cfgfiles.c4
-rw-r--r--src/common/xchat.c5
-rw-r--r--src/common/xchat.h1
3 files changed, 10 insertions, 0 deletions
diff --git a/src/common/cfgfiles.c b/src/common/cfgfiles.c
index 4ac47f58..09b91423 100644
--- a/src/common/cfgfiles.c
+++ b/src/common/cfgfiles.c
@@ -451,6 +451,9 @@ const struct prefs vars[] = {
 	{"gui_input_style", P_OFFINT (style_inputbox), TYPE_BOOL},
 	{"gui_join_dialog", P_OFFINT (gui_join_dialog), TYPE_BOOL},
 	{"gui_lagometer", P_OFFINT (lagometer), TYPE_INT},
+#ifdef WIN32
+	{"gui_lang", P_OFFSET (gui_lang), TYPE_STR},
+#endif
 	{"gui_mode_buttons", P_OFFINT (chanmodebuttons), TYPE_BOOL},
 #ifdef WIN32
 	{"gui_one_instance", P_OFFINT (gui_one_instance), TYPE_BOOL},
@@ -746,6 +749,7 @@ load_config (void)
 	prefs.timestamp = 1;
 #ifdef WIN32
 	prefs.identd = 1;
+	strcpy (prefs.gui_lang, g_getenv ("LC_ALL") ? g_getenv ("LC_ALL") : "en_US");
 #endif
 	strcpy (prefs.spell_langs, g_getenv ("LC_ALL") ? g_getenv ("LC_ALL") : "en_US");
 	strcpy (prefs.stamp_format, "[%H:%M:%S] ");
diff --git a/src/common/xchat.c b/src/common/xchat.c
index 17bad663..77650a03 100644
--- a/src/common/xchat.c
+++ b/src/common/xchat.c
@@ -951,6 +951,7 @@ main (int argc, char *argv[])
 	int ret;
 
 #ifdef WIN32
+	char hexchat_lang[13];	/* LC_ALL= plus 5 chars of gui_lang and trailing \0 */
 	HANDLE mutex;
 #endif
 
@@ -971,6 +972,10 @@ main (int argc, char *argv[])
 	load_config ();
 
 #ifdef WIN32
+	/* we MUST do this after load_config () otherwise it would fail */
+	snprintf (hexchat_lang, 12, "LC_ALL=%s", prefs.gui_lang);
+	putenv (hexchat_lang);
+
 	if (prefs.gui_one_instance && !portable_mode ())
 	{
 		DWORD error;
diff --git a/src/common/xchat.h b/src/common/xchat.h
index 7767d709..06b29494 100644
--- a/src/common/xchat.h
+++ b/src/common/xchat.h
@@ -117,6 +117,7 @@ struct xchatprefs
 	char font_normal[4 * FONTNAMELEN + 1];
 	char font_main[FONTNAMELEN + 1];
 	char font_alternative[3 * FONTNAMELEN + 1];
+	char gui_lang[6];				/* Just enough for xx_YY plus trailing \0 */
 #else
 	char font_normal[FONTNAMELEN + 1];
 #endif