Example #1
0
    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
Example #2
0
 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()
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
 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)
Example #7
0
 def create_translation_label(self, language):
     label = Element("span")
     label.add_class("translation")
     label.append("(" + translate_locale(language) + ")")
     return label