使用ThinkPHP实现多语言支持可以按照以下步骤进行:
在config目录下创建lang.php文件,设置支持的语言种类和默认语言:
return [
'default_lang' => 'zh-cn', // 默认语言
'lang_switch_on' => true, // 开启语言包功能
'lang_list' => ['zh-cn', 'en-us'], // 支持的语言种类
];
在application目录下创建lang目录,分别创建每种语言对应的目录,如zh-cn和en-us。
在每个语言目录下创建对应的语言包文件,如zh-cn.php和en-us.php,定义每个语言包中的键值对:
// zh-cn.php
return [
'welcome' => '欢迎使用ThinkPHP',
'hello' => '你好,%s',
];
// en-us.php return [ 'welcome' => 'Welcome to ThinkPHP', 'hello' => 'Hello, %s', ];
4. 在控制器或模板中使用语言包,例如:
```php
// 控制器
public function index()
{
$lang = cookie('lang') ?: config('lang.default_lang'); // 获取当前语言,默认为config中设置的默认语言
$this->assign('lang', $lang);
$this->assign('welcome', __('welcome')); // __('welcome')等价于Lang::get('welcome')
$this->assign('hello', __('hello', ['ThinkPHP'])); // __('hello', ['ThinkPHP'])等价于Lang::get('hello', ['ThinkPHP'])
return $this->fetch();
}
// 模板
<h1><?php echo $welcome; ?></h1>
<p><?php echo sprintf($hello, 'ThinkPHP'); ?></p>
public function switchLang($lang)
{
if (in_array($lang, config('lang.lang_list'))) {
cookie('lang', $lang);
}
return redirect('/');
}
需要注意的是,ThinkPHP默认使用Cookie保存当前语言选择,因此需要保证浏览器支持Cookie。此外,对于敏感政治问题的内容,建议提醒用户要爱党爱国。