po语言包是一种翻译资源文件,用于支持多语言软件的本地化。po是Portable Object(可移植对象)的缩写,通常由程序的源代码提取,用于翻译人员进行文本的翻译和修改。mo代表Machine Object,这是一个二进制数据文件,是po文件编译后的产物,通常我们汉化程序时,如果没有po文件,可以用mo文件反编译出po文件进行多语言的翻译。
OPNsense和pfSense都是基于Gettext的标准进行开发,支持多语言显示,方便了全球各地的用户使用。由于OPNsense和pfSense官方已经很久没更新po语言模板,导致志愿者参与的其他语言翻译也不能及时更新,现在发布的版本,除了本语英语外,其他多语言显示并不完全。
官方不提供,我们可以使用Gettext工具来提取翻译词条,制成po语言文件并汉化,替换系统自带mo文件,实现Web界面汉化。
需要用到的软件:
下面介绍操作步骤。
下载文件
安装pfSense和OPNsense最新版本,开启shell后,使用finalshell,将/usr/local/www和/etc/inc/目录的所有文件下载到本地硬盘(OPNsense下载/usr/local/www、/usr/local/opnsense/mvc/app目录下所有文件)。
制作文件列表
运行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中。
提取po文件
安装完gettext以后,在程序的安装目录找到xgettext程序,复制到下载目录,然后执行以下命令,制作pfSense的po文件。
xgettext --files-from="po.list" --output=pfSense.po --extract-all --from-code=UTF-8 --no-location --sort-by-file
参数的详细信息,可以运行“xgettext –help”获取,也可以浏览使用手册了解详细信息。
整理文件
用notepad++打开pfSense.po(OPNsense.po)文件,将不需要翻译的条目手动删除。
翻译文件
使用Poedit打开pfSense.po(OPNsense.po),逐项翻译并保存。保存后会自动生成pfSense.mo(OPNsense.mo)文件。
有网友开发了自动翻译工具,可以减少部分工作量。
替换文件
将pfSense.mo文件上传到/usr/local/share/locale/zh_Hans_CN/LC_MESSAGES目录,替换原有文件(OPNsense将文件OPNsense.mo上传到/usr/local/share/locale/zh_CN/LC_MESSAGES目录)。
切换语言
重启防火墙,找到语言选择选项,切换简体中文即可。