在Thinkphp 中怎么实现中英文切换啊? 10
TP手册中说在需要在zh-cn/common.php输入如下内容<?phpreturnarray('welcome'=>'你好','lan'=>'简体中文',);?>en...
TP手册中说在需要在
zh-cn/common.php
输入如下内容
<?php
return array(
'welcome'=>'你好',
'lan'=>'简体中文',
);
?>
en-us/common.php
输入如下内容
<?php
return array(
'welcome'=>'how are you fine?',
'lan'=>'english',
);
?>
但是如果内容都是从数据库中取出的,要怎么分配?
例如:数据库中有个新闻表,字段有id、content en_content三个字段,content存放中文,en_content存放英文,前台内容一条条遍历出来,要怎么分配才可以中英切换??? 展开
zh-cn/common.php
输入如下内容
<?php
return array(
'welcome'=>'你好',
'lan'=>'简体中文',
);
?>
en-us/common.php
输入如下内容
<?php
return array(
'welcome'=>'how are you fine?',
'lan'=>'english',
);
?>
但是如果内容都是从数据库中取出的,要怎么分配?
例如:数据库中有个新闻表,字段有id、content en_content三个字段,content存放中文,en_content存放英文,前台内容一条条遍历出来,要怎么分配才可以中英切换??? 展开
展开全部
我用一位数组写个实例,看懂了再自己去改:
//数组
$info = array(
'id' => '1',
'content' => '你好',
'en_content' => 'welcome'
);
//循环对比
foreach($info as $key => $value){
if ( ereg('['.chr(0xa1).'-'.chr(0xff).']', $value) ){ //判断是不是纯中文,是为 true
//是纯中文时,去相应的语言包中做对比,查找当前的中文 $value 对应的英文是什么,并把找到的英文替换掉当前这个中文
$info[$key] = '匹配成功后的英文';
}elseif ( ereg('[a-zA-Z]', $value) ){ //判断是不是纯英文,是为true
//是纯英文时,去相应的语言包中做对比,查找当前的英文 $value 对应的中文是什么,并把找到的中文替换掉当前这个英文
$info[$key] = '匹配成功后的中文';
}else{
// echo '既不是纯中文,也不是纯英文,可能有数字混在其中,或者是id 值';
}
}
return $info; //最后直接返回$info 即为中英文互换后的数组
//数组
$info = array(
'id' => '1',
'content' => '你好',
'en_content' => 'welcome'
);
//循环对比
foreach($info as $key => $value){
if ( ereg('['.chr(0xa1).'-'.chr(0xff).']', $value) ){ //判断是不是纯中文,是为 true
//是纯中文时,去相应的语言包中做对比,查找当前的中文 $value 对应的英文是什么,并把找到的英文替换掉当前这个中文
$info[$key] = '匹配成功后的英文';
}elseif ( ereg('[a-zA-Z]', $value) ){ //判断是不是纯英文,是为true
//是纯英文时,去相应的语言包中做对比,查找当前的英文 $value 对应的中文是什么,并把找到的中文替换掉当前这个英文
$info[$key] = '匹配成功后的中文';
}else{
// echo '既不是纯中文,也不是纯英文,可能有数字混在其中,或者是id 值';
}
}
return $info; //最后直接返回$info 即为中英文互换后的数组
推荐于2018-05-04
展开全部
在新闻的Model里做处理 _after_select和_after_find 检测当前的语言;
如果是英文,就用en_content代替content 模板中输出都是content。
Model参考代码如下:
protected function _after_select(&$result,$option=''){
foreach($result as &$value){
if(LANG_SET == 'en-us'){
$value['content'] = $value['en_content'];
如果是英文,就用en_content代替content 模板中输出都是content。
Model参考代码如下:
protected function _after_select(&$result,$option=''){
foreach($result as &$value){
if(LANG_SET == 'en-us'){
$value['content'] = $value['en_content'];
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般的话会设置一个session['lang']保存当前的语言类型!所有的操作根据这个session['lang']中的类型进行操作或者调用标准!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询