状态 草稿
Todo Language files, file structure, loading entries
Todo Language codes, expand on extra arguments for lang()
官方最后更新时间 2008/11/28 12:43

国际化(i18n)

国际化文件存在在 i18n 目录下面。这个目录又分别存在于 systemapplication 或者 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');
general/i18n.txt · 最后更改: 2009/02/08 18:57 由 icyleaf