Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbe14c27

Browse files
authored
[3.10] Add Last-Translators to TX pull commit message (#101)
Backport of#88 to 3.10 branch.Co-authored-by: Stan Ulbrych
1 parent72df25b commitbe14c27

File tree

1 file changed

+59
-2
lines changed

1 file changed

+59
-2
lines changed

‎manage_translation.py‎

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,22 @@
1111
# files.
1212
# * recreate_readme: recreate readme to update translation progress.
1313
# * regenerate_tx_config: recreate configuration for all resources.
14+
# * generate_commit_msg: generates commit message with co-authors
1415

1516
fromargparseimportArgumentParser
1617
fromcollectionsimportCounter
1718
importos
1819
fromdataclassesimportdataclass
1920
frompathlibimportPath
2021
fromreimportmatch,search
21-
fromsubprocessimportcall,run
22+
fromsubprocessimportcall,run,CalledProcessError
2223
importsys
2324
fromtypingimportSelf
2425
fromurllib.parseimportunquote
2526
fromwarningsimportwarn
2627

28+
frompolibimportpofile,POFile
29+
2730
LANGUAGE='pl'
2831

2932

@@ -271,8 +274,62 @@ def average(averages, weights):
271274
)
272275

273276

277+
defgenerate_commit_msg():
278+
"""Generate a commit message
279+
Parses staged files and generates a commit message with Last-Translator's as
280+
co-authors.
281+
"""
282+
translators:set[str]=set()
283+
284+
result=run(
285+
['git','diff','--cached','--name-only','--diff-filter=ACM'],
286+
capture_output=True,
287+
text=True,
288+
check=True,
289+
)
290+
staged= [
291+
filenameforfilenameinresult.stdout.splitlines()iffilename.endswith('.po')
292+
]
293+
294+
forfileinstaged:
295+
staged_file=run(
296+
['git','show',f':{file}'],capture_output=True,text=True,check=True
297+
).stdout
298+
try:
299+
old_file=run(
300+
['git','show',f'HEAD:{file}'],
301+
capture_output=True,
302+
text=True,
303+
check=True,
304+
).stdout
305+
exceptCalledProcessError:
306+
old_file=''
307+
308+
new_po=pofile(staged_file)
309+
old_po=pofile(old_file)ifold_fileelsePOFile()
310+
old_entries= {entry.msgid:entry.msgstrforentryinold_po}
311+
312+
forentryinnew_po:
313+
ifentry.msgstrand (
314+
entry.msgidnotinold_entries
315+
orold_entries[entry.msgid]!=entry.msgstr
316+
):
317+
translator=new_po.metadata.get('Last-Translator')
318+
translator=translator.split(',')[0].strip()
319+
iftranslator:
320+
translators.add(f'Co-Authored-By:{translator}')
321+
break
322+
323+
print('Update translation from Transifex\n\n'+'\n'.join(translators))
324+
325+
274326
if__name__=="__main__":
275-
RUNNABLE_SCRIPTS= ('fetch','recreate_tx_config','recreate_readme','warn_about_files_to_delete')
327+
RUNNABLE_SCRIPTS= (
328+
'fetch',
329+
'recreate_tx_config',
330+
'recreate_readme','warn_about_files_to_delete',
331+
'generate_commit_msg',
332+
)
276333

277334
parser=ArgumentParser()
278335
parser.add_argument('cmd',choices=RUNNABLE_SCRIPTS)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp