Jump to content

ToolTranslate

From Meta, a Wikimedia project coordination wiki
This page is a translated version of the page ToolTranslate and the translation is 100% complete.
ToolTranslate in Aktion

Dies ist die Anleitung für das Werkzeug ToolTranslate. Fühle dich frei, sie zu übersetzen!

Zweck

Vielen Werkzeugen auf Toolforge fehlen Übersetzungen der Benutzeroberfläche, weshalb sie nur in einer Sprache verfügbar sind, meistens Englisch. Selbst Werkzeuge, die in der Benutzeroberfläche mehrere Sprachen unterstützen, nutzen umständliche Methoden für das Hinzufügen von neuen Sprachen und Übersetzungen. ToolTranslate bietet eine zentralisierte, benutzerfreundliche Möglichkeit für die Gemeinschaft, Übersetzungen für Werkzeuge bereitzustellen. Werkzeuge müssen diesen Mechanismus unterstützen, das heißt, sie müssen "überarbeitet" werden, sodass sie in der Benutzeroberfläche dynamischen statt statischen Text nutzen. Ursprünglicher Blog-Beitrag.

Übersetzen

  1. Gehe auf das Werkzeug
  2. Autorisiere das Werkzeug, sofern dies erfragt wird
  3. Wähle aus der ausklappbaren Liste oben oder aus der Liste auf der Hauptseite ein Werkzeug aus, das du übersetzen möchtest
  4. Wähle die Sprache aus, in die du übersetzen möchtest oder füge sie hinzu
  5. Klicke doppelt auf die "Zelle", in die du die neue Übersetzung eingeben möchtest oder in der du die Übersetzung verbessern möchtest
  6. Gib deinen Text ein. Du kannst HTML (kein JavaScript!) nutzen. Es kann einen Vorschlag für eine Übersetzung von einem anderen Werkzeug mit dem gleichen "Schlüsselwort" geben, den du als Basis für deinen Text nutzen kannst.
  7. Klicke auf OK. Fertig! Abgesehen von Problemen mit dem Caching des Browsers, solltest du deine Übersetzung in dem entsprechenden Werkzeug sehen, sobald du es das nächste mal lädst.

Ressourcen

Technik

Übersetzungen werden in einer Datenbank auf Toolforge gespeichert. Ältere Versionen von Übersetzungen werden erhalten und Übersetzungen werden dem jeweiligen Autor zugeordnet. (Ein Werkzeug "Letzte Änderungen" ist verfügbar.)

Um den Zugang zu Übersetzungs-Daten zu vereinfachen, werden alle Übersetzungen auch in JSON-Dateien gespeichert, die bei jeder Änderung aktualisiert werden. Beispiel "demotool1":

  • toolinfo.json, eine JSON -Datei mit Informationen über das Werkzeug
  • en.json, die JSON-Datei, die die englische Übersetzung des Werkzeugs enthält. Andere Sprachen funktionieren ebenso mit dem entsprechenden Sprachcode

Es gibt auch eine JSON-Datei mit allen gültigen Sprachen.

Datenbank

Die Quell-Daten werden in der s53069__tooltranslate_p-Datenbank auf tools-db auf Toolforge (mysql --defaults-file=~/replica.my.cnf -h tools-db s53069__tooltranslate_p) gespeichert. Wenn nötig, können Daten auch von dort erhalten werden. Folgende Tabellen sind verfügbar:

  • tool
    • id | name | label | url | owner
  • translation
    • id | tool_id | language | key | json | user | timestamp | current


Anleitung: HTML/JS

Anleitung: PHP

Es gibt eine PHP-Klasse, die du auf Toolforge einbinden kannst, etwa so:

require_once ( "/data/project/tooltranslate/public_html/tt.php") ;

Du kannst dann die Klasse instanziieren:

$tt = new ToolTranslation ( array ( 'tool' => 'your_tool_key' , 'language' => 'de' , 'fallback' => 'en' , 'highlight_missing' => true ) ) ; // Alles außer 'tool' ist optional

Direkte Nutzung

Es gibt zwei Möglichkeiten, um Benutzeroberflächen-Übersetzungen in PHP zu erhalten. Eine ist es, direkt eine übersetzte Zeichenkette zu erhalten

print "<p>" . $tt->t('translation_key') . "</p>" ;

Dies hat jedoch den Nachteil, dass die Übersetzung nicht geändert werden kann, ohne die Seite neu zu laden.

Nutzung über JS

Du kannst stattdessen HTML-"Übersetzungs-Markierungen" hinzufügen (siehe oben) und die Klasse die notwendigen JS-Aufrufe hinzufügen lassen. Ein weiterer Vorteil ist, dass die PHP-Klasse nicht alle Übersetzungs-Dateien laden muss, wenn du die "direkte" Übersetzung nicht nutzt. Um HTML/JS-Übersetzung zu nutzen, muss der <head>-Abschnitt deines HTML der Seite folgendes enthalten:

<script src="https://tools-static.wmflabs.org/tooltranslate/tt.js">

(Du benötigst auch jQuery.) Wenn die Seite generiert wird, schreib statt des oben genannten:

print "<p tt='translation_key'></p>" ;

Irgendwo in der Ausgabe (vielleicht am Ende) musst du auch den Invokations-Code hinzufügen:

print $tt->getJS() ;

Dadurch wird das erforderliche JS initialisiert, wodurch die in der PHP-Instanz genutzten Parameter reproduziert werden (Rückfallsprache, etc.). Wenn du eine "ausklappbare Übersetzung" haben möchtest, füge ein Wrapper-Element in deinen HTML-Code ein

<div id='tooltranslate_wrapper'></div>

gib dann den jQuery accessor als Parameter an, um die getJS-Methode anzurufen:

print $tt->getJS('#tooltranslate_wrapper') ;

Siehe dieses Werkzeug für ein funktionierendes Beispiel.