Visualizzazione risultati 1 fino 6 di 6

Discussione: Lingua del sito

  1. #1
    Guest

    Question Lingua del sito

    Salve a tutti!
    E' da giorni che smanetto, può sembrare una cavolata, ma per me non lo è
    ho un CMD, e dal pannello di controllo (ADMIN), posso scegliere da un menù a cascata la skin del sito.
    Sono risalito al file php dove è contenuta la stringa per la scelta della skin (LINK DEL SITO\admin\templates\settings_mainform.tpl --> il formato è tpl, ma il linguaggio usato è php)
    La stringa è la seguente:
    Codice:
    case 'CURRENT_SKIN':
    				
    					$skins = SiteData::GetAvailableSkins();
    					$skin = SettingsData::GetSetting('CURRENT_SKIN');
    					
    					echo '<SELECT name="CURRENT_SKIN">';
    						
    						$tot = count($skins);
    						for($i=0;$i<$tot;$i++)
    						{
    							$sel = ($skin->value == $skins[$i])? 'selected' : '';
    							echo '<option value="'.$skins[$i].'" '. $sel . '>'.$skins[$i].'</option>';
    						}
       
    					echo '</SELECT>';
    					break;
    Ora arriva il problema. Prima di accedere al sito, voglio creare una pagina con una bandiera italiana e una inglese, dove l'utente clicca in base alla propria lingua.
    Avrei due possibilità:
    • Creare due volte lo stesso sito, uno in italiano e uno in inglese (o creare due volte le stesse pagine, in lingue diverse).
    • Inserire un codice, che in base alla scelta dell'utente, apre le pagine solo in una determinata lingua (i file di linguaggio vengono messi in due cartelle diverse, IT e EN)

    La prima opzione sarebbe possibile solo se non ci fossero utenti registrati, o contenuto dinamico.
    Quindi penso che l'ultima opzione sia l'unica plausibile.
    Che codice devo utilizzare nella home page e nel settings_mainform.tpl per far si che la seconda opzione funzioni?
    Vi prego, ne ho veramente bisogno. Se non capite qualcosa chiedete, ma non lasciate questo topic bianco
    Grazie in anticipo, Buon Giorno!
    Ultima modifica di fantaepicgamers : 18-07-2013 alle ore 19.14.24

  2. #2
    Guest

    Predefinito

    Ciao, hai detto che stai usando un CMS, potresti per caso dire quale stai usando? Magari c'è qualche funzionalità già implementata per il supporto multilingua (un CMS abbastanza diffuso dovrebbe avercela per forza) :)
    E poi, come gestisci il supporto multilingua?

  3. #3
    Guest

    Predefinito

    allora, il cms è phpvms, non è molto diffuso, poichè è destinato ad uno scopo ben limitato (creazione di una virtual airline). Quindi, purtroppo non c'è nessuna funzione implementata. Quello che voglio fare io è solo un arricchimento del cms già esistente. Tutto qua

  4. #4
    Guest

    Predefinito

    Ho scaricato il sorgente e ho notato un file Lang.class.php nella cartella /core/classes.
    È una classe che aggiunge il supporto multilingua al sito, da quello che vedo. Vedendo il codice di quel file si vede che per aggiungere il supporto multilingua devi creare un file che definisce una tabella di traduzione e salvarlo nella cartella /lang/*/lang.php, dove * è la lingua (it e en nel tuo caso).

    Quindi puoi procedere in un modo simile.

    Crei una pagina che ti imposta la lingua scelta dall'utente, in questo modo:
    Codice PHP:
    // Mi assicuro che le sessioni siano attive
    if(is_null(session_id()))
    session_start();

    // La lingua viene fornita via GET
    if(isset($_GET['lang'])) {
    // Qui definisci le lingue supportate
    $supportedLangs = array('it', 'en');

    if(
    array_search($_GET['lang'], $supportedLangs) !== false)
    // La lingua richiesta è valida, salviamola nella sessione
    $_SESSION['user_lang'] = $_GET['lang'];
    }

    // La sessione è salvata, torniamo alla homepage.
    header('Location: /');
    Poi, nella index.php della root del sito ci metti questo codice:
    Codice PHP:
    if(is_null(session_id()))
    session_start();

    // Imposto la lingua salvata nella sessione
    if(isset($_SESSION['user_lang'])) {
    Lang::set_language($_SESSION['user_lang']);
    // Fai il resto
    } else {
    // Visualizzi la pagina con le due bandiere
    }
    Questo ovviamente puoi farlo se definisci le tabelle di traduzione di cui ho parlato sopra ;)
    Ah la pagina per impostare la lingua deve essere definita mediante un controller da quanto ho capito, inoltre, a meno che la sessione non venga automaticamente salvata in un cookie, devi salvarla tu manualmente, altrimenti ogni volta che torni sul sito dopo esserti disconnesso devi reimpostare la lingua preferita.
    Ultima modifica di noktalk : 19-07-2013 alle ore 14.51.18

  5. #5
    Guest

    Predefinito

    Confusione totale. Dovrei studiarmi per bene il php prima.
    Tu dici allora di mettere il primo codice nella pagina di scelta della lingua, e il secondo codice devo metterlo nella homepage?
    Se si, come collego "la bandiera" (vorrei mettere due bandiere, una inglese e una italiana, dove poter cliccare e scegliere quindi la lingua) al codice php? faccio tutto in un unico file? Potresti darmi qualche dritta? Grazie

  6. #6
    Guest

    Predefinito

    Allora, scusa ma ho dato per scontato che conoscessi già bene PHP :) Più che altro, se non lo conosci già, devi capire anche come funziona il design pattern Model-View-Controller (abbreviato anche MVC), che è una tecnica per strutturare le applicazioni e il tuo CMS è strutturato in quel modo ;)

    In pratica, il tuo CMS al momento funziona così:
    Codice:
    www.tuosito.com   =>   Pagina principale del sito
    La modifica che ti ho suggerito di fare è questa:
    Codice:
    www.tuosito.com   =>
        La lingua è stata selezionata?
            No   =>   Visualizza la pagina con le due bandiere
            Sì   =>   Carica la lingua salvata e visualizza la pagina principale del sito
    E questa modifica va ad intaccare la homepage.

    Poi, per il salvataggio della lingua devi creare un'altra pagina, dove fai le operazioni di salvataggio eccetera:
    Codice:
    Visualizza la pagina con le due bandiere   =>   Salva la lingua selezionata   =>   Ritorna alla homepage
    Ultima modifica di noktalk : 19-07-2013 alle ore 17.20.04

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •