Nette Translation Panel – překlady přímo v prohlížeči
- Panda
- Člen | 569
Zdravím všechny,
mám odmaturováno, tak jsem nyní kompletně přepsal TranslationClient.
Nyní využívá Nette Debugbar a vypadá asi takto:
Fešák, co? :-)
Rozhraní se IEditableTranslator
nezměnilo, použití je
podobně jednoduché:
$translator = Environment::getService('ITranslator');
Debug::addPanel(new TranslationPanel($translator));
Testováno v: FF 3.6.3, Chrome 6.0.401.1 dev, IE8 (tam to má nějaké drobné mušky, zdá se), Opera 10.53. Zatím nefunguje přepínání do externího okna a ani nevím, jestli to vůbec bude možné zrealizovat. Ještě jsem také nedělal upozornění na nepřeložené řetězce, přibude v některém z pozdějších commitů.
Byl bych rád, kdyby si někdo našel chvilku panel otestovat a případně mi ho pořádně zkritizovat. :-)
Zdrojáky naleznete na Githubu: Nette Translation Panel.
// Doplnění: kdyby měl někdo problémy se stažením: nette-translation-panel.zip.
Editoval Panda (9. 6. 2010 9:18)
- Mikulas Dite
- Člen | 756
Moc se mi to líbí. Podporuje i inline editaci? Tzn. přímo odkazovat z textu na editační dialog kliknuté fráze?
- Honza Kuchař
- Člen | 1662
A co onlick na body a sledovat target? :-) To jepodle mě jediné správné řešení na tuhle situaci. A pak to samozřejmě fungovat bude. Případně udělat něco jako CTRL+doubleclik.
- Panda
- Člen | 569
A jak pak poznáš, který řetězec máš v translatoru vyhledat?
Řetězec obsahovat HTML tagy, být začleněn do textu bez jakéhokoliv
ohraničení, může vypadat úplně jinak (sprintf
)…
//Doplnění: neberte to prosím tak, že bych se bránil návrhům a podnětům, ale zrovna toto mi připadá opravdu velmi, velmi komplikované.
Editoval Panda (20. 5. 2010 9:03)
- Honza Kuchař
- Člen | 1662
@Panda: Ha máš pravdu, to máš tedy pravdu. To by si musel TranslationPanel přepsat makro _ pro překlady a obalit ten text nějakou značkou. Ale máš pravdu, zbytečně komplikované a nepraktické.
- Panda
- Člen | 569
Několik drobných změn:
- v případě, že panel ví o nepřeložených řetězcích, jeho ikonka zčervená
- výška panelu je nastavitelná
- opravena chybka v IE (testováno jen na IE8)
- v seznamu řetězců jsou ty nepřeložené vždy nahoře
TODO:
verze pro PHP 5.3(Vrtak-CZ, díky, „Vrtáku“ :-) )- u ikonky počet nepřeložených řetězců (facebook-style)
- dořešit podporu pro překlad více jazyků zároveň
Jen tak mimochodem: zkoušel už to někdo rozjet?
Editoval Panda (23. 5. 2010 12:23)
- Mikulas Dite
- Člen | 756
Ještě ne, ale už se tešim až se naskytne první příležitost. A mám nápad na design: bylo by lepší postavit panel na výšku, zmizí prázdný obdélník v IV. kvadrantu a bude vidět víc frází.
(content aware fill to úplně nezvládnul : )
- dotTwelve
- Člen | 167
Vypisuje mi to chybu Service 'ITranslator' not found.
pri
vlozeni
<?php
$translator = Environment::getService('ITranslator');
Debug::addPanel(new TranslationPanel($translator));
?>
do bootstrapu. To musim nekde tu sluzbu zaregistrovat, treba v configu? Proc se tato sluzba neregistruje automaticky?
- Panda
- Člen | 569
No protože si tu třídu, která implementuje ITranslator
(resp. IEditableTranslator
), musíš napsat sám. Toto je pouze
interface, který k té třídě bude přistupovat, nikoliv kompletní
řešení překladů.
Registraci je pak možno provést v config.ini
:
[common.service]
ITranslator = MyTranslator
Svůj translator, který je založený na JSONu, také zveřejním, ale to až se dostane do takového stádia, kdy bude dle mého soudu zveřejnění hoden.
- Panda
- Člen | 569
Mikulas Dite napsal(a):
Ještě ne, ale už se tešim až se naskytne první příležitost. A mám nápad na design: bylo by lepší postavit panel na výšku, zmizí prázdný obdélník v IV. kvadrantu a bude vidět víc frází.
Takhle?
Mezi oběma layouty lze přepínat pomocí druhého parametru v konstruktoru (mě osobně prázdný obdélníček nevadí a lépe se mi pracuje s horizontálním uspořádáním).
Debug::addPanel(new TranslationPanel($translator, TranslationPanel::LAYOUT_VERTICAL));
- Panda
- Člen | 569
Mikulas Dite napsal(a):
Jo, bezva, to je parádní žes na to myslel : )
Nemyslel, je to čerstvý commit. Děkuji za nápad. :-)
- Honza Kuchař
- Člen | 1662
A co třeba v <title> nebo mezi <script></script> Já bych to nedělal.
Editoval Honza Kuchař (23. 5. 2010 2:45)
- Honza Kuchař
- Člen | 1662
Taky se mi to začíná líbit více a více. Prostě vývoj s takovýmito nástroji už začíná být radost. Asi se mě to donutí pochopit, jak funguje GetText a vůbec překlady webů. :-)
Editoval Honza Kuchař (24. 5. 2010 15:59)
- despiq
- Člen | 320
jeste jedna vec by me zajimala, snazim se udelat gettexttranslator
s podporou translationpanelu a vsechno je v pohode az na to ze me zarazi ze
sem nenasel zadnou php knihovnu na po ⇒ mo
takze sem nasel jen pouziti msgfmt.py coz ale vyzaduje exec a prijde mi to
nepekne, nevite o necem?
- norbe
- Backer | 405
Převod přímo z PO na MO nemám, ale už delší dobu se mi válí na disku scriptík pro převod z pole řetězců do MO souboru. Jeho funkčnost jsem zatím neměl čas otestovat.
- Panda
- Člen | 569
Experimentálně jsem přidal odkládání nepřeložených řetězců do session (pokud je k dispozici – při renderování debugbaru je na její startování pozdě), takže lze nyní překládat i flash zprávičky. Vedlejším efektem je, že je možno si v klidu webem procházet a až pak přeložit vše nepřeložené.
- despiq
- Člen | 320
no to ja popravde nevim jestli funguje, resp funguje, jestli ten soubor vypisuje spravne to nevim protoze zapisuje pole prekladu ale ne hlavicku, noa bez hlavicky to nejde, jenze ja sem takova hlava ze ani nevymyslim jak tu hlavicku zapsat a nejak sem tim uz prozatim nemohl ztracet cas
- Panda
- Člen | 569
Pokud tento panel používáte, narazili jste při používání na nějaký problém? Je vše stabilní, nedošlo někdy ke ztrátě dat? Pokud vše bylo v pořádku, zařadil bych tento panel mezi rozšíření na addons, ať se o něm ví trochu víc.
Máte nějaký nápad, co přidat/zlepšit/odebrat/upravit/zkrášlit? Já osobně bych rád dodělal podporu pro rozčlenění řetězců do kategorií (například podle souboru s překladem) a podporu pro překlad více jazyků současně. Jaký je Váš názor?
- despiq
- Člen | 320
zatim je to v poradku,
co by se mi jeste libilo:
nejaky zpusob filtrace nebo vyhledavani, k nalezeni jiz prelozeneho slova je
treba pouzit hledani v prohlizeci jelikoz se to radi podle originalnich slow,
neni to problem ale bylo by to hezke
taky by se mi libilo upozorneni na pluraly k prelozeni ktere nemaji zadane vsechny nutne pluraly
moc ty moje vety nedavaj smysl ale snad to pochopis
rozcleneni do kategorii moc nerozumim a preklad vice jazyku soucasne nepotrebuji, prijde mi logicke aktualni jazyk – aktualni preklad, vlastne si ani nevybavim situaci kdy by to bylo jinak
- norbe
- Backer | 405
Tu si musíš vytvořit :-) Jestli používáš Gettext pro překlad, požádej despiq-a, jestli nezveřejní svůj výtvor. Tobě bych zatím doporučil si pořádně prostudovat objektový programování a hlavně význam rozhraní
- despiq
- Člen | 320
no teda, ale jak sem rikal je to zavisly na exec a msgfmt takze nevim jestli
je to na beznem hostingu pouzitelne
https://gist.github.com/432842
neni to okomentovane, neni to hezke ale je to tak nejak funkcni,
translationpanel se musi pridat uz v bootstrapu, pluraly si to bere z jiz
existujiciho mo souboru, takze na zacatku je vzdy treba vytvorit alespon prazdny
soubor s nastavenim pluralu, gettextextractor uz by nemel byt potreba
na nic
skoda jen ze tu neni Roman, ten by vedel jak to udelat bez zavislosti na msgfmt, nebo nekdo jinej, nevite jak zapsat hlavicky do binarniho mo souboru?
a dik pando za upravy to se moc hodi
Editoval despiq (10. 6. 2010 13:35)
- iguana007
- Člen | 970
despiq napsal(a):
skoda jen ze tu neni Roman, ten by vedel jak to udelat bez zavislosti na msgfmt, nebo nekdo jinej, nevite jak zapsat hlavicky do binarniho mo souboru?
Co toto? http://wordpress-soc-2007.googlecode.com/…/php-msgfmt/
- Panda
- Člen | 569
despiq napsal(a):
TranslationPanel.panel.phtml:374
– if (stringData[i].match(filter))
+ if (typeof(stringData[i]) == String && stringData[i].match(filter))neco takoveho bych tam jeste udelal, narval sem tam spatny data, hodilo to js error a bylo po vyhledavani
U plurálů je stringData pole. Jaký error Ti to hodilo? Můžeš mi
poskytnout výstup z IEditableTranslator::getStrings()
, který
chybu způsobil?
// Pardon, díval jsem se na jinou podmínku, máš pravdu. :-)
Editoval Panda (10. 6. 2010 20:23)
- Patrik Votoček
- Člen | 2221
Protože se mě to hodí tak jsem na tom trochu zamakal. :-) https://github.com/…lation-Panel