aboutsummaryrefslogtreecommitdiffstats
path: root/examples/widgets/linguist
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/linguist')
-rw-r--r--examples/widgets/linguist/doc/linguist.rst7
-rw-r--r--examples/widgets/linguist/example_de.ts40
-rw-r--r--examples/widgets/linguist/linguist.pyproject3
-rw-r--r--examples/widgets/linguist/linguist.qrc5
-rw-r--r--examples/widgets/linguist/linguist_rc.py68
-rw-r--r--examples/widgets/linguist/main.py55
6 files changed, 178 insertions, 0 deletions
diff --git a/examples/widgets/linguist/doc/linguist.rst b/examples/widgets/linguist/doc/linguist.rst
new file mode 100644
index 000000000..24a49a617
--- /dev/null
+++ b/examples/widgets/linguist/doc/linguist.rst
@@ -0,0 +1,7 @@
+.. _qt-linguist-example:
+
+Qt Linguist Example
+===================
+
+This example demonstrates the use of Qt Linguist and related tools for translating
+applications as described in :ref:`translations`.
diff --git a/examples/widgets/linguist/example_de.ts b/examples/widgets/linguist/example_de.ts
new file mode 100644
index 000000000..447d1ceb5
--- /dev/null
+++ b/examples/widgets/linguist/example_de.ts
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de_DE" sourcelanguage="de_DE">
+<context>
+ <name>Window</name>
+ <message>
+ <location filename="main.py" line="56"/>
+ <source>&amp;File</source>
+ <translation>&amp;Datei</translation>
+ </message>
+ <message>
+ <location filename="main.py" line="57"/>
+ <source>Quit</source>
+ <translation>Beenden</translation>
+ </message>
+ <message>
+ <location filename="main.py" line="58"/>
+ <source>CTRL+Q</source>
+ <translation>CTRL+B</translation>
+ </message>
+ <message>
+ <location filename="main.py" line="60"/>
+ <source>&amp;Help</source>
+ <translation>Hilfe</translation>
+ </message>
+ <message>
+ <location filename="main.py" line="61"/>
+ <source>About Qt</source>
+ <translation>Über Qt</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="main.py" line="75"/>
+ <source>%n language(s) selected</source>
+ <translation>
+ <numerusform>Eine Sprache ausgewählt</numerusform>
+ <numerusform>%n Sprachen ausgewählt</numerusform>
+ </translation>
+ </message>
+</context>
+</TS>
diff --git a/examples/widgets/linguist/linguist.pyproject b/examples/widgets/linguist/linguist.pyproject
new file mode 100644
index 000000000..43a13b036
--- /dev/null
+++ b/examples/widgets/linguist/linguist.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "linguist.qrc", "example_de.ts"]
+}
diff --git a/examples/widgets/linguist/linguist.qrc b/examples/widgets/linguist/linguist.qrc
new file mode 100644
index 000000000..6ca287c20
--- /dev/null
+++ b/examples/widgets/linguist/linguist.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="translations">
+ <file>example_de.qm</file>
+</qresource>
+</RCC>
diff --git a/examples/widgets/linguist/linguist_rc.py b/examples/widgets/linguist/linguist_rc.py
new file mode 100644
index 000000000..233952779
--- /dev/null
+++ b/examples/widgets/linguist/linguist_rc.py
@@ -0,0 +1,68 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.2.2
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x01\xcd\
+<\
+\xb8d\x18\xca\xef\x9c\x95\xcd!\x1c\xbf`\xa1\xbd\xdd\xa7\
+\x00\x00\x00\x05de_DEB\x00\x00\x000\x00\x05\
+\x8c\x04\x00\x00\x01E\x00*\xd0%\x00\x00\x00\x91\x00*\
+\xec0\x00\x00\x00\xbd\x04\x89o\x01\x00\x00\x01\x18\x05\xbc\
+\xad\xd4\x00\x00\x00\x00\x09la\xf4\x00\x00\x00\xe7i\x00\
+\x00\x01r\x03\x00\x00\x00.\x00E\x00i\x00n\x00e\
+\x00 \x00S\x00p\x00r\x00a\x00c\x00h\x00e\
+\x00 \x00a\x00u\x00s\x00g\x00e\x00w\x00\xe4\
+\x00h\x00l\x00t\x03\x00\x00\x00,\x00%\x00n\x00\
+ \x00S\x00p\x00r\x00a\x00c\x00h\x00e\x00\
+n\x00 \x00a\x00u\x00s\x00g\x00e\x00w\x00\
+\xe4\x00h\x00l\x00t\x08\x00\x00\x00\x00\x06\x00\x00\x00\
+\x17%n language(s) \
+selected\x07\x00\x00\x00\x06Win\
+dow\x01\x03\x00\x00\x00\x0c\x00&\x00D\x00a\x00\
+t\x00e\x00i\x08\x00\x00\x00\x00\x06\x00\x00\x00\x05&\
+File\x07\x00\x00\x00\x06Window\x01\
+\x03\x00\x00\x00\x0a\x00H\x00i\x00l\x00f\x00e\x08\
+\x00\x00\x00\x00\x06\x00\x00\x00\x05&Help\x07\x00\
+\x00\x00\x06Window\x01\x03\x00\x00\x00\x0e\x00\
+\xdc\x00b\x00e\x00r\x00 \x00Q\x00t\x08\x00\x00\
+\x00\x00\x06\x00\x00\x00\x08About Qt\x07\
+\x00\x00\x00\x06Window\x01\x03\x00\x00\x00\x0c\
+\x00C\x00T\x00R\x00L\x00+\x00B\x08\x00\x00\x00\
+\x00\x06\x00\x00\x00\x06CTRL+Q\x07\x00\x00\x00\
+\x06Window\x01\x03\x00\x00\x00\x0e\x00B\x00\
+e\x00e\x00n\x00d\x00e\x00n\x08\x00\x00\x00\x00\
+\x06\x00\x00\x00\x04Quit\x07\x00\x00\x00\x06Wi\
+ndow\x01\x88\x00\x00\x00\x02\x01\x01\
+"
+
+qt_resource_name = b"\
+\x00\x0c\
+\x0d\xfc\x11\x13\
+\x00t\
+\x00r\x00a\x00n\x00s\x00l\x00a\x00t\x00i\x00o\x00n\x00s\
+\x00\x0d\
+\x02\x8b\x0a\x9d\
+\x00e\
+\x00x\x00a\x00m\x00p\x00l\x00e\x00_\x00d\x00e\x00.\x00q\x00m\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01}\xbdR\x0f\xc5\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/widgets/linguist/main.py b/examples/widgets/linguist/main.py
new file mode 100644
index 000000000..e4212e801
--- /dev/null
+++ b/examples/widgets/linguist/main.py
@@ -0,0 +1,55 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import (QItemSelection, QLibraryInfo, QLocale, QTranslator,
+ Slot)
+from PySide6.QtWidgets import (QAbstractItemView, QApplication, QListWidget,
+ QMainWindow)
+
+
+import linguist_rc # noqa: F401
+
+
+class Window(QMainWindow):
+ def __init__(self):
+ super().__init__()
+ file_menu = self.menuBar().addMenu(self.tr("&File"))
+ quit_action = file_menu.addAction(self.tr("Quit"))
+ quit_action.setShortcut(self.tr("CTRL+Q"))
+ quit_action.triggered.connect(self.close)
+ help_menu = self.menuBar().addMenu(self.tr("&Help"))
+ about_qt_action = help_menu.addAction(self.tr("About Qt"))
+ about_qt_action.triggered.connect(qApp.aboutQt) # noqa: F821
+
+ self._list_widget = QListWidget()
+ self._list_widget.setSelectionMode(QAbstractItemView.MultiSelection)
+ self._list_widget.selectionModel().selectionChanged.connect(self.selection_changed)
+ self._list_widget.addItem("C++")
+ self._list_widget.addItem("Java")
+ self._list_widget.addItem("Python")
+ self.setCentralWidget(self._list_widget)
+
+ @Slot(QItemSelection, QItemSelection)
+ def selection_changed(self, selected, deselected):
+ count = len(self._list_widget.selectionModel().selectedRows())
+ message = self.tr("%n language(s) selected", "", count)
+ self.statusBar().showMessage(message)
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+
+ path = QLibraryInfo.path(QLibraryInfo.TranslationsPath)
+ translator = QTranslator(app)
+ if translator.load(QLocale.system(), 'qtbase', '_', path):
+ app.installTranslator(translator)
+ translator = QTranslator(app)
+ path = ':/translations'
+ if translator.load(QLocale.system(), 'example', '_', path):
+ app.installTranslator(translator)
+
+ window = Window()
+ window.show()
+ sys.exit(app.exec())