如何在 urls django i18n 中获取所有语言?
How to get all languages in urls django i18n?
我将 i18n 模式模块插入到我的网址中并添加了一些语言:
urlpatterns += i18n_patterns(
path('blog/', include('blog.urls')),
path('contacts/', include('contacts.urls')),
path('signup/', views.signup, name='signup'),
path('login/', auth_views.login, {'template_name': 'login.html'}, name='login'),
path('logout/', auth_views.logout, {'next_page': 'login'}, name='logout'),
)
LANGUAGES = (
('ru', 'Russian'),
('en', 'English'),
('es', 'Spain'),
)
但是我在 url 中看到的唯一语言是我在 LANGUAGE_CODE 参数中设置的语言,我拥有的唯一有效 link 是 link 和 language_code 参数。例如,现在我看到 'en',但我需要看到 'ru' 和 'es' 等等。我需要用它做什么才能在这里获得所有其他语言?如果我设置 prefix_default_language=False,那么我什至无法获得默认语言(以及所有其他语言)
当我尝试使用具有 set_language 表单的模板时,我遇到了 Page not found (404) 错误。例如,如果我有一个 language_code == en,当我尝试借助模板中的表单将其切换为 ru 语言时出现此错误(我有一个 link 之类的: 地址:port/ru/blog)。所以,看来我需要使用一个会更改默认语言的视图。
[name='home']
languages/
admin/
en/
^media\/(?P<path>.*)$
模板:
<form action="{% url 'set_language' %}" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
<select 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" />
</form>
我解决了。我在设置中有两个 MIDDLEWARE 对象。下一个 - 没有本地中间件。
我将 i18n 模式模块插入到我的网址中并添加了一些语言:
urlpatterns += i18n_patterns(
path('blog/', include('blog.urls')),
path('contacts/', include('contacts.urls')),
path('signup/', views.signup, name='signup'),
path('login/', auth_views.login, {'template_name': 'login.html'}, name='login'),
path('logout/', auth_views.logout, {'next_page': 'login'}, name='logout'),
)
LANGUAGES = (
('ru', 'Russian'),
('en', 'English'),
('es', 'Spain'),
)
但是我在 url 中看到的唯一语言是我在 LANGUAGE_CODE 参数中设置的语言,我拥有的唯一有效 link 是 link 和 language_code 参数。例如,现在我看到 'en',但我需要看到 'ru' 和 'es' 等等。我需要用它做什么才能在这里获得所有其他语言?如果我设置 prefix_default_language=False,那么我什至无法获得默认语言(以及所有其他语言) 当我尝试使用具有 set_language 表单的模板时,我遇到了 Page not found (404) 错误。例如,如果我有一个 language_code == en,当我尝试借助模板中的表单将其切换为 ru 语言时出现此错误(我有一个 link 之类的: 地址:port/ru/blog)。所以,看来我需要使用一个会更改默认语言的视图。
[name='home']
languages/
admin/
en/
^media\/(?P<path>.*)$
模板:
<form action="{% url 'set_language' %}" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
<select 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" />
</form>
我解决了。我在设置中有两个 MIDDLEWARE 对象。下一个 - 没有本地中间件。