diff --git a/.tx/config b/.tx/config deleted file mode 100644 index 7d389e0..0000000 --- a/.tx/config +++ /dev/null @@ -1,8 +0,0 @@ -[main] -host = https://www.transifex.com - -[o:open-edx:p:xblocks:r:recommender] -file_filter = recommender/translations//LC_MESSAGES/text.po -source_file = recommender/translations/en/LC_MESSAGES/text.po -source_lang = en -type = PO diff --git a/recommender/recommender.py b/recommender/recommender.py index f4ce74c..c200a4d 100644 --- a/recommender/recommender.py +++ b/recommender/recommender.py @@ -18,7 +18,6 @@ import bleach from webob.response import Response -from django.utils import translation from xblock.core import XBlock from xblock.exceptions import JsonHandlerError @@ -278,6 +277,8 @@ class RecommenderXBlock(HelperXBlock): 'url', 'title', 'description', 'descriptionText' ] + i18n_js_namespace = 'RecommenderXBlockI18N' + def _get_onetime_url(self, filename): """ Return one time url for uploaded screenshot @@ -948,19 +949,13 @@ def _construct_view_resource(self, resource): return result - @staticmethod - def _get_statici18n_js_url(): # pragma: no cover - """ - Returns the Javascript translation file for the currently selected language, if any found by `pkg_resources` - """ - lang_code = translation.get_language() - if not lang_code: - return None - text_js = 'public/js/translations/{lang_code}/text.js' - country_code = lang_code.split('-')[0] - for code in (translation.to_locale(lang_code), lang_code, country_code): - if pkg_resources.resource_exists(resource_loader.module_name, text_js.format(lang_code=code)): - return text_js.format(lang_code=code) + def _get_statici18n_js_url(self): + """Return the JavaScript translation file provided by the XBlockI18NService.""" + if i18n_service := self.runtime.service(self, "i18n"): + if url_getter_func := getattr(i18n_service, 'get_javascript_i18n_catalog_url', None): + if javascript_url := url_getter_func(self): + return javascript_url + return None def student_view(self, _context=None): # pylint: disable=unused-argument @@ -1009,9 +1004,8 @@ def student_view(self, _context=None): # pylint: disable=unused-argument frag.add_css(self.resource_string("static/css/recommender.css")) frag.add_css(self.resource_string("static/css/introjs.css")) frag.add_javascript(self.resource_string("static/js/src/jquery.tooltipster.min.js")) - statici18n_js_url = self._get_statici18n_js_url() - if statici18n_js_url: - frag.add_javascript(self.resource_string(statici18n_js_url)) + if statici18n_js_url := self._get_statici18n_js_url(): + frag.add_javascript(statici18n_js_url) frag.add_javascript(self.resource_string("static/js/src/cats.js")) frag.add_javascript(self.resource_string("static/js/src/recommender.js")) frag.initialize_js('RecommenderXBlock', self.get_client_configuration()) @@ -1029,9 +1023,8 @@ def studio_view(self, _context=None): # pylint: disable=unused-argument )) frag.add_css(load("static/css/recommenderstudio.css")) frag.add_javascript_url("//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js") - statici18n_js_url = self._get_statici18n_js_url() - if statici18n_js_url: - frag.add_javascript(self.resource_string(statici18n_js_url)) + if statici18n_js_url := self._get_statici18n_js_url(): + frag.add_javascript(statici18n_js_url) frag.add_javascript(load("static/js/src/recommenderstudio.js")) frag.initialize_js('RecommenderXBlock') return frag diff --git a/translation_settings.py b/translation_settings.py index acc9d54..1a37f71 100644 --- a/translation_settings.py +++ b/translation_settings.py @@ -11,7 +11,7 @@ # Build paths inside the project like this: os.path.join(BASE_DIR, ...) from __future__ import absolute_import import os -BASE_DIR = os.path.dirname(os.path.dirname(__file__)) +BASE_DIR = os.path.dirname(__file__) # Quick-start development settings - unsuitable for production @@ -81,7 +81,7 @@ ('zh_CN', 'Chinese (China)'), ] -LOCALE_PATHS = [os.path.join(BASE_DIR, "locale")] +LOCALE_PATHS = [os.path.join(BASE_DIR, "recommender", "conf", "locale")] STATICI18N_DOMAIN = 'text' STATICI18N_NAMESPACE = 'RecommenderXBlockI18N'