def _update_user_actions_with_languages(self, actions): language_selector = LanguageSelector(self.context, self.request, self.view, self.manager) language_selector.update() langs = language_selector.languages() langs.reverse() if len(langs) == 1: return for index, lang in enumerate(langs): switch_lang_url = '{0}/switchLanguage?set_language={1}'.format( self.context.absolute_url(), lang['code']) actions.insert(0, {'category': 'language', 'descrption': '', 'title': lang['native'], 'url': switch_lang_url, 'code': lang['code'], 'selected': lang['selected'], 'id': 'lang-{0}'.format(lang['code']), 'separator': index == 0 })
class Renderer(base.Renderer): def __init__(self, context, request, view, manager, data): base.Renderer.__init__(self, context, request, view, manager, data) self.selector = LanguageSelector(context, request, None, None) self.selector.update() self.languages = self.selector.languages() def key(info): return info.get("native", info["name"]) self.languages.sort(key=key) portal_state = getMultiAdapter((context, request), name='plone_portal_state') self.navigation_root_url = portal_state.navigation_root_url() def show(self): return self.selector.available() and len(self.languages) > 1 @property def available(self): return self.show() def showFlags(self): return self.selector.showFlags() def update(self): pass render = ViewPageTemplateFile('language.pt')
class Renderer(base.Renderer): def __init__(self, context, request, view, manager, data): base.Renderer.__init__(self, context, request, view, manager, data) self.selector = LanguageSelector(context, request, None, None) self.selector.update() self.languages = self.selector.languages() def key(info): return info.get("native", info["name"]) self.languages.sort(key=key) portal_state = getMultiAdapter( (context, request), name='plone_portal_state') self.navigation_root_url = portal_state.navigation_root_url() def show(self): return self.selector.available() and len(self.languages) > 1 @property def available(self): return self.show() def showFlags(self): return self.selector.showFlags() def update(self): pass render = ViewPageTemplateFile('language.pt')
def languages(self): context = aq_inner(self.context) ls = LanguageSelector(context, self.request, None, None) ls.update() results = ls.languages() supported_langs = [v['code'] for v in results] missing = set([str(c) for c in supported_langs]) lsv = LanguageSelectorViewlet(context, self.request, None, None) translations = lsv._translations(missing) # We want to see the babel_view append_path = ('', 'babel_view',) non_viewable = set() for data in results: code = str(data['code']) data['translated'] = code in translations.keys() appendtourl = '/'.join(append_path) if data['translated']: trans, direct, has_view_permission = translations[code] if not has_view_permission: # shortcut if the user cannot see the item non_viewable.add((data['code'])) continue data['url'] = trans.absolute_url() + appendtourl else: non_viewable.add((data['code'])) # filter out non-viewable items results = [r for r in results if r['code'] not in non_viewable] return results
def _update_user_actions_with_languages(self, actions): language_selector = LanguageSelector(self.context, self.request, self.view, self.manager) language_selector.update() langs = language_selector.languages() langs.reverse() if len(langs) == 1: return for index, lang in enumerate(langs): switch_lang_url = '{0}/switchLanguage?set_language={1}'.format( self.context.absolute_url(), lang['code']) actions.insert( 0, { 'category': 'language', 'descrption': '', 'title': lang['native'], 'url': switch_lang_url, 'code': lang['code'], 'selected': lang['selected'], 'id': 'lang-{0}'.format(lang['code']), 'separator': index == 0 })
def update(self): self.portal_state = getMultiAdapter((self.context, self.request), name=u'plone_portal_state') self.site_url = self.portal_state.portal_url() ls = LanguageSelector(self.context, self.request, self.view, self.manager) ls.update() results = ls.languages() translatable = ITranslatable(self.context, None) if translatable is not None: translations = translatable.getTranslations() else: translations = [] for data in results: data['translated'] = data['code'] in translations if data['translated']: trans = translations[data['code']][0] state = getMultiAdapter((trans, self.request), name='plone_context_state') data['url'] = state.view_url() + '?set_language=' + data['code'] else: state = getMultiAdapter((self.context, self.request), name='plone_context_state') try: data['url'] = state.view_url() + '?set_language=' + data['code'] except AttributeError: data['url'] = self.context.absolute_url() + '?set_language=' + data['code']
def test_original_selector_data_not_modified_by_viewlet(self): self.selector.update() multilingual_lang_info = self.selector.languages() original_selector = LanguageSelector(self.portal, self.request, None, None) original_selector.update() original_lang_info = original_selector.languages() self.assertNotEquals(original_lang_info, multilingual_lang_info)
def get_language_info(self): """Returns the current configured languages """ # Use the language selector viewlet viewlet = LanguageSelector(self.context, self.request, None, None) viewlet.update() return { "available": viewlet.available(), "languages": viewlet.languages(), }
def test_selector_data_not_modified_by_viewlet(self): selector_viewlet = \ LanguageSelectorViewlet(self.portal, self.request, None, None) selector_viewlet.update() selector_viewlet_languages = selector_viewlet.languages() selector_adapter = \ LanguageSelector(self.portal, self.request, None, None) selector_adapter.update() selector_adapter_languages = selector_adapter.languages() self.assertNotEquals(selector_adapter_languages, selector_viewlet_languages)
def languages(self): """ Deprecated """ context = aq_inner(self.context) ls = LanguageSelector(context, self.request, None, None) ls.update() results = ls.languages() supported_langs = [v['code'] for v in results] missing = set([str(c) for c in supported_langs]) lsv = LanguageSelectorViewlet(context, self.request, None, None) translations = lsv._translations(missing) # We want to see the babel_view append_path = ( '', 'babel_view', ) non_viewable = set() for data in results: code = str(data['code']) data['translated'] = code in translations.keys() appendtourl = '/'.join(append_path) if data['translated']: trans, direct, has_view_permission = translations[code] if not has_view_permission: # shortcut if the user cannot see the item non_viewable.add((data['code'])) continue data['url'] = trans.absolute_url() + appendtourl else: non_viewable.add((data['code'])) # filter out non-viewable items results = [r for r in results if r['code'] not in non_viewable] return results