Foros del Web » Programando para Internet » PHP »

Consulta con Gettext

Estas en el tema de Consulta con Gettext en el foro de PHP en Foros del Web. Bueno lo que pasa es que quiero hacer una web "multi idioma" pero no quiero usar las carpetas por defecto. /path/languages/en_US/LC_MESSAGES/file.mo sino que quiero hacerlo ...
  #1 (permalink)  
Antiguo 06/01/2011, 00:47
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 11 años, 2 meses
Puntos: 12
Consulta con Gettext

Bueno lo que pasa es que quiero hacer una web "multi idioma" pero no quiero usar las carpetas por defecto.

/path/languages/en_US/LC_MESSAGES/file.mo

sino que quiero hacerlo como wordpress


/path/languages/en_US.mo



Como podría lograr eso, leí el manual de gettext pero en ninguna parte apareció como modificar esto.

Espero que me puedan ayudar.
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #2 (permalink)  
Antiguo 06/01/2011, 05:27
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 9 años, 9 meses
Puntos: 334
Respuesta: Consulta con Gettext

a que te refieres ?
modificar ?

mm explica mejor el problema
  #3 (permalink)  
Antiguo 06/01/2011, 07:41
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 11 años, 2 meses
Puntos: 12
Respuesta: Consulta con Gettext

mira:

Código PHP:
Ver original
  1. <?php
  2. //Establecemos el  idioma a inglés
  3. putenv('LC_ALL=en_US');
  4. setlocale(LC_ALL, 'en_US.UTF8');
  5.  
  6. //Establecemos en que  directorio se encuentran las traducciones
  7. bindtextdomain("app",  "./lenguajes");
  8.  
  9. //Elegimos  el dominio (fichero)
  10. textdomain("app");

por ende el archivo estaria aqui:

/path/lenguajes/en_US/LC_MESSAGES/app.mo

yo quiero que este aqui:


/path/lenguajes/app.mo


se entiende?
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #4 (permalink)  
Antiguo 07/01/2011, 12:44
 
Fecha de Ingreso: diciembre-2010
Mensajes: 61
Antigüedad: 8 años, 7 meses
Puntos: 4
Respuesta: Consulta con Gettext

Yo experimente una vez con clase que llama php-gettext-1.0.7 (Ahora van por la versión 1.0.11) https://launchpad.net/php-gettext/, en su ejemplo ponen la siguiente función.

Código:
<?php
include "../API/php-gettext-1.0.7/streams.php";
include "../API/php-gettext-1.0.7/gettext.php";

//Esta cabecera s�lo es v�lida para idiomas con car�cteres UTF-8
header("Content-type: text/html; charset=UTF-8");

//Alias para manejar traducciones 
function __($my_text) {
         global $gettext_cache;
         if (is_null($gettext_cache)) return $my_text;
         else return $gettext_cache->translate($my_text);
}

//Alias para manejar traducciones con singular y prural

function _ngettext($my_text1,$my_text2,$n) {
         global $gettext_cache;
         if (is_null($gettext_cache)) if ($n>1) return $my_text2; else return $my_text1;	
         else return $gettext_cache->ngettext($my_text1,$my_text2,$n);}


if ($_GET['language']) $_SESSION['language'] = $_GET['language'];
if (!array_key_exists('language',$_SESSION))$_SESSION['language'] = 'es_es';

if (file_exists("locale/".$_SESSION["language"]."/LC_MESSAGES/messages.mo")) {
   $gettext_cache =   new gettext_reader( new CachedFileReader("locale/".$_SESSION["language"]."/LC_MESSAGES/messages.mo"));
   }
 ?>

Cómo ves utilizan la siguiente función para localizar la traducción.
Código:
if (file_exists("locale/".$_SESSION["language"]."/LC_MESSAGES/messages.mo")) {
   $gettext_cache =   new gettext_reader( new CachedFileReader("locale/".$_SESSION["language"]."/LC_MESSAGES/messages.mo"));
   }

Tal vez si cambias a la estructura de directorios que necesitas te puede servir.

Un saludo es sólo una idea.
No lo he probado

Etiquetas: gettext
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:38.