pfSense用户界面汉化翻译教程

来源 https://blog.51cto.com/fxn2025/2087182

为了记录自己的汉化过程,同时也为了方便网友自己制作汉化版本,我把自己汉化pfSense2.32的过程在此分享。

一、汉化的方法和步骤

1、取得语言文件

首先要开启系统的shell端口,用浏览器登陆PFSENSE管理界面,在System→Advanced→Admin Access →  Secure Shell Server 勾上(Enable Secure Shell)这个选项。

下载并安装最新版的winscp,运行winscp,新建连接,IP地址写防火墙的lan地址,端口是22,用户名是root,密码是你自己的WEB配置密码,初始是“pfsense”。

登陆进PFSENSE文件系统,到/usr/local/share/locale/en/LC_MESSAGES目录,将pfsense.pot文件下载到本地硬盘。

2、开始汉化语言文件

下载poedit软件,版本越新越好,将下载的pfsense.pot改名为pfsense.po,用poedit软打开,开始启动逐条翻译。最笨的方法,当然是一条条的翻译了^_^。如果都向我学习,可以省事不少。方法是多下载一些同类的已翻译完成的po文件,让他跟TM同步,然后打开要翻译的语言文件 ,选择从TM同步,选择仅填补完全匹配的项,这样可以节省不少的汉化时间。整个要汉化的条目6518条(pfsense.2.32)。从TM同步后,自己大概只要汉化3000多条了。当然TM也不是100%准确,还是要仔细检查的。

将剩余未翻译的条目,按“翻译顺序”排序,导出为HTML格式,然后用编辑器打开,转为普通文本格式,为下一步的翻译做好准备。

翻译建议采用Google浏览器加谷歌翻译插件来进行,因为国内不能直接访问google,所以还要采取一些其他的方法,这个网上有教程,自己可以找一下。我是采用了“谷歌访问助手”这个插件来实现访问的。

将转化的文本格式的翻译条目复制到谷歌翻译上,一次可以翻译5000个字符,然后再逐条粘贴到poedit上的对应的翻译条目上。你也可以在POEDIT上直接将一条条原文粘贴到谷歌翻译上,再把翻译结果粘贴回来(没人反对你这么做,只是效率有点低。)。这个没捷径可走,必须一条条的来。如果翻译的语句中有变量(%%)就要注意了,围绕着他进行翻译,不要删除他,否则变量就不会正确显示。

3、翻译成果的初步应用

pfsense.po文件汉化完成后,每次保存,在同一目录下,有一个pfsense.mo文件 ,这个才是我们要用的语言文件。用Winscp登陆到pfsense文件系统,把pfsense.mo文件复制到/usr/local/share/locale/zh_CN/LC_MESSAGES目录下。这个时候还看不到汉化的结果,因为在System→General Setup→Language选项下并没有简体中文的选项,只有英语、葡萄语和土耳其语,我们还要修改一个文件。在/etc/inc下,找到pfsense-utils.inc文件,用editplus或其他的PHP编辑器打开,找到3001行,根据这一行的格式在下面添加一栏中文语言选项。保存文件,重启就能看到简体中文切换的选项了。

4、汉化界面的进一步完善

切换中文后,大部分的页面已经是中文了,汉化率估计在95%以上了,如果没什么特别嗜好,这样用用也就可以了。可是如果你是跟我一样的完美控,可能也希望把看到的英文都翻译成中文吧。这个没其他办法,只能翻译相关的PHP文件。界面上可执行的PHP文件,都在/usr/local/www目录下,先把这个目录的文件全部导到本地。先一个页面一个页面的点,看哪个页面上还有英文的显示,注意浏览器的地址栏,找到需要汉化的PHP文件,在本地打开。常规设置对应的就是WWW目录下的system.php文件,高级设置对应的就是www目录下的system_advanced_admin.php文件,其它的自己看!

下一步,启动PHP汉化工作。为了减少工作量,我们只对切换中文显示后还遗留的英文进行汉化。找到还有英文显示的对应的PHP文件 ,用editplus打开,在搜索里点要翻译的英文,一般都在gettext和setHelp后面,把双引号里对应的英文翻译成中文就行了。如果找不到,试着把语句缩短进行查找。如果翻译的语句中有变量($%)就要注意了,围绕着它进行翻译,不要删除。采用这种办法,把要翻译的PHP文件都翻译了,这个量不大,只涉及到30多个PHP文件(当然,你如果闲的蛋疼,把各类出错提示都翻译了,那可就远远不止这些了)。翻译完成后,替换系统WWW目录下同名文件,点击页面就能看到效果。也可以在Winscp中找到要翻译的PHP文件 ,点鼠标右鍵选择用editplus打开,翻译完后保存直接刷新一下浏览器页面就能看到翻译效果(这个方法更直接省事)。

如果PHP文件都汉化完了,还有页面上显示了英文怎么办? 这就说明这个英文不在这个PHP文件里,在其他关联的文件上。这就要用到editplus在文件中查找文本的功能。把pfsense2.32的光盘安装文件(ISO)映射为一个驱动器,editplus查找范围设为这个驱动器,文件类型选*.*,范围选择包含子目录,输入要查找的英文,一般就能找到这个文件。翻译完后替换系统目录内的同名文件就可以了。

在/usr/local/www/wizards目录中,有配置向导、流量整形向导和Open***向导的XML文件 ,这些文件要单独翻译。在对setup_wizard.xml(第一次进入系统时弹出的的配置向导)文件进行对照翻译时,有些字条不要随便翻译,否则会造成程序不能执行、或设置不能保存的问题(这是目前唯一不能完全汉化的地方,有点遗憾……)。

5、去除或增加某些菜单(进阶)

在汉化过程中,如果发现某些菜单用不上想去除,或想给系统增加某些其他功能(比如ARP绑定)怎么办? 这个就必须修改/usr/local/www目录下的head.inc文件了。用editplus打开head.inc文件,找到241行,从这一行开始往下,对应的都是系统菜单目录。如果要删除某个菜单,你直接删除那个菜单对应的那一行就行了。如果要增加,就在相应的某个类目下增加,并把对应的PHP文件放在/usr/local/www目录下。在这里,你也可以直接汉化整个系统菜单!

6、其他问题(进阶)

  • 语言文件(pfsense.po)和PHP文件都翻译了,会显示哪个翻译结果?

只显示PHP文件翻译的结果,语言文件没影响。

  • 如果翻译了某个PHP文件 ,导致pfsense运行出错怎么办?

用原文件进行替换就行了。如果不是gettext和sethelp后面的文本翻译,最好小心点!系统出错会有提示哪个PHP文件的多少行出错,自己找原因就行了。

  • 我替换了pfsense.mo文件,但是看不到汉化效果怎么办?

重启一下pfsense!

  • 有什么好办法能即时验证php文件的汉化效果?

用虚拟机,通过WinSCP用editplus直接在pfsense文件系统中打开要汉化的PHP文件,汉化一段就点保存,刷新浏览器页面看汉化效果。

  • 谷歌上不去,用百度翻译行不?

翻译效果,谷歌最好,很多已经接近人工翻译了。百度就算了吧..........

  • 我有mo后缀的语言文件 ,怎么转换成PO类型的语言文件用于编辑?

用PO和MO互转工具,网上自己找。

二、IMG安装文件的制作

汉化都弄完了,我想做个中文版的安装文件怎么弄?别急,让我一步一步来教你。

1、在虚拟机中安装pfsense

我用的VMware Workstation,你也可以用其他的,都大同小异。到官方网站下载2G的光盘安装版的pfsense,在虚拟机中挂上ISO文件把pfsense装上。你也可以直接用一个PE工具光盘(ISO),把RoadkilsDiskImage写盘工具和IMG映像文件集成进去,在PE下写盘。虚拟机的配置如下:

硬盘只要2G,因为我们下的是2G的安装版本。网卡两个,其他的随意。

2、配置文件的修改

通过浏览器把pfsense配置好,把要替换的PHP文件和语言文件都放进系统中。如果想在安装完成后直接显示中文界面,还必须修改一个文件。 在WinSCP中找到by防火墙/usr/local/www/目录下globals.inc文件,用editplus打开,找到115行,把language的后面修改为"zh_CN"。其实在这个文件中,可以修改的东西很多,包括初始的用户名和密码也可以修改!

3、制作pfsense安装映像

点恢复出厂设置,等pfsense重启后关闭虚拟机。再挂接上PE启动光盘(PE工具光盘ISO)和物理硬盘分区。

单个分区选择一个空闲的硬盘分区,不要与虚拟机存储文件在同一分区。

下面这一步很关键,点绿色启动按钮右侧的倒三角小图标,选择“打开电源时进入固件”,进入虚拟机BIOS,选择BOOT,把第一启动顺序调整为光驱。按F10保存后,启动虚拟机进入PE界面。

在PE系统上运行写盘工具RoadkilsDiskImage,选择创建映像,驱动器选2G的那个,保存位置选择开始挂载的物理硬盘分区,点开始,等待写完就就行了。

至此,中文版的安装映像制作完成了,是不是很有成就感&_&!

================ End

pfSense用户界面汉化翻译教程的更多相关文章

  1. sublimeText3汉化安装教程 附注册码

    sublimeText3汉化安装教程 sublimeText3 很不错,前面几天下了vscore学习Node.js,感觉有点懵,今天下载sublimeText3,遇到的一些小问题,在这里说说: 百度云 ...

  2. DevExpress控件安装、汉化使用教程

    前言 DevExpress是一个庞大的控件库,也很是好用(没用过,听说),但是要收费. 网上关于DevExpress的教程满天飞,我找了一下午也没找到正确的安装.简单实用教程,还是自己摸索吧. 自己动 ...

  3. Sublime Text 3 破解版 + 注册机 + 汉化包 + 教程

    SublimeText 是一个代码编辑器,也是HTML和散文先进的文本编辑器. SublimeText 是由程序员 Jon Skinner 于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展 ...

  4. 迈达斯midas Gen 2019 2.1 中文汉化安装教程

    midas Gen 2019 v2.1 for win是一款关于结构设计有限元分享的工具,分为建筑领域.桥梁领域.岩土领域.仿真领域四个大类.具有人性化的操作界面,且采用了优秀的的计算机显示技术,是建 ...

  5. ERDAS 2014安装破解及汉化图文教程

    关于ERDAS 2014 的安装破解及其汉化过程: 说明:汉化只是之针对英语能力不能正常满足使用软件的朋友们.如果英语过专八,完全没有必要汉化!在此之前查了好多关于ERDAS汉化的文档,可惜只是简单的 ...

  6. DevExpress控件安装破解和汉化使用教程

    这段时间因公司业务需要.net开发且需要用到DevExpress控件,我自己研究学习了一下,用的是visual studio(2013)和DevExpress(V14.1.4),VS2013的下载安装 ...

  7. SpringBoot集成Swagger2 以及汉化 快速教程

    (一) Swagger介绍 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件 (二)为什么使用Swagger 在现在的开发过程中还有很大一部分公司都是以口口相传的方式来进行 ...

  8. Yii 汉化翻译

    一).首先创建一个zh_cn语言包.(参考网址:制作语言包) 1.复制framework\messages\config.php 文件到 protected\messages\下 2.更改config ...

  9. Restorator 2018 v3.90汉化注册版 含注册码汉化激活教程

    链接:https://pan.baidu.com/s/1wfh5VQfNgbDr-glezL4faQ 提取码:y507

随机推荐

  1. Leetcode 2. Add Two Numbers(medium)

    You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...

  2. HDU - 1166 - 敌兵布阵 线段树的单点修改,区间求和

    #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...

  3. PHP api接口和SQL数据库关联

    数据库表创建 服务器环境配置.连接 .操作.数据库 API接口  原则:

  4. Feel Good POJ - 2796 (前缀和+单调栈)(详解)

    Bill is developing a new mathematical theory for human emotions. His recent investigations are dedic ...

  5. UITableView套UITableView数据刷新

    https://www.jianshu.com/p/ee4b2bd54d08 网上关于tableview嵌套tableview的文章很多,纵览很多后发现有两点没有满足需求 把两个tableview放在 ...

  6. h5 文件下载

    一.a 标签 移动端不支持 onDownFile= (url, filename) => { const downUrl = `http://10.1.109.123:19092/down/to ...

  7. 三、taro路由及设计稿及尺寸单位

    一.路由配置 路由配置跟小程序一样,在入口文件的 config 配置中指定好 pages 通过taro API 跳转,详见导航 // 跳转到目的页面,打开新页面 Taro.navigateTo({ u ...

  8. 网络编程--使用UDP发送接收数据

    package com.zhangxueliang.udp; import java.io.IOException; import java.net.DatagramPacket; import ja ...

  9. Day3-2 函数之递归

    递归 定义:一个函数在 内部调用自己,就称为递归. # 如何让10不停的除以2,直到不能除为止. n = 10 while True: n = int(n /2) print(n) if n == 0 ...

  10. git基本操作1

    1.创建版本库 在文件夹下,打开Git Bash Here ,然后执行git init,文件夹中会多出.git文件夹.(.git可能是隐藏的) 2.创建a.txt vim  a.txt ,并添加到版本 ...