Help:Extension:Translate/Translation aids/de

From Linux Web Expert

Übersetzungshilfen (oder translation helpers) sind Module, die dem Übersetzer beim Übersetzen hilfreiche und notwendige Informationen liefern. Verschiedene Hilfsmittel können Vorschläge aus dem Übersetzungsgedächtnis und der maschinellen Übersetzung, eine Dokumentation zu der Nachricht oder sogar so etwas Grundlegendes wie die Nachrichtendefinition - den zu übersetzenden Text - liefern.

Es gibt einige Überschneidungen zwischen den Hilfsmitteln und den Daten, die von der Nachrichtensammlung bereitgestellt werden, aber in aller Regel stellt die Nachrichtensammlung nur Informationen bereit, die unbedingt benötigt werden, um die Liste der Nachrichten zu präsentieren: Definition, Übersetzung, Status der Übersetzung, letzter Übersetzer (weil man nur Übersetzungen überprüfen kann, die von jemand anderem gemacht wurden) usw.

Translate wird mit vielen Hilfsklassen ausgeliefert. Jede Klasse, die die Klasse TranslationAid erweitert, muss nur eine Methode namens getData implementieren. Sie sollte die Informationen in strukturiertem Format (verschachtelte Arrays) zurückgeben. Diese Module können entweder direkt aus PHP oder über die WebAPI aufgerufen werden.

Wie man die Übersetzungshilfen innerhalb von MediaWiki nutzen kann

Einfaches Beispiel, wie man eine etwaige Nachrichtendokumentation einer Nachricht erhält.

$title = Title::newFromText( 'MediaWiki:Jan/de' );
$handle = new MessageHandle( $title );
$group = $handle->getGroup();
$context = RequestContext::newExtraneousContext( $title );

$aid = new DocumentationAid( $group, $handle, $context );

try {
	$data = $aid->getData();
	$docHtml = $aid['html'];
} catch ( TranslationHelperException $e ) {
	return;
}

echo $docHtml . "\n";

Wie man die Übersetzungshilfen-API nutzen kann

Wie bereits oben gesehen, sind Übersetzungshilfen über eine WebAPI verfügbar, die das MediaWiki WebAPI-Framework verwendet. Das Abrufen von Übersetzungshilfen ist so einfach wie ein HTTP-GET für die URL http://translatewiki.net/w/api.php?action=translationaids&title=MediaWiki%3AJan%2Fde. Sie bietet verschiedene Formate, aber JSON und XML sind die beliebtesten. Diese API benötigt keine Authentifizierung, aber einige Übersetzungshilfen wie "inotherlanguages" verwenden Benutzereinstellungen, um zu bestimmen, welche Sprachen verwendet werden sollen. Um diese Hilfe zu verwenden, solltest du dich zuerst anmelden, wie in der MediaWiki WebAPI-Dokumentation beschrieben.

Die zurückgegebenen Daten sollten wie folgt aussehen (dargestellt im hübschen JSON-Format):

{
	"helpers": {
		"definition": {
			"value": "Jan",
			"language": "en"
		},
		"translation": {
			"language": "de",
			"fuzzy": false,
			"value": "Jan."
		},
		"inotherlanguages": [
			
		],
		"documentation": {
			"language": "en",
			"value": "Abbreviation of January, the first month of the Gregorian calendar",
			"html": "<p>Abbreviation of January, the first month of the Gregorian calendar\n<\/p>"
		},
		"mt": [
			{
				"target": "Jan",
				"service": "Microsoft",
				"source_language": "en",
				"source": "Jan"
			},
			{
				"target": "Jan",
				"service": "Yandex",
				"source_language": "en",
				"source": "Jan"
			}
		],
		"definitiondiff": {
			"error": "No changes"
		},
		"ttmserver": [
			{
				"source": "Jan",
				"target": "Jan.",
				"context": "MediaWiki:Jan",
				"location": "MediaWiki:Jan\/de",
				"quality": 1,
				"wiki": "mediawiki-bw_",
				"service": "TTMServer",
				"source_language": "en",
				"local": true,
				"uri": "https:\/\/translatewiki.net\/wiki\/MediaWiki:Jan\/de"
			}
		],
		"support": {
			"url": "\/\/translatewiki.net\/w\/i.php?title=Support&lqt_method=talkpage_new_thread&lqt_subject_field=About+%5B%5BMediaWiki%3AJan%2Fde%5D%5D"
	}
}

Jedes angeforderte Hilfsmittel hat hier garantiert einen Schlüssel (bis die Anfrage kläglich scheitert), aber während wir auf der PHP-Seite Ausnahmen verwenden, kann auf der JavaScript-Seite jedes Hilfsmittel den Schlüssel "error" mit der Fehlermeldung als Wert gesetzt haben. Ein Beispiel dafür siehst du oben mit definitiondiff. Es signalisiert, dass es kein Diff anzeigen kann, weil es seit der letzten Übersetzung keine Änderungen an der Definition gab.

JavaScript-Beispiele

Hier ist das Gleiche für JavaScript. Per Voreinstellung gibt die API alle Hilfsmittel zurück, aber du kannst mit dem prop-Parameter bestimmte anfordern. Im Beispiel verwenden wir JSONP, um Cross-Site-Request-Beschränkungen zu umgehen. Beachte, dass du mit JSONP keine Schreibaktionen ausführen kannst. Wenn du also diese API von JavaScript aus verwendest, musst du: einen Proxy haben; das Skript auf demselben Host ausführen; oder eine kleine Hilfe (noch nicht implementiert) von der Zielsite laden.

apiURL = 'https://translatewiki.net/w/api.php?callback=?';

queryParams = {
	action: 'translationaids',
	title: 'MediaWiki:Jan/de',
	format: 'json'
};

$.getJSON( apiURL, queryParams )
	.complete( function( data ) {
		console.log( data );
	} )
	.fail( function () {
		console.log( "Failed" );
	} );

Namenskonvention und Rückgabewerte

Jede Übersetzungshilfe hat einen eindeutigen String-Identifier. Identifier sollten Sonderzeichen vermeiden, insbesondere solche, die in JavaScript-Identifiern nicht gültig sind, wie - und *.

Das Array, das von jeder Übersetzungshilfe zurückgegeben wird, bleibt dem Entwickler überlassen, sollte aber einigen allgemeinen Empfehlungen folgen.

Wenn nur ein Textwert zurückgegeben wird, sollte er Wert als Schlüssel des Feldes verwenden. Die Sprache sollte im Feld language angegeben werden. Benutzer dieser Daten sollten sicherstellen, dass der Text in HTML und anderswo korrekt mit der angegebenen Sprache und Übersetzungsrichtung (hier nicht angegeben) gekennzeichnet ist. Wenn es eine HTML-Ausgabe gibt, sollte diese mit dem Schlüssel html verfügbar sein. Beispiele hierfür sind die Dokumentation von Nachrichten und Diffs.

Verschiedene Arten von Übersetzungsvorschlägen wie maschinelle Übersetzung und Übersetzungsgedächtnis sollten diese Schlüssel verwenden, sofern sie sinnvoll sind:

  • source, source_language and target (Zielsprache ist implizit dieselbe wie die Sprache der Übersetzung)
  • server: Identifier des benutzten Dienstes
  • quality: Wert im Bereich [0,1], ein höherer Wert bedeutet, dass die Qualität der Vorschläge sehr gut ist.
Bei der Rückgabe von Arrays muss das Feld ** einen Elementnamen enthalten. Für die maschinelle Übersetzung und das Übersetzungsgedächtnis ist dies suggestion. Dies wird vom MediaWiki-WebAPI-Framework vorgeschrieben. Es ist im XML-Format sichtbar, aber im JSON-Format ist die Ausgabe nur eine Liste.

Liste der Standardhilfen

[field] Bedeutet, dass der Rückgabewert eine Liste ist. In PHP bedeutet dies: Array mit numerischen Indizes + eines mit Schlüssel **; siehe oben, warum dies benötigt wird.

Klasse ID Felder Anmerkungen
MessageDefinitionAid definition
  • language
  • value
CurrentTranslationAid translation
  • language
  • value
  • fuzzy - (boolesch) Wenn die Übersetzung vorhanden ist, aber überprüft oder aktualisiert werden muss.
InOtherLanguagesAid inotherlanguages
  • [suggestion]
    • language
    • value
Abhängig von den Benutzereinstellungen
DocumentationAid documentation
  • language
  • value - Ungeparsetes Wiki-Markup
  • html
MachineTranslationAid mt
  • [suggestion]
    • source
    • source_language
    • target
    • service
Die Verfügbarkeit hängt von der Unterstützung von Sprachpaaren und der Verfügbarkeit externer Dienste ab.
UpdatedDefinitionAid definitiondiff
  • value_old
  • value_new
  • revisionid_old
  • revisionid_new
  • language
  • html
Die Anzeige hängt vom mediawiki.action.history.diff-Resource-Loader-Modul von MediaWiki ab.
TTMServerAid ttmserver
  • [suggestion]
    • source
    • source_language
    • target
    • service
    • quality
    • local - (boolesch) Ob der Vorschlag eine Nachricht im abgefragten Wiki ist.
    • uri - URL oder ein anderer Ressourcenstandort-Indikator.
SupportAid support
  • url
Dies ist eine Webseite, an die sich Benutzer wenden können, um Fragen zu dieser Nachricht zu stellen.
InsertablesAid insertables
  • [insertable]
    • display
    • pre
    • post
Zeichenketten mit unübersetzbarem Text, der in die Übersetzung eingefügt werden kann. Felder sagen, was dem Benutzer angezeigt werden soll und was vor und nach der Auswahl eingefügt wird.