po语言包提取及汉化方法

本文摘要po 语言包是一种翻译资源文件,用于支持多语言软件的本地化。po 是 Portable Object(可移植对象)的缩写,通常从程序源代码提取,供翻译人员编辑和修改文本。mo 代表 Machine Object,是 po 文件编译后的二进制数据文件。在汉化程序时,如果没有 po 文件,也可以通过反编译 mo 文件来得到 po 文件,继续进行多语言翻译。OPNsense 和 pfSense 均基于 ...

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.listinc.listxml.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. 切换语言

重启防火墙,进入语言设置选项,选择简体中文即可完成界面汉化。

觉得内容不错?我要

评论 暂无评论
暂无评论,快来抢沙发吧~