Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1 

2import gettext 

3import os 

4 

5import six 

6 

7try: 

8 from pkg_resources import resource_filename 

9except ImportError: 

10 resource_filename = None 

11 

12from speaklater import make_lazy_string 

13 

14from . import core 

15 

16import logging 

17log = logging.getLogger(__name__) 

18 

19 

20def get_localedir(): 

21 """Get the location of locales.""" 

22 locale_dir = '' 

23 if resource_filename is not None: 

24 try: 

25 locale_dir = resource_filename(__name__, "i18n") 

26 except NotImplementedError: 

27 pass 

28 if not hasattr(os, 'access'): 

29 return os.path.join(os.path.dirname(__file__), 'i18n') 

30 if os.access(locale_dir, os.R_OK | os.X_OK): 

31 return locale_dir 

32 locale_dir = os.path.join(os.path.dirname(__file__), 'i18n') 

33 if not os.access(locale_dir, os.R_OK | os.X_OK): 

34 locale_dir = os.path.normpath('/usr/share/locale') 

35 return locale_dir 

36 

37 

38def get_translator(lang=None, domain='tw2core', localedir=get_localedir()): 

39 if six.PY3: 

40 return gettext.translation(domain=domain, languages=lang, 

41 localedir=localedir, fallback=True).gettext 

42 else: 

43 return gettext.translation(domain=domain, languages=lang, 

44 localedir=localedir, fallback=True).ugettext 

45 

46 

47def tw2_translation_string(sval): 

48 

49 def lookup_provided_translator(_sval): 

50 mw = core.request_local().get('middleware') 

51 if not mw: 

52 return _sval 

53 

54 try: 

55 translator = get_translator(mw.config.get_lang()) 

56 except AttributeError: 

57 try: 

58 translator = mw.config.translator 

59 except AttributeError: 

60 return _sval 

61 

62 return translator(_sval) 

63 

64 return make_lazy_string(lambda: lookup_provided_translator(sval)) 

65 

66 

67_ = tw2_translation_string 

68 

69__all__ = [ 

70 'tw2_translation_string', 

71 '_', 

72]