3

每当我跑步时:

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

它只包括翻译,在locale/es/LC_MESSAGES/django.po我在的应用程序中标记的字符串中,但我想翻译标记为 django 表单中可翻译的字符串,比如这个:https ://github.com/django/django/blob/master/django /contrib/auth/forms.py#L64-L84

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

提前感谢您的帮助!:)

4

3 回答 3

5

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

您无需自己进行翻译。

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

于 2013-02-11T17:07:40.590 回答
2

如上所述,翻译是 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将拿起这些字符串,您将能够翻译它们。

于 2013-02-12T12:22:02.993 回答
2

如果您使用的是 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."),
            },
        }
于 2017-03-30T08:33:07.763 回答