Files
komp_ac/web/locales/en/main.ftl
2026-08-24 10:44:56 +02:00

963 lines
48 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ============================================================================
# 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-toggle-theme = Toggle dark mode
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-import = Import
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 = Adjust 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-adjust-table-title = Adjust table
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-adjust-table-of = Adjust table
td-adjust-table-hint = This table has no data, so you can add new columns or select existing columns to remove. The change is saved atomically.
td-table-name = Table name
td-table-name-hint = Rename the table here. Links and its definition continue to point to the same table.
td-remove-column = Remove
td-remove-column-aria = Remove { $column }
td-remove-column-confirm = Remove column "{ $column }"? This can't be undone once you save.
td-save-definition = Save table definition
td-rename-column = Column aliases
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-current-alias = Current alias
td-new-name = New name
td-rename-button = Rename
td-alias-locked = cannot be renamed
td-order-heading = Column order
td-order-hint = Drag columns into place, then save when the order feels right.
td-drag-column = Drag to reorder
td-order-clean = No unsaved order changes
td-order-unsaved = Unsaved order changes
td-order-reset = Revert
td-order-save = Save order
td-err-invalid-order = The column order changed or is incomplete. Reload it and try again.
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 adjust the columns
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-adjust-table = Adjust table
td-tab-adjust-table-sub = Add, remove, or replace 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-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-definition-adjusted = `{ $table }` adjusted: { $added } added, { $removed } removed.
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-describe-change = Change the table name, select a column to remove, or stage at least one column to add.
td-err-backend-no-columns = The backend did not add the columns.
td-err-backend-no-adjustment = The backend did not adjust the table definition.
td-err-populated-append-only = This table contains data. Existing columns cannot be removed; only new columns can be added.
td-err-choose-rename = Type a new name for the column.
td-err-unknown-column = That column is not part of this table any more. The panel below is the table as it now is.
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-technical-history = Technical update history
ecb-technical-history-hint = For troubleshooting only. Old failures remain in this audit log even after a later update succeeds.
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 = updating now
ecb-postable-lead = Accepted transaction dates
ecb-ordinary-transactions = Regular transactions
ecb-statements-title = Statements and dated balances
ecb-dated-up-to = Through
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 successful update
ecb-none = none
ecb-next-import = Next automatic update
ecb-ready-currencies = Currencies ready:
ecb-latest-problem = Latest problem:
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 = Foreign-currency posting is available
ecb-headline-never-ran = Foreign-currency posting is unavailable
ecb-headline-behind = Some foreign-currency records may be blocked
ecb-explanation-current = The required rates are available. No admin action is needed.
ecb-explanation-never-ran = No rate update has succeeded yet. Foreign-currency records cannot be posted.
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 = Official 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 = Prepare an import in three steps: choose the table and hand over the file, say where each column of the table takes its value from, then look at the result before anything is written.
import-scope = Scope
import-choose-scope = Choose global or a profile
import-target-tables = Target table
import-choose-table = Choose a table
import-csv-file = CSV file
import-date-format = Date format
import-date-format-yy-mm-dd = YY-MM-DD (26-08-18)
import-date-format-dd-mm-yy = DD-MM-YY (18-08-26)
import-date-format-yyyy-mm-dd = YYYY-MM-DD (2026-08-18)
import-date-format-dd-mm-yyyy = DD-MM-YYYY (18-08-2026)
import-date-format-hint = Used for DATE columns. Jiff expands YY values 6999 to 19691999 and 0068 to 20002068, then normalizes every date before import.
import-csv-data = CSV data
import-csv-format-hint = The first row is normally used as the file's column names. Use UTF-8 CSV with a comma separator and every field in double quotes, for example: "hl","he","s"
import-continue = Continue
import-carried = Importing into { $table } in { $scope }.
import-error-title = Could not import CSV
import-import-rows = Import
import-failure-no-rows-message = Nothing was imported. CSV row { $row } failed.
Backend: { $error }
import-err-bad-date = CSV row { $row }, column { $column }: “{ $value }” is not a valid { $format } date.
import-success-title = Import complete
import-success-message = Inserted { $inserted ->
[one] { $inserted } row
*[other] { $inserted } rows
} into { $table }, from { $source_rows ->
[one] { $source_rows } prepared row
*[other] { $source_rows } prepared rows
}.
# --- The import while it runs ----------------------------------------------
import-progress-heading = Importing into { $table }
import-progress-rows = { $inserted } of { $total } rows staged
import-progress-label = Import progress
import-progress-elapsed = Elapsed
import-progress-rate = Speed
import-progress-remaining = Time left
import-progress-rate-value = { $rows } rows/s
import-progress-seconds = { $seconds } s
import-progress-minutes = { $minutes } m { $seconds } s
import-progress-unknown-yet = —
import-progress-hint = The import runs on the server and keeps going even if this page is closed. This card updates every second.
import-progress-gone = This import is no longer being tracked. It either finished more than five minutes ago or was started in another session.
import-progress-done-close = Close
import-err-already-running = An import is already running. Wait for it to finish before starting another one.
# --- Step 2: mapping -------------------------------------------------------
import-mapping-heading = Map CSV columns into { $table }
import-mapping-hint = Nothing is mapped until you choose it. Map the whole file in order, or select CSV columns and drop them on the table column they should start at.
import-mapping-rows = The file holds { $rows } data rows.
import-summary-mapped-short = mapped
import-summary-attention-short = table columns not mapped
import-csv-columns = CSV columns found
import-csv-columns-hint = Click a column, Ctrl/Cmd-click to add more, or Shift-click for a range, then click or drag onto the table column the selection should start at. The small text is the first data value.
import-select-all-columns = Select all
import-clear-selection = Clear selection
import-map-in-order = Map in order
import-clear-all-mappings = Clear all mappings
import-table-columns = Original table columns
import-table-columns-hint = Every table column is shown. Leave a row as “Not mapped” when you intentionally do not want to import it.
import-drag-source = Map CSV column { $column }
import-destination-unmapped = Not mapped — leave empty
import-value-from = Gets values from
import-clear-mapping = Clear
import-th-destination = Table column
import-th-required = Required
import-th-source = Takes its value from
import-th-example = Example
import-th-status = Status
import-source-none = Skip this file column
import-source-column = Column { $position }
import-required-short = required
import-status-mapped = Mapped
import-status-duplicate = Same name appears twice
import-status-unmapped = Not mapped
import-status-near = Looks like
import-status-near-match = Looks like { $column }
import-source-option = { $name } — position { $position }
import-source-unnamed = position { $position }
import-back-to-source = Back to the file
import-to-preview = Prepare and preview
# --- Step 3: preview -------------------------------------------------------
import-preview-heading = Prepared import for { $table }
import-summary-rows = Source rows
import-summary-columns-used = Mapped table columns
import-summary-ignored = Ignored source columns
import-summary-empty = Unmapped table columns sent empty
import-summary-missing-required = Not filled in by this import, and declared NOT NULL by the table: { $columns }. If those columns have no default, the server will refuse the rows.
import-preview-more-rows = { $rows } further rows are prepared and not shown here.
import-prepared-csv = The prepared CSV
import-prepared-csv-hint = This is the file that gets imported, and the same file the download hands over.
import-download-prepared = Download prepared CSV
import-back-to-mapping = Back to the mapping
# --- Refusals --------------------------------------------------------------
import-err-select-profile = Select a scope.
import-err-tables-required = Select a target table.
import-err-csv-required = Choose a CSV file or paste CSV data.
import-err-unknown-profile = Unknown scope.
import-err-tables-not-in-profile = The target table does not belong to the selected scope.
import-err-missing-structure = The backend omitted a requested table structure.
import-err-no-importable-columns = Table '{ $table }' has no columns an import can write into.
import-err-csv-row = Row { $row }: { $error }
import-err-row-width = Every row must hold as many values as the header. The header has { $expected } and a later row has { $found }.
import-err-no-data-rows = The file needs a header row and at least one data row under it.
import-err-mapping-empty = No column of the table is mapped, so there is nothing to import.
import-err-source-used-twice = Source column '{ $name }' at position { $position } is used for two table columns. A source column can fill one table column only.
import-err-destination-used-twice = Table column '{ $column }' is mapped more than once. A table column can receive one source column only.
import-err-source-position-missing = Column '{ $column }' is set to take position { $position }, and the file only has { $positions }. Prepare the mapping again.
import-err-destination-missing = A mapped column no longer exists in table '{ $table }', or is no longer one an import can write into. Prepare the mapping again.
import-err-missing-type = Missing type for column '{ $column }'
import-err-permission = Import permission is required. A table also needs insert permission before it can be loaded.
import-err-unterminated-quote = CSV contains an unterminated quoted value.
import-err-strict-csv = Invalid CSV format. Every field must be enclosed in double quotes, fields must be separated by commas, and each record must stay on one line.
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-scope = Scope
export-choose-scope = Choose global or a profile
export-tables = Table
export-choose-table = Choose a table
export-include-system = Include system columns
export-include-system-hint = Adds id, deleted and row_revision to the file. An import ignores them.
export-error-title = Could not export CSV
export-download = Download CSV
export-err-select-profile = Select a scope.
export-err-tables-required = Select a table.
export-err-unknown-profile = Unknown scope.
export-err-tables-not-in-profile = The table does not belong to the selected scope.
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 = Export permission is required. A table also needs read permission before it can be downloaded.
# --- 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 = The selected initial rate source must publish a direct quote between this currency and every initial foreign currency. Additional sources and currencies can be added later.
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.
# Exchange-rate administration workspace
rates-title = Conversion rates
rates-eyebrow = Admin workspace
rates-description = Configure profile currencies, inspect audit evidence, and monitor providers.
rates-updated = Conversion rates updated
rates-could-not-continue = The operation could not be completed
rates-sections = Conversion-rate workspace sections
rates-tab-configuration = Configuration
rates-tab-configuration-sub = Currencies and providers
rates-tab-evidence = Evidence
rates-tab-evidence-sub = Inspect a stored result
rates-tab-providers = Availability
rates-tab-providers-sub = Status and updates
rates-profile-configuration = Profile configuration
rates-no-profiles = No accounting profiles are available.
rates-profile = Profile
rates-accounting-currency = Accounting currency
rates-immutable = fixed after profile creation
rates-configured-currencies = Foreign currencies
rates-registered-providers = Available providers
rates-no-foreign-currencies = No foreign currency has been configured for this profile yet.
rates-foreign-currency = Foreign currency
rates-default-provider = Default provider
rates-providers = Providers
rates-coverage = Verified coverage
rates-ready = Ready
rates-importing = Coverage incomplete
rates-make-default = Make default
rates-add-binding = Add currency provider
rates-append-only-hint = Configuration is append-only: add another provider or make an existing provider the default. Existing bindings are not replaced.
rates-provider = Provider
rates-choose-provider = Choose a provider
rates-make-default-now = Use this provider for future conversions
rates-reason = Reason
rates-rate-date = Applied rate date
rates-evidence-lookup = Evidence lookup
rates-evidence-hint = Look up the exact conversion history for one table cell and its revisions.
rates-table = Table
rates-record-id = Record ID
rates-column = Column
rates-find-evidence = Find evidence
rates-no-exchange = This cell does not contain an exchange-rate conversion.
rates-no-evidence = The cell is exchange-enabled, but no conversion evidence was recorded.
rates-revision = Row revision
rates-conversion = Conversion
rates-created = Recorded at
rates-more-evidence = More evidence exists; narrow the lookup or use the API cursor to continue.
rates-provider-health = Can foreign-currency records be posted?
rates-provider-health-hint = Current availability and the latest successful automatic update.
rates-unavailable-title = Conversion rates are unavailable
rates-err-profile-missing = The selected profile no longer exists. The first available profile is shown instead.
rates-err-record-id = Record ID must be a positive whole number.
rates-configuration-added = Added provider { $source } for { $currency }.