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
This commit is contained in:
sireus
2012-03-30 12:44:07 +00:00
parent 17c20e4ebc
commit 34e56ae7d1
4 changed files with 20 additions and 10 deletions
+1 -1
View File
@@ -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';
+11 -5
View File
@@ -3,6 +3,8 @@
#include "cube.h"
#include <locale.h>
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)
+2
View File
@@ -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;
}
+5 -3
View File
@@ -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;