Existuje nástroj pro kompletní překlady Nette aplikací?

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

Odkládal jsem to co jen to šlo ale už to moc nejde co nevydět to budu muset řešit. Jak řešíte automatické získávání textů které je potřeba přeložit? Ano vím že tu je https://forum.nette.org/…i-lokalizace ale ten asi neřeší překlady pro Nette\Form a DataGrid od romana. A tak se ptám existuje kompletní řešení překladů v nette? Nebo jak to kdo z vás řeší?

Ondřej Mirtes
Člen | 1536
+
0
-

Pro Nette\Forms to je, stačí mu ho předat v metodě setTranslator :)

Jakub Šulák
Člen | 222
+
0
-

Většina lidí to řeší ZendTranslatorem, který upraví tak aby implementovat rozhraní ITranslatator (pouze metoda tranlate()).

Jod
Člen | 701
+
0
-

Nette/Extras/GettextTranslator

Editoval Jod (22. 6. 2009 14:06)

Patrik Votoček
Člen | 2221
+
0
-

Asi jsme se nepochopily. To jak předat soubor s peřeklady pro nette aplikaci vím ale mě jde o to jak získat řetězce které je potřeba přeložit. (RAW data pro překlad). Kdyby to pořád někdo nechápal jak to myslím tak uvedu příklad gettextu. Mám ve zdrojaku:

...
$form->addText('name', "Name: ")->addRule(Form::FILLED, "Name must be filled");
$form->setTranslator($translator);
...

A já potřebuji automatizovaně získat text „Name must be filled“. Abych ho mohl přidat do *.po souboru. Jak jsem psal v prvním příspěvku tak tohle umí získat řetězce (RAW data) z _() funkcí a {_''} curly makra. Ale asi to neumí získat z formu a datagridu. A o to mě de. Jak získávat řetězce pro které potřebuji vytvořit překlad. Snad už je to lépe pochopitelné.

Nilp
Člen | 65
+
0
-

Co ty retezce zapisovat v translate metode Translatoru nekam do souboru?

Patrik Votoček
Člen | 2221
+
0
-

To by šlo ale je tu jeden problém musel bych testovat všechny možné stavy aplikace. A pak je tu pár řetězců které i tak nedostanu (chybové hlášky) jelikož je aplikace napsána tak že se ty chyby snaží eliminovat.

R2D2
Člen | 22
+
0
-

by sis musel pořádně psát testy, které by prošly všechny stavy :)

jasir
Člen | 746
+
0
-
...
$form->addText('name', "Name: ")->addRule(Form::FILLED, "Name must be filled");
$form->setTranslator($translator);
...

A já potřebuji automatizovaně získat text „Name must be filled“. Abych ho mohl přidat do *.po souboru. Jak jsem psal v prvním příspěvku tak tohle umí získat řetězce (RAW data) z _() funkcí a {_''} curly makra. Ale asi to neumí získat z formu a datagridu. A o to mě de. Jak získávat řetězce pro které potřebuji vytvořit překlad. Snad už je to lépe pochopitelné.

Nějak nechápu, tohle je špatně?

...
$form->addText('name', "Name: ")->addRule(Form::FILLED, _("Name must be filled"));
$form->setTranslator($translator);
...

Takhle si to poedit vyzobne a hotovo, ne?

Editoval jasir (23. 6. 2009 18:34)

jasir
Člen | 746
+
0
-

Jakub Šulák napsal(a):

Většina lidí to řeší ZendTranslatorem, který upraví tak aby implementovat rozhraní ITranslatator (pouze metoda tranlate()).

ZendTranslator neumí plurály, tudíž mi přijde na 2 věci.

Patrik Votoček
Člen | 2221
+
0
-

R2D2 napsal(a):

by sis musel pořádně psát testy, které by prošly všechny stavy :)

Testy píšu ale na UI ne. Dělá tu vůbec někdo? Že by psal testy na UI? Já testuju jenom modely případně konvertory/exportery/importery atd. Ale testy na UI vážně nemám…

jasir napsal(a):

Nějak nechápu, tohle je špatně?

...
$form->addText('name', "Name: ")->addRule(Form::FILLED, _("Name must be filled"));
$form->setTranslator($translator);
...

Takhle si to poedit vyzobne a hotovo, ne?

Kdybych to řešíl takto tak je pak $form->setTranslator($translator);. A to mě nepříde moc čisté.

jasir
Člen | 746
+
0
-

jasir napsal(a):

Nějak nechápu, tohle je špatně?

...
$form->addText('name', "Name: ")->addRule(Form::FILLED, _("Name must be filled"));
$form->setTranslator($translator);
...

Takhle si to poedit vyzobne a hotovo, ne?

Kdybych to řešíl takto tak je pak $form->setTranslator($translator);. A to mě nepříde moc čisté.

Fakt tomu nerozumím, asi mi něco uniká… Co je špatného na tom nastavit pro aplikaci jeden translator a ten všude používat? A k překladu jen: _("...") a {_..}?

Editoval jasir (23. 6. 2009 19:29)

romansklenar
Člen | 655
+
0
-

Myslím vrtáku, že pokud to chceš mít automatizované, tak se u formulářů nevyhneš tomu buď si napsat nějaký vlastní parser nebo používat _("...") jak radí jasir.

Rozumím, že se ti $form->addText('name', _("Name: "))->addRule(Form::FILLED, _("Name must be filled")); nelíbí, když se formuláři dá nastavit přímo translator, ale bohužel… řek bych, že je to určitá daň za lenost, když už to chceš mít automatizované :)

janci
Člen | 5
+
0
-

Mam taku otazku ku tomuto vlaknu. Co ked budem chciet vytahovat veci z databazy a tie nasledne prekledat. Myslim ze to nebude mozno oskenovat. Je teda nejaka moznost ako to urobit?

timbulko
Člen | 85
+
0
-

Napadá ma spôsob, že by si si spravil nejaký script ktorý ti z mysql vyselektuje všetky potrebné hodnoty a uloží do nejakého súboru v tvare, ktorý poedit zoberie. Alebo ukladať preklady priamo do mysql s prefixom daného jazyka pri názve tabuliek alebo riadkov (cs_text, en_text, cs_title, en_title, …).

ic
Člen | 430
+
0
-

Napsal bych to sem: https://forum.nette.org/…i-lokalizace ale tohle vlákno muselo být uzavřeno z důvodu zachování kontinuity vesmítu, ale tady se ostatně taky mluví o poedit-u…

Totož narazil jsem na to, že mi nechce najít v šabloně řetězec který obsahuje slovo misinterpreted nebo i řetězec tvořený jen tímto slovem… prostě jako by tam neexistoval.

Mohl by to někdo prosím také jen pro zajímavost zkusit?

Zajímalo by mě jestli má s tímto slovem Poedit nějaký problém.