[imp] improved i18n to scan all files
bzr revid: nicolas.vanhoren@openerp.com-20110817112828-tghtfms3zm3r0044
This commit is contained in:
+36
-17
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user