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.


2 comentarios en «Como contabilizar las líneas sin traducir (archivos .po) de tu proyecto Launchpad»

  1. Pingback: Tivion 0.0.4 “Lepiron” | Shakaran

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.