Visualizzazione risultati 1 fino 18 di 18

Discussione: Proposta attivazione gettext (basta poco...vi prego!!)

  1. #1
    Guest

    Exclamation Proposta attivazione gettext (basta poco...vi prego!!)

    Ciao a tutti,

    avrei intenzione di rendere il mio sito multilingua, per farlo però avrei bisogno che su Altervista venisse resa disponibile gettext, funzione di php attivabile con pochissimo sforzo.

    La soluzione più immediata sarebbe quella di ricompilare php passando un particolare parametro:

    --with-gettext

    Ringrazio chiunque mi possa aiutare.

    Ciao

  2. #2
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Suggerimento:
    Se vuoi un sito VERAMENTE multilingua è meglio che fai 2 versioni per tuo conto.
    A quanto ho capito(non l'ho mai provato nella realtà) utilizzando gettext per quello che vuoi fare tradurresti solo le frasi contenute in uno speciale file, quindi non si tratta di traduzione ma sostituzione di alcune frasi.
    La cosa va bene per pagine che contengono solo benvenuto e simili, ma se scrivi qualche frase complessa esce un farguglio disordinato di parole tradotte.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  3. #3
    Guest

    Predefinito

    Premetto che è solo un mio parere, ma io il gettext a casa l'ho provato e devo dire che mi ha impressionato per la sua utilità. Il gettext crea un file .po (e uno .mo) contenente tutte le frasi delle pagine su cui viene applicato (ovviamente individua solo le frasi della forma <?php echo ("frase da visualizzare") ?> )

    Con un semplice programma come PoEdit, poi importo il file .po e scrivo le traduzione di ogni frase nella lingua che preferisco generando così un nuovo file .po.

    L'utilizzo quindi diventa intuitivo, e ad ogni modifica delle pagine stesse, basta che creo un nuovo .po con le modifiche e faccio il merge con quello vecchio. Gettext quindi capisce quali frasi sono state aggiornate e le modifica.

    A riprova di quello che dico c'è il fatto che quasi la totalità dei portali più grandi in rete lo utilizza, poichè consente ai grafici di creare (e soprattutto modificare) un solo file per tutte le lingue, e ai traduttori di lavorare solo su delle stringhe, non andando così a toccare direttamente il codice delle pagine.

    In definitiva, volevo usare il gettext proprio per non andare a fare la stessa modifica su più pagine uguali solo perchè ho più di una lingua nel sito (ebbene sì, sono pigro! :eyes:

  4. #4
    Guest

    Predefinito

    ---------------
    Con un semplice programma come PoEdit, poi importo il file .po e scrivo le traduzione di ogni frase nella lingua che preferisco generando così un nuovo file .po.
    ---------------

    Intendi dire che cmq sei tu a scrivere la traduzione??

    Se è così, allora è come scrivere tutte le frasi tradotte!


    Ciaoooooo!!!!!!

  5. #5
    Guest

    Predefinito

    Esatto, quello che voglio ottenere è proprio poter scrivere tutte le frasi tradotte senza dover fare un doppione di ogni pagina del mio sito.

    Gettext me lo permette, e quindi spero che lo staff di Altervista legga il mio post e sia così gentile da attivarmelo.

  6. #6
    Guest

    Talking

    Citazione Originalmente inviato da kongoji
    Esatto, quello che voglio ottenere è proprio poter scrivere tutte le frasi tradotte senza dover fare un doppione di ogni pagina del mio sito.

    Gettext me lo permette, e quindi spero che lo staff di Altervista legga il mio post e sia così gentile da attivarmelo.
    Puoi benissimo fare un file lang_ita.php e lang_eng.php e mettere dentro tutte le parole italiane ed inglesi che il tuo sito usa...poi nel codice php del sito metti una variabile che richiama quella parola :grin: :smile:

  7. #7
    Guest

    Predefinito

    Il sistema che descrivi l'ho usato fino ad oggi (e mi rassegnerò a usarlo ancora se Altervista non mi attiverà il gettext... ), ma gettext ha dei vantaggi non da poco in confronto.

    Intanto, da un punto di vista strettamente della traduzione mi permette di cambiare la traduzione di una lingua (perchè magari ci sono nuove frasi da aggiungere o da modificare) e fare il merge con le altre traduzioni evidenziandomi automaticamente tutti i punti che necessitano di un update nelle altre lingue.

    Poi con gettext è più facile tenere traccia di tutte le righe di testo rispetto a delle variabili e i tools che si trovano in giro facilitano e automatizzano molti processi che altrimenti dovresti fare a mano.

    Per non parlare poi della velocità che può avere un file binario .mo prodotto da gettext rispetto a un file php incluso in una pagina.

    Per finire, inoltre, il gettext sta diventando uno standard tool e quindi verrà sempre più utilizzato per l'internazionalizzazione delle pagine web

  8. #8
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Cmq
    Per far andare questa cosa dovrebbero ricompilare il php, operazione che comporta la messa offline di tutti i siti presenti.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  9. #9
    Guest

    Predefinito

    Ci sarebbero anche altre vie di farlo senza necessariamente ricompilare, comunque anche ricompilare non mi sembra poi un'operazione che, se fatta durante la notte, comporti così tanti problemi per gli utenti. Inoltre la ricompilazione ogni tanto dovrà essere pur fatta, no? Escono nuove versioni di PHP praticamente a cadenza mensile....

  10. #10
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Oggi ho provato e con mia sorpresa...
    HO scoperto che funziona!
    Probabilmente sei tu che lo usi nel modo sbagliato.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  11. #11
    Guest

    Predefinito

    Ti funziona??? :?????:
    Allora ci sta che faccia qualcosa di sbagliato io... questo è il codice della pagina:

    Codice PHP:
    <?php
    $pos
    =strpos($_SERVER["HTTP_ACCEPT_LANGUAGE"], "it");
    if(
    $pos==0){
    putenv ("LC_ALL=it");
    } else {
    putenv ("LC_ALL=en");
    }



    // Specify location of translation tables
    bindtextdomain ("greetings", "./locale/");

    // Choose domain
    textdomain ("greetings");

    echo
    _("Hello World");
    ?>
    Nella pagina non c'è altro (http://kongoji.altervista.org/Prova/hello.php), l'ho presa pari pari da un tutorial e sul mio pc funziona a meraviglia.

    L'errore che mi dà è
    Fatal error: Call to undefined function: bindtextdomain() in /membri/kongoji/Prova/hello.php on line 12

    ovviamente la cartella "locale" esiste e anche le relative sottocartelle (locale/en/LC_MESSAGES e locale/it/LC_MESSAGES) con i 2 file .mo (uno per lingua)


    Puoi per favore vedere il codice che hai usato e confrontarlo con il mio?

    Grazie
    Ciao

  12. #12
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    I codice è quello di phpwiki
    Probabilmente non usa bindtextdomain, ma gettext lo usa sicuramente ho guardato parti di codice!
    Bo, forse la conversione non viene fatta automaticamente, ma attraverso un parsing, ma funziona!
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  13. #13
    Guest

    Predefinito

    Forse ci sono arrivato.

    Spulciando nelle classi di phpWiki ho trovato:

    Codice PHP:
    //
    71 // Set up (possibly fake) gettext()
    72 //
    73 if (!function_exists ('bindtextdomain')) {
    74 $locale = array();
    75
    76
    function gettext ($text) {
    77 global $locale;
    78 if (!empty ($locale[$text]))
    79 return $locale[$text];
    80 return $text;
    81 }
    82
    83
    function _ ($text) {
    84 return gettext($text);
    85 }
    86 }
    87 else {
    88 bindtextdomain("phpwiki", FindFile("locale", false, true));
    89 textdomain("phpwiki");
    90 }
    (http://xarch.tu-graz.ac.at/home/rurb...World.php.html)

    il che se non sbaglio è un controllo per aggirare una possibile mancanza della funzione bindtextdomain...

    Devo studiare la cosa con un pò più di calma, ma a questo punto mi sembra che sia grazie a questo controllo che la pagina riesce a girare anche su AV.

    Grazie dell'aiuto, ti farò sapere se riesco a farlo funzionare!!

  14. #14
    Guest

    Predefinito

    kongoji ti consiglio di mettere off-line il tuo sito...è completamente inglese...

  15. #15
    Guest

    Predefinito

    Credo che ti stai riferendo al sito vecchio, obsoleto (era fatto a tabelle... :grin: ) e tutto in inglese.

    Il sito "che ha da venire" sarà multilingua (per adesso solo inglese e italiano) e ad oggi è visibile su http://kongoji.altervista.org/Prova/main.php, ma per i problemi di gettext...anche quello è momentaneamente solo in inglese.

    La versione italiana in realtà esiste già, devo solo trovare un modo per fare funzionare il gettext..

  16. #16
    Guest

    Predefinito

    Non so perchè non ci abbia pensato prima, comunque ho fatto un phpinfo() e ho avuto la conferma che il gettext non è supportato da AV...

    Non riesco quindi a capire come binarysun abbia potuto usarlo.

    A questo punto mi aspetto una qualche risposta da un membro dello staff di AV!

  17. #17
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Scusa ma il codice non è mio e quindi ho sbagliato.
    Il programma ne fa uso, ma da quello che ho capito crea un suo sostituto di gettext nel caso non ci sia nel sistema.
    C'è un file che contiene in forma di array tutte le parole da modificare
    function gettext ($text) {
    global $locale;
    if (!empty ($locale[$text]))
    return $locale[$text];
    return $text;
    }
    O almeno penso.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  18. #18
    Guest

    Predefinito

    Sì, credo anch'io che quel codice funzioni così, in pratica non fa altro che sovrascrivere la funzione gettext dove questa non è attivata.

    ...e qui si ritorna alla mia richiesta originaria di attivare gettext su AV.... :eyes:

Regole di scrittura

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