Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create list-translators.py #52

Open
wants to merge 3 commits into
base: 3.11
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
73 changes: 73 additions & 0 deletions list-translators.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#!/usr/bin/python3
# Extract translation credits from the PO files within the directory

from pathlib import Path

# Get all PO files in the current directory and its subdirectories
p = Path(r'.').glob('**/*.po')
pofiles = list(p)

translators_credits_list = []
rffontenelle marked this conversation as resolved.
Show resolved Hide resolved

# Exclude bot account, duplicated entry and hashes for deleted accounts
ignore_entries = [
'i17obot <[email protected]>',
'Willian Lopes',
'01419cbcade949a3bc5433893a160e74',
'2c4b5a73177ea5ea1d3324f10df471a7_b8aeba7 <7df8a60bac356f3b148ac94f3c2796f6_834576>',
'82596da39877db21448335599650eb68_ac09920 <1d2e18e2f37f0ba6c4f06b239e0670bd_848591>',
]

for po in pofiles:
with po.open() as f:

# If true, it means it is between "# Translators:\n" and "#\n",
# and it is a translator credit. Start with False
is_translator_credits = False

# Start looping through the file, line by line, looking for the
# translation credits block, and then quit without going any
# further down.
for line in f:

# if true, translator credits block finished; quit file
if line == '#\n' and is_translator_credits:
break

# if true, we are in the translator credits block; extract info
if is_translator_credits:
# remove leading sharp sign, and trailing comma and year
line = line.strip('# ')
line = line[:-7]

# Skip entries we do not want to add
if line in ignore_entries:
continue

# Add entry to the set
if line not in translators_credits_list:
translators_credits_list.append(line)
rffontenelle marked this conversation as resolved.
Show resolved Hide resolved

# if true, this is the start of the translation credits block;
# flag is_translator_credits and go to the next line
if line == '# Translators:\n':
is_translator_credits = True
continue

# if true, it means the loop went down until it found the first msgid.
# This means there is no translator credits block (i.e. no one started
# translating this file). Therefore we should stop looking at this file.
# Quit this file and go to the next one.
if line == 'msgid "':
break

# Remove parentheses that messes the reorder of the list.
edit_index = translators_credits_list.index('(Douglas da Silva) <[email protected]>')
translators_credits_list[edit_index] = 'Douglas da Silva <[email protected]>'

# Reordered in a case-insensitive way as some names were set lowercase
translators_credits_list_reordered = sorted(translators_credits_list, key=str.casefold)

# Print the resulting list to the standard output
for t in translators_credits_list_reordered:
print(t)