在Fastadmin中API接口实现多语言提示语
目录
多语言
修改配置
在app/config.php中开启多语言。
开启多语言改为true,允许的语言列表为中文、英文、意大利语,如下:
// 是否开启多语言
'lang_switch_on' => true,
// 默认全局过滤方法 用逗号分隔多个
'default_filter' => '',
// 默认语言
'default_lang' => 'zh-cn',
// 允许的语言列表
'allow_lang_list' => ['zh-cn', 'en', 'italy'],
设置多语言包
在api中lang下增加en、italy目录,增加语言包,如下:

切换语言
在api/user.php中增加设置语言方法,如下:
/**
* 切换语言
*
* @ApiMethod (POST)
* @ApiParams (name="lang", type="string", required=true, description="语言类型")
*/
public function setLang()
{
$lang = $this->request->post('lang', 'zh-cn');
if (!$lang) {
$this->error(__('Please select language type'));
}
// 中文、英文、意大利语
if (!in_array($lang, ['zh-cn', 'en', 'italy'])) {
$this->error(__('Language type is incorrect'));
}
if (!$this->auth->setLang($lang)) {
$this->error(__('Operation failed'));
}
$this->success(__('Operation completed'));
}
在common/library/Auth.php中增加设置语言方法,如下:
/**
* 设置语言
* @param $lang
* @return mixed
*/
public function setLang($lang)
{
setcookie('think_var', $lang);
return $this->_user->save(['lang' => $lang]);
}
通过cookie修改think_var变量来切换语言,因为在下次用户登录后保持不变,需要同步到数据库中。
登录修改
在登录方法中增加同步设置语言,设置用户之前设置的语言,如下:

注册修改
在注册时,增加用户默认语言为中文,如下:

注意:在当前接口修改语言后,在下一个接口才换显示为切换后的语言提示。
总结
API实现多语言,基础是配置多语言包文件,核心是变量值修改;
通过用户设置语言触发,并在登录和注册时进行同步语言设置。
6410

被折叠的 条评论
为什么被折叠?



