summaryrefslogtreecommitdiffstats
path: root/pavement.py
diff options
context:
space:
mode:
Diffstat (limited to 'pavement.py')
-rw-r--r--pavement.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/pavement.py b/pavement.py
index ff9e61a9c..d168f23bb 100644
--- a/pavement.py
+++ b/pavement.py
@@ -152,6 +152,8 @@ def generate_locale():
makepot("webUI", path("pyload") / "web" / "app", ["components", "vendor", "gettext"], endings=[".js", ".html"],
xxargs="--language=Python --force-po".split(" "))
+ makehtml("webUI", path("pyload") / "web" / "app" / "templates")
+
path("includes.txt").remove()
print "Locale generated"
@@ -332,3 +334,63 @@ def makepot(domain, p, excludes=[], includes="", endings=[".py"], xxargs=[]):
with open("locale/%s.pot" % domain, "wb") as f:
f.write(content)
+
+def makehtml(domain, p):
+ """ Parses entries from html and append them to existing pot file"""
+
+ pot = path("locale") / "%s.pot" % domain
+
+ with open(pot, 'rb') as f:
+ content = f.readlines()
+
+ msgids = {}
+ # parse existing ids and line
+ for i, line in enumerate(content):
+ if line.startswith("msgid "):
+ msgid = line[6:-1].strip('"')
+ msgids[msgid] = i
+
+ # TODO: parses only n=2 plural
+ single = re.compile(r'\{\{ ?(?:gettext|_) "((?:\\.|[^"\\])*)" ?\}\}')
+ plural = re.compile(r'\{\{ ?(?:ngettext) *"((?:\\.|[^"\\])*)" *"((?:\\.|[^"\\])*)"')
+
+ for f in p.walkfiles():
+ if not f.endswith("html"): continue
+ with open(f, "rb") as html:
+ for i, line in enumerate(html.readlines()):
+ key = None
+ nmessage = plural.search(line)
+ message = single.search(line)
+ if nmessage:
+ key = nmessage.group(1)
+ keyp = nmessage.group(2)
+
+ if key not in msgids:
+ content.append("\n")
+ content.append('msgid "%s"\n' % key)
+ content.append('msgid_plural "%s"\n' % keyp)
+ content.append('msgstr[0] ""\n')
+ content.append('msgstr[1] ""\n')
+ msgids[key] = len(content) - 4
+
+
+ elif message:
+ key = message.group(1)
+
+ if key not in msgids:
+ content.append("\n")
+ content.append('msgid "%s"\n' % key)
+ content.append('msgstr ""\n')
+ msgids[key] = len(content) - 2
+
+ if key:
+ content.insert(msgids[key], "#: %s:%d\n" % (f, i))
+ msgids[key] += 1
+
+
+ with open(pot, 'wb') as f:
+ f.writelines(content)
+
+ print "Parsed html files"
+
+