ThinkPHP多语言支持与多模板支持概述
本文以实例形式简述了ThinkPHP的多语言支持与多模板支持。是ThinkPHP中非常重要的技巧,分享给大家供大家参考。具体如下:
一、ThinkPHP多语言支持:
config.php配置文件中添加:
//多语言支持设置 'LANG_SWITCH_ON'=>true, 'DEFAULT_LANG'=>'zh-cn', 'LANG_AUTO_DETECT'=>true, 'LANG_LIST'=>'en-us,zh-cn,zh-tw',
Home/Lang/文件夹下建立三个文件夹,分别为zh-cn ,en-us ,zh-tw 分别代表简体中文,英文,繁体中文
文件夹下可以建立与模板对应的文件,或者公用文件common.php
zh-cn/common.php页面如下:
<?php return array( 'welcome'=>'你好', 'lan'=>'简体中文', ); ?>
en-us/common.php页面如下:
<?php return array( 'welcome'=>'how are you fine?', 'lan'=>'english', ); ?>
zh-tw/common.php页面如下:
<?php return array( 'welcome'=>'你好', 'lan'=>'簡體中文', ); ?>
模板index.php代码如下:
欢迎:{$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>
或者在Action的方法里直接定义:L('demo','测试');这样,在模板里就可以直接应用了:{$Think.lang.demo}
对于在模型中,比如有:array('uname','require','用户名必填');可以这么用:array('uname','require','%name');
二、ThinkPHP多模板支持:
config.php配置文件中添加:
//多模板支持 'TMPL_SWITCH_ON'=>true, 'TMPL_DETECT_THEME'=>true,
/Home/Tpl/下建立其它皮肤文件夹,比如文件夹red,其中的文件与default文件中的一样。
在模板文件中添加:
<a href="?t=red" rel="external nofollow" >红</a> <a href="?t=default" rel="external nofollow" >默认</a>
相信本文所述实例对大家ThinkPHP学习和开发有所帮助。
相关推荐
-
thinkphp实现多语言功能(语言包)
1.在Home(你取的项目名)的config.php中添加如下配置 复制代码 代码如下: <?phpreturn array( //'配置项'=>'配置值' 'LANG_SWITCH_ON' => true, //开启语言包功能 'LANG_AUTO_DETECT' => true, // 自动侦测语言 'DEFAULT_LANG' => 'zh-cn
-
ThinkPHP页面跳转success与error方法概述
ThinkPHP自身提供了success方法与error方法用于实现带提示信息的页面跳转功能,可实现添加数据后显示提示信息并跳转的效果.success 方法用于操作成功后的提示,error 用于操作失败后的提示,二者使用方法完全一致,下面以success 方法来进行说明. 1.success方法 success方法语法如下: success(message, ajax) 参数说明message可选.页面提示信息.ajax可选.是否AJAX 方式提交,默认为false . 如果是AJAX 方
-
ThinkPHP实现多数据库连接的解决方法
ThinkPHP实现连接多个数据的时候,如果数据库在同一个服务器里的话只需要这样定义模型: class MembersModel extends Model{ protected $trueTableName = 'members.members'; //数据库名.表名(包含了前缀) } 然后就可以像D("Members");这样实例化模型,像普通模型那样操作了. 但后来发现他的数据库在两个不同的服务器,这样上面的方法就不行了. 这时候就需要使用TP的多数据连接特性了. 对此,查阅官方
-
ThinkPHP多表联合查询的常用方法
ThinkPHP中关联查询(即多表联合查询)可以使用 table() 方法或和join方法,具体使用如下例所示: 1.原生查询示例: 复制代码 代码如下: $Model = new Model(); $sql = 'select a.id,a.title,b.content from think_test1 as a, think_test2 as b where a.id=b.id '.$map.' order by a.id '.$sort.' limit '.$p->firstRow.',
-
thinkPHP多语言切换设置方法详解
本文实例讲述了thinkPHP多语言切换设置方法.分享给大家供大家参考,具体如下: thinkphp多语言设置有点'高大上',为什么说它有点'高大上'呢?因为本人设置了好久才弄好,而本人之所以弄了好久的原因,竟然是因为'开启语言设置必须得先开启初始化系统的行为类',所以,在这里,因为本人的经验有限,姑且认为tp的多语言设置必须的先初始化tp的CheckLangBehavior.class.php 怎么初始化CheckLangBehavior.class.php呢?下面进行讲解. tp框架下面,所
-
ThinkPHP控制器间实现相互调用的方法
本文实例讲述了ThinkPHP控制器间实现相互调用的方法.分享给大家供大家参考.具体实现方法如下: ThinkPHP同一个项目里,两个控制器的方法如何相互调用呢?ThinkPHP提供了一个A(),通过它可以使控制器之间的方法相互调用,使得代码可以重复利用. 官方似乎对A()方法没有相关使用文档,现在通过一个例子来说一下如使用A()方法. 有两个控制器,ColumnsAction和NewsAction.ncatlist()是ColumnsAction的分类列表方法,现在我要在控制器NewsActi
-
Thinkphp搭建包括JS多语言的多语言项目实现方法
本文实例讲述了Thinkphp搭建包括JS多语言的多语言项目实现方法.分享给大家供大家参考.具体实现方法如下: 一.问题: 项目需要开发英文版,于是需要搭建多语言项目. 项目使用Thinkphp框架,隐约记得Thinkphp有多语言设置,翻看了帮助手册,果然有,这就边实验边开始: 二.实现方法: Thinkphp采用app_begain来检测和切换语言包,语言包和项目相关,构架等都比较简单,具体的这里:http://www.thinkphp.cn/info/188.html 搭建好了,就可以使用
-
Thinkphp模板中截取字符串函数简介
在php中截取字符串的函数有很多,而在thinkphp中也可以直接使用php的函数,本文给大家简单的介绍thinkPHP模板中截取字符串的具体用法,希望能对各位有所帮助. 对于英文字符可使用如下形式: 复制代码 代码如下: {$vo.title|substr=0,5} 如果是中文字符thinkphp提供了msubstr,用法如下: 复制代码 代码如下: function msubstr($str, $start=0, $length, $charset="utf-8″, $suffix=true
-
ThinkPHP实现事务回滚示例代码
ThinkPHP的事务回滚示例如下: $m=D('YourModel');//或者是M(); $m2=D('YouModel2'); $m->startTrans();//在第一个模型里启用就可以了,或者第二个也行 $result=$m->where('删除条件')->delete(); $result2=m2->where('删除条件')->delete(); if($result && $result2){ $m->commit();//成功则提交
-
ThinkPHP多语言支持与多模板支持概述
本文以实例形式简述了ThinkPHP的多语言支持与多模板支持.是ThinkPHP中非常重要的技巧,分享给大家供大家参考.具体如下: 一.ThinkPHP多语言支持: config.php配置文件中添加: //多语言支持设置 'LANG_SWITCH_ON'=>true, 'DEFAULT_LANG'=>'zh-cn', 'LANG_AUTO_DETECT'=>true, 'LANG_LIST'=>'en-us,zh-cn,zh-tw', Home/Lang/文件夹下建立三个文件夹,
-
SpringBoot快速集成jxls-poi(自定义模板,支持本地文件导出,在线文件导出)
在项目持续集成的过程中,有时候需要实现报表导出和文档导出,类似于excel中这种文档的导出,在要求不高的情况下,有人可能会考虑直接导出csv文件来简化导出过程.但是导出xlsx文件,其实过程相对更复杂.解决方案就是使用poi的jar包.使用源生的poi来操作表格,代码冗余,处理复杂,同时poi的相关联的依赖还会存在版本兼容问题.所以直接使用poi来实现表格导出,维护成本大,不易于拓展. 我们需要学会站在巨人的肩膀上解决问题,jxls-poi这个就很好解决这个excel表格导出的多样化的问题.类似
-
C语言数组栈实现模板
本文实例为大家分享了C语言数组栈实现模板的具体代码,供大家参考,具体内容如下 SeqStack.h #pragma once #define MAX_SIZE 1024 typedef struct SEQSTACK { void* data[MAX_SIZE]; int size; }SeqStack; SeqStack* Init_SeqStack(); // 初始化栈 void Push_SeqStack(SeqStack* stack, void* data); // 入栈 void*
-
ThinkPHP在Cli模式下使用模板引擎的方法
本文实例讲述了ThinkPHP在Cli模式下使用模板引擎的方法.分享给大家供大家参考.具体如下: 关于Cli模式与模版引擎,2.1中的手册是这样说明的: Cli模式默认不使用任何模板引擎(可以自己在操作方法里面调用): 但是怎么调用,手册中没有提到.于是自己动手丰衣足食. 在介绍怎么调用之前,简单的说说什么情况可能需要用到模块引擎: 1. 利用dompdf在计划任务自动生成PDF或HTML报告 2. 计划任务发送HTML类型的邮件 3. 后台自动生成静态页面 4. 其他关于模板的后台操作 <?p
-
JavaScript语言对Unicode字符集的支持详解
上个月,我做了一次分享,详细介绍了Unicode字符集,以及JavaScript语言对它的支持.下面就是这次分享的讲稿. 一.Unicode是什么? Unicode源于一个很简单的想法:将全世界所有的字符包含在一个集合里,计算机只要支持这一个字符集,就能显示所有的字符,再也不会有乱码了. 它从0开始,为每个符号指定一个编号,这叫做"码点"(code point).比如,码点0的符号就是null(表示所有二进制位都是0). 复制代码 代码如下: U+0000 = null 上式中,U+表
-
Android支持国际化多语言那点事(支持8.0+)
起因 我们在开发app可能会拓展国外市场,那么对包含英语在内的其它语言支持就很有必要了. 效果 思路 一:添加相关资源文件,并引用. 二:设置configuration,configuration里面指定语言类型. 三:在需要时候更换configuration即可. 实现 在res的values文件夹下新建相关语言类型的资源文件 右键新建资源文件,选择Locale,点击 >> 按钮 选择Language,以及地区(any region)即可 最后 文件名字和其他语言文件名字一样,strings
-
ThinkPHP3.1新特性之对分组支持的改进与完善概述
ThinkPHP3.1版本对分组的支持如了如下改进: 每个分组支持独立的空模块 ThinkPHP3.0及以前版本的分组不支持定义独立的空模块,空模块EmptyAction只能放置在分组目录外层,而ThinkPHP3.1版则改进了每个分组可以定义独立的空模块,对于有不同分组不同空模块需求的情况就方便了. 公共Action和Model类优先加载分组目录 ThinkPHP3.0版本分组如果要继承一个公共的Action类或者Model类分组目录下面的,这个继承的公共类只能放到分组目录外层,否则就要手动用
-
C语言实现全排列算法模板的方法
程序的主要思路是: 1.把第1个数换到最前面来(本来就在最前面),准备打印1xx,再对后两个数2和3做全排列. 2.把第2个数换到最前面来,准备打印2xx,再对后两个数1和3做全排列. 3.把第3个数换到最前面来,准备打印3xx,再对后两个数1和2做全排列. 可见这是一个递归的过程,把对整个序列做全排列的问题归结为对它的子序列做全排列的问题,注意我没有描述Base Case怎么处理,你需要自己想.你的程序要具有通用性,如果改变了N和数组a的定义(比如改成4个数的数组),其它代码不需要修改就可以做
-
详解易语言模块EDgame2d的模板
特别声明:新版易语言5.37在工具-系统配置-编译里加入了两个检查,一个是严格的参数参考传递检查,另一个是数值精度丢失检查.第一个勾选与不勾选对启动程序没有什么影响,第二个数值精度检查不能勾选,如果勾选将无法运行D2D程序. 原因可能是 错误(10044): 不能将"整数型"数据转换到"字节型"数据.此问题具体原因:未知.解决方案:不勾选就可以了. 添加模块D2D.ec 确定bass.D2D等所需库在运行目录 添加全局变量 新建一个程序集 内容如下
随机推荐
- 超级ASP版DataGrid——SkyGrid本地下载
- wenserver获取天气预报数据实例分享
- mongodb索引知识_动力节点Java学院整理
- 超强、超详细Redis数据库入门教程
- JS实现动态移动层及拖动浮层关闭的方法
- 按键精灵5.70 注册码
- 正则表达式——匹配规则介绍
- Java多线程编程之ThreadLocal线程范围内的共享变量
- iOS中FMDB数据库之增删改查使用实例
- PHP生成随机密码方法汇总
- phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
- jQuery实现图片上传和裁剪插件Croppie
- Docker容器中文乱码(修改docker容器编码格式)的解决方案
- PHP数据类型之布尔型的介绍
- 浅谈js控制li标签排序问题 js调用php函数的方法
- JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
- 用JQuery模仿淘宝的图片放大镜显示效果
- sqlserver 存储过程中If Else的用法实例
- jQuery选择器源码解读(八):addCombinator函数
- 用jQuery向div中添加Html文本内容的简单实现