Multi idioma en PHP

Hola a todos, hoy os voy a explicar como podemos hacer una aplicación multi idioma con PHP.

Si tu aplicación PHP quieres que lo vean desde diferentes países, necesitaras que sea multidioma.

Se puede hacer de varias maneras, nosotros lo haremos en este caso con un parámetro en la url con $_GET.

Lo primero es crear los ficheros de idiomas, que realmente serán ficheros PHP. Mi recomendación es crearnos una carpeta y crear un fichero PHP por cada idioma. Algo así:

El contenido de es.php debería tener este formato:


<?php

    $lang = array(
        "label.title" => "Titulo de ejemplo",
        "label.content" => "Contenido de ejemplo",
    );

?>

Y el de en.php así:


<?php

    $lang = array(
        "label.title" => "Title example",
        "label.content" => "Content example",
    );

?>

Fíjate que es la misma variable y mismo indice, solo cambia el valor, ahí esta el truco.

En el index.php, tendremos lo siguiente:


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Multiidioma</title>
</head>

<body>

    <?php

    $langs = array("en", "es");
    if (isset($_GET['lang']) && in_array($_GET['lang'], $langs)) {
        require "lang/" . $_GET['lang'] . ".php";
    } else {
        require "lang/es.php";
    }

    ?>

    <h1><?php echo $lang['label.title'] ?></h1>

    <p><?php echo $lang['label.content']; ?></p>

</body>

</html>

La idea es que si existe el parámetro lang y existe el idioma introducido, nos cargue el fichero PHP de idioma correspondiente. En el caso de que no, pues cargamos el idioma es.php por defecto.

Después con $lang[‘label.title’], según el idioma mostrara uno u otro mensaje.

Este es el resultado cuando el idiomas es español.

Este es el resultado cuando el idiomas es inglés.

Aquí os dejo el ejemplo completo para descargar.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Etiquetas

Deja un comentario

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