def update(self): def css_class(language): css_attr = None if language == selected: css_attr = "selected" if language in translations: if css_attr: css_attr = css_attr + " available" else: css_attr = "available" return css_attr def language_name(language): return language.get("native", language.get("name")) translations = get_available_translations(self.context) if hasattr(self.context, "language"): translations[self.context.language] = None languages = get_all_languages() selected = normalize_lang(get_default_language()) url = ui_utils.url.absoluteURL(getSite(), self.request) self.languages = sorted( [{ "code": language, "flag": url + languages[language].get('flag', ''), "name": language_name(languages[language]), "css_class": css_class(language), "url": "%s/change-language?language=%s" % (url, language), } for language in languages], key=lambda l: l.get("code"))
def setUpWidgets(self, ignore_request=False): languages = get_all_languages() self.form_fields = filterFields(self.context, self.form_fields) # do not display empty form fields omit_names = [] for f in self.form_fields: val = getattr(self.context, f.__name__) if val is None: omit_names.append(f.__name__) self.form_fields = self.form_fields.omit(*omit_names) context = self.context if ITranslatable.providedBy(self.context): lang = get_default_language() try: translation = get_field_translations(self.context, lang) except: translation = [] if ( not translation and getattr(self.context, "language", None) and getattr(self.context, "language", None) != lang ): supported_lang = languages.get(lang) if supported_lang: langname = supported_lang.get("native", None) if langname == None: langname = supported_lang.get("name") self.status = translate( _(u"This content is not yet translated into" + " $language", mapping={"language": langname}), domain="bungeni", context=self.request, ) context = copy(removeSecurityProxy(self.context)) for field_translation in translation: setattr(context, field_translation.field_name, field_translation.field_text) self.widgets = form.setUpEditWidgets( self.form_fields, "", context, self.request, adapters=self.adapters, for_display=True, ignore_request=ignore_request, )
def setUpWidgets(self, ignore_request=False): languages = get_all_languages() self.form_fields = filterFields(self.context, self.form_fields) #do not display empty form fields omit_names = [] for f in self.form_fields: val = getattr(self.context, f.__name__) if val is None: omit_names.append(f.__name__) self.form_fields = self.form_fields.omit(*omit_names) context = self.context if ITranslatable.providedBy(self.context): lang = get_default_language() try: translation = get_field_translations(self.context, lang) except: translation = [] if (not translation and getattr(self.context, "language", None) and getattr(self.context, "language", None) != lang): supported_lang = languages.get(lang) if supported_lang: langname = supported_lang.get("native", None) if langname == None: langname = supported_lang.get("name") self.status = translate( _(u"This content is not yet translated into" +\ " $language", mapping={"language": langname}), domain="bungeni", context=self.request ) context = copy(removeSecurityProxy(self.context)) for field_translation in translation: setattr(context, field_translation.field_name, field_translation.field_text) self.widgets = form.setUpEditWidgets(self.form_fields, "", context, self.request, adapters=self.adapters, for_display=True, ignore_request=ignore_request)
def update(self): def css_class(language): css_attr = None if language == selected: css_attr = "selected" if language in translations: if css_attr: css_attr = css_attr + " available" else: css_attr = "available" return css_attr def language_name(language): return language.get("native", language.get("name")) translations = get_available_translations(self.context) if hasattr(self.context, "language"): translations[self.context.language] = None languages = get_all_languages() selected = normalize_lang(get_default_language()) url = ui_utils.url.absoluteURL(getSite(), self.request) self.languages = sorted([ { "code": language, "flag": url+languages[language].get('flag', ''), "name": language_name(languages[language]), "css_class": css_class(language), "url": "%s/change-language?language=%s" % ( url, language ), } for language in languages ], key=lambda l:l.get("code") )
def get_languages(self): langs = [(name, obj, (name in capi.pivot_languages)) for name, obj in get_all_languages().items()] langs.sort(key=lambda lg: not lg[2]) return langs
def get_languages(self): langs = [(name, obj, (name in capi.pivot_languages)) for name, obj in get_all_languages().items()] langs.sort(key=lambda lg:not lg[2]) return langs