From e27e0ca198d6e4890eedd7eeaa121a32ed5fba46 Mon Sep 17 00:00:00 2001 From: Max Kostikov <max@kostikov.co> Date: Sat, 28 Jul 2018 17:36:48 +0200 Subject: Plural form strings export added --- util/php2po.php | 121 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 62 insertions(+), 59 deletions(-) (limited to 'util/php2po.php') diff --git a/util/php2po.php b/util/php2po.php index c165006a1..459226f85 100644 --- a/util/php2po.php +++ b/util/php2po.php @@ -7,65 +7,68 @@ } } - 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; + } + + $phpfile = $argv[1]; + $pofile = dirname($phpfile)."/hmessages.po"; + + if (!file_exists($phpfile)){ + print "Unable to find '$phpfile'\n"; + return; + } + + include_once($phpfile); - if (!file_exists($phpfile)){ - print "Unable to find '$phpfile'\n"; - return; - } + print "Out to '$pofile'\n"; - include_once($phpfile); + $out = ""; + $infile = file($pofile); + $k=""; + $ink = False; + foreach ($infile as $l) { - 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 \"".str_replace('"','\"',$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 + if (!preg_match("/^msgstr\[[1-9]/",$l)) { + if ($k!="" && (substr($l,0,7)=="msgstr " || substr($l,0,8)=="msgstr[0")){ + $ink = False; + $v = ""; + if (isset(App::$strings[$k])) { + $v = App::$strings[$k]; + if (is_array($v)) { + $l = ""; + $n = 0; + foreach ($v as &$value) { + $l .= "msgstr[".$n."] \"".str_replace('"','\"',$value)."\"\n"; + $n++; + } + } else { + $l = "msgstr \"".str_replace('"','\"',$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 "){ + $k = str_replace("msgid ","",$l); + if ($k != '""' ) { + $k = trim($k,"\"\r\n"); + $k = str_replace('\"','"',$k); + } else { + $k = ""; + } + $ink = True; + } + + $out .= $l; + } + } + file_put_contents($pofile, $out); +?> -- cgit v1.2.3 From 77dfe63d909202526fd6ffae25f4c14850c5c2a1 Mon Sep 17 00:00:00 2001 From: Max Kostikov <max@kostikov.co> Date: Sun, 29 Jul 2018 02:11:27 +0200 Subject: Process msgctxt plurals --- util/php2po.php | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'util/php2po.php') diff --git a/util/php2po.php b/util/php2po.php index 459226f85..99578a12d 100644 --- a/util/php2po.php +++ b/util/php2po.php @@ -33,9 +33,16 @@ if (!preg_match("/^msgstr\[[1-9]/",$l)) { if ($k!="" && (substr($l,0,7)=="msgstr " || substr($l,0,8)=="msgstr[0")){ $ink = False; + $k = str_replace('\"','"',$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]; + } + if (!empty($v)) { if (is_array($v)) { $l = ""; $n = 0; @@ -53,20 +60,19 @@ if ($ink) { $k .= trim($l,"\"\r\n"); - $k = str_replace('\"','"',$k); } - if (substr($l,0,6)=="msgid "){ - $k = str_replace("msgid ","",$l); - if ($k != '""' ) { - $k = trim($k,"\"\r\n"); - $k = str_replace('\"','"',$k); - } else { - $k = ""; - } + 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; } } -- cgit v1.2.3