From 1be641987145f88d61e52d5b4714a8cc6c7e6da8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Fri, 11 Jan 2002 06:33:28 +0000 Subject: [PATCH] Add fallback argument to translation(). Request fallbacks on install. Fixes #500595. --- Doc/lib/libgettext.tex | 7 +++++-- Lib/gettext.py | 7 +++++-- Misc/NEWS | 2 ++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Doc/lib/libgettext.tex b/Doc/lib/libgettext.tex index aaacd80551f..be2234000df 100644 --- a/Doc/lib/libgettext.tex +++ b/Doc/lib/libgettext.tex @@ -123,7 +123,8 @@ If no such file is found, then \code{None} is returned. \end{funcdesc} \begin{funcdesc}{translation}{domain\optional{, localedir\optional{, - languages\optional{, class_}}}} + languages\optional{, + class_,\optional{fallback}}}}} Return a \class{Translations} instance based on the \var{domain}, \var{localedir}, and \var{languages}, which are first passed to \function{find()} to get the @@ -132,7 +133,9 @@ identical \file{.mo} file names are cached. The actual class instantiated is either \var{class_} if provided, otherwise \class{GNUTranslations}. The class's constructor must take a single file object argument. If no \file{.mo} file is found, this -function raises \exception{IOError}. +function raises \exception{IOError} if \var{fallback} is false +(which is the default), and returns a \class{NullTranslations} instance +if \var{fallback} is true. \end{funcdesc} \begin{funcdesc}{install}{domain\optional{, localedir\optional{, unicode}}} diff --git a/Lib/gettext.py b/Lib/gettext.py index 638d4ae7a31..6795ee6528f 100644 --- a/Lib/gettext.py +++ b/Lib/gettext.py @@ -230,11 +230,14 @@ def find(domain, localedir=None, languages=None): # a mapping between absolute .mo file path and Translation object _translations = {} -def translation(domain, localedir=None, languages=None, class_=None): +def translation(domain, localedir=None, languages=None, + class_=None, fallback=0): if class_ is None: class_ = GNUTranslations mofile = find(domain, localedir, languages) if mofile is None: + if fallback: + return NullTranslations() raise IOError(ENOENT, 'No translation file found for domain', domain) key = os.path.abspath(mofile) # TBD: do we need to worry about the file pointer getting collected? @@ -248,7 +251,7 @@ def translation(domain, localedir=None, languages=None, class_=None): def install(domain, localedir=None, unicode=0): - translation(domain, localedir).install(unicode) + translation(domain, localedir, fallback=1).install(unicode) diff --git a/Misc/NEWS b/Misc/NEWS index fd552ed4af5..cc8115062ab 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -26,6 +26,8 @@ Library arbitrary shell code can't be executed because a bogus URL was passed in. +- gettext.translation has an optional fallback argument. + Tools/Demos Build