{
"forms": {
"upload_dir_error": "Error creating upload directory",
"file_create_error": "Error creating file",
"multipart_stream_error": "Multipart stream error",
"file_write_error": "Error writing file",
"required": "This field is required",
"too_short": "Too short (min {})",
"too_long": "Too long (max {})",
"email_invalid": "Invalid email address format",
"url_invalid": "Please enter a valid URL",
"phone_invalid": "Invalid phone number (digits, +, spaces, dashes allowed, 7-15 digits)",
"hash_error": "Hashing error: {}",
"password_empty": "Password cannot be empty",
"filter_invalid_value": "The static/media filter received an invalid value ({}) instead of a file path.",
"number_invalid": "Invalid number",
"number_required": "Required",
"integer_required": "Must be an integer",
"decimal_required": "Must be decimal format",
"min_value": "Min {} required",
"max_value": "Max {} exceeded",
"precision_max": "Max {} decimal places",
"precision_min": "Min {} decimal places",
"color_invalid": "Invalid color (format: #RRGGBB or #RGB)",
"color_no_hash": "Color must start with #",
"color_bad_hex": "Contains non-hexadecimal characters",
"slug_invalid": "Invalid slug",
"slug_no_dash": "Slug must not start or end with dash",
"uuid_invalid": "Invalid UUID format (expected: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)",
"json_invalid": "Invalid JSON: {}",
"ipv4_only": "Only IPv4 addresses accepted",
"ipv6_only": "Only IPv6 addresses accepted",
"ip_invalid": "Invalid IP address",
"date_invalid": "Invalid date format",
"date_too_old": "Too old (min: {})",
"date_too_far": "Too far (max: {})",
"time_invalid": "Invalid time format",
"file_required": "Please select at least one file",
"file_extension_blocked": "File '{}' not allowed. Extensions: {}",
"finalize_error": "Error finalizing field '{}': {}",
"template_missing": "Missing template: {}",
"render_js_error": "JS render error: {}",
"tera_not_configured": "Tera not configured",
"config_not_found": "Config not found in extensions",
"hint_slug": "Format: letters-digits-hyphens",
"hint_uuid": "Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"hint_json": "Valid JSON format required",
"hint_ip_v4": "Format IPv4: 192.168.1.1",
"hint_ip_v6": "Format IPv6: 2001:0db8:85a3::8a2e:0370:7334",
"hint_ip": "Format IPv4 or IPv6",
"validation_overflow": "Stack overflow detected: infinite recursion in validation",
"choice_invalid": "Invalid choice",
"choice_invalid_value": "Invalid choice: {}",
"select_required": "Please select an option",
"checkbox_required": "Please select at least one option",
"multipart_error": "Multipart error",
"body_error": "Body read error",
"aegis_query_error": "Failed to parse query string: {}",
"aegis_urlencoded_error": "Failed to parse urlencoded body: {}",
"aegis_json_error": "Failed to parse JSON body: {}",
"auth_required": "Authentication required",
"role_insufficient": "Insufficient role",
"time_too_old": "Too early (min: {})",
"time_too_far": "Too late (max: {})",
"datetime_too_old": "Too early (min: {})",
"datetime_too_far": "Too late (max: {})",
"duration_invalid": "Invalid duration (expected: number of seconds)",
"duration_too_short": "Min {} seconds required",
"duration_too_long": "Max {} seconds exceeded",
"file_max_count": "Max {} files allowed",
"file_too_large": "File '{}' too large ({}MB > {}MB max)",
"file_invalid_image": "File '{}' is not a valid image",
"image_too_wide": "Image '{}' too wide ({}px > {}px)",
"image_too_tall": "Image '{}' too tall ({}px > {}px)",
"boolean_required": "You must accept this field",
"slug_unicode_invalid": "Only letters, digits, hyphens and underscores allowed",
"unique_field_taken": "This {} is already taken.",
"unique_value_taken": "Field '{}' value is already taken.",
"unique_constraint_violated": "A uniqueness constraint was violated.",
"db_error": "DB error: {}",
"text_field_too_large": "Text field too large (max 1 MB)",
"upload_too_large": "File upload too large (max {}MB)"
},
"csrf": {
"missing": "CSRF token missing",
"invalid": "Invalid CSRF token",
"invalid_or_missing": "Invalid or missing CSRF token",
"forbidden": "Invalid CSRF token",
"session_write_error": "Session write error"
},
"error": {
"source": "Source: {}",
"AppError": "Application error",
"build": "Build error: {}",
"internal": "Internal error",
"forbidden": "Access forbidden",
"not_found": "Resource not found",
"validation": "Validation error: {}",
"database": "Database error: {}",
"io": "IO error: {}",
"template": "Template error: {}",
"custom": "Custom error: {}",
"title": {
"not_found": "Page Not Found",
"forbidden": "Access Forbidden",
"validation": "Validation Error",
"database": "Database Error",
"template": "Template Rendering Error",
"internal": "Internal Server Error"
},
"path_not_found": "The requested path '{}' was not found",
"internal_occurred": "An internal error occurred",
"context_occurred": "AppError occurred"
},
"title": {
"template": "Template error in '{}'"
},
"build": {
"subscriber_already_installed": "A tracing subscriber is already installed; Runique log configuration is inactive (RUST_LOG / with_log have no effect)",
"external_outputs_ignored": "`with_log(|l| l.external())` is set; configured log outputs are ignored (the application owns the subscriber)",
"validation_failed": "Build validation failed: {}",
"check_failed": "Build failed with {} check error(s)",
"template_failed": "Template loading failed: {}",
"db_missing": "Database connection required when 'orm' feature is enabled",
"component_not_ready": "Component '{}' is not ready"
},
"server": {
"operational": "Runique is operational",
"launched": "Server launched on {}",
"connected_db": "Connected to database {} -> {}",
"stop_hint": "ctrl + c to stop",
"shutting_down": "Shutting down Runique server...",
"acme_not_compiled": "ACME_ENABLED=true but the `acme` feature is not compiled in.",
"acme_add_feature": "Add the `acme` feature to your Cargo.toml."
},
"middleware": {
"host_invalid": "Invalid host: '{}' (Allowed: {})",
"host_debug": "Invalid Host: '{}'. Add it to RUNIQUE_ALLOWED_HOSTS.",
"bad_request": "Bad Request"
},
"html": {
"404_title": "404",
"404_text": "Page not found",
"500_title": "500",
"500_text": "Internal server error",
"500_notice": "Our teams have been notified and are working on it.",
"429_title": "429",
"429_text": "Too many requests. Please wait a moment before trying again.",
"back_home": "Back to home",
"critical_error_title": "Critical Error",
"critical_error_text": "The error handling system itself encountered an error.",
"critical_error_contact": "This should never happen. Please contact the system administrator."
},
"debug": {
"stack_trace_title": "Detailed error trace",
"stack_trace_tip": "The highest error (level 0) is usually the root cause. Following errors show how the error propagated through the code."
},
"flash": {
"welcome": "Welcome {}, your account has been created!",
"fix_errors": "Please correct the errors",
"success_demo": "This is a success message.",
"info_demo": "This is an info message.",
"warning_demo": "This is a warning message.",
"error_demo": "This is an error message."
},
"log": {
"db_connecting": "Connecting to {} database...",
"db_connected": "Database connected successfully ({})",
"db_failed": "Database connection failed",
"db_engine": "Engine: {}",
"template_render_error": "Template rendering error",
"error_handler": "Critical error occurred",
"error_handled": "Handled error",
"files_count": "add files JS to form",
"js_file_skip": "Skipping JS file",
"already_initialized": "Logger already initialized"
},
"cli": {
"creating_project": "Creating project '{}'...",
"admin_detected": "Admin detected → starting the daemon",
"add_admin_hint": "Add .with_admin(...) in your builder to enable the AdminPanel.",
"daemon_error": "[Daemon] Error: {}",
"cargo_run_failed": "Application server failed to start correctly (cargo run)",
"file_not_found": "File not found: {}\\nMake sure you're at the root of your Runique project.",
"admin_not_found": "Admin file not found: {}\\nCreate src/admin.rs with admin!{{}} macro.",
"name_empty": "The project name cannot be empty",
"name_invalid": "The project name must contain only letters, numbers, _ or -",
"name_dash": "The project name cannot start with -",
"folder_exists": "The folder '{}' already exists",
"cargo_run_expect": "Failed to launch cargo run",
"project_created": "Project '{}' created successfully!",
"getting_started": "To get started:",
"cd_hint": "cd {}",
"cargo_run_hint": "cargo run"
},
"daemon": {
"modification_detected": "Modification detected → regeneration...",
"unable_read": "Unable to read: {}",
"parse_error": "Parsing error: {}",
"no_resource": "No resource in admin!{{}} — nothing to generate",
"with_admin_disabled": "with_admin disabled → daemon stopped",
"operational": "Daemon operational → src/admin/generated.rs",
"generation_error": "Generation error: {}",
"watcher_error": "Watcher error: {}",
"unable_create": "Unable to create watcher: {}",
"unable_watch": "Unable to watch {}: {}"
},
"macro": {
"named_fields_only": "Named fields structs only",
"structs_only": "Works only on structs",
"forms_field_required": "Struct '{}' must have a 'Forms' field",
"field_no_name": "Field without name",
"model_form_named_only": "DeriveModelForm: structs with named fields only",
"model_form_structs_only": "DeriveModelForm: structs only"
},
"parser": {
"string_expected": "Expected string literal, found: {}",
"string_eof": "Expected string literal, end of file",
"array_expected": "Expected [...] for permissions, found: {}",
"array_eof": "Expected [...] for permissions, end of file",
"role_required": "At least one role required in permissions: [...]",
"punct_expected": "Expected '{}', found: {}",
"punct_eof": "Expected '{}', end of file",
"title_required": "admin!: 'title' is required",
"permissions_required": "admin!: 'permissions' is required",
"list_display_exclude_exclusive": "admin!: 'list_display' and 'list_exclude' are mutually exclusive"
},
"TemplateMessage": {
"debug_info_title": "Debug Information",
"debug_field_title": "Title",
"debug_field_count": "Field Count",
"debug_error_count": "Errors",
"debug_main_message": "Main Message",
"debug_root_cause": "Root Cause",
"debug_details": "Additional Details",
"debug_request_info": "Request Information",
"debug_http_method": "HTTP Method",
"debug_path": "Path",
"debug_query_params": "Query Parameters",
"debug_http_headers": "HTTP Headers",
"debug_template_info": "Template Information",
"debug_template_name": "Template Name",
"debug_error_line": "Error Line",
"debug_template_source": "Template Source Code",
"debug_available_templates": "Available Templates",
"debug_stack_trace_title": "Detailed Error Trace",
"debug_stack_trace_tip": "The topmost error (level 0) is usually the root cause. Subsequent errors show how the error propagated through the code.",
"debug_environment": "Environment",
"debug_debug_mode": "Debug Mode",
"debug_enabled": "Enabled",
"debug_disabled": "Disabled",
"debug_rust_version": "Rust Version",
"debug_app_version": "App Version",
"debug_status_code": "Status Code",
"debug_header_name": "Name",
"debug_header_value": "Value"
},
"admin": {
"group": "Group",
"groups": "Groups",
"resource": "Resource",
"resources": "Resources",
"can_create": "Create",
"can_read": "Read",
"can_update": "Update",
"can_delete": "Delete",
"can_update_own": "Update",
"can_delete_own": "Delete",
"name": "Name",
"username": "Username",
"email": "Email",
"staff": "Staff",
"superuser": "Superuser",
"active": "Active",
"user": {
"username_too_short": "Username is too short (min 3 chars)",
"invalid_email": "Invalid email address format"
},
"login": {
"title": "Login",
"subtitle": "Sign in to access the admin panel",
"label_username": "Username",
"label_password": "Password",
"btn_submit": "Sign in",
"error_session": "Error while opening session.",
"error_credentials": "Incorrect credentials or insufficient rights.",
"error_locked": "Too many attempts. Account temporarily locked. Try again in {} seconds."
},
"logout": {
"success": "Successfully logged out."
},
"access": {
"no_auth_handler": "No authentication handler configured. Call .auth(MyAuth) on AdminConfig.",
"insufficient_rights": "Insufficient rights to access administration"
},
"dashboard": {
"title": "Dashboard",
"subtitle": "Application overview",
"card_resources": "Resources",
"th_resource": "Resource",
"th_key": "Key",
"th_permissions": "Permissions",
"th_actions": "Actions",
"btn_list": "List",
"btn_create": "Create",
"empty_title": "No resources registered",
"empty_desc": "Declare your resources in src/admin.rs with the admin!{{}} macro then run runique start"
},
"list": {
"breadcrumb_admin": "Administration",
"entries_count_one": "entry",
"entries_count_many": "entries",
"btn_create": "Create",
"th_id": "id",
"th_actions": "Actions",
"bool_true": "Yes",
"bool_false": "No",
"btn_detail": "Detail",
"btn_edit": "Edit",
"btn_delete": "Delete",
"confirm_delete": "Really delete?",
"empty_title": "No entries",
"empty_desc": "Start by creating an item.",
"btn_create_first": "Create the first",
"search_placeholder": "Search..."
},
"create": {
"title": "Create",
"breadcrumb": "Create",
"card_info": "Information",
"no_fields": "No fields available at the moment.",
"btn_cancel": "Cancel",
"btn_submit": "Create",
"success": "Entry created successfully!"
},
"edit": {
"title": "Edit",
"breadcrumb": "Edit",
"card_info": "Information",
"no_fields": "No fields available at the moment.",
"btn_cancel": "Cancel",
"btn_submit": "Save",
"success": "Entry updated successfully!"
},
"detail": {
"title": "Detail",
"breadcrumb": "Detail",
"entry_label": "Entry",
"btn_list": "← List",
"btn_edit": "Edit",
"btn_delete": "Delete",
"confirm_delete": "Delete this entry?"
},
"reset_password": {
"btn": "Reset password",
"success_email": "Reset link sent to {}.",
"success_link": "Reset link (mailer not configured): {}",
"error_no_email": "No email field found for this user.",
"error_send": "Error sending email: {}",
"email_subject": "Reset your password",
"email_title": "Password reset",
"email_greeting": "Hello,",
"email_body": "Click the link below to reset your password (valid for 1 hour):",
"email_btn": "Reset my password",
"email_ignore": "If you did not request this reset, ignore this message."
},
"user_created": {
"email_subject": "Welcome — set your password",
"email_sent": "Welcome email sent to {}.",
"email_greeting": "Welcome,",
"email_body": "An account has been created for you. Click the link below to set your password:",
"email_btn": "Set my password",
"email_validity": "This link is valid for 1 hour. If you were not expecting this message, ignore it."
},
"delete": {
"title": "Delete",
"breadcrumb": "Delete",
"heading": "Confirm deletion",
"btn_cancel": "← Cancel",
"success": "Entry deleted successfully!",
"btn_confirm": "Yes, delete permanently",
"warning": {
"title": "Warning!",
"desc": "You are about to delete the entry",
"of": "from resource",
"irreversible": "This action is irreversible."
},
"not_found": "Resource not found."
},
"bulk": {
"no_selection": "No items selected.",
"no_field_selected": "No field changed.",
"delete_success": "item(s) deleted.",
"update_success": "item(s) updated."
},
"base": {
"title": "Administration",
"breadcrumb": "Admin",
"toggle": "Collapse menu",
"logout_title": "Logout"
},
"superuser_wizard": {
"title": "=== Create Superuser ===",
"algo_prompt": "[1/5] Hashing algorithm",
"algo_argon2": "Argon2 (recommended)",
"algo_bcrypt": "Bcrypt",
"algo_scrypt": "Scrypt",
"algo_custom": "Custom provider",
"provider_path": "Provider path",
"invalid_path": "Invalid path.",
"username_prompt": "[2/5] Username",
"username_empty": "Username cannot be empty.",
"username_taken": "A user with this name already exists.",
"email_prompt": "[3/5] Email",
"email_invalid": "Invalid email.",
"email_taken": "A user with this email already exists.",
"password_prompt": "[4/5] Password",
"password_too_short": "Password must be at least 10 characters.",
"confirm_prompt": "[5/5] Confirm password",
"password_mismatch": "Passwords do not match. Please try again.",
"review_algo": " Algorithm : {}",
"review_username": " Username : {}",
"review_email": " Email : {}",
"review_password": " Password : ••••••••",
"review_action": "Action",
"confirm_create": "Confirm and create",
"change_algo": "Change algorithm",
"modify_password": "Modify password",
"success": "✓ Superuser created successfully!",
"id_line": " ID : {}",
"username_line": " Username : {}",
"email_line": " Email : {}"
},
"builtin": {
"invalid_id": "Invalid identifier.",
"droit_resource_required": "Please select at least one resource.",
"droit_exists": "The right \"{}\" already exists for this group.",
"groupe_exists": "A group named \"{}\" already exists.",
"user_username_exists": "The username \"{}\" is already taken.",
"user_email_exists": "The email address \"{}\" is already registered."
}
},
"reset": {
"forgot_title": "Forgot password",
"reset_title": "New password",
"success_title": "Password reset",
"email_label": "Email address",
"new_password_label": "New password",
"confirm_label": "Confirm password",
"email_mismatch": "The email address does not match the link.",
"invalid_link": "Invalid link.",
"invalid_or_expired": "Reset link is invalid or expired.",
"password_min_length": "Password must be at least {} characters.",
"password_mismatch": "Passwords do not match.",
"check_inbox": "If this address is associated with an account, you will receive a reset email.",
"email_subject": "Password reset request",
"email_body": "<p>Hello {},</p><p>Click the link below to reset your password (valid for 1 hour):</p><p><a href=\"{}\">{}</a></p>"
},
"makemigrations": {
"scanning": "Scanning entities in '{}'...",
"found_schema": "-> Found schema: {}",
"found_extend": "-> Found framework table extension: {}",
"no_schema": "No schema() functions found in '{}'.",
"schema_count": "Found {} schema(s).",
"updated_lib": "Updated {}",
"no_changes": "No changes detected. Your schema is up to date.",
"destructive_detected": "Destructive changes detected:",
"destructive_require_force": "Use --force to apply these destructive changes.",
"generated": "Generated: {}",
"snapshot_updated": "Updated snapshot: {}",
"seaorm_alter": "SeaORM ALTER migration generated: {}",
"batch_up": "Generated batch up: {}",
"batch_down": "Generated batch down: {}",
"apply_hint": "Run 'sea-orm-cli migrate up' to apply.",
"extend_unknown_table": "extend!{{}} : \"{}\" is not a known framework table. Allowed tables: {}. To extend an app table, modify its model!{{}} directly.",
"extend_invalid_syntax": "extend!{{}} : invalid syntax. Expected: table: \"table_name\", fields: {{ ... }}",
"admin_positioned": "AdminTableMigration positioned after '{}' migration",
"files_ready": "{} file(s) ready to migrate."
},
"migrate": {
"applying": "Applying migrations from '{}'...",
"run_hint": "Run: sea-orm-cli migrate up",
"complete_up": "Migration complete.",
"complete": "Rollback complete.",
"available_for": "Available rollback files for '{}':",
"rolling_back_batch": "Rolling back batch: {}",
"done": "Done: {}",
"rolling_back": "Rolling back: {}",
"no_applied_dir": "No applied/ directory found.",
"by_time_header": "by_time (full batches):",
"none_available": "No rollback files available.",
"usage": "Usage:",
"usage_files": "runique migration down --files <table/timestamp> [<table/timestamp> ...]",
"usage_batch": "runique migration down --batch <timestamp>",
"no_down": "No down statements found.",
"executing": "Executing: {}"
},
"permission": {
"col.id": "ID",
"col.can_create": "Create",
"col.can_delete": "Delete",
"col.can_delete_own": "Delete (own)",
"col.can_read": "Read",
"col.can_update": "Update",
"col.can_update_own": "Update (own)",
"col.groupes": "Groups",
"col.resource_key": "Resource",
"col.actions": "Actions"
}
}