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. 38
      bin/qsettingstranslator.py
  2. 69
      examples/mvvmcore/SampleCore/samplecore_de.ts
  3. 35
      examples/mvvmcore/SampleCore/settings.xml
  4. 5
      src/mvvmcore/settingssetuploader.cpp

38
bin/qsettingstranslator.py

@ -7,29 +7,29 @@ try:
except ImportError: except ImportError:
from xml.etree.ElementTree import parse 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] def create_settings_ts(infile, outfile):
outfile = sys.argv[2] strings = []
tree = parse(infile)
strings = set() for elem in tree.iter():
tree = parse(infile)
for elem in tree.iter():
if elem.tag == "SearchKey": if elem.tag == "SearchKey":
strings.add(elem.text) strings.append(elem.text)
else: else:
if "title" in elem.attrib: if "title" in elem.attrib:
strings.add(elem.attrib["title"]) strings.append(elem.attrib["title"])
if "tooltip" in elem.attrib: if "tooltip" in elem.attrib:
strings.add(elem.attrib["tooltip"]) 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": if "ts" in elem.attrib and elem.attrib["ts"].lower() == "true":
strings.add(elem.text) strings.append(elem.text)
if "tsdefault" in elem.attrib and elem.attrib["tsdefault"].lower() == "true": if "tsdefault" in elem.attrib and elem.attrib["tsdefault"].lower() == "true":
strings.add(elem.attrib["default"]) strings.append(elem.attrib["default"])
with open(outfile, "w") as file: with open(outfile, "w") as file:
file.write("#include <QCoreApplication>\n\n") file.write("#include <QCoreApplication>\n\n")
file.write("void dummyfn() {\n") file.write("void dummyfn() {\n")
for string in strings: for string in strings:
@ -37,3 +37,11 @@ with open(outfile, "w") as file:
string = string.replace("\"", "\\\"") string = string.replace("\"", "\\\"")
file.write("\tQCoreApplication::translate(\"qtmvvm_settings_xml\", \"{}\");\n".format(string)) file.write("\tQCoreApplication::translate(\"qtmvvm_settings_xml\", \"{}\");\n".format(string))
file.write("}\n") 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> <context>
<name>qtmvvm_settings_xml</name> <name>qtmvvm_settings_xml</name>
<message> <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> <source>Select a &amp;mode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="-18"/>
<location line="+2"/>
<source>Variant B</source> <source>Variant B</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-7"/> <location line="+3"/>
<source>This is another section</source> <source>This is another section</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+20"/> <location line="-2"/>
<source>Variant C</source> <source>Variant C</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-23"/> <location line="+20"/>
<source>https://example.org/test</source> <source>https://example.org/test</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="-12"/>
<source>Value C</source> <source>Value C</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="-17"/>
<source>Enter a nice name</source> <source>Enter a nice name</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-16"/> <location line="+18"/>
<source>Value A+B</source> <source>Value A+B</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+14"/> <location line="+3"/>
<source>Value A+B+C</source> <source>Value A+B+C</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+12"/> <location line="-24"/>
<source>bool</source> <source>bool</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-8"/> <location line="+6"/>
<source>Open &amp;system settings</source> <source>Open &amp;system settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-23"/> <location line="+16"/>
<source>Value A+C</source> <source>Value A+C</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="-25"/>
<source>&amp;Check me</source> <source>&amp;Check me</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+25"/> <location line="+2"/>
<location line="+3"/>
<source>property</source> <source>property</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-20"/> <location line="+11"/>
<source>Another Section</source> <source>Another Section</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -161,87 +165,88 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-9"/> <location line="-6"/>
<source>Another main category</source> <source>Another main category</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+17"/> <location line="+3"/>
<location line="+2"/>
<source>Text 2</source> <source>Text 2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-4"/> <location line="-25"/>
<source>This is a tooltip</source> <source>This is a tooltip</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-3"/> <location line="+10"/>
<source>Enter a &amp;value</source> <source>Enter a &amp;value</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+18"/>
<source>Choose a &amp;font</source> <source>Choose a &amp;font</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-20"/> <location line="-23"/>
<source>Variant A</source> <source>Variant A</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+8"/>
<source>Value A</source> <source>Value A</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="-17"/>
<source>Enter a &amp;name</source> <source>Enter a &amp;name</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-2"/> <location line="-3"/>
<source>I am a checkbox!</source> <source>I am a checkbox!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-4"/> <location line="+28"/>
<source>Enter a &amp;number</source> <source>Enter a &amp;number</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="-19"/>
<source>You can use this to trigger whatever kind of action you need</source> <source>You can use this to trigger whatever kind of action you need</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-23"/> <location line="+12"/>
<source>Value B</source> <source>Value B</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="-3"/>
<source>The value must be between 0 and 1</source> <source>The value must be between 0 and 1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+18"/>
<source>Non existing type</source> <source>Non existing type</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+9"/> <location line="-5"/>
<source>Text 1</source> <source>Text 1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-11"/> <location line="-25"/>
<source>Sub-Group</source> <source>Sub-Group</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-8"/> <location line="+19"/>
<source>Value B+C</source> <source>Value B+C</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

35
examples/mvvmcore/SampleCore/settings.xml

@ -15,7 +15,8 @@
<Entry key="prop2" <Entry key="prop2"
type="string" type="string"
title="Enter a &amp;name"> 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> </Entry>
</Group> </Group>
<Group title="Sub-Group" tooltip="This is a tooltip"> <Group title="Sub-Group" tooltip="This is a tooltip">
@ -24,18 +25,18 @@
title="Open &amp;system settings"> title="Open &amp;system settings">
<Property key="text" type="string">Trigger Action</Property> <Property key="text" type="string">Trigger Action</Property>
<Property key="args" type="object"> <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> </Property>
</Entry> </Entry>
<Entry key="prop4" <Entry key="prop4"
type="selection" type="selection"
title="Select a &amp;mode" title="Select a &amp;mode"
default="Variant B" default="Variant B"
tsdefault="true"> trdefault="true">
<Property key="listElements" type="list"> <Property key="listElements" type="list">
<Element type="string" ts="true">Variant A</Element> <Element type="string" tr="true">Variant A</Element>
<Element type="string" ts="true">Variant B</Element> <Element type="string" tr="true">Variant B</Element>
<Element type="string" ts="true">Variant C</Element> <Element type="string" tr="true">Variant C</Element>
</Property> </Property>
</Entry> </Entry>
</Group> </Group>
@ -54,31 +55,31 @@
default="3"> default="3">
<Property key="listElements" type="list"> <Property key="listElements" type="list">
<Element type="object"> <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> <Property key="value" type="int">1</Property>
</Element> </Element>
<Element type="object"> <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> <Property key="value" type="int">2</Property>
</Element> </Element>
<Element type="object"> <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> <Property key="value" type="int">4</Property>
</Element> </Element>
<Element type="object"> <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> <Property key="value" type="int">3</Property>
</Element> </Element>
<Element type="object"> <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> <Property key="value" type="int">5</Property>
</Element> </Element>
<Element type="object"> <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> <Property key="value" type="int">6</Property>
</Element> </Element>
<Element type="object"> <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> <Property key="value" type="int">7</Property>
</Element> </Element>
</Property> </Property>
@ -94,17 +95,17 @@
type="selection" type="selection"
title="Select a &amp;mode" title="Select a &amp;mode"
default="Text 2" default="Text 2"
tsdefault="true"> trdefault="true">
<Property key="editable" type="bool">true</Property> <Property key="editable" type="bool">true</Property>
<Property key="listElements" type="list"> <Property key="listElements" type="list">
<Element type="string" ts="true">Text 1</Element> <Element type="string" tr="true">Text 1</Element>
<Element type="string" ts="true">Text 2</Element> <Element type="string" tr="true">Text 2</Element>
</Property> </Property>
</Entry> </Entry>
<Entry key="prop9" <Entry key="prop9"
type="url" type="url"
title="Enter a &amp;website"> 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>
<Entry key="prop10" <Entry key="prop10"
type="QFont" type="QFont"

5
src/mvvmcore/settingssetuploader.cpp

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

Loading…
Cancel
Save