实现国际化的途径有很多。很多php框架都内置了i18n支持,但大多数都是基于PHP数组实现的,不推荐使用。Gettext是目前最流行、最常用的方法。Gettext用于系统的国际化(I18N)和本地化(L10N),在编译程序时可以使用Native Language Support(NLS),这样可以使程序的输出使用用户设置的语言,而不是英语。有关gettext的更多信息,请参考:让我们来谈谈如何使用gettext来国际化您的PHP程序。首先,检查环境要求。首先,检查phpinfo(),确保您的PHP已经启用了gettext扩展。如果启用了gettext,您应该会在phpinfo页面上看到以下信息:。
如果没有找到,请修改php.ini以启用扩展。2.为项目gettext创建新的区域设置文件夹涉及两个文件。*.po是翻译源文件,它存储项目中所有要翻译的字符串和翻译结果。*.mo文件是从po文件编译而来的二进制文件,翻译信息实际上是从mo文件中读取的,所以这个文件也是必须的。Gettext对目录的要求相当高,所以您必须将国际化文件放在指定的目录中。gettext的大多数不成功使用都是由于po文件和mo文件放置不当。下面是一个典型项目目录树的例子:。
Iii .正在初始化i18n环境。这主要是程序端的简单设置。这里有一个简单的例子:复制代码如下:Php//定义了要翻译的目标语言和po文件$locale='zh_CN.utf8 '的编码;setlocale(LC_ALL,$ locale);//设置翻译文本字段,下面的代码会让程序转到locale/zh _ cn/LC _ messages/default . mo找到翻译文件bindtextdomain ('default ',dirname (_ _ file _ _)。/locale ');textdomain('默认');DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN ' ' http://www . w3 . org/TR/XHTML 11/DTD/XHTML 11 . DTD '?PHP echo _(' Hello n ');第四,这一步建立po文件的方法有很多,当然可以手动建立,但是这种方式最大的缺点就是不知道项目中哪些字符串需要翻译。在这里,我们推荐下一款软件——PoEdit,它既适用于Windows平台,也适用于Linux。选择文件-新消息目录文档,并填写一些必要的信息。注意,如果目标语言是中文,由于中文是双字节字符,最好用“复数形式”填写“n plural s=2”;复数=(n!=1);”(不带引号),如下所示。
然后将项目所在的文件夹添加到“路径”中,设置翻译的关键词,PoEdit会自动搜索项目中所有需要翻译的字符串,生成po文件。翻译后选择“保存”,PoEdit会自动生成mo文件。每次要翻译的字符串在未来的项目中更新时,只需打开PoEdit并从源代码中选择类别-update。这个思想不仅适用于PHP,其他语言也是类似的。前一段时间,在django翻译项目更方便,但只能建立po文件。其他步骤非常相似。我们来举一反三,特别注意目录结构,这是最容易出现问题的。