@@ -49,8 +49,6 @@ def setup(self,
4949 """
5050 if source_language is not None :
5151 self .source_language_code = source_language
52- if current_language is not None :
53- self .current_language_code = current_language
5452 if languages is not None :
5553 self .hardcoded_language_codes = languages
5654 if missing_policy is not None :
@@ -62,6 +60,9 @@ def setup(self,
6260 secret = secret ,
6361 host = cds_host )
6462
63+ if current_language is not None :
64+ self .set_current_language (current_language )
65+
6566 def fetch_languages (self , force = False ):
6667 if self .remote_languages is None or force :
6768 self .remote_languages = self ._cds_handler .fetch_languages ()
@@ -73,17 +74,34 @@ def fetch_languages(self, force=False):
7374 else :
7475 return self .remote_languages
7576
77+ def set_current_language (self , language_code , force = False ):
78+ if language_code not in (language ['code' ]
79+ for language in self .fetch_languages ()):
80+ raise ValueError ("Language {} is not supported by the application" .
81+ format (language_code ))
82+ if language_code not in self ._cache or force :
83+ self .fetch_translations (language_code = language_code , force = True )
84+ self .current_language_code = language_code
85+
7686 def fetch_translations (self , language_code = None , force = False ):
7787 """Fetch fresh content from the CDS."""
7888 if language_code is None :
7989 for language in self .fetch_languages ():
8090 self .fetch_translations (language ['code' ], force = force )
8191 else :
82- translations = self ._cds_handler .fetch_translations (language_code )
83- self ._cache .update (translations )
92+ if language_code not in [language ['code' ]
93+ for language in self .fetch_languages ()]:
94+ raise ValueError (
95+ "Language {} is not supported by the application" .
96+ format (language_code )
97+ )
98+ if language_code not in self ._cache or force :
99+ translations = self ._cds_handler .\
100+ fetch_translations (language_code )
101+ self ._cache .update (translations )
84102
85103 def translate (
86- self , source_string , language_code , is_source = False ,
104+ self , source_string , language_code = None , is_source = False ,
87105 _context = None , escape = True , params = None
88106 ):
89107 """Translate the given string to the provided language.
@@ -106,6 +124,9 @@ def translate(
106124 if params is None :
107125 params = {}
108126
127+ if language_code is None :
128+ language_code = self .current_language_code
129+
109130 translation_template = self .get_translation (source_string ,
110131 language_code ,
111132 _context ,
0 commit comments