Package linda :: Module mygettext
[hide private]

Source Code for Module linda.mygettext

 1  # Copyright 2003 Steve Kowalik. Heavily based on gettext.py from Python 2.3. 
 2  import os, copy, linda, gettext 
 3  from gettext import _translations 
 4   
5 -def translation(domain):
6 mofiles = find(domain) 7 if not mofiles: 8 return gettext.NullTranslations() 9 result = None 10 for mofile in mofiles: 11 key = os.path.abspath(mofile) 12 t = _translations.get(key) 13 if t is None: 14 t = _translations.setdefault(key, \ 15 gettext.GNUTranslations(open(mofile, 'rb'))) 16 t = copy.copy(t) 17 if result is None: 18 result = t 19 else: 20 result.add_fallback(t) 21 return result
22
23 -def find(domain):
24 localedir = '/usr/share/locale' 25 languages = [] 26 for envar in ('LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG'): 27 if os.environ.get(envar): 28 languages = os.environ.get(envar).split(':') 29 break 30 if 'en' not in languages: 31 languages.append('en') 32 nelangs = [] 33 for lang in languages: 34 for nelang in gettext._expand_lang(lang): 35 if nelang not in nelangs: 36 nelangs.append(nelang) 37 result = [] 38 for lang in nelangs: 39 mofile = os.path.join(linda.root, 'po', '%s.mo' % lang) 40 if os.path.exists(mofile): 41 result.append(mofile) 42 return result
43