[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"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user