45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
from django.conf import settings
|
|
from simple_translation.translation_pool import translation_pool
|
|
|
|
def get_language_from_request(request):
|
|
return request.REQUEST.get('language', getattr(request, 'LANGUAGE_CODE', settings.LANGUAGE_CODE))
|
|
|
|
def get_preferred_translation_from_request(obj, request):
|
|
language = getattr(request, 'LANGUAGE_CODE', settings.LANGUAGE_CODE)
|
|
if not hasattr(obj, 'translations'):
|
|
translation_pool.annotate_with_translations(obj)
|
|
for translation in obj.translations:
|
|
if translation.language == language:
|
|
return translation
|
|
return obj.translations[0]
|
|
|
|
def get_preferred_translation_from_lang(obj, language):
|
|
if not hasattr(obj, 'translations'):
|
|
translation_pool.annotate_with_translations(obj)
|
|
for translation in obj.translations:
|
|
if translation.language == language:
|
|
return translation
|
|
return obj.translations[0]
|
|
|
|
def get_translation_filter(model, **kwargs):
|
|
info = translation_pool.get_info(model)
|
|
join_filter = info.translation_join_filter
|
|
filter_dict = {}
|
|
for key, value in kwargs.items():
|
|
filter_dict['%s__%s' % (join_filter, key)] = value
|
|
return filter_dict
|
|
|
|
def get_translation_filter_language(model, language, **kwargs):
|
|
info = translation_pool.get_info(model)
|
|
kwargs[info.language_field] = language
|
|
return get_translation_filter(model, **kwargs)
|
|
|
|
def get_translation_manager(obj):
|
|
info = translation_pool.get_info(obj.__class__)
|
|
return getattr(obj, info.translations_of_accessor)
|
|
|
|
def get_translation_queryset(obj):
|
|
return get_translation_manager(obj).all()
|
|
|
|
def get_translated_model(model):
|
|
return translation_pool.get_info(model).translated_model |