mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-11 15:27:54 +00:00
Unify translation files loading action
Since it is possible alternative WebUI could be coded in languages other than English, WebUI must be able to load user-provided webui_en.qm. At least one translated string must exist in order to generate an usable .qm file.
This commit is contained in:
parent
9491d40f22
commit
e98d4e874f
@ -199,10 +199,6 @@ void WebApplication::translateDocument(QString &data)
|
||||
{
|
||||
const QRegularExpression regex("QBT_TR\\((([^\\)]|\\)(?!QBT_TR))+)\\)QBT_TR\\[CONTEXT=([a-zA-Z_][a-zA-Z0-9_]*)\\]");
|
||||
|
||||
const bool isTranslationNeeded = !m_currentLocale.startsWith("en")
|
||||
|| m_currentLocale.startsWith("en_AU") || m_currentLocale.startsWith("en_GB")
|
||||
|| !m_translator.isEmpty();
|
||||
|
||||
int i = 0;
|
||||
bool found = true;
|
||||
while (i < data.size() && found) {
|
||||
@ -212,12 +208,12 @@ void WebApplication::translateDocument(QString &data)
|
||||
const QString sourceText = regexMatch.captured(1);
|
||||
const QString context = regexMatch.captured(3);
|
||||
|
||||
QString translation = sourceText;
|
||||
if (isTranslationNeeded) {
|
||||
const QString loadedText = m_translator.translate(context.toUtf8().constData(), sourceText.toUtf8().constData(), nullptr, 1);
|
||||
if (!loadedText.isEmpty())
|
||||
translation = loadedText;
|
||||
}
|
||||
const QString loadedText = m_translationFileLoaded
|
||||
? m_translator.translate(context.toUtf8().constData(), sourceText.toUtf8().constData())
|
||||
: QString();
|
||||
// `loadedText` is empty when translation is not provided
|
||||
// it should fallback to `sourceText`
|
||||
QString translation = loadedText.isEmpty() ? sourceText : loadedText;
|
||||
|
||||
// Use HTML code for quotes to prevent issues with JS
|
||||
translation.replace('\'', "'");
|
||||
@ -436,13 +432,14 @@ void WebApplication::configure()
|
||||
if (m_currentLocale != newLocale) {
|
||||
m_currentLocale = newLocale;
|
||||
m_translatedFiles.clear();
|
||||
if (m_translator.load(m_rootFolder + QLatin1String("/translations/webui_") + m_currentLocale)) {
|
||||
LogMsg(tr("Web UI translation for selected locale (%1) is successfully loaded.")
|
||||
.arg(m_currentLocale));
|
||||
|
||||
m_translationFileLoaded = m_translator.load(m_rootFolder + QLatin1String("/translations/webui_") + newLocale);
|
||||
if (m_translationFileLoaded) {
|
||||
LogMsg(tr("Web UI translation for selected locale (%1) has been successfully loaded.")
|
||||
.arg(newLocale));
|
||||
}
|
||||
else {
|
||||
LogMsg(tr("Couldn't load Web UI translation for selected locale (%1). Falling back to default (en).")
|
||||
.arg(m_currentLocale), Log::WARNING);
|
||||
LogMsg(tr("Couldn't load Web UI translation for selected locale (%1).").arg(newLocale), Log::WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -146,6 +146,7 @@ private:
|
||||
QMap<QString, TranslatedFile> m_translatedFiles;
|
||||
QString m_currentLocale;
|
||||
QTranslator m_translator;
|
||||
bool m_translationFileLoaded = false;
|
||||
|
||||
bool m_isLocalAuthEnabled;
|
||||
bool m_isAuthSubnetWhitelistEnabled;
|
||||
|
@ -5,7 +5,7 @@
|
||||
<name>AboutDlg</name>
|
||||
<message>
|
||||
<source>About</source>
|
||||
<translation type="unfinished" />
|
||||
<translation>About</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
Loading…
Reference in New Issue
Block a user