Самый простой способ иметь многоязычный сайт Django? - PullRequest
8 голосов
/ 23 июня 2010

У меня есть и старый сайт 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 показывать (Печать содержимого в шаблоне дважды очень уродливо, я знаю!)

Итак, теперь, когда я хочу внести некоторые изменения, каков наилучший путь?

Я пытался прочитать документацию по этому вопросу, но не могу найти ничего, объясняющего, что делать с URL-адресами и шаблонами.

Единственное, что я сейчас нашел, это как правильно изменить язык

Ваша помощь очень ценится!

Ответы [ 5 ]

3 голосов
/ 03 июля 2010

Ответ, который я искал, таков:

в моем шаблоне:

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

{% ifequal LANGUAGE_CODE "en" %}                    
<h2>{{object.title_EN }}</h2>
{% else %}
<h2>{{object.title_NO }}</h2>
{% endifequal %}
2 голосов
/ 23 июня 2010

В коде Google есть библиотека, обеспечивающая поддержку многоязычного контента в моделях Django .

2 голосов
/ 23 июня 2010

Существуют различные сторонние проекты, которые управляют такими вещами. Вот один отзыв .

1 голос
/ 16 июля 2012

Я некоторое время боролся с этим и закончил тем, что написал оболочку для подхода «несколько полей для каждого языка», который вы описали выше.

Он автоматически получает значение, соответствующее вашему языку (аналогично gettext). Вы можете проверить это здесь: https://github.com/zmathew/django-linguo

1 голос
/ 21 июня 2011

После тестирования нескольких приложений для перевода моделей я выбрал django-modeltranlation .

Если вы посмотрите на это сравнение http://djangopackages.com/grids/g/model-translation/, вы также увидите, что это наиболее используемый пакет, и он не использует вторую таблицу. Наличие переведенных полей в одной таблице означает, что нам не понадобится дополнительное соединение.

...