首页 > 解决方案 > Django 2.2 i18n urlpatterns 没有被翻译

问题描述

我很好奇,好像有人在最新的 Django 版本中测试过使用 Django 的 i18n 功能?

我正在尝试将我的 urlpatterns 国际化如下:

urlpatterns = [
    path('i18n/', include('django.conf.urls.i18n'))
]
urlpatterns += i18n_patterns(
    path('', include('apps.frontpage.urls', namespace='frontpage')),
    path(_('journal/'), include('apps.journal.urls', namespace='journal')),
    path(_('projects/'), include('apps.projects.urls', namespace='projects')),
    path(_('software/'), include('apps.software.urls', namespace='software')),
    path('administration/', admin.site.urls),
)

使用这个.po文件:

#: core/urls.py:22

msgid "journal/"
msgstr "dagbok/"

#: core/urls.py:23
msgid "projects/"
msgstr "prosjekter/"

#: core/urls.py:24
msgid "software/"
msgstr "programvare/"

和文件正在生成和检测,因为 HTML 菜单被翻译成这样.po.mo

<li><a href="{% url 'frontpage:index' %}"><i class="fas fa-home fa-fw"></i> {% trans "Home" %}</a></li>
<li><a href="{% url 'journal:index' %}"><i class="fas fa-book fa-fw"></i> {% trans "Journal" %}</a></li>
<li><a href="{% url 'projects:index' %}"><i class="fas fa-project-diagram fa-fw"></i> {% trans "Projects" %}</a></li>
<li><a href="{% url 'software:index' %}"><i class="fas fa-hdd fa-fw"></i> {% trans "Software" %}</a></li>

通过这个文件:

#: shared/templates/sidebar.html:5
msgid "Home"
msgstr "Hjem"

#: shared/templates/sidebar.html:6
msgid "Journal"
msgstr "Dagbok"

#: shared/templates/sidebar.html:7
msgid "Projects"
msgstr "Prosjekter"

#: shared/templates/sidebar.html:8
msgid "Software"
msgstr "Programvare"

#: shared/templates/sidebar.html:10
msgid "Languages"
msgstr "Språk"

但是,我的网址仍未被翻译。我不太确定我是否做错了什么,或者这个功能实际上是否在最新的 Django 版本中存在错误。

我是否需要配置其他任何东西

LOCALE_PATHS = [
    os.path.join(BASE_DIR, 'shared/locale')
]

让它检测locale应用程序中的目录?或者这是由 Django 自动完成的?

任何帮助表示赞赏。整个源代码在GitHub 上是公开的。

标签: djangodjango-i18n

解决方案


通过将我的“核心”应用程序包含在INSTALLED_APPS. 我在阅读文档时稍有疏忽。

资料来源:文档 - Django 如何发现翻译,第二个要点。


推荐阅读