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 相关文章推荐
在线短消息收发的程序,不用数据库
Oct 09 PHP
PHP入门速成教程
Mar 19 PHP
解析php中call_user_func_array的作用
Jun 07 PHP
PHP使用CURL获取302跳转后的地址实例
May 04 PHP
PHP中mysql_field_type()函数用法
Nov 24 PHP
php计算一个文件大小的方法
Mar 30 PHP
PHP Web木马扫描器代码分享
Sep 06 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
Mar 16 PHP
功能强大的PHP POST提交数据类
Jul 15 PHP
php array_keys 返回数组的键名
Oct 25 PHP
php数据库操作model类(使用__call方法)
Nov 16 PHP
PHP中localeconv()函数的用法
Mar 26 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 zend解密软件绿色版测试可用
2008/04/14 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
pandas通过索引进行排序的示例
2018/11/16 Python
在django view中给form传入参数的例子
2019/07/19 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
python爬虫如何解决图片验证码
2021/02/14 Python
super关键字的用法
2012/04/10 面试题
设计部经理的岗位职责
2013/11/16 职场文书
质量承诺书范文
2014/03/27 职场文书
高三毕业寄语
2014/04/10 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
企业催款函范本
2015/06/24 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS