Překlad u položek selectu potlačit, ale u pravidel selectu povolit

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Ondřej Brejla
Člen | 746
+
0
-

Možná jsem diletant a špatně hledám…ale docela by se mi hodilo, aby se mi prvky addSelect() nepřekládaly, ale pravidla, která mám na tomto formulářovém prvku navěšena, se naopak překládaly.

Použití setTranslator(NULL) na select prvek vypne překlad jak u prvků, tak u pravidel.

Řešil jste to někdy někdo? Díky…

David Grudl
Nette Core | 8169
+
0
-

To v tuto chvíli to nejde, ale vede mě to k otázce, jestli vůbec někdy má smysl vypnout translator na prvku a zároveň ho vypnout i na chybové zprávy pro prvek.

redhead
Člen | 1313
+
0
-

smysl by to mělo například v nějakém výčtu uživatelem definových jmen, třeba názvů nějakých sekcí, které by se pak neměli překládat..

Ondřej Brejla
Člen | 746
+
0
-

David Grudl napsal(a):

To v tuto chvíli to nejde, ale vede mě to k otázce, jestli vůbec někdy má smysl vypnout translator na prvku a zároveň ho vypnout i na chybové zprávy pro prvek.

Nevím, jestli jsi se upsal, nebo to myslíš tak, jak jsi napsal ;-) Každopádně…smysl má, alespoň u addSelect(), vypnout translate u prvků (čti options), a přitom ho nechat na prvku jako takovém.

Př.: Mám options nacpané 1st level doménami, potřebuji, aby nějakou z nich uživatel zadal, ale opravdu je nechci překládat. Pravidlo přeložit musím.

Řešením by byla možnost nastavit translator u pravidel separátně. Pokud by nastaven nebyl, vzal by se z Controlu, případně by se mohl u pravidla nastavit na NULL. Což by ale znamenalo změny v Rule (resp. Rules) třídě.

$form->addSelect('myElement', ...)->setTranslator(NULL);
$form['myElement']->addRule(new Rule(Form::FILLED, 'Lorem.')->addTranslator($myTranslator));

by bylo hezké :-)

v6ak
Člen | 206
+
0
-

V tuto chvíli to můžeš hacknout přes nějaký prefix, který znamená „nepřekládej!“.

David Grudl
Nette Core | 8169
+
0
-

Ondřej Brejla napsal(a):

Nevím, jestli jsi se upsal, nebo to myslíš tak, jak jsi napsal ;-)

Zkusím to přeformulovat: může nastat situace, kdy by se hodilo, aby vypnutí translatoru u formulářových prvků $form['neco']->translator = NULL zároveň vypnulo i překlad chybových zpráv? Nebo ještě jinak: mám současné chování bez náhrady změnit?

David Grudl
Nette Core | 8169
+
0
-

Zkusil jsem to do poslední revize 1.0-dev implementovat.

Ondřej Brejla
Člen | 746
+
0
-

Abych pravdu řekl, nedokáži si dost dobře představit situaci, kdy bych chtěl překládat formulářový prvek, ale NEchtěl překládat chybové zprávy.

Naopak si dokáži představit, že chci vypnout překlad na formulářovém prvku, ale na chybových zprávách překlad ponechat (resp. ne na formulářovém prvku, ale na jeho optionech – v tuto chvíli tedy na celém prvku).

Stejně tak si dokáži představit situaci, kdy bych chtěl překlad jak na formulářovém prvku, tak na chybových zprávách.

Ale opravdu nevím, k čemu by bylo, kdyby byl vypnutý překlad jak na formulářovém prvku, tak na chybových zprávách. Není to nesmysl? Proč bych to dělal? Přeci nebudu mít půlku chyb v češtině a půlku v angličtině?

Obecně si myslím, že překlad na chybových zprávách bude vyžadovaný nezávisle na překladu formulářového prvku, na kterém jsou navěšeny. Dle mého je tedy zbytečné vazbit `$form[‚neco‘]->translator = NULL ` na vypnutí překladu i chybových zpráv.

Další věc je, že u selectu vypnutím překladu na prvku (typicky – potřebuju NEpřekládat pouze options!) vypnu i překlad labelu. Což je dle mého taky špatně. Bylo by nejlepší, kdyby šlo nějakým způsobem tedy nastavovat translator: na prvek (label), na jeho Rules a na jeho options (pokud prvek nějaké opations má).

Šlo by to? Pak by se, myslím, překlad choval tak, jak se od něj očekává.

V tuto chvíli tedy je možné pouze zapnout/vypnout překlad na kompletním prvku, tedy – label, rules a options.

(na 1.0-dev jsem zatím něměl čas se podívat)

Ondřej Brejla
Člen | 746
+
0
-

Ještě koukám, že se nepřekládá setOption('description', 'Text k prelozeni');, což by asi taky přeložené být mělo.

David Grudl
Nette Core | 8169
+
0
-

Ondřej Brejla napsal(a):

Ještě koukám, že se nepřekládá setOption('description', 'Text k prelozeni');, což by asi taky přeložené být mělo.

je to tam.

Ondřej Brejla
Člen | 746
+
0
-

Paráda, děkuji. Škoda, že se to nevešlo do 0.9.3 stable, na které mi běží překládaný web :-) Nevadí, hlavně, že to bylo odhaleno a implementováno :-)

norbe
Backer | 405
+
0
-

Formuláře z verze 0.9.3 by měli jít bez problému nahradit těmi z 1.0 (stačí nahradit složku Nette\Forms), akorát pak nepoužívat minified verzi nebo si udělat vlastní.

Ondřej Brejla
Člen | 746
+
0
-

Ano, jistě, můžu si s tím hrát. Nechci. Chci mít „oficiální“ stable verzi. Netřeba tvořit hybridy (ani to není žádoucí). S 0.9.3 jsem spokojen.