diff --git a/docs/user-guide/translation.rst b/docs/user-guide/translation.rst index 8b12d04..9bb3620 100644 --- a/docs/user-guide/translation.rst +++ b/docs/user-guide/translation.rst @@ -26,8 +26,7 @@ Adding a new language --------------------- If you want to support a new language: -- add it in ``./scripts/update_translation_files`` in the language list, -- add it in ``scan/libmailgoose/language.py`` in the ``Language`` enum, +- add it in ``scan/libmailgoose/languages.txt``, - run ``./scripts/update_translation_files`` and fill ``.po`` files for the UI messages for your language in ``./app/translations`` (**you may skip that part if you want only the library error messages to be translated**), - add the error message translations for your language in ``scan/libmailgoose/translate.py``. diff --git a/scan/libmailgoose/language.py b/scan/libmailgoose/language.py index 8dd49b5..0f98c12 100644 --- a/scan/libmailgoose/language.py +++ b/scan/libmailgoose/language.py @@ -1,7 +1,5 @@ from enum import Enum +from pathlib import Path - -class Language(Enum): - en_US = "en_US" - lt_LT = "lt_LT" - pl_PL = "pl_PL" +with open(Path(__file__).parent / "languages.txt") as f: + Language = Enum("Language", {line.strip(): line.strip() for line in f}) # type: ignore diff --git a/scan/libmailgoose/languages.txt b/scan/libmailgoose/languages.txt new file mode 100644 index 0000000..e8313db --- /dev/null +++ b/scan/libmailgoose/languages.txt @@ -0,0 +1,3 @@ +pl_PL +en_US +lt_LT diff --git a/scan/libmailgoose/translate.py b/scan/libmailgoose/translate.py index f848e16..d91269c 100644 --- a/scan/libmailgoose/translate.py +++ b/scan/libmailgoose/translate.py @@ -10,7 +10,7 @@ TRANSLATIONS = { - Language.lt_LT: [ + Language.lt_LT: [ # type: ignore ( "SPF '~all' or '-all' directive not found. We recommend adding it, as it describes " "what should happen with messages that fail SPF verification. For example, " @@ -435,7 +435,7 @@ "DKIM parašo patvirtinimo metu įvyko nežinoma klaida.", ), ], - Language.pl_PL: [ + Language.pl_PL: [ # type: ignore ( "SPF '~all' or '-all' directive not found. We recommend adding it, as it describes " "what should happen with messages that fail SPF verification. For example, " @@ -985,7 +985,7 @@ def translate( language: Language, nonexistent_translation_handler: Optional[Callable[[str], str]] = None, ) -> str: - if language == Language.en_US: + if language == Language.en_US: # type: ignore return message return _translate_using_dictionary( diff --git a/scan/setup.py b/scan/setup.py index dca3145..ca40aeb 100644 --- a/scan/setup.py +++ b/scan/setup.py @@ -16,6 +16,8 @@ license="BSD", url="https://github.com/CERT-Polska/mailgoose", packages=["libmailgoose"], + package_data={"": ["languages.txt"]}, + include_package_data=True, scripts=[], classifiers=[ "Programming Language :: Python :: 3", diff --git a/scripts/update_translation_files b/scripts/update_translation_files index e606299..b3dd11f 100755 --- a/scripts/update_translation_files +++ b/scripts/update_translation_files @@ -1,9 +1,9 @@ #!/bin/bash -LOCALES="pl_PL en_US lt_LT" - cd $(dirname $0)/.. +LOCALES=`cat scan/libmailgoose/languages.txt` + if [ ! -d .venv.translations ] then python3 -m venv .venv.translations