Я вижу два способа сделать это, один на ваш взгляд, а другой - в шаблоне ...
- В поле зрения:
Возможно, вы храните информацию о языке пользователя где-то так,
user_lang = 'es'
obj = Somemodel.objects.get(pk=123434)
obj.local_name = getattr(obj, 'name_%s'%user_lang)
Таким образом, вы сохраняете локальный перевод в определенной переменной экземпляра, и в вашем шаблоне вы можете использовать его как:
{{obj.local_name}}
Но это может быть дорогостоящим, если вы хотите передать шаблону набор запросов вместо одного экземпляра. Для такого использования вы должны оценить это значение для каждого объекта в вашем наборе запросов.
- В шаблоне:
Это более сложный способ решения проблемы в шаблоне ...
Определите шаблон тега и передайте object_id и информацию о местном языке и получите переведенный текст, используя аналогичную функцию getattr . Но в этом случае, если вы хотите использовать это для более чем одной модели, вам, вероятно, придется передать информацию о типе контента для вашего тега шаблона, например:
{% get_translation <object_id> <content_type_id> <local_language> %}
И в вашей функции тега шаблона сделайте что-то вроде:
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>)