[thinkphp5.0中英文切换]
首先来看下它的配置:
// 是否开启多语言
'lang_switch_on' => true,
//语音列表
'lang_list' => ['zh-cn','en-us'],
// 获取当前选择语言的方法类
GetLang.php
<?php
namespace app\index\controller;
use think\Cookie;
use think\Lang;
use think\Request;
class GetLang{
public function get_lang()
{
$lang = null;
if(input('?lang')){
$lang = input('lang');
}
if($lang==null){
if(Cookie::has('think_var')){
$lang = Cookie::get('think_var');
}else{
$lang = 'zh-cn';
}
}
$lang = Lang::range($lang);//设定当前语言
Lang::load(APP_PATH.DS.'index'.DS.'lang'.DS.$lang.EXT,$lang);//加载当前语言包
Cookie::set('think_var',$lang);
return $lang;
}
}
?>
// 显示效果的控制器类
Index.php
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function index(){
$lang = new \app\index\controller\GetLang;
$now_lang = $lang->get_lang();//获取当前语言
if($now_lang=='zh-cn'){
$now_lang='en-us';
}elseif($now_lang=='en-us'){
$now_lang='zh-cn';
}
$this->assign('set_lang',$now_lang);
return $this->fetch();
}
}
?>
// 视图页
index.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{:lang('TITLE')}</title>
</head>
<body>
<a href="?lang={$set_lang}">{:lang('NOW_LANG')}</a>
</body>
</html>
//语言包文件
zh-cn.php
<?php
return [
'TITLE'=>'语言切换',//网站标题
'NOW_LANG'=>'切换',//网站切换语言按钮
]
?>
en-us.php
<?php
return [
'TITLE'=>'Language switching',
'NOW_LANG'=>'Switch',
];
?>
这些只是网站内静态文字展示,可满足使用 ,无任何问题。
至于接口中从数据库中调取的数据翻译问题,
我是这么处理的
- 比如后台发布文章数据的时候,对文章标题和内容文字进行翻译(我调取的是百度翻译接口,具体使用情况可百度查询,然后操作)
2.在存储文章的文标题和内容的时候,也存储下英文的标题和内容,
这样在网站前端页面中进行判断,然后是显示中文的还是英文的
3.至于存储数据的时候 在操作数据库是存储在一张文章表(增加两个字段,存储翻译之后的文章标题和内容) 还是两张文章表(一张存储中文,一张存储英文) 可自己选择
一个简单的中英文切换网站 就这样做好了!
网友评论