Vim 图书翻译数据格式

Vim 图书翻译数据格式,vim,nlp,translation,file-format,Vim,Nlp,Translation,File Format,我在考虑把一本书从英语翻译成我的母语。我可以翻译得很好,而且我很喜欢vim作为文本编辑器。我的问题是,我想以某种方式保留语义,也就是说,我翻译的哪些部分与原文相对应 我基本上可以创建一个简单的基于XML的标记语言 <book> <chapter> <paragraph> <sentence> <original>This is an example sentence.</original&g

我在考虑把一本书从英语翻译成我的母语。我可以翻译得很好,而且我很喜欢
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>
然而,这似乎不是很可靠。这很容易搞砸。也许有人有更好的想法。因此,问题是:

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

编辑:添加了tag
vim
,因为我更喜欢使用vim,并且相信一些vim大师可能有一些想法


EDIT2:开始悬赏了。我目前倾向于我描述的第二个想法,但我希望得到一些同样容易编辑(并且非常容易实现)但更健壮的东西。

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

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

  • id-Integer-Autonum
  • 原始文本-文本-不为空
  • 已翻译文本-文本-可空
您需要一个过程来加载原始文本,以及一个过程来显示原始文本的一行并允许您键入翻译文本。也许第二个过程可以显示5行(前2行,要翻译的行,后2行)来提供上下文。

为什么不使用简化格式

  • 这是适合整句话的行
  • 第一个字符有效(空格、特殊字符、+或-)
  • 它将相当紧凑
  • 也许你不需要那些
    @
    部件
  • Vim将支持它,并将英语句子和芬兰语句子涂成不同的颜色

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

但是,这并不是很完美,因为包裹的线条往往有点乱。如果你的翻译比原文多包含两到三行虚拟行,视觉关联就会消失,因为这些行不再是一对一了。我找不到解决方案或脚本来修复该行为

我建议的另一个建议是将译文与原文交错。这接近于Benoit建议的diff方法。在将原稿分割成块(每行一块)之后,我会在每行上预先添加一个
>
或类似的内容。一个区块的翻译将以
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
区域来禁用原始文本的拼写检查。最后,作为一个细节,我将
绑定到
2j
2k
以允许在重要的部分之间轻松切换

后一种方法的优点还包括,如果您觉得像我一样,您可以将内容包装在80列中:)编写
在翻译之间跳转仍然很简单


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

这确实解决了问题,但似乎很麻烦:我必须使用编辑软件。编辑肯定不会是线性的:我肯定需要来回地编辑。你能提出一些实际的方法来实现这一点吗,以及我自己的建议带来的好处?在我看来,我几乎可以用Excel进行翻译……我还将从一大块文本开始,我希望将其拆分为更小的文本块会很容易(数据库不会自动如此)。@dancek:是的,您必须将原始文本拆分为多个部分。您可以在任何编辑器中进行编辑。您只需要几个GUI来输入原始文本和翻译文本。数据库表将文本片段保存在一起。如果愿意,可以在每个数据库行上放置多个句子。您可以使用任何从数据库表创建CRUD事务的软件来创建GUI。然后,我的工作流程将类似于:分割块、翻译、复制原件、粘贴到另一个窗口、复制翻译、粘贴到另一个窗口、将两者插入数据库。我想我可以使用pgAdmin的数据编辑器,它和Excel完全一样,这样可以避免我在窗口之间跳转。如果我事先把它分成
/[^\n\.]+[\n\.]+/
的块,它是可行的(但没有那么灵活)。或者我会研究如何将Vim直接连接到db。请注意,我在问题中故意提到了文本编辑器。我需要一个可用的编辑界面。我愿意接受所有的建议(也不是基于文本编辑器的),只要它们不需要付出很大的努力来实现。我还需要做一些测试,看看结果如何。谢谢你的回答。
scrollbind
/
cursorbind
是一个好主意,但另一个解决方案似乎最稳健。我从DIFF风格的方法开始,但我仍在研究VS拆开版本(即使在中间也很容易改变)。
  >> This is an example sentence.
  Tämä on esimerkkilause.
  >> In this format editing is easy.
  Tässä muodossa muokkaaminen on helppoa.