Django i18n:仅在网站级别上制作消息吗?

时间:2010-12-30 21:11:42

标签: django internationalization

我的网站中有几个不属于任何应用的字符串,例如

{% block title %}{% trans "Login" %}{% endblock %}

或用于设置区域设置Cookie的修改后的身份验证表单

class AuthenticationFormWithLocaleOption(AuthenticationForm):
    locale = forms.ChoiceField(choices = settings.LANGUAGES,
                               required = False,
                               initial = preselectedLocale,
                               label = _("Locale/language"))

现在,当我在站点目录中执行django-admin.py makemessages --all -e .html,.template时,它会从所有 Python,.html和.template文件中提取字符串,包括我的应用程序中的文件。那是因为我在该目录中开发我的应用程序:

Directory structure:

sitename
     myapp1
     myapp2

有没有办法提取我应用中不存在的所有字符串?

我找到的唯一解决方案是将app目录移到站点目录结构之外,但我使用的是bzr-externals(类似于git子模块或svn externals),因此在我的情况下没有意义。

将需要翻译的内容移动到新的应用程序中也是可能的,但我不知道这是否是唯一合理的解决方案。

1 个答案:

答案 0 :(得分:5)

根据the documentation,您可以从要翻译的应用中运行makemessages,仅为该特定应用创建消息文件。也可以使用makemessages'--ignore参数过滤掉一些特定的文件夹。不过,这两者之间的结果会大不相同。