Skip to main content

Reusable Django app for dynamic multilingual texts with template tags.

Project description

Django DynamicTexts

Django DynamicTexts is a reusable Django library for dynamically storing and displaying texts (with a unique key, title, and content) with full multilingual (i18n) support. It is ideal for project localization, content management, and SEO-friendly pages.


Features

  • Store texts with a unique key, title, and content.
  • Full translation support (e.g., for English and Latvian) using django-modeltranslation.
  • Easy usage in Django templates via custom template tags.
  • Content editing via the Django admin interface.

Installation

  1. Add the app and modeltranslation to INSTALLED_APPS:
    INSTALLED_APPS = [
        ...
        'modeltranslation',
        'texts',
    ]
    
  2. Configure languages:
    LANGUAGES = [
        ('en', 'English'),
        ('lv', 'Latviešu'),
    ]
    MODELTRANSLATION_DEFAULT_LANGUAGE = 'en'
    MODELTRANSLATION_LANGUAGES = ('en', 'lv')
    ENABLE_DYNAMIC_TEXT_TRANSLATIONS = True
    USE_I18N = True
    MIDDLEWARE = [
        ...
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.locale.LocaleMiddleware',
        'django.middleware.common.CommonMiddleware',
        ...
    ]
    
  3. Run migrations:
    python manage.py makemigrations texts
    python manage.py migrate
    
  4. Install dependencies:
    pip install django-modeltranslation
    

Usage

  1. Add/edit texts in the admin interface (/admin/), filling in all required translation fields.
  2. Load template tags in your template:
    {% load dynamictexts_tags %}
    
  3. Display texts in your template:
    <h1>{% get_title "about-us" %}</h1>
    <p>{% get_content "about-us" %}</p>
    
    • The correct translation will be shown automatically based on the active language.

Language Switching

  • Use Django's i18n set_language view or another language switching mechanism.
  • Example language switcher form in a template:
    <form action="/i18n/setlang/" method="post">{% csrf_token %}
        <input name="next" type="hidden" value="{{ request.path }}">
        <select name="language">
            <option value="en">English</option>
            <option value="lv">Latviešu</option>
        </select>
        <input type="submit" value="Change language">
    </form>
    <p>Active language: {{ LANGUAGE_CODE }}</p>
    

Best Practices

  • Always fill in all translation fields in the admin interface.
  • Ensure LocaleMiddleware is in the correct place in the MIDDLEWARE list.
  • Use template tags only after {% load dynamictexts_tags %}.
  • If you add new languages, update LANGUAGES and run migrations.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_dynamictexts-0.2.1.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_dynamictexts-0.2.1-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file django_dynamictexts-0.2.1.tar.gz.

File metadata

  • Download URL: django_dynamictexts-0.2.1.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for django_dynamictexts-0.2.1.tar.gz
Algorithm Hash digest
SHA256 ba0a3d22eebc1cbd9c26b273bd6668dafacdb02569f900aa7d45aba7409eaf98
MD5 b3fb2002ba8ec0cf1c81e1bb94fba635
BLAKE2b-256 05dff71878a16d1113261465b9f3805979b5553a2348cd6877783e7d6d4e057b

See more details on using hashes here.

File details

Details for the file django_dynamictexts-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_dynamictexts-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ddccea167c151f9077877b5a71eb50ba2db883181afff432b79e8d44e52a4301
MD5 8ae6d64801651b85f62a3b4b5a34ff70
BLAKE2b-256 0267c45e2be0bd2ccda2b7d403abf350e007030a94b3a5b32efcc9bd362925cd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page