# vim:set fileencoding=utf-8 et ts=4 sts=4 sw=4: # # apt-listchanges - Show changelog entries between the installed versions # of a set of packages and the versions contained in # corresponding .deb files # # Copyright (C) 2007 Pierre Habouzit # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # import gettext import locale import os import sys try: locale.setlocale(locale.LC_ALL, '') except locale.Error: sys.stderr.write("apt-listchanges: Can't set locale; make sure $LC_* and $LANG are correct!\n") os.environ['LC_ALL'] = 'C' locale.setlocale(locale.LC_ALL, 'C') # set the i18n dirs gettext.bindtextdomain("apt-listchanges", "/usr/share/locale") gettext.textdomain("apt-listchanges") def _(x): try: return gettext.gettext(x) except Exception: return x # Utility classes for encoding conversions class _base_encoding(object): def __init__(self, encoding): self._encoding = encoding def get_encoding(self): return self._encoding def to_bytes(self, text): return text.encode(self._encoding, 'replace') def from_bytes(self, bintext): return bintext.decode(self._encoding, 'replace') def as_string(self, text): if self._encoding == 'utf-8': return text return self.from_bytes(self.to_bytes(text)) class utf8_encoding(_base_encoding): def __init__(self): _base_encoding.__init__(self, 'utf-8') class system_encoding(_base_encoding): _sysencoding = locale.getpreferredencoding(False).lower() def __init__(self): _base_encoding.__init__(self, self._sysencoding) # forcibly export _ __all__ = ['_']