po 语言包是一种翻译资源文件,用于支持多语言软件的本地化。po 是 Portable Object(可移植对象)的缩写,通常从程序源代码提取,供翻译人员编辑和修改文本。mo 代表 Machine Object,是 po 文件编译后的二进制数据文件。在汉化程序时,如果没有 po 文件,也可以通过反编译 mo 文件来得到 po 文件,继续进行多语言翻译。
OPNsense 和 pfSense 均基于 Gettext 标准开发,支持多语言,方便全球用户使用。但由于官方长期未更新 po 语言模板,志愿者提交的其他语言翻译也无法及时跟进,导致目前发布的版本中,除英语外其它多语言显示并不完整。
官方不提供最新模板,我们可以使用 Gettext 工具自行提取翻译词条,制作 po 语言文件并进行汉化,替换系统自带的 mo 文件,从而实现 Web 界面的汉化。
需要用到的软件:
下面介绍操作步骤。
1. 下载文件
安装 pfSense 和 OPNsense 最新版本,开启 shell 后,使用 finalshell 等工具,将以下目录的所有文件下载到本地硬盘:
- pfSense:
/usr/local/www与/etc/inc/ - OPNsense:
/usr/local/www与/usr/local/opnsense/mvc/app
2. 制作文件列表
运行 cmd,进入下载文件所在的目录,依次执行以下命令,生成不同文件类型的列表文件 php.list、inc.list、xml.list。
dir *.php /s/b > php.list
dir *.inc /s/b > inc.list
dir *.xml /s/b > xml.list使用 notepad++ 将这些列表文件合并到一个总列表文件 po.list 中。
3. 提取 po 文件
安装完 gettext 后,在安装目录找到 xgettext 程序,复制到下载目录。然后执行以下命令,生成 pfSense 的 po 文件(OPNsense 类似,修改输出文件名即可):
xgettext --files-from="po.list" --output=pfSense.po --extract-all --from-code=UTF-8 --no-location --sort-by-file各参数的详细说明,可运行 xgettext --help 查看,或查阅使用手册。
4. 整理文件
用 notepad++ 打开 pfSense.po(或 OPNsense.po),手动删除不需要翻译的条目。
5. 翻译文件
使用 Poedit 打开 pfSense.po(或 OPNsense.po),逐项翻译并保存。保存后会自动生成对应的 pfSense.mo(或 OPNsense.mo)文件。
有网友开发了自动翻译工具,可以辅助减少部分工作量。
6. 替换文件
将生成的 mo 文件上传至相应目录,替换原有文件:
- pfSense:上传
pfSense.mo到/usr/local/share/locale/zh_Hans_CN/LC_MESSAGES - OPNsense:上传
OPNsense.mo到/usr/local/share/locale/zh_CN/LC_MESSAGES
7. 切换语言
重启防火墙,进入语言设置选项,选择简体中文即可完成界面汉化。
觉得内容不错?我要