Jeg har brugt et stykke tid på at finde ud af hvorledes en WordPress widget kan oversættes. Den information jeg kan finde har ikke været fyldestgørende, så det har været lidt besværligt, men det er dog lykkedes. Den widget jeg har arbejdet med er det Xbox 360 gamercard som ses i bundet til højre.
Step-by-step guide
- Brug WordPress’s gettext funktion __() rundt om al tekst der skal oversættes. Alternativt kan _e() bruges. Se WordPress Codex. Anden parameter i funktionen skal være unik og ens i alle kald. Dette er såkaldt tekst domain.
- Når du er færdig skal du bruge makepot.php scriptet. Check det ud fra SVN.
- Åben en terminal og hop in i wp-content/plugins/ mappen.
- Kør php makepot.php wp-plugin <navn på widget>.
- Pot filen er en template fil. Generer den danske oversættelse med xgettext <navn på widget> -o <navn på widget>-da_DK.po
- Rediger nu <navn på widget>-da_DK.po filen og indtast oversættelsen i msgstr linjerne.
- Generer tilsidst den færdige oversættes således msgfmt -o <navn på widget>-da_DK.mo <navn på widget>-da_DK.po
- Mo filen placeret i samme mappe som widget’en.
- Tilsidst skal widget’en blot loade oversættelsen. Indsæt load_plugin_textdomain(‘<navn på textdomain>’, ‘/wp-content/plugins/<navn på widget>/’, ‘<navn på widget>/’);
Det skulle gøre tricket og din widget er nu oversat til dansk. WordPress skal naturligvis kører med dansk sprog før det virker. Dette gøres ved at sætte WPLANG i wp-config.php til da_DK.