多语言
在FastAdmin应用插件中支持多语言切换,如果我们在开发过程中需要使用到多语言展示,可以按以下方法进行修改。
语言包文件
多语言目录为lang,其中存放以语言标识命名的语言包。
addons/mydemo/lang/zh-cn.php
addons/mydemo/lang/en.php
...多语言输出
我们在插件开发过程中可以使用多语言功能来自动输出相应的文字
视图模板
如果我们需要在视图模板中实现多语言输出替换,可以使用如下的方式,例如:
<a href="/">{:__('Home')}</a>
<a href="/">{:__('This is %s,base on %s', 'FastAdmin', 'ThinkPHP5')}</a>此时我们需要在对应的多语言文件定义语言包,例如:
<?php
return [
'Home' => '首页',
'This is %s,base on %s' => '这是%s,基于%s'
];则在中文语言环境下展示效果为
<a href="/">首页</a>
<a href="/">这是FastAdmin,基于ThinkPHP5</a>如果未定义语言包,默认会展示为
<a href="/">Home</a>
<a href="/">This is FastAdmin,base on ThinkPHP5</a>控制器
如果我们需要在控制器中使用多语言,我们仍然可以使用__方法来实现,例如:
$title = __('Home');
$description = __('This is %s,base on %s', 'FastAdmin', 'ThinkPHP5');此时$title和$descripttion的值为自动进行多语言转换后的值。
切换多语言
当我们有多个语言世时,如果需要在前台切换多语言,我们可以通过以下几种方式进行切换
URL参数切换
我们可以通过传递lang参数来强制使用指定语言包,例如
http://www.example.com/addons/mydemo/?lang=en
http://www.example.com/addons/mydemo/?lang=zh-cnCookie变量切换
很多时候我们切换一次多语言后,后续请求的页面也需要保持切换后的指定语言来显示,此时我们就需要使用到cookie来存储语言标识。
我们可以通过在PHP中或JS操作think_var这个cookie值来切换多语言。
//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');常见问题
- 语言包定义是不区分大小写的
- 默认多语言会自适应用户当前的浏览环境,如果需要关闭自适应,请修改
application/config.php中的lang_switch_on修改为false
文档最后更新时间:2023-09-25 16:24:49
著作权归应用插件开发者所有,未经许可,禁止转载、复制此文档的任何内容。
未解决你的问题?请到「问答社区」反馈你遇到的问题