django4 中英文切换,不使用翻译,用户自己配置中英文
时间: 2024-05-07 07:18:37 浏览: 9
实现中英文切换的方法有很多,下面提供一种简单的思路:
1. 在 `settings.py` 中设置语言选项,例如:
```python
LANGUAGES = [
('en', 'English'),
('zh-hans', '简体中文'),
]
LANGUAGE_CODE = 'en' # 默认语言为英语
```
2. 在模板中使用 `trans` 标签,例如:
```html
{% load i18n %}
<h1>{% trans "Hello, world!" %}</h1>
```
在模板中使用 `blocktrans` 标签,例如:
```html
{% load i18n %}
{% blocktrans %}
Today is {{ today }}, and it's a beautiful day.
{% endblocktrans %}
```
3. 在视图中将用户选择的语言保存在 session 中,例如:
```python
def set_language(request):
language = request.GET.get('language')
if language and language in [code for code, _ in settings.LANGUAGES]:
request.session['django_language'] = language
return redirect(request.META.get('HTTP_REFERER', '/'))
```
4. 在中间件中根据 session 中的语言选项设置当前语言,例如:
```python
class LanguageMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
language = request.session.get('django_language')
if language:
translation.activate(language)
request.LANGUAGE_CODE = language
response = self.get_response(request)
return response
```
5. 在模板中添加语言切换链接,例如:
```html
{% load i18n %}
<a href="?language=en">{% trans "English" %}</a>
<a href="?language=zh-hans">{% trans "简体中文" %}</a>
```
以上是一种简单的实现思路,具体实现方式还需要根据具体情况进行调整。