【问题标题】:Django URL translation dependent on URL prefix language codeDjango URL 翻译依赖于 URL 前缀语言代码
【发布时间】:2020-12-26 12:19:47
【问题描述】:

我正在尝试使用 Django 翻译系统将 Django 词典应用程序国际化。我已经成功翻译了网站上的大部分内容,但在翻译 URL 模式时遇到了问题,管理页面除外。

我的目标是根据 URL 中的前缀语言代码更改内容和 URL 的语言。例如:

www.example.com/en/dictionary/define    // (content in English)
www.example.com/it/dizionario/definisci // (content in Italian)
www.example.com/fr/dictionnaire/définis // (content in French)
...

我检查了 Django 文档(https://docs.djangoproject.com/en/3.1/topics/i18n/translation/#translating-url-patterns),但发现它非常模糊,无法真正理解。

项目级urls.py

from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import gettext_lazy as _

from dictionary import views as dictionary_views

urlpatterns = [
    path('admin/', admin.site.urls),
]

dictionary_patterns = ([
    path('', dictionary_views.index, name='index'),
    path(_('define/'), dictionary_views.define, name='define'),
    path(_('define/<slug:headword_slug>'), dictionary_views.headword, name='headword'),
], 'dictionary')

urlpatterns += i18n_patterns(
    path(_('dictionary/'), include(dictionary_patterns, namespace='dictionary')),
)

至于应用特定的 urls.py,我不知道该做什么。我应该从上面导入dictionary_patterns 变量并将其添加到应用程序的urlpatterns 列表中吗?我应该完全删除应用的 urls.py 文件吗?

有人可以帮忙吗?

【问题讨论】:

    标签: python django translation django-urls django-i18n


    【解决方案1】:

    尝试在 urlpatterns 中添加导入包含,例如

    在项目/urls.py中

    from django.conf.urls import include
    
    path('en/dictionary/',include('app URL here with extension.url'),
    path('it/dizionario/',include('app URL here with extension.url'),
    path('fr/dictionnaire/',include('app URL here with extension.url'),
    

    在 Appname/urls.py 中

       urlpatterns = [
       url(r'^define$/',views.name of view,name=''),
       url(r'^definisci/$',views.name of view,name=''),
       url(r'^définis/$',views.name of view,name=''),
    

    检查一下: https://docs.djangoproject.com/en/3.1/topics/http/urls/

    【讨论】:

    • 这不是翻译项目的好方法。您希望可翻译的字符串在代码中只出现一次,然后将它们翻译成您需要的尽可能多的语言。这更符合 Django 的 DRY 哲学,并为程序员和翻译人员的工作提供了便利——将两者分开。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2019-06-22
    • 2011-02-18
    • 2019-07-13
    • 1970-01-01
    相关资源
    最近更新 更多