U današnjem članku napisati ću vam nekoliko iskustava koje sam imao u radu s Qtranslate pluginom (u sprezi s Qtranslate Slug dodatkom), odnosno objasniti kako riješiti nekoliko bugova koje dotični plugin ima.
Konkretno, mislim na problem pretraživanja web stranice kada se koristi dodatni jezik, odnosno ne-defaultni jezik. Pretraga izbacuje 404 error (not found). Kada sam riješio taj problem, pojavio se drugi a to je nefunkcioniranje numeriranja stranica rezultata pretrage. Drugim riječima, prva stranica rezultata pretrage je ok, klikom na drugu (ili svaku dodatnu) stranicu, vraćate se na Naslovnicu. Također, postoji problem sa suradnjom s megapopularnim WordPress SEO pluginom. Naime, želite moći upisati meta podatke i sl. na stranom jeziku, jel’? Postoji i problem sa višejezičnim imenom web stranice (site title). Kako napraviti stavke izbornike, naslove widgeta i nazive fotografija na više jezika…..
Zašto Qtranslate?
Kada klijent kao jednu od funkcionalnosti nove web stranice zatraži višejezičnost, prva asocijacija mi je WPML plugin. Jednostavno zato jer je odličan. No, WPML plugin nije besplatan i toliko jednostavan za korištenje kao Qtranslate. Cijene mu se kreću od 29$ do 195$ , ovisno o vrsti licence. Kad kažem da nije jednostavan, mislim isključivo ne pregršt opcija koje nudi. Praktički ne postoji aspekt web stranice kojeg ne možete prevesti. Korisniku koji je početnik i ne želi/zna petljati po postavkama, zasigurno će neke opcije djelovati zbunjujuće.
S druge strance, Qtranslate je besplatan i zadivljujuće jednostavan za rad. Da sumiram, nakon podešavanja osnovnih postavki (odabir jezika, strukture URL-a i sl.), u opcijama dodavanja članka/stranice, vidjeti ćete nove tabove s odabranim jezicima.
Spomenuo sam da sam uz osnovni plugin koristio i odličan dodatak imena Qtranslate Slug. On je nužan za mogućnost prijevoda permalinkova, tj. slugova, i raznih taxonomy-ja, odnosno imena kategorija, tagova i slično.
Problem #1 – pretraga radi samo u defaultnom jeziku
Najučestalija postavka je da ste pod Advanced settings Qtranslate plugina odabrali da koristi Pre-Path Mode koji “lijepi” kraticu jezika (/en/) prije permalink slug-a.
Drugim riječima, URL na defaultnom jeziku (vrlo vjerojatno hrvatski) izgledati će ovako:
www.moja-stranica.hr/ime-članka
dok će na engleskom jeziku URL izgledati ovako:
www.moja-stranica.hr/en/post-name
Sve super. Sve radi. No međutim, ako probate pretraživati web stranicu dok ste u nekom od dodatnih jezika, pretraga ne radi. Naime, zbog loše definicije koda, plugin će dodati još jednom oznaku jezika te će link izgledati ovako:
www.moja-stranica.hr/en/en/?s=pojam
Ovo naravno neće funkcionirati. Vidjeti ćete poruku Ooops, That page can’t be found (ili slično).
Rješenje koje slijedi odnosi se na dodavanje php koda u functions.php vaše child teme, a ne mijenjanje koda plugina. Možda je ovo pravi trenutak da razmislite o izradi site specific plugina koju smo opisali u članku Kreiranje plugina za dodavanje WordPress funkcionalnosti.
U functions.php ili site specific plugin dodajte slijedeći php kod:
remove_filter('get_search_form', 'qtrans_fixSearchForm',0); add_filter('get_search_form', 'qtrans_fixSearchForm_yop', 10, 1); function qtrans_fixSearchForm_yop($form) { //$form = preg_replace('#action="[^"]*"#','action="'.trailingslashit(qtrans_convertURL(get_home_url())).'"',$form); //qtranslate Slug compatibility, no duplicate /en/en/ (search) $form = preg_replace('#action="[^"]*"#','action="'.trailingslashit(get_home_url()).'"',$form); return $form; }
Problem #2 – ne radi “pagination” rezultata pretrage
Osposobili smo pretragu stranice neovisno o tome koji jezik stranice koristimo. Upisivanjem popularnijeg/općenitog pojma dobiti ćete rezultate pretrage kojih ima toliko da se ne prikazuju samo na jednoj stranici. Ovisno o tome kako vaša tema riješava ovo pitanje, postoji mogućnost da će prikaz rezultata biti limitiran na npr. 10 rezultata po stranici. Ako kliknete na stranicu 2 rezultata (ili bilo koju slijedeću), biti ćete redirektani na Početnu (Home) stranicu. Uf.
Ovaj ćete kod morati riješiti u qtranslate-slug.php datoteci Qtranslate slug plugina. Pristupite vašem serveru preko FTP klijenta, te potražite datoteku na slijedećoj putanji:
/wp-content/plugins/qtranslate-slug/qtranslate-slug.php
Na liniji 779 datoteke pronađite
if (isset($wp->matched_query))
i promijenite u
if ( isset( $wp->matched_query ) && ! isset( $query['s'] ) )
I voilà, sve radi.
Problem #3 – SEO muke – kako upisivati naslove/opise stranica na stranim jezicima?
U današnje vrijeme su svi svjesni kako treba poduzeti neke korake kako bi izvršili barem osnovnu SEO optimizaciju za web tražilice. Prvi korak je tzv. on-page optimizacija, dakle ono što možete poduzeti na svojoj web stranici. Odličan plugin za tu svrhu je WordPress SEO by Yoast, skinut preko 9.5 miliona puta. Neću spominjati sve njegove dobre (i rijetke loše) strane. No, da bi Qtranslate plugin uspješno surađivao s WordPress SEO pluginom, treba omogućiti npr. upisivanje naslova i opisa stranica/članaka.
U functions.php ili site specific plugin dodajte slijedeći php kod:
/** * Enable qTranslate for WordPress SEO * * @param string $text The string to translate * * @return string */ function qtranslate_filter( $text ) { return __( $text ); } add_filter( 'wpseo_title', 'qtranslate_filter', 10, 1 ); add_filter( 'wpseo_metadesc', 'qtranslate_filter', 10, 1 ); add_filter( 'wpseo_metakey', 'qtranslate_filter', 10, 1 ); add_filter( 'wpseo_opengraph_title', 'qtranslate_filter', 10, 1 );
Problem #4 – Kako riješiti naziv i slogan web stranice na stranim jezicima (Site title & description)
Ovo nije veliki problem no primjetio sam da mnogo korisnika traži soluciju.
U adminu pod Postavke -> Općenito pod Naziv web stranice upišite slijedeće:
[:hr]Hrvatski naziv[:en]Engleski naziv
U polju slogan upišite
[:hr]Moj sajt je fora[:en]My site is so cool
Naravno, za ostale jezike koristite pripadajuće kratice (language code).
Problem #5 – Kako riješiti nazive widgeta, stavke izbornika i imena fotki (pojedinačno i galerija)?
U polje Title widgeta upišite:
[:hr]Naslov widgeta[:en]Widget title
Za stavke izbornika je ista procedura:
[:hr]Naslov widgeta[:en]Widget title
Nema iznenađenja. I ovdje wrapate ime fotke s pripadajućim kodom:
[:hr]Naziv slike[:en]Image title
Ovo je potrebno ukoliko, recimo, koristite neki lightbox za prikaz galerije te se prikazuju imena(naslovi) fotki.
Pozdrav. Ja koristim najprostiji plugin google translate, i prevod je kao i sam gtranslate komičan. Ono što mene zanima jeste da li može da se kao na našem sajtu stave ikonice država i da se koristi plugin koji ste preporučili? Takođe, da li ima šortkod za taj plugin da bih mogao da ga ubacim na odgovarajuće mesto u temi za to? Pogledajte na sajtu ako vas ne mrzi. 🙂 http://medijator.com/
Pozdrav,
ne bih više preporučio korištenje ovog plugina. Eventualno možete testirati jednu od njegovih verzija qTranslateX koja, navodno, radi s posljednjom verzijom WP-a. (https://wordpress.org/plugins/qtranslate-x/)
Kao besplatno rješenje možete koristiti Polylang (https://wordpress.org/plugins/polylang/) a profesionalna solucija je definitvno WPML (https://wpml.org/).
Lp
Hvala.