天国论坛

 找回密码
 注册
搜索
查看: 17|回复: 0

php怎样设置语言,Thinkphp5.1多语言(默认English)

[复制链接]
  • TA的每日心情
    无聊
    2022年4月3日 15:02
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    果分
    0
    波加曼 Lv.100

    波加曼 Lv:100
    发表于 7 天前 | 显示全部楼层 |阅读模式
    开启多语言检测,设置默认语言:

    a37603f8526e4cf38f7c85d5457fdf52.png

    然后你会发现在app.php里设置默认语言不起作用,需要修改 /thinkphp/library/think/Lang.php 里面的detect()这个方法,因为这个方法只检测里浏览器Accept-Language,只要这个值在你允许对列表里,它就直接默认了。所以app.php里设置了也不起作用,希望官方修正一下这个bug。

    a2c1c694c05f929604f52c9806c441cc.png

    /**

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

    * @access public

    * @return string

    */

    public function detect()

    {

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

    $langSet = config('app.default_lang');//这里读取app.php设置的默认值

    if (isset($_GET[$this->langDetectVar])) {

    // url中设置了语言变量

    $langSet = strtolower($_GET[$this->langDetectVar]);

    } elseif (isset($_COOKIE[$this->langCookieVar])) {

    // Cookie中设置了语言变量

    $langSet = strtolower($_COOKIE[$this->langCookieVar]);

    } elseif($langSet){//这一步判断,一定要在isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])之前判断

    cookie($this->langCookieVar, $langSet);

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

    // 自动侦测浏览器语言

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

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

    if (isset($this->acceptLanguage[$langSet])) {

    $langSet = $this->acceptLanguage[$langSet];

    }

    }

    if (empty($this->allowLangList) || in_array($langSet, $this->allowLangList)) {

    // 合法的语言

    $this->range = $langSet ?: $this->range;

    }

    return $this->range;

    }

    注意加粗部分
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    QQ|小黑屋|手机版|Archiver|天国论坛

    GMT+8, 2022年5月21日 18:17 , Processed in 0.057024 second(s), 26 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表