Files
komp_ac/web/locales/en/main.ftl
2026-08-15 16:21:19 +02:00

800 lines
38 KiB
Plaintext

# ============================================================================
# English (en) — SOURCE locale.
#
# Every key that exists here MUST also exist in locales/sk/main.ftl and
# locales/cs/main.ftl. Do NOT translate this file.
#
# Key naming: <page-or-area>-<element> (kebab-case, grouped by comment
# blocks). Templates call `nav.tr("key")`; Rust calls `tr!(locale, "key")`.
# ============================================================================
# --- Common / shared words ------------------------------------------------
common-cancel = Cancel
common-no = No
common-remove = Remove
common-yes = Yes
# --- Page chrome (ui/, navbar) --------------------------------------------
ui-back-to-admin = Back to the admin panel
ui-back-to-admin-panel = ← Admin panel
ui-back-to-form = Back to the form
ui-close-dialog = Close dialog
ui-err-invalid-redirect = The page could not be reloaded. Go back and try again.
ui-dismiss-alert = dismiss alert
notice-log-in-first = Please <a href="/login">log in</a> first.
services-cross-site-rejected = Cross-site form submission rejected
nav-admin = Admin
nav-permissions = Permissions
nav-analytics = Analytics
nav-rates = Rates
nav-import = Import
nav-export = Export
nav-password = Password
nav-log-out = Log out
nav-login = Login
nav-register = Register
nav-main-menu = main menu
nav-mobile-menu = mobile menu
# --- Field labels used inside composed messages ----------------------------
label-profile = profile
label-table = table
label-column = column
label-set-name = set name
label-rule-name = rule name
label-validation-set-name = validation set name
label-minimum = Minimum
label-maximum = Maximum
label-warning-threshold = Warning threshold
label-precision = Precision
label-scale = Scale
label-column-name = Column name
label-table-name = Table name
label-linked-table = Linked table
label-column-alias = Column alias
label-profile-name = Profile name
# --- Column badges ---------------------------------------------------------
column-flag-system = system
column-flag-primary-key = primary key
column-flag-nullable = nullable
column-flag-required = required
column-flag-quantity-ledger = quantity ledger
column-flag-half-up = half-up
column-flag-read-only = read only
column-flag-generated = generated
column-flag-generated-from = generated from { $source }
# --- Login / register / change password ------------------------------------
login-title = Sign in
login-username-or-email = Username or email
login-password = Password
login-optional = (optional)
login-button-login = Login
login-no-account = No account yet?
login-error-title = Could not sign in
login-error-identifier-required = Username or email is required
login-error-invalid-token = The server returned an invalid access token
register-title = Register
register-button-register = Register
register-confirm-password = Confirm password
register-have-account = Already have an account?
register-error-title = Could not register
register-success-title = Registration successful. You can sign in now.
register-success-message =
User ID: { $id }
Username: { $username }
Email: { $email }
Role: { $role }
Timezone: { $timezone }
Phone country: { $phone_country }
field-username = Username
field-email = Email
field-timezone = Timezone
field-phone-country = Phone country
field-current-password = Current password
field-new-password = New password
field-confirm-new-password = Confirm new password
password-title = Change password
password-button-change = Change password
password-empty-current-hint = For a freshly seeded admin or superadmin account, leave the current password empty.
password-error-title = Could not change password
password-success-title = Password changed
password-changed-message = Your new password is active.
# --- Admin panel (workspace browser) ---------------------------------------
admin-title = Admin panel
admin-eyebrow-workspace = Workspace
admin-description = Browse profiles, tables, and their physical columns. Pick a table to reach what can be done to it.
admin-add-table = Add table
admin-add-logic = Add logic
admin-add-validation = Add validation
admin-add-rule = Add rule
admin-export = Export
admin-exchange-rates = Exchange rates
admin-unavailable-title = Admin panel unavailable
admin-forbidden = This account is not allowed to open the admin panel.
admin-profiles = Profiles
admin-global-label = Global
admin-err-unknown-profile = Unknown profile '{ $name }'
admin-err-table-not-in-profile = Table '{ $name }' is not part of the selected profile
admin-err-backend-no-structure = The backend did not return the structure for '{ $name }'
admin-no-profiles-available = No profiles available.
admin-table-count = { $count ->
[one] { $count } table
*[other] { $count } tables
}
admin-shared-by-every-profile = shared by every profile
admin-tables-heading = Tables
admin-select-profile-first = Select a profile to see its tables.
admin-no-global-tables = There are no global tables.
admin-no-profile-tables = This profile has no tables of its own.
admin-no-dependencies = No dependencies
admin-depends-on-prefix = Depends on
admin-row-display-prefix = display:
admin-add-columns = Add columns
admin-column-presentation = Column aliases
admin-delete-table = Delete table
admin-who-may-use-it = Who may use it
admin-pick-table-hint = Pick a table to add columns to it, delete it, or say who may use it.
admin-new-global-table = New global table
admin-new-table = New table
admin-from-template = From template
admin-copy-profile = Copy profile
admin-rename-history = Rename history
admin-columns = Columns
admin-column-counts = { $user ->
[one] { $user } user
*[other] { $user } users
} · { $system ->
[one] { $system } system
*[other] { $system } system
}
admin-select-table-inspect = Select a table to inspect its columns.
admin-no-visible-columns = This table has no visible columns.
admin-system-columns-label = System columns · hidden from users
# --- Table definition pages (add columns / presentation / delete / copy / template / history) -
td-add-columns-title = Add columns
td-presentation-title = Column presentation
td-add-columns-to = Add columns to
td-append-hint = Columns are appended. Nothing that already exists is changed, and the new columns can be indexed as they are added.
td-rename-column = Column aliases and order
td-rename-hint = Renames what the column is called, not the physical column underneath, so stored data and scripts are untouched.
td-column-label = Column
td-choose-column = Choose a column
td-new-name = New name
td-rename-button = Save presentation
td-columns-now = Columns it has now
td-col-column = Column
td-col-type = Type
td-col-notes = Notes
td-scripts = Scripts
td-col-target-column = Target column
td-col-description = Description
td-source = source
td-could-not-add-column = Could not add the column
td-staged = Staged
td-link-alias = Link alias
td-column-name = Column name
td-link-alias-hint = The alias is the column name used to distinguish this relationship.
td-column-type = Column type
td-choose-type = Choose a type
td-fk-link = FKlink
td-temporal-type = Temporal type
td-choose-temporal-type = Choose a temporal type
td-gtin-type = GTIN type
td-choose-gtin-length = Choose a GTIN length
td-precision = Precision
td-precision-hint = Total digits stored, at least 1.
td-scale = Scale
td-scale-hint = Digits after the point, no more than the precision.
td-referenced-table = Referenced table
td-choose-table = Choose a table
td-group-global = Global
td-group-user = User-created
td-group-system = System-created
td-no-eligible-tables = No eligible tables exist in this scope.
td-currency = Currency
td-rounding = Rounding
td-rounding-none = none
td-rounding-half-up = half-up
td-indexing = Indexing
td-indexed-automatically = Indexed automatically — a link is a foreign key, and the server indexes every one of them.
td-required = Required
td-required-hint = A row must carry a value for it.
td-quantity-ledger = Quantity ledger
td-ql-only = { $types } only.
td-shared-no-quantity-ledger = A shared table keeps no books of its own, so it cannot hold a quantity-ledger column.
td-stage-column = Stage column
td-no-staged-columns = No columns staged yet. Describe one above and press
td-col-name = Name
td-col-indexed = Indexed
td-col-options = Options
td-indexed-automatically-tag = indexed automatically
td-money-exact = exact
td-money-half-up = half-up
td-add-columns-button = { $count ->
[one] Add { $count } column to the table
*[other] Add { $count } columns to the table
}
td-eyebrow-table-definition = Table definition
td-columns-count = { $count ->
[one] { $count } column
*[other] { $count } columns
}
td-identified-by = identified by
td-its-id = its id
td-depends-on-prefix = depends on
td-acts-on-profile = Everything on this page acts on this profile.
td-global-label = Global — all profiles
td-tab-aria = table actions
td-tab-add-columns = Add columns
td-tab-add-columns-sub = Append new columns
td-tab-presentation = Presentation
td-tab-presentation-sub = Change aliases and order
td-tab-delete = Delete
td-tab-delete-sub = Drop this table
td-tab-access = Access
td-tab-access-sub = Which roles may read and write it
td-tab-copy = Copy profile
td-tab-copy-sub = Duplicate its structure
td-tab-template = From template
td-tab-template-sub = Create tables from a Typst invoice
td-tab-history = Rename history
td-tab-history-sub = How columns got their names
td-backend-managed-title = Backend-managed
td-backend-managed-hint = This table is the backend's own. Its definition is visible in the <a href="/admin">admin panel</a>, but it can only be changed through the backend's own APIs, so none of the write actions apply to it.
td-could-not-continue = Could not continue
td-done = Done
td-sql-ran = SQL the backend ran
td-delete-title = Delete table
td-delete-table = Delete table
td-delete-hint = Drops the table and its definition, and the profile too when this was its last table. The backend refuses to delete a table that still has rows.
td-links-to = It links to { $tables }.
td-type-to-confirm = Type <code>{ $table }</code> to confirm
td-no-table-chosen = No table chosen
td-pick-table-delete = Pick the table to delete in the <a href="/admin">admin panel</a> first.
td-copy-title = Copy profile
td-copy-into = Copy
td-copy-hint = Copies structure — tables, links and scripts — and no rows. Leave every table unticked to copy the whole profile.
td-new-profile-name = New profile name
td-copy-button = Copy profile
td-template-title = Create from template
td-template-created-tables = Tables created from the template
td-col-table = Table
td-col-collection = Collection
td-col-parent = Parent
td-root = root
td-template-create-heading = Create tables from an invoice template
td-template-hint = Reads the <code>#let komp_ac_fields = (…)</code> contract out of a Typst template. A path that matches an existing table and column becomes a reference to it; anything else becomes a TEXT column to refine later, and every <code>[]</code> becomes a child table.
td-table-name = Table name
td-row-display-columns = Row display columns
td-row-display-hint = Comma-separated, and only for the root table.
td-template-source = Template source
td-template-create-button = Create from template
td-history-title = Rename history
td-history-heading = Column rename history
td-history-empty = No column in { $scope } has been renamed.
td-history-empty-this-profile = No column in this profile has been renamed.
td-col-was = Was
td-col-is = Is
td-col-when = When
td-columns-added = { $count ->
[one] { $count } column added to `{ $table }`.
*[other] { $count } columns added to `{ $table }`.
}
td-profile-copied = { $message } — { $tables ->
[one] { $tables } table
*[other] { $tables } tables
} and { $scripts ->
[one] { $scripts } script
*[other] { $scripts } scripts
} copied.
td-template-tables-created = { $count ->
[one] { $count } table created from the template.
*[other] { $count } tables created from the template.
}
td-err-select-table-first = Select a table first.
td-err-profile-gone = Profile `{ $missing }` no longer exists.
td-err-not-a-table = `{ $missing }` is not a table of { $scope }.
td-err-describe-column = Describe at least one column before adding.
td-err-backend-no-columns = The backend did not add the columns.
td-err-choose-rename = Choose a column and type its new name.
td-err-backend-no-rename = The backend did not rename the column.
td-err-type-name = Type the table's name exactly to confirm the deletion.
td-err-backend-no-delete = The backend did not delete the table.
td-err-name-profile = Name the profile to copy into.
td-err-backend-no-copy = The backend did not copy the profile.
td-err-template-required = A table name and the template's source are both required.
td-err-backend-no-template = The backend did not create the template's tables.
td-err-permission = Table-management permission is required.
td-unavailable-title = Table definition unavailable
# --- ECB reference rates ---------------------------------------------------
ecb-title = Exchange rates
ecb-heading = ECB reference rates
ecb-description = The importer fetches the ECB's published rates once a day and records every attempt. Conversions read only what it has verified, so coverage is what decides whether a foreign-currency amount can be posted at all.
ecb-unavailable-title = Exchange rates unavailable
ecb-forbidden = Reading exchange-rate data is required to open this page.
ecb-import-attempts = Import attempts
ecb-failed-count = { $count ->
[one] { $count } failed
*[other] { $count } failed
}
ecb-no-attempts-hint = The importer has not recorded an attempt. It runs on startup and then daily, so an empty log means the server has not completed a run since this table was created.
ecb-th-result = Result
ecb-th-started = Started
ecb-th-finished = Finished
ecb-th-took = Took
ecb-th-window = Window
ecb-th-observations = Observations
ecb-th-verified-through = Verified through
ecb-batch-succeeded = succeeded
ecb-batch-running = running
ecb-batch-failed = failed
ecb-still-running = still running
ecb-audit-hint = Attempts are an audit record: they cannot be edited or deleted, and a batch that re-fetched a day an earlier one already owned inserts nothing, which is why the new count can be lower than the total.
ecb-import-running = import running
ecb-postable-lead = What can be posted right now
ecb-ordinary-transactions = Ordinary transactions
ecb-statements-title = Statements & decisive dates
ecb-dated-up-to = dated up to and including
ecb-ordinary-rate-hint = Converted at the rate published the business day before the transaction.
ecb-statements-rate-hint = Converted at the rate published on that day, or the last business day before it.
ecb-postable-limit-hint = A foreign-currency amount dated after its limit is refused outright until the importer catches up — it is not converted at a stale rate.
ecb-nothing = Nothing.
ecb-no-publication-hint = No publication has ever been verified, so every foreign-currency amount is refused whatever its date.
ecb-verified-through = Verified through
ecb-never = never
ecb-up-to-date = up to date
ecb-behind-count = { $count ->
[one] { $count } publication day behind
*[other] { $count } publication days behind
}
ecb-no-coverage = no coverage
ecb-should-reach = Should reach
ecb-last-attempt = Last attempt
ecb-none-recorded = none recorded
ecb-last-success = Last success
ecb-none = none
ecb-next-import = Next import
ecb-currencies-on = Currencies on { $date }
ecb-the-covered-day = the covered day
ecb-most-recent-failure = Most recent failure — batch { $batch }, started { $started }:
ecb-no-reason-recorded = no reason was recorded.
ecb-headline-current = Rates are current
ecb-headline-never-ran = No rates have ever been imported
ecb-headline-behind = Rates are behind
ecb-explanation-current = Every publication day up to the latest one is verified, so conversions post normally.
ecb-explanation-never-ran = Until one succeeds, every conversion in a foreign currency is refused for want of coverage.
ecb-explanation-behind = { $count ->
[one] { $count } publication day is missing.
*[other] { $count } publication days are missing.
} A conversion dated inside the gap is refused until the importer catches up.
ecb-new-of = { $inserted } new of { $total }
ecb-in = in { $time }
ecb-ago = { $time } ago
ecb-less-than-1s = <1s
# --- Permissions (roles / users / grants) ----------------------------------
perm-eyebrow = Permissions
perm-tabs-aria = permission sections
perm-tab-roles = Roles
perm-tab-roles-sub = Create roles and their inheritance
perm-tab-people = People
perm-tab-people-sub = Give a user a role
perm-tab-access = Access
perm-tab-access-sub = What a role may do
perm-unavailable-title = Permissions unavailable
perm-update-error = Could not update permissions
perm-forbidden = This account manages neither roles nor users.
perm-err-missing-session = Missing session
perm-err-nothing-to-change = Nothing to change: the form carried no permissions.
perm-err-bad-pair = '{ $value }' is not an object|action pair.
perm-err-not-editable-role = '{ $role }' is not a role you may edit.
perm-err-neither-grant-nor-revoke = '{ $value }' is neither grant nor revoke.
perm-err-grant-failed = Granting { $action } on { $object } failed: { $error }
perm-err-revoke-failed = Revoking { $action } on { $object } failed: { $error }
perm-err-bad-starter-access = '{ $value }' is not a starter access level.
perm-role-created-grant-failed = Role '{ $role }' was created, but granting { $action } on { $object } failed: { $error }
perm-role-reason-outranks-you = outranks you
perm-role-reason-built-in = built in
perm-role-reason-still-assigned = still assigned
roles-description = A role is a named set of permissions. People are given roles; roles are given access.
roles-updated-notice = Roles updated. Signed-in sessions stay valid and pick up the change on their next request.
roles-new-heading = New role
roles-new-hint = Inheriting from another role starts the new one with everything that role has, and keeps it in step as that role changes. Starter access is a shortcut for the two common cases; anything narrower is a few clicks on the Access tab.
roles-name = Name
roles-inherits-from = Inherits from
roles-inherits-none = Nothing — starts empty
roles-starter-access = Starter access
roles-access-none = None — grant it on the Access tab
roles-access-read = Read everything
roles-access-full = Read and write everything
roles-create-button = Create role
roles-existing = Existing roles
roles-th-role = Role
roles-th-kind = Kind
roles-th-inherits = Inherits from
roles-th-people = People
roles-th-access = Access
roles-th-remove = Remove
roles-built-in = built in
roles-edit-access = Edit access
users-description = Give a user a role. What that role may do is decided once, on the Access tab.
users-updated-notice = Updated. The person's next request uses the new role; they do not have to sign in again.
users-heading = Users
users-outrank-hint = You can only change someone whose role you outrank — { $editable } of { $total } here.
users-th-user = User
users-th-email = Email
users-th-role = Role
users-th-change = Change role
users-th-reset = Reset password
users-assign = Assign
users-confirm = Confirm
users-reset = Reset
grants-description = What a role may do with the data. Everyone holding the role gets exactly this.
grants-updated-notice = Access updated. It applies to the next request every holder of the role makes.
grants-no-role = No role to edit
grants-no-role-hint = There is no role here you outrank. <a href="/permissions/roles">Create one</a> first.
grants-role-heading = Role
grants-editing = Editing
grants-inherits-prefix = → inherits
grants-inherits-parent = <strong>{ $role }</strong> inherits everything <strong>{ $parent }</strong> has. Inherited access shows below but is changed on the parent.
grants-inherits-none = <strong>{ $role }</strong> inherits from nothing, so what you see below is all it has.
grants-structural-hint = This role designs the system and may never write row data, so only the read column is open.
grants-shortcuts = Shortcuts
grants-shortcuts-hint = These grant the wildcard objects, so they keep covering profiles and tables created later.
grants-full-access-everything = Full access to everything
grants-remove-all-access = Remove all access
grants-everything-everywhere = Everything, everywhere
grants-profile-prefix = Profile:
grants-read-only = Read only
grants-full-access = Full access
grants-clear = Clear
grants-th-object = Object
grants-th-row = Row
grants-cell-unavailable = Not available for this role
grants-cell-direct = Held directly — click to revoke
grants-cell-inherited = inherited: covered by the parent role or a wider grant
grants-cell-grant = Click to grant
grants-all = All
grants-none = None
grants-read-everything-hint = Read on every profile, journal and exchange rate
grants-full-everything-hint = Every action the role may hold, on every profile
grants-remove-all-hint = Revoke every grant this role holds directly
grants-read-only-hint = Read on everything in here
grants-full-access-hint = Every action the role may hold, on everything in here
grants-clear-hint = Revoke everything this role holds directly in here
grants-all-hint = Grant every action available on this object
grants-none-hint = Revoke this object's direct grants
grants-everything-title = Everything
grants-label-all-tables = All tables
grants-note-all-tables = Every table in every profile, including ones added later.
grants-label-all-journals = All journals
grants-note-all-journals = Every profile's accounting journal.
grants-label-all-rates = All exchange rates
grants-note-all-rates = ECB rates are imported by the server, so they can only be read.
grants-note-profile-tables = Every table in this profile, including ones added later.
grants-label-journal = Journal
grants-note-journal = This profile's accounting journal.
grants-label-rates = Exchange rates
grants-note-rates = Imported by the server, so read is the only grant.
grants-note-table = This table and its whole template family.
# --- Analytics -------------------------------------------------------------
analytics-title = Analytics
analytics-eyebrow = Reporting
analytics-description = Query the read-only analytics API and chart the result.
analytics-available-data = Available data
analytics-load-hint = Load a profile to see the table and column aliases accepted by analytics SQL.
analytics-profile = Profile
analytics-loading-profiles = Loading profiles…
analytics-load-schema = Load schema
analytics-no-schema = No schema loaded.
analytics-chart = Chart
analytics-chart-bar = Bar
analytics-chart-line = Line
analytics-chart-pie = Pie
analytics-chart-scatter = Scatter
analytics-chart-table = Table
analytics-max-rows = Max rows
analytics-sql = SQL
analytics-sql-placeholder = Load the schema, then choose a starter query or write a SELECT query
analytics-run-query = Run query
analytics-running = Running…
analytics-no-tables = This profile has no analytics tables.
analytics-tables-available = { $count ->
[one] { $count } table available
*[other] { $count } tables available
}
analytics-use-starter = Use starter query
analytics-links = Links
analytics-required = required
analytics-llm-context = LLM schema context
analytics-llm-hint = Copy this entire text and include it when asking an LLM to write a query.
analytics-copy-context = Copy context
analytics-copied = Copied
analytics-load-error = Could not load profiles: { $message }
analytics-no-profiles = No profiles available
analytics-choose-profile = Choose a profile…
analytics-sign-in = Sign in to list the profiles you may read.
analytics-err-profile-required = Enter a profile name to load its schema
analytics-err-input-required = Profile name and SQL are required
analytics-err-chart-columns = Charts require at least two result columns
analytics-err-chart-type = Unknown chart type
analytics-not-signed-in = You are not signed in for { $action }.
analytics-action-loading-schema = loading the schema
analytics-action-running-query = running a query
analytics-result-meta = { $rows ->
[one] { $rows } row
*[other] { $rows } rows
} in { $elapsed } ms
analytics-result-meta-truncated = { $rows ->
[one] { $rows } row
*[other] { $rows } rows
} in { $elapsed } ms (truncated)
# --- Import / export -------------------------------------------------------
transfer-eyebrow = Data transfer
import-title = Import CSV
import-lead = Choose a browser-local file or paste CSV. Rows are validated against live table structures before gRPC bulk insertion.
import-profile = Profile
import-target-tables = Target tables
import-csv-file = CSV file
import-csv-data = CSV data
import-error-title = Could not import CSV
import-import-rows = Import rows
import-success-title = Import complete
import-success-message = Inserted { $inserted ->
[one] { $inserted } record
*[other] { $inserted } records
} from { $source_rows ->
[one] { $source_rows } CSV row
*[other] { $source_rows } CSV rows
} across { $table_count ->
[one] { $table_count } table
*[other] { $table_count } tables
}.
import-err-select-profile = Select a profile.
import-err-tables-required = Enter at least one target table.
import-err-csv-required = Choose a CSV file or paste CSV data.
import-err-unknown-profile = Unknown profile.
import-err-tables-not-in-profile = One or more target tables do not belong to the profile.
import-err-missing-structure = The backend omitted a requested table structure.
import-err-no-importable-columns = CSV has no importable columns for table '{ $table }'.
import-err-column-not-importable = Column '{ $column }' is not importable for table '{ $table }'.
import-err-csv-row = CSV row { $row }: { $error }
import-err-multi-headers = Multi-table CSV needs a table-header row and a column-header row.
import-err-first-row = The first CSV row must contain only selected table names.
import-err-header-lengths = Table and column header rows have different lengths.
import-err-row-width = A CSV data row has a different number of fields than the header.
import-err-no-data-rows = CSV contains headers but no data rows.
import-err-missing-type = Missing type for column '{ $column }'
import-err-permission = Insert permission is required for at least one readable table.
import-err-unterminated-quote = CSV contains an unterminated quoted value.
import-err-empty = CSV is empty.
import-err-bad-boolean = Invalid boolean value '{ $value }'
import-err-bad-integer = Invalid integer value '{ $value }'
export-title = Export CSV
export-lead = The download is generated from live table data through gRPC.
export-profile = Profile
export-choose-profile = Choose a profile
export-tables = Tables
export-comma-hint = Separate multiple tables with commas.
export-error-title = Could not export CSV
export-download = Download CSV
export-err-select-profile = Select a profile.
export-err-tables-required = Enter at least one table.
export-err-unknown-profile = Unknown profile.
export-err-tables-not-in-profile = One or more tables do not belong to the selected profile.
export-err-missing-structure = The backend omitted a requested table structure.
export-err-negative-count = The backend returned a negative row count.
export-err-range = The export exceeds the supported row-position range.
export-err-permission = Read permission is required for at least one table.
# --- Add logic -------------------------------------------------------------
add-logic-title = Add logic
add-logic-eyebrow = Computed column
add-logic-lead = Create or update a Steel script through the existing table-script service.
add-logic-table = Table
add-logic-choose-table = Choose a table
add-logic-name = Logic name
add-logic-target-column = Target column
add-logic-script = Steel expression
add-logic-description = Description
add-logic-error-title = Could not save the logic
add-logic-save = Save logic
add-logic-success-title = Logic saved
add-logic-saved = Script #{ $id } was saved.
add-logic-saved-warnings = Script #{ $id } was saved. Warnings: { $warnings }
add-logic-err-select-table = Select a target table.
add-logic-err-target-column = Enter the target column.
add-logic-err-script = Enter a Steel expression.
add-logic-err-script-paren = The Steel expression must start with `(`.
add-logic-err-permission = Script-management permission is required.
# --- Add table builder -----------------------------------------------------
add-table-title = Add table
add-table-eyebrow = Table definition
add-table-lead = Choose whether the table belongs to one profile or is available to all profiles, then add its columns. After creation, you can assign the initial role permissions.
builder-err-title = Could not create the table
builder-err-permission = Table-management permission is required.
builder-err-backend-no-create = The backend did not create the table.
builder-could-not-continue = Could not continue
builder-draft-updated = Draft updated
builder-table-details = Table details
builder-scope-question = Where should this table be available?
builder-scope-profile = One profile
builder-scope-profile-hint = Only the selected profile can use this table.
builder-scope-global = All profiles
builder-scope-global-hint = Every profile can use this shared table.
builder-which-profile = Which profile?
builder-choose-profile = Choose a profile
builder-new-profile = New profile…
builder-new-profile-name = New profile name
builder-accounting-currency = Accounting currency
builder-accounting-currency-hint = Books are kept in EUR for now — other currencies are listed but the server still refuses them.
builder-table-name = Table name
builder-add-column-heading = Add a column
builder-add-column-button = Add column
builder-shared-table-hint = A shared table keeps no books of its own, so ACCOUNTING, ACCOUNTING_TRANSFER and quantity-ledger columns are not offered here — each of them posts to one profile's ledger.
builder-compound-intro = is a definition row, not a column of its own. Adding it gives the table:
builder-inherits-currency-hint = kept in the currency and rounding chosen above
builder-account-system-hint = system column — the account each row is posted to, written as <code>account</code>
builder-rename-generated-hint = Each of these can be given a name of your own under <em>Rename generated columns</em> once the row is added; leave a field empty to keep the name shown here.
builder-reserved-hint = These names are reserved: no column of your own may use them, and the table may hold only one <code>{ $type }</code>. They land where this row sits in the column list, and can be moved with it.
builder-columns-heading = Columns
builder-no-columns = No columns yet. Describe one above and press
builder-columns-order-hint = Columns are created in this order. Use the arrows to move one.
builder-th-order = Order
builder-th-name = Name
builder-th-type = Type
builder-th-indexed = Indexed
builder-th-options = Options
builder-move-up = Move { $name } up
builder-move-down = Move { $name } down
builder-renamed-to = renamed to { $alias }
builder-rename-generated = Rename generated columns
builder-rename-generated-hint2 = These columns come from the definition rows above. Give one a name of your own, or leave it empty to keep the name shown.
builder-rename-aria = Rename { $name }
builder-apply-names = Apply names
builder-row-display = Row display columns
builder-row-display-hint = What identifies a row to users, in the order chosen. Pick <code>id</code> to clear the list.
builder-preview = Table definition preview
builder-preview-th-column = Column
builder-preview-th-type = Type
builder-preview-th-options = Options
builder-preview-th-source = Source
builder-preview-primary-key = primary key
builder-preview-default-false = default false
builder-preview-not-null-1 = not null, default 1
builder-preview-current-time = current time
builder-preview-account-option = not null, → accounts, written as { $field }
builder-option-indexed = indexed
builder-create-table = Create table
builder-status-generated-keep = The generated columns keep their own names.
builder-status-generated-one = 1 generated column renamed.
builder-status-generated-many = { $count } generated columns renamed.
draft-err-profile-name = Enter a name for the new profile.
draft-err-table-conflict-global = A table named `{ $name }` already exists. A shared table's name has to be free in every profile.
draft-err-table-conflict = A table named `{ $name }` already exists in profile `{ $profile }`, or is shared by every profile.
draft-err-no-columns = Add at least one column before saving.
draft-err-ragged-columns = The posted column data is incomplete: { $posted } columns were sent, but only { $kept } carry every field. Each column needs a name, type, indexing, quantity-ledger, required, rounding and currency value.
draft-err-alias-taken = Alias `{ $alias }` for generated column `{ $source }` is already taken by another column.
draft-err-accounting-currency = Accounting currency must be a three-letter ISO-4217 code
schema-status-column-added = Column `{ $name }` added.
schema-status-column-removed = Column `{ $name }` removed.
schema-status-column-moved-up = Column `{ $name }` moved up.
schema-status-column-moved-down = Column `{ $name }` moved down.
schema-err-both-name-type = Both a column name and a column type are required.
schema-err-creation-only = A { $type } column can only be chosen while the table is being created.
schema-err-column-exists = A column named `{ $name }` already exists.
schema-err-generated-exists = `{ $type }` generates a column named `{ $generated }`, and the table already has one.
schema-err-ql-types = Quantity-ledger columns must use { $types }
schema-err-column-ql-types = Column `{ $name }`: quantity-ledger columns must use { $types }
schema-err-column-prefix = Column `{ $name }`: { $error }
schema-err-decimal-not-valid = `decimal` is not a valid field type.
schema-err-link-not-valid = `link` is not a valid field type.
schema-err-decimal-args-needed = `{ $type }` needs both a precision and a scale.
schema-err-link-target-needed = `link` needs a referenced table.
schema-err-generated-type = `{ $type }` is a column type the backend generates itself.
schema-err-invalid-type = `{ $type }` is not a valid field type.
schema-err-account-link = The account relationship is built into ACCOUNTING and cannot be declared as a link.
schema-err-link-self = Link `{ $column }` cannot point at the table being created.
schema-err-column-gone = That column no longer exists.
schema-err-link-indexed = Link `{ $name }` is indexed automatically and cannot be indexed again.
schema-err-definition-indexed = `{ $name }` is a definition row, not a column, so it cannot be indexed.
schema-err-currency-only = Column `{ $name }`: a currency belongs only to a column type that requires one.
schema-err-name-twice = `{ $name }` names more than one of this table's columns.
schema-err-currency-code = Currency must be a three-letter ISO-4217 code
schema-err-profile-only-type = A shared table cannot use { $type }: it posts to one profile's books, and a shared table belongs to every profile.
schema-err-shared-ql = Column `{ $name }`: a shared table cannot keep a quantity ledger, which belongs to one profile.
schema-err-profile-reserved = That profile name is reserved by PostgreSQL.
schema-err-table-name-too-long = Table name cannot be longer than { $limit } characters, because the indexes on its columns are named after it.
schema-err-table-name-reserved = `{ $name }` is the name of a table every profile is given, so it cannot be reused.
error-identifier-empty = { $label } cannot be empty.
error-identifier-whitespace = { $label } cannot start or end with a space.
error-identifier-underscore = { $label } cannot start with an underscore.
error-identifier-number = { $label } cannot start with a number.
error-identifier-too-long = { $label } cannot be longer than { $limit } characters.
error-identifier-charset = { $label } may only use lowercase letters, digits and underscores.
error-identifier-reserved = { $label } uses a reserved name.
error-decimal-required = { $label } is required for a decimal column.
error-decimal-sign = { $label } cannot carry a sign.
error-decimal-whole = { $label } must be a whole number.
error-decimal-leading-zeros = { $label } cannot have leading zeros.
error-precision-min = Precision must be at least 1.
error-scale-gt-precision = Scale cannot be greater than precision.
# --- Add validation --------------------------------------------------------
validation-eyebrow = Validation
validation-library-eyebrow = Global validation library
validation-field-title = Add field validation
validation-field-lead = Attach validation to one column of one table.
validation-rule-title = Add reusable validation rule
validation-rule-lead = A named rule that validation sets can compose, independent of any table.
validation-set-title = Add validation set
validation-set-lead = Compose an ordered set from existing reusable rule names.
validation-profile = Profile
validation-table = Table
validation-column = Column
validation-apply-set = Apply named validation set instead
validation-apply-set-placeholder = Leave empty to save the rules below
validation-error-title = Could not save validation
validation-success-title = Validation saved
validation-save = Save validation
validation-rule-name = Rule name
validation-description = Description
validation-save-rule = Save rule
validation-set-name = Set name
validation-reusable-rules = Reusable rules
validation-reusable-rules-hint = Comma-separated and applied in this order.
validation-save-set = Save set
validation-position-rules = Position rules
validation-position-rules-hint = One per line: position | constraint. Positions: 0, 0-3, 4+, or 1,3,5. Constraints: alphabetic, numeric, alphanumeric, exact=x, one-of=a,b, regex=…
validation-pattern-description = Pattern description
validation-min-length = Minimum length
validation-max-length = Maximum length
validation-warn-at = Warning threshold
validation-count-mode = Count mode
validation-count-chars = Characters
validation-count-bytes = Bytes
validation-count-display-width = Display width
validation-allowed-values = Allowed values
validation-display-mask = Display mask
validation-mask-input-char = Mask input character
validation-mask-template-char = Mask template character
validation-required = Required
validation-allow-empty = Allow empty
validation-case-insensitive = Case insensitive
validation-external = External validation
validation-lock = Lock configuration
validation-err-at-least-one-rule = Enter at least one reusable rule name.
validation-err-enter = Enter a { $label }.
validation-err-non-negative = { $label } must be a non-negative integer.
validation-err-min-max = Minimum cannot be greater than maximum.
validation-err-pattern-line = Pattern line { $line } must use `position | constraint`.
validation-err-range-start = Pattern range start cannot exceed its end.
validation-err-bad-position = Invalid pattern position '{ $value }'.
validation-err-bad-constraint = Unknown character constraint '{ $value }'.
validation-err-permission = Validation-management permission is required.