From 4485cb48007d581cc654923b2a03abfa032089bc Mon Sep 17 00:00:00 2001 From: calvin Date: Thu, 28 Oct 2004 16:03:42 +0000 Subject: [PATCH] also overload NullTranslations gettext class git-svn-id: https://linkchecker.svn.sourceforge.net/svnroot/linkchecker/trunk/linkchecker@1900 e7d03fd6-7b0d-0410-9947-9c21f3af8025 --- linkcheck/i18n.py | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/linkcheck/i18n.py b/linkcheck/i18n.py index 9dd95ae5..29e05758 100644 --- a/linkcheck/i18n.py +++ b/linkcheck/i18n.py @@ -25,18 +25,28 @@ import gettext supported_languages = ['en'] default_language = None +def install_builtin (self, do_unicode): + """install _() and _n() gettext methods into default namespace""" + import __builtin__ + if do_unicode: + __builtin__.__dict__['_'] = self.ugettext + # also install ngettext + __builtin__.__dict__['_n'] = self.ungettext + else: + __builtin__.__dict__['_'] = self.gettext + # also install ngettext + __builtin__.__dict__['_n'] = self.ngettext + class Translator (gettext.GNUTranslations): def install (self, do_unicode): - import __builtin__ - if do_unicode: - __builtin__.__dict__['_'] = self.ugettext - # also install ngettext - __builtin__.__dict__['_n'] = self.ungettext - else: - __builtin__.__dict__['_'] = self.gettext - # also install ngettext - __builtin__.__dict__['_n'] = self.ngettext + install_builtin(self, do_unicode) + + +class NullTranslator (gettext.NullTranslations): + + def install (self, do_unicode): + install_builtin(self, do_unicode) def init (domain, directory): @@ -55,15 +65,19 @@ def init (domain, directory): else: default_language = "en" # install translation service routines into default namespace - translator = get_translator(domain, directory, default_language) + translator = get_translator(domain, directory, fallback=True) do_unicode = True translator.install(do_unicode) -def get_translator (domain, directory, language, translatorklass=Translator): - languages = [get_lang(language)] - return gettext.translation(domain, - localedir=directory, languages=languages, class_=translatorklass) +def get_translator (domain, directory, languages=None, + translatorklass=Translator, fallback=False): + """search the appropriate GNUTranslations class""" + translator = gettext.translation(domain, localedir=directory, + languages=languages, class_=translatorklass, fallback=fallback) + if not isinstance(translator, gettext.GNUTranslations): + translator = NullTranslator() + return translator def get_lang (lang):