Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. Traduzione intera dell'applicazione da un QDialog
Forum Updated to NodeBB v4.3 + New Features

Traduzione intera dell'applicazione da un QDialog

Scheduled Pinned Locked Moved Solved Italian
7 Posts 2 Posters 3.0k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    FrancescoC
    wrote on last edited by
    #1

    Buonasera a tutti,
    mi chiamo Francesco e sono nuovo di qua. Sto realizzando un programma per la Raspberry e volevo farlo in versione inglese e italiano. Ho creato le due finestre che mi servono, ovvero quella principale (QMainWindow) e quella per settare le opzioni tra cui la lingua (QDialog), e volevo capire come fare la traduzione dell'intera applicazione (quindi della QMainWindow e della QDialog) quando clicco ok nella finestra delle opzioni dopo aver settato la lingua che mi interessa. Ho provato a cercare online ma ho trovato solo come cambiare lingua dal menù, ma niente che si riferisse al cambio della lingua di tutto il programma.

    Grazie per l'aiuto

    Francesco Cornalba

    1 Reply Last reply
    0
    • VRoninV Offline
      VRoninV Offline
      VRonin
      wrote on last edited by
      #2

      Qt ha un sistema di traduzioni integrato. Se tutte le tue stringhe sono parte di un QObject (QMainWindow e QDialog sono QObject) basta mettere tr() intorno a tutte ad esempio:
      label->setText("Ciao"); deve diventare label->setText(tr("Ciao"));

      Una volta fatto questo usa lupdate (e' nella stessa cartella di qmake) per creare il file di traduzione. Copialo tante volte quante lingue vuoi (2 nel tuo caso) e aprirlo con Qt Linguist. Una volta tradotto tutto basta usare lrelease per generare i file di traduzione usabili con QTranslator
      Per cambiare linqua ti bastera' chiamare QCoreApplication::removeTranslator() e QCoreApplication::installTranslator()

      Il manuale delle traduzioni e' disponibile qui: http://doc.qt.io/qt-5/qtlinguist-index.html

      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
      ~Napoleon Bonaparte

      On a crusade to banish setIndexWidget() from the holy land of Qt

      1 Reply Last reply
      0
      • F Offline
        F Offline
        FrancescoC
        wrote on last edited by
        #3

        Grazie VRonin, ho già provato a fare ciò, ma l'applicazione non cambia lingua, devo riavviare l'applicazione per vedere cambiata la lingua.
        Non c'è un comando che faccia un refresh di tutte le finestre in modo che cambi lingua a tutte?

        Francesco Cornalba

        1 Reply Last reply
        0
        • VRoninV Offline
          VRoninV Offline
          VRonin
          wrote on last edited by
          #4

          se hai creato le finestre con l'editor grafico di Qt Creator (files .ui) è relativamente facile. basta che in ogni widget reimplementi il changeevnt così:

          void changeEvent(QEvent* event)
          if (event->type() == QEvent::LanguageChange)
          ui->retranslateUi(this);
          QWidget::changeEvent(event);
          }
          

          "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
          ~Napoleon Bonaparte

          On a crusade to banish setIndexWidget() from the holy land of Qt

          1 Reply Last reply
          0
          • F Offline
            F Offline
            FrancescoC
            wrote on last edited by
            #5

            Dopo un paio d'ore a smanettarci ci sono riuscito a metà, ovvero da italiano a inglese le finestre cambiano lingua (e già questo è un grosso passo avanti e ti ringrazio dell'aiuto), ma da inglese a italiano non ne vuole sapere di ritornare alla lingua originaria, devo chiudere e riaprire l'applicazione. Penso sia un problema di load del file per la lingua italiana, però la scrittura del codice è uguale per entrambe le lingue quindi non so da cosa possa dipendere (magari sto sbagliando proprio nel scrivere il codice)

            Francesco Cornalba

            1 Reply Last reply
            0
            • VRoninV Offline
              VRoninV Offline
              VRonin
              wrote on last edited by
              #6

              Puoi postare come carichi/scarichi il translator e come refreshi le stringhe?

              "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
              ~Napoleon Bonaparte

              On a crusade to banish setIndexWidget() from the holy land of Qt

              1 Reply Last reply
              0
              • F Offline
                F Offline
                FrancescoC
                wrote on last edited by
                #7

                Ho trovato l'errore, QTranslator non mi caricava il file qm, non so per quale motivo ma l'ho rifatto e adesso funziona.
                Grazie ancora per l'aiuto ;)

                Francesco Cornalba

                1 Reply Last reply
                0

                • Login

                • Login or register to search.
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • Users
                • Groups
                • Search
                • Get Qt Extensions
                • Unsolved