Add a 'namemsg' parameter to $wgExtensionCredits for localizable names

Works similarly to 'description' and 'descriptionmsg', but 'name'
is still required because of weird shenanigans Special:Version does.
(And would be a good idea anyway for backwards-compatibility with
older MediaWikis.)

The primary use-case is skins (which have already traditionally had
translateable names in MediaWiki, but weren't always shown on
Special:Version), but there's no reason why regular extensions can't
use this too.

Skins which already have a translated name for Special:Preferences
('skinname-<skin>' messages) can reuse the same message here.

Change-Id: Iae6f770a8fe1968670429c22aefc1ae55e8dba6f
This commit is contained in:
Bartosz Dziewoński 2014-06-21 12:33:54 +02:00
parent ae79a2e49c
commit 326f3f450c
4 changed files with 29 additions and 3 deletions

View file

@ -82,6 +82,10 @@ production.
* Skins can now use 'remoteSkinPath' when defining ResourceLoader modules.
This works the same as 'remoteExtPath' but is relative to the skins/ folder
instead of the extensions/ folder.
* Extensions and skins may now use 'namemsg' in $wgExtensionCredits in addition
to 'name', to allow for the name to be localizable. 'name' should still be
specified for backwards-compatibility and to define the path Special:Version
uses to find extension license information.
=== Bug fixes in 1.24 ===
* (bug 49116) Footer copyright notice is now always displayed in user language

View file

@ -6083,6 +6083,7 @@ $wgAutoloadAttemptLowercase = true;
* $wgExtensionCredits[$type][] = array(
* 'path' => __FILE__,
* 'name' => 'Example extension',
* 'namemsg' => 'exampleextension-name',
* 'author' => array(
* 'Foo Barstein',
* ),
@ -6102,15 +6103,24 @@ $wgAutoloadAttemptLowercase = true;
* 'skin', 'api', or 'other', or any additional types as specified through the
* ExtensionTypes hook as used in SpecialVersion::getExtensionTypes().
*
* - name: Name of extension as an inline string instead of localizable message.
* Do not omit this even if 'namemsg' is provided, as it is used to override
* the path Special:Version uses to find extension's license info, and is
* required for backwards-compatibility with MediaWiki 1.23 and older.
*
* - namemsg (since MW 1.24): A message key for a message containing the
* extension's name, if the name is localizable. (For example, skin names
* usually are.)
*
* - author: A string or an array of strings. Authors can be linked using
* the regular wikitext link syntax. To have an internationalized version of
* "and others" show, add an element "...". This element can also be linked,
* for instance "[http://example ...]".
*
* - descriptionmsg: A message key or an an array with message key and parameters:
* `'descriptionmsg' => array( 'exampleextension-desc', param1, param2, ... ),`
* `'descriptionmsg' => 'exampleextension-desc',`
*
* - description: Description of extension as inline string instead of
* - description: Description of extension as an inline string instead of
* localizable message (omit in favour of 'descriptionmsg').
*
* - license-name: Short name of the license (used as label for the link), such

View file

@ -552,6 +552,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
if ( isset( $ext['name'] ) ) {
$ret['name'] = $ext['name'];
}
if ( isset( $ext['namemsg'] ) ) {
$ret['namemsg'] = $ext['namemsg'];
}
if ( isset( $ext['description'] ) ) {
$ret['description'] = $ext['description'];
}

View file

@ -587,7 +587,16 @@ class SpecialVersion extends SpecialPage {
// We must obtain the information for all the bits and pieces!
// ... such as extension names and links
$extensionName = isset( $extension['name'] ) ? $extension['name'] : '[no name]';
if ( isset( $extension['namemsg'] ) ) {
// Localized name of extension
$extensionName = $this->msg( $extension['namemsg'] )->text();
} elseif ( isset( $extension['name'] ) ) {
// Non localized version
$extensionName = $extension['name'];
} else {
$extensionName = '[no name]';
}
if ( isset( $extension['url'] ) ) {
$extensionNameLink = Linker::makeExternalLink(
$extension['url'],