| 1 |
<?php |
<?php |
| 2 |
|
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); |
| 3 |
class saveAction extends Action |
class saveAction extends Action |
| 4 |
{ |
{ |
| 5 |
function execute(&$controller, &$request) |
function execute(&$controller, &$request) |
| 6 |
{ |
{ |
| 7 |
$iso639 = strtolower(mosGetParam($_POST, 'iso639')); |
$iso639 = strtolower(mosGetParam($_POST, 'iso639')); |
| 8 |
$iso3166 = mosGetParam($_POST, 'iso3166_2'); |
$iso3166 = mosGetParam($_POST, 'iso3166_2'); |
| 9 |
|
$iso3166_3 = mosGetParam($_POST, 'iso3166_3'); |
| 10 |
$lang = $iso639; |
$lang = $iso639; |
| 11 |
$lang .= strlen($iso3166) == 2 ? '_'.$iso3166 : ''; |
$lang .= strlen($iso3166) == 2 ? '_'.$iso3166 : ''; |
| 12 |
$root = mamboCore::get('rootPath'); |
$root = mamboCore::get('rootPath'); |
| 13 |
$langfile = $root.'/language/'.$lang.'.xml'; |
$langfile = $root.'/language/'.$lang.'.xml'; |
| 14 |
|
|
| 15 |
switch ($_POST['act']) |
switch ($_POST['act']) |
| 16 |
{ |
{ |
| 17 |
case 'language': |
case 'language': |
| 18 |
if (file_exists($langfile)) { |
if (file_exists($langfile)) { |
| 19 |
$this->updatelanguage($iso639); |
$this->updatelanguage($lang); |
|
return $controller->redirect('index', 'language'); |
|
| 20 |
} |
} |
| 21 |
else { |
else { |
| 22 |
$this->createlanguage($iso639, $iso3166); |
$this->createlanguage($iso639, $iso3166, $iso3166_3); |
|
$request->set('task', 'edit'); |
|
|
$request->set('act', 'language'); |
|
|
$request->set('lang', $lang); |
|
|
return $controller->forward('edit'); |
|
| 23 |
} |
} |
| 24 |
|
return $controller->redirect('index', 'language'); |
| 25 |
break; |
break; |
|
|
|
| 26 |
case 'catalogs': |
case 'catalogs': |
| 27 |
default: |
default: |
| 28 |
$this->updatecatalog(); |
$this->updatecatalog(false); |
| 29 |
|
return $controller->redirect('index', 'catalogs'); |
| 30 |
break; |
break; |
| 31 |
} |
} |
| 32 |
} |
} |
| 33 |
|
|
|
function updatecatalog(){ |
|
|
dump($_POST); |
|
|
} |
|
|
function updatelanguage($iso639) { |
|
| 34 |
|
|
| 35 |
$language =& mamboLanguage::getInstance($_POST['language']); |
|
| 36 |
dump($language); |
function createLanguage($iso639, $iso3166, $iso3166_3) { |
| 37 |
foreach ($_POST as $k => $v) { |
$locales = mamboLanguage::getLocales(); |
|
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(); |
|
| 38 |
$default = $locales['locales'][$iso639]; |
$default = $locales['locales'][$iso639]; |
| 39 |
$lang = $iso639; |
$lang = $iso639; |
| 40 |
$lang .= strlen($iso3166) == 2 ? '_'.$iso3166 : ''; |
$lang .= strlen($iso3166) == 2 ? '_'.$iso3166 : ''; |
| 41 |
$language =& mamboLanguage::getInstance($lang); |
$language =& new mamboLanguage($lang); |
| 42 |
foreach ($default as $k => $v) { |
foreach ($default as $k => $v) { |
| 43 |
if (in_array($k, array_keys(get_class_vars(get_class($language))))) { |
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'); |
|
|
} |
|
|
} |
|
|
} |
|
| 44 |
$language->$k = $v; |
$language->$k = $v; |
| 45 |
} |
} |
| 46 |
} |
} |
| 49 |
$language->$k = $v; |
$language->$k = $v; |
| 50 |
} |
} |
| 51 |
} |
} |
|
|
|
| 52 |
$language->name = $lang; |
$language->name = $lang; |
| 53 |
$language->description = $language->title.' Locale'; |
$language->description = $language->title.' Locale'; |
| 54 |
if (!empty($language->territory)) $language->description .= ' For '.$language->territory; |
if (!empty($language->territory)) $language->description .= ' For '.$language->territory; |
| 55 |
$language->locale = $lang.'.'.$language->charset.','.$lang.','.$iso639.','.strtolower($language->title); |
$language->locale = $lang.'.'.$language->charset.','.$lang.','.$iso639.','.strtolower($language->title); |
| 56 |
|
$language->iso3166_3 = $iso3166_3; |
| 57 |
$language->creationdate = date('d-m-Y'); |
$language->creationdate = date('d-m-Y'); |
| 58 |
$language->author = 'Mambo Foundation Inc.'; |
$language->author = 'Mambo Foundation Inc.'; |
| 59 |
$language->authorurl = 'http://www.mambo-foundation.org'; |
$language->authorurl = 'http://www.mambo-foundation.org'; |
| 60 |
$language->authoremail = 'translation@mambo-foundation.org'; |
$language->authoremail = 'translation@mambo-foundation.org'; |
| 61 |
$language->copyright = '(C) 2005 - 2006 Mambo Foundation Inc.'; |
$language->copyright = '(C) 2005 - 2006 Mambo Foundation Inc.'; |
| 62 |
$language->license = 'http://www.gnu.org/copyleft/gpl.html GNU/GPL'; |
$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); |
|
| 63 |
$language->setPlurals($_POST['plural_form']); |
$language->setPlurals($_POST['plural_form']); |
| 64 |
|
|
| 65 |
$dir = $language->path.$language->name.'/'; |
$textdomain = rtrim($language->path, '\/'); |
| 66 |
|
$dir = $textdomain.'/'.$language->name; |
| 67 |
|
$untranslated = $textdomain.'/untranslated'; |
| 68 |
|
$charset = $language->charset; |
| 69 |
|
$langfiles = mosReadDirectory($untranslated,'.pot$'); |
| 70 |
@mkdir($dir); |
@mkdir($dir); |
| 71 |
@mkdir($dir.'/LC_MESSAGES'); |
@mkdir($dir.'/LC_MESSAGES'); |
| 72 |
$untranslated = $language->path.'untranslated/'; |
|
| 73 |
$langfiles = mosReadDirectory($untranslated,'.po$'); |
//$gettext_admin = new PHPGettextAdmin(); |
| 74 |
foreach ($langfiles as $lf) { |
foreach ($langfiles as $domain) { |
| 75 |
copy($untranslated.$lf, $dir.$lf); |
$domain = substr($domain,0,-4); |
| 76 |
|
/*if (file_exists("$textdomain/glossary/$lang.$charset.po")) { |
| 77 |
|
copy("$textdomain/glossary/$lang.$charset.po", "$dir/$lang.po"); |
| 78 |
|
$gettext_admin->initialize_translation($domain, $textdomain, $lang, $charset); |
| 79 |
|
$gettext_admin->compile($lang, $textdomain, $charset); |
| 80 |
|
} else {*/ |
| 81 |
|
copy("$untranslated/$domain.pot", "$dir/$domain.po"); |
| 82 |
|
//} |
| 83 |
|
} |
| 84 |
|
//if (!file_exists("$textdomain/$lang/$lang.po")) { |
| 85 |
|
// @copy("$textdomain/glossary/untranslated.pot", "$textdomain/$lang/$lang.po"); |
| 86 |
|
//} |
| 87 |
|
$language->save(); |
| 88 |
} |
} |
| 89 |
|
|
| 90 |
|
function updatelanguage($lang) |
| 91 |
|
{ |
| 92 |
|
|
| 93 |
|
$language =& new mamboLanguage($lang); |
| 94 |
|
$language->load(); |
| 95 |
|
foreach ($_POST as $k => $v) { |
| 96 |
|
if (in_array($k, array_keys(get_class_vars(get_class($language))))) { |
| 97 |
|
$language->$k = $v; |
| 98 |
|
} |
| 99 |
|
} |
| 100 |
|
$language->setPlurals($_POST['plural_form']); |
| 101 |
$language->save(); |
$language->save(); |
| 102 |
} |
} |
| 103 |
|
|
| 104 |
|
function updatecatalog($compile = true, $add_to_dict = true) |
| 105 |
|
{ |
| 106 |
|
|
| 107 |
|
$domain = $_POST['domain']; |
| 108 |
|
$textdomain = $_POST['textdomain']; |
| 109 |
|
$lang = $_POST['lang']; |
| 110 |
|
|
| 111 |
|
$catalog = new PHPGettext_catalog($domain, $textdomain); |
| 112 |
|
$catalog->setproperty('mode', 'po'); |
| 113 |
|
$catalog->setproperty('lang', $lang); |
| 114 |
|
$catalog->load(); |
| 115 |
|
|
| 116 |
|
$catalog->setComments($_POST['comments']); |
| 117 |
|
$catalog->setHeaders($_POST['headers']); |
| 118 |
|
|
| 119 |
|
foreach ($_POST as $key => $value) { |
| 120 |
|
if (preg_match('/^([a-z]+[_]?[a-z]+?)[_]?([0-9]+)?_([0-9]+)$/', $key, $matches)) { |
| 121 |
|
switch ($matches[1]) |
| 122 |
|
{ |
| 123 |
|
case 'msgid': |
| 124 |
|
if (get_magic_quotes_gpc() == 1){ |
| 125 |
|
$value = stripslashes($value); |
| 126 |
|
$value = htmlentities($value); |
| 127 |
|
} |
| 128 |
|
$messages[$matches[3]]['msgid'] = $value; |
| 129 |
|
break; |
| 130 |
|
case 'msgid_plural': |
| 131 |
|
$messages[$matches[3]]['msgid_plural'] = $value; |
| 132 |
|
break; |
| 133 |
|
case 'msgstr': |
| 134 |
|
if (!empty($messages[$matches[3]]['msgid_plural'])) { |
| 135 |
|
|
| 136 |
|
if ($matches[2] != '') { |
| 137 |
|
$messages[$matches[3]]['msgstr'][$matches[2]] = stripslashes($value); |
| 138 |
|
} else { |
| 139 |
|
$messages[$matches[3]]['msgstr'][0] = stripslashes($value); |
| 140 |
|
$messages[$matches[3]]['msgstr'][1] = ''; |
| 141 |
|
} |
| 142 |
|
} else { |
| 143 |
|
$messages[$matches[3]]['msgstr'] = stripslashes($value); |
| 144 |
|
} |
| 145 |
|
break; |
| 146 |
|
case 'fuzzy': |
| 147 |
|
$messages[$matches[3]]['fuzzy'] = $value == 'true' ? true : false; |
| 148 |
|
break; |
| 149 |
|
} |
| 150 |
|
} |
| 151 |
|
} |
| 152 |
|
foreach ($messages as $index => $arr) { |
| 153 |
|
if (strcmp($catalog->strings[$index]->msgid, $arr['msgid']) == 0) { |
| 154 |
|
$catalog->strings[$index]->setmsgstr($arr['msgstr']); |
| 155 |
|
if ($arr['fuzzy']) { |
| 156 |
|
$catalog->strings[$index]->setfuzzy($arr['fuzzy']); |
| 157 |
|
} |
| 158 |
|
} |
| 159 |
|
} |
| 160 |
|
$catalog->save(); |
| 161 |
|
|
| 162 |
|
$language = new mamboLanguage($lang); |
| 163 |
|
$language->save(); |
| 164 |
|
|
| 165 |
|
$gettext_admin = new PHPGettextAdmin(); |
| 166 |
|
$gettext_admin->add_to_dict($domain, $textdomain, $lang, $language->charset); |
| 167 |
|
$catalog->load(); |
| 168 |
|
|
| 169 |
|
if ($compile) { |
| 170 |
|
$catalog->setproperty('mode', 'mo'); |
| 171 |
|
$catalog->save(); |
| 172 |
|
} |
| 173 |
|
|
| 174 |
|
} |
| 175 |
} |
} |
| 176 |
|
|
| 177 |
|
|