Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Nivel de trai

Semnal bun da'... prost

De ce statiile de radio FM nu ren...

Pe unde pot sa gasesc statistici ...
 Este reconditionat acest laptop?

Prelungire fire electrice

Amintiri despre satelit si retran...

Care este cel mai bun mod de a pr...
 Recomandare centrala termica apar...

samsung Xcover 5 Nu mai vrea

Telefon de budget pentru filme 10...

Recomandare serviciu / firma recu...
 La mulți ani @Piniuli!

Pret inghetata corso kaufland?

La multi ani @Constantin si Elena...

La mulți ani @Ion_Bumbu!
 

Selectare limbii cu ajutorul JavaScript

- - - - -
  • Please log in to reply
5 replies to this topic

#1
CiprYst

CiprYst

    Member

  • Grup: Members
  • Posts: 250
  • Înscris: 11.06.2011
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
pinguinul666

pinguinul666

    Senior Member

  • Grup: Senior Members
  • Posts: 4,710
  • Înscris: 06.10.2015

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 Posted Image))

Edited by pinguinul666, 16 March 2016 - 20:18.


#3
potae

potae

    Sorosist frumos si liber

  • Grup: Senior Members
  • Posts: 3,429
  • Înscris: 20.08.2013
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
DILAS

DILAS

    Member

  • Grup: Members
  • Posts: 320
  • Înscris: 03.12.2007
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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postpotae, 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"));

View PostDILAS, 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:
Ce spune potae e chiar elegant, asa se si face internationalizarea aplicatiilor, nu amesteca cross-cutting concern si nu contravine spuselor tale.

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
DILAS

DILAS

    Member

  • Grup: Members
  • Posts: 320
  • Înscris: 03.12.2007
@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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate