- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Qt 语言学家翻译一个 ui
文件。我使用 lupdate
获取了它的 ts
文件,并翻译了这些单词和短语。现在我想将它添加到我的代码中,但我从它的教程中发现我似乎必须将 tr()
添加到我代码中的每个单词和短语。我理解正确吗?我可以只加载翻译后的 qm
文件一次来进行翻译吗?如果是这样,我该如何在这个 ui
文件中做到这一点?
提前致谢。
更新
按照 Jens 提到的更改属性后,在我的 ui 头文件中我可以看到如下句子:
buttonSetupData->setText(QApplication::translate("MainWindow", "Set Data", 0, QApplication::UnicodeUTF8));
在 Ajith 的回答之后,我更改了代码,现在 ui_main.h
文件中的 retranslateUi
函数如下所示:
void retranslateUi ( QMainWindow *MainWindow )
{
QTranslator translator;
translator.load ( " ...\Test.ts " );
QApplication::installTranslator ( &translator );
MainWindow->setWindowTitle ( QApplication::translate ("MainWindow", "The Sentioscope - Beta v2.0 for Soccer", 0, QApplication::UnicodeUTF8));
...
}
但是还是不行。
最新更新
我当前读取“.qm”文件的函数是这样的:
void MainWindow::translate()
{
QTranslator translator;
translator.load ( "Test.qm", "D:\\" );
qApp->installTranslator ( &translator );
retranslateUi ( this );
}
然后我这样调用这个函数:
MainWindow::MainWindow ( QWidget *parent ) : QMainWindow ( parent )
{
setupUi(this);
translate();
}
在 Ajith 的最新回答之后,我更改了这种形式的警告/消息框的每个字符串(例如):
QMessageBox::warning( this, QMessageBox::tr("ERROR"), QMessageBox::tr("Invalid IP adress") );
通过 lupdate
我可以读取所有这些字符串,进行翻译并将它们保存在一个 qm 文件中。现在的问题是,它可以为 ui 翻译这些字符串,但不能为执行后的警告/消息框翻译。
最佳答案
我不完全确定您想从这个问题中完成什么。我认为您正在寻找一种在运行时从 C++ 代码加载“qm”文件的方法。如果是这样,您需要做的是使用 QTranslator类..
QTranslator translator;
translator.load("file.qm", "dir");
qApp->installTranslator(&translator);
更新
这对我有用..
主窗口.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
isChinese(false)
{
ui->setupUi(this);
msgbox = new QMessageBox(QMessageBox::NoIcon, "", "", QMessageBox::NoButton, this);
pbtn = msgbox->addButton("Ok", QMessageBox::AcceptRole);
doRetranslate();
QObject::connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(doTranslate()));
QObject::connect(ui->pushButton, SIGNAL(clicked()), msgbox, SLOT(show()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::doTranslate()
{
QTranslator translator;
if (!isChinese) {
translator.load("test_zh_TW.qm", "../TestTranslator");
qApp->installTranslator(&translator);
isChinese = true;
} else {
translator.load("", ""); // Default is english
qApp->installTranslator(&translator);
isChinese = false;
}
ui->retranslateUi(this);
doRetranslate();
}
void MainWindow::doRetranslate()
{
msgbox->setWindowTitle(QObject::tr("ERROR"));
msgbox->setText(QObject::tr("Invalid IP adress"));
pbtn->setText(QObject::tr("Ok"));
}
主窗口.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMessageBox>
#include <QPushButton>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void doRetranslate();
public slots:
void doTranslate();
private:
Ui::MainWindow *ui;
bool isChinese;
QMessageBox *msgbox;
QPushButton *pbtn;
};
#endif // MAINWINDOW_H
主窗口.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>100</x>
<y>70</y>
<width>181</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>Hello World!</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>140</x>
<y>120</y>
<width>93</width>
<height>27</height>
</rect>
</property>
<property name="text">
<string>translate</string>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections>
<connection>
<sender>pushButton</sender>
<signal>clicked()</signal>
<receiver>label</receiver>
<slot>update()</slot>
<hints>
<hint type="sourcelabel">
<x>199</x>
<y>165</y>
</hint>
<hint type="destinationlabel">
<x>206</x>
<y>114</y>
</hint>
</hints>
</connection>
</connections>
</ui>
关于qt - Qt UI 文件如何使用 Qt Linguist?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14135416/
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我的目标是分析一些语料库(现在为推特)以获取情感内容。就在今天,我意识到搜索单词词干有点有意义,而不是拥有详尽的情感单词词干列表。因此,我一直在探索nltk.stem才意识到有4种不同的词干。我想问一
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 5年前关闭。 Improve thi
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2年前关闭。 Improve thi
如何使用 Javascript 重新触发 GitHub 的语法荧光笔? 在 GitHub 上查看代码文件时,有时 GitHub's Linguist以某种方式被调用。在我的 Chrome Inspec
我正在使用 Qt 语言学家翻译一个 ui 文件。我使用 lupdate 获取了它的 ts 文件,并翻译了这些单词和短语。现在我想将它添加到我的代码中,但我从它的教程中发现我似乎必须将 tr() 添加到
我的 repo 有几个包含 smartBASIC 源代码的 *.sb 文件。这些文件不会出现在 repo 的语言栏中(因为 smartBASIC 及其关联的文件扩展名不是默认语言学家定义的一部分)。
运行lupdate时,qml 文件中的任何qsTr都无法识别。生成的 .ts 文件不包含任何翻译上下文。 $ lupdate -verbose App.pro Updating 'translatio
我得到了这样一行 Qlabel: QString(tr("Are you sure you want to delete the scene called %1 ?")).arg(variable);
在 linguist 上的 GitHub 文档中, section关于使用 .gitattributes文件说一个路径可以被标记为vendored,因此在存储库的统计跟踪中被忽略,具有: specia
我没有找到执行此操作的方法 - 只能编辑现有字段的翻译。 如果没有办法做到这一点 - 应该如何完成(不知何故自动,因为现在我正在手动添加 x xx block 到我的 .ts 文件
我正在使用 Linux Mint 16,但遇到了问题。 我从 Qt 站点下载的二进制包安装了 Qt Creator 5.2.1。我没有 Qt Linguist...另外,我已经从存储库安装了 qtcr
我如何在 Phoenix 中使用 linguist 包?我正在尝试在网页中进行国际化。我已将包添加到 mix.exs 并运行 mix deps.get成功。 现在,我不知道在哪个文件夹中写入包的模块文
我注意到 Qt TS 文件中的某些消息的翻译元素具有“消失”类型,但其用途尚不清楚。似乎只有“未命名”上下文中的消息才具有这种类型。对应DTD只说这个值是在Qt 5.2中引入的,我找不到任何其他文档。
我需要对现有的 Java 项目进行国际化。我已经在使用 Qt 的 C++ 项目中使用 Qt Linguist,我希望(并且必须)为我的 Java 项目保留相同的过程,而不是使用 java Ressou
我正在努力为我们的 GUI 支持不同的语言。我在翻译其中包含“\n”的字符串时遇到问题。他们似乎被忽略了。 在 Qt Designer 中,我在文本字段中有一个 QCheckBox: Here's a
我正在尝试将我的语言翻译成另一种任意语言。 但就我而言,我使用 vs2013->Qt5 项目->Qt 应用程序生成了项目。 所以我没有“.pro”文件或 qmake.exe 文件。 但是当我搜索使用语
我已经检查了很多与 Qt Linguist 相关的问题,但我还没有找到针对我的特定问题的解决方案。 我有一个(中文)翻译文件,其中许多字段都已正确填写。 我的问题是,在我的应用程序中,只有基于 .ui
默认情况下,Oracle 使用创建的索引。 当我更改为 NLS_COMP=Linguistic 和 NLS_Sort=Binary_CI 时,我会得到全表扫描。 我读过使用 (nlssort(name
我找到了如何在 CMake 中使用 .ts 文件: SET(TRANS localization/en_en.ts) QT5_ADD_TRANSLATION(QM ${TRANS}) (并添加到可执行
我是一名优秀的程序员,十分优秀!