Překlad statických stránek
- argosovo
- Člen | 54
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.).
- 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
@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
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)