Výběr jazyka a zapamatování si volby (lze bez persistentní proměnné)?
- jan.kadraba
- Člen | 2
Zdravím ve spolek,
jsem začátečník tak prosím nekamenovat:-)
Snažím se vyrobit vícejazyčný web pomocí nette 2.2.1. Stavím na
základě sandboxu,překladač jsem rozběhal, ale řeším jak
s přepínáním jazyků. Udělal jsem si vlastní velmi jednoduchou
komponentu, která obsahuje seznam odkazů na dostupné jazyky.
Přepínání funguje, jen nevím jak to udělat aby si při další
návštěvě webu pamatoval (v session?) naposledy zvolený jazyk. Při
přepínání se nastavuje v BasePresenter persistentní proměná
$lang (podle příkladů tady).
Dalo by se vyhnout nějak persistentní proměnné(nelíbí se mi, že se to
neustále předává do všech odkazů a navíc stejně si uživatel musí volit
jazyk si musím pokaždém přístupu na web znovu) a udělat to spíše přes
proměnnou uloženou v session? Nebo na podobném principu?
A druhá věc, zda se dá nějak udělat, aby se jazyk detekoval podle
http – Accept-Language, zjistil jsem, že se dá použít v presenteru
$this->httpRequest->detectLanguage(), ale toto končí chybou
Cannot read an undeclared property
App\Presenters\HomepagePresenter::$httpRequest.
Když to shrnu – vše co vlastně potřebuju, je aby si uživatel vybral jazyk a ten byl přednastaven při další návštěvě :-)
Díky za nakopnutí správným směrem
- Šaman
- Člen | 2666
To, že je to ve všech odkazech, je správně z hlediska SEO. Jinak by
robot našel každou chvíli na stejné stránce jiný text. A nešel by
udělat odkaz na verzi s vybraným jazykem (pošlu odkaz, vidím to česky, ale
příjemci naběhne třeba anglická verze).
Hezčí tvar adresy i s lazykem se dá vyřešit v routeru.
Jinak to, co popisuješ ty dosáhneš buď session, nebo (spolehlivěji) si to ulož v databázi v nastavení profilu uživatele.
- jan.kadraba
- Člen | 2
No jo, máš pravdu, to jsem si neuvědomil, nezbývá než nastudovat jazykové mutace a jejich nastavení v routeru:-) Díky moc
Editoval jan.kadraba (23. 6. 2014 22:42)
- Tomáš Votruba
- Moderator | 1114
Detekci jazyka z httpRequestu nebo držení jazyka v session řeší sama knihovna Kdyby\Translation (mimo dalších featur). Pokud bys chtěl něco z toho přeci jen využít.