Django es el entorno de desarrollo web para perfeccionistas con límites de tiempo

Slughifi: slugs a prueba de caracteres internacionales

Slughifi es un código que mejora las características de la función slugify de django.template.defaultfilters. Soporta muchos más caracteres internacionales con todo tipo de acentuación. Mientras que slugify elimina todos estos caracteres al generar el slug, slughifi los reemplaza por caracteres no acentuados haciendo honor a su nombre al proporcionar slugs altamente fieles a la cadena sobre la que se aplica. Fue presentado hace bastante tiempo en este hilo de la lista de correo django-users y dí con él por casualidad. Desde entonces no he dejado de utilizarlo en mis proyectos. Slughifi parece no estar disponible en la página original en la que se encontraba. Sin embargo sí lo está en el trac de django-fr y también lo podéis bajar directamente desde aquí.

Usar slughifi es realmente sencillo. Basta con hacer un import y usar la función:

from slughifi import slughifi

a = slughifi('Esta es la página web de Django en español')
# a tomará el valor 'esta-es-la-pagina-web-de-django-en-espanol'

Publicado por Antonio Melé el Martes 10 de Marzo de 2009 Compártelo: Facebook: Twitter: | Categorías: aplicaciones, descargas, internacionalización, snippets

Entradas similares

Editar y traducir inline en Django fácilmente

Desde Yaco nos traen las aplicaciones pluggables django-inlinetrans y django-inplaceedit que permiten editar traducciones de templates y objetos de nuestros modelos desde el frontend ...


Idiomas en nuestras URLs gracias a django-localeurl

django-localeurl es una aplicación que permite el uso de códigos de idiomas en las URLs de nuestro proyecto. Esto trae la ventaja de que ...


 
EveryBlock libera su código fuente

Hace un par de días se ha liberado el código de EveryBlock bajo licencia GPL. EveryBlock ofrece noticias e información local sobre barrios de ...


Traducciones de modelos con django-transmeta

django-transmeta es una aplicación reusable que nos permite añadir traducciones a los campos de nuestros modelos. Es muy fácil de utilizar ya que crea ...


 
 

4 comentarios:

El Domingo 15 de Marzo de 2009 Andra dijo:

¡Muchas gracias por compartirlo! Esto me va a venir de perlas :)

El Lunes 23 de Marzo de 2009 Hugo Pineda dijo:

pfff.. ni un brillo la librería. No le veo la utilidad.

El Lunes 23 de Marzo de 2009 Antonio Melé dijo:

Hugo, resulta útil para generar slugs automáticamente de forma transparente para tus usuarios. Los slugs los puedes utilizar por ejemplo en las URLs de tu sitio web para mejorar la optimización para buscadores.

Si por ejemplo tienes un artículo titulado "Django en español" podrías tener una URL del tipo miservidor.com/articulo/django-en-espanol/ en lugar de una URL tipo miservidor.com/historia/32432/

El Jueves 24 de Febrero de 2011 Fonso dijo:
Como curiosidad, yo utilizaba lo siguiente, y tenía resultados equivalente para el alfabeto español (nunca lo probé en otros): def strip_accents(value, encoding="utf-8"): """Strips the accents from accented characters i.e. ``ñ`` (n tilde; gets converted to ``n``, ``ä`` (a umlaut) to ``a``, etc. Based on code by Aaron Bentley at http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/251871 """ if not type(value) in (unicode, str): return value if type(value) is not unicode: value = value.decode(encoding) # additional transliterations not covered by the normalization, AFAICT :) transliterations = {u'€':u'EUR',} for k, v in transliterations.iteritems(): value = value.replace(k, v) return unicodedata.normalize('NFKD', value).encode('ascii', 'ignore') @register.filter(name="slugify") def uslugify(value, encoding="utf-8"): """ Politically correct version of ``slugify``. Uses strip_accents """ return defaultfilters.slugify(strip_accents(value, encoding))

Escribe un comentario: