Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt lupdate-ts文件中的常见单字?_Qt_Translate_Qml - Fatal编程技术网

Qt lupdate-ts文件中的常见单字?

Qt lupdate-ts文件中的常见单字?,qt,translate,qml,Qt,Translate,Qml,我第一次学习如何在工作中使用QT的翻译工具。 他们已经在某种程度上工作了,我的工作就是清理 一切就绪,并使其正常工作,以及使用lupdate保持 当事物发生变化时,它们是同步的,等等。我们也在使用QML 为所有字符串编写了一个包装函数,因此lupdate找不到 要添加到.ts XML文件的函数。我们使用包装器的原因是 用于同时集中所有字符串的其他函数。我们也 不要总是在“source”参数中使用字符串文字,而是使用已定义的 财产,例如: 属性字符串ButtonText:ButtonText 然后

我第一次学习如何在工作中使用QT的翻译工具。 他们已经在某种程度上工作了,我的工作就是清理 一切就绪,并使其正常工作,以及使用lupdate保持 当事物发生变化时,它们是同步的,等等。我们也在使用QML 为所有字符串编写了一个包装函数,因此lupdate找不到 要添加到.ts XML文件的函数。我们使用包装器的原因是 用于同时集中所有字符串的其他函数。我们也 不要总是在“source”参数中使用字符串文字,而是使用已定义的 财产,例如:

属性字符串ButtonText:ButtonText

然后:commonTRFunctioncontext,ButtonText

当然,出于这两个原因,lupdate没有找到

我非常简单地研究了更新lupdate源代码 我不确定是否值得尝试破解它以找到我们的功能或 编写我们自己的解析器来查找标准QT标记以及我们的新标记

第二,和第一部分有关,我想用一种方法来做一个 上下文部分,包含我们在应用程序中使用的所有常用词 例如“返回”、“保存”、“确定”等,但不要反复重复 在整个.ts文件中。lupdate似乎一遍又一遍地重复着事情 在多个环境中,这似乎既低效又浪费线路 在ts文件中

我还没有找到任何QT文档能够真正解释tr、qsTr、qstralate、QT_tr_NOOP和QT_TRANSLATE_NOOP之间的差异。我知道你有时需要背景和来源, 其他时候,只使用源代码而不使用上下文。我们不使用 消歧arg。我们的代码大部分在QML,而不是C++。 我们还从命令行运行lupdate

有没有人有想法、建议,甚至有人写的工具
那可以用来做我们的东西吗?非常感谢您的帮助。

我不知道QML,但在我看来,您需要找到一种使用lupdate可以找到的常规字符串的方法。关于第二个问题,您需要将公共字符串存储在公共存储库中,以便lupdate不会多次提取它们——您不能期望lupdate比您的codeIm学习QML更高效。它很像Javascript。不幸的是,我们在QML代码中确实需要一个集中的字符串函数。因此,不可能将标准QT函数放在任何需要它们的地方。如果lupdate也为用户定义的字符串添加一个额外的参数,那就太好了。我查看了源代码,对于理解它的人来说,也就是QT开发人员来说,这似乎并不难,但是我们没有时间把它添加到我们的日程中。你能解释一下你将如何建立一个与.ts文件和上下文部分相关的公共回购协议吗?我不知道你所说的回购协议是什么意思。.ts文件本质上是您编辑的翻译源文件,lrelease创建您分发的.qm文件。如何将qm与应用程序打包以及应用程序如何加载它们取决于您;在C++中,你会使用QPrimeC类。我理解的那部分,我不清楚你的评论“你需要在一个公共的仓库中存储普通字符串,这样LUPDATE就不会多次调用”——你能解释一下这是怎么做的吗?对不起,我在完成之前回击了。我知道如何使用回购协议,我想知道的是,我在哪里存储公共字符串?在.ts文件中?如果是这样的话,我是否只需要建立一个“公共”上下文?我曾经使用过qsTranlsatecontext,string,如果我把一个字符串放在任何上下文中,即使我传递给qstranlate的当前“上下文”不同,它也会把它捡起来。这总是真的吗?假设我没有错过,lupdate和QT文档不会描述这些类型的东西