Mercurial > p > roundup > code
annotate roundup/scripts/roundup_gettext.py @ 8540:e8d1da6e3571
bug: fix traceback in roundup-admin init with bad config values
initialize accepts setting values for config.ini file settings. If
they are not valid, you got a python traceback.
ConfigurationError exceptions are now trapped. The admin.py's
usageError_feedback method is used to inform the user. Also the
feedback message now starts with a newline making it easier to read by
separating it from command that caused the issue.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Mon, 23 Mar 2026 13:18:41 -0400 |
| parents | b6b0da04e768 |
| children | 9c3ec0a5c7fc |
| rev | line source |
|---|---|
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
1 #! /usr/bin/env python |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
2 # |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
3 # Copyright 2004 Richard Jones (richard@mechanicalcat.net) |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
4 |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
5 """Extract translatable strings from tracker templates and detectors/extensions""" |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
6 |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
4766
diff
changeset
|
7 from __future__ import print_function |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
8 |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
9 import os |
|
4766
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
10 import os.path as osp |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
11 import sys |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
12 import tempfile |
|
4766
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
13 |
| 8523 | 14 # --- patch sys.path to make sure 'import roundup' finds correct version |
|
4766
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
15 thisdir = osp.dirname(osp.abspath(__file__)) |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
16 rootdir = osp.dirname(osp.dirname(thisdir)) |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
17 if (osp.exists(thisdir + '/__init__.py') and |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
18 osp.exists(rootdir + '/roundup/__init__.py')): |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
19 # the script is located inside roundup source code |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
20 sys.path.insert(0, rootdir) |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
21 # --/ |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
22 |
| 8523 | 23 from roundup import configuration # noqa: E402 |
| 24 from roundup.cgi.TAL import talgettext # noqa: E402 | |
| 25 from roundup.i18n import _ # noqa: E402 | |
| 26 from roundup.pygettext import TokenEater, make_escapes, tokenize # noqa: E402 | |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
27 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
28 try: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
29 import polib |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
30 except ImportError: |
|
8089
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
31 print(_("\nExtracting translatable strings only from html templates.\n" |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
32 "Because the 'polib' module is missing, unable to extract\n" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
33 "translations from detectors or extensions.\n" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
34 "The 'polib' module can be installed with pip.\n")) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
35 polib = None |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
36 |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
37 |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
38 # from pygettext's main(): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
39 class Options: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
40 # constants |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
41 GNU = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
42 SOLARIS = 2 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
43 # defaults |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
44 extractall = 0 # FIXME: currently this option has no effect at all. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
45 escape = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
46 keywords = ["_", "gettext", "ngettext", "ugettext"] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
47 outpath = '' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
48 outfile = '' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
49 writelocations = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
50 locationstyle = GNU |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
51 verbose = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
52 width = 10 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
53 excludefilename = '' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
54 docstrings = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
55 nodocstrings = {} |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
56 toexclude = [] # TODO we should exclude all strings already found in some template |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
57 |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
58 |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
59 tokeneater_options = Options() |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
60 |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
61 # name of message template file. |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
62 # i don't think this will ever need to be changed, but still... |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
63 TEMPLATE_FILE = "messages.pot" |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
64 |
| 6044 | 65 |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
66 def run(): |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
67 # return unless command line arguments contain single directory path |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
68 if (len(sys.argv) != 2) or (sys.argv[1] in ("-h", "--help")): |
| 6044 | 69 print(_("Usage: %(program)s <tracker home>") % |
| 70 {"program": sys.argv[0]}) | |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
71 return |
|
8089
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
72 |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
73 home = os.path.abspath(sys.argv[1]) |
|
8089
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
74 # collect file paths of html templates from config |
|
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
75 config = configuration.CoreConfig(home) |
|
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
76 htmldir = config["TEMPLATES"] |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
77 if os.path.isdir(htmldir): |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
78 # glob is not used because i want to match file names |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
79 # without case sensitivity, and that is easier done this way. |
|
8088
1045425c23b2
refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents:
8084
diff
changeset
|
80 htmlfiles = [e.name for e in os.scandir(htmldir) |
|
1045425c23b2
refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents:
8084
diff
changeset
|
81 if e.is_file() |
|
1045425c23b2
refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents:
8084
diff
changeset
|
82 and e.name.lower().endswith(".html")] |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
83 else: |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
84 htmlfiles = [] |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
85 # return if no html files found |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
86 if not htmlfiles: |
|
8089
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
87 print(_("No tracker templates found in directory %s") % htmldir) |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
88 return |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
89 # change to locale dir to have relative source references |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
90 locale = os.path.join(home, "locale") |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
91 if not os.path.isdir(locale): |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
92 os.mkdir(locale) |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
93 os.chdir(locale) |
|
8089
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
94 |
|
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
95 # compute relative path to template directory from locale directory |
|
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
96 relpath = os.path.relpath(htmldir) |
|
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
97 |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
98 # tweak sys.argv as this is the only way to tell talgettext what to do |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
99 # Note: unix-style paths used instead of os.path.join deliberately |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
100 sys.argv[1:] = ["-o", TEMPLATE_FILE] \ |
|
8089
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
101 + [relpath + "/" + filename for filename in htmlfiles] |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
102 # run |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
103 talgettext.main() |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
104 |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
105 if not polib: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
106 return |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
107 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
108 # we have now everything from the templates in the TEMPLATE_FILE |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
109 # now we search in home/detectors and home/extensions *.py files for |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
110 # tokeneater_options.keywords |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
111 # this is partly assembled from pygettext's main() |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
112 make_escapes(not tokeneater_options.escape) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
113 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
114 pyfiles = [] |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
115 for source in ["detectors", "extensions"]: |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
116 for root, _dirs, files in os.walk(os.path.join("..", source)): |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
117 pyfiles.extend([os.path.join(root, f) for f in files if f.endswith(".py")]) |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
118 |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
119 eater = TokenEater(tokeneater_options) |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
120 |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
121 for filename in pyfiles: |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
122 eater.set_filename(filename) |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
123 with open(filename, "r") as f: |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
124 try: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
125 for token in tokenize.generate_tokens(f.readline): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
126 eater(*token) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
127 except tokenize.TokenError as e: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
128 print('%s: %s, line %d, column %d' % ( |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
129 e[0], filename, e[1][0], e[1][1]), file=sys.stderr) |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
130 |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
131 with tempfile.NamedTemporaryFile("w") as tf: |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
132 eater.write(tf) |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
133 tf.seek(0) |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
134 p1 = polib.pofile(TEMPLATE_FILE) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
135 p2 = polib.pofile(tf.name) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
136 |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
137 p2_msg_ids = {e.msgid for e in p2} |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
138 for e in p1: |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
139 if e.msgid in p2_msg_ids: |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
140 p2_e = p2.find(e.msgid) |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
141 e.occurrences.extend(p2_e.occurrences) |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
142 p2_msg_ids.remove(e.msgid) |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
143 |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
144 for msgid in p2_msg_ids: |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
145 p1.append(p2.find(msgid)) |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
146 p1.save() |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
147 |
| 6044 | 148 |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
149 if __name__ == "__main__": |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
150 run() |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
151 |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
152 # vim: set et sts=4 sw=4 : |
