Překlad flash zpráv (translator)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Tomáš Votruba
Moderator | 1114
+
0
-

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é.

bazo
Člen | 620
+
0
-

ved ten skript to vytiahne priamo z funkcie $this->flashMessage()

Fanda
Člen | 39
+
0
-
$this->flashMessage(_('Message'));

alespoň v případě gettextu…

Editoval Fanda (15. 12. 2011 19:47)

Tomáš Votruba
Moderator | 1114
+
0
-

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
+
0
-

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
+
0
-

>

Č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

Tomáš Votruba
Moderator | 1114
+
0
-

Nox: super, to mě v té rozmrzelosti nenapadlo, díky.

Fanda
Člen | 39
+
0
-

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
+
0
-

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?