内容提要
PostgreSQL简体中文翻译自PG12起停滞七年,覆盖率仅66%,错误频出,如将“bug”误译为“臭虫”。作者于2025年9月重译PG14至19全部28个消息目录、67487条字符串,实现100%覆盖,已被上游合并,将随PG19发布,终结了中文用户被迫使用英文locale的历史。
延伸解读
中文翻译停滞的根源与影响
文章指出,PostgreSQL简体中文翻译自PG12起停滞七年,覆盖率仅66%,远低于80%的发布门槛。这导致用户被迫使用英文locale,因为半汉化的错误信息中英混杂,比纯英文更糟。关键目录如postgres和libpq覆盖率极低,影响核心使用体验。
错译的典型例子与危害
文章列举了多个错译,如“bug”误译为“臭虫”,以及“out of memory”有四种译法,其中“内存溢出”是错误的,可能误导故障排查方向。还有pg_ctl丢失%m、ecpg参数不匹配等严重错误。这些错译会传播到下游,影响广泛。
重译过程与方法论
作者于2025年9月重译PG14至19全部28个消息目录、67487条字符串,实现100%覆盖。方法上先机器翻译草稿,再人工审核,强调术语表和风格指南的重要性,确保跨组件和版本的一致性。最终被上游合并,将随PG19发布。
对国内数据库厂商的启示
作者发现许多基于PostgreSQL的国产数据库直接使用上游有问题的翻译,未做改进。这反映出对基础本地化工作的忽视。文章认为,中文本地化是基本要求,但国内厂商未能解决,最终由个人完成,值得反思。
Q&A
为什么以前用 PostgreSQL 时,老手都建议不要设置中文 locale?
因为 PostgreSQL 的简体中文翻译长期不完整,覆盖率仅 66%,导致错误信息中英文混杂,且存在大量误译,如将 bug 误译为“臭虫”。使用中文 locale 反而会得到更差的使用体验,所以老手建议直接用英文 locale。
PostgreSQL 简体中文翻译之前停滞了多久?覆盖率是多少?
从 PostgreSQL 12 到 19,简体中文翻译停滞了七年三个月,共八个大版本。覆盖率仅为 66%,远低于 PostgreSQL 要求的 80% 发布门槛。
作者重译 PostgreSQL 中文翻译的具体成果是什么?
作者重译了 PostgreSQL 14 至 19 共六个大版本、28 个消息目录、67,487 条字符串,实现 100% 覆盖,零 fuzzy、零空翻译,并通过 msgfmt 格式检查。该翻译已于 2025 年 9 月 18 日被上游合并,将随 PostgreSQL 19 发布。
旧版中文翻译中有哪些典型的误译例子?
典型误译包括:将“bug”误译为“臭虫”(如“臭虫报告至”);“out of memory”有四种译法,其中“内存溢出”是错误的,OOM 是内存不足而非溢出;pg_ctl 中“invalid binary "%s": %m”丢失了 %m;ecpg 中翻译错误使用了 %1$s 和 %2$s 导致参数读取错误。
作者是如何在七天内完成原本停滞七年的翻译工作的?
作者使用 AI 辅助翻译(Fable 5.1、Codex Astra 6 等),但核心在于先制定术语表和风格指南,确保跨组件、跨版本的一致性。流程包括:机器初译、人工审核、术语统一、一致性检查。作者还开发了辅助工具 pgsql.cc/nls 进行并排人工审核。
国产数据库在中文翻译方面表现如何?
许多国产数据库直接使用与上游完全相同的 zh_CN.po 文件,包含同样的误译(如“臭虫”“内存溢出”)。没有一家商业厂商参与上游中文翻译贡献,最终由作者个人完成。
PostgreSQL 19 发布后,中文用户可以直接使用 zh_CN locale 了吗?
是的。PostgreSQL 19 将包含 100% 覆盖的简体中文翻译,用户设置 locale 为 zh_CN 后,错误信息将完全中文化,不再出现中英文混杂或误译问题。繁体中文(zh_TW)也同步达到 100%。