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
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/