Slugger is slugging done right
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
ü in German
>>> s = Slugger(lang='de_DE') >>> s.sluggify(u'Türöffner') u'tueroeffner'
>>> 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.