Foros del Web » Programando para Internet » PHP »

como tener un sitio en varios idiomas

Estas en el tema de como tener un sitio en varios idiomas en el foro de PHP en Foros del Web. Hola estoy trabajando con PHP y Smarty en el desarrollo de un sitio web de anuncios. Necesito que el sitio este en dos idiomas ingles ...
  #1 (permalink)  
Antiguo 07/03/2010, 10:52
 
Fecha de Ingreso: febrero-2010
Mensajes: 24
Antigüedad: 14 años, 2 meses
Puntos: 0
Sonrisa como tener un sitio en varios idiomas

Hola
estoy trabajando con PHP y Smarty en el desarrollo de un sitio web de anuncios. Necesito que el sitio este en dos idiomas ingles y portugues.
he buscado en los foros y hay varias posibilidades, a traves de un fichero .XML o de un ichero .CONF, hay otros que proponen clases.
si alguien tiene algun metodo que haya probado y que funcione por favor, aviseme
gracias a todos de antemano

rosabel
  #2 (permalink)  
Antiguo 08/03/2010, 07:42
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: como tener un sitio en varios idiomas

facil.
hacer un sitio distinto para cada idioma.
  #3 (permalink)  
Antiguo 08/03/2010, 10:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Tema movido desde Configuración a PHP
  #4 (permalink)  
Antiguo 08/03/2010, 10:54
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: como tener un sitio en varios idiomas

A ver, si conoces PHP y Smarty eres todo un programador. Bien, como dices hay varias opciones y todas tienen un costo distinto, al hablar de costo estoy hablando de optimización, creo que eso es lo que quieres, que no solo funcione (todas las posibilidades funcionan) sino que también que sea ligero.

Yo usé un método simple, yo mismo me lo ingenié y talvez su contra sea que cuesta memoria, pero no para proceso sino para mantener en memoria los datos. Yo creo que es lo más óptimo. Usar un XML para guardar las frases equivalentes en los idiomas puede ser costoso en procesamiento. El fichero .CONF también requiere procesamiento, bueno este es mi método:

Creas un array complejo. de este modo:

Código PHP:

$frases 
= array(
                    
"Título" => array("ingles" => "Title""portugues" => "título);
                    "
Preguntas" => array("Ingles" => "Questions", "portugues" => "perguntas");
                    "
Artículos" => array("Articles" => "Articles", "portuges" => "Artigos");
                
); 
Debes de saber que no son palabras las que debes manejar, sino frases completas. Después debes definir mediante una variable en qué idioma estás, podrías usar un parámetro mediante URL disfrazado mediante URLs amigables y luego una sesión, imaginemos que la variable que indique el idioma sea $lang, ahora puedes usar una función para imprimir cada frase, de esta manera:

Código PHP:
function imprimirFrases($frase) {
       
$arrFrase $frases[$frase];
       if (
$arrFrase) {
          if (
$rFrase $arrFrase[$lang]) return $rFrase;
       }

Obviamente $lang puede tener los valores "ingles" o "portugues", en este caso, también podrías usar índices numéricos con lo cual tendrías que cambiar también el array $frases correspondientemente. Para $lang yo lo definí como global, pero he visto contras de optimización en el uso de variables globales, así que talvez podrías usar una función que develva el valor de lang en base a la URL o simplemete podrías asignar su valor mediante sessiones. También te digo que puedes definir qué hacer cuando no se encuentra la frase traducida, podrías devolver la misma frase o una advertencia, eso lo decides tú y puedes modificar la función.

Bien, hacer una página multi idiomas no tiene porqué ser muy complicado, solo es cosa de tener una fuente estructurada de frases con sus correspondientes traducciones. Como lo obtienes? Eso puede variar.

También es posible obtener el idioma predefinido mediante $_SERVER['HTTP_ACCEPT_LANGUAGE'], eso puede ser muy útil.

Por último te diré que esto solo sirve para la plataforma, si alguien necesita que el contenido (me refiero a artículos o algo parecido) sea multiidiomas eso cambia el plano radicalmente. Ya no se necesitaría solamente lo que te acabo de explicar sino también se necesita una reestructuración para la base de datos, para que se guarde el contenido en los distintos idiomas. Eso es un trabajo más complejo. Espero que ese no sea el caso, pero si lo es, solo acláralo y veremos como te ayudamos.

Etiquetas: idiomas
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 16:16.