Интернационализация StandardContextMenu в PyQt - PullRequest
2 голосов
/ 26 ноября 2011

Каков наилучший способ перевести (локализовать) контекстное меню в QPlaintTextEdit в PyQt?

Например:

popup_menu = self.createStandardContextMenu() popup_menu.insertMenu(popup_menu.actions()[0], QMenu(self.tr("My menu")))

Здесь я могу перевести "Мое меню "(pylupdate4, затем lrelease), но не все другие стандартные элементы, такие как" вырезать "," прошлое ", ...

1 Ответ

0 голосов
/ 26 ноября 2011

Контекстное меню для QPlaintTextEdit предоставляется внутренним классом QTextControl (который также используется другими виджетами, такими как QTextEdit), и текст каждого пункта меню уже заключен в вызов tr. Поэтому любые приложения, которые хотят перевести эти строки, просто должны убедиться, что они загружают соответствующий файл перевода для самой библиотеки Qt.

Qt предоставляет файлы перевода для примерно двадцати языков, которые обычно должны устанавливаться вместе с библиотекой Qt. Расположение этих файлов может быть определено программно следующим образом:

>>> from PyQt4 import QtCore
>>> print QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath)
/usr/share/qt/translations

Если для языка нет файла перевода, его необходимо будет создать из шаблона. Шаблон можно получить, удалив существующий файл перевода с помощью инструмента Qt lconvert:

lconvert --drop-translations -o qt_xx.ts qt_fr.qm

Подробнее о создании и использовании переводов см. здесь .

...