术语表编写指南

感谢您为 AO3 Translator 编写术语表!
一份精心编撰的术语表可以极大地提升 AI 翻译的准确性和一致性。为了让插件能够正确解析和使用您创建的术语表,请遵循以下格式和编写规范。

一、文件基本格式

  1. 文件类型:必须是纯文本文件,推荐使用 .txt 后缀。
  2. 文件编码:必须使用 UTF-8 编码。
  3. 结构:一个在线术语表文件由多个主要部分组成,包括:元数据词条通用词条禁翻词条正则表达式
  4. 注释:以 // 开头的行将被插件忽略,可用于添加说明、整理分类词条等。

二、元数据区

这部分位于文件开头,用于描述术语表的基本信息。

  • 格式:键:值

  • 必填字段

    • 版本号必须提供,用于版本控制。当您更新词条后,请务必提升您所创建的术语表的版本号(例如从 1.0.0 改为 1.0.1),这样插件才能检测到该在线术语表的更新。
    • 维护者:术语表的创建者或维护者的名称。
  • 可选字段

    • 更新时间:最后一次修改此术语表的日期。
  • 示例

    版本号:1.0.1
    维护者:V-Lipset
    更新时间:2025-09-22

三、翻译词条区

这是用于定义翻译规则的核心部分,分为两个区域以适应不同需求。

1. 词条区

  • 标记:使用 词条TERMS 作为区域标题。

  • 格式:原文:译文

  • 规则:区分大小写。插件只会匹配与原文大小写完全一致的词。例如,定义 Hypatia 不会匹配到 hypatia

  • 用途:适合用于定义人名、地名、品牌、专有缩写等大小写具有特定含义的词。

  • 示例:Hypatia:伊帕希娅

    词条
    Hypatia:伊帕希娅

2. 通用词条区

  • 标记:使用 通用词条GENERAL_TERMS 作为区域标题。

  • 格式:原文:译文

  • 规则:不区分大小写。插件会匹配该词的所有大小写形式。例如,定义 Hypercube 会同时匹配 HypercubehypercubeHyPerCubeHYPERCUBE……

  • 用途:适合用于定义通用词汇或概念。

  • 示例:Hypercube:异方晶

    通用词条
    Hypercube:异方晶

3. 多词条关联定义

此定义方式可以在 词条通用词条 两个区域内使用,其大小写敏感性取决于它所在的区域。

  • 格式

    • 原文部分1 原文部分2 = 译文部分1 译文部分2
    • 原文部分1 原文部分2 = 译文部分1·译文部分2
  • 规则:使用 = 作为分隔符;原文和译文的部分数量必须完全一致,译文每部分之间使用 空格 或者 · 隔开。

  • 处理:插件会自动识别所有词序组合,统一翻译为指定译文,并分别翻译其组成部分。

  • 示例 1

    • 词条 区定义:
      • Wakaba Mutsumi = 若叶 睦
    • 插件会自动生成以下区分大小写的规则:
      • Wakaba Mutsumi若叶睦
      • Mutsumi Wakaba若叶睦
      • Wakaba若叶
      • Mutsumi
  • 示例 2

    • 词条 区定义:
      • Elvira Stewart = 艾尔维拉·斯图尔特
    • 插件会自动生成以下区分大小写的规则:
      • Elvira Stewart艾尔维拉·斯图尔特
      • Stewart Elvira艾尔维拉·斯图尔特
      • Elvira艾尔维拉
      • Stewart斯图尔特
    词条
    Wakaba Mutsumi = 若叶 睦
    Elvira Stewart = 艾尔维拉·斯图尔特

四、禁翻词条区

这是一个独立的区域,用于列出您希望 AI 在翻译过程中保持原文、不翻译的词汇。

  • 标记:使用 禁翻词条FORBIDDEN_TERMS 作为区域标题。

  • 格式:每行一个词条。

  • 规则:区分大小写,以提供最精确的保护。

  • 示例

    禁翻词条
    EDGE
    HUSH

五、正则表达式区

在此区域下,可使用正则表达式定义复杂的查找和替换规则,为处理特定模式的文本提供了极大的灵活性。

  • 标记:使用 正则表达式REGEX_TERMS 作为区域标题。

  • 格式:正则表达式: 替换后的文本

  • 规则:插件将直接使用您提供的正则表达式进行全局匹配和替换。

    • 请使用 JavaScript 正则语法。
    • 插件会自动添加全局匹配标志 g
  • 用途:处理复杂的词形变化、具有特定前缀/后缀的词,或进行模糊匹配。

  • 示例:\bWachm(?:ann|änner)\b: 守卫

    • \b:单词边界。
    • Wachm:匹配固定的部分。
    • (?:ann|änner):非捕获组,包含 2 个选项: annänner
    • 通过这一条规则,插件就能准确匹配 WachmannWachmänner,并将它们统一翻译为守卫
    正则表达式
    \bWachm(?:ann|änner)\b: 守卫
  • 注意:正则表达式功能非常强大,但也极具风险。一个编写不当的表达式可能会严重影响浏览器性能,甚至导致页面卡死。请仅在您完全理解正则表达式并经过充分测试后才使用此功能。

六、执行策略

1. DOM 匹配

  • HTML 标签穿透
    • 说明:可进行跨 HTML 标签匹配。
    • 示例
      • 定义词条:Elvira Stewart = 艾尔维拉·斯图尔特
      • 网页源码:Elvira <em>Stewart</em>
      • 处理结果:艾尔维拉·<em>斯图尔特</em>
  • 复数自动处理
    • 说明:自动匹配词条的常见复数形式(-s-es-ies)。
    • 示例
      • 定义词条:Hypercube:异方晶
      • 匹配结果:HypercubeHypercubes
  • 分隔符灵活处理
    • 说明:空格- 被视为等价的分隔符。
    • 示例
      • 定义词条:Dis City:狄斯城/Dis-City:狄斯城
      • 匹配结果:Dis CityDis-City

2. 字面量匹配

正则表达式区域外,如果原文词条中包含标点符号,且希望进行精准匹配,请用引号包裹原文词条,译文词条则不做要求。
精准匹配:不进行 HTML 标签穿透、复数自动处理、分隔符灵活处理。

  • 示例
词条
"-chan": 酱

禁翻词条
"BanG Dream! Girl's Band Party! (Video Game)"

七、完整文件示例

下面是一个完整的 .txt 术语表文件示例,展示了所有编写规则。

版本号:1.0.1
维护者:V-Lipset
更新时间:2025-09-22

// 编写时,请至少包含“词条”、“通用词条”、“禁翻词条”、“正则表达式”这 4 个部分中的 1 个
// 正则表达式区域外,使用引号包裹带有标点符号的原文词条

词条
// 此区域区分大小写,用于翻译人名等专有名词
Wakaba Mutsumi = 若叶 睦
Elvira Stewart = 艾尔维拉·斯图尔特
Hypatia:伊帕希娅
"-chan":酱
Dis City:狄斯城

通用词条
// 此区域不区分大小写,用于翻译通用概念
Hypercube:异方晶
Sinner:禁闭者

禁翻词条
// 此区域区分大小写,用于保持原文
EDGE
HUSH
"BanG Dream! Girl's Band Party! (Video Game)"

正则表达式
// 匹配德语中 "Wachmann" 的单数和复数形式
\bWachm(?:ann|änner)\b: 守卫

八、优先级与最佳实践

1. 功能对比

本地设置与在线术语表在功能上有所不同,以满足从快速配置到精细控制的不同需求。

功能/规则本地设置在线术语表大小写敏感性
词条支持支持区分大小写
通用词条支持支持不区分大小写
禁翻词条支持支持区分大小写
正则表达式不支持支持\
:=规则支持支持\

2. 优先级顺序

  1. 策略层

    • 字面量匹配(正则表达式、带引号的词条) > DOM 匹配(不带引号的词条)
    • 注:插件会先运行所有正则/字面量规则,然后再运行 DOM 规则。
  2. 来源层

    • 本地术语表 > 在线术语表
    • 注:在同一策略层内,插件会优先使用本地术语表中设置的规则。
  3. 列表层

    • 列表顶部 > 列表底部
    • 注 1:在设置面板中,可长按拖拽某个术语表项,调整其在列表中的顺序。
    • 注 2:在同一来源层内,术语表的位置越靠近列表顶部,优先级越高。
  4. 类型层

    • 禁翻词条 > 翻译词条
    • 注:在同一列表层内,如果一个词既被定义为禁翻词条又被定义为翻译词条,禁翻规则生效。
  5. 特异性层

    • 长词 > 短词
    • 注:在同一类型层内,插件会优先匹配更长的词条。
  6. 敏感性层

    • 区分大小写 > 不区分大小写
    • 注:在同一特异性层内,区分大小写的词条优先级高于不区分大小写的词条。

3. 版本管理

每次更新在线术语表后,请务必提升 版本号 字段。这是插件判断是否需要下载更新此术语表的关键。