@@ -292,6 +292,33 @@ def __hash__(self):
292
292
return hash (repr (self ))
293
293
294
294
295
+ def read_language (content ):
296
+ from tempfile import NamedTemporaryFile
297
+ from ..lib .compat .parsing .language import read as lread
298
+
299
+ with NamedTemporaryFile (delete_on_close = False ) as fp :
300
+ fp .write (content )
301
+ fp .close ()
302
+ with open (fp .name , mode = 'rb' ) as fl :
303
+ lang = lread (fl )
304
+ return lang
305
+
306
+
307
+ def obtain_language (existing , content ):
308
+ try :
309
+ set_lang = shared_memory .ShareableList (name = "language" )
310
+ except AttributeError : # Unittests fails here
311
+ set_lang = []
312
+ doc_lang = read_language (content )
313
+ print (f"DEBUG: textedit.py validate_and_update obtain_language={ doc_lang } " )
314
+ if doc_lang is not None :
315
+ mlang = Language .from_name (doc_lang )
316
+ set_lang = [mlang .code ]
317
+ else :
318
+ set_lang [0 ] = existing if existing is not None else 'en'
319
+ return set_lang
320
+
321
+
295
322
class DataValidationHandler (object ):
296
323
297
324
def __init__ (self , plugin , lang = None ):
@@ -305,8 +332,16 @@ def set_editor(self, editor):
305
332
self ._editor = editor
306
333
307
334
def validate_and_update (self , data , text , lang = 'en' ):
308
- self ._doc_language = lang
309
335
m_text = text .decode ("utf-8" )
336
+ if "Language: " in m_text :
337
+ print (f"DEBUG: textedit.py validate_and_update Content has Language setting is { lang } \n "
338
+ f"Calling obtain_language: " )
339
+ doc_lang = obtain_language (lang , text )
340
+ self ._doc_language = doc_lang
341
+ print (f"DEBUG: textedit.py validate_and_update AFTER obtain_language={ doc_lang } " )
342
+ else :
343
+ self ._doc_language = lang if lang is not None else 'en'
344
+
310
345
result = self ._sanity_check (data , m_text )
311
346
if isinstance (result , tuple ):
312
347
handled = self ._handle_sanity_check_failure (result )
0 commit comments