Seguro hemos visto muchas páginas web en las que puedes elegir el pais, el idioma, entre otros detalles, crear una programación distinta por cada idioma sería un tanto absurdo por la cantidad de tiempo que demora hacer esto, además que tendriamos que duplicar código y bases de datos, lo que claramente no resulta muy buena idea que digamos.

Para crear múltiples idiomas hay básicamente dos métodos que funcionan similar, el uso de constantes y el uso de arrays, el método más común es utilizar constantes que almacenen el valor por cada idioma.

Bueno, veamos como funcionan ambos métodos y ya depende de cada uno usar uno u otro

Usando Constantes

Para los que no recuerdan como se crean constantes, el funcionamiento es asi:

1
2
3
define("MICONSTANTE", "Aqui el valor de mi constante");
// Y la mostramos asi
echo MICONSTANTE;

La idea es entonces crear un archivo php por cada idioma que contenga las constantes que necesitamos por ejemplo es.php, en.php, etc. y que elija el archivo que corresponda almacenando el idioma en una cookie o en una variable de sesión. Algo asi:

1
2
3
if ($_cookie['idioma']=="es") {
  include("idiomas/es.php");
}

La programación de nuestro sitio quedaría entonces de la siguiente forma
es.php

1
2
define("_mititulo", "Mi tienda");
define("_login", "Inicio sesion");
1
2
<h1><?php echo _mititulo; ?></h1>
<a href="login.php"><?php echo _login; ?></a>

Usando arrays

La idea es muy similar a la anterior sólo que ahora definimos un array con todas las palabras que requerimos

1
2
3
4
5
6
7
8
9
10
<?php
global $lang;
$lang = array (
    'CART_TITLE' => 'Mini Paypal Cart',
    'CATEGORY_TITLE' => 'Categories',  
    'CATEGORY_NOT_FOUND' => 'Category Not Found',
    'PRODUCTS_NOT_FOUND' => 'Products Not Found',
    'ADD_CART' => 'Add to cart'
);
?>

Para invocar los datos del idioma sería algo como:

1
<h2><?php echo $lang['CATEGORY_TITLE'];?></h2>