Question

Il y a quelques tutoriels là-bas pour gettext (w / Poedit) ... Malheureusement, il est la plupart du temps pour un environnement UNIX. Et encore plus malheureux est que je courais mon serveur WAMP sous Windows XP (mais je suis en développement pour un environnement UNIX) et aucun des tutoriels peut obtenir gettext fonctionner correctement pour moi. A partir de la page man ( http://us3.php.net/manual/en/ book.gettext.php ), il semble que c'est un processus différent sur un environnement Windows. J'ai essayé quelques-unes des solutions dans les commentaires, mais je ne peux toujours pas faire fonctionner! S'il vous plaît, j'ai passé de nombreuses heures à ce sujet, nous espérons que quelqu'un peut me diriger dans la bonne direction pour obtenir cette chose à travailler! (Et je suis sûr qu'il y en a d'autres là-bas qui partagent ma frustration). Jusqu'à présent, avec ma configuration, je n'obtenir la sortie « Bonjour tout le monde! » alors que je devrais obtenir la chaîne traduite.

Voici ma configuration / code à ce jour:

<?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"); 

?>

Structure de dossier

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

S'il vous plaît conseiller! Merci pour votre temps:)

Était-ce utile?

La solution 6

C'était parce que je n'ai pas les lieux installés.

Autres conseils

Je suis tombé sur des problèmes tout en travaillant avec gettext sur ma machine locale, et après quelques recherches j'ai trouvé cette page qui a résolu mon problème: http://www.kipras.com/getting -gettext au travail en apache-sur-windows / 96

Je cite la page web:

  

Sur les serveurs Linux (ou tout autre serveur   fenêtres à part), la façon de le faire est   ceci:

setlocale(LC_MESSAGES, “en_US”);
     

La bonne façon de définir la localité sur   Windows est la suivante:

putenv(“LC_ALL=en_US”);

J'ai eu le même problème, et presque perdu un jour ou sur elle. Enfin, j'ai trouvé une solution très simple, à savoir désinstaller WAMP Server (version 2.1), et installer une version plus récente (WampServer 2.1e - 32 bits). Il est étrange, mais il a résolu complètement le problème.

Voici l'exemple de code qui a fonctionné pour moi:

<?php

    $locale = "deu_DEU";

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

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

    echo _("Hello World");

?>

it helps.

Je ne l'ai pas fait une enquête complète sur cela, mais je suis sûr que l'un de vos erreurs est que vous avez utilisé les codes de paramètres régionaux non valides - même sous Windows les codes locales sont les mêmes - ce sont des lieux gettext et ils sont multi-plateforme .

S'il vous plaît essayer d'utiliser juste « de » code de paramètres régionaux, il devrait fonctionner. Assurez-vous également que votre PHP a l'extension gettext installé et activé (vérifiez avec phpinfo).

Peut-être trop tard, mais j'avoir des problèmes similaires jusqu'à ce que j'ENABLED dans mes WAMP paramètres php « short tag ouvert »

Ceci est la solution qui a fonctionné pour moi. Cela fonctionne sur le dernier WampServer. (Source: http://www.extradrm.com/blog/?p=1035)

1) Télécharger php-gettext à partir d'ici: https://launchpad.net/php-gettext/ + télécharger et décompressez

2) Ajouter les fichiers suivants trouvés dans la racine du package dans le même dossier que le test-language.php: - gettext.inc - gettext.php - streams.php

3) Ouvrez votre php.ini et commentez WampServer php_gettext.dll:

;extension=php_gettext.dll

4) Voici le nouveau test language.php fichier de test

<?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");
?>

Après tout cela, vous devez créer un dossier locale, en_US (ou autre langue) dossier, le dossier LC_MESSAGES puis mettre le fichier messages.po.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top