Překlad flash zpráv (translator)
- Tomáš Votruba
- Moderator | 1114
Probíráno již zde: https://forum.nette.org/…flash-zpravy
Ondřej Mirtes napsal:
V GettextTranslatoru v2 si můžeš definovat názvy metod, které se volají a ze kterých se má daný řetězec vytáhnout – tudíž si můžeš definovat, že chceš vytahovat řetězce ze všech flashMessage() a tadadá .)
Bohužel nedořešeno, takže se ptám, jak na to.
Ideální by bylo, kdyby to šlo přímo v presenteru, tedy něco jako:
$this->flashMessage($this->translate("Zpráva"));
Vím, že jde použít při jejich výpisu {_$flash->message}
a poté přeložit v panelu, nicméně to bych musel nejdříve všechny
vyvolat, aby se tam objevily, což je hloupé.
- Tomáš Votruba
- Moderator | 1114
bazo napsal(a):
ved ten skript to vytiahne priamo z funkcie $this->flashMessage()
Fanda napsal(a):
$this->flashMessage(_('Message'));
alespoň v případě gettextu…
Četli jste tu zprávu celou?
Schmutzna napsal: …nicméně to bych musel nejdříve všechny vyvolat, aby se tam objevily, což je hloupé.
První reakce je irelevantní, v druhé se to chová stejně, jen je to 2 znaky delší.
Potřebuji přeložit flashMessages, aniž bych s nimi musel přijít přímo do styku.
Editoval Schmutzka (16. 12. 2011 3:53)
- Nox
- Člen | 378
Něco jako…?
<?php
abstract class BasePresenter {
public function setTranslator(ITranslator $tr...);
public function flashMessage($message, $type) {
if( $this->getTranslator() )
$message = $this->getTranslator()->translate($message);
parent::flashMessage($message, $type);
}
}
class SomePresenter {
protected function actionSomething() {
$this->flashMessage("the truth is out there");
}
}
?>
Editoval Nox (16. 12. 2011 7:35)
- bazo
- Člen | 620
>
Četli jste tu zprávu celou?
ano cetli, gettext extractoru mozes nastavit z ktorych funkcii ma vyberat texty na preklad. ak tam pridas flashMessage tak ti vyzbiera vsetky texty flash messagov v projekte. ak su tie texty staticke. ak su tie texty v premennej tak tie budes musiet nejako zachytavat a dakde si ich logovat
- Fanda
- Člen | 39
Potřebuji přeložit flashMessages, aniž bych s nimi musel přijít přímo do styku.
Asi nějak nechápu, o co Ti šlo. Používám poedit pro extrahování řetězců z php kódu do katalogu (nemusím s texty teda přijít do styku přímo v aplikaci) a nemám s uvedeným řešením žádný problém. Přijde mi to jako nejpohodlnější řešení (ale asi mi teda něco uniká). :-)
- snipi
- Člen | 20
Nox napsal(a):
Něco jako…?
<?php abstract class BasePresenter { public function setTranslator(ITranslator $tr...); public function flashMessage($message, $type) { if( $this->getTranslator() ) $message = $this->getTranslator()->translate($message); parent::flashMessage($message, $type); } } class SomePresenter { protected function actionSomething() { $this->flashMessage("the truth is out there"); } } ?>
skúšal som to hodiť do BasePresenteru podľa tvojho príkladu, ale keď to prejde na stránku po redirect-e, tak to translation panel nezaeviduje. Nejaký nápad ako to dostať do translation panelu bez toho, aby som rušil redirecty?