Vícejazyčný web, aneb jak na modul Localizer
Snad každý tvůrce webových stránek se někdy potýkal s vícejazyčnou verzí webu. Drupal 5.x je vybavený skvělým modulem Localizer, se kterým není problém snadno vytvořit vícejazyčný web. Pojďme se tedy podívat jak modul Localizer funguje a co umí.
Použití tohoto modulu umožňuje uživateli kdykoli změnit jazyk stránky přičemž se vždy zobrazí aktuální stránka ve zvoleném jazyku. Také registrovaní uživatelé mohou ve svém účtu využívat volby jazyka. Celá administrace je kompletně lokalizovaná. Nastavením v administraci můžeme povolit nebo zakázat přístup k lokalizovaným stránkám anonymním, či registrovaným uživatelům. Dále můžeme nastavit registrovaným nebo anonymním uživatelům z jakých jazyků si budou moci vybírat.
Modul Localizer disponuje nastavením, kde je možné nadefinovat vzhled zobrazení bloku s ikonkami výběru jazyka, jeho titulku apod. Pokud budeme myslet na SEO a chtít i url stránky v daném jazyce, i toto modul Localizer umí. Přeloží url konkrétní stránky. Umí změnit doménu např. na cs.domena.cz, en.domena.cz apod.
Modul Localizer umí překládat:
- menu
- bloky
- obsah (uzly)
- taxonomy
Než začneme s nainstalovaným modulem překládat, je třeba
- přidat jazyk v Administrace → Nastavení webu → Lokalizace
- stáhnout si lokalizaci zvoleného jazyka, kterou importujeme také v Administrace → Nastavení webu → Lokalizace
- nastavíme výchozí jazyk a povolení jazyka
- nastavíme uživatelům přístup k lokalizovaným stránkám. V Administrace → Uživatelé → Kontrola přístupu nastavíme oprávnění modulu Localizer. Např. pokud chceme povolit přístup všem uživatelům zaškrtneme Access Localizer pro anonymy.
Nastavení
V Administrace → Localizer můžeme provést tato nastavení:
- zvolit titulek bloku s výběrem jazyka, nebo titulek zakázat
- skrýt nebo zobrazovat aktuální jazyk
- možnost zobrazení názvu jazyka
- možnost zobrazení vlaječek jazyka
- velikost ikonek
- oddělovač mezi ikonou a názvem jazyka
- možnost zjišťování lokality uživatele, pro nastavení výchozího jazyka
- volba zobrazování úvodní stránky v lokalizované verzi
- nastavení předpony domény (cs.domena.cz, en.domena.cz)
- možnost nastavení vícejazyčné podpory (nastavení pro anonymní a registrované uživatele)
Tyto možnosti nastavte dle svého gusta.
Překlad
Nyní se můžeme pustit do překladu a ukážeme si:
Jak překládat obsah
- Zobrazíme stránku, kterou chceme překládat, vybereme položku translations a u zvoleného jazyka create translation.
- A vložíme přeložený obsah stránky. Můžeme si zde zároveň přeložit i položku menu, když rozklikneme nastavení menu – pokročilé nastavení. Rozklikneme translations a požadovaný jazyk. Zde napíšeme překlad menu. Stejným způsobem lze přeložit i url stránky, když rozklikneme nastavení url.
Jak překládat menu
- V administraci vybereme Prvky webu → Menu. U požadované položky zvolíme operaci upravit. Rozklikneme položku translations a zvolený jazyk. Zapíšeme překlad.
Jak překládat bloky
- V administraci vybereme položku Prvky webu – Bloky. U zvoleného bloku vybereme Konfigurace. Rozklikneme translations, vybereme jazyk a můžeme překládat.
Jak překládat taxonomy
- Taxonomy se překládají úplně stejným způsobem jako bloky.
Jak překládat url
- V administraci zobrazíme stránku, jejíž url budeme překládat. Klikneme na translations a na nadpis stránky v požadovaném jazyku a dále na upravit. Rozklikneme nastavení url a zapíšeme překlad.
Závěr
Doufáme, že Vás tento lehký úvod do modulu Localizer naladil a pomůže Vám tvořit vícejazyčné weby v Drupalu. Už teď se můžeme těšit na verzi Drupal 6.x, která bude možnosti přeložení obsahovat již v jádru systému.




Bloky
Hezký článek, to jste s ním nemohl přijít před 14 dny? Sem si to musel vybádat sám ;)
Funguje mi vše až na překlad názvu bloku a zrovna tady se autor článku dopustil několika nepřesností:
„U zvoleného bloku vybereme upravit.“
V mé verzi překladu Drupalu mohu vybrat tak akorát „Konfigurace“ (uznávám, je to ptákovina, ale proč nenazývat věci jejich jmény?)
Obrázek v kapitole „Jak překládat bloky“ zobrazuje překlad menu, takže mi nepomohl, protože já v konfiguraci bloku vidím akorát rozbalovací menu s výběrem jazyků, ale formulářová pole pro všechny jazykové verze bloku (jako u ostatních prvků webu) tam bohužel nemám. Pokud z rozbalovacího menu s výběrem jazyků vyberu nějaký jazyk, změním název bloku a uložím konfiguraci bloku, pak se změna provede názvu ve všech jazykových verzích, což je dost bl.. nežádoucí :-( Kudy kam?
Iru je zena :-) Ten obrazek
Iru je zena :-) Ten obrazek je spatne, zkusime opravit, konfiguraci jsem opravil
Nebylo by tedy vhodnější
Nebylo by tedy vhodnější překládat „Vložil/a“?
Ano, ve verzi 5.x to tak
Ano, ve verzi 5.x to tak myslim i je, zde mame jeste 4.7
Obrázek
„Ten obrazek je spatne, zkusime opravit“
Zapomnělo se/nechtělo se/nešlo to?
a
a
Re: bloky
Podarilo se nekomu prelozity blok? Me ne :-((
www.lvrdesign.com
Tip
aj, přesně tak. Tento článek sem potřeboval před měsícem :-)
Jinak mám tip jak na menu. Když to uděláte postupem zde popsaným, položky všech jazykových verzí webu se Vám nacpou do jednoho menu a v administraci je v tom pak dost binec. Osotně to řeším ne tímto výchozím způsobem – vytvořím si zvlášť menu pro každý jazyk (Menu CZ, Menu EN…), pak si vytvořím multilingual blok a do něho ty meny vložím vždy pro ten správný jazyk… výhoda je jak jsem napsal podstatně lepší přehlednost menu a modul i18n_menu můžete i vypnout (čím míň modulů tím líp…)
Taky doporučuji modul Pathauto, který Vám URL v jazyce vygeneruje automaticky, pokud ho nezadáte. Funguje bezvadně i s Localizer.
Poslední připomínka – Localizer zatím bohužel nepodporuje Views (nebo je to obráceně?..), takže pokud chcete překládat i pohledy, musíte buď upravit zdroják nebo mít jeden pohled pro každý jazyk. Což je hloupý. Pokud by měl někdo zájem pošlu návod jak se to dá drobnou změnou ve zdroji modulu views a jedním hookem ve vlastním modulu jakž-takž udělat.
ze neskoro
ja som lokalizaciu robil v oktobri a na drupal.sk som dal co to co sa tazko vybadalavo … ale je pravda ze vtedy to bola este hlboka doba 4.7.x verzie … ktora sa, ako sa zda jednoznacne pominula nuz i18n bol omnoho tazsi oriesok … (aj ked som toto nove translation este nenahodil ale vyzera „much more easy“)
Problém s překladem modulu Contact
Modul localizer jsem doposud bez problémů používal, dnes jsem však narazil. Zapnul jsem si totiž modul Contact, u kterého mi nelze přeložit položka menu. Resp. překlad v Administrace → Menu normálně vyrobím, Drupal ho uloží (vidím, že ho má v Translation uložený), ale v bloku Navigace ten překlad nikdy nezobrazí…
Pokud někdo víte, kde dělám chybu, budu moc vděčný za info.
ERROR!
Tak jsem ti ho nainstaloval a po zapnutí modulů jsem dostal zprávu:
user warning: Table ‚drupal_dacom.localizertranslation‘ doesn't exist query: SELECT * FROM localizertranslation WHERE (object_name = ‚menu‘ OR object_name = ‚menu_item‘) AND locale = ‚cs‘ in /home/www/dacom/dacom.cz/htdocs/includes/database.mysql.inc on line 120.
:( Používám verzi 4.7 a localizer pro 4.7
Máte někdo nějaký tip?
Už je to OK.
Prostě se nevytvořila tabulka. Tak jsem ji udělal ručně a hotovo. Nechápu, občas mi to takhle dělá.
Localizer - dost divné chování
tak se tu už několik hodin mořím s jedním problémem s modulem Localizer. Nainstaloval jsem ho a jede naprosto bezchybně. Až do té doby, než se odhlásím. Pak to dělá tuhle záhadu:
Stránky, které jsou přeloženy, tak přepnout do anglické verze jdou, ale stránky jako například hlavní strana, nebo článková stránka se už nepřepíná.
Viz: www.dacom.cz – tahle halvní stránka pro nepřihlášené přeonout NEJDE, ale jakmile se zaloguju (ne jako Administrator, ale i jako obyčejný uživatel), tak přepnout jde. Ale běžná stránka jako: www.dacom.cz/image/tid/5 zase nepřihlášenému nejde přepnout do češtiny a je pouze anglicky.
Dělá to skutečně psí kusy a já nejsem schopen odhalit čím to může být :( Nemáte někdo podobnou zkušenosti, nebo nápad?
A mám to
Tak sotva to sem napíšu tak mne napadlo vypnout cache. A světe div se – ono to pomohlo. Teda je to dost divný, ale funguje to…
no vidíte cache je někdy
no vidíte cache je někdy slušnej nepřítel :-) ale možná by stačilo jí jen vymazat ne?
Na vymazanie cache
Na vymazanie cache doporucujem modul http://drupal.org/project/devel… Oplati sa ho mat zapnuty pri vyvoji webu – pre programatora je nepostradatelny…
Lokalizer
Nainstaloval jsem lokalizer a administrace uz funguje jenom v anglictine :-( Po prepnuti do nejakeho jineho jazyka dostavam hlasku „Internal server error“. pouzivam www.cesky-hosting.cz, na blacklistu nebyl :-) Nemeli jste nekdo podobny problem? diky za radu.
opraveno, zapomel jsem na
opraveno, zapomel jsem na instalaci patchu :-) Tak snad uz to bude vsechno slapat :-)
problém s instalací
Zdravím, nevím proč ale nedaři se mi Localizer nainstalovat na web. Stahl jsem si ho a rozbalil podle navodu. Pak ho nahrál na web do korenoveho adresare webu. Cesta k Lacalizeru je www.doma.com/drupal-5.2/ jenže když tuto cestu zavolám na stránce se zobrazí „Internal Server Error“ a nevím co s tím. Prosím o pomoc!
spatne nastaveny htaccess
spatne nastaveny htaccess nebo webserver pro htaccesss a tudiz problem nesouvisejici s localizerem?
Vyresil nekdo ty bloky ???
Vyresil nekdo ty bloky ??? DIKY DIKY
Nevim, jestli myslíš přesně tohle ...
… ale pokud potřebuješ vytvořit vlastní vícejazyčný blok, dá se to vyřešit takto – do těla bloku vlož tento kod (nezapomeň přepnout Input format na PHP).
Idealne...
Idealne bych potreboval:
A uplne nejvic nejlepe bych chte mit:<?php
$languages=localizer_get_uilocale();
if ($languages == „cs“) {
// ZDE JEDNO MENU (ceske)
}
if ($languages == „en“) {
// ZDE DRUHE MENU (anglicke)
}
?>
MENU
--polozka 1
–polozka 2
--item 1
–item 2
–item 3
a pak mit:
<?php
$languages=localizer_get_uilocale();
if ($languages == „cs“) {
// CESKA VETEV MENU
}
if ($languages == „en“) {
// ANGLICKA VETEV MENU
}
?>
jinak dik za tvou odpoved, myslim ze uz je to dobry zaklad k tomu abych neco vymyslel (= predpokladal sem ze to pujde bez php – prece jen delam web co bude ovladat sekretarka :-/ )
vyreseno
tak aspon menu jsem uz vyresil..viz zde: http://www.drupal.cz/…-sekretarkou#… ..dik
Problémy v některých prohlížečích
Mám poměrně rozsáhlý vícejazyčný web, primárně český, do angličtiny a ostatních jazyků jsou přeložené jen důležité části.
Logické potom je zobrazit položku která není ještě přeložená v jazyce který přeložený je. Což jakž-takž funguje. Jenže když se například přepnu do angličtiny a dostanu se na tuto stránku tak se NĚKDY (zatím se nepodařilo objevit kdy přesně) stane že se spolu s obsahem přeloží zpět do češtiny i zbytek, tj. bloky a menu které přeložené jsou. Ještě horší je když se pak použiju link z menu. Občas se stane že potom následná stránka přeložená do angličtiny je, ale menu zůstane v češtině. Vlaječky v tomto případě zůstanou nastavené na angličtinu (mám nastavené schovávání vlaječky aktuálního jazyku). Nejhorší je že toto se chová víceméně v každém prohlížeči jinak. Ve firefoxu toto funguje víceméně dobře, nicméně když použiju IE, nebo operu je to katastrofa.
Buhužel jsem zatím nedokázal přijít na nějaké zákonitosti tohoto chování, proto se může zdát můj popis situace poněkud zmatený, zato se omlouvám. Pokud má někdo zkušenosti s takovýmto chováním drupalu prosím poraďte. Pokud bude potřeba pokusím se dovysvětlit potřebné aspekty.
Takže dotaz beru zpět, už je vyřešeno.
Takže dotaz beru zpět, už vyřešeno. Stačilo si přečíst návod k instalaci tohoto modulu (http://drupal.org/node/103419), je to trochu nad rámec instalace normálních modulů, což musím říct jsem trochu podcenil.
Nicméně si myslím že ani několik dalších uživatelů tady si to nepřečetlo, jinak by jim i ty blocky fungovali dobře tak jako teď i mě :-) Po správné instalaci tohoto modulu totiž budou u blocků fungovat změny jazyka. Bude to sice trochu jiné než u nodů, ale to nevadí. U standardní blocků které zobrazují menu nastavíte Jazyk: Any, aby se zobrazovali v každém jazyce. U blocků přímo vytvořených v sekci blocky (tedy ty co zobrazují přímo text) musíte block manuálně vytvořit pro každý jazyk a nastavit pro každý příslušný Jazyk. To ale nevadí, protože u nodů děláte v podstatě to samé, navíc blocků nikdy nebude nějak moc. Odkaz na návod jsem uvedl nahoře.
Poslat nový komentář