Help:Extension:Translate/Übersetzungshilfen
Ü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. Getting translation aids is as simple as doing HTTP GET for the URL http://translatewiki.net/w/api.php?action=translationaids&title=MediaWiki%3AJan%2Fde . It provides various different formats, but JSON and XML are the most popular ones. This API does not need authentication, but some translation aids like "inotherlanguages" uses user preferences to determine which languages to use. To use that aid you should log in first, as described in the MediaWiki WebAPI documentation.
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.
You can see an example of this above with definitiondiff
.
It signals that it cannot display a diff, because there have been no changes to the definition since last translation.
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.
By default the API returns all aids, but you can request specific ones with the prop
param.
In the example we are using jsonp to work around cross site request limitations.
Be aware that you cannot execute any write actions with jsonp, so if you are using this API from JavaScript you will need: to have a proxy; to run the script on the same host; or to load a little helper (not yet implemented) from the target site.
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 *
.
Identifiers should avoid special characters, especially those which are not valid in JavaScript identifiers, like -
and *
.
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.
Language should be provided in field language
.
Users of this data should ensure that in HTML and elsewhere the text is tagged properly with the provided language and directionality (not provided here).
If there is HTML output, it should be available with key html
.
Examples of this are message documentation and diffs.
Verschiedene Arten von Übersetzungsvorschlägen wie maschinelle Übersetzung und Übersetzungsgedächtnis sollten diese Schlüssel verwenden, sofern sie sinnvoll sind:
source
,source_language
andtarget
(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.
**
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. For machine translation and translation memory this is suggestion
. This is mandated by the MediaWiki WebAPI framework. It is visible in the XML format, but in JSON format the output is just a list.
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.
In PHP that means array with numerical indexes + one with key **
; see above why this is needed.
Klasse | ID | Felder | Anmerkungen |
---|---|---|---|
MessageDefinitionAid | definition |
|
|
CurrentTranslationAid | translation |
|
|
InOtherLanguagesAid | inotherlanguages |
|
Abhängig von den Benutzereinstellungen |
DocumentationAid | documentation |
| |
MachineTranslationAid | mt |
|
Die Verfügbarkeit hängt von der Unterstützung von Sprachpaaren und der Verfügbarkeit externer Dienste ab. |
UpdatedDefinitionAid | definitiondiff |
|
Die Anzeige hängt vom mediawiki.action.history.diff-Resource-Loader-Modul von MediaWiki ab. |
TTMServerAid | ttmserver |
| |
SupportAid | support |
|
Dies ist eine Webseite, an die sich Benutzer wenden können, um Fragen zu dieser Nachricht zu stellen. |
InsertablesAid | insertables |
|
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. |
Ü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