Jump to content

Help:Extension:Translate/Group configuration example/da

From mediawiki.org
This page is a translated version of the page Help:Extension:Translate/Group configuration example and the translation is 62% complete.
Outdated translations are marked like this.

Denne vejledning er for udviklere og avancerede oversættelses-administratorer. Vejledningen forklarer hvordan nye konfigurationsfiler oprettes til software brugergrænseflade meddelelses-oversættelse, med detaljeret beskrivelse af de tilhørende praktiske aspekter. Den skal bruges sammen med gruppe-konfiguration referencemanualen og udviklerne af Oversæt -udvidelsen vil med glæde hjælpe dig med eventuelle spørgsmål som du har, efter at have arbejdet dig igennem denne vejledning.

Forudsætninger

Denne vejledning er lavet på grundlag af Oversæt -udvidelsen version r97948 (2011-09-23).

Denne vejledning beskriver processen med at aktivere oversættelse af visse dele af MyBB-projektet. Du kan følge lignende trin til at tilføje andre projekter/filer til oversættelse. Nogle ting er specifikke for translatewiki.net og du bør naturligvis bruge, hvad der er relevant i dit tilfælde i stedet for at følge trinnene i denne vejledning blindt.

Trin 1: Tjek kildekode

Lad os se MyBB kildekoden ved hjælp af $wgTranslateGroupRoot som arbejdsmappe, som er /home/betawiki/projects/ i dette eksempel.

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

Afhængig af din konfiguration, er du nødt til at køre dette som rod eller en anden bruger, før du tilføjer projektfiler eller konfigurationsfiler. På translatewiki.net, er brugeren "betawiki", så ovenstående kommando udføres faktisk som:

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

Nu skal vi finde de filer, der indeholder beskeder. De er i mybb/inc/languages/ underbiblioteket, og du kan finde de engelske kildemeddelelser i english/-undermappen.

Så lad os starte med mybb/inc/languages/english/index.lang.php, den første sprog-fil i vores projekt.

Trin 2: Filformat-support

I vores MediaWiki installation bibliotek, under FFS.php og Translate/ffs/ [1] kan vi se klasser for filformater, som anvendes til at kortlægge beskedgrupper til sprog-filer af hvert projekt. Du er nødt til at kigge godt efter for at se, hvad slags formater der understøttes. Så vi beslutter at forsøge at benytte FlatPhpFFS-klasse først og se, hvor godt det virker med vores PHP-fil.

Så vi har en fil at kortlægge, og vi har valgt FFS klassen til det. Nu skal vi til at skrive en gruppe-konfiguration. Det er en YAML fil.

I indekset kan du finde et link til gruppe-konfiguration . Lad os starte med den minimale fil givet som eksempel i BASIC afsnittet.

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

Vi kan gå videre og bare udskifte eksempelteksten med vores egne værdier.

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

Beskrivelsen accepterer al wikitekst-syntaks. Et smart trick vist i det oprindelige eksempel er at du kan gøre den klar til oversættelse ved brug af {{int:message-key}}. Men så er du nødt til at definere standardteksten på siden [[MediaWiki:Message-key]]. Bemærk, at navnerums ID tilføjes med sin konstant, se hvordan du bruger brugerdefinerede navnerum.

Vi har brug for en ting mere: FILES-afsnittet. Igen startende fra eksemplet i dokumentationen:

FILES:
  format: FlatPhp
  sourcePattern: %GROUPROOT%/inc/languages/messages_%CODE%.properties
  targetPattern: commonist/messages_%CODE%.properties

Hmm, %CODE% er sprogkoden, ligesom en som standard. Foreløbig ønsker vi ikke at ændre mappestrukturen, der anvendes af MyBB. I stedet kan vi bruge en funktion til dette formål: code map, som giver os mulighed for at kortlægge sprogkoder fra hvert sprog til identifikatorerne, der anvendes i vores projekt.

Så vi ender op med:

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
Pas på, du skal bruge anførselstegn omkring sprogkode no, fordi nogle YAML-oversættere tolker det som boolean.

Dybest set siger dette, at for kode en, vil ovenstående %CODE% være engelsk, som er mappen til de engelske beskedfiler. Nøglen targetPattern er normalt den samme som sourcePattern, men uden %GROUPROOT% præfiks. The key targetPattern is usually the same as sourcePattern, but without the %GROUPROOT% prefix.

Godt. Lad os nu gemme denne fil et sted, for eksempel i den samme mappe, hvor LocalSettings.php er gemt, med navn MyBB.yaml. Hele filen er:

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

Så må vi fortælle vores udvidelse til at læse denne fil. Tilføj følgende linje til LocalSettings.php:

$wgTranslateGroupFiles[] = "MyBB.yaml";

Efter at have gjort dette, følg instruktionerne på Help:Extension:Translate/Group management for at køre processMessageChanges.php scriptet.

Så lad os logge ind og vær sikker på at brugeren har "translate-manage" retttighed konfigureret ordentligt, og gå til [[Special:ManageMessageGroups]].

Du kan se dette:

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

I dette tilfælde, ved at læse dokumentation omhyggeligt, kan du have identificeret behovet for at tilføje følgende linje til LocalSettings.php for at registrere det nye navnerum med MediaWiki:

wfAddNamespace( 1246, 'MyBB' );

I dette eksempel bruges 1246, men du kan vælge ethvert frit navnerums nummer, du har brug for. For Translate-udvidelsen anbefaler vi dig at bruge de lige navnerums-numre 1200-1298.

Hvis du nu genindlæse ManageMessageGroups specialsiden, bør du se en linje, der siger:

MyBB This message group has not been imported previously.

Klik på MyBB link. Efter dette vil du se en liste over meddelelser, der er i den fil. Hvis du er tilfreds med resultaterne, klik på "Udfør".

Når du klikker på "Udfør" behandles filen og du vil se et output der ligner dette:

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!

Hvis filen er meget stor, skal du køre php Translate/scripts/sync-group.php --group=out-mybb --lang=en først, fordi webgrænsefladen kun kan importere et begrænset antal beskeder på én gang, pga. PHP timeout grænsen. Hvis du støder på denne grænse, kan du klikke på en knap nederst på siden for at importere de resterende beskeder.

Trin 3: Tilføje en anden fil

Lad os nu tilføje en anden fil for MyBB til oversættelse. Der er to måder at gøre dette:

Tilgang 1: Tilføje en ny YAML-fil

Du skal blot tilføje en ny YAML fil og gemme den med et nyt navn. Så kalde det fra LocalSettings.php og følge alle de ovenstående trin. Filen vil se nogenlunde ud som her:

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

Som indlysende i ovenstående eksempel, skal du bruge et andet ID til denne nye gruppe.

Så let kan denne tilgang ikke skaleres til hundredvis af forskellige oversættelsesenheder (dvs. filer knyttet til deres meddelelsesgruppe). På et tidspunkt skal du opdatere en vis værdi, og at gøre det for alle disse filer er ikke sjovt. Heldigvis er der en anden måde, som vist nedenfor.

Tilgang 2: TEMPLATE-syntaks

Ideen er at vi trækker fælles værdier ind i en skabelon. Så vil hver gruppe tage manglende værdier fra skabelonen, og det ikke er nødvendigt at gentage dem for hver gruppe.

Lad os komme tilbage til MyBB eksemplet. Lad os sige, at du ønsker at inkludere index.lang.php, showthread.lang.php og global.lang.php i oversættesmeddelelserne. YAML filen skal opdateres sådan her:

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
Notice that each group must be separated with a line containing three dashes --- without initial and trailing spaces! Otherwise the YAML file will not be parsed correctly.

Som indlysende i ovenstående eksempel defineres codeMap kun én gang. Tilføjelse og fjernelse af filer er lige så let som at tilføje eller fjerne et afsnit i ovennævnte fil.

Hvis du nu går til ManageMessageGroups specialsiden, vil du se 3 emner som dette:

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.

If there are a lot of files to be included in your project, it may be a good idea to write a script that generated your YAML file for you. Et eksempel kan findes på svn:trunk/translatewiki/StatusNet/genStatusNet-plugins.php.

Trin 4: Samlet gruppe

Tilføjelse af en samlet gruppe og definition af beskedfilerne som dens undergrupper, har to fordele:

  • Mindre arbejde for oversættere ved valg af forskellige meddelelsesgrupper, især for vedligeholdelsesarbejde. Oversættere kan blot åbne den samlede gruppe og oversætte eller opdatere alt der skal opdateres eller oversættelse af alle grupper.
  • Statistik kan indberettes på det samlede gruppe niveau, dvs. hele projektet.

For at definere en samlet gruppe, skal du tilføje følgende afsnit lige efter TEMPLATE afsnittet og før definitionen af ​​de enkelte undergrupper:

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

Dette får os temmelig tæt på, men der mangler stadig et skridt. Hvis du nu går til Special:Translate vil du se MyBB forældegruppen (og det faktisk virker!), men også de undergrupper, der er anført som separate grupper.

Det er sådan det ordnes. Tilføj den følgende linje til din LocalSettings.php:

$wgTranslateGroupStructure['/^out-mybb/'] = array( 'mybb' );
En udfoldet samlet gruppe (se den sammenfoldet)

Dette tager alle grupper, hvis id matcher det givne mønster, viser den første gruppe, og skjuler alt andet under den første gruppe. Ikke kønt, men det virker. Denne konstruktion understøtter kun to lag, selv om samlede grupper kan være en del af samlede grupper.

Hvis du nu går til [[Special:Translate]] vil du kun se den forældregruppen MyBB opført. Derudover vil du se et link "Vis 3 undergrupper" og ved at klikke der, vises navnene på undergrupperne.

Tjek manualen for TAGS og andre afsnit vi ikke har gennemgået i dette dokument.

Trin 5: Oprydning

YAML filer fra projekter understøttet af translatewiki.net er forpligtet til translatewiki lagringspladsen på Git.

I translatewiki.net er LocalSettings.php linjer faktisk i TranslateSettings.php. Sandboxwiki på translatewiki.net har ikke en TranslateSetting.php fil, hvorfor vi tilføjede alt i LocalSettings.php. Sandboxwiki at translatewiki.net does not have a TranslateSettings.php file, which is why we added everything in LocalSettings.php.