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

String Qt本地化:加载可本地化字符串,string,qt,localization,qt4,character-encoding,String,Qt,Localization,Qt4,Character Encoding,我想在Qt应用程序中加载本地化字符串。为此,我将遵循以下几个步骤。如果我错了,请纠正我 注意:它适用于QString,但不适用于const char* 将pro文件更新为 翻译语言 使用Qt生成.ts&编辑 语言学家。使用生成.qm文件 lupdate和lrelease 从特定文件加载.qm文件 地点 下面是我的常量字符*的外观: const char* sayHello = QT_TRANSLATE_NOOP("FriendlyConversation","hello"); Localiz

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

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

  • 将pro文件更新为 翻译语言

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

  • 从特定文件加载.qm文件 地点

  • 下面是我的
    常量字符*
    的外观:

    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”提供任何可选的拉丁字符串,它根本不会加载

    我不知道错误在哪里。

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

    必须显式地为Qt提供文本上下文:

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