@Nikerabbit: This extension is lacking license information. It will be great if it could be specified. Thanks and cheers
Extension talk:I18nTags
It has GPL-2.0-or-later mentioned in two places, so you can update that to where it is missing.
Thanks. Ah, I only looked at the common places. Will author a change.
We have installed the extension, but sadly it doesn't fit to our needs. it is neither possible to use
<formatnum lang="fa">{{some template}}</formatnum> nor {{some template | lang=fa}} with the formatnum code within the template. The whole text in the template is a simple number! We quickly deinstalled the extension again.
This is expected. You can use the {{#tag:formatnum}} mechanism to work around this.
Using a language code as the second parameter to languagename, as described on this page, do not seem to work anymore. To add that option again, replace the function languageName
in I18nTags_body.php
with this code:
public static function languageName( &$parser, $code = '', $code2 = '' ) { global $wgLang; if ( !$code ) return ''; $native = $code2 === 'native'; $cldr = is_callable(array( 'LanguageNames', 'getNames' )); if ( !$native && $cldr ) { $code2 = $code2 ? $code2 : $wgLang->getCode(); $languages = LanguageNames::getNames( $code2, LanguageNames::FALLBACK_NORMAL, LanguageNames::LIST_MW_AND_CLDR ); } else { $languages = Language::getLanguageNames( false ); } return isset($languages[$code]) ? $languages[$code] : $code; }
To add the possibility to convert in the other direction (i.e. from a language name in some language to an ISO code, you need to edit three files:
In I18nTags.php
, add
$parser->setFunctionHook( 'languagecode', array($class, 'languageCode' ) );
in the function efI18nTagsInit
, between wfLoadExtensionMessages
. In I18nTags_body.php
, add a new function like this:
public static function languageCode( &$parser, $name = '', $lang = '' ) { global $wgLang; if ( !$name ) return ''; $native = $lang === 'native'; $cldr = is_callable(array( 'LanguageNames', 'getNames' )); if ( !$native && $cldr ) { $lang = $lang ? $lang : $wgLang->getCode(); $languages = LanguageNames::getNames( $lang, LanguageNames::FALLBACK_NORMAL, LanguageNames::LIST_MW_AND_CLDR ); } else { $languages = Language::getLanguageNames( false ); } $key = array_search($name, $languages); return $key ? $key : $name; }
and finally, in I18nTags.magic.php
, add the line
'languagecode' => array( 0, 'languagecode' ),
to the array with aliases of all languages used on your wiki, e.g. like this:
/** English (English) */ $magicWords['en'] = array( 'languagename' => array( 0, 'languagename' ), 'languagecode' => array( 0, 'languagecode' ), );
This is how we use this extension at Säsongsmat.nu.
Hmm, by judging from the amount of replies you received, I am not sure whether this extension is still maintained. Did you file a bug on bugzilla for this? You may as well provide your amendments as a patch. Cheers
No, I didn't yet, but I guess I should file a bug and submit a patch! rotsee (talk) 07:59, 4 October 2012 (UTC)
Probably you have developer access, too. In this case you could even commit the patch directly and have it reviewed and merged. I think this would even be the faster solution. I could have thought about this earlier. :( Cheers
It's unclear what is not working. Please provide minimal example.