随着国际化进程的加快,越来越多的项目需要添加国际化的支持,如外贸网站,面向国际市场的游戏等等.PHP可以通过许多方式实现国际化[详见:PHP国际化-i18n机制教程],但比较现代的方式是使用gettext实现国际化.
gettext 是GNU国际化与本地化(i18n)函数库。它常被用于编写多语言程序。
著名的wordpress以及phpmyadmin就是使用的gettext,使用gettext的wordpress和phpmyadmin对国际化的支持都非常好.
gettext国际化需要用到两个文件,一个.po (Potable Object),一个 .mo (Machine Object),字面意思已很清楚,一个是便携对象,方便人工阅读/修改,一个是机器对象,供程序使用,下面会具体讲到.
1.确保gettext扩展已经开启

2.下载PoEdit编辑器,编辑.po文件,并生成.mo文件 [直接下载demo]

3.PHP示例代码
lang= domain=
- Hello
- Thank you
4.测试en_US(英语-美国)

5.测试es_US(西班牙语-美国)

6.注意
测试前使用locale -a查看系统是否支持目标语言,如不支持,会导致gettext无效,可以安装新的语言包解决 另外在写程序时,尽量使用sprintf( _( 'My name is %s , %s years old' ), $name,$age); 少用_(''My name is ').$name.','.$age._(' years old');因为由于语言文化的不同,某些语句的写法,词语顺序,不尽相同,使用sprintf可以增强翻译灵活度