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:
@@ -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';
|
||||
|
||||
+11
-5
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user