Foros del Web » Programando para Internet » PHP »

url con distintos idiomas

Estas en el tema de url con distintos idiomas en el foro de PHP en Foros del Web. Hola a todos, Estoy haciendo una web en dos idiomas mediante PHP. Mediante esta etiqueta puesta en todas las pgs discrimina el idioma de navegación: ...
  #1 (permalink)  
Antiguo 05/03/2014, 07:15
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Busqueda url con distintos idiomas

Hola a todos,
Estoy haciendo una web en dos idiomas mediante PHP. Mediante esta etiqueta puesta en todas las pgs discrimina el idioma de navegación:
Código HTML:
<html lang="<? echo $idioma['PAGE_IDIOMA'];?>"> 
Luego tengo una carpeta de "idioma" en la que tengo varios archivos como "idioma.en.php" y "idioma.es.php" donde tengo todo el contenido en cada idioma.

Luego tengo pgs. como por ejemplo informacion.php donde se llama a cada contenido:
Código HTML:
<div class="row txt_interiores">
            
          <? echo $idioma['CONT_INFORMACION'];?>  
          
            </div> 
El problema es que en la URL de arriba aparece la pg como "informacion.php?idioma=en" o "informacion.php?idioma=es" pero no me parece bien que no esté traducida la url porque queda mal a efectos quien entra desde el idioma inglés y tampoco de posicionamiento en los diferentes países.

¿Qué me recomendáis? GRACIAS.
  #2 (permalink)  
Antiguo 05/03/2014, 10:36
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 14 años, 5 meses
Puntos: 8
Respuesta: url con distintos idiomas

Yo lo que hago, es guardar la variable de idioma en una variable de sesion... Por ejemplo:

$_SESSION["lang"]="es"; //es, en, it, fr, etc...

De esta forma la tengo hay siempre que la necesito! sin necesidad de que aparezca en la URL o de andar haciendo comprobaciones con el $_GET...

Otra opcion, es hacer un poco mas bonita la URL mediante un RewriteRule... Por ejemplo:

Código apache:
Ver original
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3.  
  4. RewriteRule ^informacion.php/([a-z])$ informacion.php?idioma=$1
  5.  
  6. </IfModule>

Saludos.
__________________
Follow me on twitter @franbedia
  #3 (permalink)  
Antiguo 05/03/2014, 10:47
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 7 meses
Puntos: 320
Respuesta: url con distintos idiomas

Un buen curso de seo, expreciones regulares y .htaccess con rewriterules.

Código Apache:
Ver original
  1. RewriteRule ^(es|en+)/(informacion|information)$ ./informacion.php?idioma=$1 [L]

Deberas incluir todos los links a las librerias de idiomas.
Te sugiero que las lib de idiomas las armes con clases estaticas donde tengas un array publico con las varibles definidas y muchos metodos que agreguen a ese array, por ejemplo:

Código PHP:
Ver original
  1. class idioma
  2. {
  3.       public static menu = array();
  4.       public static blog   = array();
  5.       public static links   = array();
  6.      
  7.       /../
  8.  
  9.       public static function loadMenu()
  10.       {
  11.            self::menu['inicio'] = 'Inicio';
  12.            self::menu['contacto'] = 'contacto';
  13.        }
  14.  
  15.       public static function loadBlog()
  16.       {
  17.            self::blog['entradas'] = 'Entradas recientes';
  18.            self::blog['contacto'] = 'Deja un mensaje';
  19.        }
  20.       public static function loadLinksA()
  21.       {
  22.            self::links['informacion'] = 'es/informacion';
  23.        }
  24. }

podrias tener tantas clases iguales como idiomas tengas, y segun el idioma, cargas una o la otra.
podrias declarar la como global, y podrias usarla en cualquier lado. (ojo con las globales, no abuses de ellas, este un caso particular)


Ventajas:
- Solo cargas las variables que vas a usar, no defines miles de variables para usar solo unas cuantas en cada seccion.
- Los bloques de metodos son reusables y sirven para varios proyectos (si los organizas bien)
- Mayor claridad y velocidad para encontrar algo (si los organizas bien)

Contras:
- Tienes que llamar a los metodos que vas a usar antes de usarlos
- Notacion de clase (idioma::links['informacion']) es mas larga que usar simples arrays.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #4 (permalink)  
Antiguo 05/03/2014, 11:02
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: url con distintos idiomas

Probaré las dos cosas y os comento, pero mi primera opción era modificar el .htaccess
Muchas gracias.
  #5 (permalink)  
Antiguo 05/03/2014, 16:31
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: url con distintos idiomas

Buenas, no me funcionan ninguna de las dos propuestas de cambio en el .htaccess. No cambia nada en la url. Lo último que he probado es esto:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /gastronomia/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(/.*)$ informacion.php?idioma=$1
</IfModule>

Se me olvidó comentaros que la dirección que quiero cambiar está en el directorio "gastronomia".
Sigo probando pero todo lo que intento cambiar en el .htacces no me hace lo que quiero.
Gracias.
  #6 (permalink)  
Antiguo 05/03/2014, 20:58
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 7 meses
Puntos: 320
Respuesta: url con distintos idiomas

si pones el rewrite que te pase yo y entras a este link: localhost/gastronomia/es/informacion o a este: localhost/gastronomia/en/information funcionara.

debes cambiar los enlaces en todo tu sistema, ya no tendras mas links del tipo informacion.php?... ahora usaras los links amigables, si en la url sigues poniendo esos no veras ningun cambio
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Etiquetas: distintos, html, idiomas, url
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:41.