Comunidad PHPeros

Lenguajes => PHP => Mensaje iniciado por: MaNuX en 10 de Septiembre de 2013, 23:48:03 pm

Título: [Tutorial] Web en varios idiomas
Publicado 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:

Código: [Seleccionar]
<?php
session_start
();
header(&#39;Cache-control: private&#39;); // IE 6 FIX

if(isSet($_GET[&#39;lang&#39;])){
        
$lang $_GET[&#39;lang&#39;];

        //registra sesion
        
$_SESSION[&#39;lang&#39;] = $lang;
        
        //define cookie
        
setcookie(&#39;lang&#39;, $lang, time() + (3600 * 24 * 30));
        
        //busca en variables cookie y session
}else if(isSet($_SESSION[&#39;lang&#39;])){
        
$lang $_SESSION[&#39;lang&#39;];
}else if(isSet($_COOKIE[&#39;lang&#39;])){
        
$lang $_COOKIE[&#39;lang&#39;];
}else{
        
$lang = &#39;en&#39;;
}

switch (
$lang) {
  case &
#39;en&#39;:
  
$lang_file = &#39;english.php&#39;; //idioma por defecto
  
break;
 
  
/*--mas idiomas--*/

  
case &#39;es&#39;:
  
$lang_file = &#39;spanish.php&#39;; //español
  
break;

}

include_once &
#39;lang/&#39;.$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:

Código: [Seleccionar]
<?php
define
(&#39;HELLO&#39;,&#39;Hello&#39;);
?>


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:

Código: [Seleccionar]
<?php
define
(&#39;HELLO&#39;,&#39;Hola&#39;);
?>


Para añadir mas líneas solo teneis que poner lo sieguiente sucesivamente, por ejemplo:
Código: [Seleccionar]
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:
Código: [Seleccionar]
<?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:
Código: [Seleccionar]
<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.
Título: Re:[Tutorial] Web en varios idiomas
Publicado por: SoyJoaquin. en 11 de Septiembre de 2013, 15:37:13 pm
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.
Título: Re:[Tutorial] Web en varios idiomas
Publicado por: MaNuX en 11 de Septiembre de 2013, 16:37:48 pm
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.
Título: Re:[Tutorial] Web en varios idiomas
Publicado por: Animus en 11 de Septiembre de 2013, 23:15:39 pm
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.
Título: Re:[Tutorial] Web en varios idiomas
Publicado por: maska en 24 de Septiembre de 2013, 17:41:04 pm
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!
Título: Re:[Tutorial] Web en varios idiomas
Publicado por: Animus en 27 de Septiembre de 2013, 17:27:44 pm
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?
Título: Re:[Tutorial] Web en varios idiomas
Publicado por: maska en 22 de Noviembre de 2013, 20:40:33 pm
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)