mirror of https://github.com/PCSX2/pcsx2.git
Qt: Default to system language
This commit is contained in:
parent
22682e4150
commit
9818446c7d
|
@ -59,6 +59,34 @@ namespace QtHost
|
||||||
|
|
||||||
static std::vector<QTranslator*> s_translators;
|
static std::vector<QTranslator*> s_translators;
|
||||||
|
|
||||||
|
static QString getSystemLanguage() {
|
||||||
|
std::vector<std::pair<QString, QString>> available = QtHost::GetAvailableLanguageList();
|
||||||
|
QString locale = QLocale::system().name();
|
||||||
|
locale.replace('_', '-');
|
||||||
|
// Can we find an exact match?
|
||||||
|
for (const std::pair<QString, QString>& entry : available)
|
||||||
|
{
|
||||||
|
if (entry.second == locale)
|
||||||
|
return locale;
|
||||||
|
}
|
||||||
|
// How about a partial match?
|
||||||
|
QStringView lang = QStringView(locale);
|
||||||
|
lang = lang.left(lang.indexOf('-'));
|
||||||
|
for (const std::pair<QString, QString>& entry : available)
|
||||||
|
{
|
||||||
|
QStringView avail = QStringView(entry.second);
|
||||||
|
avail = avail.left(avail.indexOf('-'));
|
||||||
|
if (avail == lang) {
|
||||||
|
Console.Warning("Couldn't find translation for system language %s, using %s instead",
|
||||||
|
locale.toStdString().c_str(), entry.second.toStdString().c_str());
|
||||||
|
return entry.second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// No matches :(
|
||||||
|
Console.Warning("Couldn't find translation for system language %s, using en instead", locale.toStdString().c_str());
|
||||||
|
return QStringLiteral("en");
|
||||||
|
}
|
||||||
|
|
||||||
void QtHost::InstallTranslator()
|
void QtHost::InstallTranslator()
|
||||||
{
|
{
|
||||||
for (QTranslator* translator : s_translators)
|
for (QTranslator* translator : s_translators)
|
||||||
|
@ -68,8 +96,10 @@ void QtHost::InstallTranslator()
|
||||||
}
|
}
|
||||||
s_translators.clear();
|
s_translators.clear();
|
||||||
|
|
||||||
const QString language =
|
QString language =
|
||||||
QString::fromStdString(Host::GetBaseStringSettingValue("UI", "Language", GetDefaultLanguage()));
|
QString::fromStdString(Host::GetBaseStringSettingValue("UI", "Language", GetDefaultLanguage()));
|
||||||
|
if (language == QStringLiteral("system"))
|
||||||
|
language = getSystemLanguage();
|
||||||
|
|
||||||
// Install the base qt translation first.
|
// Install the base qt translation first.
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
@ -171,7 +201,7 @@ static std::string QtHost::GetFontPath(const GlyphInfo* gi)
|
||||||
|
|
||||||
const char* QtHost::GetDefaultLanguage()
|
const char* QtHost::GetDefaultLanguage()
|
||||||
{
|
{
|
||||||
return "en";
|
return "system";
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 Host::Internal::GetTranslatedStringImpl(
|
s32 Host::Internal::GetTranslatedStringImpl(
|
||||||
|
@ -194,6 +224,7 @@ s32 Host::Internal::GetTranslatedStringImpl(
|
||||||
std::vector<std::pair<QString, QString>> QtHost::GetAvailableLanguageList()
|
std::vector<std::pair<QString, QString>> QtHost::GetAvailableLanguageList()
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
|
{QCoreApplication::translate("InterfaceSettingsWidget", "System Language [Default]"), QStringLiteral("system")},
|
||||||
{QStringLiteral("Afrikaans (af-ZA)"), QStringLiteral("af-ZA")},
|
{QStringLiteral("Afrikaans (af-ZA)"), QStringLiteral("af-ZA")},
|
||||||
{QStringLiteral("عربي (ar-SA)"), QStringLiteral("ar-SA")},
|
{QStringLiteral("عربي (ar-SA)"), QStringLiteral("ar-SA")},
|
||||||
{QStringLiteral("Català (ca-ES)"), QStringLiteral("ca-ES")},
|
{QStringLiteral("Català (ca-ES)"), QStringLiteral("ca-ES")},
|
||||||
|
@ -201,7 +232,7 @@ std::vector<std::pair<QString, QString>> QtHost::GetAvailableLanguageList()
|
||||||
{QStringLiteral("Dansk (da-DK)"), QStringLiteral("da-DK")},
|
{QStringLiteral("Dansk (da-DK)"), QStringLiteral("da-DK")},
|
||||||
{QStringLiteral("Deutsch (de-DE)"), QStringLiteral("de-DE")},
|
{QStringLiteral("Deutsch (de-DE)"), QStringLiteral("de-DE")},
|
||||||
{QStringLiteral("Ελληνικά (el-GR)"), QStringLiteral("el-GR")},
|
{QStringLiteral("Ελληνικά (el-GR)"), QStringLiteral("el-GR")},
|
||||||
{QStringLiteral("English (en) [Default]"), QStringLiteral("en")},
|
{QStringLiteral("English (en)"), QStringLiteral("en")},
|
||||||
{QStringLiteral("Español (Hispanoamérica) (es-419)"), QStringLiteral("es-419")},
|
{QStringLiteral("Español (Hispanoamérica) (es-419)"), QStringLiteral("es-419")},
|
||||||
{QStringLiteral("Español (España) (es-ES)"), QStringLiteral("es-ES")},
|
{QStringLiteral("Español (España) (es-ES)"), QStringLiteral("es-ES")},
|
||||||
{QStringLiteral("فارسی (fa-IR)"), QStringLiteral("fa-IR")},
|
{QStringLiteral("فارسی (fa-IR)"), QStringLiteral("fa-IR")},
|
||||||
|
|
Loading…
Reference in New Issue