Как я могу легко перевести стандартные кнопки (да, нет) из QMessageBox? Я не могу использовать self.tr для этих аргументов, поэтому я хотел бы добиться этого другим простым способом. Нужно ли использовать всю систему перевода?PyQt: перевод стандартных кнопок
ответ
Вот как я сделал:
Прежде всего, необходимо скопировать файл 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_())
Вы уверены, что вы должны перевести их самому? В других инструментах стандартные кнопки автоматически переводятся на язык, который использует пользователь.
Самый быстрый способ что-то вроде этого:
mymessagebox.button(mymessagebox.Yes).setText("Yes, please!")
mymessagebox.button(mymessagebox.No).setText("No, thanks.")
Смотрите документацию QMessageBox для всех возможных standard buttons.
Если вы хотите, чтобы на текущем языке переведены Yes/No, обычно требуется установить системный язык. В противном случае попробуйте предложение Натима.
Если вы хотите, чтобы пользовательские тексты: статические методы, такие как question() и т. Д., Не позволяют настраивать текстовые кнопки. Это печально, так как диалоги «Да»/«Нет» считаются плохим стилем (они не являются описательными, нужно читать все сообщение, и его легко понять, что означает «Да», а что означает «Нет» и случайно отрицает их). Для пользовательских текстов вы должны напрямую использовать QMessageBox. Я бы предложил написать собственные статические методы, принимающие необязательные текстовые кнопки.
Нет, я бы предпочел, чтобы они переводились автоматически. Но я не знаю, как этого добиться. – gruszczy
Какая ОС вы используете? Вы пробовали зарегистрироваться на другом языке? –
Ubuntu 9.10 У меня есть все в полировке. – gruszczy