0.1.1 • Published 2 years ago

@gytx/gcc-translation v0.1.1

Weekly downloads
-
License
CC-BY-NC-ND-4.0
Repository
github
Last release
2 years ago

gcc-translation

试图将 g++ 的编译诊断信息翻译为中文。

适用范围

仅考虑 g++ 在编译 C++ 源文件时的输出。

目前支持的版本如下:未来可能增加新版本支持,但也可能不增加。

  • GCC 11.2.0
  • GCC 12.1.0

效果

原文

npm.io

翻译后

npm.io

翻译过程介绍

基于 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易变的
0.1.1

2 years ago

0.1.0

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago