Russification de wordpress, de ce aveți nevoie de fișiere po po, traducere de subiecte, orizont invizibil

După cum suspectez, această metodă funcționează nu numai cu Wordpress, ci și cu alte programe CMS și open source.

Într-un Internet există o mulțime de articole cu sfaturi, cum ar fi: „Deschideți fișierul footer.php și înlocuiți toate textele care au fost găsite acolo, în echivalentul rus (nu uitați codificarea). Repetați pentru toate fișierele din dosarul temei. " Și de îndată ce ați ascultat de acest sfat, tema a luat și s-a revigorat și trebuie să traduceți totul din nou.







Ce sugerez?

Vă sugerăm să creați (sau să editați un fișier de localizare). Atunci când actualizați pluginul sau temele Wordpress, traducerea nu va merge nicăieri.

Care este fișierul de localizare .po (.mo)? Teorie.

Probabil ați văzut adesea fișiere cu extensia .po sau .mo într-un dosar cu temă pentru Wordpress sau în dosarul zashibennogo_plagina. Dacă nu sunt găsite imediat, acestea se pot ascunde în folderul Limbi. Ei bine, dacă nu ați văzut, acum veți auzi despre ei pentru prima dată (fișiere foarte utile și gratuite, printre altele).

.fișierele po sunt fișiere de localizare. Multe limbi de programare populare (C, C ++, script-uri sh, Python, Perl, PHP, Java, Pascal și o grămadă de alții) au o funcție gettext. ngettext sau similar, care marchează textul pentru traducere viitoare. Dar veți spune că nimic asemănător nu este văzut în fișierele footer.php. header.php sau zashibennyi_plagin.php și veți avea dreptate. Deoarece aceste funcții, pentru lizibilitatea codului, sunt înlocuite cu un scurt sinonim __ (două simboluri de subliniere) sau _e sau _c sau altceva.

printf (gettext ("Numele meu este% s."), my_name)

printf (__ ("Numele meu este% s."), numele meu_important)

Apoi, un extractor special extrage toate aceste linii într-un fișier de șablon special cu extensia .pot. Aceeași linie din fișierul .pot va arăta astfel:

#: header.php: 19
msgstr "Numele meu este% s."
msgstr ""

unde header.php este fișierul din care a fost extras șirul "Numele meu este% s". iar numărul 19 este numărul acestei linii.

Apoi, traducătorul creează un fișier de localizare cu extensia .po din acest fișier șablon. Și aici, în acest fișier, puteți introduce feedul de linie. Acesta va arata astfel:

#: header.php: 19
msgstr "Numele meu este% s."
"Și numele meu este% s."

Dar acest lucru nu este sfârșitul. Dar nu este deja începutul.

Ca ultimul program de accident vascular cerebral, traducătorul creează un fișier binar (compilat) cu extensia .mo. care este alimentat de motorul Wordpress'a. De aceea, cei care nu au putut să editeze fișierul .mo. Cum de a crea (edita) pe care îl înveți mai departe.

Secvența acțiunilor de traducere.

Acum, pas cu pas vă voi spune cum să acționați dacă aveți o dorință imprevizibilă de a traduce un plugin sau o temă în CMS preferat.

Dacă fișierele .po există deja, atunci puteți deschide oricare dintre ele (dacă nu există ru_RU.po rusă) și editați (înlocuiți frazele unei alte limbi cu cele rusești). Dar eu, pentru universalitatea metodei, voi vorbi despre crearea acestui fișier de la zero.

Creați undeva un dosar (denumiți-l după cum doriți) și încărcați (sau copiați) toate fișierele .php ale subiectului pe care trebuie să le rumeniți;

Russification de wordpress, de ce aveți nevoie de fișiere po po, traducere de subiecte, orizont invizibil

Russification of Wordpress sau de ce ai nevoie de fișiere .mo și po, partea 1. 8.7 din 10 bazate pe 168 de evaluări

Se pare că cerința de localizare a plug-in-ului este utilizarea celui de-al doilea parametru în funcțiile __ () și _e ().
Astfel, pentru a traduce plugin-ul lucrat, în plus față de toate cele de mai sus, trebuie să utilizați următoarea construcție în codul său:
__ ("text tradus", "nume plug-in")
Și fișierul mo trebuie să aibă un nume - "plugin_name-ru_RU.mo".

Mai întâi de toate, mulțumesc pentru articolul informativ. Cu toate acestea, prima mea experiență în localizarea scrisului a fost un fiasco complet)

Judecând prin faptul că există __ ("Bla-bla-bla% s") construiește în fișierele sursă, tema ar trebui să susțină fișiere de localizare. Cu toate acestea, după completarea tuturor instrucțiunilor din acest articol și completarea fișierelor ru_RU.po și ru_RU.mo în rădăcina subiectului de traducere pe fața site-ului și nu am văzut ...

WP: 2.8.2
Garland-revizuit: 1.4

UPD: Foarte puțin probabil, dar este posibil să utilizați plug-in-ul WP Super Cache (sau similar) și ați uitat să ștergeți memoria cache.

/ **
* Setați calea către locația topicului ru_RU.mo
* /
load_theme_textdomain ('your-theme-name');

După aceea, localizarea începe să funcționeze atunci când folosim următorul mecanism pentru traducerea șirurilor:

_e ("Un șir pentru traducere", "yuor-theme-name");

Vă mulțumesc foarte mult! Impins în direcția corectă ... Dar aș dori să adaug că, pe lângă numele subiectului, trebuie să specificați calea spre fișierul * .mo.






În cazul meu, sa dovedit necesar să scrieți acest lucru:
load_theme_textdomain ('my_theme', get_template_directory (). '/ languages');
. și anume Adăugați calea către directorul în care este localizat fișierul * .mo (fișierul este localizat în folderul de limbi al temei localizate)
Sper că infa va fi utilă

Iată acest lucru:

nplurals = 3; plural = n% 10 == 1 n% 100! = 11. 0. n% 10> = 2 n% 10<=4 && (n%100=20). 1. 2

Mulțumesc! Încerc să fac localizarea. Dar până acum se pare că este mai ușor să traduci fiecare versiune nouă.))

Fișierele .pot și .po sunt, în esență, același lucru. Pur și simplu fișierul .po este deja tradus, și .pot este fără el.
Deci, doar selectați Fișier -> Creare director ... și executați, toți pașii ca în articol.

Apoi schimbați extensia și corectați antetul (dacă este necesar). Iată un exemplu de antet al unui fișier .pot dintr-o temă standard WordPress:

Există un fișier po pentru o altă versiune a temei, în codul pentru vechea temă astfel

în noua versiune a subiectului astfel
Ne pare rău, pagina pe care o căutați nu există.

Și de atunci Se folosește funcția _e (și niciuna), iar Poedit nu găsește textul care trebuie tradus.

Există o soluție, ce cuvânt cheie să specificați, astfel încât Poedit să vadă textul?

Sau nu reușiți să localizați noua versiune prin Poedit?

Buna ziua. Am un WordPress 3.0, rus, a instalat un subiect de limbă străină, folosit poedit, și sa dovedit că nu toate cuvintele sunt traduse. în lista derulantă, de exemplu, există "toate elementele", sa arătat că în cataloagele rădăcinilor temei există un fișier language.php - sunt toate cuvintele =)). dar sa dovedit că dacă înlocuiți cuvintele în limba rusă, atunci pe site. semne de întrebare în romburi. apoi eu (la sfatul prietenilor am decis să cumpăr o mașină "Moskvich"), și ei, de asemenea, sfătuiți și am făcut:
Să începem în ordine:

1. Mergem în phpMyAdmin și uităm prin codificarea tabelelor, ar trebui să fie cp1251

Semne de întrebări în loc de text

2. Mergem la masa însăși și privim în ce formă textul articolelor, dacă totul este în ordine, sări peste acest paragraf, în cazul în care întrebarea, atunci faceți acest lucru:

* Deschideți dump-ul cu baza de date (fișierul însuși) și salvați-l în codul cp1251
* Mergem la phpMyAdmin și când importăm selectăm codarea cp1251
* Toți, acum semnele de întrebare din tabele nu ar trebui să fie.

3. Trecem prin managerul de fișiere ftp sau ISPmanager în directorul cu site-ul / www / your_domain / și redenumiți htaccess.txt în .htaccess

totuși trebuia să înlocuiască linii într-un fișier daiabase.php, dar este în mizerie și în vordpress nu a fost găsit ...

Se pare acum parte a cuvintelor capturat aceeași localizare a presei Word, dar nu toate, atunci când am înlocui fișierele temă de localizare oală (șablon), Word apăsați-le să nu „captură“ trebuie să fie înlocuit la rădăcina unui potfayly de presă Word, cele pe care le-am tradus poeditom, dar apoi panoul de administrare nu devine rusă și din nou poedit nu primește fișierele din codul php. cu ajutorul căruia este organizată o căutare pentru mine. Ce faci acum ... Nu da, deoarece acnee, și acnee, pentru că nu, ajuta la rupe acest cerc vicios

În măsura în care înțeleg, unele dansuri cu tamburină ar putea fi evitate. Doar pentru asta, atunci când conduceți language.php, trebuie să specificați codificarea dorită.

În ceea ce privește primele două puncte, nu pot spune nimic - nu a fost nevoie să facem acest lucru.
În ceea ce privește al treilea punct, pentru ce a fost aceasta? Ce-ai acolo acolo? Ați specificat codificarea? Și de ce înainte nu ai avut .htaccess?

Și apoi nu înțelegeam deloc. Nu ați fost traduse numai fișiere TOPIC. De ce sa întâmplat așa că deja WORDPRESS nu este tradus?

Destul de logic, foarte mod de localizare - toate în plus, volume și memorie. Luați același Joom sau phpprobid - a schimbat aspectul și a încărcat numai localizarea, fără probleme cu sarcina. Și apoi vom conecta Lok și memoria imediat într-un plus mare. Bineînțeles, resursele nu sunt măsurate chiar acum, ci dacă ar trebui să fie risipite astfel. Și pentru a-mi localiza temele, nu găsesc o confirmare logică a necesității unor astfel de cârje.

Mulțumesc pentru articol, a fost foarte util și informativ pentru mine.
Vyacheslav
Am o actualizare după toate într-un SEO lipsă limba rusă, înainte de a fi fost tradus din Lekaktusa, după citirea acestui articol săpat actualizat recent plug-in, și a găsit în ea o lipsă totală de fișier .RO rus, în alte privințe, și nu numai din Rusia. În plus față de orice altceva, sa dovedit că în fișierul .POT nu există corespondență în numerele de linie (o divergență de 50 de linii) ... Poate. aceste informații vor fi utile

Există de fapt un mod mai ușor ... am avut totul tradus, dar după următoarea actualizare a subiectului zburat nu-mi amintesc ce este această metodă simplă.

Este amuzant, desigur, să scrieți un articol atât de lung pentru traducerea subiectelor și să nu traduceți câteva cuvinte din rating: "Rating: 0 (de la 0 voturi)"
Bravo!

La mine de ce funcționează localizarea rusă, dar românul se traduce selectiv. Spune că data se traduce, iar celelalte părți ale site-ului nu ...

Cred că există o rusă .php în care este stipulată lucrarea scenariilor. Până la sfârșit nu înțelege, ci esența

add_data ("$ locale-ie", "condițional", "IE");

wp_print_styles ();
>
add_action ('admin_head', 'ru_accomodate_markup');

funcția ru_populate_options () add_option ('rss_language', 'ru');
>
add_action ("populate_options", "ru_populate_options");

funcția ru_restore_scripts_l10n () global $ wp_scripts;

dacă (is_a ($ wp_scripts, 'WP_Scripts')) do_action_ref_array ( 'wp_default_scripts', array ($ wp_scripts));
>
>
add_action ('init', 'ru_restore_scripts_l10n');
?>

Și mai mult. Nu am înțeles cum să aplic widget-urile în două limbi. La urma urmei, ele sunt afișate simultan pe ambele. Sau este vorba despre scrierea manuală într-o temă folosind un "plug"?

Tovarăși, spune-mi, vă rog, dacă este posibil să faceți software-ul înapoi de la MO. Sau cum să deschideți MO. Adevărul este că el nu a terminat încă și că există software, dar fără nicio traducere.

Vreau să deschid acest neterminat și să traduc.

Din câte știu, fișierele mele nu pot fi editate. Trebuie să găsiți fie po sau oală dorită și deja să le traduceți.

Pentru cei care nu au localizare, iată o scurtă instrucțiune:
1) Adăugați ru_RU la wp-config.php, se dovedește că defini ('WPLANG', 'ru_RU');
2) În subiectul localizat, uita-te la funcțiile.php din linia load_theme_textdomain ('myname');
3) Verificați dacă fișierele .php au _e ('sometext', 'myname');
4) În Poedit, bifați "Catalog" - "Setări" - "Numele proiectului și versiunea" - "myname" și "Paths" - "." (Un punct dacă fișierul de localizare se află în dosarul în care sunt fișierele php) și să genereze din fișierul .po
5) Fișierul de localizare ar trebui să fie numit ru_RU.mo, și nu numele meu -ru_RU.mo
Acum, totul ar trebui să funcționeze!

Doamne.
Vei râde, am suferit acest caz până la ora 3 dimineața.
Ca rezultat:
Redenumit din "my-theme-ru_RU.po" la doar "ru_RU.po" și totul a funcționat ca un ceas!
Sper că cineva va beneficia de aceste informații.

Despre yuriki și pro blog

Vă scriu aici pentru cei care au vrut să îmbunătățească ceva în această viață. Fie că este vorba despre un site pe Internet sau despre o societate care se ocupă de bani (sau, mai degrabă, de cei care ne impun să folosim banii).

Care sunt aceste imagini în dreapta?

Acestea sunt pentru creșterea stării de spirit și inspirație pentru îmbunătățirea ulterioară.

Pentru inspirație







Articole similare

Trimiteți-le prietenilor: