File size: 6,258 Bytes
985c397 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | # SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# * (c) 2009 Yorik van Havre <yorik@uncreated.net> *
# * (c) 2019 Eliud Cabrera Castillo <e.cabrera-castillo@tum.de> *
# * *
# * This file is part of the FreeCAD CAx development system. *
# * *
# * This program is free software; you can redistribute it and/or modify *
# * it under the terms of the GNU Lesser General Public License (LGPL) *
# * as published by the Free Software Foundation; either version 2 of *
# * the License, or (at your option) any later version. *
# * for detail see the LICENCE text file. *
# * *
# * FreeCAD is distributed in the hope that it will be useful, *
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
# * GNU Library General Public License for more details. *
# * *
# * You should have received a copy of the GNU Library General Public *
# * License along with FreeCAD; if not, write to the Free Software *
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
# * USA *
# * *
# ***************************************************************************
"""Provides utility functions that wrap around the Qt translate functions.
This module contains auxiliary functions to translate strings
using the QtCore module.
"""
## @package translate
# \ingroup draftutils
# \brief Provides utility functions that wrap around the Qt translate function.
## \addtogroup draftutils
# @{
import PySide.QtCore as QtCore
import PySide.QtWidgets as QtWidgets
Qtranslate = QtCore.QCoreApplication.translate
try:
_encoding = QtWidgets.QApplication.UnicodeUTF8
except AttributeError:
_encoding = None
def translate(context, text, comment=None):
r"""Translate the text using the Qt translate function.
It wraps around `QtWidgets.QApplication.translate`,
which is the same as `QtCore.QCoreApplication.translate`.
Parameters
----------
context: str
In C++ it is typically a class name.
But it can also be any other string to categorize the translation,
for example, the name of a workbench, tool, or function
that is being translated. Usually it will be the name
of the workbench.
text: str
Text that will be translated. It could be a single word,
a full sentence, paragraph, or multiple paragraphs with new lines.
Usually the last endline character '\n'
that finishes the string doesn't need to be included
for translation.
Returns
-------
str
A unicode string returned by `QtWidgets.QApplication.translate`.
Unicode strings
---------------
Reference: https://doc.qt.io/qtforpython/PySide2/QtCore
In Qt5 the strings are always assumed unicode
>>> QtCore.QCoreApplication.translate(context, text, None)
>>> QtWidgets.QApplication.translate(context, text, None)
"""
return Qtranslate(context, text, comment)
# Original code no longer used. It is listed here for reference
# to show how the different pairings Py2/Qt4, Py3/Qt5, Py2/Qt5, Py3/Qt4
# were handled in the past.
# If there is a problem with the code above, this code can be made active
# again, and the code above can be commented out.
#
# =============================================================================
# try:
# _encoding = QtWidgets.QApplication.UnicodeUTF8 if six.PY2 else None
# def translate(context, text, utf8_decode=True):
# """convenience function for Qt translator
# context: str
# context is typically a class name (e.g., "MyDialog")
# text: str
# text which gets translated
# utf8_decode: bool [False]
# if set to true utf8 encoded unicode will be returned.
# This option does not have influence
# on python3 as for python3 we are returning utf-8 encoded
# unicode by default!
# """
# if six.PY3:
# return Qtranslate(context, text, None)
# elif utf8_decode:
# return Qtranslate(context, text, None, _encoding)
# else:
# return Qtranslate(context, text, None, _encoding).encode("utf8")
#
# except AttributeError:
# def translate(context, text, utf8_decode=False):
# """convenience function for Qt translator
# context: str
# context is typically a class name (e.g., "MyDialog")
# text: str
# text which gets translated
# utf8_decode: bool [False]
# if set to true utf8 encoded unicode will be returned.
# This option does not have influence
# on python3 as for python3 we are returning utf-8 encoded
# unicode by default!
# """
# if six.PY3:
# return Qtranslate(context, text, None)
# elif QtCore.qVersion() > "4":
# if utf8_decode:
# return Qtranslate(context, text, None)
# else:
# return Qtranslate(context, text, None).encode("utf8")
# else:
# if utf8_decode:
# return Qtranslate(context, text, None, _encoding)
# else:
# return Qtranslate(context, text, None,
# _encoding).encode("utf8")
# =============================================================================
# The same Qt translate function is provided here
QT_TRANSLATE_NOOP = QtCore.QT_TRANSLATE_NOOP
## @}
|