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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

 

import gettext 

import os 

 

try: 

    from pkg_resources import resource_filename 

except ImportError: 

    resource_filename = None 

 

from speaklater import make_lazy_string 

 

from . import core 

 

import logging 

log = logging.getLogger(__name__) 

 

 

def get_localedir(): 

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

    locale_dir = '' 

    if resource_filename is not None: 

        try: 

            locale_dir = resource_filename(__name__, "/i18n") 

        except NotImplementedError: 

            pass 

    if not hasattr(os, 'access'): 

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

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

        return locale_dir 

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

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

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

    return locale_dir 

 

 

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

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

            localedir=localedir, fallback=True).ugettext 

 

 

def tw2_translation_string(sval): 

 

    def lookup_provided_translator(_sval): 

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

        if not mw: 

            return _sval 

 

        try: 

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

        except AttributeError: 

            try: 

                translator = mw.config.translator 

            except AttributeError: 

                return _sval 

 

        return translator(_sval) 

 

    return make_lazy_string(lambda: lookup_provided_translator(sval)) 

 

 

_ = tw2_translation_string 

 

__all__ = [ 

    'tw2_translation_string', 

    '_', 

]