~ubuntu-branches/ubuntu/utopic/pdfposter/utopic

« back to all changes in this revision

Viewing changes to pdftools/i18n.py

  • Committer: Package Import Robot
  • Author(s): Elena Grandi, Jakub Wilk, Elena Grandi
  • Date: 2013-05-22 10:03:38 UTC
  • mfrom: (1.1.2)
  • Revision ID: package-import@ubuntu.com-20130522100338-26uo6rmqsurfcfzv
Tags: 0.6.0-1
[ Jakub Wilk ]
* Use canonical URIs for Vcs-* fields.

[ Elena Grandi ]
* New upstream release
* Regenerate PDF files from python sources
* Include html documentation
* Updated homepage and author contacts
* debian/control: bump Standards-Version to 3.9.3 (no changes needed).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# i18n.py - internationalization support for mercurial
 
2
#
 
3
# Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
 
4
#
 
5
# This software may be used and distributed according to the terms of the
 
6
# GNU General Public License version 2 or any later version.
 
7
 
 
8
import encoding
 
9
import gettext, sys, os
 
10
 
 
11
# modelled after templater.templatepath:
 
12
if hasattr(sys, 'frozen'):
 
13
    module = sys.executable
 
14
else:
 
15
    module = __file__
 
16
 
 
17
base = os.path.dirname(module)
 
18
for dir in ('.', '..'):
 
19
    localedir = os.path.join(base, dir, 'locale')
 
20
    if os.path.isdir(localedir):
 
21
        break
 
22
 
 
23
t = gettext.translation('hg', localedir, fallback=True)
 
24
 
 
25
def gettext(message):
 
26
    """Translate message.
 
27
 
 
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.
 
30
 
 
31
    Important: message is restricted to characters in the encoding
 
32
    given by sys.getdefaultencoding() which is most likely 'ascii'.
 
33
    """
 
34
    # If message is None, t.ugettext will return u'None' as the
 
35
    # translation whereas our callers expect us to return None.
 
36
    if message is None:
 
37
        return message
 
38
 
 
39
    paragraphs = message.split('\n\n')
 
40
    # Be careful not to translate the empty string -- it holds the
 
41
    # meta data of the .po file.
 
42
    u = u'\n\n'.join([p and t.ugettext(p) or '' for p in paragraphs])
 
43
    try:
 
44
        # encoding.tolocal cannot be used since it will first try to
 
45
        # decode the Unicode string. Calling u.decode(enc) really
 
46
        # means u.encode(sys.getdefaultencoding()).decode(enc). Since
 
47
        # the Python encoding defaults to 'ascii', this fails if the
 
48
        # translated string use non-ASCII characters.
 
49
        return u.encode(encoding.encoding, "replace")
 
50
    except LookupError:
 
51
        # An unknown encoding results in a LookupError.
 
52
        return message
 
53
 
 
54
if 'HGPLAIN' in os.environ:
 
55
    _ = lambda message: message
 
56
else:
 
57
    _ = gettext
 
58