Slugger solves the seemingly simple problem of turning a title into an url frienly slug:
>>> from slugger import Slugger
>>> s = Slugger(lang='en_US')
>>> s.sluggify(u'Headless-body-in-topless-bar')
u'headless-body-in-topless-bar'
Unlike many other slugging libraries, it also handles language-specific
ascii-translation. Compare the ä
, ö
and ü
in German
>>> s = Slugger(lang='de_DE')
>>> s.sluggify(u'Türöffner')
u'tueroeffner'
against Swedish:
>>> s = Slugger(lang='sv_SE')
>>> s.sluggify(u'Färsk Ägg')
u'farsk-agg'
Criterias of what makes a good slug vary, common requirements are a maximum length and a reduced character set that is highly URL-friendly.
To generate high-quality slugs, Slugger leverages the locale information from glibc (included in the package), the unihandecode library and some hand-written replacements.
>>> s = Slugger('en_US')
>>> s.sluggify(u'Bed & Breakfast')
u'bed-and-breakfast'
>>> s.sluggify(u'Folding@Home')
u'foldingathome'
These are also language-aware:
>>> s = Slugger('fr_FR') >>> s.sluggify(u'Toi & Moi') u'toi-et-moi'
If you find a badly generated slug, please report on github. Also, any help in implementing better support for more languages is appreciated; see the official documentation on how to get involved in development.