PHP:¿Cómo puedo hacer una aplicación en varios idiomas y con un sólo código?
De Foros del Web
La solución es bastante sencilla, para ello haremos uso de archivos XML. Nuestro archivo puede tener la siguiente forma:
english.xml
Código PHP:
<?xml version="1.0"?> <!-- english language --> <language> <label> <value>File</value> </label> <label> <value>Edit</value> </label> <label> <value>View</value> </label> <label> <value>Options</value> </label> <label> <value>Help</value> </label> </language>
En el archivo XML tenemos una estructura sencilla donde la etiqueta value indica el valor.
Lo que tenemos que hacer es generar un array a partir de la estructura del XML, para ello haremos uso de la función xml_parse_into_struct(), esta función nos genera el array y lo trabajaremos de la siguiente manera:
language.php
Código PHP:
<?php class lang { var $word = array(); var $words = array('file', 'edit', 'view', 'options', 'help'); function loadLanguage($lang = "english.xml") { $xml = implode("", file(dirname(__FILE__)."/".$lang)); $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, $xml, $vals, $tags); xml_parser_free($parser); $i = 0; foreach($vals as $key => $value) { if(!empty($value['value'])) { $this->word[strtoupper($this->words[$i])] = ucfirst($value['value']); $i++; } } return $this->word; } function viewInfo() { $this->loadLanguage(); return print_r($this->word); } } $lang = new lang(); $lang -> viewInfo(); $labels =& $lang -> loadLanguage(); echo $labels['FILE']; ?>
De esta manera tenemos un array con todos los datos, y dependiendo del archivo que se le indique estará en un idioma u otro, y tan sólo tendremos que programar una aplicación haciendo uso de: echo $labels[indice];.
--epplestun 29 Oct 2003
Este artículo es parte de las FAQs de PHP y el Manual de PHP.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
