Nu acorde o atenție la alte limbi în dezvoltarea temei dvs. WordPress este foarte simplu, dar este un obicei prost, și ea respinge imediat o piață utilizator WordPress, și potențialele mii de dolari în venituri pierdute. Dintre primele 10 țări care sunt în căutarea de teme Google WordPress, doar un singur vorbitor de limba engleza (SUA), celălalt - 9. La momentul scrierii acestui articol în WordPress teme de baze de date de la mai mult de 1500 în toate, a fost 269, care sunt etichetate ca fiind gata pentru. Aceasta este, doar 18%. Îți arăt cum să-ți faci tema una dintre ele.
Cum funcționează
Soluția la această problemă este de a returna sau de a afișa aceste texte utilizând una din cele patru funcții WordPress proiectate pentru a fi trimise fișierului lingvistic pentru textul dorit. Când textul dvs. este inclus în aceste funcții, puteți crea un fișier care conține toate traducerile și care va fi accesat de fiecare dată când este încărcată tema.
Iată trei fișiere de traducere. pe care le folosim:
- .pot (șablon de obiect portabil) - un șablon care conține o legătură cu fiecare linie de text din subiectul dvs. care are nevoie de traducere. Dosarul nu conține o traducere. Acesta este un fișier text simplu.
- .po (Object portabil) - creat din fișierul .pot. po conține toate liniile și traducerile lor într-o anumită limbă. Acesta este, de asemenea, un fișier text care poate fi editat.
- .mo (Machine Object) este versiunea binară a fișierului .po. Când se utilizează codul mașinii, fișierul poate fi folosit mult mai repede decât versiunea text a acestuia.
Pasul 1. Cele patru funcții
Fiecare dintre cele patru funcții necesită cel puțin un argument - textul care trebuie tradus. funcţii:
__ () și _e ()
Acestea sunt cele mai simple funcții pentru traducerea pe care WordPress le poate oferi. Să examinăm un exemplu pentru fiecare funcție:
Ambele funcții fac același lucru. Declarația "Aceasta este o postare" este verificată pentru prezența în fișierul .mo și rezultatul este returnat.
__ () și _e () necesită doar un singur argument pe care trebuie să-l transmită - textul care trebuie tradus. Singura diferență dintre aceste funcții este ca __ () să aibă echo expresia. Să vedem un exemplu în care __ () funcționează mai bine decât _e ():
În loc să treci un șir la funcția _content (). am folosit __ (). astfel încât textul să poată fi tradus. Dacă am folosit în schimb _e (). În loc să treci textul la the_content (). traducerea textului va fi pusă într-un document care ar putea provoca tot felul de probleme.
Ce se întâmplă dacă aveți o situație în care textul pe care îl transmiteți poate avea un număr plural sau unic, cum ar fi "X recenzii" în exemplul de mai sus? În loc să dați două linii diferite de text pentru traducere, puteți spune că aveți o bucată de text pentru care aveți nevoie de o traducere în singular și plural. Următoarele două exemple prezintă același rezultat pentru utilizator:
_x () și _ex ()
Să presupunem că traduceți un fișier .pot și că treceți cu cuvântul "derulați". Îl interpretați ca pe o "bucată de hârtie răsucite" sau pe "derulați site-ul"? Puteți utiliza contextul pentru a explica modul de traducere. Aceste funcții vă vor oferi această ocazie cu al doilea atribut obligatoriu, care necesită o scurtă descriere a expresiei sau a cuvântului. Uitați-vă la exemplu:
Tehnici avansate
Să presupunem că avem o situație în care textul pe care doriți să genereze, constă dintr-un șir de text, care este rezultatul unei funcții sau o valoare variabilă undeva în interiorul ei. S-ar putea să doriți să scrieți ceva de genul:
Când creați fișierul .pot, POEdit va ignora acest lucru, deoarece nu dorește să utilizeze o variabilă în propoziție. Va fi adăugat fișierul .pot. Ați ales tema de culoare $. dar când există o căutare de traducere, atunci când scriptul este executat, va fi căutat șirul pe care l-ați ales tema albastră. care nu vor fi găsite. Iată ce vom face:
Astfel, scenariul va putea primi traduceri, dar acum a devenit mai dificil de tradus, pentru că propoziția este ruptă. Această teză poate să nu aibă nici măcar o traducere în unele limbi care sunt foarte diferite în sintaxă, de exemplu în limba germană, unde traducerea cuvântului "ales" ar trebui să fie la sfârșitul propoziției. Trebuie să explici că aceste două linii separate de text fac parte dintr-o singură și că "tema" nu poate fi tradusă ca "temă".
Soluția este să utilizați un singur șir de text. Funcțiile printf () sau sprintf () sunt utile aici. Să vedem cum ar trebui să arate codul nostru:
Acest lucru nu numai că rezolvă problema noastră, dar va fi mult mai precis în execuție și utilizează doar o singură linie de cod. Primul argument al printf () sau sprintf () - șirul de ieșire, care include cel puțin un material de umplutură, în acest caz,% s (ceea ce înseamnă că tipul de linie „string“), precum și toate celelalte argumente - variabile care urmează să fie inserat în linia de start .
Există mai multe opțiuni de substituție diferite pe care le puteți utiliza în interiorul unui șir, puteți găsi lista completă de sprintf în manualul PHP. Rețineți că diferența dintre printf () și sprintf () este similară cu diferența dintre _e () și __ (), respectiv.
Pasul 2. Introducere în POEdit
Acum, că ați marcat în mod corect toată producția în textul subiect, aveți nevoie pentru a colecta aceste informații într-un fișier .pot. Poedit - un program fantastic care vă permite să creați fișierul .pot, și oferă, de asemenea, un ușor de utilizat GUI, care poate fi utilizat pentru crearea .po și, mai important, de asemenea, .mo fișiere.
În primul rând, trebuie să descărcați POEdit. pe care îl puteți găsi pentru Windows, Mac și Linux prin acest link.
Când este instalat POEdit, puteți crea fișierul .pot. Pentru aceasta, mergeți la Fișier → Catalog nou. Veți vedea o casetă de dialog în care va trebui să introduceți datele de bază. În fila "Informații despre proiect" - numele proiectului și limba / țara dvs. De asemenea, puteți introduce următoarele în blocul "Plural Forms":
Plural Forms. nplurals = 2; plural = n! = 1;
În fila "Căi", introduceți calea unde pot fi găsite fișierele, în raport cu locul în care se află acest fișier .pot. De exemplu, dacă găzduiți un fișier .pot în rădăcina temei, tastați. (Dot). Dacă doriți să plasați fișierul .pot în directorul "limba" din rădăcina temei, tastați .. (două puncte).
Acum trebuie să-i spui lui POEdit. ce cuvinte cheie să căutați atunci când scanăm fișierele noastre. Introduceți următoarele:
Dacă doriți să se asigure transferul internațional de sprijin minim, vă poate oferi fișierul .pot, împreună cu subiectul și lăsați-l la asta, dar dacă se poate traduce tema într-o altă limbă le poate oferi propria temă cu o traducere preparată așa cum este descris în etapa 3.
Pasul 3. Traduceți și creați fișierul .po
- Lista tuturor liniilor pentru traducere.
- Șirul curent de tradus.
- Linia dvs. de alimentare.
- Singurul și pluralul liniei curente.
- Tab-uri pentru comutarea între singular și plural.
- Traducerea ta.
Odată ce ați salvat, POEdit creează automat un fișier .mo implicit, în plus față de fișierul .po. Este recomandat să includeți toate cele trei fișiere în subiectul dvs., astfel încât oamenii să poată crea propriile traduceri și să le editeze cu ușurință pe cele existente.
Pasul 4: Configurați WordPress
Să rezumăm ceea ce ați făcut deja. Ai spus textul de WordPress, pe care doriți să puneți la dispoziție pentru transferul, atunci ați folosit poedit pentru a colecta toate sforile și puneți-le în fișierul .pot. care pot fi traduse în fișierele .po și .mo. Aceste fișiere au fost apoi incluse în fișiere tematice.
Ultimul pas este să împachetați tema, să o instalați și să lăsați WordPress să înțeleagă fișierul .mo în care limbă doriți să o utilizați. Aceasta este o procedură foarte simplă în care accesați fișierul wp-config.php din dosarul rădăcină al WordPress.
Fișierul dvs. ar trebui să conțină deja definiți ("WPLANG", "); - dar dacă nu, puteți adăuga. Trebuie doar să adăugați codul de limbă și localizare în definire. Dacă ați tradus subiectul în rusă, veți avea următoarele:
Munca ta este terminată! Nu uitați să adăugați fișierul .pot la tema dvs. și dacă puteți traduce tema în altă limbă, includeți și fișierele .po și .mo.
Sursa: WP.tutsplus.com
O zi buna! Există o astfel de problemă: tema Avada a dobândit, în fișierul wp-config.php, nici o linie de a defini (# „WPLANG #“, # '#'); Adăugat după definire (# 'WP_DEBUG #', true); Au încărcat fișierele .po și .mo în directorul tematic. A fost transferat, dar nu tot. Deși fișierul .po traducere este. Ce nu am făcut bine?
Traducerea șablonului și crearea ru_Ru.po și ru_Ru.mo. Le-am aruncat în directorul șablon în dosarul limba la / wp-content / limbi / teme, redenumirea fișierelor în nazvanieshablona-ru_Ru.po / .mo.
A adăugat o linie în wp-config define ('WPLANG', 'ru_RU');
Au fost adăugate mai multe opțiuni la șablonul functions.php.
Nimic nu a ajutat. Ce ar trebui să fac?
Există un dosar în directorul direct al subiectului dvs.? / wp-content / teme / temă / limbă. De obicei, trebuie să puneți fișierele de localizare acolo, deoarece în dosarul pe care l-ați specificat - există localizări din douăzeci și cincisprezece teme obișnuite etc.
Am făcut totul conform instrucțiunilor. Nimic nu sa întâmplat.
Am facut-o prin POEdit, am tradus totul, m-am dus la hosting-ul meu (centrul) din
manager de fișiere și a adăugat fișierul .mo, a actualizat site-ul, tot, de asemenea, nimic
transferat. De asemenea, adăugate și .po, nu au funcționat. Spune-mi cum trebuie corect
traduce, pentru că am făcut totul conform instrucțiunilor și nu am lucrat
:(
Fișierul a fost adăugat în folderul cu tema în sine, la rădăcină.
După salvarea traducerii, ar trebui să aveți 2 fișiere la ieșire. po și .mo. La ce ar trebui să aibă un anumit sfârșit în nume, deci pentru limba rusă fișierele ar trebui să fie numite ru_RU.po și ru_RU.mo. Apoi, ele trebuie să fie completate nu în rădăcină cu tema, ci în folderul de limbi, care se află la baza temei. Dacă nu există un astfel de dosar, acesta trebuie creat.
Vă mulțumim pentru răspuns!
Da, da, aceste fișiere au fost atât de fișier am aruncat prin managerul de fișiere pe dvs. de găzduire, / teme / tema mea / limbi. Ambele fișiere sunt îmbinate acolo, acolo a fost deja .pot dosar cu l-am dat seama că nu este nevoie să facă nimic. Actualizat tema, încă nu a tradus, spune-mi ce ar putea fi problema? Nu sunt special la asta, am făcut lecția, dar nu sa întâmplat nimic. Traducere și sa dovedit, totul sa dovedit. Am deschis-o imediat la POEdit și am tradus câteva duzini de cuvinte și fraze. Am citit pe Internet că după toate acestea, aveți nevoie pentru a găsi un subiect pare functions.php și inserați această linie pentru a apela load_theme_textdomain (nume de domeniu) prin Notepad, că tema a fost capabil să se conecteze la această limbă, nu-i așa? Deci nu am încercat, pentru că nu am înțeles destul de unde, ce și de ce să inserați. Dacă adăugați doar aceste două fișiere în directorul de limbi de subiect în sine, repet, nu se întâmplă nimic, toate frazele din acest subiect sunt în limba engleză, cu toate că tema este gata pentru traducere, l-am găsit doar pe site-ul dvs. cu un link către ThemeForest :)
Ajutor, te rog, mi-ar plăcea să reinvestească în traducere rusă este gata, dar, probabil, ceva ce doriți să vă conectați undeva!
Nimic altceva nu trebuie scris în funcții. Asigurați-vă că fișierul wp-config.php în rădăcina site-ului a înregistrat un identificator de limbă valid define ( „WPLANG“, „ru_ru“);