Překlad statických stránek

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
argosovo
Člen | 54
+
0
-

Ahoj, překládám web a momentálně řeším dva zásadní problémy při překladu statické části aplikace(jde o texty, které se mění maximálně jednou do roka a tak mi přijde zbytečné cpát je do databáze atd.).

  1. existuje v Latte možnost označit překlad? například by se mi hodilo něco jako – to by naprosto pokrývalo možnosti statického latte (samozřejmě by se doplnil blok podle zrovna nastavené locale):
<?php
{block obsah, lang=cs}
český text v šabloně
{/block}
{block obsah, lang=en}
...
{/block}
?>

Pokud neexistuje, dají se nějak jednoduše překládat statické stránky?

2)druhý problém je URL – v cizích překladech je samozřejmě minimálně neefektivní mít v url věci jako „web.cz/stranky/o-spolecnosti“ – našel jsem možnost s překladem pomocí filtru v routeru, ale nějak nejsem schopný zprovoznit to pouze pro určitý jazyk – buď mi filter přeloží všechny možnosti a nebo ani jednu – viz. skoro z dokumentace:

<?php
$route = new Route('[<locale=cs cs|en>/]<presenter>/<action>/<id>', array(
    'presenter' => array(
        Route::VALUE => 'Homepage',
        Route::FILTER_TABLE => array(
            // řetězec v URL => presenter
            'pages' => 'Stranky',
        ),
    ),
    'action' => 'default',
    'id' => NULL,
));
?>

pokud by fungovalo toto, není problém si do routeru doplnit translator (používám Kdyby\Translation) ve kterém budu mít slova, pro těch pár statických presenterů a akcí, které mám…

Nebo na to jdu ze špatné strany?
Děkuji za tipy

Pavel Janda
Člen | 977
+
0
-

@argosovo http://www.paveljanda.com/…uty-a-filtry
V tom příkladu si v metodách urlIn a urlOut checkni parametr locale a v závislosti na tom se rozhodni, zda vrátíš něco smyslupného, nebo NULL.

Machy8
Člen | 59
+
-3
-

1. Na překlad používám Kdyby/Translation nebo na základě jazyka includuju statickou šablonu.

{if $locale === "cs"}
	{include "cs.latte"}
{else}
	{include "en.latte"}
{/if}

2. Když mi to u filter table nefunguje, tak to v nejhorším případě řeším následovně. K tomu translatoru v routeru je zmínka ve fóru.

$route = new Route('[cs/]stranky/<action>/<id>', array(
	'locale' => 'cs',
    'presenter' => 'Stranky',
    'action' => 'default',
    'id' => NULL,
));
$route = new Route('en/pages/<action>/<id>', array(
	'locale' => 'en',
    'presenter' => 'Stranky',
    'action' => 'default',
    'id' => NULL,
));

Editoval Machy8 (29. 2. 2016 11:21)

argosovo
Člen | 54
+
0
-

Děkuji za oba tipy, určitě vidím využití pro oba způsoby – druhý je zajímavý jednoduchostí, první je zajímavý asi jistou komplexností – a zmíněný článek konečně srozumitelně popisuje filtry.
Každopádně děkuji za aktuální tipy.