拥有多语言django网站的最简单方法是什么?

时间:2010-06-23 11:13:02

标签: django multilingual

我有旧的django站点(0.97-pre-SVN-7457),我即将进行一些更改,并使用当前的django开发代码运行该站点。

我有很多内容需要完好无损。当我启动网站时,我做了一个丑陋的“黑客”来获得双语网站,所以结果并不漂亮:

这是我的模特:

class Entry(models.Model):
title_NO = models.CharField(max_length=500)
teaser_NO = models.TextField(blank=True, null=True,)
body_NO = models.TextField(blank=True, null=True,)
title_EN = models.CharField(max_length=500, blank=True, null=True)
teaser_EN = models.TextField(blank=True, null=True,)
body_EN = models.TextField(blank=True, null=True,)
...

在我的模板中,我写道:

<div id="language_NO">
<h1>{{object.title_NO}}</h1>
.....
</div>
<div id="language_EN">
<h1>{{object.title_EN}}</h1>
 .....
</div>

使用简单的javascript来确定要显示的div(在模板中打印两次内容非常难看,我知道!)

所以,现在我想做一些改变,最好的方法是什么?

我曾尝试阅读有关该主题的文档,但我无法找到解释如何处理网址和模板的内容。

我唯一能找到的是how to change the language correct

非常感谢您的帮助!

5 个答案:

答案 0 :(得分:3)

我正在寻找的答案是:

在我的模板中:

{% load i18n %}{% get_current_language as LANGUAGE_CODE %}

{% ifequal LANGUAGE_CODE "en" %}                    
<h2>{{object.title_EN }}</h2>
{% else %}
<h2>{{object.title_NO }}</h2>
{% endifequal %}

答案 1 :(得分:2)

有各种第三方项目可以管理这类事情。 Here's one review

答案 2 :(得分:2)

Google代码有一个库,可为multilingual content in Django models提供支持。

答案 3 :(得分:1)

在测试了几个应用程序来翻译模型后,我选择了django-modeltranlation

如果您查看此比较http://djangopackages.com/grids/g/model-translation/,您还会看到它是最常用的包,并且它不使用第二个表。将翻译后的字段放在同一个表中意味着我们不需要额外的连接。

答案 4 :(得分:1)

我在这方面挣扎了一段时间,最后围绕你上面描述的“每种语言的多个字段”方法编写了一个包装器。

它会自动检索与您所使用的语言相对应的值(类似于gettext)。您可以在此处查看:https://github.com/zmathew/django-linguo