supernova-ws /
SuperNova
| 1 | <?php |
||||
| 2 | |||||
| 3 | /** |
||||
| 4 | * adm_locale.php |
||||
| 5 | * |
||||
| 6 | * @v1 (c) copyright 2011 by Gorlum for http://supernova.ws |
||||
| 7 | * |
||||
| 8 | */ |
||||
| 9 | |||||
| 10 | define('INSIDE' , true); |
||||
| 11 | define('INSTALL' , false); |
||||
| 12 | define('IN_ADMIN' , true); |
||||
| 13 | |||||
| 14 | require('../common.' . substr(strrchr(__FILE__, '.'), 1)); |
||||
| 15 | |||||
| 16 | global $lang, $user; |
||||
| 17 | |||||
| 18 | SnTemplate::messageBoxAdminAccessDenied(AUTH_LEVEL_ADMINISTRATOR); |
||||
| 19 | |||||
| 20 | function adm_lng_assign_string($lang_id, $locale_string_name, $value) { |
||||
| 21 | global $locale_string_template, $languages_info, $languages, $domain; |
||||
| 22 | |||||
| 23 | if(is_array($value)) { |
||||
| 24 | foreach($value as $sub_key => $sub_value) { |
||||
| 25 | adm_lng_assign_string($lang_id, "{$locale_string_name}[{$sub_key}]", $sub_value); |
||||
| 26 | } |
||||
| 27 | } elseif($value) { |
||||
| 28 | if(!isset($locale_string_template[$locale_string_name])) { |
||||
| 29 | $locale_string_template[$locale_string_name] = array(); |
||||
| 30 | } |
||||
| 31 | $locale_string_template[$locale_string_name] = array_merge($locale_string_template[$locale_string_name], array("[{$lang_id}]" => htmlentities($value, ENT_COMPAT, 'utf-8'))); |
||||
| 32 | } |
||||
| 33 | } |
||||
| 34 | |||||
| 35 | function adm_lng_load($full_filename) { |
||||
| 36 | // $lang_old = $lang; |
||||
| 37 | // $lang = array(); |
||||
| 38 | require($full_filename); |
||||
| 39 | // $lang_new = $lang; |
||||
| 40 | // $lang = $lang_old; |
||||
| 41 | // return $lang_new; |
||||
| 42 | return $a_lang_array; |
||||
|
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
Loading history...
|
|||||
| 43 | } |
||||
| 44 | |||||
| 45 | function adm_lng_parse_string($string_name, $string_value, $ident = ' ') { |
||||
| 46 | global $domain, $lang_id; |
||||
| 47 | |||||
| 48 | $return = "{$ident}'{$string_name}' => "; |
||||
| 49 | if(isset($string_value[$lang_id]) && !is_array($string_value[$lang_id])) { |
||||
| 50 | $return .= "'" . str_replace(array("\\", "'"), array('\\\\', "\\'"), $string_value[$lang_id]) . "',"; |
||||
| 51 | } else { |
||||
| 52 | $return .= "array(\r\n"; |
||||
| 53 | foreach($string_value as $arr_name => $arr_data) { |
||||
| 54 | $return .= adm_lng_parse_string($arr_name, $arr_data, $ident . ' '); |
||||
| 55 | } |
||||
| 56 | $return .= "{$ident}),\r\n"; |
||||
| 57 | } |
||||
| 58 | |||||
| 59 | return $return . "\r\n"; |
||||
| 60 | } |
||||
| 61 | |||||
| 62 | $honor_constants = array( |
||||
| 63 | 'admin' => array( |
||||
| 64 | '[adm_opt_ver_response]' => 'SNC_VER_', |
||||
| 65 | '[adm_opt_ver_response_short]' => 'SNC_VER_', |
||||
| 66 | ), |
||||
| 67 | |||||
| 68 | 'alliance' => array( |
||||
| 69 | '[ali_dip_relations]' => 'ALLY_DIPLOMACY_', |
||||
| 70 | ), |
||||
| 71 | |||||
| 72 | 'artifacts' => array( |
||||
| 73 | '[art_moon_create]' => 'ART_', |
||||
| 74 | ), |
||||
| 75 | |||||
| 76 | 'fleet' => array( |
||||
| 77 | '[fl_attack_error]' => 'ATTACK_', |
||||
| 78 | '[fl_shrtcup]' => 'PT_', |
||||
| 79 | '[fl_planettype]' => 'PT_', |
||||
| 80 | ), |
||||
| 81 | |||||
| 82 | 'infos' => array( |
||||
| 83 | '[info]' => array('TECH_', 'MRC_', 'SHIP_', 'RES_', 'ART_', 'STRUC_'), |
||||
| 84 | ), |
||||
| 85 | |||||
| 86 | 'market' => array( |
||||
| 87 | '[eco_mrk_errors]' => 'MARKET_', |
||||
| 88 | ), |
||||
| 89 | |||||
| 90 | 'quest' => array( |
||||
| 91 | '[qst_status_list]' => 'QUEST_STATUS_', |
||||
| 92 | ), |
||||
| 93 | |||||
| 94 | 'tech' => array( |
||||
| 95 | '[type_mission]' => 'MT_', |
||||
| 96 | '[tech]' => array('TECH_', 'MRC_', 'SHIP_', 'RES_', 'ART_', 'STRUC_'), |
||||
| 97 | ), |
||||
| 98 | |||||
| 99 | ); |
||||
| 100 | |||||
| 101 | function adm_lng_write_string($string_name, $string_value, $ident = ' ', $string_name_prefix = '') { |
||||
| 102 | global $lang_id, $file_handler, $constants, $honor_constants, $domain; |
||||
| 103 | |||||
| 104 | $string_name_new = false; |
||||
| 105 | |||||
| 106 | if(isset($honor_constants[$domain][$string_name_prefix])) { |
||||
| 107 | $found_constants = array_keys($constants, $string_name); |
||||
| 108 | foreach($found_constants as $constant_name) { |
||||
| 109 | $honor_prefix_list = is_array($honor_constants[$domain][$string_name_prefix]) ? $honor_constants[$domain][$string_name_prefix] : array($honor_constants[$domain][$string_name_prefix]); |
||||
| 110 | foreach($honor_prefix_list as $honor_prefix) { |
||||
| 111 | if(strpos($constant_name, $honor_prefix) === 0) { |
||||
| 112 | $string_name_new = $constant_name; |
||||
| 113 | break; |
||||
| 114 | } |
||||
| 115 | } |
||||
| 116 | } |
||||
| 117 | } |
||||
| 118 | |||||
| 119 | $string_name_new = $string_name_new ? $string_name_new : "'{$string_name}'"; |
||||
| 120 | fwrite($file_handler, "{$ident}{$string_name_new} => "); |
||||
| 121 | if(isset($string_value[$lang_id]) && !is_array($string_value[$lang_id])) { |
||||
| 122 | fwrite($file_handler, "'" . str_replace(array("\\", "'"), array('\\\\', "\\'"), $string_value[$lang_id]) . "',"); |
||||
| 123 | // fwrite($file_handler, "'" . addslashes($string_value[$lang_id]) . "',"); |
||||
| 124 | } else { |
||||
| 125 | $string_name_prefix = $string_name_prefix . "[{$string_name}]"; |
||||
| 126 | fwrite($file_handler, "array(\r\n"); |
||||
| 127 | foreach($string_value as $arr_name => $arr_data) { |
||||
| 128 | adm_lng_write_string($arr_name, $arr_data, $ident . ' ', $string_name_prefix); |
||||
| 129 | } |
||||
| 130 | fwrite($file_handler, "{$ident}),\r\n"); |
||||
| 131 | } |
||||
| 132 | |||||
| 133 | fwrite($file_handler, "\r\n"); |
||||
| 134 | } |
||||
| 135 | |||||
| 136 | $template = SnTemplate::gettemplate('admin/admin_locale', true); |
||||
|
0 ignored issues
–
show
true of type true is incompatible with the type null|template expected by parameter $template of SnTemplate::gettemplate().
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||
| 137 | |||||
| 138 | lng_include('system'); |
||||
| 139 | lng_include('tech'); |
||||
| 140 | lng_include('admin'); |
||||
| 141 | |||||
| 142 | $languages = array(); |
||||
| 143 | $language_domains = array(); |
||||
| 144 | $languages_info = lng_get_list(); |
||||
| 145 | $domain = sys_get_param_str('domain'); |
||||
| 146 | |||||
| 147 | if($domain) { |
||||
| 148 | $lang_new = sys_get_param('lang_new'); |
||||
| 149 | if(!empty($lang_new) && is_array($lang_new)) { |
||||
| 150 | $constants = get_defined_constants(true); |
||||
| 151 | $constants = $constants['user']; |
||||
| 152 | ksort($constants); |
||||
| 153 | foreach($languages_info as $lang_id => $land_data) { |
||||
| 154 | $file_handler = fopen(SN_ROOT_PHYSICAL . "language/{$lang_id}/{$domain}.mo.php.new", 'w'); |
||||
| 155 | fwrite($file_handler, "<?php\r\n\r\n/*\r\n############################################################################# |
||||
| 156 | # Filename: {$domain}.mo.php |
||||
| 157 | # Project: SuperNova.WS |
||||
| 158 | # Website: http://www.supernova.ws |
||||
| 159 | # Description: Massive Multiplayer Online Browser Space Strategy Game\r\n#\r\n"); |
||||
| 160 | |||||
| 161 | foreach($land_data['LANG_COPYRIGHT'] as $lang_copyright) { |
||||
| 162 | $lang_copyright = str_replace(array('©', '"', '<', '>'), array('©', '"', '<', '>'), $lang_copyright); |
||||
| 163 | fwrite($file_handler, "# {$lang_copyright}\r\n"); |
||||
| 164 | } |
||||
| 165 | fwrite($file_handler, "#############################################################################\r\n*/\r\n |
||||
| 166 | /**\r\n*\r\n* @package language\r\n* @system [{$land_data['LANG_NAME_ENGLISH']}]\r\n* @version " . SN_VERSION . "\r\n*\r\n*/\r\n |
||||
| 167 | /**\r\n* DO NOT CHANGE\r\n*/\r\n\r\nif (!defined('INSIDE')) die();\r\n |
||||
| 168 | \$a_lang_array = array(\r\n"); |
||||
| 169 | foreach($lang_new as $string_name => $string_value) { |
||||
| 170 | adm_lng_write_string($string_name, $string_value); |
||||
| 171 | } |
||||
| 172 | fwrite($file_handler, ");\r\n"); |
||||
| 173 | fclose($file_handler); |
||||
| 174 | } |
||||
| 175 | |||||
| 176 | sys_redirect("admin_locale.php?domain={$domain}"); |
||||
| 177 | } |
||||
| 178 | |||||
| 179 | foreach($languages_info as $lang_id => $lang_data) { |
||||
| 180 | $template->assign_block_vars('language', $lang_data); |
||||
| 181 | $full_filename = SN_ROOT_PHYSICAL . "language/{$lang_id}/{$domain}.mo.php"; |
||||
| 182 | $languages[$lang_id] = adm_lng_load($full_filename . (file_exists($full_filename . '.new') ? '.new' : '')); |
||||
| 183 | foreach($languages[$lang_id] as $locale_string_name => $cork) { |
||||
| 184 | adm_lng_assign_string($lang_id, "[{$locale_string_name}]", $languages[$lang_id][$locale_string_name]); |
||||
| 185 | } |
||||
| 186 | } |
||||
| 187 | |||||
| 188 | foreach($locale_string_template as $locale_string_name => $locale_string_list) { |
||||
| 189 | $template->assign_block_vars('string', array( |
||||
| 190 | 'NAME' => $locale_string_name, |
||||
| 191 | )); |
||||
| 192 | |||||
| 193 | foreach($languages_info as $lang_id => $cork2) { |
||||
| 194 | $template->assign_block_vars('string.locale', array( |
||||
| 195 | 'LANG' => $lang_id, |
||||
| 196 | 'VALUE' => $locale_string_list["[{$lang_id}]"], |
||||
| 197 | )); |
||||
| 198 | } |
||||
| 199 | } |
||||
| 200 | |||||
| 201 | $template->assign_vars(array( |
||||
| 202 | 'DOMAIN' => $domain, |
||||
| 203 | )); |
||||
| 204 | } else { |
||||
| 205 | $path = SN_ROOT_PHYSICAL . "language/"; |
||||
| 206 | $dir = dir($path); |
||||
| 207 | while (false !== ($lang_id = $dir->read())) { |
||||
| 208 | $full_path = $path . $lang_id; |
||||
| 209 | if($lang_id[0] != "." && is_dir($full_path)) { |
||||
| 210 | $lang_file_list = dir($full_path); |
||||
| 211 | while (false !== ($filename = $lang_file_list->read())) { |
||||
| 212 | $lang_domain = strtolower(substr($filename, 0, strpos($filename, '.'))); |
||||
| 213 | if(!$lang_domain) { |
||||
| 214 | continue; |
||||
| 215 | } |
||||
| 216 | |||||
| 217 | $file_ext = strtolower(substr($filename, strpos($filename, '.'))); |
||||
| 218 | if($lang_domain != 'language') { |
||||
| 219 | if($file_ext == '.mo.php.new' || ($file_ext == '.mo.php' && empty($languages[$lang_id][$lang_domain]))) { |
||||
| 220 | $language_domains[$lang_domain] = $lang_domain; |
||||
| 221 | $languages[$lang_id][$lang_domain] = $lang_domain; |
||||
| 222 | } |
||||
| 223 | } |
||||
| 224 | } |
||||
| 225 | } |
||||
| 226 | } |
||||
| 227 | $dir->close(); |
||||
| 228 | |||||
| 229 | foreach($language_domains as $lang_domain) { |
||||
| 230 | $template->assign_block_vars('domain', array( |
||||
| 231 | 'NAME' => $lang_domain, |
||||
| 232 | )); |
||||
| 233 | } |
||||
| 234 | } |
||||
| 235 | |||||
| 236 | SnTemplate::display($template, $lang['adm_lng_title']); |
||||
| 237 |