Contributte/Translation – nelze přepínat jazyky

pikapika
Člen | 4
+
0
-

Ahoj,
prosím o radu do našich stránek potřebujeme implementovat jazykové překlady.
Pomocí Composeru jsem instaloval Contributte/Translation , překládání mi funguje, ale pouze změnou default nastavení translation v common.neon

common.neon

services:
	- App\Router\RouterFactory::createRouter

extensions:
    translation: Contributte\Translation\DI\TranslationExtension

translation:
    locales:
        default: cs
        fallback: [cs]
        whitelist: [cs, en, zh]
    dirs:
        - %appDir%/lang
    localeResolvers:
        - Contributte\Translation\LocalesResolvers\Router

RouterFactory

	public static function createRouter(): RouteList
	{
		$router = new RouteList;
		$router->addRoute('[<locale=cs cs|en|zh>/]<presenter>/<action>[/<id>]', 'Homepage:default');
		return $router;
	}

BasePresenter

use Nette;

abstract class BasePresenter extends Nette\Application\UI\Presenter
{
    /** @persistent  */
    public $locale;
}

nav.latte

<li><a n:href="this, locale => cs"><img src="{$basePath}/front/img/czech_flag.svg" width="35" alt="Czech Republic flag"></a></li>
<li><a n:href="this, locale => en"><img src="{$basePath}/front/img/uk_flag.svg" width="35" alt="UK flag"></a></li>
<li><a n:href="this, locale => zh"><img src="{$basePath}/front/img/china_flag.svg" width="35" alt="China flag"></a></li>

odkazy mi výše uvedené vygeneruje ve formátu projekt.loc/en/ i projekt.loc/zh/ , ale odkazy nefungují a když dané adresy zapíšu do adresního řádku tak mi to vypíše chybu 404.

Mohl by mě někdo prosím nakopnout kde dělám chybu, nebo co přehlížím?

Díky za pomoc.

NouF
Člen | 67
+
0
-

Ahoj,

já používám na změnu jazyku handler


	public function handleChangeLocale(string $locale): void
    {
        $this->translatorSessionResolver->setLocale($locale);
        $this->redirect('this');
    }

Ale rád se podívám na lepší řešení.

pikapika
Člen | 4
+
0
-

NouF napsal(a):

Ahoj,

já používám na změnu jazyku handler


	public function handleChangeLocale(string $locale): void
    {
        $this->translatorSessionResolver->setLocale($locale);
        $this->redirect('this');
    }

Ale rád se podívám na lepší řešení.

Ahoj, tak jsem zkusil nastavit i tvoje řešení ale nefungovalo, zkusil jsem Contributte/Translation odinstalovat a nainstalovat znovu a nějak se mi to povedlo rozchodit.

Nevím, asi nějaký šotek, ale díky za pomoc.