如何在Django中翻译表单的标签和验证消息



无论何时运行:

$ ./manage.py makemessages -a -l es -e .py

它只包括用于翻译的locale/es/LC_MESSAGES/django.po中我在MY应用程序中标记的字符串,但我想翻译标记为可翻译的django形式的字符串,如下图所示:https://github.com/django/django/blob/master/django/contrib/auth/forms.py#L64-L84

有没有什么方法可以让makemessages翻译Django中Forms的标签和验证错误消息,而不必覆盖这些表单?

提前感谢您的帮助!:)

这些字符串的翻译已经由django项目完成:https://github.com/django/django/blob/master/django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po#L42

你不需要自己翻译。

你应该已经在你的应用程序中翻译了它们。

如果您使用的是ModelForm,请查看以下自定义标签和错误消息的答案:

class AuthorForm(ModelForm):
    class Meta:
        model = Author
        fields = ('name', 'title', 'birth_date')
        labels = {
            'name': _('Writer'),
        }
        help_texts = {
            'name': _('Some useful help text.'),
        }
        error_messages = {
            'name': {
                'max_length': _("This writer's name is too long."),
            },
        }

如上所述,Django提供了翻译。然而,如果您想要的语言的翻译不完整或与您的愿望不符,您可以随时复制字符串以翻译到您的项目中,并且您的翻译将优先于Django附带的翻译。

要实现这一点,只需创建文件并包含这些字符串即可进行翻译。例如app/i18n.py:

'''
Fake file to translate messages from django.contrib.auth.
'''
def _(text):
    return text
def fake():
    _(u'This username is already taken. Please choose another.')

现在makemessages将拾取这些字符串,您将能够对它们进行转换。

最新更新