-
-
Notifications
You must be signed in to change notification settings - Fork 10.1k
/
en.json
567 lines (567 loc) · 28.7 KB
/
en.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
{
"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",
"checkEmailForInstructions": "Check your email for further instructions.",
"passwordChanged": "Password changed successfully.",
"invitationAccepted": "Invitation accepted.",
"yourNewGhostBlog": "Your New Ghost Blog"
}
},
"mail": {
"testGhostEmail": "Test Ghost Email"
},
"users": {
"mail": {
"invitedByName": "{invitedByName} has invited you to join {blogName}"
}
},
"clients": {
"clientNotFound": "Client not found"
}
}
},
"errors": {
"apps": {
"failedToParseActiveAppsSettings": {
"error": "Failed to parse activeApps setting value: {message}",
"context": "Your apps will not be loaded.",
"help": "Check your settings table for typos in the activeApps value. It should look like: [\"app-1\", \"app2\"] (double quotes required)."
},
"appWillNotBeLoaded": {
"error": "The app will not be loaded",
"help": "Check with the app creator, or read the app documentation for more details on app requirements"
},
"permissionsErrorLoadingApp": {
"error": "Error loading app named {name}; problem reading permissions: {message}"
},
"noInstallMethodLoadingApp": {
"error": "Error loading app named {name}; no install() method defined."
},
"noActivateMethodLoadingApp": {
"error": "Error loading app named {name}; no activate() method defined."
},
"accessResourceWithoutPermission": {
"error": "The App \"{name}\" attempted to perform an action or access a resource ({perm}.{method}) without permission."
},
"mustProvideAppName": {
"error": "Must provide an app name for api context"
},
"mustProvideAppPermissions": {
"error": "Must provide app permissions"
},
"unsafeAppRequire": {
"error": "Unsafe App require: {msg}"
}
},
"middleware": {
"api": {
"versionMismatch": "Request for version {requestVersion} does not match current version {currentVersion}."
},
"auth": {
"clientAuthenticationFailed": "Client Authentication Failed",
"clientCredentialsNotProvided": "Client credentials were not provided",
"clientCredentialsNotValid": "Client credentials were not valid",
"forInformationRead": "For information on how to fix this, please read {url}.",
"accessDenied": "Access denied.",
"pleaseSignIn": "Please Sign In"
},
"oauth": {
"invalidClient": "Invalid client.",
"invalidRefreshToken": "Invalid refresh token.",
"refreshTokenExpired": "Refresh token expired."
},
"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."
}
},
"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"
},
"validatethemes": {
"themeWithNoPackage": {
"message": "Found a theme with no package.json file",
"context": "Theme name: {name}",
"help": "This will be required in future. Please see {url}"
},
"malformedPackage": {
"message": "Found a malformed package.json",
"context": "Theme name: {name}",
"help": "Valid package.json will be required in future. Please see {url}"
}
}
},
"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": "Ghost is currently undergoing maintenance, please wait a moment then retry.",
"moreInfo": "\nMore info: {info}",
"requiredOnFuture": "This will be required in future. Please see {link}"
},
"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": "Error: Incomplete message data."
},
"failedSendingEmail": {
"error": "Error: Failed to send email"
},
"noMailServerAtAddress": {
"error": " - no mail server found at {domain}"
},
"messageNotSent": {
"error": "Error: Message could not be sent"
}
},
"models": {
"subscriber": {
"notEnoughPermission": "You do not have permission to perform this action"
},
"post": {
"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": {
"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 8 characters long.",
"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.",
"incorrectPasswordAttempts": "Your password is incorrect. <br /> {remaining} attempt{s} remaining!",
"userUpdateError": {
"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.",
"accountLocked": "Your account is locked. Please reset your password to log in again by clicking the \"Forgotten password?\" link!",
"newPasswordsDoNotMatch": "Your new passwords do not match",
"passwordRequiredForOperation": "Password is required for this operation",
"invalidTokenStructure": "Invalid token structure",
"invalidTokenExpiration": "Invalid token expiration",
"expiredToken": "Expired token",
"tokenLocked": "Token locked",
"invalidToken": "Invalid token",
"userNotFound": "User not found",
"onlyOwnerCanTransferOwnerRole": "Only owners are able to transfer the owner role.",
"onlyAdmCanBeAssignedOwnerRole": "Only administrators can be assigned the owner role."
},
"base": {
"index": {
"missingContext": "missing context"
},
"token": {
"noUserFound": "No user found",
"tokenNotFound": "Token not found"
}
},
"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"
},
"update-check": {
"checkingForUpdatesFailed": {
"error": "Checking for updates failed, your blog will continue to function.",
"help": "If you get this error repeatedly, please seek help from {url}."
},
"unableToDecodeUpdateResponse": {
"error": "Unable to decode update response"
}
},
"api": {
"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.",
"invalidEmailReceived": "The server did not receive a valid email",
"setupAlreadyCompleted": "Setup has already been completed.",
"unableToSendWelcomeEmail": "Unable to send welcome email, your blog will continue to function.",
"checkEmailConfigInstructions": "Please see {url} for instructions on configuring email.",
"notLoggedIn": "You are not logged in.",
"notTheBlogOwner": "You are not the blog owner.",
"invalidTokenTypeHint": "Invalid token_type_hint given.",
"invalidTokenProvided": "Invalid token provided",
"tokenRevocationFailed": "Token revocation failed"
},
"clients": {
"clientNotFound": "Client not found."
},
"configuration": {
"invalidKey": "Invalid key"
},
"db": {
"noPermissionToExportData": "You do not have permission to export data (no rights).",
"noPermissionToImportData": "You do not have permission to import data (no rights).",
"selectFileToImport": "Please select a file to import.",
"unsupportedFile": "Unsupported file. Please try any of the following formats: "
},
"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."
},
"job": {
"notFound": "Job not found.",
"publishInThePast": "Use the force flag to publish a post in the past."
},
"settings": {
"problemFindingSetting": "Problem finding setting: {key}",
"accessCoreSettingFromExtReq": "Attempted to access core setting from external request",
"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}'."
},
"subscribers": {
"subscriberNotFound": "Subscriber not found.",
"subscriberAlreadyExists": "Email address is already subscribed.",
"selectValidFile": "Please select a valid CSV file to import."
},
"tags": {
"tagNotFound": "Tag not found."
},
"themes": {
"noPermissionToBrowseThemes": "You do not have permission to browse themes.",
"noPermissionToEditThemes": "You do not have permission to edit themes.",
"themeDoesNotExist": "Theme does not exist.",
"invalidRequest": "Invalid request."
},
"upload": {
"pleaseSelectImage": "Please select an image.",
"pleaseSelectValidImage": "Please select a valid image."
},
"users": {
"userNotFound": "User not found.",
"cannotChangeOwnRole": "You cannot change your own role.",
"cannotChangeOwnersRole": "Cannot change Owner's role",
"noPermissionToEditUser": "You do not have permission to edit this user",
"notAllowedToCreateOwner": "Not allowed to create an owner user.",
"noPermissionToAddUser": "You do not have permission to add this user",
"noEmailProvided": "No email provided.",
"userAlreadyRegistered": "User is already registered.",
"errorSendingEmail": {
"error": "Error sending email: {message}",
"help": "Please check your email settings and resend the invitation."
},
"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.",
"invalidIdProvided": "Invalid id provided."
}
},
"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 blog 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."
}
}
},
"versioning": {
"index": {
"dbVersionNotRecognized": "Database version is not recognized",
"databaseNotPopulated": "Database is not populated.",
"cannotMigrate": {
"error": "Unable to upgrade from version 0.4.2 or earlier.",
"context": "Please upgrade to 0.7.1 first."
}
}
},
"xml": {
"xmlrpc": {
"pingUpdateFailed": {
"error": "Pinging services for updates on your blog failed, your blog will continue to function.",
"help": "If you get this error repeatedly, please seek help on {url}."
}
}
}
},
"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 blog, 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.",
"pageNotFound": "Page 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.",
"apiMustBeEnabled": "The {flagName} labs flag must be enabled if you wish to use the \\{\\{{helperName}\\}\\} helper.",
"seeLink": "See {url}",
"foreach": {
"iteratorNeeded": "Need to pass an iterator to #foreach"
},
"get": {
"mustBeCalledAsBlock": "Get helper must be called as a block",
"invalidResource": "Invalid resource given to get helper",
"helperNotAvailable": "The \\{\\{get\\}\\} helper is not available.",
"apiMustBeEnabled": "Public API access must be enabled if you wish to use the \\{\\{get\\}\\} helper.",
"seeLink": "See {url}"
},
"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"
},
"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": "pagination data is not an object or is a function",
"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"
},
"template": {
"templateNotFound": "Template {name} not found."
}
}
},
"notices": {
"controllers": {
"newVersionAvailable": "Ghost {version} is available! Hot Damn. {link} to upgrade."
},
"index": {
"welcomeToGhost": "Welcome to Ghost.",
"youAreRunningUnderEnvironment": "You're running under the <strong> {environment} </strong> environment.",
"yourURLisSetTo": "Your URL is set to <strong> {url} </strong>."
},
"httpServer": {
"cantTouchThis": "Can't touch this",
"ghostIsRunning": "Ghost is running...",
"yourBlogIsAvailableOn": "\nYour blog is now available on {url}",
"ctrlCToShutDown": "\nCtrl+C to shut down",
"ghostIsRunningIn": "Ghost is running in {env}...",
"listeningOn": "\nListening on",
"urlConfiguredAs": "\nUrl configured as: {url}",
"ghostHasShutdown": "\nGhost has shut down",
"yourBlogIsNowOffline": "\nYour blog is now offline",
"ghostWasRunningFor": "\nGhost was running for",
"ghostIsClosingConnections": "Ghost is closing connections"
},
"mail": {
"messageSent": "Message sent. Double check inbox and spam folder!"
},
"api": {
"users": {
"pwdChangedSuccessfully": "Password changed successfully."
}
},
"data": {
"fixtures": {
"canSafelyDelete": "<!-- You can safely delete this line if your theme does not require jQuery -->\n",
"jQueryRemoved": "jQuery has been removed from Ghost core and is now being loaded from the jQuery Foundation's CDN.",
"canBeChanged": "This can be changed or removed in your <strong>Code Injection</strong> settings area."
},
"utils": {
"index": {
"noSupportForDatabase": "No support for database client {client}"
}
},
"validation": {
"index": {
"valueCannotBeBlank": "Value in [{tableName}.{columnKey}] cannot be blank.",
"valueMustBeBoolean": "Value in [settings.key] 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}"
}
}
}
}
}