Jak přepínat jazykové verze v contributte / translation?

Allconius
Člen | 317
+
0
-

Ahoj, mám v aplikaci nastavenou contributte/translation (https://github.com/…cs/README.md#…), ale nevím jak přepnout jazyk . V common.neon mám:

<?php
translation:
    locales:
        whitelist: [en, cs, sk]
        default: cs
        fallback: [cs]
    dirs:
        - %appDir%/lang
?>

když změním „cs“ na „en“ tak mám stránky v angličtině, ale nevím jak to přepnu uživatelsky v šabloně ? Nebo musím mít 2 kopie aplikace s rozdílným common.neon pro cs a en verzi ?

David Matějka
Moderator | 6445
+
+2
-

viz ta sekce locale resolvers. nejcasteji se pouziva locale v routeru, takze budes mit neco jako new Route('<locale cs|en|sk>/<presenter>/<action>')

Allconius
Člen | 317
+
0
-

David Matějka napsal(a):

viz ta sekce locale resolvers. nejcasteji se pouziva locale v routeru, takze budes mit neco jako new Route('<locale cs|en|sk>/<presenter>/<action>')

ok, super, funguje toto:

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

nevíš jak dostanu ten překlad i do formuláře ? V šabloně je to jasný tam mám třeba:

<?php
<h3>{_language.registrace.nadpis}</h3>
?>

ale když v presenteru do formu dám:

<?php
        $form->addText('jmeno', 'language.registrace.jmeno', 25, 50)
            ->setRequired('Zadejte Vaše jméno.');
?>

tak se mi místo překladu jen vypíše ten text „language.registrace.jmeno“

David Matějka
Moderator | 6445
+
+2
-

form má metodu setTranslator

Allconius
Člen | 317
+
0
-

David Matějka napsal(a):

form má metodu setTranslator

A je možné používat latte i s lokalizací ? Mám tam např:

<?php
<a href="{$basePath}{if ($locale<>'cs')}/{$locale}{/if}/">
?>

jde tam nějak dostat tu proměnnou $locale ? Např.

<?php
<a n:href="{$locale}/Homepage:">
?>

a v případě přesměrování v presenteru ?

<?php
$this->redirect('Sign:in');
?>

jak udělat aby to šlo na anglickou mutaci a ne na default „cs“ ?

David Matějka
Moderator | 6445
+
+2
-

je to normalni parametr, stejne jako treba id. takze treba n:href="Homepage: locale => en"

Allconius
Člen | 317
+
0
-

David Matějka napsal(a):

je to normalni parametr, stejne jako treba id. takze treba n:href="Homepage: locale => en"

bezva, díky moc :-)

Allconius
Člen | 317
+
0
-

Chvíli mi zabralo než jsem na to přišel, tak by se to třeba někomu mohlo hodit, třeba i mě po nějaké době :-)))

<?php

<a n:href="Homepage: locale => $locale">

$locale = $this->translator->locale;
$this->redirect('Sign:in', $locale);
exit;

?>
Allconius
Člen | 317
+
0
-

Je možné nějak nastavit aby se mi měnil presenter u přepínání jazyků podle aktuální stránky ? Tzn. „Homepage:“ by byla proměnná v závislosti na presenteru, který ji zobrazil ?

<?php
<div class="jazyky">
<div class="jazyk"><a n:href="Homepage:"><img src="{$basePath}/img/flag_cs.png" alt="CS" /></a></div>
<div class="jazyk"><a n:href="Homepage: locale => en"><img src="{$basePath}/img/flag_en.png" alt="EN" /></a></div>
<div class="jazyk"><a n:href="Homepage: locale => ru"><img src="{$basePath}/img/flag_ru.png" alt="RU" /></a></div>
</div>
?>
ali
Člen | 342
+
0
-

@Allconius a nestaci ti treba na zaklade locale nacist jinaci latte sablonu?

CZechBoY
Člen | 3608
+
+1
-

Můžeš zkusit this

<div class="jazyky">
<div class="jazyk"><a n:href="this, locale => cs"><img src="{$basePath}/img/flag_cs.png" alt="CS" /></a></div>
<div class="jazyk"><a n:href="this, locale => en"><img src="{$basePath}/img/flag_en.png" alt="EN" /></a></div>
<div class="jazyk"><a n:href="this, locale => ru"><img src="{$basePath}/img/flag_ru.png" alt="RU" /></a></div>
</div>
Allconius
Člen | 317
+
0
-

CZechBoY napsal(a):

Můžeš zkusit this

<div class="jazyky">
<div class="jazyk"><a n:href="this, locale => cs"><img src="{$basePath}/img/flag_cs.png" alt="CS" /></a></div>
<div class="jazyk"><a n:href="this, locale => en"><img src="{$basePath}/img/flag_en.png" alt="EN" /></a></div>
<div class="jazyk"><a n:href="this, locale => ru"><img src="{$basePath}/img/flag_ru.png" alt="RU" /></a></div>
</div>

funguje, super, díky moc :-)