From 34e56ae7d147177296d5480607ef2238cf1e4834 Mon Sep 17 00:00:00 2001 From: sireus Date: Fri, 30 Mar 2012 12:44:07 +0000 Subject: [PATCH] use var lang instead of alias LANG, and some cleanup in language detection git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@6774 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/client.cpp | 4 ++-- source/src/i18n.cpp | 16 +++++++++++----- source/src/main.cpp | 2 ++ source/src/serverbrowser.cpp | 8 +++++--- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/source/src/client.cpp b/source/src/client.cpp index e407c517..962b4ba8 100644 --- a/source/src/client.cpp +++ b/source/src/client.cpp @@ -215,7 +215,7 @@ void disconnect(int onlyclean, int async) } #endif if(!onlyclean) localconnect(); - + if(identexists("onDisconnect")) execute("onDisconnect"); } @@ -582,7 +582,7 @@ void sendintro() putint(p, getbuildtype()); sendstring(player1->name, p); sendstring(genpwdhash(player1->name, clientpassword, sessionid), p); - const char *lang = getalias("LANG"); + extern const char *lang; sendstring(!lang || strlen(lang) != 2 ? "" : lang, p); putint(p, connectrole); clientpassword[0] = '\0'; diff --git a/source/src/i18n.cpp b/source/src/i18n.cpp index b22a5257..357fa774 100644 --- a/source/src/i18n.cpp +++ b/source/src/i18n.cpp @@ -3,6 +3,8 @@ #include "cube.h" #include +SVARP(lang, ""); + i18nmanager::i18nmanager(const char *domain, const char *basepath) : domain(domain), basepath(basepath) { locale = setlocale(LC_ALL, ""); // use current default locale @@ -10,14 +12,18 @@ i18nmanager::i18nmanager(const char *domain, const char *basepath) : domain(doma textdomain(domain); bind_textdomain_codeset(domain, "UTF-8"); // we use the utf-8 charset only - char lang[3]; + + char localelang[3]; + if(!lang[0]) + { #ifdef WIN32 - GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SISO639LANGNAME, lang, 3); + GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SISO639LANGNAME, localelang, 3); #else - copystring(lang, locale, 3); + copystring(localelang, locale, 3); #endif - filterlang(lang, lang); - alias("LANG", lang); + filterlang(localelang, localelang); + copystring(lang, localelang, 3); + } printf("current locale: %s (%s)\n", locale, lang); setlocale(LC_NUMERIC, "C"); // make sure numeric is consistent (very important for float usage in scripts) diff --git a/source/src/main.cpp b/source/src/main.cpp index faa793c6..10a0b773 100644 --- a/source/src/main.cpp +++ b/source/src/main.cpp @@ -134,6 +134,8 @@ void writeinitcfg() extern int audio, soundchannels; f->printf("audio %d\n", audio > 0 ? 1 : 0); f->printf("soundchannels %d\n", soundchannels); + extern const char *lang; + f->printf("lang %s\n", lang); delete f; } diff --git a/source/src/serverbrowser.cpp b/source/src/serverbrowser.cpp index 2cc5d236..b44e0d3d 100644 --- a/source/src/serverbrowser.cpp +++ b/source/src/serverbrowser.cpp @@ -373,9 +373,11 @@ void pingservers(bool issearch, serverinfo *onlyconnected) if(si->getinfo == EXTPING_SERVERINFO) { putint(p, EXTPING_SERVERINFO); - const char *lang = getalias("LANG"); - if(!lang || strlen(lang) != 2) lang = "en"; - loopi(2) putint(p, lang[i]); + extern const char *lang; + const char *silang; + if(strlen(lang) != 2) silang = "en"; + else silang = lang; + loopi(2) putint(p, silang[i]); } else putint(p, issearch ? EXTPING_NAMELIST : chooseextping(si)); buf.data = ping;