在 Linux 下, gettext 是类 Unix 系统中实现国际化(i18n)和本地化(l10n)的标准库与工具套件。
核心概念:如何实现“编排”翻译
同一个脚本在中文系统下显示“连接成功”,在英文系统下显示“Connected successfully”。gettext 实现了逻辑代码与翻译文本的分离。
- POT (Portable Object Template):翻译模板。它是从源码中提取出来的原始文本集合。
- PO (Portable Object):翻译文件。这是翻译人员编辑的人类可读文本文件,包含了“原文 -> 译文”的映射。
- MO (Machine Object):二进制翻译包。这是将 PO 文件编译后供程序高效读取的格式。
常见相关命令速查表
| 命令 | 用途 | 工程师解读 |
|---|---|---|
gettext |
在 Shell 中获取翻译后的字符串。 | 运行时调用,读取 .mo 包。 |
ngettext |
处理复数形式的翻译(如 1 file vs 2 files)。 | 解决不同语言复杂的复数语法逻辑。 |
envsubst |
替换 Shell 变量到模板中。 | 经常用于动态生成 Nginx 配置文件。 |
msgmerge |
将新的模板与旧的翻译文件合并。 | 当你更新了脚本内容,用它来保留已有的翻译。 |