tp5多语言切换

一.配置点击打开链接
1.开启语言包功能
'lang_switch_on' => true,
2.支持的语言列表
'lang_list' => ['zh-cn','en-us'],
二.语言定义(默认语言无需定义,下面会提到原因及使用)方法
1.文件定义
框架或模块目录\lang\en-us.php
return [
    '按钮1'=>'button1',//表示模板内使用{:lang('按钮1')}获得的字符在英文状态下显示为button1
    '按钮2'=>'button2',
    '其它语言变量'=>'Other language variables',
];
ps:如果还需要加载其他的语言包,可以在自动检测语言之后,用load方法进行加载:
\think\Lang::load(路径\lang\语言.php');
2.动态定义在控制器方法中
a.单个设置
\think\Lang::set($name, $value,'zh-cn');//$name $value是键值对
\think\Lang::set($name, $value,'en-us');
如\think\Lang::set('按钮', 'button','en-us');//表示模板内使用{:lang('按钮')}获得的字符在英文状态下显示为button
b.批量设置
\think\Lang::set(['按钮1'=>'button1','按钮2'=>'button2'],'','en-us');
ps:
1.动态定义优先
2.默认语言无需语言包或动态设置,控制器方法,模板内在需要的地方可以直接使用默认语言变量,再编写其它语言包或动态设置其它语言(需保证默认语言变量是其它语言变量的键值)即可切换,
如使用语言为中(默认)英文,那么只要编写英文语言包
return [
    '中文'=>'Chinese',
    //.........
];
模板使用{:lang('中文')},那么在中文状态下会显示'中文',英文状态下会显示'Chinese',
模板使用{:lang('中文中文')},那么在中英文状态下都会显示'中文中文',英文状态下无效,因为中文语言变量'中文中文'与英文语言变量的键值'中文'不一致

三.在项目(貌似模块无效)公共文件(common.php)中选择自动侦测当前语言
\think\Lang::detect();
ps:convention.php里有个'default_lang' => 'zh-cn',貌似设置无效.为使之有效,可以修改detect方法如下
public static function detect() {
    // 自动侦测设置获取语言选择
    $langSet = Config::get('default_lang');
    if (isset($_GET[self::$langDetectVar])) {
        // url中设置了语言变量
        $langSet = strtolower($_GET[self::$langDetectVar]);
        Cookie::set(self::$langCookieVar, $langSet, 3600);
    } elseif (Cookie::get(self::$langCookieVar)) {
        // 获取上次用户的选择
        $langSet = strtolower(Cookie::get(self::$langCookieVar));
    } elseif ($langSet) {
     // 获取默认语言
        Cookie::set(self::$langCookieVar, $langSet, 3600);
    } elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
        // 自动侦测浏览器语言
        preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
        $langSet = strtolower($matches[1]);
        Cookie::set(self::$langCookieVar, $langSet, 3600);
    }
    if (empty(self::$allowLangList) || in_array($langSet, self::$allowLangList)) {
        // 合法的语言
        self::$range = $langSet;
    }
}

4.自动侦测浏览器语言
四.控制器方法编写(模块/Index.php)

    //转英文
     public function enlang() {
          $lang=input('lang');
          switch ($lang) {
              case 'en':
                  cookie('think_var', 'en-us');
              break;
              case 'zn':
                  cookie('think_var', 'zh-cn');
              break;
            default:
                 cookie('think_var','zh-cn');
              break;
          }
      }
五.模板使用(index.html)
  <button class='n  layui-btn'   type="button" lang='en'>{:lang('英文')}</button>
<button  class='n layui-btn layui-btn-danger' lang='zn' type="button">{:lang('中文')}</button>
<button type="button" lang='其它语言'>{:lang('按钮3')}</button>
{:lang('其它语言变量')}
语言的使用是通过设置cookie来实现的,由于cookie的特性,所以设置后需要刷新才能成功
模板发送ajax请求成功后刷新页面
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.js"></script>
<script>
$('.n').click(function(){
    var data={'lang':$(this).attr('lang')};
    $.get("{:url('Index/enlang')}",data,function(){
        location.reload();
    })
})
</script>



  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
DSmall多商户开源商城源码是一个以thinkPHP为框架进行开发的多用户商城系统源码。网站功能包含:网站设置、帐号同步、上传设置、权限设置、地区管理、数据备份、操作日志、分类管理、品牌管理、店铺等级、店铺分类、店铺帮助、会员管理、会员级别、积分管理、预存款、实物订单、虚拟订单、退货管理、咨询管理、评价管理、文章分类、文章管理、抢购管理、限时折扣、满即送、手机端拼团、会员等级折扣、优惠套餐、推荐展位、活动管理、兑换礼品、行业分析、店铺统计、商品分析、营销分析等 安装须知: 请将public目录设置为根目录后,直接访问即可进行安装 环境要求: PHP5.4以上版本(注意:PHP5.4dev版本和PHP6均不支持) DSmall多商户开源商城源码 更新日志: 2018年1月2日更新: 1)新增即时聊天功能 2)新增店铺图片对象存储 3)新增收货地址可设置精确位置,可查看最近店铺。 4)新增用户推荐注册,推荐注册用户在商场内购买商品可以获得佣金。 5)修复[CNVD国家漏洞库]测试提出的DSmall多商户开源商城系统dropcommonmsg方法存在SQL注入漏洞、get_subject_by_typeid方法存在SQL注入漏洞、check_email方法存在SQL注入漏洞、SQL注入漏洞及系统的其他小bug 2018年1月26日更新 1)优惠券相关BUG 修复 2)修复优惠套装购买 3)代金券相关功能完善 4)统计相关BUG修复 5)修复若干使用小bug 2018年4月02日更新 1)优化数据表结构 2)优化店铺相册生成带缩略图水印功能,生成缩略图不覆盖原图。 3)修复到货通知BUG 4)去除多余短信配置信息。 5)优化,用户发送短信加入短信记录,同时对发送做出限制,系统短信则不做限制。 6)简化开店流程,去除非必要信息。 2018年5月7日更新 1.cookie中的购物车登录后不能存进数据库BUG 2.volist 循环方法 统一为 foreach 3.数据库字段 pdr_payment_name去除 支付名称通过 get_order_payment_name 方法获取 4.Payment第三方支付优化 5.定时任务相关优化 6.解决ueditor插入代码相关BUG 7.优化第三方图片库,阿里云OSS 8.手机端功能以及界面优化 2018年6月20日更新 1.新增拼团功能 2.支付功能相关优化 3.手机端token获取方法优化 4.对一键登录相关优化处理,以及特殊符号名称处理。 5.微信订单重复支付BUG处理 6.优化处理虚拟团购功能 7.手机用户中心界面优化 8.邮件发送支持支持SSL加密协议 9.店铺等级费用相关扣费优化 2018年8月3日更新 1.新增会员等级折扣功能 2.新增后台自定义自动收货时间 3.评价管理分页修复 4.用户登录注册验证码修复。 5.手机用户中心界面优化 2018年8月21日更新 1.优化会员等级折扣功能 2.优化后台统计功能 3.优化后台的界面显示 4.优化手机端及语言包 2018年9月17日更新 1.新增双语语言切换 2.分销功能强化,新增分销商品管理,分销员管理,分销等级管理。 3.手机端功能以及界面优化 2018年10月9日更新 1. 优化缓存浏览记录 2. 优化分销佣金分拥 3. 修复微信自动登录参数 4. 修复双语切换BUG
DSmall多商户开源商城源码是一个以thinkPHP为框架进行开发的多用户商城系统源码。网站功能包含:网站设置、帐号同步、上传设置、权限设置、地区管理、数据备份、操作日志、分类管理、品牌管理、店铺等级、店铺分类、店铺帮助、会员管理、会员级别、积分管理、预存款、实物订单、虚拟订单、退货管理、咨询管理、评价管理、文章分类、文章管理、抢购管理、限时折扣、满即送、手机端拼团、会员等级折扣、优惠套餐、推荐展位、活动管理、兑换礼品、行业分析、店铺统计、商品分析、营销分析等 安装须知: 请将public目录设置为根目录后,直接访问即可进行安装 环境要求: PHP5.4以上版本(注意:PHP5.4dev版本和PHP6均不支持) DSmall多商户开源商城源码 更新日志: 2018年8月3日更新 1.新增会员等级折扣功能 2.新增后台自定义自动收货时间 3.评价管理分页修复 4.用户登录注册验证码修复。 5.手机用户中心界面优化 2018年8月21日更新 1.优化会员等级折扣功能 2.优化后台统计功能 3.优化后台的界面显示 4.优化手机端及语言包 2018年9月17日更新 1.新增双语语言切换 2.分销功能强化,新增分销商品管理,分销员管理,分销等级管理。 3.手机端功能以及界面优化 2018年10月9日更新 1. 优化缓存浏览记录 2. 优化分销佣金分拥 3. 修复微信自动登录参数 4. 修复双语切换BUG 2018年11月12日更新 1. 修复微信自动登录没有unionid时需要中断 2. 修复苹果手机小程序支付的小BUG 3. 修复语言包BUG 4. 修复SNS显示错位 5. 去除初始化数据的多余图片 6. 后台界面优化
### 回答1: TP5.0.24 是一个开源框架,其中提供了多语言支持功能。然而,有时候在使用TP5.0.24进行开发时,我们可能会遇到多语言不生效的问题。 造成多语言不生效的原因可能有以下几种: 1. 配置错误:首先,我们需要确保在应用配置文件(config/app.php)中设置了正确的语言包路径。一般情况下,我们会将语言包文件存放在resource/lang目录下,并在配置文件中指定相应的路径。 ``` 'lang_switch_on' => true, 'lang_detect_var' => 'lang', 'lang_list' => ['zh-cn', 'en-us'], 'default_lang' => 'zh-cn', 'pathinfo_depr' => '/', 'allow_lang_list' => ['zh-cn', 'en-us'], ``` 2. 语言包文件错误:其次,我们需要确保语言包文件存在,并且文件名符合TP5语言包命名规范。通常情况下,一个语言包文件包含一个数组,数组的键值对表示相应的语言项和对应的翻译内容。 ``` <?php return [ 'hello' => '你好', 'welcome' => '欢迎', ... ]; ``` 3. 语言切换错误:最后,我们需要确保在应用中正确地切换语言。可以通过URL传递参数、Cookie、Session等方式进行语言切换,具体的实现方式与项目需求相关。 通过检查以上问题并逐一解决,我们就可以解决TP5.0.24多语言不生效的问题。如果以上步骤都已检查无误而仍然无法解决问题,可能是其他代码或配置问题导致的,可以进一步检查和排除。如果实在无法解决,我们可以参考官方文档或者在TP5的开源社区中寻求帮助。 ### 回答2: 在TP5.0.24中,多语言不生效可能有以下几个原因: 1. 未正确配置语言文件路径:TP5.0.24采用了新的语言文件路径配置方式,需要在应用的`config`目录下的`app.php`文件中配置正确的语言文件路径,确保语言文件存在。 2. 语言文件编码不一致:如果语言文件的编码格式与应用的编码格式不一致,会导致多语言不生效。请确保语言文件的编码格式和应用的编码格式匹配。 3. 语言包名称设置问题:在应用的`config`目录下的`app.php`文件中,需要设置`lang_switch_on`为`true`来启用语言包功能,同时需要设置`default_lang`为默认语言包的名称。检查是否正确设置了这两个参数。 4. 缓存问题:多语言不生效可能是由于缓存问题导致的,解决方法是清除应用的缓存,在应用的根目录下执行`php think clear`命令清除缓存。 5. 使用语言变量时的写法问题:在应用代码中使用多语言时,要使用`lang()`函数,同时确保语言包文件中存在要使用的语言变量。 通过检查以上几个方面,可以解决TP5.0.24多语言不生效的问题。如果仍然无法解决,可以考虑更新应用到最新版本,或在官方文档、论坛等渠道寻求进一步帮助。 ### 回答3: 在使用TP5.0.24开发多语言功能时,如果发现多语言不生效,可能有以下几个可能的原因: 1. 配置错误:首先,确保在应用的`config`文件夹下的`app.php`文件中,`default_lang`配置项的值正确设置为你所需要的默认语言。其次,在同一个文件中,确保`lang_switch_on`配置项值为`true`,以启用语言切换功能。另外,检查`lang_list`配置项的值,确保包含了你需要支持的语言列表。 2. 语言包文件问题:多语言功能需要将不同语言的翻译内容存储在语言包文件中。确保你的应用的`lang`文件夹下,已经创建了对应语言语言包文件夹,并在其中创建了用于存放不同语言翻译的PHP文件(如以语言代码为文件名的文件)。 3. 错误的语言切换参数:在切换语言时,确保参数的值正确。在URL中传递`lang`参数或使用`Cookie`进行语言切换时,参数的值需要与你应用中提供的语言代码一致。 以上是一些常见的导致TP5.0.24多语言不生效的原因,希望能对你有所帮助。如果问题仍然存在,建议检查代码中的相关部分,如控制器、视图和配置等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值