Locale y Unicode UTF-8 en Python; el Planeta en castellano

Planeta AsturLiNUX Pese a lo sencilla que resulta la idea del Planeta, montar uno y dejarlo a tu gusto puede resultar realmente complicado. Sin ir más lejos, el Planeta AsturLiNUX me ha llevado más de una semana de pruebas, y todavía tiene fallos que no se cómo arreglar.

Lo primero que notas cuando pruebas el Planeta es que está en inglés. Como el formato de la página se codifica mediante una plantilla, no resulta muy complicado traducirlo casi todo… ¿y las fechas? Las fechas se generan por el propio Planeta con Python, así que si quieres que tus fechas aparezcan traducidas, no te queda más remedio que ponerte a retocar el código (licencia tipo Python).

Para darle más emoción, si traduces las fechas, entonces «Saturday» se te convierte en «sábado», así que ese acento lo vas a tener que codificar en UTF-8, ya que sino el feed no se puede considerar válido. ¿Algo más? ¡Claro que si! Las fechas del feed no se pueden traducir, ya que tienen que seguir el formato de fecha RFC822, que obliga a que sean en inglés.

Con todo esto, no queda más remedio que ponerse a rebuscar en el código del Planeta, y aplicar los siguientes conocimientos básicos sobre Locale y Unicode UTF-8 en Python:

$ ~/> python
Python 2.3.4 (#2, Sep 24 2004, 08:39:09)
[GCC 3.3.4 (Debian 1:3.3.4-12)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> # Importo las bibliotecas que voy a utilizar:
... import time, locale
>>> # Utilizo el locale del sistema:
... locale.setlocale(locale.LC_ALL, '')
'es_ES@euro'
>>> # Codifico como UTF-8 la fecha actual:
... unicode(time.strftime("%a, %d %b %Y %H:%M:%S +0000",
... time.gmtime()),'iso-8859-15').encode('utf-8')
's\xc3\xa1b, 13 nov 2004 09:15:07 +0000'
>>> # Cambio el locale para fechas RFC822:
... locale.setlocale(locale.LC_ALL, 'C')
'C'
>>> # Codifico como UTF-8 la fecha actual, segun el RFC822:
... unicode(time.strftime("%a, %d %b %Y %H:%M:%S +0000",
... time.gmtime()),'iso-8859-15').encode('utf-8')
'Sat, 13 Nov 2004 09:16:44 +0000'

Todo esto lo he sacado de las siguientes páginas:

En cuanto a los problemas para los que no tengo solución, como el formato de los feeds es cualquier cosa menos estandar, es muy complicado juntar feeds de distintas procedencias y que el resultado sea una página o un feed de acuerdo a los estándares. Para rematar la faena, incluso hay feeds que están mal formados, con lo que automáticamente nuestro feed pasa a estar mal formado también… :-(

Como guinda, pese a que el CSS si es válido, el IE a 800×600 ha decidido que la barra del margen del menú queda mucho mejor tachando el menú que en el margen del mismo… ¡Vivan los estándares!

Deja un Comentario