Beispiel #1
0
def build_site(lang):
    context = {'LANG': lang, 'DIR': text_dir(lang)}

    outpath = os.path.join(renderpath, lang)
    if not os.path.exists(outpath):
        os.makedirs(outpath)
    site = make_site(outpath=outpath,
                     searchpath=searchpath,
                     extensions=extensions,
                     env_globals=context)

    translator = translate.Translation(lang,
                                       ['thunderbird/start/release', 'main'])
    gettext_translator = translate.gettext_object(lang)
    site._env.install_gettext_translations(gettext_translator)

    def l10n_has_tag(tag):
        return tag in translator.lang_file_tag_set('thunderbird/start/release',
                                                   lang)

    # Add l10n_css function to context
    site._env.globals.update(l10n_css=translator.l10n_css,
                             l10n_has_tag=l10n_has_tag,
                             **helper.contextfunctions)
    site.render(use_reloader=False)
    shutil.rmtree(renderpath + '/media', ignore_errors=True)
    shutil.copytree(staticpath, renderpath + '/media')
def build_site(lang):
    version = helper.thunderbird_desktop.latest_version('release')
    context = {'LANG': lang,
               'DIR': text_dir(lang),
               'platform': 'desktop',
               'query': '',
               'platforms': helper.thunderbird_desktop.platforms('release'),
               'full_builds_version': version.split('.', 1)[0],
               'full_builds': helper.thunderbird_desktop.get_filtered_full_builds('release', helper.thunderbird_desktop.latest_version()),
               'channel_label': 'Thunderbird',
               'releases': helper.thunderbird_desktop.list_releases()
                }

    outpath = os.path.join(renderpath, lang)
    if not os.path.exists(outpath):
        os.makedirs(outpath)
    site = make_site(outpath=outpath, searchpath=searchpath, extensions=extensions, env_globals=context)

    translator = translate.Translation(lang, ['thunderbird/index', 'thunderbird/features', 'thunderbird/channel', 'main'])
    site._env.install_gettext_translations(translator)

    def l10n_has_tag(tag):
        return tag in translator.lang_file_tag_set('thunderbird/features', lang)

    # Add l10n_css function to context
    site._env.globals.update(translations=translator.get_translations(), l10n_css=translator.l10n_css, l10n_has_tag=l10n_has_tag, settings=settings, **helper.contextfunctions)
    site.render(use_reloader=False)

    # Render release notes and system requirements for en-US only.
    if lang == settings.LANGUAGE_CODE:
        notelist = releasenotes.notes
        e = site._env
        e.filters["markdown"] = helper.safe_markdown
        e.filters["f"] = helper.f
        e.filters["l10n_format_date"] = helper.l10n_format_date
        template = e.get_template('_includes/release-notes.html')
        e.globals.update(feedback=releasenotes.settings["feedback"], bugzilla=releasenotes.settings["bugzilla"])
        for k, n in notelist.iteritems():
            if 'beta' in k:
                e.globals.update(channel='Beta')
            else:
                e.globals.update(channel='Release')
            n["release"]["release_date"] = n["release"].get("release_date", helper.thunderbird_desktop.get_release_date(k))
            n["release"]["release_date"] = parse(str(n["release"]["release_date"]))
            e.globals.update(**n)
            target = os.path.join(outpath,'thunderbird', str(k), 'releasenotes')
            mkdir(target)
            with open(os.path.join(target, 'index.html'), "wb") as f:
                print "Rendering {0}/index.html...".format(target)
                o = template.render()
                f.write(o.encode('utf8'))

            target = os.path.join(outpath,'thunderbird', str(k), 'system-requirements')
            mkdir(target)
            newtemplate = e.get_template('_includes/system_requirements.html')
            with open(os.path.join(target, 'index.html'), "wb") as f:
                print "Rendering {0}/index.html...".format(target)
                o = newtemplate.render()
                f.write(o.encode('utf8'))
def make_reply(user_msg):
    reply = None
    global trans
    if user_msg is not None:
        if user_msg == 'translate':
            trans = True
            reply = 'Translation is turned On.'
        elif user_msg == '~translate':
            trans = False
            reply = 'Translation is turned Off.'
        elif trans == True:
            reply = translate.Translation(user_msg)
        else:
            reply = 'Translation is Off. Send "translate" to start Translation.'
    return reply
Beispiel #4
0
def download_thunderbird(ctx, channel='release', dom_id=None,
                         locale=None, force_direct=False,
                         alt_copy=None, button_color='button-green'):
    """ Output a "Download Thunderbird" button.

    :param ctx: context from calling template.
    :param channel: name of channel: 'release', 'beta' or 'alpha'.
    :param dom_id: Use this string as the id attr on the element.
    :param locale: The locale of the download. Default to locale of request.
    :param force_direct: Force the download URL to be direct.
    :param alt_copy: Specifies alternate copy to use for download buttons.
    :param button_color: color of download button. Default to 'green'.
    :return: The button html.
    """
    alt_channel = '' if channel == 'release' else channel
    locale = ctx.get('LANG', None)
    dom_id = dom_id or 'download-button-desktop-%s' % channel

    l_version = thunderbird_desktop.latest_builds(locale, channel)
    if l_version:
        version, platforms = l_version
    else:
        locale = 'en-US'
        version, platforms = thunderbird_desktop.latest_builds('en-US', channel)

    # Gather data about the build for each platform
    builds = []

    for plat_os, plat_os_pretty in thunderbird_desktop.platform_labels.iteritems():
        # And generate all the info
        download_link = thunderbird_desktop.get_download_url(
            channel, version, plat_os, locale,
            force_direct=force_direct,
        )

        # If download_link_direct is False the data-direct-link attr
        # will not be output, and the JS won't attempt the IE popup.
        if force_direct:
            # no need to run get_download_url again with the same args
            download_link_direct = False
        else:
            download_link_direct = thunderbird_desktop.get_download_url(
                channel, version, plat_os, locale,
                force_direct=True,
            )
            if download_link_direct == download_link:
                download_link_direct = False

        builds.append({'os': plat_os,
                       'os_pretty': plat_os_pretty,
                       'download_link': download_link,
                       'download_link_direct': download_link_direct})

    # Get the native name for current locale
    langs = thunderbird_desktop.languages
    locale_name = langs[locale]['native'] if locale in langs else locale

    data = {
        'locale_name': locale_name,
        'version': version,
        'product': 'thunderbird',
        'builds': builds,
        'id': dom_id,
        'channel': alt_channel,
        'alt_copy': alt_copy,
        'button_color': button_color,
    }
    loader = jinja2.FileSystemLoader(searchpath=settings.WEBSITE_PATH)
    env = jinja2.Environment(loader=loader, extensions=['jinja2.ext.i18n'])
    translator = translate.Translation(locale, ['download_button', 'main'])
    env.install_gettext_translations(translator)
    env.globals.update(**ctx)
    template = env.get_template('_includes/download-button.html')

    html = template.render(data)
    return jinja2.Markup(html)
import os
import sys
os.chdir('..')
sys.path.append('.')

import polib
import settings
import translate

# This is a ridiculous hack to get line lengths back to what Pontoon expects,
# which avoids messy git diffs with unnecessary line length changes all over
# the .po files.

for lang in settings.PROD_LANGUAGES:
    if lang != 'en-US':
        popath = 'locale/{0}/LC_MESSAGES/messages.po'.format(
            lang.replace('-', '_'))
        po = polib.pofile(popath, wrapwidth=200)
        translator = translate.Translation(lang, ['thunderbird/start/release'])
        po.save()
def build_site(lang):
    version = helper.thunderbird_desktop.latest_version('release')
    caldata = helper.load_calendar_json('media/caldata/calendars.json')
    context = {
        'LANG':
        lang,
        'current_year':
        date.today().year,
        'DIR':
        text_dir(lang),
        'platform':
        'desktop',
        'query':
        '',
        'platforms':
        helper.thunderbird_desktop.platforms('release'),
        'full_builds_version':
        version.split('.', 1)[0],
        'full_builds':
        helper.thunderbird_desktop.get_filtered_full_builds(
            'release', helper.thunderbird_desktop.latest_version()),
        'full_builds_beta':
        helper.thunderbird_desktop.get_filtered_full_builds(
            'beta', helper.thunderbird_desktop.latest_version('beta')),
        'channel_label':
        'Thunderbird',
        'releases':
        helper.thunderbird_desktop.list_releases(),
        'calendars':
        caldata['calendars'],
        'letters':
        caldata['letters'],
        'CALDATA_URL':
        settings.CALDATA_URL,
        'latest_thunderbird_version':
        version,
    }

    outpath = os.path.join(renderpath, lang)
    if not os.path.exists(outpath):
        os.makedirs(outpath)
    site = make_site(outpath=outpath,
                     searchpath=searchpath,
                     extensions=extensions,
                     env_globals=context)

    translator = translate.Translation(lang, [
        'thunderbird/index', 'thunderbird/features', 'thunderbird/channel',
        'main', 'download_button'
    ])
    gettext_translator = translate.gettext_object(lang)
    site._env.install_gettext_translations(gettext_translator)

    def l10n_has_tag(tag):
        return tag in translator.lang_file_tag_set('thunderbird/features',
                                                   lang)

    # Add l10n_css function to context.
    site._env.globals.update(translations=translator.get_translations(),
                             l10n_css=translator.l10n_css,
                             l10n_has_tag=l10n_has_tag,
                             settings=settings,
                             **helper.contextfunctions)
    site._env.filters["markdown"] = helper.safe_markdown
    site._env.filters["f"] = helper.f
    site._env.filters["l10n_format_date"] = helper.l10n_format_date
    site.render(use_reloader=False)

    # Render release notes and system requirements for en-US only.
    if lang == settings.LANGUAGE_CODE:
        notelist = releasenotes.notes
        e = site._env
        template = e.get_template('_includes/release-notes.html')
        e.globals.update(feedback=releasenotes.settings["feedback"],
                         bugzilla=releasenotes.settings["bugzilla"])
        for k, n in notelist.iteritems():
            if 'beta' in k:
                e.globals.update(channel='Beta', channel_name='Beta')
            else:
                e.globals.update(channel='Release', channel_name='Release')
            n["release"]["release_date"] = n["release"].get(
                "release_date", helper.thunderbird_desktop.get_release_date(k))

            # If there's no data at all, we can't parse an empty string for a date.
            if n["release"]["release_date"]:
                n["release"]["release_date"] = parse(
                    str(n["release"]["release_date"]))
            e.globals.update(**n)
            target = os.path.join(outpath, 'thunderbird', str(k),
                                  'releasenotes')
            mkdir(target)
            with open(os.path.join(target, 'index.html'), "wb") as f:
                print "Rendering {0}/index.html...".format(target)
                o = template.render()
                f.write(o.encode('utf8'))

            target = os.path.join(outpath, 'thunderbird', str(k),
                                  'system-requirements')
            mkdir(target)
            newtemplate = e.get_template('_includes/system_requirements.html')
            with open(os.path.join(target, 'index.html'), "wb") as f:
                print "Rendering {0}/index.html...".format(target)
                o = newtemplate.render()
                f.write(o.encode('utf8'))

        # Build htaccess files for sysreq and release notes redirects.
        print "Writing htaccess files..."
        sysreq_path = os.path.join(renderpath, 'system-requirements')
        notes_path = os.path.join(renderpath, 'notes')
        write_htaccess(
            sysreq_path, settings.CANONICAL_URL +
            helper.thunderbird_url('system-requirements'))
        write_htaccess(
            notes_path,
            settings.CANONICAL_URL + helper.thunderbird_url('releasenotes'))