Question:
Date: 18-06-2015 22:28:35
(In Spanish)
Tengo una web programada en php con dos idiomas.
Dicha web solo tiene una versión de la misma y se van añadiendo los textos desde un array según el idioma seleccionado.
El idioma se define según el idioma del navegador del usuario pero también se puede cambiar desde un menú y éste se almacena en una cookie.
Hasta ahí todo bien. La página funciona bien.
Actualmente, independientemente del idioma, en la barra de direcciones se lee la dirección: http://www.mipagina.com pero me gustaría que al navegar por la versión española de la página, en la barra de direcciones se reflejara una dirección del tipo http://www.mipagina.com/es/ y si es en inglés http://www.mipagina.com/en y la verdad llevo varios días con esto y no doy con la solución.
Me da la sensación de que tal vez con htaccess se pueda conseguir pero soy incapaz :(
Gracias por vuestro tiempo.
Votes: 0 - Answers: 3 - Views: 16 Share on: Google Facebook Twitter LinkedIn Link
Php en página multi idioma, carpetas y htaccess[Resolved]
Hola amigos.Tengo una web programada en php con dos idiomas.
Dicha web solo tiene una versión de la misma y se van añadiendo los textos desde un array según el idioma seleccionado.
/* ------------------ Language: Español ------------------ */ $lang = array(); $lang['PAGE_TITLE'] = 'Mi página'; $lang['PAGE_SUB_TITLE'] = 'Página demo'; ...
El idioma se define según el idioma del navegador del usuario pero también se puede cambiar desde un menú y éste se almacena en una cookie.
Hasta ahí todo bien. La página funciona bien.
Actualmente, independientemente del idioma, en la barra de direcciones se lee la dirección: http://www.mipagina.com pero me gustaría que al navegar por la versión española de la página, en la barra de direcciones se reflejara una dirección del tipo http://www.mipagina.com/es/ y si es en inglés http://www.mipagina.com/en y la verdad llevo varios días con esto y no doy con la solución.
Me da la sensación de que tal vez con htaccess se pueda conseguir pero soy incapaz :(
Gracias por vuestro tiempo.
Votes: 0 - Answers: 3 - Views: 16 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 20-06-2015 06:05:01 Hola Jaume, aquí un ejemplo de como lo podrías implementar lo que comentas:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:Accept-Language} ^en [NC] RewriteRule ^$ http://www.mipagina.com/en/ [L,R=301] RewriteCond %{HTTP:Accept-Language} ^es [NC] RewriteRule ^$ http://www.mipagina.com/es/ [L,R=301] </IfModule>
Al margen de esto, es mala práctica SEO agregar el lenguaje en la url, lo correcto sería que tengas url's distintas para cada lenguaje, ejemplo:
http://www.mipagina.com/contacto <-- para español
http://www.mipagina.com/contact <-- para ingles
Espero que mi respuesta te sea de ayuda.
Saludos, Votes: 1 - Link answer -
Date: 20-06-2015 07:43:39 Gracias por tu respuesta Fernando.
La verdad que voy un poco perdido con esto del SEO y las páginas multi idioma. Es un tema que está bastamente tratado por internet pero no consigo encontrar una explicación clara de cual es la mejor manera de hacerlo o mejor dicho cual es la que mas me conviene.
¿Crees que el planteamiento que hago de la estructura es correcto? Es decir; una sola pagina para cada sección y añadir el texto de cada idioma a través del array, o por el contrario es mejor que tenga copias de la misma pagina en varias carpetas?
Y otra pregunta... Para implementar la solución que me planteas, es decir tener distintas urls, es correcta mi estructura y podríaconseguir hacer las redirecciones a través de htaccess?
Muchas gracias por tu tiempo y perdona mi insistencia pero me ha costado mucho encontrar respuestas concretas como las tuyas :) Votes: 0 - Link answer -
Date: 20-06-2015 11:31:30 Jaume, hay tantas formas de internacionalizar una página php como formas puedas imaginarte y posibilidades que brinda el lenguaje, o sea, muchas....
Tener una página para cada idioma es una posibilidad (he visto muchos sitios de clientes duplicados y hasta triplicados), pero presenta un desafio de mantenimiento, porque siempre que hagas un cambio en español tendrás que ir a hacerlo a en las páginas de los demas idiomas, por lo que esta opción yo la descartaría.
Lo que tu plantesas es lo mas correcto, una sola página que dinamicamente se ajusta a cada lenguaje.
Podrías tener un array único de lenguaje multidimensional, algo como:
$lang = array(); $lang['es']['PAGE_TITLE'] = 'Mi página'; $lang['en']['PAGE_TITLE'] = 'My page'; $lang['es']['PAGE_SUB_TITLE'] = 'Página demo'; $lang['en']['PAGE_SUB_TITLE'] = 'Demo page';
o un array como el que planteas, separado por archivos e incluido segun el lenguaje que se navega. Podrías hacer algo como lo siguiente para su inclusión dinámica:
$lenguaje = 'es'; //<-- obviamente que el lenguaje lo deberás obtener de alguna función que te indique con que lenguaje navega el usuario require_once 'lenguaje/'.basename(__FILE__, ".php").'_'.$lenguaje.'.php';
De la forma anterior podrías tener para la pagina "contacto.php" un archivo "contacto_es.php y contacto_en.php" que resguarde el array de lenguaje, y segun el caso se incluye uno u otro.
Con respecto a las url's, podrás usar mod_rewrite para convertir las url, por ejemplo:
http://www.miweb.com/contacto en http://www.miweb.com/contacto.php
http://www.miweb.com/contact en http://www.miweb.com/contacto.php
Con respecto a los enlaces de la web, deberás tener alguna función que te construya las url para colocar en el href, algo como:
<a href="<?php echo getURL('contacto');?>"><?php echo $lang['CONTACTO']</a>
Lo cual terminará como:
<a href="http://www.miweb.com/contacto">Contacto</a>
Te recomiendo que busques en google con las palabras "Internacionalizar página PHP", o similar, pero la palabra clave es "internacionalización", seguramente encontrarás mucha información al respecto.
Luego me cuentas como te fue.
Saludos, Votes: 0 - Link answer
To actively participate in the community first must authenticate, enter the system.Sign In