Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    Qualche consiglio sito multilingua

    Ciao a tutti,

    devo realizzare un sito multilingua in 4 lingue, con possibilità di aggiungerne altre in futuro e vorrei qualche consiglio per fare un lavoro ottimale e facilmente aggiornabile.

    Nella release precedente il sito impostava una tabellonaa (esempio le news) unica che conteneva tutte le traduzioni di quella sezione (quindi per le news il campo titolo_it, titolo_en ecc.). In genere le news ma anche i prodotti per esempio hanno sia campi comuni per tutte le lingue (esempio la data di inserimento sul sito) sia campi specifici della lingua (il titolo in inglese piuttosto che in italiano).

    Domanda: secondo voi mi conviene fare una tabella News con le voci comuni, collegata (Left Join) con le varie tabelle delle traduzioni dei contenuti delle news o continuo a usare una tabellona unica? (da valutare anche in funzione di future nuove lingue)

    Secondo punto: il sito conterrà voci di menu, messaggi di conferma ecc. che io vorrei prelevare da un file esterno (diciamo .inc) che creerà stringhe con valori diversi per ogni lingua. Ci sarà italiano.inc, inglese.inc ecc.

    Domanda: Vi sembra una buona soluzione? e per includere il file come potrei fare: una variabile Session basata sulla scelta dell'utente che indichi alla pagina il file da includere, che dite?

    Grazie e ciao a tutti

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: Qualche consiglio sito multilingua

    Originariamente inviato da brucomela
    secondo voi mi conviene fare una tabella News con le voci comuni, collegata (Left Join) con le varie tabelle delle traduzioni dei contenuti delle news o continuo a usare una tabellona unica? (da valutare anche in funzione di future nuove lingue)
    Per le news in particolare non saprei, più che altro ti devi chiedere se ha senso una news in multilingua, o se potrebbe esserci la necessità di inserire una news solo per una lingua (immagino un sito multilingua diviso per aree).

    Comunque voto per la left join, io seguo questo metodo e se fai le cose fatte per bene quando dovrai aggiungere una lingua ci metterai poco.

    Secondo punto: il sito conterrà voci di menu, messaggi di conferma ecc. che io vorrei prelevare da un file esterno (diciamo .inc) che creerà stringhe con valori diversi per ogni lingua. Ci sarà italiano.inc, inglese.inc ecc.
    io uso la sintassi dei file .ini che poi è la stessa che viene interpretata da smarty, cosi posso usare il file sia nel template engine che in php (con parse_ini_file). Uso chiavi mnemoniche e in maiuscolo.

    Domanda: Vi sembra una buona soluzione? e per includere il file come potrei fare: una variabile Session basata sulla scelta dell'utente che indichi alla pagina il file da includere, che dite?
    Direi cookie, cosi l'utente mantiene l'informazione anche quando ritorna sul tuo sito.

    Ciao ciao

    P.S.
    Mi raccomando, usa l'UTF8 per l'encoding della pagina, dei files e per il charset del db, se non vuoi perderti in htmlentities e similari.

  3. #3
    ciao Gianiaz e grazie della risposta!

    Giusta la domanda che mi fai, in effetti pare però che ogni news debba essere tradotta in tutte le lingue, al limite con la Left join se non c'è una traduzione non verrà caricata per quella lingua.

    Non uso smarty e quindi procederò semplicemente con file inclusi, che definiranno tutte le stringhe che possono variare nelle varie lingue.

    Per quanto riguarda i cookies invece delle session, non c'è il rischio che non siano abilitati sul browser dell'utente?

    Mi puoi spiegare meglio il tuo PS, io di solito uso funzioni che "puliscono" i contenuti prima dell'inserimento nel db, a quali settaggi UTF8 ti riferisci?

    grazie ancora e ciao
    E.

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Per il discorso cookies, io in genere uso l'accoppiata cookies / get, nel senso che quando entri nel sito leggo il cookie e vedo se è settato e se ha un valore valido, se si lo tengo e lo uso per comporre l'url del tipo "http://sito.com/it/", e me lo porto dietro in ogni link/pagina, se invece non è settato ne uso uno di default, e ovviamente ci sarà la possibilità di cambiarlo con un link che va ad esempio a "http://sito.com/en/".

    Per quanto riguarda l'utf8, è la codifica caratteri, che serve per gestire in modo ottimale il charset, evitando di avere problemi con caratteri particolari tipo le accentate che vengono visualizzate come dei punti interrogativi.
    Per le lettere accentate esiste htmlentities, ma se domani ti chiedono di fare il sito in giapponese?
    con utf8 ti salvi.

    Cerca utf8 sul forum (oltre magari a dare una lettura al post che ho in firma), troverai una discussione corposa a riguardo che ti toglierà molti dubbi.

    ciao

  5. #5
    ciao Gianiaz,

    l'avevo intesa così in effetti: leggo se il cookie è impostato, altrimenti di default mando il visitatore nell'italiano diciamo.

    Però non mi sembra che basti a risolvere, provo a spiegarmi:

    la variabile lingua_preferita (IT, EN ecc.) io vorrei usarla per creare una sola pagina .php che di volta in volta si adatti alla lingua. Quindi ad esempio nelle select SQL, nei path delle immagini eccetera. Mettiamo pure che io di default quando non trovo il cookies setto

    codice:
    $lingua_preferita = IT
    Nel momento in cui l'utente clicca su EN per cambiare lingua, e non ha i cookies abilitati, come faccio a mantenere l'impostazione EN per le pagine successive che visiterà? In questo caso ad ogni link mi tornerà alla lingua di default!

    Per il discorso del charset, la dichiarazione UTF8 come predefinito la inserisco sempre nelle pagine, serve altro? Devo fare qualcosa quando creo il DB in MySQL? (intano mi leggo il thread linkato...). Al momento nel mio DB leggo sotto collation delle tabelle "latin1_swedish_ci", mi potresti spiegare come dovrei procedere quando creo il DB ex novo?

    Grazie+++
    E.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    221
    per selezionare in automatico la lingua puoi basarti sui dati che ti invia il browser

    ciAo

  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    mi spiego in php:

    codice:
    $lingue = array('IT', 'EN');
    
    if(isset($_COOKIE['lang']) && in_array($_COOKIE['lang'], $lingue)) {
      $lingua_da_visualizzare = $_COOKIE['lang'];
    } elseif (isset($_GET['lang']) && in_array($_GET['lang'], $lingue)){
      $lingua_da_visualizzare = $_GET['lingua'];
    } else {
      $lingua_da_visualizzare = 'IT';
    }
    
    // non so se la sintassi di set cookie è corretta, l'ho scritta al volo
    set_cookie('lang',$lingua_da_visualizzare, 86400);
    nel sito usera $lingua_da_visualizzare ogni qual volta che vorrai sapere che lingua mostrare.

    Per l'utf8 il discorso è articolato e complesso, la risposta che ti do qui alla tua domanda è semplicemetne "NO", però se leggerai le risorse sul forum avrai un buon quadro.

    ciao

  8. #8
    ..da quello che leggo verifichi se c'è il cookie se no ti affidi a una variabile GET, ma in questo modo dovrei passare pagina per pagina la variabile ogni volta: non c'è un modo migliore?

    Ci deve essere una soluzione praticabile per impostare la lingua una volta sola, e cambiarla solo nel raro caso che l'utente sia poliglotta e masochista!!

    L'ultima risposta "semplicemente NO" significa che basta che io inserisca il charset nella pagina e crei il DB da phpMyAdmin come faccio sempre? e il latin1_swedish_ci come charset è ok?


    grazie davvero!

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da brucomela
    ..da quello che leggo verifichi se c'è il cookie se no ti affidi a una variabile GET, ma in questo modo dovrei passare pagina per pagina la variabile ogni volta: non c'è un modo migliore?
    prima di tutto mi sono accorto di aver scritto il contrario di quello che volevo, prima controllo il get, poi il cookie, altrimenti se uno ha settato un cookie non può più cambiare lingua:

    codice:
    $lingue = array('IT', 'EN');
    
    if(isset($_GET['lang']) && in_array($_GET['lang'], $lingue)) {
      $lingua_da_visualizzare = $_GET['lingua'];
    } elseif (isset($_COOKIE['lang']) && in_array($_COOKIE['lang'], $lingue)){
      $lingua_da_visualizzare = $_COOKIE['lang'];
    } else {
      $lingua_da_visualizzare = 'IT';
    }
    
    // non so se la sintassi di set cookie è corretta, l'ho scritta al volo
    set_cookie('lang',$lingua_da_visualizzare, 86400);
    Il discorso di portarsi dietro in get la lingua potrebbe essere un vantaggio anzichè uno svantaggio se accoppiato con un buon url rewriting, perchè un url cosi fatto :

    http://www.sito.com/it/articolo1/
    http://www.sito.com/en/articolo1/

    Può darti anche dei vantaggi a livello di motori di ricerca.


    Ci deve essere una soluzione praticabile per impostare la lingua una volta sola, e cambiarla solo nel raro caso che l'utente sia poliglotta e masochista!!
    Comunque nessuno ti vieta di mixare i metodi, e cioè usare il mio metodo, ma anzichè usarlo per passare poi via get la variabile lo usi per settare una variabile di sessione.

    In questo modo per chi ha i cookie riesci a mantenere l'impostazione anche alle prossime visite, per chi non li usa farai scegliere di volta in volta.


    L'ultima risposta "semplicemente NO" significa che basta che io inserisca il charset nella pagina e crei il DB da phpMyAdmin come faccio sempre? e il latin1_swedish_ci come charset è ok?
    Come ti dicevo il discorso dell'utf8 non è banale, leggiti prima di tutto il post che ho in firma che da delle linee guida banali, poi questo che tratta in modo abbastanza approfondito il problema:

    http://forum.html.it/forum/showthrea...3#post11431353

    Inutile ripetere le stesse cose


    grazie davvero!
    di niente
    ciao

  10. #10
    ciao Gianiaz, grazie della tua risposta ma ho ancora qualche dubbio (grazie della pazienza!).

    tu scrivi:

    Il discorso di portarsi dietro in get la lingua potrebbe essere un vantaggio anzichè uno svantaggio se accoppiato con un buon url rewriting, perchè un url cosi fatto :

    http://www.sito.com/it/articolo1/
    http://www.sito.com/en/articolo1/
    Io in effetti vorrei evitare di passare in ogni link di pagina un parametro tipo "?lang=EN", dal tuo esempio mi pare che tu voglia piuttosto inserire la scelta della lingua nel path.

    Non so se la mia sia una buona idea ma quello che pensavo era fare una sola pagina, che ricevendo in qualche modo il parametro della lingua (IT, EN...) generasse dinamicamente sia la scelta delle immagini (pescandole da IMG/EN o da IMG/IT) sia le select (dando i giusti nomi alle tabelle) sia l'inclusione del testo (scegliendo il file .inc appropriato).

    Questo però credo escluda l'uso di path come quelli che hai proposto, mi sbaglio? (dato che la pagina news.phpad esempio sarà unica, non ce ne sarà una per lingua)

    Questo è il motivo per cui io vorrei un'impostazione stile Session/Cookie (affidabile però e che si conservi per tutta la sessione).
    C'è un modo per farlo senza passare sempre "?lang=EN" o dici che mi sto solo complicando la vita?

    Grazie ancora, mi stai aiutando davvero molto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.