Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361

    Classi php5 e sito multilingue

    salve, sono sempre io con i miei 1000 dubbi

    sto realizzando un sito che dovrà essere multilingua.. considerando che le parole che devo tradurre non sono poche ma non sono nemmeno troppe (ipotizziamo 70 parole), vorrei capire qual'è l'approccio migliore da seguire.

    fino ad oggi utilizzavo un file php per ogni lingua dove inserivo le costanti. questo file veniva incluso nelle pagine interessate e poi stampavo il valore delle costanti dove serviva.

    ora il sito si sta ingrandendo e ho deciso di riorganizzarlo per bene tramite la programmazione ad oggetti, solo che per quanto riguarda il cambio-lingua il discorso è un pò problematico.. cosa mi consigliate di fare?

    continuo a utilizzare i file di lingua come li ho utilizzati fino ad oggi o li trasformo in classi? inoltre, è consigliato l'approccio che sto seguendo oppure, per un sito di medie/grandi dimensioni, ci sono alternative migliori?

    grazie

  2. #2
    Ciao,

    Una possibile soluzione già sperimentata ampiamente è
    usare una variabile di sessione per salvare la lingua da usare
    e poi appoggiarsi a tabella nel DB che contiene le varie traduzioni...

    1) crei ad esempio tab_traduzioni e la riempi:
    codice:
    INSERT INTO tab_traduzioni (ita_frase, eng_frase, fra_frase) 
    VALUES ('esci', 'logout','déconnexion');
    2) quando l'utente sceglie la lingua inziializzi $_SESSION['lang']
    ad esempio $_SESSION['lang']='eng'; // qui uso lo stesso prefisso del campo della tabella

    3)Poi crei una classe (chiamiamola Poliglot)
    che si occupa di accedere alla tabella e gestire vari aspetti (vedi tu cosa ti serve)
    e sopratutto ha un metodo pubblico:

    Translate ($frase_ita) che:
    fa un
    'SELECT '.$_SESSION['lang'].'_parola WHERE upper(ita_frase) = upper($frase)";
    e restituisce il risultato

    4)Così tu puoi sviluppare tutto il sito come credi e quando hai bisogno di un termine multilingua fai una cosa del tipo

    Codice PHP:
    $poliglot = new Poliglot( );
    echo 
    $poliglot->Translate('esci'); 
    così e a seconda della lingua scelta dall'utente avrai 'esci', 'logout', o ','déconnexion';
    ma il codice resta compatto e leggibile

    Naturlamente io la mia classe Poligliot l'ho infarcita di tanti piccoli helper per la formattazione dinamica del testo del testo, le abbreviazioni, il controllo degli errori se mancano le parole, ecc. ecc.
    (ad esempio se devo far stare 'déconnexion' nello stesso spazio di 'esci',
    posso scegliere tra ho una funzione che riduce il carattere, o una che usa l'abbreviazione appropriata...)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.