Når man lager temaer så er det mest naturlig å la språket være på engelsk, men nå er det ikke alltid slik at bloggen temaet skal brukes på er engelsk, så derfor er det greit å tilrettelegge temaet for oversettelse.
Helt enkelt gjøres dette ved at i stedet for å skrive all tekst rett ut, så legger man teksten inn i kode av typen
Så for eksempel i stedet for å sette opp meny overskrifter til så blir koden
Categories
Når det gjelder tekst som skrives inne i template kode, så bruker man __('text'). Et enkelt eksempel er koden for redigeringslinken man gjerne ser i poster når man er innlogget (edit_post_link ). Uten støtte for oversettelse kan denne koden ser omtrent slik ut:
For å legge inn støtte må koden omgjøres til:
I template koder med flere tekststrenger, så skal disse separeres med komma, som eksempel kan vi bruke comments_number som viser antall kommentarer til en post:
Til sist er det det de mer komplekse kodene, hvor teksten er en del av selve koden, for eksempel opplisting av Sider wp_list_pages
Denne koden kan i noen tilfeller se slik ut:
' ); ?><?php wp_list_pages('title_li=
Pages
For å tilrette legge dette for oversetting må man bruke '. __('text') .' dvs. at man setter koden mellom '. og .' så i eksempelet med opplistingen får vi:
' ); ?><?php wp_list_pages('title_li=
'. __('Pages') .'
Det er akkurat samme systemet for innstikk, men det hender seg at man må bruke " i stedet for ' (apostrof).
Hvis du nå ønsker at folk skal kunne lage en språkpakke for ditt tema eller innstikk spesielt, må du ta i bruk funksjonene load_theme_textdomain for temaer og load_plugin_textdomain for plugins.
For temaer må du sette inn følgende kode helt i toppen på header.php:
“temanavn” må da byttes ut med noe som reflekterer navnet på temaet ditt. For eksempel hvis temaet heter “Fint Tema”, så bruker du “finttema”.
Har du en functions.php fil i temaet ditt kan du legge inn load_theme_textdomain('temanavn'); helt øverst i fila, rett etter <?php
Når du nå skal gi støtte for oversettelse i temaet ditt, så må du legge til tekstdomenet (textdomain) sammen med tekststrengen din:
Når det gjelder innstikk så er prinsippet det samme men man bruker da i stedet load_plugin_textdomain('innstikknavn');
For de som da skal lage en språkpakke/ fil for enten temaet eller innstikket, så skal de ha navn som temanavn-*.mo eller innstikknavn-*.mo. En fil for norsk bokmål vil da bli hetende, temanavn-nb_NO.mo.
Relaterte lenker
- WordPress Codex: Translating WordPress
- ZyBlog: Localizing WordPress Themes
- Boren.nu: Localizing Plugins and Themes

Supert
Jeg skulle til å spørre om noen hadde erfaringer med dette i forumet for noen dager siden, men glemte det av. Er det noen finurlig måte man kan gjøre dette på dersom man ønsker å bruke samme språkfila på flere temaer? Jeg tenker jeg skal ha den samme oversettelsen på alle temaer på Neuro. Greit å slippe å sitte å legge inn språkfila i 40+ temaer etterhvert
30. May, 2007 @ 14:34
Du kan lage din egen spesialsydde nb_NO.mo, hvis du da har tilgang til et program ala. poEdit. Men du må først titte gjennom temaer og innstikk og sjekke hvilke som har støtte og hvilke som ikke har det først.
Det står en del tips om hvordan du lager en oversettelse i ett par av de relaterte linkene jeg har lagt ved artikkelen.
30. May, 2007 @ 14:50