0.1.1 • Published 3 years ago
@gytx/gcc-translation v0.1.1
gcc-translation
试图将 g++ 的编译诊断信息翻译为中文。
适用范围
仅考虑 g++ 在编译 C++ 源文件时的输出。
目前支持的版本如下:未来可能增加新版本支持,但也可能不增加。
- GCC 11.2.0
- GCC 12.1.0
效果
原文

翻译后

翻译过程介绍
基于 gcc 的 NLS (本地语言支持),首先获取该版本的 zh_CN.po。此文件内存放了数万个可以被本地化的字符串,并提供了其中一部分的中文翻译。通过 tools 下的乱七八糟的脚本将这数万个字符串整理,筛选可能会出现在 C++ 编译诊断信息的字符串,一共约四千余条。将这四千余条英文手动翻译为中文。对于使用了格式化字符串的,使用正则表达式代替。此为 src 下的大头 JSON 来源。
对于未被 NLS 处理的字符串,则无法在 zh_CN.po 中找到。此时需要手动查看 gcc 源码,并将其逐一翻译为中文,存放到 src 下。
翻译完成后,将这四千条“正则表达式样式”-“对应中文”按字符串长度从长到短逐一替换诊断信息中的英文。
为了简便起见,形如 'typedef-name' {aka 'original-name'} 的格式 %qT 被简化为 '(.+?)'。这会导致带有 aka 的诊断信息无法被合理替换,因此需要在替换前后对其做处理,细节参见 index.mjs。
术语表(待补充)
部分翻译为了防止混淆,夹带了私货:
| 英文 | 通常翻译 | 选用翻译 |
|---|---|---|
| attribute | 属性 | 特性 |
| catch | 捕获 | 捕捉 |
| const | 常(量) | 只读 |
| deallocate | 解分配 | 释放 |
| dereference | 提领,逆向引用 | 解地址 |
| promise | 承诺 | 期约 |
| trait | 特性 | 特征 |
大量术语采取了和 CppReference 相同的翻译:
| 英文 | 翻译 |
|---|---|
| access | (可)访问(性) |
| aggregate | 聚合类型,聚合体 |
| argument | 实参 |
| binary | 二元 |
| brace | 花括号 |
| copy | 复制 |
| defaulted | 预置(的) |
| exception specification | 异常说明 |
| explicit | 显式的 |
| ...-id | ...标识 |
| identifier | 标识符 |
| initializer | 初始化器 |
| linkage | 连接 |
| literal | 字面类型,字面量 |
| mutable | 可变的 |
| specifier | 说明符 |
| overload resolution | 重载决议 |
| override | 覆盖 |
| parameter | 形参 |
| pointer-to-member | 成员指针 |
| qualifier | 限定符 |
| unary | 一元 |
| union | 联合体 |
| volatile | 易变的 |