使用QT实用程序(lconvert)将转换文件(.ts)与现有的.ts文件合并

时间:2011-12-14 23:21:39

标签: qt translation

这是我的问题:我们的产品有九种不同语言的.ts文件。我们已经添加了大约100个需要翻译的新字符串,但有些是针对我们的下一个版本,有些是针对之后的版本。我们遇到了翻译人员缺少字符串或提前翻译字符串的问题。我们希望能够向它们发送只包含我们现在想要翻译的字符串的较小.ts文件,然后将该.ts文件合并到包含其余翻译的较大.ts文件中。

我们的翻译人员需要使用QT语言学家(之前我们让他们编辑原始XML而不是一流的结果)。

一种解决方案是使用上下文,但我们的开发团队并不热衷于这个想法。另一种方法是手动合并.ts文件,但这似乎是一个切割和配方的配方。粘贴错误。

是否有lupdate& amp;项目文件添加或合并辅助.ts文件?我已经阅读了QT-land的论坛,没有找到答案,但是lupdate中的开关暗示能够指向其他翻译文件。特别是-pro开关,它说:

    -pro <filename>
       Name of a .pro file. Useful for files with .pro file syntax but
       different file suffix. Projects are recursed into and merged.

示例1:我们有一个德语.ts文件,我们希望从单独的德语翻译文件中添加20个字符串,以便主翻译文件包含所有字符串,包括20个新字符串。

示例2:我们有一个德语.ts文件,我们希望从单独的德语翻译文件中添加20个字符串,以便在lupdate期间将辅助翻译文件与主文件合并,以便生成的.qm文件包含所有字符串包括20个新的。

有没有人做过其中任何一个(并且要么会工作),你能给我一些见解吗?

3 个答案:

答案 0 :(得分:36)

答案不使用lupdate,它位于另一个名为lconvert的实用程序中。创建一个仅包含您感兴趣的字符串的辅助文件(并从主文件中删除相同的字符串)非常容易,然后运行:

lconvert -i primary.ts secondary.ts -o complete.ts

这将从两个输入文件中获取所有字符串,并将它们放在一起输出到输出文件中。使用这种方法,我能够创建原始文件的零差异文件(时间戳除外),我将两个主要文件分开。来自。

的辅助文件

这个问题没有得到很多关注,但也许有人会遇到同样的问题,这会有所帮助。

答案 1 :(得分:2)

感谢您的提示。它似乎适用于我的情况: 我试图从我的项目中提取更新的和新的字符串,该字符串目前正在旧版本/发行版中翻译,我还没有翻译过字符串。

问题是只向翻译人员发送新的/更新的字符串。

我在状态已解决时传递旧字符串,使用Lupdate添加新字符串,使用带有XPath“/ TS / context / message [not(translation / @ type)]”的OxygenXML编辑器进行研究以删除旧字符串,并清理它来自无用的空白和回车。

我尝试使用lconvert与您的解决方案进行合并,以合并已翻译的字符串:更旧和更新。它正确传递lrelease并正确显示。

答案 2 :(得分:-4)

使用多种翻译

可以在应用程序中安装多个翻译文件。按照安装它们的相反顺序搜索翻译,因此首先搜索最近安装的翻译文件以进行翻译,最后搜索最早的翻译文件。只要找到包含匹配字符串的翻译,搜索就会停止。

这种机制可以使特定的翻译成为可能的选择。或优先于其他人;只需将应用程序中的转换程序传递给QApplication :: removeTranslator()函数,然后使用QApplication :: installTranslator()重新安装它即可。然后它将成为第一个搜索匹配字符串的翻译。

证明链接:QTranslator Class Reference