Django Parler throwing 404 error when switching language

76 views
Skip to first unread message

nonw...@gmail.com

unread,
Jan 19, 2022, 6:10:04 AM1/19/22
to Django users
I created a website that will be translated into different languages using the Django Parler package, my default language is English, but I was told by my client to make the website load French by default and then a user can switch to English if he or she wants. I was able to make the site load French by default by creating a middleware and adding it to settings, but my challenge is this, I can't switch the site to English, If I do it gives me a 404 error here is the link to the site site https://ambassadedusaintesprit.com

Middleware
from django.conf import settings
from django.utils import translation

class ForceLangMiddleware(object):
   

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        language_code = 'fr'
        translation.activate(language_code)
        response = self.get_response(request)
        translation.deactivate()
        return response

My Settings
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'ambassade_app.middleware.ForceLangMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
   
]
LANGUAGE_CODE = 'en'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

LANGUAGES = (
    ('fr', _('French')),
    ('en', _('English')),
   
)

PARLER_LANGUAGES = {
    None: (
        {'code': 'fr',},
        {'code': 'en',},
    ),
    'default': {
        'fallback': ['fr',],            
        'hide_untranslated': False,  

}
}

PARLER_DEFAULT_LANGUAGE_CODE = 'fr'

base.html
<form id="formLang" action="{% url 'set_language' %}" class="form-inline" method="post">
   {% csrf_token %}
   <input name="next" id="next" type="hidden" value="{{ redirect_to }}">
   <select id="selectLang" name="language">
      {% get_current_language as LANGUAGE_CODE %}
      {% get_available_languages as LANGUAGES %}
      {% get_language_info_list for LANGUAGES as languages %}
      {% for language in languages %}
         <option value="{{ language.code }}" {% if language.code == LANGUAGE_CODE %} selected {% endif %} >
            {{ language.name_local }} ({{ language.code }})
         </option>
      {% endfor %}
   </select>
                                                   
                                                   
   <input type="submit" value="Go" class="lang-btn">
</form>


     


 
Reply all
Reply to author
Forward
0 new messages