@@ -80,6 +80,8 @@ class DragAndDropBlock(
80
80
SOLUTION_INCORRECT : None
81
81
}
82
82
83
+ i18n_js_namespace = 'DragAndDropI18N'
84
+
83
85
display_name = String (
84
86
display_name = _ ("Title" ),
85
87
help = _ ("The title of the drag and drop problem. The title is displayed to learners." ),
@@ -320,10 +322,13 @@ def _learner_raw_score(self):
320
322
return correct_count / float (total_count )
321
323
322
324
@staticmethod
323
- def _get_statici18n_js_url ():
325
+ def get_deprecated_i18n_js_url ():
324
326
"""
325
- Returns the Javascript translation file for the currently selected language, if any found by
327
+ Returns the deprecated JavaScript translation file for the currently selected language, if any found by
326
328
`pkg_resources`
329
+
330
+ This method is returns pre-OEP-58 i18n files and will be deprecated in favor
331
+ of `get_javascript_i18n_catalog_url`.
327
332
"""
328
333
lang_code = translation .get_language ()
329
334
if not lang_code :
@@ -335,6 +340,19 @@ def _get_statici18n_js_url():
335
340
return text_js .format (lang_code = code )
336
341
return None
337
342
343
+ def get_javascript_i18n_catalog_url (self ):
344
+ """
345
+ Return the JavaScript translation file provided by the XBlockI18NService.
346
+ """
347
+ if url_getter_func := getattr (self .i18n_service , 'get_javascript_i18n_catalog_url' , None ):
348
+ if url := url_getter_func (self ):
349
+ return url
350
+
351
+ if depr_url := DragAndDropBlock .get_deprecated_i18n_js_url ():
352
+ return self .runtime .local_resource_url (self , depr_url )
353
+
354
+ return None
355
+
338
356
@XBlock .supports ("multi_device" ) # Enable this block for use in the mobile app via webview
339
357
def student_view (self , context ):
340
358
"""
@@ -352,15 +370,15 @@ def student_view(self, context):
352
370
'public/js/drag_and_drop.js' ,
353
371
]
354
372
355
- statici18n_js_url = self ._get_statici18n_js_url ()
356
- if statici18n_js_url :
357
- js_urls .append (statici18n_js_url )
373
+ if static_i18n_js_url := self .get_javascript_i18n_catalog_url ():
374
+ js_urls .append (static_i18n_js_url )
358
375
359
376
for css_url in css_urls :
360
377
fragment .add_css_url (self .runtime .local_resource_url (self , css_url ))
361
378
for js_url in js_urls :
362
379
fragment .add_javascript_url (self .runtime .local_resource_url (self , js_url ))
363
380
381
+
364
382
self .include_theme_files (fragment )
365
383
366
384
fragment .initialize_js ('DragAndDropBlock' , self .student_view_data ())
@@ -458,15 +476,16 @@ def studio_view(self, context):
458
476
'public/js/drag_and_drop_edit.js' ,
459
477
]
460
478
461
- statici18n_js_url = self ._get_statici18n_js_url ()
462
- if statici18n_js_url :
463
- js_urls .append (statici18n_js_url )
464
-
465
479
for css_url in css_urls :
466
480
fragment .add_css_url (self .runtime .local_resource_url (self , css_url ))
467
481
for js_url in js_urls :
468
482
fragment .add_javascript_url (self .runtime .local_resource_url (self , js_url ))
469
483
484
+ if static_i18n_js_url := self .get_javascript_i18n_catalog_url ():
485
+ fragment .add_javascript_url (static_i18n_js_url )
486
+ elif deprecated_i18n_js_url := self .get_deprecated_i18n_js_url ():
487
+ fragment .add_javascript_url (self .runtime .local_resource_url (self , deprecated_i18n_js_url ))
488
+
470
489
# Do a bit of manipulation so we get the appearance of a list of zone options on
471
490
# items that still have just a single zone stored
472
491
0 commit comments