PHP crear un sitio multilingue

Categories: PHP - Tags: ,

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>

2 Responses to PHP crear un sitio multilingue

  1. juanma says:

    Y gettext, te falta lo que se usa en cualquier aplicación digamos seria o acaso pensais que p.e. facebook se dedica a hacer varios archivos con defines.

  2. admin says:

    Aún usando la función gettext en algún lugar debes colocar la equivalencia de idioma y eso se hace con includes o con un archivo .po, si deseas ver una aplicación real usando includes para idiomas prueba Joomla, WordPress, Zencart, Oscommerce, etc, etc

Leave a Reply

Your email address will not be published. Required fields are marked *

*


8 + = nine

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>