Domanda

Ci sono alcuni tutorial là fuori per gettext (w / Poedit) ... Purtroppo, è per lo più per un ambiente UNIX. E ancora più spiacevole è che io sono in esecuzione il mio server WAMP su Windows XP (ma sto sviluppando per un ambiente UNIX) e nessuno dei tutorial posso ottenere gettext funziona correttamente per me. Dalla pagina man ( http://us3.php.net/manual/en/ book.gettext.php ), sembra che è un processo diverso in un ambiente Windows. Ho provato alcune delle soluzioni nei commenti, ma non riesco ancora a farlo funzionare! Si prega, ho passato molte ore su questo, si spera che qualcuno mi può puntare nella giusta direzione per ottenere questa cosa al lavoro! (E sono sicuro che ci sono altri là fuori che condividono la mia frustrazione). Finora con la mia messa a punto, sto ottenendo soltanto di uscita "Ciao Mondo!" mentre io dovrei ottenere la stringa tradotta.

Ecco il mio setup / Codice finora:

<?php
// test.php
if (!defined('LC_MESSAGES')) {
    define('LC_MESSAGES', 6);

}
$locale = "deu_DEU"; // apparently the locales are different on a WINDOWS platform

putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("greetings", ".\locale");
textdomain("greetings");


echo _("Hello World"); 

?>

Struttura delle cartelle

root:     C:\Program Files\WampServer 2\www
test.php: C:\Program Files\WampServer 2\www\site
.po:      C:\Program Files\WampServer 2\www\site\locale\deu_DEU\LC_MESSAGES\greetings.po
.mo:      C:\Program Files\WampServer 2\www\site\locale\deu_DEU\LC_MESSAGES\greetings.mo

Si prega di avvisare! Grazie per il vostro tempo:)

È stato utile?

Soluzione 6

E 'stato perché non avevo i locali installati.

Altri suggerimenti

Mi sono imbattuto in problemi durante l'utilizzo di gettext sulla mia macchina locale, e dopo qualche ricerca ho trovato questo sito che ha risolto il mio problema: http://www.kipras.com/getting -gettext-to-work-in-apache-on-Windows / 96

sto citando dalla pagina web:

  

Il server Linux (o qualsiasi altro server   finestre a parte), il modo per farlo è   in questo modo:

setlocale(LC_MESSAGES, “en_US”);
     

Il modo corretto per impostare località sulla   finestre è questa:

putenv(“LC_ALL=en_US”);

Ho avuto lo stesso problema, e sprecato quasi un giorno o poco più su di esso. Infine, ho trovato una soluzione molto semplice, vale a dire per disinstallare WAMP Server (versione 2.1), e installare una nuova versione (WampServer 2.1e - 32 bit). E 'strano, ma è risolto completamente il problema.

Ecco il codice di esempio che ha funzionato per me:

<?php

    $locale = "deu_DEU";

    putenv("LC_ALL=$locale");
    setlocale(LC_ALL, $locale);

    bindtextdomain("greetings", "./locale");
    textdomain("greetings");

    echo _("Hello World");

?>

Speranza che aiuta.

Non ho fatto un'indagine completa su questo, ma sono sicuro che uno dei propri errori è che si è utilizzato codici locali non validi - anche su Windows i codici locali sono gli stessi - questi sono locali gettext e sono cross-platform .

Si prega di provare a utilizzare solo "de", come il codice locale, dovrebbe funzionare. Anche essere sicuri che il vostro PHP è installato l'estensione gettext e attivato (controllare con phpinfo).

potrebbe essere troppo tardi, ma ho avuto problemi simili fino a quando ho permesso "short tag aperto" nelle mie impostazioni PHP WAMP

Questa è la soluzione che ha funzionato per me. Questo funziona sulle ultime WampServer. (Fonte: http://www.extradrm.com/blog/?p=1035)

1) Scaricare php-gettext da qui: https://launchpad.net/php-gettext/ + scaricare e decomprimerlo

2) Aggiungere i seguenti file trovati nella directory principale del pacchetto nella stessa cartella di test-language.php: - gettext.inc - gettext.php - streams.php

3) Aprire il file php.ini e commentare WampServer php_gettext.dll:

;extension=php_gettext.dll

4) Questo è il nuovo file test test-language.php

<?php
error_reporting(E_ALL | E_STRICT);

// define constants
define('PROJECT_DIR', realpath('./'));
define('LOCALE_DIR', 'C:/wamp/www/test/locale');
define('DEFAULT_LOCALE', 'es_ES');

require_once('gettext.inc');

$supported_locales = array('en_US', 'sr_CS', 'de_CH','es_ES');
$encoding = 'UTF-8';

$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;

//var_dump($locale);die();

// gettext setup
T_setlocale(LC_MESSAGES, $locale);
// Set the text domain as 'messages'
$domain = 'messages';
bindtextdomain($domain, LOCALE_DIR);
// bind_textdomain_codeset is supported only in PHP 4.2.0+
if (function_exists('bind_textdomain_codeset'))
bind_textdomain_codeset($domain, $encoding);
textdomain($domain);

echo gettext("HELLO_WORLD");
?>

Dopo tutto questo è necessario creare la cartella locale, en_US (o altra lingua) la cartella, LC_MESSAGES cartella e poi mettere il file messages.po.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top