Revival release — modernized for current Django/Python.
- Added support for Django 4.2 LTS, 5.2 LTS, and 6.0; Python 3.10 through 3.14.
- Fixed several long-standing compatibility breakages:
ugettext(removed in Django 4.0),django.core.urlresolvers(removed),allow_tags(ignored since Django 3.0 — the admin translations link was silently rendering as escaped text),__unicode__never called under Python 3. - Pinned
default_auto_fieldtoAutoFieldso Django 6.0's newBigAutoFielddefault doesn't force an unrequested PK migration on existing installs. - Swapped the
django-autoslugdependency for the maintaineddjango-easy-autoslugfork. - Migrated packaging from
setup.pytopyproject.toml, replaced Travis CI with GitHub Actions, and switched linting from flake8 to ruff. - Converted all documentation from reStructuredText to Markdown.
- Fixed a stale-cache bug: translating the slug's source field (e.g.
name) regenerated the slug translation row but left the old value in the per-field cache, soget_translation()kept returning the stale slug. - Fixed explicit slug translations being silently overwritten: calling
set_translation()on the slug field itself no longer triggers auto-slug regeneration — the explicitly-set value now wins. - Translation cache keys are now app-qualified (
app_label.modelinstead of the bare class name), so identically-named models in different apps can no longer collide. This changes the cache key format; pre-upgrade entries are simply never read again under the new keys and age out via the cache backend's normal eviction — no explicit flush is performed. translate()andset_translation()on an unsaved instance now raiseCanNotTranslatewith a clear message instead of a databaseIntegrityError.translate()/translations()no longer mutatetranslatable_fieldsto append thetranslatable_slug; the combined list is computed internally.Translatablenow usespkinstead of assuming anidattribute, so models with a custom-named integer primary key work.
- Removed support for Django 1.5 and 1.6 now klingon works from Django 1.7 version in advance
- Add translatable_slug and a painless integration with klingon + django-autoslug.