API:Localización
This documents things specific to localisation of the MediaWiki Action API (api.php). See Localisation for general comments on MediaWiki localisation.
Message files
Localisation messages for MediaWiki core are located under includes/api/i18n. For extensions, the messages may be included in the general i18n files or may be in a separate file using the normal mechanisms for having multiple files.
Help messages
Naming
The 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, is
apihelp-$path-description. This may be overridden by implementing the getDescriptionMessage() method, but cases where that is needed are rare. - The parameter description messages, formerly returned by the getParamDescription() method, are
apihelp-$path-param-$name(where$nameis the key from getAllowedParams()). This may be overridden by setting a value forApiBase::PARAM_HELP_MSGin 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_TYPEmay useApiBase::PARAM_HELP_MSG_PER_VALUEto specify that each value is individually documented. These messages are by defaultapihelp-$path-paramvalue-$name-$value. - All examples must have a descriptive text. Message names should be along the lines of
apihelp-$path-example-$arbitrarySuffix.
Message documentation
When documenting the messages in qqq.json, the templates {{doc-apihelp-description}}, {{doc-apihelp-param}}, {{doc-apihelp-paramvalue}}, and {{doc-apihelp-example}} are recommended.
Message formatting
All 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.
Semantic markup should be used:
<var>should be used for mention of parameter keys, and also reference to variables like $wgMiserMode.<kbd>should be used for the possible values of parameters, mention of parameters with values, and the mention of the input values in example docs.<samp>should be used for mention of keys or values in the API output.<code>should be used for anything else that's computer code, e.g. "themax-ageheader" or "the page<head>".- When semantic markup is used, additional quotation marks should not be used.
If reference to other API modules is needed, 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, and properly renders as an in-page anchored link if both are on the same help page. 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
The code for this has yet to be written.
Text in API responses
ApiBase, 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.
See Also
- API/Architecture_work/i18n – Draft document with information for converting old API modules to the new system.