Help:Extension:Translate/Voorbeeld groepsinstellingen

This page is a translated version of the page Help:Extension:Translate/Group configuration example and the translation is 100% complete.

Deze handleiding is voor ontwikkelaars en beheerders van geavanceerde vertalingen. Deze handleiding beschrijft hoe u nieuwe configuratie bestanden kunt aanmaken voor het vertalen van interfaceberichten, met praktische details. Het dient samen met het handboek voor de groepsconfiguratie te worden gebruikt, de ontwikkelaars van de extensie Extensie:Translate willen u graag helpen bij vragen die u heeft bij het werken met deze handleiding.

Vereisten

Deze tutorial is gebaseerd op de extensie Extensie:Translate versie r97948 (23-9-2011).

Deze tutorial beschrijft het inschakelen van het vertalen voor enkele delen van het project MyBB. Maar de stappen zullen voor andere projecten niet zo verschillen. Enkele zaken zijn specifiek voor translatewiki.net en u zou natuurlijk moeten gebruiken wat voor u dan relevant is, volg dus niet blind de hier beschreven stappen.

Stap 1: Bekijk de broncode

Laten we de MyBB source controleren met gebruik van $wgTranslateGroupRoot als werkmap, in dit voorbeeld is dat /home/betawiki/projects/.

cd /home/betawiki/projects svn co http://svn.mybboard.net/mybb/branches/1.6-stable mybb

Afhankelijk van uw configuratie, kunt u dit als root of een gebruiker uitvoeren voordat u projectbestanden of configuratie-bestanden toevoegt. Op translatewiki.net is de gebruiker "betawiki", dus het commando wordt dan:

sudo -u betawiki svn co http://svn.mybboard.net/mybb/branches/1.6-stable mybb

Nu moeten we de bestanden met de berichten vinden. Deze staan in de submap mybb/inc/languages/, u vindt de Engelse berichten in de submap english/.

Laten we beginnen met mybb/inc/languages/english/index.lang.php, het eerste vertaalbestand van ons project.

Stap 2: Ondersteuning bestandstypes

In onze MediaWiki submap installation, onder FFS.php en Translate/ffs/ [1] kunnen we de classes die voor het ondersteunen van bestandstypes, die voor berichtgroepen worden gebruikt voor de vertaalbestanden per project. Na wat zoeken, ziet u welke formaten worden ondersteund. Dus we proberen om de FlatPhpFFS class te gebruiken om te kijken hoe dat werkt met ons PHP-bestand.

Dus we hebben een bestand te koppelen en daarvoor hebben we de class FFS uitgezocht. Nu moeten we een groepsconfiguratie maken. Dat is een YAML bestand.

In de index kunt een link vinden voor de Groepsconfiguratie . We beginnen het bestand dat als voorbeeld staat in de sectie BASIC.

BASIC:
  id: out-freecol
  label: FreeCol (open source game)
  description: "{{int:bw-desc-freecol}}"
  namespace: NS_FREECOL
  class: FileBasedMessageGroup

We passen de voorbeeldtekst aan met onze eigen waarden.

BASIC:
  id: out-mybb
  label: MyBB
  description: "[[Translating:MyBB|MyBB]] is a web-based discussion forum software"
  namespace: NS_MYBB
  class: FileBasedMessageGroup

De beschrijving accepteert de gehele wikitext syntaxis. In het orginele voorbeeld staat een mooi foefje voor het vertaalbaar maken door het gebruiken van {{int:message-key}}. U moet dan de standaardtekst definiëren in de pagina [[MediaWiki:Message-key]]. De ID van de namespace wordt toegevoegd met de constante, zie: Hoe aangepaste namespaces te gebruiken.

Wij hebben nog iets nodig: de sectie FILES. We gebruiken weer het voorbeeld in de documentatie:

FILES:
  class: FlatPhpFFS
  sourcePattern: %GROUPROOT%/inc/languages/messages_%CODE%.properties
  targetPattern: commonist/messages_%CODE%.properties

%CODE% is de taalcode, standaard is dat en (Engels). Wij willen niet de mappenstructuur van MyBB wijzigen. In plaats daarvan gebruiken we de functie: code map, daarmee kan elke taalcode gekoppeld worden aan de gebruikte identifiers van ons project.

Dus we eindigen met:

FILES:
  class: FlatPhpFFS
  sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/index.lang.php
  targetPattern: mybb/inc/languages/%CODE%/index.lang.php
  codeMap:
    en: english
    "no": norwegian
Let op, zet dubbele aanhalingstekens om de taalcode no, anders zou de YAML-parser (het in dit geval) kunnen zien als een boolean waarde.

Dit betekent dat voor code en, de %CODE% hierboven zal zijn english, dat is de map voor de Engelse berichtbestanden. De key targetPattern is meestal dezelfde als sourcePattern, maar zonder de %GROUPROOT% prefix.

Oke. we slaan dit bestand op, bijvoorbeeld in dezelfde map waar LocalSettings.php staat, met de naam MyBB.yaml. Het hele bestand is:

BASIC:
  id: out-mybb
  label: MyBB
  description: "[[Translating:MyBB|MyBB]] is a web-based discussion forum software"
  namespace: NS_MYBB
  class: FileBasedMessageGroup

FILES:
  class: FlatPhpFFS
  sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/index.lang.php
  targetPattern: mybb/inc/languages/%CODE%/index.lang.php
  codeMap:
    en: english
    "no": norwegian

Daarna moeten we zorgen dat de extensie dat bestand voor de vertalingen gebruikt. Voeg de volgende regel toe aan LocalSettings.php:

$wgTranslateGroupFiles[] = "MyBB.yaml";

Volg hierna de instructies op bij Help:Extension:Translate/Group management om het script processMessageChanges.php uit te voeren.

We loggen in, zorg dat de gebruiker het recht "translate-manage" heeft gekregen en ga naar [[Special:ManageMessageGroups]].

U kunt dit zien:

No valid namespace defined, got NS_MYBB.
Backtrace: <...>

Lees dan goed de documentatie, mogelijk moet u de volgende regel toevoegen aan LocalSettings.php voor het registreren in MediaWiki van de nieuwe namespace:

wfAddNamespace( 1246, 'MyBB' );

In dit voorbeeld wordt 1246 gebruikt, maar u kunt elk vrij nummer kiezen voor de namespace. Bij de extensie Translate bevelen we aan om een even getal te kiezen in het bereik 1200-1298.

Als u nu de speciale pagina ManageMessageGroups opnieuw laadt, dan ziet u een regel die aangeeft:

MyBB This message group has not been imported previously.

Klik op de link MyBB. U ziet dan de lijst met berichten in dat bestand. Als u tevreden bent met het resultaat, klik op "Uitvoeren".

Het bestand wordt dan verwerkt en de uitvoer is dan iets als dit:

Imported new version of page MyBB:L\x5b'boardstats'\x5d/en.
Imported new version of page MyBB:L\x5b'new posts'\x5d/en.
Imported new version of page MyBB:L\x5b'no new posts'\x5d/en.
...
Cache rebuild.
All done!

Bij een erg groot bestand, voer dan eerst php Translate/scripts/sync-group.php --group=out-mybb --lang=en uit, de webinterface kan maar een beperkt aantal berichten importeren vanwege de PHP time-out limiet; als dat gebeurd dan kunt u onderaan op het scherm met een knop de resterende berichten importeren.

Stap 3: Een bestand toevoegen

We gaan nu een tweede bestand voor MyBB voor vertaling toevoegen. Dat kan op twee manieren:

Benadering 1: Een YAML-bestand toevoegen

Voeg eenvoudig een YAML-bestand toe en sla dat met een nieuwe naam op. Roep dat vanuit LocalSettings.php aan en volg alle bovenstaande stappen. Het bestand ziet er dan ongeveer zo uit:

BASIC:
  id: out-mybb-showthread
  label: MyBB
  description: "[[Translating:MyBB|MyBB]] is a web-based discussion forum software"
  namespace: NS_MYBB
  class: FileBasedMessageGroup

FILES:
  class: FlatPhpFFS
  sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/showthread.lang.php
  targetPattern: mybb/inc/languages/%CODE%/showthread.lang.php
  codeMap:
    en: english
    "no": norwegian

Vanzelfsprekend gebruikt u dan een andere ID voor de nieuwe groep.

Dit is eenvoudig, maar niet praktisch als er honderden vertaalbestanden gekoppeld worden aan een berichtengroep. Gelukkig is de volgende manier wel praktisch.

Benadering 2: TEMPLATE syntaxis

Het idee is om alle gebruikelijke waarden in een sjabloon te zetten. Elke groep kan dan de benodigde waarden uit het sjabloon halen.

In het MyBB voorbeeld, willen we dan index.lang.php, showthread.lang.php en global.lang.php gebruiken in de vertaalbare berichten. Het YAML-bestand wordt dan gewijzigd naar iets als dit:

TEMPLATE:
  BASIC:
    description: "[[Translating:MyBB|MyBB]] is a web-based discussion forum software"
    namespace: NS_MYBB
    class: FileBasedMessageGroup

  FILES:
    class: FlatPhpFFS
    codeMap:
      en: english
      "no": norwegian
---
BASIC:
  id: out-mybb-index
  label: MyBB - index page

FILES:
  sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/index.lang.php
  targetPattern: mybb/inc/languages/%CODE%/index.lang.php
---
BASIC:
  id: out-mybb-showthread
  label: MyBB - show thread

FILES:
  sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/showthread.lang.php
  targetPattern: mybb/inc/languages/%CODE%/showthread.lang.php
---
BASIC:
  id: out-mybb-global
  label: MyBB - global messages

FILES:
  sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/global.lang.php
  targetPattern: mybb/inc/languages/%CODE%/global.lang.php
NB: elke groep moet gescheiden worden met een regel met drie streepjes --- zonder spaties op die regel! Anders wordt het bestand niet goed verwerkt.

De codeMap moet natuurlijk maar een keer gedefinieerd worden; toevoegen of verwijderen van bestanden is net zo gemakkelijk als het toevoegen of verwijderen in van een sectie in het bovenstaande bestand.

Ga nu naar de "Speciale pagina's" voor het beheer van de berichtengroepen, daar staan drie items:

MyBB global messages: This message group has not been imported previously.
MyBB index page: This message group has not been imported previously.
MyBB show thread: This message group has not been imported previously.

Als er veel bestanden aan uw project toegevoegd moeten worden, dan is het handig om een script te schrijven dat uw YAML-bestand aanmaakt. Een voorbeeld staat hierin: svn:trunk/translatewiki/StatusNet/genStatusNet-plugins.php.

Stap 4: Groep samenvoegen

Toevoegen van een samengevoegde groep en het definiëren van de berichtenbestanden als subgroepen ervan heeft twee voordelen:

  • Minder werk voor vertalers om berichtengroepen te selecteren, dat scheelt vooral bij onderhoud. Vertalers kunnen dan de samengestelde groep voor de vertaling bijwerken.
  • Statistieken kunnen op dat niveau worden gemaakt, dan kan dus het hele project zijn.

Om zo'n groep aan te maken moet er het volgende achter de sectie TEMPLATE worden gezet en voor de definitie van de subgroepen van die groep:

---
BASIC:
  id: out-mybb-0-all # The id should sort before all the subgroups it has
  label: MyBB
  meta: yes
  class: AggregateMessageGroup # Not taken from template

GROUPS:
  - out-mybb-* # We could specify them one by one, but wildcard is easier

Dit werkt een stuk beter, maar er ontbreekt nog een stap. Als u naar Special:Translate gaat, dan ziet u de bovenliggende groep MyBB (en het werkt!), maar worden de subgroepen helaas als afzonderlijke groepen getoond.

Om dat te verbeteren moeten we de volgende regel toevoegen aan het bestand LocalSettings.php:

$wgTranslateGroupStructure['/^out-mybb/'] = array( 'mybb' );
 
Een dergelijk groep uitgeklapt (bekijk het ingeklapt)

Alle groepen die overeenkomen met het opgegeven patroon worden geselecteerd. De eerste groep wordt getoond en de andere verborgen, er worden maar twee niveaus ondersteund, het aantal niveaus kan in de praktijk wel hoger zijn, in een samengestelde groep kan een samengestelde groep zijn opgenomen.

Als u nu op [[Special:Translate]] kijkt, zie u alleen de bovenliggende groep MyBB in de lijst. Er staat ook een link om de 3 subgroepen te tonen; als u daarop klikt dan ziet u de namen van die subgroepen.

Kijk in de handleiding naar de sectie TAGS en andere informatie die u in dit document mist.

Stap 5: Opschonen

YAML-bestanden van projecten worden ondersteund door translatewiki.net worden geplaatst (committed) in de translatewiki repository op Git.

In translatewiki.net staan de regels van LocalSettings.php in TranslateSettings.php. Sandboxwiki op translatewiki.net heeft geen bestand TranslateSettings.php, dat is waarom we alles toevoegen in LocalSettings.php.