# English baseline catalogue for aa-discord-audit.
# All msgstr entries are intentionally empty — gettext falls back to
# the msgid (the source string is already English), so the catalogue
# exists only to keep the locale tree symmetric with ``ru/`` and to
# offer a localisation override seam without source-string edits.
# Copyright (C) 2026 Boris Talovikov
# This file is distributed under the same license as the aa-discord-audit package.
#
msgid ""
msgstr ""
"Project-Id-Version: aa-discord-audit 0.1.0a3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-06-03 07:12+0000\n"
"PO-Revision-Date: 2026-05-14 15:30+0000\n"
"Last-Translator: Boris Talovikov <boris.t.66@gmail.com>\n"
"Language-Team: English\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

msgid "CLI"
msgstr ""

msgid "Beat"
msgstr ""

msgid "API"
msgstr ""

msgid "Web"
msgstr ""

msgid "Rate limit"
msgstr ""

msgid "No perm"
msgstr ""

msgid "No --yes"
msgstr ""

msgid "Not ack'd"
msgstr ""

msgid "yes"
msgstr ""

#, python-format
msgid "%(time)s ago"
msgstr ""

msgid "Mark selected PENDING findings as manually reviewed"
msgstr ""

#, python-format
msgid ""
"Marked %(count)d finding(s) as manually reviewed across %(runs)d run(s)."
msgstr ""

#, python-brace-format
msgid "Discord Audit v{version}"
msgstr ""

msgid "Discord Audit"
msgstr ""

msgid "audit run"
msgstr ""

msgid "audit runs"
msgstr ""

msgid "Can trigger an audit run"
msgstr ""

msgid "Can launch a destructive audit run (strip/kick) from the web UI"
msgstr ""

msgid ""
"Findings co-die with their run. The only path to a Run delete is the "
"retention sweep (``prune_audit_runs``); CASCADE keeps that prune atomic "
"without a per-finding fan-out."
msgstr ""

msgid "audit finding"
msgstr ""

msgid "audit findings"
msgstr ""

msgid "config change log entry"
msgstr ""

msgid "config change log entries"
msgstr ""

msgid ""
"Live FK to the produced AuditRun (set after acceptance). Goes NULL on "
"retention prune of the run; see ``audit_run_pk`` for the post-prune forensic "
"anchor."
msgstr ""

msgid ""
"Snapshot of audit_run_id at insertion time. Survives retention pruning of "
"AuditRun, so forensic queries spanning >RETENTION_DAYS can still join "
"through this column when ``audit_run`` has been NULL'd."
msgstr ""

msgid "audit invocation"
msgstr ""

msgid "audit invocations"
msgstr ""

msgid "Manually linked by operator"
msgstr ""

msgid "Migrated from a deleted DiscordUser row"
msgstr ""

msgid "Identity unknown to AA"
msgstr ""

msgid "Identity known but lacks access_perm"
msgstr ""

msgid "Filtered as a known bot account"
msgstr ""

msgid "Report only — no changes"
msgstr ""

msgid "Strip AA-managed roles"
msgstr ""

msgid "Strip AA-managed roles and kick"
msgstr ""

msgid "Pending"
msgstr ""

msgid "Running"
msgstr ""

msgid "Succeeded"
msgstr ""

msgid "Failed"
msgstr ""

msgid "Budget exceeded"
msgstr ""

msgid "Abandoned"
msgstr ""

msgid "Interrupted"
msgstr ""

msgid "Applied"
msgstr ""

msgid "Skipped"
msgstr ""

msgid "Management command"
msgstr ""

msgid "Celery beat schedule"
msgstr ""

msgid "Manual / API call"
msgstr ""

msgid "Web UI"
msgstr ""

msgid "Per-user rate limit exceeded"
msgstr ""

msgid "run_audit permission missing"
msgstr ""

msgid "Destructive action requested without --yes"
msgstr ""

msgid "Initial audit not acknowledged"
msgstr ""

msgid "Discord API HTTP error"
msgstr ""

msgid "Member added to protect list"
msgstr ""

msgid "Member reclassified between phases"
msgstr ""

msgid "Linked AA user changed between phases"
msgstr ""

msgid "Discord bot auth failed (401)"
msgstr ""

msgid "Discord refused the request (403)"
msgstr ""

msgid "Operator marked the finding as manually reviewed"
msgstr ""

msgid "Build/apply disagreed on which findings exist"
msgstr ""

msgid "Created"
msgstr ""

msgid "Updated"
msgstr ""

msgid "Deleted"
msgstr ""

msgid ""
"Discord username captured at row creation. HISTORICAL rows are populated by "
"the post_delete signal; OPERATOR rows are filled by the admin. Not refreshed "
"if the user renames."
msgstr ""

msgid ""
"Discord display name (global_name) captured at row creation. AA core's "
"DiscordUser does not store this, so HISTORICAL rows leave it blank; OPERATOR "
"rows or audit-time enrichment may fill it. Not refreshed if the user changes "
"display name."
msgstr ""

msgid "discord identity"
msgstr ""

msgid "discord identities"
msgstr ""

msgid "Can create or edit DiscordIdentity rows"
msgstr ""

msgid "pending kick"
msgstr ""

msgid "pending kicks"
msgstr ""

msgid "bot account uid"
msgstr ""

msgid "bot account uids"
msgstr ""

msgid "Can edit BotAccountUid rows"
msgstr ""

msgid "protected discord member"
msgstr ""

msgid "protected discord members"
msgstr ""

msgid "Can edit ProtectedDiscordMember rows"
msgstr ""

msgid "managed role exception"
msgstr ""

msgid "managed role exceptions"
msgstr ""

msgid "Can edit ManagedRoleException rows"
msgstr ""

msgid "finding action override"
msgstr ""

msgid "finding action overrides"
msgstr ""

msgid "Can edit FindingActionOverride rows"
msgstr ""

msgid ""
"Operators cannot create a FindingActionOverride for their own linked Discord "
"identity. Have a second operator review and submit the override."
msgstr ""

msgid "initial audit acknowledgement"
msgstr ""

msgid "initial audit acknowledgements"
msgstr ""

msgid "Can release the first-run dry-run lock"
msgstr ""

#, python-format
msgid "Discord audit run #%(pk)s"
msgstr ""

msgid "no"
msgstr ""

msgid "Launch Audit"
msgstr ""

msgid "Close"
msgstr ""

msgid ""
"This will start a real audit run. Depending on the configured policy it may "
"strip Discord roles and kick members."
msgstr ""

msgid "Policy mode:"
msgstr ""

msgid "destructive"
msgstr ""

msgid "report-only"
msgstr ""

msgid "Initial acknowledgement:"
msgstr ""

msgid "present"
msgstr ""

msgid "missing"
msgstr ""

msgid ""
"Run <code>audit_acknowledge_initial</code> from the CLI before launching an "
"audit."
msgstr ""

msgid "Cancel"
msgstr ""

msgid "Confirm Launch"
msgstr ""

msgid "pagination"
msgstr ""

msgid "Previous page"
msgstr ""

msgid "Next page"
msgstr ""

msgid "Discord audit sections"
msgstr ""

msgid "Runs"
msgstr ""

msgid "Attempts"
msgstr ""

msgid "Config changes"
msgstr ""

msgid "Discord Audit Config Changes"
msgstr ""

msgid "breadcrumb"
msgstr ""

msgid "Operator config changes"
msgstr ""

msgid ""
"Append-only forensic log of every operator edit to BotAccountUid, "
"ProtectedDiscordMember, ManagedRoleException, and FindingActionOverride. "
"Survives retention pruning of AuditRun rows."
msgstr ""

msgid "Model"
msgstr ""

msgid "(any)"
msgstr ""

msgid "Action"
msgstr ""

msgid "Actor"
msgstr ""

msgid "username"
msgstr ""

msgid "Apply"
msgstr ""

msgid "ID"
msgstr ""

msgid "Created at"
msgstr ""

msgid "Object pk"
msgstr ""

msgid "Payload"
msgstr ""

msgid "Show payload"
msgstr ""

msgid "show"
msgstr ""

msgid "Field"
msgstr ""

msgid "Before"
msgstr ""

msgid "After"
msgstr ""

msgid "row deleted (no snapshot)"
msgstr ""

msgid "No config changes to display."
msgstr ""

msgid ""
"Showing the first page — narrow your filters to search across all results."
msgstr ""

msgid "Discord Audit Finding"
msgstr ""

#, python-format
msgid "Run #%(run_id)s"
msgstr ""

#, python-format
msgid "Finding #%(finding_id)s"
msgstr ""

msgid "Finding"
msgstr ""

msgid "Recorded outcome"
msgstr ""

msgid ""
"Frozen at the time of the audit run; classify() ran against the live Discord "
"member and the operator-config tables in effect when the run started."
msgstr ""

msgid "Member ID"
msgstr ""

msgid "Username"
msgstr ""

msgid "Category"
msgstr ""

msgid "State"
msgstr ""

msgid "AA user"
msgstr ""

msgid "Kicked"
msgstr ""

msgid "Skip reason"
msgstr ""

msgid "Error"
msgstr ""

msgid "Roles removed"
msgstr ""

msgid "Role IDs:"
msgstr ""

msgid "Current operator-config inputs"
msgstr ""

msgid ""
"Live state of the tables classify() consults. Diverges from the recorded "
"category when the operator changed config between the run and now — useful "
"when investigating 'why was this flagged?' after a follow-up edit."
msgstr ""

#, python-format
msgid "Current operator-config inputs as of %(ts)s"
msgstr ""

msgid "In BotAccountUid"
msgstr ""

msgid "ProtectedDiscordMember"
msgstr ""

msgid "protected"
msgstr ""

msgid "not protected"
msgstr ""

msgid "Has DiscordUser link"
msgstr ""

msgid "AA user pk:"
msgstr ""

msgid "Has DiscordIdentity"
msgstr ""

msgid "last seen:"
msgstr ""

msgid "Recorded run policy snapshot"
msgstr ""

msgid "Discord Audit Attempts"
msgstr ""

msgid "Audit attempts"
msgstr ""

msgid ""
"Every CLI / beat / manual trigger of the audit, including refused attempts. "
"Refused rows do NOT count toward the per-user rate limit."
msgstr ""

msgid "Accepted"
msgstr ""

msgid "Refusal reason"
msgstr ""

msgid "Triggered by"
msgstr ""

msgid "Started at"
msgstr ""

msgid "Trigger"
msgstr ""

msgid "User"
msgstr ""

msgid "Argv"
msgstr ""

msgid "Run"
msgstr ""

msgid "Show argv"
msgstr ""

msgid "(pruned)"
msgstr ""

msgid "No attempts to display."
msgstr ""

msgid "Discord Audit Run"
msgstr ""

msgid "AuditRun"
msgstr ""

msgid "running"
msgstr ""

msgid "Triggered by user"
msgstr ""

msgid "Started"
msgstr ""

msgid "Finished"
msgstr ""

msgid "Members scanned"
msgstr ""

msgid "Findings"
msgstr ""

msgid "Actions applied"
msgstr ""

msgid "Actions skipped"
msgstr ""

msgid "Dry run"
msgstr ""

msgid "First-run lock"
msgstr ""

msgid "Confirmation bypassed"
msgstr ""

msgid "Download all findings (CSV)"
msgstr ""

msgid ""
"You lack the view_auditfinding permission; per-finding details are hidden."
msgstr ""

#, python-format
msgid "%(t)s findings: %(k)s kicked, %(s)s skipped, %(e)s errors"
msgstr ""

msgid "Show error detail"
msgstr ""

msgid "Explain"
msgstr ""

msgid "No findings to display."
msgstr ""

msgid "Discord Audit Runs"
msgstr ""

msgid "Last run"
msgstr ""

msgid "no runs yet"
msgstr ""

msgid "Failed (7 d)"
msgstr ""

msgid "Pending findings"
msgstr ""

msgid "Audit runs"
msgstr ""

msgid "From"
msgstr ""

msgid "To"
msgstr ""

msgid "Duration"
msgstr ""

msgid "Members"
msgstr ""

msgid "Open"
msgstr ""

msgid "No audit runs to display."
msgstr ""

msgid "Clear filters"
msgstr ""

msgid ""
"Initial audit acknowledgement is missing. Run the audit_acknowledge_initial "
"CLI command first."
msgstr ""

msgid "Per-user audit rate limit reached. Try again later."
msgstr ""

msgid "Celery broker unreachable at launch."
msgstr ""

msgid ""
"Celery broker is unreachable; the audit run was marked FAILED. Try again "
"once the broker is back."
msgstr ""
