summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/lib/libgettext.tex7
-rw-r--r--Lib/gettext.py7
-rw-r--r--Misc/NEWS2
3 files changed, 12 insertions, 4 deletions
diff --git a/Doc/lib/libgettext.tex b/Doc/lib/libgettext.tex
index aaacd80..be22340 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 638d4ae..6795ee6 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 fd552ed..cc81150 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