Help:Extension:Translate/Voorbeeld groepsinstellingen
Vertalers (Hoofdpagina help )
- Hoe te vertalen
- Beste manieren
- Statistieken en rapportage
- Kwaliteitscontrole
- Berichtengroep statussen
- Offline vertalen
- Woordenlijst
Vertalingenbeheerders
- Een pagina voorbereiden voor vertaling
- Paginavertaling beheren
- Vertaling van ongestructureerde elementen
- Groepenbeheer
- Vertaalbare pagina verplaatsen
- Vertalingen uit CSV importeren
- Met berichtenbundels werken
Systeembeheerders en ontwikkelaars
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 Translate/nl willen u graag helpen bij vragen die u heeft bij het werken met deze handleiding.
Vereisten
- MediaWiki installeren
- Installeer de extensie Translate en
- Configureer deze.
Deze tutorial is gebaseerd op de extensie Translate/nl 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
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: Formaat
In onze MediaWiki submap installation, in src/FileFormatSupport/FileFormatFactory.php 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 het formaat FlatPhp
te gebruiken om te kijken hoe dat werkt met ons PHP-bestand.
Dus we hebben een bestand te koppelen en daarvoor hebben we het class formaat 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:
format: FlatPhp
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:
format: FlatPhp
sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/index.lang.php
targetPattern: mybb/inc/languages/%CODE%/index.lang.php
codeMap:
en: english
"no": norwegian
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:
format: FlatPhp
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/nl 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:
format: FlatPhp
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
, 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:
format: FlatPhp
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
---
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' );
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
.