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和ACCESS写聊天室(六)
Oct 09 PHP
isset和empty的区别
Jan 15 PHP
比较全的PHP 会话(session 时间设定)使用入门代码
Jun 05 PHP
PHP基础陷阱题(变量赋值)
Sep 12 PHP
php curl的深入解析
Jun 02 PHP
浅析php变量修饰符static的使用
Jun 28 PHP
探寻PHP脚本不报错的原因
Jun 12 PHP
PHP实现模仿socket请求返回页面的方法
Nov 04 PHP
PHP中定义数组常量(array常量)的方法
Nov 17 PHP
php自定义截取中文字符串-utf8版
Feb 27 PHP
php往mysql中批量插入数据实例教程
Dec 12 PHP
laravel添加角色和模糊搜索功能的实现代码
Jun 22 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 带逗号千位符数字的处理方法
2012/01/10 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
jquery实现垂直手风琴菜单
2020/03/04 jQuery
es6函数之尾递归用法实例分析
2020/04/25 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
python装饰器实例大详解
2017/10/25 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
python创建n行m列数组示例
2019/12/02 Python
python中spy++的使用超详细教程
2021/01/29 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
运动会入场词200字
2014/02/15 职场文书
班主任新年寄语
2014/04/04 职场文书
职务任命书范本
2014/06/05 职场文书
升学宴答谢词
2015/01/05 职场文书
高校教师个人总结
2015/02/10 职场文书
党校毕业个人总结
2015/02/28 职场文书
《叶问2》观后感
2015/06/15 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
学会感恩主题班会
2015/08/12 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js
MySQL8.0升级的踩坑历险记
2021/11/01 MySQL