Browse Source

refactor translations

pull/2/head
Skycoder42 7 years ago
parent
commit
1866fe154c
No known key found for this signature in database GPG Key ID: 8E01AD9EF0578D2B
  1. 62
      bin/qsettingstranslator.py
  2. 69
      examples/mvvmcore/SampleCore/samplecore_de.ts
  3. 35
      examples/mvvmcore/SampleCore/settings.xml
  4. 7
      src/mvvmcore/settingssetuploader.cpp

62
bin/qsettingstranslator.py

@ -7,33 +7,41 @@ try:
except ImportError:
from xml.etree.ElementTree import parse
if len(sys.argv) != 3:
print("Usage: qsettingstranslator.py <in> <out>", file=sys.stderr)
exit(1)
infile = sys.argv[1]
outfile = sys.argv[2]
def create_settings_ts(infile, outfile):
strings = []
tree = parse(infile)
for elem in tree.iter():
if elem.tag == "SearchKey":
strings.append(elem.text)
else:
if "title" in elem.attrib:
strings.append(elem.attrib["title"])
if "tooltip" in elem.attrib:
strings.append(elem.attrib["tooltip"])
if "tr" in elem.attrib and elem.attrib["tr"].lower() == "true":
strings.append(elem.text)
if "trdefault" in elem.attrib and elem.attrib["trdefault"].lower() == "true":
strings.append(elem.attrib["default"])
# legaxy keys, because of a typo...
if "ts" in elem.attrib and elem.attrib["ts"].lower() == "true":
strings.append(elem.text)
if "tsdefault" in elem.attrib and elem.attrib["tsdefault"].lower() == "true":
strings.append(elem.attrib["default"])
with open(outfile, "w") as file:
file.write("#include <QCoreApplication>\n\n")
file.write("void dummyfn() {\n")
for string in strings:
string = string.replace("\\", "\\\\")
string = string.replace("\"", "\\\"")
file.write("\tQCoreApplication::translate(\"qtmvvm_settings_xml\", \"{}\");\n".format(string))
file.write("}\n")
strings = set()
tree = parse(infile)
for elem in tree.iter():
if elem.tag == "SearchKey":
strings.add(elem.text)
else:
if "title" in elem.attrib:
strings.add(elem.attrib["title"])
if "tooltip" in elem.attrib:
strings.add(elem.attrib["tooltip"])
if "ts" in elem.attrib and elem.attrib["ts"].lower() == "true":
strings.add(elem.text)
if "tsdefault" in elem.attrib and elem.attrib["tsdefault"].lower() == "true":
strings.add(elem.attrib["default"])
with open(outfile, "w") as file:
file.write("#include <QCoreApplication>\n\n")
file.write("void dummyfn() {\n")
for string in strings:
string = string.replace("\\", "\\\\")
string = string.replace("\"", "\\\"")
file.write("\tQCoreApplication::translate(\"qtmvvm_settings_xml\", \"{}\");\n".format(string))
file.write("}\n")
if __name__ == '__main__':
if len(sys.argv) != 3:
print("Usage: qsettingstranslator.py <in> <out>", file=sys.stderr)
exit(1)
else:
create_settings_ts(*sys.argv[1:3])

69
examples/mvvmcore/SampleCore/samplecore_de.ts

@ -81,77 +81,81 @@
<context>
<name>qtmvvm_settings_xml</name>
<message>
<location filename=".ts-dummy/settings.tsdummy.cpp" line="+6"/>
<location filename=".ts-dummy/settings.tsdummy.cpp" line="+15"/>
<location line="+9"/>
<location line="+10"/>
<source>Select a &amp;mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+15"/>
<location line="-18"/>
<location line="+2"/>
<source>Variant B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-7"/>
<location line="+3"/>
<source>This is another section</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+20"/>
<location line="-2"/>
<source>Variant C</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-23"/>
<location line="+20"/>
<source>https://example.org/test</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="-12"/>
<source>Value C</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="-17"/>
<source>Enter a nice name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-16"/>
<location line="+18"/>
<source>Value A+B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+14"/>
<location line="+3"/>
<source>Value A+B+C</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<location line="-24"/>
<source>bool</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-8"/>
<location line="+6"/>
<source>Open &amp;system settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-23"/>
<location line="+16"/>
<source>Value A+C</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="-25"/>
<source>&amp;Check me</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+25"/>
<location line="+2"/>
<location line="+3"/>
<source>property</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-20"/>
<location line="+11"/>
<source>Another Section</source>
<translation type="unfinished"></translation>
</message>
@ -161,87 +165,88 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="-9"/>
<location line="-6"/>
<source>Another main category</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<location line="+3"/>
<location line="+2"/>
<source>Text 2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-4"/>
<location line="-25"/>
<source>This is a tooltip</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-3"/>
<location line="+10"/>
<source>Enter a &amp;value</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<location line="+18"/>
<source>Choose a &amp;font</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-20"/>
<location line="-23"/>
<source>Variant A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<location line="+8"/>
<source>Value A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<location line="-17"/>
<source>Enter a &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-2"/>
<location line="-3"/>
<source>I am a checkbox!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-4"/>
<location line="+28"/>
<source>Enter a &amp;number</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+15"/>
<location line="-19"/>
<source>You can use this to trigger whatever kind of action you need</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-23"/>
<location line="+12"/>
<source>Value B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<location line="-3"/>
<source>The value must be between 0 and 1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<location line="+18"/>
<source>Non existing type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+9"/>
<location line="-5"/>
<source>Text 1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-11"/>
<location line="-25"/>
<source>Sub-Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-8"/>
<location line="+19"/>
<source>Value B+C</source>
<translation type="unfinished"></translation>
</message>

35
examples/mvvmcore/SampleCore/settings.xml

@ -15,7 +15,8 @@
<Entry key="prop2"
type="string"
title="Enter a &amp;name">
<Property key="placeholderText" type="string" ts="true">Enter a nice name</Property>
<SearchKey>property</SearchKey>
<Property key="placeholderText" type="string" tr="true">Enter a nice name</Property>
</Entry>
</Group>
<Group title="Sub-Group" tooltip="This is a tooltip">
@ -24,18 +25,18 @@
title="Open &amp;system settings">
<Property key="text" type="string">Trigger Action</Property>
<Property key="args" type="object">
<Property key="hint" type="string" ts="true">You can use this to trigger whatever kind of action you need</Property>
<Property key="hint" type="string" tr="true">You can use this to trigger whatever kind of action you need</Property>
</Property>
</Entry>
<Entry key="prop4"
type="selection"
title="Select a &amp;mode"
default="Variant B"
tsdefault="true">
trdefault="true">
<Property key="listElements" type="list">
<Element type="string" ts="true">Variant A</Element>
<Element type="string" ts="true">Variant B</Element>
<Element type="string" ts="true">Variant C</Element>
<Element type="string" tr="true">Variant A</Element>
<Element type="string" tr="true">Variant B</Element>
<Element type="string" tr="true">Variant C</Element>
</Property>
</Entry>
</Group>
@ -54,31 +55,31 @@
default="3">
<Property key="listElements" type="list">
<Element type="object">
<Property key="name" type="string" ts="true">Value A</Property>
<Property key="name" type="string" tr="true">Value A</Property>
<Property key="value" type="int">1</Property>
</Element>
<Element type="object">
<Property key="name" type="string" ts="true">Value B</Property>
<Property key="name" type="string" tr="true">Value B</Property>
<Property key="value" type="int">2</Property>
</Element>
<Element type="object">
<Property key="name" type="string" ts="true">Value C</Property>
<Property key="name" type="string" tr="true">Value C</Property>
<Property key="value" type="int">4</Property>
</Element>
<Element type="object">
<Property key="name" type="string" ts="true">Value A+B</Property>
<Property key="name" type="string" tr="true">Value A+B</Property>
<Property key="value" type="int">3</Property>
</Element>
<Element type="object">
<Property key="name" type="string" ts="true">Value A+C</Property>
<Property key="name" type="string" tr="true">Value A+C</Property>
<Property key="value" type="int">5</Property>
</Element>
<Element type="object">
<Property key="name" type="string" ts="true">Value B+C</Property>
<Property key="name" type="string" tr="true">Value B+C</Property>
<Property key="value" type="int">6</Property>
</Element>
<Element type="object">
<Property key="name" type="string" ts="true">Value A+B+C</Property>
<Property key="name" type="string" tr="true">Value A+B+C</Property>
<Property key="value" type="int">7</Property>
</Element>
</Property>
@ -94,17 +95,17 @@
type="selection"
title="Select a &amp;mode"
default="Text 2"
tsdefault="true">
trdefault="true">
<Property key="editable" type="bool">true</Property>
<Property key="listElements" type="list">
<Element type="string" ts="true">Text 1</Element>
<Element type="string" ts="true">Text 2</Element>
<Element type="string" tr="true">Text 1</Element>
<Element type="string" tr="true">Text 2</Element>
</Property>
</Entry>
<Entry key="prop9"
type="url"
title="Enter a &amp;website">
<Property key="placeholderText" type="string" ts="true">https://example.org/test</Property>
<Property key="placeholderText" type="string" tr="true">https://example.org/test</Property>
</Entry>
<Entry key="prop10"
type="QFont"

7
src/mvvmcore/settingssetuploader.cpp

@ -249,7 +249,10 @@ Entry SettingsSetupLoader::readEntry(QXmlStreamReader &reader) const
throwAttrib(reader, "title");
entry.title = trctx(reader.stringValue("title"));
entry.tooltip = trctx(reader.stringValue("tooltip"));
entry.defaultValue = trctx(reader.stringValue("default"));
if(reader.boolValue("trdefault") || reader.boolValue("tsdefault")) //MAJOR remove ts variant
entry.defaultValue = trctx(reader.stringValue("default"));
else
entry.defaultValue = reader.stringValue("default");
entry.frontends = reader.stringValue("frontends");
entry.selectors = reader.stringValue("selectors");
@ -329,7 +332,7 @@ QVariant SettingsSetupLoader::readElement(QXmlStreamReader &reader) const
if(typeId == QMetaType::UnknownType)
throwXmlError(reader, "Unknown type: " + type.toUtf8());
QVariant mVariant;
if(reader.boolValue("tr"))
if(reader.boolValue("tr") || reader.boolValue("ts")) //MAJOR remove ts variant
mVariant = trctx(reader.readElementText());
else
mVariant = reader.readElementText();

Loading…
Cancel
Save