gforge-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gforge-commits] tools language_file_merger.php,1.1,1.2


From: gsmet
Subject: [Gforge-commits] tools language_file_merger.php,1.1,1.2
Date: Tue, 02 Mar 2004 05:24:25 -0600

Update of /cvsroot/gforge/tools
In directory db.perdue.net:/tmp/cvs-serv25699

Modified Files:
        language_file_merger.php 
Log Message:
* Added stderr output to generate a log file
* Now it adds lines with a #TO_TRANSLATE# flag and it signals removable lines 
by #TO_REMOVE# flag


Index: language_file_merger.php
===================================================================
RCS file: /cvsroot/gforge/tools/language_file_merger.php,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- language_file_merger.php    3 Feb 2004 21:18:12 -0000       1.1
+++ language_file_merger.php    2 Mar 2004 11:24:22 -0000       1.2
@@ -1,46 +1,72 @@
 #!/usr/bin/php -q
-<?
+<?php
 #$argc=$ARGC;
 #$argv=$ARGV;
 
-if ($argc!=3 || ("-h"==$argv[1] || "--help"==$argv[1])) {
+define('TO_TRANSLATE', '#TO_TRANSLATE#');
+define('TO_REMOVE', '#TO_REMOVE#');
+
+if ($argc!=3 || ('-h'==$argv[1] || '--help'==$argv[1])) {
        showHelp();
        exit;
 }
 
+$languageDir = '/www/include/languages/';
 
-$langdir = "/www/include/languages/";
-$basefile = $argv[1] . $langdir . "Base.tab";
-if (!eregi("\.tab$", $argv[2])) {
-       $targfile = $argv[1] . $langdir . $argv[2] . ".tab";
+$baseFile = $argv[1].$languageDir.'Base.tab';
+if(!eregi('\.tab$', $argv[2])) {
+       $targetFile = $argv[1].$languageDir.$argv[2].'.tab';
 } else {
-       $targfile = $argv[1] . $langdir . $argv[2];
+       $targetFile = $argv[1].$languageDir.$argv[2];
 }
 
-if (!file_exists($basefile) || !file_exists($targfile)) {
-       echo "FATAL: Base.tab or $argv[2] may not exist.\n";
+if (!file_exists($baseFile) || !file_exists($targetFile)) {
+       echo "FATAL: Base.tab or $argv[2].tab may not exist.\n";
        exit;
 }
 
-$basectnt = getLangAsArray($basefile);
-$targctnt = getLangAsArray($targfile);
+$baseContent = getLanguageAsArray($baseFile);
+$targetContent = getLanguageAsArray($targetFile);
 
-reset($basectnt);
+reset($baseContent);
+$resultContent = array();
 
-while (list($k1, $v1) = each($basectnt)) {
-       while (list($k2, $v2) = each($v1)) {
-               if (!isset($targctnt[$k1][$k2])) {
-                       $targctnt[$k1][$k2] = $v2       ;
+$stderr = fopen('php://stderr', 'w');
+foreach($baseContent AS $pageName=>$page) {
+       foreach($page AS $key => $value) {
+               if(!isset($targetContent[$pageName][$key])) {
+                       fwrite($stderr, 'TO_TRANSLATE - added : '.$pageName.' 
'.$key."\n");
+                       $resultContent[$pageName][$key] = array('value' => 
$value['value'], 'prefix' => TO_TRANSLATE);
+               } else {
+                       if($targetContent[$pageName][$key]['prefix'] == 
TO_TRANSLATE) {
+                               fwrite($stderr, 'TO_TRANSLATE - updated : 
'.$pageName.' '.$key."\n");
+                               $resultContent[$pageName][$key] = array('value' 
=> $value['value'], 'prefix' => TO_TRANSLATE);
+                       } else {
+                               $resultContent[$pageName][$key] = 
$targetContent[$pageName][$key];
+                       }
+                       unset($targetContent[$pageName][$key]);
                }
        }
 }
 
-ksort($targctnt);
-reset($targctnt);
+reset($targetContent);
+foreach($targetContent AS $pageName => $page) {
+       fwrite($stderr, 'TO_REMOVE - added : '.$pageName.' '.$key."\n");
+       foreach($page AS $key => $value) {
+               $resultContent[$pageName][$key] = array('value' => 
$value['value'], 'prefix' => TO_REMOVE);
+       }
+}
+fclose($stderr);
 
-while (list($k1, $v1) = each($targctnt)) {
-       while (list($k2, $v2) = each($v1)) {
-               echo "$k1\t$k2\t$v2";
+unset($targetContent);
+unset($baseContent);
+
+ksort($resultContent);
+reset($resultContent);
+
+foreach($resultContent AS $pageName => $page) {
+       foreach($page AS $key => $value) {
+               echo 
$value['prefix'].$pageName."\t".$key."\t".$value['value']."\n";
        }
 }
 
@@ -48,26 +74,38 @@
        global $argc, $argv;
        $self = basename($argv[0]);
 ?>
->> GForge language file merge utility, by Hunte Swee<address@hidden> <<
+>> GForge language file merge utility, by Hunte Swee<address@hidden> and 
Guillaume Smet<address@hidden><<
 
 Usage:
-<?=$self?> <GForge root directory> <Target language>
+<?=$self?> <GForge root directory> <Target language> 1>merge.tab 2>merge.log
 Example:
-<?=$self?> /usr/share/gforge SimplifiedChinese
+<?=$self?> /usr/share/gforge SimplifiedChinese 1>merge.tab 2>merge.log
 
-<?
+<?php
 }
 
-function getLangAsArray($langfile) {
-       $ctnt = file($langfile);
-       reset($ctnt);
-       while (list(, $line)=each($ctnt)) {
-               if (eregi("^#", trim($line))) {
-                       continue;
+function getLanguageAsArray($languageFile) {
+       $content = file($languageFile);
+       reset($content);
+       $result = array();
+       while(list(, $line)=each($content)) {
+               $line = trim($line);
+               if(!empty($line)) {
+                       if(eregi('^'.TO_TRANSLATE, $line)) {
+                               $line = substr($line, strlen(TO_TRANSLATE));
+                               $prefix = TO_TRANSLATE;
+                       } elseif(eregi('^'.TO_REMOVE, $line)) {
+                               $line = substr($line, strlen(TO_REMOVE));
+                               $prefix = TO_REMOVE;
+                       } elseif(eregi('^#', $line)) {
+                               continue;
+                       } else {
+                               $prefix = '';
+                       }
+                       list($pn, $key, $val) = explode("\t", $line, 3);
+                       $result[$pn][$key] = array('value' => $val, 'prefix' => 
$prefix);
                }
-               list($pn, $key, $val) = explode("\t", $line, 3);
-               $result[$pn][$key] = $val;
        }
        return $result;
 }
-?>
+?>
\ No newline at end of file





reply via email to

[Prev in Thread] Current Thread [Next in Thread]