Mercurial > p > roundup > code
annotate roundup/i18n.py @ 7300:57f34b0b912c
flake8 fixes
move import to top, indentation, remove trailing whitespace ...
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 07 May 2023 09:10:10 -0400 |
| parents | 07ce4e4110f5 |
| children | 1471fcda252b |
| 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"] |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
55 else: |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
56 _mo_path = [".."] * 5 + ["share", "locale"] |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
57 _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
|
58 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
|
59 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
|
60 del _mo_path |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
61 |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
62 # __file__ should be something like: |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
63 # /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
|
64 # 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
|
65 # strip leading / to make os.path.join work right. |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
66 path = __file__ |
|
7228
07ce4e4110f5
flake8 fixes: whitespace, remove unused imports
John Rouillard <rouilj@ieee.org>
parents:
6739
diff
changeset
|
67 for _N in 1, 2: |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
68 path = os.path.dirname(path) |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
69 # path is /usr/local/lib/python3.10/site-packages |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
70 _ldir = os.path.join(path, sys.prefix[1:], 'share', 'locale') |
|
6524
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6479
diff
changeset
|
71 if os.path.isdir(_ldir): |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6479
diff
changeset
|
72 LOCALE_DIRS.append(_ldir) |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
73 # try other places locale files are hidden on install |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
74 _ldir = os.path.join(path, sys.prefix[1:], 'local', 'share', 'locale') |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
75 if os.path.isdir(_ldir): |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
76 LOCALE_DIRS.append(_ldir) |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
77 try: |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
78 _ldir = os.path.join(path, sys.base_prefix[1:], 'local', 'share', 'locale') |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
79 if os.path.isdir(_ldir): |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
80 LOCALE_DIRS.append(_ldir) |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
81 _ldir = os.path.join(path, sys.base_prefix[1:], 'share', 'locale') |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
82 if os.path.isdir(_ldir): |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
83 LOCALE_DIRS.append(_ldir) |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6672
diff
changeset
|
84 except AttributeError: |
| 7300 | 85 pass # no base_prefix on 2.7 |
|
6524
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6479
diff
changeset
|
86 del _ldir |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6479
diff
changeset
|
87 |
|
2355
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
88 # Roundup text domain |
|
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
89 DOMAIN = "roundup" |
|
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
90 |
|
4813
a072b35d0606
i18n: Remove Python 2.3 compatibility
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
91 RoundupNullTranslations = gettext_module.NullTranslations |
|
a072b35d0606
i18n: Remove Python 2.3 compatibility
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
92 RoundupTranslations = gettext_module.GNUTranslations |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
93 |
|
6067
289cee42cc19
flake8 whitespace fixes; remove unused import errno.
John Rouillard <rouilj@ieee.org>
parents:
5528
diff
changeset
|
94 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
95 def find_locales(language=None): |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
96 """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
|
97 |
|
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
|
98 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
|
99 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
|
100 |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
101 """ |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
102 # 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
|
103 if language is None: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
104 languages = [] |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
105 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
|
106 val = os.environ.get(envar) |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
107 if val: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
108 languages = val.split(':') |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
109 break |
|
5416
56c9bcdea47f
Python 3 preparation: unicode.
Joseph Myers <jsm@polyomino.org.uk>
parents:
4838
diff
changeset
|
110 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
|
111 languages = [language] |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
112 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
|
113 # '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
|
114 languages = language |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
115 # 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
|
116 nelangs = [] |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
117 for lang in languages: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
118 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
|
119 if nelang not in nelangs: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
120 nelangs.append(nelang) |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
121 return nelangs |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
122 |
|
6067
289cee42cc19
flake8 whitespace fixes; remove unused import errno.
John Rouillard <rouilj@ieee.org>
parents:
5528
diff
changeset
|
123 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
124 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
|
125 """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
|
126 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
127 Parameters: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
128 languages: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
129 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
|
130 localedir: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
131 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
|
132 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
|
133 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
|
134 domain: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
135 optional name of messages domain. |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
136 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
|
137 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
|
138 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
|
139 instead of locale/LC_MESSAGES/domain.po |
|
399
96b0db9ad389
Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
140 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
141 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
|
142 If nothing found, return None. |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
143 |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
144 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
|
145 |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
146 """ |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
147 for locale in languages: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
148 if locale == "C": |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
149 break |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
150 if domain: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
151 basename = os.path.join(localedir, locale, "LC_MESSAGES", domain) |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
152 else: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
153 basename = os.path.join(localedir, locale) |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
154 # 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
|
155 mofile = basename + ".mo" |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
156 if os.path.isfile(mofile): |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
157 motime = os.path.getmtime(mofile) |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
158 else: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
159 motime = 0 |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
160 pofile = basename + ".po" |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
161 if os.path.isfile(pofile): |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
162 potime = os.path.getmtime(pofile) |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
163 else: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
164 potime = 0 |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
165 # see what we've found |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
166 if motime < potime: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
167 # compile |
|
5528
bb364082a14a
msgfmt.make doesn't exist any more
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5477
diff
changeset
|
168 mo = msgfmt.Msgfmt(pofile).get() |
|
bb364082a14a
msgfmt.make doesn't exist any more
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5477
diff
changeset
|
169 open(mofile, 'wb').write(mo) |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
170 elif motime == 0: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
171 # 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
|
172 continue |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
173 # .mo file found or made |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
174 return mofile |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
175 return None |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
176 |
|
6067
289cee42cc19
flake8 whitespace fixes; remove unused import errno.
John Rouillard <rouilj@ieee.org>
parents:
5528
diff
changeset
|
177 |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
178 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
|
179 translation_class=RoundupTranslations, |
|
289cee42cc19
flake8 whitespace fixes; remove unused import errno.
John Rouillard <rouilj@ieee.org>
parents:
5528
diff
changeset
|
180 null_translation_class=RoundupNullTranslations): |
|
2555
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
181 """Return Translation object for given language and domain |
|
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
182 |
|
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
|
183 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
|
184 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
|
185 |
|
2555
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
186 Arguments 'translation_class' and 'null_translation_class' |
|
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
187 specify the classes that are instantiated for existing |
|
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
188 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
|
189 |
|
2555
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
190 """ |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
191 mofiles = [] |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
192 # locale directory paths |
|
2810
ca541343c3ae
straighten "if not ... else" logic;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2806
diff
changeset
|
193 if tracker_home is None: |
|
ca541343c3ae
straighten "if not ... else" logic;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2806
diff
changeset
|
194 tracker_locale = None |
|
ca541343c3ae
straighten "if not ... else" logic;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2806
diff
changeset
|
195 else: |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
196 tracker_locale = os.path.join(tracker_home, "locale") |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
197 # get the list of locales |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
198 locales = find_locales(language) |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
199 # 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
|
200 if tracker_locale: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
201 mofiles.append(get_mofile(locales, tracker_locale)) |
|
3350
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
202 for system_locale in LOCALE_DIRS: |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
203 mofiles.append(get_mofile(locales, system_locale, DOMAIN)) |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
204 # 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
|
205 if "en" not in locales: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
206 locales = find_locales("en") |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
207 # 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
|
208 if tracker_locale: |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
209 mofiles.append(get_mofile(locales, tracker_locale)) |
|
3350
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
210 for system_locale in LOCALE_DIRS: |
|
73ef4805a2eb
search mo files relative ro roundup installation path [SF#1219689]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2918
diff
changeset
|
211 mofiles.append(get_mofile(locales, system_locale, DOMAIN)) |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
212 # 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
|
213 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
|
214 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
|
215 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
|
216 try: |
|
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
|
217 mo = open(mofile, "rb") |
|
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
|
218 if translator is 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
|
219 translator = translation_class(mo) |
|
6672
01216187a167
Testing translations in mailgw.py, update translations, i18n improved
John Rouillard <rouilj@ieee.org>
parents:
6527
diff
changeset
|
220 # the .mo file this translator loaded from |
|
01216187a167
Testing translations in mailgw.py, update translations, i18n improved
John Rouillard <rouilj@ieee.org>
parents:
6527
diff
changeset
|
221 translator._file = mofile |
|
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
|
222 else: |
|
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
|
223 # note: current implementation of gettext_module |
|
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
|
224 # always adds fallback to the end of the fallback chain. |
|
6672
01216187a167
Testing translations in mailgw.py, update translations, i18n improved
John Rouillard <rouilj@ieee.org>
parents:
6527
diff
changeset
|
225 fallback = translation_class(mo) |
|
01216187a167
Testing translations in mailgw.py, update translations, i18n improved
John Rouillard <rouilj@ieee.org>
parents:
6527
diff
changeset
|
226 fallback._file = mofile |
|
01216187a167
Testing translations in mailgw.py, update translations, i18n improved
John Rouillard <rouilj@ieee.org>
parents:
6527
diff
changeset
|
227 translator.add_fallback(fallback) |
|
6479
808f7a8ed2b6
Clean leaking file descriptors. Eliminates ResourceWarnings.
John Rouillard <rouilj@ieee.org>
parents:
6067
diff
changeset
|
228 mo.close() |
|
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
|
229 except IOError: |
|
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
|
230 # 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
|
231 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
|
232 if translator is None: |
|
2806
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
233 translator = null_translation_class() |
|
845e87d5e3ba
translator objects now have the following search path:
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2576
diff
changeset
|
234 return translator |
|
2355
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
235 |
|
6067
289cee42cc19
flake8 whitespace fixes; remove unused import errno.
John Rouillard <rouilj@ieee.org>
parents:
5528
diff
changeset
|
236 |
|
2355
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
237 # static translations object |
|
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
238 translation = get_translation() |
|
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
239 # static translation functions |
|
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
240 _ = gettext = translation.gettext |
|
5477
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
241 try: |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
242 # Python 2. |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
243 ugettext = translation.ugettext |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
244 except AttributeError: |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
245 # Python 3. |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
246 ugettext = translation.gettext |
|
2355
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
247 ngettext = translation.ngettext |
|
5477
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
248 try: |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
249 # Python 2. |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
250 ungettext = translation.ungettext |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
251 except AttributeError: |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
252 # Python 3. |
|
b0c2307be3d1
applied remaining part of original patch 045 (slightly modified)
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5416
diff
changeset
|
253 ungettext = translation.ngettext |
|
2355
6c2d8183a235
export unicode functions and DOMAIN name;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2326
diff
changeset
|
254 |
|
2555
e8b2044d82a6
fix vim modeline;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2356
diff
changeset
|
255 # vim: set filetype=python sts=4 sw=4 et si : |
