diff --git a/RELEASE-NOTES-1.24 b/RELEASE-NOTES-1.24 index 6c381bbd957..f891c8e77d9 100644 --- a/RELEASE-NOTES-1.24 +++ b/RELEASE-NOTES-1.24 @@ -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 diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index bc7959becdc..5d098695f97 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -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 diff --git a/includes/api/ApiQuerySiteinfo.php b/includes/api/ApiQuerySiteinfo.php index 48a4ef4852b..a420b37df02 100644 --- a/includes/api/ApiQuerySiteinfo.php +++ b/includes/api/ApiQuerySiteinfo.php @@ -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']; } diff --git a/includes/specials/SpecialVersion.php b/includes/specials/SpecialVersion.php index 657999c05ae..b0523a7fcde 100644 --- a/includes/specials/SpecialVersion.php +++ b/includes/specials/SpecialVersion.php @@ -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'],