annotate roundup/i18n.py @ 2755:e3cd28cec23d

Clean out sessions / otks tables when migrating
author Richard Jones <richard@users.sourceforge.net>
date Thu, 14 Oct 2004 22:27:59 +0000
parents 7c1fbb2b2fc8
children 845e87d5e3ba
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 #
2576
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
18 # $Id: i18n.py,v 1.10 2004-07-14 07:27:21 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
2555
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
56 # and find_translation() function
2355
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
2555
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
77 def find_translation(domain, localedir=None, languages=None, class_=None):
2355
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
2555
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
106 find_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
2555
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
111 find_translation = gettext_module.translation
2355
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
2555
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
114 def get_translation(language=None, domain=DOMAIN,
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
115 translation_class=RoundupTranslations,
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
116 null_translation_class=RoundupNullTranslations
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
117 ):
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
118 """Return Translation object for given language and domain
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
119
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
120 Arguments 'translation_class' and 'null_translation_class'
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
121 specify the classes that are instantiated for existing
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
122 and non-existing translations, respectively.
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
123 """
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
124 if language:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
125 _languages = [language]
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
126 else:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
127 # use OS environment
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
128 _languages = None
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
129 # 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
130 if language == "en":
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
131 _fallback = None
2356
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
132 else:
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
133 try:
2555
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
134 _fallback = find_translation(domain=domain, languages=["en"],
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
135 class_=translation_class)
2576
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
136 # gettext.translation returns a cached translation
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
137 # even if it is not of the desired class.
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
138 # This is a quick-and-dirty solution for this problem.
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
139 # It works with current codebase, because all translators
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
140 # inherit from respective base translation classes
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
141 # defined in the gettext module, i.e. have same internal data.
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
142 # The cached instance is not affected by this hack,
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
143 # 'cause gettext made a copy for us.
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
144 # XXX Consider making a copy of gettext.translation function
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
145 # with class bug fixed...
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
146 if _fallback.__class__ != translation_class:
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
147 _fallback.__class__ = translation_class
2356
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
148 except IOError:
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
149 # no .mo files found
c2db20eca3fa fix ungettext() in PluralFormsMixIn;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2355
diff changeset
150 _fallback = None
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
151 # get the translation
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
152 try:
2555
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
153 _translation = find_translation(domain=domain, languages=_languages,
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
154 class_=translation_class)
2576
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
155 # XXX See the comment after first find_translation() call
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
156 if _translation.__class__ != translation_class:
7c1fbb2b2fc8 work around invalid class returned from gettext.translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2555
diff changeset
157 _translation.__class__ = translation_class
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
158 except IOError:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
159 _translation = None
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
160 # see what's found
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
161 if _translation and _fallback:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
162 _translation.add_fallback(_fallback)
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
163 elif _fallback:
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
164 _translation = _fallback
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
165 elif not _translation:
2555
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
166 _translation = null_translation_class()
2355
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
167 return _translation
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
168
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
169 # static translations object
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
170 translation = get_translation()
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
171 # static translation functions
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
172 _ = gettext = translation.gettext
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
173 ugettext = translation.ugettext
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
174 ngettext = translation.ngettext
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
175 ungettext = translation.ungettext
6c2d8183a235 export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2326
diff changeset
176
2555
e8b2044d82a6 fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2356
diff changeset
177 # vim: set filetype=python sts=4 sw=4 et si :

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