我希望这是提出这个问题的正确论坛。如果不是,请将我重定向到更合适的论坛。
我正在尝试了解 Qt Linguist TS 文件的格式。我修改了一个文件,当我尝试打开它时,我收到错误消息“在...中找到重复的消息”。该文件确实包含一个上下文,其中包含两条消息
- 同一来源
- 文件名相同但行号不同的位置
- 不同的翻译
这是给出此错误的最小文件的源代码:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="es">
<context>
<name>MyContext</name>
<message>
<location filename="../../../../../MyFile.cpp" line="605"/>
<source>Delete</source>
<translatorcomment>Menu option</translatorcomment>
<translation type="unfinished">&Borrar</translation>
</message>
<message>
<location filename="../../../../../MyFile.cpp" line="1572"/>
<source>Delete</source>
<translation>Eliminar</translation>
</message>
</context>
</TS>
据我所知,每条消息都由上下文、来源和位置标识,因此这应该不是问题,因为行号不同。另请注意,您不能将两个消息元素合并为一个,因为它们包含不同的翻译文本。
所以我不清楚是什么导致了错误信息。我正在使用 Qt 4.6.2 版。我查看了以下文档:Qt Linguist Manual: Translator、Qt Linguist Manual: Programmers、Linguist TS file format,但在这些文档中我都没有找到我要查找的信息,即如何识别每条消息以及可能导致的原因Qt Linguist 中的错误消息。
如果您不知道该问题的答案,则指向有关 TS 格式的更多详细信息的链接也会有所帮助。
更新
我发现通过使用可选标签 TS/context/message/comment 可以为相同的上下文/消息/源提供不同的翻译文本,例如
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="es">
<context>
<name>MyContext</name>
<message>
<location filename="../../../../../MyFile.cpp" line="605"/>
<source>Delete</source>
<comment>Comment 1</comment>
<translatorcomment>Menu option</translatorcomment>
<translation type="unfinished">&Borrar</translation>
</message>
<message>
<location filename="../../../../../MyFile.cpp" line="1572"/>
<source>Delete</source>
<comment>Comment 2</comment>
<translation>Eliminar</translation>
</message>
</context>
</TS>
上面的文件可以正常打开。
这似乎解决了我的问题,但最好有一些关于这种格式的精确文档。