Django多语言-如何预览任何语言的内容?

Django多语言-如何预览任何语言的内容?,django,django-multilingual,Django,Django Multilingual,我正在使用django多语言创建一个基于django的网站。当我为一个模型定义_unicode__)函数以这种方式返回时: def __unicode__(self): return unicode(self.title) 但是,我的默认语言是英语,我有一些项目只插入荷兰语。当我预览完整列表时,我没有得到任何标题 有没有一种简单的方法可以尝试获取英文标题,然后检查任何其他语言的标题以便预览?好吧,假设您的模型将荷兰语版本存储在名为Dutch_title的属性中,您可以这样做 d

我正在使用django多语言创建一个基于django的网站。当我为一个模型定义_unicode__)函数以这种方式返回时:

def __unicode__(self):
        return unicode(self.title)
但是,我的默认语言是英语,我有一些项目只插入荷兰语。当我预览完整列表时,我没有得到任何标题


有没有一种简单的方法可以尝试获取英文标题,然后检查任何其他语言的标题以便预览?

好吧,假设您的模型将荷兰语版本存储在名为Dutch_title的属性中,您可以这样做

def __unicode__(self):
  # If we've got an English title, use that
  if self.title:
    return self.title

  # Otherwise, default to the Dutch title
  return self.dutch_title

如果不知道您所说的仅以荷兰语插入的某些项目是什么意思,就有点难以更有效地回答您的问题。

根据您使用的应用程序,例如-django multilingual,您可以使用:

<td>{{ object.name_en|escape }}</td>
如果您使用其他应用程序,您可以始终运行manage.py shell并使用dirMyModel或dirMyModel.fields进行测试,以检查其中定义了哪些字段:


如果这些字段名有神奇的getter,而您在dir…(目录)中看不到任何有趣的内容,您可以参考首选l18n应用程序的代码,查看引擎盖下的内容:

迭代所有翻译可以像这样轻松完成:

Objec title is: {{object.en.name}}
>>> translations = [getattr(obj, "name_" + lang[0].replace("-","_")) for lang in
settings.LANGUAGES]
其中obj是模型对象,lang表示设置文件中的元组“bg”、“保加利亚语”


lang[0]。如果您有类似于uk gb的语言,则需要替换-,,因为这些值放在name_uk_gb中

我有4种默认为英语的语言。我的观点是,我可以插入所有四种语言的描述,或者只插入其中一种语言的描述。有没有一种方法可以尝试使用英语,如果没有,可以迭代所有其他语言,以显示插入的数据,而不是文本?我将尝试将此方法集成到项目中,并获得所有语言的任何内容,谢谢