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 相关文章推荐
深入了解php4(2)--重访过去
Oct 09 PHP
php摘要生成函数(无乱码)
Feb 04 PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
Nov 28 PHP
PHP连接MySQL数据的操作要点
Mar 20 PHP
Codeigniter检测表单post数据的方法
Mar 21 PHP
Yii2如何批量添加数据
May 17 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
PHP的自定义模板引擎
Mar 24 PHP
thinkphp实现附件上传功能
May 26 PHP
PHP检测一个数组有没有定义的方法步骤
Jul 20 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
无线电的诞生过程
2021/03/01 无线电
PHP生成随机字符串(3种方法)
2015/09/25 PHP
5 cool javascript apps
2007/03/24 Javascript
用javascript做拖动布局的思路
2008/05/31 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
python中input()与raw_input()的区别分析
2016/02/27 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
Python利用命名空间解析XML文档
2020/08/10 Python
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
CSMA/CD介质访问控制协议
2015/11/17 面试题
《鹬蚌相争》教学反思
2014/04/22 职场文书
承诺书格式
2014/06/03 职场文书
生物工程专业求职信
2014/09/03 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
三下乡个人总结
2015/03/04 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
检讨书格式范文
2015/05/07 职场文书
货款欠条范本
2015/07/03 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫