当前位置: 亚洲城ca88 > ca88 > 正文

ThinkPHP多语言帮衬与多模板支持概述,thinkphp实现

时间:2019-07-19 05:38来源:ca88
本文以实例格局简述了ThinkPHP的多语言帮助与多模板帮忙。是ThinkPHP中卓殊关键的技术,分享给我们供大家参照他事他说加以考察。具体如下: 1.在Home(你取的等级次序名)的config.php中增

本文以实例格局简述了ThinkPHP的多语言帮助与多模板帮忙。是ThinkPHP中卓殊关键的技术,分享给我们供大家参照他事他说加以考察。具体如下:

1.在Home(你取的等级次序名)的config.php中增添如下配置

1.在Home(你取的类型名)的config.php中加多如下配置

一、ThinkPHP多语言帮忙:

复制代码 代码如下:

<?php  return array(      //'配置项'=>'配置值'          'LANG_SWITCH_ON'     =>     true,    //开启语言包功能                    'LANG_AUTO_DETECT'     =>     true, // 自动侦测语言          'DEFAULT_LANG'         =>     'zh-cn', // 默认语言                  'LANG_LIST'            =>    'en-us,zh-cn,zh-tw', //必须写可允许的语言列表          'VAR_LANGUAGE'     => 'l', // 默认语言切换变量  );  ?>

config.php配置文件中增添:

<?php
return array(
    //'配置项'=>'配置值'
        'LANG_SWITCH_ON'     =>     true,    //开启语言包功用       
        'LANG_AUTO_DETECT'     =>     true, // 自动侦测语言
        'DEFAULT_LANG'         =>     'zh-cn', // 暗许语言       
        'LANG_LIST'            =>    'en-us,zh-cn,zh-tw', //必须写可允许的言语列表
        'VAR_LANGUAGE'     => 'l', // 私下认可语言切换变量
);
?>

 

//多语言支持设置
'LANG_SWITCH_ON'=>true,
'DEFAULT_LANG'=>'zh-cn',
'LANG_AUTO_DETECT'=>true,
'LANG_LIST'=>'en-us,zh-cn,zh-tw',

2.Home的conf文件夹里增加三个php文件(tag.php),增加如下代码:

2.Home的conf文件夹里增加五个php文件(tag.php),增添如下代码:

Home/Lang/文件夹下创建八个文件夹,分别为zh-cn ,en-us ,zh-tw 分别表示简体中文,罗马尼亚语,繁体汉语

复制代码 代码如下:

return array(      // 添加下面一行定义即可      'app_begin' => array('CheckLang')  );

文本夹下能够创造与模板对应的文件,也许公用文件common.php

return array(
    // 增添底下一行定义就可以
    'app_begin' => array('CheckLang')
);

 

zh-cn/common.php页面如下:

3.把Extend/Behavior/CheckLangBehavior.class.php 文件复制到Home/lib/Behavior/中(完整版的thinkphp包才有,没有的话请自行创设)

3.把Extend/Behavior/CheckLangBehavior.class.php 文件复制到Home/lib/Behavior/中(完整版的thinkphp包才有,未有的话请自行成立)

<?php
return array(
 'welcome'=>'你好',
 'lan'=>'简体中文', 
);
?>

CheckLangBehavior.class.php代码:

CheckLangBehavior.class.php代码:

en-us/common.php页面如下:

复制代码 代码如下:

<?php  //  ----------------------------------------------------------------------  // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]  //  ----------------------------------------------------------------------  // | Copyright (c) 2006-2012 http://thinkphp.cn All rights reserved.  //  ----------------------------------------------------------------------  // | Licensed ( http://www.Apache.org/licenses/LICENSE-2.0 )  //  ----------------------------------------------------------------------  // | Author: liu21st <liu21st@gmail.com>  //  ----------------------------------------------------------------------    defined('THINK_PATH') or exit();  /**   * 语言检测 并自动加载语言包   * @category   Extend   * @package  Extend   * @subpackage  Behavior   * @author   liu21st <liu21st@gmail.com>   */  class CheckLangBehavior extends Behavior {      // 行为参数定义(默认值) 可在项目配置中覆盖      protected $options   =  array(              'LANG_SWITCH_ON'        => false,   // 默认关闭语言包功能              'LANG_AUTO_DETECT'      => true,   // 自动侦测语言 开启多语言功能后有效              'LANG_LIST'             => 'zh-cn', // 允许切换的语言列表 用逗号分隔              'VAR_LANGUAGE'          => 'l',        // 默认语言切换变量          );        // 行为扩展的执行入口必须是run      public function run(&$params){          // 开启静态缓存          $this->checkLanguage();      }        /**       * 语言检查       * 检查浏览器支持语言,并自动加载语言包       * @access private       * @return void       */      private function checkLanguage() {          // 不开启语言包功能,仅仅加载框架语言文件直接返回          if (!C('LANG_SWITCH_ON')){              return;          }          $langSet = C('DEFAULT_LANG');          // 启用了语言包功能          // 根据是否启用自动侦测设置获取语言选择          if (C('LANG_AUTO_DETECT')){              if(isset($_GET[C('VAR_LANGUAGE')])){                  $langSet = $_GET[C('VAR_LANGUAGE')];// url中设置了语言变量                  cookie('think_language',$langSet,3600);              }elseif(cookie('think_language')){// 获取上次用户的选择                  $langSet = cookie('think_language');              }elseif(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){// 自动侦测浏览器语言                  preg_match('/^([a-zd-] )/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);                  $langSet = $matches[1];                  cookie('think_language',$langSet,3600);              }              if(false === stripos(C('LANG_LIST'),$langSet)) { // 非法语言参数                  $langSet = C('DEFAULT_LANG');              }          }          // 定义当前语言          define('LANG_SET',strtolower($langSet));            $group = '';          $path    =   (defined('GROUP_NAME') && C('APP_GROUP_MODE')==1) ? BASE_LIB_PATH.'Lang/'.LANG_SET.'/' : LANG_PATH.LANG_SET.'/';          // 读取项目公共语言包          if(is_file(LANG_PATH.LANG_SET.'/common.php'))              L(include LANG_PATH.LANG_SET.'/common.php');               // 读取分组公共语言包          if(defined('GROUP_NAME')){              if(C('APP_GROUP_MODE')==1){ // 独立分组                  $file = $path.'common.php';              }else{ // 普通分组                  $file = $path.GROUP_NAME.'.php';                  $group = GROUP_NAME.C('TMPL_FILE_DEPR');              }              if(is_file($file))                  L(include $file);          }          // 读取当前模块语言包          if (is_file($path.$group.strtolower(MODULE_NAME).'.php'))              L(include $path.$group.strtolower(MODULE_NAME).'.php');      }  }
<?php
return array(
 'welcome'=>'how are you fine?',
 'lan'=>'english', 
);
?>

<?php
defined('THINK_PATH') or exit();
/**
 * 语言检查实验 并自行加载语言包
 * @category   Extend
 * @package  Extend
 * @subpackage  Behavior
 */
class CheckLangBehavior extends Behavior {
    // 行为参数定义(默许值) 可在品种布局中覆盖
    protected $options   =  array(
            'LANG_SWITCH_ON'        => false,   // 暗许关闭语言包作用
            'LANG_AUTO_DETECT'      => true,   // 自动侦测语言 开启多语言作用后灵光
            'LANG_LIST'             => 'zh-cn', // 允许切换的言语列表 用逗号分隔
            'VAR_LANGUAGE'          => 'l',        // 暗中同意语言切换变量
        );

 

zh-tw/common.php页面如下:

    // 行为扩展的举办入口必须是run
    public function run(&$params){
        // 开启静态缓存
        $this->checkLanguage();
    }

4.在Home里的lang文件夹下创建3个语言文件夹。分别是zh-cn  en-us  zh-tw,

<?php
return array(
 'welcome'=>'你好',
 'lan'=>'簡體中文', 
);
?>

    /**
     * 语言检查
     * 检查浏览器协理语言,并自行加载语言包
     * @access private
     * @return void
     */
    private function checkLanguage() {
        // 不开启语言包作用,仅仅加载框架语言文件直接重临
        if (!C('LANG_SWITCH_ON')){
            return;
        }
        $langSet = C('DEFAULT_LANG');
        // 启用了语言包功用
        // 依照是或不是启用自动侦测设置获取语言采取
        if (C('LANG_AUTO_DETECT')){
            if(isset($_GET[C('VAR_LANGUAGE')])){
                $langSet = $_GET[C('VAR_LANGUAGE')];// url中设置了言语变量
                cookie('think_language',$langSet,3600);
            }elseif(cookie('think_language')){// 获取上次用户的选料
                $langSet = cookie('think_language');
            }elseif(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){// 自动侦测浏览器语言
                preg_match('/^([a-zd-] )/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
                $langSet = $matches[1];
                cookie('think_language',$langSet,3600);
            }
            if(false === stripos(C('LANG_LIST'),$langSet)) { // 非德文言参数
                $langSet = C('DEFAULT_LANG');
            }
        }
        // 定义当前语言
        define('LANG_SET',strtolower($langSet));

在那四个公文夹里各创设三个common.php文件,如图:

模板index.php代码如下:

        $group = '';
        $path    =   (defined('GROUP_NAME') && C('APP_GROUP_MODE')==1) ? BASE_LIB_PATH.'Lang/'.LANG_SET.'/' : LANG_PATH.LANG_SET.'/';
        // 读取项目集体语言包
        if(is_file(LANG_PATH.LANG_SET.'/common.php'))
            L(include LANG_PATH.LANG_SET.'/common.php');    
        // 读取分组公共语言包
        if(defined('GROUP_NAME')){
            if(C('APP_GROUP_MODE')==1){ // 独立分组
                $file = $path.'common.php';
            }else{ // 普通分组
                $file = $path.GROUP_NAME.'.php';
                $group = GROUP_NAME.C('TMPL_FILE_DEPR');
            }
            if(is_file($file))
                L(include $file);
        }
        // 读取当前模块语言包
        if (is_file($path.$group.strtolower(MODULE_NAME).'.php'))
            L(include $path.$group.strtolower(MODULE_NAME).'.php');
    }
}

图片 1

欢迎:{$Think.lang.welcome} 语言:{$Think.lang.lan}
<a href="?l=zh-cn" rel="external nofollow" >简体中文</a>
<a href="?l=en-us" rel="external nofollow" >english</a>
<a href="?l=zh-tw" rel="external nofollow" >繁體中文</a>

4.在Home里的lang文件夹下创造3个语言文件夹。分别是zh-cn  en-us  zh-tw,

 

抑或在Action的主意里直接定义:L('demo','测验');那样,在模板里就足以直接行使了:{$Think.lang.demo}
对此在模型中,举个例子有:array('uname','require','用户名必填');能够这样用:array('uname','require','%name');

在那多少个文件夹里各创立一个common.php文件,如图:

在common.php 里对应写上

二、ThinkPHP多模板辅助:

在common.php 里对应写上

<?php  return array(          'welcome'=>'Welcome to use thinkphp',  );  ?>

<?php  return array(      'welcome'=>'欢迎使用ThinkPHP',  );  ?>

<?php  return array(      'welcome'=>'歡迎使用ThinkPHP',  );  ?>

config.php配置文件中丰硕:

复制代码 代码如下:

 

//多模板支持
 'TMPL_SWITCH_ON'=>true,
 'TMPL_DETECT_THEME'=>true,

<?php
return array(
        'welcome'=>'Welcome to use thinkphp',
);
?>

5.在tpl/Index/文件夹下创制视图 index.html

/Home/Tpl/下创建别的皮肤文件夹,比方文件夹red,个中的公文与default文件中的同样。

复制代码 代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  <html>   <head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    <title>ThinkPHP示例:多语言</title>     </head>   <body>   <div class="main">  <div>切换语言:<a  >简体中文</a> | <a  >繁体中文</a> | <a  >英文</a></div>   <div class="result">{$Think.lang.welcome}</div>  </div>   </body>  </html>

在模板文件中增进:

<?php
return array(
    'welcome'=>'迎接使用ThinkPHP',
);
?>

 

<a href="?t=red" rel="external nofollow" >红</a>
<a href="?t=default" rel="external nofollow" >默认</a>

复制代码 代码如下:

居功至伟告成!

信任本文所述实例对大家ThinkPHP学习和付出具备扶助。

<?php
return array(
    'welcome'=>'歡迎使用ThinkPHP',
);
?>

后台语言要开始展览语言切换的话, 在每句话以前加L,如:

你只怕感兴趣的篇章:

  • Thinkphp搭建满含JS多语言的多语言项目实现方式
  • thinkphp完成多语言功效(语言包)
  • ThinkPHP多表联合查询的常用方法
  • ThinkPHP页面跳转success与error方法概述
  • ThinkPHP调整器间完毕互相之间调用的法子
  • Thinkphp模板中截取字符串函数简单介绍
  • ThinkPHP达成相当多据库连接的消除办法
  • ThinkPHP完毕业务回滚示例代码
  • thinkPHP多语言切换设置方法详解

5.在tpl/Index/文件夹下创立视图 index.html

    public function index(){          print  L('add_user_error');  //add_user_error只是语言变量,具体的语言要到语言包里写          $this->display();      }

复制代码 代码如下:

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>ThinkPHP示例:多语言</title>
 </head>
 <body>
 <div class="main">
<div>切换语言:<a href="?l=zh-cn">简体普通话</a> | <a href="?l=zh-tw">繁体普通话</a> | <a href="?l=en-us">英语</a></div>
 <div class="result">{$Think.lang.welcome}</div>
</div>
 </body>
</html>

那一点自身认为cakephp做的就相比较好,无需给每句话都给以三个变量。

劳苦功高告成!

 

后台语言要实行语言切换的话, 在每句话在此以前加L,如:

 

复制代码 代码如下:


public function index(){
print  L('add_user_error');  //add_user_error只是言语变量,具体的言语要到语言包里写
$this->display();
}

这点自身感觉cakephp做的就比较好,无需给每句话都予以叁个变量。

你大概感兴趣的篇章:

  • ThinkPHP中自定义错误页面和唤醒页面实例
  • thinkphp利用模型通用数据编辑增加和删除的实例代码
  • jquery thinkphp已毕跨域抓取数据的方式
  • Thinkphp连表查询及数据导出方法现身说法
  • thinkPHP模板算术运算相关函数用法深入分析
  • Thinkphp批量更新数据的章程汇总
  • ThinkPHP登陆成效的贯彻情势
  • ThinkPHP完成支付宝接口效用实例
  • ThinkPHPInfiniti级分类原理完结留言与回复功能实例
  • ThinkPHP达成ajax仿官方网站搜索功能实例
  • thinkphp完成出殡和埋葬邮件密码找回成效实例
  • thinkPHP完毕MemCache布满式缓存功能
  • thinkPHP订单数字提示成效的兑现格局

编辑:ca88 本文来源:ThinkPHP多语言帮衬与多模板支持概述,thinkphp实现

关键词: 亚洲城ca88