多语言

在CMS内容管理系统中前台支持多语言切换,默认的模板是未使用多语言,如果我们在开发过程中需要使用到多语言展示,可以按以下方法进行修改。

laMTxQjomdZWgKLqBABFboshpCOGQoBv31VTDA==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

语言包文件

lJESWKCodVBPAauqzEEZYnsknBiHU2f3VWdRLw==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
addons/cms/lang/zh-cn.php
addons/cms/lang/en.php
...
IqMsRHbXzowPdfnVn6FVD2NM5tFWP23Cl+cGQQ==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

模板标签

jJVrNxCluEzhLFGt+0vrIjrD8XvO/U/Gmj0rFg==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

我在们开发修改CMS模板标签时可以使用多语言模板标签来自动输出相应的文字,例如:

TcfpJsXOgUSEWLRZqStEBIob8QJ4NWn5Ajdi7A==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
<a href="/">{:__('Home')}</a>
<a href="/">{:__('This is %s,base on %s', 'FastAdmin', 'ThinkPHP5')}</a>
pXdrNjsyCGABEUgFH2AUrsrHCRQBDhdXVGGerw==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

此时我们需要在对应的多语言文件定义语言包,例如:

QSKBdpxltmngcfPwHQQyNQ30eDqZgRd4HFkstQ==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
<?php

return [
    'Home'                             => '首页',
    'This is %s,base on %s'            => '这是%s,基于%s'
];
eiGHoTdpjaPNsSBnUpVjHUtKog7SwdvKXDkUpw==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

则在中文语言环境下展示效果为

bJuOrhPpXoecWqjSuyUSEGqBfdp5tBMENlGSwA==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
<a href="/">首页</a>
<a href="/">这是FastAdmin,基于ThinkPHP5</a>
fHMjuLlhKDtbeTmcdezhbAZEVEaleL5P3YDLbQ==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

如果未定义语言包,默认会展示为

vJILdligCGDPeTRk+nYBrN5WZHiHbUOmOtAl1g==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
<a href="/">Home</a>
<a href="/">This is FastAdmin,base on ThinkPHP5</a>
cyYoexRGuXAJBrknQztbWZ6WQngK+WuiAQNyXA==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

切换多语言

KFsndmfRVjwBONYTeHaUitOmMgFHRfNnOAJzAg==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

当我们有多个语言世时,如果需要在前台切换多语言,我们可以通过以下几种方式进行切换

OCDJAEfZlkPXcLsWCYUKk2HmuHGaO8F5S4U6jA==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

URL参数切换

我们可以通过传递lang参数来强制使用指定语言包,例如

pdhMnuFWgUmlKBoSNmQYJ95tUA30cEVvDPGO0A==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
http://yoursite.com/cms/?lang=en
http://yoursite.com/cms/?lang=zh-cn
fPlipNuQDsoZVhBvDJF4DsWs7TMOwJSXp9I4nQ==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

Cookie变量切换

很多时候我们切换一次多语言后,后续请求的页面也需要保持切换后的指定语言来显示,此时我们就需要使用到cookie来存储语言标识。
我们可以通过在PHP中或JS操作think_var这个cookie值来切换多语言。

LygtfxHUTZhSpNjohNEM+6hGLmEREG4Si6WM0Q==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
//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');
WpZhwMqPUeazlnGHjc5IV6uo0rjMSSOqhHqkwQ==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

常见问题

lhQKUmYkuIFfdysqM1trtiwNLL0SjKA/yZoxNg==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
  1. 语言包定义是不区分大小写的
  2. jmQTkOSAGriXRpVcAqPHr5TbP4Y39u04V7sLiw==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
  3. 默认多语言会自适应用户当前的浏览环境,如果需要关闭自适应,请修改application/config.php中的lang_switch_on修改为false
  4. KhxOgdRMnUvDmXfGPEeB7EftaBnVGeLzccoMuA==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
文档最后更新时间:2025-11-21 14:48:09
著作权归应用插件开发者所有,未经许可,禁止转载、复制此文档的任何内容。

文档
目录

深色
模式

切换
宽度