Contributte/Translation – nelze přepínat jazyky
- pikapika
- Člen | 4
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.
- pikapika
- Člen | 4
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.