def test_legacy_filename(settings): settings.STATICI18N_FILENAME_FUNCTION = "statici18n.utils.legacy_filename" filename = utils.get_filename("en_GB", "djangojs") assert filename == "en-gb/djangojs.js" filename = utils.get_filename("zh-Hans", "djangojs") assert filename == "zh-hans/djangojs.js"
def test_legacy_filename(settings): settings.STATICI18N_FILENAME_FUNCTION = 'statici18n.utils.legacy_filename' filename = utils.get_filename('en_GB', 'djangojs') assert filename == 'en-gb/djangojs.js' filename = utils.get_filename('zh-Hans', 'djangojs') assert filename == 'zh-hans/djangojs.js'
def test_default_filename_with_outputformat(): filename = utils.get_filename('en', 'djangojs', 'js') assert filename == 'en/djangojs.js' filename = utils.get_filename('en', 'djangojs', 'json') assert filename == 'en/djangojs.json' filename = utils.get_filename('en', 'djangojs', 'yaml') assert filename == 'en/djangojs.yaml'
def handle_noargs(self, **options): locale = options.get('locale') domain = options['domain'] packages = options['packages'] or settings.STATICI18N_PACKAGES outputdir = options['outputdir'] verbosity = int(options.get('verbosity')) if locale is not None: languages = [locale] else: languages = [to_locale(lang_code) for (lang_code, lang_name) in settings.LANGUAGES] if outputdir is None: outputdir = os.path.join(settings.STATICI18N_ROOT, settings.STATICI18N_OUTPUT_DIR) for locale in languages: if verbosity > 0: self.stdout.write("processing language %s\n" % locale) jsfile = os.path.join(outputdir, get_filename(locale, domain)) basedir = os.path.dirname(jsfile) if not os.path.isdir(basedir): os.makedirs(basedir) activate(locale) catalog, plural = get_javascript_catalog(locale, domain, packages) response = render_javascript_catalog(catalog, plural) with io.open(jsfile, "w", encoding="utf-8") as fp: fp.write(force_text(response.content))
def handle_noargs(self, **options): locale = options.get('locale') domain = options['domain'] packages = options['packages'] or settings.STATICI18N_PACKAGES outputdir = options['outputdir'] verbosity = int(options.get('verbosity')) if locale is not None: languages = [locale] else: languages = [to_locale(lang_code) for (lang_code, lang_name) in settings.LANGUAGES] if outputdir is None: outputdir = os.path.join(settings.STATICI18N_ROOT, settings.STATICI18N_OUTPUT_DIR) for locale in languages: if verbosity > 0: print "processing language", locale activate(locale) jsfile = os.path.join(outputdir, get_filename(locale, domain)) basedir = os.path.dirname(jsfile) if not os.path.isdir(basedir): os.makedirs(basedir) src = javascript_catalog(locale, domain, packages) with open(jsfile, 'w') as f: f.write(src)
def fetch(self, locale): if not locale: locale = settings.LANGUAGE_CODE filename = get_filename(locale, settings.STATICI18N_DOMAIN) path = os.path.join(settings.STATICI18N_OUTPUT_DIR, filename) with staticfiles_storage.open(path) as i18n_file: return mark_safe(i18n_file.read())
def inlinei18n(locale): key = "statici18n:%s" % locale path = cache.get(key) if path is None: path = os.path.join(settings.STATICI18N_OUTPUT_DIR, get_filename(locale, settings.STATICI18N_DOMAIN)) cache.set(key, path, 60 * 60 * 24 * 30) with staticfiles_storage.open(path) as i18n_file: return mark_safe(i18n_file.read())
def inlinei18n(locale): key = 'statici18n:%s' % locale path = memcache.get(key) if path is None: path = os.path.join(settings.STATICI18N_OUTPUT_DIR, get_filename(locale, settings.STATICI18N_DOMAIN)) memcache.set(key, path, 60 * 60 * 24 * 30) with staticfiles_storage.open(path) as i18n_file: return mark_safe(i18n_file.read())
def react_i18n(locale): """ Return the path to the internationalization file for React code. This is similar to statici18n, but uses 'react' domain instead of STATICI18N_DOMAIN. """ filename = get_filename(locale, 'react') filepath = os.path.join(settings.STATICI18N_OUTPUT_DIR, filename) return static(filepath)
def statici18n(locale): """ A template tag that returns the URL to a Javascript catalog for the selected locale. Behind the scenes, this is a thin wrapper around staticfiles's static template tag. """ path = os.path.join(settings.STATICI18N_OUTPUT_DIR, get_filename(locale, settings.STATICI18N_DOMAIN)) return static(path)
def _create_output(self, outputdir, outputformat, locale, domain, packages): outputfile = os.path.join(outputdir, get_filename(locale, domain, outputformat)) basedir = os.path.dirname(outputfile) if not os.path.isdir(basedir): os.makedirs(basedir) if outputformat == 'js': data = self._create_javascript_catalog(locale, domain, packages) elif outputformat == 'json': data = self._create_json_catalog(locale, domain, packages) else: raise NotImplementedError("Unknown format %s" % (outputformat)) with io.open(outputfile, "w", encoding="utf-8") as fp: fp.write(data)
def test_filename_with_custom_func(settings): settings.STATICI18N_FILENAME_FUNCTION = 'test_utils.custom_func' filename = utils.get_filename('es', 'djangojs') assert filename == 'es-djangojs.js'
def get_path(locale): return os.path.join(settings.STATICI18N_OUTPUT_DIR, get_filename(locale, settings.STATICI18N_DOMAIN))
def test_default_filename(locale): filename = utils.get_filename(locale, 'djangojs') assert filename == '%s/djangojs.js' % locale
def test_filename_with_no_func(settings): settings.STATICI18N_FILENAME_FUNCTION = 'no_func' with pytest.raises(ImportError): utils.get_filename('es', 'djangojs')
def test_default_filename_with_outputformat(fmt): filename = utils.get_filename("en", "djangojs", fmt) assert filename == "en/djangojs.%s" % fmt
def test_default_filename_with_outputformat(fmt): filename = utils.get_filename('en', 'djangojs', fmt) assert filename == 'en/djangojs.%s' % fmt
def test_default_filename_with_language(): filename = utils.get_filename('en', 'djangojs') assert filename == 'en/djangojs.js' filename = utils.get_filename('en-us', 'djangojs') assert filename == 'en-us/djangojs.js'
def test_filename_with_custom_func(settings): settings.STATICI18N_FILENAME_FUNCTION = ".".join([__name__, "custom_func"]) filename = utils.get_filename("es", "djangojs") assert filename == "es-djangojs.js"
def test_default_filename_with_locale(): filename = utils.get_filename('en_GB', 'djangojs') assert filename == 'en-gb/djangojs.js'
def test_filename_with_no_func(settings): settings.STATICI18N_FILENAME_FUNCTION = "no_func" with pytest.raises(ImportError): utils.get_filename("es", "djangojs")
def test_default_filename(locale): filename = utils.get_filename(locale, "djangojs") assert filename == "%s/djangojs.js" % locale