Hilfe:Automatische Übersetzung

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
This page is a translated version of a page Help:Autotranslate and the translation is 100% complete. Changes to the translation template, respectively the source language can be submitted through Help:Autotranslate and have to be approved by a translation administrator.
Das Ergebnis sieht normalerweise wie folgt aus
Die Struktur, die in der Regel zum Erstellen einer autotranslatierten Vorlage erforderlich ist

Hier geht es darum, wie man eine automatisch übersetzte Vorlage mit {{Autotranslate}} einrichtet (siehe dortige Dokumentation) und soll den Prozess klarer und ausführlicher erklären.

Warum lokalisieren?

Wikimedia Commons ist ein mehrsprachiges Projekt. Unser Ziel ist es, jedem Benutzer von überall auf der Welt eine lokalisierte Oberfläche zur Verfügung zu stellen.

Wann wird Autotranslate verwendet

Wenn du ein einzelnes Wort oder eine Phrase übersetzen möchtest, verwende die MediaWiki-Systemnachrichten oder {{LangSwitch}}. Wenn du etwas Komplexeres übersetzen willst, ist Autotranslate die richtige Wahl. Siehe Commons:Localization für einen Überblick über Internationalisierung/Lokalisierung.

Was macht Autotranslate?

Autotranslate „ruft“, abhängig von der vom Benutzer gewählten Oberflächensprache, eine Unterseite der durch den Parameter |base= angegebenen Vorlage auf. Das bedeutet, dass die Verarbeitung auf dem Server stattfindet und nur der Inhalt einer Untervorlage für den Benutzer sichtbar ist. Es erkennt die vom Benutzer gewählte Sprache, indem es {{int:lang}} nachschlägt; für dich wird dies zu $ ausgewertet, daher würde Autotranslate die Unterseite /en für dich aufrufen, sofern sie existiert.

Nachteile

Autotranslate speichert verschiedene Sprachübersetzungen auf verschiedenen Vorlagen-Unterseiten. Dies hat einen entscheidenden Nachteil: Die Vorlagen-Unterseiten müssen separat gepflegt werden, um relevant und aktuell zu bleiben. Andernfalls sehen Benutzer mit unterschiedlichen Sprachen unterschiedliche Anweisungen oder unterschiedliche Informationen. Dies kann zu Problemen bei der Interaktion der Benutzer untereinander führen. Wenn Benutzer eine Version ändern, müssen sie daher entweder alle anderen Versionen aktualisieren oder einen veraltet-Hinweis auf allen anderen Unterseiten-Vorlagen anbringen. In der Praxis kommt es oft vor, dass nur die /en-Unterseite (englische Version) aktualisiert wird; die Koordination von Übersetzungs-Updates bleibt ein Problem auf Commons (das gilt nicht nur für auto-übersetzbare Vorlagen …). Allerdings gibt es jetzt eine Lösung, die sicherstellt, dass alle Übersetzungen synchronisiert sind: die Übersetzungserweiterung.

Performance

Wie du hoffentlich im Diagramm neben diesem Text sehen kannst, sind mehr als 5 Vorlagen beteiligt. Autotranslate prüft selbst, ob eine Seite existiert.

Dies wird als „teure Parserfunktion“ eingestuft.

Trotzdem ist Autotranslate besser als 10 LangSwitches.. Wenn du einen unverarbeiteten {{Autotranslate}} siehst, achte darauf, dass zu viele teure Parserfunktionen auf einer Seite das Rendern von Vorlagen stoppen.

Vorlagen-Schleife erkannt!

"Template loop detected:Template:Autotranslate" Diese gefürchtete Fehlermeldung kannst du bei der Verwendung von Autotranslate feststellen. Der Grund dafür ist, dass, wenn eine Vorlage, die Autotranslate verwendet, eine andere Vorlage, die Autotranslate verwendet, aufruft, dies eine {{Autotranslate}}-Schleife verursacht. Da es eine andere Basis verwendet, gibt es kein wirkliches Problem und die Fehlermeldung selbst ist das einzige, was dir den Tag versaut. Die Lösung: Verwende {{Autotranslate/clone 1}}, {{Autotranslate/clone 2}}, {{Autotranslate/clone 3}} or {{Autotranslate/clone 4}}.

Erforderliche Seiten

Hauptvorlage

Die auch als „Frontvorlage“ bezeichnete Vorlage sollte wie folgt aussehen

{{Autotranslate|base=Example|1={{{1|}}}|2={{{2|}}}}}<noinclude>

{{documentation}}
</noinclude>
  • Sie ist sehr klein
  • Bei der Erstellung von Benutzerdiskussions-Vorlagen ist dies wichtig, damit diese Vorlage -tituiert werden kann.
  • <noinclude> verhindert, dass andere Dinge angezeigt werden, wenn diese Vorlage verwendet wird
  • Der Basis-Parameter ist nur der Name der Vorlage ohne Namensraum
  • Dann folgen numerische Parameter (mindestens 10 sind erlaubt). Sie werden an die Übersetzungs-Unterseiten weitergeleitet. Es werden nur numerische Parameter weitergeleitet. Du kannst aber natürlich auch einen benannten Parameter in einen numerischen umwandeln: |1={{{namedParameter|}}}
  • {{Documentation}} lädt die /doc-Unterseite der Vorlage und schließt sie in einen Container ein, so dass der Hintergrund grau erscheint und es einige Links gibt (edit, view)
  • Die Kategorien werden in der Regel durch die Dokumentation transkludiert. Dies erlaubt es Administratoren, die Hauptvorlage zu schützen, während erfahrene Benutzer die Vorlage immer noch über die /doc-Unterseite kategorisieren können (wo sie innerhalb eines <includeonly>-Tags hinzugefügt werden).

Sprach-Unterseiten: /de, /de, /fr, …

Sie sehen dann so aus:

{{Example/layout
|1={{{1|}}}
|2={{{2|}}}
|lang=en
|text1=This is an example text.
|text2=or just a phrase
}}<noinclude>
{{translated tag|insert type here - for types see [[Template:Translated tag]]}}
</noinclude>
  • Diese Unterseiten sind für die Übersetzung, nicht für komplizierte Operationen
  • Komplizierte Transformationen an den Eingabeparametern sollten in separaten Vorlagen durchgeführt werden, bevor die Parameter an die Sprachunterseite übergeben werden, also auf der Hauptvorlage unter Verwendung von Präprozessor-Vorlagen
  • Pflege die Übersetzer und sie werden dir dankbar sein.
  • Diese Vorlagen müssen immer synchron zueinander sein. Sonst werden Leute, die einige Sprachen benutzen, in die Irre geführt.
  • Leite immer alle Parameter, die die Unterseite erhält, an die Layout-Vorlage weiter.
  • Übergib auch das aktuelle „Sprachkürzel“ (den Unterseiten-Namen, immer hardcodiert, verwende nicht {{SUBPAGENAME}}, sondern {{subst:SUBPAGENAME}})
  • Füge keine hartkodierten Links zu diesen Sprach-Unterseiten hinzu. Wenn sich alle Sprach-Unterseiten einen Link teilen sollen und es nicht möglich ist, diesen auf die /layout-Unterseite zu portieren, erstelle eine neue Unterseite der Vorlage (z.B. Example:Beispiel/Link) und verwende den Link auf diese Weise: Example text [[{{Example/link}}|mit einem Beispiellink]] darin, weil ich es nicht mag foo bar.. Wenn du den Link später ändern musst, musst du nicht unzählige Übersetzungen bearbeiten.
  • Versuche nicht, Fallback-Texte wie diesen zu verwenden: {{{1|Fallback-Text}}}. Das wird nicht funktionieren, weil Autotranslate immer alle Parameter übergibt, auch wenn sie leer sind. Du musst das Beispiel umschreiben in {{#if: {{{1|}}}|{{{1}}}|fallback text}}

Layout Unterseite: /layout

Hier kannst du kreativ sein. Aber du musst dich an einige Grundregeln halten:

  • Verwende {{LayoutTemplateArgs}}, um eine Ajax-in-Seiten-Übersetzung deiner Vorlage zu ermöglichen, wenn du auf einen Sprach-Link klickst. Du musst dich genau an die Anweisungen von {{LayoutTemplateArgs}}. halten. Das Ajax-Skript ruft derzeit die Sprach-Unterseiten direkt auf. Das bedeutet, dass du die Parameternamen mit Zahlen setzen musst, da die Unterseiten-Vorlage nur Zahlen akzeptiert, oder du musst sicherstellen, dass alle Sprach-Unterseiten auch benannte Parameter akzeptieren.
  • Schließe jedes Bild in {{ImageNoteControl}} ein: {{ImageNoteControl|notes=off|img=[[File:Example.jpg|60px]]}}. Andernfalls könnten Vandalen unpassende Bildnotizen hinzufügen (und das tun sie gerne). Ziehe in Betracht, die Dateien, die du verwenden willst, zu schützen.
  • Tabellen für Layoutzwecke sind veraltet, weil Screenreader ernsthafte Schwierigkeiten haben, sie zu verstehen. Aber manchmal ist es eine Herausforderung, sie zu ersetzen.

Hier ein Beispiel:

<div style="border:2px solid grey; width:99%; padding:5px; min-height:70px" class="layouttemplate">
{{LayoutTemplateArgs|template=Example|args=
{{urlencode: 1={{{1|}}} }}
{{urlencode: 2={{{2|}}} }}
{{urlencode: 3={{{3|}}} }}
}}
{{ImageNoteControl|notes=off|img=[[File:Example.jpg|60px|left]]}} Some text here.
----
{{Example/lang}}
</div>

Sprach-Unterseite: /lang

Die gute Nachricht: Du musst dich nicht um diese Seite kümmern. Nachdem alles andere erledigt ist, erstelle sie mit dem einzigen Inhalt {{subst:lle}}, der automatisch nach allen Sprachunterseiten sucht und Links zu denen hinzufügt, die existieren.

Falls du Anpassungen benötigst, sollten externe Links z. B. über {{urlencode: … }} aus Performance-Gründen verwendet werden (im Gegensatz zur internen Wikilink-Syntax).[r]

Dokumentation-Unterseite: /doc

Es ist eine gute Idee, ein Muster wie

{{TemplateBox
|1=
|1d=
|1def=
|1stat=required
|2=
|2d=
|2def=
|2stat=required
|name=Example
|desc=
|namespace=
|usergroup=
|placement=
|usage-notes=
|type=
|example=
|i18n-method=autotranslate
|i18n-desc=
|seealso=
* [[Example]]
|setscats=
|lines=
|shorthand=
|relieson=
}}

<includeonly>
[[Category:Example templates]]
</includeonly>

Verwendung der Extension:Translate

Shortcut

Die Extension:Translate ist derzeit in den meisten Fällen das empfohlene System für die automatische Übersetzung:

  • Machst du dir zunächst mit Wie man eine Seite für die Übersetzung markiert vertraut.
  • Das „Skelett“ ist die Seite, die für die Übersetzung markiert wird (d.h. zum Special:Translate-System hinzugefügt wird). Es kann nicht die Vorlagenseite selbst sein, die nur {{Autotranslate}} enthalten muss. Lege daher das Skelett in eine Unterseite, vorzugsweise /i18n. Die Übersetzungen werden dann (automatisch) unter /i18n/langcode. erstellt.
  • Das Skelett kann/sollte auch das gesamte Markup und die nicht übersetzbaren Teile enthalten. Das Translate-System wird diesen Wikitext automatisch auf alle Unterseiten kopieren, aber da die Handhabung automatisch ist, ist diese Duplizierung kein Problem. Wenn du eine Vorlage mit dem früheren Autotranslate-System anpasst, kannst du die /layout-Vorlage aus dem Skelett aufrufen, aber es wird nicht empfohlen.
  • Es besteht keine Notwendigkeit, die Übersetzungen manuell aufzulisten, also entferne jede /lang Unterseite. Das <languages/>-Tag könnte automatisch die verfügbaren Übersetzungen auflisten, aber das ist nicht notwendig.
  • Die Hauptvorlage muss angepasst werden und wird wie folgt aussehen:
{{Autotranslate|base=Example/i18n|1={{{1|}}}|2={{{2|}}}}}<noinclude>
{{documentation}}
</noinclude>
  • Nachdem du die Unterseite /i18n zur Übersetzung markiert oder einen Übersetzungsadministrator um Hilfe gebeten hast, aktualisiert ein Bot automatisch alle vorhandenen Unterseiten, die Übersetzungen sind. Wenn eine Seitenversion zum ersten Mal zur Übersetzung markiert wird, erstellt der Bot die Unterseite /en, die von Autotranslate als Hauptrückfallsprache verwendet wird. Änderungen auf der Unterseite /i18n werden erst beim Rendering der Vorlage wirksam, nachdem die Seite für die Übersetzung markiert wurde.
  • Verwende ext.translate als |i18n-method= in der Dokumentations-Vorlage. Achte auf den Parameter |i18n-sub-page=, da er, falls vorhanden, zu einem ungewöhnlichen Wert führen kann (Standard ist i18n, außer du lässt den Parameter name weg, und sollte nicht geändert werden).
  • Der große Vorteil ist, dass das Aktualisieren von übergebenen Parametern an die Layoutvorlage nun so einfach wie nie zuvor ist. Außerdem erhält man einen Überblick über den Übersetzungsfortschritt und die Übersetzer müssen sich nicht mit komplizierten Vorlagenkonstruktionen herumschlagen. Schließlich kann die Hauptvorlage vollständig geschützt werden; die Übersetzungen sind weiterhin editierbar und sogar die /i18n Unterseite.
  • Ein Beispiel findet sich unter Special:PrefixIndex/Template:TemplateBox.