Como crear una web en varios idiomas con php

Os vengo a enseñar como programar una web en varios idiomas de forma fácil y que si queremos agregar un nuevo idioma sea muy sencillo. Puede que con este método sea mas lento hacer la página web, pero ahorramos tiempo a la hora de traducirla.

¿Porque no usar cookies o sesiones? No es recomendado usar sesiones o cookies, porque si no la url sera la misma para español y para ingles, y google no sabrá en que idioma esta tu web. Si por lo contrario creamos un subdominio en.miweb.com o una carpeta miweb.com/en podremos deirle a Google que cada carpeta es de un idioma.

Primer paso: Creación de las carpetas de idiomas

En nuestra raíz, debemos crear carpetas correspondiente a los idiomas que queremos agregar, por ejemplo vamos agregar esta vez, español e ingles, por lo que creo las carpetas “en” y “es” quedando (miweb.com/en/ y miweb.com/es/)

dentro de esa, creo un archivo index.php con lo siguiente: (ver en pastebin.com)

[cc lang=”php”]

$web = true;
$lang = “es”;
include(“../index.php”);

[/cc]

Claramente, en la carpeta /en/ deberías pone “en” y no “es” en la variable $lang. Con esto definimos el idioma que va a cargar, y lo de la variable $web, es para definir y proteger que no entren a archivos sin permisos.

Paso dos: index de la raíz, enviarnos a una web o cargar la web:

En la raíz, debemos crear un archivo llamado index.php con el siguiente contenido: (ver en pastebin.com)

[cc lang=”php”]

if($web!=true) {
$idioma = substr($_SERVER[“HTTP_ACCEPT_LANGUAGE”],0,2);
if($idioma==”es”) { header(‘Location: http://www.miweb.com/es/’); } else { header( ‘Location: http://www.miweb.com/en/’ ); }
} else {
include(“lang/{$lang}.php”);
echo $txt[‘mensaje’][0];
}
?>

[/cc]

De esta forma, si la web tiene cargado $web cargara la web normal (si accedemos desde /en/ o /es/) y si directamente entraron a nuestra web, mirara el idioma del navegador y te llevara a la carpeta correspondiente.

paso 3: creando el idioma:

Debemos crear la carpeta llamada “lang” y dentro debemos crear dos archivos “en.php” y “es.php” y dentro debemos colocar las variables con nuestro texto, en este caso, en el index.php anterior hemos puesto la siguiente: “$txt[‘mensaje’][0]” quedando el archivo es.php así:

[cc lang=”php”]

$txt[‘mensaje’][0] = “Hola, bienvenido a mi página web en varios idiomas”;

[/cc]

y en en.php debéis colocar las mismas variables, pero con un valor diferente, (en el idioma que le corresponda).


Pues el usuario abcpoquer ha colaborado con su código para hacer lo vía httacces (mejor) en vez de el header() de php, dado que consume menos y es mejor.

[cc lang=”php”]

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule .* www.tudominio.com/en/ [R,L]
RewriteCond %{HTTP:Accept-Language} ^pt [NC]
RewriteRule .* www.tudominio.com/pt/ [R,L]

[/cc]

 

si quisiéramos poner por ejemplo, argentina, sería es-AR, así que, gracias ^^

8 comentarios en “Como crear una web en varios idiomas con php

  1. Excelente tutorial, en mi caso mi web multi idioma se ejecuta de manera similar pero la verificacion del navegador la ejecuto a traves de htacces, hay alguna diferencia objetiva entre las dos formas o son validas las dos sin acarrear algun problema?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *