Warning: Can't synchronize with repository "(default)" (Unsupported version control system "svn": No module named svn). Look in the Trac log for more information.

Ticket #1363: tg-translate.diff

File tg-translate.diff, 1.5 KB (added by cvogler, 5 years ago)
  • i18n/kidutils.py

    old new  
    3535    if attr is None:attr = turbogears.config.get("i18n.templateLocaleAttribute", "lang")     
    3636    translate_all(item, item.get(attr), attr) 
    3737    return item 
    38      
    39 def translate_all(tree, lang, attr): 
     38 
     39def __translate_text(text, lang): 
     40    prefix = '' 
     41    postfix = '' 
     42    if len(text) > 0 and text[0].isspace(): prefix = text[0] 
     43    if len(text) > 1 and text[-1].isspace(): postfix = text[-1] 
     44    return prefix + gettext(text.strip(), lang) + postfix 
     45 
     46def translate_all(tree, lang, attr, inroot=True): 
    4047    """Recursive function to translate all text in child elements 
    4148    @param tree: parent ElementTree element 
    4249    @param lang: language setting 
     
    4451    """ 
    4552 
    4653    if tree.text: 
    47         tree.text = gettext(tree.text.strip(), lang) 
     54        tree.text = __translate_text(tree.text, lang) 
     55    if tree.tail and not inroot: 
     56        # Don't translate tail of root. It is beyond the scope of the lang attr  
     57        tree.tail = __translate_text(tree.tail, lang) 
    4858    for element in tree: 
    4959        # check overriding lang attribute 
    5060        if element.get(attr):lang = element.get(attr) 
    51         translate_all(element, lang, attr) 
     61        translate_all(element, lang, attr, False) 
    5262 
    5363def i18n_filter(stream, template, locale=None): 
    5464    """Kid template filter which calls translates all elements matching language