From ddb84cc16d03c0e0e1463ea19e49d9c323eec9ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moura?= Date: Mon, 1 Apr 2024 04:53:10 -0300 Subject: [PATCH] Starting i18n language file support --- src/crewai/utilities/i18n.py | 2 +- tests/utilities/test_i18n.py | 40 ++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 tests/utilities/test_i18n.py diff --git a/src/crewai/utilities/i18n.py b/src/crewai/utilities/i18n.py index cf396f8a1..649f58bef 100644 --- a/src/crewai/utilities/i18n.py +++ b/src/crewai/utilities/i18n.py @@ -7,7 +7,7 @@ from pydantic import BaseModel, Field, PrivateAttr, ValidationError, model_valid class I18N(BaseModel): _translations: Dict[str, Dict[str, str]] = PrivateAttr() - language_file: str = Field( + language_file: Optional[str] = Field( default=None, description="Path to the translation file to load", ) diff --git a/tests/utilities/test_i18n.py b/tests/utilities/test_i18n.py new file mode 100644 index 000000000..69d889cee --- /dev/null +++ b/tests/utilities/test_i18n.py @@ -0,0 +1,40 @@ +import pytest + +from crewai.utilities.i18n import I18N + + +def test_load_translation(): + i18n = I18N(language="en") + i18n.load_translation() + assert i18n._translations is not None + + +def test_slice(): + i18n = I18N(language="en") + i18n.load_translation() + assert isinstance(i18n.slice("role_playing"), str) + + +def test_errors(): + i18n = I18N(language="en") + i18n.load_translation() + assert isinstance(i18n.errors("unexpected_format"), str) + + +def test_tools(): + i18n = I18N(language="en") + i18n.load_translation() + assert isinstance(i18n.tools("ask_question"), str) + + +def test_retrieve(): + i18n = I18N(language="en") + i18n.load_translation() + assert isinstance(i18n.retrieve("slices", "role_playing"), str) + + +def test_retrieve_not_found(): + i18n = I18N(language="en") + i18n.load_translation() + with pytest.raises(Exception): + i18n.retrieve("nonexistent_kind", "nonexistent_key")