@ diplodoc/ 翻译
区域
导 言
嘿,这里
你厌倦了复制并粘贴你的减记内容到翻译工具,看到减记语法而不是可转换文本和相撞吗?
别再说了
与 @diplodoc/translation,您可以为 CAT 工具生成骨架/ XLIFF 并作曲向后翻译 Markdown .
项目概况
这个库覆盖了两个API接口:取出并作曲
从 markdown 文件 QQ 中提取文本并生成一个骨架/ XLF 文件 。 🧑💻
用 XLF 文件的翻译来编译摘录的文本来创建已翻译的标记下文件. 🌎📄💬
说再见手动翻译工作 并精简工作流程 @diplodoc/translation。 。 。 .
目的和范围
抓住你的帽子,伙计们! 这个图书馆正在解决一些严重的 减记翻译问题!
🚫告别由天真的方法导致的翻译不必要的沉重负担,这些方法包括将减分语法构造入文本段.
不要让我们开始 "collisions" -yikes! 但不要担心,这个库已经得到了你的支持 一个可靠的解决方案 从标记下提取文本内容 没有那些pesky相撞.
怎么会? 当然,通过剖析和渲染xlf和骨架 所以,坐下,放松, 让这个图书馆 处理所有你的减分翻译需要.
说再见吧,那些讨厌的话题 和你好,高效和准确的翻译与 @diplodoc/translation。 。 。 .
开始
* 安装
npm install @diplodoc/translation
• API
翻译:
此函数从给定的标记下字符串中取出骨架和 XLF 字符串, 用于 QQ 计算机辅助翻译工具 。 QQ
function extract(parameters: ExtractParameters): ExtractOutput;
参数 Object
| 名称 | 类型 | 说明 |
|---|---|---|
markdown | string | 从中提取文本内容的标记下字符串 . |
source | LanguageLocale | 源语言与地语. |
target | LanguageLocale | 目标语言与地语. |
skeletonPath | string | 放置骨架文件的路径 . |
markdownPath | string | 标记下文件读取的路径 . |
filter | boolean | 没有过滤可转换文件 . |
compact | boolean | 压缩 XLIFF 无 <g> 包装 代码块是精确处理的,而不是整体处理. 标出一个整句会去到骨架上,标出它只停留在单元中开始或结束;一个句子可以从内线代码开始. |
code | string | 如何处理有栅栏的代码,见下文. |
unitLocalIds | boolean | 重新启动占位符 IDs (g-N编号 :x-N对于每个单位,而不是通过文档编号,所以一个单位的文本并不取决于上方的标记. 当单位文本作为翻译缓存密钥时使用. 默认关闭. |
QQ 代码块
这个 code 参数选择一个有栅栏的代码块的可转换度 :
| 模式 | 翻译的内容 |
|---|---|
no | 没什么,块是复制的. |
all | 整个街区 默认无 compact。 。 。 . |
precise | <placeholders> 和评论 bash编号 :shell编号 :sh 块。 默认为 compact。 。 。 . |
adaptive | 所有东西 precise 加上其他语文的行评论(#, (中文(简体) ), //, (中文(简体) ), --和标签 mermaid 图表。 注释出代码,工具指令和分隔符保持不变. |
单个块用其信息字符串来覆盖模式 : ```yaml translate=adaptive。 。 。 .
QQ 类型
语言本地化 Object
| 名称 | 类型 | 说明 |
|---|---|---|
language | string | 如ISO 639-1所描述的语言代码. |
locale | string | 如ISO 3166-所描述的alpha-2格式的语言编码 1个 |
摘录产出 Object
| 名称 | 类型 | 说明 |
|---|---|---|
skeleton | string | 提取出骨架串. |
xlf | string | 提取出 XLF 字符串 . |
warnings | string[] | 部分分解没有被翻译, 提取失败, 每行一行 。 例如,a page-constructor 块中无法解析YAML. |
编曲 编曲
此函数由 QQ 从给定的 QQ 骨架和 XLF 翻译出 QQ 标记下.
function compose(parameters: ComposeParameters): string
参数 Object
| 名称 | 类型 | 说明 |
|---|---|---|
skeleton | string | 用散列来代替可变文本的骨架 |
xlf | string | XLF 有翻译文本 |
使用量
摘录
从下标记提取骨架和 xlf
示例
import {extract} from '@diplodoc/translation';
const markdown = `# Heading 1
Paragraph
- First list item
- Second list item
Heading 2
-----------
Paragraph with **bold text** and *italic*
> text inside of the blockquote
1. First ordered list item
2. Second ordered list item
[Link text](files/file.md "Link Description")

`;
const params = {
markdown,
source: {language: 'en', locale: 'US' as const},
target: {language: 'ru', locale: 'RU' as const},
skeletonPath: 'path/where/you/will/put/generated/skeleton.skl.md',
markdownPath: 'path/to/file/where/markdown/string/came/from.md',
}
const {skeleton, xlf} = extract(params);
console.log(skeleton);
console.log(xlf);
输出


编曲
将骨架和 xlf 编成已翻译为下标记
示例
import {compose} from '@diplodoc/translation';
const skeleton = `%%%1%%%
%%%2%%%
- %%%3%%%
- %%%4%%%
%%%5%%%
-----------
%%%6%%%**%%%7%%%**%%%8%%%*%%%9%%%*
> %%%10%%%
1. %%%11%%%
2. %%%12%%%
[%%%13%%%](files/file.md "%%%14%%%")

`
const xlf = `<?xml version="1.0" encoding="UTF-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file original="text.md" source-language="ru-RU" target-language="en-US" datatype="markdown">
<header>
<skeleton>
<external-file href="text.skl.md"></external-file>
</skeleton>
</header>
<body>
<trans-unit id="1">
<source>Heading 1</source>
<target>Заголовок 1</target>
</trans-unit>
<trans-unit id="2">
<source>Paragraph</source>
<target>Параграф</target>
</trans-unit>
<trans-unit id="3">
<source>First list item</source>
<target>Первый элемент списка</target>
</trans-unit>
<trans-unit id="4">
<source>Second list item</source>
<target>Второй элемент списка</target>
</trans-unit>
<trans-unit id="5">
<source>Heading 2</source>
<target>Заголовок 2</target>
</trans-unit>
<trans-unit id="6">
<source>Paragraph with </source>
<target>Параграф содержащий </target>
</trans-unit>
<trans-unit id="7">
<source>bold text</source>
<target>жирный текст</target>
</trans-unit>
<trans-unit id="8">
<source> and </source>
<target> и </target>
</trans-unit>
<trans-unit id="9">
<source>italics</source>
<target>курсив</target>
</trans-unit>
<trans-unit id="10">
<source>text inside of the blockquote</source>
<target>текст внутри цитаты</target>
</trans-unit>
<trans-unit id="11">
<source>First ordered list item</source>
<target>Первый элемент нумерованного списка</target>
</trans-unit>
<trans-unit id="12">
<source>Second ordered list item</source>
<target>Второй элемент нумерованного списка</target>
</trans-unit>
<trans-unit id="13">
<source>Link text</source>
<target>Текст ссылки</target>
</trans-unit>
<trans-unit id="14">
<source>Link Description</source>
<target>Описание ссылки</target>
</trans-unit>
<trans-unit id="15">
<source>Alternative image text</source>
<target>Альтернативный текст картинки</target>
</trans-unit>
<trans-unit id="16">
<source>Image title</source>
<target>Титул картинки</target>
</trans-unit>
</body>
</file>
</xliff>
`;
const markdown = compose({skeleton, xlf});
console.log(markdown);
输出
