annotate roundup/i18n.py @ 2467:76ead526113d

client instances may be used as translation engines. any backend translator may be passed as constructor argument or via setTranslator() method. by default, templating.translationService is used. use this engine to translate client messages.
author Alexander Smishlajev <a1s@users.sourceforge.net>
date Tue, 15 Jun 2004 09:19:49 +0000
parents c2db20eca3fa
children e8b2044d82a6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
1 #
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
3 # This module is free software, and you may redistribute it and/or modify
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
4 # under the same terms as Python, so long as this copyright message and
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
5 # disclaimer are retained in their original form.
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
6 #
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
10 # POSSIBILITY OF SUCH DAMAGE.
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
11 #
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
2302
004dff9a159f use python gettext engine
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2005
diff changeset
17 #
2356
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
18 # $Id: i18n.py,v 1.8 2004-05-22 14:55:07 a1s Exp $
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
19
2005
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
20 """
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
21 RoundUp Internationalization (I18N)
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
22
2005
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
23 To use this module, the following code should be used::
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
24
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
25 from roundup.i18n import _
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
26 ...
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
27 print _("Some text that can be translated")
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
28
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
29 Note that to enable re-ordering of inserted texts in formatting strings
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
30 (which can easily happen if a sentence has to be re-ordered due to
2005
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
31 grammatical changes), translatable formats should use named format specs::
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
32
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
33 ... _('Index of %(classname)s') % {'classname': cn} ...
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
34
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
35 Also, this eases the job of translators since they have some context what
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
36 the dynamic portion of a message really means.
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
37 """
2005
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
38 __docformat__ = 'restructuredtext'
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
39
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
40 import errno
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
41
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
42 # Roundup text domain
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
43 DOMAIN = "roundup"
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
44
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
45 # first, we try to import gettext; this probably never fails, but we make
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
46 # sure we survive this anyway
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
47 try:
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
48 import gettext as gettext_module
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
49 except ImportError:
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
50 gettext_module = None
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
51
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
52 # use or emulate features of gettext_module
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
53 if not gettext_module:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
54 # no gettext engine available.
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
55 # implement emulation for Translations class
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
56 # and translation() function
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
57 class RoundupNullTranslations:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
58 """Dummy Translations class
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
59
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
60 Only methods used by Roundup are implemented.
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
61
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
62 """
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
63 def add_fallback(self, fallback):
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
64 pass
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
65 def gettext(self, text):
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
66 return text
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
67 def ugettext(self, text):
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
68 return unicode(text)
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
69 def ngettext(self, singular, plural, count):
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
70 if count == 1: return singular
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
71 return plural
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
72 def ungettext(self, singular, plural, count):
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
73 return unicode(self.ngettext(singular, plural, count))
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
74
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
75 RoundupTranslations = RoundupNullTranslations
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
76
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
77 def translation(domain, localedir=None, languages=None, class_=None):
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
78 """Always raise IOError (no message catalogs available)"""
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
79 raise IOError(errno.ENOENT,
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
80 "No translation file found for domain", domain)
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
81
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
82 elif not hasattr(gettext_module.GNUTranslations, "ngettext"):
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
83 # prior to 2.3, there was no plural forms. mix simple emulation in
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
84 class PluralFormsMixIn:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
85 def ngettext(self, singular, plural, count):
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
86 if count == 1:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
87 _msg = singular
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
88 else:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
89 _msg = plural
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
90 return self.gettext(_msg)
2356
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
91 def ungettext(self, singular, plural, count):
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
92 if count == 1:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
93 _msg = singular
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
94 else:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
95 _msg = plural
2356
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
96 return self.ugettext(_msg)
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
97 class RoundupNullTranslations(
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
98 gettext_module.NullTranslations, PluralFormsMixIn
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
99 ):
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
100 pass
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
101 class RoundupTranslations(
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
102 gettext_module.GNUTranslations, PluralFormsMixIn
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
103 ):
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
104 pass
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
105 # lookup function is available
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
106 translation = gettext_module.translation
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
107 else:
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
108 # gettext_module has everything needed
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
109 RoundupNullTranslations = gettext_module.NullTranslations
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
110 RoundupTranslations = gettext_module.GNUTranslations
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
111 translation = gettext_module.translation
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
112
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff changeset
113
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
114 def get_translation(language=None, domain=DOMAIN):
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
115 """Return Translation object for given language and domain"""
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
116 if language:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
117 _languages = [language]
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
118 else:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
119 # use OS environment
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
120 _languages = None
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
121 # except for english ("en") language, add english fallback if available
2356
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
122 if language == "en":
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
123 _fallback = None
2356
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
124 else:
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
125 try:
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
126 _fallback = translation(domain=domain, languages=["en"],
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
127 class_=RoundupTranslations)
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
128 except IOError:
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
129 # no .mo files found
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
130 _fallback = None
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
131 # get the translation
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
132 try:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
133 _translation = translation(domain=domain, languages=_languages,
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
134 class_=RoundupTranslations)
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
135 except IOError:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
136 _translation = None
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
137 # see what's found
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
138 if _translation and _fallback:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
139 _translation.add_fallback(_fallback)
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
140 elif _fallback:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
141 _translation = _fallback
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
142 elif not _translation:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
143 _translation = RoundupNullTranslations()
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
144 return _translation
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
145
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
146 # static translations object
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
147 translation = get_translation()
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
148 # static translation functions
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
149 _ = gettext = translation.gettext
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
150 ugettext = translation.ugettext
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
151 ngettext = translation.ngettext
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
152 ungettext = translation.ungettext
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
153
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
154 # vim: set filetype=python sts=4 sw=4 et si

Roundup Issue Tracker: http://roundup-tracker.org/