可以根据手册提示,在应用的配置目录下面的行为定义文件tags.php
<?php
return array(
// 添加下面一行定义即可
'app_begin' => array('Behavior\CheckLang'),
);
在项目配置文件里,添加
'LANG_SWITCH_ON' => true, // 开启语言包功能
'LANG_AUTO_DETECT' => true, // 自动侦测语言 开启多语言功能后有效
'LANG_LIST' => 'zh-cn,zh-en', // 允许切换的语言列表 用逗号分隔
'VAR_LANGUAGE' => 'l', // 默认语言切换变量
然后,你就可以在项目里添加Lang这个语言文件夹了,里面可以放你的语言包
分别对应中文,和英文语言包文件
但是一般网站来说,都是交由编辑人员来处理的。不可能改个字,又找到程序员,打开文件来改动
要实现后台对于中英文的修改,可在后台,添加一个控制器,来进行程序
思路是,创建一个lang表,来存字段
lang_name为前台调用时用的
cn_name为该字段的中文
en_name为该字段的英文
控制器里代码如下
index只是做后台列出来而已
update为字段中英文的更新
updateLangCache为生成语言包文件,也就是zh-cn.php和zh-en.php文件修改过后的重新生成
页面代码,就是用ajax来进行修改
<table class="cnEn table table-striped table-hover menu-list">
<tr>
<th>ID</th>
<th>字段名</th>
<th>cn_name</th>
<th>en_name</th>
</tr>
<volist name="list" id="vo">
<tr>
<td class="tcenter">{$vo.id}</td>
<td class="tcenter">{$vo.lang_name}</td>
<td><textarea data-id="{$vo.id}" data-type="cn_name">{$vo.cn_name}</textarea></td>
<td><textarea data-id="{$vo.id}" data-type="en_name">{$vo.en_name}</textarea></td>
</tr>
</volist>
</table>
<script>
$(function(){
var textareaId = '';
var textareaVal = '';
$('td textarea').focus(function(){
textareaVal = $(this).val();
textareaId = $(this).attr('data-id');
$(this).addClass('focusNow');
})
$('td textarea').blur(function(){
var textareaValed = $(this).val();
var textareaType = $(this).attr('data-type');
if(textareaValed != textareaVal){
$.ajax({
url:"{:U('update')}",
data:{'id':textareaId,'type':textareaType,'textval':textareaValed},
type:'post',
dataType:'json',
success:function(result){
console.log(result);
return false;
if(result.status){
alert(result.msg);
}else{
alert(result.msg);
}
}
})
}
$(this).removeClass('focusNow');
})
})
</script>
因为是thinkphp根据浏览器自动判断当前用户的浏览器支持语言来定位,中英文。
测试的时候,可以, 域名/?l=zh-en或者 域名/?l=zh-cn 来测试中英文
也可以<?php echo cookie('think_'language); ?>来知道当前的浏览器语言
后台,完成后的,效果如下