Mercurial > p > roundup > code
annotate tools/pygettext.py @ 440:de5bf4191f11
Enabled transaction support in the bsddb backend.
It uses the anydbm code where possible, only replacing methods where
the db is opened (it uses the btree opener specifically.)
Also cleaned up some change note generation.
Made the backends package work with pydoc too.
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Mon, 10 Dec 2001 22:20:01 +0000 |
| parents | 8babfb52ebbd |
| children | a787b2413997 |
| rev | line source |
|---|---|
|
400
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
1 #! /usr/bin/env python |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
2 # Originally written by Barry Warsaw <bwarsaw@python.org> |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
3 # |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
4 # minimally patched to make it even more xgettext compatible |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
5 # by Peter Funk <pf@artcom-gmbh.de> |
|
424
8babfb52ebbd
Added change notes
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
423
diff
changeset
|
6 # |
|
8babfb52ebbd
Added change notes
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
423
diff
changeset
|
7 # 2001-11-21 Jürgen Hermann <jh@web.de> |
|
8babfb52ebbd
Added change notes
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
423
diff
changeset
|
8 # Checks that _() only contains string literals added, and |
|
8babfb52ebbd
Added change notes
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
423
diff
changeset
|
9 # command line args are resolved to module lists, i.e. you |
|
8babfb52ebbd
Added change notes
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
423
diff
changeset
|
10 # can now pass a filename, a module or package name, or a |
|
8babfb52ebbd
Added change notes
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
423
diff
changeset
|
11 # directory (including globbing chars, important for Win32). |
|
8babfb52ebbd
Added change notes
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
423
diff
changeset
|
12 # |
|
400
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
13 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
14 # for selftesting |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
15 try: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
16 import fintl |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
17 _ = fintl.gettext |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
18 except ImportError: |
|
404
3844451f7a30
Added warning for non-string _() markup (which is also ignored)
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
401
diff
changeset
|
19 _ = lambda s: s |
|
400
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
20 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
21 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
22 __doc__ = _("""pygettext -- Python equivalent of xgettext(1) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
23 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
24 Many systems (Solaris, Linux, Gnu) provide extensive tools that ease the |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
25 internationalization of C programs. Most of these tools are independent of |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
26 the programming language and can be used from within Python programs. Martin |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
27 von Loewis' work[1] helps considerably in this regard. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
28 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
29 There's one problem though; xgettext is the program that scans source code |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
30 looking for message strings, but it groks only C (or C++). Python introduces |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
31 a few wrinkles, such as dual quoting characters, triple quoted strings, and |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
32 raw strings. xgettext understands none of this. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
33 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
34 Enter pygettext, which uses Python's standard tokenize module to scan Python |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
35 source code, generating .pot files identical to what GNU xgettext[2] generates |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
36 for C and C++ code. From there, the standard GNU tools can be used. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
37 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
38 A word about marking Python strings as candidates for translation. GNU |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
39 xgettext recognizes the following keywords: gettext, dgettext, dcgettext, and |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
40 gettext_noop. But those can be a lot of text to include all over your code. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
41 C and C++ have a trick: they use the C preprocessor. Most internationalized C |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
42 source includes a #define for gettext() to _() so that what has to be written |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
43 in the source is much less. Thus these are both translatable strings: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
44 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
45 gettext("Translatable String") |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
46 _("Translatable String") |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
47 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
48 Python of course has no preprocessor so this doesn't work so well. Thus, |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
49 pygettext searches only for _() by default, but see the -k/--keyword flag |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
50 below for how to augment this. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
51 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
52 [1] http://www.python.org/workshops/1997-10/proceedings/loewis.html |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
53 [2] http://www.gnu.org/software/gettext/gettext.html |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
54 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
55 NOTE: pygettext attempts to be option and feature compatible with GNU xgettext |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
56 where ever possible. However some options are still missing or are not fully |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
57 implemented. Also, xgettext's use of command line switches with option |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
58 arguments is broken, and in these cases, pygettext just defines additional |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
59 switches. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
60 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
61 Usage: pygettext [options] inputfile ... |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
62 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
63 Options: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
64 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
65 -a |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
66 --extract-all |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
67 Extract all strings |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
68 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
69 -d name |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
70 --default-domain=name |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
71 Rename the default output file from messages.pot to name.pot |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
72 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
73 -E |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
74 --escape |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
75 replace non-ASCII characters with octal escape sequences. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
76 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
77 -h |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
78 --help |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
79 print this help message and exit |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
80 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
81 -k word |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
82 --keyword=word |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
83 Keywords to look for in addition to the default set, which are: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
84 %(DEFAULTKEYWORDS)s |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
85 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
86 You can have multiple -k flags on the command line. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
87 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
88 -K |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
89 --no-default-keywords |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
90 Disable the default set of keywords (see above). Any keywords |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
91 explicitly added with the -k/--keyword option are still recognized. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
92 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
93 --no-location |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
94 Do not write filename/lineno location comments. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
95 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
96 -n |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
97 --add-location |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
98 Write filename/lineno location comments indicating where each |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
99 extracted string is found in the source. These lines appear before |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
100 each msgid. The style of comments is controlled by the -S/--style |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
101 option. This is the default. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
102 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
103 -S stylename |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
104 --style stylename |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
105 Specify which style to use for location comments. Two styles are |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
106 supported: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
107 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
108 Solaris # File: filename, line: line-number |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
109 GNU #: filename:line |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
110 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
111 The style name is case insensitive. GNU style is the default. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
112 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
113 -o filename |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
114 --output=filename |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
115 Rename the default output file from messages.pot to filename. If |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
116 filename is `-' then the output is sent to standard out. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
117 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
118 -p dir |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
119 --output-dir=dir |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
120 Output files will be placed in directory dir. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
121 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
122 -v |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
123 --verbose |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
124 Print the names of the files being processed. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
125 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
126 -V |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
127 --version |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
128 Print the version of pygettext and exit. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
129 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
130 -w columns |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
131 --width=columns |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
132 Set width of output to columns. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
133 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
134 -x filename |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
135 --exclude-file=filename |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
136 Specify a file that contains a list of strings that are not be |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
137 extracted from the input files. Each string to be excluded must |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
138 appear on a line by itself in the file. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
139 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
140 If `inputfile' is -, standard input is read. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
141 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
142 """) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
143 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
144 import os |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
145 import sys |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
146 import time |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
147 import getopt |
|
404
3844451f7a30
Added warning for non-string _() markup (which is also ignored)
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
401
diff
changeset
|
148 import token |
|
400
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
149 import tokenize |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
150 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
151 __version__ = '1.1' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
152 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
153 default_keywords = ['_'] |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
154 DEFAULTKEYWORDS = ', '.join(default_keywords) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
155 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
156 EMPTYSTRING = '' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
157 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
158 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
159 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
160 # The normal pot-file header. msgmerge and EMACS' po-mode work better if |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
161 # it's there. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
162 pot_header = _('''\ |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
163 # SOME DESCRIPTIVE TITLE. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
164 # Copyright (C) YEAR ORGANIZATION |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
165 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
166 # |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
167 msgid "" |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
168 msgstr "" |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
169 "Project-Id-Version: PACKAGE VERSION\\n" |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
170 "PO-Revision-Date: %(time)s\\n" |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
171 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n" |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
172 "Language-Team: LANGUAGE <LL@li.org>\\n" |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
173 "MIME-Version: 1.0\\n" |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
174 "Content-Type: text/plain; charset=CHARSET\\n" |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
175 "Content-Transfer-Encoding: ENCODING\\n" |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
176 "Generated-By: pygettext.py %(version)s\\n" |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
177 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
178 ''') |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
179 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
180 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
181 def usage(code, msg=''): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
182 print __doc__ % globals() |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
183 if msg: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
184 print msg |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
185 sys.exit(code) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
186 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
187 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
188 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
189 escapes = [] |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
190 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
191 def make_escapes(pass_iso8859): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
192 global escapes |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
193 if pass_iso8859: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
194 # Allow iso-8859 characters to pass through so that e.g. 'msgid |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
195 # "Höhe"' would result not result in 'msgid "H\366he"'. Otherwise we |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
196 # escape any character outside the 32..126 range. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
197 mod = 128 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
198 else: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
199 mod = 256 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
200 for i in range(256): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
201 if 32 <= (i % mod) <= 126: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
202 escapes.append(chr(i)) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
203 else: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
204 escapes.append("\\%03o" % i) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
205 escapes[ord('\\')] = '\\\\' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
206 escapes[ord('\t')] = '\\t' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
207 escapes[ord('\r')] = '\\r' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
208 escapes[ord('\n')] = '\\n' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
209 escapes[ord('\"')] = '\\"' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
210 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
211 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
212 def escape(s): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
213 global escapes |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
214 s = list(s) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
215 for i in range(len(s)): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
216 s[i] = escapes[ord(s[i])] |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
217 return EMPTYSTRING.join(s) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
218 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
219 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
220 def safe_eval(s): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
221 # unwrap quotes, safely |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
222 return eval(s, {'__builtins__':{}}, {}) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
223 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
224 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
225 def normalize(s): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
226 # This converts the various Python string types into a format that is |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
227 # appropriate for .po files, namely much closer to C style. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
228 lines = s.split('\n') |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
229 if len(lines) == 1: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
230 s = '"' + escape(s) + '"' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
231 else: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
232 if not lines[-1]: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
233 del lines[-1] |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
234 lines[-1] = lines[-1] + '\n' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
235 for i in range(len(lines)): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
236 lines[i] = escape(lines[i]) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
237 lineterm = '\\n"\n"' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
238 s = '""\n"' + lineterm.join(lines) + '"' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
239 return s |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
240 |
|
423
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
241 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
242 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
243 def containsAny(str, set): |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
244 """ Check whether 'str' contains ANY of the chars in 'set' |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
245 """ |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
246 return 1 in [c in str for c in set] |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
247 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
248 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
249 def _visit_pyfiles(list, dirname, names): |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
250 """ Helper for getFilesForName(). |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
251 """ |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
252 # get extension for python source files |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
253 if not globals().has_key('_py_ext'): |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
254 import imp |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
255 global _py_ext |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
256 _py_ext = [triple[0] for triple in imp.get_suffixes() if triple[2] == imp.PY_SOURCE][0] |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
257 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
258 # don't recurse into CVS directories |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
259 if 'CVS' in names: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
260 names.remove('CVS') |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
261 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
262 # add all *.py files to list |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
263 list.extend( |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
264 [os.path.join(dirname, file) |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
265 for file in names |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
266 if os.path.splitext(file)[1] == _py_ext]) |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
267 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
268 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
269 def _get_modpkg_path(dotted_name, pathlist=None): |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
270 """ Get the filesystem path for a module or a package. |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
271 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
272 Return the file system path to a file for a module, |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
273 and to a directory for a package. Return None if |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
274 the name is not found, or is a builtin or extension module. |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
275 """ |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
276 import imp |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
277 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
278 # split off top-most name |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
279 parts = dotted_name.split('.', 1) |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
280 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
281 if len(parts) > 1: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
282 # we have a dotted path, import top-level package |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
283 try: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
284 file, pathname, description = imp.find_module(parts[0], pathlist) |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
285 if file: file.close() |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
286 except ImportError: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
287 return None |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
288 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
289 # check if it's indeed a package |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
290 if description[2] == imp.PKG_DIRECTORY: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
291 # recursively handle the remaining name parts |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
292 pathname = _get_modpkg_path(parts[1], [pathname]) |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
293 else: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
294 pathname = None |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
295 else: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
296 # plain name |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
297 try: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
298 file, pathname, description = imp.find_module(dotted_name, pathlist) |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
299 if file: file.close() |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
300 if description[2] not in [imp.PY_SOURCE, imp.PKG_DIRECTORY]: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
301 pathname = None |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
302 except ImportError: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
303 pathname = None |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
304 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
305 return pathname |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
306 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
307 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
308 def getFilesForName(name): |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
309 """ Get a list of module files for a filename, a module or package name, |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
310 or a directory. |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
311 """ |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
312 import imp |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
313 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
314 if not os.path.exists(name): |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
315 # check for glob chars |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
316 if containsAny(name, "*?[]"): |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
317 import glob |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
318 files = glob.glob(name) |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
319 list = [] |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
320 for file in files: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
321 list.extend(getFilesForName(file)) |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
322 return list |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
323 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
324 # try to find module or package |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
325 name = _get_modpkg_path(name) |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
326 if not name: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
327 return [] |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
328 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
329 if os.path.isdir(name): |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
330 # find all python files in directory |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
331 list = [] |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
332 os.path.walk(name, _visit_pyfiles, list) |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
333 return list |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
334 elif os.path.exists(name): |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
335 # a single file |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
336 return [name] |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
337 |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
338 return [] |
|
400
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
339 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
340 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
341 class TokenEater: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
342 def __init__(self, options): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
343 self.__options = options |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
344 self.__messages = {} |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
345 self.__state = self.__waiting |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
346 self.__data = [] |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
347 self.__lineno = -1 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
348 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
349 def __call__(self, ttype, tstring, stup, etup, line): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
350 # dispatch |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
351 self.__state(ttype, tstring, stup[0]) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
352 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
353 def __waiting(self, ttype, tstring, lineno): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
354 if ttype == tokenize.NAME and tstring in self.__options.keywords: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
355 self.__state = self.__keywordseen |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
356 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
357 def __keywordseen(self, ttype, tstring, lineno): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
358 if ttype == tokenize.OP and tstring == '(': |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
359 self.__data = [] |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
360 self.__lineno = lineno |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
361 self.__state = self.__openseen |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
362 else: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
363 self.__state = self.__waiting |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
364 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
365 def __openseen(self, ttype, tstring, lineno): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
366 if ttype == tokenize.OP and tstring == ')': |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
367 # We've seen the last of the translatable strings. Record the |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
368 # line number of the first line of the strings and update the list |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
369 # of messages seen. Reset state for the next batch. If there |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
370 # were no strings inside _(), then just ignore this entry. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
371 if self.__data: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
372 msg = EMPTYSTRING.join(self.__data) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
373 if not msg in self.__options.toexclude: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
374 entry = (self.__curfile, self.__lineno) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
375 linenos = self.__messages.get(msg) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
376 if linenos is None: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
377 self.__messages[msg] = [entry] |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
378 else: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
379 linenos.append(entry) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
380 self.__state = self.__waiting |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
381 elif ttype == tokenize.STRING: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
382 self.__data.append(safe_eval(tstring)) |
|
404
3844451f7a30
Added warning for non-string _() markup (which is also ignored)
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
401
diff
changeset
|
383 elif ttype not in [tokenize.COMMENT, token.INDENT, token.DEDENT, |
|
3844451f7a30
Added warning for non-string _() markup (which is also ignored)
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
401
diff
changeset
|
384 token.NEWLINE, tokenize.NL]: |
| 405 | 385 # warn if we see anything else than STRING or whitespace |
|
404
3844451f7a30
Added warning for non-string _() markup (which is also ignored)
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
401
diff
changeset
|
386 print >>sys.stderr, _('*** %(file)s:%(lineno)s: Seen unexpected token "%(token)s"') % { |
|
3844451f7a30
Added warning for non-string _() markup (which is also ignored)
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
401
diff
changeset
|
387 'token': tstring, 'file': self.__curfile, 'lineno': self.__lineno} |
|
3844451f7a30
Added warning for non-string _() markup (which is also ignored)
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
401
diff
changeset
|
388 self.__state = self.__waiting |
|
400
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
389 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
390 def set_filename(self, filename): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
391 self.__curfile = filename |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
392 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
393 def write(self, fp): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
394 options = self.__options |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
395 timestamp = time.ctime(time.time()) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
396 # common header |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
397 try: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
398 sys.stdout = fp |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
399 # The time stamp in the header doesn't have the same format |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
400 # as that generated by xgettext... |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
401 print pot_header % {'time': timestamp, 'version': __version__} |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
402 for k, v in self.__messages.items(): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
403 if not options.writelocations: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
404 pass |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
405 # location comments are different b/w Solaris and GNU: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
406 elif options.locationstyle == options.SOLARIS: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
407 for filename, lineno in v: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
408 d = {'filename': filename, 'lineno': lineno} |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
409 print _('# File: %(filename)s, line: %(lineno)d') % d |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
410 elif options.locationstyle == options.GNU: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
411 # fit as many locations on one line, as long as the |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
412 # resulting line length doesn't exceeds 'options.width' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
413 locline = '#:' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
414 for filename, lineno in v: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
415 d = {'filename': filename, 'lineno': lineno} |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
416 s = _(' %(filename)s:%(lineno)d') % d |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
417 if len(locline) + len(s) <= options.width: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
418 locline = locline + s |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
419 else: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
420 print locline |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
421 locline = "#:" + s |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
422 if len(locline) > 2: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
423 print locline |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
424 # TBD: sorting, normalizing |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
425 print 'msgid', normalize(k) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
426 print 'msgstr ""\n' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
427 finally: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
428 sys.stdout = sys.__stdout__ |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
429 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
430 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
431 def main(): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
432 global default_keywords |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
433 try: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
434 opts, args = getopt.getopt( |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
435 sys.argv[1:], |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
436 'ad:Ehk:Kno:p:S:Vvw:x:', |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
437 ['extract-all', 'default-domain', 'escape', 'help', |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
438 'keyword=', 'no-default-keywords', |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
439 'add-location', 'no-location', 'output=', 'output-dir=', |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
440 'style=', 'verbose', 'version', 'width=', 'exclude-file=', |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
441 ]) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
442 except getopt.error, msg: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
443 usage(1, msg) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
444 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
445 # for holding option values |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
446 class Options: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
447 # constants |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
448 GNU = 1 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
449 SOLARIS = 2 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
450 # defaults |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
451 extractall = 0 # FIXME: currently this option has no effect at all. |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
452 escape = 0 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
453 keywords = [] |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
454 outpath = '' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
455 outfile = 'messages.pot' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
456 writelocations = 1 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
457 locationstyle = GNU |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
458 verbose = 0 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
459 width = 78 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
460 excludefilename = '' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
461 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
462 options = Options() |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
463 locations = {'gnu' : options.GNU, |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
464 'solaris' : options.SOLARIS, |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
465 } |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
466 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
467 # parse options |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
468 for opt, arg in opts: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
469 if opt in ('-h', '--help'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
470 usage(0) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
471 elif opt in ('-a', '--extract-all'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
472 options.extractall = 1 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
473 elif opt in ('-d', '--default-domain'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
474 options.outfile = arg + '.pot' |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
475 elif opt in ('-E', '--escape'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
476 options.escape = 1 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
477 elif opt in ('-k', '--keyword'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
478 options.keywords.append(arg) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
479 elif opt in ('-K', '--no-default-keywords'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
480 default_keywords = [] |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
481 elif opt in ('-n', '--add-location'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
482 options.writelocations = 1 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
483 elif opt in ('--no-location',): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
484 options.writelocations = 0 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
485 elif opt in ('-S', '--style'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
486 options.locationstyle = locations.get(arg.lower()) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
487 if options.locationstyle is None: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
488 usage(1, _('Invalid value for --style: %s') % arg) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
489 elif opt in ('-o', '--output'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
490 options.outfile = arg |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
491 elif opt in ('-p', '--output-dir'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
492 options.outpath = arg |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
493 elif opt in ('-v', '--verbose'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
494 options.verbose = 1 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
495 elif opt in ('-V', '--version'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
496 print _('pygettext.py (xgettext for Python) %s') % __version__ |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
497 sys.exit(0) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
498 elif opt in ('-w', '--width'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
499 try: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
500 options.width = int(arg) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
501 except ValueError: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
502 usage(1, _('--width argument must be an integer: %s') % arg) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
503 elif opt in ('-x', '--exclude-file'): |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
504 options.excludefilename = arg |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
505 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
506 # calculate escapes |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
507 make_escapes(options.escape) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
508 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
509 # calculate all keywords |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
510 options.keywords.extend(default_keywords) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
511 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
512 # initialize list of strings to exclude |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
513 if options.excludefilename: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
514 try: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
515 fp = open(options.excludefilename) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
516 options.toexclude = fp.readlines() |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
517 fp.close() |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
518 except IOError: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
519 sys.stderr.write(_("Can't read --exclude-file: %s") % |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
520 options.excludefilename) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
521 sys.exit(1) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
522 else: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
523 options.toexclude = [] |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
524 |
|
423
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
525 # resolve args to module lists |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
526 expanded = [] |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
527 for arg in args: |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
528 expanded.extend(getFilesForName(arg)) |
|
c64ce58ee529
Resolve pygettext args; described command line calls
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
405
diff
changeset
|
529 args = expanded |
|
401
a930feb07dc4
Added globbing for win32, and sample marking in a 2nd file to test it
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
400
diff
changeset
|
530 |
|
400
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
531 # slurp through all the files |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
532 eater = TokenEater(options) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
533 for filename in args: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
534 if filename == '-': |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
535 if options.verbose: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
536 print _('Reading standard input') |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
537 fp = sys.stdin |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
538 closep = 0 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
539 else: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
540 if options.verbose: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
541 print _('Working on %s') % filename |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
542 fp = open(filename) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
543 closep = 1 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
544 try: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
545 eater.set_filename(filename) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
546 tokenize.tokenize(fp.readline, eater) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
547 finally: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
548 if closep: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
549 fp.close() |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
550 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
551 # write the output |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
552 if options.outfile == '-': |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
553 fp = sys.stdout |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
554 closep = 0 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
555 else: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
556 if options.outpath: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
557 options.outfile = os.path.join(options.outpath, options.outfile) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
558 fp = open(options.outfile, 'w') |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
559 closep = 1 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
560 try: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
561 eater.write(fp) |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
562 finally: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
563 if closep: |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
564 fp.close() |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
565 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
566 |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
567 if __name__ == '__main__': |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
568 main() |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
569 # some more test strings |
|
139593f02ff6
To create a roundup .pot file, use:
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
diff
changeset
|
570 _(u'a unicode string') |
|
404
3844451f7a30
Added warning for non-string _() markup (which is also ignored)
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
401
diff
changeset
|
571 _('*** Seen unexpected token "%(token)s"' % {'token': 'test'}) |
|
3844451f7a30
Added warning for non-string _() markup (which is also ignored)
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
401
diff
changeset
|
572 _('more' 'than' 'one' 'string') |
|
3844451f7a30
Added warning for non-string _() markup (which is also ignored)
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
401
diff
changeset
|
573 |
