Thinkphp搭建包括JS多语言的多语言项目实现方法


Posted in PHP onNovember 24, 2014

本文实例讲述了Thinkphp搭建包括JS多语言的多语言项目实现方法。分享给大家供大家参考。具体实现方法如下:

一、问题:

项目需要开发英文版,于是需要搭建多语言项目.

项目使用Thinkphp框架,隐约记得Thinkphp有多语言设置,翻看了帮助手册,果然有,这就边实验边开始:

二、实现方法:

Thinkphp采用app_begain来检测和切换语言包,语言包和项目相关,构架等都比较简单,具体的这里:http://www.thinkphp.cn/info/188.html

搭建好了,就可以使用URL."?l=en-us"来动态切换和调试,很不错的.

这边发现js内的多语言不好处理,总不能全部assign过去,反正多语言也不会总是配置,干脆自动生成对应的多语言js文件,然后页面根据LANG_SET来动态请求对应的多语言文件,在基础Action类的_initialize()方法内调用下面的生成函数:

public function _generateJsLanguageFile(){  

        if(C("LANG_SWITCH_ON")){  

            $jsLangFilePath = "./Public/v2/js/lang";  

            $langList = L();  

            $jsLangFileName = $jsLangFilePath."/".LANG_SET.".js";  

            //@unlink($jsLangFileName);//测试,不永久缓存语言包  

            //已存在语言包  

            if(is_file($jsLangFileName)){  

                return;  

            }  

            $str = "var \$LANG={";

            $total = count($langList);

            $k = 1;

            foreach ($langList as $key => $value) {

                $str .=$key.":'".$value."'";

                if($k < $total){

                    $str .=",";

                }

                // $str .="\r\n";

                $k++;

            }

            if(!emptyempty($str)){

                $str .= "}";

                $file_handel = fopen($jsLangFileName, "w+");//打开文件,重写模式

                fwrite($file_handel, $str);

                fclose($file_handel);

            }

        }

}

这样,每次访问前都会生成当前的语言包,然后在Tpl内调用.

这样,每次都会自动载入,这个js是永久缓存的,如果有语言包的更改,只需要修改Thinkphp的语言包,然后删除旧的js语言包,让他自动重新生成.

js内就可以这么使用:top10_title = $LANG._NEW_LANGUAGE;这样整个项目就等于是双语的,并且是一处配置即可.

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

PHP 相关文章推荐
PHP 和 HTML
Oct 09 PHP
COM in PHP (winows only)
Oct 09 PHP
php中的时间显示
Jan 18 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
使用PHP实现二分查找算法代码分享
Jun 24 PHP
两级联动select刷新后其值保持不变的实现方法
Jan 27 PHP
php设计模式之命令模式使用示例
Mar 02 PHP
php实现paypal 授权登录
May 28 PHP
Yii获取当前url和域名的方法
Jun 08 PHP
php  单例模式详细介绍及实现源码
Nov 05 PHP
php简单处理XML数据的方法示例
May 19 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 #PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 #PHP
php使用str_replace实现输入框回车替换br的方法
Nov 24 #PHP
thinkphp循环结构用法实例
Nov 24 #PHP
thinkphp特殊标签用法概述
Nov 24 #PHP
PHP中mysql_field_type()函数用法
Nov 24 #PHP
thinkphp模板输出技巧汇总
Nov 24 #PHP
You might like
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
Vue3不支持Filters过滤器的问题
2020/09/24 Javascript
Python决策树分类算法学习
2017/12/22 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
使用python进行拆分大文件的方法
2018/12/10 Python
Python内存映射文件读写方式
2020/04/24 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
什么是类的返射机制
2016/02/06 面试题
单位领导证婚词
2014/01/14 职场文书
旺仔牛奶广告词
2014/03/20 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
教师工作证明范本
2015/06/12 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
Python基于百度API识别并提取图片中文字
2021/06/27 Python
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server