【问题标题】:Django 1.9 - url internationalizationDjango 1.9 - 网址国际化
【发布时间】:2016-03-28 06:57:12
【问题描述】:

我正在尝试在 Django 1.9 中设置一个项目,但我无法翻译主页。

当我的用户访问主页时,我想将他们重定向到 /en 或 /fr。

所以我检查了文档,但对我来说不是很清楚。

在我的 settings.py 中,我添加了这个(来自文档:url internationalization):

MIDDLEWARE_CLASSES += [
    'django.middleware.locale.LocaleMiddleware',
]

我也有这个:

LANGUAGE_CODE = 'en'
DEFAULT_LANGUAGE = 'en'
LANGUAGES = (
    ('en', 'English'),
    ('fr', 'Français'),
)
TIME_ZONE = 'America/Toronto'
USE_I18N = True
USE_L10N = True
USE_TZ = True

在我的 urls.py 中,我添加了:

# -*- coding: utf-8 -*-
from django.conf.urls import url
from django.utils.translation import ugettext_lazy as _
from django.views.generic.base import TemplateView

urlpatterns = [
    url(r'^$', TemplateView.as_view(template_name="index.html"), name='home'),
    url(_(r'^privacy-policy/$'), TemplateView.as_view(template_name="privacy-policy.html"), name='privacy-policy'),
]

当我运行服务器并转到 localhost:8000 时,没有重定向到 /en 或 /fr

我做错了什么?

【问题讨论】:

    标签: python django internationalization django-1.9


    【解决方案1】:

    我不太确定 django 1.9,但在 1.8 中,您需要以这种方式声明您的 i18n urlpatterns:

    # your_project/your_project/urls.py
    from django.conf.urls import include, url
    from django.contrib import admin
    from django.conf.urls.i18n import i18n_patterns
    
    urlpatterns += i18n_patterns(
        url(r'^test$', 'your_package.views.test', name='test'),
    )
    

    几个月前我们在我的公司博客上发了一篇文章,如果它可以帮助你http://www.metod.io/en/blog/2015/05/05/django-i18n-part-1/

    【讨论】:

    • 我知道,但在文档中,他们说:Deprecated since version 1.8:The prefix argument to i18n_patterns() has been deprecated and will not be supported in Django 1.10. Simply pass a list of django.conf.urls.url() instances instead.
    • @Kornikopic 在 Django >1.8 中:urlpatterns += i18n_patterns([url(r'^test$', 'your_package.views.test', name='test')])
    • @JamesFenwick 这正是我试图避免的,因为这个功能将在 Django 1.10 中被删除——我也试过了,但它不起作用。这是我得到的错误:AttributeError: 'list' object has no attribute 'regex'
    • 确实,您对 1.8 版弃用是正确的。但是在dev documentation 中,折旧警告似乎消失了,而且他们一直提到 i18n_patterns,所以我想知道哪个版本是正确的。无论如何,您是否尝试过在不使用通用 TemplateView 的情况下在 url 中调用您的视图?
    • 在 Django 1.10 中,该函数只会从 i18n_patterns(prefix, pattern_description, ...) 获取模式列表 i18n_patterns(*pattern_list)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 2011-02-02
    • 2021-12-01
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多