0x01 前言

最近一周,我对daloRADIUS特别感兴趣,我想通过这款开源控制面板来管控一些服务的认证。我不想在服务器上安装Docker来使用ToughRADIUS,而这款daloRADIUS已经很久没更新了,所以我在Github将这个项目Fork到名下并创建一个For PHP7的分支。在取得愿编写者的同意后进行二次开发。

对于一款开源软件来说,各方面的便捷性都是很重要的,而实现多种语言却是重中之重。一个项目是否实现多语言发行,就决定了软件能走多远、辐射的范围有多广。

原作者也是将常用的词与短语都抽离出来写到同一个PHP文件中,但还是有些控制界面中的词与短语没抽离。在昨天我决定使用gettext作为提供多语言版本的途径。

0x02 什么是gettext

PHP的说明只有一句话:gettext函数实现了NLS (Native Language Support) API,他可以用来国际化您的PHP程序。

而GUN的解释就详细多了,毕竟这是GUN的项目,大概意思是:一般项目开发的界面和书面记录是以英语为基础,大多数人相比英语会更愿意使用或更熟悉自己的母语。可是开发者并不太愿意花时间去进行多语言的翻译,同时也不太现实。而一个可行的结构化翻译方案是大家所需要的… …

太长了,需要浏览全文的请移步至The Purpose of GNU gettext

0x03 将gettext编译进你的PHP

编译PHP的时候通过添加以下选项即可:

完成后通过以下命令即可查询是否成功将gettext编译到PHP:

这个模块不需要在没有任何设置,编译完成即可使用。

我使用的环境是MacBook,内置的PHP5和我通过brew安装的PHP7都是内置gettext。

0x04 在你的项目使用gettext

0x04.1 设定语言与翻译文件路径

以下适用于多个域的情况:

0x04.2 创建目录

目录结构应该是这样的:

0x04.3 定义可翻译文字

 

0x04.4 建立.po文件

以下是daloRADIUS.po文件的截取:

0x05 简单示例、源代码与编辑器

1465567882

点此到Github查看源代码

新建.po与.mo的编辑器推荐使用poedit,网址:https://poedit.net/

0x06 结语

我还是PHP与HTML的新手,同时尝试使用bootstrap对daloRADIUS进行重构,如果感兴趣的朋友也可以到我Github去看看,欢迎大家指出错误。

0x07 相关网站