Mercurial > p > roundup > code
annotate roundup/i18n.py @ 8408:e882a5d52ae5
refactor: move RateLimitExceeded to roundup.cgi.exceptions
RateLimitExceeded is an HTTP exception that raises code 429. Move it
to roundup.cgi.exceptions where all the other exceptions that result
in http status codes are located. Also make it inherit from
HTTPException since it is one.
Also add docstrings for all HTTP exceptions and order HTTPExceptions
by status code.
BREAKING CHANGE: if somebody is importing RateLimitExceeded they will
need to change their import. I consider it unlikely anybody is using
RateLimitExceeded. Detectors and extensions are unlikely to raise
RateLimitExceeded. So I am leaving it out of the upgrading doc. Just
doc in change log.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 10 Aug 2025 21:27:06 -0400 |
| parents | a9da9c8e4295 |
| children |
| 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 # |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
18 """ |
|
399
96b0db9ad389
Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
19 RoundUp Internationalization (I18N) |
|
96b0db9ad389
Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
20 |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
21 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
|
22 |
|
96b0db9ad389
Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
23 from roundup.i18n import _ |
|
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 print _("Some text that can be translated") |
|
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 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
|
28 (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
|
29 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
|
30 |
|
96b0db9ad389
Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
31 ... _('Index of %(classname)s') % {'classname': cn} ... |
|
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 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
|
34 the dynamic portion of a message really means. |
|
96b0db9ad389
Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
35 """ |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
36 __docformat__ = 'restructuredtext' |
|
399
96b0db9ad389
Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
37 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
38 import gettext as gettext_module |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
39 import os |
| 7300 | 40 import sys |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
41 |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
42 from roundup import msgfmt |
|
5416
56c9bcdea47f
Python 3 preparation: unicode.
Joseph Myers <jsm@polyomino.org.uk>
parents:
4838
diff
changeset
|
43 from roundup.anypy.strings import is_us |
|
2355
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
44 |
|
3350
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
45 # List of directories for mo file search (see SF bug 1219689) |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
46 LOCALE_DIRS = [ |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
47 gettext_module._default_localedir, |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
48 ] |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
49 # compute mo location relative to roundup installation directory |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
50 # (prefix/lib/python/site-packages/roundup/msgfmt.py on posix systems, |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
51 # prefix/lib/site-packages/roundup/msgfmt.py on windows). |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
52 # locale root is prefix/share/locale. |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
53 if os.name == "nt": |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
54 _mo_path = [".."] * 4 + ["share", "locale"] |
|
7654
1471fcda252b
refactor: parameterize the root prefix number of characters
John Rouillard <rouilj@ieee.org>
parents:
7300
diff
changeset
|
55 root_prefix_chars = 3 # remove c:\ or other drive letter |
|
3350
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
56 else: |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
57 _mo_path = [".."] * 5 + ["share", "locale"] |
|
7654
1471fcda252b
refactor: parameterize the root prefix number of characters
John Rouillard <rouilj@ieee.org>
parents:
7300
diff
changeset
|
58 root_prefix_chars = 1 # remove / |
|
1471fcda252b
refactor: parameterize the root prefix number of characters
John Rouillard <rouilj@ieee.org>
parents:
7300
diff
changeset
|
59 |
|
3350
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
60 _mo_path = os.path.normpath(os.path.join(msgfmt.__file__, *_mo_path)) |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
61 if _mo_path not in LOCALE_DIRS: |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
62 LOCALE_DIRS.append(_mo_path) |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
63 del _mo_path |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
64 |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
65 # __file__ should be something like: |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
66 # /usr/local/lib/python3.10/site-packages/roundup/i18n.py |
|
6524
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6479
diff
changeset
|
67 # os.prefix should be /usr, /usr/local or root of virtualenv |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6479
diff
changeset
|
68 # strip leading / to make os.path.join work right. |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
69 path = __file__ |
|
7759
a46675399a05
fix: make running from code tree translate strings
John Rouillard <rouilj@ieee.org>
parents:
7654
diff
changeset
|
70 |
|
a46675399a05
fix: make running from code tree translate strings
John Rouillard <rouilj@ieee.org>
parents:
7654
diff
changeset
|
71 for _N in 1, 2: # remove roundup/i18n.py from path |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
72 path = os.path.dirname(path) |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
73 # path is /usr/local/lib/python3.10/site-packages |
|
7759
a46675399a05
fix: make running from code tree translate strings
John Rouillard <rouilj@ieee.org>
parents:
7654
diff
changeset
|
74 |
|
7654
1471fcda252b
refactor: parameterize the root prefix number of characters
John Rouillard <rouilj@ieee.org>
parents:
7300
diff
changeset
|
75 _ldir = os.path.join(path, sys.prefix[root_prefix_chars:], 'share', 'locale') |
|
6524
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6479
diff
changeset
|
76 if os.path.isdir(_ldir): |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6479
diff
changeset
|
77 LOCALE_DIRS.append(_ldir) |
|
7759
a46675399a05
fix: make running from code tree translate strings
John Rouillard <rouilj@ieee.org>
parents:
7654
diff
changeset
|
78 |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
79 # try other places locale files are hidden on install |
|
7654
1471fcda252b
refactor: parameterize the root prefix number of characters
John Rouillard <rouilj@ieee.org>
parents:
7300
diff
changeset
|
80 _ldir = os.path.join(path, sys.prefix[root_prefix_chars:], 'local', 'share', 'locale') |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
81 if os.path.isdir(_ldir): |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
82 LOCALE_DIRS.append(_ldir) |
|
7759
a46675399a05
fix: make running from code tree translate strings
John Rouillard <rouilj@ieee.org>
parents:
7654
diff
changeset
|
83 |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
84 try: |
|
7654
1471fcda252b
refactor: parameterize the root prefix number of characters
John Rouillard <rouilj@ieee.org>
parents:
7300
diff
changeset
|
85 _ldir = os.path.join(path, sys.base_prefix[root_prefix_chars:], 'local', 'share', 'locale') |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
86 if os.path.isdir(_ldir): |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
87 LOCALE_DIRS.append(_ldir) |
|
7654
1471fcda252b
refactor: parameterize the root prefix number of characters
John Rouillard <rouilj@ieee.org>
parents:
7300
diff
changeset
|
88 _ldir = os.path.join(path, sys.base_prefix[root_prefix_chars:], 'share', 'locale') |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
89 if os.path.isdir(_ldir): |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
90 LOCALE_DIRS.append(_ldir) |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
91 except AttributeError: |
| 7300 | 92 pass # no base_prefix on 2.7 |
|
7761
40f817992faa
fix: make in tree locale work for python2
John Rouillard <rouilj@ieee.org>
parents:
7760
diff
changeset
|
93 |
|
40f817992faa
fix: make in tree locale work for python2
John Rouillard <rouilj@ieee.org>
parents:
7760
diff
changeset
|
94 # make -C locale local_install - locale directory in roundup source tree |
|
40f817992faa
fix: make in tree locale work for python2
John Rouillard <rouilj@ieee.org>
parents:
7760
diff
changeset
|
95 _ldir = os.path.join(path, 'locale', 'locale') |
|
40f817992faa
fix: make in tree locale work for python2
John Rouillard <rouilj@ieee.org>
parents:
7760
diff
changeset
|
96 if os.path.isdir(_ldir): |
|
40f817992faa
fix: make in tree locale work for python2
John Rouillard <rouilj@ieee.org>
parents:
7760
diff
changeset
|
97 LOCALE_DIRS.append(_ldir) |
|
6524
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6479
diff
changeset
|
98 del _ldir |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6479
diff
changeset
|
99 |
|
2355
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
100 # Roundup text domain |
|
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
101 DOMAIN = "roundup" |
|
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
102 |
|
4813
a072b35d0606
i18n: Remove Python 2.3 compatibility
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
103 RoundupNullTranslations = gettext_module.NullTranslations |
|
a072b35d0606
i18n: Remove Python 2.3 compatibility
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
104 RoundupTranslations = gettext_module.GNUTranslations |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
105 |
|
6067
289cee42cc19
flake8 whitespace fixes; remove unused import errno.
John Rouillard <rouilj@ieee.org>
parents:
5528
diff
changeset
|
106 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
107 def find_locales(language=None): |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
108 """Return normalized list of locale names to try for given language |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
109 |
|
2917
5809f81fba24
accept a list of languages as well as single language name (thanks donfu)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2810
diff
changeset
|
110 Argument 'language' may be a single language code or a list of codes. |
|
5809f81fba24
accept a list of languages as well as single language name (thanks donfu)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2810
diff
changeset
|
111 If 'language' is omitted or None, use locale settings in OS environment. |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
112 |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
113 """ |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
114 # body of this function is borrowed from gettext_module.find() |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
115 if language is None: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
116 languages = [] |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
117 for envar in ('LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG'): |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
118 val = os.environ.get(envar) |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
119 if val: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
120 languages = val.split(':') |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
121 break |
|
5416
56c9bcdea47f
Python 3 preparation: unicode.
Joseph Myers <jsm@polyomino.org.uk>
parents:
4838
diff
changeset
|
122 elif is_us(language): |
|
2917
5809f81fba24
accept a list of languages as well as single language name (thanks donfu)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2810
diff
changeset
|
123 languages = [language] |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
124 else: |
|
2917
5809f81fba24
accept a list of languages as well as single language name (thanks donfu)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2810
diff
changeset
|
125 # 'language' must be iterable |
|
5809f81fba24
accept a list of languages as well as single language name (thanks donfu)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2810
diff
changeset
|
126 languages = language |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
127 # now normalize and expand the languages |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
128 nelangs = [] |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
129 for lang in languages: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
130 for nelang in gettext_module._expand_lang(lang): |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
131 if nelang not in nelangs: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
132 nelangs.append(nelang) |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
133 return nelangs |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
134 |
|
6067
289cee42cc19
flake8 whitespace fixes; remove unused import errno.
John Rouillard <rouilj@ieee.org>
parents:
5528
diff
changeset
|
135 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
136 def get_mofile(languages, localedir, domain=None): |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
137 """Return the first of .mo files found in localedir for languages |
|
2355
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
138 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
139 Parameters: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
140 languages: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
141 list of locale names to try |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
142 localedir: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
143 path to directory containing locale files. |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
144 Usually this is either gettext_module._default_localedir |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
145 or 'locale' subdirectory in the tracker home. |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
146 domain: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
147 optional name of messages domain. |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
148 If omitted or None, work with simplified |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
149 locale directory, as used in tracker homes: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
150 message catalogs are kept in files locale.po |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
151 instead of locale/LC_MESSAGES/domain.po |
|
399
96b0db9ad389
Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
152 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
153 Return the path of the first .mo file found. |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
154 If nothing found, return None. |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
155 |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
156 Automatically compile .po files if necessary. |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
157 |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
158 """ |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
159 for locale in languages: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
160 if locale == "C": |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
161 break |
|
7760
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
162 basename = os.path.join(localedir, locale, "LC_MESSAGES", domain) if \ |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
163 domain else os.path.join(localedir, locale) |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
164 # look for message catalog files, check timestamps |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
165 mofile = basename + ".mo" |
|
7760
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
166 motime = os.path.getmtime(mofile) if os.path.isfile(mofile) else 0 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
167 pofile = basename + ".po" |
|
7760
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
168 potime = os.path.getmtime(pofile) if os.path.isfile(pofile) else 0 |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
169 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
170 # see what we've found |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
171 if motime < potime: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
172 # compile |
|
5528
bb364082a14a
msgfmt.make doesn't exist any more
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5477
diff
changeset
|
173 mo = msgfmt.Msgfmt(pofile).get() |
|
7760
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
174 with open(mofile, 'wb') as m: |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
175 m.write(mo) |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
176 elif motime == 0: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
177 # no files found - proceed to the next locale name |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
178 continue |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
179 # .mo file found or made |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
180 return mofile |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
181 return None |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
182 |
|
6067
289cee42cc19
flake8 whitespace fixes; remove unused import errno.
John Rouillard <rouilj@ieee.org>
parents:
5528
diff
changeset
|
183 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
184 def get_translation(language=None, tracker_home=None, |
|
6067
289cee42cc19
flake8 whitespace fixes; remove unused import errno.
John Rouillard <rouilj@ieee.org>
parents:
5528
diff
changeset
|
185 translation_class=RoundupTranslations, |
|
289cee42cc19
flake8 whitespace fixes; remove unused import errno.
John Rouillard <rouilj@ieee.org>
parents:
5528
diff
changeset
|
186 null_translation_class=RoundupNullTranslations): |
|
2555
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
187 """Return Translation object for given language and domain |
|
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
188 |
|
2917
5809f81fba24
accept a list of languages as well as single language name (thanks donfu)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2810
diff
changeset
|
189 Argument 'language' may be a single language code or a list of codes. |
|
5809f81fba24
accept a list of languages as well as single language name (thanks donfu)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2810
diff
changeset
|
190 If 'language' is omitted or None, use locale settings in OS environment. |
|
5809f81fba24
accept a list of languages as well as single language name (thanks donfu)
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2810
diff
changeset
|
191 |
|
2555
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
192 Arguments 'translation_class' and 'null_translation_class' |
|
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
193 specify the classes that are instantiated for existing |
|
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
194 and non-existing translations, respectively. |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
195 |
|
2555
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
196 """ |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
197 mofiles = [] |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
198 # locale directory paths |
|
7760
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
199 tracker_locale = os.path.join(tracker_home, "locale") if \ |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
200 tracker_home is not None else None |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
201 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
202 # get the list of locales |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
203 locales = find_locales(language) |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
204 # add mofiles found in the tracker, then in the system locale directory |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
205 if tracker_locale: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
206 mofiles.append(get_mofile(locales, tracker_locale)) |
|
7762
a9da9c8e4295
fix: replace += with list.extend; replace another for loop w/ extend
John Rouillard <rouilj@ieee.org>
parents:
7761
diff
changeset
|
207 mofiles.extend([get_mofile(locales, system_locale, DOMAIN) |
|
a9da9c8e4295
fix: replace += with list.extend; replace another for loop w/ extend
John Rouillard <rouilj@ieee.org>
parents:
7761
diff
changeset
|
208 for system_locale in LOCALE_DIRS]) |
|
7760
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
209 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
210 # we want to fall back to english unless english is selected language |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
211 if "en" not in locales: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
212 locales = find_locales("en") |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
213 # add mofiles found in the tracker, then in the system locale directory |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
214 if tracker_locale: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
215 mofiles.append(get_mofile(locales, tracker_locale)) |
|
7762
a9da9c8e4295
fix: replace += with list.extend; replace another for loop w/ extend
John Rouillard <rouilj@ieee.org>
parents:
7761
diff
changeset
|
216 mofiles.extend([get_mofile(locales, system_locale, DOMAIN) |
|
a9da9c8e4295
fix: replace += with list.extend; replace another for loop w/ extend
John Rouillard <rouilj@ieee.org>
parents:
7761
diff
changeset
|
217 for system_locale in LOCALE_DIRS]) |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
218 # filter out elements that are not found |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
219 mofiles = filter(None, mofiles) |
|
4838
6102252d3a8a
Do not throw an internal error if a .mo file can not be read
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4813
diff
changeset
|
220 translator = None |
|
6102252d3a8a
Do not throw an internal error if a .mo file can not be read
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4813
diff
changeset
|
221 for mofile in mofiles: |
|
6102252d3a8a
Do not throw an internal error if a .mo file can not be read
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4813
diff
changeset
|
222 try: |
|
7760
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
223 with open(mofile, "rb") as mo: |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
224 if translator is None: |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
225 translator = translation_class(mo) |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
226 # the .mo file this translator loaded from |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
227 translator._file = mofile |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
228 else: |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
229 # note: current implementation of gettext_module |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
230 # always adds fallback to the end of the fallback chain. |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
231 fallback = translation_class(mo) |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
232 fallback._file = mofile |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
233 translator.add_fallback(fallback) |
|
481235e743bc
chore: ruff rules cleanup
John Rouillard <rouilj@ieee.org>
parents:
7759
diff
changeset
|
234 except IOError: # noqa: PERF203 |
|
4838
6102252d3a8a
Do not throw an internal error if a .mo file can not be read
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4813
diff
changeset
|
235 # ignore unreadable .mo files |
|
6102252d3a8a
Do not throw an internal error if a .mo file can not be read
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4813
diff
changeset
|
236 pass |
|
6102252d3a8a
Do not throw an internal error if a .mo file can not be read
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4813
diff
changeset
|
237 if translator is None: |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
238 translator = null_translation_class() |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
239 return translator |
|
2355
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
240 |
|
6067
289cee42cc19
flake8 whitespace fixes; remove unused import errno.
John Rouillard <rouilj@ieee.org>
parents:
5528
diff
changeset
|
241 |
|
2355
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
242 # static translations object |
|
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
243 translation = get_translation() |
|
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
244 # static translation functions |
|
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
245 _ = gettext = translation.gettext |
|
5477
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
246 try: |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
247 # Python 2. |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
248 ugettext = translation.ugettext |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
249 except AttributeError: |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
250 # Python 3. |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
251 ugettext = translation.gettext |
|
2355
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
252 ngettext = translation.ngettext |
|
5477
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
253 try: |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
254 # Python 2. |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
255 ungettext = translation.ungettext |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
256 except AttributeError: |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
257 # Python 3. |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
258 ungettext = translation.ngettext |
|
2355
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
259 |
|
2555
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
260 # vim: set filetype=python sts=4 sw=4 et si : |
