1515# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717#
18- # $Id: i18n.py,v 1.8 2004-05-22 14:55:07 a1s Exp $
18+ # $Id: i18n.py,v 1.9 2004-07-11 14:16:26 a1s Exp $
1919
2020"""
2121RoundUp Internationalization (I18N)
5353if not gettext_module :
5454 # no gettext engine available.
5555 # implement emulation for Translations class
56- # and translation () function
56+ # and find_translation () function
5757 class RoundupNullTranslations :
5858 """Dummy Translations class
5959
@@ -74,7 +74,7 @@ def ungettext(self, singular, plural, count):
7474
7575 RoundupTranslations = RoundupNullTranslations
7676
77- def translation (domain , localedir = None , languages = None , class_ = None ):
77+ def find_translation (domain , localedir = None , languages = None , class_ = None ):
7878 """Always raise IOError (no message catalogs available)"""
7979 raise IOError (errno .ENOENT ,
8080 "No translation file found for domain" , domain )
@@ -103,16 +103,24 @@ class RoundupTranslations(
103103 ):
104104 pass
105105 # lookup function is available
106- translation = gettext_module .translation
106+ find_translation = gettext_module .translation
107107else :
108108 # gettext_module has everything needed
109109 RoundupNullTranslations = gettext_module .NullTranslations
110110 RoundupTranslations = gettext_module .GNUTranslations
111- translation = gettext_module .translation
111+ find_translation = gettext_module .translation
112112
113113
114- def get_translation (language = None , domain = DOMAIN ):
115- """Return Translation object for given language and domain"""
114+ def get_translation (language = None , domain = DOMAIN ,
115+ translation_class = RoundupTranslations ,
116+ null_translation_class = RoundupNullTranslations
117+ ):
118+ """Return Translation object for given language and domain
119+
120+ Arguments 'translation_class' and 'null_translation_class'
121+ specify the classes that are instantiated for existing
122+ and non-existing translations, respectively.
123+ """
116124 if language :
117125 _languages = [language ]
118126 else :
@@ -123,15 +131,15 @@ def get_translation(language=None, domain=DOMAIN):
123131 _fallback = None
124132 else :
125133 try :
126- _fallback = translation (domain = domain , languages = ["en" ],
127- class_ = RoundupTranslations )
134+ _fallback = find_translation (domain = domain , languages = ["en" ],
135+ class_ = translation_class )
128136 except IOError :
129137 # no .mo files found
130138 _fallback = None
131139 # get the translation
132140 try :
133- _translation = translation (domain = domain , languages = _languages ,
134- class_ = RoundupTranslations )
141+ _translation = find_translation (domain = domain , languages = _languages ,
142+ class_ = translation_class )
135143 except IOError :
136144 _translation = None
137145 # see what's found
@@ -140,7 +148,7 @@ def get_translation(language=None, domain=DOMAIN):
140148 elif _fallback :
141149 _translation = _fallback
142150 elif not _translation :
143- _translation = RoundupNullTranslations ()
151+ _translation = null_translation_class ()
144152 return _translation
145153
146154# static translations object
@@ -151,4 +159,4 @@ def get_translation(language=None, domain=DOMAIN):
151159ngettext = translation .ngettext
152160ungettext = translation .ungettext
153161
154- # vim: set filetype=python sts=4 sw=4 et si
162+ # vim: set filetype=python sts=4 sw=4 et si :
0 commit comments