CakePHP中对国际化(
internationalization通常将它简写为i18n)和本地化(localization被简写为l10n)的支持遵循国际组织(Openi18n)的相关标准.
通常相关的文件包括了PO和MO文件,资源包的位置一般在/app/locale/资源名称/LC_MESSAGES/,命名是default.mo AND default.po.
PO是Portable Object(可移植对象)的缩写形式;MO是Machine Object(机器对象) 的缩写形式。PO 文件是面向翻译人员的、提取于源代码的一种资源文件。而MO文件是面向计算机的、由 PO 文件通过 gettext 软件包编译而成的二进制文件。程序主要通过读取MO文件使自身的界面转换成用户使用的语言。
CakePHP中的PO和MO文件的编辑,可能需要借助Poedit等专门的编辑器来完成.当然,如果您对它们的
组织结构非常熟悉,用一般的编辑器也可完成相关操作.
CakePHP中输出函数覆写形式__()中,引入了translate()函数,其中:
$language = Configure::read('Config.language');
if (!empty($_SESSION['Config']['language'])) {
$language = $_SESSION['Config']['language'];
}
以上代码可知:规定当前语言形式可有两种方法:
1. 在core文件中写入配置项
Configure::write('Config.language', 'chi');
2.在系统上层文件中写入session值
$this->Session->write ("Config.language","chi");
值得注意的是,在l10n.php中有CakePHP规定好的__l10nMap变量,在app\locale下对应的资源包名称应该是此变量中的某一值,否则系统将无法正确
解析.