"""The localization decorator (~l10n) for message localization information."""
from typing import Sequence
from marshmallow import fields
from ..models.base import BaseModel, BaseModelSchema
[docs]class LocalizationDecorator(BaseModel):
"""Class representing the localization decorator."""
def __init__(
self,
*,
locale: str = None,
localizable: Sequence[str] = None,
catalogs: Sequence[str] = None,
):
"""
Initialize a LocalizationDecorator instance.
Args:
locale: The locale of this message
localizable: The fields which may be localized
catalogs: A list of URLs for localization resources
"""
super(LocalizationDecorator, self).__init__()
self.locale = locale
self.localizable = list(localizable) if localizable else []
self.catalogs = list(catalogs) if catalogs else []
[docs]class LocalizationDecoratorSchema(BaseModelSchema):
"""Localization decorator schema used in serialization/deserialization."""
locale = fields.Str(
required=True,
description="Locale specifier",
example="en-CA",
)
localizable = fields.List(
fields.Str(
description="Localizable field",
example="note",
),
required=False,
description="List of localizable fields",
)
catalogs = fields.List(
fields.Str(
description="",
example="https://192.168.56.111/my-project/catalog.json",
),
required=False,
description="List of message catalog URIs",
)