28 Feb

Políglota

No se si será la manera más elegante, ni la más rápida pero es la que he usado. Vivir en un país con tantos idiomas tiene sus “inconvenientes” pero bueno, también te ayuda a aprender PHP.

<?
$id = stripslashes($_GET['i']);
if ($id != cat) echo '<a href="?i=cat">imatge català</a>';
else echo '<a href="/">imágen Spanish</a>';
//En cada texto un if así
if ($id != cat) echo '<p>texto en spanish</p>';
else echo '<p>Text en català</p>';
?>

Funcionar funciona, pero ¿es la manera más elegante?

Un comentario en “Políglota”

  1. Gravatar
    aNieto2k

    Has visto gettext()?? Esto si que es elegante :D

    La versión más cutre, aunque algo mejor que la que has propuesto sería la de usar ficheros externos cargados de define.

    Me explico.
    fichero index.php

    
    <?php
    $id = stripslashes($_GET['i']);
    require ('lang/'.$id.'.php');
    
    //Texto de la página
    echo "_nombre"." Jordi "."_apell"." el Programata :D";
    ....
    
    ?>>
    

    Fichero cat.php o esp.php o …

    
    <?php
    define("_nombre","Nom");
    define("_apell","Llinatje"); // o Apellido en el fichero esp.php
    ....
    ?>>
    
    

    Otra alternativa sería el usar un Array para almacenar los los textos y una función que comprueba que estos textos existan mostrando el resultado de la palabra deseada, sinó lo encuentra mostrará la que solicitamos.

    
    $lang = array(
        'cat' => array (
            'nombre' => 'nom',
            'apellido' => 'llinatge',
            'gato' => 'moix'),
        'eng' => array (
            'nombre' => 'name',
            'apellido' => 'surname',
            'gato' => 'cat')
    );
    
    function lang($str, $idioma) {
        global $lang;
        return (isset($lang[$idioma][$str]))?$lang[$idioma][$str]:$str;
    }
    Ejemplo:
    echo "Solo quiero traducir esto: " .lang("nombre","eng"); // --> name
    
    echo "Solo quiero traducir esto: " .lang("nombre","den"); // --> nombre
    
    
    

    De todas formas echalé un vistazo a gettext, que es muchísimo más fácil y completo :D

¿Y tu qué opinas?

Los comentarios en mayúsculas y tipo SMS serán borrados. Puedes usar Markdown para dar formato a los comentarios.