请教QT中多语言切换,lupdate提取字符串不成功的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教QT中多语言切换,lupdate提取字符串不成功的问题相关的知识,希望对你有一定的参考价值。

代码如下:
qttranslator::qttranslator(QWidget *parent)
: QMainWindow(parent)

QWidget* qwid = new QWidget;
this->setCentralWidget(qwid);
QLabel* lb=new QLabel(QObject::tr("&mylabel"),qwid);
QLabel* lb2=new QLabel(tr("&mylabel2"),qwid);
static const char * const listEntries[] =
QT_TRANSLATE_NOOP("MainWindow", "First"),
QT_TRANSLATE_NOOP("MainWindow", "Second"),
QT_TRANSLATE_NOOP("MainWindow", "Third"),
0
;
但lb2的字符提取不出来,不知道为什么,请大神指点迷津!
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="zh_CN">
<context>
<name>MainWindow</name>
<message>
<location filename="qttranslator.cpp" line="13"/>
<source>First</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qttranslator.cpp" line="14"/>
<source>Second</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qttranslator.cpp" line="15"/>
<source>Third</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="qttranslator.cpp" line="10"/>
<source>&mylabel</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

参考技术A 你的配置文件中没有&mylabel2的定义,只有&mylabel的。
照着&mylabel的格式,在xml中增加一个&mylabel2就可以了。

Qt系列文章之三十九(Qt多语言国际化程序实例设计实现)

关注我的公众号,可免费看全本Qt系列文章~

概述

  有些软件需要开发多语言界面版本,如中文版、英文版、日文版、繁体版等等,并且在软件里可以方便地切换界面语言。Qt为多语言界面提供了很好的支持,使用Qt的一些规则和工具,可以很方便地为应用程序开发提供多语言界面支持。

  用Qt开发多语言界面应用程序,主要包括以下几个步骤:

  1. 在程序设计阶段,程序代码中每一个用户可见的字符串都用 tr() 函数封装, 以便Qt提取界面字符串用于生成翻译资源文件。用UI设计器可视化设计窗体时统一用一 种语言,如汉语。

以上是关于请教QT中多语言切换,lupdate提取字符串不成功的问题的主要内容,如果未能解决你的问题,请参考以下文章

QML程序实现动态切换多语言(ListModel/ListElement中的文本的多语言处理)

Qt系列文章之三十九(Qt多语言国际化程序实例设计实现)

Qt系列文章之三十九(Qt多语言国际化程序实例设计实现)

Android国际化多语言切换

Qt跨平台(windowlinux)实现多语言

Android国际化多语言切换