diff options
Diffstat (limited to 'util/php2po.php')
-rw-r--r-- | util/php2po.php | 144 |
1 files changed, 79 insertions, 65 deletions
diff --git a/util/php2po.php b/util/php2po.php index ff41e6d1e..c710b86fe 100644 --- a/util/php2po.php +++ b/util/php2po.php @@ -1,71 +1,85 @@ <?php - if(! class_exists('App')) { - class TmpA { - public $strings = Array(); - } - $a = new TmpA(); - } + if(! class_exists('App')) { + class App { + static public $rtl; + static public $strings = Array(); + } + } - if ($argc!=2) { - print "Usage: ".$argv[0]." <hstrings.php>\n\n"; - return; - } - - $phpfile = $argv[1]; - $pofile = dirname($phpfile)."/hmessages.po"; + if ($argc!=2) { + print "Usage: ".$argv[0]." <hstrings.php>\n\n"; + return; + } - if (!file_exists($phpfile)){ - print "Unable to find '$phpfile'\n"; - return; - } + $phpfile = $argv[1]; + $pofile = dirname($phpfile)."/hmessages.po"; - include_once($phpfile); + if (!file_exists($phpfile)){ + print "Unable to find '$phpfile'\n"; + return; + } - print "Out to '$pofile'\n"; - - $out = ""; - $infile = file($pofile); - $k=""; - $ink = False; - foreach ($infile as $l) { - - if ($k!="" && substr($l,0,7)=="msgstr "){ - $ink = False; - $v = '""'; - //echo "DBG: k:'$k'\n"; - if (isset(App::$strings[$k])) { - $v= '"'.App::$strings[$k].'"'; - //echo "DBG\n"; - //var_dump($k, $v, App::$strings[$k], $v); - //echo "/DBG\n"; - - } - //echo "DBG: v:'$v'\n"; - $l = "msgstr ".$v."\n"; - } - - if (substr($l,0,6)=="msgid_" || substr($l,0,7)=="msgstr[" )$ink = False;; - - if ($ink) { - $k .= trim($l,"\"\r\n"); - $k = str_replace('\"','"',$k); - } - - if (substr($l,0,6)=="msgid "){ - $arr=False; - $k = str_replace("msgid ","",$l); - if ($k != '""' ) { - $k = trim($k,"\"\r\n"); - $k = str_replace('\"','"',$k); - } else { - $k = ""; - } - $ink = True; - } - - $out .= $l; - } - //echo $out; - file_put_contents($pofile, $out); -?>
\ No newline at end of file + include_once($phpfile); + + print "Out to '$pofile'\n"; + + $out = ""; + $infile = file($pofile); + $k = ""; + $c = ""; + $ink = False; + foreach ($infile as $l) { + + $l = trim($l, " "); + if (!preg_match("/^msgstr\[[1-9]/",$l)) { + if ($k!="" && (substr($l,0,7)=="msgstr " || substr($l,0,8)=="msgstr[0")){ + $ink = False; + $k = stripslashes($k); + $v = ""; + if (isset(App::$strings[$k])) { + $v = App::$strings[$k]; + } else { + $k = "__ctx:".$c."__ ".$k; + if (isset(App::$strings[$k])) { + $v = App::$strings[$k]; + $c = ""; + }; + } + if (!empty($v)) { + if (is_array($v)) { + $l = ""; + $n = 0; + foreach ($v as &$value) { + $l .= "msgstr[".$n."] \"".addcslashes($value,"\"\n")."\"\n"; + $n++; + } + } else { + $l = "msgstr \"".addcslashes($v,"\"\n")."\"\n"; + } + } + } + + if (substr($l,0,6)=="msgid_" || substr($l,0,7)=="msgstr[") $ink = False; + + if ($ink) { + preg_match('/^"(.*)"$/',$l,$m); + $k .= $m[1]; + } + + if (substr($l,0,6)=="msgid ") { + preg_match('/^msgid "(.*)"$/',$l,$m); + $k = $m[1]; + $ink = True; + } + + if (substr($l,0,8)=="msgctxt ") { + preg_match('/^msgctxt "(.*)"$/',$l,$m); + $c = $m[1]; + } + + $out .= $l; + } + } + file_put_contents($pofile, $out); +?> |