Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    51

    Internazionalizzazione sito (librerie e/o varie)

    Ho letto varie soluzioni per l'internazionalizzazione del sito (cioè la traduzione in varie lingue).
    Alcune suggerivano di creare 2 siti paralleli per migliorare la tracciabilità dei motori di ricerca, che però me l'hanno sconsigliata come soluzione. Altri mi consigliavano la sostituzione dei testi. Poi vengo a scoprire una libreria PHP proprio qui su questo sito, gettext() (GNU Project e guida per installarlo).
    Solo che vorrei capire "che mi metto nel mio server" io ho un hosting, non un dedicato. Dite che si può usare comunque questa libreria? Una soluzione "via PHP" sarebbe più sensata? Esperienze vostre personali al riguardo? A guardare sta libreria mi sembra linguaggio C (che non credo sia tra le funzionalità offerte dal mio Hosting ).

    Dato che dovrò smantellare buona parte del sito per rifarla tradotta, vorrei prima capire cosa mi conviene fare.

    Soluzioni alternative e qualche guidina se ne avete.

    Grazie

  2. #2
    Ciao,
    potrebbe essere una soluzione utilizzare lo stesso sito e diversi file INI che vai a leggere in base ad una variabile di sessione che indica la lingua?

    Per alcuni siti in PHP io ho usato questa soluzione e mi sono trovato abbastanza bene.

    Se potrebbe essere una soluzione adatta al tuo caso posso scriverti due righe per farti capire come si gestice (o almeno come lo faccio io )

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    51
    Originariamente inviato da codesurfer
    Ciao,
    potrebbe essere una soluzione utilizzare lo stesso sito e diversi file INI che vai a leggere in base ad una variabile di sessione che indica la lingua?

    Per alcuni siti in PHP io ho usato questa soluzione e mi sono trovato abbastanza bene.

    Se potrebbe essere una soluzione adatta al tuo caso posso scriverti due righe per farti capire come si gestice (o almeno come lo faccio io )

    Sì grazie. Due righe mi farebbero comodo. Mai usati file ini ma già immaginavo che la soluzione non fosse in semplici file testuali php.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Anche io ho usato delle soluzioni con ".ini"... in pratica quando stampo un testo anzichè fare print ('ciao a tutti'); faccio qualcosa come print (tx('ciao a tutti')); o print (tx('saluto')); e la funzione globale tx accetta o un riferimento al testo o il testo in lingua originale che poi cerca nella lingua attiva: se c'è mette la traduzione altrimenti lascia il testo così com'è.

    Per le traduzioni un ".ini" è comodo perchè puoi mettere i testi tutti di file, ma potresti usare anche dei ".txt" con elenchi di voci e/o dei file ".php" che settano un array (ma non conviene).

    Un'altra soluzione simile che ho adottato sono dei file di traduzione: in pratica vanno bene anche dei ".txt"... semplicemente usa il numero di riga come riferimento e se quindi alla riga 100 della versione originale c'è il testo da tradurre, viene messo quello nella riga 100 del file di traduzione... non è complicato e se si lasciano i testi "a gruppi" è facile: questa soluzione è spartana, ma molto comoda (infatti se copi un ipotetico "ita.txt" come "eng.txt" puoi semplicemente sovrascrivere i testi da tradurre)

  5. #5
    Allora, ponendo di avere diversi file INI (uno per lingua) e da qualche parte la possibilità di cliccare su icone/testo/pulsanti per cambiare la lingua, devi impostare una variabile di sessione con la lingua in uso tipo $_SESSION["language"].

    I file INI sono divisi in sezioni che hanno all'interno delle coppie chiave-valore (senza ; finali). Ad esempio
    Codice PHP:
    [messaggi]
    benvenuto "Ciao"
    logout "Arrivederci" 
    La funzione che ti trasforma il file in una matrice (o array multidimensionale se preferisci) è
    Codice PHP:
    $LANG=parse_ini_file("percorso/".$_SESSION['language'].".ini",TRUE); 
    In questo modo nella variabile $LANG hai tutto il tuo INI della lingua.

    Per richiamarare i valori dovrai poi considerare $LANG fatta così $LANG[sezione][chiave].
    Quindi per il benvenuto sarà tipo:
    Codice PHP:
    echo $LANG["messaggi"]["benvenuto"]; 
    Per la mia esperienza è comodo e veloce, anche se il sito non è multilingua. Infatti facendo cosi hai comunque un singolo punto dove andare a fare aggiunte/modifiche ai testi del sito.

    Se non sono stato chiarissimo, chiadi pure ^^

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    51
    Originariamente inviato da eiyen
    Anche io ho usato delle soluzioni con ".ini"... in pratica quando stampo un testo anzichè fare print ('ciao a tutti'); faccio qualcosa come print (tx('ciao a tutti')); o print (tx('saluto')); e la funzione globale tx accetta o un riferimento al testo o il testo in lingua originale che poi cerca nella lingua attiva: se c'è mette la traduzione altrimenti lascia il testo così com'è.

    Per le traduzioni un ".ini" è comodo perchè puoi mettere i testi tutti di file, ma potresti usare anche dei ".txt" con elenchi di voci e/o dei file ".php" che settano un array (ma non conviene).

    Un'altra soluzione simile che ho adottato sono dei file di traduzione: in pratica vanno bene anche dei ".txt"... semplicemente usa il numero di riga come riferimento e se quindi alla riga 100 della versione originale c'è il testo da tradurre, viene messo quello nella riga 100 del file di traduzione... non è complicato e se si lasciano i testi "a gruppi" è facile: questa soluzione è spartana, ma molto comoda (infatti se copi un ipotetico "ita.txt" come "eng.txt" puoi semplicemente sovrascrivere i testi da tradurre)
    La prima immagino sia la soluzione più performante no? Mi potresti postare 2 righe di codice per capire come fare? Più che soluzioni semplici m'interessano soluzioni che non intacchino più di tanto le performance del mio sito (che finora ho tentato di mantenere al top tra sprites, htaccess e chi più ne ha più ne metta).

    Per rispondere a codesurfer, ho letto, andando a spizzarmi un paio di moduli preconfezionati per carpirne informazioni, che usano spesso il define("nome_variabile","valore"); anche se non mi è chiaro come li richiamano questi define, sembrano usare nelle pagine il semplice "nome_variabile" dato nel define senza nemmeno usare il tipico $ (dollaro) davanti per le variabili. Cosa è preferibile?


    P.S.: Ammetto che di solito il mio modo di scrivere codice è molto rozzo (del tipo echo $variabile. Cose come print e define non le uso mai e mi prendono un po' alla sprovvista. Sbaglio a basarmi su echo invece che su print?

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.