Превођење и проналажење тема за Вордпрес

У овом тексту покушаћу да објасним како преводити теме за Вордпрес и како уопште пронаћи теме које се могу пронаћи на овај начин.

Вордпрес користи Гну Геттекст алате за локализацију. Геттекстом се из изворног кода програма извлачи текст који треба превести, и смешта у посебну датотеку са наставком „.POT“ (од PO Template). Затим се за сваки појединачни језик на који се програм преводи прави нова збирка порука (ПО датотека) од ПОТ датотеке, и у њој се врши превод. Из те датотеке са завршеним преводом се прави датотека са наставком „.MO“ која се користи на серверу.

Превод целокупног административног дела, теме Classic и додатака који долазе уз званично издање налази се у датотеци sr_RS.mo. Међутим, за превођење других тема и додатака користе се посебне датотеке за сваку тему/додатак, па тако се неће одмах приказивати превод на блогу који је видљив посетиоцима уколико имате неку другу тему сем две које долазе уз званично издање.

Да бисмо превели неку тему, постоје два начина. Први начин је да се ради „ручни“ превод, тј. превођење израза у свим датотекама теме у неком уређивачу текста. Иако овако може да се добију најквалитетнији резултати, проблеми су што то одузима доста времена и највећи проблем је што је то потребно радити приликом сваког ажурирања теме, иначе се све губи.
Други начин је онај о коме ћемо овде говорити. То је превођење које се заснива на систему уграђеном у Вордпрес, геттексту. За овај начин мора бити испуњен један предуслов, а то је да је тема интернационализована, тј. да је аутор ставио могућност да се она преводи преко геттекста. Да ли тема користи геттекст, може се проверити на више начина. Већина аутора таквих тема у опису наводи и могућност превођења (изрази као што су internationalization (скр. i18n), localization (скр. l10n), translatable, gettexted и сл). Такође се може видети и у самом пакету теме, да ли постоји .pot датотека или већ готове .po и .mo датотеке за неке језике (некад се то налази у посебној фасцикли, нпр. locale, translations и сл) или да ли се у некој од php датотека теме налази функција load_theme_textdomain (најчешће у датотеци functions.php). Уколико је неки од услова испуњен, тему можемо преводити на начин који ће бити описан испод.

Оно што нам је сада потребно је програм за превођење. У овом упутству биће описан програм poEdit, који омогућује превођење у напредном графичком сучељу и ради на оперативним системима Windows, Linux и Mac OS X. Постоје и други алати, више о њима можете прочитати овде. Програм poEdit је преведен на српски језик и тај превод је укључен у саму инсталацију програма. Од подешавања у овом програму, за сада је неопходно да унесете ваше име и адресу е-поште.

Сада када имамо програм, морамо да проверимо да ли се у пакету теме налази нека датотека са наставком .pot. У пакету може да се налази само једна оваква датотека. Понекад аутор уместо .pot датотеке стави .po датотеку која је празна (иначе, разлика између .pot и .po датотека је у томе што се у .po датотекама може уносити превод) и са којом може одмах да се почне са радом; она обично има име теме или неко друго које асоцира да се ради о датотеци за превођење. Оваквој .po датотеци једноставно промените екстензију у .pot у неком управљачу датотека (нпр. под Виндовсом Windows Explorer, Total Commander и сл). Још један случај је да се .pot датотека посебно преузима од пакета теме и то је увек назначено на страници за преузимање теме. За остале случајеве (када нема ових датотека) морате или да контактирате аутора теме да их направи, да прочитате упутства на енглеском како да их направите или да сачекате да се ово упутство (једног дана) допуни и са тим описом.

Сада имамо ПОТ датотеку и програм и могли би да почнемо са радом. Уобичајен је један начин за почетак превођења у овом програму, а то је превођење „од нуле“. То ће исто бити описано касније, али ћу прво објаснити један други начин, који може да олакша рад. Он се заснива на постојећем преводу. Пошто се користи геттекст за локализацију, онда се овде користи једна од његових главних предности, а то је да се не мора поново преводити већ преведено. Ми овде то користимо на мало другачији начин, тако што ћемо ниске које се појављују и у теми и у постојећем преводу да аутоматски преведемо. Под постојећим преводом подразумевам датотеку sr_RS.po којом се преводи административни део Вордпреса и тема Classic и која се налази у инсталацији у директоријуму wp-content/languages (или је можете директно преузети из складишта), али и датотеку sr_RS.po којом се преводи подразумевана тема Kubrick и која се налази у директоријуму теме wp-content/themes/default (и њу можете преузети из складишта); ради лакшег сналажења њу ћемо надаље звати sr_RS-kubrick.po. Дакле, у обе датотеке се налазе преводи по једне теме, с тим што се у главној датотеци sr_RS.po налазе и преведени бројни други изрази. Већина тема користи исте или сличне изразе, па ми олакшавамо рад и те исте изразе аутоматски преводимо, док ћемо ручно преводити оно што се не појављује у постојећим преводима. У зависности од комплексности теме коју желимо да преведемо зависи и колики број ниски ће се аутоматски превести а колики ћемо морати ручно.

У нашем примеру преводимо тему која се користи и на овом блогу MistyLook. Отварамо датотеку постојећег превода у програму poEdit; можемо само једну од ове две а можемо и обе у два прозора да би упоредили где ћемо имати мање посла. Када смо отворили постојећу ПО датотеку, бирамо Каталог/Освежи каталог путем POT датотеке, као на слици испод.

Освежавање каталога

Затим бирамо ПОТ датотеку теме са диска, у овом случају mistylook.pot.

Бирање шаблона

Програм затим упоређује ниске из постојећег превода и новог шаблона и приказује нам колико има нових а колико старих ниски. На првој слици имамо приказ после осежавања главне датотеке sr_RS.po а на другој после освежавања датотеке теме Kubrick.

Освежавање Освежавање

После освежавања програм нам приказује свој основни изглед, где у дну можемо прочитати статистике превода. Ово нам је овде битније зато што смо хтели да видимо са којом постојећом датотеком би било мање посла. Тема MistyLook има неке напредне функције, па се у оба случаја аутоматски преводи само 20%, али је разлика у броју нејасних низова и потпуно непреведених. Овде да објаснимо појам „нејасни низ“: то је израз који није потпуно преведен, али нам је програм понудио превод израза чији је оригинал (на енглеском) сличан са овим, и онда ми можемо да извршимо само мање измене. Касније ћемо видети конкретне примере. На нашем примеру са постојећим главним преводом имамо 51 нејасан низ а са преводом Kubrick теме 27. Ја бирам прву датотеку и са њом настављам рад.

Каталог после освежавања Каталог после освежавања

Као што се види на слици испод, у програму се приказује прво списак ниски, а затим поља у којима се приказује изабрана ниска: оригинални израз се појављује у горњем пољу док се превод уноси у пољу испод. На такав начин се преводи. У списку се могу јасно разликовати непреведене ниске, нејасне и оне које су преведене.

Каталог после освежавања

На сликама испод могу се видети примери неких нејасних низова, где се може видети оригинал и предложени превод. Некад је предложени превод добар и може се оставити без измена а некада је потребно извршити неке измене. Да би скинули ознаку „Нејасно“ притисните Ctrl+U на тастатури или мишем на сличицу облака на линији са алаткама (последња слика испод).

Нејасан превод Нејасан превод Нејасан превод Нејасан превод Нејасан превод

Нека објашњења око самог превођења.

За сваку ниску можемо погледати где се она налази у кôду у самој датотеци. То радимо тако што притиснемо десни тастер на мишу и бирамо неку од датотека, а затим нам се појављује нови прозорчић са обележеним кодом. Напомена: да би ово радило, ваша радна .po датотека се мора налазити у истој фасцикли као и ПОТ датотека теме или у почетној фасцикли теме.

Бирање изворне датотеке Преглед изворне датотеке

У самим нискама за превођење се могу налазити и изрази типа » или . То је у ствари ХТМЛ код који служи да се избегну неки нежељени ефекти код php скрипти а који на готовој страници приказују неке знаке. У првом примеру (») то је » а у другом () то је тротачка …. Да бисте видели о ком знаку се ради, идите на ову страницу на Википедији. Уколико се између знакова & и ; налази нека реч (као у случају примера ), нађите ту реч у колони Name и у колони Character видећете који је то знак. Када се између знакова # и ; налази број, потражите тај број у колони Unicode code point — он је тамо приказан између заграда (на пример, за » писаће U+00BB (187)); опет у колони Character гледате који је то знак.

Нејасан превод

У оригиналним изразима ће вам се понекад појављивати и ознаке за датум и време, као на слици испод, Некад ће се само те ознаке налазити у оригиналном изразу, а некад ће бити унутар неког дужег. Њима се одређује облик датума и времена, на пример, да ли ће се појављивати 01.01.2000. или 1. јануар 2000. Да бисте подесили ово правилно, погледајте званичну страницу ПХП-а са објашњењем за сваку ознаку и примерима.

Облик датума

Као што је већ на почетку написано, за сервер нам је потребна МО датотека, која се добија од радне ПО датотеке, и пошто за превођење користимо програм poEdit, онда ће се са сваким снимањем ПО датотеке снимати и одговарајућа МО датотека. Она мора имати назив sr_RS.mo и мора се налазити у почетном директоријуму теме.

Негде сам написао да се може преводити и „од нуле“. Овде не користимо никакав постојећи превод већ све изразе преводимо. Сва објашњења која су изнад дата се и овде примењују. Једино што овакав превод започињемо тако што отварамо програм poEdit, затим бирамо Датотека/Нови каталог од POT датотеке… Онда бирамо ПОТ датотеку коју желимо и појављује нам се образац који би требало да попунимо као на сликама испод. Оно што је важно је да унесе правилне облике за множину. Следећу линију прекопирајте тамо тако што ћете обележити обе линије испод одједном (то је једна, али због величине странице се поделила на две) и она мора цела тамо да се пренесе неизмењена:

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

Када попунимо поља притиснемо У реду и отвара нам се дијалог где бирамо где ћемо снимити нову ПО датотеку и како ћемо је именовати. Најбоље да је снимите тамо где се налазила и ПОТ датотека, а име мора да буде sr_RS.po. Надаље се ради исто као и у претходном објашњењу.

Бирање шаблона Празан обрзац Попуњен обрзац

На крају би требало да имамо готов превод жељене теме. Када се тема ажурира, ви ћете морати да ажурирате ваш превод. Поступак за ово је идентичан оном који је коришћен у овом упутству за освежавање постојећег превода новим ПОТ шаблоном. Једино што ћете ви добити много мањи број нових низова, а можда и ниједан нови.

Оно што остаје као проблем је како наћи теме које користе геттекст и које се могу овако преводити. Ја нисам нашао ниједан списак или збирку са таквим темама, нити се такве теме посебно означавају у обичним збиркама Вордпресових тема.

Међутим, ја сам пронашао један начин како доћи до таквих тема. Поред готовог софтвера Вордпрес, постоји и његово издање где ви не морате имати ваш домен и сервер а можете отворити потпуно бесплатно блог који ће покретати Вордпрес. Тамо су понуђене бројне теме које ви можете изабрати. Пошто се и то место може превести, и за њега постоји готови ПОТ шаблон, али за разлику од оних које ми користимо, тамо се у њему налазе изрази за целокупан пројекат, укључујући и све теме. Тако ми претражујући ту ПОТ датотеку можемо видети које то теме користе геттекст за превођење. Датотека је wpcom.pot а да би добили имена датотека тражимо wp-content/themes/pub/ као почетак датотеке у којој се неки израз налази. Оно следеће име које се налази после косе црте је име теме. Такође може се тражити и wp-content/themes/ само да се после тога не налази pub. Испод је списак овако сакупљених имена. То нису права имена тема, већ имена фасцикла тема, а на основу тога можете доћи и до одговарајуће теме претражујући интернет за тај израз или да те изразе поделите на две-три речи (можете закључити сами по имену).

Знам да ово није баш најсјајнији начин за долазак до тема али то је једини до ког сам ја дошао (дај Боже да неко може да ми каже да постоји и неки други, али слаба вајда од тога).

Било би добро да тај ваш превод поделите са другима, тако што ћете га послати аутору теме и што ћете се јавити овде, како би могли да направимо неки списак тема које су преведене на српски.

Напомена: овај текст није у потпуности уобличен, могуће су допуне са прецизнијим или тачнијим објашњењима. Ваше сугестије и примедбе су добродошле.

Списак имена фасцикли преводљивих тема:

  • almost-spring
  • ambiru
  • andreas04
  • andreas09
  • benevolence
  • black-letterhead
  • blix
  • chaostheory
  • chaoticsoul
  • classic
  • connections
  • contempt
  • cutline
  • daydream
  • digg3
  • dusk
  • emire
  • fadtastic
  • fauna
  • fjords
  • fleur
  • flower-power
  • fresh-bananas
  • freshy
  • garland
  • girl
  • greenery-10
  • green-marinee
  • gridlock
  • hemingway
  • hoofeiv4
  • iceburgg
  • journalist
  • k2
  • light
  • mistylook
  • neat
  • neo-sapien-05
  • ocadia
  • ocean-mist
  • papier
  • pool
  • pressrow
  • pub
  • quentin
  • redoable-lite
  • regulus
  • rounded
  • rubric
  • sandbox
  • sandbox-097
  • sandbox-10
  • sapphire
  • solipsus
  • subtle
  • sunburn
  • supposedly-clean
  • sweet-blossoms
  • tarski
  • thirteen
  • toni
  • tulip-time
  • twenty-eight
  • unsleepable
  • whiteasmilk

9 коментара

  1. Milan Paunovic

    Nisam uspeo da pronadjem pot ili po fajl za misty look temu sa originalnog sajta. Da li bi mogao da me uputis gde bih to mogao da pronadjem. Hvala!

    Одговори
  2. Pozdrav,prvo da se zahvalim na tvom trudu,hvala,post je odlican.
    Imam par pitanja.Guglao sam da bih nasao odgovore,ali evo ovo sto nisam nasao,ili mi nije jasno iako sam nasao odgovore,da pitam ovde.

    Prvo oni pravilni oblici za mnozinu,mozes li da mi pojasnis sto se bas tako pisu,ili bar neki link sa objasnjenjima.I za sta oni sluze?

    Drugo sto me interesuje,ako tema ne sadrzi u sebi .POT fajl,da li to znaci da ona nije prevodiva na taj nacin sa pot fajlovima?Ili bih mogao izpocetka da je prevedem,tacnije neke reci koje su mi bitna da prevedem na neki jezik.Znaci pitanje je da li bih mogao bilo koju temu da prevedem na taj nacin?

    Hvala unapred na odgovoru.Pozdrav

    Одговори
    1. Prvo oni pravilni oblici za mnozinu,mozes li da mi pojasnis sto se bas tako pisu,ili bar neki link sa objasnjenjima.I za sta oni sluze?

      Мислио сам да већ постоји веза унутар текста, али изгледа да је нема. Погледај овде за више објашњења, надам се да ће појаснити.

      Drugo sto me interesuje,ako tema ne sadrzi u sebi .POT fajl,da li to znaci da ona nije prevodiva na taj nacin sa pot fajlovima?

      Е ово већ сигурно пише у тексту, погледај четврти пасус, ту је описано како видети да ли је тема интернационализована.

      Ili bih mogao izpocetka da je prevedem,tacnije neke reci koje su mi bitna da prevedem na neki jezik.Znaci pitanje je da li bih mogao bilo koju temu da prevedem na taj nacin?

      Ако тема не подржава геттекст, онда се она мора ручно превести. Исто у четвртом пасусу је дато нешто мало а има и мало детаљније овде (и у порукама испод) о томе како то конкретно урадити.

      На оба места су дате и мане овог начина превођења па зато добро проучи.

      Одговори
  3. Hvala na brzom odgovoru,izvinjavam se sto mi je promakao odgovor koji je bio u tvom text-u,mislim da cu da se usredim na to da probam da ugradim php funkcije i da zamenim hardkorovane reci sa gettekst funkcijama,valjda nece biti puno muke oko ugradnje getteksta u neku temu.Da li mislis da je ovo izvodljivo?
    Hvala jos jednom,pozdrav.

    Одговори
    1. Наравно да је изводљиво. Уколико и буде проблема увек можеш да погледаш како је урађена подразумевана тема Kubrick (интернационализовано издање доступно само у локалним паковањима) или нека друга преводива тема (користи се филтер translation-ready).

      Погледај ово (посебно одељке Placeholders и Plurals) и ово упутство.

      Оно што мислим да је битно је и да контактираш аутора теме да видиш да ли можда он већ ради на томе и ако не да ли би унео твоје измене, да тај рад буде доступан и другима.

      Одговори
  4. Hvala na linkovima.Mislio da pokusam da automatizujem taj proces,da napisem mali programcic,ali ce problem biti izvuci sve hardkorovane reci,zavisno od teme do teme,…

    Одговори

Оставите одговор

Смернице о коментарима:
  • поља означена са * су обавезна
  • уколико желите своју сличицу поред коментара, отворите налог на Граватару
  • уколико желите да знате да ли је неко одговорио на ваш коментар, штиклирајте кутијицу „Желим да примам коментаре који уследе на своју е-пошту“
  • можете користити следеће XHTML ознаке: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *