大概你有一个或多个文本文件,一个是语言 A,一个是语言 B,等等,后者是第一个的翻译。有了这个假设:
您可以使用围绕单词、短语和/或标点符号的唯一编号标签来标记您的纯文本文件,例如:“亲爱的先生,你今天好吗?” 翻译成德语变成:“Sehr geehrter Herr, wie geht es dir heute?”:
<Language-English:<11:<4:<1:Dear> <2:Sir><3:,>> <10:<7:<5:How are> <6:you>> <8:today><9:?>>>>
<Language-Deutsch:<11:<4:<1:Sehr geehrter> <2:Herr><3:,>> <10:<7:<5:wie geht> <6:es>> <8:dir heute><9:?>>>>
我的德语相当生疏,所以我的标签可能不太正确,但它们仍然应该显示我的想法。
如您所见,整个句子及其部分都有自己的标签。显示文本时,每一<n:
>
对都将被删除,并且可以用下划线或其他形式的突出显示代替以指示组。当然,可能有多个下划线/突出显示(此示例最多有四个)。当单击(并在视觉上强调)语言 A 文本上的突出显示时,语言 B(和其他语言,如果存在)中的相应突出显示也会被强调。
自然,进行标记很可能是人工翻译的工作,因为自动执行实际翻译并在该点应用标签是一项不平凡的任务。
但是,可以同时突出显示每种语言中的元素然后将其标记为等效的 UI 可以促进生成标记文件的过程。
至于您的其他考虑因素(数组和数据库),它们似乎过于复杂。您仍然必须以某种方式标记您的文本,以便它们可以加载到这些结构中,因为一种语言中的单词甚至短语不一定有 1:1 的音译到另一种语言的等价物),并且通常可以不容易被机器翻译。一旦你有了标记,谈论数组/字典/数据库/其他结构就变得有点无关紧要了,只关心 UI 程序员。
编辑:
进一步考虑,标签可能不是完美嵌套的,可能会被拆分,因此您可能需要一<n:
:n>
对标签,以允许部分重叠和拆分标签区域。例如:
<1:The:1> <2:black:2> <1:dog:1> <3:and <4:the dog:3>'s puppies:4>
有片段:“The dog”、“black”、“and the dog”和“the dog's puppies”。
编辑2:
您可以通过在所有语言中使用唯一的标签对 ID 来支持多文本:
EN: "The Knight's coat of arms was defaced"
DE: "Das Wappen des Ritters wurde verunstaltet"
FR: "Le blason du Chevalier a été abîmé"
<1:The Knight's:1> <2:coat of arms:2> <5:<3:was:3> <4:defaced:4>:5>.
<2:Das Wappen:2> <1:des Ritters:1> <3:wurde:3> <4:verunstaltet:4>.
<2:Le blason:2> <1:du Chevalier:1> <5:a été abîmé:5>.
如您所见,标签 1、2、3 和 4 适用于英语和德语,标签 1、2 和 5 适用于英语和法语。标签很容易被拆分和部分重叠。