Django中的多语言路由

2023-04-11 00:00:00 django 路由 多语言

Django中的多语言路由是指在同一网站中使用多种语言,在URL中通过语言代码区分不同语言版本的方式。通常,一个多语言网站的URL会像这样:

https://www.pidancode.com/en/home/
https://www.pidancode.com/zh/home/

其中,enzh分别代表英语和中文。

使用Django的多语言路由功能,可以通过以下步骤实现:

  1. settings.py中设置语言列表和默认语言
LANGUAGE_CODE = 'en-us'

LANGUAGES = [
    ('en', 'English'),
    ('zh', '中文'),
]
  1. urls.py中使用django.conf.urls.i18n中的i18n_patterns()方法,为每种语言版本设置URL前缀
from django.conf.urls import url, include
from django.conf.urls.i18n import i18n_patterns

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]

urlpatterns += i18n_patterns(
    url(r'^$', views.home, name='home'),
    url(r'^about/$', views.about, name='about'),
)
  1. 在视图函数中使用django.utils.translation中的get_language()方法获取当前语言版本,并使用相应语言版本的翻译内容。
from django.utils.translation import gettext as _

def home(request):
    lang = get_language()
    if lang == 'zh':
        message = _('欢迎来到皮蛋编程!')
    else:
        message = _('Welcome to Pidan Coding!')
    return render(request, 'home.html', {'message': message})

以上就是使用Django的多语言路由功能的基本步骤。需要注意的是,为了方便管理翻译内容,通常会使用Django的国际化(i18n)功能,将翻译内容保存在.po文件中,并通过makemessagescompilemessages命令生成和编译语言文件。如果需要使用字符串作为范例,请在.po文件中添加相应的翻译内容。

相关文章