#mdbook #translation #translated #line #checker #original #check

app mdbook-transcheck

翻译版 mdbook 的检查器

14 个版本

0.2.8 2021年11月4日
0.2.7 2021年11月4日
0.2.5 2020年8月26日
0.2.1 2020年4月2日
0.1.4 2020年3月23日

命令行工具 中排名第 1159

每月下载量 44

MIT 许可证

61KB
1.5K SLoC

mdbook-transcheck

翻译版 mdbook 的检查器

Actions Status Crates.io

安装

$ cargo install mdbook-transcheck

用法

检查

以下命令检查 srctgt 是否同步。

$ mdbook-transcheck src tgt

src 是原始 mdbook 的源目录。 tgt 是翻译版 mdbook 的源目录。

修复

以下命令将 srctgt 之间的差异应用到 tgt

$ mdbook-transcheck --fix src tgt

代码检查

以下命令检查翻译文本是否满足代码检查规则。

$ mdbook-transcheck --lint src tgt

配置

配置文件是 transcheck.toml,位于仓库根目录。

excludes = ["img/"]
[matcher]
enable_code_comment_tweak = true
code_comment_header = "# "
[linter]
enable_emphasis_check = true
enable_half_paren_check = true
enable_full_paren_check = true

根部分

默认值 描述
excludes 字符串数组 [] 排除从源目录开始的相对路径

[matcher] 部分

默认值 描述
enable_code_comment_tweak 是,否 匹配不带 code_comment_header 的代码注释
code_comment_header 字符串 "# "
keep_markdown_comment 是,否 保留原始中的 Markdown 注释
markdown_comment_begin 字符串 (((
markdown_comment_end 字符串 )))
similar_threshold 浮点数 0.5 如果原始和翻译行匹配的比率超过 similar_threshold,则该行被判定为 修改

[linter] 部分

默认值 描述
enable_emphasis_check 是,否 检查强调(*..*/**..**)前后是否有空格。
enable_half_paren_check 是,否 检查半角括号(())是否只包含 ascii 字符。
enable_full_paren_check 是,否 检查全角括号(())是否包含非 ascii 字符。

示例

$ mdbook-transcheck ./testcase/original ./testcase/translated

Error: target path is not found
    source path: ./testcase/original/missing_file.md
    target path: ./testcase/translated/missing_file.md


Error: source line has been modified
 source --> ./testcase/original/mismatch_lines.md:5
  |
5 | This is an orange.
  |            ^^ ^^
  |

 target --> ./testcase/translated/mismatch_lines.md:11
   |
11 | This is an apple.
   |             ^^^
   |


Error: lines has been inserted to the source file
 source --> ./testcase/original/mismatch_lines.md:2
  |
2 | Orange
  |
  = hint: The lines should be inserted at ./testcase/translated/mismatch_lines.md:2


Error: lines has been removed from the source file
 target --> ./testcase/translated/mismatch_lines.md:4
  |
4 | Lemon
  |

Markdown 规则

翻译的 Markdown 应遵循一些规则。

  • 保留原始行
  • 使用 <!----> 注释掉原始行

简单示例

  • 原始
Apple
Orange
Peach
  • 翻译
<!--
Apple
Orange
Peach
-->
りんご
オレンジ
桃

以下是不正确的,因为 <!-- ApplePeach --> 与原始行不匹配。

<!-- Apple
Orange
Peach -->
りんご
オレンジ
桃

Markdown 注释

如果原始文本有 Markdown 注释,应在翻译文本中删除注释,因为嵌套注释不受支持。默认情况下忽略删除注释的差异。

  • 原始
Apple <!-- ignore -->
Or<!-- ignore -->ange
<!-- ignore -->Peach
  • 翻译
<!--
Apple 
Orange
Peach
-->
りんご
オレンジ
桃

如果您想保留注释,可以使用 keep_markdown_commentmarkdown_comment_beginmarkdown_comment_end,如下所示:

keep_markdown_comment = true
markdown_comment_begin = "((("
markdown_comment_end = ")))"
  • 原始
Apple <!-- ignore -->
Or<!-- ignore -->ange
<!-- ignore -->Peach
  • 翻译
<!--
Apple ((( ignore )))
Or((( ignore )))ange
((( ignore )))Peach
-->
りんご
オレンジ
桃

代码块

  • 原始
```rust
// comment
let a = b; // comment
```
  • 翻译
```rust
// comment
// コメント
let a = b; // comment
           // コメント
```

您可以使用 # 隐藏原始注释。应将 enable_code_comment_tweak 设置为 true,并将 code_comment_header 设置为 #

```rust
# // comment
// コメント
let a = b; // comment
           // コメント
```

您可以使用 # // 隐藏原始代码和注释。应将 enable_code_comment_tweak 设置为 true,并将 code_comment_header 设置为 # //

```rust
# // // comment
// コメント
# // let a = b; // comment
let a = b; // コメント
```

依赖项

约 5-14MB
约 159K SLoC