]> granicus.if.org Git - python/commitdiff
Add fallback argument to translation(). Request fallbacks on install.
authorMartin v. Löwis <martin@v.loewis.de>
Fri, 11 Jan 2002 06:33:28 +0000 (06:33 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Fri, 11 Jan 2002 06:33:28 +0000 (06:33 +0000)
Fixes #500595.

Doc/lib/libgettext.tex
Lib/gettext.py
Misc/NEWS

index aaacd80551f6ea8a65c021384a7a64ffaf0111e0..be2234000dfc99a0103746b874ea0f9f951f4149 100644 (file)
@@ -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}}}
index 638d4ae7a31c327b10abd27870f16c386546d0c8..6795ee6528f39f9e10b601c85e01a92b837560a1 100644 (file)
@@ -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)
 
 
 
index fd552ed4af59c5cdecd0f46cfdf2bfbb9d142982..cc8115062abadce03f5610414c465a10676891f7 100644 (file)
--- 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