mirror of
https://github.com/mumble-voip/mumble.git
synced 2025-10-26 11:19:16 +00:00
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:
parent
dca353cdef
commit
05dcd3b180
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user