예제 #1
0
def make_listing(pot, pos, table=False):
    from plone.i18n.locales.languages import LanguageAvailability
    languagelist = LanguageAvailability().getLanguages(combined=True)

    msgids = pot.keys()
    total = len(msgids)
    values = {}

    for po in [p for p in pos if p.mime_header['Language-Code'] != 'en']:
        code = po.mime_header.get('Language-Code')
        if code in IGNORE:
            continue
        name = po.mime_header.get('Language-Name')
        language = languagelist.get(code)
        if language is not None:
            desc = "%s (%s)" % (language['name'], code)
        else:
            desc = "%s (%s)" % (name, code)

        value = 0
        for msgid in msgids:
            if msgid in po and po[msgid].msgstr:  # translated
                if not [1 for fuzzy in po[msgid].comments if 'fuzzy' in fuzzy]:
                    value += 1

        percentage = int(value / (total * 1.0) * 100)
        if percentage == 99:
            percentage = 100
        values[code] = dict(percentage=percentage, desc=desc)

    total = len(msgids)
    if table:
        output_table(values.copy(), languagelist, total)
    else:
        output_list(values.copy(), languagelist, total)
예제 #2
0
def make_listing(pot, pos, table=False):
    from plone.i18n.locales.languages import LanguageAvailability
    languagelist = LanguageAvailability().getLanguages(combined=True)

    msgids = pot.keys()
    total = len(msgids)
    values = {}

    for po in [p for p in pos if p.mime_header['Language-Code'] != 'en']:
        code = po.mime_header.get('Language-Code')
        if code in IGNORE:
            continue
        name = po.mime_header.get('Language-Name')
        language = languagelist.get(code)
        if language is not None:
            desc = "%s (%s)" % (language['name'], code)
        else:
            desc = "%s (%s)" % (name, code)

        value = 0
        for msgid in msgids:
            if msgid in po and po[msgid].msgstr:  # translated
                if not [1 for fuzzy in po[msgid].comments if 'fuzzy' in fuzzy]:
                    value += 1

        percentage = int(value / (total * 1.0) * 100)
        if percentage == 99:
            percentage = 100
        values[code] = dict(percentage=percentage, desc=desc)

    total = len(msgids)
    if table:
        output_table(values.copy(), languagelist, total)
    else:
        output_list(values.copy(), languagelist, total)
예제 #3
0
def html_formatter(data):
    # generate a table
    domains = tuple(sorted(data.keys()))
    headings = ['Language'] + list(domains)

    languages = LanguageAvailability().getLanguages(combined=True)
    lang_codes = set(reduce(lambda x, y: x + y, map(dict.keys, data.values())))

    rows = []
    for lang_code in lang_codes:
        lang_title = languages.get(lang_code, {}).get('name', lang_code)
        if lang_title:
            title = '%s (%s)' % (lang_title, lang_code)
        else:
            title = lang_code

        row = [{'content': title,
                'classes': 'bold'}]

        for domain in domains:
            value = data.get(domain, {}).get(lang_code, None)

            if value:
                classes = ''

                if value <= 50:
                    classes = 'red'

                elif value <= 80:
                    classes = 'yellow'

                elif value <= 99:
                    classes = 'blue'

                else:
                    classes = 'green'

                row.append({'content': '%s%%' % value,
                            'classes': classes})
            else:
                row.append({'content': '-',
                            'classes': 'red'})

        rows.append(row)

    rows.sort(key=lambda item: item[0])

    template_path = os.path.join(os.path.dirname(__file__), 'template.html')
    return Template(filename=template_path).render(headings=headings,
                                                   rows=rows)
예제 #4
0
 def getLanguageListing(self, combined=False):
     """Return a sequence of language code and language name tuples.
     """
     langs = LanguageAvailability.getLanguageListing(self,
                                                     combined=combined)
     # Filter languages to the supported ones
     site = getSite()
     langtool = getattr(site, 'portal_languages', None)
     if langtool is not None:
         supported = [unicode(l) for l in langtool.getSupportedLanguages()]
         # We have a list of tuples (code, name)
         langs = [l for l in langs if l[0] in supported]
     return langs
예제 #5
0
 def getAvailableLanguages(self, combined=False):
     """Return a sequence of language tags for available languages.
     """
     langs = LanguageAvailability.getAvailableLanguages(self,
                                                        combined=combined)
     # Filter languages to the supported ones
     site = getSite()
     langtool = getattr(site, 'portal_languages', None)
     if langtool is not None:
         supported = [unicode(l) for l in langtool.getSupportedLanguages()]
         # We have a list of languages codes
         langs = [l for l in langs if l in supported]
     return langs
예제 #6
0
 def getLanguageListing(self, combined=False):
     """Return a sequence of language code and language name tuples.
     """
     langs = LanguageAvailability.getLanguageListing(self,
                                                     combined=combined)
     # Filter languages to the supported ones
     site = getSite()
     langtool = getattr(site, 'portal_languages', None)
     if langtool is not None:
         supported = [unicode(l) for l in langtool.getSupportedLanguages()]
         # We have a list of tuples (code, name)
         langs = [l for l in langs if l[0] in supported]
     return langs
예제 #7
0
 def getAvailableLanguages(self, combined=False):
     """Return a sequence of language tags for available languages.
     """
     langs = LanguageAvailability.getAvailableLanguages(self,
                                                        combined=combined)
     # Filter languages to the supported ones
     site = getSite()
     langtool = getattr(site, 'portal_languages', None)
     if langtool is not None:
         supported = [unicode(l) for l in langtool.getSupportedLanguages()]
         # We have a list of languages codes
         langs = [l for l in langs if l in supported]
     return langs
예제 #8
0
 def getLanguages(self, combined=False):
     """Return a sequence of Language objects for available languages.
     """
     langs = LanguageAvailability.getLanguages(self, combined=combined)
     # Filter languages to the supported ones
     site = getSite()
     langtool = getattr(site, 'portal_languages', None)
     if langtool is not None:
         supported = [unicode(l) for l in langtool.getSupportedLanguages()]
         # We have a dictonary of dictonaries, keyed by language code
         new_langs = dict()
         for s in supported:
             new_langs[s] = langs[s]
         langs = new_langs
     return langs
예제 #9
0
 def getLanguages(self, combined=False):
     """Return a sequence of Language objects for available languages.
     """
     langs = LanguageAvailability.getLanguages(self, combined=combined)
     # Filter languages to the supported ones
     site = getSite()
     langtool = getattr(site, 'portal_languages', None)
     if langtool is not None:
         supported = [unicode(l) for l in langtool.getSupportedLanguages()]
         # We have a dictonary of dictonaries, keyed by language code
         new_langs = dict()
         for s in supported:
             new_langs[s] = langs[s]
         langs = new_langs
     return langs