71 lines
2.0 KiB
Python
Executable File
71 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import os, sys
|
|
from polib import pofile
|
|
from config import CONFIGURATION
|
|
from extract import SOURCE_WARN
|
|
from execute import execute
|
|
|
|
TRANSIFEX_HEADER = 'Translations in this file have been downloaded from %s'
|
|
TRANSIFEX_URL = 'https://www.transifex.com/projects/p/edx-studio/'
|
|
|
|
def push():
|
|
execute('tx push -s')
|
|
|
|
def pull():
|
|
for locale in CONFIGURATION.locales:
|
|
if locale != CONFIGURATION.source_locale:
|
|
execute('tx pull -l %s' % locale)
|
|
clean_translated_locales()
|
|
|
|
|
|
def clean_translated_locales():
|
|
"""
|
|
Strips out the warning from all translated po files
|
|
about being an English source file.
|
|
"""
|
|
for locale in CONFIGURATION.locales:
|
|
if locale != CONFIGURATION.source_locale:
|
|
clean_locale(locale)
|
|
|
|
def clean_locale(locale):
|
|
"""
|
|
Strips out the warning from all of a locale's translated po files
|
|
about being an English source file.
|
|
Iterates over machine-generated files.
|
|
"""
|
|
dirname = CONFIGURATION.get_messages_dir(locale)
|
|
for filename in ('django-partial.po', 'djangojs.po', 'mako.po'):
|
|
clean_file(dirname.joinpath(filename))
|
|
|
|
def clean_file(file):
|
|
"""
|
|
Strips out the warning from a translated po file about being an English source file.
|
|
Replaces warning with a note about coming from Transifex.
|
|
"""
|
|
po = pofile(file)
|
|
if po.header.find(SOURCE_WARN) != -1:
|
|
new_header = get_new_header(po)
|
|
new = po.header.replace(SOURCE_WARN, new_header)
|
|
po.header = new
|
|
po.save()
|
|
|
|
def get_new_header(po):
|
|
team = po.metadata.get('Language-Team', None)
|
|
if not team:
|
|
return TRANSIFEX_HEADER % TRANSIFEX_URL
|
|
else:
|
|
return TRANSIFEX_HEADER % team
|
|
|
|
if __name__ == '__main__':
|
|
if len(sys.argv)<2:
|
|
raise Exception("missing argument: push or pull")
|
|
arg = sys.argv[1]
|
|
if arg == 'push':
|
|
push()
|
|
elif arg == 'pull':
|
|
pull()
|
|
else:
|
|
raise Exception("unknown argument: (%s)" % arg)
|
|
|