From 6fdc35e13eff20c82e314a620158e56aa8366648 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Mon, 7 Jan 2013 21:50:37 +0100 Subject: Remove development stuff and prepare for release --- bin/importgettext.sh | 196 --------------------------------------------------- 1 file changed, 196 deletions(-) delete mode 100755 bin/importgettext.sh (limited to 'bin/importgettext.sh') diff --git a/bin/importgettext.sh b/bin/importgettext.sh deleted file mode 100755 index 285f5680f..000000000 --- a/bin/importgettext.sh +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/env php - | - +-----------------------------------------------------------------------+ -*/ - -define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' ); -require INSTALL_PATH.'program/include/clisetup.php'; - -if ($argc < 2) { - die("Usage: " . basename($argv[0]) . " SRCDIR\n"); -} - -$srcdir = unslashify(realpath($argv[1])); - -if (is_dir($srcdir)) { - $out = import_dir($srcdir); -} -else if (is_file($srcdir)) { - $out = import_file($srcdir); -} - -// write output files -foreach ($out as $outfn => $texts) { - $lang = preg_match('!/([a-z]{2}(_[A-Z]{2})?)[./]!', $outfn, $m) ? $m[1] : ''; - $varname = strpos($outfn, 'messages.inc') !== false ? 'messages' : 'labels'; - - $header = <</i', '', $texts['_translator']); - $output = sprintf($header, $lang, $varname.'.inc', date('Y'), $author, $varname); - - foreach ($texts as $label => $value) { - if (is_array($value)) { var_dump($outfn, $label, $value); exit; } - if ($label[0] != '_' && strlen($value)) - $output .= sprintf("\$%s['%s'] = '%s';\n", $varname, $label, strtr(addcslashes($value, "'"), array("\r" => '', "\n" => '\n'))); - } - - $output .= "\n"; - $dir = dirname($outfn); - @mkdir($dir, 0755, true); - if (file_put_contents($outfn, $output)) - echo "-> $outfn\n"; -} - - -/** - * Convert all .po files in the given src directory - */ -function import_dir($indir) -{ - $out = array(); - foreach (glob($indir.'/*.po') as $fn) { - $out = array_merge_recursive($out, import_file($fn)); - } - return $out; -} - -/** - * Convert the given .po file into a Roundcube localization array - */ -function import_file($fn) -{ - $out = array(); - $lines = file($fn); - $language = ''; - $translator = ''; - - // get language code from file name - if (preg_match('/-([a-z_]+).po$/i', $fn, $m)) - $language = expand_langcode($m[1]); - - $is_header = true; - $msgid = null; - $msgstr = ''; - $dests = array(); - foreach ($lines as $i => $line) { - $line = trim($line); - - // parse header - if ($is_header && $line[0] == '"') { - list($key, $val) = explode(": ", preg_replace('/\\\n$/', '', trim($line, '"')), 2); - switch (strtolower($key)) { - case 'language': - $language = expand_langcode($val); - break; - case 'last-translator': - $translator = $val; - break; - } - } - - // empty line - if ($line == '') { - if ($msgid && $dests) { - foreach ($dests as $dest) { - list($file, $label) = explode(':', $dest); - $out[$file][$label] = $msgstr; - $out[$file]['_translator'] = $translator; - } - } - - $msgid = null; - $msgstr = ''; - $dests = array(); - } - - // meta line - if ($line[0] == '#') { - $value = trim(substr($line, 2)); - if ($line[1] == ':') - $dests[] = str_replace('en_US', $language, $value); - } - else if (strpos($line, 'msgid') === 0) { - $msgid = gettext_decode(substr($line, 6)); - - if (!empty($msgid)) - $is_header = false; - } - else if (strpos($line, 'msgstr') === 0) { - $msgstr = gettext_decode(substr($line, 7)); - } - else if ($msgid && $line[0] == '"') { - $msgstr .= gettext_decode($line); - } - else if ($msgid !== null && $line[0] == '"') { - $msgid .= gettext_decode($line); - } - } - - if ($msgid && $dests) { - foreach ($dests as $dest) { - list($file, $label) = explode(':', $dest); - $out[$file][$label] = $msgstr; - $out[$file]['_translator'] = $translator; - } - } - - return $language ? $out : array(); -} - - -function gettext_decode($str) -{ - return stripslashes(trim($str, '"')); -} - -/** - * Translate two-chars language codes to our internally used language identifiers - */ -function expand_langcode($lang) -{ - static $rcube_language_aliases, $rcube_languages; - - if (!$rcube_language_aliases) - include(INSTALL_PATH . 'program/localization/index.inc'); - - if ($rcube_language_aliases[$lang]) - return $rcube_language_aliases[$lang]; - else if (strlen($lang) == 2 && !isset($rcube_languages[$lang])) - return strtolower($lang) . '_' . strtoupper($lang); - else - return $lang; -} - - -?> -- cgit v1.2.3