package apperr const LogsErrorMessage = "Access to the requested resource is forbidden due to incorrect password and/or username." const BodyErrorMessage = "The request cannot be processed due to a mismatch in the format of the body." const IdUint32ErrorMessage = "The server expects the ID to be in the format of an unsigned 32-bit integer (uint32)." const ArticleNotFoundErrorMessage = "Article not found" const ImageNotFoundErrorMessage = "Image not found" const DisplayNameErrorMessage = "Display name must be 60 characters or fewer." const ArticleTitleErrorMessage = "Article title must be between 3 and 200 characters." const RegistrationClosedErrorMessage = "You are not allowed to create a user. Log in or reset database." const RegistrationFailedErrorMessage = "Registration failed. Please try again later." const UnauthorizedErrorMessage = "You must be logged in to access this resource." const VerificationFailedErrorMessage = "The verification code is invalid or has expired." const AlreadyVerifiedErrorMessage = "This account is already verified and cannot be cancelled this way." const VerificationRequiredErrorMessage = "You must verify your account to access this resource." const PasswordResetRequestedMessage = "If an account exists for that email, a password reset link has been sent." const PasswordResetFailedErrorMessage = "The password reset code is invalid or has expired." const TooManyRequestsErrorMessage = "Too many requests. Please try again later." const EmailHasAccountErrorMessage = "This address already has an account." const PendingInviteErrorMessage = "There's already a pending invite for this address." const InviteNotSentErrorMessage = "Couldn't send the invite. Try again in a moment." const InviteNotFoundErrorMessage = "Invite not found" const InviteAlreadyAcceptedErrorMessage = "This invite has already been accepted." const InviteInvalidErrorMessage = "This invite link doesn't work." const InviteExpiredErrorMessage = "This invite has expired." const OwnerRequiredErrorMessage = "Only the owner can do this." const UsernameTakenErrorMessage = "That username is taken. Try another." const MediaQueryErrorMessage = "The media query is invalid." const MediaFilenameErrorMessage = "Enter a filename." const MediaMergeConflictErrorMessage = "Some of the images to merge changed. Refresh and try again." const MediaMergeRequestErrorMessage = "Choose an image to keep and at least one other image to merge into it." const UpdateNotPreparedErrorMessage = "This server cannot update itself yet." const UpdateAlreadyRunningErrorMessage = "An update is already running or waiting to be installed." const NothingToUpdateErrorMessage = "There is nothing to update." const UpdateRefusedErrorMessage = "This update cannot be downloaded." const UpdateRestartMismatchErrorMessage = "The update state changed. Reload the page and try again." const ArticleBodyFormatErrorMessage = "The format must be one of: markdown, html, json." const APIKeyNotFoundErrorMessage = "API key not found" const APIKeyExpiryErrorMessage = "The expiry must be a date in the future." const SessionRequiredErrorMessage = "This action needs a real session." const OwnerOrAdminRequiredErrorMessage = "Only owners and admins can do this." const PurgeConflictErrorMessage = "The library changed, so nothing was purged. Check the new summary and try again." const PurgeBusyErrorMessage = "A purge is already running." const PurgeIntervalErrorMessage = "Enter a whole number of days between 1 and 365." const VariantNotFoundErrorMessage = "Variant not found" const VariantNameErrorMessage = "Use lowercase letters, numbers and dashes, 2 to 32 characters." const VariantDimensionsErrorMessage = "Width and height must be between 1 and 8000, and one of them is required." const VariantFitErrorMessage = "Fit must be cover, contain or inside." const VariantQualityErrorMessage = "Quality must be between 1 and 100." const VariantInvalidErrorMessage = "The variant is not valid." const VariantExistsErrorMessageFormat = "A variant named ā€œ%sā€ already exists. Choose another name." const VariantFormatErrorMessageFormat = "Format must be %s." const VariantSourceTooLargeErrorMessage = "The source image is too large to generate this variant." const VariantSourceUnsupportedErrorMessage = "Variants aren't generated for this format." const VariantSourceUnreadableErrorMessage = "The source image can't be read, so this variant can't be generated." const CachePurgeScopeErrorMessage = "Scope must be all, unused, variant or image." const CachePurgeTargetErrorMessage = "A variant name or an image id is required for this scope." const VariantUnknownMessage = "Unknown variant" const VariantUnsupportedParameterMessage = "Unsupported parameter" const SiteNotFoundErrorMessage = "site_not_found" const SiteKeyTakenErrorMessage = "site_key_taken" const SiteHasArticlesErrorMessage = "site_has_articles" const DefaultSiteErrorMessage = "default_site" const SiteKeyImmutableErrorMessage = "key_immutable" const InvalidSiteURLErrorMessage = "invalid_site_url" const InvalidLocaleErrorMessage = "invalid_locale" const SiteImageNotFoundErrorMessage = "image_not_found" const UseSetDefaultErrorMessage = "use_set_default" const InvalidReassignErrorMessage = "invalid_reassign" const InvalidSocialTypeErrorMessage = "invalid_social_type" const AuthorNotFoundErrorMessage = "author_not_found" const AuthorSlugTakenErrorMessage = "author_slug_taken" const AuthorHasArticlesErrorMessage = "author_has_articles" const UserAlreadyLinkedErrorMessage = "user_already_linked" const AuthorAlreadyLinkedErrorMessage = "author_already_linked" const UserNotFoundErrorMessage = "user_not_found" const AuthorRightsErrorMessage = "author_rights" const BioTooLongErrorMessage = "bio_too_long" const InvalidURLErrorMessage = "invalid_url" const TooManyLinksErrorMessage = "too_many_links" const InvalidSlugErrorMessage = "invalid_slug" const AuthorImageNotFoundErrorMessage = "image_not_found"