def create_language_label(self, member, language): label = Element("span") label.add_class("field_language") text = translate_locale(language) if self.redundant_translation_labels: text = "(" + text + ")" label.append(text) return label
def _create_translations_member(cls): return TranslationsMember( name="translations", required=True, keys=String( required=True, translate_value=lambda value, language=None, **kwargs: "" if not value else translate_locale(value, language)), values=Reference(type=cls.translation), produce_default=TranslationMapping)
def task_starting(e): progress_bar.label = translations( e.task["item"], e.task["language"] ) if e.task["language"]: progress_bar.label += ( " (%s)" % translate_locale(e.task["language"]) ) progress_bar.update()
def translate_member(self): from cocktail import schema path = list(self.context.path()) desc = [] for i, context in enumerate(path): if isinstance(context.member, schema.Schema) and ( (i == 0 and len(path) > 1) or (context.parent_context and isinstance( context.parent_context.member, schema.RelationMember))): continue label = decapitalize(translations(context.member)) if context.collection_index is not None: if isinstance(context.collection_index, int): label += " %d" % (context.collection_index + 1) elif (context.parent_context and isinstance( context.parent_context.member, schema.Mapping) and context.parent_context.member.keys): key_label = context.parent_context.member.keys.translate_value( context.collection_index) if label: if key_label: label = "%s: %s" % (key_label, label) else: label = key_label else: label = "%s: %s" % (context.collection_index, label) if self.language: label += " (%s)" % translate_locale(self.language) desc.append(label.strip()) return " » ".join(desc)
def _embed_components(self, document): translation_keys = set() translation_prefixes = set() components_script = Element("script", type="text/javascript") # Collect all the required components dependencies = self.root_component.dependencies(include_self=True) if self.extra_dependencies is not None: for component in self.extra_dependencies: dependencies.extend(component.dependencies(include_self=True)) if self.splash: dependencies.extend( self.root_component.registry.get( self.splash).dependencies(include_self=True)) for component in dependencies: components_script.append("\n") components_script.append(component.get_source()) asset_sources = set() def _add_assets(component): if component in asset_sources: return asset_sources.add(component) for dependency in component.dependencies(recursive=False): if dependency not in component.overlays: _add_assets(dependency) document.metadata.resources.extend( resource for resource in component.resources if not isinstance(resource, StyleSheet)) for trans_key in component.translation_keys: _add_translation_keys(trans_key) for overlay in component.overlays: _add_assets(overlay) def _add_translation_keys(trans_key): if trans_key.endswith(".*"): translation_prefixes.add(trans_key[:-1]) else: translation_keys.add(trans_key) _add_assets(self.root_component) if self.extra_dependencies is not None: for dependency in self.extra_dependencies: _add_assets(dependency) if self.extra_translations: for trans_key in self.extra_translations: _add_translation_keys(trans_key) if translation_prefixes: for trans_key in translations.definitions: for prefix in translation_prefixes: if trans_key.startswith(prefix): translation_keys.add(trans_key) break # Global declarations locales = self.locales or [get_language()] declarations_script = Element("script", type="text/javascript") if self.global_style_sheet: declarations_script.append("cocktail.ui.globalStyleSheet = %s;" % dumps(self.global_style_sheet)) declarations_script.append("cocktail.ui.locales = %s;" % dumps(locales)) declarations_script.append("cocktail.ui.directionality = %s;" % dumps( dict((locale, directionality.get(locale)) for locale in locales))) for key, value in self.variables.items(): declarations_script.append("cocktail.setVariable(%s, %s);" % (dumps(key), dumps(value))) document.scripts_container.append(declarations_script) # Export translation keys if translation_keys or locales: trans_map = {} for trans_key in translation_keys: try: trans_value = translations(trans_key) except Exception: pass else: if trans_value: trans_map[trans_key] = trans_value for locale in locales: trans_map["cocktail.locales." + locale] = \ translate_locale(locale) declarations_script.append("cocktail.ui.translations = %s;" % dumps(trans_map)) components_script.place_after(document.scripts_container) # Instantiate the root component instantiation_script = Element( "script", type="text/javascript", children=("cocktail.ui.splash(%s.create(), %s)" % (self.splash, self.root_component.full_name)) if self.splash else ("%s.main(document.body);" % self.root_component.full_name)) document.body.append(instantiation_script)
def get_member_heading(self, member: Member, language: str) -> str: if language: return u"%s (%s)" % (translations(member), translate_locale(language)) else: return translations(member)
def create_translation_label(self, language): label = Element("span") label.add_class("translation") label.append("(" + translate_locale(language) + ")") return label