Aide:Extension:Translate/Configuration des groupes
Traducteurs (page d'aide principale )
- Comment traduire
- Les bonnes pratiques
- Statistiques et rapports
- Assurance qualité
- États des groupes de messages
- Traductions hors-ligne
- Glossaire
Administrateurs de traduction
- Comment préparer une page à traduire
- Administration de la traduction des pages
- Traduction des éléments non structurés
- Gestion de groupe
- Renommer une page traductible
- Importer des traductions via CSV
- Travailler avec les paquets de messages
Administrateurs système et développeurs
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 Gettext format. 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 |
---|---|
format* | Format of message files. Examples: Yaml , Java , FlatPhp (for a full list, see FORMATS in FileFormatFactory.php).
|
class | Classe qui définit le format des fichiers de messages. Deprecated in Translate 2023.07 in favor of format .
|
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. |
Apple |
Format-specific keys |
header | Commentaire personnalisé de l'entête de fichier. |
FlatPhp |
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
|
Gettext |
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.
|
Java |
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 : .
|
Json |
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 .
|
Yaml |
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:
format: Java
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:
format: Yaml
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
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.