2 changed files with 43 additions and 25 deletions
@ -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…
Reference in new issue