Pregunta

Hay algunos tutoriales disponibles para gettext (con Poedit)...desafortunadamente, es principalmente para un entorno UNIX.Y aún más desafortunado es que estoy ejecutando mi servidor WAMP en Windows XP (pero estoy desarrollando para un entorno UNIX) y ninguno de los tutoriales puede hacer que gettext funcione correctamente.Desde la página de manual (http://us3.php.net/manual/en/book.gettext.php), parece que es un proceso diferente en un entorno Windows.¡Probé algunas de las soluciones en los comentarios pero todavía no puedo hacer que funcione!Por favor, he pasado muchas horas en esto, ¡espero que alguien pueda indicarme la dirección correcta para que esto funcione!(y estoy seguro de que hay otros que comparten mi frustración).Hasta ahora con mi configuración, solo obtengo la salida "¡Hola mundo!" Mientras que debería obtener la cadena traducida.

Aquí está mi configuración/código hasta el momento:

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

?>

Estructura de carpetas

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

¡Por favor avise!Gracias por tu tiempo :)

¿Fue útil?

Solución 6

Fue porque yo no tenía instalados los locales.

Otros consejos

Me encontré con problemas mientras se trabaja con gettext en mi máquina local, y después de algún búsqueda Esta página es para que solucionó mi problema: http://www.kipras.com/getting -gettext-a-trabajar-en-Apache-on-windows / 96

cito de la página web:

  

En los servidores de Linux (o cualquier otro servidor   ventanas aparte), la manera de hacerlo es   esto:

setlocale(LC_MESSAGES, “en_US”);
     

La forma correcta de configurar localidad de   ventanas es la siguiente:

putenv(“LC_ALL=en_US”);

Tuve el mismo problema y perdí casi un día en ello.Finalmente, encontré una solución muy simple: desinstalar el servidor WAMP (versión 2.1) y instalar una versión más nueva (WampServer 2.1e - 32 bits).Es extraño, pero resolvió el problema por completo.

Aquí está el código de muestra que funcionó para mí:

<?php

    $locale = "deu_DEU";

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

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

    echo _("Hello World");

?>

Espero eso ayude.

no he hecho una investigación exhaustiva sobre esto, pero estoy seguro de que uno de sus errores es que utilizó códigos de configuración regional no válidos - incluso en Windows los códigos locales son los mismos - son lugares gettext y son multiplataforma .

Por favor, intente utilizar sólo "de" como código de configuración regional, que debería funcionar. También asegúrese de que su PHP se ha instalado la extensión de gettext y activado (consulte con phpinfo).

Puede que sea demasiado tarde, pero yo estaba teniendo problemas similares hasta Habilité "etiqueta abierta corta" en la configuración de mi php WAMP

Esta es la solución que funcionó para mí. Esto funciona en la última wampserver. (Fuente: http://www.extradrm.com/blog/?p=1035)

1) Descargar php-gettext desde aquí: https://launchpad.net/php-gettext/ + descargar y descomprimirlo

2) Agregar los siguientes archivos que se encuentran en la raíz del paquete en la misma carpeta que la prueba-language.php: - gettext.inc - gettext.php - streams.php

3) Abra su php.ini y comentar php_gettext.dll wampserver:

;extension=php_gettext.dll

4) Este es el nuevo archivo de prueba prueba de 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");
?>

Después de todo esto se debe crear la carpeta local, en_US (u otro idioma) carpeta, LC_MESSAGES carpeta y luego poner el archivo messages.po.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top