/** * extract_language * * Extrae de un request de URL el lenguaje seleccionado por parte del de usuario * * @author Adrián Méndez <*****@*****.**> * @Version 1.0 */ public static function extract_language($request) { // VALIDA QUE EXISTA O ESTÉ OPERABLE EL MÉTODO DE TRADUCCIÓN DESDE LA CONFIGURACIÓN PARA QUE CONTINÚE CON NORMALIDAD if (!isset(AppConfig::$languagesCFG) or !AppConfig::$languagesCFG['allow_translations']) { return $request; } // INIT $array_hash = array(); // STORES REGEX MATCH RESULTS. $def = array(); // STORES DEFAULT LANG. $possibleLang = null; // STORES POSSIBLE LANG. // OBTIENE EL POSIBLE CONTEXTO if (preg_match('/^\\/?([a-zA-Z|\\_|]+)/', $request, $array_hash) and isset($array_hash[1]) and !is_null($array_hash[1])) { $possibleLang = $array_hash[1]; } // VALIDA NO COTEJAR CON IMPOSIBILIDADES if (is_null($possibleLang)) { return $request; } // TRATA DE LOCALIZAR UN LENGUAJE COMPATIBLE foreach (AppConfig::$languagesCFG['dictionaries'] as $lang) { if (strtolower($lang['prefix']) == strtolower($possibleLang)) { // CARGA DATOS DE LENGUAJE DEFINIDO self::$language = $lang; // CONVIERTE $possibleLang A REGEX $possibleLang = str_replace('_', '\\_', $possibleLang); // LIMPIEZA DEL REQUEST DEL IDIOMA $request = preg_replace("/^\\/?" . $possibleLang . "/", null, $request); // ELIMINADO DE BASURA $request = preg_replace('/\\/+/', '/', $request); } } // LIMPIA SALIDA EN CASO DE QUE YA NO HAYA DATOS QUE BOTAR. if (is_null($request) or $request == '') { $request = '/'; } return $request; }