<commit_before>{
    "common": {
        "mail": {
            "title": "Ghost at {domain}"
        },
        "seeLinkForInstructions": "See {link} for instructions.",
        "time": {
            "seconds": "seconds"
        },
        "api": {
            "authentication": {
                "sampleBlogDescription": "Thoughts, stories and ideas.",
                "mail": {
                    "resetPassword": "<PASSWORD>",
                    "resetPasswordRequired": "<PASSWORD>",
                    "checkEmailForInstructions": "Check your email for further instructions.",
                    "passwordChanged": "Password changed successfully.",
                    "invitationAccepted": "Invitation accepted.",
                    "yourNewGhostBlog": "Your New Ghost Site"
                }
            },
            "mail": {
                "testGhostEmail": "Test Ghost Email"
            },
            "users": {
                "mail": {
                    "invitedByName": "{invitedByName} has invited you to join {blogName}"
                }
            },
            "actions": {
                "images": {
                    "upload": "upload image"
                }
            }
        }
    },
    "errors": {
        "middleware": {
            "api": {
                "versionMismatch": "Client request for {clientVersion} does not match server version {serverVersion}."
            },
            "auth": {
                "clientCredentialsNotProvided": "Client credentials were not provided",
                "clientCredentialsNotValid": "Client credentials were not valid",
                "forInformationRead": "For information on how to fix this, please read {url}.",
                "unknownOrigin": "Could not determine origin of request. Please ensure an Origin or Referrer header is present.",
                "mismatchedOrigin": "Request made from incorrect origin. Expected '{expected}' received '{actual}'.",
                "missingUserIDForSession": "Cannot create session without user id.",
                "accessDenied": "Access denied.",
                "pleaseSignIn": "Please Sign In",
                "authorizationFailed": "Authorization failed",
                "missingContentMemberOrIntegration": "Unable to determine the authenticated member or integration. Check the supplied Content API Key and ensure cookies are being passed through if member auth is failing.",
                "missingAdminUserOrIntegration": "Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.",
                "adminApiKeyMissing": "Admin API Token missing kid header claim.",
                "unknownAdminApiKey": "Unknown Admin API Key",
                "unknownContentApiKey": "Unknown Content API Key",
                "adminApiKidMissing": "Admin API kid missing.",
                "invalidApiKeyType": "Invalid API Key type",
                "invalidRequest": "Invalid Request",
                "invalidToken": "Invalid token",
                "invalidTokenWithMessage": "Invalid token: {message}",
                "incorrectAuthHeaderFormat": "Authorization header format is \"Authorization: Ghost [token]\""
            },
            "privateblogging": {
                "wrongPassword": "<PASSWORD>"
            },
            "spamprevention": {
                "tooManyAttempts": "Too many attempts.",
                "noUsername": "No username.",
                "noPassword": "No password entered",
                "tooManySigninAttempts": {
                    "error": "Only {rateSigninAttempts} tries per IP address every {rateSigninPeriod} seconds.",
                    "context": "Too many login attempts."
                },
                "tryAgainLater": " Please try again later",
                "waitOneHour": " Please wait 1 hour.",
                "noEmail": "No email.",
                "forgottenPasswordEmail": {
                    "error": "Only {rfa} forgotten password attempts per email every {rfp} seconds.",
                    "context": "Forgotten password reset attempt failed"
                },
                "forgottenPasswordIp": {
                    "error": "Only {rfa} tries per IP address every {rfp} seconds.",
                    "context": "Forgotten password reset attempt failed"
                }
            },
            "themehandler": {
                "missingTheme": "The currently active theme \"{theme}\" is missing.",
                "invalidTheme": "The currently active theme \"{theme}\" is invalid.",
                "themeHasErrors": "The currently active theme \"{theme}\" has errors, but will still work.",
                "activateFailed": "Unable to activate the theme \"{theme}\"."
            },
            "redirects": {
                "register": "Could not register custom redirects."
            }
        },
        "utils": {
            "parsepackagejson": {
                "couldNotReadPackage": "Could not read package.json file",
                "nameOrVersionMissing": "\"name\" or \"version\" is missing from theme package.json file.",
                "willBeRequired": "This will be required in future. Please see {url}",
                "themeFileIsMalformed": "Theme package.json file is malformed"
            },
            "blogIcon": {
                "error": "Could not fetch icon dimensions."
            },
            "images": {
                "invalidDimensions": "Could not fetch image dimensions."
            },
            "redirectsWrongFormat": "Incorrect redirects file format."
        },
        "config": {
            "couldNotLocateConfigFile": {
                "error": "Could not locate a configuration file.",
                "help": "Please check your deployment for config.js or config.example.js."
            },
            "couldNotOpenForReading": {
                "error": "Could not open {file} for read.",
                "help": "Please check your deployment for config.js or config.example.js."
            },
            "couldNotOpenForWriting": {
                "error": "Could not open {file} for write.",
                "help": "Please check your deployment for config.js or config.example.js."
            },
            "invalidUrlInConfig": {
                "error": "invalid site url",
                "description": "Your site url in config.js is invalid.",
                "help": "Please make sure this is a valid url before restarting"
            },
            "urlCannotContainGhostSubdir": {
                "error": "ghost subdirectory not allowed",
                "description": "Your site url in config.js cannot contain a subdirectory called ghost.",
                "help": "Please rename the subdirectory before restarting"
            },
            "urlCannotContainPrivateSubdir": {
                "error": "private subdirectory not allowed",
                "description": "Your site url in config.js cannot contain a subdirectory called private.",
                "help": "Please rename the subdirectory before restarting"
            },
            "dbConfigInvalid": {
                "error": "invalid database configuration",
                "description": "Your database configuration in config.js is invalid.",
                "help": "Please make sure this is a valid Bookshelf database configuration"
            },
            "deprecatedProperty": {
                "error": "The configuration property [{property}] has been deprecated.",
                "explanation": "This will be removed in a future version, please update your config.js file.",
                "help": "Please check {url} for the most up-to-date example."
            },
            "invalidServerValues": {
                "error": "invalid server configuration",
                "description": "Your server values (socket, or host and port) in config.js are invalid.",
                "help": "Please provide them before restarting."
            }
        },
        "general": {
            "maintenance": "Site is currently undergoing maintenance, please wait a moment then retry.",
            "maintenanceUrlService": "Site is starting up, please wait a moment then retry.",
            "requiredOnFuture": "This will be required in future. Please see {link}",
            "internalError": "Something went wrong.",
            "jsonParse": "Could not parse JSON: {context}."
        },
        "httpServer": {
            "addressInUse": {
                "error": "(EADDRINUSE) Cannot start Ghost.",
                "context": "Port {port} is already in use by another program.",
                "help": "Is another Ghost instance already running?"
            },
            "otherError": {
                "error": "(Code: {errorNumber})",
                "context": "There was an error starting your server.",
                "help": "Please use the error code above to search for a solution."
            }
        },
        "mail": {
            "incompleteMessageData": {
                "error": "Incomplete message data."
            },
            "failedSendingEmail": {
                "error": "Failed to send email."
            },
            "noMailServerAtAddress": {
                "error": " No mail server found at {domain}."
            },
            "reason": " Reason: {reason}."
        },
        "models": {
            "general": {
                "sql": "Could not understand request."
            },
            "invite": {
                "notEnoughPermission": "You do not have permission to perform this action"
            },
            "post": {
                "postNotFound": "Post not found.",
                "untitled": "(Untitled)",
                "valueCannotBeBlank": "Value in {key} cannot be blank.",
                "isAlreadyPublished": "Your post is already published, please reload your page.",
                "expectedPublishedAtInFuture": "Date must be at least {cannotScheduleAPostBeforeInMinutes} minutes in the future.",
                "noUserFound": "No user found",
                "notEnoughPermission": "You do not have permission to perform this action",
                "tagUpdates": {
                    "error": "Unable to save tags.",
                    "help": "Your post was saved, but your tags were not updated."
                }
            },
            "role": {
                "roleNotFound": "Role not found",
                "notEnoughPermission": "You do not have permission to perform this action"
            },
            "settings": {
                "valueCannotBeBlank": "Value in [settings.key] cannot be blank.",
                "unableToFindSetting": "Unable to find setting to update: {key}",
                "unableToFindDefaultSetting": "Unable to find default setting: {key}"
            },
            "user": {
                "missingContext": "missing context",
                "onlyOneRolePerUserSupported": "Only one role per user is supported at the moment.",
                "methodDoesNotSupportOwnerRole": "This method does not support assigning the owner role",
                "passwordDoesNotComplyLength": "Your password must be at least {minLength} characters long.",
                "passwordDoesNotComplySecurity": "Sorry, you cannot use an insecure password.",
                "notEnoughPermission": "You do not have permission to perform this action",
                "noUserWithEnteredEmailAddr": "There is no user with that email address.",
                "userIsInactive": "The user with that email address is inactive.",
                "userUpdateError": {
                    "emailIsAlreadyInUse": "Email is already in use",
                    "context": "Error thrown from user update during login",
                    "help": "Visit and save your profile after logging in to check for problems."
                },
                "incorrectPassword": "Your password is incorrect.",
                "accountSuspended": "Your account was suspended.",
                "newPasswordsDoNotMatch": "Your new passwords do not match",
                "passwordRequiredForOperation": "Password is required for this operation",
                "expiredToken": "Expired token",
                "tokenLocked": "Token locked",
                "invalidToken": "Invalid token",
                "userNotFound": "User not found",
                "ownerNotFound": "Owner not found",
                "onlyOwnerCanTransferOwnerRole": "Only owners are able to transfer the owner role.",
                "onlyAdmCanBeAssignedOwnerRole": "Only administrators can be assigned the owner role.",
                "onlyActiveAdmCanBeAssignedOwnerRole": "Only active administrators can be assigned the owner role."
            },
            "api_key": {
                "apiKeyNotFound": "API Key not found"
            },
            "email": {
                "emailNotFound": "Email not found.",
                "retryNotAllowed": "Only failed emails can be retried"
            },
            "base": {
                "index": {
                    "missingContext": "missing context"
                },
                "token": {
                    "noUserFound": "No user found",
                    "tokenNotFound": "Token not found"
                },
                "invalidDate": "Date format for `{key}` is invalid."
            },
            "plugins": {
                "filter": {
                    "errorParsing": "Error parsing filter",
                    "forInformationRead": "For more information on how to use filter, see {url}"
                }
            }
        },
        "permissions": {
            "noActionsMapFound": {
                "error": "No actions map found, ensure you have loaded permissions into database and then call permissions.init() before use."
            },
            "applyStatusRules": {
                "error": "You do not have permission to retrieve {docName} with that status"
            },
            "noPermissionToAction": "You do not have permission to perform this action"
        },
        "updateCheck": {
            "checkingForUpdatesFailed": {
                "error": "Checking for updates failed, your site will continue to function.",
                "help": "If you get this error repeatedly, please seek help from {url}."
            },
            "unableToDecodeUpdateResponse": {
                "error": "Unable to decode update response"
            }
        },
        "api": {
            "common": {
                "invalidTokenStructure": "Invalid token structure",
                "notImplemented": "The server does not support the functionality required to fulfill the request."
            },
            "authentication": {
                "setupUnableToRun": "Database missing fixture data. Please reset database and try again.",
                "setupMustBeCompleted": "Setup must be completed before making this request.",
                "noEmailProvided": "No email provided.",
                "noTokenProvided": "No token provided.",
                "noPasswordProvided": "No password provided.",
                "noNameProvided": "No name provided.",
                "invalidEmailReceived": "The server did not receive a valid email",
                "setupAlreadyCompleted": "Setup has already been completed.",
                "unableToSendWelcomeEmail": "Unable to send welcome email, your site will continue to function.",
                "checkEmailConfigInstructions": "Please see {url} for instructions on configuring email.",
                "notLoggedIn": "You are not logged in.",
                "notTheBlogOwner": "You are not the site owner.",
                "invalidTokenTypeHint": "Invalid token_type_hint given.",
                "invalidTokenProvided": "Invalid token provided",
                "tokenRevocationFailed": "Token revocation failed"
            },
            "configuration": {
                "invalidKey": "Invalid key"
            },
            "db": {
                "missingFile": "Please select a database file to import.",
                "invalidFile": "Unsupported file. Please try any of the following formats: {extensions}",
                "noPermissionToExportData": "You do not have permission to export data (no rights).",
                "noPermissionToImportData": "You do not have permission to import data (no rights)."
            },
            "mail": {
                "noPermissionToSendEmail": "You do not have permission to send mail.",
                "cannotFindCurrentUser": "Could not find the current user"
            },
            "notifications": {
                "noPermissionToBrowseNotif": "You do not have permission to browse notifications.",
                "noPermissionToAddNotif": "You do not have permission to add notifications.",
                "noPermissionToDestroyNotif": "You do not have permission to destroy notifications.",
                "noPermissionToDismissNotif": "You do not have permission to dismiss this notification.",
                "notificationDoesNotExist": "Notification does not exist."
            },
            "posts": {
                "postNotFound": "Post not found."
            },
            "authors": {
                "notFound": "Author not found."
            },
            "pages": {
                "pageNotFound": "Page not found."
            },
            "job": {
                "notFound": "Job not found.",
                "publishInThePast": "Use the force flag to publish a post in the past."
            },
            "redirects": {
                "missingFile": "Please select a JSON file.",
                "invalidFile": "Please select a valid JSON file to import."
            },
            "resource": {
                "resourceNotFound": "{resource} not found."
            },
            "routes": {
                "missingFile": "Please select a YAML file.",
                "invalidFile": "Please select a valid YAML file to import."
            },
            "settings": {
                "problemFindingSetting": "Problem finding setting: {key}",
                "accessCoreSettingFromExtReq": "Attempted to access core setting from external request",
                "invalidEmailReceived": "Please send a valid email",
                "activeThemeSetViaAPI": {
                    "error": "Attempted to change active_theme via settings API",
                    "help": "Please activate theme via the themes API endpoints instead"
                },
                "invalidJsonInLabs": "Error: Invalid JSON in settings.labs",
                "labsColumnCouldNotBeParsed": "The column with key \"labs\" could not be parsed as JSON",
                "tryUpdatingLabs": "Please try updating a setting on the labs page, or manually editing your DB",
                "noPermissionToEditSettings": "You do not have permission to edit settings.",
                "noPermissionToReadSettings": "You do not have permission to read settings."
            },
            "slugs": {
                "couldNotGenerateSlug": "Could not generate slug.",
                "unknownSlugType": "Unknown slug type '{type}'."
            },
            "members": {
                "memberNotFound": "Member not found.",
                "memberAlreadyExists": "Email address is already member.",
                "stripeNotConnected": {
                    "message": "Member not imported, Stripe account missing",
                    "context": "Attempting to import members with Stripe data when there is no Stripe account connected",
                    "help": "Connect the correct Stripe account, and re-run the import"
                },
                "stripeCustomerNotFound": {
                    "context": "The customer does not exist in currently linked Stripe account.",
                    "help": "Connect the correct Stripe account, and re-run the import."
                }
            },
            "tags": {
                "tagNotFound": "Tag not found."
            },
            "labels": {
                "labelNotFound": "Label not found.",
                "labelAlreadyExists": "Label already exists"
            },
            "themes": {
                "noPermissionToBrowseThemes": "You do not have permission to browse themes.",
                "noPermissionToEditThemes": "You do not have permission to edit themes.",
                "themeDoesNotExist": "Theme does not exist.",
                "invalidTheme": "Theme is not compatible or contains errors.",
                "invalidThemeName": "Please select a valid theme.",
                "missingFile": "Please select a theme.",
                "invalidFile": "Please select a valid zip file.",
                "overrideCasper": "Please rename your zip, it's not allowed to override the default casper theme.",
                "destroyCasper": "Deleting the default casper theme is not allowed.",
                "destroyActive": "Deleting the active theme is not allowed."
            },
            "images": {
                "missingFile": "Please select an image.",
                "invalidFile": "Please select a valid image.",
                "isNotSquare": "Please select a valid image file with square dimensions."
            },
            "icons": {
                "missingFile": "Please select an icon.",
                "invalidFile": "Icon must be a square .ico or .png file between 60px – 1,000px, under 100kb.",
                "couldNotGetSize": "Couldn/'t get icon dimensions"
            },
            "users": {
                "userNotFound": "User not found.",
                "cannotChangeOwnRole": "You cannot change your own role.",
                "cannotChangeStatus": "You cannot change your own status.",
                "cannotChangeOwnersRole": "Cannot change Owner's role",
                "noPermissionToEditUser": "You do not have permission to edit this user",
                "noPermissionToAddUser": "You do not have permission to add this user",
                "noEmailProvided": "No email provided.",
                "userAlreadyRegistered": "User is already registered.",
                "noPermissionToDestroyUser": "You do not have permission to destroy this user.",
                "noPermissionToChangeUsersPwd": "You do not have permission to change the password for this user"
            },
            "utils": {
                "noPermissionToCall": "You do not have permission to {method} {docName}",
                "noRootKeyProvided": "No root key ('{docName}') provided.",
                "invalidStructure": "No valid object structure provided for: {key}",
                "invalidIdProvided": "Invalid id provided."
            },
            "invites": {
                "inviteNotFound": "Invite not found.",
                "inviteExpired": "Invite is expired.",
                "emailIsRequired": "E-Mail is required.",
                "roleIsRequired": "Role is required",
                "roleNotFound": "Role not found",
                "errorSendingEmail": {
                    "error": "Error sending email: {message}",
                    "help": "Please check your email settings and resend the invitation."
                },
                "notAllowedToInviteOwner": "Not allowed to invite an owner user.",
                "notAllowedToInvite": "Not allowed to invite this role."
            },
            "webhooks": {
                "webhookAlreadyExists": "Target URL has already been used for this event."
            },
            "oembed": {
                "noUrlProvided": "No url provided.",
                "insufficientMetadata": "URL contains insufficient metadata for bookmark card.",
                "unknownProvider": "No provider found for supplied URL."
            },
            "userMessages": {
                "InternalServerError": "Internal server error, cannot {action}.",
                "IncorrectUsageError": "Incorrect usage error, cannot {action}.",
                "NotFoundError": "Resource not found error, cannot {action}.",
                "BadRequestError": "Request not understood error, cannot {action}.",
                "UnauthorizedError": "Authorisation error, cannot {action}.",
                "NoPermissionError": "Permission error, cannot {action}.",
                "ValidationError": "Validation error, cannot {action}.",
                "UnsupportedMediaTypeError": "Unsupported media error, cannot {action}.",
                "TooManyRequestsError": "Too many requests error, cannot {action}.",
                "MaintenanceError": "Server down for maintenance, cannot {action}.",
                "MethodNotAllowedError": "Method not allowed, cannot {action}.",
                "RequestEntityTooLargeError": "Request too large, cannot {action}.",
                "TokenRevocationError": "Token is not available, cannot {action}.",
                "VersionMismatchError": "Version mismatch error, cannot {action}.",
                "DataExportError": "Error exporting content.",
                "DataImportError": "Duplicated entry, cannot save {action}.",
                "DatabaseVersionError": "Database version compatibility error, cannot {action}.",<commit_msg>Shortened insufficient oembed data error message<commit_after>{
    "common": {
        "mail": {
            "title": "Ghost at {domain}"
        },
        "seeLinkForInstructions": "See {link} for instructions.",
        "time": {
            "seconds": "seconds"
        },
        "api": {
            "authentication": {
                "sampleBlogDescription": "Thoughts, stories and ideas.",
                "mail": {
                    "resetPassword": "<PASSWORD>",
                    "resetPasswordRequired": "Reset Password",
                    "checkEmailForInstructions": "Check your email for further instructions.",
                    "passwordChanged": "Password changed successfully.",
                    "invitationAccepted": "Invitation accepted.",
                    "yourNewGhostBlog": "Your New Ghost Site"
                }
            },
            "mail": {
                "testGhostEmail": "Test Ghost Email"
            },
            "users": {
                "mail": {
                    "invitedByName": "{invitedByName} has invited you to join {blogName}"
                }
            },
            "actions": {
                "images": {
                    "upload": "upload image"
                }
            }
        }
    },
    "errors": {
        "middleware": {
            "api": {
                "versionMismatch": "Client request for {clientVersion} does not match server version {serverVersion}."
            },
            "auth": {
                "clientCredentialsNotProvided": "Client credentials were not provided",
                "clientCredentialsNotValid": "Client credentials were not valid",
                "forInformationRead": "For information on how to fix this, please read {url}.",
                "unknownOrigin": "Could not determine origin of request. Please ensure an Origin or Referrer header is present.",
                "mismatchedOrigin": "Request made from incorrect origin. Expected '{expected}' received '{actual}'.",
                "missingUserIDForSession": "Cannot create session without user id.",
                "accessDenied": "Access denied.",
                "pleaseSignIn": "Please Sign In",
                "authorizationFailed": "Authorization failed",
                "missingContentMemberOrIntegration": "Unable to determine the authenticated member or integration. Check the supplied Content API Key and ensure cookies are being passed through if member auth is failing.",
                "missingAdminUserOrIntegration": "Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.",
                "adminApiKeyMissing": "Admin API Token missing kid header claim.",
                "unknownAdminApiKey": "Unknown Admin API Key",
                "unknownContentApiKey": "Unknown Content API Key",
                "adminApiKidMissing": "Admin API kid missing.",
                "invalidApiKeyType": "Invalid API Key type",
                "invalidRequest": "Invalid Request",
                "invalidToken": "Invalid token",
                "invalidTokenWithMessage": "Invalid token: {message}",
                "incorrectAuthHeaderFormat": "Authorization header format is \"Authorization: Ghost [token]\""
            },
            "privateblogging": {
                "wrongPassword": "<PASSWORD>"
            },
            "spamprevention": {
                "tooManyAttempts": "Too many attempts.",
                "noUsername": "No username.",
                "noPassword": "<PASSWORD>",
                "tooManySigninAttempts": {
                    "error": "Only {rateSigninAttempts} tries per IP address every {rateSigninPeriod} seconds.",
                    "context": "Too many login attempts."
                },
                "tryAgainLater": " Please try again later",
                "waitOneHour": " Please wait 1 hour.",
                "noEmail": "No email.",
                "forgottenPasswordEmail": {
                    "error": "Only {rfa} forgotten password attempts per email every {rfp} seconds.",
                    "context": "Forgotten password reset attempt failed"
                },
                "forgottenPasswordIp": {
                    "error": "Only {rfa} tries per IP address every {rfp} seconds.",
                    "context": "Forgotten password reset attempt failed"
                }
            },
            "themehandler": {
                "missingTheme": "The currently active theme \"{theme}\" is missing.",
                "invalidTheme": "The currently active theme \"{theme}\" is invalid.",
                "themeHasErrors": "The currently active theme \"{theme}\" has errors, but will still work.",
                "activateFailed": "Unable to activate the theme \"{theme}\"."
            },
            "redirects": {
                "register": "Could not register custom redirects."
            }
        },
        "utils": {
            "parsepackagejson": {
                "couldNotReadPackage": "Could not read package.json file",
                "nameOrVersionMissing": "\"name\" or \"version\" is missing from theme package.json file.",
                "willBeRequired": "This will be required in future. Please see {url}",
                "themeFileIsMalformed": "Theme package.json file is malformed"
            },
            "blogIcon": {
                "error": "Could not fetch icon dimensions."
            },
            "images": {
                "invalidDimensions": "Could not fetch image dimensions."
            },
            "redirectsWrongFormat": "Incorrect redirects file format."
        },
        "config": {
            "couldNotLocateConfigFile": {
                "error": "Could not locate a configuration file.",
                "help": "Please check your deployment for config.js or config.example.js."
            },
            "couldNotOpenForReading": {
                "error": "Could not open {file} for read.",
                "help": "Please check your deployment for config.js or config.example.js."
            },
            "couldNotOpenForWriting": {
                "error": "Could not open {file} for write.",
                "help": "Please check your deployment for config.js or config.example.js."
            },
            "invalidUrlInConfig": {
                "error": "invalid site url",
                "description": "Your site url in config.js is invalid.",
                "help": "Please make sure this is a valid url before restarting"
            },
            "urlCannotContainGhostSubdir": {
                "error": "ghost subdirectory not allowed",
                "description": "Your site url in config.js cannot contain a subdirectory called ghost.",
                "help": "Please rename the subdirectory before restarting"
            },
            "urlCannotContainPrivateSubdir": {
                "error": "private subdirectory not allowed",
                "description": "Your site url in config.js cannot contain a subdirectory called private.",
                "help": "Please rename the subdirectory before restarting"
            },
            "dbConfigInvalid": {
                "error": "invalid database configuration",
                "description": "Your database configuration in config.js is invalid.",
                "help": "Please make sure this is a valid Bookshelf database configuration"
            },
            "deprecatedProperty": {
                "error": "The configuration property [{property}] has been deprecated.",
                "explanation": "This will be removed in a future version, please update your config.js file.",
                "help": "Please check {url} for the most up-to-date example."
            },
            "invalidServerValues": {
                "error": "invalid server configuration",
                "description": "Your server values (socket, or host and port) in config.js are invalid.",
                "help": "Please provide them before restarting."
            }
        },
        "general": {
            "maintenance": "Site is currently undergoing maintenance, please wait a moment then retry.",
            "maintenanceUrlService": "Site is starting up, please wait a moment then retry.",
            "requiredOnFuture": "This will be required in future. Please see {link}",
            "internalError": "Something went wrong.",
            "jsonParse": "Could not parse JSON: {context}."
        },
        "httpServer": {
            "addressInUse": {
                "error": "(EADDRINUSE) Cannot start Ghost.",
                "context": "Port {port} is already in use by another program.",
                "help": "Is another Ghost instance already running?"
            },
            "otherError": {
                "error": "(Code: {errorNumber})",
                "context": "There was an error starting your server.",
                "help": "Please use the error code above to search for a solution."
            }
        },
        "mail": {
            "incompleteMessageData": {
                "error": "Incomplete message data."
            },
            "failedSendingEmail": {
                "error": "Failed to send email."
            },
            "noMailServerAtAddress": {
                "error": " No mail server found at {domain}."
            },
            "reason": " Reason: {reason}."
        },
        "models": {
            "general": {
                "sql": "Could not understand request."
            },
            "invite": {
                "notEnoughPermission": "You do not have permission to perform this action"
            },
            "post": {
                "postNotFound": "Post not found.",
                "untitled": "(Untitled)",
                "valueCannotBeBlank": "Value in {key} cannot be blank.",
                "isAlreadyPublished": "Your post is already published, please reload your page.",
                "expectedPublishedAtInFuture": "Date must be at least {cannotScheduleAPostBeforeInMinutes} minutes in the future.",
                "noUserFound": "No user found",
                "notEnoughPermission": "You do not have permission to perform this action",
                "tagUpdates": {
                    "error": "Unable to save tags.",
                    "help": "Your post was saved, but your tags were not updated."
                }
            },
            "role": {
                "roleNotFound": "Role not found",
                "notEnoughPermission": "You do not have permission to perform this action"
            },
            "settings": {
                "valueCannotBeBlank": "Value in [settings.key] cannot be blank.",
                "unableToFindSetting": "Unable to find setting to update: {key}",
                "unableToFindDefaultSetting": "Unable to find default setting: {key}"
            },
            "user": {
                "missingContext": "missing context",
                "onlyOneRolePerUserSupported": "Only one role per user is supported at the moment.",
                "methodDoesNotSupportOwnerRole": "This method does not support assigning the owner role",
                "passwordDoesNotComplyLength": "Your password must be at least {minLength} characters long.",
                "passwordDoesNotComplySecurity": "Sorry, you cannot use an insecure password.",
                "notEnoughPermission": "You do not have permission to perform this action",
                "noUserWithEnteredEmailAddr": "There is no user with that email address.",
                "userIsInactive": "The user with that email address is inactive.",
                "userUpdateError": {
                    "emailIsAlreadyInUse": "Email is already in use",
                    "context": "Error thrown from user update during login",
                    "help": "Visit and save your profile after logging in to check for problems."
                },
                "incorrectPassword": "Your password is incorrect.",
                "accountSuspended": "Your account was suspended.",
                "newPasswordsDoNotMatch": "Your new passwords do not match",
                "passwordRequiredForOperation": "Password is required for this operation",
                "expiredToken": "Expired token",
                "tokenLocked": "Token locked",
                "invalidToken": "Invalid token",
                "userNotFound": "User not found",
                "ownerNotFound": "Owner not found",
                "onlyOwnerCanTransferOwnerRole": "Only owners are able to transfer the owner role.",
                "onlyAdmCanBeAssignedOwnerRole": "Only administrators can be assigned the owner role.",
                "onlyActiveAdmCanBeAssignedOwnerRole": "Only active administrators can be assigned the owner role."
            },
            "api_key": {
                "apiKeyNotFound": "API Key not found"
            },
            "email": {
                "emailNotFound": "Email not found.",
                "retryNotAllowed": "Only failed emails can be retried"
            },
            "base": {
                "index": {
                    "missingContext": "missing context"
                },
                "token": {
                    "noUserFound": "No user found",
                    "tokenNotFound": "Token not found"
                },
                "invalidDate": "Date format for `{key}` is invalid."
            },
            "plugins": {
                "filter": {
                    "errorParsing": "Error parsing filter",
                    "forInformationRead": "For more information on how to use filter, see {url}"
                }
            }
        },
        "permissions": {
            "noActionsMapFound": {
                "error": "No actions map found, ensure you have loaded permissions into database and then call permissions.init() before use."
            },
            "applyStatusRules": {
                "error": "You do not have permission to retrieve {docName} with that status"
            },
            "noPermissionToAction": "You do not have permission to perform this action"
        },
        "updateCheck": {
            "checkingForUpdatesFailed": {
                "error": "Checking for updates failed, your site will continue to function.",
                "help": "If you get this error repeatedly, please seek help from {url}."
            },
            "unableToDecodeUpdateResponse": {
                "error": "Unable to decode update response"
            }
        },
        "api": {
            "common": {
                "invalidTokenStructure": "Invalid token structure",
                "notImplemented": "The server does not support the functionality required to fulfill the request."
            },
            "authentication": {
                "setupUnableToRun": "Database missing fixture data. Please reset database and try again.",
                "setupMustBeCompleted": "Setup must be completed before making this request.",
                "noEmailProvided": "No email provided.",
                "noTokenProvided": "No token provided.",
                "noPasswordProvided": "No password provided.",
                "noNameProvided": "No name provided.",
                "invalidEmailReceived": "The server did not receive a valid email",
                "setupAlreadyCompleted": "Setup has already been completed.",
                "unableToSendWelcomeEmail": "Unable to send welcome email, your site will continue to function.",
                "checkEmailConfigInstructions": "Please see {url} for instructions on configuring email.",
                "notLoggedIn": "You are not logged in.",
                "notTheBlogOwner": "You are not the site owner.",
                "invalidTokenTypeHint": "Invalid token_type_hint given.",
                "invalidTokenProvided": "Invalid token provided",
                "tokenRevocationFailed": "Token revocation failed"
            },
            "configuration": {
                "invalidKey": "Invalid key"
            },
            "db": {
                "missingFile": "Please select a database file to import.",
                "invalidFile": "Unsupported file. Please try any of the following formats: {extensions}",
                "noPermissionToExportData": "You do not have permission to export data (no rights).",
                "noPermissionToImportData": "You do not have permission to import data (no rights)."
            },
            "mail": {
                "noPermissionToSendEmail": "You do not have permission to send mail.",
                "cannotFindCurrentUser": "Could not find the current user"
            },
            "notifications": {
                "noPermissionToBrowseNotif": "You do not have permission to browse notifications.",
                "noPermissionToAddNotif": "You do not have permission to add notifications.",
                "noPermissionToDestroyNotif": "You do not have permission to destroy notifications.",
                "noPermissionToDismissNotif": "You do not have permission to dismiss this notification.",
                "notificationDoesNotExist": "Notification does not exist."
            },
            "posts": {
                "postNotFound": "Post not found."
            },
            "authors": {
                "notFound": "Author not found."
            },
            "pages": {
                "pageNotFound": "Page not found."
            },
            "job": {
                "notFound": "Job not found.",
                "publishInThePast": "Use the force flag to publish a post in the past."
            },
            "redirects": {
                "missingFile": "Please select a JSON file.",
                "invalidFile": "Please select a valid JSON file to import."
            },
            "resource": {
                "resourceNotFound": "{resource} not found."
            },
            "routes": {
                "missingFile": "Please select a YAML file.",
                "invalidFile": "Please select a valid YAML file to import."
            },
            "settings": {
                "problemFindingSetting": "Problem finding setting: {key}",
                "accessCoreSettingFromExtReq": "Attempted to access core setting from external request",
                "invalidEmailReceived": "Please send a valid email",
                "activeThemeSetViaAPI": {
                    "error": "Attempted to change active_theme via settings API",
                    "help": "Please activate theme via the themes API endpoints instead"
                },
                "invalidJsonInLabs": "Error: Invalid JSON in settings.labs",
                "labsColumnCouldNotBeParsed": "The column with key \"labs\" could not be parsed as JSON",
                "tryUpdatingLabs": "Please try updating a setting on the labs page, or manually editing your DB",
                "noPermissionToEditSettings": "You do not have permission to edit settings.",
                "noPermissionToReadSettings": "You do not have permission to read settings."
            },
            "slugs": {
                "couldNotGenerateSlug": "Could not generate slug.",
                "unknownSlugType": "Unknown slug type '{type}'."
            },
            "members": {
                "memberNotFound": "Member not found.",
                "memberAlreadyExists": "Email address is already member.",
                "stripeNotConnected": {
                    "message": "Member not imported, Stripe account missing",
                    "context": "Attempting to import members with Stripe data when there is no Stripe account connected",
                    "help": "Connect the correct Stripe account, and re-run the import"
                },
                "stripeCustomerNotFound": {
                    "context": "The customer does not exist in currently linked Stripe account.",
                    "help": "Connect the correct Stripe account, and re-run the import."
                }
            },
            "tags": {
                "tagNotFound": "Tag not found."
            },
            "labels": {
                "labelNotFound": "Label not found.",
                "labelAlreadyExists": "Label already exists"
            },
            "themes": {
                "noPermissionToBrowseThemes": "You do not have permission to browse themes.",
                "noPermissionToEditThemes": "You do not have permission to edit themes.",
                "themeDoesNotExist": "Theme does not exist.",
                "invalidTheme": "Theme is not compatible or contains errors.",
                "invalidThemeName": "Please select a valid theme.",
                "missingFile": "Please select a theme.",
                "invalidFile": "Please select a valid zip file.",
                "overrideCasper": "Please rename your zip, it's not allowed to override the default casper theme.",
                "destroyCasper": "Deleting the default casper theme is not allowed.",
                "destroyActive": "Deleting the active theme is not allowed."
            },
            "images": {
                "missingFile": "Please select an image.",
                "invalidFile": "Please select a valid image.",
                "isNotSquare": "Please select a valid image file with square dimensions."
            },
            "icons": {
                "missingFile": "Please select an icon.",
                "invalidFile": "Icon must be a square .ico or .png file between 60px – 1,000px, under 100kb.",
                "couldNotGetSize": "Couldn/'t get icon dimensions"
            },
            "users": {
                "userNotFound": "User not found.",
                "cannotChangeOwnRole": "You cannot change your own role.",
                "cannotChangeStatus": "You cannot change your own status.",
                "cannotChangeOwnersRole": "Cannot change Owner's role",
                "noPermissionToEditUser": "You do not have permission to edit this user",
                "noPermissionToAddUser": "You do not have permission to add this user",
                "noEmailProvided": "No email provided.",
                "userAlreadyRegistered": "User is already registered.",
                "noPermissionToDestroyUser": "You do not have permission to destroy this user.",
                "noPermissionToChangeUsersPwd": "You do not have permission to change the password for this user"
            },
            "utils": {
                "noPermissionToCall": "You do not have permission to {method} {docName}",
                "noRootKeyProvided": "No root key ('{docName}') provided.",
                "invalidStructure": "No valid object structure provided for: {key}",
                "invalidIdProvided": "Invalid id provided."
            },
            "invites": {
                "inviteNotFound": "Invite not found.",
                "inviteExpired": "Invite is expired.",
                "emailIsRequired": "E-Mail is required.",
                "roleIsRequired": "Role is required",
                "roleNotFound": "Role not found",
                "errorSendingEmail": {
                    "error": "Error sending email: {message}",
                    "help": "Please check your email settings and resend the invitation."
                },
                "notAllowedToInviteOwner": "Not allowed to invite an owner user.",
                "notAllowedToInvite": "Not allowed to invite this role."
            },
            "webhooks": {
                "webhookAlreadyExists": "Target URL has already been used for this event."
            },
            "oembed": {
                "noUrlProvided": "No url provided.",
                "insufficientMetadata": "URL contains insufficient metadata.",
                "unknownProvider": "No provider found for supplied URL."
            },
            "userMessages": {
                "InternalServerError": "Internal server error, cannot {action}.",
                "IncorrectUsageError": "Incorrect usage error, cannot {action}.",
                "NotFoundError": "Resource not found error, cannot {action}.",
                "BadRequestError": "Request not understood error, cannot {action}.",
                "UnauthorizedError": "Authorisation error, cannot {action}.",
                "NoPermissionError": "Permission error, cannot {action}.",
                "ValidationError": "Validation error, cannot {action}.",
                "UnsupportedMediaTypeError": "Unsupported media error, cannot {action}.",
                "TooManyRequestsError": "Too many requests error, cannot {action}.",
                "MaintenanceError": "Server down for maintenance, cannot {action}.",
                "MethodNotAllowedError": "Method not allowed, cannot {action}.",
                "RequestEntityTooLargeError": "Request too large, cannot {action}.",
                "TokenRevocationError": "Token is not available, cannot {action}.",
                "VersionMismatchError": "Version mismatch error, cannot {action}.",
                "DataExportError": "Error exporting content.",
                "DataImportError": "Duplicated entry, cannot save {action}.",
                "DatabaseVersionError": "Database version compatibility error, cannot {action}.",
{'fraction_non_alphanumeric': 0.10262690104681019, 'fraction_numerical': 0.00039502271380604387, 'mean_word_length': 1.7391798312053668, 'pattern_counts': {'":': 742, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6322476', 'n_tokens_mistral': 11841, 'n_tokens_neox': 11104, 'n_words': 4158}