sofie-engine 0.4.0

Screens: the template parser and renderer, and the component catalog.
Documentation
# The engine's own texts. An app declaring a language not shipped here
# translates these keys in its own module's file.

[table]
empty = "No entries"
filter = "Filter"
search = "Search"
previous = "Previous"
next = "Next"

[notice]
correct_field = "Please correct the highlighted field."
correct_fields = "Please correct the {count} highlighted fields."
unreachable = "The server could not be reached. Try again."
failed = "Something went wrong. Try again."
passkey_refused = "The passkey was not accepted. Try again."
passkey_unsupported = "This browser cannot use passkeys."
passkey_unused = "The passkey was not used. Try again."

[field]
currency = "Currency"

[resource]
new = "New {record}"
edit_record = "Edit {record}"
show = "Show"
edit = "Edit"
delete = "Delete"
create = "Create"
save = "Save"
history = "History"

[validation]
required = "is required"
invalid = "is not valid"
unknown = "is not accepted"
unique = "is already taken"
min_length = "must be at least {min} characters"
max_length = "must be at most {max} characters"
min = "must be at least {min}"
max = "must be at most {max}"
move = "cannot move from {from} to {to}"
money.invalid = "must be an amount such as 149.90"
currency.invalid = "must be an ISO 4217 code in use, in uppercase, such as EUR"
date.invalid = "must be a calendar day such as 2026-10-11"
instant.invalid = "must be a time with an offset, such as 2026-10-11T09:30:00Z"
instant.repeated = "{wall_clock} happens twice in {zone}; give its offset: {earlier} or {later}"
instant.out_of_range = "{wall_clock} in {zone} is out of range"
local_date_time.invalid = "must be a date and time without an offset, such as 2026-11-01T09:30"
time_zone.invalid = "must be an IANA time zone such as Europe/Istanbul"
time_of_day.invalid = "must be a time such as 09:30"
percentage.invalid = "must be a percentage such as 12.5"
number.invalid = "must be a number such as 149.90"
number.decimals = "has too many decimals"
number.spaces = "must not contain spaces"
number.exponent = "must be written out, without an exponent"
number.sign = "may only have a leading `-` as its sign"
number.separator = "must use one `.` before the decimals and no other separator"
number.out_of_range = "is out of range"
money.no_decimals = "{currency} amounts have no decimals"
money.decimals = "{currency} amounts have at most {digits} decimals"
money.both = "needs either `minor` or `amount`, not both"
quantity.decimals = "has at most 3 decimals"
unit.one_of = "must be one of {units}"
coordinate.degrees = "must be a number of degrees from -{maximum} to {maximum}"
email.too_long = "must be at most 254 bytes"
email.whitespace = "must not contain whitespace"
email.invisible = "must not contain control or invisible formatting characters"
email.no_at = "must contain an @"
email.one_at = "must contain a single @"
email.no_local_part = "must have a part before the @"
email.local_part_too_long = "must have at most 64 bytes before the @"
email.local_part_characters = "must use only letters, digits and {symbols} before the @"
email.local_part_marks = "must put combining marks only after a letter before the @"
email.local_part_dots = "must not start or end the part before the @ with a dot, or repeat a dot in it"
email.no_domain = "must have a domain with a dot after the @"
email.domain_dots = "must not start or end the domain with a dot, or repeat a dot in it"
email.label_too_long = "must have at most 63 bytes between the dots of the domain"
email.domain_marks = "must put combining marks only after a letter in the domain"
email.domain_characters = "must use only letters, digits and inner hyphens between the dots of the domain"
url.too_long = "must have at most 2048 characters"
url.fragment = "must not have spaces or a second # in its fragment"
url.address = "must be an address such as https://example.com"
url.scheme = "must start with http:// or https://"
url.host = "must name a host"
url.credentials = "must not carry a user name or password"
slug.length = "must have 1 to 100 characters"
slug.characters = "must be lowercase letters and digits joined by single hyphens"
locale.language = "must start with a language such as en"
locale.region = "must have a region such as US or 419"
locale.parts = "must be a language, script and region at most"
phone.country_code = "must start with a country calling code"
phone.too_short = "must have a number of at least 4 digits after the country code"
phone.too_long = "must have at most 15 digits"
phone.plus = "must start with + and the country code"
phone.characters = "must have only digits after the +, apart from spaces, dots, hyphens and brackets"
phone.trunk_zero = "must not start with 0 after the country code, apart from one trunk zero"
person_name.too_long = "must have at most 200 characters"
person_name.invisible = "must not contain control or invisible formatting characters"
one_of = "must be one of: {values}"
range = "`{value}` is not a range `low..high`"
kind.whole_number = "must be a whole number"
kind.number = "must be a number"
kind.true_or_false = "must be true or false"
kind.id = "must be an id"
kind.date = "must be a date"
kind.date_time = "must be a date and time"
kind.text = "is not valid"

[enum.weekday]
monday = "Monday"
tuesday = "Tuesday"
wednesday = "Wednesday"
thursday = "Thursday"
friday = "Friday"
saturday = "Saturday"
sunday = "Sunday"