Introduce a Language::getMessagesFileName hook that will allow extensions to define new language messages files outside of core.

This commit is contained in:
Daniel Friesen 2011-12-12 19:32:59 +00:00
parent 0ffccfcb69
commit 9d0ee321b6
3 changed files with 13 additions and 6 deletions

View file

@ -103,6 +103,8 @@ production.
perceiving colors differently. Colors comes from the French Wikipedia.
* (bug 32879) Upgrade jQuery to 1.7.1
* jQuery UI upgraded to 1.8.17
* Extensions can use the 'Language::getMessagesFileName' hook to define new
languages using messages files outside of core.
=== Bug fixes in 1.19 ===
* $wgUploadNavigationUrl should be used for file redlinks if.

View file

@ -1103,6 +1103,10 @@ $password: The password entered by the user
&$result: Set this and return false to override the internal checks
$user: User the password is being validated for
'Language::getMessagesFileName':
$code: The language code or the language we're looking for a messages file for
&$file: The messages file path, you can override this to change the location.
'LanguageGetNamespaces': Provide custom ordering for namespaces or
remove namespaces. Do not use this hook to add namespaces. Use
CanonicalNamespaces for that.

View file

@ -659,14 +659,13 @@ class Language {
global $IP;
$names = array();
$dir = opendir( "$IP/languages/messages" );
while ( false !== ( $file = readdir( $dir ) ) ) {
$code = self::getCodeFromFileName( $file, 'Messages' );
if ( $code && isset( $allNames[$code] ) ) {
// We do this using a foreach over the codes instead of a directory
// loop so that messages files in extensions will work correctly.
foreach ( $allNames as $code => $value ) {
if ( is_readable( self::getMessagesFileName( $code ) ) ) {
$names[$code] = $allNames[$code];
}
}
closedir( $dir );
return $names;
}
@ -3521,7 +3520,9 @@ class Language {
*/
static function getMessagesFileName( $code ) {
global $IP;
return self::getFileName( "$IP/languages/messages/Messages", $code, '.php' );
$file = self::getFileName( "$IP/languages/messages/Messages", $code, '.php' );
wfRunHooks( 'Language::getMessagesFileName', array( $code, &$file ) );
return $file;
}
/**