Divvun som mangespråklig site

Oversikt

Divvun har delt den opprinnelige siten sin i to byggbare deler, dvs. to forrest siter.

  • $GTHOME/xtdoc/sd
  • $GTHOME/xtdoc/techdoc

Dette ble gjort fordi deler av siten skulle oversettes til sju språk, mens store deler var og skulle være enspråklig.

Begge sitene blir bygget med skriptet $GTHOME/gt/script/static-divvun.py.

Kommandoen
static-divvun.py --sitehome $GTHOME/xtdoc/sd --destination sd@divvun.no:Sites/ fi no se smj sma sv en
lager en site med sju forskjellige metaspråk og sørger for å koble filer med likt metaspråk og innholdsspråk sammen.

Kommandoen
static-divvun.py --sitehome $GTHOME/xtdoc/techdoc --destination sd@divvun.no:Sites/ en
lager en site med engelsk som metaspråk.

Disse to sitene ser ut som de er samme forrest site ved at de har samme layout og ved å samstemme tabs.xml-filene for de to sitene.

Fremgangsmåte

Ny site-mappe

Vi begynte med å lage en ny mappe, techdoc, som lå parallelt med sd. Deretter kjørte vi forrest seed i den mappa for å lage rammeverket for en ny forrest site. Deretter ble alt innholdet som forrest site laget i techdoc/src/documentation/content/xdocs/ slettet (rm -rf techdoc/src/documentation/content/xdocs/*)

Felles styling og plugins

For å få samme styling og oppsett på sd og techdoc ble følgende mapper

  • plugins
  • src/documentation/classes
  • src/documentation/resources
  • src/documentation/skins
  • src/documentation/translations
  • src/documentation/content/xdocs/images

og disse filene:

  • forrest.properties
  • forrest.properties.xml
  • src/documentation/sitemap.xmap

slettet fra techdoc. Deretter ble disse symlinket inn til techdoc fra sd.

Flytte mapper fra sd til techdoc

Det ble bestemt at alt som var "techdoc" skulle flyttes til techdoc-siten. Det som ble flyttet var disse mappene:

doc
symlink til $GTHOME/techdoc
ped
symlink til $GTHOME/ped/doc
ttsdoc
symlink til $GTHOME/tts/doc/
wordsdoc
symlink til $GTHOME/words/doc

Flytte innhold i site.xml og tabs.xml fra sd til techdoc

Neste steg var å lage en tom fil i $GTHOME/xtdoc/techdoc/src/documentation/content/xdocs/site.xml og klippe ut alle adresser fra $GTHOME/xtdoc/sd/src/documentation/content/xdocs/site.xml som hadde med mappene ovenfor å gjøre og klippe dem inn i den nye fila.

Det samme ble gjort for $GTHOME/xtdoc/techdoc/src/documentation/content/xdocs/tabs.xml.

Støtte for oversettelser i forrest

forrest støtter (i prinsippet) oversettelse av «metaspråk», dvs. menyen til venstre, tab-rekka og annet «systeminnhold» og av «artikler» (forrest-xml-filer og .jspwiki-filer).

Oversettelse av «artikler»

En artikkel kan være enspråklig. I forrest markerer man dette ved å bruke bare .xml som suffiks.

Om man vil ha en artikkel som skifter språk etter som man skifter metaspråk bruker man suffikset .$LANG.xml.

Eksempel

En artikkel finnes på alle språkene vi støtter. De har disse filnavnene:

  • abba.en.xml
  • abba.fi.xml
  • abba.no.xml
  • abba.se.xml
  • abba.sma.xml
  • abba.smj.xml
  • abba.sv.xml

Vi har sørget for at forrest vet om dem ved å legge inn en peker til den i site.xml:
<abba description="Abba rules!" href="abba.html" label="Abba, the swedish pop band"/>.

Alt ettersom hvilket språk som er valgt, vil den artikkelen som hører til det språket vises.

Oversettelse av artikler i praksis

Dersom man av en eller grunn ikke vil oversette en artikkel til alle metaspråkene man bygger siten for man likevel sørge for at man har en «fil» for hvert språk.

Om vi har en artikkel som er på engelsk og nordsamisk, f.eks. julenissen.en.xml og julenissen.se.xml og vi ikke har tenkt å oversette den til de andre språkene vi støtter så lager vi en symlink til en av disse artiklene for de andre språkene. Resultatet er at vi har de to filene julenissen.en.xml og julenissen.se.xml og symlinkene julenissen.fi.xml, julenissen.nb.xml, julenissen.sma.xml, julenissen.smj.xml og julenissen.sv.xml som peker til en av de to eksisterende filene. Om man ikke gjør dette vil man få en «broken link»-melding fra forrest.

Oversettelse av metaspråk

Filene nedenfor har blitt oversatt for å støtte fi no se smj sma sv en.

$GTHOME/sd/src/documentation/translations/tabs_$LANG.xml
oversettelser for $GTHOME/sd/src/documentation/content/xdocs/tabs.xml

Hver «key» i tabs_$LANG.xml tilsvarer en «id» i tabs.xml (og alle tabs-frag.xml-filene vi har). Man må manuelt legge alle «id» man vil ha oversettelse for inn i tabs_$LANG.xml-filene.

$GTHOME/sd/src/documentation/translations/menu_$LANG.xml
oversettelser for $GTHOME/sd/src/documentation/content/xdocs/site.xml

Hver «key» i menu_$LANG.xml tilsvarer en «label» i site.xml (og alle site-frag.xml-filene vi har). Man må manuelt legge alle «label» man vil ha oversettelse for inn i menu_$LANG.xml-filene.

$GTHOME/sd/src/documentation/translations/ContractsMessages_$LANG.xml
oversettelser for "systemmeldinger" i forrest

tabs-id-er, site-label-tekst og systemmeldinger uten oversettelse i disse filene blir brukte slik som de står i tabs.xml, site.xml og forrest-koden.

Bygging av en oversatt site

forrest har som nevnt, i prinsippet, støtte for full i18n. I praksis behøver den litt krykker når man bygger statiske sider, i form av skriptet static-divvun.py. (Dersom man kjører dynamisk med forrest run trengs det ingen krykker, men da bør man slå på støtte for i18n i forrest.properties midlertidig så lenge man kjører forrest run.)

Dette skriptet sørger for at siten blir bygd på alle språk, at linker til de forskjellige språkene blir lagt inn og at alle filene blir kopiert til korrekt på plass på den offentlige siten.