{"id":23672,"library":"enmerkar-underscore","title":"enmerkar-underscore","description":"A Django extension that implements an underscore extractor for django-babel, enabling translation of JavaScript underscore templates. Version 2.4.0 supports Django 5.2 and Python 3.9+. Released as needed by the Open edX project.","status":"active","version":"2.4.0","language":"python","source_language":"en","source_url":"https://github.com/openedx/enmerkar-underscore","tags":["django","babel","i18n","underscore","translation","extractor"],"install":[{"cmd":"pip install enmerkar-underscore","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Required for Babel extraction integration.","package":"django-babel","optional":false},{"reason":"Required as the web framework.","package":"Django","optional":false}],"imports":[{"note":"enmerkar-underscore is a separate package; do not confuse with enmerkar.","wrong":"from enmerkar import Extractor","symbol":"Extractor","correct":"from enmerkar_underscore.extract import Extractor"}],"quickstart":{"code":"# In your Django app's Babel extraction config (setup.cfg or pyproject.toml):\n# [extractors]\n# underscore = enmerkar_underscore.extract:Extractor\nimport os\nos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')\nfrom enmerkar_underscore.extract import Extractor\nextractor = Extractor(\"underscore\", [], {})\n# Extractor is used by django-babel during extraction.","lang":"python","description":"Minimal setup to use the extractor with django-babel."},"warnings":[{"fix":"Use Python 3.9 or higher.","message":"Dropped Python 3.8 support in version 2.4.0. Upgrade to Python 3.9+.","severity":"breaking","affected_versions":">=2.4.0"},{"fix":"Ensure you install and import from 'enmerkar_underscore' not 'enmerkar'.","message":"Do not confuse with 'enmerkar' (which extracts Django templates). enmerkar-underscore is for underscore.js templates only.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run: pip install enmerkar-underscore","cause":"Missing installation or wrong package name.","error":"ModuleNotFoundError: No module named 'enmerkar_underscore'"},{"fix":"Change import to: from enmerkar_underscore.extract import Extractor","cause":"Importing from the wrong package 'enmerkar' instead of 'enmerkar_underscore'.","error":"AttributeError: module 'enmerkar' has no attribute 'underscore'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}