这是我的问题:我们的产品有9种不同语言的.ts文件。我们已经添加了大约100个需要翻译的新字符串,但有些是为了我们的下一个版本,还有一些是为了之后的版本。我们遇到了翻译器丢失字符串或提前翻译字符串的问题。我们希望能够向他们发送只包含我们现在想要翻译的字符串的较小.ts文件,然后将该.ts文件合并到包含其余翻译内容的较大.ts文件中。
我们的翻译人员需要使用QT Linguist (以前我们允许他们编辑原始XML,但结果不是很好)。
一种解决方案是使用上下文,但我们的开发团队并不是很热衷于这个想法。另一种方法是手动合并.ts文件,但这似乎会导致剪切和粘贴错误。
有没有使用lupdate &项目文件的方法来添加或合并辅助.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.Example1:我们有一个德语.ts文件,我们想从一个单独的德语翻译文件中添加20个字符串,以便主翻译文件包含包括20个新字符串在内的所有字符串。
Example2:我们有一个德语.ts文件,我们希望从一个单独的德语翻译文件中添加20个字符串,以便在lupdate期间将二级翻译文件与主要翻译文件合并,以便生成的.qm文件包含所有字符串,包括20个新字符串。
有没有人做过这两件事中的任何一件(而且这两件事都可以),你能给我一些见解吗?
发布于 2011-12-16 06:30:12
答案不是使用lupdate,而是在另一个名为lconvert的实用程序中。创建一个只包含您感兴趣的字符串的辅助文件(并从主文件中删除这些相同的字符串)非常容易,然后运行:
lconvert -i primary.ts secondary.ts -o complete.ts
这将获取两个输入文件中的所有字符串,并将它们放到输出文件中。使用这种方法,我能够创建一个原始文件的零差异文件(时间戳除外),我从该文件中拆分出两个主文件和次文件。
这个问题没有得到太多的关注,但也许有人会有同样的问题,这将会有所帮助。
发布于 2012-11-09 18:01:49
谢谢你的建议。它似乎适合我的情况:我试图从我的项目中提取更新的和新的字符串,该项目目前正在翻译一个旧版本/发行版,我还没有翻译过的字符串。
问题是只将新的/更新的字符串发送给翻译人员。
我在状态解析中传递了较旧的字符串,使用Lupdate添加新字符串,使用OxygenXML编辑器和一个类型“/TS/context/messagenot( XPath /@type)”来删除较旧的字符串,并从无用的空格和回车中清除它。
我尝试了在你的解决方案中使用lconvert进行合并,以便合并翻译后的字符串:旧的和新的。它会正确地通过lrelease并正确显示。
发布于 2014-12-19 20:31:38
使用多翻译的
一个应用程序中可以安装多个翻译文件。翻译的搜索顺序与安装顺序相反,因此首先搜索最近安装的翻译文件,最后搜索最早的翻译文件。一旦找到包含匹配字符串的翻译,搜索就会停止。
这种机制使得特定的翻译可以被“选择”或优先于其他翻译;只需通过将其传递到QApplication::removeTranslator()函数并使用QApplication::installTranslator()重新安装它,即可从应用程序中卸载该翻译程序。然后,它将是搜索匹配字符串的第一个翻译。
证明链接:QTranslator Class Reference
https://stackoverflow.com/questions/8513149
复制相似问题