示例#1
0
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"
示例#2
0
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'
示例#3
0
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)
示例#6
0
 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())
示例#7
0
文件: helpers.py 项目: rbellido/kuma
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())
示例#8
0
文件: helpers.py 项目: feiyu2016/kuma
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())
示例#9
0
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)
示例#10
0
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)
示例#12
0
    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)
示例#13
0
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'
示例#14
0
def get_path(locale):
    return os.path.join(settings.STATICI18N_OUTPUT_DIR,
                        get_filename(locale, settings.STATICI18N_DOMAIN))
示例#15
0
def test_default_filename(locale):
    filename = utils.get_filename(locale, 'djangojs')
    assert filename == '%s/djangojs.js' % locale
示例#16
0
def test_filename_with_no_func(settings):
    settings.STATICI18N_FILENAME_FUNCTION = 'no_func'

    with pytest.raises(ImportError):
        utils.get_filename('es', 'djangojs')
示例#17
0
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'
示例#18
0
def test_default_filename_with_outputformat(fmt):
    filename = utils.get_filename("en", "djangojs", fmt)
    assert filename == "en/djangojs.%s" % fmt
示例#19
0
def test_default_filename_with_outputformat(fmt):
    filename = utils.get_filename('en', 'djangojs', fmt)
    assert filename == 'en/djangojs.%s' % fmt
示例#20
0
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'
示例#21
0
def test_filename_with_no_func(settings):
    settings.STATICI18N_FILENAME_FUNCTION = 'no_func'

    with pytest.raises(ImportError):
        utils.get_filename('es', 'djangojs')
示例#22
0
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"
示例#23
0
def test_default_filename_with_locale():
    filename = utils.get_filename('en_GB', 'djangojs')
    assert filename == 'en-gb/djangojs.js'
示例#24
0
def get_path(locale):
    return os.path.join(settings.STATICI18N_OUTPUT_DIR,
                        get_filename(locale, settings.STATICI18N_DOMAIN))
示例#25
0
def test_filename_with_no_func(settings):
    settings.STATICI18N_FILENAME_FUNCTION = "no_func"

    with pytest.raises(ImportError):
        utils.get_filename("es", "djangojs")
示例#26
0
def test_default_filename(locale):
    filename = utils.get_filename(locale, "djangojs")
    assert filename == "%s/djangojs.js" % locale