Use OS X system langauge instead of locale data for translation determination. (Fixes bug #1952855: Mac: Mumble uses wrong language setting)

git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@1178 05730e5d-ab1b-0410-a4ac-84af385074fa
This commit is contained in:
Mikkel Krautz 2008-06-24 23:28:24 +00:00
parent dca353cdef
commit 05dcd3b180
2 changed files with 32 additions and 2 deletions

View File

@ -54,6 +54,7 @@ void throw_exception(std::exception const &) {
extern void os_init();
extern char *os_url;
extern char *os_lang;
int main(int argc, char **argv) {
int res;
@ -138,9 +139,18 @@ int main(int argc, char **argv) {
QDir::addSearchPath(QLatin1String("translation"), a.applicationDirPath());
QDir::addSearchPath(QLatin1String("translation"), QLatin1String(":/"));
qWarning("Locale is %s", qPrintable(QLocale::system().name()));
QString qsSystemLocale = QLocale::system().name();
QString locale = g.s.qsLanguage.isEmpty() ? QLocale::system().name() : g.s.qsLanguage;
#ifdef Q_OS_MAC
if (os_lang) {
qWarning("Using Mac OS X system langauge as locale name");
qsSystemLocale = QString(os_lang);
}
#endif
qWarning("Locale is %s", qPrintable(qsSystemLocale));
QString locale = g.s.qsLanguage.isEmpty() ? qsSystemLocale : g.s.qsLanguage;
QTranslator translator;
translator.load(QLatin1String("translation:mumble_") + locale);

View File

@ -39,6 +39,7 @@
#include "Global.h"
char *os_url = NULL;
char *os_lang = NULL;
static FILE *fConsole = NULL;
static OSErr urlCallback(const AppleEvent *ae, AppleEvent *, long) {
@ -102,6 +103,20 @@ static void mumbleMessageOutput(QtMsgType type, const char *msg) {
}
}
void query_language() {
CFPropertyListRef cfaLangs;
CFStringRef cfsLang;
static char lang[16];
cfaLangs = CFPreferencesCopyAppValue(CFSTR("AppleLanguages"), kCFPreferencesCurrentApplication);
cfsLang = (CFStringRef) CFArrayGetValueAtIndex((CFArrayRef)cfaLangs, 0);
if (! CFStringGetCString(cfsLang, lang, 16, kCFStringEncodingUTF8))
return;
os_lang = lang;
}
void os_init() {
const char *home = getenv("HOME");
const char *path = "/Library/Preferences/Mumble/";
@ -121,6 +136,11 @@ void os_init() {
qInstallMsgHandler(mumbleMessageOutput);
}
/* Query for language setting. OS X's LANG environment variable is determined from the region selected
* in SystemPrefs -> International -> Formats -> Region instead of the system language. We override this
* by always using the system langauge, to get rid of all sorts of nasty langauge inconsistencies. */
query_language();
/* Install Apple Event handler for GURL events. This intercepts any URLs set in Mumble's Info.plist. */
AEInstallEventHandler(kInternetEventClass, kAEGetURL, NewAEEventHandlerUPP(urlCallback), 0, false);
}