contributte/translation jak vypsat aktuálně zvolený jazyk?

motorcb
Člen | 551
+
0
-

Zdravím. Používám contributte/translation pro překlady v šablonách, vše super, díky!

Nyní bych potřeboval v action vědět, jaký má uživatel jazyk a pro každý jazyk trochu modyfikovat zobrazovaná data. Jde to?

Do presenteru jsem si injectnul ITranslator, ale u něj nevidím žádný atribut, který by mi dal aktuálně zvolený jazyk :-(

	/** @var Nette\Localization\ITranslator @inject */
	public $translator;

Jde z $translator zjistit aktuálně zvolený jazyk? Nebo jak na to v presenteru?
Díky

uestla
Backer | 796
+
0
-

Přímo z rozhraní ITranslator to nezjistíš, ale zkus si injectnout přímo instanci právě onoho contributte translatoru:

/** @var Contributte\Translation\Translator @inject */
public $translator;

// zjištění aktuálního jazyka
$this->translator->getLocale();
emololftw
Člen | 81
+
0
-

Nejjednodusi me napada kdyz volis jazyk pomoci routeru, tak dotazovat primo persistentni paramter urceny pro lokalizaci

Tommy7777
Člen | 13
+
0
-

Pre zobrazenie dát je potrebné router nastavit:
Príklad:

 $router->addRoute('[<locale= cs|en>/]<presenter>/<action>[/<id>]', "Homepage:default");
 $router->addRoute('/<locale= cs|en>/<urlseo>', 'Article:default');

A prepínanie jazyka takto v latte:

   <div id="lang">
         <a n:href="Homepage:default locale=>cs"><img src=...></a>
         <a n:href="Homepage:default locale=>en"><img src=...></a>
   </div>

A vypisanie jazyka by som riesil tak ako vyssie pisali

$lang = $this->translator->getLocale();
//a nasledne
$this->template->lang = $lang;

Potom v danom latte k premenným pristupuješ tatko: {$lang} pr: <p> Jazyk, ktorý používam je {$lang} </p>

Alebo ked si chces kontrolne skontrolovať tak skus toto:

$lang = $this->translator->getLocale();
dump($lang);
die();

Na stránke ti to vypíše čo je v danej premennej, pre vlastnú kontrolu. V programovaní a v ďalšej práci na projektoch sa ti to bude určite hodiť

Editoval Tommy7777 (18. 12. 2021 10:21)