Hilfe:Erweiterung:Übersetzen/Gruppenkonfiguration

From mediawiki.org
Jump to navigation Jump to search
This page is a translated version of the page Help:Extension:Translate/Group configuration and the translation is 98% complete.
Outdated translations are marked like this.

Es gibt viele Möglichkeiten, Nachrichtengruppen zur Erweiterung "Übersetzen" hinzuzufügen. Nachrichtengruppen sind Ansammlungen von Nachrichten. Normalerweise vergleichen sie ein Modul in einer Software und eine Datei (und normalerweise eine pro Sprache für Übersetzungen). Es ist auch möglich, Gruppen zu erstellen, die Nachrichten aus anderen Nachrichtengruppen enthalten. Beispielsweise kann es eine Gruppe geben, die alle Nachrichten in einer bestimmten Software enthält. Gruppen können auch nur Teilmengen von Nachrichten enthalten, z. B. die wichtigsten Nachrichten von MediaWiki, die zuerst übersetzt werden sollen. Diese übergeordneten Gruppen werden nicht direkt Dateien in einem bestimmten Format zugeordnet, sondern können wie alle Gruppen zur Verwendung in anderen Übersetzungstools im Gettext-Format exportiert werden.

Nachrichtengruppen sind die übergeordneten Blöcke, mit denen Übersetzer interagieren: Um eine zu bearbeitende Nachricht auszuwählen, müssen sie zuerst eine Gruppe auswählen, es sei denn, sie verwenden die Übersetzungssuche. Für jede Gruppe können wir Statistiken sammeln und jede Gruppe hat eine eindeutige Kennung. Nachrichten sind natürlich die kleinsten Textblöcke, die Übersetzer einzeln übersetzen. Jede Nachricht hat auch eine Kennung, die normalerweise als "Schlüssel" bezeichnet wird. Der Schlüssel muss nicht für alle Nachrichtengruppen eindeutig sein.

Standard-Gruppenkonfigurationsformat

Es ist einfach, Nachrichtengruppen im YAML-Format hinzuzufügen. Du musst lediglich einen Namensraum definieren und eine Konfigurationsdatei zu $wgTranslateGroupFiles hinzufügen. Weitere Informationen findest Du auf der Konfigurationsseite. Beispiel:

wfAddNamespace( 1218, 'FUDforum' );
$wgTranslateGroupFiles[] = "$IP/messagegroups/FUDforum/FUDforum.yml";

Die Datei selbst verwendet die YAML-Syntax. Die Syntax selbst wird hier nicht beschrieben, ist jedoch leicht zu erlernen, und alle vorgefertigten Gruppen können als Beispiele verwendet werden. Denke daran, Leerzeichen anstelle von Tabulatoren zum Einrücken zu verwenden. Jede Datei kann mehrere Nachrichtengruppen definieren. Jede Gruppendefinition wird durch eine Linie mit drei Bindestrichen getrennt. Dies ist das Standard-Dokumententrennzeichen in YAML.

Die Definitionen sind in einige Elemente der obersten Ebene unterteilt: GRUND-INFORMATION, DATEIEN, MANGLER, CHECKER, ERWEITERUNGEN, TAGS, AUTOLOAD, SPRACHEN und Spezial VORLAGE. Einige benutzerdefinierte Gruppen können weitere Elemente der obersten Ebene hinzufügen. Nicht alle Gruppen müssen alle definieren.

GRUND-INFORMATION

Dieser Abschnitt enthält grundlegende Informationen zur Gruppe, z. B. eine eindeutige ID und einen eindeutigen Namen. Liste der möglichen Schlüssel (Pflichtschlüssel sind mit * gekennzeichnet):

Schlüssel Beschreibung
namespace* Entweder Namensraum-ID, Konstante oder Zeichenfolge, in der die Nachrichten gespeichert sind. Der Namensraum muss zuvor hinzugefügt werden. Siehe das obige Beispiel.
icon Icon für die Nachrichtengruppe. Kann jede Datei unterstützen, die MediaWiki verarbeiten kann und die in MediaWiki hochgeladen wird. Unterstützt auch Dateien aus gemeinsam genutzten Medienquellen.
id* Eindeutige ID, die diese Nachrichtengruppe kennzeichnet.
label* Von Autoren lesbarer Name dieser Nachrichtengruppe.
description Beschreibung dieser Nachrichtengruppe. Es wird die vollständige Wiki-Syntax verwendet.
class* Der Typ dieser Nachrichtengruppe - normalerweise FileBasedMessageGroup oder AggregateMessageGroup.
meta Mehrfachnutzung. Wenn für verschiedene Nachrichtengruppen identische Nachrichtenschlüssel vorhanden sind (normalerweise bei Zweig- oder Teilmengen-Nachrichtengruppen), kann nur eine Gruppe primär sein, und die anderen Gruppen sollten Meta-Werte mit dem Wert yes haben.
sourcelanguage Sprachcode der Ausgangssprache. Der Standardwert ist en (für Englisch).
codeBrowser Wird nur in GettextFFS verwendet. URL-Muster eines Online-Viewers für die Quell-Datei(en), wobei %FILE% und %LINE% durch den entsprechenden Dateipfad und die entsprechende Zeile ersetzt werden – wie in PO Datei-Kommentaren für eine Nachricht angegeben – um den Übersetzern einen informativen Link innerhalb der Übersetzungshilfen für diese Nachricht zu geben. Beispiel: https://github.com/lonvia/waymarked-trails-site/blob/master/django/%FILE%#L%LINE%.

Beispiel:

BASIC:
  id: out-freecol
  label: FreeCol
  icon: wiki://Freecol.png
  description: "{{int:bw-desc-freecol}}"
  namespace: NS_FREECOL
  class: FileBasedMessageGroup

DATEIEN

In diesem Abschnitt werden das Dateisystemlayout und das Format von Nachrichtendateien für Gruppen des Typs FileBasedMessageGroup beschrieben. Liste der möglichen Schlüssel (Pflichtschlüssel sind mit * gekennzeichnet):

Schlüssel Beschreibung
class* Klasse, die das Format der Nachrichtendateien definiert. Beispiele: YamlFFS, JavaFFS, FlatPhpFFS, ....
codeMap Liste der Sprachcodes, die sich von den in MediaWiki verwendeten unterscheiden. Verwende den MediaWiki-Sprachcode als Schlüssel und den Zielsprachencode als Wert.
sourcePattern* Wo finde ich Nachrichtendateien? Pfadvariablen werden unterstützt.
targetPattern Wie die exportierten Dateien relativ zum Exportverzeichnis benannt werden. Pfadvariablen werden unterstützt.
definitionFile Verwende diese Option, um den Speicherort der Definitionsdatei (mit den englischen Quellnachrichten) zu definieren, wenn das Quellmuster nicht eingehalten wird. Pfadvariablen werden unterstützt.
AppleFFS, AppleInfoPlistFfs
header Benutzerdefinierter Dateiüberschriftskommentar.
FlatPhpFFS Klassenspezifische Schlüssel
header Benutzerdefinierter Datei-Header. Wenn nicht angegeben, wird standardmäßig <?php verwendet
GettextFFS Klassenspezifische Schlüssel
CtxtAsKey Spezialmodus, in dem ctxt als Nachrichtenschlüssel verwendet wird. Sollte nicht für normale Gettext-Dateien verwendet werden.
header Benutzerdefinierter Dateiüberschriftskommentar.
keyAlgorithm Zulässige Werte: "Alt" und "Einfach". Standardeinstellung: "Einfach". "Einfach" bietet kürzere Nachrichtenschlüssel.
JavaFFS Klassenspezifische Schlüssel
header Benutzerdefinierter Dateiüberschriftskommentar.
keySeparator Das Zeichen, das Schlüssel und Wert trennt. Standard ist =. Kann auch : sein.
JsonFFS Klassenspezifische Schlüssel
nestingSeparator Das Zeichen, das Ebenen trennt, wenn verschachtelte Objekte zu einer Schlüsselzeichenfolge reduziert werden. Standardmäßig wird keine Reduzierung durchgeführt. Beispiel: { "top": { "nested": "content" } } wird mit dem Schlüssel top/nested und dem Wert content in eine Nachricht (unter der Annahme / als Trennzeichen) konvertiert.
includeMetadata Ob der @metadata-Schlüssel mit Autorinformationen in Exportdateien enthalten sein soll. Standardwert ist Ja.
parseCLDRPlurals Ob CLDR-Puralschlüssel zerteilt werden sollen. Standardwert ist Nein.
YamlFFS Klassenspezifische Schlüssel
codeAsRoot Wenn auf 1 gesetzt, stehen alle Nachrichten unter einem Sprachcode (anstatt der Wurzel).
nestingSeparator Das Zeichen, das Ebenen trennt, wenn verschachtelte Objekte zu einer Schlüsselzeichenfolge reduziert werden. Standardwert ist .. Beispiel: top: { nested: content } wird (mit dem Separator .) in eine Nachricht mit dem Schlüssel top.nested und Wert content konvertiert.
parseCLDRPlurals Ob CLDR-Puralschlüssel zerteilt werden sollen. Standardwert ist Nein.

Die Pfadvariablen sind:

Variable Beschreibung
%CODE% Sprachcode (beeinflusst durch codeMap)
%MWROOT% Pfad zur MediaWiki-Installation
%GROUPROOT% Definiert durch $wgTranslateGroupRoot.
%GROUPID% Nachrichtengruppen-ID

Beispiel:

FILES:
  class: JavaFFS
  sourcePattern: %GROUPROOT%/commonist/messages_%CODE%.properties
  targetPattern: commonist/messages_%CODE%.properties

MANGLER

Mangler ist eine Möglichkeit, Nachrichtenschlüssel zu mischen, um Konflikte durch Nachrichtenschlüssel in mehreren Gruppen zu verhindern:

Schlüssel Beschreibung
class* Welcher Mangler-Typ genutzt wird. Beispiel: StringMatcher
StringMatcher Klassenspezifische Schlüssel
patterns* Liste von Mustern. "*" kann als Platzhalter verwendet werden.
prefix* Wenn die obigen Muster zu einer Nachricht passen, wird der Nachrichtenschlüssel um das Präfix erweitert.

Beispiel:

MANGLER:
  class: StringMatcher
  patterns:
    - "*"

VALIDATOREN

Dieser Abschnitt erlaubt die Definition vordefinierter oder benutzerdefinierter Validatoren.

VALIDATORS:
  # pre-defined validator
  - id: InsertableRegex
    enforce: true
    insertable: true
    params: /\$[a-z0-9]+/
  # custom validator
  - class: MyCustomValidator
    enforce: true

AUTOLOAD:
  MyCustomValidator: Validator.php

EINSETZELEMENTE

Dieser Abschnitt erlaubt die Definition einer Klasse, die Einsetzelemente vorschlägt oder vordefinierte Einsetzelemente nutzt. Diese Klassen können wie im Abschnitt AUTOLADEN beschrieben automatisch geladen werden.

INSERTABLES:
  # pre-defined insertable
  - class: HtmlTagInsertablesSuggester
  # custom insertable
  - class: FreeColInsertablesSuggester

AUTOLOAD:
  FreeColInsertablesSuggester: Insertable.php

TAGS

Es ist möglich, Nachrichten Tags zuzuweisen. Jeder Tag übernimmt (nach dem Mangling) eine Liste von Nachrichtenschlüsseln. "*" kann als Platzhalter verwendet werden. Die folgenden Tags werden unterstützt:

Schlüssel Beschreibung
optional Diese Nachrichten werden standardmäßig nicht angezeigt und werden nicht als unübersetzte Nachrichten gezählt, wenn der Anteil von Übersetzungen ermittelt wird.
ignored Diese Nachrichten werden nicht angezeigt.

Beispiel:

TAGS:
  optional:
    - lang_locale
    - lang_dir
  ignored:
    - charset

AUTOLADEN

Dieses Objekt listet Klassennamen mit Dateinamen als Werten auf. Auf diese Weise können benutzerdefinierte Klassen einfach mit benutzerdefinierten Nachrichtengruppen gebündelt werden. Der Pfad sollte relativ zum Ort der Gruppenkonfigurationsdatei selbst liegen.

Beispiel:

AUTOLOAD:
  ShapadoMessageChecker: Checker.php

VORLAGE

Es gibt eine einfache Abkürzung, wenn du mehrere ähnliche Nachrichtengruppen definierst. Beginne die erste Definition mit diesem Schlüssel, um Wiederholungen zu vermeiden. Du kannst alle anderen übergeordneten Schlüssel als Unterschlüssel für dieses Objekt verwenden. Alle anderen Gruppen werden diese Definitionen als Standardwerte nutzen. Natürlich kann jede Gruppe den Standardwert aus der Vorlage überschreiben.

Beispiel:

TEMPLATE:
  BASIC:
    namespace: NS_SHAPADO
    class: FileBasedMessageGroup
    description: "{{int:bw-desc-shapado}}"

  FILES:
    class: YamlFFS
    codeAsRoot: 1
    codeMap:
      be-tarask: be-TARASK

GRUPPEN (für AggregateMessageGroup-Klasse)

Dieser Schlüssel listet nur Gruppen-IDs auf, aus denen diese Nachrichtengruppe besteht.

Beispiel:

GROUPS:
  - out-shapado-ads
  - out-shapado-announcements
  - out-shapado-answers
  - out-shapado-badges

Platzhalter werden unterstützt. In diesem Fall wird die aggregierte Gruppe selbst nicht rekursiv eingebunden, selbst wenn sie mit dem Muster übereinstimmt. Beispiel:

GROUPS:
  - out-shapado-*

Platzhalter können problematisch sein, wenn du verschachtelte aggregierte Gruppen hast, da einige Gruppen mehrfach eingebunden sein können: sowohl direkt als auch über die eingebundenen aggregierten Gruppen.

SPRACHEN

Dieser Schlüssel erlaubt das Whitelisten und Blacklisten von Sprachen für die Gruppe. Blacklisten einer Sprache führt dazu, dass es nicht erlaubt ist, in diese Sprache zu übersetzen.

LANGUAGES:
  include:
    - en
  exclude:
    - he
    - or
Warnung Warnung: MLEB 2021.10: Below configuration no longer supported
LANGUAGES:
  whitelist:
    - en
  blacklist:
    - he
    - or

Whitelisten überschreibt jeden Wert in der Blacklist. Wenn der Whitelist-Wert * ist, bedeutet das, dass alle Sprachen erlaubt sind. Whitelist ist ebenfalls optional.

Nachrichtengruppen für spezifische Benutzeroberflächennachrichten deines Wikis

Beispiel einer Nachrichtengruppe für benutzerdefinierte Benutzeroberflächen eines Wikis, beispielsweise für eine lokalisierte Seitenleiste. Füge den folgenden Code in deine LocalSetting.php ein und ersetze wikiname durch etwas bedeutenderes.

$wgHooks['TranslatePostInitGroups'][] = function ( &$list, &$deps, &$autoload ) {
	$id = 'wiki-custom';
	$mg = new WikiMessageGroup( $id, 'wikiname-messages' );
	$mg->setLabel( 'Wikiname User Interface Messages' );
	$mg->setDescription( 'This group contains user interface messages used on Wikiname.' );
	$list[$id] = $mg;
}

Abkürzung für MediaWiki-Erweiterungen

Siehe Einheitengruppe für MediaWiki.