Hilfe:Erweiterung:Übersetzen/Einsetzelemente
Übersetzer (Haupthilfeseite )
- Anleitung zum Übersetzen
- Beste Praktiken
- Statistiken und Berichte
- Qualitätssicherung
- Nachrichtengruppenstatus
- Offlineübersetzung
- Glossar
Übersetzungsadministratoren
- Eine Seite zur Übersetzung vorbereiten
- Seitenübersetzungsadministrator
- Unstrukturierte Elementübersetzung
- Gruppenverwaltung
- Übersetzbare Seite verschieben
- Import translations via CSV
- Working with message bundles
Systemadministratoren & Entwickler
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 Insertable
s verantwortlich.
Jeder Insertable
besteht aus drei Teilen:
- Was dem Benutzer angezeigt werden soll
- Was wird vor der Cursorposition in der Übersetzung eingefügt?
- 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 [$url translatewiki.net git repository].
Benutzeroberfläche
Konfiguration
Hier ein Beispiel für eine Konfigurationsänderung in einer YAML-Datei,
INSERTABLES:
# pre-bundled insertable
- class: RegexInsertablesSuggester
params: "/\$[a-zA-Z0-9]+/"
# custom insertable
- class: FreeColInsertablesSuggester
AUTOLOAD:
FreeColInsertablesSuggester: Suggester.php
Vorgefertigte / gebündelte Einsetzelemente
Nachfolgend findest du eine Liste der gebündelten Einsetzelemente.
HtmlTagInsertablesSuggester
Dieses Einsetzelement zeigt Vorschläge für alle HTML-Tags an, die in der Ausgangszeichenkette gefunden werden.
Zum Beispiel:
- Meldung: This <a href="abc">link</a>link takes you to the home page.
- Angezeigter Suggester:
<a href="abc"></a>
MediaWikiInsertablesSuggester
Dieses Einsetzelement zeigt verschiedene Vorschläge für MediaWiki bezogene Wikitextmeldungen an. Dazu gehören Vorschläge für,
- Parameter wie
$1user
, die in API-Hilfemeldungen vorhanden sind. PLURALS
,GENDER
,GRAMMAR
- Vorsdchläge für HTML tags.
NumericalParameterInsertablesSuggester
Dieses Einsetzelement zeigt Vorschläge für numerische Parameter an, z. B.
, $1
, $2
, $33
$2
, oder $33
RegexInsertablesSuggester
Dieses Einsetzelement ist ein Allzweck-Einsetzelement, das verwendet werden kann, um Vorschläge basierend auf einem benutzerdefinierten regulären Ausdruck anzuzeigen.
Beispiel:
# simple example
# matches and suggests: $abc
- class: RegexInsertablesSuggester
params: "/\$[a-zA-Z0-9]+/"
# complex example using named captures.
# matches: [abc](ac)
# suggester displayed: [](ac)
- class: RegexInsertablesSuggester
params:
regex: /(?<pre>\[)[^]]+(?<post>\]\([^)]+\))/
display: $pre $post
pre: $pre
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, or replace selection if
post
remains empty Not mandatory, defaults to matched value. - post – What to insert after selection. Not mandatory, defaults to matched value.
TranslatablePageInsertablesSuggester
Wird hauptsächlich auf übersetzbaren Seiten verwendet, um Suggestoren für Variablen wie $abc
bereitzustellen.
UrlInsertablesSuggester
This insertable finds URLs (that are normally unchanged in translations) and suggests them for insertion.
Hinzufügen eines benutzerdefinierten Einsetzelements
Falls die vorhandenen Einsetzelemente nicht ausreichen, um deine Anforderungen zu erfüllen, ist es möglich, benutzerdefinierte Einsetzelemente hinzuzufügen.
Im Folgenden findest Du ein Beispiel für das Hinzufügen von Einsetzelementen für eine vorhandene dateibasierte Nachrichtengruppe: 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;
}
[...]
}