mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-04-19 05:17:26 +00:00
feat: Improve backend multilingual support
This commit is contained in:
198
i18n/keys.go
198
i18n/keys.go
@@ -60,46 +60,46 @@ const (
|
||||
|
||||
// User related messages
|
||||
const (
|
||||
MsgUserPasswordLoginDisabled = "user.password_login_disabled"
|
||||
MsgUserRegisterDisabled = "user.register_disabled"
|
||||
MsgUserPasswordRegisterDisabled = "user.password_register_disabled"
|
||||
MsgUserUsernameOrPasswordEmpty = "user.username_or_password_empty"
|
||||
MsgUserUsernameOrPasswordError = "user.username_or_password_error"
|
||||
MsgUserEmailOrPasswordEmpty = "user.email_or_password_empty"
|
||||
MsgUserExists = "user.exists"
|
||||
MsgUserNotExists = "user.not_exists"
|
||||
MsgUserDisabled = "user.disabled"
|
||||
MsgUserSessionSaveFailed = "user.session_save_failed"
|
||||
MsgUserRequire2FA = "user.require_2fa"
|
||||
MsgUserEmailVerificationRequired = "user.email_verification_required"
|
||||
MsgUserVerificationCodeError = "user.verification_code_error"
|
||||
MsgUserInputInvalid = "user.input_invalid"
|
||||
MsgUserNoPermissionSameLevel = "user.no_permission_same_level"
|
||||
MsgUserNoPermissionHigherLevel = "user.no_permission_higher_level"
|
||||
MsgUserCannotCreateHigherLevel = "user.cannot_create_higher_level"
|
||||
MsgUserCannotDeleteRootUser = "user.cannot_delete_root_user"
|
||||
MsgUserCannotDisableRootUser = "user.cannot_disable_root_user"
|
||||
MsgUserCannotDemoteRootUser = "user.cannot_demote_root_user"
|
||||
MsgUserAlreadyAdmin = "user.already_admin"
|
||||
MsgUserAlreadyCommon = "user.already_common"
|
||||
MsgUserAdminCannotPromote = "user.admin_cannot_promote"
|
||||
MsgUserOriginalPasswordError = "user.original_password_error"
|
||||
MsgUserInviteQuotaInsufficient = "user.invite_quota_insufficient"
|
||||
MsgUserTransferQuotaMinimum = "user.transfer_quota_minimum"
|
||||
MsgUserTransferSuccess = "user.transfer_success"
|
||||
MsgUserTransferFailed = "user.transfer_failed"
|
||||
MsgUserTopUpProcessing = "user.topup_processing"
|
||||
MsgUserRegisterFailed = "user.register_failed"
|
||||
MsgUserDefaultTokenFailed = "user.default_token_failed"
|
||||
MsgUserAffCodeEmpty = "user.aff_code_empty"
|
||||
MsgUserEmailEmpty = "user.email_empty"
|
||||
MsgUserGitHubIdEmpty = "user.github_id_empty"
|
||||
MsgUserDiscordIdEmpty = "user.discord_id_empty"
|
||||
MsgUserOidcIdEmpty = "user.oidc_id_empty"
|
||||
MsgUserWeChatIdEmpty = "user.wechat_id_empty"
|
||||
MsgUserTelegramIdEmpty = "user.telegram_id_empty"
|
||||
MsgUserTelegramNotBound = "user.telegram_not_bound"
|
||||
MsgUserLinuxDOIdEmpty = "user.linux_do_id_empty"
|
||||
MsgUserPasswordLoginDisabled = "user.password_login_disabled"
|
||||
MsgUserRegisterDisabled = "user.register_disabled"
|
||||
MsgUserPasswordRegisterDisabled = "user.password_register_disabled"
|
||||
MsgUserUsernameOrPasswordEmpty = "user.username_or_password_empty"
|
||||
MsgUserUsernameOrPasswordError = "user.username_or_password_error"
|
||||
MsgUserEmailOrPasswordEmpty = "user.email_or_password_empty"
|
||||
MsgUserExists = "user.exists"
|
||||
MsgUserNotExists = "user.not_exists"
|
||||
MsgUserDisabled = "user.disabled"
|
||||
MsgUserSessionSaveFailed = "user.session_save_failed"
|
||||
MsgUserRequire2FA = "user.require_2fa"
|
||||
MsgUserEmailVerificationRequired = "user.email_verification_required"
|
||||
MsgUserVerificationCodeError = "user.verification_code_error"
|
||||
MsgUserInputInvalid = "user.input_invalid"
|
||||
MsgUserNoPermissionSameLevel = "user.no_permission_same_level"
|
||||
MsgUserNoPermissionHigherLevel = "user.no_permission_higher_level"
|
||||
MsgUserCannotCreateHigherLevel = "user.cannot_create_higher_level"
|
||||
MsgUserCannotDeleteRootUser = "user.cannot_delete_root_user"
|
||||
MsgUserCannotDisableRootUser = "user.cannot_disable_root_user"
|
||||
MsgUserCannotDemoteRootUser = "user.cannot_demote_root_user"
|
||||
MsgUserAlreadyAdmin = "user.already_admin"
|
||||
MsgUserAlreadyCommon = "user.already_common"
|
||||
MsgUserAdminCannotPromote = "user.admin_cannot_promote"
|
||||
MsgUserOriginalPasswordError = "user.original_password_error"
|
||||
MsgUserInviteQuotaInsufficient = "user.invite_quota_insufficient"
|
||||
MsgUserTransferQuotaMinimum = "user.transfer_quota_minimum"
|
||||
MsgUserTransferSuccess = "user.transfer_success"
|
||||
MsgUserTransferFailed = "user.transfer_failed"
|
||||
MsgUserTopUpProcessing = "user.topup_processing"
|
||||
MsgUserRegisterFailed = "user.register_failed"
|
||||
MsgUserDefaultTokenFailed = "user.default_token_failed"
|
||||
MsgUserAffCodeEmpty = "user.aff_code_empty"
|
||||
MsgUserEmailEmpty = "user.email_empty"
|
||||
MsgUserGitHubIdEmpty = "user.github_id_empty"
|
||||
MsgUserDiscordIdEmpty = "user.discord_id_empty"
|
||||
MsgUserOidcIdEmpty = "user.oidc_id_empty"
|
||||
MsgUserWeChatIdEmpty = "user.wechat_id_empty"
|
||||
MsgUserTelegramIdEmpty = "user.telegram_id_empty"
|
||||
MsgUserTelegramNotBound = "user.telegram_not_bound"
|
||||
MsgUserLinuxDOIdEmpty = "user.linux_do_id_empty"
|
||||
)
|
||||
|
||||
// Quota related messages
|
||||
@@ -151,34 +151,34 @@ const (
|
||||
|
||||
// Channel related messages
|
||||
const (
|
||||
MsgChannelNotExists = "channel.not_exists"
|
||||
MsgChannelIdFormatError = "channel.id_format_error"
|
||||
MsgChannelNoAvailableKey = "channel.no_available_key"
|
||||
MsgChannelGetListFailed = "channel.get_list_failed"
|
||||
MsgChannelGetTagsFailed = "channel.get_tags_failed"
|
||||
MsgChannelGetKeyFailed = "channel.get_key_failed"
|
||||
MsgChannelGetOllamaFailed = "channel.get_ollama_failed"
|
||||
MsgChannelQueryFailed = "channel.query_failed"
|
||||
MsgChannelNoValidUpstream = "channel.no_valid_upstream"
|
||||
MsgChannelUpstreamSaturated = "channel.upstream_saturated"
|
||||
MsgChannelGetAvailableFailed = "channel.get_available_failed"
|
||||
MsgChannelNotExists = "channel.not_exists"
|
||||
MsgChannelIdFormatError = "channel.id_format_error"
|
||||
MsgChannelNoAvailableKey = "channel.no_available_key"
|
||||
MsgChannelGetListFailed = "channel.get_list_failed"
|
||||
MsgChannelGetTagsFailed = "channel.get_tags_failed"
|
||||
MsgChannelGetKeyFailed = "channel.get_key_failed"
|
||||
MsgChannelGetOllamaFailed = "channel.get_ollama_failed"
|
||||
MsgChannelQueryFailed = "channel.query_failed"
|
||||
MsgChannelNoValidUpstream = "channel.no_valid_upstream"
|
||||
MsgChannelUpstreamSaturated = "channel.upstream_saturated"
|
||||
MsgChannelGetAvailableFailed = "channel.get_available_failed"
|
||||
)
|
||||
|
||||
// Model related messages
|
||||
const (
|
||||
MsgModelNameEmpty = "model.name_empty"
|
||||
MsgModelNameExists = "model.name_exists"
|
||||
MsgModelIdMissing = "model.id_missing"
|
||||
MsgModelGetListFailed = "model.get_list_failed"
|
||||
MsgModelGetFailed = "model.get_failed"
|
||||
MsgModelResetSuccess = "model.reset_success"
|
||||
MsgModelNameEmpty = "model.name_empty"
|
||||
MsgModelNameExists = "model.name_exists"
|
||||
MsgModelIdMissing = "model.id_missing"
|
||||
MsgModelGetListFailed = "model.get_list_failed"
|
||||
MsgModelGetFailed = "model.get_failed"
|
||||
MsgModelResetSuccess = "model.reset_success"
|
||||
)
|
||||
|
||||
// Vendor related messages
|
||||
const (
|
||||
MsgVendorNameEmpty = "vendor.name_empty"
|
||||
MsgVendorNameExists = "vendor.name_exists"
|
||||
MsgVendorIdMissing = "vendor.id_missing"
|
||||
MsgVendorNameEmpty = "vendor.name_empty"
|
||||
MsgVendorNameExists = "vendor.name_exists"
|
||||
MsgVendorIdMissing = "vendor.id_missing"
|
||||
)
|
||||
|
||||
// Group related messages
|
||||
@@ -198,20 +198,20 @@ const (
|
||||
|
||||
// Passkey related messages
|
||||
const (
|
||||
MsgPasskeyCreateFailed = "passkey.create_failed"
|
||||
MsgPasskeyLoginAbnormal = "passkey.login_abnormal"
|
||||
MsgPasskeyUpdateFailed = "passkey.update_failed"
|
||||
MsgPasskeyInvalidUserId = "passkey.invalid_user_id"
|
||||
MsgPasskeyVerifyFailed = "passkey.verify_failed"
|
||||
MsgPasskeyCreateFailed = "passkey.create_failed"
|
||||
MsgPasskeyLoginAbnormal = "passkey.login_abnormal"
|
||||
MsgPasskeyUpdateFailed = "passkey.update_failed"
|
||||
MsgPasskeyInvalidUserId = "passkey.invalid_user_id"
|
||||
MsgPasskeyVerifyFailed = "passkey.verify_failed"
|
||||
)
|
||||
|
||||
// 2FA related messages
|
||||
const (
|
||||
MsgTwoFANotEnabled = "twofa.not_enabled"
|
||||
MsgTwoFAUserIdEmpty = "twofa.user_id_empty"
|
||||
MsgTwoFAAlreadyExists = "twofa.already_exists"
|
||||
MsgTwoFARecordIdEmpty = "twofa.record_id_empty"
|
||||
MsgTwoFACodeInvalid = "twofa.code_invalid"
|
||||
MsgTwoFANotEnabled = "twofa.not_enabled"
|
||||
MsgTwoFAUserIdEmpty = "twofa.user_id_empty"
|
||||
MsgTwoFAAlreadyExists = "twofa.already_exists"
|
||||
MsgTwoFARecordIdEmpty = "twofa.record_id_empty"
|
||||
MsgTwoFACodeInvalid = "twofa.code_invalid"
|
||||
)
|
||||
|
||||
// Rate limit related messages
|
||||
@@ -264,20 +264,20 @@ const (
|
||||
|
||||
// OAuth related messages
|
||||
const (
|
||||
MsgOAuthInvalidCode = "oauth.invalid_code"
|
||||
MsgOAuthGetUserErr = "oauth.get_user_error"
|
||||
MsgOAuthAccountUsed = "oauth.account_used"
|
||||
MsgOAuthUnknownProvider = "oauth.unknown_provider"
|
||||
MsgOAuthStateInvalid = "oauth.state_invalid"
|
||||
MsgOAuthNotEnabled = "oauth.not_enabled"
|
||||
MsgOAuthUserDeleted = "oauth.user_deleted"
|
||||
MsgOAuthUserBanned = "oauth.user_banned"
|
||||
MsgOAuthBindSuccess = "oauth.bind_success"
|
||||
MsgOAuthAlreadyBound = "oauth.already_bound"
|
||||
MsgOAuthConnectFailed = "oauth.connect_failed"
|
||||
MsgOAuthTokenFailed = "oauth.token_failed"
|
||||
MsgOAuthUserInfoEmpty = "oauth.user_info_empty"
|
||||
MsgOAuthTrustLevelLow = "oauth.trust_level_low"
|
||||
MsgOAuthInvalidCode = "oauth.invalid_code"
|
||||
MsgOAuthGetUserErr = "oauth.get_user_error"
|
||||
MsgOAuthAccountUsed = "oauth.account_used"
|
||||
MsgOAuthUnknownProvider = "oauth.unknown_provider"
|
||||
MsgOAuthStateInvalid = "oauth.state_invalid"
|
||||
MsgOAuthNotEnabled = "oauth.not_enabled"
|
||||
MsgOAuthUserDeleted = "oauth.user_deleted"
|
||||
MsgOAuthUserBanned = "oauth.user_banned"
|
||||
MsgOAuthBindSuccess = "oauth.bind_success"
|
||||
MsgOAuthAlreadyBound = "oauth.already_bound"
|
||||
MsgOAuthConnectFailed = "oauth.connect_failed"
|
||||
MsgOAuthTokenFailed = "oauth.token_failed"
|
||||
MsgOAuthUserInfoEmpty = "oauth.user_info_empty"
|
||||
MsgOAuthTrustLevelLow = "oauth.trust_level_low"
|
||||
)
|
||||
|
||||
// Model layer error messages (for translation in controller)
|
||||
@@ -288,13 +288,29 @@ const (
|
||||
MsgInvalidInput = "common.invalid_input"
|
||||
)
|
||||
|
||||
// Distributor related messages
|
||||
const (
|
||||
MsgDistributorInvalidRequest = "distributor.invalid_request"
|
||||
MsgDistributorInvalidChannelId = "distributor.invalid_channel_id"
|
||||
MsgDistributorChannelDisabled = "distributor.channel_disabled"
|
||||
MsgDistributorTokenNoModelAccess = "distributor.token_no_model_access"
|
||||
MsgDistributorTokenModelForbidden = "distributor.token_model_forbidden"
|
||||
MsgDistributorModelNameRequired = "distributor.model_name_required"
|
||||
MsgDistributorInvalidPlayground = "distributor.invalid_playground_request"
|
||||
MsgDistributorGroupAccessDenied = "distributor.group_access_denied"
|
||||
MsgDistributorGetChannelFailed = "distributor.get_channel_failed"
|
||||
MsgDistributorNoAvailableChannel = "distributor.no_available_channel"
|
||||
MsgDistributorInvalidMidjourney = "distributor.invalid_midjourney_request"
|
||||
MsgDistributorInvalidParseModel = "distributor.invalid_request_parse_model"
|
||||
)
|
||||
|
||||
// Custom OAuth provider related messages
|
||||
const (
|
||||
MsgCustomOAuthNotFound = "custom_oauth.not_found"
|
||||
MsgCustomOAuthSlugEmpty = "custom_oauth.slug_empty"
|
||||
MsgCustomOAuthSlugExists = "custom_oauth.slug_exists"
|
||||
MsgCustomOAuthNameEmpty = "custom_oauth.name_empty"
|
||||
MsgCustomOAuthHasBindings = "custom_oauth.has_bindings"
|
||||
MsgCustomOAuthBindingNotFound = "custom_oauth.binding_not_found"
|
||||
MsgCustomOAuthProviderIdInvalid = "custom_oauth.provider_id_field_invalid"
|
||||
MsgCustomOAuthNotFound = "custom_oauth.not_found"
|
||||
MsgCustomOAuthSlugEmpty = "custom_oauth.slug_empty"
|
||||
MsgCustomOAuthSlugExists = "custom_oauth.slug_exists"
|
||||
MsgCustomOAuthNameEmpty = "custom_oauth.name_empty"
|
||||
MsgCustomOAuthHasBindings = "custom_oauth.has_bindings"
|
||||
MsgCustomOAuthBindingNotFound = "custom_oauth.binding_not_found"
|
||||
MsgCustomOAuthProviderIdInvalid = "custom_oauth.provider_id_field_invalid"
|
||||
)
|
||||
|
||||
@@ -241,6 +241,20 @@ user.create_default_token_error: "Failed to create default token"
|
||||
common.uuid_duplicate: "Please retry, the system generated a duplicate UUID!"
|
||||
common.invalid_input: "Invalid input"
|
||||
|
||||
# Distributor messages
|
||||
distributor.invalid_request: "Invalid request: {{.Error}}"
|
||||
distributor.invalid_channel_id: "Invalid channel ID"
|
||||
distributor.channel_disabled: "This channel has been disabled"
|
||||
distributor.token_no_model_access: "This token has no access to any models"
|
||||
distributor.token_model_forbidden: "This token has no access to model {{.Model}}"
|
||||
distributor.model_name_required: "Model name not specified, model name cannot be empty"
|
||||
distributor.invalid_playground_request: "Invalid playground request: {{.Error}}"
|
||||
distributor.group_access_denied: "No permission to access this group"
|
||||
distributor.get_channel_failed: "Failed to get available channel for model {{.Model}} under group {{.Group}} (distributor): {{.Error}}"
|
||||
distributor.no_available_channel: "No available channel for model {{.Model}} under group {{.Group}} (distributor)"
|
||||
distributor.invalid_midjourney_request: "Invalid Midjourney request: {{.Error}}"
|
||||
distributor.invalid_request_parse_model: "Invalid request, unable to parse model"
|
||||
|
||||
# Custom OAuth provider messages
|
||||
custom_oauth.not_found: "Custom OAuth provider not found"
|
||||
custom_oauth.slug_empty: "Slug cannot be empty"
|
||||
|
||||
@@ -242,6 +242,20 @@ user.create_default_token_error: "创建默认令牌失败"
|
||||
common.uuid_duplicate: "请重试,系统生成的 UUID 竟然重复了!"
|
||||
common.invalid_input: "输入不合法"
|
||||
|
||||
# Distributor messages
|
||||
distributor.invalid_request: "无效的请求,{{.Error}}"
|
||||
distributor.invalid_channel_id: "无效的渠道 Id"
|
||||
distributor.channel_disabled: "该渠道已被禁用"
|
||||
distributor.token_no_model_access: "该令牌无权访问任何模型"
|
||||
distributor.token_model_forbidden: "该令牌无权访问模型 {{.Model}}"
|
||||
distributor.model_name_required: "未指定模型名称,模型名称不能为空"
|
||||
distributor.invalid_playground_request: "无效的playground请求,{{.Error}}"
|
||||
distributor.group_access_denied: "无权访问该分组"
|
||||
distributor.get_channel_failed: "获取分组 {{.Group}} 下模型 {{.Model}} 的可用渠道失败(distributor):{{.Error}}"
|
||||
distributor.no_available_channel: "分组 {{.Group}} 下模型 {{.Model}} 无可用渠道(distributor)"
|
||||
distributor.invalid_midjourney_request: "无效的midjourney请求,{{.Error}}"
|
||||
distributor.invalid_request_parse_model: "无效的请求,无法解析模型"
|
||||
|
||||
# Custom OAuth provider messages
|
||||
custom_oauth.not_found: "自定义 OAuth 提供商不存在"
|
||||
custom_oauth.slug_empty: "标识符不能为空"
|
||||
|
||||
@@ -242,6 +242,20 @@ user.create_default_token_error: "建立預設令牌失敗"
|
||||
common.uuid_duplicate: "請重試,系統生成的 UUID 竟然重複了!"
|
||||
common.invalid_input: "輸入不合法"
|
||||
|
||||
# Distributor messages
|
||||
distributor.invalid_request: "無效的請求,{{.Error}}"
|
||||
distributor.invalid_channel_id: "無效的管道 Id"
|
||||
distributor.channel_disabled: "該管道已被禁用"
|
||||
distributor.token_no_model_access: "該令牌無權存取任何模型"
|
||||
distributor.token_model_forbidden: "該令牌無權存取模型 {{.Model}}"
|
||||
distributor.model_name_required: "未指定模型名稱,模型名稱不能為空"
|
||||
distributor.invalid_playground_request: "無效的playground請求,{{.Error}}"
|
||||
distributor.group_access_denied: "無權存取該分組"
|
||||
distributor.get_channel_failed: "獲取分組 {{.Group}} 下模型 {{.Model}} 的可用管道失敗(distributor):{{.Error}}"
|
||||
distributor.no_available_channel: "分組 {{.Group}} 下模型 {{.Model}} 無可用管道(distributor)"
|
||||
distributor.invalid_midjourney_request: "無效的midjourney請求,{{.Error}}"
|
||||
distributor.invalid_request_parse_model: "無效的請求,無法解析模型"
|
||||
|
||||
# Custom OAuth provider messages
|
||||
custom_oauth.not_found: "自訂 OAuth 供應者不存在"
|
||||
custom_oauth.slug_empty: "標識符不能為空"
|
||||
|
||||
Reference in New Issue
Block a user