From 5acd848f79b248511c298ae6321417e1488dc696 Mon Sep 17 00:00:00 2001 From: Berke Viktor Date: Thu, 18 Oct 2012 16:34:40 +0200 Subject: Initial version of language selector GUI --- src/common/cfgfiles.c | 4 ++++ src/common/xchat.c | 5 +++++ src/common/xchat.h | 1 + src/fe-gtk/setup.c | 16 ++++++++++++---- 4 files changed, 22 insertions(+), 4 deletions(-) (limited to 'src') 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 diff --git a/src/fe-gtk/setup.c b/src/fe-gtk/setup.c index fcc0a588..b664e008 100644 --- a/src/fe-gtk/setup.c +++ b/src/fe-gtk/setup.c @@ -100,9 +100,13 @@ typedef struct } setting; -static const setting textbox_settings[] = +static const setting appearance_settings[] = { - {ST_HEADER, N_("Text Box Appearance"),0,0,0}, +#ifdef WIN32 + {ST_HEADER, N_("Localization"),0,0,0}, + {ST_ENTRY, N_("HexChat language:"), P_OFFSETNL(gui_lang), 0, 0, sizeof prefs.gui_lang}, +#endif + {ST_HEADER, N_("Text Box"),0,0,0}, #ifdef WIN32 {ST_EFONT, N_("Main font:"), P_OFFSETNL(font_main), 0, 0, sizeof prefs.font_main}, #else @@ -1820,7 +1824,7 @@ setup_add_page (const char *title, GtkWidget *book, GtkWidget *tab) static const char *const cata[] = { N_("Interface"), - N_("Text box"), + N_("Appearance"), N_("Input box"), N_("User list"), N_("Channel switcher"), @@ -1847,7 +1851,7 @@ setup_create_pages (GtkWidget *box) book = gtk_notebook_new (); - setup_add_page (cata[1], book, setup_create_page (textbox_settings)); + setup_add_page (cata[1], book, setup_create_page (appearance_settings)); setup_add_page (cata[2], book, setup_create_page (inputbox_settings)); setup_add_page (cata[3], book, setup_create_page (userlist_settings)); setup_add_page (cata[4], book, setup_create_page (tabs_settings)); @@ -2130,6 +2134,10 @@ setup_apply (struct xchatprefs *pr) #define DIFF(a) (pr->a != prefs.a) +#ifdef WIN32 + if (DIFF (gui_lang)) + noapply = TRUE; +#endif if (DIFF (paned_userlist)) noapply = TRUE; if (DIFF (lagometer)) -- cgit 1.4.1