Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Problem with Translation of qMessageBox

Problem with Translation of qMessageBox

Scheduled Pinned Locked Moved Solved General and Desktop
7 Posts 2 Posters 1.0k Views
  • 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.
  • S Offline
    S Offline
    seprim
    wrote on last edited by
    #1

    Hello
    I've got an problem with the translation of an MessageBox Object
    The translation overall works, only the Messagebox is not translated.

    void MainWindow::SerialnumberUnequal(QString qSerialnumberConfig, QString qSerialnumberAlarm, QString qSerialnumberLogging)
    {
        QMessageBox SerialnumberDialog;
        QString str;
        str = trUtf8("Serialnumber from Configuartion Page: %1\nSerialnumber from Alarm Page: %2\nSerialnumber from Logging Page: %3").arg(qSerialnumberConfig).arg(qSerialnumberAlarm).arg(qSerialnumberLogging);
        SerialnumberDialog.setWindowTitle(tr("Which Serialnumber should be used?"));
        SerialnumberDialog.setText(str);
        QPushButton *setSerConfig = SerialnumberDialog.addButton(trUtf8("Take Serialnumber \n from Configuration Page"), QMessageBox::ActionRole);
        QPushButton *setSerAlarm = SerialnumberDialog.addButton(trUtf8("Take Serialnumber \n from Alarm Page"), QMessageBox::ActionRole);
        QPushButton *setSerLogging = SerialnumberDialog.addButton(trUtf8("Take Serialnumber \n from Logging Page"), QMessageBox::ActionRole);
        SerialnumberDialog.exec();
        if (SerialnumberDialog.clickedButton()==setSerConfig) {
            if(ui->SerialNumberConfiguration->text().length()==10) {
                ui->SerialNumberAlarm->setText(ui->SerialNumberConfiguration->text());
                ui->SerialNumberLogging->setText(ui->SerialNumberConfiguration->text());
            } else {
                SerialnumberDialog.warning(nullptr, trUtf8("Warning"), trUtf8("Selected serial number does not consist of 10 characters"));
            }
        } else if (SerialnumberDialog.clickedButton()==setSerAlarm) {
            if(ui->SerialNumberAlarm->text().length()==10) {
                ui->SerialNumberConfiguration->setText(ui->SerialNumberAlarm->text());
                ui->SerialNumberLogging->setText(ui->SerialNumberAlarm->text());
            } else {
               SerialnumberDialog.warning(nullptr, trUtf8("Warning"), trUtf8("Selected serial number does not consist of 10 characters"));
            }
        } else if (SerialnumberDialog.clickedButton()==setSerLogging) {
            if(ui->SerialNumberLogging->text().length()==10) {
                ui->SerialNumberAlarm->setText(ui->SerialNumberLogging->text());
                ui->SerialNumberConfiguration->setText(ui->SerialNumberLogging->text());
            } else {
                SerialnumberDialog.warning(nullptr, trUtf8("Warning"), trUtf8("Selected serial number does not consist of 10 characters"));
            }
        }
    }
    

    this is my implementation of the messagebox. Have I made a mistake around here somewhere?
    Thanks a lot
    Seprim

    RatzzR 2 Replies Last reply
    0
    • S Offline
      S Offline
      seprim
      wrote on last edited by
      #7

      The problem is solved.
      I was the problem.
      I program with Visual Studio and MSVC and here an extra subfolder Release/Debug is created in which the EXE file is stored. I have to put my languages folder here for the translation to work.
      Sorry for the mail.

      1 Reply Last reply
      1
      • S seprim

        Hello
        I've got an problem with the translation of an MessageBox Object
        The translation overall works, only the Messagebox is not translated.

        void MainWindow::SerialnumberUnequal(QString qSerialnumberConfig, QString qSerialnumberAlarm, QString qSerialnumberLogging)
        {
            QMessageBox SerialnumberDialog;
            QString str;
            str = trUtf8("Serialnumber from Configuartion Page: %1\nSerialnumber from Alarm Page: %2\nSerialnumber from Logging Page: %3").arg(qSerialnumberConfig).arg(qSerialnumberAlarm).arg(qSerialnumberLogging);
            SerialnumberDialog.setWindowTitle(tr("Which Serialnumber should be used?"));
            SerialnumberDialog.setText(str);
            QPushButton *setSerConfig = SerialnumberDialog.addButton(trUtf8("Take Serialnumber \n from Configuration Page"), QMessageBox::ActionRole);
            QPushButton *setSerAlarm = SerialnumberDialog.addButton(trUtf8("Take Serialnumber \n from Alarm Page"), QMessageBox::ActionRole);
            QPushButton *setSerLogging = SerialnumberDialog.addButton(trUtf8("Take Serialnumber \n from Logging Page"), QMessageBox::ActionRole);
            SerialnumberDialog.exec();
            if (SerialnumberDialog.clickedButton()==setSerConfig) {
                if(ui->SerialNumberConfiguration->text().length()==10) {
                    ui->SerialNumberAlarm->setText(ui->SerialNumberConfiguration->text());
                    ui->SerialNumberLogging->setText(ui->SerialNumberConfiguration->text());
                } else {
                    SerialnumberDialog.warning(nullptr, trUtf8("Warning"), trUtf8("Selected serial number does not consist of 10 characters"));
                }
            } else if (SerialnumberDialog.clickedButton()==setSerAlarm) {
                if(ui->SerialNumberAlarm->text().length()==10) {
                    ui->SerialNumberConfiguration->setText(ui->SerialNumberAlarm->text());
                    ui->SerialNumberLogging->setText(ui->SerialNumberAlarm->text());
                } else {
                   SerialnumberDialog.warning(nullptr, trUtf8("Warning"), trUtf8("Selected serial number does not consist of 10 characters"));
                }
            } else if (SerialnumberDialog.clickedButton()==setSerLogging) {
                if(ui->SerialNumberLogging->text().length()==10) {
                    ui->SerialNumberAlarm->setText(ui->SerialNumberLogging->text());
                    ui->SerialNumberConfiguration->setText(ui->SerialNumberLogging->text());
                } else {
                    SerialnumberDialog.warning(nullptr, trUtf8("Warning"), trUtf8("Selected serial number does not consist of 10 characters"));
                }
            }
        }
        

        this is my implementation of the messagebox. Have I made a mistake around here somewhere?
        Thanks a lot
        Seprim

        RatzzR Offline
        RatzzR Offline
        Ratzz
        wrote on last edited by
        #2

        @seprim said in Problem with Translation of qMessageBox:

        trUtf8

        Is trUtf8 not obsolete ?
        Also this may be helpfull.

        1 Reply Last reply
        0
        • S Offline
          S Offline
          seprim
          wrote on last edited by seprim
          #3

          I've also tried only tr and this did not work also.
          The solution from stackoverflow site i've tried also but with no success
          The translation works for

           SerialnumberDialog.setWindowTitle(tr("Which Serialnumber should be used?"));
          

          But no where else.
          The other text contains "\n". Could this be the problem?

          1 Reply Last reply
          0
          • S seprim

            Hello
            I've got an problem with the translation of an MessageBox Object
            The translation overall works, only the Messagebox is not translated.

            void MainWindow::SerialnumberUnequal(QString qSerialnumberConfig, QString qSerialnumberAlarm, QString qSerialnumberLogging)
            {
                QMessageBox SerialnumberDialog;
                QString str;
                str = trUtf8("Serialnumber from Configuartion Page: %1\nSerialnumber from Alarm Page: %2\nSerialnumber from Logging Page: %3").arg(qSerialnumberConfig).arg(qSerialnumberAlarm).arg(qSerialnumberLogging);
                SerialnumberDialog.setWindowTitle(tr("Which Serialnumber should be used?"));
                SerialnumberDialog.setText(str);
                QPushButton *setSerConfig = SerialnumberDialog.addButton(trUtf8("Take Serialnumber \n from Configuration Page"), QMessageBox::ActionRole);
                QPushButton *setSerAlarm = SerialnumberDialog.addButton(trUtf8("Take Serialnumber \n from Alarm Page"), QMessageBox::ActionRole);
                QPushButton *setSerLogging = SerialnumberDialog.addButton(trUtf8("Take Serialnumber \n from Logging Page"), QMessageBox::ActionRole);
                SerialnumberDialog.exec();
                if (SerialnumberDialog.clickedButton()==setSerConfig) {
                    if(ui->SerialNumberConfiguration->text().length()==10) {
                        ui->SerialNumberAlarm->setText(ui->SerialNumberConfiguration->text());
                        ui->SerialNumberLogging->setText(ui->SerialNumberConfiguration->text());
                    } else {
                        SerialnumberDialog.warning(nullptr, trUtf8("Warning"), trUtf8("Selected serial number does not consist of 10 characters"));
                    }
                } else if (SerialnumberDialog.clickedButton()==setSerAlarm) {
                    if(ui->SerialNumberAlarm->text().length()==10) {
                        ui->SerialNumberConfiguration->setText(ui->SerialNumberAlarm->text());
                        ui->SerialNumberLogging->setText(ui->SerialNumberAlarm->text());
                    } else {
                       SerialnumberDialog.warning(nullptr, trUtf8("Warning"), trUtf8("Selected serial number does not consist of 10 characters"));
                    }
                } else if (SerialnumberDialog.clickedButton()==setSerLogging) {
                    if(ui->SerialNumberLogging->text().length()==10) {
                        ui->SerialNumberAlarm->setText(ui->SerialNumberLogging->text());
                        ui->SerialNumberConfiguration->setText(ui->SerialNumberLogging->text());
                    } else {
                        SerialnumberDialog.warning(nullptr, trUtf8("Warning"), trUtf8("Selected serial number does not consist of 10 characters"));
                    }
                }
            }
            

            this is my implementation of the messagebox. Have I made a mistake around here somewhere?
            Thanks a lot
            Seprim

            RatzzR Offline
            RatzzR Offline
            Ratzz
            wrote on last edited by
            #4

            @seprim said in Problem with Translation of qMessageBox:

            QPushButton *setSerConfig = SerialnumberDialog.addButton(trUtf8("Take Serialnumber \n from Configuration Page"), QMessageBox::ActionRole);

            What are you trying to achieve with this?

            1 Reply Last reply
            0
            • S Offline
              S Offline
              seprim
              wrote on last edited by seprim
              #5

              I create a button with an Action Role. And this button should be translated.
              Actual the Code looks like this

              void MainWindow::SerialnumberUnequal(QString qSerialnumberConfig, QString qSerialnumberAlarm, QString qSerialnumberLogging)
              {
                  QMessageBox SerialnumberDialog;
                  QString str;
                  str = tr("Serialnumber from Configuartion Page: %1\nSerialnumber from Alarm Page: %2\nSerialnumber from Logging Page: %3").arg(qSerialnumberConfig).arg(qSerialnumberAlarm).arg(qSerialnumberLogging);
                  SerialnumberDialog.setWindowTitle(tr("Which Serialnumber should be used?"));
                  SerialnumberDialog.setText(str);
                  QPushButton *setSerConfig = SerialnumberDialog.addButton(tr("Take Serialnumber \n from Configuration Page"), QMessageBox::ActionRole);
                  QPushButton *setSerAlarm = SerialnumberDialog.addButton(tr("Take Serialnumber \n from Alarm Page"), QMessageBox::ActionRole);
                  QPushButton *setSerLogging = SerialnumberDialog.addButton(tr("Take Serialnumber \n from Logging Page"), QMessageBox::ActionRole);
                  SerialnumberDialog.exec();
                  if (SerialnumberDialog.clickedButton()==setSerConfig) {
                      if(ui->SerialNumberConfiguration->text().length()==10) {
                          ui->SerialNumberAlarm->setText(ui->SerialNumberConfiguration->text());
                          ui->SerialNumberLogging->setText(ui->SerialNumberConfiguration->text());
                      } else {
                          SerialnumberDialog.warning(nullptr, tr("Warning"), tr("Selected serial number does not consist of 10 characters"));
                      }
                  } else if (SerialnumberDialog.clickedButton()==setSerAlarm) {
                      if(ui->SerialNumberAlarm->text().length()==10) {
                          ui->SerialNumberConfiguration->setText(ui->SerialNumberAlarm->text());
                          ui->SerialNumberLogging->setText(ui->SerialNumberAlarm->text());
                      } else {
                         SerialnumberDialog.warning(nullptr, tr("Warning"), tr("Selected serial number does not consist of 10 characters"));
                      }
                  } else if (SerialnumberDialog.clickedButton()==setSerLogging) {
                      if(ui->SerialNumberLogging->text().length()==10) {
                          ui->SerialNumberAlarm->setText(ui->SerialNumberLogging->text());
                          ui->SerialNumberConfiguration->setText(ui->SerialNumberLogging->text());
                      } else {
                          SerialnumberDialog.warning(nullptr, tr("Warning"), tr("Selected serial number does not consist of 10 characters"));
                      }
                  }
              }
              
              RatzzR 1 Reply Last reply
              0
              • S seprim

                I create a button with an Action Role. And this button should be translated.
                Actual the Code looks like this

                void MainWindow::SerialnumberUnequal(QString qSerialnumberConfig, QString qSerialnumberAlarm, QString qSerialnumberLogging)
                {
                    QMessageBox SerialnumberDialog;
                    QString str;
                    str = tr("Serialnumber from Configuartion Page: %1\nSerialnumber from Alarm Page: %2\nSerialnumber from Logging Page: %3").arg(qSerialnumberConfig).arg(qSerialnumberAlarm).arg(qSerialnumberLogging);
                    SerialnumberDialog.setWindowTitle(tr("Which Serialnumber should be used?"));
                    SerialnumberDialog.setText(str);
                    QPushButton *setSerConfig = SerialnumberDialog.addButton(tr("Take Serialnumber \n from Configuration Page"), QMessageBox::ActionRole);
                    QPushButton *setSerAlarm = SerialnumberDialog.addButton(tr("Take Serialnumber \n from Alarm Page"), QMessageBox::ActionRole);
                    QPushButton *setSerLogging = SerialnumberDialog.addButton(tr("Take Serialnumber \n from Logging Page"), QMessageBox::ActionRole);
                    SerialnumberDialog.exec();
                    if (SerialnumberDialog.clickedButton()==setSerConfig) {
                        if(ui->SerialNumberConfiguration->text().length()==10) {
                            ui->SerialNumberAlarm->setText(ui->SerialNumberConfiguration->text());
                            ui->SerialNumberLogging->setText(ui->SerialNumberConfiguration->text());
                        } else {
                            SerialnumberDialog.warning(nullptr, tr("Warning"), tr("Selected serial number does not consist of 10 characters"));
                        }
                    } else if (SerialnumberDialog.clickedButton()==setSerAlarm) {
                        if(ui->SerialNumberAlarm->text().length()==10) {
                            ui->SerialNumberConfiguration->setText(ui->SerialNumberAlarm->text());
                            ui->SerialNumberLogging->setText(ui->SerialNumberAlarm->text());
                        } else {
                           SerialnumberDialog.warning(nullptr, tr("Warning"), tr("Selected serial number does not consist of 10 characters"));
                        }
                    } else if (SerialnumberDialog.clickedButton()==setSerLogging) {
                        if(ui->SerialNumberLogging->text().length()==10) {
                            ui->SerialNumberAlarm->setText(ui->SerialNumberLogging->text());
                            ui->SerialNumberConfiguration->setText(ui->SerialNumberLogging->text());
                        } else {
                            SerialnumberDialog.warning(nullptr, tr("Warning"), tr("Selected serial number does not consist of 10 characters"));
                        }
                    }
                }
                
                RatzzR Offline
                RatzzR Offline
                Ratzz
                wrote on last edited by
                #6
                This post is deleted!
                1 Reply Last reply
                0
                • S Offline
                  S Offline
                  seprim
                  wrote on last edited by
                  #7

                  The problem is solved.
                  I was the problem.
                  I program with Visual Studio and MSVC and here an extra subfolder Release/Debug is created in which the EXE file is stored. I have to put my languages folder here for the translation to work.
                  Sorry for the mail.

                  1 Reply Last reply
                  1

                  • Login

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