Tendina lingua che al clic resta nella stessa pagina ma tradotta
Autor: Andrea D.Ciao a tutti, scusate per il titolo infantile ma non sapevo come altro descriverlo.
Sto cercando aiuto per capire come realizzare una tendina per le lingue (che già ho) che, una volta cliccato sopra la lingua scelta, si rimane sulla stessa pagina e non si torni alla homepage.
Se siamo nella pagina "Contatti" e la pagina è in italiano, se l'utente clicca sulla bandierina inglese viene portato in "contacts".... per farla breve un po' come avviene qui in websitex5.com.
Il codice che io ho utilizzato è il seguente:
<ul class="langSelect f16 white">
<li><a href="http://www.mywebsite.it/" title="Italy"><span class="flag it"></span>Italy</a></li>
<li><a href="http://www.mywebsite.it/uk" title="England"><span class="flag gb"></span>England</a></li>
</ul>
hai un sito impostato in multilingua?
posta il link
Autor
Questo è il link dove puoi e potete vedere il funzionamento del menu a tendina per le lingue (è un sito di test): www.indirizzodiprova.altervista.org/tig3rtest
Se si preme su "contatti"... e poi si seleziona la bandierina di lingua inglese, la traduzione verrà fatta, poichè portati nel sito /en ... tuttavia non rimane nella pagina "contacts" ma torna in homepage.... vorrei rimanesse..
... son poche pagine, quindi faresti presto ad assegnare ad ogni pagina i relativo link...
... oppure, ma non è il tuo caso, se le pagine en/it avessero lo stesso nome si potrebbe redirezionare rapidamente...
... oppure si potrebbe creare una routine JS con l'istruzione switch()/case, con l'elenco di tutte le condizioni relative alle pagine, nel tuo caso una trentina...
... rilevi il nome della pagina dall'URL ed in base a questa redirezionare; ...nel caso fai ricerche in rete...
... ma, faresti sicuramente prima per come detto al primo capoverso...
... nel caso il collegamento da usare sarebbe File o URL | File su Internet...
... digitando da EN as IT: ../nomePaginait.html
... digitando da IT ad EN: en/nomePaginaen.html
.
Autor
ciao kola, grazie per la risposta.
Il problema è che il codice è incorporato nell'header, non è inserito nei tag head o body, quindi è impossibile per me cambiarlo e inserire tutti i link manualmente. E' una soluzione che avevo già pensato ma per questo motivo non ho realizzato.
In più volevo riportare il codice negli altri siti creati con più pagine e se ce ne stanno molte diventa abbastanza una scocciatura.
Da ignorante pensavo esistesse qualche stringa e/o codice da inserire nel link.
... le bandiere invece di metterle in intestazione, potresti metterle nella pagina, e risolveresti con semplicità...
... altrimenti basterebbe fare come suggerito precedentemente nel procedimento JS alternativo, programmando la lista delle condizioni...
... l'idea di base potrebbe essere quella presentata qui: https://helpcenter.websitex5.com/pl/post/124875
.
... magari oltre alla mie idee potrebbero presentarsene altre ...
.
ciao
.
Autor
Non so se dipenda dal fatto che sto guardando dallo smartphone ma, dopo esser andato nel thread che mi hai linkato, ho provato a cliccare tutti i link.. soprattutto quelli della risposta corretta.. ma mi da:
"Sorry, the page you are looking for could not be found."
quindi non riesco a vedere il codice usato.
...... scusami! ... conservavo il Topic, ma mi ero dimenticato che tutti i miei esempi che editavo direttamente in rete si erano estinti ... ! ...
... provo a vedere se trovo un link di lemonsong su di una cache web, e se persiste ancora qualcosa...
... ti farò sapere ...
.
Ma ... al lato pratico di un utilizzo di un sito web, non credo serva molto rimanere nella pagina...
Penso che un ipotetico utilizzatore del sito faccia la sua scelta di lingua inizialmente fin dalla homepage a meno che abbia dimestichezza in entrambe le lingue nel qual caso il problema non si pone.
... ho trovato il link della cache web, ma purtroppo ho recuperato solo questo dei miei esempi: https://web.archive.org/web/20160418034035/http://www.zspace.it/kolasim/mobile/pagina_2.html
... comunque buono come idea base di partenza...
... da rigo 15 al rigo 20 vedi come catturo il nome della pagina...
... quindi a seguire basterebbe aggiungere le condizioni con la funzione switch(); ...niente di difficile; ..solo un incremento ripetitivo delle condizioni da verificare...
... provaci e casomai fai vedere cosa avrai fatto per controllare e/o perfezionare...
.
Autor
Lo so Giorgio, condivido con te, il problema è che uno dei siti creati non è mio.
Il proprietario è contrario alla pagina di ingresso, un po' per una questione estetica e un po' per dare al visitatore la libertà di cambiare il contenuto in qualsiasi pagina si trovi (magari arruvato da una convidisione tramite email o social o una pagina trovata in google).
Da quanto ho capito anche il reindirizzamento automatico necessita di una pagina d'ingresso quindi ho dovuto scartare anche quella scelta. Sono rimasto con la tendina.
Kola io ti ringrazio ma nonostante tu mi abbia fornito il link con mezzo codice già pronto (da quel che ho capito devo fare solo copia incolla).. non lo saprei fare, non ho abbastanza conoscenze per continuarlo.
... magari più tardi se ti interessa e se trovo tempo programmerò la mia idea originale di base e da sviluppare...
.
Autor
Se non è un disturbo, mi faresti un favore.
Secondo me una funzione del genere (tendina lingua e funzione di restare nella pagina in cui ci si trova anche una volta cliccata la bandierina) dovrebbe essere aggiunta a website x5 per aggiungere una funzione di professionalità assieme alle altre che già ha.
... pensavo che intanto ne producevi tu un esempio su quanto detto...
... comunque, visto che nessun altro si è prestato, se mi si avvia il vecchio catorcio e tempo permettendo, in giornata vedrò di sviluppare la mia idea, che a mente mi sembrerebbe semplice, e poi si vedrà se risulterà valida o meno...
.
... ecco > esempio1, > esempio2 ...con la mia personalissima idea, messa in pratica così come pensata, e più semplice di quanto pensassi...
... il codice si posiziona in HEAD e varrà per tutte le pagine, differenziando la lista delle condizioni tra IT ed EN ...
... oppure con cartelle parallele...
.
Ottimo KolAsim !
Grazie al tuo spunto ho elaborato un altro sistema più semplice che sfrutta il fatto che normalmente un sito tradotto è presente in un'altra directory in modo speculare tipo www.miosito.it/it/index.html e www.miosito.it/en/index.html
Requisiti di base è che gli indirizzi siano uguali tranne la cartella lingua.
ecco lo script da mettere, nel sito in inglese, in header in oggetto codice html:
<button onclick="myFunction()">Italiano</button>
<script>
function myFunction() {
var indirizzo = window.location.href;
var pagina = indirizzo.replace("/en/", "/it/");
window.location.href = pagina;
}
</script>
Il relativo script per l'italiano
<button onclick="myFunction()">Inglese</button>
<script>
function myFunction() {
var indirizzo = window.location.href;
var pagina = indirizzo.replace("/it/", "/en/");
window.location.href = pagina;
}
</script>
ecco la demo
Autor
Complimenti Kola e Giorgio, ho visto il vostro sito demo ed è la funzione che cercavo.
L'ho messo in pratica nel mio e mi son permesso di usare al 99% il vostro codice. Non l'ho usato al 100% perchè mi piaceva più l'idea con la tendina con bandierine piuttosto che un bottone.
Se volete vedere com'è uscito con il menu che avevo lo trovate qui Vedi risultato finale. L'ho inserito solamente per la pagina Contatti/Contacts.
Il codice di Giorgio sarebbe stato più sbrigativo ma non ho potuto inserlo poichè ormai avevo tutte le pagine con nomi diversi.. averlo saputo prima le lasciavo uguali e veniva tutto in modo automatico.
Ho usato quindi il tuo codice Kola, lasciando i crediti come giusto che sia. E' un po' macchinoso ma fa il suo dovere.
Vi ringrazio nuovamente, gentilissimi
Autor
Scusate dell'up
Solo ora mi sono accorto che per tornare indietro, cioè da sito INGLESE a sito ItALIANo non funziona.
Analizzando la pagina demo e il codice, per quanto poco e niente ne capisco, penso sia dovuto perchè in quell'esempio non esiste una cartella en/...
Ho provato a inventarmi una soluzione ma tutte le volte mi porta in un indirizzo inesistente...
... quelli che chiami i miei crediti, li puoi eliminare; li ho messi come commenti per farti individuare il codice; ...da 17 anni a questa parte non ho fisime e tutte le mie invenzioni ed idee con SwishMax, OOo, js, div_custom, iframe, eccetera, e di unico che si sia visto, sono state tutte di libero utilizzo e libere da vincoli; ...mi accontento, e non lo pretendo, se venisse apprezzato, o ricordato, come hai fatto tu...
... per il discorso del codice più semplice o meno, quello dagli esempi base indicati, te l'avevo anticipato che nel tuo caso non avendo pagine nominate in modo uguale non poteva essere usato, da lì l'idea di usare switch()/case...
... esattamente come hai pensato; ... al redirect da sotto cartella "en", o usi l'URL assoluto, per esempio:
http://www.tuosito/nomepaginaIT.html
... oppure l'URL relativo:
../nomepaginaIT.html (due punti - barra - nome pagina)
...!.. a te non funziona con l'URL assoluto in quanto hai usato un (:) di troppo dopo e da eliminare nell'istruzione "case" (case: eccetera)...!...
... ti consiglio di utilizzare alla fine l'istruzione "default" per direzionare le pagine non riconosciute alla INDEX del sito principale, con URL assoluto...
... ottimo anche l'esempio postato da Giorgio (v. cartelle parallele)......
ciao
.