[add] i18n support zh,en
This commit is contained in:
26
api/app/locales/en/README.md
Normal file
26
api/app/locales/en/README.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# English Translation Files
|
||||
|
||||
This directory contains English translation files.
|
||||
|
||||
## File Structure
|
||||
|
||||
- `common.json` - Common translations (success messages, actions, validation)
|
||||
- `auth.json` - Authentication module translations
|
||||
- `workspace.json` - Workspace module translations
|
||||
- `tenant.json` - Tenant module translations
|
||||
- `errors.json` - Error message translations
|
||||
- `enums.json` - Enum value translations
|
||||
|
||||
## Translation File Format
|
||||
|
||||
All translation files use JSON format and support nested structures.
|
||||
|
||||
Example:
|
||||
```json
|
||||
{
|
||||
"success": {
|
||||
"created": "Created successfully",
|
||||
"updated": "Updated successfully"
|
||||
}
|
||||
}
|
||||
```
|
||||
55
api/app/locales/en/auth.json
Normal file
55
api/app/locales/en/auth.json
Normal file
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"login": {
|
||||
"success": "Login successful",
|
||||
"failed": "Login failed",
|
||||
"invalid_credentials": "Invalid username or password",
|
||||
"account_locked": "Account has been locked",
|
||||
"account_disabled": "Account has been disabled"
|
||||
},
|
||||
"logout": {
|
||||
"success": "Logout successful",
|
||||
"failed": "Logout failed"
|
||||
},
|
||||
"token": {
|
||||
"refresh_success": "Token refreshed successfully",
|
||||
"invalid": "Invalid token",
|
||||
"expired": "Token has expired",
|
||||
"blacklisted": "Token has been invalidated",
|
||||
"invalid_refresh_token": "Invalid refresh token",
|
||||
"refresh_token_blacklisted": "Refresh token has been invalidated"
|
||||
},
|
||||
"registration": {
|
||||
"success": "Registration successful",
|
||||
"failed": "Registration failed",
|
||||
"email_exists": "Email already in use",
|
||||
"username_exists": "Username already taken"
|
||||
},
|
||||
"password": {
|
||||
"reset_success": "Password reset successful",
|
||||
"reset_failed": "Password reset failed",
|
||||
"change_success": "Password changed successfully",
|
||||
"change_failed": "Password change failed",
|
||||
"incorrect": "Incorrect password",
|
||||
"too_weak": "Password is too weak",
|
||||
"mismatch": "Passwords do not match"
|
||||
},
|
||||
"invite": {
|
||||
"invalid": "Invalid or expired invite code",
|
||||
"email_mismatch": "Invite email does not match login email",
|
||||
"accept_success": "Invite accepted successfully",
|
||||
"accept_failed": "Failed to accept invite",
|
||||
"password_verification_failed": "Failed to accept invite, password verification error",
|
||||
"bind_workspace_success": "Workspace bound successfully",
|
||||
"bind_workspace_failed": "Failed to bind workspace"
|
||||
},
|
||||
"user": {
|
||||
"not_found": "User not found",
|
||||
"already_exists": "User already exists",
|
||||
"created_with_invite": "User created successfully and joined workspace"
|
||||
},
|
||||
"session": {
|
||||
"expired": "Session expired, please login again",
|
||||
"invalid": "Invalid session",
|
||||
"single_session_enabled": "Single sign-on enabled, other device sessions will be logged out"
|
||||
}
|
||||
}
|
||||
132
api/app/locales/en/common.json
Normal file
132
api/app/locales/en/common.json
Normal file
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"success": {
|
||||
"created": "Created successfully",
|
||||
"updated": "Updated successfully",
|
||||
"deleted": "Deleted successfully",
|
||||
"retrieved": "Retrieved successfully",
|
||||
"saved": "Saved successfully",
|
||||
"uploaded": "Uploaded successfully",
|
||||
"downloaded": "Downloaded successfully",
|
||||
"sent": "Sent successfully",
|
||||
"completed": "Completed",
|
||||
"confirmed": "Confirmed",
|
||||
"cancelled": "Cancelled",
|
||||
"archived": "Archived",
|
||||
"restored": "Restored"
|
||||
},
|
||||
"actions": {
|
||||
"create": "Create",
|
||||
"update": "Update",
|
||||
"delete": "Delete",
|
||||
"view": "View",
|
||||
"edit": "Edit",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"submit": "Submit",
|
||||
"upload": "Upload",
|
||||
"download": "Download",
|
||||
"send": "Send",
|
||||
"search": "Search",
|
||||
"filter": "Filter",
|
||||
"sort": "Sort",
|
||||
"export": "Export",
|
||||
"import": "Import",
|
||||
"refresh": "Refresh",
|
||||
"reset": "Reset",
|
||||
"back": "Back",
|
||||
"next": "Next",
|
||||
"previous": "Previous",
|
||||
"finish": "Finish",
|
||||
"close": "Close",
|
||||
"open": "Open",
|
||||
"archive": "Archive",
|
||||
"restore": "Restore",
|
||||
"duplicate": "Duplicate",
|
||||
"share": "Share",
|
||||
"invite": "Invite",
|
||||
"remove": "Remove",
|
||||
"add": "Add",
|
||||
"select": "Select",
|
||||
"clear": "Clear"
|
||||
},
|
||||
"validation": {
|
||||
"required": "{field} is required",
|
||||
"invalid_format": "{field} format is invalid",
|
||||
"too_long": "{field} cannot exceed {max} characters",
|
||||
"too_short": "{field} must be at least {min} characters",
|
||||
"invalid_email": "Invalid email format",
|
||||
"invalid_url": "Invalid URL format",
|
||||
"invalid_phone": "Invalid phone number format",
|
||||
"invalid_date": "Invalid date format",
|
||||
"invalid_number": "Must be a valid number",
|
||||
"out_of_range": "{field} must be between {min} and {max}",
|
||||
"already_exists": "{field} already exists",
|
||||
"not_found": "{field} not found",
|
||||
"invalid_value": "Invalid value for {field}",
|
||||
"password_mismatch": "Passwords do not match",
|
||||
"weak_password": "Password is too weak, please use a stronger password",
|
||||
"invalid_credentials": "Invalid username or password",
|
||||
"unauthorized": "Unauthorized access",
|
||||
"forbidden": "Permission denied",
|
||||
"expired": "{field} has expired",
|
||||
"invalid_token": "Invalid token",
|
||||
"file_too_large": "File size cannot exceed {max}",
|
||||
"invalid_file_type": "Unsupported file type",
|
||||
"duplicate": "Duplicate {field}"
|
||||
},
|
||||
"status": {
|
||||
"active": "Active",
|
||||
"inactive": "Inactive",
|
||||
"pending": "Pending",
|
||||
"processing": "Processing",
|
||||
"completed": "Completed",
|
||||
"failed": "Failed",
|
||||
"cancelled": "Cancelled",
|
||||
"archived": "Archived",
|
||||
"deleted": "Deleted",
|
||||
"draft": "Draft",
|
||||
"published": "Published",
|
||||
"suspended": "Suspended",
|
||||
"expired": "Expired"
|
||||
},
|
||||
"messages": {
|
||||
"loading": "Loading...",
|
||||
"saving": "Saving...",
|
||||
"processing": "Processing...",
|
||||
"uploading": "Uploading...",
|
||||
"downloading": "Downloading...",
|
||||
"no_data": "No data available",
|
||||
"no_results": "No results found",
|
||||
"confirm_delete": "Are you sure you want to delete? This action cannot be undone.",
|
||||
"confirm_action": "Are you sure you want to perform this action?",
|
||||
"operation_success": "Operation successful",
|
||||
"operation_failed": "Operation failed",
|
||||
"please_wait": "Please wait...",
|
||||
"try_again": "Please try again",
|
||||
"contact_support": "If the problem persists, please contact support"
|
||||
},
|
||||
"pagination": {
|
||||
"page": "Page {page}",
|
||||
"of": "of {total}",
|
||||
"items": "{total} items",
|
||||
"per_page": "{count} per page",
|
||||
"showing": "Showing {from} to {to} of {total}",
|
||||
"first": "First",
|
||||
"last": "Last",
|
||||
"next": "Next",
|
||||
"previous": "Previous"
|
||||
},
|
||||
"time": {
|
||||
"just_now": "Just now",
|
||||
"minutes_ago": "{count} minutes ago",
|
||||
"hours_ago": "{count} hours ago",
|
||||
"days_ago": "{count} days ago",
|
||||
"weeks_ago": "{count} weeks ago",
|
||||
"months_ago": "{count} months ago",
|
||||
"years_ago": "{count} years ago",
|
||||
"today": "Today",
|
||||
"yesterday": "Yesterday",
|
||||
"tomorrow": "Tomorrow"
|
||||
}
|
||||
}
|
||||
132
api/app/locales/en/enums.json
Normal file
132
api/app/locales/en/enums.json
Normal file
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"workspace_role": {
|
||||
"owner": "Owner",
|
||||
"manager": "Manager",
|
||||
"member": "Member",
|
||||
"guest": "Guest"
|
||||
},
|
||||
"workspace_status": {
|
||||
"active": "Active",
|
||||
"inactive": "Inactive",
|
||||
"archived": "Archived",
|
||||
"suspended": "Suspended",
|
||||
"deleted": "Deleted"
|
||||
},
|
||||
"invite_status": {
|
||||
"pending": "Pending",
|
||||
"accepted": "Accepted",
|
||||
"rejected": "Rejected",
|
||||
"revoked": "Revoked",
|
||||
"expired": "Expired"
|
||||
},
|
||||
"user_status": {
|
||||
"active": "Active",
|
||||
"inactive": "Inactive",
|
||||
"suspended": "Suspended",
|
||||
"deleted": "Deleted",
|
||||
"pending": "Pending"
|
||||
},
|
||||
"tenant_status": {
|
||||
"active": "Active",
|
||||
"inactive": "Inactive",
|
||||
"suspended": "Suspended",
|
||||
"expired": "Expired",
|
||||
"trial": "Trial"
|
||||
},
|
||||
"file_status": {
|
||||
"uploading": "Uploading",
|
||||
"processing": "Processing",
|
||||
"completed": "Completed",
|
||||
"failed": "Failed",
|
||||
"deleted": "Deleted"
|
||||
},
|
||||
"task_status": {
|
||||
"pending": "Pending",
|
||||
"running": "Running",
|
||||
"completed": "Completed",
|
||||
"failed": "Failed",
|
||||
"cancelled": "Cancelled",
|
||||
"paused": "Paused"
|
||||
},
|
||||
"priority": {
|
||||
"low": "Low",
|
||||
"medium": "Medium",
|
||||
"high": "High",
|
||||
"urgent": "Urgent"
|
||||
},
|
||||
"visibility": {
|
||||
"public": "Public",
|
||||
"private": "Private",
|
||||
"internal": "Internal",
|
||||
"shared": "Shared"
|
||||
},
|
||||
"permission": {
|
||||
"read": "Read",
|
||||
"write": "Write",
|
||||
"delete": "Delete",
|
||||
"admin": "Admin",
|
||||
"owner": "Owner"
|
||||
},
|
||||
"notification_type": {
|
||||
"info": "Info",
|
||||
"warning": "Warning",
|
||||
"error": "Error",
|
||||
"success": "Success"
|
||||
},
|
||||
"language": {
|
||||
"zh": "Chinese (Simplified)",
|
||||
"en": "English",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"es": "Spanish"
|
||||
},
|
||||
"timezone": {
|
||||
"utc": "UTC",
|
||||
"asia_shanghai": "Asia/Shanghai",
|
||||
"asia_tokyo": "Asia/Tokyo",
|
||||
"america_new_york": "America/New_York",
|
||||
"europe_london": "Europe/London"
|
||||
},
|
||||
"date_format": {
|
||||
"short": "Short",
|
||||
"medium": "Medium",
|
||||
"long": "Long",
|
||||
"full": "Full"
|
||||
},
|
||||
"sort_order": {
|
||||
"asc": "Ascending",
|
||||
"desc": "Descending"
|
||||
},
|
||||
"filter_operator": {
|
||||
"equals": "Equals",
|
||||
"not_equals": "Not Equals",
|
||||
"contains": "Contains",
|
||||
"not_contains": "Not Contains",
|
||||
"starts_with": "Starts With",
|
||||
"ends_with": "Ends With",
|
||||
"greater_than": "Greater Than",
|
||||
"less_than": "Less Than",
|
||||
"greater_or_equal": "Greater or Equal",
|
||||
"less_or_equal": "Less or Equal",
|
||||
"in": "In",
|
||||
"not_in": "Not In",
|
||||
"is_null": "Is Null",
|
||||
"is_not_null": "Is Not Null"
|
||||
},
|
||||
"log_level": {
|
||||
"debug": "Debug",
|
||||
"info": "Info",
|
||||
"warning": "Warning",
|
||||
"error": "Error",
|
||||
"critical": "Critical"
|
||||
},
|
||||
"api_method": {
|
||||
"get": "GET",
|
||||
"post": "POST",
|
||||
"put": "PUT",
|
||||
"patch": "PATCH",
|
||||
"delete": "DELETE"
|
||||
}
|
||||
}
|
||||
138
api/app/locales/en/errors.json
Normal file
138
api/app/locales/en/errors.json
Normal file
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"common": {
|
||||
"internal_error": "Internal server error",
|
||||
"network_error": "Network connection error",
|
||||
"timeout": "Request timeout",
|
||||
"service_unavailable": "Service temporarily unavailable",
|
||||
"bad_request": "Bad request parameters",
|
||||
"unauthorized": "Unauthorized access",
|
||||
"forbidden": "Access forbidden",
|
||||
"not_found": "Resource not found",
|
||||
"method_not_allowed": "Method not allowed",
|
||||
"conflict": "Resource conflict",
|
||||
"too_many_requests": "Too many requests, please try again later",
|
||||
"validation_failed": "Validation failed",
|
||||
"database_error": "Database operation failed",
|
||||
"file_operation_error": "File operation failed"
|
||||
},
|
||||
"auth": {
|
||||
"invalid_credentials": "Invalid username or password",
|
||||
"token_expired": "Session expired, please login again",
|
||||
"token_invalid": "Invalid authentication token",
|
||||
"token_missing": "Authentication token missing",
|
||||
"unauthorized": "Unauthorized access",
|
||||
"forbidden": "Permission denied",
|
||||
"account_locked": "Account has been locked",
|
||||
"account_disabled": "Account has been disabled",
|
||||
"account_not_verified": "Account not verified",
|
||||
"password_incorrect": "Incorrect password",
|
||||
"password_too_weak": "Password is too weak",
|
||||
"password_expired": "Password expired, please change it",
|
||||
"email_not_verified": "Email not verified",
|
||||
"phone_not_verified": "Phone number not verified",
|
||||
"verification_code_invalid": "Invalid verification code",
|
||||
"verification_code_expired": "Verification code expired",
|
||||
"login_failed": "Login failed",
|
||||
"logout_failed": "Logout failed",
|
||||
"session_expired": "Session expired",
|
||||
"already_logged_in": "Already logged in",
|
||||
"not_logged_in": "Not logged in"
|
||||
},
|
||||
"user": {
|
||||
"not_found": "User not found",
|
||||
"already_exists": "User already exists",
|
||||
"email_already_exists": "Email already in use",
|
||||
"phone_already_exists": "Phone number already in use",
|
||||
"username_already_exists": "Username already taken",
|
||||
"invalid_email": "Invalid email format",
|
||||
"invalid_phone": "Invalid phone number format",
|
||||
"invalid_username": "Invalid username format",
|
||||
"create_failed": "Failed to create user",
|
||||
"update_failed": "Failed to update user",
|
||||
"delete_failed": "Failed to delete user",
|
||||
"cannot_delete_self": "Cannot delete yourself",
|
||||
"cannot_update_self_role": "Cannot update your own role",
|
||||
"profile_update_failed": "Failed to update profile",
|
||||
"avatar_upload_failed": "Failed to upload avatar",
|
||||
"password_change_failed": "Failed to change password",
|
||||
"old_password_incorrect": "Old password is incorrect"
|
||||
},
|
||||
"workspace": {
|
||||
"not_found": "Workspace not found",
|
||||
"already_exists": "Workspace already exists",
|
||||
"name_required": "Workspace name is required",
|
||||
"name_too_long": "Workspace name is too long",
|
||||
"create_failed": "Failed to create workspace",
|
||||
"update_failed": "Failed to update workspace",
|
||||
"delete_failed": "Failed to delete workspace",
|
||||
"permission_denied": "Permission denied to access this workspace",
|
||||
"not_member": "Not a workspace member",
|
||||
"already_member": "Already a workspace member",
|
||||
"member_limit_reached": "Member limit reached",
|
||||
"cannot_leave_last_manager": "Cannot leave, you are the last manager",
|
||||
"cannot_remove_last_manager": "Cannot remove the last manager",
|
||||
"cannot_remove_self": "Cannot remove yourself",
|
||||
"invite_not_found": "Invite not found",
|
||||
"invite_expired": "Invite has expired",
|
||||
"invite_already_accepted": "Invite already accepted",
|
||||
"invite_already_revoked": "Invite already revoked",
|
||||
"invite_send_failed": "Failed to send invite",
|
||||
"archived": "Workspace is archived",
|
||||
"suspended": "Workspace is suspended"
|
||||
},
|
||||
"tenant": {
|
||||
"not_found": "Tenant not found",
|
||||
"already_exists": "Tenant already exists",
|
||||
"create_failed": "Failed to create tenant",
|
||||
"update_failed": "Failed to update tenant",
|
||||
"delete_failed": "Failed to delete tenant",
|
||||
"suspended": "Tenant is suspended",
|
||||
"expired": "Tenant has expired",
|
||||
"license_invalid": "Invalid license",
|
||||
"license_expired": "License has expired",
|
||||
"quota_exceeded": "Quota exceeded"
|
||||
},
|
||||
"file": {
|
||||
"not_found": "File not found",
|
||||
"upload_failed": "File upload failed",
|
||||
"download_failed": "File download failed",
|
||||
"delete_failed": "File deletion failed",
|
||||
"too_large": "File size exceeds limit",
|
||||
"invalid_type": "Unsupported file type",
|
||||
"invalid_format": "Invalid file format",
|
||||
"corrupted": "File is corrupted",
|
||||
"storage_full": "Storage is full",
|
||||
"access_denied": "Access denied to this file"
|
||||
},
|
||||
"api": {
|
||||
"rate_limit_exceeded": "API rate limit exceeded",
|
||||
"quota_exceeded": "API quota exceeded",
|
||||
"invalid_api_key": "Invalid API key",
|
||||
"api_key_expired": "API key has expired",
|
||||
"api_key_revoked": "API key has been revoked",
|
||||
"endpoint_not_found": "API endpoint not found",
|
||||
"method_not_allowed": "Method not allowed",
|
||||
"invalid_request": "Invalid request",
|
||||
"missing_parameter": "Missing required parameter: {param}",
|
||||
"invalid_parameter": "Invalid parameter: {param}"
|
||||
},
|
||||
"database": {
|
||||
"connection_failed": "Database connection failed",
|
||||
"query_failed": "Database query failed",
|
||||
"transaction_failed": "Database transaction failed",
|
||||
"constraint_violation": "Data constraint violation",
|
||||
"duplicate_key": "Duplicate data",
|
||||
"foreign_key_violation": "Foreign key constraint violation",
|
||||
"deadlock": "Database deadlock"
|
||||
},
|
||||
"validation": {
|
||||
"invalid_input": "Invalid input data",
|
||||
"missing_field": "Missing required field: {field}",
|
||||
"invalid_field": "Invalid field: {field}",
|
||||
"field_too_long": "Field too long: {field}",
|
||||
"field_too_short": "Field too short: {field}",
|
||||
"invalid_format": "Invalid format: {field}",
|
||||
"invalid_value": "Invalid value: {field}",
|
||||
"out_of_range": "Value out of range: {field}"
|
||||
}
|
||||
}
|
||||
27
api/app/locales/en/i18n.json
Normal file
27
api/app/locales/en/i18n.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"language": {
|
||||
"not_found": "Language {locale} not found",
|
||||
"already_exists": "Language {locale} already exists",
|
||||
"add_instructions": "Language {locale} validated successfully. Please create translation files in {dir} directory to complete the addition.",
|
||||
"update_instructions": "Language {locale} update validated successfully. Please update I18N_SUPPORTED_LANGUAGES environment variable to apply configuration changes."
|
||||
},
|
||||
"namespace": {
|
||||
"not_found": "Namespace {namespace} not found in language {locale}"
|
||||
},
|
||||
"translation": {
|
||||
"invalid_key_format": "Invalid translation key format: {key}. Should use format: namespace.key.subkey",
|
||||
"update_instructions": "Translation {locale}/{key} update validated successfully. Please modify the corresponding JSON translation file to apply changes."
|
||||
},
|
||||
"reload": {
|
||||
"disabled": "Translation hot reload is disabled. Please enable I18N_ENABLE_HOT_RELOAD in configuration.",
|
||||
"success": "Translations reloaded successfully",
|
||||
"failed": "Translation reload failed: {error}"
|
||||
},
|
||||
"metrics": {
|
||||
"reset_success": "Performance metrics reset successfully"
|
||||
},
|
||||
"logs": {
|
||||
"export_success": "Missing translations exported to: {file}",
|
||||
"clear_success": "Missing translation logs cleared successfully"
|
||||
}
|
||||
}
|
||||
63
api/app/locales/en/tenant.json
Normal file
63
api/app/locales/en/tenant.json
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"info": {
|
||||
"get_success": "Tenant information retrieved successfully",
|
||||
"get_failed": "Failed to retrieve tenant information",
|
||||
"update_success": "Tenant information updated successfully",
|
||||
"update_failed": "Failed to update tenant information"
|
||||
},
|
||||
"create": {
|
||||
"success": "Tenant created successfully",
|
||||
"failed": "Failed to create tenant"
|
||||
},
|
||||
"delete": {
|
||||
"success": "Tenant deleted successfully",
|
||||
"failed": "Failed to delete tenant"
|
||||
},
|
||||
"status": {
|
||||
"activate_success": "Tenant activated successfully",
|
||||
"activate_failed": "Failed to activate tenant",
|
||||
"deactivate_success": "Tenant deactivated successfully",
|
||||
"deactivate_failed": "Failed to deactivate tenant"
|
||||
},
|
||||
"language": {
|
||||
"get_success": "Tenant language configuration retrieved successfully",
|
||||
"get_failed": "Failed to retrieve tenant language configuration",
|
||||
"update_success": "Tenant language configuration updated successfully",
|
||||
"update_failed": "Failed to update tenant language configuration",
|
||||
"invalid_language": "Unsupported language code",
|
||||
"default_not_in_supported": "Default language must be in the supported languages list"
|
||||
},
|
||||
"list": {
|
||||
"get_success": "Tenant list retrieved successfully",
|
||||
"get_failed": "Failed to retrieve tenant list"
|
||||
},
|
||||
"users": {
|
||||
"list_success": "Tenant user list retrieved successfully",
|
||||
"list_failed": "Failed to retrieve tenant user list",
|
||||
"assign_success": "User assigned to tenant successfully",
|
||||
"assign_failed": "Failed to assign user to tenant",
|
||||
"remove_success": "User removed from tenant successfully",
|
||||
"remove_failed": "Failed to remove user from tenant"
|
||||
},
|
||||
"statistics": {
|
||||
"get_success": "Tenant statistics retrieved successfully",
|
||||
"get_failed": "Failed to retrieve tenant statistics"
|
||||
},
|
||||
"validation": {
|
||||
"name_required": "Tenant name is required",
|
||||
"name_invalid": "Invalid tenant name format",
|
||||
"name_too_long": "Tenant name cannot exceed {max} characters",
|
||||
"description_too_long": "Tenant description cannot exceed {max} characters",
|
||||
"language_code_invalid": "Invalid language code format",
|
||||
"supported_languages_empty": "Supported languages list cannot be empty"
|
||||
},
|
||||
"errors": {
|
||||
"not_found": "Tenant not found",
|
||||
"already_exists": "Tenant name already exists",
|
||||
"permission_denied": "Permission denied to access this tenant",
|
||||
"has_users": "Cannot delete tenant, associated users exist",
|
||||
"has_workspaces": "Cannot delete tenant, associated workspaces exist",
|
||||
"already_active": "Tenant is already active",
|
||||
"already_inactive": "Tenant is already inactive"
|
||||
}
|
||||
}
|
||||
72
api/app/locales/en/users.json
Normal file
72
api/app/locales/en/users.json
Normal file
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"info": {
|
||||
"get_success": "User information retrieved successfully",
|
||||
"get_failed": "Failed to retrieve user information",
|
||||
"update_success": "User information updated successfully",
|
||||
"update_failed": "Failed to update user information"
|
||||
},
|
||||
"create": {
|
||||
"success": "User created successfully",
|
||||
"failed": "Failed to create user",
|
||||
"superuser_success": "Superuser created successfully",
|
||||
"superuser_failed": "Failed to create superuser"
|
||||
},
|
||||
"delete": {
|
||||
"success": "User deleted successfully",
|
||||
"failed": "Failed to delete user",
|
||||
"deactivate_success": "User deactivated successfully",
|
||||
"deactivate_failed": "Failed to deactivate user"
|
||||
},
|
||||
"activate": {
|
||||
"success": "User activated successfully",
|
||||
"failed": "Failed to activate user"
|
||||
},
|
||||
"language": {
|
||||
"get_success": "Language preference retrieved successfully",
|
||||
"get_failed": "Failed to retrieve language preference",
|
||||
"update_success": "Language preference updated successfully",
|
||||
"update_failed": "Failed to update language preference",
|
||||
"invalid_language": "Unsupported language code",
|
||||
"current": "Current language preference"
|
||||
},
|
||||
"email": {
|
||||
"change_success": "Email changed successfully",
|
||||
"change_failed": "Failed to change email",
|
||||
"code_sent": "Verification code has been sent to your email",
|
||||
"code_send_failed": "Failed to send verification code",
|
||||
"code_invalid": "Invalid or expired verification code",
|
||||
"already_exists": "Email already in use"
|
||||
},
|
||||
"list": {
|
||||
"get_success": "User list retrieved successfully",
|
||||
"get_failed": "Failed to retrieve user list",
|
||||
"superusers_success": "Tenant superuser list retrieved successfully",
|
||||
"superusers_failed": "Failed to retrieve tenant superuser list"
|
||||
},
|
||||
"validation": {
|
||||
"username_required": "Username is required",
|
||||
"username_invalid": "Invalid username format",
|
||||
"username_too_long": "Username cannot exceed {max} characters",
|
||||
"email_required": "Email is required",
|
||||
"email_invalid": "Invalid email format",
|
||||
"password_required": "Password is required",
|
||||
"password_too_short": "Password must be at least {min} characters",
|
||||
"password_too_long": "Password cannot exceed {max} characters",
|
||||
"old_password_required": "Old password is required",
|
||||
"new_password_required": "New password is required",
|
||||
"verification_code_required": "Verification code is required",
|
||||
"verification_code_invalid": "Invalid verification code format"
|
||||
},
|
||||
"errors": {
|
||||
"not_found": "User not found",
|
||||
"already_exists": "User already exists",
|
||||
"permission_denied": "Permission denied to access this user",
|
||||
"cannot_delete_self": "Cannot delete yourself",
|
||||
"cannot_deactivate_self": "Cannot deactivate yourself",
|
||||
"already_deactivated": "User is already deactivated",
|
||||
"already_activated": "User is already activated",
|
||||
"password_verification_failed": "Password verification failed",
|
||||
"old_password_incorrect": "Old password is incorrect",
|
||||
"same_as_old_password": "New password cannot be the same as old password"
|
||||
}
|
||||
}
|
||||
44
api/app/locales/en/workspace.json
Normal file
44
api/app/locales/en/workspace.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"list_retrieved": "Workspace list retrieved successfully",
|
||||
"created": "Workspace created successfully",
|
||||
"updated": "Workspace updated successfully",
|
||||
"deleted": "Workspace deleted successfully",
|
||||
"switched": "Workspace switched successfully",
|
||||
"not_found": "Workspace not found or access denied",
|
||||
"already_exists": "Workspace already exists",
|
||||
"permission_denied": "No permission to access this workspace",
|
||||
"name_required": "Workspace name is required",
|
||||
"invalid_name": "Invalid workspace name format",
|
||||
"members": {
|
||||
"list_retrieved": "Workspace members list retrieved successfully",
|
||||
"role_updated": "Member role updated successfully",
|
||||
"deleted": "Member deleted successfully",
|
||||
"not_found": "Member not found",
|
||||
"cannot_remove_self": "Cannot remove yourself",
|
||||
"cannot_remove_last_manager": "Cannot remove the last manager",
|
||||
"already_member": "User is already a workspace member"
|
||||
},
|
||||
"invites": {
|
||||
"created": "Invite created successfully",
|
||||
"list_retrieved": "Invite list retrieved successfully",
|
||||
"validated": "Invite validated successfully",
|
||||
"revoked": "Invite revoked successfully",
|
||||
"accepted": "Invite accepted",
|
||||
"not_found": "Invite not found",
|
||||
"expired": "Invite has expired",
|
||||
"already_used": "Invite has already been used",
|
||||
"invalid_token": "Invalid invite token",
|
||||
"email_required": "Email address is required",
|
||||
"invalid_email": "Invalid email address format"
|
||||
},
|
||||
"storage": {
|
||||
"type_retrieved": "Storage type retrieved successfully",
|
||||
"type_updated": "Storage type updated successfully",
|
||||
"invalid_type": "Invalid storage type"
|
||||
},
|
||||
"models": {
|
||||
"config_retrieved": "Model configuration retrieved successfully",
|
||||
"config_updated": "Model configuration updated successfully",
|
||||
"invalid_config": "Invalid model configuration"
|
||||
}
|
||||
}
|
||||
26
api/app/locales/zh/README.md
Normal file
26
api/app/locales/zh/README.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# 中文翻译文件
|
||||
|
||||
此目录包含中文(简体)的翻译文件。
|
||||
|
||||
## 文件结构
|
||||
|
||||
- `common.json` - 通用翻译(成功消息、操作、验证)
|
||||
- `auth.json` - 认证模块翻译
|
||||
- `workspace.json` - 工作空间模块翻译
|
||||
- `tenant.json` - 租户模块翻译
|
||||
- `errors.json` - 错误消息翻译
|
||||
- `enums.json` - 枚举值翻译
|
||||
|
||||
## 翻译文件格式
|
||||
|
||||
所有翻译文件使用 JSON 格式,支持嵌套结构。
|
||||
|
||||
示例:
|
||||
```json
|
||||
{
|
||||
"success": {
|
||||
"created": "创建成功",
|
||||
"updated": "更新成功"
|
||||
}
|
||||
}
|
||||
```
|
||||
55
api/app/locales/zh/auth.json
Normal file
55
api/app/locales/zh/auth.json
Normal file
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"login": {
|
||||
"success": "登录成功",
|
||||
"failed": "登录失败",
|
||||
"invalid_credentials": "用户名或密码错误",
|
||||
"account_locked": "账户已被锁定",
|
||||
"account_disabled": "账户已被禁用"
|
||||
},
|
||||
"logout": {
|
||||
"success": "登出成功",
|
||||
"failed": "登出失败"
|
||||
},
|
||||
"token": {
|
||||
"refresh_success": "token刷新成功",
|
||||
"invalid": "无效的token",
|
||||
"expired": "token已过期",
|
||||
"blacklisted": "token已失效",
|
||||
"invalid_refresh_token": "无效的refresh token",
|
||||
"refresh_token_blacklisted": "Refresh token已失效"
|
||||
},
|
||||
"registration": {
|
||||
"success": "注册成功",
|
||||
"failed": "注册失败",
|
||||
"email_exists": "邮箱已被使用",
|
||||
"username_exists": "用户名已被使用"
|
||||
},
|
||||
"password": {
|
||||
"reset_success": "密码重置成功",
|
||||
"reset_failed": "密码重置失败",
|
||||
"change_success": "密码修改成功",
|
||||
"change_failed": "密码修改失败",
|
||||
"incorrect": "密码错误",
|
||||
"too_weak": "密码强度不够",
|
||||
"mismatch": "两次输入的密码不一致"
|
||||
},
|
||||
"invite": {
|
||||
"invalid": "邀请码无效或已过期",
|
||||
"email_mismatch": "邀请邮箱与登录邮箱不匹配",
|
||||
"accept_success": "接受邀请成功",
|
||||
"accept_failed": "接受邀请失败",
|
||||
"password_verification_failed": "接受邀请失败,密码验证错误",
|
||||
"bind_workspace_success": "绑定工作空间成功",
|
||||
"bind_workspace_failed": "绑定工作空间失败"
|
||||
},
|
||||
"user": {
|
||||
"not_found": "用户不存在",
|
||||
"already_exists": "用户已存在",
|
||||
"created_with_invite": "用户创建成功并已加入工作空间"
|
||||
},
|
||||
"session": {
|
||||
"expired": "会话已过期,请重新登录",
|
||||
"invalid": "无效的会话",
|
||||
"single_session_enabled": "单点登录已启用,其他设备的登录将被注销"
|
||||
}
|
||||
}
|
||||
132
api/app/locales/zh/common.json
Normal file
132
api/app/locales/zh/common.json
Normal file
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"success": {
|
||||
"created": "创建成功",
|
||||
"updated": "更新成功",
|
||||
"deleted": "删除成功",
|
||||
"retrieved": "获取成功",
|
||||
"saved": "保存成功",
|
||||
"uploaded": "上传成功",
|
||||
"downloaded": "下载成功",
|
||||
"sent": "发送成功",
|
||||
"completed": "完成",
|
||||
"confirmed": "已确认",
|
||||
"cancelled": "已取消",
|
||||
"archived": "已归档",
|
||||
"restored": "已恢复"
|
||||
},
|
||||
"actions": {
|
||||
"create": "创建",
|
||||
"update": "更新",
|
||||
"delete": "删除",
|
||||
"view": "查看",
|
||||
"edit": "编辑",
|
||||
"save": "保存",
|
||||
"cancel": "取消",
|
||||
"confirm": "确认",
|
||||
"submit": "提交",
|
||||
"upload": "上传",
|
||||
"download": "下载",
|
||||
"send": "发送",
|
||||
"search": "搜索",
|
||||
"filter": "筛选",
|
||||
"sort": "排序",
|
||||
"export": "导出",
|
||||
"import": "导入",
|
||||
"refresh": "刷新",
|
||||
"reset": "重置",
|
||||
"back": "返回",
|
||||
"next": "下一步",
|
||||
"previous": "上一步",
|
||||
"finish": "完成",
|
||||
"close": "关闭",
|
||||
"open": "打开",
|
||||
"archive": "归档",
|
||||
"restore": "恢复",
|
||||
"duplicate": "复制",
|
||||
"share": "分享",
|
||||
"invite": "邀请",
|
||||
"remove": "移除",
|
||||
"add": "添加",
|
||||
"select": "选择",
|
||||
"clear": "清除"
|
||||
},
|
||||
"validation": {
|
||||
"required": "{field}不能为空",
|
||||
"invalid_format": "{field}格式不正确",
|
||||
"too_long": "{field}长度不能超过{max}个字符",
|
||||
"too_short": "{field}长度不能少于{min}个字符",
|
||||
"invalid_email": "邮箱格式不正确",
|
||||
"invalid_url": "URL格式不正确",
|
||||
"invalid_phone": "手机号格式不正确",
|
||||
"invalid_date": "日期格式不正确",
|
||||
"invalid_number": "必须是有效的数字",
|
||||
"out_of_range": "{field}必须在{min}和{max}之间",
|
||||
"already_exists": "{field}已存在",
|
||||
"not_found": "{field}不存在",
|
||||
"invalid_value": "{field}的值无效",
|
||||
"password_mismatch": "两次输入的密码不一致",
|
||||
"weak_password": "密码强度不够,请使用更复杂的密码",
|
||||
"invalid_credentials": "用户名或密码错误",
|
||||
"unauthorized": "未授权访问",
|
||||
"forbidden": "没有权限执行此操作",
|
||||
"expired": "{field}已过期",
|
||||
"invalid_token": "无效的令牌",
|
||||
"file_too_large": "文件大小不能超过{max}",
|
||||
"invalid_file_type": "不支持的文件类型",
|
||||
"duplicate": "重复的{field}"
|
||||
},
|
||||
"status": {
|
||||
"active": "活跃",
|
||||
"inactive": "未激活",
|
||||
"pending": "待处理",
|
||||
"processing": "处理中",
|
||||
"completed": "已完成",
|
||||
"failed": "失败",
|
||||
"cancelled": "已取消",
|
||||
"archived": "已归档",
|
||||
"deleted": "已删除",
|
||||
"draft": "草稿",
|
||||
"published": "已发布",
|
||||
"suspended": "已暂停",
|
||||
"expired": "已过期"
|
||||
},
|
||||
"messages": {
|
||||
"loading": "加载中...",
|
||||
"saving": "保存中...",
|
||||
"processing": "处理中...",
|
||||
"uploading": "上传中...",
|
||||
"downloading": "下载中...",
|
||||
"no_data": "暂无数据",
|
||||
"no_results": "没有找到结果",
|
||||
"confirm_delete": "确定要删除吗?此操作不可恢复。",
|
||||
"confirm_action": "确定要执行此操作吗?",
|
||||
"operation_success": "操作成功",
|
||||
"operation_failed": "操作失败",
|
||||
"please_wait": "请稍候...",
|
||||
"try_again": "请重试",
|
||||
"contact_support": "如果问题持续,请联系技术支持"
|
||||
},
|
||||
"pagination": {
|
||||
"page": "第{page}页",
|
||||
"of": "共{total}页",
|
||||
"items": "共{total}条",
|
||||
"per_page": "每页{count}条",
|
||||
"showing": "显示第{from}到第{to}条,共{total}条",
|
||||
"first": "首页",
|
||||
"last": "末页",
|
||||
"next": "下一页",
|
||||
"previous": "上一页"
|
||||
},
|
||||
"time": {
|
||||
"just_now": "刚刚",
|
||||
"minutes_ago": "{count}分钟前",
|
||||
"hours_ago": "{count}小时前",
|
||||
"days_ago": "{count}天前",
|
||||
"weeks_ago": "{count}周前",
|
||||
"months_ago": "{count}个月前",
|
||||
"years_ago": "{count}年前",
|
||||
"today": "今天",
|
||||
"yesterday": "昨天",
|
||||
"tomorrow": "明天"
|
||||
}
|
||||
}
|
||||
132
api/app/locales/zh/enums.json
Normal file
132
api/app/locales/zh/enums.json
Normal file
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"workspace_role": {
|
||||
"owner": "所有者",
|
||||
"manager": "管理员",
|
||||
"member": "成员",
|
||||
"guest": "访客"
|
||||
},
|
||||
"workspace_status": {
|
||||
"active": "活跃",
|
||||
"inactive": "未激活",
|
||||
"archived": "已归档",
|
||||
"suspended": "已暂停",
|
||||
"deleted": "已删除"
|
||||
},
|
||||
"invite_status": {
|
||||
"pending": "待处理",
|
||||
"accepted": "已接受",
|
||||
"rejected": "已拒绝",
|
||||
"revoked": "已撤销",
|
||||
"expired": "已过期"
|
||||
},
|
||||
"user_status": {
|
||||
"active": "活跃",
|
||||
"inactive": "未激活",
|
||||
"suspended": "已暂停",
|
||||
"deleted": "已删除",
|
||||
"pending": "待激活"
|
||||
},
|
||||
"tenant_status": {
|
||||
"active": "活跃",
|
||||
"inactive": "未激活",
|
||||
"suspended": "已暂停",
|
||||
"expired": "已过期",
|
||||
"trial": "试用中"
|
||||
},
|
||||
"file_status": {
|
||||
"uploading": "上传中",
|
||||
"processing": "处理中",
|
||||
"completed": "已完成",
|
||||
"failed": "失败",
|
||||
"deleted": "已删除"
|
||||
},
|
||||
"task_status": {
|
||||
"pending": "待处理",
|
||||
"running": "运行中",
|
||||
"completed": "已完成",
|
||||
"failed": "失败",
|
||||
"cancelled": "已取消",
|
||||
"paused": "已暂停"
|
||||
},
|
||||
"priority": {
|
||||
"low": "低",
|
||||
"medium": "中",
|
||||
"high": "高",
|
||||
"urgent": "紧急"
|
||||
},
|
||||
"visibility": {
|
||||
"public": "公开",
|
||||
"private": "私有",
|
||||
"internal": "内部",
|
||||
"shared": "共享"
|
||||
},
|
||||
"permission": {
|
||||
"read": "读取",
|
||||
"write": "写入",
|
||||
"delete": "删除",
|
||||
"admin": "管理",
|
||||
"owner": "所有者"
|
||||
},
|
||||
"notification_type": {
|
||||
"info": "信息",
|
||||
"warning": "警告",
|
||||
"error": "错误",
|
||||
"success": "成功"
|
||||
},
|
||||
"language": {
|
||||
"zh": "中文(简体)",
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어",
|
||||
"fr": "Français",
|
||||
"de": "Deutsch",
|
||||
"es": "Español"
|
||||
},
|
||||
"timezone": {
|
||||
"utc": "UTC",
|
||||
"asia_shanghai": "亚洲/上海",
|
||||
"asia_tokyo": "亚洲/东京",
|
||||
"america_new_york": "美洲/纽约",
|
||||
"europe_london": "欧洲/伦敦"
|
||||
},
|
||||
"date_format": {
|
||||
"short": "短日期",
|
||||
"medium": "中等日期",
|
||||
"long": "长日期",
|
||||
"full": "完整日期"
|
||||
},
|
||||
"sort_order": {
|
||||
"asc": "升序",
|
||||
"desc": "降序"
|
||||
},
|
||||
"filter_operator": {
|
||||
"equals": "等于",
|
||||
"not_equals": "不等于",
|
||||
"contains": "包含",
|
||||
"not_contains": "不包含",
|
||||
"starts_with": "开始于",
|
||||
"ends_with": "结束于",
|
||||
"greater_than": "大于",
|
||||
"less_than": "小于",
|
||||
"greater_or_equal": "大于等于",
|
||||
"less_or_equal": "小于等于",
|
||||
"in": "在列表中",
|
||||
"not_in": "不在列表中",
|
||||
"is_null": "为空",
|
||||
"is_not_null": "不为空"
|
||||
},
|
||||
"log_level": {
|
||||
"debug": "调试",
|
||||
"info": "信息",
|
||||
"warning": "警告",
|
||||
"error": "错误",
|
||||
"critical": "严重"
|
||||
},
|
||||
"api_method": {
|
||||
"get": "GET",
|
||||
"post": "POST",
|
||||
"put": "PUT",
|
||||
"patch": "PATCH",
|
||||
"delete": "DELETE"
|
||||
}
|
||||
}
|
||||
138
api/app/locales/zh/errors.json
Normal file
138
api/app/locales/zh/errors.json
Normal file
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"common": {
|
||||
"internal_error": "服务器内部错误",
|
||||
"network_error": "网络连接错误",
|
||||
"timeout": "请求超时",
|
||||
"service_unavailable": "服务暂时不可用",
|
||||
"bad_request": "请求参数错误",
|
||||
"unauthorized": "未授权访问",
|
||||
"forbidden": "没有权限访问",
|
||||
"not_found": "请求的资源不存在",
|
||||
"method_not_allowed": "不支持的请求方法",
|
||||
"conflict": "资源冲突",
|
||||
"too_many_requests": "请求过于频繁,请稍后再试",
|
||||
"validation_failed": "数据验证失败",
|
||||
"database_error": "数据库操作失败",
|
||||
"file_operation_error": "文件操作失败"
|
||||
},
|
||||
"auth": {
|
||||
"invalid_credentials": "用户名或密码错误",
|
||||
"token_expired": "登录已过期,请重新登录",
|
||||
"token_invalid": "无效的登录令牌",
|
||||
"token_missing": "缺少登录令牌",
|
||||
"unauthorized": "未授权访问",
|
||||
"forbidden": "没有权限执行此操作",
|
||||
"account_locked": "账户已被锁定",
|
||||
"account_disabled": "账户已被禁用",
|
||||
"account_not_verified": "账户未验证",
|
||||
"password_incorrect": "密码错误",
|
||||
"password_too_weak": "密码强度不够",
|
||||
"password_expired": "密码已过期,请修改密码",
|
||||
"email_not_verified": "邮箱未验证",
|
||||
"phone_not_verified": "手机号未验证",
|
||||
"verification_code_invalid": "验证码无效",
|
||||
"verification_code_expired": "验证码已过期",
|
||||
"login_failed": "登录失败",
|
||||
"logout_failed": "登出失败",
|
||||
"session_expired": "会话已过期",
|
||||
"already_logged_in": "已经登录",
|
||||
"not_logged_in": "未登录"
|
||||
},
|
||||
"user": {
|
||||
"not_found": "用户不存在",
|
||||
"already_exists": "用户已存在",
|
||||
"email_already_exists": "邮箱已被使用",
|
||||
"phone_already_exists": "手机号已被使用",
|
||||
"username_already_exists": "用户名已被使用",
|
||||
"invalid_email": "邮箱格式不正确",
|
||||
"invalid_phone": "手机号格式不正确",
|
||||
"invalid_username": "用户名格式不正确",
|
||||
"create_failed": "创建用户失败",
|
||||
"update_failed": "更新用户失败",
|
||||
"delete_failed": "删除用户失败",
|
||||
"cannot_delete_self": "不能删除自己",
|
||||
"cannot_update_self_role": "不能修改自己的角色",
|
||||
"profile_update_failed": "更新个人资料失败",
|
||||
"avatar_upload_failed": "上传头像失败",
|
||||
"password_change_failed": "修改密码失败",
|
||||
"old_password_incorrect": "原密码错误"
|
||||
},
|
||||
"workspace": {
|
||||
"not_found": "工作空间不存在",
|
||||
"already_exists": "工作空间已存在",
|
||||
"name_required": "工作空间名称不能为空",
|
||||
"name_too_long": "工作空间名称过长",
|
||||
"create_failed": "创建工作空间失败",
|
||||
"update_failed": "更新工作空间失败",
|
||||
"delete_failed": "删除工作空间失败",
|
||||
"permission_denied": "没有权限访问此工作空间",
|
||||
"not_member": "不是工作空间成员",
|
||||
"already_member": "已经是工作空间成员",
|
||||
"member_limit_reached": "成员数量已达上限",
|
||||
"cannot_leave_last_manager": "不能离开,您是最后一个管理员",
|
||||
"cannot_remove_last_manager": "不能移除最后一个管理员",
|
||||
"cannot_remove_self": "不能移除自己",
|
||||
"invite_not_found": "邀请不存在",
|
||||
"invite_expired": "邀请已过期",
|
||||
"invite_already_accepted": "邀请已被接受",
|
||||
"invite_already_revoked": "邀请已被撤销",
|
||||
"invite_send_failed": "发送邀请失败",
|
||||
"archived": "工作空间已归档",
|
||||
"suspended": "工作空间已暂停"
|
||||
},
|
||||
"tenant": {
|
||||
"not_found": "租户不存在",
|
||||
"already_exists": "租户已存在",
|
||||
"create_failed": "创建租户失败",
|
||||
"update_failed": "更新租户失败",
|
||||
"delete_failed": "删除租户失败",
|
||||
"suspended": "租户已暂停",
|
||||
"expired": "租户已过期",
|
||||
"license_invalid": "许可证无效",
|
||||
"license_expired": "许可证已过期",
|
||||
"quota_exceeded": "配额已超限"
|
||||
},
|
||||
"file": {
|
||||
"not_found": "文件不存在",
|
||||
"upload_failed": "文件上传失败",
|
||||
"download_failed": "文件下载失败",
|
||||
"delete_failed": "文件删除失败",
|
||||
"too_large": "文件大小超过限制",
|
||||
"invalid_type": "不支持的文件类型",
|
||||
"invalid_format": "文件格式不正确",
|
||||
"corrupted": "文件已损坏",
|
||||
"storage_full": "存储空间已满",
|
||||
"access_denied": "没有权限访问此文件"
|
||||
},
|
||||
"api": {
|
||||
"rate_limit_exceeded": "API调用频率超限",
|
||||
"quota_exceeded": "API调用配额已用完",
|
||||
"invalid_api_key": "无效的API密钥",
|
||||
"api_key_expired": "API密钥已过期",
|
||||
"api_key_revoked": "API密钥已被撤销",
|
||||
"endpoint_not_found": "API端点不存在",
|
||||
"method_not_allowed": "不支持的请求方法",
|
||||
"invalid_request": "无效的请求",
|
||||
"missing_parameter": "缺少必需参数:{param}",
|
||||
"invalid_parameter": "参数无效:{param}"
|
||||
},
|
||||
"database": {
|
||||
"connection_failed": "数据库连接失败",
|
||||
"query_failed": "数据库查询失败",
|
||||
"transaction_failed": "数据库事务失败",
|
||||
"constraint_violation": "数据约束冲突",
|
||||
"duplicate_key": "数据重复",
|
||||
"foreign_key_violation": "外键约束冲突",
|
||||
"deadlock": "数据库死锁"
|
||||
},
|
||||
"validation": {
|
||||
"invalid_input": "输入数据无效",
|
||||
"missing_field": "缺少必需字段:{field}",
|
||||
"invalid_field": "字段无效:{field}",
|
||||
"field_too_long": "字段过长:{field}",
|
||||
"field_too_short": "字段过短:{field}",
|
||||
"invalid_format": "格式不正确:{field}",
|
||||
"invalid_value": "值无效:{field}",
|
||||
"out_of_range": "值超出范围:{field}"
|
||||
}
|
||||
}
|
||||
27
api/app/locales/zh/i18n.json
Normal file
27
api/app/locales/zh/i18n.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"language": {
|
||||
"not_found": "语言 {locale} 不存在",
|
||||
"already_exists": "语言 {locale} 已存在",
|
||||
"add_instructions": "语言 {locale} 验证成功。请在 {dir} 目录下创建翻译文件以完成添加。",
|
||||
"update_instructions": "语言 {locale} 更新验证成功。请更新环境变量 I18N_SUPPORTED_LANGUAGES 以应用配置更改。"
|
||||
},
|
||||
"namespace": {
|
||||
"not_found": "命名空间 {namespace} 在语言 {locale} 中不存在"
|
||||
},
|
||||
"translation": {
|
||||
"invalid_key_format": "翻译键格式无效: {key}。应使用格式: namespace.key.subkey",
|
||||
"update_instructions": "翻译 {locale}/{key} 更新验证成功。请修改对应的 JSON 翻译文件以应用更改。"
|
||||
},
|
||||
"reload": {
|
||||
"disabled": "翻译热重载功能已禁用。请在配置中启用 I18N_ENABLE_HOT_RELOAD。",
|
||||
"success": "翻译重载成功",
|
||||
"failed": "翻译重载失败: {error}"
|
||||
},
|
||||
"metrics": {
|
||||
"reset_success": "性能指标已重置"
|
||||
},
|
||||
"logs": {
|
||||
"export_success": "缺失翻译已导出到: {file}",
|
||||
"clear_success": "缺失翻译日志已清除"
|
||||
}
|
||||
}
|
||||
63
api/app/locales/zh/tenant.json
Normal file
63
api/app/locales/zh/tenant.json
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"info": {
|
||||
"get_success": "租户信息获取成功",
|
||||
"get_failed": "租户信息获取失败",
|
||||
"update_success": "租户信息更新成功",
|
||||
"update_failed": "租户信息更新失败"
|
||||
},
|
||||
"create": {
|
||||
"success": "租户创建成功",
|
||||
"failed": "租户创建失败"
|
||||
},
|
||||
"delete": {
|
||||
"success": "租户删除成功",
|
||||
"failed": "租户删除失败"
|
||||
},
|
||||
"status": {
|
||||
"activate_success": "租户启用成功",
|
||||
"activate_failed": "租户启用失败",
|
||||
"deactivate_success": "租户禁用成功",
|
||||
"deactivate_failed": "租户禁用失败"
|
||||
},
|
||||
"language": {
|
||||
"get_success": "租户语言配置获取成功",
|
||||
"get_failed": "租户语言配置获取失败",
|
||||
"update_success": "租户语言配置更新成功",
|
||||
"update_failed": "租户语言配置更新失败",
|
||||
"invalid_language": "不支持的语言代码",
|
||||
"default_not_in_supported": "默认语言必须在支持的语言列表中"
|
||||
},
|
||||
"list": {
|
||||
"get_success": "租户列表获取成功",
|
||||
"get_failed": "租户列表获取失败"
|
||||
},
|
||||
"users": {
|
||||
"list_success": "租户用户列表获取成功",
|
||||
"list_failed": "租户用户列表获取失败",
|
||||
"assign_success": "用户分配到租户成功",
|
||||
"assign_failed": "用户分配到租户失败",
|
||||
"remove_success": "用户从租户移除成功",
|
||||
"remove_failed": "用户从租户移除失败"
|
||||
},
|
||||
"statistics": {
|
||||
"get_success": "租户统计信息获取成功",
|
||||
"get_failed": "租户统计信息获取失败"
|
||||
},
|
||||
"validation": {
|
||||
"name_required": "租户名称不能为空",
|
||||
"name_invalid": "租户名称格式不正确",
|
||||
"name_too_long": "租户名称长度不能超过{max}个字符",
|
||||
"description_too_long": "租户描述长度不能超过{max}个字符",
|
||||
"language_code_invalid": "语言代码格式不正确",
|
||||
"supported_languages_empty": "支持的语言列表不能为空"
|
||||
},
|
||||
"errors": {
|
||||
"not_found": "租户不存在",
|
||||
"already_exists": "租户名称已存在",
|
||||
"permission_denied": "没有权限访问此租户",
|
||||
"has_users": "无法删除租户,存在关联的用户",
|
||||
"has_workspaces": "无法删除租户,存在关联的工作空间",
|
||||
"already_active": "租户已处于激活状态",
|
||||
"already_inactive": "租户已处于禁用状态"
|
||||
}
|
||||
}
|
||||
72
api/app/locales/zh/users.json
Normal file
72
api/app/locales/zh/users.json
Normal file
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"info": {
|
||||
"get_success": "用户信息获取成功",
|
||||
"get_failed": "用户信息获取失败",
|
||||
"update_success": "用户信息更新成功",
|
||||
"update_failed": "用户信息更新失败"
|
||||
},
|
||||
"create": {
|
||||
"success": "用户创建成功",
|
||||
"failed": "用户创建失败",
|
||||
"superuser_success": "超级管理员创建成功",
|
||||
"superuser_failed": "超级管理员创建失败"
|
||||
},
|
||||
"delete": {
|
||||
"success": "用户删除成功",
|
||||
"failed": "用户删除失败",
|
||||
"deactivate_success": "用户停用成功",
|
||||
"deactivate_failed": "用户停用失败"
|
||||
},
|
||||
"activate": {
|
||||
"success": "用户激活成功",
|
||||
"failed": "用户激活失败"
|
||||
},
|
||||
"language": {
|
||||
"get_success": "语言偏好获取成功",
|
||||
"get_failed": "语言偏好获取失败",
|
||||
"update_success": "语言偏好更新成功",
|
||||
"update_failed": "语言偏好更新失败",
|
||||
"invalid_language": "不支持的语言代码",
|
||||
"current": "当前语言偏好"
|
||||
},
|
||||
"email": {
|
||||
"change_success": "邮箱修改成功",
|
||||
"change_failed": "邮箱修改失败",
|
||||
"code_sent": "验证码已发送到您的邮箱,请查收",
|
||||
"code_send_failed": "验证码发送失败",
|
||||
"code_invalid": "验证码无效或已过期",
|
||||
"already_exists": "该邮箱已被使用"
|
||||
},
|
||||
"list": {
|
||||
"get_success": "用户列表获取成功",
|
||||
"get_failed": "用户列表获取失败",
|
||||
"superusers_success": "租户超管列表获取成功",
|
||||
"superusers_failed": "租户超管列表获取失败"
|
||||
},
|
||||
"validation": {
|
||||
"username_required": "用户名不能为空",
|
||||
"username_invalid": "用户名格式不正确",
|
||||
"username_too_long": "用户名长度不能超过{max}个字符",
|
||||
"email_required": "邮箱不能为空",
|
||||
"email_invalid": "邮箱格式不正确",
|
||||
"password_required": "密码不能为空",
|
||||
"password_too_short": "密码长度不能少于{min}个字符",
|
||||
"password_too_long": "密码长度不能超过{max}个字符",
|
||||
"old_password_required": "旧密码不能为空",
|
||||
"new_password_required": "新密码不能为空",
|
||||
"verification_code_required": "验证码不能为空",
|
||||
"verification_code_invalid": "验证码格式不正确"
|
||||
},
|
||||
"errors": {
|
||||
"not_found": "用户不存在",
|
||||
"already_exists": "用户已存在",
|
||||
"permission_denied": "没有权限访问此用户",
|
||||
"cannot_delete_self": "不能删除自己",
|
||||
"cannot_deactivate_self": "不能停用自己",
|
||||
"already_deactivated": "用户已被停用",
|
||||
"already_activated": "用户已处于激活状态",
|
||||
"password_verification_failed": "密码验证失败",
|
||||
"old_password_incorrect": "旧密码不正确",
|
||||
"same_as_old_password": "新密码不能与旧密码相同"
|
||||
}
|
||||
}
|
||||
44
api/app/locales/zh/workspace.json
Normal file
44
api/app/locales/zh/workspace.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"list_retrieved": "工作空间列表获取成功",
|
||||
"created": "工作空间创建成功",
|
||||
"updated": "工作空间更新成功",
|
||||
"deleted": "工作空间删除成功",
|
||||
"switched": "工作空间切换成功",
|
||||
"not_found": "工作空间不存在或无权访问",
|
||||
"already_exists": "工作空间已存在",
|
||||
"permission_denied": "没有权限访问此工作空间",
|
||||
"name_required": "工作空间名称不能为空",
|
||||
"invalid_name": "工作空间名称格式不正确",
|
||||
"members": {
|
||||
"list_retrieved": "工作空间成员列表获取成功",
|
||||
"role_updated": "成员角色更新成功",
|
||||
"deleted": "成员删除成功",
|
||||
"not_found": "成员不存在",
|
||||
"cannot_remove_self": "不能删除自己",
|
||||
"cannot_remove_last_manager": "不能删除最后一个管理员",
|
||||
"already_member": "用户已经是工作空间成员"
|
||||
},
|
||||
"invites": {
|
||||
"created": "邀请创建成功",
|
||||
"list_retrieved": "邀请列表获取成功",
|
||||
"validated": "邀请验证成功",
|
||||
"revoked": "邀请撤销成功",
|
||||
"accepted": "邀请已接受",
|
||||
"not_found": "邀请不存在",
|
||||
"expired": "邀请已过期",
|
||||
"already_used": "邀请已被使用",
|
||||
"invalid_token": "无效的邀请令牌",
|
||||
"email_required": "邮箱地址不能为空",
|
||||
"invalid_email": "邮箱地址格式不正确"
|
||||
},
|
||||
"storage": {
|
||||
"type_retrieved": "存储类型获取成功",
|
||||
"type_updated": "存储类型更新成功",
|
||||
"invalid_type": "无效的存储类型"
|
||||
},
|
||||
"models": {
|
||||
"config_retrieved": "模型配置获取成功",
|
||||
"config_updated": "模型配置更新成功",
|
||||
"invalid_config": "无效的模型配置"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user