## 多語言
在`FastAdmin`應用插件中支持多語言切換,如果我們在開發過程中需要使用到多語言展示,可以按以下方法進行修改。
## 語言包文件
多語言目錄為`lang`,其中存放以語言標識命名的語言包。
~~~bash
addons/mydemo/lang/zh-cn.php
addons/mydemo/lang/en.php
...
~~~
## 多語言輸出
我們在插件開發過程中可以使用多語言功能來自動輸出相應的文字
### 視圖模板
如果我們需要在視圖模板中實現多語言輸出替換,可以使用如下的方式,例如:
~~~bash
<a href="/">{:__('Home')}</a>
<a href="/">{:__('This is %s,base on %s', 'FastAdmin', 'ThinkPHP5')}</a>
~~~
此時我們需要在對應的多語言文件定義語言包,例如:
~~~php
<?php
return [
? ?'Home' ? ? ? ? ? ? ? ? ? ? ? ? ? ? => '首頁',
? ?'This is %s,base on %s' ? ? ? ? ? ?=> '這是%s,基于%s'
];
~~~
則在中文語言環境下展示效果為
~~~xml
<a href="/">首頁</a>
<a href="/">這是FastAdmin,基于ThinkPHP5</a>
~~~
如果未定義語言包,默認會展示為
~~~xml
<a href="/">Home</a>
<a href="/">This is FastAdmin,base on ThinkPHP5</a>
~~~
### 控制器
如果我們需要在控制器中使用多語言,我們仍然可以使用`__`方法來實現,例如:
~~~bash
$title = __('Home');
$description = __('This is %s,base on %s', 'FastAdmin', 'ThinkPHP5');
~~~
此時`$title`和`$descripttion`的值為自動進行多語言轉換后的值。
## 切換多語言
當我們有多個語言世時,如果需要在前臺切換多語言,我們可以通過以下幾種方式進行切換
### URL參數切換
我們可以通過傳遞`lang`參數來強制使用指定語言包,例如
~~~javascript
http://www.example.com/addons/mydemo/?lang=en
http://www.example.com/addons/mydemo/?lang=zh-cn
~~~
### Cookie變量切換
很多時候我們切換一次多語言后,后續請求的頁面也需要保持切換后的指定語言來顯示,此時我們就需要使用到`cookie`來存儲語言標識。
我們可以通過在PHP中或JS操作`think_var`這個`cookie`值來切換多語言。
~~~javascript
//php
setcookie('think_var', 'en');
//js
function setCookie(name,value,seconds) {
? ?var expires = "";
? ?if (seconds) {
? ? ? ?var date = new Date();
? ? ? ?date.setTime(date.getTime() + (seconds*1000));
? ? ? ?expires = "; expires=" + date.toUTCString();
? ?}
? ?document.cookie = name + "=" + (value || "") ?+ expires + "; path=/";
}
setCookie('think_var', 'en');
~~~
## 常見問題
1. 語言包定義是不區分大小寫的
2. 默認多語言會自適應用戶當前的瀏覽環境,如果需要關閉自適應,請修改`application/config.php`中的`lang_switch_on`修改為`false`