1
2 import os, copy, linda, gettext
3 from gettext import _translations
4
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
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