diff options
| author | niv-openerp <nicolas.vanhoren@openerp.com> | 2011-08-17 13:28:28 +0200 |
|---|---|---|
| committer | niv-openerp <nicolas.vanhoren@openerp.com> | 2011-08-17 13:28:28 +0200 |
| commit | 4d12385eab0d00a5b87f8277a3c116a0e8138d71 (patch) | |
| tree | c0c409cf569c1c4d1b92a32896e26906b21333ca /npybabel.py | |
| parent | 6bf354e880a63c5f1ddfd4c45f585778dc286304 (diff) | |
[imp] improved i18n to scan all files
bzr revid: nicolas.vanhoren@openerp.com-20110817112828-tghtfms3zm3r0044
Diffstat (limited to 'npybabel.py')
| -rwxr-xr-x | npybabel.py | 53 |
1 files changed, 36 insertions, 17 deletions
diff --git a/npybabel.py b/npybabel.py index 3d9deaec676..0a3c75025c9 100755 --- a/npybabel.py +++ b/npybabel.py @@ -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 |
