@diglot/core

中文文档
0.2.2发布于 2026/11/08MITTypeScriptES Module构建来源已验证近 30 天下载 4097

分会场一级,人类第一译作减记文件

中文使用文档
文档目录7 节
  1. 部分
  2. 验证
  3. 应用事件
  4. 变动
  5. 记录
  6. 审查
  7. 配置

@ diglot/ 核心

解析器中性核心 挖掘机:分段模式、占位符形式和散列、翻译验证、应用助手、分段和句子diff、翻译记录、政策和词汇类型。 它没有标分分解依赖; 适配器, 例如 @diglot/comark 财务报告和审定财务报表 @diglot/mdast 为其制作片段。 它导入了无节点内置,因此在浏览器和边缘运行时间以及节点运行.

pnpm add @diglot/core

部分

适配器将每个可转换单元转换为 SegmentDraft 在小 IR 中包含内含内容( R)text, (中文(简体) ), strong 编号 : emphasis 编号 : delete, (中文(简体) ), link 它的开口和收尾 atomic 横跨其减值源. buildSegment 把它变成一个 Segment数字 :

import { buildSegment } from '@diglot/core'

const segment = buildSegment({
  kind: 'paragraph',
  content: [
    { type: 'text', value: 'Nuxt is powered by ' },
    { type: 'link', open: '[', close: '](https://nitro.build)', children: [{ type: 'text', value: 'Nitro' }] },
    { type: 'text', value: '.' },
  ],
  context: { headingTrail: [], containers: [] },
  position: { startLine: 1, endLine: 1, precision: 'node' },
}, { file: 'intro.md', index: 0 })

segment.skeleton // 'Nuxt is powered by {0}Nitro{/0}.'
segment.hash // sha256 of the skeleton, truncated to 16 hex characters

{n} 代表原子跨度(内置代码、图像、组件、HTML、绑定、硬断)和 {n}...{/n} 覆盖链接的文本。 白空间被倒塌了,并逃脱了文本中被标记的下浮点,所以骨架在再包装和被保护的跨度编辑之间是稳定的. 平面片段(道具,前事,标签,代码注释)除了有相同骨架的被标记下片段的散列外,所以每个翻译都根据一套规则进行验证. 一项政策可以在模糊的短弦的散列上加上上下文盐.

prepareSegment 使用相同的参数并返回 { segment, nodes } (或 undefined 没有内容的单位,例如 buildSegment),在其中 nodes[id] 是占位符后面的链接或原子节点 id。适配器使用它从当前源节点重建一个翻译单元.

验证

import { validate } from '@diglot/core'

validate('Nuxt est propulsé par {0}Nitro{/0}.', segment).ok // true
validate('Nuxt [Vite](https://example.com)', segment).errors // link syntax, missing placeholder

译文可包含文本,强调标记和其出处的占位符. 重复的代码占位符是一种警告. 平面片段(道具,前题,标签,代码注释)为单行并可能不添加标记;代码注释可能不包含注释终止符.

validate(translation, segment, { style, maxLength }) 并检查长度:带有本地语言 style.lengthRatio,译出25个或25个以上字符的译名 lengthRatio (在占位器外的特征) 在乐队之外得到一个 length 警告,并且比 maxLength 获得一个 too-long 错误. maxTranslationLength(source) 是极限 editRecord 默认应用:4倍源外加100个字符,最多为8000个.

resolveTranslation(segment, translations) 通过散列查看翻译, 验证并重新输入当前源的保护跨度 。 翻译是骨架或 TranslationRecords,在由散列键键入的地图中,或由查询函数返回. parseSkeleton 将一个经验证的骨架转换成树,用于将翻译应用到AST的适配器. pseudoTranslate 生成任何骨架的有效伪地翻译.

应用事件

适应者 apply 接受函数 onSegment,以 ApplySegmentEvent 按萃取顺序排列的每个段:

  • segment:源部分,及其 hash 财务报告和审定财务报表 words
  • outcome数字 : translated, (中文(简体) ), missing (无翻译), rejected (一) 复议员拒绝翻译或不予审定; errors 或 skipped (无所译而无所译也. 未翻译的部分保留其源文本
  • record: 记录,如果有,则返回检索
  • status:读者所看到的,从 recordStatus。作为裸骨架提供的翻译没有地位
  • target: 对于区块级区段,一个其 setAttribute(name, value) 设置输出节点的属性; null 用于前题、道具、图像选择、代码标签和代码注释

wordsByStatus(events) 每页覆盖按状况分列的分字数. createSegmentEvent 为适配器构建事件.

变动

import { diffSegments, sentenceDiff } from '@diglot/core'

const { unchanged, added, removed, modified } = diffSegments(before, after)
for (const { before, after, similarity, ambiguous } of modified)
  console.log(sentenceDiff(before.skeleton, after.skeleton).changed)

diffSegments 比较一个文件的片段:相等散列不变,其余去除和添加的片段由骨架相似性对接(阈值) 0.5 )查找每个被修改段的前身.

记录

TranslationRecord 将一个源片段翻译成一个地块: hash, (中文(简体) ), source, (中文(简体) ), text, (中文(简体) ), origin (单位:千美元)mt, (中文(简体) ), tm, (中文(简体) ), human, (中文(简体) ), review (单位:千美元)none, (中文(简体) ), edited, (中文(简体) ), verified, (中文(简体) ), rejected, (中文(简体) ), derived (单位:千美元)fresh, (中文(简体) ), carry, (中文(简体) ), update),可选择 prev, (中文(简体) ), salt, (中文(简体) ), mt (模型、即时版本和未经编辑的候选人), by, (中文(简体) ), verifiedBy, (中文(简体) ), rejectedBy 财务报告和审定财务报表 updatedAt。 。 。 .

编审通过设置拒绝翻译 review: 'rejected' 财务报告和审定财务报表 rejectedBy: { by, at } 在记录中。 文本保留给审查者和度量衡,但读者看到源文本,而机器翻译则留下了记录. 编辑( E)review: 'edited',没有 rejectedBy)或用新源散列来取而代之.

  • parseRecord(value) 检查形状并扔出 RecordError。 。 。 . verifiedBy 何时需要 review 实值 verified· ; rejectedBy 何时需要 review 实值 rejected,并只允许
  • createRecord({ segment, text, origin }) 填入身份字段
  • recordStatus(record, segment) 返回读取器所看到的 : untranslated, (中文(简体) ), machine, (中文(简体) ), pending-review, (中文(简体) ), edited, (中文(简体) ), verified 或者说 rejected (一被否决的记录,或无法验证的文本 segment) (中文(简体) ). 由前身携带或更新的记录是: pending-review 直到有人编辑或证实它,无论它是什么 origin
  • editRatio(record) 衡量一名审查员更换多少机器候选人

审查

editRecord, (中文(简体) ), verifyRecord 财务报告和审定财务报表 rejectRecord 使用当前记录(或 undefined返回时 { ok: true, record, warnings } 与下一个记录,或 { ok: false, code, message, errors }数字 :

import { editRecord, verifyRecord } from '@diglot/core'

const result = verifyRecord(record, { segment, by: 'danielroe', expected: textTheReviewerSaw })
if (!result.ok)
  throw new Error(result.message) // result.code: 'stale', 'rejected', ...
  • editRecord(record, { segment, text, by, style, maxLength }) 写作人类编辑( i)origin: 'human', (中文(简体) ), review: 'edited'),保留 mt, (中文(简体) ), prev 财务报告和审定财务报表 derived 并放弃审查邮票。 它拒绝一个无法验证或超过 maxLength (单位:千美元)invalid· ; maxTranslationLength 默认来源, false (无)和(无)文本不变unchanged除非记录被拒绝。 记录 hash 部分不是被拒绝的,因为 mismatch
  • verifyRecord(record, { segment, by }) 套装 review: 'verified' 财务报告和审定财务报表 verifiedBy它拒绝缺失的记录(no-record),被否决者(rejected: 编辑取而代之的拒绝, 文本无法校验 segment (单位:千美元)invalid)和经核实的记录(unchanged(中文(简体) )
  • rejectRecord(record, { by }) 套装 review: 'rejected' 财务报告和审定财务报表 rejectedBy 减少 verifiedBy它拒绝丢失或拒绝的记录

每一个都要 at (违约至今)和 expected,审查者看到的文字:其文字差异的记录被拒绝作为 stale,以及 null 希望没有记录.

配置

snapshotPolicy(policy) 返回策略的可序列部分 policyFingerprint,用于 .diglot/policy.json。 。 。 . restorePolicy(snapshot, { salt, codeLabel }) 重建运行时间的策略 extract 财务报告和审定财务报表 apply; 函数无法序列化, 因此快照列出自定义的 custom,并恢复投出,除非它们被传入,结果具有相同的指纹。 指纹按其结果对一组固定输入进行函数比较.

defineConfig 类型 a diglot.config.ts· ; defaultPolicy 列出默认情况下提取的道具、布局容器和前题路径,以及 starlightPolicy 列出星光站点( 诸如 navigation.title 匹配字词 navigation.title 键或嵌入 navigation: { title },而翻译则写回读取的密钥; Glossary 描述每个本地 glossary.yml 财务报告和审定财务报表 LocaleStyle a 每个地方 style.yml· ; MtConfig 拥有机器翻译设置; LocaleState 描述每个本地 locale.yml 有机器翻译开关 和背后的检讨指标.

版本与发布记录

@diglot/core 共发布 10 个版本,首次发布于 2026/11/03;过去 12 个月发布了 10 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.2latest2026/11/083 天前
0.2.12026/11/066 天前
0.2.02026/11/057 天前
0.1.42026/11/048 天前
0.1.32026/11/038 天前
0.1.22026/11/039 天前

关于 @diglot/core 的常见问题

@diglot/core 是什么?

分会场一级,人类第一译作减记文件

如何安装 @diglot/core?

在项目目录运行 npm install @diglot/core,或使用 pnpm add / yarn add / bun add。

@diglot/core 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@diglot/core 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@diglot/core 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@diglot/core 可以商用吗?

@diglot/core 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@diglot/core 的下载量有多少?

根据 npm 官方下载统计,@diglot/core 在 2026/10/12 – 2026/11/10 这 30 天内被下载 4,097 次,日均约 137 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@diglot/core 还在维护吗?

最新版本 0.2.2 发布于 2026/11/08(3 天前);至今共发布 10 个版本,其中过去 12 个月发布了 10 个;首次发布于 2026/11/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。