如何使用django-admin.py makemessages --all

时间:2014-09-08 08:45:25

标签: python django

我正在尝试在我的django项目中创建messagefile。

为此,我把它写进了我的家庭视图功能:

def startpage(request):
   # Translators: This message appears on the home page only
   output = _("Welcome to my site.")

和settings.py

from django.utils.translation import ugettext_lazy as _
LANGUAGES = ( 
   ('de', _('German')),
   ('en', _('English')),
   ('fr', _('French')),
   ('es', _('Spanish')),
   ('pt', _('Portuguese'))
)

并在我的应用内创建了locale目录。

现在我在我的应用程序树中并发出此命令:

django-admin.py makemessages --all

它正在吐出这个

#!C:\workspace\newsportal\venv_np\Scripts\python.exe
# EASY-INSTALL-SCRIPT: 'django==1.6','django-admin.py'
__requires__ = 'django==1.6'
import pkg_resources
pkg_resources.run_script('django==1.6', 'django-admin.py')

并且不在locale内创建消息文件。

我尝试过:

python manage.py makemessages --all

但找不到manage.py,因为我在我的应用内,而不是在项目树中。它是如何正常完成的?

1 个答案:

答案 0 :(得分:9)

您只需将语言环境目录路径添加到LOCALE_PATHS即可。例如:

LOCALE_PATHS = ( 
    os.path.join(BASE_DIR, "locale"),
    os.path.join(BASE_DIR, "yourapp/locale"), 
)

在项目中包含一些要翻译的文本后,只需对要翻译的每种语言执行此命令即可。在你的情况下:

django-admin.py makemessages -l de
django-admin.py makemessages -l en
django-admin.py makemessages -l fr
django-admin.py makemessages -l es
django-admin.py makemessages -l pt

然后翻译所有文本并编译它们。我建议使用django-rosetta来实现此目的,这是一个Django应用程序,可以简化Django项目的翻译过程。

django-admin.py makemessages --all

现在一切都应该有效