【问题标题】:Why would the makemessages function for Django language localization ignore html files?为什么 Django 语言本地化的 makemessages 函数会忽略 html 文件?
【发布时间】:2011-08-14 00:04:35
【问题描述】:

我正在尝试在一个项目上运行 Django 语言本地化,但 makemessages 总是忽略我的模板文件夹中的 html 模板。

我正在从项目根目录运行python manage.py makemessages -a,并且项目中任何位置的 .py 文件中标记为翻译的所有字符串都已成功添加到 .po 文件中。

html 模板中的任何字符串,即{{ trans "String_to_translate" }},都会被忽略并且不会添加到 .po 文件中,即使在模板顶部加载了必要的模块 {% load i18n %}

为了测试整个模板文件夹被排除在 makemessages 函数之外的可能性,我制作了一个 .py 文件并在其中包含了一个用于翻译的字符串,并且它已成功添加到 .po 文件中。

说了这么多,有谁知道可能是什么导致了这个问题? 提前感谢您的帮助!

编辑:解决方案仅包括将 {{ trans "string" }} 的语法更改为 {% trans "string" %}

【问题讨论】:

    标签: python django localization internationalization


    【解决方案1】:

    尝试在您的app 文件夹中为您的templates 文件夹创建符号链接。然后使用符号链接开关 django-admin.py makemessages --all --symlinks 从您的应用文件夹中调用 makemessages

    cd /myproject
    ln -s /myproject/templates /myproject/myapp/templates    
    cd /myproject/myapp
    django-admin.py makemessages --all --symlinks
    

    makemessages 忽略 TEMPLATE_DIRSINSTALLED_APPS。模板目录需要在您的应用文件夹中,makemessages 需要从您的应用文件夹中调用。

    【讨论】:

      【解决方案2】:

      您的templates 文件夹需要位于INSTALLED_APPS 中列出的应用程序中或TEMPLATE_DIRS 中列出的目录中 - 在您的settings.py 文件中

      【讨论】:

      • 这两件事都已经配置好了,应用程序可以成功地使用模板,除了模板上的 makemessages 功能。
      • 假设您的 django 应用程序名为 app,其中有一个名为 templates 的目录?您创建的这个.py 文件在哪里?小路?您是如何在代码中引用它的?可以在这里粘贴INSTALLED_APPSTEMPLATE_DIRS 设置吗?
      • myproject/app里面确实有一个templates目录,任何需要模板的view都可以从里面成功找到模板。 Makemessages 成功地在普通 views.py 中找到要翻译的字符串,例如 ugettext("String_to_translate")。我还在模板文件夹中创建了 example.py,以检查 makemessages 是否曾在该文件夹中查看过任何内容,并在其中找到了 ugettext("Another string")。 TEMPLATE_DIRS =('/home/dlmccoy/webapps/projectname/myproject/app/templates',), INSTALLED_APPS = ('myproject.app', )
      • 哇,这很奇怪。很难说可能是什么问题。您需要在每个模板文件中包含{% load i18n %},而不仅仅是您在其他模板文件中扩展的“基础”文件。你这样做吗?您是否还可以删除TEMPLATE_DIRS 中的条目(因为如果该目录在您的应用程序目录中,则会被拾取)?
      • 为了测试,我设置了一个模板,没有任何基础文件的导入,仍然没有运气。我每次都包含 {% load i18n %} 。我还删除了 TEMPLATE_DIRs 的条目,没有任何变化。如果这也是有用的信息,我尝试使用翻译手动编辑 django.po 文件,但模板仍然无法使用 {{ trans "String_to_translate" }} 找到它们。还有其他想法吗?
      猜你喜欢
      • 2012-07-02
      • 2017-07-04
      • 2010-09-25
      • 2014-01-21
      • 1970-01-01
      • 2020-12-10
      • 2014-06-15
      • 2017-09-06
      相关资源
      最近更新 更多