View of /mambo/branches/4.6/administrator/components/com_languages/actions/save.action.php
Parent Directory
|
Revision Log
Revision 466 -
(download)
(annotate)
Wed Apr 12 22:31:51 2006 UTC (7 years, 1 month ago) by csouza
File size: 7135 byte(s)
Wed Apr 12 22:31:51 2006 UTC (7 years, 1 month ago) by csouza
File size: 7135 byte(s)
<?php
class saveAction extends Action
{
function execute(&$controller, &$request)
{
$iso639 = strtolower(mosGetParam($_POST, 'iso639'));
$iso3166 = mosGetParam($_POST, 'iso3166_2');
$lang = $iso639;
$lang .= strlen($iso3166) == 2 ? '_'.$iso3166 : '';
$root = mamboCore::get('rootPath');
$langfile = $root.'/language/'.$lang.'.xml';
switch ($_POST['act'])
{
case 'language':
if (file_exists($langfile)) {
$this->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->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 == 'true' ? true : false;
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;
}
$catalog->headers['PO-Revision-Date'] = date('Y-m-d G:iO');
foreach ($msgstr as $index => $string) {
$catalog->strings[$index]->setmsgstr($string);
if (isset($is_fuzzy[$index])) {
$catalog->strings[$index]->setfuzzy($is_fuzzy[$index]);
}
}
$catalog->save();
if ($compile > 0) {
$catalog->setproperty('mode', 'mo');
$catalog->save();
}
if ($add_to_dictionary) {
if (!is_dir("$textdomain/glossary/")) {
mkdir("$textdomain/glossary/");
}
$admin = new PHPGettextAdmin();
if (!file_exists("$textdomain/glossary/$lang.po")) {
set_time_limit(360);
$cmd = "msgcat --use-first -o $textdomain/glossary/$lang.po $textdomain/$lang/$domain.po";
$admin->execute($cmd);
} else {
copy("$textdomain/glossary/$lang.po", "$textdomain/glossary/$lang.pot");
$cmd = "msgcat --use-first -o $textdomain/glossary/$lang.po $textdomain/glossary/$lang.pot $textdomain/$lang/$domain.po";
$admin->execute($cmd);
unlink("$textdomain/glossary/$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();
}
}
?>| ViewVC Help | |
| Powered by ViewVC 1.0.0 |

