Newsgroup: it.comp.lang.javascript
Titolo: Funzione per pagine multilingua

Salve a tutti,
ho un sito con cinque pagine html in tre lingue (16 pagine in tutto, ovvero
le 5 per 3 lingue più index.htm iniziale)
Nella root ho la index.htm + tre cartelle chiamate  ITA ENG e ESP.
All'interno delle tre cartelle i file hanno lo stesso nome anche se in
lingue diverse. Mi spiego: la pagina "chi siamo" si chiama chi.htm in tutte
e tre le cartelle, nonostante il contenuto in ognuna delle tre sia in lungua
diversa.
Nella barra di navigazione di ogni pagina ho inserito tre bandierine per
cambiare lingua. Ora vorrei associare ad ognuna delle tre bandierine una
funzione javascript di modo che al clic su una bandierina succeda questo:
qual'è il nome del file corrente?
aprimi lo stesso file ma nella cartella "lingue" (dove lingua è uguale a
ITA, ENG o ESP in base alla bandierina che si è premuto)...
A me sembra non difficile da realizzare... ma allora vi chiederete: perché
vengo a chiederlo qui?
Semplice: perché capisco un po' di programmazione, ma non capisco quasi
niente di javascript... HELP!
M.
:-)

 ha scritto nel messaggio
news:439c05ff$0$16210$4faf...@reader3.news.tin.it...


 vengo a chiederlo qui?
Soprattutto mi chiedo: per quale motivo vuoi ricorrere al js quando
basta l'html?
<a href="ITA/chi.htm"><img src="ita.gif"></a>
<a href="ENG/chi.htm"><img src="eng.gif"></a>
<a href="ESP/chi.htm"><img src="esp.gif"></a>
Nelle cartelle ITA ENG ed ESP, ovviamente, devi avere dei path relativi
(identici per tutte e tre le lingue), non mi pare serva altro.
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)

 <a href="ITA/chi.htm"><img src="ita.gif"></a>
mmm
posto che questo link e' in ENG/chi.html, non dovrebbe essere
<a href="../ITA/chi.htm"><img src="ita.gif"></a>
(volendo si potrebbe anche togliere il link da se stessi, ma il concetto e'
quello)
-- 
Firma in costruzione


Non credo di capire, o forse non mi sono spiegata...
Con una sola funzione recupero il nome della pagina in cui sono (quindi non
ne scrivo una per ogni pagina diversa), quindi cerco la stessa pagina nella
cartella della lingua scelta.
Con quello che mi proponi tu devo avere un codice diverso nella cartella
chi.htm, uno nella cartella dove.htm ecc... Mi sempra una perdita di tempo,
soprattutto se in futuro le pagine per lingua anziché 5 diventassero tante
di piů
:-(

 Non credo di capire, o forse non mi sono spiegata...
ti sei fatta capire benissimo :)
in realta' queste cose si risolvono serverside... comunque potresti provare
a usare questa "cosa"
<html>
<head>
<title>test</title>
<script type="text/javascript">
var lingue=new Array('ENG', 'ESP', 'ITA');
function creaLink(idDivContenitore) {
  var divContenitore=document.getElementById(idDivContenitore);
  var paginaCorrente=location.pathname.split('/');
  paginaCorrente=paginaCorrente[paginaCorrente.length-1];
  for (var i=0; i<lingue.length; i++) {
    var immagine=document.createElement('img');
    immagine.setAttribute('src', '../'+lingue[i]+'.jpg');
    var collegamento=document.createElement('a');
    collegamento.setAttribute('href', '../'+lingue[i]+'/'+paginaCorrente);
    collegamento.appendChild(immagine);
    divContenitore.appendChild(collegamento);
  }
}
</script></head>
<body onload="creaLink('contenitoreDiLink')">
 <div id="contenitoreDiLink"/>
</body>
</html>
si pressuppone che questo sia (ad esempio) il file ITA/bandierine.html
che esistano le directory ENG, ITA e ESP e i file ENG.jpg, ITA.jpg e ESP.jpg
tutti allo stesso livello.
-- 
Firma in costruzione

 ha scritto nel messaggio
news:N_Vmf.31272$S6.5...@twister2.libero.it...

Te l'ho detto: usa le Session
Fabio

 > Nella barra di navigazione di ogni pagina 
Mi era sfuggito "di ogni pagina" e sono andato per la mia strada.
Se può servire come attenuante per la precedente risposta a vanvera,
sappi che ho un piede fratturato fresco fresco e un dolore da urlo, di
conseguenza  la testa è *molto* fra le nuvole. Scusa di nuovo :)


 usa le Session
chiaro, come ho detto nel messaggio precedente, queste cose si fanno
serverside, tuttavia l' "accroccrio" che ho postato funziona.
-- 
Firma in costruzione

 ITA, ENG o ESP in base alla bandierina che si č premuto)...
script:
function setLanguage(sID){
	sID=sID||"ITA";
 
	var sUrl = window.location.href;
	window.location.href=sUrl.replace(/\/[A-Z]{3}\//,"/"+sID+"/"));
}
html:
<a href="javascript:void(setLanguage('ITA'))">...</a>
<a href="javascript:void(setLanguage('ENG'))">...</a>
<a href="javascript:void(setLanguage('ESP'))">...</a>
A scanso di equivoci: la funzione non fa altro che sostituire le prime tre
lettere maiuscole che trova nell'url corrente, che siano precedute e
seguite dal carattere di slash (/). Secondo la struttura che hai detto di
avere (root+tre cartelle ITA, ENG, ESP), dovrebbe esserti sufficiente.
Cosě facendo, eviti di perdere anche eventuali dati della search
(?param=value etc) e hash (#anchor).
-- 
~ Se cerchi una mano disposta ad aiutarti,
la trovi alla fine del tuo braccio.

 </html>
Quante volte dovremo ripeterlo che XHTML *non è* XML per i browser?
<div style="background:red" />
<h5>Hello, Mars</h5>
-- 
~ Il computer è una macchina progettata per velocizzare e automatizzare
gli errori.


C'č qualche cosa che non va... sotto mi scrive "errore nella visualizzazione
della pagina" e non succede niente...
Putroppo ho potuto provare solo ora... spero che il tread non muoia
prematuramente... :-(
M.


> window.location.href=sUrl.replace(/\/[A-Z]{3}\//,"/"+sID+"/"));
diventa:
window.location.href=sUrl.replace(/\/[A-Z]{3}\//,"/"+sID+"/");
-- 
~ L'ingegnere non vive, funziona.

Scusate per la data... giuro su Zio che non stavo provando un software 
craccato!
M. 

 M.
Se ne trovano pochi di cosi' competenti, disponibili e per nulla 
arroganti...