Improved detection of default language: Each language file can now have a country id in addition to the language id. This is required, because some languages (e.g. Chinese) have country-specific variants.
This commit is contained in:
parent
d1803f1a3b
commit
3141ebf2ee
@ -1 +1 @@
|
||||
25,6,繁体中文
|
||||
25,208,繁体中文
|
@ -1 +1 @@
|
||||
25,5,简体中文
|
||||
25,44,简体中文
|
@ -30,7 +30,7 @@
|
||||
#define VER_LAMEXP_MINOR_LO 4
|
||||
#define VER_LAMEXP_TYPE Alpha
|
||||
#define VER_LAMEXP_PATCH 10
|
||||
#define VER_LAMEXP_BUILD 819
|
||||
#define VER_LAMEXP_BUILD 820
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Tool versions (minimum expected versions!)
|
||||
|
@ -186,7 +186,7 @@ static struct
|
||||
QMap<QString, QString> files;
|
||||
QMap<QString, QString> names;
|
||||
QMap<QString, unsigned int> sysid;
|
||||
QMap<QString, unsigned int> scrpt;
|
||||
QMap<QString, unsigned int> cntry;
|
||||
}
|
||||
g_lamexp_translation;
|
||||
|
||||
@ -1252,7 +1252,7 @@ const QString lamexp_version2string(const QString &pattern, unsigned int version
|
||||
/*
|
||||
* Register a new translation
|
||||
*/
|
||||
bool lamexp_translation_register(const QString &langId, const QString &qmFile, const QString &langName, unsigned int &systemId, unsigned int &script)
|
||||
bool lamexp_translation_register(const QString &langId, const QString &qmFile, const QString &langName, unsigned int &systemId, unsigned int &country)
|
||||
{
|
||||
if(qmFile.isEmpty() || langName.isEmpty() || systemId < 1)
|
||||
{
|
||||
@ -1262,7 +1262,7 @@ bool lamexp_translation_register(const QString &langId, const QString &qmFile, c
|
||||
g_lamexp_translation.files.insert(langId, qmFile);
|
||||
g_lamexp_translation.names.insert(langId, langName);
|
||||
g_lamexp_translation.sysid.insert(langId, systemId);
|
||||
g_lamexp_translation.scrpt.insert(langId, script);
|
||||
g_lamexp_translation.cntry.insert(langId, country);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -1294,9 +1294,9 @@ unsigned int lamexp_translation_sysid(const QString &langId)
|
||||
/*
|
||||
* Get translation script id
|
||||
*/
|
||||
unsigned int lamexp_translation_script(const QString &langId)
|
||||
unsigned int lamexp_translation_country(const QString &langId)
|
||||
{
|
||||
return g_lamexp_translation.scrpt.value(langId.toLower(), 0);
|
||||
return g_lamexp_translation.cntry.value(langId.toLower(), 0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -111,10 +111,10 @@ bool lamexp_is_hibernation_supported(void);
|
||||
|
||||
//Translation support
|
||||
QStringList lamexp_query_translations(void);
|
||||
bool lamexp_translation_register(const QString &langId, const QString &qmFile, const QString &langName, unsigned int &systemId, unsigned int &script);
|
||||
bool lamexp_translation_register(const QString &langId, const QString &qmFile, const QString &langName, unsigned int &systemId, unsigned int &country);
|
||||
QString lamexp_translation_name(const QString &language);
|
||||
unsigned int lamexp_translation_sysid(const QString &langId);
|
||||
unsigned int lamexp_translation_script(const QString &langId);
|
||||
unsigned int lamexp_translation_country(const QString &langId);
|
||||
bool lamexp_install_translator_from_file(const QString &qmFile);
|
||||
bool lamexp_install_translator(const QString &language);
|
||||
QStringList lamexp_available_codepages(bool noAliases = true);
|
||||
|
@ -271,23 +271,28 @@ QString SettingsModel::defaultLanguage(void)
|
||||
return *m_defaultLanguage;
|
||||
}
|
||||
|
||||
//Check if we can use the default translation
|
||||
//Detect system langauge
|
||||
QLocale systemLanguage= QLocale::system();
|
||||
qDebug("[Locale]");
|
||||
qDebug("Language: %s (%d)", QLocale::languageToString(systemLanguage.language()).toUtf8().constData(), systemLanguage.language());
|
||||
qDebug("Country is: %s (%d)", QLocale::countryToString(systemLanguage.country()).toUtf8().constData(), systemLanguage.country());
|
||||
qDebug("Script is: %s (%d)\n", QLocale::scriptToString(systemLanguage.script()).toUtf8().constData(), systemLanguage.script());
|
||||
|
||||
//Check if we can use the default translation
|
||||
if(systemLanguage.language() == QLocale::English /*|| systemLanguage.language() == QLocale::C*/)
|
||||
{
|
||||
m_defaultLanguage = new QString(LAMEXP_DEFAULT_LANGID);
|
||||
return LAMEXP_DEFAULT_LANGID;
|
||||
}
|
||||
|
||||
//Try to find a suitable translation for the user's system language
|
||||
//Try to find a suitable translation for the user's system language *and* country
|
||||
QStringList languages = lamexp_query_translations();
|
||||
while(!languages.isEmpty())
|
||||
{
|
||||
QString currentLangId = languages.takeFirst();
|
||||
if(lamexp_translation_sysid(currentLangId) == systemLanguage.language())
|
||||
{
|
||||
unsigned int script = lamexp_translation_script(currentLangId);
|
||||
if((script == 0) || (systemLanguage.script() == 0) || (script == systemLanguage.script()))
|
||||
if(lamexp_translation_country(currentLangId) == systemLanguage.country())
|
||||
{
|
||||
m_defaultLanguage = new QString(currentLangId);
|
||||
return currentLangId;
|
||||
@ -295,6 +300,18 @@ QString SettingsModel::defaultLanguage(void)
|
||||
}
|
||||
}
|
||||
|
||||
//Try to find a suitable translation for the user's system language
|
||||
languages = lamexp_query_translations();
|
||||
while(!languages.isEmpty())
|
||||
{
|
||||
QString currentLangId = languages.takeFirst();
|
||||
if(lamexp_translation_sysid(currentLangId) == systemLanguage.language())
|
||||
{
|
||||
m_defaultLanguage = new QString(currentLangId);
|
||||
return currentLangId;
|
||||
}
|
||||
}
|
||||
|
||||
//Fall back to the default translation
|
||||
m_defaultLanguage = new QString(LAMEXP_DEFAULT_LANGID);
|
||||
return LAMEXP_DEFAULT_LANGID;
|
||||
|
Loading…
Reference in New Issue
Block a user