Ich sehe zwei Methoden, um dies zu tun, eine in Ihrer Ansicht und die andere in der Vorlage...
- Im Blick:
Wahrscheinlich bewahren Sie die Informationen über die Benutzersprache irgendwo so auf,
user_lang = 'es'
obj = Somemodel.objects.get(pk=123434)
obj.local_name = getattr(obj, 'name_%s'%user_lang)
Also, Sie halten lokale Übersetzung in einer bestimmten Variable der Instanz und in Ihrer Vorlage können Sie verwenden, ist als:
{{obj.local_name}}
Dies kann jedoch kostspielig sein, wenn Sie der Vorlage ein Queryset anstelle einer einzelnen Instanz übergeben möchten. Bei einer solchen Verwendung müssen Sie diesen Wert für jedes Objekt in Ihrem Queryset auswerten.
- In der Vorlage:
Das ist eine komplexere Art, das Problem in der Vorlage zu lösen...
Definieren Sie eine Template-Tag und übergeben Sie object_id und lokale Sprachinformationen und holen Sie den übersetzten Text mit einer ähnlichen getattr Funktion. Wenn Sie diese Funktion jedoch für mehr als ein Modell verwenden möchten, müssen Sie wahrscheinlich eine Informationen zum Inhaltstyp auch für Ihr Template-Tag, wie z. B:
{% get_translation <object_id> <content_type_id> <local_language> %}
Und in Ihrer Vorlage Tag-Funktion, tun etwas wie:
from django.contrib.contenttypes.models import ContentType
....
cont_obj = Content_type.objects.get_for_id(<cotent_type_id>) #get the related model
obj = cont_obj.get_object_for_this_type(pk=<object_id>) # get your object
return getattr(obj, 'name_%s'%<local_language>)