15年软件开发经验 只做源码定制 互联网+定制化解决方案

15年软件开发经验,只做源码定制!

原创设计 定制开发

满足您的个性化需求

当前位置:首页 后端开发 Thinkphp5

tp5 多语言网站开发思路设计

教腾豪| 发布于 2021-08-09 20:29:20| 197阅读| 0点赞| 0评论
举报

tp5多语言,tp5切换语言,tp5多语言后台开发

1.开启语言包功能

'lang_switch_on' => true,

2.支持的语言列表

'lang_list' => ['zh-cn','en-us'],

二.语言定义(默认语言无需定义,下面会提到原因及使用)方法

1.文件定义

框架或模块目录\lang\en-us.php

return [

    '按钮1'=>'button1',//表示模板内使用{:lang('按钮1')}获得的字符在英文状态下显示为button1

    '按钮2'=>'button2',

   '其它语言变量'=>'Other language variables',

];

ps:如果还需要加载其他的语言包,可以在自动检测语言之后,用load方法进行加载:

\think\Lang::load(路径\lang\语言.php');

.动态定义在控制器方法中

a.单个设置

\think\Lang::set($name, $value,'zh-cn');//$name $value是键值对

\think\Lang::set($name, $value,'en-us');

如\think\Lang::set('按钮', 'button','en-us');//表示模板内使用{:lang('按钮')}获得的字符在英文状态下显示为button

b.批量设置

\think\Lang::set(['按钮1'=>'button1','按钮2'=>'button2'],'','en-us');

ps:

1.动态定义优先

2.默认语言无需语言包或动态设置,控制器方法,模板内在需要的地方可以直接使用默认语言变量,再编写其它语言包或动态设置其它语言(需保证默认语言变量是其它语言变量的键值)即可切换,

如使用语言为中(默认)英文,那么只要编写英文语言包

return [

    '中文'=>'Chinese',

    //.........

];

模板使用{:lang('中文')},那么在中文状态下会显示'中文',英文状态下会显示'Chinese',

模板使用{:lang('中文中文')},那么在中英文状态下都会显示'中文中文',英文状态下无效,因为中文语言变量'中文中文'与英文语言变量的键值'中文'不一致


三.在项目(貌似模块无效)公共文件(common.php)中选择自动侦测当前语言

\think\Lang::detect();

s:convention.php里有个'default_lang' => 'zh-cn',貌似设置无效.为使之有效,可以修改detect方法如下

public static function detect() {

   // 自动侦测设置获取语言选择

    $langSet = Config::get('default_lang');

   if (isset($_GET[self::$langDetectVar])) {

        // url中设置了语言变量

        $langSet = strtolower($_GET[self::$langDetectVar]);

       Cookie::set(self::$langCookieVar, $langSet, 3600);

    } elseif (Cookie::get(self::$langCookieVar)) {

        // 获取上次用户的选择

        $langSet = strtolower(Cookie::get(self::$langCookieVar));

    } elseif ($langSet) {

     // 获取默认语言

        Cookie::set(self::$langCookieVar, $langSet, 3600);

    } elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {

       // 自动侦测浏览器语言

        preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);

        $langSet = strtolower($matches[1]);

        Cookie::set(self::$langCookieVar, $langSet, 3600);

    }

    if (empty(self::$allowLangList) || in_array($langSet, self::$allowLangList)) {

        // 合法的语言

        self::$range = $langSet;

    }

}


4.自动侦测浏览器语言

四.控制器方法编写(模块/Index.php)


   //转英文

     public function enlang() {

          $lang=input('lang');

          switch ($lang) {

              case 'en':

                  cookie('think_var', 'en-us');

              break;

             case 'zn':

                  cookie('think_var', 'zh-cn');

              break;

            default:

                 cookie('think_var','zh-cn');

              break;

          }

      }

五.模板使用(index.html)

 

{:lang('其它语言变量')}

语言的使用是通过设置cookie来实现的,由于cookie的特性,所以设置后需要刷新才能成功

模板发送ajax请求成功后刷新页面


0

0条评论

别默默看啦~登录/注册一起参与讨论吧~

热门标签

教腾豪
微信扫一扫立即咨询
账号登录|扫码登录

立即注册 |忘记密码?

欢迎注册

已有账号马上登录

重置密码

扫码绑定微信
微信扫一扫

绑定手机号

分享到-微信

举报

  • 举报类型:

  • 举报描述:

您好,当前积分不足。

在线客服
拨打电话
17330196230 13230981129
顶部