-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqtexttranslator.cpp
More file actions
55 lines (49 loc) · 1.61 KB
/
qtexttranslator.cpp
File metadata and controls
55 lines (49 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include "qtexttranslator.h"
QTextTranslator::QTextTranslator(QObject *parent, QString path, QTextTranslator *reverse)
: QTranslator (parent)
{
m_reverse = reverse;
QSettings settings(path, QSettings::IniFormat, this);
// when initialized:
// *this *reverse
// [Context] [Context]
// text_xxxx=Translated Text <-- --> text_xxxx=Source Text
//
// when translate:
// translate("Context", "Source Text") --> "Translated Text"
//
QStringList groups = settings.childGroups();
foreach(const QString g, groups) {
settings.beginGroup(g);
InnerMap map;
foreach(const QString& key, settings.allKeys()) {
QString reversed = reverse != nullptr ? reverse->getString(g, key) : "";
QString message = settings.value(key, reversed).toString();
map.insert(reversed.isEmpty() ? key : reversed, message);
}
m_trans.insert(g, map);
settings.endGroup();
}
}
QString QTextTranslator::translate(const char *context, const char *sourceText, const char *disambiguation, int n) const
{
QString con(context);
QString source(sourceText);
return getString(con, source);
}
QString QTextTranslator::getString(const QString &group, const QString &key) const
{
auto itr = m_trans.find(group);
if(itr == m_trans.end()) {
return QString();
}
auto itr2 = itr.value().find(key);
if(itr2 == itr.value().end()) {
return QString();
}
return itr2.value();
}
bool QTextTranslator::isEmpty() const
{
return false;
}