python - Django 国际化不起作用(makemessages 找不到 .py 文件)

标签 python django internationalization

我正在尝试使用 I18N 来国际化我的 Django 网站。当我执行 makemessages 时。没有得到 view.py 的文本。我做了以下几件事:

# my flow
PROJECT
- LOCALE
- MYSITE
  - urls.py
  - settings.py
- APP1
  - views.py
- APP2
- APP3      
manage.py

# settings.py
LANGUAGES = (
     ('it', 'Italiano'),
     ('en', 'English'),
            )
LANGUAGE_CODE = 'it'
USE_I18N = True
LOCALE_PATHS = ('home/project/locale/',)
MIDDLEWARE_CLASSES = ( ...
                      'django.middleware.locale.LocaleMiddleware',
                     )   
TEMPLATE_CONTEXT_PROCESSORS = (...,
                      'django.core.context_processors.i18n',
                     )

 # views.py

 from django.utils.translation import ugettext as tra
 text = tra("this is a text")
 ...

 # template.html
 ...
 {% trans 'Dashboard' %}
 ....

从根目录(manage.py在哪里)当我执行“python manage.py makemessages.py en-l”时,我只得到一个django.po,其中包含来自html文件的文本,而不是来自views.py。我也尝试过“python manage.py makemessages.py en-l-e html,py”,但它不起作用。我哪里做错了?

最佳答案

makemessages 在代码中查找非常具体的模式; tra() 不是这些模式之一。

来自 makemessages command source您可以看到 xgettext 命令行工具被指示查找: gettext_noopgettext_lazyngettext_lazyugettext_noopugettext_lazyungettext_lazypgettextnpgettextpgettext_lazynpgettext_lazy(除了 _() 可调用)。

将您的 views.py 代码更改为:

from django.utils.translation import ugettext as _
text = _("this is a text")

遵循广泛使用的 gettext 约定,或使用:

from django.utils.translation import ugettext
text = ugettext("this is a text")

最好坚持使用原始的 translation.* 方法或 _(),此处。

关于python - Django 国际化不起作用(makemessages 找不到 .py 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21163710/

相关文章:

python - TypeError: __getitem__() takes exactly 2 arguments (2 given) TypeError? ( python 3)

html - 其中一个页面没有从基础继承 css

javascript - 使用 Ajax 加载新内容

java - AWT 上格式错误的波斯语字符

python - **kwargs 没有将变量传递给函数,怎么了?

python - 在 Python 中为大型数据集创建邻接矩阵

python - 我可以在 Windows 上监控系统音频并进行分析吗?

python - 最佳实践 : prepopulate SlugField in Django (without Admin module)

php - 在这里使用 gettext 如何帮助我?

angularjs - Angular 上的印度尼西亚货币