使用ThinkPHP的多语言功能,需要做的事情有:
1.在配置文件里开启多语言,代码如下:
<?php
return array(
//'配置项'=>'配置值'
'SHOW_PAGE_TRACE' =>true, // 显示页面Trace信息
'LANG_SWITCH_ON' => true, // 开启语言包功能
'LANG_AUTO_DETECT' => true, // 自动侦测语言 开启多语言功能后有效
'DEFAULT_LANG' => 'zh-cn', // 默认语言
'LANG_LIST' => 'zh-cn,en-us', // 允许切换的语言列表 用逗号分隔
'VAR_LANGUAGE' => 'l', // 默认语言切换变量
);
?>
2.在项目的行为配置文件(Conf/tags.php)中启用多语言行为,添加如下配置项:
return array(
// 添加下面一行定义即可
'app_begin' => array('CheckLang')
);
3.定义语言包
在项目的Lang目录里定义语言包,比如
E:\www\TP\APP\Lang\en-us\common.php
<?php
return array(
'title'=>'Title',
'hello'=>'Hello',
'language'=>'Language',
);
E:\www\TP\APP\Lang\zh-cn\common.php
<?php
return array(
'title'=>'标题',
'hello'=>'你好',
'language'=>'语言',
);
4.在TPL模板文件里加上下面的代码,
<!DOCTYPE html>
<html>
<head>
<meta http="Content-Type" content="text/html;charset=utf-8" />
<title>{$Think.lang.title}</title>
<script type="text/javascript" src="http://localhost/jQuery/jquery-1.9.1.min.js"></script>
<script>
function switchToLang(lang)
{
var frame = $("<iframe id='lang' ></iframe>");
frame.appendTo('body');
frame.attr('src','__APP__/Index/Lang/l/'+lang);
}
</script>
</head>
<body>
<p><a href="javascript:switchToLang('zh-cn')">中文</a> <a href="javascript:switchToLang('en-us')">英文</a></p>
<p><?php echo LANG_SET; ?></p>
<p>{$Think.lang.hello}</p>
<p>{$Think.lang.language}</p>
</body>
</html>
switchToLang(lang)函数,用变量代替要显示的字符串。
5.在4中的tpl模板文件的对应controller里加入Lang method,比如:
<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action
{
public function index()
{
$this->display();
}
public function Lang()
{
echo '<script> parent.location.reload()</script>';
}
}
我没有完全理解4.5,4\5只是实现语言切换的一种方式,可以用其他的方式。