##// END OF EJS Templates
templatefilters: strings are iterators, but shouldn't be joined anyway
templatefilters: strings are iterators, but shouldn't be joined anyway

File last commit:

r7948:de377b1a default
r8015:b5db7dcc default
Show More
i18n.py
49 lines | 1.4 KiB | text/x-python | PythonLexer
Benoit Boissinot
i18n first part: make '_' available for files who need it
r1400 """
i18n.py - internationalization support for mercurial
Vadim Gelfer
update copyrights.
r2859 Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
Benoit Boissinot
i18n first part: make '_' available for files who need it
r1400
This software may be used and distributed according to the terms
of the GNU General Public License, incorporated herein by reference.
"""
Matt Mackall
move encoding bits from util to encoding...
r7948 import gettext, sys, os, encoding
Martin Geisler
i18n: lookup .mo files in private locale/ directory...
r7650
# modelled after templater.templatepath:
if hasattr(sys, 'frozen'):
module = sys.executable
else:
module = __file__
base = os.path.dirname(module)
for dir in ('.', '..'):
localedir = os.path.normpath(os.path.join(base, dir, 'locale'))
if os.path.isdir(localedir):
break
t = gettext.translation('hg', localedir, fallback=True)
Martin Geisler
i18n: encode output in user's local encoding...
r7651
def gettext(message):
"""Translate message.
The message is looked up in the catalog to get a Unicode string,
which is encoded in the local encoding before being returned.
Important: message is restricted to characters in the encoding
given by sys.getdefaultencoding() which is most likely 'ascii'.
"""
# If message is None, t.ugettext will return u'None' as the
# translation whereas our callers expect us to return None.
if message is None:
return message
Matt Mackall
move encoding bits from util to encoding...
r7948 # We cannot just run the text through encoding.tolocal since that
# leads to infinite recursion when encoding._encoding is invalid.
Martin Geisler
i18n: encode output in user's local encoding...
r7651 try:
u = t.ugettext(message)
Matt Mackall
move encoding bits from util to encoding...
r7948 return u.encode(encoding.encoding, "replace")
Martin Geisler
i18n: encode output in user's local encoding...
r7651 except LookupError:
return message
Matt Mackall
Enable gettext translations...
r3888 _ = gettext
Martin Geisler
i18n: encode output in user's local encoding...
r7651