mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-08-05 21:45:25 +02:00
Feature/improve localization (#1147)
* use locale to set language header * rewrite i18n provider and drop dependency * rename file * rename CrudMixin to HttpRepo * refactor: code-cleanup * add crowdin source * remove unused translations * grab translations from dev branch * add translation support for foods, units, and labels * remove rich import
This commit is contained in:
parent
db095656e1
commit
7866f0f46e
71 changed files with 4736 additions and 3642 deletions
|
@ -2,6 +2,7 @@ from pathlib import Path
|
|||
|
||||
CWD = Path(__file__).parent
|
||||
|
||||
locale_dir = CWD / "locale"
|
||||
|
||||
migrations_paprika = CWD / "migrations/paprika.zip"
|
||||
|
||||
|
|
8
tests/data/locale/af-ZA.json
Normal file
8
tests/data/locale/af-ZA.json
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"language": "af-ZA",
|
||||
"t1": "test2",
|
||||
"t2": {
|
||||
"1": "value1",
|
||||
"2": "value2"
|
||||
}
|
||||
}
|
8
tests/data/locale/en-US.json
Normal file
8
tests/data/locale/en-US.json
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"language": "en-US",
|
||||
"t1": "test2",
|
||||
"t2": {
|
||||
"1": "value1",
|
||||
"2": "value2"
|
||||
}
|
||||
}
|
65
tests/unit_tests/pkgs/i18n/test_locale_provider.py
Normal file
65
tests/unit_tests/pkgs/i18n/test_locale_provider.py
Normal file
|
@ -0,0 +1,65 @@
|
|||
from mealie.pkgs.i18n import JsonProvider, ProviderFactory
|
||||
from tests.data import locale_dir
|
||||
|
||||
|
||||
def test_json_provider():
|
||||
provider = JsonProvider({"test": "test"})
|
||||
|
||||
assert provider.t("test") == "test"
|
||||
assert provider.t("test2", "DEFAULT") == "DEFAULT"
|
||||
|
||||
|
||||
def test_json_provider_nested_keys():
|
||||
nested_dict = {
|
||||
"root": {
|
||||
"tier1": "tire1_value",
|
||||
},
|
||||
}
|
||||
|
||||
provider = JsonProvider(nested_dict)
|
||||
|
||||
assert provider.t("root.tier1") == "tire1_value"
|
||||
|
||||
|
||||
def test_json_provider_nested_keys_not_found():
|
||||
nested_dict = {
|
||||
"root": {
|
||||
"tier1": "tire1_value",
|
||||
},
|
||||
}
|
||||
|
||||
provider = JsonProvider(nested_dict)
|
||||
|
||||
assert provider.t("root.tier2") == "root.tier2"
|
||||
|
||||
|
||||
def test_locale_provider_defaults():
|
||||
factory = ProviderFactory(locale_dir)
|
||||
|
||||
assert factory.get("en-US") is not None
|
||||
assert factory.get("asdfadsf") is not None
|
||||
|
||||
assert factory._store["en-US"].locks == 1
|
||||
|
||||
factory.release("en-US")
|
||||
|
||||
assert "en-US" not in factory._store
|
||||
|
||||
|
||||
def test_locale_providers_store_locks():
|
||||
factory = ProviderFactory(locale_dir)
|
||||
|
||||
factory.get("en-US")
|
||||
factory.get("en-US")
|
||||
factory.get("en-US")
|
||||
|
||||
assert factory._store["en-US"].locks == 3
|
||||
|
||||
factory.release("en-US")
|
||||
|
||||
assert factory._store["en-US"].locks == 2
|
||||
|
||||
factory.release("en-US")
|
||||
factory.release("en-US")
|
||||
|
||||
assert "en-US" not in factory._store
|
|
@ -1,9 +1,9 @@
|
|||
from mealie.core import exceptions
|
||||
from mealie.lang import get_locale_provider
|
||||
from mealie.lang import local_provider
|
||||
|
||||
|
||||
def test_mealie_registered_exceptions() -> None:
|
||||
provider = get_locale_provider()
|
||||
provider = local_provider()
|
||||
|
||||
lookup = exceptions.mealie_registered_exceptions(provider)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue