美文网首页
thinkphp5实现多语言切换 --- 2020-09-07

thinkphp5实现多语言切换 --- 2020-09-07

作者: 一位先生_ | 来源:发表于2020-09-07 09:49 被阅读0次

    [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',
    ];
    ?>
    

    这些只是网站内静态文字展示,可满足使用 ,无任何问题。
    至于接口中从数据库中调取的数据翻译问题,
    我是这么处理的

    1. 比如后台发布文章数据的时候,对文章标题和内容文字进行翻译(我调取的是百度翻译接口,具体使用情况可百度查询,然后操作)
      2.在存储文章的文标题和内容的时候,也存储下英文的标题和内容,
      这样在网站前端页面中进行判断,然后是显示中文的还是英文的
      3.至于存储数据的时候 在操作数据库是存储在一张文章表(增加两个字段,存储翻译之后的文章标题和内容) 还是两张文章表(一张存储中文,一张存储英文) 可自己选择

    一个简单的中英文切换网站 就这样做好了!

    相关文章

      网友评论

          本文标题:thinkphp5实现多语言切换 --- 2020-09-07

          本文链接:https://www.haomeiwen.com/subject/qulkektx.html