/public/library/xinha/contrib/lc_parse_strings.php
PHP | 325 lines | 263 code | 41 blank | 21 comment | 53 complexity | 2c0c91303e51162658feb1a8fd64fc7b MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, LGPL-2.1, BSD-3-Clause, LGPL-2.0, CC-BY-SA-3.0, MIT
- <?php
- die("this script is disabled for security");
- /**
- * LC-Parse-Strings-Script
- *
- * This script parses all xinhas source-files and creates base lang-files
- * in the lang-folders (one for base and one every plugin)
- *
- * How To use it: - remove the die() in line 2 (security)
- * - make sure all lang-folders are writeable for your webserver
- * - open the contrib/lc_parse_strings.php in your browser
- * - lang/base.js will be written
- * - open base.js, translate all strings into your language and save it
- * as yourlangauge.js
- * - send the translated file to the xinha-team
- **/
- error_reporting(E_ALL);
- $ret = array();
- $files = getFiles("../", "js$");
- foreach($files as $file) {
- $fp = fopen($file, "r");
- $data = "";
- while(!feof($fp)) {
- $data .= fread($fp, 1024);
- }
- preg_match_all('#_lc\("([^"]+)"\)|_lc\(\'([^\']+)\'\)#', $data, $m);
- foreach($m[1] as $i) {
- if(trim($i)=="") continue;
- $ret[] = $i;
- }
- foreach($m[2] as $i) {
- if(trim($i)=="") continue;
- $ret[] = $i;
- }
- if(eregi('htmlarea\\.js$', $file)) {
- //toolbar-buttons
- //bold: [ "Bold"
- preg_match_all('#[a-z]+: *\[ * "([^"]+)"#', $data, $m);
- foreach($m[1] as $i) {
- if(trim($i)=="") continue;
- $ret[] = $i;
- }
- //HTMLArea._lc({key: 'button_bold', string
- preg_match_all('#HTMLArea\\._lc\\({key: \'([^\']*)\'#', $data, $m);
- foreach($m[1] as $i) {
- if(trim($i)=="") continue;
- $ret[] = $i;
- }
- //config.fontname, fontsize and formatblock
- $data = substr($data, strpos($data, "this.fontname = {"), strpos($data, "this.customSelects = {};")-strpos($data, "this.fontname = {"));
- preg_match_all('#"([^"]+)"[ \t]*:[ \t]*["\'][^"\']*["\'],?#', $data, $m);
- foreach($m[1] as $i) {
- if(trim($i)=="") continue;
- $ret[] = $i;
- }
- }
- }
- $files = getFiles("../popups/", "html$");
- foreach($files as $file)
- {
- if(preg_match("#custom2.html$#", $file)) continue;
- if(preg_match('#old_#', $file)) continue;
- $ret = array_merge($ret, parseHtmlFile($file));
- }
- $ret = array_unique($ret);
- $langData['HTMLArea'] = $ret;
- $plugins = getFiles("../plugins/");
- foreach($plugins as $pluginDir) {
- $plugin = substr($pluginDir, 12);
- if($plugin=="ibrowser") continue;
- $ret = array();
- $files = getFiles("$pluginDir/", "js$");
- $files = array_merge($files, getFiles("$pluginDir/popups/", "html$"));
- $files = array_merge($files, getFiles("$pluginDir/", "php$"));
- foreach($files as $file)
- {
- $fp = fopen($file, "r");
- $data = "";
- if($fp) {
- echo "$file open...<br>";
- while(!feof($fp)) {
- $data .= fread($fp, 1024);
- }
- preg_match_all('#_lc\("([^"]+)"|_lc\(\'([^\']+)\'#', $data, $m);
- foreach($m[1] as $i) {
- if(trim(strip_tags($i))=="") continue;
- $ret[] = $i;
- }
- foreach($m[2] as $i) {
- if(trim(strip_tags($i))=="") continue;
- $ret[] = $i;
- }
- }
- }
- if($plugin=="TableOperations")
- {
- preg_match_all('#options = \\[([^\\]]+)\\];#', $data, $m);
- foreach($m[1] as $i) {
- preg_match_all('#"([^"]+)"#', $i, $m1);
- foreach($m1[1] as $i) {
- $ret[] = $i;
- }
- }
-
- //["cell-delete", "td", "Delete cell"],
- preg_match_all('#\\["[^"]+",[ \t]*"[^"]+",[ \t]*"([^"]+)"\\]#', $data, $m);
- foreach($m[1] as $i) {
- $ret[] = $i;
- }
- }
- $files = getFiles("$pluginDir/", "html$");
- $files = array_merge($files, getFiles("$pluginDir/", "php$"));
- foreach($files as $file)
- {
- $ret = array_merge($ret, parseHtmlFile($file, $plugin));
- }
-
- $files = getFiles("$pluginDir/popups/", "html$");
- foreach($files as $file)
- {
- $ret = array_merge($ret, parseHtmlFile($file, $plugin));
- }
- $ret = array_unique($ret);
- $langData[$plugin] = $ret;
- }
- $plugins = getFiles("../modules/");
- foreach($plugins as $pluginDir) {
- $plugin = substr($pluginDir, 12);
- $ret = array();
- $files = getFiles("$pluginDir/", "js$");
- foreach($files as $file)
- {
- $fp = fopen($file, "r");
- $data = "";
- if($fp) {
- echo "$file open...<br>";
- while(!feof($fp)) {
- $data .= fread($fp, 1024);
- }
- preg_match_all('#_lc\("([^"]+)"|_lc\(\'([^\']+)\'#', $data, $m);
- foreach($m[1] as $i) {
- if(trim(strip_tags($i))=="") continue;
- $ret[] = $i;
- }
- foreach($m[2] as $i) {
- if(trim(strip_tags($i))=="") continue;
- $ret[] = $i;
- }
- }
- }
- $ret = array_unique($ret);
- $langData[$plugin] = $ret;
- }
- foreach($langData as $plugin=>$strings) {
- if(sizeof($strings)==0) continue;
-
- $data = "// I18N constants\n";
- $data .= "//\n";
- $data .= "// LANG: \"base\", ENCODING: UTF-8\n";
- $data .= "// Author: Translator-Name, <email@example.com>\n";
- $data .= "//\n";
- $data .= "// Last revision: 06 september 2007\n";
- $data .= "// Please donĀ“t remove this information\n";
- $data .= "// If you modify any source, please insert a comment with your name and e-mail\n";
- $data .= "//\n";
- $data .= "// Distributed under the same terms as HTMLArea itself.\n";
- $data .= "// This notice MUST stay intact for use (see license.txt).\n";
- $data .= "//\n";
- $data .= "// (Please, remove information below)\n";
- $data .= "// FOR TRANSLATORS:\n";
- $data .= "//\n";
- $data .= "// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE\n";
- $data .= "// (at least a valid email address)\n";
- $data .= "//\n";
- $data .= "// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;\n";
- $data .= "// (if this is not possible, please include a comment\n";
- $data .= "// that states what encoding is necessary.)\n";
- $data .= "\n";
- $data .= "{\n";
- sort($strings);
- foreach($strings as $string) {
- $string = str_replace(array('\\', '"'), array('\\\\', '\\"'), $string);
- $data .= " \"".$string."\": \"\",\n";
- }
- $data = substr($data, 0, -2);
- $data .= "\n";
- $data .= "}\n";
- if($plugin=="HTMLArea") {
- $file = "../lang/base.js";
- $fp = fopen($file, "w");
- if(!$fp) continue;
- fwrite($fp, $data);
- fclose($fp);
- echo "$file written...<br>";
- } elseif (($plugin=="InternetExplorer")||($plugin=="InsertTable")||($plugin=="InsertImage")||($plugin=="GetHtml")||($plugin=="Gecko")||($plugin=="Dialogs")||($plugin=="CreateLink")||($plugin=="ColorPicker")) {
- $file = "../modules/$plugin/lang/base.js";
- $fp = fopen($file, "w");
- if(!$fp) continue;
- fwrite($fp, $data);
- fclose($fp);
- echo "$file written...<br>";
- } elseif ($plugin=="FullScreen") {
- $file = "../modules/$plugin/lang/base.js";
- $fp = fopen($file, "w");
- if(!$fp) continue;
- fwrite($fp, $data);
- fclose($fp);
- echo "$file written...<br>";
- $file = "../plugins/$plugin/lang/base.js";
- $fp = fopen($file, "w");
- if(!$fp) continue;
- fwrite($fp, $data);
- fclose($fp);
- echo "$file written...<br>";
- } else {
- $file = "../plugins/$plugin/lang/base.js";
- $fp = fopen($file, "w");
- if(!$fp) continue;
- fwrite($fp, $data);
- fclose($fp);
- echo "$file written...<br>";
- }
- }
- function parseHtmlFile($file, $plugin="")
- {
- $ret = array();
-
- $fp = fopen($file, "r");
- if(!$fp) {
- die("invalid fp");
- }
- $data = "";
- while(!feof($fp)) {
- $data .= fread($fp, 1024);
- }
-
- if($plugin=="FormOperations" || $plugin=="SuperClean" || $plugin=="Linker") {
- //<l10n>-tags for inline-dialog or panel-dialog based dialogs
- $elems = array("l10n");
- } else {
- $elems = array("title", "input", "select", "legend", "span", "option", "td", "button", "div", "label");
- }
- foreach($elems as $elem) {
- preg_match_all("#<{$elem}[^>]*>([^<^\"]+)</$elem>#i", $data, $m);
- foreach($m[1] as $i) {
- if(trim(strip_tags($i))=="") continue;
- if($i=="/") continue;
- if($plugin=="ImageManager" && preg_match('#^--+$#', $i)) continue; //skip those ------
- if($plugin=="CharacterMap" && preg_match('#&[a-z0-9]+;#i', trim($i)) || $i=="@") continue;
- if($plugin=="SpellChecker" && preg_match('#^\'\\.\\$[a-z]+\\.\'$#', $i)) continue;
- $ret[] = trim($i);
- }
- }
-
- if($plugin=="FormOperations" || $plugin=="SuperClean" || $plugin=="Linker")
- {
- //_( for inline-dialog or panel-dialog based dialogs
- preg_match_all('#"_\(([^"]+)\)"#i', $data, $m);
- foreach($m[1] as $i) {
- if(trim($i)=="") continue;
- $ret[] = $i;
- }
- }
- else
- {
- preg_match_all('#title="([^"]+)"#i', $data, $m);
- foreach($m[1] as $i) {
- if(trim(strip_tags($i))=="") continue;
- if(strip_tags($i)==" - ") continue; //skip those - (ImageManager)
- $ret[] = $i;
- }
- }
- return($ret);
- }
- function getFiles($rootdirpath, $eregi_match='') {
- $array = array();
- if ($dir = @opendir($rootdirpath)) {
- $array = array();
- while (($file = readdir($dir)) !== false) {
- if($file=="." || $file==".." || $file==".svn") continue;
- if($eregi_match=="")
- $array[] = $rootdirpath."/".$file;
- else if(eregi($eregi_match,$file))
- $array[] = $rootdirpath."/".$file;
-
- }
- closedir($dir);
- }
- return $array;
- }
- ?>