Вопрос

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

Это было полезно?

Решение

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

Сначала вам нужно скопировать 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 для всех возможных стандартные кнопки.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top