| 状态 | 草稿 |
|---|---|
| Todo | Language files, file structure, loading entries |
| Todo | Language codes, expand on extra arguments for lang() |
| 官方最后更新时间 | 2008/11/28 12:43 |
国际化文件存在在 i18n 目录下面。这个目录又分别存在于 system,application 或者 modules 目录下面。 而 Kohana 自己的国际化文件放置在 system 目录下面。
在 i18n 目录下面存放是是语言文件。英语语言文件放在 en_US 目录下面,简体中文语言文件放在 zh_CN 目录下面,繁体中文语言文件放在 tw_CH 目录下面。
修改本地化(默认语言支持)是在 locale.php 文件中修改。此文件需要用户复制 system/config 文件夹下来的这个文件到 application/config 文件夹下在进行修改。
文件配置的格式:
//如果显示中文,则修改 en_US 为 zh_CN ,当前前提是必须有配置 zh_CN 的语言文件。 $config['language'] = 'en_US'; $config['timezone'] = '';
$config['language'] 设置使用的语言。直接映射到 i18n 目录下面的设定的文件夹的名字。
$config['timezone'] 设置本地时区,详情请看 http://php.net/timezones
root +- application | +- i18n | +- en_US | | +- coffee.php | | | +- de_DE | | +- coffee.php | | | +- zh_CN | | +- coffee.php | +- system | +- i18n | +- en_US | | +- cache.php | | | +- de_DE | | +- cache.php | | | +- zh_CN | | +- cache.php
使用 Kohana::lang() 方法就可以检索指定的语言内容。
实例 1
echo Kohana::lang('cache.resources'); // 默认为 en_US 时输出: // Caching of resources is impossible, because resources cannot be serialized. // 如果设置为 de_DE 时输出 // Das Cachen von Ressourcen ist nicht möglich, da diese nicht serialisiert werden können.
默认设置的是 en_US,相对于的 Kohana::lang('cache.resources') 映射到了 i18n/en_US/cache.php 文件中的 $lang['resources'] 变量。
Kohana 也允许为 Kohana::lang() 添加额外的参数。
实例 2
// 语言文件:i18n/zh_CN/website.php $lang = array ( 'title_home' => '首页', 'title_profile' => '%s 的个人页面', 'title_setting' => '设置', 'title_about' => '关于', 'copyrights' => '(C) 2008-%s %s by %s.', ); // 控制器 // 显示指定字符串的个人页面标题,这里比如说用户名:icyleaf $user = array ( 'name' = 'icyleaf', 'email' = 'icyleaf.cn@gmail.com' ); echo '标题:'.Kohana::lang('website.title_profile', $user['name']).'<br />'; // 页面的版权信息,例如显示: (C) 2008-(至今的年份) Kohana爱好者 by icyleaf. echo '版权信息:'.Kohana::lang('website.copyrights', date('Y'), 'Kohana爱好者', 'icyleaf');
为自己的模块添加语言支持也是可以实现的,在 application/module 文件夹下添加 i18n 文件夹。添加语言文件并添加代码就可以完成。举个例子,假设你要创建用户申请的多语言文件,默认先修改本地化语言为 zh_CN(啊,不会,上面不是刚说过吗?),然后在 那么在 application/i18n/zh_CN/ (没有就创建)添加 signup.php 文件并按照下面的格式敲入代码:
文件格式
$lang = array ( 'username' => '用户名', 'password' => '密码', 'email' => '电子邮箱' );
现在这些语言字符串已经调用到你的程序当中了。
实例
echo Kohana::lang('signup.username'); echo Kohana::lang('signup.password'); echo Kohana::lang('signup.email');