Fix setting Interlingua as GUI language

The problem came from the fact that Qt associates Interlingua to locale C.
Now, we do not rely anymore on the Qt locale to set the language. I suspect that the problem will still exist if the system locale is ia_IA.

Fixes bug #9267.
This commit is contained in:
Jean-Marc Lasgouttes 2015-03-17 11:34:28 +01:00
parent 7aad787047
commit 8aa2d6b184

View File

@ -192,16 +192,19 @@ frontend::Application * createApplication(int & argc, char * argv[])
void setLocale() void setLocale()
{ {
QLocale theLocale; QLocale theLocale;
string code;
if (lyxrc.gui_language == "auto") { if (lyxrc.gui_language == "auto") {
theLocale = QLocale::system(); theLocale = QLocale::system();
code = fromqstr(theLocale.name());
// Qt tries to outsmart us and transforms en_US to C.
if (code == "C")
code = "en_US";
} else { } else {
Language const * l = languages.getLanguage(lyxrc.gui_language); Language const * l = languages.getLanguage(lyxrc.gui_language);
string const code = l ? l->code() : string(); code = l ? l->code() : string();
theLocale = QLocale(toqstr(code)); theLocale = QLocale(toqstr(code));
} }
string const code = fromqstr(theLocale.name()); Messages::guiLanguage(code);
// Qt tries to outsmart us and transforms en_US to C.
Messages::guiLanguage((code == "C") ? "en_US" : code);
QLocale::setDefault(theLocale); QLocale::setDefault(theLocale);
setlocale(LC_NUMERIC, "C"); setlocale(LC_NUMERIC, "C");
} }