django4 公司官网实现中英文切换
时间: 2023-12-31 08:06:32 浏览: 89
前端实现中英文翻译切换
要在Django4公司官网中实现中英文切换,可以考虑以下步骤:
1. 在Django4的models.py中为每个可翻译的字段添加翻译器。可以使用Django内置的翻译器,例如gettext_lazy。
```python
from django.db import models
from django.utils.translation import gettext_lazy as _
class Page(models.Model):
title_en = models.CharField(_('English Title'), max_length=255)
title_zh = models.CharField(_('Chinese Title'), max_length=255)
content_en = models.TextField(_('English Content'))
content_zh = models.TextField(_('Chinese Content'))
```
2. 在Django4的views.py中设置语言选项,并在模板上下文中传递翻译器。
```python
from django.utils.translation import gettext as _
def home(request):
lang = request.GET.get('lang', 'en')
if lang not in ['en', 'zh']:
lang = 'en'
# 设置当前语言
activate(lang)
# 传递翻译器到模板
context = {
'title': _(f'{lang.upper()} - Django4'),
'about_us': _(f'About Us ({lang.upper()})'),
'contact_us': _(f'Contact Us ({lang.upper()})'),
# ...
}
return render(request, 'home.html', context)
```
3. 在Django4的urls.py中添加语言前缀,并设置Django4的语言列表。
```python
from django.urls import path, include
from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import gettext_lazy as _
urlpatterns = [
# ...
]
urlpatterns += i18n_patterns(
path(_(''), home, name='home'),
path(_('about_us/'), about_us, name='about_us'),
path(_('contact_us/'), contact_us, name='contact_us'),
# ...
)
# 设置语言列表
LANGUAGES = [
('en', _('English')),
('zh', _('Chinese')),
]
urlpatterns += [
path('i18n/', include('django.conf.urls.i18n')),
]
```
4. 在Django4的模板中使用翻译器。
```html
{% load i18n %}
{% trans "Welcome to Django4" %}
<a href="{% url 'home' %}?lang=en">{% trans 'English' %}</a>
<a href="{% url 'home' %}?lang=zh">{% trans 'Chinese' %}</a>
<h1>{{ title }}</h1>
<a href="{% url 'about_us' %}">{{ about_us }}</a>
<a href="{% url 'contact_us' %}">{{ contact_us }}</a>
{% block content %}
<h2>{{ _('Latest News') }}</h2>
<ul>
{% for item in news %}
<li>{{ item.title }}</li>
{% endfor %}
</ul>
{% endblock %}
```
这样就可以在Django4公司官网中实现中英文切换了。
阅读全文