Hilfe:Erweiterung:Übersetzen/Einfügungen

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

Zu übersetzende Zeichenfolgen enthalten häufig Markups, die in der Übersetzung unverändert beibehalten werden sollen. Das Eingeben dieses Markups kann zeitaufwändig und schwierig sein, da häufig Sonderzeichen vorkommen. Einfügbar ist eine Markierung, die dem Übersetzer als Schaltfläche oder anderes Oberflächenelement angezeigt wird. Durch Klicken auf die Schaltfläche wird ein Markup-Befehl in die Übersetzung an der aktuellen Cursorposition eingefügt.

Jede Nachrichtengruppe kann einen InsertablesSuggester (Übersetzungsvorschlag) enthalten. Diese Klasse ist für das Generieren einer Liste von Insertables verantwortlich. Jeder Insertable besteht aus drei Teilen:

  1. Was dem Benutzer angezeigt werden soll
  2. Was wird vor der Cursorposition in der Übersetzung eingefügt?
  3. Was wird nach der Cursorposition in der Übersetzung eingefügt?

Die Übersetzungs-Erweiterung ist in MediaWikiInsertablesSuggester integriert. Vorschläge für andere Arten von Inhalten findest Du im translatewiki.net git repository.

Benutzeroberfläche

Einfügungen werden im unteren Bereich des Übersetzungstextbereichs angezeigt. Sie bieten einen schnellen Zugriff zum Einfügen von Markierungen, die nicht von Sprache zu Sprache unterschiedlich sind.

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.

For example:

  • 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.

Im Folgenden findest Du ein Beispiel für das Hinzufügen einer Einfügungs-Unterstützung für eine vorhandene dateibasierte Nachrichtengruppen: FreeCol. Die YAML-Datei wurde der Kürze halber gekürzt. Die neu hinzugefügten Zeilen werden hervorgehoben.

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();
		// Finde Variablen des Formats %name%
		// Dies ist der gleiche reguläre Ausdruck wie in Checker.php
		preg_match_all( '/%[a-zA-Z_]+%/', $text, $matches, PREG_SET_ORDER );
		$new = array_map( function( $match ) {
			// $match[0] ist eine vollständige Übereinstimmung, und wir haben hier keine weiteren ähnlichen Übereinstimmungen
			// Da wir möchten, dass sich der Cursor am Ende der Einfügung befindet, fügen wir das Ganze in das Feld "pre" ein.
			return new Insertable( $match[0], $match[0] );
		}, $matches );

		return $insertables;
	}
}

Die Parameter für Einfügungen sind:

class Insertable {
        /**
         * @param string $display Was dem Benutzer angezeigt werden soll
         * @param string $pre Was ist vor der Auswahl einzufügen?
         * @param string $post Was ist nach der Auswahl einzufügen?
         */
        public function __construct( $display, $pre = '', $post = '' ) {
                $this->display = $display;
                $this->pre = $pre;
                $this->post = $post;
        }
[...]
}