diff options
Diffstat (limited to 'sources/pyside6/tests/QtCore/translation_test.py')
-rw-r--r-- | sources/pyside6/tests/QtCore/translation_test.py | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/sources/pyside6/tests/QtCore/translation_test.py b/sources/pyside6/tests/QtCore/translation_test.py new file mode 100644 index 000000000..da09e47b6 --- /dev/null +++ b/sources/pyside6/tests/QtCore/translation_test.py @@ -0,0 +1,102 @@ +#!/usr/bin/python +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +'''Unit tests to test QTranslator and translation in general.''' + +import os +import sys +import unittest + +from pathlib import Path +sys.path.append(os.fspath(Path(__file__).resolve().parents[1])) +from init_paths import init_test_paths +init_test_paths(False) + +from PySide6.QtCore import QObject, QTranslator, QCoreApplication + +from helper.usesqapplication import UsesQApplication + + +class TranslationTest(UsesQApplication): + '''Test case for Qt translation facilities.''' + + def setUp(self): + super(TranslationTest, self).setUp() + self.trdir = os.path.join(os.path.dirname(__file__), 'translations') + + def testLatin(self): + # Set string value to Latin + translator = QTranslator() + translator.load(os.path.join(self.trdir, 'trans_latin.qm')) + self.app.installTranslator(translator) + + obj = QObject() + obj.setObjectName(obj.tr('Hello World!')) + self.assertEqual(obj.objectName(), 'Orbis, te saluto!') + + def testLatinClass(self): + # Set string value to Latin, no instance + translator = QTranslator() + translator.load(os.path.join(self.trdir, 'trans_latin.qm')) + self.app.installTranslator(translator) + + obj = QObject() + obj.setObjectName(QObject.tr('Hello World!')) + self.assertEqual(obj.objectName(), 'Orbis, te saluto!') + + def testLatinDerived(self): + # PYSIDE-131: Test that derived classes work, too. + translator = QTranslator() + translator.load(os.path.join(self.trdir, 'trans_latin.qm')) + self.app.installTranslator(translator) + + class Derived(QObject): + pass + + obj = Derived() + obj.setObjectName(obj.tr('Hello World!')) + self.assertEqual(obj.objectName(), 'Orbis, te saluto!') + + def testLatinDerivedClass(self): + # PYSIDE-131: Test that derived classes work, too, no instance. + translator = QTranslator() + translator.load(os.path.join(self.trdir, 'trans_latin.qm')) + self.app.installTranslator(translator) + + class Derived(QObject): + pass + + obj = Derived() + obj.setObjectName(Derived.tr('Hello World!')) + self.assertEqual(obj.objectName(), 'Orbis, te saluto!') + + def testRussian(self): + # Set string value to Russian + translator = QTranslator() + translator.load(os.path.join(self.trdir, 'trans_russian.qm')) + self.app.installTranslator(translator) + + obj = QObject() + obj.setObjectName(obj.tr('Hello World!')) + self.assertEqual(obj.objectName(), 'привет мир!') + + def testUtf8(self): + translator = QTranslator() + translator.load(os.path.join(self.trdir, 'trans_russian.qm')) + self.app.installTranslator(translator) + + obj = QObject() + obj.setObjectName(obj.tr('Hello World!')) + self.assertEqual(obj.objectName(), 'привет мир!') + + def testTranslateWithNoneDisambiguation(self): + value = 'String here' + obj = QCoreApplication.translate('context', value, None) + self.assertTrue(isinstance(obj, str)) + self.assertEqual(obj, value) + + +if __name__ == '__main__': + unittest.main() + |