跳转到主要内容

为什么要做 PostgreSQL 汉化?

PostgreSQL 19 的发布时间表定了:RC1 在下周四(10 月 15 日),不出意外的话,正式版在 10 月 29 日发布。

借这个节点,老冯报告一个和中文用户直接相关的好消息:继简体中文之后,繁体中文的消息本地化也进了 PG 19。从这个版本开始,PostgreSQL 会同时说一口完整的简体中文和繁体中文。

简体中文支持之前已经聊过,今天再聊聊为什么要做这件事。

Peter Eisentraut 确认 PostgreSQL 19 简繁中文消息翻译均已合入上游

简繁中文,全部达标

回顾一下:前阵子老冯给 PG 上游提交的简体中文(zh_CN)消息翻译,已经随 19 Beta 4 发布。这几天我又对简中做了一轮校补,并以此为基础生成了繁体中文(zh_TW)版本,同样提交到了上游,会随下周的 RC1 一起发布。

PostgreSQL 18 与 19 的消息翻译覆盖率矩阵,包含 28 个组件和 30 种语言

这件事不用听我说,PG 官方的翻译状态站 babel.postgresql.org 上就能看到。PG 19 分支一共有 28 个需要翻译的组件、12,600 多条消息,从数据库内核 postgres、命令行客户端 psql,到 pg_dump、pg_basebackup、pg_upgrade 这些工具都在里面。

babel.postgresql.org 上的 PostgreSQL 19 消息翻译状态表

截至今天,简体中文和繁体中文的 28 个组件全部在 98% 以上:内核 postgres(6,806 条)是 99%,psql(1,536 条)是 100%。

放到全部 30 种语言里比一比:所有组件都在 98% 以上的,只有五种:德语、瑞典语、乌克兰语,以及简体中文和繁体中文。 日语、法语、俄语、西班牙语这些老牌大语种,都还有组件没翻完。

PostgreSQL 18 到 19 的 30 种语言整体翻译覆盖率对比

再对比一下 PG 18 分支:简体中文的 libpq 只有 13%,pg_upgrade 25%,pg_waldump 31%;繁体中文的 pg_combinebackup 52%,pg_basebackup 62%。翻译率不够的组件不会随版本发布;达标了但没翻完的,没翻到的那些消息就直接显示英文。这就是很多人在中文系统上看到 PG 中英夹杂的原因。

简繁中文各组件从 PostgreSQL 18 到 19 的翻译覆盖率变化

(以上数据来自 babel.postgresql.org,截至 2026 年 10 月 10 日。)

从 PG 19 开始,自动翻译与跟进的工作流也建起来了。正式发布前还会再合并一轮,争取所有组件都补到 100%。后续新增的消息会持续跟上,简繁两版同步更新,中文覆盖不会再是一个问题。

PostgreSQL 简繁中文消息目录仓库及持续翻译维护工作流

繁体中文,不是简繁转换

做繁体中文,最省事的办法是拿简体版跑一遍简繁转换,比如用 OpenCC。但两岸的技术术语本来就不一样,词典式的转换只能换掉一部分常用词,换不对、换不全的地方,台湾的朋友一看就别扭。随便举几个常见的差异:

大陆与台湾的技术术语对照:数据库与資料庫、服务器与伺服器、内存与記憶體等

所以这次的繁体版,是在校补过的简体版基础上生成,再逐条订正术语。术语对照是我在 Claude 和 Codex 的帮助下一条条敲定的,大面上有把握。简繁两版出自同一个底子,结构、语气、用词习惯保持一致,后续也会同步更新。

pgsql.cc 翻译工作台中的英文、简体中文和繁体中文消息对照

但毕竟两岸语言习惯有差异,所以如果你在台湾,或者习惯用繁体中文,欢迎多提意见:哪条翻得别扭、哪个术语不地道,都可以告诉我。pgsql.cc/nls 上有一个翻译工作台,所有消息的译文都能在上面查到。

AI 都这么强了,为什么还要汉化?

不少人问过我这个问题:程序员都用英文,折腾这个干嘛?老实说,这话并非没有道理。老冯自己的命令行环境里,locale 是强制设成英文的,写代码的注释也全用英文。英语是技术世界的通用语,现在又有 AI,遇到看不懂的报错扔进去翻译一下就完了,又何必费这个劲?

但老冯觉得,这件事还是应该做,主要有这么几个理由。

第一,母语阅读速度更快。 我能读英文,但读中文能一目十行,读英文就要慢一拍。平时写代码感觉不明显,可到了半夜线上出故障、满屏报错的时候,这一拍的差距是实打实的。故障现场,没人有工夫去开个对话框慢慢问 AI。

第二,开发者英语好,不代表所有用户英语好。 更好的中文错误信息,意味着更多中文用户能更快地看懂问题、更透彻地理解问题。本地化从来不是给专家做的,是给大多数人做的。

第三,半吊子的本地化,会拉低第一印象、抬高上手门槛。 大多数人的系统语言就是中文,绝大多数用户不会像我一样去改系统的 locale 和 LANG。在中文系统上装 PostgreSQL,默认看到的就是中文消息。而在 PG 19 之前,这些中文消息是过时、零散、中英夹杂的,比全英文还糟糕得多。

新用户第一眼看到这样的本地化水平,难免会嘀咕:这就是 PostgreSQL 的水准? 所以,这种事要么不做,要做就做完整。半半拉拉摆在那儿,是最难看的。

顺便说说其他几个站点

消息汉化解决的是“报错看得懂”,但要用好 PG,还得有文档和资料。这块老冯也做了三个站点:pgsql.cc、pg.center 和 pgext.cloud。

pgsql.cc 是 postgresql.org 官网的中文版,由 Pigsty 团队维护,PG 官网上有的东西,这里都有对应的中文版本。这里最独特的资源,是 PostgreSQL 从 6.3 到 20devel 整整 31 个大版本的官方手册,全部按统一的标准、风格和术语翻成了中文,还配了一个更好用的全文检索,可以方便地跨版本检索各种对象。

pgsql.cc 中文文档的全文检索与文档预览

此外,这里还有 PG 扩展百科、PG 每日快讯、PG 知识图谱等几个额外的栏目。PostgreSQL 中文社区的消息与更新,以后也会在这里发布。

PG 中文文档发布:11 个大版本,一个不落

PostgreSQL 中文站,再加一份日报专栏

pgsql.cc 的 PostgreSQL 每日快讯专栏

pg.center 是一个中英双语站点,默认英文,目标是把 PostgreSQL 世界的各类知识收集整理起来,做成一部最全的 PG 百科全书。比如最近,我们把 PG 里的各类对象(SQL 命令、数据类型、函数、配置参数……)整理了一遍,并梳理了它们在 31 个大版本里的历史变迁。

pg.center 的 PostgreSQL 对象索引,汇总各版本的命令、类型、函数和参数

这里还维护着 31 个大版本的 PG 手册,以及 Patroni、pgBackRest、PgBouncer、etcd、HAProxy 的中英双语文档与索引。如果你还希望看到哪些内容,欢迎告诉我们,我们会持续补充和维护。

pg.center 的 PostgreSQL 社区组件文档入口

pgext.cloud 是一个专注 PostgreSQL 扩展生态的站点,收录了 PG 世界里 2,600 多个扩展。我们不只整理这些扩展的元数据,还为这 2,600 个扩展提供中英双语的使用文档。除了收录信息,PGSTY 仓库还直接交付其中 600 个高质量扩展的预编译二进制包,覆盖 16 个 Linux 发行版大版本,以 RPM/DEB 的形式开箱即用。

pgext.cloud 的 PostgreSQL 扩展目录与 RPM、DEB 软件包矩阵

这些站点共同组成了 PostgreSQL 中文内容的门户。

写在最后

汉化也许只是一件小事。但做这件小事的时候,我一直在想另一个问题:为什么这种事,这么多年都没人做?PostgreSQL 中文社区在干什么?那么多基于 PG 的“国产数据库”又在干什么?

老冯觉得,主要原因是 PostgreSQL 中文社区的缺位与衰落。这也就回到了题目:为什么要做 PostgreSQL 汉化?老冯自己的环境是英文的,平时也很少看中文文档,这些东西我自己大概率用不上。

象与猪在中式园林中写书法,象征 PostgreSQL 与 Pigsty 的中文本地化工作

但我知道,很多中文用户都需要它。我也想借着这些对用户有用的事情,尝试复兴 PostgreSQL 中文社区。不过这个话题有点大,明天老冯单独写一篇聊聊。

今天就先说到这里。PG 19 正式版发布之后,欢迎在中文系统上装一个试试;遇到翻得别扭的地方,告诉我。