##// END OF EJS Templates
i18n: updated outdated comment
Martin Geisler -
r9319:8982eb29 default
parent child Browse files
Show More
@@ -1,48 +1,51
1 # i18n.py - internationalization support for mercurial
1 # i18n.py - internationalization support for mercurial
2 #
2 #
3 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
3 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2, incorporated herein by reference.
6 # GNU General Public License version 2, incorporated herein by reference.
7
7
8 import encoding
8 import encoding
9 import gettext, sys, os
9 import gettext, sys, os
10
10
11 # modelled after templater.templatepath:
11 # modelled after templater.templatepath:
12 if hasattr(sys, 'frozen'):
12 if hasattr(sys, 'frozen'):
13 module = sys.executable
13 module = sys.executable
14 else:
14 else:
15 module = __file__
15 module = __file__
16
16
17 base = os.path.dirname(module)
17 base = os.path.dirname(module)
18 for dir in ('.', '..'):
18 for dir in ('.', '..'):
19 localedir = os.path.normpath(os.path.join(base, dir, 'locale'))
19 localedir = os.path.normpath(os.path.join(base, dir, 'locale'))
20 if os.path.isdir(localedir):
20 if os.path.isdir(localedir):
21 break
21 break
22
22
23 t = gettext.translation('hg', localedir, fallback=True)
23 t = gettext.translation('hg', localedir, fallback=True)
24
24
25 def gettext(message):
25 def gettext(message):
26 """Translate message.
26 """Translate message.
27
27
28 The message is looked up in the catalog to get a Unicode string,
28 The message is looked up in the catalog to get a Unicode string,
29 which is encoded in the local encoding before being returned.
29 which is encoded in the local encoding before being returned.
30
30
31 Important: message is restricted to characters in the encoding
31 Important: message is restricted to characters in the encoding
32 given by sys.getdefaultencoding() which is most likely 'ascii'.
32 given by sys.getdefaultencoding() which is most likely 'ascii'.
33 """
33 """
34 # If message is None, t.ugettext will return u'None' as the
34 # If message is None, t.ugettext will return u'None' as the
35 # translation whereas our callers expect us to return None.
35 # translation whereas our callers expect us to return None.
36 if message is None:
36 if message is None:
37 return message
37 return message
38
38
39 # We cannot just run the text through encoding.tolocal since that
40 # leads to infinite recursion when encoding._encoding is invalid.
41 try:
39 try:
40 # encoding.tolocal cannot be used since it will first try to
41 # decode the Unicode string. Calling u.decode(enc) really
42 # means u.encode(sys.getdefaultencoding()).decode(enc). Since
43 # the Python encoding defaults to 'ascii', this fails if the
44 # translated string use non-ASCII characters.
42 u = t.ugettext(message)
45 u = t.ugettext(message)
43 return u.encode(encoding.encoding, "replace")
46 return u.encode(encoding.encoding, "replace")
44 except LookupError:
47 except LookupError:
45 return message
48 return message
46
49
47 _ = gettext
50 _ = gettext
48
51
General Comments 0
You need to be logged in to leave comments. Login now