Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/builder/convertfiles.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,20 @@ def _add_conversor_setup_to_cmd(self, cmd, conversor_id=None):

return cmd

def _is_qt_ts_file(self, filepath):
"""Check if a .ts file is a Qt Linguist translation file (not TypeScript source)."""
try:
with open(filepath, "r", encoding="utf-8", errors="ignore") as f:
content = f.read(512)
return "<TS" in content
except Exception:
return False

def _convert_ts_files_to_po(self):
for tsfile in self.findFiles.find_recursive(self.convert_dir, "*.ts"):
if not self._is_qt_ts_file(tsfile):
logging.info("skipping non-Qt ts file: {0}".format(tsfile))
continue
fileName, fileExtension = os.path.splitext(tsfile)
logging.info("convert ts file: {0}".format(tsfile))
cmd = self._add_conversor_setup_to_cmd(
Expand Down
17 changes: 17 additions & 0 deletions src/tests/builder-tests/data/conversions/ts/qt-translation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ca">
<context>
<name>MainWindow</name>
<message>
<location filename="../src/mainwindow.cpp" line="26"/>
<source>Hello World</source>
<translation>Hola Món</translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="30"/>
<source>File</source>
<translation>Fitxer</translation>
</message>
</context>
</TS>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const greeting: string = "Hello World";

export function greet(name: string): string {
return `Hello, ${name}!`;
}
21 changes: 21 additions & 0 deletions src/tests/builder-tests/testconvertfiles.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,27 @@ def test_convert_php_files_to_po(self):
self.assertEqual("Add condition", po_file[0].msgid)
self.assertEqual("Afegeix una condició", po_file[0].msgstr)

def test_convert_ts_files_to_po(self):
ts_dir = path.dirname(path.realpath(__file__))
ts_dir += "/data/conversions/ts/"
convert = ConvertFiles(ts_dir, None)
convert.convert()

po_file, entries = self._get_po_entries(ts_dir)
self._clean_pos(ts_dir)

self.assertEqual(entries, 2)
self.assertEqual("Hello World", po_file[0].msgid)
self.assertEqual("Hola Món", po_file[0].msgstr)

def test_is_qt_ts_file(self):
ts_dir = path.dirname(path.realpath(__file__))
ts_dir += "/data/conversions/ts/"
convert = ConvertFiles(ts_dir, None)

self.assertTrue(convert._is_qt_ts_file(ts_dir + "qt-translation.ts"))
self.assertFalse(convert._is_qt_ts_file(ts_dir + "typescript-source.ts"))


if __name__ == "__main__":
unittest.main()