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中for循环语句的几种变型
Mar 16 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 PHP
php adodb连接mssql解决乱码问题
Jun 12 PHP
CentOS6.5 编译安装lnmp环境
Dec 21 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
php常用图片处理类
Mar 16 PHP
Smarty环境配置与使用入门教程
May 11 PHP
PHP实现生成带背景的图形验证码功能
Oct 03 PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
Aug 17 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
Feb 03 PHP
Laravel Reponse响应客户端示例详解
Sep 03 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
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
JS中的多态实例详解
2017/10/15 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
vue.js的简单自动求和计算实例
2019/11/08 Javascript
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
Python对象的深拷贝和浅拷贝详解
2014/08/25 Python
跟老齐学Python之用while来循环
2014/10/02 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
python开启debug模式的方法
2019/06/27 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
postman传递当前时间戳实例详解
2019/09/14 Python
Pytorch 实现权重初始化
2019/12/31 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
预备党员入党思想汇报
2014/01/04 职场文书
学历公证书范本
2014/04/09 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
公司董事长助理工作职责
2014/07/12 职场文书