Foros del Web » Programando para Internet » PHP »

Duda Con Idioma [Urgente]

Estas en el tema de Duda Con Idioma [Urgente] en el foro de PHP en Foros del Web. Tengo una duda, estoy empezando con PHP y estoy queriendo armar mi web en varios idiomas y mi duda está acá: Código PHP: <?php if(empty( ...
  #1 (permalink)  
Antiguo 12/02/2010, 20:53
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
Duda Con Idioma [Urgente]

Tengo una duda, estoy empezando con PHP y estoy queriendo armar mi web en varios idiomas y mi duda está acá:

Código PHP:
<?php
if(empty($sitelang)){ //primero preguntamos si la variable que va a contener el lenguage del visitante esta vacia
      
$sitelang getenv("HTTP_ACCEPT_LANGUAGE"); // si esta vacia sacamos el lenguage del visitante y lo ponemos en la variable $sitelang
      
}
switch(
$sitelang){ //ahora cargamos el archivo que contiene el idioma segun la variable que sacamos antes
          
case "es-es,es;q=0.8,en-us;q=0.5,en;q=0.3" //es = español 
             
include("./lang/lang-esp.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
             
break;
          case 
"en" //en = ingles 
             
include("./lang/lang-eng.php");
             break;
          case 
"br" //en = ingles 
             
include("./lang/lang-bra.php");
             break;
          case 
"it" //en = ingles 
             
include("./lang/lang-ita.php");
             break;
          case 
"de" //en = ingles 
             
include("./lang/lang-deu.php");
             break;
          case 
"fr" //en = ingles 
             
include("./lang/lang-fra.php");
             break;
          default :
             include(
"./lang/lang-eng.php"); //cargamos un idioma por defecto si no se encontro algun idioma 
             
break;
       }  
?>
Por defecto tengo el idioma eng y si entro a mi página me aparece con el idioma por defecto, para que me aparesca en mi idioma (ES) tengo que poner
Código PHP:
case "es-es,es;q=0.8,en-us;q=0.5,en;q=0.3" 
Quiero poner la web en 6 idiomas: Español, Ingles, Portugués, Italiano, Aleman y Francés. Pero si alguno que me visita no tiene el idioma "es" o "en" como yo, osea si el idioma por defecto es algo mas que "es", que en mi caso es "es-es,es;q=0.8,en-us;q=0.5,en;q=0.3" Como hago para que tengan un idioma? No se si me explico pero necesito su ayuda.

Gracias. Saludos.

Atte. Nickyto.

Última edición por Nickyto; 12/02/2010 a las 21:00
  #2 (permalink)  
Antiguo 12/02/2010, 22:54
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Duda Con Idioma [Urgente]

Cita:
Iniciado por Nickyto Ver Mensaje
Por defecto tengo el idioma eng y si entro a mi página me aparece con el idioma por defecto, para que me aparesca en mi idioma (ES) tengo que poner
Código PHP:
case "es-es,es;q=0.8,en-us;q=0.5,en;q=0.3" 
Quiero poner la web en 6 idiomas: Español, Ingles, Portugués, Italiano, Aleman y Francés. Pero si alguno que me visita no tiene el idioma "es" o "en" como yo, osea si el idioma por defecto es algo mas que "es", que en mi caso es "es-es,es;q=0.8,en-us;q=0.5,en;q=0.3" Como hago para que tengan un idioma? No se si me explico pero necesito su ayuda.
Primero, evita colocar cosas como "Urgente" y "Ayuuuudddaaa". Realmente son de muy mal gusto

De Google, primer resultado: http://www.w3.org/Protocols/rfc2616/...4.html#sec14.4

Cada lenguaje va separado por una coma y tiene una "q" (de quality) asociada. Cuando no la tiene equivale a 1.

El "quality" sirve para determinar la "preferencia" del idioma asociado. Así, tu cliente, según la cadena que dejas, está diciendo:
- Que prefieres el español de España (es-es) sobre todo (q=1)
- Que una segunda opción es el español genérico --es, sin localización-- (q=0.8)
- Tu siguiente preferencia sería el inglés norteamericano (es-us, q=0.5)
- En última instancia, prefieres el inglés genérico (en a secas, q=0.3)

Ese es el significado, no tienes porque comparar toda la cadena que habrá muchas variaciones. No sabría si todos los clientes ordenan de acuerdo a la preferencia los parámetros (detectarás el tuyo está ordenado), si te quieres fiar de ello, solo con strpos() te valdrá.

Dependiendo de qué tan bien quieras leer los parámetros, también necesitarías de explode() cuando menos. Si tomarás en cuanta el valor del "quality", entonces sort() o asort() igual te servirá, dependiendo de tu lógica.

www.php.net/strpos
www.php.net/explode
www.php.net/sort

Algo es seguro, esto no debería ser imperativo. Muchas personas ignoran que pueden configurar cosas como su lenguaje y su localización (que, por cierto, son dos cosas distintas). Si vas a ofrecer una página multi-lenguaje obviamente deberás dar la opción en tu propia página de que el usuario elija su idioma.
__________________
I ♥ The Music!

Última edición por maturano; 12/02/2010 a las 23:02
  #3 (permalink)  
Antiguo 12/02/2010, 22:58
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Duda Con Idioma [Urgente]

podrias probar con un substr. Que tome las 2 primera letras del idioma.
Código PHP:
$sitelang substr(getenv("HTTP_ACCEPT_LANGUAGE"),0,2); 
Es media cabernicola, pero deberia funcionar.
Fijate con el portugues, cuales serian las iniciales.

Espero que te sea de utilidad
  #4 (permalink)  
Antiguo 12/02/2010, 23:28
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Duda Con Idioma [Urgente]

Cita:
Iniciado por luis010182 Ver Mensaje
podrias probar con un substr. Que tome las 2 primera letras del idioma.
Código PHP:
$sitelang substr(getenv("HTTP_ACCEPT_LANGUAGE"),0,2); 
Es media cabernicola, pero deberia funcionar.
Fijate con el portugues, cuales serian las iniciales.

Espero que te sea de utilidad
Muchas gracias Luis funciona perfecto y sí las iniciales del portugués son PT, gracias otra vez

Maturano perdón es que estoy tratando de aprender PHP y aveces me desespero, no te imaginas lo que tarde en poder entrar a MySql.

Gracias a los dos. Saludos.

Atte. Nicolás.
  #5 (permalink)  
Antiguo 12/02/2010, 23:55
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Duda Con Idioma [Urgente]

Cita:
Iniciado por Nickyto Ver Mensaje
Muchas gracias Luis funciona perfecto y sí las iniciales del portugués son PT, gracias otra vez
Funciona para este TU caso. Si es así, pon el lenguaje que quieras y punto.

Para rápido, no funcionaría según MI configuración. No funcionaría para un alemán que hable español (que los hay y muchos), donde podría entregar algo como "de, es;q=xx" y decenas de casos más ... pero bueno, así estamos.

Bien que funcionó, solo queda el consejo que no haces deberías hacer los sitios para ti. Algo simple y más funcional, repito, strpos().
__________________
I ♥ The Music!

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 15:39.