Foros del Web » Programando para Internet » PHP »

Expresiones regulares para multilenguaje

Estas en el tema de Expresiones regulares para multilenguaje en el foro de PHP en Foros del Web. Hola, En mi web tengo pensamiento de hacer algo así: El usuario escribe [es]Texto en español[/es] y eso se mostraría si el idioma de la ...
  #1 (permalink)  
Antiguo 07/04/2013, 15:43
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 14 años
Puntos: 7
Expresiones regulares para multilenguaje

Hola,

En mi web tengo pensamiento de hacer algo así:

El usuario escribe [es]Texto en español[/es] y eso se mostraría si el idioma de la web es español, y así.

Tengo este código y funciona perfectamente:

Código PHP:
Ver original
  1. function obtenerIdiomaTexto($texto)
  2. {
  3.     $idiomaActual = 'de';
  4.     if(!empty($texto))
  5.     {
  6.         if(strstr($texto, '[es]') AND strstr($texto, '[/es]') AND $idiomaActual == 'es')
  7.         {
  8.             $idiomaTexto = explode('[/es]', $texto);
  9.             $idiomaTextoBien = explode('[es]', $idiomaTexto[0]);
  10.             return $idiomaTextoBien[1];
  11.         }
  12.         elseif(stristr($texto, '[en]') AND stristr($texto, '[/en]') AND $idiomaActual == 'en')
  13.         {
  14.             $idiomaTexto = explode('[/en]', $texto);
  15.             $idiomaTextoBien = explode('[en]', $idiomaTexto[0]);
  16.             return $idiomaTextoBien[1];
  17.         }
  18.  
  19.         elseif(stristr($texto, '[de]') AND stristr($texto, '[/de]') AND $idiomaActual == 'de')
  20.         {
  21.             $idiomaTexto = explode('[/de]', $texto);
  22.             $idiomaTextoBien = explode('[de]', $idiomaTexto[0]);
  23.             return $idiomaTextoBien[1];
  24.         }
  25.     }
  26.     else
  27.     {
  28.         return FALSE;
  29.     }
  30. }
  31.  
  32.  
  33. $texto = obtenerIdiomaTexto('[es]Texto en español[/es][en]Texto en inglés[/en][de]Texto en alemán[/de]');
  34. echo $texto;

Mi duda es, ¿cargaría mucho la web? ¿hay alguna manera mas liviana de hacerlo?
Ya se que puedo crear campos en la base de datos con texto_es, texto_en y así, pero es que son muchas cosas las que lo van a usar, como en las noticias, titulos de noticias, fichas de animales, etc etc y por eso así no es viable.
Mucho menos cuando la web se va a ir traduciendo a otros idiomas y hay que agregar otros idiomas.

Gracias!
__________________
@JaimeMSE - ¡Sígueme!
  #2 (permalink)  
Antiguo 05/06/2013, 13:16
Avatar de wizanchez  
Fecha de Ingreso: junio-2013
Ubicación: bogota
Mensajes: 120
Antigüedad: 11 años, 6 meses
Puntos: 6
Respuesta: Expresiones regulares para multilenguaje

- te rcomendaria que trabaje con el traductor de google, parseando
- asi lo podras traducir solo cuando el usuario lo necesite
  #3 (permalink)  
Antiguo 05/06/2013, 15:30
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 8 meses
Puntos: 270
Respuesta: Expresiones regulares para multilenguaje

Si quieres, puedes ver el sistema de plantillas que incluyo en mi firma.
El método de gestionar traducciones, es parecido al que indicas.
Con éste código:
Código PHP:
Ver original
  1. [@L]Prueba[#]
al preprocesarse la plantilla, si la cadena "Prueba" no existe en el fichero de traducciones para el idioma actual, se incluirá en el archivo.
Si existe, se copiará su valor traducido a la plantilla que, una vez convertida en código PHP, se almacena según el lenguaje.
Es decir, que el código anterior, genera tantas plantillas como lenguajes haya, con la cadena ya traducida.
Además, puede gestionar casos como este:
Código PHP:
Ver original
  1. [@L]Texto con variables: <?php echo $varText1;?> y <?php echo $varText2;?>[#]

Etiquetas: expresiones, multilenguaje, regulares
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 09:34.