Хорошо. Вместо использования Javascript (так как Sparky выше советовал против этого), я сделал следующее:
Шаг 1: В моем views.py я создал функцию для возврата правильного языка сценарий, основанный на заданном коде языка:
def getLangScript(language_code='en'):
if language_code == 'ru':
lang_script = "https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/localization/messages_ru.min.js"
elif language_code == 'fr':
lang_script = "https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/localization/messages_fr.min.js"
elif language_code == 'es':
lang_script = "https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/localization/messages_es.min.js"
elif language_code == 'he':
lang_script = "https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/localization/messages_he.min.js"
else:
lang_script = ""
return lang_script
Шаг 2: Я изменил свои представления, чтобы принять код языка в качестве параметра, с Engli sh по умолчанию в случае отсутствия параметр передан. Я вызываю указанную выше функцию для получения правильного сценария, а затем передаю этот сценарий в контекст, чтобы у меня был доступ к нему в моем шаблоне:
def post_list(request, language_code='en'):
.
.
.
lang_script = getLangScript(language_code)
return render(request, 'template.html', {'form': form, 'lang_script': lang_script})
Шаг 3: Я изменил Мой путь в urls.py принять параметр URL, который будет код языка (то есть 'en' для Engli sh):
urlpatterns = [
.
.
.
path('test/<str:language_code>/', views.post_list, name='post_list'),
]
Шаг 4: В моем шаблон, я добавил <script src="{{ lang_script }}"></script>
, где я хотел, чтобы скрипт загружался, чтобы мои проверки появлялись на другом языке (у меня есть доступ к нему из моего контекста).
Шаг 5: (Вот самая интересная часть!) В элементе ввода с именем «next» я передал URL-адрес, который я хочу перенаправить на параметр WITH language.code. Основываясь на этом параметре, который будет передан представлению, представление вызовет мою функцию getLangScript, выяснит, какой скрипт загружать, и затем передаст этот скрипт в шаблон как переменную контекста. См. Ниже.
<div class="language-buttons">
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<form action="{% url 'set_language' %}" method="post" id="form_{{ language.code }}" style="display:inline!important;">
{% csrf_token %}
<input name="next" type="hidden" value="{% url 'post_list' language.code%}" />
<input name="language" type="hidden" value="{{ language.code }}" />
</form>
<a><button class="btn-outline-secondary" type="submit" form="form_{{ language.code }}" value="Submit">{{ language.name_local}} </button></a>
{% endfor %}
</div>
Таким образом, когда пользователь нажимает кнопку, в DOM будет загружен соответствующий сценарий, и сообщения проверки из плагина jquery будут отображаться на правильном языке! !
Если у кого-то есть дополнительные комментарии о том, был ли это мудрый способ сделать это или есть более эффективные способы, мне было бы интересно.