Template:Tc/doc

来自Terraria Wiki
跳转至: 导航搜索
Warning-Logo.png

该模本是中文wiki的基础模板之一,被嵌入到 几乎所有 模板和页面中,修改时一定要极其小心

模板简述[编辑源代码]

该模板以标准译名数据库为基准,配合一些变体扩展处理,提供自动翻译功能,使各类名词的翻译能够统一处理,并为翻译工作提供便利。

同时,此模板为{{item link}}、{{il2l}}、{{il2c}}、{{Npc infobox}}等大量模板提供透明自动翻译支持。

模板已经过仔细的性能优化,单个页面内使用上万次不会引发问题,可以放心使用。

如何使用[编辑源代码]

常规翻译[编辑源代码]

常规用法:

{{Tc|英文}}

翻译成功时会输出相应翻译中文结果,翻译失败则将输入参数原样输出。

输入参数大小写不敏感,但翻译失败时的输出会按输入的大小写原样输出,不会引入任何额外处理。

例:

输入 输出 预期 备注
{{Tc|Copper Shortsword}} 铜短剑 铜短剑 翻译成功,输出中文
{{Tc|someTHING}} someTHING someTHING 翻译失败,维持原始大小写输出原文

针对页面标题[编辑源代码]

针对页面标题,将英文wiki标题转为中文: {{Tc|英文|pn=yes}}

由于英文翻译为中文时有多词同译的情况,可能导致两个英文页面标题翻译为同样的中文,此时需要额外进行消冲突处理,此用法即用于自动处理此种情况。

例如,英文 wiki 中同时有 MushroomsMushroom 两个页面,但是直接翻译中文均为“蘑菇”,因此需要将其中之一加后缀做消冲突处理:

输入 输出 预期
{{Tc|Mushroom}} 蘑菇 蘑菇
{{Tc|Mushrooms}} 蘑菇 蘑菇
{{Tc|Mushroom|pn=yes}} 蘑菇 蘑菇(物品)
{{Tc|Mushrooms|pn=yes}} 蘑菇(类别) 蘑菇

当{{Tc}}的结果用于链接至其他页面时应当使用此参数。

词间空格[编辑源代码]

{{Tc}}空格处理遵循以下规则(本章节中出现下划线均表示此处为空格,使用下划线仅为了更清晰):

  • 最终输出结果前后一定无空格,无论输入时前后是否有空格。因此使用时可能需要手工在前后加空格,例如:世界_{{Tc|NPCs}},请使用时自行判断。
  • 游戏内的中文译名在涉及中英文混合的情况中英文之间不加空格,{{Tc}}对此类词条及其衍生词条维持此处理,不加空格,例如“Propeller Gato”的翻译为“飞翔Gato”而非“飞翔 Gato”。此类词条和其他前后缀组合时,中英文之间也不加空格,例如“Propeller Gato pet”的输出是“飞翔Gato宠物”而非“飞翔Gato 宠物”。
  • 其他情况下中英文之间、普通中文与阿拉伯数字之间加空格,例如“town npc”这个词条的中文是“城镇 NPC”,“town npc pet”的输出是“城镇 NPC 宠物”,“town npc pet 2”的输出是“城镇 NPC 宠物 2”。
    • 但英文和中文标点之间不加空格。例如“Ballista Panic! debuff”的输出是“弩车恐慌!Debuff”而非“弩车恐慌!_Debuff”。
    • 以上两条结合起来,配合{{Tc}}本身的处理顺序,有时会产生意料之外的结果,例如“normal UFO Mount”,期望分解为 normal + (UFO Mount),输出“普通UFO坐骑”,但实际上因为另有一个叫 UFO 的词条,同时后缀优先匹配,因此会被分解为 (Normal UFO) + 后缀Mount,然后再被分解为 前缀Normal + 主体UFO + 后缀Mount,最后输出“普通 UFO 坐骑”。
  • 输出不会包含连续空格,输入中如有连续空格会被压缩成一个。例如 “Normal_ _ _UFO”的输出依然是“普通 UFO”。


一个没实际意义的例子:

>{{Tc| basic the melee regular red yellow green blue purple pink normal Lazure's Valkyrie Circlet buff 4 Bewitched surface biomes set weapons Boss Debuff (bug) npc(biome) material 2 layer 7 accessory IDs 2763 3234 }}<

会输出(注意其中Lazure前后无空格):

>基本近战常规红黄绿蓝紫粉普通Lazure的女武神头环增益 4 着魔地表生物群落套装武器 Boss 减益(Bug)NPC(生物群落)材料 2 层 7 配饰 ID 2763 3234<

性能问题[编辑源代码]

{{Tc}}的处理能力在设计时大量照顾了各种模版内集成使用以实现透明自动翻译的需求,因此有一些地方为了功能的强大而部分妥协了性能。在日常人工翻译页面时,请注意:

  • {{Tc}}在翻译失败时的开销是非常高的,如果使用了{{Tc}}后确定翻译失败,请编辑解除此次调用,以提高页面性能。注意词表中有部分“保持原文”的词条,这并非翻译失败,使用Tc有助于标准化输出大小写并方便未来必要时更改译名。此类词条的例子有 NPC、bug 等。
  • 避免单次给出太长的输入,可以恰当地拆成若干个{{Tc}}调用。同样,{{Tc}}在翻译长输入时开销偏高,且此种情况下并不太容易预测输出结果,反而增加了翻译工作成本。

和翻译结果相关的更多细节注意事项,请参考下文。

内部流程解析[编辑源代码]

了解自动翻译的内部流程有助于了解 {{tc}} 的能力范围,并正确预计其输出结果。

{{tc}} 的工作基于三类处理:

  1. 直接匹配:按照主词表进行直接精确匹配(不区分大小写)。这是最基础的翻译实现部分。
  2. 基本处理':尝试对输入进行冠词和复数的判定,脱冠词并转单数,处理完的结果再尝试匹配。基本处理负责解决常见的词形变体。
  3. 扩展处理':包括前缀、后缀、尾部数字编号三种,扩展处理负责将输入分解成若干片段并对每一片段进行单独翻译处理,如果所有片段全部成功则合并后输出结果,若有任何片段不成功则视为翻译失败。

处理的的大致流程规则如下,一旦某一步成功就中止后继处理,返回得到的结果:

  1. 如果指定了 pagename=yes,查询标题消冲突数据表。
  2. 进行标准翻译处理,标准翻译处理按如下流程进行
    1. 尝试进行直接匹配(大小写不敏感)。
    2. 尝试通过基本处理解除常见变体并尝试匹配。按如下顺序进行,每一步处理完成后立刻将得到的处理结果尝试进行直接匹配:
      1. 脱冠词,去掉前面的the/a/an。
      2. 将上一步的结果叠加进行s/es/ies解复数处理。
      3. 尝试将未脱冠词的输入进行 s/es/ies/ves解复数处理。
      4. 尝试 脱冠词+解ves 处理
    3. 尝试进行扩展处理,按如下顺序进行:
      1. 尾部数字编号判定,将输入拆分成 主体+尾部数字编号,主体递归套用标准翻译处理。注意如果成功,此处输出结果中中文和数字之间是没有空格的。
      2. 进行后缀/前缀判定,将输入拆分成 主体+后缀 或 前缀+主体 的两个片段,并对两个片段递归分别套用标准翻译处理进行尝试。
  3. 全部尝试失败,返回输入原文。

其中,基本处理内:

  • 第一轮(脱冠词后的)解复数处理只尝试 s、es、ies 三种后缀,并按此顺序进行尝试,一旦成功即中止后继。例如,输入为 Pixies, 则首先尝试的是 Pixie,并在这里成功匹配,不会再继续尝试 Pixi 和 Pixy。 如果输入为the taxies,在这一轮会依次尝试(注意会被脱冠词)taxie、taxi、taxy。
  • 第二轮(未脱冠词的)解复数处理会处理 ves、ies、es、s 四种后缀,并且 ves 后缀会尝试 f 和 fe 两种解法,均按列出顺序进行,与第一轮正好相反。因此,假设输入为 the baxies,在第二轮会依次尝试匹配 the baxy、the baxi、the baxie;如果输入为 kaves,会依次尝试 kaf、kafe、kav、kave。
  • 前两轮尝试都不成功且 -ves 结尾的输入会额外尝试脱冠词+解ves复数处理(按-f,-fe的顺序)。因此,假设基本处理的输入为 the kaves,那么完整的匹配尝试顺序是: kave、kav、the kaf、the kafe、the kav、the kave、kaf、kafe(共8个候选)。

扩展处理内:

  • 前缀:
    • 前缀的拆分标准为脱冠词后的第一个单词。
    • 前缀的匹配顺序为:优先在前缀表内进行匹配(无变体处理、不区分大小写),如果未找到结果则尝试对前缀进行标准翻译处理
  • 后缀:
    • 后缀的拆分标准为最后一个单词(要非数字),或最后带括号的内容。 例如,Buggy body 2 会视为后缀拆分失败(最后一个单词是2,不合格);big buggy body 则会被拆分为 big buggy + 后缀body;enemy (buddy body)则拆分为enemy + 带括号后缀(buddy body)。
    • 标准后缀的匹配方式类似于前缀,优先查后缀表,不成功则尝试对后缀进行标准翻译处理
    • 带括号后缀的匹配处理方式为:首先按带括号完整版本查后缀表,不成功则脱掉括号后再查后缀表,还不成功则对脱掉括号的后缀进行标准翻译处理。如果成功有结果,结果会视情况加回括号,并且输出括号会转为中文括号,并去掉括号前的空格(如果有)。例如,block (item),输出结果为: 物块(物品)
  • 前缀/后缀的分析优先级为:
    • 第一次扩展处理时优先匹配后缀。例如, Basic Block 会被视为 主体Basic + 后缀Block 而非 前缀Basic + 主体Block。
    • 递归处理时,每个片段内,则视上一层切分匹配成功的是否是前缀拆分或后缀拆分,如果是,则优先选择使用另一个,即整体上优先尝试让前后缀交替拆分,优先尝试匹配成 前缀 + 主体 + 后缀 的模式。例如,basic surface block,在第一轮拆分会优先匹配后缀变成 basic surface + 后缀block,在第二轮对 basic surface进行处理时就会优先考虑前缀,优先尝试按 前缀basic + 主体surface 的方式拆分。
  • 尾部数字编号:
    • 要求最后一个单词为纯阿拉伯数字,例如 238,诸如 II 之类的不视为数字编号。
    • 数字编号拆分成功后的主体部分下一轮处理中如果涉及前后缀拆分,总是为后缀优先。注意,因为数字编号的匹配优先于前后缀,因此在多重扩展处理中,如果数字编号拆分不是出现在第一轮,那么其上一轮匹配必然是后缀而非前缀。
    • 数字编号输出时前后会各带有一个空格。 例如 block 2 item 的翻译结果是 物块 2 物品。

整体叠加后,需要注意:

  • 扩展处理之间能不断叠加,而两轮基本处理之间必须要隔着一轮扩展处理。因此,双重冠词时无法处理的。例如, The The block 是无法解析的(每一轮基本处理只能处理一个冠词)。在“实际”的使用中此条并不会造成问题。
  • 由于脱冠词处理先于复数处理进行,个别情况下,词条可能在经过 脱冠词+扩展处理 之后命中匹配,但结果却并非预期。例如,The Corruptions(The Corruption的复数)预期结果为“腐化之地”,但依据处理流程会被先脱冠词再处理复数而以Corruption进行匹配,得到“腐化”。但此类情况总是可以通过将词条和正确翻译直接加入标准翻译词库来解决。
  • 更复杂的多重处理叠加时会有更多类似的可能情况,但都可以通过直接加入主词库的方式来解决问题。


各种例子:

输入 输出 预期 备注
{{Tc|Copper Shortsword}} 铜短剑 铜短剑 直接精确匹配
{{Tc|a Book}} 脱冠词 the
{{Tc|the Book}} 脱冠词 a
{{Tc|Books}} 复数处理 -s
{{Tc|Thorny Bushes}} 多刺灌木 多刺灌木 复数处理 -es
{{Tc|Butterflies}} 蝴蝶 蝴蝶 复数处理 -ies
{{Tc|Waterleaves}} 幌菊 幌菊 复数处理 -ves
{{Tc|the Butterflies}} 蝴蝶 蝴蝶 脱冠词+自动复数处理双重生效
{{Tc|Buggy Body}} 蚜虫身体 蚜虫身体 后缀,自动拆分为主词条 Buggy 与后缀 Body 分别处理
{{Tc| Surface (Biome) }} 地表(生物群落) 地表(生物群落) 后缀处理,拆分为主词条 Surface 与后缀 (Biome) 分别套用翻译,后缀来自后缀表。
{{Tc| Snow (Space) }} 雪原(太空) 雪原(太空) 后缀处理,拆分为主词条 Snow 与后缀 (Space) 分别处理,后缀来自主词表。
{{Tc|Buggy 2}} 蚜虫 2 蚜虫 2 数字编号,自动拆分为主词条 Buggy 与 数字编号 2 分别处理
{{Tc|Phantasm Dragon Body 4 }} 幻影弓龙身体 4 幻影弓龙身体 4 数字编号+后缀, 自动拆分为主词条 Phantasm Dragon 与后缀 Body 加上数字编号 4 分别处理
{{Tc|Basic Weapon}} 基本武器 基本武器 前缀,拆分为前缀 basic 和主词条 Weapon 分别判定处理。
{{Tc|Basic Buggy Body}} 基本蚜虫身体 基本蚜虫身体 前缀+后缀同时存在
{{Tc|Basic Buggies}} 基本蚜虫 基本蚜虫 前缀+复数
{{Tc|Surface Block}} 地表块 地表块 前后缀冲突,优先匹配后缀。
{{Tc|Surface Block Block}} 地表物块块 地表物块块 两轮前后缀分析,自动互相交替,变为 前缀 + 主体 + 后缀
{{Tc|Shit Block}} Shit Block Shit Block 前/后缀拆分之后任何一部分匹配不成功即整体视为不成功
{{Tc|the yellow woods blocks 3}} 黄木材块 3 黄木材块 3 多重叠加:冠词+前缀+主体带复数+后缀
{{Tc|The Corruptions}} 腐化 腐化 先脱冠词再判定复数。
{{tc|a basic the melee regular pink slimes normal Baby Face Monster 4 surface biomes weapons set material 2 event 7 accessory 2763}} 基本近战常规粉史莱姆普通脸怪宝宝 4 地表生物群落武器套装材料 2 事件 7 配饰 2763 基本近战常规粉史莱姆普通脸怪宝宝 4 地表生物群落武器套装材料 2 事件 7 配饰 2763 毫无实用性的超级复杂多重解析。

临时词条[编辑源代码]

有时在单个页面上有一些词汇反复出现,但因为种种原因主词条库不包含此词汇。此时可以用在页面上定义临时词条:

{{Tc/define|英文原文(大小写不敏感)|中文翻译(大小写敏感)}}

定义之后即可在tc中正常使用此词条。

注意:

  • 英文原文参数无视大小写。中文参数则会按输入的样子原样呈现。
  • 临时词条定义如果和主数据库重复,则不会覆盖主数据库定义。这是为了保持主数据库翻译的权威性,也便于后继扩充升级。
    • 临时词条如果互相重复,也遵循不覆盖原则,先定义的有效。
  • 临时词条定义对基本处理有效,但对扩展处理无效
  • 临时词条定义仅限于单个页面内部有效,自定义之处开始,到页面结束。所谓“单个页面”指的是“根页面”,即访问的url所对应的那个页面。如果在一个模板中定义了临时词条,那么调用此模板的页面中在模板之后此临时词条依然有效。

例,以下代码序列及结果:

临时词条定义
输入(按顺序) 输出(按顺序) 备注
{{Tc|keke}} keke 此词条此时尚无无定义
{{Tc/define|keke|蛤蛤}} 定义临时词条,无可见输出
{{Tc|keke}} 蛤蛤 定义后此词条即可使用
{{Tc|the kekes}} 蛤蛤 基本处理有效
{{Tc|the keke block}} the keke block 扩展处理无效
{{Tc/define|keke|克克}} 重复定义,也无可见输出
{{Tc|keke}} 蛤蛤 重复定义无效
{{Tc|Book}} 主词条数据库有定义
{{Tc/define|book|书本}} 重复定义,无可见输出
{{Tc|Book}} 重复定义无效

翻译相关词表维护[编辑源代码]

  • 主词表: Template:Tc/db 和 Module:Tc/db 中各有一份,需要同步维护。这种冗余是为了Tc的高性能而不得不付出的代价。
  • 页面冲突解决表: Template:Tc/db 中。
  • 前缀表: Module:Tc/db 中。
  • 后缀表: Module:Tc/db 中。

注意:

  • 所有数据表的英文输入部分信息均必须为全小写,混杂大写的条目无效。
  • 条目重复定义不会出错(但会增加不必要的负载)。在同一表内部重复定义,后定义的覆盖先定义的。(注意这和临时词条定义的覆盖顺序不同)
  • 空格的处理依赖于词表内的定义,因此在词表中在中文翻译的前后要视情况加上空格,{{tc}}才能知道词条和其他前后缀组合时是否需要加空格。
Promotional Content