问题标签 [qtranslator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
774 浏览

python - QTranslator 如何处理语言环境修饰符 PyQT?

我在加载翻译文件时遇到问题,QTranslator因为它有一个语言环境修饰符。我正在使用的代码是,

这段代码几乎适用于所有语言环境,除了包含修饰符 (EG sr_RS@latin.UTF-8) 的语言环境。在这种情况下,无论其名称如何,它都不会加载翻译文件。

我似乎无法弄清楚该翻译文件的名称,或者我需要实现哪些新代码才能使此代码正常运行。

在此先感谢,乔希

0 投票
2 回答
248 浏览

c++ - 如何区分翻译不存在或翻译与来源相同?

QCoreApplication::translate()用来翻译文本。

我试图了解一个字符串是否有翻译。

Qt 文档指出:

如果没有翻译文件包含sourceText 上下文中的翻译,则此函数返回QString等效的sourceText.

我面临的问题是我得到的结果类似于:

来源和翻译相同的地方。

在许多语言中,翻译确实与来源相同。但如果translate("Side")返回"Side",我无法判断翻译是否准确"Side"或翻译是否为空。

如何区分这两种情况?

0 投票
1 回答
1188 浏览

c++ - 为什么我的 C++ Qt UI 被翻译了,但我的程序中的 QStrings 没有被翻译?

我需要用法语翻译我的英文 UI,所以我使用 .ts 和 .qm 文件完成了所有必要的工作,将其加载到 QTranslator 类中,并将其安装到 QApplication:

稍后,我创建并附加到 InterfaceWidget 另一个名为 ConfigurationTabUI 的小部件(在选项卡中):

相应的 UI 也正确翻译为法语。

这是我的问题:在 ConfigurationTabUI 的方法中,当我尝试翻译一个简单的 QString 时它不起作用:

我真的不知道为什么...感谢您的帮助。

注意:我使用 Qt5.2 并仔细检查了 .ts 文件是否包含正确的翻译字符串。

0 投票
1 回答
3446 浏览

c++ - 在 translations.qrc 文件中读取翻译器文件 .ts/.qm

我正在尝试在我的 Qt 项目(Linux 系统上的 Qt 5.6)上导入翻译文件,但我无法上传翻译文件,因为该QTranslator::load方法总是返回false

我有以下“testTrl”项目结构:

在项目根目录上,我有“resources”文件夹,其中包括“qml.qrc”、“translations.qrc”和“translations”文件夹:

我已经使用“lrelease”和“lupdate”命令获得了“.ts”和“.qm”文件。

项目文件:

testTrl.pro 文件:

translations.qrc 文件:

main.cpp 文件:

“isFileTranslatorLoaded”始终为“假”。我该如何解决这个问题?

0 投票
1 回答
1502 浏览

c++ - Qt - 使用内置翻译

我正在使用 Qt 并希望翻译 Qt 小部件显示的“本机”文本。例如,通过“本机显示的文本”,我指的是上下文菜单中显示的文本编辑(复制,粘贴,...)。

这是我已经完成的:

对于Qt5.6.2 和 MinGW 用户, qt_fr.qm文件位于path_to_qt/Qt5.6.2/5.6/mingw49_32/translations 。我将上述文件复制到正在运行的软件目录,但翻译器总是无法加载它。但是当我使用自己的 qm 文件(使用 Qt lupdate 和 lrelease 工具从 .ts 文件构建)时,qm 文件已正确加载和安装。

我有什么遗漏或做错了吗?

0 投票
1 回答
112 浏览

c++ - 为什么我需要一个 QTranslator 来在 Windows 上的 QMessageBox 中本地化按钮文本?

我正在开发一个在 Linux 和 Windows 上运行的 Qt 应用程序。我在德国地区。

在 Linux 上构建它时,我得到了标准按钮的正确翻译,例如QMessageBox::question带有QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel按钮集的标准按钮(在我的例子中是“Ja”、“Nein”和“Abbrechen”)。

但是,如果我在 Windows 上构建代码,我只会获得这些按钮(“是”、“否”和“取消”)的 C 语言环境(英语)文本。

经过一番搜索,我通过添加找到了一个全球可行的解决方案

到我的main.cpp.

使用它,我还可以在 Windows 上获得翻译后的字符串。然而,在 Linux 上,qtTranslator.load调用失败,因此我之前的状态没有任何变化,所以我最终将该代码放在一个#ifdef Q_OS_WIN块中。

这可行,但对我来说似乎有点hacky。另外,我不明白为什么我默认在 Linux 上而不是在 Windows 上得到翻译后的字符串。

我这样做的方式是正确的解决方案吗?如果是这样,为什么我需要在 Windows 上添加额外的代码?

0 投票
1 回答
184 浏览

qt - 如何基于 QTranslator 更改 QPushButton 的图标字符串

我有一个带有按钮的应用程序,这些按钮为各种点击状态设置了图标,没有设置或显示实际的 QPushButton 文本;它都包含在图标中。

这些图标文件包括需要翻译的文本,并且已经为每种语言和状态生成。我正在寻找一种方法来使用 QTranslator 或 QAction 类来根据所选的主要语言自动选择要使用的按钮的本地化版本。

例如:

我已按照QT Wiki: Multi Language Application上的说明进行操作,但按钮未显示在生成的翻译 (.ts) 文件中。根据语言为其使用的每个实例都设置一个 switch case 并不理想。

0 投票
1 回答
816 浏览

qt - 如何从应用程序中删除所有 QTranslator?

我想为每种语言使用QCoreApplication::installTranslator几个不同的.qm文件来更改语言(项目的不同部分导致不同的 .qm 文件)。

可以使用多个 .qm 文件:

QCoreApplication::installTranslator(QTranslator *translationFile)
可以安装多个翻译文件。翻译按安装时的相反顺序搜索,因此首先搜索最近安装的翻译文件,最后搜索安装的第一个翻译文件。

但是,如果我不删除年长的翻译人员,他们仍然是翻译的候选者。即使他们是最近安装较少的翻译器。

如何在加载所需文件之前清除之前加载的任何文件?

我看到的唯一方法是保留我安装的指针,并在我想更改时将它们一一删除,但是还有更直接的方法吗?

0 投票
2 回答
1726 浏览

python - 使用带有 pyqt 的组合框动态更改应用程序的翻译

我正在创建一个带有组合框的简单窗口,让用户选择要在整个应用程序中显示的文本语言

我已经创建了必要的 .qm 文件,并且在我启动应用程序时正在更新文本。但是如何将它链接到组合框上的选项,并从主窗口中动态更改语言?

我的代码:

基本上我想让组合框做这样的事情:

我假设我必须以某种方式将参数从 mainWindow 传递给 main() 函数并重新加载所有内容。

这甚至可能吗?

OSX 10.11.6 上的 Python 2.7、QT 5.9.1、PyQt4 4.12.1

编辑:

我在 QT wiki 页面上发现了这篇文章,可以满足我的要求,不幸的是我根本不精通 C。如果有人能帮我把它翻译成python,我将不胜感激。

0 投票
2 回答
331 浏览

qt - How can I include C:\Qt\5.9.1\msvc2015\translations .qm files (Qt framework qm files) in Visual Studio Qt project?

How can I include C:\Qt\5.9.1\msvc2015\translations .qm files (Qt framework qm files) in final release, Visual Studio Qt project?

I am loading the files using:

in release and debug the translations work, but in the final build they don't and it is most probable that it's because they are not added.

I noticed that if i move them in my project they are not loaded.