Cuando trabajamos con cadenas con acentos, eñes y otros símbolos no compatibles en ciertos entornos, en ocasiones, hemos de sustituirlas por sus equivalentes para poder ofrecer el resultado deseado (por ejemplo, sustituir á por a).
Los arrays asociativos son estructuras de datos que PHP nos ofrece para poder almacenar datos asociados a una serie de claves, en lugar de a un índice numérico. En otros lenguajes, se les denomina tablas hash.
La ordenación de dichos arrays, es una de las operaciones básicas de cara a un correcto manejo de los mismos. Para poder llevar a cabo esa operación, PHP nos ofrece dos funciones: asort y ksort que vamos a explicar en esta entrada. Este tipo de array se utiliza muy a menudo al hacer consultas contra bases de datos, con funciones como mysql_fetch_array.
Si ya hemos hablado en líneas generales del tema y hemos comentado cómo hacer uso de los ficheros .po, .mo y .pot, ahora nos toca el turno de llevar a la práctica todo esto. Suponemos que tenemos ya nuestros ficheros .PO y .MO creados. Si queréis practicar, podéis usar los paquetes de lenguaje de cualquier aplicación libre, por ejemplo, los de la versión española de WordPress. Empecemos paso a paso.
Marcar las cadenas a traducir
En lugar de usar directamente:
print “<p>Cadena a traducir</p>\n”;
Si hace poco hablábamos en la primera parte de forma introductoria de cómo traducir programas libres, hoy vamos a entrar de lleno en cómo hacerlo.
Antes de empezar a leer más sobre cómo usar gettext con PHP en concreto y con ciertos cambios en otras tecnologías libres, veamos en qué consisten los ficheros que usaremos: .po, .mo y .pot y cómo editarlos y trabajar sobre ellos.
Ficheros .POT (Portable Object Template, plantillas de objetos portables)
El primer paso para comenzar a utilizar gettext, es tener una plantilla donde tengamos definidos todos los mensajes que debemos traducir. Normalmente, el lenguaje de referencia, es el inglés, pero podemos elegir cualquier otro.
Siempre que alguien comienza el desarrollo de un software, sobre todo si éste está en la nube, debe pensar en la internacionalización del mismo. Aparte de estudiar otros aspectos como los textos RTL (Right to left, de derecha a izquierda), la codificación de los caracteres, el formato de la fechas o el de los números (no es lo mismo 1.000,50€ que $ 1000.50) el aspecto más básico es proveer el software con su contenido traducido a cada idioma.
Al igual que hicimos en su día con Ubuntu 10.10, ahora le llega el turno a la nueva versión Ubuntu.
Para instalar LAMP (Linux Apache MySQL HP) muchos de vosotros usaríais el selector de paquetes por tareas del gestor de paquetes Synaptic, pero en esta versión de Ubuntu y en la anterior no existe el paquete, así que tendremos que instalarlo manualmente.
La tarea, al igual que en el caso que os mencionaba antes, es bien sencilla, desde la terminal, instalamos el paquete tasksel, el mismo que utiliza Synaptic internamente para realizar esta tarea:
¿Alguna vez os habéis preguntado qué capacidades tienen los diferentes roles de usuario en un sitio WordPress?
Empezamos por el de más bajo nivel y vamos subiendo. Los de mayor nivel tienen todas las capacidades tienen todas las capacidades de los roles inferiores.
Suscriptor (o suscriber)
Colaborador (o contributor)
Autor (o author)
Cuando trabajamos con cadenas en UTF-8 (si queréis más información sobre juegos de caracteres os recomiendo esta entrada: Entender los juegos de caracteres y “collation” I y II que escribí hace tiempo) no podemos usar la función típica para hacer subcadenas de PHP: substr, ya que en el caso de que el corte caiga justo en un carácter no ASCII, habrá un problema en la representación y aparecerá un carácter extraño.
El origen de este problema es que se trata de un juego de caracteres en el que cada carácter no tiene por qué tener un sólo byte de tamaño, si no que puede llegar a ocupar 4 bytes como máximo, es decir, también puede ocupar 2 o 3 bytes.
Hace tiempo, comenté en estas mismas líneas que había publicado un libro para Ra-Ma titulado: Ubuntu Linux, instalación y configuración básica en equipos y servidores.
Ha pasado más de un año desde entonces y hoy vuelvo a escribir una entrada para comentaros que acaba de ver la luz: Domine WordPress. Manual práctico, mi segundo libro y desde mi punto de vista, mejor que el primero no sólo porque uno tenga ya más experiencia, sino porque WordPress es cada día más la plataforma libre por excelencia para publicación de blogs y no hay disponible tanta información como de Ubuntu en la red en lengua español.
Ahora mismo estoy poniendo un producción un servidor en mi centro de trabajo, en el que además de tener que dar servicio para la base de datos PostgreSQL (explique hace poco cómo permitir conexiones entrantes a esta BBDD), debe hacer conexiones externas a una base de datos Oracle.
Estas conexiones las hará un script en PHP por lo que además, deberemos instalar OCI (Oracle Call Interface) para PHP. Suponemos que está ya instalado el servidor web Apache 2 y los componentes básicos de PHP.