术语表编写指南
感谢您为 AO3 Translator 编写术语表!
一份精心编撰的术语表可以极大地提升 AI 翻译的准确性和一致性。为了让插件能够正确解析和使用您创建的术语表,请遵循以下格式和编写规范。
一、文件基本格式
- 文件类型:必须是纯文本文件,推荐使用
.txt后缀。 - 文件编码:必须使用
UTF-8编码。 - 结构:一个在线术语表文件由多个主要部分组成,包括:
元数据、词条、通用词条、禁翻词条和正则表达式。 - 注释:以
//开头的行将被插件忽略,可用于添加说明、整理分类词条等。
二、元数据区
这部分位于文件开头,用于描述术语表的基本信息。
格式:
键:值必填字段
版本号:必须提供,用于版本控制。当您更新词条后,请务必提升您所创建的术语表的版本号(例如从1.0.0改为1.0.1),这样插件才能检测到该在线术语表的更新。维护者:术语表的创建者或维护者的名称。
可选字段
更新时间:最后一次修改此术语表的日期。
示例
版本号:1.0.1 维护者:V-Lipset 更新时间:2025-09-22
三、翻译词条区
这是用于定义翻译规则的核心部分,分为两个区域以适应不同需求。
1. 词条区
标记:使用
词条或TERMS作为区域标题。格式:
原文:译文规则:区分大小写。插件只会匹配与原文大小写完全一致的词。例如,定义
Hypatia不会匹配到hypatia。用途:适合用于定义人名、地名、品牌、专有缩写等大小写具有特定含义的词。
示例:
Hypatia:伊帕希娅词条 Hypatia:伊帕希娅
2. 通用词条区
标记:使用
通用词条或GENERAL_TERMS作为区域标题。格式:
原文:译文规则:不区分大小写。插件会匹配该词的所有大小写形式。例如,定义
Hypercube会同时匹配Hypercube、hypercube、HyPerCube、HYPERCUBE……用途:适合用于定义通用词汇或概念。
示例:
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。- 通过这一条规则,插件就能准确匹配
Wachmann和Wachmänner,并将它们统一翻译为守卫。
正则表达式 \bWachm(?:ann|änner)\b: 守卫注意:正则表达式功能非常强大,但也极具风险。一个编写不当的表达式可能会严重影响浏览器性能,甚至导致页面卡死。请仅在您完全理解正则表达式并经过充分测试后才使用此功能。
六、执行策略
1. DOM 匹配
- HTML 标签穿透
- 说明:可进行跨 HTML 标签匹配。
- 示例
- 定义词条:
Elvira Stewart = 艾尔维拉·斯图尔特 - 网页源码:
Elvira <em>Stewart</em> - 处理结果:
艾尔维拉·<em>斯图尔特</em>
- 定义词条:
- 复数自动处理
- 说明:自动匹配词条的常见复数形式(
-s、-es、-ies)。 - 示例
- 定义词条:
Hypercube:异方晶 - 匹配结果:
Hypercube、Hypercubes
- 定义词条:
- 说明:自动匹配词条的常见复数形式(
- 分隔符灵活处理
- 说明:
空格和-被视为等价的分隔符。 - 示例
- 定义词条:
Dis City:狄斯城/Dis-City:狄斯城 - 匹配结果:
Dis City、Dis-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. 优先级顺序
策略层
- 字面量匹配(正则表达式、带引号的词条) > DOM 匹配(不带引号的词条)
- 注:插件会先运行所有正则/字面量规则,然后再运行 DOM 规则。
来源层
- 本地术语表 > 在线术语表
- 注:在同一策略层内,插件会优先使用本地术语表中设置的规则。
列表层
- 列表顶部 > 列表底部
- 注 1:在设置面板中,可长按拖拽某个术语表项,调整其在列表中的顺序。
- 注 2:在同一来源层内,术语表的位置越靠近列表顶部,优先级越高。
类型层
- 禁翻词条 > 翻译词条
- 注:在同一列表层内,如果一个词既被定义为禁翻词条又被定义为翻译词条,禁翻规则生效。
特异性层
- 长词 > 短词
- 注:在同一类型层内,插件会优先匹配更长的词条。
敏感性层
- 区分大小写 > 不区分大小写
- 注:在同一特异性层内,区分大小写的词条优先级高于不区分大小写的词条。
3. 版本管理
每次更新在线术语表后,请务必提升 版本号 字段。这是插件判断是否需要下载更新此术语表的关键。