@@ -2080,12 +2080,53 @@ def clean_presale(presale_start, presale_end):
20802080 @cached_property
20812081 def locales (self ) -> list [str ]:
20822082 """Is a list of active event locales."""
2083- return self .locale_array .split (',' )
2083+ if hasattr (self , 'settings' ) and 'locales' in self .settings ._cache ():
2084+ if locales := self .settings .get ('locales' , as_type = list ):
2085+ return locales
2086+ return [code for code in self .locale_array .split (',' ) if code ]
20842087
20852088 @cached_property
20862089 def content_locales (self ) -> list [str ]:
20872090 """Is a list of active content locales."""
2088- return self .content_locale_array .split (',' )
2091+ if hasattr (self , 'settings' ) and 'content_locales' in self .settings ._cache ():
2092+ if locales := self .settings .get ('content_locales' , as_type = list ):
2093+ return locales
2094+ fallback = [code for code in self .content_locale_array .split (',' ) if code ]
2095+ return fallback or self .locales
2096+
2097+ def _clear_language_caches (self ):
2098+ for attr in [
2099+ 'locales' ,
2100+ 'content_locales' ,
2101+ 'is_multilingual' ,
2102+ 'named_locales' ,
2103+ 'available_content_locales' ,
2104+ 'named_content_locales' ,
2105+ 'named_plugin_locales' ,
2106+ 'plugin_locales' ,
2107+ ]:
2108+ self .__dict__ .pop (attr , None )
2109+
2110+ def update_language_configuration (
2111+ self ,
2112+ * ,
2113+ locales : list [str ] | None = None ,
2114+ content_locales : list [str ] | None = None ,
2115+ default_locale : str | None = None ,
2116+ ) -> None :
2117+ locales_list = list (locales or [])
2118+ if content_locales is None :
2119+ content_locales_list = locales_list
2120+ else :
2121+ content_locales_list = list (content_locales )
2122+ if locales_list :
2123+ self .locale_array = ',' .join (locales_list )
2124+ if content_locales_list :
2125+ self .content_locale_array = ',' .join (content_locales_list )
2126+ if default_locale :
2127+ self .locale = default_locale
2128+ if locales_list or content_locales_list or default_locale :
2129+ self ._clear_language_caches ()
20892130
20902131 @cached_property
20912132 def is_multilingual (self ) -> bool :
0 commit comments