很多公司面向全球服务,网站多语言就成了必选项,那么如何实现网站多语言呢?
ThinkPHP作为国内非常流行的PHP网站开发框架,其实他已经内置集成了多语言的功能,只要我们按照要求配置就行了。
首先,在中间件配置文件middleware.php中启用,注意,如果是多应用模式,则需要使用的应用里加载。如下代码所示:
return [
// 多语言加载
\think\middleware\LoadLangPack::class,
];
其次,配置好多语言配置文件lang.php,如下代码所示
return [
// 默认语言
'default_lang' => env('lang.default_lang', 'en-us'),
// 允许的语言列表
'allow_lang_list' => ['en-us','zh-cn','zh-hk'],
// 多语言自动侦测变量名,可通过URL参数判断使用哪个语言
'detect_var' => 'lang',
// 是否使用Cookie记录
'use_cookie' => true,
// 多语言cookie变量,通过保存这个cookie记录用户选项
'cookie_var' => 'think_lang',
// 多语言header变量
'header_var' => 'think-lang',
// 扩展语言包,主要是分多个语言文件的时候使用
'extend_list' => [
'en-us' => [
app()->getAppPath() . 'home\lang\en-us\common.php',
app()->getAppPath() . 'home\lang\en-us\index.php'
],
'zh-cn' => [
app()->getAppPath() . 'home\lang\zh-cn\common.php',
app()->getAppPath() . 'home\lang\zh-cn\index.php'
],
'zh-hk' => [
app()->getAppPath() . 'home\lang\zh-hk\common.php',
app()->getAppPath() . 'home\lang\zh-hk\index.php'
],
],
// Accept-Language转义为对应语言包名称
'accept_language' => [
'zh-hans-cn' => 'zh-cn',
],
// 是否支持语言分组
'allow_group' => true
];
再次,编写多语言翻译文件。如下图所示,主要以PHP数组方式,可分组配置,每个语言版本变量一致。
最后,绑定语言变量到模板,并通过URL切换语言
绑定变量如:{$Think.lang.site_menu_home}
切换语言只需要在URL后面加上参数lang,如:index.php?lang=zh-en
是不是很简单?如下所示可实现
方维网络专注于高端网站定制和小程序开发,为客户提供周到的网络服务,如有需求,欢迎咨询400-800-9385