Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125

    Problema Traduzione con gettext

    ciao a tutti.

    Sto diventando matto.

    Ho gia letto tutte le discussioni su questo forum cercando la parola gettext. Sembra incredibile ma non c'e' molta gente che conosce questa libreria.

    Cmq...

    Il mio problema e' che inizialmente funziona andando a pescare le traduzioni nella cartella en_US etc corrispondente alla lingua.

    Dopo un po che provo, aggiorno i file .po ..... la traduzione prende sempre dalla cartella it_IT ....e non dalle altre..... perche?

    Questo il mio file (ho provato con la guida di html.it..... ma il codice non mi sembra giusto...)

    Codice PHP:


    $lang = "en";
    $locale = "en_US";

    putenv("LC_ALL=$locale");
    setlocale(LC_ALL, $locale);
    bindtextdomain("messages", "./locale");
    bind_textdomain_codeset("messages", 'UTF-8'); 
    textdomain("messages");

    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $lang?>" lang="<?php echo $lang?>">
        <head>
            <title>
                <?php echo _("Titolo della finestra"); ?>
            </title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        </head>
        <body>
            <h1><?php echo _("Prova"); ?></h1>


        </body>
    </html>
    come vedete ho assegnato alla variabile $lang = "en"; $locale = "en_US";

    nella mia root ho una cartella "locale" che contiene 3 cartelle : en_US , it_IT e fr_FR .....inoltre dentro ognuna di queste ho la cartella "LC_MESSAGES" dove troviamno il file messages.po e il suo corrispettivo messages.mo.


    ecco il file messages.po in it_IT
    Codice PHP:
    "Project-Id-Version: gettext-examples-0.16.2-pre5\n"
    "Report-Msgid-Bugs-To: [email]bug-gnu-gettext@gnu.org[/email]\n"
    "POT-Creation-Date: 2009-08-16 12:22+0200\n"
    "PO-Revision-Date: 2011-07-06 11:24+0100\n"
    "Language: nl\n"
    "MIME-Version: 1.0\n"
    "Content-Type: text/plain; charset=UTF-8\n"
    "Content-Transfer-Encoding: 8bit\n"
    "X-Generator: KBabel 1.11.4\n"

    msgid "Titolo della finestra"
    msgstr "titolo in ita!"

    msgid "Prova"
    msgstr "traduzione italiana" 

    e qui il file nella cartella en_US/LC_MESSAGES
    Codice PHP:

    "Project-Id-Version: gettext-examples-0.16.2-pre5\n"
    "Report-Msgid-Bugs-To: [email]bug-gnu-gettext@gnu.org[/email]\n"
    "POT-Creation-Date: 2009-08-16 12:22+0200\n"
    "PO-Revision-Date: 2011-07-06 11:24+0100\n"
    "Language: nl\n"
    "MIME-Version: 1.0\n"
    "Content-Type: text/plain; charset=UTF-8\n"
    "Content-Transfer-Encoding: 8bit\n"
    "X-Generator: KBabel 1.11.4\n"

    msgid "Titolo della finestra"
    msgstr "titolo in eng!"

    msgid "Prova"
    msgstr "traduzione english" 

    Perche non mi pesca la traduzione dalla cartella en_EN e invece la pesca da it_IT ?????

    Io scrivendo $lang = "en"; $locale = "en_US"; dovrei aver settato tutto come se fosse inglese...

    Please aiutatemi


    ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    up....

    potete dirmi che prove posso fare per vedere se veramente i percorsi sono giusti?


    Ho i dubbi su queste cose qui
    Codice PHP:
    putenv("LC_ALL=$locale");
    setlocale(LC_ALL$locale);
    bindtextdomain("messages""./locale");
    bind_textdomain_codeset("messages"'UTF-8'); 
    textdomain("messages"); 
    e anche sulla corretta scrittura di un file .po

    Mi sapete indicare un esempio buono ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    metodi alternativi a gettext?

    mi sembra che non sia una cosa molto usata...

  4. #4
    Se non sbaglio, per funzionare devi specificare una locale installata sul server, se sei su linux puoi controllare con il comando "locale -a".

    Ad esempio sulla mia macchina l'output di quel comando e' questo:
    codice:
    C
    C.UTF-8
    en_US.utf8
    it_IT.utf8
    POSIX
    quindi se voglio tradurre in italiano, devo usare la locale (e la directory) "it_IT.utf8". Ne' "it", ne' "it_IT" vanno bene.

    Il resto della tua configurazione a occhio mi sembra corretto, verifica questo fatto prima di procedere con altre indagini.

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.