ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 多语言 在CMS内容管理系统中前台支持多语言切换,默认的模板是未使用多语言,如果我们在开发过程中需要使用到多语言展示,可以按以下方法进行修改。 ### 语言包文件 ~~~bash addons/cms/lang/zh-cn.php addons/cms/lang/en.php ... ~~~ ### 模板标签 我在们开发修改CMS模板标签时可以使用多语言模板标签来自动输出相应的文字,例如: ~~~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> ~~~ ### 切换多语言 当我们有多个语言世时,如果需要在前台切换多语言,我们可以通过以下几种方式进行切换 #### URL参数切换 我们可以通过传递`lang`参数来强制使用指定语言包,例如 ~~~javascript http://yoursite.com/cms/?lang=en http://yoursite.com/cms/?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`