Vícejazyčný web – spousta textů
- kralik
- Člen | 230
Ahoj lidičky,
chtěl bych se vás zeptat jak byste postupovali při vytvoření vícejazyčného webu.
Na webu by bylo použito několik šablon, ale obsahují více textů. Každá vždy několik odstavců.
Nebylo by lepší udělat kopie šablon např.: cs__onas.latte, en_onas.latte, de_onas.latte a vhodně nastavit bootstrap.php.
Prosím jak byste toto řešili?
Mooc díky
- kralik
- Člen | 230
voda napsal(a):
Podobné téma: https://forum.nette.org/…ejazycny-web
tak jsem to pročetl a zkouším to ale zatím nic moc :-(
Zeptám se asi na triviální otázky:
Musím v tomto případě používat jen jeden presenter?
Členění šablon je možné nějak do složek např.
- CS-home.latte, onas.latte, atd.
- EN-home.latte, onas.latte, atd.
Případně je možné rozčlenit nějak presentery?
Prozatím moc nerozumím jak toto mohu nastavit v bootstrapu.php?
Mooc díky
EDIT:
tak už se mi to povedlo.
Ještě, ale nevím jak tvořit odkazy
<?php
<a href="{link Kontakty:default}"
?>
nevím jak do tohoto odkazu mám začlenit $lang?
Píše mi to:
error: No route for Kontakty:default(lang=cs)
Routa v bootstrap.php
<?php
$router[] = new Route('<lang cs|en>/<action>', array(
'lang' => 'cs',
'presenter' => 'Home',
'action' => 'default',
));
?>
Editoval kralik (20. 10. 2011 13:38)
- kralik
- Člen | 230
Davem napsal(a):
ad lang:
Ten se hodi nastavit v presenteru (nejlepe v nejakem BasePresenter) jako persistentni promnennou, ktera se pak bude predavat automaticky, pokud ji sam nebudes chtit implicitne zmenit./** @persistent */ public $lang;
tuto proměnou v presenteru mám.
BasePresenter
<?php
/** @persistent */
public $lang;
?>
ale právě mi to píše ten error s routou viz. výše
nevím tedy jak musím upravit odkazy či přidat nějaké další routery?
mooc díky
- kralik
- Člen | 230
Milo napsal(a):
kralik napsal(a):
$router[] = new Route('<lang cs|en>/<action>', array(
Routa neobsahuje presenter
<lang cs|en>/<presenter>/<action>
bohužel stejně nejde překliknout např. na Kontakty
vygenerovaný odkaz: /web/www/cs/kontakty/
a chyba: Page not found. Missing template ‚..web\app\templates\Kontakty\default.latte‘
Potřeboval bych to dostat do tvaru s cs tedy:
..web\app\templates\Kontakty\cs\default.latte
případně
..web\app\templates\cs\Kontakty\default.latte
Strukturu šablon mám :
Home
- CS – default.latte
- EN – default.latte
Kontakty
- CS – default.latte
- EN – default.latte
- kralik
- Člen | 230
kralik napsal(a):
Milo napsal(a):
kralik napsal(a):
$router[] = new Route('<lang cs|en>/<action>', array(
Routa neobsahuje presenter
<lang cs|en>/<presenter>/<action>
bohužel stejně nejde překliknout např. na Kontakty
vygenerovaný odkaz: /web/www/cs/kontakty/
a chyba: Page not found. Missing template ‚..web\app\templates\Kontakty\default.latte‘
Potřeboval bych to dostat do tvaru s cs tedy:
..web\app\templates\Kontakty\cs\default.latte
případně
..web\app\templates\cs\Kontakty\default.latte
Strukturu šablon mám :
Home
- CS – default.latte
- EN – default.latte
Kontakty
- CS – default.latte
- EN – default.latte
jsem trouba, stačilo změnit funkci formatTemplateFiles() v souboru /libs/Nette/Application/UI/Presenter.php
změnil jsem na: „$dir/templates/$presenter/$this->lang/$this->view.latte“
takže už to funguje super.
Měl bych, ale ještě jednu otázku.
Nedědí se mi na presentery proměnná $lang i když všechny Presentery extends BasePresenter
Chtěl bych abych měl $lang dostupnou ve všech presenterech, které dědí od BasePresenteru, proměnou nemám dostupnou přes $lang ale přes $this->lang, nevím proč
BasePresenter
<?php
/** @persistent */
public $lang;
?>
- Michal Vyšinský
- Člen | 608
IMHO – že by to bylo proto, že jsi v OOP a v OOP se k členským proměnným přistupuje přes $this->variable ??