Qt本地化:加载可本地化的字符串

时间:2010-08-10 07:07:10

标签: string qt localization qt4 character-encoding

我想在Qt应用程序中加载本地化字符串。为此,我要遵循几个步骤。如果我错了,请纠正我。

注意:它适用于QString但不适用于const char*

  1. 使用更新专业文件 翻译语言

  2. 生成.ts&使用Qt编辑 语言学家。使用生成.qm文件 lupdate和lrelease。

  3. 从特定文件加载.qm文件 位置。

  4. 以下是const char*看起来的样子:

    const char* sayHello =  QT_TRANSLATE_NOOP("FriendlyConversation","hello");
    
    LocalizationWithQT::LocalizationWithQT(QWidget *parent)
        : QMainWindow(parent)
    {
     //ui.setupUi(this);
     QString str = tr("say hello");
     QPushButton *pushbutton = new QPushButton(tr(sayHello));
     setCentralWidget(pushbutton)
    
    }
    

    以下是我加载.qm文件的方法:

    QApplication a(argc, argv);
    
        QTranslator translator;
        bool val = translator.load("c:\\Data\\test\\hellotr_la");
        a.installTranslator(&translator);
    
        LocalizationWithQT w;
        w.showMaximized();
        return a.exec();
    

    问题是,如果我提供任何替代的拉丁字符串到“sayhello”,它根本不加载。

    我不知道错误在哪里。

1 个答案:

答案 0 :(得分:0)

如果您使用tr(sayHellow),Qt将在当前上下文(= LocalizationWithQT类)中查找sayHellow翻译。

您必须明确向Qt提供文本上下文:

QPushButton *pushbutton 
    = new QPushButton(qApp->translate("FriendlyConversation", sayHellow));