Este foarte ușor să te oprești la alte limbi atunci când dezvolți tema WordPress, dar acesta este un obicei foarte rău și imediat întoarce o întreagă piață de utilizatori WordPress și potențial mii de dolari în venituri pierdute. Din primele 10 țări care caută Google pentru "teme WordPress", doar unul este vorbitor nativ în limba engleză (SUA) și vine pe locul 9. De la scris, există doar 269 de teme în baza de date tematică WordPress care sunt etichetate ca fiind pregătite pentru traducere din mai mult de 1500 de teme. Aceasta este doar 18% din tematici. Îți voi arăta cum să faci pe a ta una dintre ele.
Când de obicei faceți o temă, pur și simplu veți codifica orice text tematic, cum ar fi mesajul de eroare 404 din 404.php fișier sau etichete, cum ar fi "comentarii:" sau "autor:". Dacă WordPress este, de exemplu, germană, aceste fragmente de text vor fi afișate în continuare în limba engleză. Soluția la acest lucru este de a returna sau de a econa aceste declarații folosind una din cele patru funcții WordPress, care sunt proiectate să facă referire la un fișier lingvistic pentru textul corect. Odată ce ați înfășurat textul în aceste funcții, puteți crea un fișier care conține toate traducerile la care se face referire de fiecare dată când este încărcată tema. Există trei fișiere de traducere pe care le folosim:
Fiecare dintre cele patru funcții necesită cel puțin un argument, care este textul care urmează să fie tradus. Funcțiile sunt:
__ ()
- (două sublinieri) Funcția de bază pe care o veți utiliza în cea mai mare parte a timpului. Returnează textul în limba corectă._e ()
- La fel ca __ ()
cu excepția faptului că ecou textul în loc să îl returneze._n ()
- Folosit atunci când textul are potențialul de a fi plural, de exemplu, dacă ați afișa câte comentarii au fost făcute, este posibil să doriți să expediați fie "X comentarii", fie "Comentariu X" în funcție de numărul de comentarii pe care le aveți._X()
- Util pentru atunci când traducerea cuvântului depinde de context. "Post" ar putea însemna "un post (Noun)"sau" pentru a posta (verb)"în funcție de context. Este important ca traducătorul să știe la ce te referi atunci când traducerea este corectă. _X()
este folosit în principal atunci când se utilizează cuvinte singulare. Acestea sunt cele mai simple funcții de traducere pe care WordPress le oferă. Să aruncăm o privire la un exemplu de fiecare:
Ambele funcții fac exact același lucru aici. Declarația "acesta este un mesaj" este verificată împotriva fișierului .mo dacă există unul și returnarea rezultatului. __ ()
și _e ()
trebuie doar să li se transmită un argument, care este textul pe care vrem să îl traducem. Un al doilea argument opțional este disponibil și vom ajunge la asta mai târziu. Singura diferență dintre cele două este aceea __ ()
are nevoie de ecou
declarație aici. Să ne uităm la un exemplu în care __ ()
funcționează mai bine decât _e ()
:
În loc să treci un șir la continutul()
funcția pe care am folosit-o __ ()
astfel încât textul să poată fi tradus. Dacă am fi folosit _e ()
în locul dvs., ați avea traducerea textului "Faceți clic aici pentru a citi mai mult", care a fost reluată documentului, în loc să fie transmisă continutul()
care ar provoca tot felul de probleme nefolositoare.
Ce se întâmplă dacă aveți o situație în care textul pe care îl transmiteți ar putea fi un plural sau un singular ca exemplul "X comentarii" de mai sus? În loc să dați două șiruri de text diferite pentru traducător, puteți spune că aveți o singură bucată de text care necesită o traducere singulară și plurală. Următoarele două exemple afișează același rezultat utilizatorului:
_n ()
necesită trei argumente. Prima este versiunea singulară a textului, a doua este pluralul, iar a treia este numărul pe care îl face referire. În acest caz, get_comments_number ()
găsește câte comentarii se află pe o postare și apoi _n ()
alege textul corespunzător de utilizat.
Să presupunem că traduceți un fișier .pot și veți vedea o intrare "defilare". Vreți să interpretați acest lucru ca fiind "o bucată de hârtie rulată" sau "pană în sus sau în jos pe site-ul web"? Ați putea face cu adevărat un anumit context pentru a descrie ceea ce aveți nevoie să-l traduceți. Aceste funcții vă dau acea abilitate, având un al doilea atribut cerut care cere o scurtă descriere pentru a descrie fraza sau cuvântul. Verificați exemplul de mai jos:
Exemplul vă arată diferența dintre _X()
și _ex ()
. Este la fel e
, ca și în cazul _E
, pentru a face ca funcția să ecouzeze ieșirea în loc să o returneze. Pentru ambele, primul nostru parametru este textul nostru care are nevoie de traducere, iar al doilea este un comentariu sau o notă despre textul traducerii pentru a clarifica ce se înțelege.
Să presupunem că aveți o situație în care textul pe care doriți să-l generați este compus dintr-un șir de text cu rezultatul unei funcții sau a valorii unei variabile puse undeva în ea. S-ar putea să fii tentat să faci așa ceva:
Când este vorba despre a face fișierul .pot, POEdit va ignora acest lucru deoarece nu dorește să utilizeze o variabilă în mijlocul unei propoziții. Motivul este că va trimite șirul Ați ales tema de culoare $
la fișierul .pot, dar când este vorba de căutarea traducerii la execuția scriptului, va căuta șirul Ați ales tema albastră
pe care nu o va găsi. Și dacă facem asta în schimb:
Scenariul va putea acum să recupereze traducerile, dar acum a devenit prea dificil de tradus deoarece propoziția a fost spartă. Această propoziție ar putea să nu fie translatabilă nici în unele limbi care au o sintaxă în mare măsură diferită, cum ar fi în limba germană unde cuvântul lor pentru "ales" ar apărea la sfârșitul propoziției. Va trebui să treceți prin dificultatea de a explica faptul că aceste două șiruri separate de text fac parte din una și că "tema" ar putea să nu se transforme deloc într-o "temă".
Soluția este de a utiliza un șir de text unic, care are o sintaxă prietenoasă pentru o singură cotație. Aici este locul unde printf ()
sau sprintf ()
funcțiile devin utile. Să aruncăm o privire la ceea ce trebuie să arate codul nostru:
Nu numai că acest lucru rezolvă toată problema pe care am avut-o înainte, dar este mult mai tidieră și folosește doar o singură linie de cod. printf ()
sau sprintf ()
funcțiile "primul argumente sunt șirul de ieșire care conține cel puțin un substituent, în acest caz % s
(ceea ce înseamnă "șir"), și orice alte argumente sunt variabile care urmează să fie plasate în interiorul șirului inițial. Există numeroși substituenți care pot fi utilizați în interiorul șirului dvs. și puteți găsi o listă completă sub sprintf
în manualul PHP. Rețineți că diferite între printf ()
și sprintf ()
este similar cu _e ()
și __ ()
respectiv.
Acum că ați etichetat cu succes toate textele pe tema dvs., acum trebuie să colectați această informație într-un fișier .pot. POEdit este un program fantastic care îți oferă posibilitatea de a crea fișierul .pot și oferă, de asemenea, o interfață grafică ușor de folosit, care poate fi utilizată pentru a crea .po și, mai important, pentru fișierele .mo.
În primul rând, va trebui să descărcați POEdit, pe care îl puteți găsi aici pentru Windows, Mac și Linux:
http://www.poedit.net/download.php
Odată ce este instalat POEdit, puteți crea fișierul .pot. Pentru a face acest lucru, mergeți la File> New Catalog. Vi se va afișa o casetă de dialog în care trebuie să introduceți câteva informații de bază. Elementele esențiale din fila "Informații despre proiect" sunt numele proiectului și limba / țara dvs. De asemenea, trebuie să introduceți în caseta "Plural Forms" următoarele:
Forme de plural: nplurals = 2; plural = n! = 1;
În fila "Căi", introduceți calea unde pot fi găsite fișierele în raport cu destinația de salvare a acestui fișier .pot. De exemplu, dacă introduceți fișierul .pot în directorul rădăcină al temei, introduceți .
(perioadă). Dacă doriți să plasați fișierul .pot într-un director "limbă" în interiorul temei rădăcină, introduceți ...
(două perioade).
Apoi, trebuie să îi spuneți POEdit ce cuvinte cheie să căutați la scanarea fișierelor noastre. Introduceți următoarele:
: 1,2
extensie spune POEdit că aceste cuvinte cheie au două părți la ele. În mod implicit, al doilea argument este pluralul dacă nu includeți c
ceea ce înseamnă al doilea argument este un comentariu.
Ești bine să pleci! Faceți clic pe "OK" și alegeți un loc pentru a salva fișierul .pot. Amintiți-vă că trebuie să se refere la calea pe care ați definit-o mai devreme. POEdit va scana acum prin fișiere și va găsi toate aparițiile funcțiilor de traducere și le va salva fără traduceri în fișierul .pot. Dacă doriți să furnizați suportul minim pentru traducerea internațională, puteți să vă expediați fișierul .pot cu tema și să vă opriți aici, însă dacă puteți să vă traduceți tema într-o altă limbă, puteți să trimiteți tema dvs. cu o traducere preliminară așa cum este descris în etapa 3.
După ce ați tradus toate șirurile din fișierul .pot, puteți salva acest fișier ca fișierul .po. Orice șir căruia nu i-ați oferit o traducere va fi afișat în limba originală atunci când cineva vizualizează tema.
Numele fișierului .po este crucial. Gettext utilizează standardul ISO 639 pentru abrevieri lingvistice și ISO 3166 pentru localizări. Dacă traducerea dvs. este scrisă în engleză, de exemplu, numele fișierului va arăta en-US.po
. Capitalizarea este de asemenea importantă aici. Pentru o listă completă a codurilor de limbă și de țară, consultați aceste două linkuri:
Odată ce ați salvat, POEdit implicit creează automat un fișier .mo alături de fișierul .po. Este recomandat să includeți toate cele trei fișiere de traducere cu tema, astfel încât oamenii să poată crea propriile traduceri și să vă editeze cu ușurință traducerile existente.
Să recapitulăm ceea ce ați făcut până acum. Ați spus WordPress tot textul pe care doriți să îl traduceți și apoi ați folosit POEdit pentru a colecta fiecare șir și a le plasa într-un fișier .pot care poate fi tradus într-un fișier .po și .mo. Aceste fișiere sunt apoi incluse în fișierele tematice. Ultimul pas este să vă zip tema, să o instalați și să lăsați WordPress să știe ce fișier de limbă .mo doriți să-l folosească. Aceasta este o procedură foarte directă în care vă accesați wp-config.php
fișier găsit în dosarul rădăcină al WordPress.
/ ** * WordPress Limba localizată, implicită în limba engleză. * * Modificați acest lucru pentru a localiza WordPress. Un fișier MO corespunzător pentru limba * ales trebuie să fie instalat în wp-content / languages. De exemplu, instalați * de_DE.mo la wp-content / languages și setați WPLANG la 'de_DE' pentru a activa suportul de limbă german *. * / define ('WPLANG', ');
Fișierul dvs. ar trebui să conțină deja define ( 'WPLANG' ");
dar dacă nu, puteți să o adăugați. Pur și simplu trebuie să adăugați codul de limbă și localizare în defini
. Dacă ați traduce tema în limba germană, ați avea acest lucru:
define ("WPLANG", "de_DE");
Internaționalizarea ta este completă! Nu uitați să includeți fișierul .pot împreună cu tema și, dacă ați reușit să traduceți tema în altă limbă, să includeți și fișierele .po și .mo.