Kdyby/Translation dynamické slovníky
- petr.jirous
- Člen | 128
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
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
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
Matěj pracuje na pullrequestu, který přidá databázový loader přímo do Kdyby
- Azathoth
- Člen | 495
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?
- Azathoth
- Člen | 495
@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
@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
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.
- kleinpetr
- Člen | 480
@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)