Autor | Zpráva | ||
---|---|---|---|
lang Profil * |
#1 · Zasláno: 7. 6. 2011, 13:06:08
Dobrý den, potřeboval bych poradit ohledně překladu v souborech *.js
Mám vytvořenou rozsáhlou webovou aplikaci v angličtině, no a teď do ní potřebuju implementovat překládání i pro jiné jazyky. V souborech *.php to není problém, ale jak přeložit výstup z javascriptu, aniž bych musel každý JS soubor předělávat na PHP nebo z něj odstranit veškerý text a pomocí PHP to nějak kontrolovat (třeba AJAXem), co mi to vlastně ten JS chce. Přes to PHP to mám řešený přes třídu (echo Lang::text();) a ve třídě si načtu data z DB podle toho v jakém jazyce to potřebuji. Chtěl bych vědět jestli s tím už někdo nemá zkušenosti a jaké řešení by bylo asi nejefektivnější. Příklad jak to zatím funguje: kliknu na vlajku(v jakém jazyce to potřebuji)->reload stránky->php mi přeloží texty v php souborech a vygeneruje stránku ve zvoleném jazyce. A teď bych teda potřeboval nějak přeložit i ty javascriptové výstupy. Můj návrh jak to udělat - udělat si v DB tabulku která by obsahovala veškerý text javascriptu k danýmu JS souboru. Pak pomocí PHP připojit veškerý texty k nějaký JS funkci (vím přesně, které soubory se mi budou na jaký stránce načítat) a vždy, když by se aktivoval JS tak by si do téhle JS funkce šáhnul pro daný text - "moc pracné" a další zbytečná data v DB, když už je mám v jiné tabulce (pro PHP překlad ). Další řešení co mně napadlo - kdykoliv by JS vrátil nějaký výstup tak těsně před tím si šáhnout přes AJAX do DB pro překlad - vzhledem k velikosti DB, která obsahuje překlady, a četnosti pužívání webové aplikace by to znamenalo extrémní zpomalení nejen u koncového uživatele, ale i samotné DB což by se projevilo na každé jednotce, která s webovou aplikací zrovna pracuje a to je značně nežádoucí. Taže bych potřeboval nějaký řešení, ve kterém nebudu muset vytvářet duplicitní data v DB, přejmenovávat soubory a zároveň aby to bylo co nejrychlejší (jedná se o interní webovou aplikaci, takže nějaký google translate a podobný nepřipadá v úvahu, na Oracle a podbný nemám prachy :D ) |
||
YoSarin Profil |
#2 · Zasláno: 7. 6. 2011, 14:34:34 · Upravil/a: YoSarin
lang:
Šlo by to velmi podobně jako v tom PHP - vytvořit si třídu pro překlad v JS a všechny stringy vkládat přes tuto třídu. Není nutné brát data pokaždé z databáze (pokud se výstupní stringy pro JS nemění příliš často). Pak stačí jeden javascriptový soubor generovaný pomocí PHP (bude obsahovat potřebné stringy) a stačí ho vygenerovat třeba jednou denně a jen s potřebnými daty: PHP: // PHP soubor generující JSON data pro překlad do nějakého jazyka (do stránky stačí includovat jen jeden soubor s aktuálně používaným překladem) // nemusí (a neměl by) obsahovat všechny stringy z DB, ale jen ty, které jsou pro JS potřeba $strings = array( 'original 1' => 'translation 1', 'original 2' => 'translation 2', ... ); echo 'var lang = ' . json_encode($strings) . ';'; JS: // JS překladová třída (čistě schematicky) var Translation = { translate : function(string) { if (typeof lang[string] != 'undefined') { return lang[string]; } else { return string; } } } A všechny stringy v JS pak vypisovat pomocí Translation.translate('text'); (případně si udělat nějakou obalovací funkci s kratším názvem) |
||
Časová prodleva: 13 let
|
0