Sandbox-tema på dansk

WordPress er et særdeles fleksibelt blog-værktøj. Det har indbygget mulighed for udvidelser, så du kan få WordPress til at gøre næsten præcis som du vil, og der er også indbygget mulighed for at få din blog til at se ud præcis som du selv vil.

Til at styre udseendet bruges såkaldte temaer, hvoraf et par stykker er inkluderet i den almindelige WordPress-installationsfil. Der findes rigtig mange flotte temaer derude, og mange af dem er også frit tilgængelige for alle der måtte have lyst, mens der selvfølgelig også findes temaer som der skal betales for.

Et af de mere spændende frit tilgængelige temaer er Sandbox. Folkene bag beskriver det som “smukt på indersiden”, og med det mener de, at det bl.a. understøtter de gængse standarder og mikroformater som f.eks. hCard og XOXO. Dertil er det udviklet til nemt at blive “skinnet”, altså få lagt et præsentationslag i form af CSS ovenpå.

Det sidste er så også nødvendigt — i standardudgaven er Sandbox ikke specielt pænt at se på, men der er nu blevet udskrevet en design-konkurrence, hvor man har mulighed for at vinde kolde kontanter for at designe et smukt layout! Der er derfor grund til at tro, at Sandbox får større udbredelse inden alt for længe.

Præcis som med næsten alle andre temaer er der dog en lille hage ved Sandbox: Det er på engelsk. Men som med resten af WordPress er det forholdsvist ligetil at oversætte det, og da Sandbox nu er på vej mod version 1.0 (i skrivende stund er den på 0.9.2), er nu nok et godt tidspunkt at slå til på, så det har jeg gjort — og vil nu vise hvordan jeg gjorde det.

WordPress’ oversættelsessystem bygger på brugen af GNU gettext, som er en samling værktøjer til oversættelse og brug af oversatte tekster. GNU gettext er udviklet til Linux, men kan bruges på stort set alle platforme, og kan installeres på Ubuntu med kommandoen sudo apt-get install gettext.

Trin 1: Generering af tekster til oversættelse

Det første der skal gøres ved nyoversættelse af et tema er generering af en brugbar liste over de tekster der skal oversættes. I WordPress bruges funktionerne __() og _e() til tekster der kan oversættes, og følgende vil derfor generere en såkaldt .pot-fil, sandbox.pot, med de nødvendige tekster:

$ xgettext --foreign-user -k__ -k_e -d sandbox -n *.php -o sandbox.pot

Kommandoen skal udføres i selve Sandbox-kataloget, hvor PHP-filerne ligger. Læg i øvrigt mærke til brugen af -d sandbox, som er angivelse af et såkaldt tekstdomæne for oversættelserne — det er nødvendigt for at få oversat de rigtige tekster.

Det er desuden nødvendigt med en manuel redigering af den generede fil, idet tegnsæt-angivelsen i begyndelsen af filen skal sættes til UTF-8:

"Content-Type: text/plain; charset=UTF-8\n"

Trin 2: Generering af dansk fil

Næste skridt er dannelsen af den danske sprogfil, da_DK.po, med udgangspunkt i den sprogneutrale sandbox.pot:

$ msginit -l da_DK -i sandbox.pot -o da_DK.po

Trin 3: Oversættelse

Til brug ved selve oversættelsen af teksterne i filen da_DK.po findes der en række værktøjer til de forskellige platforme, f.eks. KBabel og poedit (dog er det ikke lykkedes for mig at finde et godt værktøj der virker på Intel-Mac). I en nødsituation kan man dog også bruge en almindelig editor, men så skal man holde tungen lige i munden.

Under oversættelsen skal man være specielt opmærksom på brugen af variable, angivet med “%”, som typisk bruges til oplysninger der kommer fra WordPress-databasen. Det kan f.eks. være antallet af kommentarer i teksten "<span>%d</span> kommentarer".

Trin 4: Generering af .mo-fil

Når teksterne er oversat, er det nødvendigt at generere en såkaldt .mo-fil, som WordPress kan bruge — den kan ikke bruge den rå .po-fil direkte:

$ msgfmt -o da_DK.mo da_DK.po

Trin 5: Brug af .mo-fil

Filen med de oversatte tekster i det rigtige format, da_DK.mo, skal nu placeres i samme katalog som resten af temaets filer, og så skulle det bare spille!

For nogle temaer kan det dog være nødvendigt sidst i filen functions.php at tilføje et WordPress-kald der henter de oversatte tekster ind — det er dog ikke nødvendigt med Sandbox, som allerede har det nødvendige kald:

<?php load_theme_textdomain('tekstdomæne'); ?>

Ekstra: Opdatering ved ny version

Hvis der på et senere tidspunkt udkommer en ny version af temaet, kan det være nødvendigt at oversætte igen — heldigvis behøver man dog ikke begynde helt forfra.

Først udføres ovenstående trin 1 igen med det nye tema, og derefter opdateres den gamle udgave af da_DK.po med nedenstående kommando i stedet for trin 2:

$ msgmerge -N -U da_DK.po sandbox.pot

Herefter fortsættes med trin 3 — hvor det nu kun er de nye tekster der mangler at blive oversat — og resten af vejledningen.

God fornøjelse

Hvis du er interesseret i at bruge Sandbox-temaet kan du downloade den færdige da_DK.mo, og hvis du skulle have lyst til at oversætte til et andet sprog kan du downloade sandbox.pot. De passer begge til version 0.9.2 af Sandbox-temaet.

Ellers er det nu din tur — find et lækkert tema og kom igang! Og husk at fortælle os om det her på wordpress.dk, så vi kan skrive temaet på listen med danske oversættelser.

Tak til Anders Dahnielson, som med sit eget indlæg om oversættelse af Sandbox til svensk illustrerede processen på fornemste vis.

12 tanker om "Sandbox-tema på dansk"

  1. René

    Damn, det var sgu da en jomfrurejse, der ville ud over rampen! Fantastisk endelig at have Sandbox på dansk og en gennemgang af, hvordan I nørder oversætter 🙂

    Svar
  2. Thomas Blomberg

    Til almindelige mennesker kan der anbefales PoEdit http://www.poedit.net/

    Jo flere oversættere jo bedre 😀

    Ps. René, hvad med at lave en sektion hvor man kan indsende oversættelser. Jeg har selv en håndfuld liggende og der er ikke meget response når man sender jer en mail 🙂

    Som sagt jo flere jo bedre, vel?

    Svar
  3. hanne

    Mange tak for indlægget.

    Sandbox lyder som svaret på mine drømme: Et tema med styr på alle funktionerne og let adgang til at lege med saks, tape og farvelade. Den tror jeg, jeg står på – omend jeg ikke lige ved om jeg er konkurrenceklar.

    Opskriften på oversættelser er også interessant: Gælder samme procedure for plugins?

    Svar
  4. Morten Forfatter

    Hanne,

    Ja, princippet er helt det samme for plugins, dog gælder den sidste del vedrørende load_theme_textdomain('tekstdomæne') ikke, der skal man — ikke overraskende — i stedet bruge load_plugin_textdomain('tekstdomæne').

    Svar
  5. Nicolai

    Velkommen på forsiden Morten!

    God, væsentlig og ikke mindst oplysende artikel som du her har fået skrevet. Godt kneblet.

    Jeg spekulerer på, om vi burde lave en særskilt artikel med dine afsnit om selve oversættelsen og give den en tutorial-agtig overskrift?

    Svar
  6. Morten Forfatter

    Nicolai,

    Jeg takker. 🙂

    Det syntes jeg lyder som en god idé, man kunne evt. koge den ekstra godt ned og lægge den som en del af siden med oversatte temaer (og udvidelser)?

    Svar
  7. René

    @Thomas: Du ligger i min indbakke sammen med 27 andre action-e-mails (heraf 11 vedrørende WordPress). Hvis jeg havde haft tiden til det, havde jeg selvsagt svaret og gjort noget ved det for længst. Har du en god idé til, hvordan en sådan automatiseret-send-oversættelser-ind-funktion kunne virke? Jeg kan ikke lige gennemskue det umiddelbart.

    Jeg har hele tiden forsestillet mig, at en oversætter selv ville blogge om det og hoste det selv. Det ville give oversætteren lidt fortjent ekstra-trafik. Derefter kan oversætteren evt. sende mig en e-mail (old school udgaven), der fortæller om indlægget, så jeg på to-tre minutter kan lave et par links og eventuelt et indlæg. En anden mulighed (den altid effektive døgenigt-administrator-til-offentlig-skue-måden) er at skrive det i forumet, hvor flere personer med adgang til at lave links og indlæg residerer. Hvis jeg kender Mark, Nicolai og Lars ret, ville en af dem have lavet de nødvendige links i løbet af en times tid eller to. Det er effektive drenge!

    Efter specialeafslutning og ferie er mine prioriter siden i mandags mit nye job, mit kommende job og afslutningen af mit gamle job. Derefter kommer oversættelse af WP 2.0.11, WP 2.2.1, WPMU og bbPress 0.8.1 samt at få lavet en side om bbPress. Nå ja, og hvis min mor læser med, må jeg vel hellere nævne hendes 60-års fødselsdag 😉

    Men undskyld jeg ikke har svaret dig, det er sandt for dyden dårlig stil. Jeg kan dog fortælle, at der er nogle stykker der har ventet væsentligt længere end dig, så det bliver ikke inden for de to næste uger, jeg kigger på det. Måske heller ikke inden for den næste måned. Sorry.

    @Nicolai & Morten: Jeg tænkte det samme, men vi skal på et tidspunkt have fundet ud af, hvad vi gør med dokumentation. Jeg er ikke sikker på, at den nuværende løsning med at bruge .org-wikien er den bedste. Knæk jeres hjerner og tænk over bedste måde at arrangere dokumentationen på.

    Svar
  8. Pingback: microformats.dk » Vi hejser flaget

  9. Pingback: fiskeben.dk » Min første oversættelse

  10. Pingback: Hemingway & Sandbox | Prskov.dk

  11. Pingback: Forskellige „sitebars” | Præsentationsportfolio for Thomas Riis | Multimediedesigner | Webdesign

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *