Hur man internationaliserar WordPress-teman och plugins

I 5 kardinala synder i WordPress Theme Development talade vi kort om betydelsen av att internationalisera teman och plugins men vi diskuterade inte faktiskt på vilket sätt att göra det. 

Om du befinner dig i det kommersiella temat eller pluginutrymme, förväntas det nästan att ditt arbete kommer att stödja flera språk. I den här artikeln tar vi en titt på förståelsen för vilken internationalisering verkligen är, varför det är viktigt och vilka steg som krävs för att internationalisera ditt projekt.


Förstå internationalisering

När det gäller att internationalisera WordPress-projekt kanske den svåraste aspekten faktiskt förstår hur man gör det - internationalisering av ett WordPress-projekt är egentligen väldigt lätt att göra.

Innan vi tittar på hur man gör det är det viktigt att ta en titt på betydelsen av internationalisering och varför vi som utvecklare borde ens bry sig om att göra det.

Internationalisering Definierad

Enkelt uttryckt är internationalisering processen för att förbereda vårt tema för översättning. Det betyder att oavsett vad [talat] språk användes för att utveckla vårt arbete, kan framtida användare (eller till och med utvecklare) enkelt översätta projektet för vilket språk som helst. Internationalisering kräver inte det faktum vi tillhandahålla översättningarna (även om de flerspråkiga bland oss ​​lätt kan göra det), bara att vi vidtar nödvändiga åtgärder för framtida översättare att göra det.

Varför bry sig?

För år sedan skulle jag ha sagt att internationalisering bara bör göras om målmarknaden för ditt arbete var något annorlunda än ditt modersmål, men det är inte längre fallet. Tack vare Internet kan vi samtala, samarbeta, och kommunicera med människor från hela världen. Den potentiella publiken för ett visst projekt är bredare än någonsin tidigare.

Ännu mer, har WordPress ett betydande antal moderna webbplatser. För det ändamålet borde vi tänka globalt om vårt arbete. Jag hävdar att internationalisering av kommersiella teman eller plugins inte längre är förhandlingsbart. Om plattformen där ditt arbete är byggt används av en mängd olika språk - och WordPress är - och sagt plattformen ger ett rent och enkelt sätt att internationalisera ett tema - och WordPress gör - då är det mer en fråga om varför är jag inte internationalisering av mitt arbete.

Hur man internationaliserar

Som tidigare nämnts är det faktiskt att en internationalisering av ett tema förstärker de viktigaste funktionerna i WordPress API än den faktiska processen att förbereda texten. Så innan vi tar en titt på ett konkret exempel, låt oss definiera några viktiga termer och funktioner: - Internationalization Key. Du kan tänka på detta som ett sammanhang, en domän eller en unik identifierare för dina strängar.

Oavsett detta är ett enkelt, unikt värde som WordPress kommer att använda för att internationalisera texten i hela ditt tema .- __ ($ text, $ key) är en funktion som returnerar en översatt sträng. Den här funktionen ekosker inte, skriver ut eller visar strängen. Det används ofta när man behöver utföra en annan operation på den översatta strängen (t.ex. att överföra den till en annan funktion). Den accepterar två argument - strängen att översätta och internationaliseringsnyckeln .- _e ($ text, $ key) är en funktion som faktiskt ekar den översatta strängen.

Det här används bäst när du behöver hämta ett översatt värde och visa det någonstans i ditt tema eller plugin .- load_theme_textdomain ($ domain, $ translation_directory), load_plugin_textdomain ($ domain, $ translation_directory) är två funktioner som berättar om WordPress där du hittar din översättningar. Vi tar en titt på dessa funktioner lite mer i detalj tillfälligt.

För nu bara vet att varje funktion tjänar samma syfte, även om man är för teman, en är för plugins.For det mesta är det allt som finns att förstå hur man internationaliserar ditt tema. Härifrån tar vi en titt som exakt vad som medförde att dessa funktioner tränas.


Internationalisera ditt arbete

Visar översatt text

Innan vi internationaliserar ett tema, låt oss ta en titt på hur en standard del av markup ser ut:

Min WordPress Blog

Bara en av de bästa platserna på Internet

Denna paragraf är bara det bästa stycket som finns i alla WordPress-bloggar på Internet. Läs det och njut av det.

Inget spektakulärt, eller hur? Ser ut som en vanlig bit av HTML (vilket är allt det är). Beviljas, det här är ett enkelt exempel men det är allt som krävs för att visa hur man internationaliserar ett tema.

För att internationalisera denna text ovan måste vi bestämma vilken unik identifierare vi ska använda för att internationalisera vår text - jag ska gå med 'tutsplus'. För det andra, eftersom all den ovanstående texten visas på skärmen använder vi funktionen __e (). Den internationaliserade koden bör vara:

Men vad sägs om text som behöver översättas innan den visas på skärmen? Det är inte mycket annorlunda men låt oss ta en titt på hur vi kan internationalisera sidofält.

Bearbetar översatt text

Låt oss först konfigurera sidofältet:

register_sidebar (array ('name' => 'Custom Sidebar', 'id' => 'sidofält'));

Som referens använder jag register_sidebar-funktionen som är tillgänglig via WordPress API. Observera att sidfältets namn görs på skärmen Widgets. Som sådan måste vi internationalisera det. En array accepterar emellertid inte en echoed-sträng - den accepterar ett strängvärde.

I det här fallet utnyttjar vi funktionen __ ():

register_sidebar (array ('name' => __ ('Custom Sidebar', 'tutsplus'), 'id' => 'sidebar'));

Lätt nog, va?

Kom ihåg att internationalisering endast ska gälla statisk text. Det är inte utvecklarens ansvar att tillhandahålla internationalisering av sidinnehåll, postinnehåll och så vidare.


Förbereder temat och / eller plugin för internationalisering

När du har gått igenom ditt tema och korrekt tagit upp texten som måste internationaliseras måste du berätta för temat eller plugin var du hittar internationaliseringsfilerna. Vi tar en titt på detta på djupet på ett ögonblick, men först rekommenderar jag alltid att skapa en "lång" -katalog i root av temat eller plugin-katalogen för att lagra internationaliseringsfiler.

Kom ihåg funktionerna load_theme_text_domain och load_plugin_text_domain funktioner från tidigare? Det är här vi använder dem. Om du arbetar med ett tema måste vi definiera en anpassad funktion som heter i after_setup_theme-kroken:

funktion custom_theme_setup ()  // slut custom_theme_setup add_action ('after_setup_theme', 'custom_theme_setup');

Därefter kommer vi att berätta för funktionen var att hitta översättningarna. För att göra detta lägger du till följande på rader i ditt tema (notera kommentarerna som förklarar vad varje rad gör):

funktion custom_theme_setup () // Hämta katalogen för internationaliseringsfilerna $ lang_dir = get_template_directory (). '/ Lang'); // Ange tematets textdomän med hjälp av den unika identifieraren från ovan nämnda load_theme_textdomain ('tutsplus', $ lang_dir);  // än custom_theme_setup add_action ('after_setup_theme', 'custom_theme_setup');

Relativt enkelt, eller hur? Det är inte heller annorlunda för plugins. Liknande med teman placerar jag alltid mina plugin-internationaliseringsfiler i en "lång" underkatalog. Först måste vi berätta för WordPress där internationaliseringsfilerna finns. Förutsatt att din ligger i en "lång" -katalog:

load_plugin_textdomain ('tutsplus', false, dirname (plugin_basename (__ FILE__)). '/ lang /');

Den andra parametern - där vi har angett "false" - är nödvändigt men motsvarar en avstängd funktion i WordPress.

Slutligen måste vi bestämma vart man ska ringa funktionen load_plugin_textdomain. Om vi ​​skriver en Widget, placerar jag vanligtvis detta funktionssamtal i konstruktören:

klass My_Custom_Widget funktion My_Custom_Widget () load_plugin_textdomain ('tutsplus', false, dirname (plugin_basename (__ FILE__)). '/ lang /');  // slutkonstruktör // än My_Custom_Widget

Om vi ​​skriver ett vaniljplugg, finns det en mängd olika sätt att du kan berätta för WordPress där översättningsfilerna finns, men du har flexibilitet att haka i after_setup_theme fungera. Liknande temakoden ovan kan du placera detta i ditt plugin:

funktion custom_plugin_setup () load_plugin_textdomain ('tutsplus', false, dirname (plugin_basename (__ FILE__)). '/ lang /');  // än custom_theme_setup add_action ('after_setup_theme', 'custom_plugin_setup');

Nu är ditt tema eller plugin redo för internationalisering.


Två fler överväganden

Vid det här laget är du faktiskt klar, men det är alltid värt att veta vad som krävs för att ta ditt jobb och gå vidare. Här är de två enastående uppgifter som översättare normalt utför för att översätta ditt tema

  • Översätt texten. Översättare behandlar ditt tema genom en översättningsprogram (till exempel POEdit) som genererar filer som sparas i din "lång" -katalog, där WordPress hämtar filerna.
  • Uppdateringar till WP-Config.php. Vid denna tidpunkt måste översättare instruera WordPress för att aktivera internationalisering och ange vilket språk de använder. Detta ligger utanför ramen för denna artikel, men du kan läsa mer om det i Codex.

I motsats till några av de andra utvecklingsmiljöerna som finns tillgängliga, gör WordPress det otroligt enkelt att internationalisera ditt arbete. Förmodligen är den mest utmanande delen förstå de nyckelfunktioner som är nödvändiga för att förbereda dina strängar för internationalisering.

Dessutom kan refactoring av befintligt arbete alltid vara en tidskrävande process. I samband med WordPress kan det vara tråkigt men det är relativt lätt att göra. Om du har några ytterligare förslag eller frågor om internationalisering, var god att lämna dem i kommentarerna!