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 相关文章推荐
20个PHP常用类库小结
Sep 11 PHP
php 中的4种标记风格介绍
May 10 PHP
PHP 获取文件路径(灵活应用__FILE__)
Feb 15 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
PHP页面中文乱码分析
Oct 29 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
从性能方面考虑PHP下载远程文件的3种方法
Dec 29 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
Yii框架安装简明教程
May 15 PHP
PHP实现两种排课方式
Jun 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 选项及相关信息函数库
2006/12/04 PHP
PHP XML数据解析代码
2010/05/26 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
PHP自定义错误用法示例
2016/09/28 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
flexigrid 参数说明
2010/11/23 Javascript
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
python如何编写win程序
2020/06/08 Python
Numpy 多维数据数组的实现
2020/06/18 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
国旗下演讲稿
2014/05/08 职场文书
食品流通安全承诺书
2014/05/22 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
2015中学教学工作总结
2015/07/22 职场文书
MySQL中的隐藏列的具体查看
2021/09/04 MySQL
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android
redis protocol通信协议及使用详解
2022/07/15 Redis