Ahoj, resim preklad rout. Idealne me napadlo toto:

$router[] = new Route('page/<action>', array(
            'presenter' => 'Page',
            'action' => array(
                Route::FILTER_OUT => function ($str) use ($translator) {
                    return $translator->translate('front.common.router.'.$str); #translate action
                },
                Route::FILTER_IN => function ($str) use ($translator) {
                   #obracene pole z front.common.router a hledat puvodni action
                }
            )
        ));

Je to dobre reseni? Jediny problem mam ze nevim jak ziskat obracene preklady pro FILTER_IN

To není dobré řešení, protože translator si bere jazyk právě většinou až z requestu a router se volá před requestem.

Raději bych si udělal například nějakou mapu v nějakém speciálním k tomu určeném neonu, jehož načítání bych si cachoval a použil právě jako mapu na překlady routeru.

Pouzivam vlastni resolver, ktery se spusti pred requestem, tudiz toto neresim. Nakonec jsem to vyresil tak, ze mam vlastni slovnik jen na routy a prekladam takto:

$router[] = new Route('<action>', array(
            'presenter' => 'Page',
            'action' => array(
                Route::FILTER_OUT => function ($str) use ($translator) {
                    $trans = $translator->translate('router.' . $str);
                    return $trans ?: $str;
                },
                Route::FILTER_IN => function ($str) use ($translator) {
                    $trans = array_search($str, $translator->getMessages()['router']);
                    return $trans ?: $str;
                }
            )
        ));
  • Comments:

  • No, jak myslíš. Pořád si ale myslím že translator na tohle není vhodný :)

    by Filip Procházka at 3.4.2015 2:40

You must first log in to participate in this discussion