updatelanguage($iso639); return $controller->redirect('index', 'language'); } else { $this->createlanguage($iso639, $iso3166); $request->set('task', 'edit'); $request->set('act', 'language'); $request->set('lang', $lang); return $controller->forward('edit'); } break; case 'catalogs': default: $this->updatecatalog(); #return $controller->forward('edit'); return $controller->redirect('index', 'catalogs'); break; } } function updatecatalog(){ $compile = 1; $add_to_dictionary = 1; $domain = $_POST['domain']; $textdomain = $_POST['textdomain']; $lang = $_POST['lang']; $comments = trim($_POST['comments']); $headers = $_POST['headers']; foreach ($_POST as $key => $value) { if (preg_match('/^([a-z]+)[_]?([0-9]+)?_([0-9]+)$/', $key, $matches)) { switch ($matches[1]) { case 'msgid': $msgid[$matches[3]] = $value; break; case 'msgstr': if ($matches[2] != '') { $msgstr[$matches[3]][$matches[2]] = stripslashes($value); } else { $msgstr[$matches[3]] = stripslashes($value); } break; case 'fuzzy': $is_fuzzy[$matches[3]] = $value; break; } } } $catalog = new PHPGettext_catalog($domain, $textdomain); $catalog->setproperty('mode', 'po'); $catalog->setproperty('lang', $lang); $catalog->load(); if (isset($comments)) { $comments = explode("\n", $comments); if (is_array($comments)) { foreach ($comments as $comment) { if (strpos($comment, '#') == 1) { $catalog->comments .= $comment."\n"; } } } } foreach ($headers as $key => $value) { $catalog->headers[$key] = $value; } foreach ($msgstr as $index => $string) { $catalog->strings[$index]->setmsgstr($string); if (isset($is_fuzzy[$index])) { $catalog->strings[$index]->setfuzzy(true); } } $catalog->save(); if ($compile > 0) { $catalog->setproperty('mode', 'mo'); $catalog->save(); } if ($add_to_dictionary) { $admin = new PHPGettextAdmin(); if (!file_exists("$textdomain/$lang.po")) { set_time_limit(360); $cmd = "msgcat -o $textdomain/$lang.po $textdomain/$lang/$domain.po"; $admin->execute($cmd); } else { copy("$textdomain/$lang.po", "$textdomain/$lang.pot"); $cmd = "msgcat -o $textdomain/$lang.po $textdomain/$lang.pot $textdomain/$lang/$domain.po"; $admin->execute($cmd); unlink("$textdomain/$lang.pot"); } } $language = mamboLanguage::getInstance($lang); $language->save(); } function updatelanguage($iso639) { $language =& mamboLanguage::getInstance($_POST['language']); dump($language); foreach ($_POST as $k => $v) { if (in_array($k, array_keys(get_class_vars(get_class($language))))) { $language->$k = $v; } } $language->setPlurals($_POST['plural_form']); $language->save(); } function createlanguage($iso639, $iso3166) { $locales = getlocales(); $default = $locales['locales'][$iso639]; $lang = $iso639; $lang .= strlen($iso3166) == 2 ? '_'.$iso3166 : ''; $language =& mamboLanguage::getInstance($lang); foreach ($default as $k => $v) { if (in_array($k, array_keys(get_class_vars(get_class($language))))) { if (function_exists('iconv')) { if ($language->charset != 'utf-8') { if ($k == 'date_format') $v = mb_convert_encoding($v, $language->charset, 'UTF-8'); foreach ($language->days as $d => $day) { $language->days[$i] = mb_convert_encoding($day, $language->charset, 'UTF-8'); } foreach ($language->months as $m => $month) { $language->months[$m] = mb_convert_encoding($month, $language->charset, 'UTF-8'); } } } $language->$k = $v; } } foreach ($_POST as $k => $v) { if (in_array($k, array_keys(get_class_vars(get_class($language))))) { $language->$k = $v; } } $language->name = $lang; $language->description = $language->title.' Locale'; if (!empty($language->territory)) $language->description .= ' For '.$language->territory; $language->locale = $lang.'.'.$language->charset.','.$lang.','.$iso639.','.strtolower($language->title); $language->creationdate = date('d-m-Y'); $language->author = 'Mambo Foundation Inc.'; $language->authorurl = 'http://www.mambo-foundation.org'; $language->authoremail = 'translation@mambo-foundation.org'; $language->copyright = '(C) 2005 - 2006 Mambo Foundation Inc.'; $language->license = 'http://www.gnu.org/copyleft/gpl.html GNU/GPL'; preg_match('/plurals\s*=\s*(\d{1})\s*;\s*plural\s*=(.*);/', $language->plural_form, $matches); $language->setPlurals($_POST['plural_form']); $dir = $language->path.$language->name.'/'; @mkdir($dir); @mkdir($dir.'/LC_MESSAGES'); $untranslated = $language->path.'untranslated/'; $langfiles = mosReadDirectory($untranslated,'.po$'); foreach ($langfiles as $lf) { copy($untranslated.$lf, $dir.$lf); } $language->save(); } } ?>