如何在不破坏唯一性的情况下在Django中翻译共享模型?

时间:2013-04-15 14:32:19

标签: python django django-models internationalization

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

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

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

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

  1. 当用户创建区域实例时,她必须填写该区域的所有翻译版本,并从英文版本计算slu ..但这对用户来说似乎不太有吸引力。是吗?
  2. 用户只能从先前已引入和翻译的预定义区域列表中进行选择。但那些新的呢?这个选项似乎很难维护......
  3. 对于我正在使用django-transmeta的翻译。

    所以,我很高兴看到你对如何处理这个问题的意见和建议。

    非常感谢!

1 个答案:

答案 0 :(得分:0)

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

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

但是,为了增加“精确度”,我们添加了两个新模型:AreaTagResourceTag。这两个模型由用户创建,不会被翻译。所以我们可以使用“应用程序”和“applicación”areatags,但由于用户之前选择了Area,我们可以使用Area进行搜索,这对两者都很常见案例。因此,无需在级别Tag中进行搜索即可找到亲和力。

希望这有助于某些人尝试做类似的事情! :)