add php/PO conversion scripts from alin. these look really awesome. means that...
authorchriskl <chriskl>
Wed, 10 Nov 2004 01:28:10 +0000 (01:28 +0000)
committerchriskl <chriskl>
Wed, 10 Nov 2004 01:28:10 +0000 (01:28 +0000)
lang/php2po [new file with mode: 0755]
lang/po2php [new file with mode: 0755]

diff --git a/lang/php2po b/lang/php2po
new file mode 100755 (executable)
index 0000000..af21ffd
--- /dev/null
@@ -0,0 +1,100 @@
+#!/usr/bin/php -f\r
+<?php\r
+/**\r
+       * This script creates a po file for for a new language.\r
+       * based on english.php\r
+       * Be aware that the variables in the 'Language and character set'\r
+       * section ($lang['app...']) are not for translation, but settings.\r
+       * \r
+       * $Id: php2po,v 1.1 2004/11/10 01:28:10 chriskl Exp $\r
+       */\r
+\r
+\r
+switch ($argc)\r
+{\r
+       case 2:\r
+               $slang = 'english';\r
+               $dlang = $argv[1];\r
+               break;\r
+       case 3:\r
+               $slang = $argv[1];\r
+               $dlang = $argv[2];\r
+               break;\r
+       default:\r
+               echo "\nUsage: $argv[0] [srclang] dstlang\n\n";\r
+               exit();\r
+}\r
+\r
+$scode = file ($slang.".php");\r
+\r
+// Parse source code\r
+for ($i = 0; $i < count($scode); $i++)\r
+{\r
+       $scode[$i] = trim($scode[$i]);\r
+       if (substr($scode[$i], 0, 2) == '//')\r
+       {\r
+               $group = substr($scode[$i], 2);\r
+               $src[$group] = array();\r
+       }\r
+       \r
+       preg_match("/.lang\['(.*?)'\] = '(.*?)';/", $scode[$i], $ret);\r
+       \r
+       if (count($ret))\r
+       {\r
+               $src[$group][$ret[1]] = $ret[2];\r
+       }\r
+}\r
+\r
+// Parse destination (if it exists)\r
+if (file_exists($dlang.".php"))\r
+{\r
+       $dcode = file ($dlang.".php");\r
+       \r
+       for ($i = 0; $i < count($dcode); $i++)\r
+       {\r
+               $dcode[$i] = trim($dcode[$i]);\r
+               \r
+               preg_match("/.lang\['(.*?)'\] = '(.*?)';/", $dcode[$i], $ret);\r
+               \r
+               if (count($ret))\r
+               {\r
+                       $dst[$ret[1]] = $ret[2];\r
+               }\r
+       }\r
+}\r
+\r
+// Create po file\r
+if (! $fres = fopen($dlang.".po", "w"))\r
+{\r
+       echo "\nError: cannot open file ".$dlang.".po for writing\n\n";\r
+       exit();\r
+}\r
+\r
+fwrite($fres, "#\n#\n#\n#\n\n\n\n\n");\r
+fwrite($fres, "msgid \"\"\n");\r
+fwrite($fres, "msgstr \"\"\n\n\n\n");\r
+\r
+foreach ($src as $group => $strings)\r
+{\r
+       fwrite($fres, "\n");\r
+       fwrite($fres, "#. group $group\n");\r
+       \r
+       foreach($strings as $var => $string)\r
+       {\r
+               $string = str_replace('"', '\\"', $string);\r
+               fwrite($fres, "#. str $var\n");\r
+               fwrite($fres, "msgid \"$string\"\n");\r
+               fwrite($fres, "msgstr \"");\r
+               if ($dst[$var])\r
+               {\r
+                       $tstring = str_replace('"', '\\"', $dst[$var]);\r
+                       fwrite($fres, $tstring);\r
+               }\r
+               fwrite($fres, "\"\n\n");\r
+       }\r
+       \r
+}\r
+\r
+fclose($fres);\r
+\r
+?>
\ No newline at end of file
diff --git a/lang/po2php b/lang/po2php
new file mode 100755 (executable)
index 0000000..145590d
--- /dev/null
@@ -0,0 +1,74 @@
+#!/usr/bin/php -f\r
+<?php\r
+/**\r
+       * This script converts a po file generated from english.php by php2po\r
+       * into a new_language.php\r
+       * The resulted php file still needs some manual editing \r
+       * (header & $lang['app...'] variables)\r
+       * \r
+       * $Id: po2php,v 1.1 2004/11/10 01:28:10 chriskl Exp $\r
+       */\r
+\r
+switch ($argc)\r
+{\r
+       case 2:\r
+               $dlang = $argv[1];\r
+               break;\r
+       default:\r
+               echo "\nUsage: $argv[0] dstlang\n\n";\r
+               exit();\r
+}\r
+\r
+\r
+if (!file_exists($dlang.".po"))\r
+{\r
+       echo "\nError: file not found: $dlang.po\n\n";\r
+       exit();\r
+}\r
+\r
+if (file_exists($dlang.".php"))\r
+{\r
+       echo "\nError: file $dlang.php already exists\n\n";\r
+       exit();\r
+}\r
+\r
+$scode = file ($dlang.".po");\r
+\r
+// Create lang.php file\r
+if (! $fres = fopen($dlang.".php", "w"))\r
+{\r
+       echo "\nError: cannot open file ".$dlang.".php for writing\n\n";\r
+       exit();\r
+}\r
+\r
+fwrite($fres, "<?php\n\n\n");\r
+\r
+// Parse source code\r
+for ($i = 0; $i < count($scode); $i++)\r
+{\r
+       if (preg_match("/^#. group (.*)$/", $scode[$i], $ret))\r
+       {\r
+               fwrite($fres, "\n\t//".$ret[1]."\n");\r
+       }\r
+       elseif (preg_match("/^#. str (.*)$/", $scode[$i], $ret))\r
+       {\r
+               $langvar = $ret[1];\r
+       }\r
+       elseif (preg_match("/^msgid \"(.*)\"$/", $scode[$i], $ret))\r
+       {\r
+               $base = $ret[1];\r
+       }\r
+       elseif (preg_match("/^msgstr \"(.*)\"$/", $scode[$i], $ret))\r
+       {\r
+               if (! $ret[1])\r
+                       $ret[1] = $base;\r
+               \r
+               fwrite($fres, "\t\$lang['".$langvar."'] = '".str_replace('\\"', '"', $ret[1])."';\n");\r
+       }\r
+}\r
+\r
+fwrite($fres, "\n\n\n?>\n");\r
+\r
+fclose($fres);\r
+\r
+?>
\ No newline at end of file