Django/Wagtail Language Redirection not working for 3 letter language code (kri)

57 views Asked by At

I have set up Wagtail (latest) for multi-language. Works fine with Portuguese (pt), but I'm trying to work for Krio, which has a 3 character language code: kri.

I have had to add Krio manally to LANG_INFO etc, and this works fine in the Wagtail UI, allowing me to set up alternate homepages for pt and kri, but when it comes to do the language redirecting, it fails to redirect to the kri translation.

Is it possible I have missed a setting? Can the redirection logic handle 3 letter codes?

My language settings:

WAGTAIL_I18N_ENABLED = True
USE_L10N = True

LANGUAGES = [
    ('en-GB', "English (Great Britain)"),
    ('en-US', "English (United States)"),
    ('en-CA', "English (Canada)"),
    ('pt', "Portuguese"),
    ('kri', "Krio (Sierra Leone Creole)"),
]

WAGTAIL_CONTENT_LANGUAGES = [
    ('en-GB', "English (British)"),
    ('kri', "Krio (Sierra Leone Creole)"),
    ('pt', "Portuguese"),
]

EXTRA_LANG_INFO = {
    "kri" : {
        'bidi': False,
        'code': 'kri',
        'name': 'Sierra Leonean Creole (Krio)',
        'name_local': 'Krio',
    },
}

LANG_INFO = dict(django.conf.locale.LANG_INFO, **EXTRA_LANG_INFO)
django.conf.locale.LANG_INFO = LANG_INFO

My middleware:

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.locale.LocaleMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
    "allauth.account.middleware.AccountMiddleware",
    "wagtail.contrib.redirects.middleware.RedirectMiddleware",
]

My urls patterns:

urlpatterns = [
    # path('django-admin/', admin.site.urls),
    path('cms/', include(wagtailadmin_urls)),
    path('documents/', include(wagtaildocs_urls)),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

# Translatable URLs
# These will be available under a language code prefix. For example /en/search/
urlpatterns += i18n_patterns(
    path("", include(wagtail_urls)),
    prefix_default_language=False,
)

enter image description here

/pt/ works as expected.

I've tried changing the slug on the kri page to "kri", but I'm guessing the code is still getting stripped out somewhere, as that still doesn't resolve.

I was expecting the kri page that I have created to resolve like the pt translation successfully does.

0

There are 0 answers