Como contabilizar las líneas sin traducir (archivos .po) de tu proyecto Launchpad

Tower of babel

La internacionalización de un proyecto es algo importante y más cuando quieres difundir ampliamente tu programa y hace uso de muchos canales de televisión y radio de diferentes países y lenguas como es mi caso con Tivion.

Por tanto para ver el progreso de las traducciones se hace necesario fabricar algunas herramientas rápidas.

Supongamos que tenemos 10 o 15 archivos de traducción .po y queremos ver cuanto es el progreso en número de lineas sin traducir sobre el total disponible y sacar un porcentaje para tener una ligera idea del soporte de dicho idioma en nuestra aplicación.

Hasta ahora se podía ver eso en Launchpad, si tienes todos los lenguajes como tus “preferidos”. Podéis ver el ejemplo con Tivion en LaunchPad.

Y comprobareis que solo sale listado el idioma que tengáis puesto en la cuenta registrada con su porcentaje correspondiente. En mi caso para visualizar todos los idiomas, tuve que poner en mi perfil que hablaba todos. Esto es algo falso como se puede suponer, pero era la única manera hasta entonces que tenia para seguir los porcentajes de traducciones.

Así que he hecho un script rápido que me permite leer los archivos .po y mirar las cadenas traducidas y sin traducir y sacar una pequeña estadística para cada idioma. Con ello podre seguir mejor el proyecto y daros pistas de como van avanzando las traducciones.

El script por si a alguien le resulta útil es el siguiente (lo explico a continuación):

#!/usr/bin/env python
# -*- coding: utf-8 -*-

PATH_TO_PO = '../src/*.po'

import os
import glob
import re

print 'Translation file  %Ready  (Unfinished/Total)'
print '============================================'
for filename in glob.glob(PATH_TO_PO): 
    file = open(filename, 'r').read()
    unfinished = re.findall(r'msgstr ""\n\n', file, re.M)
    msg_lines  = re.findall(r'msgid', file, re.M)
    percent = (100 * len(unfinished))/len(msg_lines)
    finished = 100 - percent
    print "% 15s: % 4d%%    %d/%d" %(os.path.split(filename)[-1], finished, len(unfinished), len(msg_lines))

Podeis ejecutarlo con (suponiendo que llamáis al archivo po_percent.py):

$ python po_percent.py

Tendrá una salida como la siguiente:

$ python po_percent.py 
Translation file  %Ready  (Unfinished/Total)
============================================
         tlh.po:    2%    156/159
          ar.po:    3%    155/159
       en_AU.po:    2%    156/159
          el.po:    2%    156/159
          gl.po:   97%    5/159
          an.po:    3%    155/159
          es.po:  100%    0/162
          hr.po:   74%    42/159
          ru.po:   36%    105/162
          eu.po:    2%    156/159
          fr.po:   44%    92/162
          de.po:   43%    91/159
       zh_TW.po:    2%    156/159
       en_GB.po:    6%    152/161
          pt.po:   36%    105/162
          tr.po:   87%    22/162
          it.po:  100%    0/159
          sq.po:    2%    156/159
          bs.po:    2%    156/159
          ca.po:  100%    0/159
          af.po:    2%    156/159

Donde sale listado cada archivo .po el porcentaje traducido y el total de cadenas sin traducir sobre el total de cadenas.

El script es sencillo. En la línea 4 debes poner la ruta a los archivos .po. En mi caso esta en una carpeta script/ superior y debo ir a la carpeta /src de tivion, por eso tengo puesto ese path. El tuyo puede ser distinto.

Luego se importan las bibliotecas necesarias en la lineas 6, 7 y 8.
Se muestra un mensaje en las 10 y 11, y en la 12 hacemos un bucle para cada archivo .po que se encuentre en la ruta.

En la línea 13 leemos el fichero y utilizamos una expresiones regulares en las líneas 14 y 15 para obtener las líneas sin traducir y las totales.

Luego se calcula el porcentaje en la línea 15 y en la 18 se muestran los datos para cada archivo.

Vergüenza ajena

Bad windows

Es lo que se siente, cuando compañeros de facultad corren como chiquillos hambrientos por una copia y licencia gratuita de Windows 7 ofrecida por la propia universidad.

Me parece un gran error que desde la universidad se promueva el fomento de software privativo a través de este tipo de servicios.

La manera en la que actúa Microsoft ofreciendo estas licencias gratuitas, tiene una doble moral y es totalmente fraudulenta a largo plazo. Estos compañeros movidos por la gratuicidad no se dan cuenta que en un futuro, estarán ligados a usar productos y software de Windows, porque será en lo que hayan aprendido y desarrollado y eso puede estar bien cuando eres universitario, pero cuando trabajes en una empresa, la empresa tendrá muchísimos gastos en licencias porque sus desarrolladores únicamente conocen Windows porque fue lo que les inculcaron en la universidad.

¿Y porque me molesta esto? Porque es una pescadilla que se muerde la cola. Las administraciones no usan software libre porque no hay empresas de terceros que lo usen, y estas empresas no usan software libre porque no les llegan licenciados con conocimientos de software libre, pero la propia universidad no enseña software libre porque sus profesores no lo usan y Microsoft encima les regala licencias.

Podría hacerme el indiferente como muchos hacen y dicen “mientras no me obliguen a mí a usar Windows me parece bien“, pues no, yo no puedo tomar dicha postura, porque me afecta indirectamente aunque no quiera en la vida diaria.

Así que esa es mi vergüenza ajena.

Integrar Evince en Firefox para visualizar PDFs

PDF embedded

Normalmente al navegar, suele ser necesario visualizar algún documento que esta embebido en PDF dentro de una página web. En mi caso concreto, muchos de los temas y ejercicios de mi universidad son publicados en PDF y embebidos en Moodle. El problema es, que estos documentos embebidos no se muestran o bien buferizan el archivo para su descarga al menos en Ubuntu, cuando realmente lo que se necesita es verlo dentro de la página.

Hasta hace pocos días, me conformaba con poder descargar el pdf y seguir trabajando. Pero se puede solucionar de una manera bastante sencilla.

Primero necesitamos instalar el plugin mozplugger de Firefox:

$ sudo apt-get install mozplugger

Después abrimos el archivo /etc/mozpluggerrc para edición:

$ sudo gedit /etc/mozpluggerrc

Busca las líneas:

application/pdf: pdf: PDF file
application/x-pdf: pdf: PDF file
text/pdf: pdf: PDF file
text/x-pdf: pdf: PDF file

Y añade justo debajo de cada una:

repeat noisy swallow(evince) fill: evince "$file"

Debe quedarte algo así:

application/pdf:pdf:PDF file
    repeat noisy swallow(evince) fill: evince "$file"
application/x-pdf:pdf:PDF file
    repeat noisy swallow(evince) fill: evince "$file"
text/pdf:pdf:PDF file
    repeat noisy swallow(evince) fill: evince "$file"
text/x-pdf:pdf:PDF file
    repeat noisy swallow(evince) fill: evince "$file"

Si tenías abierto Firefox, reinicialo y listo, ya puedes visualizar tus pdf embebidos en webs.