【问题标题】:How to translate a shared Model in Django without breaking uniqueness?如何在不破坏唯一性的情况下翻译 Django 中的共享模型?
【发布时间】:2013-04-15 14:32:19
【问题描述】:

我正在开发一个 Django (v. 1.5.1) 网站,我有几个模型,例如 RegisteredUserStartup。这两个模型中的每一个都有一个Many2ManyField 到一个Area 模型。 Area 包含两个字段:nameslug(由 name 构建)。

这种设计可以很好地找到同一领域内的用户和初创公司,但是在尝试将其国际化时存在一个大问题。在此设计中,用户自己创建区域并将其附加到RegisteredUserStartup 实例。但是,如果用不同的语言创建相同的区域,则名为 computer science 的区域将不同于 informática(西班牙语版本)。

这个想法是用户创建区域就像他们是标签一样,但我认为这会带来如上所述的问题。

所以我想知道可能的解决方案:

  1. 当用户创建一个区域实例时,她必须填写该区域的所有翻译版本,并且会根据英文版本计算slug。但这对用户来说似乎不是很有吸引力。是吗?
  2. 用户只能从先前介绍和翻译过的预定义区域列表中进行选择。但是新的呢?这个选项似乎真的很难维护...

对于我正在使用的翻译django-transmeta

所以,我很高兴阅读您对如何处理此问题的意见和建议。

非常感谢!

【问题讨论】:

    标签: python django django-models internationalization


    【解决方案1】:

    最后我通过引入一个新层解决了这个问题,如下所示:

    现有模型区域和资源,现在都可以翻译并且由管理员创建,当前用户不允许创建或修改它们。这些模型将更加抽象以允许进行匹配。

    但是,为了提高“精度”,添加了两个新模型:AreaTagResourceTag。这两个模型是由用户创建的,它们没有被翻译。所以我们可以有“application”和“applicación”areatags,但由于用户之前选择了Area,我们可以使用Area 进行搜索,这在这两种情况下都很常见。因此,无需在级别 Tag 中搜索即可找到亲和力。

    希望这可以帮助尝试做类似事情的人! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      相关资源
      最近更新 更多