I första delen av ”widgetskolan” skapade vi grundstrukturen för vår widget. Dags nu för nästa steg i vår widget tutorial och den handlar om språkhanteringen.
WordPress använder en teknik för fraser som kallas GNU gettext och för att koda med fraser finns ett antal funktioner i WordPress.


__( ‘text’,'textdomain')


Denna funktioner kommer returnera frasen från översättningsfilen.
Varianten på detta är:


_e('text','textdomain')


Som skriver ut frasen. ”e” symboliserar ”echo”.

Det finns ytterligare två funktioner, som kan användas om ett ord är svårt att översätta. Då kan en förklaring skickas med i översättningen:


_x('duck', 'The animal','textdomain')


‘duck’ kan ju betyda ”anka” eller ”ducka”. I det här fallet menar vi djuret, och då vet den som ska översätta det. Motsvareigeten för att skriva ut denna variant direkt är alltså


_ex('duck', 'The animal','textdomain')


Det går också att använda varibler, där har vi phpfunktionerna printf() (skriver ut) och sprintf() (returnerar) till användning.

Exempel:


sprintf( __( '%1 %2, %3', 'textdomain' ), __('Written by','mindomain'),'Bjarne',date( 'Y' ));


Skulle returnera strängen *Written by Bjarne, 2014*

I PHP dokumentaionen kan du läsa mer om printf och sprintf

I del 1 pratade vi om ”Text domain” och att det hade med språkhantering att göra. Text domain talar nämligen om vilken fil som gäller för hanteringen. Låt oss ändra i vår klass, så vi får en fras att översätta. Ändra funktionen __construct till att se ut så här:


function __construct() 
	{
		parent::__construct(
			'sl_widget', // Bas ID för widgeten
			__('Swedish Days','wpsvdays'), // Namnet
			array( 'description' => __('Information about current day','wpsvdays')) // Beskrivning
		);
	}


I vårt fall behöver vi en fil som heter ”wpsvdays-sv_SE.po” och denna ska vi skapa med hjälp av PoEdit. I det här fallet använder vi Proversionen, och det fina med det är att den kan söka igenom en mapp efter fraser som ska ersättas. Öppna Poedit och välj ”Translate WordPress plugin or theme”

Screen Shot 2014-08-29 at 15.19.22

 

Välj mappen där vi har vårt plugin. Som ni ser har jag skapat en mapp, ”languages” där vi ska spara våra språkfiler.

Screen Shot 2014-08-29 at 15.20.24

Välj språk.

Screen Shot 2014-08-29 at 15.21.00

Sedan är det bara att översätta.

Screen Shot 2014-08-29 at 15.22.07

I det här fallet är det bara två fraser, men vi börjar med det. Nu sparar vi filen i vår språkmapp. Här är det viktigt att ändra filens namn till att sluta på -sv_SE i stället för föreslaget -sv. Poedit borde föreslå det automatiskt, men det gör inte programmet. När vi sparat har två filer i mappen languages wpsvdays-sv_SE.po och wpsvdays-sv_SE.po

Screen Shot 2014-08-29 at 15.25.08

 

Därefter behöver tala om för WordPress att det finns språkfiler att ladda in. Det gör vi genom funktionen load_plugin_textdomain som tar vår domän, samt sökväg till språkfilerna som argument


load_plugin_textdomain('wpsvdays', false, basename( dirname( __FILE__ ) ) . '/languages' );


När vi ni laddat upp widgetfilerna, kommer vi se att de två texter som fanns är översatta.

 

Screen Shot 2014-08-29 at 15.30.50

 

Fortsättningsvis kommer vi förbereda koden för översättning, och när vi är klara, är det dags att gå igenom fraserna och översätta de nya. I nästa del av widgetskolan kommer vi göra lite roligare saker, nämligen lite inställningsmöjligheter för vår widget.