El Blog de Loretahur

Dejamos de temer aquello que se ha aprendido a entender (Marie Curie)

Mostrando entradas de la categoría Software

Gestionando varios idiomas con WordPress

a las 23:23

Ando embarcada en varios proyectos sustentados por el gestor de contenidos WordPress y uno de los requisitos imprescindibles es la navegación multi-idioma. Así que dejaré por aquí mi experiencia, por si a alguien le sirve de ayuda o puede ser enriquecida por otras personas (y a ver si así podemos devolver algo de todo lo que nos ofrece este tipo de paquetes de software libre).

Lo primero de todo, necesitamos un plugin que consiga gestionar correctamente ese sistema multi-idioma. Para ello, y tras probar unos cuantos, el vencedor ha sido xlanguage. Las características que le hacen caballo ganador:

  • Se encarga de la administración de tantos idiomas como queramos manejar. Esa gestión afecta a los contenidos del blog (tanto posts como páginas estáticas), a las categorías, etiquetas, feeds, theme, etc, …
  • En el theme sólo será necesario contar con una carpeta donde almacenar los ficheros de idioma: un .mo con el nombre del idioma. Si tenemos plugins que generan contenidos, también podremos traducirlos y dejar aquí sus .mo.
  • Una funcionalidad muy interesante es que gestiona el cambio de idioma mediante cookies, así que si cambiamos el lenguaje que arranca por defecto, en próximas navegaciones recordará nuestra preferencia. También detecta el idioma del navegador, para mostrarnos directamente esa opción.
  • Por cada idioma genera una url diferente, lo que hace que los buscadores indexen los contenidos en todos los idiomas. Esa fue una de las razones por las que me decanté por xlanguage y no por qtranslate, que usa la misma dirección para todas las traducciones.

¿Y cómo conseguimos traducir nuestro theme y nuestros plugins? Sencillo: todas las llamadas php que muestren cadenas de texto, tendrán que ir con la función _e() o bien con la función __() (la diferencia entre ambas es que _e hace un echo de la cadena. Es decir, echo __(“Hola mundo”); es lo mismo que _e(“Hola Mundo”); ). De esta manera, con las herramientas que nos ofrece WordPress para la localización e internalización, podremos generar un .pot del theme donde introducir las traducciones pertinentes para luego generar el .mo que entenderá nuestro xlanguage.

  • .pot: este fichero se genera de manera automática y recoge todas las cadenas de texto que aparecen en nuestro site. Por cada una de ellas, aparece justo debajo el espacio donde se debe dejar su traducción. Este es un ejemplo donde aparece primero el lugar en el que está dentro del código, la cadena en sí y el espacio donde se dejará la traducción correspondiente:

    #: presentacion.php:36
    msgid “Hello World”
    msgstr “”

  • .po: es el fichero .pot con las traducciones ya incluidas. Siguiendo el ejemplo anterior:

    #: presentacion.php:36
    msgid “Hello World”
    msgstr “Hola Mundo”

  • .mo: fichero binario que entienden las máquinas generado a partir del .po.

Expliquemos el proceso paso por paso.

  1. Instalamos xlanguage y configuramos todos los idiomas en los que queremos que funcione nuestro blog. Mi recomendación es que usemos el código ISO3166 para identificar a cada uno.
  2. Tendremos que repasar todos nuestros plugins y el theme para identificar dónde se generan cadenas de texto y comprobar que se usa o la función _e() o __(). WordPress usa la librería de internacionalización (i18n) gettext. Si dentro de una cadena de texto aparece una variable, no podemos usar sin más _e(“Tenemos $num amigos”); pero sí printf(__(“Tenemos %d amigos.”), $num);
  3. Después de marcar todas las cadenas a traducir, ahora toca generar el .pot con ellas. Para ello, nos bajamos el script add-textdomain.php de WordPress. Lo lanzamos de la siguiente manera:
    php add-textdomain.php -i domain phpfile.php

    El domain marca el ámbito de lo que traducimos. Podemos poner default, por ejemplo, para el theme y el nombre del plugin para cada uno de ellos. Luego generamos el .pot mediante makepot.php:

    php makepot.php wp-theme el-directorio-del-theme languages/traduccion.pot

    En el caso de un plugin ponemos wp-plugin en vez de wp-theme. Para usar todas estas herramientas tenemos que tener el paquete gettext en nuestro servidor.

  4. Para optener el .mo (fichero binario que entienden las máquinas) del .po (fichero con texto que entendemos las personas), lanzamos el siguiente conjuro desde bash:
    msgfmt fichero_idioma.pot -o fichero_idioma.mo

  5. Ahora sólo falta que el theme sepa dónde encontrar esos ficheros .mo. Para ello usaremos el fichero de funciones de los themes de wordpress: functions.php. Allí agregaremos lo siguiente, teniendo en cuenta que hemos dejado los ficheros .mo en la carpeta languages y que el domain del theme es default:

    function theme_init(){
    load_theme_textdomain(‘default’, get_template_directory() . ‘/languages’);
    }

    Si además queremos traducir algún plugin:

    function theme_init(){
    load_theme_textdomain(‘default’, get_template_directory() . ‘/languages’);
    //Aquí ponemos el plugin cuyo domain es plugin1:
    load_theme_textdomain(‘plugin1′, get_template_directory() . ‘/languages/plugin1′);
    }

  6. Para introducir contenidos, en el título, las categorías y las etiquetas, se separa cada idioma con un carácter definido en la parte de administración de xlanguage. Por defecto se usa el carácter | (el pipe que está en la tecla del uno y la exclamación). Por ejemplo, publicaríamos “Etiketak|Etiquetas” para crear un contenido cuyo título en euskera sería Etiketak y Etiquetas en castellano (siempre se usa el orden de creación de los idiomas). En los contenidos, en el editor de WordPress tenemos unos botones para marcar el idioma de cada parte. Y si lo queremos manejar desde la parte html, sólo tendremos que marcarlo con la etiqueta <span lang=”idioma”></span> (una etiqueta estandarizada por el W3C)

Enlaces de interés:

Imagen de ButterflySha (vía Flickr). Licencia CC-by

Jugando con mi primer twitterbot

a las 23:22

foto de un robotRetomando las razones que provocaron que empezara con este blog (es decir, el “bicheo”), me he puesto a probar el twitterbot que ha hecho Saghul en python (debo reconocer que estoy pez en este lenguaje… pero el script es bastante sencillote).

El androide de cerebro positrónico se encarga de buscar, cada cierto tiempo, todo lo que se haya tuiteado (la de verbos que estamos incluyendo en nuestro vocabulario “gracias” a las redes sociales e Internet…) con una cierta etiqueta, para retuitearlo después (el retuiteador que lo retuitee, buen retuiteador será). Es decir, es una especie de Twubs, pero multihashtag. La única finalidad es enterarme de qué se está diciendo sobre #redessociales, #socialnetworks, #redsocial, #redes_sociales, … Pero no me apetece mucho suscribirme al RSS de todas estas etiquetas, porque mi agregador terminaría explotando. Prefiero ir procesando de vez en cuando las pildoritas pero sin agobiarme con el Síndrome de Diógenes Digital. Así ha nacido @red_social, que con pocos días de existencia virtual, ya tiene más de 80 followers.

Lo más interesante del experimento está siendo ver cómo se comporta el público anglosajón frente a Twitter. Me ha sorprendido mucho, por ejemplo, ver que es una práctica bastante habitual agradecer los RT. Y por supuesto, lo activos que están los spammers. A los pocos minutos de crear la cuenta (sin aún usarla), ya tenía unos 10 followers.

Las instrucciones de instalación están en la página de Saghul. Le he hecho unas pequeñas modificaciones:

  • Poner el RT delante de cada mensaje, para que se vea claramente que es una redifusión y no una conversación con los usuarios.
  • Poder introducir como parámetro el idioma, adaptando así la búsqueda al lenguaje en el que esté la etiqueta.
  • Que no retuitee los mensajes que contienen su propio nombre de usuario, dado que serán respuestas o cosas que ya se han publicado anteriormente.

Si alguien quiere descargarlo, que me diga y se lo paso.

Esto de los robots tiene hasta su gracia. Aún recuerdo las risas que nos hicimos cuando Carlos nos animó a twittear que estábamos en la T4 durante el último iCities. Para entender el chiste, lo mejor es que hagáis la prueba ;-) .

Y ya que estamos en fregaos de microblogging, aprovecho la jugada para comentar otra herramienta que puede ser muy interesante para mantenerse a la escucha de quién nos retuitea o quién está publicando nuestros enlaces. Es ya más que evidente que las conversaciones se han desplazado de los blogs a las redes sociales. Casi me atrevería a decir que un post tiene ya tantas vidas como sitios a los que salte el enlace. Pues gracias a topsy podremos saber cuál es el recorrido dentro de Twitter. Aquí, por ejemplo, se puede ver en cuántos twitts ha aparecido una entrada en concreto. Un excelente buscador para combinar con el nativo de Twitter y llevar a cabo el primer paso de la receta de Alorza: escuchar, enlazar, compartir.

Foto de Warm ‘n Fuzzy (CC-by-nc-nd)

El reto de las 48 horas

a las 12:15

Dos días con sus noches. 5 desarrolladores. Una aplicación web totalmente funcional. Ese es el reto que se han planteado los chicos y chica de theCodeFarm, una empresa de la tierra formada por jóvenes emprendedores, que han lanzado un órdago en toda regla. Viéndoles, una encuentra respuesta a la cuestión de si realmente se innova y crea en la web social.

¡Mucha suerte! Estaremos alerta de cuál es el producto final obtenido el domingo.

Cocinando la caché de Firefox

a las 21:13

cocina
Bienvenidos a la cocina de Loretahur. Hoy nos ponemos entre fogones para preparar la siguiente receta: cómo descargar canciones embebidas en páginas web. Y con lo de embebidas no quiero decir que lleven una copa de más ;-)

Ingredientes:
- Imprescindible usar Firefox para la cocción
- 1/2 Kilo de caché
- Unas hojitas de CacheViewer
- Aliñar con Video DownloadHelper

The Killers acaba de lanzar nuevo single y lo ha puesto en su página web para que se pueda escuchar. Pero, ¿y cómo lo descargamos? Fácil y sencillo. Nuestro navegador tiene que almacenarlo temporalmente para luego reproducirlo. La carpeta en la que se guardan esos archivos temporales resultantes de la navegación, para que sea más rápido si volvemos a recargar las páginas, es la caché. Para verlo más claro: cuando abrimos un vídeo en youtube vemos cómo en la barra de progreso hay dos avances: uno más oscuro que nos marca por dónde vamos en la reproducción y otro más claro que nos indica el contenido descargado a la caché.

Para acceder en firefox, abrimos una nueva pestaña mientras estamos escuchando la canción y escribimos lo siguiente en la barra de direcciones:

about:cache?device=disk

De esta forma se listarán todos los ficheros almacenados. Pero si no nos queremos dejar los ojos buscando lo que nos interesa, tenemos una interesante extensión para firefox que nos muestra los contenidos de forma más visual y amigable: CacheViewer. Con ella podremos incluso previsualizar esos contenidos y hacer búsquedas. Sacrificamos la limpieza de firefox (contra menos extensiones tenga instaladas, más ligerito irá) por la comodidad.

También existe un complemento que hace búsquedas de elementos multimedia en las páginas por las que navegamos, para posibilitarnos la descarga. Se trata de Video DownloadHelper. Con esta utilidad incluso podremos hacer conversiones de formatos en el momento (por ejemplo, pasar los famosos .flv de youtube a .avi).

En esta receta me he centrado en las canciones, pero podemos cocinar otros muchos alimentos: ficheros flash, vídeos quicktime, …

¡Bon appétit!

El mundo en un lápiz

a las 18:00

En estos tiempos que corren cada vez se valora más lo pequeño (menos en ciertos aspectos… lo siento chicos :P ). Y los aparatos electrónicos no son una excepción. Los móviles, los portátiles, y cómo no: los dispositivos de almacenamiento de datos.

Aún tengo guardado mi primer disquete de 8 pulgadas y del tamaño casi de un bloc de notas. Después de eso llegaron los revolucionarios disquetes de 3.5″ (al principio todos de un monótono color negro y después como las flores: de todos los colores).


disquete

Pero como a todo cerdo le llega su San Martín, el disquete se está extinguiendo y está siendo reemplazado por los pendrives a.k.a. llaveros, lápices, USB drives o memorias flash, pasando de los 160 Kb de antaño a los 2 Gb de capacidad actuales.

Así que aquí va una lista con programas portables que podemos utilizar desde nuestro pendrive. De esta forma, vayamos donde vayamos, además de llevar nuestros documentos también tendremos nuestros programas favoritos para abrirlos. Porque, ¿cuántas veces os ha pasado que al ir a instalar un programa en el trabajo, al no tener privilegios de administrador, no os deja? Pues esta es la solución.

Portable Firefox 1.5.0.3 Released

Mi navegador por excelencia ya puede ser trasladado de un lado a otro manteniendo mis marcadores favoritos, las contraseñas o las extensiones.

Portable Thunderbird 1.5.0.2 Released
Para leer y llevar el correo hasta el infinito y más allá. Así contarás con tus libretas de direcciones, tus extensiones y la configuración de tus cuentas.

Portable VLC Media Player 0.8.5 Released
Para poder reproducir todo lo que quieras donde quieras (parece una frase sacada de un anuncio de champú).

Portable Gaim 1.5
Que no te dejan chatear en el trabajo (cosa normal, porque esas cosas no se hacen!!), pues ya tienes tu Gaim de bolsillo.

Portable Gimp 2.2.11
Para diseñadores gráficos natos, que lo mismo te hacen un logotipo en casa, que te lo hacen en una biblioteca, tenemos el Gimp portable. Bueno, bonito y barato!!

Portable Open Office 2.0.2
Versión especialmente adaptada de la suite ofimática, destinada a ser ejecutada desde llaveros USB. Ideal para llevar contigo tu aplicación ofimática preferida junto a tus documentos personales.

¡Si hasta podemos hacer funcionar un Mac OS Classic 7.0.1 desde un lápiz con el Mac-on-Stick!

Y muchísimas aplicaciones más que podréis encontrar en los siguientes enlaces:
The Portable Freeware Collection
PortableApps
Aplicaciones portables en la Wikipedia
USB Apps
Tiny Apps
Usb applications – Kitizas

  • 13 Comentarios
  • Categorías: Software
  • Categorías

    Archivo