我创建了一个网站,该网站将使用 Django Parler 包翻译成不同的语言,我的默认语言是英语,但我的客户告诉我让网站默认加载法语,然后用户可以切换到英语,如果他或她想要。
我可以通过创建中间件并将其添加到设置中来使站点默认加载法语,但我的挑战是,我无法将站点切换为英语,如果这样做会给我一个 404 错误,这里是链接到网站https://ambassadedusaintesprit.com
这是我的中间件
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
我的设置
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>
有什么我做错了吗?