Clase traductora sencilla con arrays PHP

Hola amig@s. Esta semana algunos suscriptores del curso PHP guay habéis planteado que os gustaría solucionar algún problema concreto de la vida real, por ejemplo, traducir el texto HTML de vuestras páginas web en varios idiomas.

Pues bien, hoy vamos a complicar un poco las cosas y vamos a solucionar este problema que ciertamente suele presentarse muy a menudo en el desarrollo de apps. No os agobiéis los que todavía no tengáis asimilados los fundamentos de PHP, que los veremos en próximas entregas 😉

Vamos a desarrollar una sencilla clase traductora que funciona con arrays PHP. Los componentes de traducción como el que vamos a hacer hoy suelen trabajar con varios formatos para las traducciones: csv, txt, mo, xml, etc. De momento, por simplicidad y por motivos didácticos, nosotros trabajamos con un solo formato: los arrays PHP.

Diccionarios en varios idiomas

Puedes utilizar esta clase sencilla en tus apps siempre que tengas claro que puedes usar arrays PHP para traducir tus textos. De no ser así, deberías contar con otra clase traductora que de cobertura a tu formato, o con un componente que proporcione una verdadera capa de abstracción, dando solución a todos los formatos, por ejemplo, Zend_Translate de Zend Framework.

Dicho esto, adjunto a continuación el código del componente SimpleTranslation, que también está disponible en este repositorio SVN de Google Code.

El archivo README.md explica (en formato markdown, en inglés) cómo utilizar SimpleTranslation. En primer lugar, hay que poner los diccionarios PHP en alguna carpeta de la aplicación. Por ejemplo:

lang/es.php:

lang/fr.php:

Luego tienes que incluir la clase \SimpleTranslation\Translate.php e inicializarla con los parámetros locale y dictionary:

Con lo anterior ya podemos traducir los textos:

La clase Translate.php trabaja estos aspectos de PHP:

  • Programación orientada a objectos (OOP)
  • Namespaces
  • Propiedades estáticas
  • El operador ternario
  • La clase stdClass de PHP

Te invito esta vez a comentar estos temas de PHP en este mismo post, o bien en el video YouTube de PHP guay. ¡Gracias y saludos! 😉