微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

覆盖默认的Django翻译

如何解决覆盖默认的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 lib文件夹中或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."),
...
]
  • 翻译文件makemessagescompilemessages)-makemessages将在应用程序.po文件添加添加的django标准消息,查找它们并进行翻译,运行compilemessages以更新.mo文件
  • 试用 背后的逻辑:(我认为;))-当ugettext函数在翻译中搜索一条消息(字符串)时,需要搜索多个.po/ .mo文件。使用第一个匹配项。因此,如果我们的本地应用程序.po/.mo在第一位,那么我们的翻译将覆盖所有其他应用程序(例如django认值)。

另类 当你需要翻译全部或大多数django认消息时,另一种可能性(我没有尝试过)是在我们的语言环境或其他一些特殊文件夹中复制认django.po文件,并修复翻译并注册文件夹(如果是新文件夹)在LOCALE_PATHSDjango settings文件中作为列表中的第一项。

解决方法

我有一个模板与此:

{% trans "Log out" %}

Django自动将此翻译为Terminarsesión西班牙语。但是,我想将其翻译为Cerrarsesión。

我试图将此文字添加到.po文件中,但是在编译消息时出现错误,指出该文字重复。

有没有一种方法可以更改/覆盖默认的Django翻译?

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。