Skip to content

Commit

Permalink
tr compatible with all Qt APIs
Browse files Browse the repository at this point in the history
  • Loading branch information
g1itch committed Dec 13, 2021
1 parent 6f1f47f commit 6d5e6c7
Showing 1 changed file with 21 additions and 45 deletions.
66 changes: 21 additions & 45 deletions src/tr.py
Original file line number Diff line number Diff line change
@@ -1,59 +1,35 @@
"""
Translating text
Slim layer providing environment agnostic _translate()
"""
import os

try:
import state
except ImportError:
from . import state


class translateClass:
"""
This is used so that the translateText function can be used
when we are in daemon mode and not using any QT functions.
"""
# pylint: disable=old-style-class,too-few-public-methods
def __init__(self, context, text):
self.context = context
self.text = text

def arg(self, _):
"""Replace argument placeholders"""
if '%' in self.text:
# This doesn't actually do anything with the arguments
# because we don't have a UI in which to display this information anyway.
return translateClass(self.context, self.text.replace('%', '', 1))
return self.text


def _translate(context, text, disambiguation=None, encoding=None, n=None):
def _tr_dummy(context, text, disambiguation=None, n=None):
# pylint: disable=unused-argument
return translateText(context, text, n)
return text


def translateText(context, text, n=None):
"""Translate text in context"""
if state.enableGUI and not state.curses:
try:
enableGUI = state.enableGUI
except AttributeError: # inside the plugin
enableGUI = True
if enableGUI:
try:
from PyQt4 import QtCore, QtGui
except Exception as err:
print('PyBitmessage requires PyQt unless you want to run it as a daemon'
' and interact with it using the API.'
' You can download PyQt from http://www.riverbankcomputing.com/software/pyqt/download'
' or by searching Google for \'PyQt Download\'.'
' If you want to run in daemon mode, see https://bitmessage.org/wiki/Daemon')
print('Error message:', err)
os._exit(0) # pylint: disable=protected-access
if n is None:
return QtGui.QApplication.translate(context, text)
return QtGui.QApplication.translate(context, text, None, QtCore.QCoreApplication.CodecForTr, n)
from qtpy import QtWidgets, QtCore, API
except ImportError:
_translate = _tr_dummy
else:
if '%' in text:
return translateClass(context, text.replace('%', '', 1))
return text
if API == 'pyqt5':
_translate = QtWidgets.QApplication.translate
else:
def _translate(context, text, disambiguation=None, n=None):
return (
QtWidgets.QApplication.translate(
context, text, disambiguation)
if n is None else
QtWidgets.QApplication.translate(
context, text, disambiguation,
QtCore.QCoreApplication.CodecForTr, n)
)
else:
_translate = _tr_dummy

0 comments on commit 6d5e6c7

Please sign in to comment.