en.yml
927 lignes · 42038 octets
# English translations — rustwarden-ui # UI-specific sections (pages, forms, navigation, admin panels) # Login login: title: "Login" page_title: "Login" page_description: "Sign in to your account" subtitle: "Sign in to your account" username: "Username or email" password: "Password" submit: "Sign in" remember_me: "Remember me" tab_login: "Login" tab_register: "Register" register_title: "Create an account" register_submit: "Create my account" username_placeholder: "Username or email" password_placeholder: "Your password" username_placeholder_register: "Your username (min. 3 characters)" username_pattern_register: "Lowercase letters, digits and hyphens only, 3 to 39 characters" password_placeholder_register: "Your password (min. 8 characters)" email_placeholder: "your@email.com" forgot_password: "Forgot password?" email_not_verified: "Email not verified?" resend_verification: "Resend verification email" already_have_account: "Already have an account?" sign_in_link: "Sign in" success_message: "Login successful! Redirecting..." error_message: "Login error. Check your credentials." email_unverified_message: "Your email is not verified. Click below to resend the link." resend_button: "Resend verification email" resend_success: "Verification email sent if the account exists." resend_error: "Unable to send the request at this time." resend_prompt: "Please enter your email before resending." register_success: "Account created successfully! Please check your email." register_error: "Registration error" email_label: "Email" footer_text: "Accounts and authentication" # Request a password-reset link forgot_password: page_title: "Forgot password" title: "Forgot password" subtitle: "Enter your email address. If an account exists, a reset link will be sent." email_label: "Email address" email_placeholder: "you@example.com" submit: "Send reset link" back_to_login: "Back to sign in" error_default: "Unable to send the request." success_default: "If an account exists for this address, a reset email has been sent." error_missing_email: "Please enter your email." error_cannot_send: "Unable to send the request right now." # Resend verification email resend_verification: page_title: "Resend verification email - RustWarden" title: "Resend verification email" subtitle: "Enter your email address to receive a new verification link." email_label: "Email address" email_placeholder: "you@example.com" submit: "Send verification link" back_to_login: "Back to login" error_default: "Unable to send the request." success_default: "If the account exists and is not verified, an email has been sent." error_missing_email: "Please enter your email." error_cannot_send: "Unable to send the request at this time." # Password reset (from email link) password_reset: page_title: "Reset password" title: "Reset password" subtitle: "Enter your new password below." new_password_label: "New password" new_password_placeholder: "New secure password" requirements: "⚠️ Must contain: 8+ characters, uppercase, lowercase, digit, special character" confirm_password_label: "Confirm password" confirm_password_placeholder: "Confirm your new password" missing_token_url: "Reset token missing in URL." missing_token: "Reset token is missing." missing_new_password: "Please enter a new password." passwords_not_match: "Passwords do not match." success_message: "Your password has been reset successfully. You can now log in." error_link_invalid: "Unable to reset password. The link may be expired or invalid." error_generic: "Unable to reset password at this time." # 2FA Login page login_2fa: page_title: "2FA Verification" title: "Two-Step Verification" subtitle: "Enter the code from your authenticator app" code_label: "Authentication code" backup_code_label: "Backup code" verify_button: "Verify" use_backup_code: "Use a backup code" use_totp_code: "Use authenticator app code" back_to_login: "Back to login" error_invalid_code: "Invalid code. Please try again." error_network: "Network error. Please try again." # 2FA Security settings_security: page_title: "Security - RustWarden" title: "Two-Factor Authentication" subtitle: "Protect your account with an extra layer of security" totp_title: "TOTP Authentication" status_enabled: "Enabled" status_disabled: "Disabled" enabled_message: "Your account is protected by two-factor authentication." disabled_message: "Add an extra layer of security to your account by enabling two-factor authentication using an app like Google Authenticator or Authy." enable_button: "Enable 2FA" disable_button: "Disable 2FA" scan_qr: "Scan this QR code with your authenticator app" manual_entry: "Or enter this code manually" enter_code: "Enter the 6-digit code from your app" verify_button: "Verify and Enable" backup_codes_title: "Backup Codes" backup_codes_warning: "Save these codes in a safe place. Each code can only be used once." backup_codes_remaining: "Backup codes remaining" regenerate_button: "Regenerate codes" regenerate_confirm: "Are you sure? Old codes will be replaced." confirm_disable: "Enter your password to disable 2FA" password_label: "Current password" copy_button: "Copy" saved_codes_button: "I've saved my codes" breadcrumb: "Security" force_2fa_message: "Your administrator requires two-factor authentication. You must set up 2FA before you can access the rest of the application." force_2fa_logout: "Sign out" # Settings settings: title: "Settings" page_title: "Settings - RustWarden" subtitle: "Manage your preferences and account settings" profile_title: "My Profile" profile_desc: "Edit your personal information (username, email)" password_title: "Password" password_desc: "Change your password to secure your account" sessions_title: "Active Sessions" sessions_desc: "Manage your active sessions and revoke access from other devices" preferences_title: "Preferences" preferences_desc: "Customize your experience (theme, language)" access: "Access" info_title: "Information" info_desc: "Use the sections above to manage different aspects of your account. All changes are secure and require your authentication." language: "Language" language_description: "Choose your preferred language" save: "Save" saved: "Settings saved" # Home page home: welcome: "Welcome, {username}!" subtitle: "Welcome to your personal space" my_account: "My Account" stat_username: "Username" stat_email: "Email" stat_member_since: "Member since" stat_roles: "Roles" # Preferences preferences: title: "Display Preferences" page_title: "Display Preferences" subtitle: "Customize the interface appearance" theme: "Theme" theme_light: "Light" theme_light_desc: "Bright and clean interface" theme_dark: "Dark" theme_dark_desc: "Reduces eye strain" theme_auto: "Automatic" theme_auto_desc: "Adapts to time of day" theme_preview: "The theme will be applied immediately after saving" language: "Language" language_fr: "Français" language_fr_desc: "Interface in French" language_en: "English" language_en_desc: "English interface" language_de: "Deutsch" language_de_desc: "German interface" language_es: "Español" language_es_desc: "Spanish interface" language_it: "Italiano" language_it_desc: "Italian interface" language_pt: "Português" language_pt_desc: "Portuguese interface" translation_warning: "Complete interface translation is under development. Some elements may remain in French." modified: "Preferences modified" modified_desc: "Save your changes to apply them" save: "Save preferences" saving: "Saving..." cancel: "Cancel" saved_success: "Preferences saved successfully!" saved_reload: "Preferences saved successfully!\n\nThe language has been changed. Do you want to reload the page now to apply the changes?" error: "Error: {message}" network_error: "Network error. Please try again." sync_title: "Your preferences are synchronized" sync_desc: "Your display preferences are saved and automatically apply to all devices connected to your account." preview_dark: "Preview: Dark theme will be applied" preview_light: "Preview: Light theme will be applied" preview_auto: "Preview: Automatic theme will be applied" # Profile profile: title: "My Profile" page_title: "My Profile" subtitle: "Edit your personal information" account_info: "Account Information" username: "Username" username_public: "Publicly visible" username_placeholder: "Your username" username_pattern: "Lowercase letters, digits and hyphens only, 3 to 39 characters" email: "Email" email_placeholder: "your@email.com" save: "Save changes" saving: "Saving..." saved: "Profile updated successfully" error: "Error updating profile" email_label: "Email address" email_used_for: "Used for login" email_warning: "The current address is not changed here." email_change_info: "A confirmation link is sent to the new address. The current address receives a notice. The account changes only after confirmation." email_change_title: "Change email address" new_email_label: "New address" current_password_label: "Current password" request_button: "Request change" email_change_error: "Unable to send the request." network_error: "Network error. Please try again." username_help: "3 to 39 characters (a-z, 0-9, -)" additional_info: "Additional Information" account_created: "Account created on" roles: "Roles" linked_accounts_title: "Linked Accounts" no_linked_accounts: "No external accounts linked." linked_since: "Linked since" unlink_button: "Unlink" unlink_confirm: "Are you sure you want to unlink this account?" unlink_error: "Unable to unlink this account." cannot_unlink_last: "Cannot remove your last authentication method." # Breadcrumb breadcrumb: home: "Home" settings: "Settings" admin: "Administration" preferences: "Preferences" profile: "Profile" password: "Password" sessions: "Sessions" # Admin admin: dashboard: title: "Administration" heading: "Administrator Dashboard" users_card_title: "Users" users_card_subtitle: "Total users" access_button: "Access" sessions_card_title: "Active Sessions" sessions_card_subtitle: "Ongoing sessions" admins_card_title: "Administrators" admins_card_subtitle: "Admin accounts" last_activity_card_title: "Last Activity" last_activity_card_subtitle: "Last login" audit_section_title: "Audit Log Statistics" audit_total_logs: "Total logs" audit_last_24h: "Last 24h" audit_by_level: "By level" chart_label: "Logs by level" view_logs: "View logs" logs_card_title: "Audit logs" logs_card_desc: "Latest recorded actions: email changes, blocked sign-ins." roles_card_title: "Roles Management" roles_card_desc: "Manage roles and granular permissions" roles_stat_title: "Roles" settings_card_title: "Application Settings" settings_card_desc: "Configure global application settings" apps_card_title: "Application Management" apps_card_desc: "Enable or disable modular applications" fediverse_card_title: "ActivityPub Federation" fediverse_card_desc: "Settings, trust list, outbound queue, remote sessions, NodeInfo" orgs_card_title: "Organisation Management" orgs_card_desc: "Create and manage organisations and their members" orgs_stat_title: "Organisations" orgs_members_stat_title: "Total members" logs: page_title: "Audit logs" heading: "Audit logs" empty: "No entries yet." col_date: "Date" col_level: "Level" col_action: "Action" col_message: "Message" roles_list: page_title: "Roles Management" breadcrumb_roles: "Roles" title: "Roles" create_role: "Create a role" table_name: "Name" table_description: "Description" table_users: "Users" table_permissions: "Permissions" table_actions: "Actions" edit: "Edit" delete: "Delete" no_roles: "No roles found." protected_hint: "Protected" delete_confirm_title: "Confirm deletion" delete_confirm_message: "Are you sure you want to delete the role" delete_button: "Delete" role_form: title_create: "Create a role" title_edit: "Edit role" breadcrumb_create: "Create" breadcrumb_edit: "Edit" back_to_list: "Back to list" name_label: "Role name" name_placeholder: "e.g. moderator" description_label: "Description" description_placeholder: "Role description..." permissions_label: "Permissions" protected_name_hint: "This role name cannot be changed." cancel: "Cancel" submit_create: "Create role" submit_edit: "Save changes" errors: title: "Error Codes" description: "Application error code documentation. Each error code is associated with a middleware and provides context information for debugging." breadcrumb_errors: "Error Codes" table_code: "Code" table_description: "Description" table_category: "Category" table_middleware: "Middleware" table_context: "Context" table_example: "Example" legend_title: "Legend" legend_code: "Unique error identifier (format: CATEGORY_NUMBER)" legend_description: "Description of the error" legend_category: "Error type (Authentication, CSRF, Rate Limiting, etc.)" legend_middleware: "Middleware responsible for generating this error" legend_context: "Detailed explanation of when this error occurs" legend_example: "Concrete example of a situation generating this error" error_auth001_desc: "Invalid credentials" error_auth001_category: "Authentication" error_auth001_context: "The user provided incorrect credentials during login" error_auth001_example: "Login attempt with an incorrect password" error_auth002_desc: "Invalid token" error_auth002_category: "Authentication" error_auth002_context: "The provided JWT token is invalid or malformed" error_auth002_example: "Corrupted JWT token or signed with a different key" error_auth003_desc: "Token expired" error_auth003_category: "Authentication" error_auth003_context: "The JWT token has expired and needs to be renewed" error_auth003_example: "Access attempt with an expired token after the validity period" error_csrf001_desc: "Missing CSRF token" error_csrf001_category: "CSRF Protection" error_csrf001_context: "The POST/PUT/DELETE request does not contain a CSRF token" error_csrf001_example: "Form submitted without a CSRF token in the header or body" error_csrf002_desc: "Invalid CSRF token" error_csrf002_category: "CSRF Protection" error_csrf002_context: "The provided CSRF token does not match the session token" error_csrf002_example: "Modified or stolen CSRF token" error_rate001_desc: "Rate limit exceeded" error_rate001_category: "Rate Limiting" error_rate001_context: "The number of requests per minute has been exceeded" error_rate001_example: "More than 100 requests/min on admin endpoints" error_valid001_desc: "Invalid input data" error_valid001_category: "Validation" error_valid001_context: "The provided data does not comply with validation rules" error_valid001_example: "Invalid email format or missing required field" error_valid002_desc: "Password complexity not met" error_valid002_category: "Validation" error_valid002_context: "The password does not meet the configured complexity rules" error_valid002_example: "Password too short or missing required characters" error_rbac001_desc: "Insufficient permissions" error_rbac001_category: "Authorization" error_rbac001_context: "The user does not have the necessary permissions for this action" error_rbac001_example: "Non-admin user attempting to access /admin/users" error_rbac002_desc: "Admin role required" error_rbac002_category: "Authorization" error_rbac002_context: "The action requires an administrator role" error_rbac002_example: "Attempting to delete a user without admin role" error_db001_desc: "Database operation error" error_db001_category: "Database" error_db001_context: "A database operation failed" error_db001_example: "Foreign key constraint violated or DB connection lost" error_db002_desc: "Resource not found" error_db002_category: "Database" error_db002_context: "The requested resource does not exist in the database" error_db002_example: "User with non-existent ID" user_form: breadcrumb_create: "Create" breadcrumb_edit: "Edit" title_create: "Create a user" title_edit: "Edit a user" back_to_list: "Back to list" username_label: "Username" username_placeholder: "username" username_pattern: "Lowercase letters, digits and hyphens only, 3 to 39 characters" username_readonly_hint: "Username cannot be changed after creation" email_label: "Email" email_placeholder: "user@example.com" email_change_hint: "Changing the address writes it immediately, marks the email as verified, and closes this user's sessions." password_label: "Password" password_optional: "Optional" password_placeholder: "Leave empty to generate a random password" password_hint: "If left empty, a secure password will be automatically generated" roles_label: "Roles" roles_hint: "Select at least one role" must_change_password_label: "Force password change" must_change_password_desc: "The user will have to change their password at next login" cancel: "Cancel" submit_create: "Create user" submit_edit: "Save changes" settings: title: "Application Settings" page_title: "Application Settings - Admin" subtitle: "Global application configuration" general: "General" app_name: "Application name" app_domain: "Domain" app_domain_placeholder: "example.com" app_description: "Description" allow_registration: "Allow registration" allow_registration_desc: "Users can create accounts from the home page" email_validation_required: "Email validation required" email_validation_required_desc: "Users must validate their email before they can log in" save: "Save settings" cancel: "Cancel" saved: "Settings saved successfully" error: "Error saving settings" network_error: "Network error. Please try again." password_security: "Password Security" password_min_length: "Minimum length" password_min_length_hint: "Between 6 and 128 characters" password_complexity: "Complexity requirements" require_uppercase: "Uppercase required" require_lowercase: "Lowercase required" require_digits: "Digit required" require_special: "Special character required" password_change_require_email: "Email confirmation for password change" password_change_require_email_desc: "When enabled, a confirmation email is sent to validate any password change. Otherwise, the change is applied immediately." password_expiration: "Password expiration" password_expiration_desc: "Force periodic password change" expiration_days: "Expiration after (days)" expiration_alert: "Email alert before expiration" expiration_alert_days: "Alert (days before)" audit_logging: "Audit Logging" log_level: "Log level" log_level_debug: "DEBUG - All details" log_level_info: "INFO - Normal information" log_level_warn: "WARN - Warnings only" log_level_error: "ERROR - Errors only" log_level_hint: "Controls the verbosity of audit logs" log_retention: "Log retention (days)" log_retention_hint: "Log retention period (1-365 days)" audit_info_message: "Audit logs record all administrative actions (creation, modification, deletion of users)." save_changes: "Save changes" save_changes_desc: "Settings will be applied immediately" saving: "Saving..." save_success: "Settings saved successfully!" save_error_prefix: "Error" # OAuth / SSO admin settings oauth_sso_title: "OAuth / SSO" oauth_enabled_label: "Enable OAuth" oauth_enabled_desc: "Allow login via external providers (Google, GitHub, etc.)" oauth_redirect_url_label: "Base redirect URL" oauth_redirect_url_desc: "Base URL for OAuth callbacks (e.g. https://myapp.example.com)" oauth_auto_register_label: "Auto-registration" oauth_auto_register_desc: "Automatically create an account if the email does not exist" oauth_link_existing_label: "Link existing accounts" oauth_link_existing_desc: "Automatically link an OAuth account if the verified email matches" oauth_client_id: "Client ID" oauth_client_secret: "Client Secret" oauth_tenant: "Tenant ID" oauth_redirect_uri: "Redirect URI" oauth_copy_uri: "Copy" oauth_secret_configured: "Configured" oauth_secret_not_configured: "Not configured" oauth_secret_change: "Change" oauth_restart_warning: "Credential changes require an application restart." oauth_env_info: "Credentials can also be set via environment variables (OAUTH_*_CLIENT_ID, etc.)." oauth_google_label: "Google" oauth_google_desc: "OpenID Connect" oauth_github_label: "GitHub" oauth_github_desc: "OAuth2" oauth_discord_label: "Discord" oauth_discord_desc: "OAuth2" oauth_microsoft_label: "Microsoft" oauth_microsoft_desc: "OpenID Connect" # Audience measurement. The script URL is read-only here: it feeds # the CSP, which is frozen at startup (see config::analytics). analytics_title: 'Audience measurement' analytics_desc: 'Third-party tracking script injected into pages. The script address is configured through an environment variable; the settings below apply without a restart.' analytics_enabled_label: 'Enable audience measurement' analytics_enabled_desc: 'When disabled, no tracking script is sent to visitors.' analytics_site_id_label: 'Site identifier' analytics_site_id_desc: 'Provided by your audience-measurement service.' analytics_attributes_label: 'Extra attributes' analytics_attributes_desc: 'A JSON object of data-* attributes, for example a data-consent / opt-in pair.' analytics_script_url_label: 'Script address' analytics_script_url_desc: 'Read-only: this address feeds the Content Security Policy, which is frozen at startup. Configure it through ANALYTICS_SCRIPT_URL.' analytics_not_configured: 'No audience-measurement script is configured. Set ANALYTICS_SCRIPT_URL and restart the application to enable this section.' users_list: page_title: "User Management - Admin" title: "User Management" breadcrumb_users: "Users" create_user: "Create user" search_label: "Search" search_placeholder: "Username or email..." role_filter_label: "Role" all_roles: "All roles" per_page_label: "Per page" search_button: "Search" results_summary: "Showing {count} user(s) out of {total} total" page_info: "Page {page} of {total_pages}" table_username: "Username" table_email: "Email" table_roles: "Roles" table_created_at: "Created on" table_last_login: "Last login" table_actions: "Actions" never: "Never" edit: "Edit" no_users: "No users found" reset_password_title: "Reset password" reset_generate: "Generate random password" reset_custom: "Set custom password" reset_email: "Reset by email" reset_new_password_label: "New password" reset_new_password_placeholder: "Minimum 8 characters, uppercase, lowercase, digit, special character" reset_password_requirements: "⚠️ Must contain: 8+ characters, uppercase, lowercase, digit, special character" reset_invalidate_sessions: "Invalidate all active sessions for this user" reset_invalidate_sessions_desc: "The user will need to log in again after the change" reset_button: "Reset" delete_confirm_title: "⚠️ Confirm deletion" delete_confirm_message: "Are you sure you want to delete this user?" delete_confirm_username: "Username:" delete_confirm_email: "Email:" delete_irreversible: "This action is irreversible!" delete_button: "Delete permanently" delete: "Delete" delete_error: "Error deleting user" network_error: "Network error" edit_user_title: "Edit user" resetting: "Resetting..." reset_by_email_title: "Reset by email" close: "Close" password_reset_success_title: "Password reset" password_warning_once: "This password will only be displayed once. Copy it now!" new_password_label: "New password" copy: "Copy" password_copied: "Password copied to clipboard" password_set_success: "Password reset successfully" reset_error: "Error resetting password" # Password Change password: title: "Change my password" page_title: "Change my password" subtitle: "Modify your password to secure your account. A confirmation email will be sent to validate the change." subtitle_no_email: "Modify your password to secure your account." must_change_message: "⚠️ You must change your password before continuing." new_password: "New password" current_password: "Current password" current_password_placeholder: "Your current password" new_password_placeholder: "Secure new password" required: "Required" requirements: "📌 Requirements: 8+ characters, uppercase, lowercase, digit, special character" strength: "Password strength:" strength_weak: "Weak" strength_medium: "Medium" strength_strong: "Strong ✓" strength_too_short: "too short" strength_missing_lowercase: "missing lowercase" strength_missing_uppercase: "missing uppercase" strength_missing_digit: "missing digit" strength_missing_special: "missing special character" confirm_password: "Confirm new password" confirm_password_placeholder: "Repeat the new password" passwords_match: "✓ Passwords match" passwords_not_match: "✗ Passwords do not match" change_button: "Change password" changing: "Changing..." logout_warning_title: "Logout from other sessions" logout_warning_desc: "All your other active sessions will be automatically logged out after the password change. Only your current session will remain active." save: "Save new password" saving: "Saving..." saved: "A confirmation email has been sent to your address. Click the link in the email to validate the password change." saved_direct: "Password changed successfully! Your other sessions have been logged out." error: "Error changing password" error_all_fields_required: "All fields are required." error_empty_data: "The data to send is empty." error_invalid_data: "Invalid data. Check that all fields are filled." error_incorrect_current: "Current password is incorrect." error_reading_response: "Error reading server response" error_415: "Error 415: The server did not receive the data in the expected JSON format. Please try again." network_error: "Network error. Please try again." security_tips_title: "Security Tips" security_tip_unique: "Use a unique password that you don't use elsewhere" security_tip_share: "Never share your password with anyone" security_tip_regular: "Change your password regularly (every 3-6 months)" security_tip_2fa: "Enable two-factor authentication if available" security_tip_manager: "Use a password manager for better security" pending_request_message: "⚠️ A password change request is pending email confirmation." pending_request_info: "A confirmation email has been sent to your address. Click the link in the email to confirm the change." pending_request_cancel: "Cancel pending request" pending_request_canceled: "Request canceled successfully" pending_request_cancel_error: "Error canceling the request" confirmation_sent: "Confirmation email sent! Check your inbox." confirmation_error: "Error sending confirmation email" # Sessions sessions: title: "Active sessions" page_title: "Active sessions" subtitle: "Manage devices connected to your account" current_session: "Current session" current_badge: "Current" unknown_device: "Unknown device" ip_address: "IP Address:" created_at: "Created on:" last_activity: "Last activity:" session_id: "Session ID:" revoke: "Revoke" revoke_confirm: "Are you sure you want to revoke the session for \"{device}\"?\n\nThis device will be disconnected immediately." revoke_success: "Session revoked successfully!" revoke_error: "Error revoking session" no_sessions: "No active sessions" no_sessions_desc: "You currently have no active sessions" danger_zone: "Danger Zone" danger_zone_desc: "Disconnect all other devices in one action (your current session will remain active)." revoke_all: "Revoke all other sessions" revoke_all_confirm: "⚠️ WARNING\n\nAre you sure you want to revoke ALL your other sessions?\n\nAll your other devices will be disconnected. Only your current session will remain active." revoke_all_success: "All other sessions have been revoked!" revoke_all_error: "Error revoking. Some sessions may not have been revoked." about_title: "About sessions" about_desc: "A session is created each time you log in from a different device or browser. Revoking a session immediately disconnects that device. Your current session cannot be revoked from this page (log out to do that)." back_to_settings: "Back to settings" # Navigation menu (navbar) nav: home: "Home" settings: "Settings" admin: "Administration" # User menu user_menu: profile: "Profile" logout: "Logout" settings: "Settings" # ActivityPub federation - RFC 0021 admin foundations fediverse: settings: title: "Federation settings" breadcrumb: "Federation" heading: "ActivityPub federation settings" subtitle: "Enable and configure federation with other Rustwarden instances and ActivityPub-compatible servers. Experimental feature." card_activation: "Activation" card_trust: "Trust" card_interop: "Interoperability" card_security: "Advanced security" enabled_label: "Enable ActivityPub federation (experimental)" enabled_desc: "When disabled, /admin/fediverse/* routes other than this page return 404." trust_mode_label: "Trust mode" trust_mode_allowlist: "Allowlist (zero-trust, recommended)" trust_mode_open: "Open with blocklist (Mastodon-style)" interop_scope_label: "Interoperability scope" interop_scope_rustwarden_only: "Rustwarden only (politely refuse other instances)" interop_scope_rustwarden_plus: "Rustwarden + universal read" interop_scope_open: "Open (any ActivityPub instance)" authorized_fetch_label: "Authorized-fetch" authorized_fetch_desc: "Require an HTTP signature to fetch a remote actor. Enable after audit." save_button: "Save" saved_toast: "Settings saved." trust: title: "Trusted domains" breadcrumb: "Trust" heading: "Federation trust list" subtitle: "Manage domains accepted or blocked for ActivityPub federation. The active mode (allowlist or blocklist) is set on the Federation settings page." mode_allowlist: "Allowlist mode (zero-trust)" mode_blocklist: "Blocklist mode (Mastodon-style)" add_legend: "Add a domain" domain_label: "Domain" domain_placeholder: "example.tld" note_label: "Note (optional)" reason_label: "Block reason (optional)" severity_label: "Severity" severity_suspend: "Suspend (full reject)" severity_silence: "Silence (quiet filtering)" severity_reject_auth: "Reject auth only" add_button: "Add" table_domain: "Domain" table_note_or_reason: "Note / Reason" table_severity: "Severity" table_created_at: "Added on" table_actions: "Actions" delete_button: "Delete" delete_confirm_title: "Confirm deletion" delete_confirm_body: "This action is irreversible. The domain below will be removed from the active list." modal_cancel: "Cancel" modal_confirm: "Confirm deletion" empty_title: "Empty list" empty_body: "No domain is configured. Add one to start federating." saved_toast: "List updated." auth: error: page_title: "Federated authentication error" subtitle: "An error occurred during ActivityPub authentication." back_to_login: "Back to login" timeout: title: "Request timed out" body: "Your origin instance did not respond in time. Make sure it is reachable and try again shortly." rejected: title: "Request rejected" body: "Your origin instance rejected the authentication request. If you did not initiate this attempt, you can safely ignore it." untrusted: title: "Untrusted domain" body: "Your identity's domain is not in this instance's trust list. Contact the administrator if you believe this is a mistake." invalid_signature: title: "Invalid signature" body: "Your origin instance's signature could not be verified. This may indicate a misconfiguration or a malicious attempt." unknown: title: "Unknown error" body: "An unexpected error occurred. Try again or contact the administrator if the problem persists." login: page_title: "ActivityPub login" subtitle: "Sign in with an identity hosted on another federated instance." heading: "Sign in with an ActivityPub identity" field_label: "Identity" field_placeholder: "@user@instance.tld" field_help: "Mastodon format: @ followed by the username, then @, then the instance domain." submit: "Continue" back_to_login: "Back to the classic login" waiting: page_title: "Signing you in" subtitle: "Hang tight while your origin instance approves the request." heading: "Signing you in…" explainer: "Your origin instance needs to confirm your identity. This page will update automatically as soon as a response arrives (up to 5 minutes)." cancel: "Cancel" consent: page_title: "Confirm a federated sign-in" heading: "An instance is requesting authentication" explainer: "A federated instance wants to authenticate you on its side. Verify the domain and identity below before approving." label_requester: "Requesting domain" label_handle: "Identity at stake" approve: "Approve" reject: "Reject" already_decided: "This request has already been handled." queue: title: "Federation outbound queue" breadcrumb: "Outbound queue" heading: "Outbound deliveries" subtitle: "Dashboard of ActivityPub activities to dispatch to remote instances. Last 100 rows displayed." stats_pending: "Pending" stats_delivered: "Delivered" stats_failed: "Failed" stats_dead: "Dead" table_activity: "Activity" table_target: "Target" table_status: "Status" table_attempts: "Attempts" table_last_error: "Last error" table_next_retry: "Next retry" table_created_at: "Created at" empty_title: "Empty queue" empty_body: "No outbound activity. The worker is healthy or federation has not produced activity yet." sessions_remote: title: "Remote sessions" breadcrumb: "Remote sessions" heading: "Active remote sessions" subtitle: "Federated identities that contacted this instance and are not disabled. Revoke = mark as disabled (matching remote JWT sessions will be rejected)." kill_switch_legend: "Kill switch by domain" kill_switch_label: "Disable all identities from a domain" kill_switch_button: "Kill domain" kill_switch_confirm_title: "Confirm kill switch" kill_switch_confirm_body: "All federated identities for the domain below will be marked as disabled. This action is irreversible from the UI (a new federated login will recreate the row)." table_handle: "Handle" table_display_name: "Display name" table_domain: "Domain" table_last_seen: "Last seen" table_actions: "Actions" revoke_button: "Revoke" revoke_confirm_title: "Confirm revocation" revoke_confirm_body: "This identity will be marked as disabled. The next remote JWT check will reject it." modal_cancel: "Cancel" modal_confirm: "Confirm" empty_title: "No remote sessions" empty_body: "No federated identity has contacted this instance yet, or all have been disabled." saved_toast: "Action completed." admin: tabs: settings: "Settings" trust_list: "Trust list" queue: "Outbound queue" sessions_remote: "Remote sessions" nodeinfo: "NodeInfo" invites: "Invitations" hub: title: "ActivityPub Federation" subtitle: "Centralized control panel to drive federation with other Rustwarden and ActivityPub-compatible instances." card: settings: title: "Settings" desc: "Enable federation, choose the trust mode, the interop scope and the authorized-fetch." trust_list: title: "Trust list" desc: "Manage accepted (allowlist) or blocked (blocklist) domains." queue: title: "Outbound queue" desc: "Operator dashboard for the outbound delivery queue (RFC 0011 + RFC 0019)." sessions_remote: title: "Remote sessions" desc: "Active federated identities, kill switch per identity or per domain." nodeinfo: title: "NodeInfo" desc: "Humanized statistics for the federated instance (NodeInfo 2.1)." invites: title: "Invitations" desc: "Invite a remote account to join a team (per-team view)." teams_for_invites: title: "Pick a team to manage its invitations" breadcrumb: "Invitations" heading: "Federated invitations per team" subtitle: "Pick a team to view and create invitations targeting remote accounts." empty_title: "No team" empty_body: "Create a team first so you can invite federated accounts to it." # Common (RFC 0024 Slice C iter. 3) common: yes: "Yes" no: "No" # NodeInfo stats (RFC 0024 Slice C iter. 3). Kept top-level dedicated # namespace to avoid re-opening `fediverse:` (which would shadow # settings/trust/auth/queue/sessions_remote under yaml-rust2). fediverse_nodeinfo: title: "NodeInfo - Federation stats" breadcrumb: "NodeInfo" heading: "NodeInfo - Humanised stats" subtitle: "Overview of runtime configuration + stats for local users and remote identities." card_software: "Software" card_runtime: "Runtime configuration" card_users: "Local users" card_remotes: "Remote identities" label_name: "Name" label_version: "Version" label_domain: "Domain" label_enabled: "Federation enabled" label_trust_mode: "Trust mode" label_interop_scope: "Interop scope" label_authorized_fetch: "Authorized-fetch" label_users_total: "Total" label_users_active_month: "Active 30d" label_users_active_halfyear: "Active 180d" label_remote_identities_active: "Active" label_remote_distinct_domains: "Distinct domains" # Cross-instance team invitations (RFC 0024 Slice C iter. 4). fediverse_invites: title: "Federated team invitations" breadcrumb: "Invitations" heading: "Cross-instance invitations" subtitle: "Invite an ActivityPub identity to join the team:" add_legend: "Invite by handle" handle_label: "User handle" handle_placeholder: "@user@instance.tld" role_label: "Role" role_member: "Member" role_admin: "Administrator" role_owner: "Owner" add_button: "Send invitation" table_handle: "Invited handle" table_role: "Role" table_status: "Status" table_created_at: "Sent at" table_actions: "Actions" revoke_button: "Revoke" revoke_confirm_title: "Confirm revocation" revoke_confirm_body: "The invitation will be cancelled. If already accepted, the identity will be removed from the team via the Revoke{Membership} signal (RFC 0010)." modal_cancel: "Cancel" modal_confirm: "Confirm" empty_title: "No invitations" empty_body: "No invitation has been sent for this team yet." saved_toast: "Action completed." # Connected federated apps (RFC 0024 Slice C iter. 5). fediverse_connected_apps: page_title: "Connected federated apps" heading: "My connected federated apps" subtitle: "ActivityPub instances where you authenticated using your identity on this server." table_domain: "Instance" table_count: "Sessions" table_last_seen: "Last activity" empty_title: "No federated apps" empty_body: "You have not approved any federated authentication to another instance yet." revoke_note: "Note: manual revocation of a remote session from this page will be available with RFC 0006 Phase 2 (remote JWT blacklisting). Meanwhile, ask the admin via /admin/fediverse/sessions_remote or wait for the JWT to expire naturally." back_to_profile: "Back to profile" # Cross-instance team invitation acceptance (RFC 0024 Slice C iter. 6). fediverse_invite_landing: page_title: "Team invitation" heading: "You received an invitation" explainer: "A team from another federated instance invites you to join. Verify the details below before responding." team_label: "Team" role_label: "Proposed role" status_label: "Status" accept_button: "Accept" reject_button: "Reject" already_decided: "This invitation has already been handled." cannot_accept_note: "To accept, you must be signed in via a federated identity (login from your origin instance). You can reject from this local account, but accepting goes through the AP-native flow." # 404 page (unknown route) http_errors: not_found_title: "Page not found" not_found_message: "This address does not match any page." code_label: "Error 404" home: "Back to home" login: "Sign in" analytics: opt_out: hint: 'You can object to audience measurement at any time. Your choice is stored in your browser and takes effect on the next page load.' opt_out_label: 'Opt out of audience measurement' opt_in_label: 'Re-enable audience measurement' opted_out_badge: 'You are opted out'
GitRust