##// END OF EJS Templates
extensions: list up only enabled extensions, if "ui" is specified...
extensions: list up only enabled extensions, if "ui" is specified Before this patch, "extensions.extensions()" always lists up all loaded extensions. So, commands handling multiple repositories at a time like below enable extensions unexpectedly. - clone from or push to localhost: extensions enabled only in the source are enabled also in the destination - pull from localhost: extensions enabled only in the destination are enabled also in the source - recursive execution in subrepo tree: extensions enabled only in the parent or some of siblings in the tree are enabled also in others In addition to it, extensions disabled locally may be enabled unexpectedly. This patch checks whether each of extensions should be listed up or not, if "ui" is specified to "extensions.extensions()", and invokes "reposetup()" of each extensions only for repositories enabling it.

File last commit:

r14975:b6453836 default
r19777:6f72e7d2 default
Show More
i18n.py
63 lines | 2.1 KiB | text/x-python | PythonLexer
Martin Geisler
put license and copyright info into comment blocks
r8226 # i18n.py - internationalization support for mercurial
#
# Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms of the
Matt Mackall
Update license to GPLv2+
r10263 # GNU General Public License version 2 or any later version.
Benoit Boissinot
i18n first part: make '_' available for files who need it
r1400
Simon Heimberg
separate import lines from mercurial and general python modules
r8312 import encoding
import gettext, sys, os
Martin Geisler
i18n: lookup .mo files in private locale/ directory...
r7650
# modelled after templater.templatepath:
Augie Fackler
i18n: use getattr instead of hasattr...
r14975 if getattr(sys, 'frozen', None) is not None:
Martin Geisler
i18n: lookup .mo files in private locale/ directory...
r7650 module = sys.executable
else:
module = __file__
base = os.path.dirname(module)
for dir in ('.', '..'):
Martin Geisler
i18n: remove unnecessary os.path.normpath call
r9538 localedir = os.path.join(base, dir, 'locale')
Martin Geisler
i18n: lookup .mo files in private locale/ directory...
r7650 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
Martin Geisler
i18n: fix translation of empty paragraphs
r11403 paragraphs = message.split('\n\n')
# Be careful not to translate the empty string -- it holds the
# meta data of the .po file.
u = u'\n\n'.join([p and t.ugettext(p) or '' for p in paragraphs])
Martin Geisler
i18n: encode output in user's local encoding...
r7651 try:
Martin Geisler
i18n: updated outdated comment
r9319 # encoding.tolocal cannot be used since it will first try to
# decode the Unicode string. Calling u.decode(enc) really
# means u.encode(sys.getdefaultencoding()).decode(enc). Since
# the Python encoding defaults to 'ascii', this fails if the
# translated string use non-ASCII characters.
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:
Martin Geisler
i18n: move unrelated line out of try-except block
r9320 # An unknown encoding results in a LookupError.
Martin Geisler
i18n: encode output in user's local encoding...
r7651 return message
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 def _plain():
if 'HGPLAIN' not in os.environ and 'HGPLAINEXCEPT' not in os.environ:
return False
exceptions = os.environ.get('HGPLAINEXCEPT', '').strip().split(',')
return 'i18n' not in exceptions
if _plain():
Brodie Rao
ui: add HGPLAIN environment variable for easier scripting...
r10455 _ = lambda message: message
else:
_ = gettext