6 define('TO_TRANSLATE', '#TO_TRANSLATE#');
7 define('TO_REMOVE', '#TO_REMOVE#');
9 if ($argc!=3 || ('-h'==$argv[1] || '--help'==$argv[1])) {
14 $languageDir = '/www/include/languages/';
16 $baseFile = $argv[1].$languageDir.'Base.tab';
17 if(!eregi('\.tab$', $argv[2])) {
18 $targetFile = $argv[1].$languageDir.$argv[2].'.tab';
20 $targetFile = $argv[1].$languageDir.$argv[2];
23 if (!file_exists($baseFile) || !file_exists($targetFile)) {
24 echo "FATAL: Base.tab or $argv[2].tab may not exist.\n";
28 $baseContent =& getLanguageAsArray($baseFile);
29 $targetContent =& getLanguageAsArray($targetFile);
32 $resultContent = array();
34 $stderr = fopen('php://stderr', 'w');
35 foreach($baseContent AS $pageName=>$page) {
36 foreach($page AS $key => $value) {
37 if(!isset($targetContent[$pageName][$key])) {
38 fwrite($stderr, 'TO_TRANSLATE - added : '.$pageName.' '.$key."\n");
39 $resultContent[$pageName][$key] = array('value' => $value['value'], 'prefix' => TO_TRANSLATE);
41 if($targetContent[$pageName][$key]['prefix'] == TO_TRANSLATE) {
42 fwrite($stderr, 'TO_TRANSLATE - updated : '.$pageName.' '.$key."\n");
43 $resultContent[$pageName][$key] = array('value' => $value['value'], 'prefix' => TO_TRANSLATE);
45 $resultContent[$pageName][$key] = $targetContent[$pageName][$key];
47 unset($targetContent[$pageName][$key]);
52 reset($targetContent);
53 foreach($targetContent AS $pageName => $page) {
54 foreach($page AS $key => $value) {
55 fwrite($stderr, 'TO_REMOVE - added : '.$pageName.' '.$key."\n");
56 $resultContent[$pageName][$key] = array('value' => $value['value'], 'prefix' => TO_REMOVE);
61 unset($targetContent);
64 arraySort($resultContent);
65 reset($resultContent);
67 foreach($resultContent AS $pageName => $page) {
68 foreach($page AS $key => $value) {
69 echo $value['prefix'].$pageName."\t".$key."\t".$value['value']."\n";
75 $self = basename($argv[0]);
77 >> GForge language file merge utility, by Hunte Swee<hunte@users.sourceforge.net> and Guillaume Smet<guillaume-gforge@smet.org><<
80 <?php echo $self?> <GForge root directory> <Target language> 1>merge.tab 2>merge.log
82 <?php echo $self?> /usr/share/gforge SimplifiedChinese 1>merge.tab 2>merge.log
87 function &getLanguageAsArray($languageFile) {
88 $content = file($languageFile);
91 while(list(, $line)=each($content)) {
94 if(eregi('^'.TO_TRANSLATE, $line)) {
95 $line = substr($line, strlen(TO_TRANSLATE));
96 $prefix = TO_TRANSLATE;
97 } elseif(eregi('^'.TO_REMOVE, $line)) {
98 $line = substr($line, strlen(TO_REMOVE));
100 } elseif(eregi('^#', $line)) {
105 list($pn, $key, $val) = explode("\t", $line, 3);
106 $result[$pn][$key] = array('value' => $val, 'prefix' => $prefix);
112 function &arraySort(& $array) {
113 $keys = array_keys($array);
114 for($i = 0, $count = count($keys); $i < $count; $i++) {
115 ksort($array[$keys[$i]]);