书籍翻译数据格式

时间:2011-03-30 10:25:13

标签: vim nlp translation file-format

我正在考虑将一本书从英语翻译成我的母语。我可以翻译得很好,我很高兴vim作为文本编辑器。我的问题是我想以某种方式保留语义,即我翻译的哪些部分与原文相对应。

我基本上可以创建一个简单的基于XML的标记语言,看起来像

<book>
  <chapter>
    <paragraph>
      <sentence>
        <original>This is an example sentence.</original>
        <translation lang="fi">Tämä on esimerkkilause.</translation>
      </sentence>
    </paragraph>
  </chapter>
</book>

现在,这可能会有好处,但我认为编辑不会很有趣。

我能想到的另一种可能性是将原始文件和翻译保存在单独的文件中。如果我在每个翻译块之后添加换行符并保持行编号一致,编辑将很容易,我将能够以编程方式匹配原始和翻译。

original.txt:
  This is an example sentence.
  In this format editing is easy.

translation-fi.txt:
  Tämä on esimerkkilause.
  Tässä muodossa muokkaaminen on helppoa.

然而,这似乎并不十分强大。这很容易搞砸。可能有人有更好的想法。因此问题:

使用文字编辑器进行图书翻译的最佳数据格式是什么?

编辑:添加了标记vim,因为我更喜欢用vim执行此操作并相信某些vim guru可能有想法。

EDIT2:对此开始了赏金。我目前正倾向于我描述的第二个想法,但我希望能够轻松编辑(并且非常容易实现)但更强大。

3 个答案:

答案 0 :(得分:3)

有一种想法:如果你将每个可翻译的块(一个或多个句子)放在它自己的行中,vim的选项scrollbindcursorbind和一个简单的垂直分割将帮助你保持块“同步” 。它看起来非常像vimdiff默认做的。这些文件应该有相同数量的行,你甚至不需要切换窗口!

但是,这并不是很完美,因为缠绕的线条往往会陷入困境。如果您的翻译包含比原始文本多两三个虚拟行,则视觉关联会逐渐消失,因为这些行不再是一对一的。我无法找到解决该行为的解决方案或脚本。

我建议的其他建议是将翻译交织成原文。这接近了Benoit建议的差异方法。在将原始文件拆分为块(每行一个块)之后,我会在每行上添加>>或类似内容。一个块的翻译将以o开头。该文件看起来像这样:

  >> This is an example sentence.
  Tämä on esimerkkilause.
  >> In this format editing is easy.
  Tässä muodossa muokkaaminen on helppoa.

我会通过:match Comment /^>>.*$/或类似的方式来增强可读性,无论你的颜色方案看起来不错。可能值得写一个禁用原始文本拼写检查的:syn区域。最后,作为一个细节,我将<C-j>绑定到2j<C-k>绑定到2k,以便在重要的部分之间轻松跳转。

后一种方法的优点还包括如果你觉得我可以将事物包装在80列中:)编写<C-j/k>以在翻译之间跳转仍然是微不足道的。

缺点:缓冲完成受损,因为现在它完成原始和翻译的单词。英语单词不希望出现在经常翻译中! :)但这是非常强大的。完成后,一个简单的grep将剥离原始文本。

答案 1 :(得分:2)

为什么不使用简化的diff格式?

  • 它是直线的,适用于整个句子。
  • 第一个字符很重要(空格,特殊,+或 - )
  • 会很紧凑
  • 也许你不需要那些@@部分
  • Vim将支持它,并以不同的颜色为英语句子和芬兰句子着色。

答案 2 :(得分:1)

假设您希望保持原始文本与翻译文本之间的1 - 1关系,那么数据库表最有意义。

您有一个包含以下列的表:

  • id - 整数 - Autonum
  • original_text - 文本 - 非空
  • translated_text - 文本 - Nullable

您需要一个加载原始文本的过程,以及一个向您显示原始文本的一行并允许您键入翻译文本的过程。也许第二个过程可以显示5行(前两行,你要翻译的行,后面的两行)给你上下文。