Opracowuję nowy projekt od zera z Django. Widzę, że istnieje wiele aplikacji do obsługi tłumaczenia dynamicznych treści.
- Django-wielojęzyczny
- Django-pluggable-model-i18n
- Django-modeltłumaczenie
- Transdb
- Django-wielojęzyczny-model-
- Django-transmeta
żeby wymienić tylko kilka.
Transdb, transmeta i wielojęzyczny brzmiały uczciwie, ale chcę przeczytać pewne osobiste doświadczenia.
Który z nich powinienem wybrać?
Odpowiedzi:
5 dla odpowiedzi № 1Zgadzam się z S.Lott, że będziesz chciał pomyśleć o tym, czego potrzebujesz od internacjonalizacji. Jest to jednak bardzo dobry upadek wszystkich wymienionych pakietów:
http://blog.muhuk.com/2010/01/06/dynamic-translation-apps-for-django.htm
Mój osobisty wybór do tej pory jest "żadnym z powyższych". Obecnie prototypuję z datatrans:
http://github.com/citylive/django-datatrans
http://www.botondus.com/dynamic-translation-with-django-datatrans/
Ale mogę jeszcze wybrać inne rozwiązanie.
3 dla odpowiedzi № 2
Istnieją dwa rodzaje tłumaczenia modelu:
- Dodanie dodatkowych kolumn / pól do modelu do przetłumaczenia
- Używanie drugiej tabeli do tłumaczeń
Pierwsze podejście jest bardziej wydajne, ponieważ Tynie używaj dodatkowych połączeń, a drugi jest mniej inwazyjny, ponieważ nie modyfikuje oryginalnej tabeli modelu. Osobiście bardziej podoba mi się pierwsza opcja i to jeden z głównych powodów, dla których używam django-modeltranslacja.
Możesz również rzucić okiem na to siatka porównawcza.
2 dla odpowiedzi nr 3
Django-nani to zupełnie nowa aplikacja, która jest szybka i dobrze napisana z wykorzystaniem prawdopodobnie najlepszego podejścia do projektowania.
Nadal jest w fazie rozwoju, ale działa dobrze i ma bardzo kompletny dokumentacja.
To jest fragment kodu, aby zobaczyć, jak zdefiniowane są modele wielojęzyczne:
from django.db import models
from nani.models import TranslatableModel, TranslatedFields
class DjangoApplication(TranslatableModel):
name = models.CharField(max_length=255, unique=True)
author = models.CharField(max_length=255)
translations = TranslatedFields(
description = models.TextField(),
description_author = models.CharField(max_length=255),
)
def __unicode__(self):
return self.name
0 dla odpowiedzi nr 4
Używam django i18n na dwujęzyczny projekt: jestem naprawdę zadowolony z tego i zdecydowanie polecam, ale muszę powiedzieć, że nigdy nie wypróbowałem jednego z pozostałych ...