Изменить язык в QT StandardDialogs (QColorDialog)
Я пытался изменить язык QColorDialog с английского на немецкий, но, к сожалению, это не работает. Я использую PyQt.
Что я пробовал до сих пор:
Установка локали для диалога:
colordialog = QtWidgets.QColorDialog()
colordialog.setLocale(QtCore.QLocale(QtCore.QLocale.German, QtCore.QLocale.Germany))
Установка переводчика на все приложение:
app = QtWidgets.QApplication(sys.argv)
qt_translator = QtCore.QTranslator()
qt_translator.load("qt_" + QtCore.QLocale.system().name(),
QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath))
app.installTranslator(qt_translator)
1 ответ
Если вы хотите переводить тексты на немецкий язык, вам необходимо установить переводчик немецкого языка, а не языкового стандарта системы. Так жеQColorDialog()
показывает диалоговое окно системного цвета, если вы не укажетеDontUseNativeDialog
вариант. Сделайте то же самое для «Qt для Python» (PySide2).
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
app = QApplication([])
trans = QTranslator()
trans.load('qt_de',
QLibraryInfo.location(QLibraryInfo.TranslationsPath))
QCoreApplication.installTranslator(trans)
dlg = QColorDialog(None, options = QColorDialog.DontUseNativeDialog)
dlg.exec()
Конечно, вы можете использовать название системной локали вместо того, чтобы жестко запрограммировать ее, как вы это сделали, если хотите использовать системную локаль.
trans.load('qt_' + QLocale.system().name(),
QLibraryInfo.location(QLibraryInfo.TranslationsPath))
Для PyQt5 сделайте следующее.
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
app = QApplication([])
trans = QTranslator()
trans.load('qt_de',
QLibraryInfo.location(QLibraryInfo.TranslationsPath))
QCoreApplication.installTranslator(trans)
dlg = QColorDialog(None)
dlg.setOptions(QColorDialog.DontUseNativeDialog)
dlg.exec()
Но в текущей версии (5.15.9) есть ошибка, которуюqtscript_*.qm
файлы отсутствуют. Поэтому вам следует вручную копировать файлы из другого дистрибутива Qt. Ниже приведен пример копирования файлов из PySide2 в мою среду Linux Anaconda.
$ cp ~/miniconda3/lib/python3.8/site-packages/PySide2/Qt/translations/qtscript*.qm ~/miniconda3/lib/python3.8/site-packages/PyQt5/Qt5/translations
В PyQt6 описанная выше ошибка была исправлена, и вы можете сделать следующее.
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import *
app = QApplication([])
trans = QTranslator()
trans.load('qt_de',
QLibraryInfo.path(QLibraryInfo.LibraryPath.TranslationsPath))
QCoreApplication.installTranslator(trans)
dlg = QColorDialog(None, options = QColorDialog.ColorDialogOption.DontUseNativeDialog)
dlg.exec()