【问题标题】:Django, translating field names in context of exceptionsDjango,在异常上下文中翻译字段名称
【发布时间】:2018-06-29 10:40:55
【问题描述】:

我有一个模型,其字段名为phone。在俄语中,它看起来像这样:

телефон

有时当我尝试进行查询时,应用程序会向我抛出那种错误消息:

User with field phone already exists

如果我在设置中将LANGUAGE_CODE 设置为ru-RU,那么我添加了具有正确详细名称的Meta 类,以前的异常现在会抛出这种消息:

Пользователь с таким телефон уже существует

这是不对的。

在此消息的上下文中,字段 phone 应称为 телефоном。它最后有多余的字母。

在某些语言中,例如俄语,单词会根据句子的上下文有不同的结尾。

我正在尝试使用 gettext 并生成 po 文件,其中包含以下代码行:

#: .\main\models\users.py:77
msgid "phone"
msgstr ""

但是,我不知道如何在这段代码中编写多个翻译案例。

是否可以对字段名称进行不同的翻译?是否可以专门为此模型覆盖未找到的错误?

===================更新=========================

我找到了用于此异常消息的标准 Django 消息:

#, python-format
msgid "%(model_name)s with this %(field_label)s already exists."
msgstr "%(model_name)s с таким %(field_label)s уже существует."

是否可以专门针对 phone 字段覆盖此消息??

【问题讨论】:

标签: python django internationalization gettext


【解决方案1】:

这是 Django 中的一个缺陷,应该在那里报告。它违反了软件本地化的黄金法则“从不连接可翻译的字符串”。

原来的msgid应该改成这样:

#, python-format
msgid "An object of type '%(model_name)s' with the field label '%(field_label)s' already exists."
msgstr ""

您无法在您的应用程序中解决此问题。顺便说一句,不仅是俄语,而且可能所有有定冠词和性别的语言都会受到该缺陷的影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-13
    • 2010-11-11
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多