##// END OF EJS Templates
transaction: support multiple, separate transactions...
transaction: support multiple, separate transactions Solves that committed (closed) transactions may linger and be returned on subsequent transaction calls, even though a new transaction should be made, rather than a new nested transaction. This also fixes a race condition with the use of weakref.

File last commit:

r7948:de377b1a default
r8072:ecf77954 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