diff --git a/tools/localazy/checkForbiddenTerms.py b/tools/localazy/checkForbiddenTerms.py new file mode 100755 index 0000000000..2173228784 --- /dev/null +++ b/tools/localazy/checkForbiddenTerms.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 + +import sys +from xml.dom import minidom + +file = sys.argv[1] + +# Arrays of forbidden terms, with exceptions for some keys +forbiddenTerms = [ + [ + "Element", + [ + # Those 2 strings are only used in debug version + "screen_advanced_settings_element_call_base_url", + "screen_advanced_settings_element_call_base_url_description", + # only used for element.io homeserver, so it's fine + "screen_server_confirmation_message_login_element_dot_io", + # "Be in your element", will probably be changed on the forks, so we can ignore. + "screen_onboarding_welcome_title", + ] + ] +] + +content = minidom.parse(file) + +errors = [] + +### Strings +for elem in content.getElementsByTagName('string'): + name = elem.attributes['name'].value + # Continue if value is empty + child = elem.firstChild + if child is None: + # Should not happen + continue + value = child.nodeValue + # If value contains a forbidden term, add the error to errors + for (term, exceptions) in forbiddenTerms: + if term in value and name not in exceptions: + errors.append('Forbidden term "' + term + '" in string: ' + name + ": " + value) + +### Plurals +for elem in content.getElementsByTagName('plurals'): + name = elem.attributes['name'].value + for it in elem.childNodes: + if it.nodeType != it.ELEMENT_NODE: + continue + # Continue if value is empty + child = it.firstChild + if child is None: + # Should not happen + continue + value = child.nodeValue + # If value contains a forbidden term, add the error to errors + for (term, exceptions) in forbiddenTerms: + if term in value and name not in exceptions: + errors.append('Forbidden term "' + term + '" in plural: ' + name + ": " + value) + +# If errors is not empty print the report +if errors: + print('Error(s) in file ' + file + ":", file=sys.stderr) + for error in errors: + print(" - " + error, file=sys.stderr) + sys.exit(1) diff --git a/tools/localazy/downloadStrings.sh b/tools/localazy/downloadStrings.sh index 43e916a8a4..8c3ba8ff92 100755 --- a/tools/localazy/downloadStrings.sh +++ b/tools/localazy/downloadStrings.sh @@ -54,6 +54,12 @@ echo "Deleting all the folders values-id..." find . -type d -name 'values-id' -exec rm -rf {} 2> /dev/null \; set -e +echo "Checking forbidden terms..." +find . -name 'localazy.xml' -exec ./tools/localazy/checkForbiddenTerms.py {} \; +if [[ $allFiles == 1 ]]; then + find . -name 'translations.xml' -exec ./tools/localazy/checkForbiddenTerms.py {} \; +fi + echo "Removing the generated config" rm ./tools/localazy/localazy.json