Kdyby/Translator: jazyk přihlášeného uživatele

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

Jak můžu vyřešit situaci, že mám přihlášeného uživatele, který má v databázi uložen svůj preferovaný jazyk a potřeboval bych tento jazyk předat do translatoru. Dělat to v presenteru je už pozdě, protože aktuální jazyk používám již ve službách pro výběr správných tabulek.

Díky za informaci

one-two
Člen | 80
+
0
-

po přihlášení přesměrovat, něco jako $this->redirect('this', array('locale' => $userLocale)); by nešlo?

David Matějka
Moderator | 6445
+
+2
-

implementuj si locale resolver, viz existujici pro inspiraci

vypada to, ze registrace se pak provede takto:

myLocaleResolver: Foo\Bar\MyLocaleResolver
translation.userLocaleResolver:
	setup:
		- addResolver(@myLocaleResolver)

Editoval matej21 (15. 10. 2014 16:23)

j.salak
Člen | 42
+
0
-

Jj, jen to by mi nefungovalo u trvale přihlášených uživatelů, kterých bude většina.

j.salak
Člen | 42
+
0
-

Ta registrace se mi nějak nedaří. Dle dalších diskuzí jsem našel, že by se mělo dát registrovat vlastní resolver mezi ostatními resolvery v configu

translation:
default: en
whitelist: [en, cs]
resolvers:
user: Kdyby\Translation\LocaleResolver\LocaleUserResolver
request: off
header: on
session: on

ale nezaregistruje ho to

Editoval j.salak (15. 10. 2014 17:21)

Filip Procházka
Moderator | 4668
+
+1
-

Já bych si udělal User::onLogin listener, který mi vytáhne z uživatele jazyk a nastaví ho do SessionResolveru.

David Matějka
Moderator | 6445
+
0
-

No prave ze jsem koukal do kodu a to, co pises, podporovane neni. Imho by to moje melo fungovat. Hlasi to nejakou chybu?