GregC
GregC

Reputation: 355

Django translation returns page not found (404) for all secondary languages

I am using Django 3.0.4. I am trying to setup multiple languages in my project but for some reason only the default language is accessible. Here's my setup:

settings.py:

MIDDLEWARE = [
    ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]

LANGUAGES = (
    ('en', _('English')),
    ('el', _('Greek')),
)

LANGUAGE_CODE = 'en'

USE_I18N = True

USE_L10N = False

USE_TZ = True

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

urls.py:

from django.conf.urls.i18n import i18n_patterns

urlpatterns = [
    path('i18n/', include('django.conf.urls.i18n')),
    path('superadmin/', admin.site.urls),
]

# Enable debug toolbar
if settings.DEBUG:
    import debug_toolbar
    urlpatterns = [
        path('__debug__/', include(debug_toolbar.urls)),
    ] + urlpatterns

urlpatterns += i18n_patterns(
    path(
        'dashboard/',
        include('fusers.dashboard_urls'),
        name="usersDashboard"
    ),
)

And the result is that I cannot access the dashboard/ without the default language as a prefix:

/en/dashboard/  --OK
/dashboard/     --404
/el/dashboard/  --404

Upvotes: 2

Views: 967

Answers (1)

GregC
GregC

Reputation: 355

It was my bad. I have multiple settings files for Development and Production and I forgot to include 'django.middleware.locale.LocaleMiddleware' in the Dev settings.

Upvotes: 2

Related Questions