Browse Source

Make templates compatible to pybabel parsing.

pull/108/head
Simon Eisenmann 12 years ago
parent
commit
230d70ec7e
  1. 6
      src/i18n/Makefile.am
  2. 62
      src/i18n/helpers/checkHTML.py

6
src/i18n/Makefile.am

@ -31,20 +31,22 @@ build: update
done done
$(PYTHON) "$(CURDIR)/helpers/languages.py" > "$(ROOT)/static/translation/languages.js" $(PYTHON) "$(CURDIR)/helpers/languages.py" > "$(ROOT)/static/translation/languages.js"
extract: TEMPFOLDER := $(shell mktemp -t XXXXXXXXi18n -d)
extract: extract:
@if [ "$(PYBABEL)" = "" ]; then echo "Command 'pybabel' not found, required when extracting i18n"; exit 1; fi @if [ "$(PYBABEL)" = "" ]; then echo "Command 'pybabel' not found, required when extracting i18n"; exit 1; fi
$(PYTHON) "$(CURDIR)/helpers/checkHTML.py" "$(ROOT)/static/partials" "$(TEMPFOLDER)"
$(PYBABEL) extract -F "$(CURDIR)/babel.cfg" --no-default-keywords -k _n:1,2 -k _ \ $(PYBABEL) extract -F "$(CURDIR)/babel.cfg" --no-default-keywords -k _n:1,2 -k _ \
--no-location --project="$(I18N_PROJECT)" --version="$(I18N_VERSION)" \ --no-location --project="$(I18N_PROJECT)" --version="$(I18N_VERSION)" \
--copyright-holder="$(I18N_COPYRIGHT)" --msgid-bugs-address="$(I18N_BUG_ADDRESS)" \ --copyright-holder="$(I18N_COPYRIGHT)" --msgid-bugs-address="$(I18N_BUG_ADDRESS)" \
-o "$(CURDIR)/messages.pot" \ -o "$(CURDIR)/messages.pot" \
"$(ROOT)/html" \ "$(ROOT)/html" \
"$(ROOT)/static/partials" \ "$(TEMPFOLDER)" \
"$(ROOT)/static/partials/page" \
"$(ROOT)/static/js" \ "$(ROOT)/static/js" \
"$(ROOT)/static/js/controllers" \ "$(ROOT)/static/js/controllers" \
"$(ROOT)/static/js/directives" \ "$(ROOT)/static/js/directives" \
"$(ROOT)/static/js/services" \ "$(ROOT)/static/js/services" \
"$(ROOT)/static/js/filters" "$(ROOT)/static/js/filters"
rm -rf $(TEMPFOLDER)
update: LANGUAGES = $(shell $(FIND) ./ -iname '*.po' -printf '%f\n' | $(SED) 's/\.po$$//' | $(SED) 's/\messages-//') update: LANGUAGES = $(shell $(FIND) ./ -iname '*.po' -printf '%f\n' | $(SED) 's/\.po$$//' | $(SED) 's/\messages-//')
update: update:

62
src/i18n/helpers/checkHTML.py

@ -1,41 +1,57 @@
#!/usr/bin/python #!/usr/bin/python
#
# Helper script to make Angular templates parse as jinja templates for translation.
#
# (c)2014 struktur AG
import re
import sys import sys
from jinja2 import Environment, FileSystemLoader import os
import fnmatch
from jinja2 import Environment, FileSystemLoader, exceptions
def log(error): def main(templates, output_folder=None):
print error
def main(templates): files = []
for root, dirnames, filenames in os.walk(templates):
for filename in fnmatch.filter(filenames, '*.html'):
files.append(os.path.join(root, filename))
env = Environment(loader=FileSystemLoader(templates), extensions=['jinja2.ext.i18n']) env = Environment(extensions=['jinja2.ext.i18n'])
env.install_null_translations()
print env.list_templates() for fn in files:
print dir(env)
env.compile_templates("lala", log_function=log) fp = file(fn, "rb")
html = fp.read()
fp.close()
#for t in env.list_templates(): html = unicode(html, "UTF-8")
# template = env.get_template(t) html = re.sub(r"\|(\w|:)+", "", html)
# output = template.render()
#template = env.get_template('test.html') if output_folder:
#output_from_parsed_template = template.render(foo='Hello World!') tf = os.path.join(output_folder, os.path.split(fn)[1])
#print output_from_parsed_template fp = file(tf, "wb")
fp.write(html.encode("UTF-8"))
fp.close()
# to save the results try:
#with open("my_new_file.html", "wb") as fh: t = env.from_string(html)
# fh.write(output_from_parsed_template) except exceptions.TemplateSyntaxError, exc:
print >>sys.stderr, "Failed to parse: %s at line %d" % (fn, exc.lineno)
raise
return 0
if __name__ == "__main__": if __name__ == "__main__":
args = sys.argv[1:] args = sys.argv[1:]
if not args: if not args:
print "Usage: %s templates-folder" % sys.argv[0] print "Usage: %s templates-folder [output-folder]" % sys.argv[0]
sys.exit(1) sys.exit(1)
status = 0 try:
for folder in args: status = main(*args)
main(folder) except Exception, exc:
print >> sys.stderr, exc
status = 6
sys.exit(status) sys.exit(status)

Loading…
Cancel
Save