Annotation of /mambo/branches/4.6/administrator/components/com_languages/actions/save.action.php
Parent Directory
|
Revision Log
Revision 915 - (view) (download)
| 1 : | csouza | 298 | <?php |
| 2 : | andphe | 915 | defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); |
| 3 : | csouza | 298 | class saveAction extends Action |
| 4 : | { | ||
| 5 : | function execute(&$controller, &$request) | ||
| 6 : | { | ||
| 7 : | csouza | 403 | $iso639 = strtolower(mosGetParam($_POST, 'iso639')); |
| 8 : | $iso3166 = mosGetParam($_POST, 'iso3166_2'); | ||
| 9 : | andphe | 908 | $iso3166_3 = mosGetParam($_POST, 'iso3166_3'); |
| 10 : | csouza | 403 | $lang = $iso639; |
| 11 : | $lang .= strlen($iso3166) == 2 ? '_'.$iso3166 : ''; | ||
| 12 : | $root = mamboCore::get('rootPath'); | ||
| 13 : | $langfile = $root.'/language/'.$lang.'.xml'; | ||
| 14 : | csouza | 556 | |
| 15 : | csouza | 403 | switch ($_POST['act']) |
| 16 : | csouza | 298 | { |
| 17 : | csouza | 403 | case 'language': |
| 18 : | if (file_exists($langfile)) { | ||
| 19 : | csouza | 556 | $this->updatelanguage($lang); |
| 20 : | csouza | 298 | } |
| 21 : | csouza | 403 | else { |
| 22 : | andphe | 908 | $this->createlanguage($iso639, $iso3166, $iso3166_3); |
| 23 : | csouza | 403 | } |
| 24 : | ninekrit | 909 | return $controller->redirect('index', 'language'); |
| 25 : | csouza | 403 | break; |
| 26 : | case 'catalogs': | ||
| 27 : | default: | ||
| 28 : | andphe | 879 | $this->updatecatalog(false); |
| 29 : | csouza | 407 | return $controller->redirect('index', 'catalogs'); |
| 30 : | csouza | 403 | break; |
| 31 : | } | ||
| 32 : | } | ||
| 33 : | |||
| 34 : | csouza | 407 | |
| 35 : | |||
| 36 : | andphe | 908 | function createLanguage($iso639, $iso3166, $iso3166_3) { |
| 37 : | csouza | 556 | $locales = mamboLanguage::getLocales(); |
| 38 : | csouza | 403 | $default = $locales['locales'][$iso639]; |
| 39 : | $lang = $iso639; | ||
| 40 : | $lang .= strlen($iso3166) == 2 ? '_'.$iso3166 : ''; | ||
| 41 : | csouza | 556 | $language =& new mamboLanguage($lang); |
| 42 : | csouza | 403 | foreach ($default as $k => $v) { |
| 43 : | if (in_array($k, array_keys(get_class_vars(get_class($language))))) { | ||
| 44 : | $language->$k = $v; | ||
| 45 : | csouza | 298 | } |
| 46 : | csouza | 403 | } |
| 47 : | foreach ($_POST as $k => $v) { | ||
| 48 : | if (in_array($k, array_keys(get_class_vars(get_class($language))))) { | ||
| 49 : | $language->$k = $v; | ||
| 50 : | } | ||
| 51 : | } | ||
| 52 : | $language->name = $lang; | ||
| 53 : | $language->description = $language->title.' Locale'; | ||
| 54 : | if (!empty($language->territory)) $language->description .= ' For '.$language->territory; | ||
| 55 : | $language->locale = $lang.'.'.$language->charset.','.$lang.','.$iso639.','.strtolower($language->title); | ||
| 56 : | andphe | 908 | $language->iso3166_3 = $iso3166_3; |
| 57 : | csouza | 403 | $language->creationdate = date('d-m-Y'); |
| 58 : | $language->author = 'Mambo Foundation Inc.'; | ||
| 59 : | $language->authorurl = 'http://www.mambo-foundation.org'; | ||
| 60 : | $language->authoremail = 'translation@mambo-foundation.org'; | ||
| 61 : | $language->copyright = '(C) 2005 - 2006 Mambo Foundation Inc.'; | ||
| 62 : | $language->license = 'http://www.gnu.org/copyleft/gpl.html GNU/GPL'; | ||
| 63 : | $language->setPlurals($_POST['plural_form']); | ||
| 64 : | |||
| 65 : | csouza | 561 | $textdomain = rtrim($language->path, '\/'); |
| 66 : | $dir = $textdomain.'/'.$language->name; | ||
| 67 : | $untranslated = $textdomain.'/untranslated'; | ||
| 68 : | $charset = $language->charset; | ||
| 69 : | $langfiles = mosReadDirectory($untranslated,'.pot$'); | ||
| 70 : | csouza | 403 | @mkdir($dir); |
| 71 : | @mkdir($dir.'/LC_MESSAGES'); | ||
| 72 : | csouza | 561 | |
| 73 : | andphe | 908 | //$gettext_admin = new PHPGettextAdmin(); |
| 74 : | csouza | 561 | foreach ($langfiles as $domain) { |
| 75 : | $domain = substr($domain,0,-4); | ||
| 76 : | enjoyman | 826 | /*if (file_exists("$textdomain/glossary/$lang.$charset.po")) { |
| 77 : | csouza | 561 | 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 : | enjoyman | 826 | } else {*/ |
| 81 : | csouza | 561 | copy("$untranslated/$domain.pot", "$dir/$domain.po"); |
| 82 : | enjoyman | 826 | //} |
| 83 : | csouza | 561 | } |
| 84 : | enjoyman | 826 | //if (!file_exists("$textdomain/$lang/$lang.po")) { |
| 85 : | // @copy("$textdomain/glossary/untranslated.pot", "$textdomain/$lang/$lang.po"); | ||
| 86 : | //} | ||
| 87 : | csouza | 403 | $language->save(); |
| 88 : | } | ||
| 89 : | csouza | 561 | |
| 90 : | csouza | 556 | 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(); | ||
| 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 : | ninekrit | 775 | if (preg_match('/^([a-z]+[_]?[a-z]+?)[_]?([0-9]+)?_([0-9]+)$/', $key, $matches)) { |
| 121 : | csouza | 556 | switch ($matches[1]) |
| 122 : | { | ||
| 123 : | case 'msgid': | ||
| 124 : | enjoyman | 826 | if (get_magic_quotes_gpc() == 1){ |
| 125 : | $value = stripslashes($value); | ||
| 126 : | $value = htmlentities($value); | ||
| 127 : | } | ||
| 128 : | csouza | 556 | $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 : | andphe | 914 | $language = new mamboLanguage($lang); |
| 163 : | $language->save(); | ||
| 164 : | csouza | 556 | |
| 165 : | $gettext_admin = new PHPGettextAdmin(); | ||
| 166 : | andphe | 914 | $gettext_admin->add_to_dict($domain, $textdomain, $lang, $language->charset); |
| 167 : | csouza | 556 | $catalog->load(); |
| 168 : | |||
| 169 : | if ($compile) { | ||
| 170 : | $catalog->setproperty('mode', 'mo'); | ||
| 171 : | $catalog->save(); | ||
| 172 : | } | ||
| 173 : | andphe | 914 | |
| 174 : | csouza | 556 | } |
| 175 : | csouza | 298 | } |
| 176 : | |||
| 177 : | |||
| 178 : | ?> |
| ViewVC Help | |
| Powered by ViewVC 1.0.0 |
Web Hosting provided by Network Redux.

