"""
Provide localizable configuration.
"""
from contextlib import suppress
from typing import Self, final, overload, cast, TypeVar
from typing_extensions import override
from betty.assertion import assert_len
from betty.config import Configuration
from betty.locale import UNDETERMINED_LOCALE
from betty.locale.localizable import (
ShorthandStaticTranslations,
StaticTranslationsLocalizable,
)
from betty.locale.localizable.assertion import assert_static_translations
from betty.serde.dump import Dump
_T = TypeVar("_T")
[docs]
@final
class StaticTranslationsLocalizableConfiguration(
Configuration, StaticTranslationsLocalizable
):
"""
Provide configuration for a :py:class:`betty.locale.localizable.Localizable`.
Read more at :doc:`multiple translations </usage/configuration/static-translations-localizable>`.
"""
[docs]
@override
def load(self, dump: Dump) -> None:
self._translations.clear()
translations = assert_static_translations()(dump)
assert_len(minimum=1 if self._required else 0)(translations)
for locale, translation in translations.items():
self[locale] = translation