Hilfe:Erweiterung:Übersetzen/Gruppenkonfiguration

This page is a translated version of the page Help:Extension:Translate/Group configuration and the translation is 38% complete.
Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎français • ‎čeština • ‎नेपाली • ‎日本語

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):

List of possible keys (mandatory keys are marked with *):

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 Custom file header comment.
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 Whether to include the @metadata key with author information in the exported files. Defaults to true.
parseCLDRPlurals Whether to parse CLDR plural keywords. Defaults to false.
YamlFFS Class specific keys
codeAsRoot If set to 1, all messages are under a language code (instead of at the root).
nestingSeparator The character separating levels when nested objects are flattened intro one key string. Default value is .. Example: top: { nested: content } is converted to (assuming . as separator) message with key top.nested and value content.
parseCLDRPlurals Whether to parse CLDR plural keywords. Defaults to false.

The path variables are:

Variable Description
%CODE% Language code (affected by codeMap)
%MWROOT% Path to MediaWiki installation
%GROUPROOT% Defined by $wgTranslateGroupRoot.
%GROUPID% Message group id

Example:

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

MANGLER

Mangler is a way to mungle message keys to avoid conflicting message keys in multiple groups:

Key Description
class* Which type of mangler to use. Example: StringMatcher
StringMatcher Class specific keys
patterns* List of patterns. "*" can be used as a wildcard.
prefix* If the above patterns match a message, the message key will be prefixed with this prefix.

Example:

MANGLER:
  class: StringMatcher
  patterns:
    - "*"

CHECKER

  Warnung: This is no longer supported. Please see the VALIDATORS section on how to achieve similar functionality.

Checkers run checks on the translated messages. If they find problems, those translations are highlighted for translators.

Key Description
class* The checker class to use.
checks* List of methods in the class given above.

Example:

CHECKER:
  class: ShapadoMessageChecker
  checks:
    - ShapadoVariablesCheck

VALIDATORS

This section allows to define pre-defined or custom validators.

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

AUTOLOAD:
  MyCustomValidator: Validator.php

INSERTABLES

This section allows to define a class which suggests insertables or use pre-defined insertables. The classes can be autoloaded as described in the AUTOLOAD section.

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

AUTOLOAD:
  FreeColInsertablesSuggester: Insertable.php

TAGS

It is possible to assign tags to messages. Each tag takes list of message keys (after mangling). "*" can be used as wildcard. The following tags are supported:

Key Description
optional These messages are not shown by default, and they do not count as untranslated messages when calculating translation percentages.
ignored These messages are not shown at all.

Example:

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

AUTOLOAD

This item takes list of class names with filenames as values. This way custom classes can be bundled easily with your custom message groups. The path should be relative to the location of the group configuration file itself.

Example:

AUTOLOAD:
  ShapadoMessageChecker: Checker.php

TEMPLATE

There is a handy shortcut if you are defining multiple similar message groups. To avoid repetition, have the first definition start with this key. You can use any other top-level keys as subkeys for this item. All other groups will use these definitions as default values. Each group can of course override the default value from the template.

Example:

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

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

GROUPS (for AggregateMessageGroup class)

This key only takes list of group ids this message group consists of.

Example:

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

Wildcards are supported. In this case the aggregate group will not recursively include itself even if it matches a pattern. Example:

GROUPS:
  - out-shapado-*

Wildcards can be problematic if you have nested aggregate groups, because some groups can be included multiple times: both directly and via the included aggregate groups.

LANGUAGES

This key allows white listing and black listing of languages for the group. Blacklisted languages will not be allowed for translation.

LANGUAGES:
  whitelist:
    - en
  blacklist:
    - he
    - or

Whitelist overrides any values in the blacklist. If whitelist value is * that means all languages are allowed. Whitelist is also optional.

Message groups for interface messages specific to your wiki

Example of message group for custom user interface of the wiki, for example for localized sidebar. Add the following code into your LocalSetting.php and replace wikiname with something meaningful.

$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;
	return true;
}

Shortcut for MediaWiki extensions

See units group for MediaWiki.