121 lines
4.1 KiB
PHP
121 lines
4.1 KiB
PHP
<?php
|
|
/**----------------------------------------------------+
|
|
* 客户端多语言处理处理
|
|
* @author whjing2012@gmail.com
|
|
+-----------------------------------------------------*/
|
|
|
|
// 给指定文件注入语言版本控制函数
|
|
function cli_infun($file, $is_next = false){
|
|
if(is_dir($file)){
|
|
fordir($file, __FUNCTION__, array($is_next), $is_next);
|
|
return;
|
|
}
|
|
if(!is_file($file) || !preg_match('/.*\.lua$/',$file) || is_filter($file)) return;
|
|
if(preg_match('/.*(gm_data).*/', $file)) return;
|
|
echo("doing==>$file\n");
|
|
$str = read_file($file);
|
|
if(cli_str_infun($str)){
|
|
save_file($file, $str);
|
|
}
|
|
}
|
|
|
|
// 指定内容注入语言版本控制函数
|
|
function cli_str_infun(&$str){
|
|
$arr = array();
|
|
preg_match_all('/(?<!TI18N\\()(\".*\"|\'.*\'|\[\[[^\"\']*\]\])/iuU', $str, $ret);
|
|
foreach($ret[1] as $v){
|
|
if(isset($arr[$v]) || !preg_match('/.*[\x{4e00}-\x{9fa5}]+.*/u', $v)) continue;
|
|
$val = str_replace("/", "\/", preg_quote($v));
|
|
$pattern = "/(?<!TI18N\()(${val})/iuU";
|
|
$str = preg_replace($pattern, "TI18N(${v})", $str);
|
|
$arr[$v] = 1;
|
|
echo("===$v\n");
|
|
}
|
|
return count($arr) > 0;
|
|
}
|
|
|
|
// 获取配置语言版本信息
|
|
function cli_config_match($file, &$arr, $is_next = false){
|
|
if(is_dir($file)){
|
|
fordir($file, __FUNCTION__, array(&$arr, $is_next), $is_next);
|
|
return;
|
|
}
|
|
echo("doing_config==>$file\n");
|
|
$str = read_file($file);
|
|
preg_match_all('/(\"|\')([\"]*[\x{4e00}-\x{9fa5}]+[\"]*)\1/iuU', $str, $ret1);
|
|
preg_match_all('/\[\[([^\"\']*[\x{4e00}-\x{9fa5}]+[^\"\']*)\]\]/iuU', $str, $ret2);
|
|
$ret = array_merge($ret1[2], $ret2[1]);
|
|
foreach($ret as $k => $v){
|
|
echo("cli_config_match==>$v\n");
|
|
$arr[trim($v)] = 1;
|
|
}
|
|
}
|
|
|
|
// 获取语言版本信息
|
|
function cli_match_old($file, &$arr, $is_next = false){
|
|
if(is_dir($file)){
|
|
fordir($file, __FUNCTION__, array(&$arr, $is_next), $is_next);
|
|
return;
|
|
}
|
|
if (basename($file) == "language.lua") {
|
|
echo("doing==>$file\n");
|
|
$str = read_file($file);
|
|
preg_match_all('/[^\[](\"|\')([\"]*[\x{4e00}-\x{9fa5}]+[\"]*)\1/iuU', $str, $ret1);
|
|
preg_match_all('/\[\[(.*[\x{4e00}-\x{9fa5}]+.*)\]\]/iuU', $str, $ret2);
|
|
$ret = array_merge($ret1[2], $ret2[1]);
|
|
foreach($ret as $k => $v){
|
|
echo("cli_match==>$v\n");
|
|
$arr[trim($v)] = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
// 获取语言版本信息
|
|
function cli_match($file, &$arr, $is_next = false){
|
|
if(is_dir($file)){
|
|
fordir($file, __FUNCTION__, array(&$arr, $is_next), $is_next);
|
|
return;
|
|
}
|
|
echo("doing==>$file\n");
|
|
$str = read_file($file);
|
|
preg_match_all('/TI18N\((\"|\')(.*[\x{4e00}-\x{9fa5}]+.*)\1\)/iuU', $str, $ret1);
|
|
preg_match_all('/TI18N\(\[\[(.*[\x{4e00}-\x{9fa5}]+.*)\]\]\)/iuU', $str, $ret2);
|
|
$ret = array_merge($ret1[2], $ret2[1]);
|
|
foreach($ret as $k => $v){
|
|
echo("cli_match==>$v\n");
|
|
$arr[trim($v)] = 1;
|
|
}
|
|
}
|
|
|
|
// 导出翻译文件
|
|
function cli_lang2($lang){
|
|
$all = get_file_array(LANG_DATA."/$lang/".LANG_DATA_ALL);
|
|
$cli = get_file_array(LANG_DATA."/$lang/".LANG_DATA_CLI);
|
|
$str = "-- 多语言版本\n\nLang = function(s)";
|
|
foreach($cli as $k=>$v){
|
|
if(!isset($all[$k])) continue;
|
|
if($k == $all[$k]) continue;
|
|
$k = trim(str_replace("'", "\'", $k));
|
|
$v = trim(str_replace("'", "\'", $all[$k]));
|
|
$str .= "\nif s == '$k' then return '{$v}' end";
|
|
}
|
|
$str .= "\nreturn s\nend";
|
|
save_file(LANG_DATA."/$lang/".LANG_DATA_CONF_CLI, $str);
|
|
}
|
|
|
|
function cli_lang($lang){
|
|
$all = get_file_array(LANG_DATA."/$lang/".LANG_DATA_ALL);
|
|
$cli = get_file_array(LANG_DATA."/$lang/".LANG_DATA_CLI);
|
|
$str = "-- 多语言版本\n\nLang = {";
|
|
foreach($cli as $k=>$v){
|
|
if(!isset($all[$k])) continue;
|
|
if($k == $all[$k]) continue;
|
|
$new_k = trim(str_replace("'", "\'", $k));
|
|
$v = trim(str_replace("'", "\'", $all[$k]));
|
|
$k = $new_k;
|
|
$str .= "\n['$k']='{$v}',";
|
|
}
|
|
$str .= "\n}";
|
|
save_file(LANG_DATA."/$lang/".LANG_DATA_CONF_CLI, $str);
|
|
}
|