using a fallback language for translation
This commit is contained in:
parent
6c8deb5f80
commit
30a58473c3
|
|
@ -1,7 +1,7 @@
|
|||
"""Search indexes filters."""
|
||||
from elasticsearch_dsl.query import Q
|
||||
from django_elasticsearch_dsl_drf.filter_backends import SearchFilterBackend
|
||||
from utils.models import get_current_language
|
||||
from utils.models import get_current_locale
|
||||
|
||||
|
||||
class CustomSearchFilterBackend(SearchFilterBackend):
|
||||
|
|
@ -12,7 +12,7 @@ class CustomSearchFilterBackend(SearchFilterBackend):
|
|||
field_name = field
|
||||
if hasattr(view, 'search_fields') and hasattr(view, 'translated_search_fields'):
|
||||
if field in view.translated_search_fields:
|
||||
field_name = f'{field}.{get_current_language()}'
|
||||
field_name = f'{field}.{get_current_locale()}'
|
||||
return field_name
|
||||
|
||||
def construct_search(self, request, view):
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
"""Search indexes utils."""
|
||||
from django_elasticsearch_dsl import fields
|
||||
from utils.models import get_current_language
|
||||
from utils.models import get_current_locale, get_default_locale
|
||||
|
||||
|
||||
# object field properties
|
||||
|
|
@ -19,4 +19,8 @@ def get_translated_value(value):
|
|||
field_dict = value.to_dict()
|
||||
elif isinstance(value, dict):
|
||||
field_dict = value
|
||||
return field_dict.get(get_current_language())
|
||||
value = field_dict.get(get_current_locale())
|
||||
# fallback
|
||||
if value is None:
|
||||
value = field_dict.get(get_default_locale())
|
||||
return value
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ from django.contrib.postgres.fields.jsonb import KeyTextTransform
|
|||
from django.utils import timezone
|
||||
from django.utils.html import mark_safe
|
||||
from django.utils.translation import ugettext_lazy as _, get_language
|
||||
from configuration.models import TranslationSettings
|
||||
from easy_thumbnails.fields import ThumbnailerImageField
|
||||
from sorl.thumbnail import get_thumbnail
|
||||
from sorl.thumbnail.fields import ImageField as SORLImageField
|
||||
|
|
@ -59,13 +60,26 @@ def to_locale(language):
|
|||
return language + '-' + country
|
||||
|
||||
|
||||
def get_current_locale():
|
||||
"""Get current language."""
|
||||
return to_locale(get_language())
|
||||
|
||||
|
||||
def get_default_locale():
|
||||
return TranslationSettings.get_solo().default_language or \
|
||||
settings.FALLBACK_LOCALE
|
||||
|
||||
|
||||
def translate_field(self, field_name):
|
||||
def translate(self):
|
||||
field = getattr(self, field_name)
|
||||
if isinstance(field, dict):
|
||||
return field.get(to_locale(get_language()))
|
||||
value = field.get(to_locale(get_language()))
|
||||
# fallback
|
||||
if value is None:
|
||||
value = field.get(get_default_locale())
|
||||
return value
|
||||
return None
|
||||
|
||||
return translate
|
||||
|
||||
|
||||
|
|
@ -111,15 +125,10 @@ class TranslatedFieldsMixin:
|
|||
if self.STR_FIELD_NAME:
|
||||
field = getattr(self, getattr(self, 'STR_FIELD_NAME'))
|
||||
if isinstance(field, dict):
|
||||
value = field.get(get_current_language())
|
||||
value = field.get(get_current_locale())
|
||||
return value if value else super(TranslatedFieldsMixin, self).__str__()
|
||||
|
||||
|
||||
def get_current_language():
|
||||
"""Get current language."""
|
||||
return to_locale(get_language())
|
||||
|
||||
|
||||
class OAuthProjectMixin:
|
||||
"""OAuth2 mixin for project GM"""
|
||||
|
||||
|
|
|
|||
|
|
@ -488,3 +488,5 @@ MEDIA_LOCATION = 'media'
|
|||
|
||||
PHONENUMBER_DB_FORMAT = 'NATIONAL'
|
||||
PHONENUMBER_DEFAULT_REGION = "FR"
|
||||
|
||||
FALLBACK_LOCALE = 'en-GB'
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user