tp5多語言開啟
在config.php中配置檔案
// 是否開啟多語言
'lang_switch_on' => true,
'lang_list' => ['zh-cn','en-us'],
'default_filter' => '',
'lang_auto_detect' => true,
'VAR_LANGUAGE' => 'lang', // 預設語言切換變數
// 預設全域性過濾方法 用逗號分隔多個
'default_filter' => '',
// 預設語言
'default_lang' => 'zh-cn',
然後在application目錄下新建lang資料夾
在html中
<script>
$('.but').click(function () {
var data = {'lang': $(this).attr('lang')}
$.get("{:url('index/index/lang')}", data, function () {
location.reload();
})
})
</script>
<a id="dd-wzqz" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Change language:<span class="caret"></span></a>
<ul class="dropdown-menu" aria-labelledby="dd-wzqz">
<li><a href="" lang="cn" class="but">Chinese (Simplified)</a></li>
<li><a href="" lang="en" class="but">English</a></li>
<li><a href="" lang="jp" class="but">Japanese</a></li>
</ul>
請求控制器:
建構函式中:
//多語言
if(!(Cookie::has('think_var'))){
$this->lang();
}
$this->assign('think_lang',Cookie::get('think_var'));
//語言切換
public function lang() {
$lang = input('?get.lang') ? input('get.lang') : 'cn';
switch ($lang) {
case 'cn': //中文
cookie('think_var', 'zh-cn');
break;
case 'en': //英文
cookie('think_var', 'en-us');
break;
case 'jp': //日語
cookie('think_var', 'jp');
break;
//預設語言
default:
cookie('think_var', 'zh-cn');
}
}
在語言包裡lang/en-us.php中
<?php
return [
"HEANDER_LANG"=>"HEANDER_LANG",
"HEANDER_LANG_CHT"=>"HEANDER_LANG_CHT",
"HEANDER_LANG_EN"=>"English",
'name'=>'english name',
];
?>
最後替換D:\WWW\picture\thinkphp\library\think\Lang.php檔案的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;
}
return self::$range;
}