Improve HttpConnection::translateDocument().

This commit is contained in:
Vladimir Golovnev (Glassez) 2014-01-25 22:29:15 +04:00
parent 36ff9be42e
commit 1aa70bedb7

View file

@ -150,35 +150,37 @@ void HttpConnection::translateDocument(QString& data) {
"confirmDeletionDlg", "TrackerList", "TorrentFilesModel",
"options_imp", "Preferences", "TrackersAdditionDlg",
"ScanFoldersModel", "PropTabBar", "TorrentModel",
"downloadFromURL"};
"downloadFromURL", "misc"};
const size_t context_count = sizeof(contexts)/sizeof(contexts[0]);
int i = 0;
bool found;
bool found = true;
do {
found = false;
const QString locale = Preferences().getLocale();
bool isTranslationNeeded = !locale.startsWith("en") || locale.startsWith("en_AU") || locale.startsWith("en_GB");
while(i < data.size() && found) {
i = regex.indexIn(data, i);
if (i >= 0) {
//qDebug("Found translatable string: %s", regex.cap(1).toUtf8().data());
QByteArray word = regex.cap(1).toUtf8();
QString translation = word;
bool isTranslationNeeded = !Preferences().getLocale().startsWith("en");
if (isTranslationNeeded) {
int context_index = 0;
do {
while(context_index < context_count && translation == word) {
translation = qApp->translate(contexts[context_index].c_str(), word.constData(), 0, QCoreApplication::UnicodeUTF8, 1);
++context_index;
} while(translation == word && context_index < 15);
}
}
// Remove keyboard shortcuts
translation.replace(mnemonic, "");
data.replace(i, regex.matchedLength(), translation);
i += translation.length();
found = true;
} else {
found = false; // no more translatable strings
}
} while(found && i < data.size());
}
}
void HttpConnection::respond() {