Autor | Zpráva | ||
---|---|---|---|
majo80 Profil * |
#1 · Zasláno: 4. 10. 2013, 18:46:17
Zdravím,
riešim viacjazyčný web a zaujímala by ma možnosť, kam ukladať prekladaný text spolu s preloženým. 1) pri otvorení každej stránky na začiatku načítať všetky texty z DB do array a v stránke už s nimi pracovať alebo 2) raz za čas (napr. raz denne) načítať prekladané texty z DB a uložiť ich do súboru a potom pri otvorení každej stránky načítavať tento súbor a spracovávať z neho texty Ide mi hlavne o to, čo je rýchlejšie, menej zaťažuje server a pod. Nie že by tých textov bolo veľa. Štruktúra DB bude približne takáto: ID / original / preklad / jazyk 1 / ahoj / hello / en 2 / ahoj / hallo / de 3... |
||
Euroblb Profil |
#2 · Zasláno: 4. 10. 2013, 18:52:14
Pokud dále zpracováváš data, seřazuješ, vyhledáváš, tak je lepší DB, kde jsou již různé funkce pro to určené, napřiklad pro vyhledávání, smazání atp.
Nemusíš pak přepisovat celý TXT, a různě dolovat data ze souboru, což ušetří na výkonu serveru hodně při velkém objemu dat. |
||
majo80 Profil * |
#3 · Zasláno: 4. 10. 2013, 18:57:53
Euroblb:
Nič také nebudem potrebovať, či už pri načítaní z DB alebo zo súboru, všetky texty uložím do poľa a z toho potom budem ťahať preklady. |
||
yFang Profil |
#4 · Zasláno: 4. 10. 2013, 19:18:28
majo80:
„všetky texty uložím do poľa a z toho potom budem ťahať preklady“ Podle mě je teda rychlejší řešit tyhle věci na úrovni databáze. |
||
majo80 Profil * |
#5 · Zasláno: 4. 10. 2013, 19:29:31
yFang:
Ako napr. v tele stránky narazím na text, ktorý treba preložiť, tento text vyhľadám v DB a zobrazím jeho preklad? A toto robiť pre každý text resp. každé slovo, ktoré treba preložiť? Nie je lepšie všetky texty uložiť do poľa a potom k nim pristupovať? |
||
Alphard Profil |
#6 · Zasláno: 4. 10. 2013, 19:32:14
majo80:
Začal bych řešením 1, můžete si měřit a logovat potřebný čas, ale myslím, že to bude ok. Jestli bude problém, přejdete k řešení 2 tak, že do souboru budete ukládat serializované pole v původní podobě. Pár řádků navíc, logicky další krok v původním řešení, není problém implementovat později. yFang: Není úplně šťastné hledat jednotlivě každý překlad v db, vedlo by to na desítky až stovky dotazů, podle webu, jen na překlad. Samozřejmě je potřeba zvážit paměťovou náročnost a a případně si do db ještě nacachovat, co je potřeba na jaké stránce. |
||
Micruss Profil |
#7 · Zasláno: 4. 10. 2013, 19:33:37
majo80:
pokud text uložíš do pole a to pole bude velký, tak se bude déle načítat stránka (zabírá celkem dost paměti)... |
||
majo80 Profil * |
#8 · Zasláno: 4. 10. 2013, 19:41:26
Micruss:
pri akej veľkosti DB, resp. textu by už bolo poznať spomalenie načítania webu? |
||
yFang Profil |
#9 · Zasláno: 4. 10. 2013, 20:59:55
Asi to úplně nechápu, ale proč by se to mělo dělat pro každé slovo? To přeci ani nejde dělat překlad slovo od slova. Z databáze si načtu variantu stránky v daném jazyce. A co se týče menu a podobných věcí, tak se načtou z databáze stejně jako by to byl normální web, akorát se vyberou pouze příslušné jazykové varianty.
|
||
Alphard Profil |
#10 · Zasláno: 4. 10. 2013, 21:26:07
Já jsem pochopil, že jde o něco v tomto stylu doc.nette.org/cs/default-macros#toc-preklady
V šabloně se do příslušného makra obalí každý textový celek, translator se předá templatovacímu systému a ten jednotlivě přeloží každé slovo/frázi/větu. Pokud se změní šablona, nové výrazy se automaticky přidají do db a v adminu je někdo přeloží. Původně je to GetTextový způsob, ten měl vlastní binární soubory s překlady. Práce s ním ale přinášela určité problémy, takže se někteří lidé rozhodnou, že si raději vytvoří vlastní implementaci čistě v php. |
||
majo80 Profil * |
#11 · Zasláno: 4. 10. 2013, 21:30:57
Áno, presne ako píše Alphard, tak je to myslené...
|
||
Amunak Profil |
Pokud jde o víceméně statické stránky, nejrychlejší (a paměťově nenáročné) je kešovat kompletní HTML výstup (nebo alespoň jeho podstatnou část). Keš pak načítáte přes readfile(). Šlo by tedy např. kešovat každou variantu stránky (v každém jazyce) a při změně překladu by se keš zneplatnila.
|
||
majo80 Profil * |
#13 · Zasláno: 4. 10. 2013, 22:44:43
Amunak:
Práveže nie, ide o dynamické stránky... |
||
Amunak Profil |
#14 · Zasláno: 4. 10. 2013, 23:46:30
majo80:
Ono záleží jak moc dynamické. Nějak inteligentně jde kešovat skoro všechno. Ale pokud se stejně spousta věcí tahá z DB, nějaký dotaz navíc by neměl vadit. Ale udělejte to nějak rozumně - hlavně ne pro každý řetězec jeden dotaz. Ale stejně tak je špatný nápad (obzvlášť pokud je web rozsáhlejší) načítat všechny přeložené stringy na každé stránce. Napadá mě třeba mít funkci, co se v šabloně zavolá, aby přitáhla nějaký text. Ta na své místo doplní jen pro překlad/stránku unikátní řetězec, a někam se uloži, jaký řetězec chceme z DB a na jaké místo ho budeme nahrazovat. Po složení šablony, těsně před zobrazením, se zavolá jeden dotaz na DB s požadovanými řetězci, DB je vrátí, a ty se v šabloně nahradí na ta místa identifikátorů přes str_replace. Asi to obvykle bude rychlejší (a hlavně méně paměťově náročné) než načítat všechny stringy. |
||
Časová prodleva: 10 let
|
0