Výběr jazyka a zapamatování si volby (lze bez persistentní proměnné)?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jan.kadraba
Člen | 2
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.