在Django中切换语言,你可以使用Django的国际化(i18n)支持。以下是实现中英文切换的步骤:
配置语言文件
在你的Django项目的
settings.py
文件中,设置LANGUAGE_CODE
为默认语言和TIME_ZONE
为默认时区。然后,在INSTALLED_APPS
中确保'django.contrib.localflavor'
和'django.contrib.redirects'
已经安装。添加语言
在同一个
settings.py
文件中,设置LANGUAGES
元组来指定你想要支持的语言。
LANGUAGES = (
('en', ('English')),
('zh-hans', ('Simplified Chinese')),
)
设置中间件
在
MIDDLEWARE
或MIDDLEWARE_CLASSES
中添加django.middleware.locale.LocaleMiddleware
。
MIDDLEWARE = [
# ...
'django.middleware.locale.LocaleMiddleware',
# ...
]
URL配置
为语言切换创建一个URL。用户可以通过访问这个URL来切换语言。
from django.conf.urls import url
from django.utils.translation import activate
urlpatterns = [
# ...
url(r'^i18n/', lambda x: activate(x['language_code']), name='set_language'),
# ...
]
模板中的语言切换
在模板中,你可以使用
{% trans %}
标签来标记需要翻译的文本,同时使用{% url 'set_language' %}
来提供一个链接,用户可以点击来切换语言。
<a href="{% url 'set_language' language_code='en' %}">English</a>
<a href="{% url 'set_language' language_code='zh-hans' %}">中文简体</a>
静态文件的语言目录
如果你有静态文件(如CSS、JavaScript)需要根据语言进行切换,你可以将这些文件放在对应的语言目录下,例如:
/static/
css/
base.css
zh-hans/
css/
base.css
en/
css/
base.css
动态切换语言
如果你想要在视图中动态切换语言,可以使用
django.utils.translation.activate
函数。
from django.utils.translation import activate
def my_view(request):
language = request.GET.get('language', request.LANGUAGE_CODE) # 获取GET参数或使用当前语言
activate(language) # 激活语言
# ...
确保在视图或模板中使用ugettext
或gettext
来翻译文本。
from django.utils.translation import gettext as _
_("This is a translatable string.")
以上步骤提供了一个基本的方法来在Django中实现语言的切换。记得在实际部署时,考虑用户的浏览器设置、cookie等因素来预设语言。