0

我创建了一个网站,该网站将使用 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>

有什么我做错了吗?

4

0 回答 0