Mercurial > pytouhou-www
diff build_website.py @ 0:0a1d0ab5f518
Initial commit.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Thu, 07 Sep 2017 15:04:29 +0100 |
parents | |
children | 0994ae3e4518 |
line wrap: on
line diff
new file mode 100755 --- /dev/null +++ b/build_website.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python3 + +'''Supervision script for PyTouhou’s website.''' + +import sys +from django.conf import settings + +AVAILABLE_LANGUAGES = ['de', 'en', 'es', 'fr', 'fi', 'it', 'pt'] + + +def make_messages(): + '''Extract translatable strings from the template.''' + + from django.core.management.commands import makemessages + + command = makemessages.Command() + command.stdout = sys.stdout + #command.handle(verbosity=True, ignore_patterns=[], domain='django', exclude=[], extensions=['xhtml'], locale=AVAILABLE_LANGUAGES, keep_pot=True) + command.handle(locale=AVAILABLE_LANGUAGES, exclude=[], domain='django', verbosity=True, all=True, extensions=['xhtml'], symlinks=False, ignore_patterns=[], use_default_ignore_patterns=True, no_wrap=True, no_location=True, no_obsolete=True, keep_pot=True) + + +def compile_messages(): + '''For each locale we support, compile the po file into a mo.''' + + from django.core.management.commands import compilemessages + + command = compilemessages.Command() + command.verbosity = 1 + command.stdout = sys.stdout + command.compile_messages(('locale/%s/LC_MESSAGES' % lang, 'django.po') + for lang in AVAILABLE_LANGUAGES) + + +def main(): + '''Call everything in the correct order.''' + + from subprocess import call + + settings.configure() + make_messages() + compile_messages() + + for language in AVAILABLE_LANGUAGES: + call([sys.argv[0], language]) + + +def generate_page(language): + '''Write a single page, and gzip it for lower network usage.''' + + assert language in AVAILABLE_LANGUAGES + + import django + from django.template import Template, Context + import gzip + + settings.configure(LANGUAGE_CODE=language, LOCALE_PATHS=['locale']) + + django.setup() + + with open('index.tpl.xhtml') as template_file: + template = Template(template_file.read()) + + rendered = template.render(Context({'AVAILABLE_LANGUAGES': + AVAILABLE_LANGUAGES})) + filename = '../index.%s.xhtml' % language + with open(filename, 'w') as out: + out.write(rendered) + with gzip.open(filename + '.gz', 'w') as out: + out.write(rendered.encode('utf-8')) + + +if __name__ == '__main__': + if len(sys.argv) == 1: + main() + else: + generate_page(sys.argv[1])