#!/usr/bin/php 1) { // Change dir again to manage file input chdir($curdir); for ($i=1;$i<$argc;$i++) { if (is_file($argv[$i])) { @include($argv[$i]); foreach($GLOBALS['LSlang'] as $msg => $trans) { $translations[$msg]=$trans; } } elseif($argv[$i]=='--without-select-list') { $withoutselectlist=True; } elseif($argv[$i]=='--copy-original-value') { $copyoriginalvalue=True; } elseif($argv[$i]=='--additional-file-format') { $additionalfileformat=True; } elseif($argv[$i]=='--lang') { $i++; $parse_lang=explode('.',$argv[$i]); if (count($parse_lang)==2) { $lang=$parse_lang[0]; $encoding=$parse_lang[1]; } else { die("Invalid --lang parameter. Must be compose in format : [lang].[encoding]\n"); } } elseif($argv[$i]=='-h') { echo "Usage : ".$argv[0]." [file1] [file2] [-h] [options]\n"; echo " --without-select-list Don't add possibles values of select list\n"; echo " --copy-original-value Copy original value as translated value when no translated value exists\n"; echo " --additional-file-format Additional file format output\n"; echo " --lang Load this specify lang (format : [lang].[encoding])\n"; exit(0); } } chdir(dirname(__FILE__).'/../'); } $data=array(); function add($msg) { if ($msg!='' && _($msg) == "$msg") { global $data, $translations; $data[$msg]=$translations[$msg]; } } // Initialize session LSsession :: initialize($lang,$encoding); // Load lang string if lang was specify if ($lang && $encoding) { foreach($GLOBALS['LSlang'] as $msg => $trans) { $translations[$msg]=$trans; } } // LDAP Servers foreach($GLOBALS['LSconfig']['ldap_servers'] as $conf) { add($conf['name']); add($conf['subDnLabel']); add($conf['recoverPassword']['recoveryHashMail']['subject']); add($conf['recoverPassword']['recoveryHashMail']['msg']); add($conf['recoverPassword']['newPasswordMail']['subject']); add($conf['recoverPassword']['newPasswordMail']['msg']); if (is_array($conf['subDn'])) { foreach($conf['subDn'] as $name => $cf) { if ($name!='LSobject') { add($name); } } } } // LSobject if (loadDir(LS_OBJECTS_DIR) && loadDir(LS_LOCAL_DIR.LS_OBJECTS_DIR)) { foreach($GLOBALS['LSobjects'] as $name => $conf) { add($conf['label']); // LSrelation if (is_array($conf['LSrelation'])) { foreach($conf['LSrelation'] as $rel) { add($rel['label']); add($rel['emptyText']); } } // Custom Actions if (is_array($conf['customActions'])) { foreach($conf['customActions'] as $act) { add($act['label']); add($act['question_format']); add($act['onSuccessMsgFormat']); } } // LSform if (is_array($conf['LSform']['layout'])) { foreach($conf['LSform']['layout'] as $lay) { add($lay['label']); } } if (is_array($conf['LSform']['dataEntryForm'])) { foreach($conf['LSform']['dataEntryForm'] as $def) { add($def['label']); } } // LSsearch if (is_array($conf['LSsearch']['predefinedFilters'])) { foreach($conf['LSsearch']['predefinedFilters'] as $lay) { add($lay); } } if (is_array($conf['LSsearch']['extraDisplayedColumns'])) { foreach($conf['LSsearch']['extraDisplayedColumns'] as $cid => $cconf) { add($cconf['label']); } } if (is_array($conf['LSsearch']['customActions'])) { foreach($conf['LSsearch']['customActions'] as $act) { add($act['label']); add($act['question_format']); add($act['onSuccessMsgFormat']); } } if(is_array($conf['attrs'])) { foreach($conf['attrs'] as $attr) { add($attr['label']); add($attr['help_info']); add($attr['no_value_label']); add($attr['html_options']['mail']['subject']); add($attr['html_options']['mail']['msg']); // LSattr_html_select_list if (($attr['html_type']=='select_list' || $attr['html_type']=='select_box') && is_array($attr['html_options']['possible_values']) && !$withoutselectlist) { foreach($attr['html_options']['possible_values'] as $pkey => $pname) { if (is_array($pname)) { add($pname['label']); if (is_array($pname['possible_values'])) { foreach($pname['possible_values'] as $pk => $pn) { if ($pk == 'OTHER_OBJECT') continue; add($pn); } } } elseif ($pkey != 'OTHER_OBJECT') { add($pname); } } } // LSattr_html_valueWithUnit if ($attr['html_type']=='valueWithUnit' && is_array($attr['html_options']['units'])) { foreach($attr['html_options']['units'] as $pname) { add($pname); } } // Check data if (is_array($attr['check_data'])) { foreach($attr['check_data'] as $check) { add($check['msg']); } } // validation if (is_array($attr['validation'])) { foreach($attr['validation'] as $valid) { add($valid['msg']); } } } } } } /* * Manage template file */ function parse_template_file($file) { foreach(file($file) as $line) { if (preg_match_all('/\{ *tr +msg=["\']([^\}]+)["\'] *\}/',$line,$matches)) { foreach($matches[1] as $t) add($t); } } } function find_and_parse_template_file($dir) { if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if ($file=='.' || $file=='..') continue; if (is_dir($dir.'/'.$file)) { find_and_parse_template_file($dir.'/'.$file); } elseif (is_file($dir."/".$file) && preg_match('/\.tpl$/',$file)) { parse_template_file($dir.'/'.$file); } } closedir($dh); } } } find_and_parse_template_file(LS_TEMPLATES_DIR); find_and_parse_template_file(LS_LOCAL_DIR.LS_TEMPLATES_DIR); /* * Manage addons files */ function parse_addon_file($file) { foreach(file($file) as $line) { $offset=0; while ($pos = strpos($line,'__(',$offset)) { $quote=''; $res=''; for ($i=$pos+3;$i $val) { if ($copyoriginalvalue && $val=="") { $val=$key; } $key=str_replace('"','\\"',$key); $val=str_replace('"','\\"',$val); if ($additionalfileformat) { print "\$GLOBALS['LSlang'][\"$key\"] = \"$val\";\n"; } else { print "\n\"$key\" =>\n \"$val\",\n"; } } if (!$additionalfileformat) echo "\n);\n"; ?>