From: Thomas F. <tho...@ru...> - 2015-02-07 19:18:33
|
Git commit 72530a9a7aa5631eb2b45cf8938d7f1bf23583e6 by Thomas Friedrichsmeier. Committed on 07/02/2015 at 19:17. Pushed by tfry into branch 'work/i18n_split_lists'. First part of splitting .rkh translation units on <ul>, <li>, and friends: Split units on extraction. M +2 -1 rkward/misc/xmlhelper.cpp M +15 -2 scripts/update_plugin_messages.py http://commits.kde.org/rkward/72530a9a7aa5631eb2b45cf8938d7f1bf23583e6 diff --git a/rkward/misc/xmlhelper.cpp b/rkward/misc/xmlhelper.cpp index 78edcf3..fc8cd42 100644 --- a/rkward/misc/xmlhelper.cpp +++ b/rkward/misc/xmlhelper.cpp @@ -326,7 +326,8 @@ QString translateChunk (const QString &chunk, const QString &context, bool add_p for (int i = 0; i < paras.count (); ++i) { QString para = paras[i].simplified (); - if (!para.isEmpty ()) { + if (para.isEmpty ()) ret.append (QChar (' ')); + else { if (!ret.isEmpty ()) ret.append ("\n"); // Oh, crap. Fix up after some differences between python message extraction and qt's. para.replace ("<li> <", "<li><"); diff --git a/scripts/update_plugin_messages.py b/scripts/update_plugin_messages.py index 18cb068..4e469a5 100755 --- a/scripts/update_plugin_messages.py +++ b/scripts/update_plugin_messages.py @@ -45,6 +45,8 @@ MSGFMT = os.getenv ('MSGFMT', "msgfmt --check") # list of tag-names the content of which to extract in full (including, possibly, HTML-tags, within) text_containers = ['section', 'text', 'related', 'title', 'summary', 'usage', 'technical', 'setting'] +# (HTML)-elements on which to split translation units within a text_container +text_splitting_elements = ['p', 'ul', 'ol', 'li'] # Elements that refer to a different (labelled) element by id referring_elements = ['setting', 'caption'] # Map of elements to attributes to extract, and default context info @@ -170,9 +172,19 @@ def normalize (text): # get everything inside the element as text. Might include further xml tags. def getFullText (element): + childnodes = element.childNodes + ## Skip over anything containing only a <link href="rkward://"/> and nothing else; a somewhat important special case ("Related"-section) + ## NOTE: The second attribute, here, is the LINE_DUMMY_ATTR , hence checking for cn.attributes.length == 2 + if (childnodes.length == 1): + cn = childnodes.item (0) + if (not cn.hasChildNodes()) and (cn.nodeType == cn.ELEMENT_NODE) and (cn.tagName == "link") and (cn.attributes.length == 2) and (cn.getAttribute ("href").startswith ("rkward://")): + return "" + rc = [] - for cn in element.childNodes: - if cn.nodeType != cn.COMMENT_NODE: + for cn in childnodes: + if (cn.nodeType == cn.ELEMENT_NODE) and (cn.tagName in text_splitting_elements): + rc.append ("\n\n" + getFullText (cn) + "\n\n") + elif cn.nodeType != cn.COMMENT_NODE: rc.append(stripLineDummy (cn.toxml ("utf-8"))) return ''.join (rc).strip ().replace ("&", "&") @@ -229,6 +241,7 @@ def handleNode (node): elif (node.tagName in text_containers): textchunks = getFullText (node).split ("\n\n") for chunk in textchunks: + chunk = chunk.strip () if (chunk != ""): outfile.write (getI18nComment (node)) writeouti18n ("i18n (" + quote (normalize (chunk)) + ");") |