<script type="text/javascript" src="{:URL('Api/Attachment/langjs',array('module'=>MODULE_NAME,'lang'=>LANG_SET))}"></script> {//引入当前模块语言JS文件}从上面我是引入了一个JS 地址他指向了我的Api模块的Attachment控制器的langjs方法,参数包含了 name 当前模块名 lang 语言方式 现在在Api模块的Attachment控制器的langjs方法写如下代码
$lang = I('get.lang'); //获取语言方式
$module = I('get.module'); //获取模块名
$filename = DATA_PATH.$mLang->cachePath.'./lang/'.$lang.'/'.$module.'_lang.js'; //获取文件路径,自己定义,这是我的规则。因为语言入库了,根据$mLang模型的缓存路径设置,方便后台添加语言自动更新
if(!file_exists($filename)){ //如果没有生成的对应语言JS文件,开始重新生成
$jsCon = 'var ';
$langcon = L(); //获取所有语言数组,此方法会获取到Api模块和公共语言,因为当前是API模块。
$module_lang = include APP_PATH."./".$module.'/Lang/'.$lang.'.php'; //获取模块的语言 ,如果你的模块语言文件有变动自行修改
$langcon = array_merge($langcon, $module_lang); //合并语言
$jsCon = 'var '; //设置JS初始内容
foreach ($langcon as $k=>$v){ //遍历语言
$key = array_keys($langcon);
$thecount = array_keys($key,$k);
$dou = count($langcon) > ($thecount[0]+1) ? ',' : ';';
$jsCon .= "$k='$v'$dou"; //组装JS内容
}
\Common\Lib\FileUtil::insertFile($jsCon,DATA_PATH.$mLang->cachePath.'./lang/'.LANG_SET.'/'.$module.'_lang.js',true); // 创建文件并写入JS内容。FileUtil是个文件类,就创建文件,写入内容等操作,具体就不细说了。
}
//文件处理完毕开始输出
$handle = fopen($filename, "rb");
$filesize = filesize($filename);
$contents = fread($handle, $filesize);
header("content-type:text/javascript");
echo $contents;
fclose($handle);
exit(); 最佳答案