API:Localisation
This page is part of the MediaWiki Action API documentation. |
MediaWiki version: | ≥ 1.25 Gerrit change 160798 |
This documents things specific to localisation of the MediaWiki action API (api.php
).
See Localisation for general comments on MediaWiki localisation.
Message files
editLocalisation messages for MediaWiki core are located under includes/api/i18n.
For extensions, the messages that are only used for API documentation and aren't seen by most end users should be in a separate file using the normal mechanisms for having multiple files. See the localisation documentation about adding new messages.
Help messages
editNaming
editThe help messages for API modules are namespaced using the "module path", which is the string used for action=help's "modules" parameter. For modules added to $wgAPIModules this is going to be the same as the key used in that array, while for modules added to $wgAPIPropModules , $wgAPIListModules , or $wgAPIMetaModules it will be that key prefixed with "query+".
- The description message, formerly returned by the getDescription() method, has been split into two: a
apihelp-$path-summary
message with a one-line summary of the module and aapihelp-$path-extended-description
containing any additional module-level documentation. These may be overridden with corresponding methods, but cases where that is needed are rare.- Prior to 1.30, a
apihelp-$path-description
message was used. This was be overridden by implementing the getDescriptionMessage() method, but cases where that was needed were rare.
- Prior to 1.30, a
- The parameter description messages, formerly returned by the getParamDescription() method, are
apihelp-$path-param-$name
(where$name
is the key from getAllowedParams()). This may be overridden by setting a value forApiBase::PARAM_HELP_MSG
in the data structure returned from getAllowedParams().- Parameters with a description similar to "When more results are available, use this to continue" should use api-help-param-continue instead of redefining a duplicate message.
- Sorting parameters taking values "newer" and "older" (with related "start" and "end" parameters) should use api-help-param-direction instead of redefining a duplicate message.
- Modules using CSRF tokens by implementing
needsToken()
do not need to document the token parameter; this is automatically handled by ApiBase. - Several additional constants are available for use in getAllowedParams(); see ApiBase for details.
- Parameters with an array for
ApiBase::PARAM_TYPE
may useApiBase::PARAM_HELP_MSG_PER_VALUE
to specify that each value is individually documented. These messages are by defaultapihelp-$path-paramvalue-$name-$value
. If the messages are named according to the default, there is no need to map messages to values in theApiBase::PARAM_HELP_MSG_PER_VALUE
array (it still has to exist but can be left empty). - All examples must have a descriptive text. Message names should be along the lines of
apihelp-$path-example-$arbitrarySuffix
.
Message documentation
editWhen documenting the messages in qqq.json, use the following templates:
{{doc-apihelp-summary|module path}}
{{doc-apihelp-description|module path}}
{{doc-apihelp-extended-description|module path}}
{{doc-apihelp-param|module path|parameter name}}
{{doc-apihelp-paramvalue|module path|parameter name|parameter value}}
{{doc-apihelp-paraminfo|module path|parameter info tag name}}
{{doc-apihelp-example|module path}}
Message formatting
editAll messages should end with a period, and be grammatical sentences. For parameters passed to the messages by default, see the templates linked from #Message documentation.
Use semantic wikitext markup in messages:
<var>
for mention of parameter keys, and also references to variables like $wgMiserMode.<kbd>
for the possible values of parameters, mention of parameters with values (including references to other modules), and the mention of the input values in example docs.<samp>
for mention of keys or values in the API output.<code>
for anything else that's computer code, e.g. "themax-age
header" or "the page<head>
".- You don't need additional quotation marks when using semantic markup.
If you need to reference other API modules, pipe a link to Special:ApiHelp and the help formatter will do the right thing.
For example, "[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]
" is used in the documentation for various token parameters.
The Special:ApiHelp link properly renders as an in-page anchored link if it's on the same help page (example).
Similarly, reference to MediaWiki configuration variables such as $wgMiserMode should link to the documentation on mediawiki.org.
Pages referenced in examples should generally not be linked, as these links are unlikely to exist on many wikis.
Errors and warnings
editErrors are raised by calling $this->dieWithError( $messageObjectOrKey );
and the message can be localized in the usual way.
Likewise for warnings with $this->addWarning( $messageObjectOrKey );
.
See API:Errors and warnings for details.
Customarily API error messages have message keys starting with apierror-
and warnings with apiwarn-
.
You can use {{doc-apierror}}
in the message documentation.
Text in API responses
editApiBase, and thus all API modules, are also context sources.
Messages should generally be accessed using $this->msg()
, and the API module itself should generally be passed when an IContextSource is needed.
Messages should not be arbitrarily included in the output because a client might find it useful.
Improving localisations on translatewiki
editYou can add and improve API help message translations on translatewiki.net, in the same manner as other core MediaWiki messages. The relevant message groups include
See also
edit- API/Architecture_work/i18n – Draft document from 2014 with information for converting old API modules to the current system.