263
|
1 .. -*- mode: rst; encoding: utf-8 -*-
|
|
2
|
|
3 ================================
|
|
4 Distutils/Setuptools Integration
|
|
5 ================================
|
|
6
|
|
7 Babel provides commands for integration into ``setup.py`` scripts, based on
|
|
8 either the ``distutils`` package that is part of the Python standard library,
|
|
9 or the third-party ``setuptools`` package.
|
|
10
|
|
11 These commands are available by default when Babel has been properly installed,
|
|
12 and ``setup.py`` is using ``setuptools``. For projects that use plain old
|
|
13 ``distutils``, the commands need to be registered explicitly, for example:
|
|
14
|
|
15 .. code-block:: python
|
|
16
|
|
17 from distutils.core import setup
|
|
18 from babel.messages import frontend as babel
|
|
19
|
|
20 setup(
|
|
21 ...
|
|
22 cmdclass = {'compile_catalog': babel.compile_catalog,
|
|
23 'extract_messages': babel.extract_messages,
|
|
24 'init_catalog': babel.init_catalog,
|
|
25 'update_catalog': babel.update_catalog}
|
|
26 )
|
|
27
|
|
28
|
|
29 .. contents:: Contents
|
|
30 :depth: 2
|
|
31 .. sectnum::
|
|
32
|
|
33
|
|
34 compile_catalog
|
|
35 ===============
|
|
36
|
|
37 The ``compile_catalog`` command is similar to the GNU ``msgfmt`` tool, in that
|
|
38 it takes a message catalog from a PO file and compiles it to a binary MO file.
|
|
39
|
|
40 If the command has been correctly installed or registered, a project's
|
|
41 ``setup.py`` script should allow you to use the command::
|
|
42
|
|
43 $ ./setup.py compile_catalog --help
|
|
44 Global options:
|
|
45 --verbose (-v) run verbosely (default)
|
|
46 --quiet (-q) run quietly (turns verbosity off)
|
|
47 --dry-run (-n) don't actually do anything
|
|
48 --help (-h) show detailed help message
|
|
49
|
|
50 Options for 'compile_catalog' command:
|
|
51 ...
|
|
52
|
|
53 Running the command will produce a PO template file::
|
|
54
|
|
55 $ ./setup.py compile_catalog --directory foobar/locale --locale pt_BR
|
|
56 running compile_catalog
|
|
57 compiling catalog to to foobar/locale/pt_BR/LC_MESSAGES/messages.mo
|
|
58
|
|
59
|
|
60 Options
|
|
61 -------
|
|
62
|
|
63 The ``compile_catalog`` command accepts the following options:
|
|
64
|
|
65 +-----------------------------+----------------------------------------------+
|
|
66 | Option | Description |
|
|
67 +=============================+==============================================+
|
|
68 | ``--domain`` | domain of the PO file (defaults to |
|
|
69 | | lower-cased project name) |
|
|
70 +-----------------------------+----------------------------------------------+
|
|
71 | ``--directory`` (``-d``) | name of the base directory |
|
|
72 +-----------------------------+----------------------------------------------+
|
|
73 | ``--input-file`` (``-i``) | name of the input file |
|
|
74 +-----------------------------+----------------------------------------------+
|
|
75 | ``--output-file`` (``-o``) | name of the output file |
|
|
76 +-----------------------------+----------------------------------------------+
|
|
77 | ``--locale`` | locale for the new localized string |
|
|
78 +-----------------------------+----------------------------------------------+
|
|
79 | ``--use-fuzzy`` | also include "fuzzy" translations |
|
|
80 +-----------------------------+----------------------------------------------+
|
|
81
|
|
82 If ``directory`` is specified, but ``output-file`` is not, the default filename
|
|
83 of the output file will be::
|
|
84
|
|
85 <directory>/<locale>/LC_MESSAGES/<domain>.mo
|
|
86
|
|
87 If neither the ``input_file`` nor the ``locale`` option is set, this command
|
|
88 looks for all catalog files in the base directory that match the given domain,
|
|
89 and compiles each of them to MO files in the same directory.
|
|
90
|
|
91 These options can either be specified on the command-line, or in the
|
|
92 ``setup.cfg`` file.
|
|
93
|
|
94
|
|
95 extract_messages
|
|
96 ================
|
|
97
|
|
98 The ``extract_messages`` command is comparable to the GNU ``xgettext`` program:
|
|
99 it can extract localizable messages from a variety of difference source files,
|
|
100 and generate a PO (portable object) template file from the collected messages.
|
|
101
|
|
102 If the command has been correctly installed or registered, a project's
|
|
103 ``setup.py`` script should allow you to use the command::
|
|
104
|
|
105 $ ./setup.py extract_messages --help
|
|
106 Global options:
|
|
107 --verbose (-v) run verbosely (default)
|
|
108 --quiet (-q) run quietly (turns verbosity off)
|
|
109 --dry-run (-n) don't actually do anything
|
|
110 --help (-h) show detailed help message
|
|
111
|
|
112 Options for 'extract_messages' command:
|
|
113 ...
|
|
114
|
|
115 Running the command will produce a PO template file::
|
|
116
|
|
117 $ ./setup.py extract_messages --output-file foobar/locale/messages.pot
|
|
118 running extract_messages
|
|
119 extracting messages from foobar/__init__.py
|
|
120 extracting messages from foobar/core.py
|
|
121 ...
|
|
122 writing PO template file to foobar/locale/messages.pot
|
|
123
|
|
124
|
|
125 Method Mapping
|
|
126 --------------
|
|
127
|
|
128 The mapping of file patterns to extraction methods (and options) can be
|
|
129 specified using a configuration file that is pointed to using the
|
|
130 ``--mapping-file`` option shown above. Alternatively, you can configure the
|
|
131 mapping directly in ``setup.py`` using a keyword argument to the ``setup()``
|
|
132 function:
|
|
133
|
|
134 .. code-block:: python
|
|
135
|
|
136 setup(...
|
|
137
|
|
138 message_extractors = {
|
|
139 'foobar': [
|
|
140 ('**.py', 'python', None),
|
|
141 ('**/templates/**.html', 'genshi', None),
|
|
142 ('**/templates/**.txt', 'genshi', {
|
|
143 'template_class': 'genshi.template:TextTemplate'
|
|
144 })
|
|
145 ],
|
|
146 },
|
|
147
|
|
148 ...
|
|
149 )
|
|
150
|
|
151
|
|
152 Options
|
|
153 -------
|
|
154
|
|
155 The ``extract_messages`` command accepts the following options:
|
|
156
|
|
157 +-----------------------------+----------------------------------------------+
|
|
158 | Option | Description |
|
|
159 +=============================+==============================================+
|
|
160 | ``--charset`` | charset to use in the output file |
|
|
161 +-----------------------------+----------------------------------------------+
|
|
162 | ``--keywords`` (``-k``) | space-separated list of keywords to look for |
|
|
163 | | in addition to the defaults |
|
|
164 +-----------------------------+----------------------------------------------+
|
|
165 | ``--no-default-keywords`` | do not include the default keywords |
|
|
166 +-----------------------------+----------------------------------------------+
|
|
167 | ``--mapping-file`` (``-F``) | path to the mapping configuration file |
|
|
168 +-----------------------------+----------------------------------------------+
|
|
169 | ``--no-location`` | do not include location comments with |
|
|
170 | | filename and line number |
|
|
171 +-----------------------------+----------------------------------------------+
|
|
172 | ``--omit-header`` | do not include msgid "" entry in header |
|
|
173 +-----------------------------+----------------------------------------------+
|
|
174 | ``--output-file`` (``-o``) | name of the output file |
|
|
175 +-----------------------------+----------------------------------------------+
|
|
176 | ``--width`` (``-w``) | set output line width (default 76) |
|
|
177 +-----------------------------+----------------------------------------------+
|
|
178 | ``--no-wrap`` | do not break long message lines, longer than |
|
|
179 | | the output line width, into several lines |
|
|
180 +-----------------------------+----------------------------------------------+
|
|
181 | ``--input-dirs`` | directories that should be scanned for |
|
|
182 | | messages |
|
|
183 +-----------------------------+----------------------------------------------+
|
|
184 | ``--sort-output`` | generate sorted output (default False) |
|
|
185 +-----------------------------+----------------------------------------------+
|
|
186 | ``--sort-by-file`` | sort output by file location (default False) |
|
|
187 +-----------------------------+----------------------------------------------+
|
|
188 | ``--msgid-bugs-address`` | set email address for message bug reports |
|
|
189 +-----------------------------+----------------------------------------------+
|
|
190 | ``--copyright-holder`` | set copyright holder in output |
|
|
191 +-----------------------------+----------------------------------------------+
|
|
192 | ``--add-comments (-c)`` | place comment block with TAG (or those |
|
|
193 | | preceding keyword lines) in output file. |
|
|
194 | | Separate multiple TAGs with commas(,) |
|
|
195 +-----------------------------+----------------------------------------------+
|
|
196
|
|
197 These options can either be specified on the command-line, or in the
|
|
198 ``setup.cfg`` file. In the latter case, the options above become entries of the
|
|
199 section ``[extract_messages]``, and the option names are changed to use
|
|
200 underscore characters instead of dashes, for example:
|
|
201
|
|
202 .. code-block:: ini
|
|
203
|
|
204 [extract_messages]
|
|
205 keywords = _, gettext, ngettext
|
|
206 mapping_file = babel.cfg
|
|
207 width = 80
|
|
208
|
|
209 This would be equivalent to invoking the command from the command-line as
|
|
210 follows::
|
|
211
|
|
212 $ setup.py extract_messages -k _ -k gettext -k ngettext -F mapping.cfg -w 80
|
|
213
|
|
214 Any path names are interpreted relative to the location of the ``setup.py``
|
|
215 file. For boolean options, use "true" or "false" values.
|
|
216
|
|
217
|
|
218 init_catalog
|
|
219 ============
|
|
220
|
|
221 The ``init_catalog`` command is basically equivalent to the GNU ``msginit``
|
|
222 program: it creates a new translation catalog based on a PO template file (POT).
|
|
223
|
|
224 If the command has been correctly installed or registered, a project's
|
|
225 ``setup.py`` script should allow you to use the command::
|
|
226
|
|
227 $ ./setup.py init_catalog --help
|
|
228 Global options:
|
|
229 --verbose (-v) run verbosely (default)
|
|
230 --quiet (-q) run quietly (turns verbosity off)
|
|
231 --dry-run (-n) don't actually do anything
|
|
232 --help (-h) show detailed help message
|
|
233
|
|
234 Options for 'init_catalog' command:
|
|
235 ...
|
|
236
|
|
237 Running the command will produce a PO file::
|
|
238
|
|
239 $ ./setup.py init_catalog -l fr -i foobar/locales/messages.pot \
|
|
240 -o foobar/locales/fr/messages.po
|
|
241 running init_catalog
|
|
242 creating catalog 'foobar/locales/fr/messages.po' based on 'foobar/locales/messages.pot'
|
|
243
|
|
244
|
|
245 Options
|
|
246 -------
|
|
247
|
|
248 The ``init_catalog`` command accepts the following options:
|
|
249
|
|
250 +-----------------------------+----------------------------------------------+
|
|
251 | Option | Description |
|
|
252 +=============================+==============================================+
|
|
253 | ``--domain`` | domain of the PO file (defaults to |
|
|
254 | | lower-cased project name) |
|
|
255 +-----------------------------+----------------------------------------------+
|
|
256 | ``--input-file`` (``-i``) | name of the input file |
|
|
257 +-----------------------------+----------------------------------------------+
|
|
258 | ``--output-dir`` (``-d``) | name of the output directory |
|
|
259 +-----------------------------+----------------------------------------------+
|
|
260 | ``--output-file`` (``-o``) | name of the output file |
|
|
261 +-----------------------------+----------------------------------------------+
|
|
262 | ``--locale`` | locale for the new localized string |
|
|
263 +-----------------------------+----------------------------------------------+
|
|
264 | ``--omit-header`` | do not include msgid "" entry in header |
|
|
265 +-----------------------------+----------------------------------------------+
|
|
266 | ``--first-author`` | name of the first author |
|
|
267 +-----------------------------+----------------------------------------------+
|
|
268 | ``--first-author-email`` | email address of the first author |
|
|
269 +-----------------------------+----------------------------------------------+
|
|
270
|
|
271 If ``output-dir`` is specified, but ``output-file`` is not, the default filename
|
|
272 of the output file will be::
|
|
273
|
|
274 <output_dir>/<locale>/LC_MESSAGES/<domain>.po
|
|
275
|
|
276 These options can either be specified on the command-line, or in the
|
|
277 ``setup.cfg`` file.
|
|
278
|
|
279
|
|
280 update_catalog
|
|
281 ==============
|
|
282
|
|
283 The ``update_catalog`` command is basically equivalent to the GNU ``msgmerge``
|
|
284 program: it updates an existing translations catalog based on a PO template
|
|
285 file (POT).
|
|
286
|
|
287 If the command has been correctly installed or registered, a project's
|
|
288 ``setup.py`` script should allow you to use the command::
|
|
289
|
|
290 $ ./setup.py update_catalog --help
|
|
291 Global options:
|
|
292 --verbose (-v) run verbosely (default)
|
|
293 --quiet (-q) run quietly (turns verbosity off)
|
|
294 --dry-run (-n) don't actually do anything
|
|
295 --help (-h) show detailed help message
|
|
296
|
|
297 Options for 'update_catalog' command:
|
|
298 ...
|
|
299
|
|
300 Running the command will update a PO file::
|
|
301
|
|
302 $ ./setup.py update_catalog -l fr -i foobar/locales/messages.pot \
|
|
303 -o foobar/locales/fr/messages.po
|
|
304 running update_catalog
|
|
305 updating catalog 'foobar/locales/fr/messages.po' based on 'foobar/locales/messages.pot'
|
|
306
|
|
307
|
|
308 Options
|
|
309 -------
|
|
310
|
|
311 The ``update_catalog`` command accepts the following options:
|
|
312
|
|
313 +-----------------------------+----------------------------------------------+
|
|
314 | Option | Description |
|
|
315 +=============================+==============================================+
|
|
316 | ``--domain`` | domain of the PO file (defaults to |
|
|
317 | | lower-cased project name) |
|
|
318 +-----------------------------+----------------------------------------------+
|
|
319 | ``--input-file`` (``-i``) | name of the input file |
|
|
320 +-----------------------------+----------------------------------------------+
|
|
321 | ``--output-dir`` (``-d``) | name of the output directory |
|
|
322 +-----------------------------+----------------------------------------------+
|
|
323 | ``--output-file`` (``-o``) | name of the output file |
|
|
324 +-----------------------------+----------------------------------------------+
|
|
325 | ``--locale`` | locale for the new localized string |
|
|
326 +-----------------------------+----------------------------------------------+
|
|
327 | ``--ignore-obsolete`` | do not include obsolete messages in the |
|
|
328 | | output |
|
|
329 +-----------------------------+----------------------------------------------+
|
|
330
|
|
331 If ``output-dir`` is specified, but ``output-file`` is not, the default filename
|
|
332 of the output file will be::
|
|
333
|
|
334 <output_dir>/<locale>/LC_MESSAGES/<domain>.po
|
|
335
|
|
336 If neither the ``input_file`` nor the ``locale`` option is set, this command
|
|
337 looks for all catalog files in the base directory that match the given domain,
|
|
338 and updates each of them.
|
|
339
|
|
340 These options can either be specified on the command-line, or in the
|
|
341 ``setup.cfg`` file.
|