我有一个模板与此:
{% trans "Log out" %}
Django自动将此翻译为Terminarsesión西班牙语。但是,我想将其翻译为Cerrarsesión。
我试图将此文字添加到.po文件中,但是在编译消息时出现错误,指出该文字重复。
有没有一种方法可以更改/覆盖默认的Django翻译?
谢谢。
最简单的方法是收集在django.contrib.admin语言环境文件夹中找到的.po文件,然后重新编译(可以使用POEdit这样做)。
你还可以通过将django.contrib.admin模板放入项目模板文件夹(例如:yourproject / templates / admin / change_form.html),然后从项目根目录运行makemessages来覆盖django.contrib.admin模板(尽管django 1.4不再支持该消息) Alpha,如果我是正确的)
编辑:罗伯特·卢霍的答案是干净的方法
这对我有用:
在你的应用程序文件夹中创建一个文件,该文件将包含需要覆盖翻译的Django消息,例如 django_standard_messages.py
django_standard_messages.py
在Django lib文件夹中或django.po文件中,找到需要覆盖的消息(字符串),例如,django.forms/fields.py有_(u"This field is required.")我们想要以不同方式翻译成德语的消息
django.po
django.forms/fields.py
_(u"This field is required.")
在django_standard_messages.py添加所有这样的消息:
# coding: utf-8 _ = lambda s: s django_standard_messages_to_override = [ _("This field is required."), ... ]
makemessages
compilemessages
ugettext
.po/
.mo
另类 当你需要翻译全部或大多数django默认消息时,另一种可能性(我没有尝试过)是在我们的语言环境或其他一些特殊文件夹中复制默认django.po文件,并修复翻译并注册该文件夹(如果是新文件夹)在LOCALE_PATHSDjango settings文件中作为列表中的第一项。
.po
settings