Mercurial > hg
view mercurial/i18n.py @ 17392:bdd248666dbc stable
debuginstall: show directory for Python lib
Example new output
on Windows:
$ hg debuginstall
checking encoding (cp1252)...
checking Python lib (C:\Users\adi\hgrepos\hg-main\hg-python\lib)...
checking installed modules (C:\Users\adi\hgrepos\hg-main\mercurial)...
checking templates (C:\Users\adi\hgrepos\hg-main\mercurial\templates)...
checking commit editor...
C:\Program Files (x86)\Notepad++\notepad++.exe
checking username...
no problems detected
on Linux:
adi@kork-ubuntu64:~/hgrepos/hg-main$ ./hg debuginstall
checking encoding (UTF-8)...
checking Python lib (/usr/lib/python2.7)...
checking installed modules (/home/adi/hgrepos/hg-main/mercurial)...
checking templates (/home/adi/hgrepos/hg-main/mercurial/templates)...
checking commit editor...
checking username...
no problems detected
author | Adrian Buehlmann <adrian@cadifra.com> |
---|---|
date | Mon, 06 Aug 2012 12:59:47 +0200 |
parents | b64538363dbe |
children | 2d47d81c79fb |
line wrap: on
line source
# 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 # GNU General Public License version 2 or any later version. import encoding import gettext, sys, os # modelled after templater.templatepath: if getattr(sys, 'frozen', None) is not None: module = sys.executable else: module = __file__ base = os.path.dirname(module) for dir in ('.', '..'): localedir = os.path.join(base, dir, 'locale') if os.path.isdir(localedir): break t = gettext.translation('hg', localedir, fallback=True) 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 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]) try: # 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. return u.encode(encoding.encoding, "replace") except LookupError: # An unknown encoding results in a LookupError. return message 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(): _ = lambda message: message else: _ = gettext