i18n with gettext

This commit is contained in:
2022-02-02 19:35:57 +01:00
parent 939c86dbe2
commit 9c28a41904
21 changed files with 686 additions and 437 deletions

31
main.py
View File

@@ -2,6 +2,7 @@ import logging
import os
import signal
import ctypes
from pathlib import Path
from PySide6 import QtCore
from PySide6.QtWidgets import QApplication
@@ -13,9 +14,14 @@ import constants
from raven.pluginregistry import PluginRegistry
from ravenui import RavenUI
import gettext
gettext.install('ravenlog', 'locale')
logging.basicConfig(level=logging.INFO)
log = logging.getLogger("main")
def stop_signal(signum, _stackframe):
""" Handle terminate signal """
try:
@@ -37,20 +43,21 @@ if __name__ == "__main__":
myappid = 'opentext.ravenlog' # arbitrary string
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
# translator = QTranslator()
# if translator.load(QLocale("de"), "messages_de.ts"):
# app.installTranslator(translator)
locale = os.environ['LANG'] if os.environ['LANG'] else "en"
path = QLibraryInfo.location(QLibraryInfo.TranslationsPath)
translator = QTranslator(app)
if translator.load(QLocale(locale), 'qtbase', '_', path):
app.installTranslator(translator)
translator = QTranslator(app)
path = './translations'
if translator.load(QLocale(locale), 'messages', '_', path):
app.installTranslator(translator)
src_dir = Path(__file__).resolve().parent
try:
translation = gettext.translation('messages', localedir=src_dir / 'locales', languages=[locale])
if translation:
translation.install()
_ = translation.gettext
ngettext = translation.ngettext
except FileNotFoundError:
pass
if not _:
_ = gettext.gettext
ngettext = gettext.ngettext
print('No translation found')
# workaround to make signals work in QT apps.
# They do not work out of the box, because the main thread