Comunidad PHPeros
Lenguajes => PHP => Mensaje iniciado por: MaNuX en 10 de Septiembre de 2013, 23:48:03 pm
-
Bueno como dice el titulo del tema os mostrare como crear tu sitio web en varios idiomas.
COMENZAMOS:
1 - Creamos un archivo llamado "languages.php" o como quieran llamarlo y introducen este código:
<?php
session_start();
header('Cache-control: private'); // IE 6 FIX
if(isSet($_GET['lang'])){
$lang = $_GET['lang'];
//registra sesion
$_SESSION['lang'] = $lang;
//define cookie
setcookie('lang', $lang, time() + (3600 * 24 * 30));
//busca en variables cookie y session
}else if(isSet($_SESSION['lang'])){
$lang = $_SESSION['lang'];
}else if(isSet($_COOKIE['lang'])){
$lang = $_COOKIE['lang'];
}else{
$lang = 'en';
}
switch ($lang) {
case 'en':
$lang_file = 'english.php'; //idioma por defecto
break;
/*--mas idiomas--*/
case 'es':
$lang_file = 'spanish.php'; //español
break;
}
include_once 'lang/'.$lang_file;
?>
2. Ahora crean una carpeta llamada "lang" y dentro de esa carpeta añadimos un nuevo archivo php con el siguiente código:
<?php
define('HELLO','Hello');
?>
y lo guardamos como "english.php", ahora creamos otro archivo igual a este pero guardandolo con el nombre "spanish.php" y sustitur el "Hello" por "Hola".
Quedaría asi:
<?php
define('HELLO','Hola');
?>
Para añadir mas líneas solo teneis que poner lo sieguiente sucesivamente, por ejemplo:
define('MY_CAT','My cat'); //en el archivo english.php
define('MY_CAT','Mi gato'); //en el archivo spanish.php
IMPORTANTE: Las palabras HELLO y MY_CAT abreis visto que las pongo en mayusculas y con guión bajo, se debe poner así ya que sino no funcionará.
3. Ahora vamos a añadir el primer archivo que creamos "languages.php" en nuestro index o donde quieran que aprezca la traducción.
Hay que incluirlo asi:
<?php include("languages.php"); ?>
4. Bueno ahora solo quedaría añadir los enlaces para que al hacer clic en un idioma se cambie, el código seria el siguiente:
<a href="index.php?lang=en">Ingles</a> <!-- Esto seria para cambiar el idioma en ingles -->
<a href="index.php?lang=es">Español</a> <!-- Esto seria para cambiar el idioma a español -->
--------------------------------
Bueno eso es todo, cualquier duda pueden postearlo.
Saludos.
-
Esto ya lo sabía pero aun así existen otras formas mas optimizadas, viene el caso de XML.
Una recomendación no definas si la entrada del lenguaje, agrégale un default al switch y ya resuelves.
Saludos.
-
Esto ya lo sabía pero aun así existen otras formas mas optimizadas, viene el caso de XML.
Una recomendación no definas si la entrada del lenguaje, agrégale un default al switch y ya resuelves.
Saludos.
Bueno es una forma simple de poder poner tu web en varios idiomas, hay muchas mas formas de hacerlo pero con esto se podrá ir mejorando, cambiando, etc.
-
Yo los strings de los idiomas los suelo parsear de un archivo json, y a parte un sistema más sofisticado con detección automática del idioma (dependiendo del país) - Gracias a la librería GeoIP.
-
A modo de información y recomendación, me gustaría opinar de forma amable, diciendo que hay otros métodos muchos mejores. Ya que los defines se guardan en memoria y ocupan espacio. Quién esté interesado que busque en Google alternando palabras cómo "multi idiomas gettext poedit php".
Saludos!
-
A modo de información y recomendación, me gustaría opinar de forma amable, diciendo que hay otros métodos muchos mejores. Ya que los defines se guardan en memoria y ocupan espacio. Quién esté interesado que busque en Google alternando palabras cómo "multi idiomas gettext poedit php".
Saludos!
Yo creo que he dado una muy buena opción, ¿Qué opinas?
-
Yo creo que he dado una muy buena opción, ¿Qué opinas?
Me parece bien que cambies el idioma según el país dónde se esté.
Pero piensa en lo siguiente, eres español y te vas de vacaciones a China, ingresas en una web y automáticamente la web se te presenta en chino. Si no tienes ni idea de chino, no serás capaz de cambiar el idioma a no ser que pongas en la web iconos de las banderas de los distintos idiomas.
Yo creo que aún mejor que eso, es presentar la web con el idioma oficial del usuario.
¿Cómo conseguir esto?
Fácil. Existe en PHP una variable que te permite identificar el idioma del usuario.
¿Cómo es posible saber el idioma?
El idioma es posible saberlo gracias al idioma en el que instaló el navegador web.
Más información y ejemplo
http://desarrolladoryempresario.blogspot.com.es/2009/09/detectar-idioma-del-navegador-del.html (http://desarrolladoryempresario.blogspot.com.es/2009/09/detectar-idioma-del-navegador-del.html)