Selectare limbii cu ajutorul JavaScript
Last Updated: Mar 17 2016 14:48, Started by
CiprYst
, Mar 16 2016 19:34
·
0
#1
Posted 16 March 2016 - 19:34
Buna seara,
Pentru inceput vreau sa precizez ca acum descoper tainele web development-ului. Am un proiect la facultate in care trebuie sa fac o aplicatie web de genul unui ziar online cu articole, stiri, etc. Nu va fi publicat deci nu va avea o adresa web. Am o rubrica unde user-ul trebuie sa selecteze limba dorita apasand pe steguletul tarii. Intrebarea mea este uramtoarea: Pentru fiecare limba in parte trebuie sa fac un "index.html" nou care sa aiba aceleasi functii dar sa fie tradusa in alta limba? Iar cand user-ul apasa pe un stegulet deschid "index.html" corespunzator limbii alese? Sau este o metoda mai usoara? Ideea e ca dupa ce fac acest lucru trebuie sa salvez si cookie pentru aceasta limba, ca data viitoare cand intra user-ul sa fie limba selectata de el. Initial am incercat ca atunci cand user-ul apasa pe stegulet sa se schimbe doar scrisul, dintr-o limba in alta, ca si in codul de mai jos: Quote
<html> <head> </head> <body> <h1 id="titlu">Ce culoare doriti?</h1> <p id="selLang"><strong>Selectare limba<strong></p> <img src="romania.png" onclick="changeLangToRo()"> <img src="uk.gif" onclick="changeLangToEn()"> <script type="text/javascript"> function changeLangToEn(){ document.getElementById('titlu').innerHTML = 'What color do you want?'; document.getElementById('selLang').innerHTML = '<strong>Language selection</strong>'; } function changeLangToRo(){ document.getElementById('titlu').innerHTML = 'Ce culoare doriti?'; document.getElementById('selLang').innerHTML = '<strong>Selectare limba</strong>'; } </script> </body> </html> Dar sunt destul de sigur ca nu este bine pentru ca asa nu stiu cum sa pun cookie sa ramana la fel limba. |
#2
Posted 16 March 2016 - 20:10
Quote <html> <head> </head> <body> <h1 id="titlu">Ce culoare doriti?</h1> <p> id="selLang"><strong>Selectare limba<strong></p> <img src="romania.png" onclick="changeLangToRo()"/> <img src="uk.gif" onclick="changeLangToEn()"/> <script type="text/javascript"> function changeLangToEn(){ document.getElementById('titlu').innerHTML = 'What color do you want?'; document.getElementById('selLang').innerHTML = '<strong>Language selection</strong>'; } function changeLangToRo(){ document.getElementById('titlu').innerHTML = 'Ce culoare doriti?'; document.getElementById('selLang').innerHTML = '<strong>Selectare limba</strong>'; } </script> </body> </html> ti-am facut ceva mici corecturi! img este un singleton - adica e un single tag. nu uita sa le inchizi corect este adevarat ca unele browsere nu se plang de astfel de erori si tot executa...dar nu stii ce se poate intampla pt mai multe, sper sa ajute si altii )) Edited by pinguinul666, 16 March 2016 - 20:18. |
#3
Posted 16 March 2016 - 21:49
Nu mai bine faci un fisier properties gen en.lang si ro.lang si iti tii acolo string-urile? In en.lang ai "logout=Logout" iar in ro.lang ai "logout=Iesi din cont". Tu in aplicatia ta pur si simplu faci Language.get("logout"). Metoda asta get poate fi usor 'scurtcircuitata' cu un parametru in url sau cookies sau sesiune.
Daca useru' da click pe un steag ii pui pe sessiune sau cookies sau cont un flag si in Language.get() in loc sa incarci new Properties(new FileInputStream("en.lang")) faci new Properties(new FileInputStream("ro.lang")); |
#4
Posted 16 March 2016 - 21:58
Obs:
In html5 (nu se vede doctype, dar presupun ca asta e) nu e nevoie sa inchizi tag-uri (de ex img), deci <img src="" alt=""> e corect. In script tag nu se pune type deloc. Poti sa faci ceva cum a zis potae, doar ca e cam urat, cel mai corect ar fi sa folosesti un sistem de templating pe client sau server, iar traducerile sa le tii intr-un dictionar JSON. Ceva de genul: { "LOGOUT_TEXT": { "en": "Logout", "ro": "Iesi din cont" } } La initialiarea paginii poti parsa template-urile si inlocui constanta LOGOUT_TEXT cu valoarea corespondenta. Ca sa stii limba o poti salva intr-un cookie/ sessionStorage/ localStorage. |
#5
Posted 17 March 2016 - 07:21
potae, on 16 martie 2016 - 21:49, said:
Nu mai bine faci un fisier properties gen en.lang si ro.lang si iti tii acolo string-urile? In en.lang ai "logout=Logout" iar in ro.lang ai "logout=Iesi din cont". Tu in aplicatia ta pur si simplu faci Language.get("logout"). Metoda asta get poate fi usor 'scurtcircuitata' cu un parametru in url sau cookies sau sesiune. Daca useru' da click pe un steag ii pui pe sessiune sau cookies sau cont un flag si in Language.get() in loc sa incarci new Properties(new FileInputStream("en.lang")) faci new Properties(new FileInputStream("ro.lang")); DILAS, on 16 martie 2016 - 21:58, said:
Poti sa faci ceva cum a zis potae, doar ca e cam urat, cel mai corect ar fi sa folosesti un sistem de templating pe client sau server, iar traducerile sa le tii intr-un dictionar JSON. Ceva de genul: El in spatele acelor metode poate folosi un dictionar json, sau orice altceva. La ce te referi cand zici "templating"? Ca stringurile pot avea parametri? Bineinteles ca pot avea parametri. In mod normal se face cu https://en.wikipedia.org/wiki/Gettext Exista biblioteci compatibile gata facute si pentru javascript. Cu toate acestea, nu vad de ce ai vrea sa faci internationalizarea in js. Mai mult creaza probleme, decat rezolva. Cel mai bine e sa generezi site-ul intr-o limba, pe server, si sa reincarci aplicatia cand se schimba limba. Edited by OriginalCopy, 17 March 2016 - 19:20. |
#6
Posted 17 March 2016 - 14:48
@OriginalCopy
Ce spune potae e corect si nu contrazice ce am zis eu doar ca mi se pare cam urat sa ai un fisier de properties din care iei variabile. E mai ok cu un dictonar (JSON); Nu inteleg intrebarea, templating e o chestie destul de folosita, basically ai ceva de genul: <div>{{someVar}}</div>. La executie someVar va fi evaluat cu valoarea variabilei respective. Daca asta intelegi prin stringuri cu parametrii, e acelasi lucru. Pana la il18n omul mai are cred de studiat, l-as fi recomandat daca mi s-ar fi parut ca e pregatit sa-l foloseasca, dar da asa se face. (vezi ca ai pus punct dupa link si se duce in 404) Templating se poate la fel de bine si pe server(chiar mai recomandat sa faci asta acolo), nu mi se pare ca are legatura cu OP insa. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users