diff --git a/atst/utils/localization.py b/atst/utils/localization.py index 58291a8c..9cca0b09 100644 --- a/atst/utils/localization.py +++ b/atst/utils/localization.py @@ -27,6 +27,22 @@ def _translations_file(): return yaml.safe_load(f) +def all_keys(): + translations = _translations_file() + keys = [] + + def _recursive_key_lookup(chain): + results = getattr_path(translations, chain) + if isinstance(results, str): + keys.append(chain) + else: + [_recursive_key_lookup(".".join([chain, result])) for result in results] + + [_recursive_key_lookup(key) for key in translations] + + return keys + + def translate(key, variables=None): translations = _translations_file() value = getattr_path(translations, key) diff --git a/script/find_unused_translations.py b/script/find_unused_translations.py new file mode 100755 index 00000000..f1a6ecfb --- /dev/null +++ b/script/find_unused_translations.py @@ -0,0 +1,17 @@ +#! .venv/bin/python + +import os +import sys +import subprocess +from subprocess import check_output + +parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) +sys.path.append(parent_dir) + +from atst.utils.localization import all_keys + +for key in all_keys(): + try: + check_output("git grep -q '{}'".format(key), shell=True) + except Exception: + print(key) diff --git a/tests/utils/test_localization.py b/tests/utils/test_localization.py index 137d602a..806ce227 100644 --- a/tests/utils/test_localization.py +++ b/tests/utils/test_localization.py @@ -1,5 +1,5 @@ import pytest -from atst.utils.localization import translate, LocalizationInvalidKeyError +from atst.utils.localization import all_keys, translate, LocalizationInvalidKeyError def test_looking_up_existing_key(): @@ -22,3 +22,9 @@ def test_with_variables(): def test_looking_up_non_existent_key(): with pytest.raises(LocalizationInvalidKeyError): translate("testing.an.invalid_key") + + +def test_all_keys(): + assert "testing.example_with_variables" in all_keys() + assert "testing.nested.example" in all_keys() + assert not "testing.nested.missing" in all_keys() diff --git a/translations.yaml b/translations.yaml index a0a662d6..b794d60a 100644 --- a/translations.yaml +++ b/translations.yaml @@ -27,7 +27,6 @@ home: funding_descrip: is information about all approved task orders associated to your portfolio. applications_descrip: ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod reports_descrip: enim ad minim veniam, quis nostrud exercitation ullamco - admin_descrip: aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat common: back: Back cancel: Cancel