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”
-
aNieto2k
Has visto
gettext()?? Esto si que es elegante
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"); // --> nombreDe todas formas echalé un vistazo a gettext, que es muchísimo más fácil y completo
