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

don*_*yor 4 python django

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

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

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

并在settings.py中

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

locale在我的应用程序内创建目录.

现在我在我的app树中并给出了这个命令:

django-admin.py makemessages --all
Run Code Online (Sandbox Code Playgroud)

它吐出来了

#!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')
Run Code Online (Sandbox Code Playgroud)

而不是在里面创建消息文件locale.

我尝试过:

python manage.py makemessages --all
Run Code Online (Sandbox Code Playgroud)

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

cor*_*cor 10

您只需要将您的语言环境目录路径添加到LOCALE_PATHS.例如:

LOCALE_PATHS = ( 
    os.path.join(BASE_DIR, "locale"),
    os.path.join(BASE_DIR, "yourapp/locale"), 
)
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

django-admin.py makemessages --all
Run Code Online (Sandbox Code Playgroud)

现在一切都应该有效

  • 谢谢,我必须像“de”一样手动创建“<language>”文件夹。但现在工作起来很有魅力 (3认同)