New method for making it easier for developers to get localised language names.
authorNiklas Laxström <nikerabbit@users.mediawiki.org>
Fri, 31 Dec 2010 18:18:57 +0000 (18:18 +0000)
committerNiklas Laxström <nikerabbit@users.mediawiki.org>
Fri, 31 Dec 2010 18:18:57 +0000 (18:18 +0000)
For now the core itself doesn't provide those, but extension can use the hook
to provide them. Callers should not except full coverage in every language.

docs/hooks.txt
languages/Language.php

index ea09f90..d166a24 100644 (file)
@@ -992,6 +992,10 @@ Use to define aliases of special pages names depending of the language
 $specialPageAliases: associative array of magic words synonyms
 $lang: laguage code (string)
 
+'LanguageGetTranslatedLanguageNames': Provide translated language names.
+&$names: array of language code => language name
+$code language of the preferred translations
+
 'LinkBegin': Used when generating internal and interwiki links in
 Linker::link(), before processing starts.  Return false to skip default proces-
 sing and return $ret.  See documentation for Linker::link() for details on the
index 30093b2..0526f35 100644 (file)
@@ -487,6 +487,25 @@ class Language {
                return $names;
        }
 
+       /**
+        * Get translated language names. This is done on best effort and
+        * by default this is exactly the same as Language::getLanguageNames.
+        * The CLDR extension provides translated names.
+        * @param $code String Language code.
+        * @return Array language code => language name
+        * @since 1.18.0
+        */
+       public static function getTranslatedLanguageNames( $code ) {
+               $names = array();
+               wfRunHooks( 'LanguageGetTranslatedLanguageNames', array( &$names, $code ) );
+
+               foreach ( self::getLanguageNames() as $code => $name ) {
+                       if ( !isset( $names[$code] ) ) $names[$code] = $name;
+               }
+
+               return $names;
+       }
+
        /**
         * Get a message from the MediaWiki namespace.
         *