From d0669843d0310a5c633548686ad8ce19404fc594 Mon Sep 17 00:00:00 2001 From: Bouke Haarsma Date: Mon, 28 Oct 2013 16:57:56 +0100 Subject: Fixed #14170 -- Reset i18n cache when settings change --- django/utils/translation/trans_real.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'django/utils') diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py index b79af80dd1..c8476b2bef 100644 --- a/django/utils/translation/trans_real.py +++ b/django/utils/translation/trans_real.py @@ -11,6 +11,8 @@ from importlib import import_module from threading import local import warnings +from django.dispatch import receiver +from django.test.signals import setting_changed from django.utils.encoding import force_str, force_text from django.utils.functional import memoize from django.utils._os import upath @@ -47,6 +49,17 @@ accept_language_re = re.compile(r''' language_code_prefix_re = re.compile(r'^/([\w-]+)(/|$)') +@receiver(setting_changed) +def reset_cache(**kwargs): + """ + Reset global state when LANGUAGES setting has been changed, as some + languages should no longer be accepted. + """ + if kwargs['setting'] == 'LANGUAGES': + global _accepted + _accepted = {} + + def to_locale(language, to_lower=False): """ Turns a language name (en-us) into a locale name (en_US). If 'to_lower' is -- cgit v1.3