diff --git a/gfd/i18n/__init__.py b/gfd/i18n/__init__.py new file mode 100644 index 0000000..e032c49 --- /dev/null +++ b/gfd/i18n/__init__.py @@ -0,0 +1,18 @@ +import importlib + +class Translator: + def __init__(self, lang="en"): + self.translations = {} + self.load(lang) + + def load(self, lang): + try: + mod = importlib.import_module(f"gfd.i18n.{lang}") + self.translations = getattr(mod, "translations", {}) + except ModuleNotFoundError: + # fallback to Spanish + mod = importlib.import_module("gfd.i18n.es") + self.translations = getattr(mod, "translations", {}) + + def __call__(self, key): + return self.translations.get(key, key) diff --git a/gfd/i18n/en.py b/gfd/i18n/en.py new file mode 100644 index 0000000..3017bc8 --- /dev/null +++ b/gfd/i18n/en.py @@ -0,0 +1,4 @@ +translations = { + "hello_world": "Hello, World!", + "window_title": "Digital Signature Manager", +} diff --git a/gfd/i18n/es.py b/gfd/i18n/es.py new file mode 100644 index 0000000..e57ed7a --- /dev/null +++ b/gfd/i18n/es.py @@ -0,0 +1,4 @@ +translations = { + "hello_world": "¡Hola, Mundo!", + "window_title": "Gestor de Firma Digital", +} diff --git a/gfd/ui.py b/gfd/ui.py new file mode 100644 index 0000000..a533607 --- /dev/null +++ b/gfd/ui.py @@ -0,0 +1,23 @@ +from PySide6 import QtWidgets, QtCore +import gfd.i18n as i18n + +class GFDWidget(QtWidgets.QWidget): + def __init__(self, tr): + super().__init__() + self.tr = tr + self.setWindowTitle(self.tr("window_title")) + self.resize(300, 100) + + label = QtWidgets.QLabel(self.tr("hello_world"), alignment=QtCore.Qt.AlignCenter) + lay = QtWidgets.QVBoxLayout(self) + lay.addWidget(label) + +def run(lang="es"): + import sys + app = QtWidgets.QApplication(sys.argv) + + tr = i18n.Translator(lang) + w = GFDWidget(tr) + w.show() + + sys.exit(app.exec()) diff --git a/main.py b/main.py new file mode 100644 index 0000000..66b3afe --- /dev/null +++ b/main.py @@ -0,0 +1,4 @@ +import gfd.ui as w + +if __name__ == "__main__": + w.run("es") diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..91c79fa --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +PySide6==6.9.2 +PySide6_Addons==6.9.2 +PySide6_Essentials==6.9.2 +shiboken6==6.9.2