i18n with gettext
This commit is contained in:
31
main.py
31
main.py
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user