Reputation: 6713
I use django to make 2 languages for a website
The url is http://127.0.0.1:8000/
no matter what language it is.
How can I do to make url like this :
http://127.0.0.1:8000/en/
for english website
http://127.0.0.1:8000/zh_tw/
for Chinese website
Please guide me! Thank you very much.
index/index2.html:
<script type="text/javascript">
function selectdo(obj) {
str="/i18n/setlang/";
myform = document.getElementById('testform');
myform.method = "POST";
myform.action = str;
myform.submit();
}
</script>
<form name="testform" id="testform" method='post'>
{% csrf_token %}
<select id="language" name="language" onchange="selectdo(this)">
<option value="1" >{% trans "Languages" %}</option>
{% for langname in LANGUAGES %}
<option value="{{ langname.0 }}" > {{ langname.1 }}</option>
{% endfor %}
</select>
</form>
views.py
def index(request):
responseContext = {'lang':request.LANGUAGE_CODE,}
return render(request, 'index/index2.html',responseContext)
update :
Thanks sajadkk for helping me
After setting the i18n_patterns
I edit my form (add a input hidden ) and success !!
Hope this will help other people.
<form name="testform" id="testform" method='post'>
{% csrf_token %}
<input name="next" type="hidden" value="/" />
<select id="language" name="language" onchange="selectdo(this)">
<option value="1" >{% trans "Languages" %}</option>
{% for langname in LANGUAGES %}
<option value="{{ langname.0 }}" > {{ langname.1 }}</option>
{% endfor %}
</select>
</form>
Upvotes: 1
Views: 2251
Reputation: 764
You can use i18n_patterns for that,
from django.conf.urls.i18n import i18n_patterns
urlpatterns += i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
#your urls
)
make sure to add django.middleware.locale.LocaleMiddleware
Upvotes: 1