Example #1
0
 function is_valid_code($code)
 {
     /*
     Check the given string is a valid language code.
     */
     $lang = MLPLanguageHandler::compact_code($code);
     $short = $lang['short'];
     if (isset($short)) {
         return MLPLanguageHandler::is_valid_short_code($short);
     }
     return false;
 }
Example #2
0
 function _l10n_inject_lang_markers_cb($matches)
 {
     global $l10n_language, $l10n_replace_strings, $l10n_url_exclusions, $prefs;
     $debug = 0;
     #$debug = !$l10n_replace_strings['insert_blank'];
     $logfile = $prefs['tempdir'] . DS . 'l10n.log.txt';
     static $counter;
     if (!isset($counter)) {
         $counter = 0;
     }
     $counter += 1;
     $insert = 0;
     $result = $matches[0];
     $query = '';
     if (isset($prefs['l10n_language_marker_func']) and is_callable($prefs['l10n_language_marker_func'])) {
         $callback_language_marker = call_user_func($prefs['l10n_language_marker_func'], $l10n_language['long']);
     }
     if (!$callback_language_marker) {
         $callback_language_marker = $l10n_language['short'];
     }
     if ($debug) {
         error_log(n . n . 'Hit #' . $counter . ' : [' . $matches[0] . ']', 3, $logfile);
     }
     if (@$l10n_replace_strings['insert_blank'] && empty($matches[0])) {
         $insert = 1;
         if ($debug) {
             error_log(' ... Blank! ... INSERTING : /' . $callback_language_marker . '/', 3, $logfile);
         }
     } else {
         if ($debug) {
             error_log(' ... PARSING : ' . $matches[2], 3, $logfile);
         }
         $url = trim($matches[2], '/');
         $url = strtolower($url);
         $qs = strpos($url, '?');
         if ($qs !== false) {
             $url = substr($url, 0, $qs);
         }
         $r = array_map('urldecode', explode('/', $url));
         if (isset($prefs['l10n_detect_language_func']) and is_callable($prefs['l10n_detect_language_func'])) {
             $callback_detect_language = call_user_func($prefs['l10n_detect_language_func'], $req);
         }
         if (is_array($callback_detect_language) and isset($callback_detect_language['lang']) and isset($callback_detect_language['lang']['long'])) {
             $callback_detect_language = $callback_detect_language['lang']['long'];
         } else {
             $callback_detect_language = $r[0];
         }
         if ($debug) {
             error_log(n . t . '  -> ' . $callback_detect_language, 3, $logfile);
         }
         $excluded = in_array($r[0], $l10n_url_exclusions);
         if ($excluded) {
             if ($debug) {
                 error_log(' ... SKIPPING: this is an excluded section/area ', 3, $logfile);
             }
         } else {
             if (!@$l10n_replace_strings['insert_blank'] && empty($matches[1])) {
                 if ($debug) {
                     error_log(' ... SKIPPING: not a URL ', 3, $logfile);
                 }
             } elseif (empty($callback_detect_language) || !(MLPLanguageHandler::is_valid_short_code($callback_detect_language) && MLPLanguageHandler::iso_639_langs($callback_detect_language, 'valid_long'))) {
                 if ($debug) {
                     error_log(' ... INSERTING : ' . $callback_language_marker, 3, $logfile);
                 }
                 $insert = 1;
             } else {
                 if ($debug) {
                     error_log(' ... SKIPPING: language (' . $callback_detect_language . ') present ', 3, $logfile);
                 }
             }
         }
     }
     if ($insert) {
         $extra = '';
         if ($matches[2][0] !== '/') {
             $extra = '/';
         }
         $result = $l10n_replace_strings['start_rep'] . $matches[1] . '/' . $callback_language_marker . $extra . $matches[2] . $l10n_replace_strings['stop_rep'];
         if ($debug) {
             error_log(n . t . '  ->  ' . $result, 3, $logfile);
         }
     }
     return $result;
 }