def setup_translator(self): # Load the primary translator on first request and reactivate it for # each subsequent request until the primary language is changed. app_globs = app_globals._current_obj() lang = app_globs.settings['primary_language'] or 'en' if app_globs.primary_language == lang and app_globs.primary_translator: translator = app_globs.primary_translator else: translator = Translator(lang, config['locale_dirs']) app_globs.primary_translator = translator app_globs.primary_language = lang translator.install_pylons_global()
def general_save(self, **kwargs): """Save :class:`~mediacore.forms.admin.settings.GeneralForm`.""" # Ensure this translation actually works before saving it lang = kwargs.get('general', {}).get('primary_language') if lang: locale = Locale.parse(lang) t = Translator(locale, config['locale_dirs']) try: t._load_domain('mediacore') except LanguageError: # TODO: Show an error message on the language field kwargs['primary_language'] = None return self._save(general_form, 'general', values=kwargs)
def setup_translator(language='en', registry=None): mediacore_i18n_path = os.path.join(os.path.dirname(mediacore.__file__), 'i18n') translator = Translator(language, dict(mediacore=mediacore_i18n_path)) # not sure why but sometimes pylons.translator is not a StackedObjectProxy # but just a regular Translator. if not hasattr(pylons.translator, '_push_object'): pylons.translator = StackedObjectProxy() if registry is None: registry = pylons.request.environ['paste.registry'] registry.replace(pylons.translator, translator)
def fake_request(pylons_config, server_name='mediadrop.example', language='en', method='GET', request_uri='/', post_vars=None): app_globals = pylons_config['pylons.app_globals'] pylons.app_globals._push_object(app_globals) if post_vars and method.upper() != 'POST': raise ValueError('You must not specify post_vars for request method %r' % method) wsgi_environ = create_wsgi_environ('http://%s%s' % (server_name, request_uri), method.upper(), request_body=post_vars) request = Request(wsgi_environ, charset='utf-8') request.language = language request.settings = app_globals.settings pylons.request._push_object(request) response = Response(content_type='application/xml', charset='utf-8') pylons.response._push_object(response) session = SessionObject(wsgi_environ) pylons.session._push_object(session) routes_url = URLGenerator(pylons_config['routes.map'], wsgi_environ) pylons.url._push_object(routes_url) # TODO: Use ContextObj() for Pylons 0.10 tmpl_context = AttribSafeContextObj() tmpl_context.paginators = Bunch() pylons.tmpl_context._push_object(tmpl_context) # some parts of Pylons (e.g. Pylons.controllers.core.WSGIController) # use the '.c' alias instead. pylons.c = pylons.tmpl_context paste_registry = Registry() paste_registry.prepare() engines = create_tw_engine_manager(app_globals) host_framework = PylonsHostFramework(engines=engines) paste_registry.register(tw.framework, host_framework) mediacore_i18n_path = os.path.join(os.path.dirname(mediacore.__file__), 'i18n') translator = Translator(language, dict(mediacore=mediacore_i18n_path)) # not sure why but sometimes pylons.translator is not a StackedObjectProxy # but just a regular Translator. if not hasattr(pylons.translator, '_push_object'): pylons.translator = StackedObjectProxy() paste_registry.replace(pylons.translator, translator) wsgi_environ.update({ 'pylons.pylons': pylons, 'paste.registry': paste_registry, }) return request
def init(self, locale_map=None): locale = default_locale() or 'en' translator = Translator(locale, locale_map or {}) pylons.translator._push_object(translator) config_file = find_config(default=None) parser = self.create_parser(config_file) options = parser.parse_args() if not options.config: parser.error( _('Please specify a config file using "--config=<filename>"')) init_mediacore(options.config) self.validate_options(options, parser) self.options = options return self
def setup_translator(config): app_globals = config['pylons.app_globals'] lang = app_globals.settings['primary_language'] or 'en' translator = Translator(lang, _locale_dirs(config)) pylons.translator._push_object(translator)