Kdyby/Translation dynamické slovníky

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

Zdravím,

mohl by mi někdo poradit, jak udělám načítání slovníku do Kdyby/Translation dynamicky (např. z DB)? Napsal jsem si vlastní loader, ale translator stále hledá pouze soubory s překlady. Díky ;)

Jiří Nápravník
Člen | 710
+
+2
-

A je nutné je mít v db? Já mám jeden neon soubor, kde jsou všechny možné texty k překladu. Když dám editovat mutaci, tak to načtu z tohohle a udělám jeden velký formulář, překlady pak uložím do toho správného neonu pro danou mutaci a smažu cache (je tam nějaká metoda přímo v Kdyby/Translation) a jede to v pohodě.

petr.jirous
Člen | 128
+
0
-

Jde mi o to, že Administrace těch mutací bude na jiném serveru než samotná aplikace, takže by bylo vážně dobré, kdyby se překlady tahaly z DB (samozřejmě s nějakou cachí)

Filip Procházka
Moderator | 4668
+
0
-

Matěj pracuje na pullrequestu, který přidá databázový loader přímo do Kdyby

Azathoth
Člen | 495
+
0
-

Ony ty loadery jsou už funkční. jen k tomu musím dopsat, jak to konfigurovat a command na tvorbu databáze
@FilipProcházka mám menší problém s tím commandem. V initialize callbacku se ten loader zeptá DB na seznam jazyků. Jenže když tam není vytvořená tabulka (a uživatel si ji bude chtít vytvořit commandem), tak mu to žuchne. Myslíš, že by to mělo chytat výjimku na existenci tabulky a vracet prázdné pole?

Filip Procházka
Moderator | 4668
+
0
-

@Azathoth tady to neřešme prosím, piš takové informace k tomu PR.

Azathoth
Člen | 495
+
0
-

@petr.jirous než projde pull request schválením, můžeš se podívat na dokumentaci k integrování databáze a ptej se na cokoli, co tam není jasné. Protože nevím, jestli jsem na něco nezapomněl nebo jestli to není popsané špatně nebo nepochopitelně.

PVD
Člen | 20
+
0
-

@Azathoth Chci moc poděkovat za toto rozšíření Translatoru. Pokud to dobře chápu, mohu si jakkoliv spravovat překlady v jedné hromadné tabulce v db a díky lastUpdated si rozšíření pozná, kdy se něco změnilo.
Jen jedna věc mi není jasná – dochází ke cachování? Aby se to pokaždé nestahovalo z db…

Shodou náhod jsem nedávno přemýšlel, jak něco podobného řešit, protože jsem chtěl spravovat obsáhlé překlady v jednoduché administraci, kde bych načetl hodnoty z db a po jakékoliv změně bych vygeneroval příslušné NEON soubory. Tady se to asi řeší jinak, že?

Díky

P.S.: případné postřehy ke kódu mám psát na github?

Azathoth
Člen | 495
+
0
-

ano, postřehy piš určitě na github.
cacheovat by se to mělo, o to se stará CatalogueCompiler z Kdyby/Translation. Jen si nejsem jistý, jestli probíhá správně ta invalidace cache, protože jsem si nevšiml, že by si CatalogueCompiler v profukčním módu kontroloval, jestli jsou resources čerstvé.
Ale jestli se cache neinvalidují správně, tak je zapotřebí to opravit v tom CatalogueCompileru, za to už ty database loadery nemohou.
A co se týče té databáze, tak tady se to nařítá ro nou do překladů, negenerují se z toho neon soubory.

Celá idea Kdyby/Translation je takováhle: máš nějaké zdroje (resources). A pak máš loadery, které je umí načíst a vrátit jako pole překladů. Loadery to mohou tahat z neonu, yamlu, ini…a i z databáze. A pak se to zacacheuje. A pak se to načítá z cache a je jedno, odkud se ty překlady načetly.

Azathoth
Člen | 495
+
0
-

@PVD a klidně můžeme nějaké detaily probrat na gitteru, a můžu ti klidně poradit s implementací, kdyby se náhodou na něčem zasekl.

kleinpetr
Člen | 480
+
0
-

@JiříNápravník : Řeším to podobně jako ty, mám v databázi vždy jen langkey a veškeré překlady mám v neon souborech. Nicméně jsem na tom postavil už dost velký kus, ale zrovna jsem se zasekl nad vyhledáváním nebo řazením záznamů, např. seřazení záznamů v příslušném jazyce podle abecedy. Nebo např. nějaký vyhledavácí formulář, kam zadá uživatel string v jeho jazyce a já potřebuji najít příslušné záznamy. Jak se tohle dá řešit ? Díky

Edit: pro to vyhledávání by asi bylo ideální nějak udělat opačný translate tudíž ze stringu by mi vyhodil langkey a podle něho bych hledal v db.. Pokud to vůbec jde

Editoval kleinpetr (31. 12. 2015 11:44)

Landsman
Člen | 152
+
0
-

Pokročilo tohle nějak? :)