Lokalizace
Renderer zpřístupňuje aktuální jazyk, překlady a generování lokalizovaných URL. Přepínač jazyka je běžný odkaz vykreslený na serveru.
Nastavení jazyků
Localization.yaml nastavuje default_locale i fallback_locale na cs a v supported_locales povoluje cs/en. url.enabled zapíná lokalizované URL. Soubor se načte jen tehdy, když manifest Config.yaml uvádí modul Localization.
module: localization
config:
default_locale: cs
fallback_locale: cs
supported_locales: [cs, en]
url:
enabled: truePřekladový soubor
app/Language/en/messages.php vrací překlady anglické skupiny messages. Jméno souboru určuje skupinu, proto se klíč welcome čte jako messages.welcome. Česká varianta patří do app/Language/cs/messages.php.
<?php
declare(strict_types=1);
return [
'welcome' => 'Welcome to Lemonade.',
'navigation.home' => 'Home',
];Překlad a lokalizovaná URL
Routing registruje pojmenovanou routu home v localizedGroup(), aby pro ni šlo sestavit jazykovou URL. Ve view lang() čte aktuální překlad, localizedUrl() vytvoří odkaz a e() obě hodnoty escapuje pro HTML. Mimo view lze překlad získat přes TranslatorInterface::get().
<?php
declare(strict_types=1);
$router->localizedGroup(static function (Router $router): void {
$router->getNamed(
'home',
'/',
ControllerAction::for(HomeController::class, 'index'),
);
});
?>
<!-- In a request-rendered view: -->
<h1><?= e($this->lang('messages.welcome')) ?></h1>
<a href="<?= e($this->localizedUrl('home')) ?>">Home</a>