Mercurial > p > roundup > code
annotate roundup/scripts/roundup_gettext.py @ 8580:5cba36e42b8f
chore: refactor replace urlparse with urlsplit and use urllib_
Python docs recommend use of urlsplit() rather than
urlparse(). urlsplit() is a little faster and doesn't try to split the
path into path and params using the rules from an obsolete RFC.
actions.py, demo.py, rest.py, client.py
Replace urlparse() with urlsplit()
actions.py
urlsplit() produces a named tuple with one fewer elements (no
.param). So fixup calls to urlunparse() so they have the proper
number of elements in the tuple.
also merge url filtering for param and path.
demo.py, rest.py:
Replace imports from urlparse/urllib.parse with
roundup.anypy.urllib_ so we use the same interface throughout the
code base.
test/test_cgi.py:
Since actions.py filtering for invali urls not split by path/param,
fix tests for improperly quoted url's.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 19 Apr 2026 22:58:59 -0400 |
| parents | 9c3ec0a5c7fc |
| children |
| 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 |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
7 import os |
|
4766
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
8 import os.path as osp |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
9 import sys |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
10 import tempfile |
|
4766
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
11 |
| 8523 | 12 # --- 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
|
13 thisdir = osp.dirname(osp.abspath(__file__)) |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
14 rootdir = osp.dirname(osp.dirname(thisdir)) |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
15 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
|
16 osp.exists(rootdir + '/roundup/__init__.py')): |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
17 # 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
|
18 sys.path.insert(0, rootdir) |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
19 # --/ |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
20 |
| 8523 | 21 from roundup import configuration # noqa: E402 |
| 22 from roundup.cgi.TAL import talgettext # noqa: E402 | |
| 23 from roundup.i18n import _ # noqa: E402 | |
| 24 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
|
25 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
26 try: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
27 import polib |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
28 except ImportError: |
|
8089
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
29 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
|
30 "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
|
31 "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
|
32 "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
|
33 polib = None |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
34 |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
35 |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
36 # from pygettext's main(): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
37 class Options: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
38 # constants |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
39 GNU = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
40 SOLARIS = 2 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
41 # defaults |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
42 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
|
43 escape = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
44 keywords = ["_", "gettext", "ngettext", "ugettext"] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
45 outpath = '' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
46 outfile = '' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
47 writelocations = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
48 locationstyle = GNU |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
49 verbose = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
50 width = 10 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
51 excludefilename = '' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
52 docstrings = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
53 nodocstrings = {} |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
54 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
|
55 |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
56 |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
57 tokeneater_options = Options() |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
58 |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
59 # name of message template file. |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
60 # 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
|
61 TEMPLATE_FILE = "messages.pot" |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
62 |
| 6044 | 63 |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
64 def run(): |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
65 # 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
|
66 if (len(sys.argv) != 2) or (sys.argv[1] in ("-h", "--help")): |
| 6044 | 67 print(_("Usage: %(program)s <tracker home>") % |
| 68 {"program": sys.argv[0]}) | |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
69 return |
|
8089
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
70 |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
71 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
|
72 # 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
|
73 config = configuration.CoreConfig(home) |
|
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
74 htmldir = config["TEMPLATES"] |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
75 if os.path.isdir(htmldir): |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
76 # 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
|
77 # 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
|
78 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
|
79 if e.is_file() |
|
1045425c23b2
refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents:
8084
diff
changeset
|
80 and e.name.lower().endswith(".html")] |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
81 else: |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
82 htmlfiles = [] |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
83 # return if no html files found |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
84 if not htmlfiles: |
|
8089
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
85 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
|
86 return |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
87 # 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
|
88 locale = os.path.join(home, "locale") |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
89 if not os.path.isdir(locale): |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
90 os.mkdir(locale) |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
91 os.chdir(locale) |
|
8089
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
92 |
|
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
93 # 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
|
94 relpath = os.path.relpath(htmldir) |
|
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
95 |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
96 # 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
|
97 # 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
|
98 sys.argv[1:] = ["-o", TEMPLATE_FILE] \ |
|
8089
f2b049b49fca
fix: replace hardcoded 'html' as template directory
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
99 + [relpath + "/" + filename for filename in htmlfiles] |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
100 # run |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
101 talgettext.main() |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
102 |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
103 if not polib: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
104 return |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
105 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
106 # 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
|
107 # 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
|
108 # tokeneater_options.keywords |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
109 # 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
|
110 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
|
111 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
112 pyfiles = [] |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
113 for source in ["detectors", "extensions"]: |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
114 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
|
115 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
|
116 |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
117 eater = TokenEater(tokeneater_options) |
|
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 for filename in pyfiles: |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
120 eater.set_filename(filename) |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
121 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
|
122 try: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
123 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
|
124 eater(*token) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
125 except tokenize.TokenError as e: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
126 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
|
127 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
|
128 |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
129 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
|
130 eater.write(tf) |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
131 tf.seek(0) |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
132 p1 = polib.pofile(TEMPLATE_FILE) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
133 p2 = polib.pofile(tf.name) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
6044
diff
changeset
|
134 |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
135 p2_msg_ids = {e.msgid for e in p2} |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
136 for e in p1: |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
137 if e.msgid in p2_msg_ids: |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
138 p2_e = p2.find(e.msgid) |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
139 e.occurrences.extend(p2_e.occurrences) |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
140 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
|
141 |
|
8084
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
142 for msgid in p2_msg_ids: |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
143 p1.append(p2.find(msgid)) |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
144 p1.save() |
|
2943140f5286
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
145 |
| 6044 | 146 |
|
2803
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
147 if __name__ == "__main__": |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
148 run() |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
149 |
|
a7b755646ffd
Extract translatable strings from tracker templates
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
150 # vim: set et sts=4 sw=4 : |
