Add script to remove unneeded info from .po files
Differential Revision: D4264 This was SVN commit r26123.
This commit is contained in:
parent
3cb60353e1
commit
6ed690f102
70
source/tools/i18n/cleanTranslationFiles.py
Normal file
70
source/tools/i18n/cleanTranslationFiles.py
Normal 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()
|
@ -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()
|
||||
|
@ -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"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user