很多公司面向全球服务,网站多语言就成了必选项,那么如何实现网站多语言呢?
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-660-8066