Pregunta

¿Cómo puedo traducir fácilmente los botones estándar (Sí, No) de QMessageBox? No puedo usar self.tr en esos argumentos, así que me gustaría lograr que de alguna otra manera sencilla. ¿Tengo que usar el sistema de traducción conjunto?

¿Fue útil?

Solución

Aquí es cómo lo hice:

En primer lugar tiene que copiar el archivo qt_LOCALE.qm al directorio de la aplicación. El mío era:

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

En segundo lugar, es necesario cargar un traductor para su aplicación.

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_())

Otros consejos

¿Seguro que tiene que traducir su propia cuenta? En otros juegos de herramientas, botones estándar se traducen automáticamente al idioma que el usuario está utilizando.

La forma más rápida es algo como esto:

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

Consulte la documentación para todos QMessageBox posible botones estándar .

Si usted quiere tener Sí / No traducido al lenguaje corriente, por lo general establecer el idioma del sistema debería ser suficiente. De lo contrario tratar con la sugerencia de Natim.

Si desea textos personalizados: Los métodos estáticos como cuestión () etc., no permiten textos de botones personalizados. Eso es lamentable, ya que "Sí" mal estilo / "No" diálogos son considerados (que no son descriptivos, uno tiene que leer todo el mensaje, y es fácil de malinterpretar lo que significa Sí y lo que significa que no hay, y sin querer negar ellos). Para los textos personalizados, usted tiene que utilizar QMessageBox directamente. Yo sugeriría a escribir sus propios métodos estáticos aceptar texto de los botones opcionales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top