annotate tools/pygettext.py @ 424:8babfb52ebbd

Added change notes
author Jürgen Hermann <jhermann@users.sourceforge.net>
date Fri, 30 Nov 2001 01:35:39 +0000
parents c64ce58ee529
children a787b2413997
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
f0b234ce301f Typo fix
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 404
diff changeset
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

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