poedit og oversættelse af sprogfiler af Georg S. Adamsen WordPress.Blogos.dk 2009 http://kortlink.dk/wordpressblogosdk/6g38
1 af 11 14-04-2009 14:55 Jeg får af og til spørgsmål om, hvordan man bruger poedit, og hvordan man bærer sig ad, når poedit melder om fejl. Her er derfor en lille introduktion. Programmet poedit og nogle grundlæggende begreber Programmet poedit (der kan hentes på poedit.net) er beregnet til at redigere po-filer og danne mo-filer. PO står for 'portable object'. Det betyder, at de kan læses uafhængig af platform, f.eks. Linux eller Windows. MO står for 'machine object'. De er beregnet til at indlæses og bruges direkte i f.eks. WordPress. En po-fil består af et hoved med forskellige oplysninger, som man i poedit indtaster i Præferencer (f.eks. oversætterens navn og e-mail) og i Indstillinger (som jeg skal vende tilbage til). I Præferencer kan man under Redigeringsværktøj også ændre skrifttype og -størrelse Ellers er det primære, at man oversætter strenge. Man har en streng i dobbelte anførselstegn, som poedit som standard vist ikke viser. I al fald kan det slås til og fra under Vis-menuen. Disse anførselstegn er grunden til, at poedit indsætter en "\" foran et anførselstegn (i en almindelig editor skal man selv indsætte anførselstegnet). Escapening En samling af disse originaltekster og oversættelserne kaldes et katalog. Derfor er der en menu for "Katalog". WordPress eller et andet php-program slår op i kataloget for at finde den rigtige oversættelse af en streng. Programmøren skal derfor også have fortalt WordPress, hvilken fil der skal slås op i. Af og til sker det ikke. Det kan kræve ændringer i kildekoden. poedit (eller et andet program) finder alle de strenge, der kan oversættes, fordi udvikleren har brugt forskellige nøgleord i kildekoden. Dem kan man i øvrigt angive i poedit. Hvis man ikke angiver dem, kan poedit ikke opdatere fra kildekoden, for den vil ikke vide, hvad der skal oversættes.
2 af 11 14-04-2009 14:55 Nøgleord i poedit Det er så bare at gå i gang med at oversætte streng for streng. Selv om det kan være lettere sagt end gjort. Dels kan der være tale om fagudtryk, dels kan det være svært at gennemskue, i hvilken sammenhæng strengene bruges. Også selv hvis man kan kigge i kildekoden, som jeg straks skal vende tilbage til. De "skjulte" tegn (whitespace) Nogle udviklere og designere skriver strenge, hvor en streng, der skal oversættes, ender med et mellemrum. Det er svært at se. Men man kan slå Vis anførselstegn til på Vis-menuen. Så er det meget nemmere at se. Kommer man til at slette en af dem, sætter poedit den ind igen! Vis anførselstegn poedit og kildekode I Indstillinger man kan indtaste indstillinger, som gemmes og bruges med hver enkelt po-fil.
3 af 11 14-04-2009 14:55 poedit-indstillinger Det er vigtigt, at tegnsæt angives som ovenfor, men en po-fil kan vist godt fungere uden de øvrige værdier. Men skal man være sikker på, at man får alle strenge til oversættelse vist, så skal man særligt sikre sig, at den sidste linje, Flertalsformer, er korrekt udfyldt. Indstilling af stier Hvis man indtaster den korrekte sti - og den skal stå både som basissti og under Stier - så kan man opdatere po-filen fra kildekoden. Man sikrer sig, at man oversætter den seneste udgave af kildekoden. Det betyder også, at poedit registrerer placeringen af de strenge, der skal oversættes. Så kan man få poedit til at vise dem. Som det ses i illustrationen nedenfor, så højreklikker man på den streng, der skal oversættes, i listen og vælger en af de linjer, der står under Referencer. Så får man et vindue med kildefilen. Da man kun får et udsnit vist, kan man trykke på det ikon, jeg har fremhævet med gult, og få en vist hele kildekoden. Jeg bruger Notepad++, som er en god editor. Den kan bl.a. farve php-kode, så det er lettere at læse kildekoden. Man kan godt sætte poedit til at åbne direkte i ens editor (i Præferencer), men så er det ikke så let at skifte mellem de forskellige steder, en given streng findes i kildekoden.
4 af 11 14-04-2009 14:55 Vis kildekode i poedit Brug af tidligere oversættelser
5 af 11 14-04-2009 14:55 poedit kan faktisk lave en database med de oversættelser, man har, og oversætte ved hjælp af dem, man allerede har oversat. Man skal dog passe på, for dels kan der jo være problemer med en given oversættelse, dels kan det være, en oversættelse er rigtig, men blot ikke i den pågældende sammenhæng. Det er et udmærket redskab, der kan hjælpe en til at oversætte med større konsistens. Af og til har en computer en bedre hukommelse, end vi har. Min erfaring er dog, at en del oversættelsesforslag er ubrugelige. Men downloader man WordPress' po-fil og inkluderer i oversættelseshukommelsen, så vil databasen også tage den officielle oversættelse med i betragtning. Brug af eksisterende oversættelser Som det ses, er der nogle, der dur, og nogle, der ikke gør det. Dem, der ikke gør det, må jo være valgt, fordi der er fælles ord i de to strenge i originalteksterne. Men tit kan der være mere end en oversættelse i ens database. Så vælger poedit en af dem, men man har adgang til de andre via en lokalmenu (via højreklik).
6 af 11 14-04-2009 14:55 Flere forslag til oversættelse I dette eksempel er der både "Redigér" og "Rediger". Det første er min foretrukne, det andet den officielle WordPress-oversættelse. Ingen vil være i tvivl med dette ord, men det kan være rart at skelne mellem "Arkivér" og "Arkiver". Sådan er der så meget. Redigering eller opdatering af en po-fil Hvis der allerede er en po-fil, kan man åbne den og redigere den. Typisk vil man have brug for at opdatere en eksisterende po-fil. Én mulighed er at opdatere på grundlag af en såkaldt pot-fil, som udvikleren af temaet eller pluginnet har inkluderet i temaet eller pluginnet. En pot-fil er en po-template-fil. po-edit kan lave en skabelon til at oversætte ud fra. Desværre hænder det, at udvikleren glemmer at opdatere po-filen. Sker det, eller vil man gerne kunne se kildekoden, hvor en given streng, der skal oversættes, forekommer, skal man pakke pluginnet eller temaet ud på ens harddisk. Man skal have de rigtige værdier i Indstillingerne. Ikke mindst skal oplysningerne om tegnsæt, stier og nøgleord være angivet rigtigt. Har man problemer med at åbne kildekoden, fordi poedit returnerer en fejlmelding om tegnsæt, kan man prøve at eksperimentere lidt med tegnsæt-indstillingen for kildekoden. Har man opdateret en eksisterende po-fil ud fra en pot-fil eller fra kildekoden, vil man typisk have nogle sorte, nogle brune og nogle grå tekster.
7 af 11 14-04-2009 14:55 Efter opdatering De sorte eller mørkeblå er nye strenge, der slet ikke fandtes i den gamle. De brune er strenge, der er blevet ændrede, og derfor er blevet mere eller mindre unøjagtige. De grå er strenge, der er fuldstændig identiske. De brune er egentlig markeret som Fuzzy. Hvis man ændrer i oversættelsen, fjernes Fuzzy-markeringen. Man kan sætte den igen med Alt-U, hvis man ikke lige kan finde den rigtige oversættelse. Man kan også fjerne den med Alt-U, hvis oversættelsen faktisk er korrekt. Det kan f.eks. ske, hvis der er rettet en trykfejl i originalteksten. Oprettelse af en po-fil Hvis der ikke findes en po-fil, man kan indlæse, eller en pot-fil, man kan bruge, kan man oprette en po-fil selv, hvis man har adgang til kildekoden (hvis udvikleren har brugt de nødvendige nøgleord og programmeringsteknikker). Man pakker kildekoden ud og åbner poedit. Jeg har en skabelon, jeg bruger, når jeg skal begynde fra bunden (den kan downloades her: [download id="59"]). Man skal indtaste Basissti og Stier. Det er selvfølgelig en god idé at gemme filen. Herefter er det "bare" at gå i gang med at oversætte.
8 af 11 14-04-2009 14:55 Oversættelsesarbejdet i praksis Mange strenge kan man oversætte direkte, når man får lidt erfaring. Så kan man tit regne ud, hvor en streng bruges. Af og til må man kigge i kildekoden (se ovenfor). Men det er ikke altid nok, især ikke hvis det handler om layout eller om dato og klokkeslæt. Man kan sikkert gøre det på mange måder, men én måde at gøre det på er at installere have to WordPressinstallationer. Jeg har en kørende med den originale version, mens jeg på den anden anvender den mo-fil, som poedit genererer. Så kan jeg hurtigt sammenligne. Som ved alt andet oversættelsesarbejde kan det være en god idé at se, hvordan andre oversætter. Af og til kan der dog være brug for at afvige. Oversættelse af koder for dato og klokkeslæt Hvis der f.eks. skal angives datoformat, skal kildekoden skrives, så parametrene udgøres af strenge, der kan erstattes med andre strenge. I eksemplet her nedenfor er strengen "l, F js, Y" erstattet af "l \\den\e\nn j. F Y", som bliver til f.eks. "mandag den 13. april 2009". Det kan være noget af en opgave at finde den rigtige formattering af koder for dato og klokkeslæt i oversættelsen. Man skal bruge php's date-parametre. Man skal "escape" (dvs. bruge "\" foran) bogstaver, som kunne være php-parametre, men ikke skal være det. I eksemplet nedenfor er der escapet med én gang for poedit og én gang for php. Men det er ikke altid det samme i andre programmer. To sæt streng
9 af 11 14-04-2009 14:55 Separate strenge for ental og flertal Dansk skelner mellem ental og flertal. Mange plugins (og nogle temaer) bruger kontrolstrukturer (stærkt forsimplet f.eks. således: hvis 1, så...; hvis 2 eller flere, så...). Men man kan også bruge en teknik, hvor po-filen indeholder et sæt af strenge i originalen, som så skal oversættes til et sæt af strenge. Det er helt afgørende, at det er indstillet korrekt i Indstillinger. Indstillinger for ental/flertal Har man indstillet poedit korrekt, og findes der en af de to sidste nøgleord, vil man få et skærmbillede som det følgende.
10 af 11 http://wordpress.blogos.dk/wp-admin/post.php?action=edit&post=53... Eksempel på ental/flertal I de to faner anfører man så oversættelsen for henholdsvis ental og flertal. Faktisk anfører man de strenge, der skal bruges, når der skal anvendes henholdsvis en entalsform og en flertalsform. På dansk bruger vi flertalsformer efter udtryk for 0 (f.eks. "Jeg har ingen bøger") og tal større end 2 ("Jeg har to bøger"). Indstillingen "nplurals=2;" angiver, at vi har to muligheder: en entalsform eller en flertalsform. Indstillingen "n=!n 1;" angiver, at der skal bruges flertalsform, når n er forskellig fra 1, dvs. er 0 eller mindst 2. En hyppig grund til, at der mangler strenge i oversættelsen, er, at værdien for Flertalsformer er indstillet forkert. Kataloghåndtering Man kan oprette en oversigt over ens oversættelsesprojekter. Så kan man hurtigt se, om der er nogle, man ikke er færdige med. Håndtering af oversættelsesfiler Problemer med variabler Det er let at komme til at overse et procent-tegn, men det er ikke smart, fordi det som regel er en variabel. poedit brokker sig højlydt, hvis procent-tegnet er brugt som procent-tegn. Den brokker sig også, hvis procent-tegnet er brugt alene. Det sker i en del temaer. Men selv om poedit brokker sig og siger, at det er en "fatal error", så gemmer den faktisk po-filen. Er den indstillet til automatisk at generere en mo-fil, så gør den også det. Man skal blot tjekke, at oversættelsen har nøjagtig samme format som originalen. "% Comments" skal oversættes til "% kommentarer", selv om poedit brokker sig. Anvendt software 14-04-2009 14:55
11 af 11 http://wordpress.blogos.dk/wp-admin/post.php?action=edit&post=53... Til udarbejdelse af ovenstående har jeg anvendt poedit, Paint Shop Pro (til skærmbilleder, hvor menuer skal være aktiveret), FireShot Pro og selvfølgelig WordPress. Jeg har særligt brugt pluginnerne [intlink id="155" type="post"]scissors[/intlink], [intlink id="83" type="post"]faster Image Insert[/intlink]. Selv lærte jeg en del af at læse John Godleys vejledning: "Translating WordPress Plugins & Themes". Også andre plugin-udviklere har hjulpet med at oplære mig. Denne udgave er skrevet 13. april 2009 og senest redigeret 14. april 2009. Forslag til forbedringer eller spørgsmål, som jeg kan lære af, er meget velkomne! Et link til artiklen eller denne blog (WordPress.Blogos.dk) er selvfølgelig også helt ok. 14-04-2009 14:55