Hilfe:Erweiterung:Übersetzen/Gruppenkonfiguration
Ü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
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: BASIC, FILES, MANGLER, VALIDATORS, INSERTABLES, TAGS, AUTOLOAD, LANGUAGES 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. Siehe das Beispiel oben. |
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 $1 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%
|
support | Configures where the "Ask help" button will redirect the translator. Du musst entweder url oder page und optional auch params angeben, um die URL-Parameter zu konfigurieren. In Parameter kannst du %MESSAGE% als ein Platzhalter für den Namen der Nachricht verwenden.
|
Beispiel:
BASIC:
id: out-freecol
label: FreeCol
icon: wiki://Freecol.png
description: "{{int:bw-desc-freecol}}"
namespace: NS_FREECOL
class: FileBasedMessageGroup
support:
url:
params:
title: "Translation issue with message %MESSAGE%"
body: "[**URL**](https://translatewiki.net/wiki/%MESSAGE%)"
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 |
---|---|
format* | Format of message files. Examples: Yaml , Java , FlatPhp (for a full list, see FORMATS in FileFormatFactory.php).
|
class | Klasse, die das Format der Nachrichtendateien definiert. Deprecated in Translate 2023.07 in favor of format .
|
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. |
Apple |
Format-specific keys |
header | Benutzerdefinierter Dateiüberschriftskommentar. |
FlatPhp |
Klassenspezifische Schlüssel |
header | Benutzerdefinierter Datei-Header. Wenn nicht angegeben, wird standardmäßig <?php verwendet
|
Gettext |
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. |
Java |
Klassenspezifische Schlüssel |
header | Benutzerdefinierter Dateiüberschriftskommentar. |
keySeparator | Das Zeichen, das Schlüssel und Wert trennt. Standard ist = . Kann auch : sein.
|
Json |
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. |
Yaml |
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:
format: Java
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:
# vorgegebener Validator
- id: InsertableRegex
enforce: true
insertable: true
params: /\$[a-z0-9]+/
# benutzerdefinierter 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 AUTOLOAD beschrieben automatisch geladen werden.
INSERTABLES:
# vorgegebenes Einsetzelement
- class: HtmlTagInsertablesSuggester
# benutzerdefiniertes Einsetzelement
- 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:
format: Yaml
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
LANGUAGES:
whitelist:
- en
blacklist:
- he
- or
Erlaubte ("include") Werte überschreiben jeden Wert in der Ausgeschlossenen ("exclude") Liste. Wenn der Erlaub-Wert *
ist, bedeutet das, dass alle Sprachen erlaubt sind. Die Erlaub-Liste 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;
}