Uvod

Prevodjenja wordpress-a možemo podeliti na:

  1. Prevodjenje unetog sadržaja tzv. frontend-a (prevodi korisnik korišćenjem plugina: Polylang ili WPML…)
  2. Prevodjenje backend-a:
    • WordPress core (već prevedeno pri instalaciji)
    • Teme ili plugin-a (priprema i prevodi programer)

Domen (text domain)

Domen za prevodjenje (text Domain) je jedinstveni slobodno izabrani pojam koji ukazuje na folder unutar teme ili plugin-a u kome se nalaze fajlovi neophodni za prevodjenje .po i .mo. WordPress po defaultu traži fajlove za prevodjenje na dva mesta:

  • wp-content/languages
  • wp-includes/languages

za sve druge lokacije je potrebno to i naglasiti.

Preporuka je da se u svakom fajlu teme ili plugin-a u kome postoji tekst spreman za prevodjenje u komentaru na početku pojavi i sledeće:

Domen u temi

Kod razvoja teme wordpress proverava da li postoje i gde se nalaze fajlovi za prevodjenje sa funkcijom load_theme_textdomain(). Ova funkcija se koristi unutar functions.php i potrebna joj je putanja do domena.

Ova funkcija vraća TRUE ako je tekst domen učitan i FALSE ako nije.

Primer

Domen u plugin-u

Kod razvoja plugina se koristi funkcija load_plugin_textdomain().

Gde su:

  • $domain – (string) (required) jedinstveni naziv domena koji mora da se poklapa sa slug-om plugin-a. Ukoliko slug od više reči koristi se “dashes” a ne underscore _
  • $abs_rel_path – (string) (optional) Relativna putanja do foldera gde je .mo fajl. NE KORISTI SE VIŠE pa se ostavlja FALSE što je i default-na vrednost.
  • $plugin_rel_path – Ovaj parametar se koristi umesto pretodnog. Obezbedjuje relativnu putanju do WP_PLUGIN_DIR.
Primer

Priprema teme ili plugin-a za prevodjenje

Internacionalizacija (tzv. i18n) i lokalizacija (tzv.l10n) u WordPress-u je proces pripreme delova teksta za prevodjenje. Ovo podrazumeva obavijanje (eng.wrap) teksta posebnim gettext funkcijama. Ove funkcije proveravaju da li postoji prevod “obavijenog” teksta u textdomain-u i ako postoji vraćaju ga.

Kada se pravi tema ili plugin tekst obavijen gettext funkcijom MORA biti napisan na ENGLESKOM jeziku !!!

Gettex funkcije

__()

Ovo je osnovna funkcija koja uzima tekst i vraća promenjivu sa prevedenim tekstom ako postoji u domenu.

Primer

Ukoliko unutar koda imamo ovakav deo:

Da bi omogućili prevodjenje teksta “Read more” kada se promeni jezik potrebno je obaviti tekst sa funkcijom kao u sledećem primeru:

_e()

Ova funkcija radi isto stim što i prethodna stim što i odmah štampa preveden tekst.

Primer

Ukoliko unutar koda imamo ovakav deo:

Da bi omogućili prevodjenje teksta “Read more” kada se promeni jezik potrebno je obaviti tekst sa funkcijom kao u sledećem primeru:

_n()

Ova fukcija omogućava pored jednine i vraćanje prevedene reči u množini

  • $single – prevod teksta kojiće biti korišćen ukoliko je broj 1
  • $plural – prevod teksta kojiće biti korišćen ukoliko je broj veći od 1
  • $number – broj koji se koristi za odredjivanje množine
  • $domain – domen
Primer

_x()

Ova funkcija omogućava različiti prevod iste reči u zavisnosti u kom kontekstu se pominje.

  • $text – Tekst za prevod
  • $context – Informacije o kontekstu
  • $domain – domen

Funkcije za prevodjenje i encodovanje

Takodje postoje funkcije koje pored toga što rade kao prethodne funkcije i dodatno encoduju string-ove i omogućavaju bezbedno korišćenje. One se koriste kada je u pitanju unos preko formi:

  • esc_attr__()
  • esc_attr_e()
  • esc_attr_x()
  • esc_html__()
  • esc_html_e()
  • esc_html_x()

Primeri dobre prakse

Preporuka je da se koriste cele rečenice jer raspored reči u rečenici nije isti kod različitih jezika. Ukoliko bi se prevodila reč po reč onda rečenica na drugom jeziku možda ne bi imala smisla.

Primer

Koristite promenjive unutar rečenica za prevod.

Primer

Uvek je bolje koristiti “format string” umesto konkatenacije

Primer nepravilnog koda

Prethodni primer daje frazu za prevod: “Your city is $city.” i ne koristi promenjive.

Primer

Koristite “placeholders”

Prevodjenje teme ili plugina

Svi podaci u vezi prevodjenja se čuvaju u fajlovim sa ekstenzijama:

  • .POT fajlovi

    POT (Portable Object Template) fajl sadrži sve reči koje su obavijene sa nekom gettex funkcijom kao što je __() ili__e() .

  • .PO fajlovi

    PO (Portable Object) fajl pored reči koje su “obavijene” sa gettex funkcijama sadrži i njihove prevode u obliku razumljivom ljudima.

  • .MO fajlovi

    MO (Machine Object) fajl je konvertovani .PO fajl u format razumljiv kompjuteru.

Pošto smo napravili folder u okviru teme ili plugina poda nazivom “languages” i “load-ovali” text domen sada možemo da prikupimo sve delove taksta koji su obavijeni sa nekom gettext funkcijom na jedno mesto i pridružimo im prevod. Sve to se čuva u .po fajl-u. Za pravljenje .po fajlova i kompajliranje u .mo fajl-ove se koristi aplikacija “PoEdit”.

Postupak je sledeći:

  1. Nakon startovanja aplikacije kliknuti na File/New

    poedit new
  2. Izabrati jezik na koji prevodimo

    poedit_serbian
  3. Sačuvamo fajl na ikonicu Save. Folder u koji smeštamo je “languages” a pri davanju imena se pridržavamo sledećih pravila:
    • za teme u obliku “domen_locale.po” (za Srbiju bio sr_RS.po),

      ostale skraćenice za svaki jezik možete pogledati na stranici make.wordpress.org/polyglots/teams/
    • za plugin-e u obliku “text_domen-domen_locale.po”,

      (pa bi za plugin sa tekst-domen-om: “plugin-domen” i za Srpsku lokalizaciju bio plugin-domen-sr_RS.po)
  4. Otvorimo prozor za setovanje aplikacije “Catalog/Properties”

    poedit properties
  5. U tabu Translation properties popunim osnovne podatke

    poedit translation properties
  6. U tabu “Source path” izaberemo foldere u kojima se nalaze fajlovi sa tekstom koji je obavijen nekom od gettext funkcija

    source path poedit
  7. Ovde takodje mogu da se izbace fajlovi ili folderi iz pretrage za gettext funkcijama.

  8. U tabu “Source keywords” izaberemo koje gettext funkcije tražimo:

    gettext
  9. Kada zatvorimo properties izaberemo opciju “Extract from sources” koja daje naredbu da se pretraže sve gettext funkcije u izabranim fajlovimo.

    extrat poedit
  10. Kada “PoEdit” završi potragu za gettext funkcijama onda otvori prozor sa spiskom svih textova obavijenih gettext funkcijama i dozovoljava da unesemo prevod. Prevod treba da bude na ćirilici jer se lako prebacuje na latinicu kasnije jednostavnim uključivanjem plugina za prebacivanje na latinicu.

    poedit prevod
  11. Nakon prevodjenja je neophodno snimiti sve promene na dugme “Update”

    update
    nakon čega ćé PoEdit napraviti fajl .po i .mo

Ukoliko otvorimo .po fajl sa Sublime text možemo jasno da vidimo u kojim fajlovima i u kom redu fajla se nalazi odredjeni tekst.

sublime

Promena jezika backend-a

Da prevodjenje bilo moguće neophodno je da postoje fajlovi sa prevodima i to:

  • za standardne opcije admin stranice (wordpress core)

    (fajlovi u textdaomain-u wp-content/languages)

    Ovi fajlovi su pripremljeni i downloaduju se automatski pri izboru jezika
  • za deo admin stranice vezan za temu

    (fajlovi u texdomenu naše teme tema/languages

Jezik backend-a se lako menja na admin stranici u delu Settings/General

izbor jezika backend-a

Backend na različitom jeziku od Frontend-a

Ukoliko je potrebno da backend admin stranice bude na jednom jeziku a frontend na drugom onda koristimo plugin kao što je Backend Localization

Srpski WordPress

Srpski WordPress je standardni engleski wordpress samo što ima downloadovane fajlove za srpski prevod unutar standardnog text domena wp-content/languages

standardni tekst domain

U ovome folderu (text-domain) se nalaze:

  • fajlovi vezni za prevodjenje backend-a wordpress-a
  • folder themes gde su prevodi defaultnih tema koje dolaze uz wordpress
  • folder plugins u kome se nalazi fajl za prevodjenje plugina koji dolazi uz WordPress tj. Aksimet

Engleski WordPress uvek dolazi samo sa engleskim nazivima a nove jezike downloaduje tek po izboru jezika.

Ukoliko ipak nešto menjate u ovim fajlovima, sve promene će biti “pregažene” pri sledećem update-u stoga je pametno update-ovati engleski wordpress a ne srpski da bi se sačuvali podaci.

Srpski backend na latinici

Postupak prebacivanja ćiriličnog backend-a na latinicu je sledeći:

  • Kliknite na „Kontrolnu tablu“.
  • U meniju sa leve strane pronađite „Dodaci“ i pritisnite na to.
  • Na novootvorenoj stranici biće prikazan spisak svih postavljenih dodataka. Pronađite dodatak „Srpski prevod na latinici“.
  • Aktivirajte plugin.
  • Nakon ovoga WordPress će biti na srpskom jeziku i latiničnom pismu. Ukoliko želite da ponovo uključite srpski jezik na ćirilici potrebno je samo da isključite ovaj dodatak.
  • Posle svakog ažuriranja WordPress-a ostaće vaše podešavanje za jezik i pismo.
Podelite:

Ostavite komentar