Help:Extension:Translate/Elements insérables

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Help:Extension:Translate/Insertables and the translation is 65% complete.
Other languages:
Deutsch • ‎English • ‎français • ‎čeština • ‎русский • ‎中文 • ‎日本語

Les chaînes traductibles contiennent souvent des marques qui doivent être laissées telles quelles dans la traduction. Entrer ces marques peut être lent et difficile car il n'est pas rare d'y trouver des caractères spéciaux. Un objet Insertable (« insérable ») est un élément de marquage présenté au traducteur comme un bouton ou un autre élément d'interface. En cliquant sur le bouton, on insère l'élément de marquage dans le texte traduit à la position courante du curseur.

Chaque groupe de messages peut avoir un InsertablesSuggester. Cette classe est responsable de la génération d'une liste d’Insertable. Chaque élément insérable a trois parties :

  1. ce qu'il faut afficher à l'utilisateur
  2. ce qui est inséré avant la position du curseur dans la traduction
  3. ce qui est inséré après la position du curseur dans la traduction

L'extension Translate est livrée comportant MediaWikiInsertablesSuggester . Des logiciels proposant des suggestions pour d'autres types de contenu peuvent être trouvés sur le dépôt Git de translatewiki.net.

Interface utilisateur

Les objets Insertable sont affichés au bas de la zone du texte traduit. Ils fournissent un accès rapide pour insérer des éléments de marquage indépendants de la langue.

Configuration

Here's a sample configuration change in a YAML file,

1 INSERTABLES:
2   # pre-bundled insertable
3   - class: RegexInsertablesSuggester
4     params: "/\$[a-zA-Z0-9]+/"
5   # custom insertable
6   - class: FreeColInsertablesSuggester
7 
8 AUTOLOAD:
9   FreeColInsertablesSuggester: Suggester.php

Pre-provided / Bundled insertables

Following is a list of bundled insertables.

HtmlTagInsertablesSuggester

This insertable will display suggestion for any HTML tags found inside the source string.

Par exemple :

  • Message : This <a href="abc">link</a>link takes you to the home page.
  • Suggester displayed: <a href="abc"></a>

MediaWikiInsertablesSuggester

This insertable will display various suggestion for MediaWiki related wikitext messages. These include suggestion for,

  • Parameters like $1user which are present in API Help messages.
  • PLURALS, GENDER, GRAMMAR
  • Suggestions for HTML tags.

NumericalParameterInsertablesSuggester

This insertable will display suggestions for numerical parameters such as $1, $2, or $33

RegexInsertablesSuggester

This insertable is a general purpose insertable that can be used to display suggestions based on a custom regular expression.

Example:

 1   # simple example
 2   # matches and suggests: $abc
 3   - class: RegexInsertablesSuggester
 4     params: "/\$[a-zA-Z0-9]+/"
 5   # complex example using named captures.
 6   # matches: [abc](ac) 
 7   # suggester displayed: [](ac)
 8   - class: RegexInsertablesSuggester
 9     params:
10       regex: /(?<pre>\[)[^]]+(?<post>\]\([^)]+\))/
11       display: $pre $post
12       pre: $pre
13       post: $post

Parameter description,

  • regex - The regex to use for identifying insertables. Mandatory.
  • display - What to show to the user. Not mandatory, defaults to matched value.
  • pre - What to insert before selection. Not mandatory, defaults to matched value.
  • post - What to insert after selection. Not mandatory, defaults to matched value.

TranslatablePageInsertablesSuggester

Used primarily on translatable pages to provide suggester for variables like $abc.

Adding a custom insertable

In case existing insertables are not sufficient to meet your requirements, it is possible to add custom insertables.

Voici un exemple sur la manière d'ajouter la prise en charge des Insertable concernant des groupes de messages basés sur des fichiers existants : FreeCol. Le fichier YAML a été élagué pour le raccourcir. Les lignes récemment ajoutées sont mises en valeur.

FreeCol.yaml:

---
BASIC:
  id: out-freecol
  label: FreeCol
  description: "A strategy game"
  namespace: NS_FREECOL
  class: FileBasedMessageGroup
 
FILES:
  class: JavaFFS
  sourcePattern: %GROUPROOT%/freecol/data/strings/FreeColMessages_%CODE%.properties
  definitionFile: %GROUPROOT%/freecol/data/strings/FreeColMessages.properties
  targetPattern: freecol/data/strings/FreeColMessages_%CODE%.properties

INSERTABLES:
  - class: FreeColInsertablesSuggester

AUTOLOAD:
  FreeColInsertablesSuggester: Suggester.php

Suggester.php:

class FreecolInsertablesSuggester {
	public function getInsertables( $text ) {
		$insertables = array();

		$matches = array();
		// Trouver les variables de format %name%
		// C'est la même expression régulière que dans Checker.php
		preg_match_all( '/%[a-zA-Z_]+%/', $text, $matches, PREG_SET_ORDER );
		$new = array_map( function( $match ) {
			// $match[0] est une correspondance exacte, et il n'y a pas de sous-correspondance ici
			// Parce que nous voulons que le curseur soit à la fin de l'insertion, nous mettons l'ensemble dans le champ "pre" .
			return new Insertable( $match[0], $match[0] );
		}, $matches );

		return $insertables;
	}
}

Les paramètres de Insertable sont :

class Insertable {
        /**
         * @param string $display Ce qui est affiché à l'utilisateur
         * @param string $pre Ce qu'il faut insérer avant la sélection
         * @param string $post Ce qu'il faut insérer après la sélection
         */
        public function __construct( $display, $pre = '', $post = '' ) {
                $this->display = $display;
                $this->pre = $pre;
                $this->post = $post;
        }
[...]
}