#!/usr/bin/env php (.*[^,\n])),?~m", $file, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE); $s = ""; $lang = basename($filename, ".inc.php"); $fullstop = ($lang == "bn" ? '।' : (preg_match('~^(ja|zh)~', $lang) ? '。' : ($lang == 'he' ? '[^.]' : '\.'))); foreach ($matches as $match) { list(, list($indent), list($line, $offset), list($en), list($translation)) = $match; if (isset($messages[$en])) { // keep current messages $s .= "$indent$line,\n"; unset($messages[$en]); $en_fullstop = (substr($en, -2, 1) == "."); //! check in array if ($en != "','" && ($en_fullstop xor preg_match("~$fullstop'\)?\$~", $line))) { if ($lang != ($en_fullstop ? "ja" : "he")) { // fullstop is optional in 'ja', forbidden in 'he' echo "$filename:" . (substr_count($file, "\n", 0, $offset) + 1) . ":Not matching fullstop: $line\n"; } } if (preg_match('~%~', $en) xor preg_match('~%~', $translation)) { echo "$filename:" . (substr_count($file, "\n", 0, $offset) + 1) . ":Not matching placeholder.\n"; } } else { // comment deprecated messages $s .= "$indent// $line,\n"; } } if ($messages) { if ($lang != "en") { $s .= "\n"; } foreach ($messages as $idf => $val) { // add new messages if ($val == "," && strpos($idf, "%d")) { $s .= "\t$idf => array(),\n"; } elseif ($lang != "en") { $s .= "\t$idf => null,\n"; } } } $s = "