diff options
Diffstat (limited to 'module/common/pylgettext.py')
| -rw-r--r-- | module/common/pylgettext.py | 62 | 
1 files changed, 62 insertions, 0 deletions
| diff --git a/module/common/pylgettext.py b/module/common/pylgettext.py new file mode 100644 index 000000000..ae6d39325 --- /dev/null +++ b/module/common/pylgettext.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from gettext import * + +_searchdirs = None + +origfind = find + +def setpaths(pathlist): +    global _searchdirs +    if isinstance(pathlist, list): +        _searchdirs = pathlist +    else: +        _searchdirs = list(pathlist) + + +def addpath(path): +    global _searchdirs +    if _searchdirs is None: +        _searchdirs = list(path) +    else: +        if path not in _searchdirs: +            _searchdirs.append(path) + + +def delpath(path): +    global _searchdirs +    if _searchdirs is not None: +        if path in _searchdirs: +            _searchdirs.remove(path) + + +def clearpath(): +    global _searchdirs +    if _searchdirs is not None: +        _searchdirs = None + + +def find(domain, localedir=None, languages=None, all=False): +    if _searchdirs is None: +        return origfind(domain, localedir, languages, all) +    searches = [localedir] + _searchdirs +    results = list() +    for dir in searches: +        res = origfind(domain, dir, languages, all) +        if all is False: +            results.append(res) +        else: +            results.extend(res) +    if all is False: +        results = filter(lambda x: x is not None, results) +        if len(results) == 0: +            return None +        else: +            return results[0] +    else: +        return results + +#Is there a smarter/cleaner pythonic way for this? +translation.__globals__['find'] = find + | 
