PyQt: перевод стандартных кнопок - PullRequest
4 голосов
/ 10 ноября 2009

Как мне легко перевести стандартные кнопки (Да, Нет) из QMessageBox? Я не могу использовать self.tr для этих аргументов, поэтому я хотел бы добиться этого другим простым способом. Нужно ли использовать всю систему перевода?

Ответы [ 4 ]

10 голосов
/ 07 января 2011

Вот как я это сделал:

Сначала вам нужно скопировать файл qt_LOCALE.qm в каталог вашего приложения. Мой был:

cp /usr/share/qt4/translations/qt_fr.qm .

Во-вторых, вам нужно загрузить переводчик для вашего приложения.

application = QApplication(argv)

locale = QLocale.system().name()
qtTranslator = QTranslator()
if qtTranslator.load("qt_"+locale):
    application.installTranslator(qtTranslator)

main_window = QMainWindow()
main_window.show()

exit(application.exec_())
3 голосов
/ 10 ноября 2009

Вы уверены, что должны сами их перевести? В других наборах инструментов стандартные кнопки автоматически переводятся на язык, который использует пользователь.

2 голосов
/ 19 ноября 2009

Самый быстрый способ - что-то вроде этого:

mymessagebox.button(mymessagebox.Yes).setText("Yes, please!")
mymessagebox.button(mymessagebox.No).setText("No, thanks.")

См. Документацию QMessageBox для всех возможных стандартных кнопок .

0 голосов
/ 07 января 2011

Если вы хотите перевести Да / Нет на текущий язык, обычно достаточно установить язык системы. В противном случае попробуйте с предложением Натима.

Если вам нужны пользовательские тексты: статические методы, такие как question () и т. Д., Не допускают тексты пользовательских кнопок. Это прискорбно, поскольку диалоги «Да» / «Нет» считаются плохим стилем (они не описательны, нужно прочитать сообщение целиком, и легко понять, что означает «да», что означает «нет», и случайно отрицать их). Для пользовательских текстов вы должны использовать QMessageBox напрямую. Я бы предложил написать свои собственные статические методы, принимающие необязательные тексты кнопок.

...