Aide:Extension:Translate/Configuration des groupes

From mediawiki.org
This page is a translated version of the page Help:Extension:Translate/Group configuration and the translation is 67% complete.

Il existe plusieurs manières d'ajouter des groupes de messages à l'extension Translate. Les groupes de messages sont des ensembles de messages. Habituellement ils font correspondre un module logiciel à un fichier (et généralement un par langue pour les traductions). Il est également possible de créer des groupes qui contiennent les messages issus d'autres groupes de messages. On peut concevoir par exemple un groupe qui contienne tous les messages d'un logiciel particulier. Les groupes peuvent également contenir simplement des sous ensembles de messages, tels les messages les plus importants de MediaWiki qui doivent être traduits en priorité. Ce groupes de niveau supérieur ne correspondent pas directement aux fichiers quelque soit le format, mais comme tous les groupes, ils peuvent être exportés dans le format Gettext pour être utilisés dans d'autres outils de traduction.

Les groupes de messages sont les blocs de haut niveau avec lesquels les traducteurs interagissent ; pour choisir un message sur lequel travailler ils doivent d'abord choisir un groupe, à moins qu'ils utilisent la recherche de traductions. Chaque groupe possède ses statistiques ainsi qu'un identifiant unique. Naturellement les messages sont le plus petit bloc de texte que les traducteurs traduisent à la fois. Chaque message possède également un identifiant que l'on appelle habituellement clé. La clé n'a pas besoin d'être unique sur l'ensemble des groupes de messages.

Format classique de configuration des groupes

Il est facile d'ajouter des groupes de messages en utilisant le format YAML. Tout ce que vous avez à faire est de définir un espace de noms et d'ajouter un fichier de configuration à $wgTranslateGroupFiles; voir la page de configuration pour plus de détails. Exemple :

wfAddNamespace( 1218, 'FUDforum' );
$wgTranslateGroupFiles[] = "$IP/messagegroups/FUDforum/FUDforum.yml";

Le fichier lui-même utilise la syntaxe YAML. La syntaxe en elle même n'est pas décrite ici mais elle est facile à apprendre et vous pouvez utiliser tous les groupes prédéfinis comme exemples. N'oubliez pas d'utiliser des espaces à la place des caractères de tabulation pour l'indentation. Chaque fichier peut définir plusieurs groupes de messages. Chaque définition de groupe est séparée par une ligne de trois tirets, qui est le séparateur classique des documents en YAML.

Les définitions se classent en quelques éléments de niveau supérieur : BASIC, FILES, MANGLER, VALIDATORS, INSERTABLES, TAGS, AUTOLOAD, LANGUAGES et le TEMPLATE spécial. Certains groupes personnalisés peuvent ajouter d'autres éléments au niveau supérieur. Tous les groupes n'ont pas besoin de définir l'ensemble des éléments.

BASIC

Cette section contient les informations de base à propos du groupe, comme son ID unique et son nom. Liste des clés possibles (les clés obligatoires sont marquées avec *) :

Clé Description
namespace* Either namespace id, constant or string where the messages are stored. The namespace must be added beforehand. See the example above.
icon Icon for the message group. Can support any file that MediaWiki can handle and that is uploaded to MediaWiki. Also supports files from shared media repositories.
id* ID unique identifiant ce groupe de messages.
label* Nom de ce groupe de messages, lisible par un humain.
description Description de ce groupe de messages. Full wiki syntax is used.
class* Type de ce groupe de messages - habituellement FileBasedMessageGroup ou AggregateMessageGroup.
meta Multiple uses. If there are identical message keys for different message groups (usually in the case of branch or subset message groups), only one group can be primary and the other groups should have meta with value of yes.
sourcelanguage Code de langue de la langue source. Par défaut en (anglais).
codeBrowser Only used in GettextFFS. URL pattern of an online viewer for the repository file(s), where %FILE% and %LINE% will be replaced by the relevant file path and line – as stated in PO files comments for a message – to give translators an informative link within the translation aids for that message. Example: https://github.com/lonvia/waymarked-trails-site/blob/master/django/%FILE%#L%LINE%
support Configures where the "Ask help" button will redirect the translator. Vous devez spécifier soit url ou page et éventuellement params pour configurer les paramètres de l'URL. A l'intérieur des paramètres, vous pouvez utiliser %MESSAGE% comme substitut du nom du message.

Exemple :

BASIC:
  id: out-freecol
  label: FreeCol
  icon: wiki://Freecol.png
  description: "{{int:bw-desc-freecol}}"
  namespace: NS_FREECOL
  class: FileBasedMessageGroup
  support:
    url: 
    params:
      title: "Translation issue with message %MESSAGE%"
      body: "[**URL**](https://translatewiki.net/wiki/%MESSAGE%)"

FILES

Cette section décrit l'aspect du système de fichiers et le format des fichiers de messages pour les groupes du type FileBasedMessageGroup. Liste des clés possibles (les clés obligatoires sont marquées avec *) :

Clé Description
class* Classe qui définit le format des fichiers de messages. Examples: YamlFFS, JavaFFS, FlatPhpFFS, ....
codeMap Liste des codes de langues qui diffèrent de ceux utilisés dans MediaWiki. Utiliser le code de langue de MediaWiki comme clé et le code de langue cible pour la valeur.
sourcePattern* Emplacement des fichiers de messages. Path variables are supported.
targetPattern How the exported files are named relative to export directory. Path variables are supported.
definitionFile Use this to define the location of the definition file (with the English source messages) if it does not adhere to the sourcePattern. Path variables are supported.
AppleFFS, AppleInfoPlistFfs
header Commentaire personnalisé de l'entête de fichier.
FlatPhpFFS Clés spécifiques à la classe
header Entête de fichier personnalisée. Si elle n'est pas fournie, la valeur par défaut est <?php
GettextFFS Clés spécifiques à la classe
CtxtAsKey Special mode where ctxt is used as message key. Should not be used for normal Gettext files.
header Commentaire personnalisé de l'entête de fichier.
keyAlgorithm Valeurs autorisées : legacy et simple. Valeur par défaut : simple fournit des clés de message plus courtes.
JavaFFS Clés spécifiques à la classe
header Commentaire personnalisé de l'entête de fichier.
keySeparator Caractère qui sépare la clé de la valeur. Par défaut =. Mais peut aussi être :.
JsonFFS Clés spécifiques à la classe
nestingSeparator The character separating levels when nested objects are flattened intro one key string. By default flattening is not done. Example: { "top": { "nested": "content" } } is converted to (assuming / as separator) message with key top/nested and value content.
includeMetadata Indique s'il faut inclure la clé @metadata avec les informations concernant l'auteur dans les fichiers exportés. Par défaut true.
parseCLDRPlurals Indique s'il faut analyser les mots clés CLDR pluriels. Par défaut false.
YamlFFS Clés spécifiques à la classe
codeAsRoot Si la valeur est 1, tous les messages se trouvent sous un code de langue (au lieu d'être à la racine).
nestingSeparator The character separating levels when nested objects are flattened intro one key string. Default value is .. Example: top: { nested: content } is converted to (assuming . as separator) message with key top.nested and value content.
parseCLDRPlurals Indique s'il faut analyser les mots clés CLDR pluriels. Par défaut false.

Les variables des chemins sont :

Variable Description
%CODE% Code de langue (attribué par codeMap)
%MWROOT% Chemin de l'installation MediaWiki
%GROUPROOT% Défini par $wgTranslateGroupRoot.
%GROUPID% ID du groupe de messages

Exemple :

FILES:
  class: JavaFFS
  sourcePattern: %GROUPROOT%/commonist/messages_%CODE%.properties
  targetPattern: commonist/messages_%CODE%.properties

MANGLER

Mangler is a way to mungle message keys to avoid conflicting message keys in multiple groups:

Clé Description
class* Which type of mangler to use. Example: StringMatcher
StringMatcher Clés spécifiques à la classe
patterns* Liste de motifs. "*" peut être utilisé comme joker.
prefix* If the above patterns match a message, the message key will be prefixed with this prefix.

Exemple :

MANGLER:
  class: StringMatcher
  patterns:
    - "*"

VALIDEURS

Cette section permet de définir des valideurs prédéfinis ou personnalisés.

VALIDATORS:
  # pre-defined validator
  - id: InsertableRegex
    enforce: true
    insertable: true
    params: /\$[a-z0-9]+/
  # custom validator
  - class: MyCustomValidator
    enforce: true

AUTOLOAD:
  MyCustomValidator: Validator.php

INSERTABLES

This section allows to define a class which suggests insertables or use pre-defined insertables. The classes can be autoloaded as described in the AUTOLOAD section.

INSERTABLES:
  # pre-defined insertable
  - class: HtmlTagInsertablesSuggester
  # custom insertable
  - class: FreeColInsertablesSuggester

AUTOLOAD:
  FreeColInsertablesSuggester: Insertable.php

TAGS

It is possible to assign tags to messages. Each tag takes list of message keys (after mangling). "*" can be used as wildcard. The following tags are supported:

Clé Description
optional These messages are not shown by default, and they do not count as untranslated messages when calculating translation percentages.
ignored These messages are not shown at all.

Exemple :

TAGS:
  optional:
    - lang_locale
    - lang_dir
  ignored:
    - charset

AUTOLOAD

This item takes list of class names with filenames as values. This way custom classes can be bundled easily with your custom message groups. The path should be relative to the location of the group configuration file itself.

Exemple :

AUTOLOAD:
  ShapadoMessageChecker: Checker.php

TEMPLATE

There is a handy shortcut if you are defining multiple similar message groups. To avoid repetition, have the first definition start with this key. You can use any other top-level keys as subkeys for this item. All other groups will use these definitions as default values. Each group can of course override the default value from the template.

Exemple :

TEMPLATE:
  BASIC:
    namespace: NS_SHAPADO
    class: FileBasedMessageGroup
    description: "{{int:bw-desc-shapado}}"

  FILES:
    class: YamlFFS
    codeAsRoot: 1
    codeMap:
      be-tarask: be-TARASK

GROUPS (pour la classe AggregateMessageGroup)

This key only takes list of group ids this message group consists of.

Exemple :

GROUPS:
  - out-shapado-ads
  - out-shapado-announcements
  - out-shapado-answers
  - out-shapado-badges

Wildcards are supported. In this case the aggregate group will not recursively include itself even if it matches a pattern. Example:

GROUPS:
  - out-shapado-*

Wildcards can be problematic if you have nested aggregate groups, because some groups can be included multiple times: both directly and via the included aggregate groups.

LANGUAGES

This key makes it possible to allow and disallow translation into specific languages for the group. Translation into disallowed languages will be blocked.

LANGUAGES:
  include:
    - en
  exclude:
    - he
    - or
Avertissement Avertissement : MLEB 2021.10: La configuration ci-dessous n'est plus prise en charge.
LANGUAGES:
  whitelist:
    - en
  blacklist:
    - he
    - or

Allowed ("include") entries override any values in the disallowed ("exclude") list. If an allowed entry is * that means all languages are allowed. The allowed list is also optional.

Groupes de messages pour les messages d'interface spécifiques à votre wiki

Example of message group for custom user interface of the wiki, for example for localized sidebar. Add the following code into your LocalSetting.php and replace wikiname with something meaningful.

$wgHooks['TranslatePostInitGroups'][] = function ( &$list, &$deps, &$autoload ) {
	$id = 'wiki-custom';
	$mg = new WikiMessageGroup( $id, 'wikiname-messages' );
	$mg->setLabel( 'Wikiname User Interface Messages' );
	$mg->setDescription( 'This group contains user interface messages used on Wikiname.' );
	$list[$id] = $mg;
}

Raccourcis des extensions MediaWiki

Voir le groupe d'unités pour MediaWiki.