*/ // It is assumed that the $wgLanguageTagLanguages is defined in LocalSettings.php, in a line before this file is included with require. // If this extension is used together with the LanguageSelector extension, ideally $wgLanguageTagLanguages is identical with $wgLanguageSelectorLanguages // Since the Tag's are not acessible in the hooked render functions (no way to access that parameter at runtime without altering the mediawiki base code) // render-functions for all language-tag's will be created. First setting the hook's. class LanguageTag { public static function LanguageTagParserInit( Parser $parser ) { // at runtime TagLanguages is in the global scope global $wgLanguageTagLanguages; global $wgLang; global $DefaultLang; global $wgLanguageCode; if ( $wgLanguageTagLanguages === null ) return true; // Nothing to do if (!in_array($wgLang->getCode(), $wgLanguageTagLanguages)) { error_log('Idioma actual es: ' . $wgLang->getCode() . ' y NO esta soportado'); $DefaultLang = $wgLanguageCode; // $parser->setHook( 'es', 'LanguageTag::LanguageTagRender_es' ); // return true; } foreach ($wgLanguageTagLanguages as $Tag) $parser->setHook( $Tag, 'LanguageTag::LanguageTagRender_'.$Tag ); unset($Tag); // theoretically nothing to return or fail. return true; } // This function is helpful in checking against the passed Language public static function LanguageTagCheck($input, $lang) { global $DefaultLang; // $output= htmlspecialchars($input); // Hacemos este cambio para poder meter código HTML en las paginas traducidas $output = $input; global $wgLang; // error_log("Voy a preocesar: $lang"); // error_log('Idioma seleccionado es: ' . $wgLang->getCode() . ' y el idioma procesado es ' . $lang); error_log("El valor de DefaultLang es: $DefaultLang"); if ($DefaultLang===$lang) { error_log('Idioma actual es: ' . $wgLang->getCode() . ' y NO esta soportado y entonces deberia hacer algo'); return $output; } if ( $wgLang->getCode()===$lang ) { // Match. The Language (set by LanguageSelector) is equal to the language tag. return $output; } else { // Other wise we return the text as html-comment, thus not visible in the browser. return ''; } } // This will catch all LanguageTagRender_XX functions attached to the hooks. // LanguageTagRender_ this is 18 characters, we get the language code from the function's name, and access everything else passed in via $arguments public static function __callStatic($name, $arguments) { error_log("Voy a preocesar: $name"); return $arguments[2]->recursiveTagParse( LanguageTag::LanguageTagCheck($arguments[0], substr($name,18)), $arguments[3] ); } } // end class LanguageTag