Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Gestire sito bilingue

  1. #1

    Gestire sito bilingue

    Premessa: dico BILINGUE e non multilingue per semplicità, perché documentandomi ho scoperto che realizzare un sito con molte lingue è un'impresa assai complicata, specie quando si devono supportare lingue molto diverse tra loro. Quindi parlo di un sito di 2, 3 o 4 lingue al massimo, tutte abbastanza simili tra loro.

    La questione è la seguente: qual è il miglior modo di gestire un sito bilingue in PHP?

    Ovviamente non cerco una risposta secca, perché non c'è. Le possibilità sono tante, ma sarei curioso anche di sapere quali sono le vostre esperienze in merito.

    Una possibile soluzione che posso dire di aver sperimentato è quella di creare 2 directory, ad esempio /IT e /EN, mettendoci dentro i file di testo nella rispettiva lingua. Questi verranno poi caricati dinamicamente con include(), file_get_contents() o quello che volete voi. Per esperienza posso dire che non è un bel modo di gestire la cosa, o perlomeno non il migliore. Può andar bene finché si tratta di un sitarello di dieci - quindici pagine, ma se sono centinaia la cosa comincia ad essere molto pesante da gestire.

    Sto cercando soluzioni nuove, dinamiche, flessibili e scalabili. Meglio se orientate agli oggetti.

    Qualcuno usa classi Template personalizzate, facendo cose di questo genere:

    Codice PHP:
    // Avvio la sessione e carico il template
    session_start();
    $_SESSION['language'] = 'IT'// oppure 'EN', o 'FR' ecc...

    Template::load'<page_name>'$_SESSION['language'] );

    // Dove il metodo `load()` potrebbe essere qualcosa del genere:
    public function load$page_name$language ) {
        
    // Costruisco il path relativo al template
        
    $file_handle fopenPATH_TO_TEMPLATES $language "/" $page_name );
        
    // Eccetera eccetera... questo è solo un esempio.

    Ma il mio dubbio più grande è: se ho delle variabili all'interno delle stringhe, come mi devo comportare?!

    In questo caso l'unica soluzione efficace che mi viene in mente è di usare i placeholder. Per esempio:

    Codice PHP:
    $string->IT "Hai concluso %1 sondaggi su %2";
    $string->EN "You have completed %1 out of %2 surveys";
    $string->ES "Tú has completado %1 de %2 encuentas";
    // Dove chiaramente %1 e %2 vengono sostituiti da variabili 
    Ma cose del genere in PHP non esistono, o almeno non che io sappia.

    Quali sono, quindi, le "best practices" da seguire quando si devono supportare più lingue?

    Ho sentito parlare di Smarty, mi farebbe piacere sentire il parere di chi lo conosce.

    Ringrazio in anticipo per l'aiuto.

  2. #2
    io ti consiglio anche di guardarti joomla.
    Vedi il suo sorgente e t sarà molto più facile capire la cosa.
    Io ho fatto così. Ho visto come faceva lui, come faceva symfony e altri CMS e ho deciso come procedere...

    Template e array. Poi per come scegliere quale lingua stampare puoi usare cookie, db o file di testo... insomma come più ti piace.

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.