如何解决覆盖默认的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."),
...
]
- 翻译文件(
makemessages
,compilemessages
)-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 举报,一经查实,本站将立刻删除。