Autor | Zpráva | ||
---|---|---|---|
kozusnikjan Profil * |
#1 · Zasláno: 18. 11. 2013, 21:13:39
Ahoj,
na překlady v Symfony2 používám doctrine2 rozšíření Translateable. Už se v tom piplám dost dlouho a dostal jsem se snad nejdál - už to vloží do databáze bez chyby, u vloženého překladu to uloží id referenčího textu... problém ale je, že i když vložím originální text, aniž bych chtěl vložit překlad, tak mi to překlad vloží samo od sebe a navíc jako locale nastaví en_US. Druhá věc je, že když změním jazyk, tak mi to pořád vypisuje v tom původním. Co tam mám špatně? Už jsem to psal několikrát podle návodu... ale pořád nic. Níže příkládám Text.php, TextTranslation.php, TextController.php, config.yml http://pastebin.com/p2j3TXpv TextController.php http://pastebin.com/ajetbxRU Text.php http://pastebin.com/GGbtSAui TextTranslation.php http://pastebin.com/ZqAAiYbJ config.yml |
||
aDAm Profil |
#2 · Zasláno: 19. 11. 2013, 10:10:35
Přepínáš ten translatable listener na jazyk který máš aktuálně aktivní? nebo tam máš default?
|
||
kozusnikjan Profil * |
#3 · Zasláno: 19. 11. 2013, 15:09:17
Jediné nastavení jazyka mám v config.yml
|
||
kozusnikjan Profil * |
#4 · Zasláno: 21. 11. 2013, 18:30:27
Co s tím teda prosím vás?
|
||
aDAm Profil |
#5 · Zasláno: 21. 11. 2013, 21:12:15
Nevím jak to funguje v symfony2, ale já abych přepnul jazyk tak musím ten jazyk dostat do listeneru: https://github.com/l3pp4rd/DoctrineExtensions/blob/master/lib/Gedmo/Translatable/TranslatableListener.php
|
||
kozusnikjan Profil * |
#6 · Zasláno: 21. 11. 2013, 22:05:19
Aha. Zkusím :) a jak vyřešit to vkládání? Duplicitní vložení nepřeloženého textu jak do tabulky texts, tak to tabulky texts_translates?
|
||
aDAm Profil |
#7 · Zasláno: 22. 11. 2013, 09:04:10
Tak to bohužel netuším, s tím sem se nesetkal. Pokud nezměním jazyk a mám jej stejny jako default, tak to uloží do hlavní tabulky, pokud změním jazyk na jiný než hlavní tak to ukládá do překladové. Možna se zkusit kouknout do toho listeneru co provádí, v okamžiku kdy detekuje stejné jazyky by měl uložení do db přeskočit.
|
||
kozusnikjan Profil * |
#8 · Zasláno: 22. 11. 2013, 15:08:46
dobře. Zkusím. Děkuji
|
||
kozusnikjan Profil * |
#9 · Zasláno: 24. 11. 2013, 22:12:50
No, i když jsem jazyk změnil, pořád to ukládá v en_US
|
||
aDAm Profil |
#10 · Zasláno: 25. 11. 2013, 09:56:29
a tohle si zkoušel?
$article = $em->find('Entity\Article', 1 /*article id*/); $article->setTitle('my title in de'); $article->setContent('my content in de'); $article->setTranslatableLocale('de_de'); // change locale $em->persist($article); $em->flush(); |
||
kozusnikjan Profil * |
#11 · Zasláno: 25. 11. 2013, 20:24:40
Ano, takhle to jde. Já ale řeším problém (viz na začátku), že když vložím článek, tak mi to automaticky vloží článek do tabulky texts a zároveň překlad s locale "en_US" do tabulky texts_translates.
|
||
aDAm Profil |
#12 · Zasláno: 26. 11. 2013, 08:33:48
v tom případě koukni co ti dělajá ten listener. Je to založené na tom že když vkládáš text s locale co je stejné jako nastavení translatable tak ti to ukládá normálně, ale pokud to detekuje jiné locale tak to uloží ještě do překladové tabulky.
|
||
kozusnik.jan Profil * |
#13 · Zasláno: 26. 11. 2013, 22:27:31
Zkusil jsem nastavit locale a i v listeneru defaultní jazyk na cz takto:
$request = new Request; $request->setLocale('cz'); $translatableListener = new TranslatableListener(); $translatableListener->setDefaultLocale('cz'); $translatableListener->setTranslationFallback(true); // default is false Pořád nic |
||
aDAm Profil |
#14 · Zasláno: 27. 11. 2013, 08:47:07
Jak funguje symfony nemám tucha nicméně v nette takto listener nemůžeš inicializovat, jelikož jej potřebuješ zavěsit na konkrétní eventy prepersist, postpersist atd. tj. akce které se prováději při práci s entitou.
|
||
kozusnik.jan Profil * |
#15 · Zasláno: 27. 11. 2013, 16:53:48
V návodu je to takhle právě... https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/translatable.md#default-locale
|
||
aDAm Profil |
#16 · Zasláno: 27. 11. 2013, 19:52:05
kozusnik.jan:
ano ale tam už je instancovaný, tudíž pracuješ již s registrovaným objektem. Ale ty si tady vytvoříš novou instanci, tudíž není zaregistrována na konkrétní akce práce s entitou. |
||
kozusnik.jan Profil * |
#17 · Zasláno: 28. 11. 2013, 16:45:32
Aha. Tak jsem to vyřešil tak, že defaultní jazyk jsem nastavil v TranslatableListeneru, funguje i změna výpisu podle jazyka, ale pouze, pokud jazyk nastavím v TranslatableListener ručně přímo v té třídě. Nevíte někdo, jak to udělat, aby se to měnilo automaticky podle _locale?
|
||
aDAm Profil |
#18 · Zasláno: 28. 11. 2013, 16:55:09
Jak jsem psal, musíš to dělat tam kde registruješ ten listener, a nebo si jej vytáhnout a pak změnit. V nette se k tomu dostanu přes služby a pak to nastavím.
|
||
kozusnik.jan Profil * |
#19 · Zasláno: 28. 11. 2013, 19:20:05
Děkuju.
Vyřešil jsem to takto: $locale = $this->getRequest()->getSession()->get('_locale'); $this->get('gedmo.listener.translatable')->setTranslatableLocale($locale); Ale ještě to budu chtít upravit tak, aby se tohle dělalo automaticky. Nemyslím tím dávat to do __construct, ale ať to dělá symfony automaticky. |
||
Časová prodleva: 10 let
|
0