Nefungujicí locale resolvers

crassus
Backer | 78
+
0
-

Ahoj,

posílám v hlavičce „Accept-Language“ hodnotu „en“ v requestu na domain.cz/customer.

Rád bych docílil přesměrování na domain.cz/customer/en, místo toho ale pořád končím na domain.cz/customer/cs.

Viz screen

Jak je to možné když mám povolený jenom AcceptHeaderResolver, který ještě k tomu správně vybral jazyk en?

RouterFactory.php

		$router[] = new Route(CUSTOMER_ID . '/[!<locale=cs>/]', [
            'presenter' => 'Front',
            'action' => 'default',
            'locale' => [
                Route::FILTER_TABLE => [
                    "cs" => "cs",
                    "en" => "en"
                ]
            ]
        ]);

Asi bude chyba v routeru. Jak mu mám říct, aby se řídil tím co vrací locale resolution? Používám translator: https://github.com/…/Translation

Děkuji moc všem za radu :)

Editoval crassus (4. 11. 2018 19:26)

MajklNajt
Člen | 516
+
0
-

ahoj, podľa mňa AcceptHeaderResolver nemá nič spoločné s routami, presmerovanie bude teda zrejme nutné vyriešiť až na úrovni presenteru

crassus
Backer | 78
+
+1
-

MajklNajt napsal(a):

ahoj, podľa mňa AcceptHeaderResolver nemá nič spoločné s routami, presmerovanie bude teda zrejme nutné vyriešiť až na úrovni presenteru

Ahoj,
děkuji moc za radu. Přesměrování jsem nakonec vyřešil na úrovni presenteru takto:

	public function startup()
    {
        parent::startup();

        if(is_null($this->locale))
        {
            $locale = $this->acceptHeaderResolver->resolve($this->translator) ?? 'en';
            $this->redirect('this', ['locale' => $locale]);
        }
    }