From d8b0efab880eda9ab28071d2c53414910dadc702 Mon Sep 17 00:00:00 2001 From: Pere Orga Date: Wed, 18 Feb 2026 23:54:01 +0100 Subject: [PATCH] fix: ignore invalid Qt Linguist files when converting .ts files --- src/builder/convertfiles.py | 12 +++++++++++ .../data/conversions/ts/qt-translation.ts | 17 +++++++++++++++ .../data/conversions/ts/typescript-source.ts | 5 +++++ src/tests/builder-tests/testconvertfiles.py | 21 +++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 src/tests/builder-tests/data/conversions/ts/qt-translation.ts create mode 100644 src/tests/builder-tests/data/conversions/ts/typescript-source.ts diff --git a/src/builder/convertfiles.py b/src/builder/convertfiles.py index 3b8c87ca..7e17d7ca 100644 --- a/src/builder/convertfiles.py +++ b/src/builder/convertfiles.py @@ -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 " + + + + MainWindow + + + Hello World + Hola Món + + + + File + Fitxer + + + diff --git a/src/tests/builder-tests/data/conversions/ts/typescript-source.ts b/src/tests/builder-tests/data/conversions/ts/typescript-source.ts new file mode 100644 index 00000000..e97cff8a --- /dev/null +++ b/src/tests/builder-tests/data/conversions/ts/typescript-source.ts @@ -0,0 +1,5 @@ +const greeting: string = "Hello World"; + +export function greet(name: string): string { + return `Hello, ${name}!`; +} diff --git a/src/tests/builder-tests/testconvertfiles.py b/src/tests/builder-tests/testconvertfiles.py index 4bcdf70c..ebab053d 100644 --- a/src/tests/builder-tests/testconvertfiles.py +++ b/src/tests/builder-tests/testconvertfiles.py @@ -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()