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

7 投票
1 回答
21802 浏览
提问于 2025-04-20 09:54

我正在尝试在我的Django项目中创建消息文件。

为此,我在我的主页视图函数中写了这个:

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 个回答

20

你只需要把你的语言目录路径添加到 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-admin.py makemessages --all

现在一切应该都能正常工作了

撰写回答