Если это кому-то полезно, я решил эту проблему следующим образом, используя настраиваемый фильтр, включенный в файл, который я назвал language_selector.py.
В language_selector.py:
from django import template
register = template.Library()
@register.filter
def new_lang_code(current_lang_code):
if current_lang_code == ‘en’:
return ‘ja’
else:
return ‘en’
@register.filter
def new_lang_name(current_lang_code):
if current_lang_code == ‘en’:
return ‘日本語’
else:
return ‘English’
Создайте каталог тегов шаблона, содержащий указанный выше файл.
app/
__init__.py
models.py
templatetags/
__init__.py
language_selector.py
views.py
В шаблоне:
{% load language_selector %}
⋮
<form action=“{% url ‘set_language’ %}” method=“post” id=“form_{{ LANGUAGE_CODE|new_lang_code }}” >
{% csrf_token %}
<input name=“next” type=“hidden” value=“{{ redirect_to }}” />
<input name=“language” type=“hidden” value=“{{ LANGUAGE_CODE|new_lang_code }}” />
</form>
<button class=“btn btn-sm btn-outline-primary” type=“submit” form=“form_{{ LANGUAGE_CODE|new_lang_code }}” value=“Submit”>{{ LANGUAGE_CODE|new_lang_name }}</button>
Это работает и кажется простым и понятным способом реализации языка - кнопку переключения, но любые комментарии приветствуются, если есть более эффективные способы сделать это.