ghost
Version:
The professional publishing platform
734 lines (733 loc) • 39.5 kB
JSON
{
"common": {
"mail": {
"title": "Ghost at {domain}"
},
"seeLinkForInstructions": "See {link} for instructions.",
"time": {
"seconds": "seconds"
},
"api": {
"authentication": {
"sampleBlogDescription": "Thoughts, stories and ideas.",
"mail": {
"resetPassword": "Reset 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": "Wrong 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"
},
"member": {
"memberAlreadyExists": {
"message": "Member already exists",
"context": "Attempting to {action} member with existing email address."
}
},
"member_stripe_customer": {
"customerAlreadyExists": {
"message": "Stripe customer already exists",
"context": "Attempting to add Stripe customer with existing Stripe customer id"
}
},
"stripe_customer_subscription": {
"subscriptionAlreadyExists": {
"message": "Stripe customer subscription already exists",
"context": "Attempting to add Stripe customer subscription with existing Stripe customer"
}
},
"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": {
"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.",
"notTheBlogOwner": "You are not the site owner."
},
"passwordReset": {
"expired": {
"message": "Cannot reset password.",
"context": "Password reset link expired.",
"help": "Request a new password reset via the login form."
},
"invalidToken": {
"message": "Cannot reset password.",
"context": "Password reset link has already been used.",
"help": "Request a new password reset via the login form."
},
"corruptedToken": {
"message": "Cannot reset password.",
"context": "Invalid password reset link.",
"help": "Check if password reset link has been fully copied or request new password reset via the login form."
}
},
"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.",
"yamlParse": "YAML input cannot be a plain string. Check the format of your YAML file."
},
"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.",
"stripeNotConnected": {
"message": "Missing Stripe connection.",
"context": "Attempting to import members with Stripe data when there is no Stripe account connected.",
"help": "You need to connect to Stripe to import Stripe customers. "
},
"stripeCustomerNotFound": {
"context": "Missing Stripe customer.",
"help": "Make sure you’re connected to the correct Stripe Account."
},
"duplicateStripeCustomerIds": {
"message": "Duplicate Stripe ID",
"context": "Attempting to import members with duplicate Stripe customer ids.",
"help": "Remove duplicate Stripe customer IDs from the CSV 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.",
"repoDoesNotExist": "Supplied GitHub theme does not exist or is inaccessible"
},
"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": {
"inviteEmailAlreadyExist": {
"message": "Could not create an account, email is already in use.",
"context": "Attempting to create an account with existing email address.",
"help": "Use different email address to register your account."
},
"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": {
"noPermissionToEdit": {
"message": "You do not have permission to {method} this webhook.",
"context": "You may only {method} webhooks that belong to the authenticated integration. Check the supplied Admin API Key."
},
"noIntegrationIdProvided": {
"context": "You may only create webhooks with 'integration_id' when using session authentication."
},
"nonExistingIntegrationIdProvided": {
"context": "'integration_id' value does not match any existing integration.",
"help": "Provide the 'integration_id' of an existing integration."
},
"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": {
"BookshelfRelationsError": "Database error, cannot {action}.",
"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}.",
"EmailError": "Error sending email!",
"ThemeValidationError": "Theme validation error, cannot {action}.",
"HostLimitError": "Host Limit error, cannot {action}.",
"DisabledFeatureError": "Theme validation error, the {{{helperName}}} helper is not available. Cannot {action}.",
"UpdateCollisionError": "Saving failed! Someone else is editing this post."
},
"snippets": {
"snippetNotFound": "Snippet not found.",
"snippetAlreadyExists": "Snippet already exists"
}
},
"data": {
"export": {
"errorExportingData": "Error exporting data"
},
"import": {
"dataImporter": {
"unableToFindOwner": "Unable to find an owner"
},
"index": {
"duplicateEntryFound": "Duplicate entry found. Multiple values of '{value}' found for {offendingProperty}."
},
"utils": {
"dataLinkedToUnknownUser": "Attempting to import data linked to unknown user id {userToMap}"
}
},
"importer": {
"index": {
"couldNotCleanUpFile": {
"error": "Import could not clean up file ",
"context": "Your site will continue to work as expected"
},
"unsupportedRoonExport": "Your zip file looks like an old format Roon export, please re-export your Roon blog and try again.",
"noContentToImport": "Zip did not include any content to import.",
"invalidZipStructure": "Invalid zip file structure.",
"invalidZipFileBaseDirectory": "Invalid zip file: base directory read failed",
"zipContainsMultipleDataFormats": "Zip file contains multiple data formats. Please split up and import separately."
},
"handlers": {
"json": {
"invalidJsonFormat": "Invalid JSON format, expected `{ db: [exportedData] }`",
"apiDbImportContent": "API DB import content",
"checkImportJsonIsValid": "check that the import file is valid JSON.",
"failedToParseImportJson": "Failed to parse the import JSON file."
}
}
}
},
"services": {
"ping": {
"requestFailed": {
"error": "The {service} service was unable to send a ping request, your site will continue to function.",
"help": "If you get this error repeatedly, please seek help on {url}."
}
},
"settings": {
"yaml": {
"error": "Could not parse {file}: {context}.",
"help": "Check your {file} file for typos and fix the named issues.",
"validate": "The following definition \"{at}\" is invalid: {reason}"
},
"loader": "Error trying to load YAML setting for {setting} from '{path}'.",
"ensureSettings": "Error trying to access settings files in {path}."
},
"mega": {
"requestFailed": {
"error": "The email service was unable to send an email batch."
}
}
},
"errors": {
"noMessageSupplied": "no message supplied",
"error": "\nERROR:",
"warning": "\nWarning:",
"anErrorOccurred": "An error occurred",
"unknownErrorOccurred": "An unknown error occurred.",
"unknownError": "Unknown Error",
"unknownApiError": "Unknown API Error",
"databaseIsReadOnly": "Your database is in read only mode. Visitors can read your site, but you can't log in or add posts.",
"checkDatabase": "Check your database file and make sure that file owner and permissions are correct.",
"notEnoughPermission": "You do not have permission to perform this action",
"errorWhilstRenderingError": "Error whilst rendering error page",
"errorTemplateHasError": "Error template has an error",
"oopsErrorTemplateHasError": "Oops, seems there is an error in the error template.",
"encounteredError": "Encountered the error: ",
"whilstTryingToRender": "whilst trying to render an error page for the error: ",
"renderingErrorPage": "Rendering Error Page",
"caughtProcessingError": "Ghost caught a processing error in the middleware layer.",
"imageNotFound": "Image not found",
"imageNotFoundWithRef": "Image not found: {img}",
"cannotReadImage": "Could not read image: {img}",
"pageNotFound": "Page not found",
"resourceNotFound": "Resource not found"
}
},
"warnings": {
"index": {
"usingDirectMethodToSendEmail": "Ghost is attempting to use a direct method to send email. \nIt is recommended that you explicitly configure an email service.",
"unableToSendEmail": "Ghost is currently unable to send email."
},
"helpers": {
"helperNotAvailable": "The \\{\\{{helperName}\\}\\} helper is not available.",
"flagMustBeEnabled": "The {flagName} flag must be enabled in labs if you wish to use the \\{\\{{helperName}\\}\\} helper.",
"seeLink": "See {url}",
"mustBeCalledAsBlock": "The \\{\\{{helperName}\\}\\} helper must be called as a block. E.g. \\{\\{#{helperName}\\}\\} \\{\\{/{helperName}\\}\\}",
"asset": {
"pathIsRequired": "The \\{\\{asset\\}\\} helper must be passed a path"
},
"cancel_link": {
"invalidData": "The \\{\\{cancel_link\\}\\} helper was used outside of a subscription context. See https://ghost.org/docs/themes/members/#cancel-links."
},
"foreach": {
"iteratorNeeded": "Need to pass an iterator to #foreach"
},
"get": {
"invalidResource": "Invalid resource given to get helper"
},
"has": {
"invalidAttribute": "Invalid or no attribute given to has helper"
},
"index": {
"missingHelper": "Missing helper: '{arg}'"
},
"is": {
"invalidAttribute": "Invalid or no attribute given to is helper"
},
"link": {
"hrefIsRequired": "The \\{\\{#link\\}\\}\\{\\{/link\\}\\} helper requires an href=\"\" attribute."
},
"link_class": {
"forIsRequired": "The \\{\\{link_class\\}\\} helper requires a for=\"\" attribute."
},
"navigation": {
"invalidData": "navigation data is not an object or is a function",
"valuesMustBeDefined": "All values must be defined for label, url and current",
"valuesMustBeString": "Invalid value, Url and Label must be strings"
},
"page_url": {
"isDeprecated": "Warning: pageUrl is deprecated, please use page_url instead\nThe helper pageUrl has been replaced with page_url in Ghost 0.4.2, and will be removed entirely in Ghost 0.6\nIn your theme's pagination.hbs file, pageUrl should be renamed to page_url"
},
"pagination": {
"invalidData": "The \\{\\{pagination\\}\\} helper was used outside of a paginated context. See https://ghost.org/docs/themes/helpers/pagination/.",
"valuesMustBeDefined": "All values must be defined for page, pages, limit and total",
"nextPrevValuesMustBeNumeric": "Invalid value, Next/Prev must be a number",
"valuesMustBeNumeric": "Invalid value, check page, pages, limit and total are numbers"
},
"plural": {
"valuesMustBeDefined": "All values must be defined for empty, singular and plural"
},
"price": {
"attrIsRequired": "Attribute is required e.g. \\{\\{price plan.amount\\}\\}",
"attrMustBeNumeric": "Attribute value should be a number"
},
"img_url": {
"attrIsRequired": "Attribute is required e.g. \\{\\{img_url feature_image\\}\\}",
"attrIsUnknown": "Attribute passed to \\{\\{img_url\\}\\} is unknown"
},
"template": {
"templateNotFound": "Template {name} not found."
}
}
},
"notices": {
"index": {
"welcomeToGhost": "Welcome to Ghost."
},
"httpServer": {
"cantTouchThis": "Can't touch this",
"ghostIsRunning": "Ghost is running...",
"yourBlogIsAvailableOn": "Your site is now available on {url}",
"ctrlCToShutDown": "Ctrl+C to shut down",
"ghostIsRunningIn": "Ghost is running in {env}...",
"listeningOn": "Listening on: {host}:{port}",
"urlConfiguredAs": "Url configured as: {url}",
"ghostIsShuttingDown": "Ghost is shutting down",
"ghostHasShutdown": "Ghost has shut down",
"yourBlogIsNowOffline": "Your site is now offline",
"ghostWasRunningFor": "Ghost was running for"
},
"mail": {
"messageSent": "Message sent. Double check inbox and spam folder!"
},
"api": {
"users": {
"pwdChangedSuccessfully": "Password changed successfully."
}
},
"data": {
"fixtures": {
"jQueryRemoved": "jQuery has been removed from Ghost core and is now being loaded from the jQuery Foundation's CDN."
},
"utils": {
"index": {
"noSupportForDatabase": "No support for database client {client}"
}
},
"validation": {
"index": {
"valueCannotBeBlank": "Value in [{tableName}.{columnKey}] cannot be blank.",
"valueMustBeBoolean": "Value in [{tableName}.{columnKey}] must be one of true, false, 0 or 1.",
"valueExceedsMaxLength": "Value in [{tableName}.{columnKey}] exceeds maximum length of {maxlength} characters.",
"valueIsNotInteger": "Value in [{tableName}.{columnKey}] is not an integer.",
"themeCannotBeActivated": "{themeName} cannot be activated because it is not currently installed.",
"validationFailed": "Validation ({validationName}) failed for {key}",
"schemaValidationFailed": "Validation failed for '{key}'.",
"validationFailedTypes": {
"isLength": "Value in [{tableName}.{key}] exceeds maximum length of {max} characters."
}
}
}
}
}
}