From 16e23963cc235a2b9e2da87e95ebfdb00b6de064 Mon Sep 17 00:00:00 2001 From: Swen Kooij Date: Mon, 26 Jun 2017 13:27:11 +0300 Subject: [PATCH] Add support for LOCALIZED_FIELDS_FALLBACKS --- localized_fields/value.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/localized_fields/value.py b/localized_fields/value.py index cb864b9..b31d1a7 100644 --- a/localized_fields/value.py +++ b/localized_fields/value.py @@ -1,6 +1,5 @@ import collections - from django.conf import settings from django.utils import translation @@ -104,12 +103,18 @@ class LocalizedValue(dict): back to the primary language if there's no value in the current language.""" - value = self.get(translation.get_language()) + fallbacks = getattr(settings, 'LOCALIZED_FIELDS_FALLBACKS', {}) - if not value: - value = self.get(settings.LANGUAGE_CODE) + language = translation.get_language() or settings.LANGUAGE_CODE + languages = fallbacks.get(language, [settings.LANGUAGE_CODE])[:] + languages.insert(0, language) - return value or '' + for lang_code in languages: + value = self.get(lang_code) + if value: + return value or '' + + return '' def __eq__(self, other): """Compares :paramref:self to :paramref:other for