Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django国际化不';无法工作(makemessages无法找到.py文件)_Python_Django_Internationalization - Fatal编程技术网

Python Django国际化不';无法工作(makemessages无法找到.py文件)

Python Django国际化不';无法工作(makemessages无法找到.py文件),python,django,internationalization,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', 'En

我正在尝试用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”时,我只会得到一个来自html文件而不是views.py的带有文本的django.po。我还尝试了“python manage.py makemessages.py en-l-e html,py”,但它不起作用。我哪里做错了?

makemessages
在代码中查找非常特定的模式
tra()
不是这些模式之一

从中,您可以看到命令行工具被指示查找:
gettext\u noop
gettext\u lazy
ngettext\u lazy
ugettext\u lazy
ugettext\u lazy
pgettext
pgettext\u lazy
pgettext lazy
(除了可调用的

将您的
视图.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")
最好坚持原版的
翻译。*
方法或
\
,在这里