1
0
forked from 0ad/0ad

Add script to remove unneeded info from .po files

Differential Revision: D4264
This was SVN commit r26123.
This commit is contained in:
bb 2021-12-27 14:31:32 +00:00
parent 3cb60353e1
commit 6ed690f102
3 changed files with 80 additions and 8 deletions

View File

@ -0,0 +1,70 @@
#!/usr/bin/env python3
#
# Copyright (C) 2021 Wildfire Games.
# This file is part of 0 A.D.
#
# 0 A.D. is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# 0 A.D. is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
"""
This file removes unneeded personal data from the translators. Most notably
the e-mail addresses. We need to translators' nicks for the credits, but no
more data is required.
TODO: ideally we don't even pull the e-mail addresses in the .po files.
However that needs to be fixed on the transifex side, see rP25896. For now
strip the e-mails using this script.
"""
import sys, os, glob, re, fileinput
from i18n_helper import l10nToolsDirectory, projectRootDirectory
def main():
l10nFolderName = "l10n"
transifexClientFolder = ".tx"
# Prepare some regexes.
commentMatch = re.compile('#.*')
translatorMatch = re.compile("(# [^,<]*)(?: <.*>)?(?:, [0-9,-]{4,9})")
lastTranslatorMatch = re.compile("(\"Last-Translator: [^,<]*)(?: <.*>)?( ?\\\\n\")")
for root, folders, filenames in os.walk(projectRootDirectory):
for folder in folders:
if folder == l10nFolderName:
if os.path.exists(os.path.join(root, folder, transifexClientFolder)):
path = os.path.join(root, folder, "*.po")
files = glob.glob(path)
for file in files:
usernames = []
reached = False
for line in fileinput.input(file.replace("\\", "/"), inplace=1):
if reached:
if line == "# \n":
line = ""
m = translatorMatch.match(line)
if m:
if m.group(1) in usernames:
line = ""
else:
line = m.group(1) + "\n"
usernames.append(m.group(1))
m2 = lastTranslatorMatch.match(line)
if m2:
line = m2.group(1) + "\\n\"\n"
elif line.strip() == "# Translators:":
reached = True
sys.stdout.write(line)
if __name__ == "__main__":
main()

View File

@ -128,8 +128,7 @@ newJSONData = {'Title': 'Translators', 'Content': []}
# Now go through the list of languages and search the .po files for people
# Prepare some regexes
commentMatch = re.compile('#.*')
translatorMatch = re.compile('# ([^,<]*)(?: <.*>)?, [0-9,-]{4,9}')
translatorMatch = re.compile('# (.*)')
deletedUsernameMatch = re.compile('[0-9a-f]{32}')
# Search
@ -144,13 +143,13 @@ for lang in langs.keys():
reached = False
for line in poFile:
if reached:
if not commentMatch.match(line):
break
m = translatorMatch.match(line)
if m:
username = m.group(1)
if not deletedUsernameMatch.match(username):
langsLists[lang].append(m.group(1))
if not m:
break
username = m.group(1)
if not deletedUsernameMatch.match(username):
langsLists[lang].append(username)
if line.strip() == '# Translators:':
reached = True
poFile.close()

View File

@ -20,6 +20,9 @@ python3 "${SCRIPT_PATH}/pullTranslations.py"
# Pre-Commit Cleanup #########################################################
echo ":: Removing unneeded data from the .po files…"
python3 "${SCRIPT_PATH}/cleanTranslationFiles.py"
echo ":: Reverting unnecessary changes…"
python3 "${SCRIPT_PATH}/checkDiff.py"