小草根

Discuz X 语言包提取工具

作者:小草根   发布时间:2015-03-26 09:54   回复数:0   浏览数:1626
小草根
16260小草根管理员
2015-03-26 09:54:42
16260 2015-03-26 09:54:42
<?php
/**
 * Name: X1语言包提取工具
 * Author: Monkey && Kookxiang
 * Date: 2009/5/22 17:10:03
 * 修改后的模版放置到 template_pub 语言包,语言包放置到 data/plugindata/$plugin.lang.php 里
 * 代码中的语言包放置到 script_pub,请手动修改提取结果。
 */
@$plugin = $_POST['plugin'] ? $_POST['plugin'] : $_GET['plugin'];
echo <<<EOF
<form method=\"post\" action=\"\">
Plugin folder: <input type=\"text\" name=\"plugin\" /><input type=\"submit\" />
</form>
EOF;
if(!$plugin) exit();

$path = $plugin.'/template/';
$pathpub = $plugin.'/template_pub/';
$phppub = $plugin.'/script_pub/';
@mkdir($phppub, 777);

$langs = array();
$d = dir($plugin);

while(false !== ($entry = $d->read())) {
$file = pathinfo($entry);
$extend = explode(\".\" , $entry);
$va = count($extend)-1;
if($extend[$va] == 'php') {
$c = file_get_contents($plugin.'/'.$entry);
$c = preg_replace('/(showmessage|cpmsg)\(\"[\xA0-\xFF]+[^\"]+[\xA0-\xFF<>\.]+\"/e', 'returnstr_php(\'\0\', \"$file[basename]\",\"\1\")', $c);
$c = preg_replace(\"/(showmessage|cpmsg)\('[\xA0-\xFF]+[^']*[\xA0-\xFF<>\.]+'/e\", 'returnstr_php(\'\0\', \"$file[basename]\",\"\1\")', $c);
$c = preg_replace('/\"[\xA0-\xFF]+[^\"]+[\xA0-\xFF<>\.]+\"/e', 'returnstr_php(\'\0\', \"$file[basename]\")', $c);
$c = preg_replace(\"/'[\xA0-\xFF]+[^']+[\xA0-\xFF<>\.>]+'/e\", 'returnstr_php(\'\0\', \"$file[basename]\")', $c);
$c = preg_replace('/[\xA0-\xFF]+[\xA0-\xFFa-zA-Z0-9,<>\.\s]*[\xA0-\xFF]+/e', 'returnstr_php(\'\0\', \"$file[basename]\")', $c);
file_put_contents($phppub.$entry, $c);
}
}

$vs = var_export($langs, 1);

$langs = array();
if (file_exists($path)){
@mkdir($pathpub, 777);
$d = dir($path);
while(false !== ($entry = $d->read())) {
$file = pathinfo($entry);
if($file['extension'] == 'htm') {
$c = remark(file_get_contents($path.$entry));
$c = preg_replace('/[\xA0-\xFF]+[\xA0-\xFFa-zA-Z0-9,\.\s]*[\xA0-\xFF]+/e', 'returnstr(\'\0\', \"$file[basename]\")', $c);
file_put_contents($pathpub.$entry, $c);
}
}
}
$vt = var_export($langs, 1);

$s = <<<EOF
<?php

\$scriptlang['$plugin'] = $vs;

\$templatelang['$plugin'] = $vt;

?>
EOF;

file_put_contents('../../data/plugindata/'.$plugin.'.lang.php', $s);
echo 'Plugin \"'.$plugin.'\": Done!';
function returnstr($s, $basename) {
global $langs, $plugin, $filec;
@$c = ++$filec[$basename];
$key = str_replace('.', '_', $basename).'_'.$c;
if(in_array($s, $langs)) {
$lang_flip = array_flip($langs);
$key = $lang_flip[$s];
} else {
$langs[$key] = $s;
}
return '{lang '.$plugin.':'.$key.'}';
}
function returnstr_php($s, $basename, $function=\"\") {
global $langs, $plugin, $filec;
@$c = ++$filec[$basename];
$key = str_replace('.', '_', $basename).'_'.$c;
if(in_array($s, $langs)) {
$lang_flip = array_flip($langs);
$key = $lang_flip[$s];
} else {
$langs[$key] = $s;
}
if ($function){
return $function.'(\"'.$plugin.':'.$key.'\"';
}
return 'lang(\"plugin/'.$plugin.'\",\"'.$key.'\")';
}

function remark($buf) {
$remark = array(
array('//note', \"\r\n\"),
array('/*', '*/'),
);
foreach($remark as $v) {
$data = '';
while(count($strcut = explode($v[0], $buf, 2)) > 1) {
$data .= $strcut[0];
if(($strcut = explode($v[1], $strcut[1], 2)) > 1) {
$data = preg_replace('/[\t ]+$/', '', $data);
$data = preg_replace('/\r\n$/', '', $data);
if($v[1] == \"\r\n\") {
$buf = \"\r\n\";
} else {
$buf = '';
}
$buf .= $strcut[1];
} else {
$buf = $strcut[0];
break;
}
}
$data .= $strcut[0];
$buf = $data;
}
return $buf;
}

?>
lang_DX.php


来自建站学习研究资源开放平台【www.cgzz8.cn
游客
登录后才可以回帖,登录 或者 注册