pfSense用户界面汉化翻译教程
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用户界面汉化翻译教程的更多相关文章
- sublimeText3汉化安装教程 附注册码
sublimeText3汉化安装教程 sublimeText3 很不错,前面几天下了vscore学习Node.js,感觉有点懵,今天下载sublimeText3,遇到的一些小问题,在这里说说: 百度云 ...
- DevExpress控件安装、汉化使用教程
前言 DevExpress是一个庞大的控件库,也很是好用(没用过,听说),但是要收费. 网上关于DevExpress的教程满天飞,我找了一下午也没找到正确的安装.简单实用教程,还是自己摸索吧. 自己动 ...
- Sublime Text 3 破解版 + 注册机 + 汉化包 + 教程
SublimeText 是一个代码编辑器,也是HTML和散文先进的文本编辑器. SublimeText 是由程序员 Jon Skinner 于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展 ...
- 迈达斯midas Gen 2019 2.1 中文汉化安装教程
midas Gen 2019 v2.1 for win是一款关于结构设计有限元分享的工具,分为建筑领域.桥梁领域.岩土领域.仿真领域四个大类.具有人性化的操作界面,且采用了优秀的的计算机显示技术,是建 ...
- ERDAS 2014安装破解及汉化图文教程
关于ERDAS 2014 的安装破解及其汉化过程: 说明:汉化只是之针对英语能力不能正常满足使用软件的朋友们.如果英语过专八,完全没有必要汉化!在此之前查了好多关于ERDAS汉化的文档,可惜只是简单的 ...
- DevExpress控件安装破解和汉化使用教程
这段时间因公司业务需要.net开发且需要用到DevExpress控件,我自己研究学习了一下,用的是visual studio(2013)和DevExpress(V14.1.4),VS2013的下载安装 ...
- SpringBoot集成Swagger2 以及汉化 快速教程
(一) Swagger介绍 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件 (二)为什么使用Swagger 在现在的开发过程中还有很大一部分公司都是以口口相传的方式来进行 ...
- Yii 汉化翻译
一).首先创建一个zh_cn语言包.(参考网址:制作语言包) 1.复制framework\messages\config.php 文件到 protected\messages\下 2.更改config ...
- Restorator 2018 v3.90汉化注册版 含注册码汉化激活教程
链接:https://pan.baidu.com/s/1wfh5VQfNgbDr-glezL4faQ 提取码:y507
随机推荐
- 423. Reconstruct Original Digits from English(Medium)
Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...
- mysql安装设置mysql字符集utf8及修改密码
MySQL的下载,建议下载MySQL的解压缩版本 MySQL官网下载推荐别下最新版本的原因是因为很多之前用的jar包和工具类不兼容最新版本的 可以下5.多的和六点多的 这样的压缩包解压再配置就行了 安 ...
- [2018福大至诚软工助教]UML设计小结
[2018福大至诚软工助教]UML设计小结 一.得分 总分(50分) 团队信息 (4分) 队名 (1分) 团队成员的学号与姓名(需要标注队长)(1分) 本次作业的博客链接(1分) 三者完全,4分 团队 ...
- 软件工程启程篇章:C#和四则运算生成与运算
0x01 :序言 I leave uncultivated today, was precisely yestoday perishes tomorrow which the person of th ...
- 软件工程(FZU2015) 助教总结
SE_FZU目录:1 2 3 4 5 6 7 8 9 10 11 12 13 本次构建之法-SE助教工作,和福州大学张老师协作,福大学生基本发挥出了一定水平,在此做个小结. 教师 张老师本身的SE教学 ...
- .net 报错汇总——持续更新
1.未能找到 CodeDom 提供程序类型“Microsoft.CodeDom.Providers.DotNetCompilerPla PM> Install-Package Microsoft ...
- vue中的跨域问题
https://segmentfault.com/a/1190000011072725(原文) 使用vue-axios和vue-resource解决vue中调用网易云接口跨域的问题 注(api很重 ...
- day 7-20 视图,触发器,事务
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
- Day 5-8 自定义元类控制类的实例化行为
__call__方法: 对象后面加括号,触发执行. 注:构造方法的执行是由创建对象触发的,即:对象 = 类名() :而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类( ...
- CLOUD计算产品成本嵌套
1.产品入库单入库的半成品A (无单价) 2.其他出库单上(共耗的)出库的半成品A(无单价) 不管在同车间还是不同车间内都是认定为嵌套的,所以可以计算2遍成本,第1遍不考虑嵌套,第2遍就能计算进去了.