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