目录

待国际化源码文件i18n.php

文件中有两行gettext / _ 文本输出:

//设置language为zh_CH
$lang = "zh_CN";//linux不支持zh-Hans,所以gettext、php都不支持。使用locale -a可以看到os支持的语言文字国家地区码
putenv("LANG=".$lang);//ubuntu 需要,centos不需要此行
setlocale(LC_ALL, $lang.'.utf8');//ubuntu 需要.utf8,centos可有可无

// Specify location of translation tables
bindtextdomain("test", dirname(__DIR__)."/locale");
// Choose domain
textdomain("test");

// Translation is looking for in locale/zh_CN/LC_MESSAGES/test.mo

// Print a test message
echo gettext("Welcome to New World!");

// Or use the alias _() for gettext()
echo _("Have a nice day!");

po文件制作

我们采用简单便捷的poedit工具。

  • 1、文件-新建,选择目标语言,比如zh_CN
  • 2、从源代码中提取。配置翻译属性,比如项目名称版本、复数形式、字符集、源代码字符集等,字符集比如UTF-8
  • 3、如果是目标翻译是中文,复数形式填写:nplurals=2; plural=(n!=1);
  • 4、源路径,也就是要从哪个文件或目录自动提取需要翻译的文本内容,工具会自动提取形成列表
  • 5、逐行翻译,翻译结束
  • 6、文件-编译为MO文件
  • 7、得到test.po与对应的test.mo文件
  • 8、将po与mo两个文件放入对应的目录,比如:locale/zh_CN/LC_MESSAGES/test.mo

locale目录结构如下:

I:\SRC\PHP-SHIYANCHANG\LOCALE
\---zh_CN
    \---LC_MESSAGES
            test.mo
            test.po