• Bannato User Attivo

    Sito multilingua

    Salve.
    Ho creato un sito e vorrei duplicarlo in una seconda lingua.

    Secondo voi qual'è il miglior modo per realizzare un sito bilingua? Mi appoggio ad un DB? Faccio tutto con un array?

    Per il sito ambisco ad ottenere un numero di visite ed una popolarità ragguardevole, quindi vorrei un consiglio da parte vostra per adottare sin da subito una soluzione ottimale.

    Migliori saluti.


  • Moderatore

    basta utilizzare dei file per i testi in php e a seconda dell'utente fai includere uno dei due.

    niente database andrebbero solo a rallentare l'esecuzione della pagina.

    Ciao


  • User

    Io ho creato un file ita.php e uno eng.php; all'interno di questo file c'è un array (stesso nome) con i testi nella lingua corrispondente.
    A seconda della pagina, includo il file ita o eng, e richiamo i testi corrispondenti (avendo in pratica lo stesso array, strutturato uguale, c'è da cambiare solo l'include).

    Presi l'idea da questo forum, mi pare :figo2:

    Michele


  • Bannato User Attivo

    Grazie ad entrambi per i suggerimenti.

    Tuttavia la parte html del mio sito viene generata utilizzando una classe php.
    In poche parole ho una classe 'layout' che genera l'html di base quando viene istanziata. Poi i vari metodi della stessa creano l'html caratteristico della singola pagina.

    Questo semplifica notevolmente il codice della singola pagina che se pur molto complessa, si riduce a 15/20 righe.

    Avevo pensato ad un metodo della stessa classe che attingesse da un DB,ma se me lo sconsigliate direi che procedere come segue è la soluzione migliore.

    Nella pagina faccio un include dell'array-->passo l'array al costruttore della classe 'layout'-->definisco gli attributi estraendoli dall'array passato-->uso gli attributi nei singoli metodi.

    Che ne dite?


  • Bannato User Attivo

    Azz... negativo...non riesco ad includere un filecome mi avete detto.
    Come si fa ad includere un file in una classe?


  • User Attivo

    Includi il file prima di includere la calsse e poi nella classe fai

    global $nome_array_di_lingua;


  • User

    Buon giorno a tutti, devo premettere che anche io ho lo stesso problema di dover fare un sito in quattro lingue.
    Io avevo pensato, per non complicarmi la vita, visto che i testi me li devo scrivere in ogni caso, mi creo 4 cartelle sul server in ognuna delle quali vi è il sito nella lingua interessata. All'apertura del sito farei caricare una pagina che chieda all'utente in quale lingua voglia navigare e cliccando sulla lingua italiana (ad esempio) il link indirizza l'utente alla cartella della lingua italiana e naviga tranquillamente in quel sito. Quindi è come se ci fosse un sito con all'interno 4 siti.
    Questa soluzione per me (visto che non sono un mostro in php) è la più semplice visto che i menu di navigazione li includo e tutto il testo dinamico lo faccio aggiornare al cliente.
    Loris 3000


  • User

    @Loris3000 said:

    All'apertura del sito farei caricare una pagina che chieda all'utente in quale lingua voglia navigare e cliccando sulla lingua italiana (ad esempio) il link indirizza l'utente alla cartella della lingua italiana e naviga tranquillamente in quel sito. Quindi è come se ci fosse un sito con all'interno 4 siti.
    però in questo modo se modifichi una pagina del sito (nella struttura) devi copiare la modifica in tutte le cartelle, mentre forse è più comodo fare le modifiche una sola votla, no?

    Michele


  • User

    si hai ragione, ma io, visto che non sono tanto esperto, cerco di fare la grafica (menu, layout, immagini) tutte in pagine separate e dopo le includo nella pagina. Quindi se io modifico l'aspetto del menu lo cambio una sola volta per il sito italiano, dopo lo copio nelle altre cartelle e traduco solo le voci del menu. Però ti ripeto, io sto pensando di fare così anche perchè mi riesce più facile. Chiaramente lo capisco bene che sarebbe meglio utilizzare un db.
    Loris3000


  • User

    @Loris3000 said:

    si hai ragione, ma io, visto che non sono tanto esperto, cerco di fare la grafica (menu, layout, immagini) tutte in pagine separate e dopo le includo nella pagina. Quindi se io modifico l'aspetto del menu lo cambio una sola volta per il sito italiano, dopo lo copio nelle altre cartelle e traduco solo le voci del menu. Però ti ripeto, io sto pensando di fare così anche perchè mi riesce più facile. Chiaramente lo capisco bene che sarebbe meglio utilizzare un db.
    Loris3000

    no, niente db.
    basta dichiarare un array, ad esempio :

     $WORDS = array(
         "ciao" => "hello",
         "chisono" => "i'm a pheego"
    )
    ```sarà l'array nel file eng.php [nb: il codice è probabilmente sbagliato, ma la sostanza c'è].
    nel file ita.php avrò:
    

    $WORDS = array(
    "ciao" => "ciao",
    "chisono" => "sono un figo"
    )

    
    Come scegliere il file? nella prossima lezione :p
    Io, ad esempio, mando una variabile GET alla fine dell'indirizzo nella pagina, variabile che si modifica cliccando sulla bandierina apposita.
    
    Michele

  • Bannato User Attivo

    Grazie. Ho infatti adottato quella soluzione nel sito in firma.