[imp] improved i18n to scan all files

bzr revid: nicolas.vanhoren@openerp.com-20110817112828-tghtfms3zm3r0044
This commit is contained in:
niv-openerp
2011-08-17 13:28:28 +02:00
parent 6bf354e880
commit 4d12385eab
12 changed files with 604 additions and 27 deletions
+36 -17
View File
@@ -5,15 +5,30 @@ import sys
from pkg_resources import load_entry_point
import re
import json
import xml.etree.ElementTree as elt
if __name__ == '__main__':
sys.exit(
load_entry_point('Babel==0.9.6', 'console_scripts', 'pybabel')()
)
QWEB_EXPR = re.compile(r"""(?:\< *t\-tr *\>(.*?)\< *\/t\-tr *\>)|(?:\_t *\( *((?:"(?:[^"\\]|\\.)*")|(?:'(?:[^'\\]|\\.)*')) *\))""")
XML_GROUP = 1
JS_GROUP = 2
XMLJS_EXPR = re.compile(r"""(?:\_t *\( *((?:"(?:[^"\\]|\\.)*")|(?:'(?:[^'\\]|\\.)*')) *\))""")
def extract_xmljs(fileobj, keywords, comment_tags, options):
content = fileobj.read()
found = XMLJS_EXPR.finditer(content)
result = []
index = 0
line_nbr = 0
for f in found:
mes = f.group(1)
mes = json.loads(mes)
while index < f.start():
if content[index] == "\n":
line_nbr += 1
index += 1
result.append((line_nbr, None, mes, ""))
return result
def extract_qweb(fileobj, keywords, comment_tags, options):
"""Extract messages from XXX files.
@@ -28,19 +43,23 @@ def extract_qweb(fileobj, keywords, comment_tags, options):
tuples
:rtype: ``iterator``
"""
content = fileobj.read()
found = QWEB_EXPR.finditer(content)
result = []
index = 0
line_nbr = 0
for f in found:
group = XML_GROUP if f.group(XML_GROUP) else JS_GROUP
mes = f.group(group)
if group == JS_GROUP:
mes = json.loads(mes)
while index < f.start():
if content[index] == "\n":
line_nbr += 1
index += 1
result.append((line_nbr, None, mes, ""))
def handle_text(str):
str = (str or "").strip()
if not str:
return
result.append((0, None, str, ""))
def iter_elements(current_element):
for el in current_element:
if "t-js" not in el.attrib and \
not ("t-jquery" in el.attrib and "t-operation" not in el.attrib) and \
not ("t-trad" in el.attrib and el.attrib["t-trad"].strip() == "off"):
handle_text(el.text)
iter_elements(el)
handle_text(el.tail)
tree = elt.parse(fileobj)
iter_elements(tree.getroot())
return result