2009-11-10 4 views
3

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

ответ

9

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

Прежде всего, необходимо скопировать файл 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

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

+0

Нет, я бы предпочел, чтобы они переводились автоматически. Но я не знаю, как этого добиться. – gruszczy

+0

Какая ОС вы используете? Вы пробовали зарегистрироваться на другом языке? –

+0

Ubuntu 9.10 У меня есть все в полировке. – gruszczy

2

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

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

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

+0

Это кажется приятным. Благодарю. – gruszczy

+1

ОК, это не совсем то, что мне нужно - я использую метод вопроса, и я не могу получить доступ к экземпляру QMessageBox для установки этого текста. Могу ли я добиться этого каким-то другим способом? – gruszczy

0

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^