/** * 生成语言包js * * @author mrmsl <*****@*****.**> * @date 2012-07-04 08:35:38 * @lastmodify 2013-01-27 14:14:23 by mrmsl * * @return void 无返回值 */ public function createAction() { require CORE_PATH . 'functions/dir.php'; create_dir(WEB_JS_LANG_PATH); $loop_arr = array('admin' => LANG_PATH, str_replace('modules/admin/', 'modules/' . FRONT_MODULE_NAME . '/', LANG_PATH)); foreach ($loop_arr as $key => $item) { $lang_arr = scand_dir($item); //语言包 foreach ($lang_arr as $k => $v) { $lang = is_file($filename = SYS_LANG_PATH . $k . '.php') ? include $filename : array(); foreach ($v as $file) { $lang = array_merge($lang, array_change_key_case(include $file, CASE_UPPER)); } array2js($lang, 'L', WEB_JS_LANG_PATH . (is_string($key) ? $key . '.' : '') . $k . '.js'); } } }
/** * 遍历目录及其子目录 * * @param string $path 路径 * @param bool $recursive true递归。默认true * @param string $pattern 匹配模式。默认* * * @return array 文件列表 */ function scand_dir($path, $recursive = true, $pattern = '*') { if (!is_dir($path)) { return false; } $path = dir_path($path); $list = array(); $files = glob($path . $pattern); foreach ($files as $v) { if (is_dir($v) && $recursive) { $v = dir_path($v); $k = basename($v); $list[$k] = scand_dir($v, $recursive, $pattern); } else { $list[] = $v; } } return $list; }
/** * 本地环境,将之前的语言文件语言项入库 * * @author mrmsl <*****@*****.**> * @data 2013-06-24 08:53:24 * * @return void 无返回值 */ public function localInsertItemsAction() { if (!is_dir($dir = YAB_APP_PATH . 'language_backup/') || !IS_LOCAL) { return; } require CORE_PATH . 'functions/dir.php'; $file_arr = scand_dir($dir); $module_arr = array('front' => array('blog' => 24, 'comments' => 25, 'common' => 5), 'admin' => array('admin' => 7, 'adminloginhistory' => 8, 'area' => 9, 'blog' => 10, 'category' => 11, 'comments' => 12, 'js' => 6, 'common' => 6, 'field' => 13, 'html' => 14, 'languageitems' => 15, 'languagemodules' => 16, 'log' => 17, 'login' => 18, 'mail' => 19, 'mailhistory' => 20, 'menu' => 21, 'miniblog' => 22, 'role' => 23)); $values = ''; foreach ($module_arr as $k => $v) { foreach ($file_arr[$k]['zh_cn'] as $item) { $basename = basename($item, '.php'); if ('guestbook' == $basename) { continue; } foreach (include $item as $key => $lang) { $values .= ",({$v[$basename]},'{$key}','" . addslashes($lang) . "','')"; } } } foreach (include array_pop($file_arr) as $key => $lang) { $values .= ",(1,'{$key}','" . addslashes($lang) . "','')"; } if ($values) { $this->_model->startTrans(); $db = $this->_model->getDb(); $result1 = $db->execute('DELETE FROM ' . TB_LANGUAGE_ITEMS); $result2 = $db->execute('INSERT INTO ' . TB_LANGUAGE_ITEMS . '(module_id,var_name,var_value_zh_cn,var_value_en) VALUES' . substr($values, 1) . ' ON DUPLICATE KEY UPDATE module_id=module_id'); if ($result1 && $result2 && $db->execute('UPDATE ' . TB_LANGUAGE_ITEMS . ' SET sort_order=item_id,to_js=1')) { $this->_model->commit(); } } }