wagtail/scripts/get-translator-credits.py

68 wiersze
1.9 KiB
Python
Czysty Zwykły widok Historia

import re
2020-10-13 12:53:25 +00:00
import subprocess
from collections import defaultdict
2016-03-09 12:18:32 +00:00
from babel import Locale
authors_by_locale = defaultdict(set)
2022-02-14 13:25:00 +00:00
file_listing = subprocess.Popen(
"find ./wagtail -iname *.po", shell=True, stdout=subprocess.PIPE
2022-02-14 13:25:00 +00:00
)
for file_listing_line in file_listing.stdout:
filename = file_listing_line.strip()
# extract locale string from filename
2022-02-14 13:25:00 +00:00
locale = re.search(r"locale/(\w+)/LC_MESSAGES", str(filename)).group(1)
if locale == "en":
continue
# read author list from each file
2023-07-13 19:08:24 +00:00
with open(filename) as f:
has_found_translators_heading = False
for line in f:
line = line.strip()
2022-02-14 13:25:00 +00:00
if line.startswith("#"):
if has_found_translators_heading:
2022-02-14 13:25:00 +00:00
author_match = re.match(r"\# (.*), [\d\-]+", line)
2020-11-02 12:44:12 +00:00
if not author_match:
break
author = author_match.group(1)
authors_by_locale[locale].add(author)
2022-02-14 13:25:00 +00:00
elif line.startswith("# Translators:"):
has_found_translators_heading = True
else:
if has_found_translators_heading:
break
else:
raise Exception("No 'Translators:' heading found in %s" % filename)
LANGUAGE_OVERRIDES = {
2022-02-14 13:25:00 +00:00
"tet": "Tetum",
"ht": "Haitian",
2024-02-07 12:49:10 +00:00
"dv": "Divehi",
}
def get_language_name(locale_string):
try:
return LANGUAGE_OVERRIDES[locale_string]
except KeyError:
return Locale.parse(locale_string).english_name
2020-10-02 15:56:26 +00:00
2016-03-09 12:18:32 +00:00
language_names = [
(get_language_name(locale_string), locale_string)
2016-03-09 12:18:32 +00:00
for locale_string in authors_by_locale.keys()
]
language_names.sort()
2023-11-16 23:43:25 +00:00
for language_name, locale in language_names:
2023-07-13 19:08:24 +00:00
print(f"{language_name} - {locale}") # noqa: T201
print("-----") # noqa: T201
for author in sorted(authors_by_locale[locale]):
print(author.replace("@", ".")) # noqa: T201
print("") # noqa: T201