【问题标题】:Reverse Language Translation in DjangoDjango中的反向语言翻译
【发布时间】:2018-01-12 18:05:22
【问题描述】:

我正在使用 Django Rest Framework 构建一个需要支持多种语言的 API,我们正在尝试使用 Django 翻译框架,并使用来自here 的答案我已经决定如何实现可翻译的选择字段。但是我的问题是相反的情况。

假设我有一个这样的模型:

from django.utils.translation import ugettext_lazy as _

class Payment(models.Model):
    OPEN = 0
    CLOSED = 1
    BALANCE = 2
    STATUS_CHOICES = (
        (OPEN, _('open')),
        (CLOSED, _('closed')),
        (BALANCE, _('balance')),
    )
    status = models.IntegerField(choices=STATUS_CHOICES, default=OPEN, verbose_name=_("Status"))

这可以很好地将信息返回给用户,我们使用存储的状态值并在返回之前对其进行转换。但是,我也希望用户能够使用任何语言发布一个新的支付对象。所以如果用户想要创建一个开放的交易,他们可以发送{'status':'open'},但他们也可以用西班牙语发送{'status':'abierto'}。有没有办法自动处理这个?

基本上我想得到 ugettext_lazy 函数的反面。

【问题讨论】:

  • 在选择字段中发布 abierto 而不是 open 有什么意义? (我的意思是它只是 post API 不要让它变得不必要的复杂。
  • 我问了同样的问题,不幸的是我没有最终决定我们需要支持什么。 :) 看起来你的其他问题没有一个简单的内置方法可以做到这一点。
  • 让您的 api 以这种方式接受多种语言对我来说似乎完全是疯狂的。我希望客户按小时付费,因为这种“功能”会增加大量额外的测试和 QA 工作。
  • 由于 status 是一个 IntegerField,您通常也会在 api 中发布一个整数。如果您想要翻译后的选项,您可以向 api 端点提交 OPTIONS 请求。

标签: django internationalization django-rest-framework


【解决方案1】:

使用ugettext_noop 代替ugettext_lazy

【讨论】:

    猜你喜欢
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    相关资源
    最近更新 更多