Help:Extension:Translate/Insertables/nl

From Linux Web Expert

Revision as of 04:16, 17 March 2023 by imported>HanV (Created page with "Deze ''insertable'' vindt URL's (die meestal bij vertaling niet gewijzigd worden) en stelt een wijziging voor, zodat constanten niet per ongeluk vertaald worden.")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Vertaalbare teksten bevatten vaak opmaak die niet vertaald moeten worden, maar zo moet blijven staan. Het invoeren van die opmaak kan lastig zijn door de gebruikte tekens en de complexe opbouw. Insertable is een deel van de opmaak die voor de vertalers als een knop of een andere element beschikbaar is. Door het klikken op die knop wordt een stukje opmaak toegevoegd in de vertaling op de plek waar de cursor dan staat.

Elke vertaalgroep kan een InsertablesSuggester hebben. Deze class zorgt voor het genereren van een lijst van Insertables. Een Insertable bestaat uit drie gedeelten.

  1. Het gedeelte wat de gebruiker ziet
  2. het gedeelte wat voor de cursor wordt toegevoegd in de vertaling of wat de geselecteerde inhoud vervangt.
  3. Het gedeelte wat na de cursor wordt toegevoegd.

De Translate extensie komt ingebouwd met MediaWikiInsertablesSuggester. Andere mogelijke inhoudstypes staan in de translatewiki.net git repository.

Gebruikersinterface

File:Translate extension Insertables interface.png
Insertables worden onderin het vertaalgebied getoond. Het is een stukje tekst dat taalongevoelig is, bijvoorbeeld een parameter.

Configuratie

Een voorbeeld met een configuratie wijziging in een YAML-bestand,

INSERTABLES:
  # vooraf gebundelde insertable
  - class: RegexInsertablesSuggester
    params: "/\$[a-zA-Z0-9]+/"
  # aangepaste insertable
  - class: FreeColInsertablesSuggester

AUTOLOAD:
  FreeColInsertablesSuggester: Suggester.php

Gebundelde / aangeboden insertables

Een lijst met gebundelde insertables.

HtmlTagInsertablesSuggester

Deze insertable zal een suggestie tonen voor elke HTML-tag in de brontekst.

Bijvoorbeeld:

  • Bericht: This <a href="abc">link</a>link takes you to the home page.
  • Suggester zal tonen: <a href="abc"></a>

MediaWikiInsertablesSuggester

Deze insertable zal suggesties voor MediaWiki gerelateerde wikitext tonen. Dit ook voor:

  • Parameters zoals $1user die voorkomen in de API Help-teksten.
  • PLURALS, GENDER, GRAMMAR
  • Suggesties voor HTML-tags.

NumericalParameterInsertablesSuggester

Deze insertable zal suggesties voor numerieke parameters tonen zoals $1, $2 en $33

RegexInsertablesSuggester

Deze insertable is een algemene insertable die gebruikt kan worden voor het tonen van suggesties gebaseerd op een reguliere expressie.

Voorbeeld:

  # eenvoudig voorbeeld
  # komt overeen en stelt voor: $abc
  - class: RegexInsertablesSuggester
    params: "/\$[a-zA-Z0-9]+/"
  # moeilijk voorbeeld met gebruik van genaamde ''captures''.
  # komt overeen met: [abc](ac) 
  # Suggester toont: [](ac)
  - class: RegexInsertablesSuggester
    params:
      regex: /(?<pre>\[)[^]]+(?<post>\]\([^)]+\))/
      display: $pre $post
      pre: $pre
      post: $post

Parameter beschrijving

  • regex - De voor het identificeren van insertables te gebruiken regex. Verplicht.
  • display - Wat te tonen aan de gebruiker. Niet verplicht, de overeenkomende waarde wordt de standaard.
  • pre - Wat voor de selectie toe te voegen of het de selectie vervangen als post leeg blijft Niet verplicht, de overeenkomende waarde wordt de standaard.
  • post - Wat na de selectie toe te voegen. Niet verplicht, de overeenkomende waarde wordt de standaard.

TranslatablePageInsertablesSuggester

Voornamelijk gebruikt op vertaalbare pagina's voor het aan de suggester geven van variabelen als $abc.

UrlInsertablesSuggester

Deze insertable vindt URL's (die meestal bij vertaling niet gewijzigd worden) en stelt een wijziging voor, zodat constanten niet per ongeluk vertaald worden.

Een eigen insertable toevoegen

Als de beschikbare insertables niet aan uw behoeften voldoen dan kunt u er ook een of meer toevoegen.

Een voorbeeld met het toevoegen van een voor het ondersteunen van een bestaande berichtengroep gebaseerd op bestanden: FreeCol. Het YAML-bestand wordt wat verkort weergeven, het is bedoeld als voorbeeld. De toegevoegde regels zijn gemarkeerd.

FreeCol.yaml:

---
BASIC:
  id: out-freecol
  label: FreeCol
  description: "A strategy game"
  namespace: NS_FREECOL
  class: FileBasedMessageGroup
 
FILES:
  class: JavaFFS
  sourcePattern: %GROUPROOT%/freecol/data/strings/FreeColMessages_%CODE%.properties
  definitionFile: %GROUPROOT%/freecol/data/strings/FreeColMessages.properties
  targetPattern: freecol/data/strings/FreeColMessages_%CODE%.properties

INSERTABLES:
  - class: FreeColInsertablesSuggester

AUTOLOAD:
  FreeColInsertablesSuggester: Suggester.php

Suggester.php:

class FreecolInsertablesSuggester {
	public function getInsertables( $text ) {
		$insertables = array();

		$matches = array();
		// Variabelen zoeken op formaat %name%
		// Dit is dezelfde reguliere expressie als in Checker.php
		preg_match_all( '/%[a-zA-Z_]+%/', $text, $matches, PREG_SET_ORDER );
		$new = array_map( function( $match ) {
			// $match[0] is op volledige overeenkomst, we gebruiken hier geen overeenkomsten op delen
			// Omdat we willen dat de cursor na het toegevoegde deel staat, wordt er een veld "pre" gebruikt.
			return new Insertable( $match[0], $match[0] );
		}, $matches );

		return $insertables;
	}
}

De parameters voor Insertable zijn:

class Insertable {
        /**
         * @param string $display Wat te tonen aan de gebruiker
         * @param string $pre Wat voor de selectie toe te voegen of het de selectie vervangen als $post leeg blijft
         * @param string $post Wat na de selectie toe te voegen
         */
        public function __construct( $display, $pre = '', $post = '' ) {
                $this->display = $display;
                $this->pre = $pre;
                $this->post = $post;
        }
[...]
}