Pergunta

Como posso traduzir facilmente botões padrão (sim, não) do QMessageBox? Eu não posso usar o Self.tr nesses argumentos, então gostaria de alcançá -lo de outra maneira simples. Eu tenho que usar todo o sistema de tradução?

Foi útil?

Solução

Aqui está como eu fiz:

Primeiro você precisa copiar o qt_LOCALE.qm Arquivo para o seu diretório de aplicativos. O meu era :

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

Em segundo lugar, você precisa carregar um tradutor para o seu aplicativo.

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

Outras dicas

Tem certeza de que você precisa traduzi -los você mesmo? Em outros kits de ferramentas, os botões padrão são traduzidos automaticamente para o idioma que o usuário está usando.

A maneira mais rápida é algo assim:

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

Veja a documentação QMessageBox para todo o possível botões padrão.

Se você deseja traduzir sim/não para o idioma atual, geralmente definir o idioma do sistema deve ser suficiente. Caso contrário, tente com a sugestão de Natim.

Se você deseja textos personalizados: os métodos estáticos como a pergunta () etc. Não permitem textos personalizados do botão. Isso é lamentável, pois os diálogos "sim"/"não" são considerados estilo ruim (eles não são descritivos, é preciso ler toda a mensagem e é fácil entender mal o que significa sim e o que significa não e negar acidentalmente). Para textos personalizados, você deve usar o QMessageBox diretamente. Eu sugiro escrever seus próprios métodos estáticos, aceitando textos opcionais no botão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top