Skip to content

Commit

Permalink
feat: use XBlockI18NService js translations
Browse files Browse the repository at this point in the history
  • Loading branch information
OmarIthawi committed Jan 15, 2024
1 parent aca4b63 commit f4b6800
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 11 deletions.
5 changes: 5 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ Drag and Drop XBlock changelog
Unreleased
---------------------------

Version 3.4.0 (2024-01-15)
---------------------------

* XBlockI18NService js translations support

Version 3.3.0 (2023-10-24)
---------------------------

Expand Down
2 changes: 1 addition & 1 deletion drag_and_drop_v2/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
""" Drag and Drop v2 XBlock """
from .drag_and_drop_v2 import DragAndDropBlock

__version__ = "3.3.0"
__version__ = "3.4.0"
38 changes: 28 additions & 10 deletions drag_and_drop_v2/drag_and_drop_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ class DragAndDropBlock(
SOLUTION_INCORRECT: None
}

i18n_js_namespace = 'DragAndDropI18N'

display_name = String(
display_name=_("Title"),
help=_("The title of the drag and drop problem. The title is displayed to learners."),
Expand Down Expand Up @@ -320,10 +322,13 @@ def _learner_raw_score(self):
return correct_count / float(total_count)

@staticmethod
def _get_statici18n_js_url():
def _get_deprecated_i18n_js_url():
"""
Returns the Javascript translation file for the currently selected language, if any found by
Returns the deprecated JavaScript translation file for the currently selected language, if any found by
`pkg_resources`
This method returns pre-OEP-58 i18n files and is deprecated in favor
of `get_javascript_i18n_catalog_url`.
"""
lang_code = translation.get_language()
if not lang_code:
Expand All @@ -335,6 +340,19 @@ def _get_statici18n_js_url():
return text_js.format(lang_code=code)
return None

def _get_statici18n_js_url(self):
"""
Return the JavaScript translation file provided by the XBlockI18NService.
"""
if url_getter_func := getattr(self.i18n_service, 'get_javascript_i18n_catalog_url', None):
if javascript_url := url_getter_func(self):
return javascript_url

if deprecated_url := self._get_deprecated_i18n_js_url():
return self.runtime.local_resource_url(self, deprecated_url)

return None

@XBlock.supports("multi_device") # Enable this block for use in the mobile app via webview
def student_view(self, context):
"""
Expand All @@ -352,15 +370,15 @@ def student_view(self, context):
'public/js/drag_and_drop.js',
]

statici18n_js_url = self._get_statici18n_js_url()
if statici18n_js_url:
js_urls.append(statici18n_js_url)

for css_url in css_urls:
fragment.add_css_url(self.runtime.local_resource_url(self, css_url))
for js_url in js_urls:
fragment.add_javascript_url(self.runtime.local_resource_url(self, js_url))

statici18n_js_url = self._get_statici18n_js_url()
if statici18n_js_url:
fragment.add_javascript_url(statici18n_js_url)

self.include_theme_files(fragment)

fragment.initialize_js('DragAndDropBlock', self.student_view_data())
Expand Down Expand Up @@ -458,15 +476,15 @@ def studio_view(self, context):
'public/js/drag_and_drop_edit.js',
]

statici18n_js_url = self._get_statici18n_js_url()
if statici18n_js_url:
js_urls.append(statici18n_js_url)

for css_url in css_urls:
fragment.add_css_url(self.runtime.local_resource_url(self, css_url))
for js_url in js_urls:
fragment.add_javascript_url(self.runtime.local_resource_url(self, js_url))

statici18n_js_url = self._get_statici18n_js_url()
if statici18n_js_url:
fragment.add_javascript_url(statici18n_js_url)

# Do a bit of manipulation so we get the appearance of a list of zone options on
# items that still have just a single zone stored

Expand Down

0 comments on commit f4b6800

Please sign in to comment.