Update to Kirby 4.7.0

This commit is contained in:
Paul Nicoué 2025-04-21 18:57:21 +02:00
parent 02a9ab387c
commit ba25a9a198
509 changed files with 26604 additions and 14872 deletions

View file

@ -3,19 +3,26 @@
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"activate": "Activate",
"add": "Add",
"alpha": "Alpha",
"author": "Author",
"avatar": "Profile picture",
"back": "Back",
"cancel": "Cancel",
"change": "Change",
"close": "Close",
"changes": "Changes",
"confirm": "Ok",
"collapse": "Collapse",
"collapse.all": "Collapse All",
"color": "Color",
"coordinates": "Coordinates",
"copy": "Copy",
"copy.all": "Copy all",
"copy.success": "{count} copied!",
"create": "Create",
"custom": "Custom",
"date": "Date",
"date.select": "Select a date",
@ -34,13 +41,20 @@
"delete": "Delete",
"delete.all": "Delete all",
"dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "No users to select",
"dimensions": "Dimensions",
"disable": "Disable",
"disabled": "Disabled",
"discard": "Discard",
"drawer.fields.empty": "This drawer has no fields",
"domain": "Domain",
"download": "Download",
"duplicate": "Duplicate",
@ -49,11 +63,13 @@
"email": "Email",
"email.placeholder": "mail@example.com",
"enter": "Enter",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
"error": "Error",
"error.access.code": "Invalid code",
"error.access.login": "Invalid login",
"error.access.panel": "You are not allowed to access the panel",
@ -77,10 +93,14 @@
"error.email.preset.notFound": "The email preset \"{name}\" cannot be found",
"error.field.converter.invalid": "Invalid converter \"{converter}\"",
"error.field.link.options": "Invalid options: {options}",
"error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "You are not allowed to change the name of \"{filename}\"",
"error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
"error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
"error.file.duplicate": "A file with the name \"{filename}\" already exists",
"error.file.extension.forbidden": "The extension \"{extension}\" is not allowed",
"error.file.extension.invalid": "Invalid extension: {extension}",
@ -95,6 +115,7 @@
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.unique": "The filename must be unique",
"error.file.name.missing": "The filename must not be empty",
"error.file.notFound": "The file \"{filename}\" cannot be found",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
@ -116,15 +137,20 @@
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings",
"error.license.format": "Please enter a valid license key",
"error.license.domain": "The domain for the license is missing",
"error.license.email": "Please enter a valid email address",
"error.license.format": "Please enter a valid license code",
"error.license.verification": "The license could not be verified",
"error.login.totp.confirm.invalid": "Invalid code",
"error.login.totp.confirm.missing": "Please enter the current code",
"error.object.validation": "Theres an error in the \"{label}\" field:\n{message}",
"error.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "You are not allowed to change the URL appendix for \"{slug}\"",
"error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "The page has errors and cannot be published",
"error.page.changeStatus.permission": "The status for this page cannot be changed",
"error.page.changeStatus.toDraft.invalid": "The page \"{slug}\" cannot be converted to a draft",
@ -140,6 +166,13 @@
"error.page.draft.duplicate": "A page draft with the URL appendix \"{slug}\" already exists",
"error.page.duplicate": "A page with the URL appendix \"{slug}\" already exists",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.move.ancestor": "The page cannot be moved into itself",
"error.page.move.directory": "The page directory cannot be moved",
"error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists",
"error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint",
"error.page.move.notFound": "The moved page could not be found",
"error.page.move.permission": "You are not allowed to move \"{slug}\"",
"error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"",
"error.page.notFound": "The page \"{slug}\" cannot be found",
"error.page.num.invalid": "Please enter a valid sorting number. Numbers must not be negative.",
"error.page.slug.invalid": "Please enter a valid URL appendix",
@ -166,6 +199,8 @@
"error.site.changeTitle.permission": "You are not allowed to change the title of the site",
"error.site.update.permission": "You are not allowed to update the site",
"error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
"error.template.default.notFound": "The default template does not exist",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
@ -198,8 +233,10 @@
"error.validation.accepted": "Please confirm",
"error.validation.alpha": "Please only enter characters between a-z",
"error.validation.alphanum": "Please only enter characters between a-z or numerals 0-9",
"error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Please enter a value between \"{min}\" and \"{max}\"",
"error.validation.boolean": "Please confirm or deny",
"error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Please enter a value that contains \"{needle}\"",
"error.validation.date": "Please enter a valid date",
"error.validation.date.after": "Please enter a date after {date}",
@ -214,6 +251,7 @@
"error.validation.integer": "Please enter a valid integer",
"error.validation.ip": "Please enter a valid IP address",
"error.validation.less": "Please enter a value lower than {max}",
"error.validation.linkType": "The link type is not allowed",
"error.validation.match": "The value does not match the expected pattern",
"error.validation.max": "Please enter a value equal to or lower than {max}",
"error.validation.maxlength": "Please enter a shorter value. (max. {max} characters)",
@ -230,15 +268,18 @@
"error.validation.same": "Please enter \"{other}\"",
"error.validation.size": "The size of the value must be \"{size}\"",
"error.validation.startswith": "The value must start with \"{start}\"",
"error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Please enter a valid time",
"error.validation.time.after": "Please enter a time after {time}",
"error.validation.time.before": "Please enter a time before {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}",
"error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Please enter a valid URL",
"expand": "Expand",
"expand.all": "Expand All",
"field.invalid": "The field is invalid",
"field.required": "The field is required",
"field.blocks.changeType": "Change type",
"field.blocks.code.name": "Code",
@ -248,8 +289,9 @@
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet",
"field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Please select a block type …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to import layouts/blocks from your clipboard <small>Only those allowed in the current field will get inserted.</small>",
"field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images",
@ -257,11 +299,16 @@
"field.blocks.heading.name": "Heading",
"field.blocks.heading.text": "Text",
"field.blocks.heading.placeholder": "Heading …",
"field.blocks.figure.back.plain": "Plain",
"field.blocks.figure.back.pattern.light": "Pattern (light)",
"field.blocks.figure.back.pattern.dark": "Pattern (dark)",
"field.blocks.image.alt": "Alternative text",
"field.blocks.image.caption": "Caption",
"field.blocks.image.crop": "Crop",
"field.blocks.image.link": "Link",
"field.blocks.image.location": "Location",
"field.blocks.image.location.internal": "This website",
"field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Image",
"field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio",
@ -278,38 +325,61 @@
"field.blocks.quote.citation.placeholder": "by …",
"field.blocks.text.name": "Text",
"field.blocks.text.placeholder": "Text …",
"field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Caption",
"field.blocks.video.controls": "Controls",
"field.blocks.video.location": "Location",
"field.blocks.video.loop": "Loop",
"field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL",
"field.blocks.video.poster": "Poster",
"field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "No files selected yet",
"field.files.empty.single": "No file selected yet",
"field.layout.change": "Change layout",
"field.layout.delete": "Delete layout",
"field.layout.delete.confirm": "Do you really want to delete this layout?",
"field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "No rows yet",
"field.layout.select": "Select a layout",
"field.object.empty": "No information yet",
"field.pages.empty": "No pages selected yet",
"field.pages.empty.single": "No page selected yet",
"field.structure.delete.confirm": "Do you really want to delete this row?",
"field.structure.delete.confirm.all": "Do you really want to delete all entries?",
"field.structure.empty": "No entries yet",
"field.users.empty": "No users selected yet",
"field.users.empty.single": "No user selected yet",
"fields.empty": "No fields yet",
"file": "File",
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.changeTemplate": "Change template",
"file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "Do you really want to delete <br><strong>{filename}</strong>?",
"file.focus.placeholder": "Set focal point",
"file.focus.reset": "Remove focal point",
"file.focus.title": "Focus",
"file.sort": "Change position",
"files": "Files",
"files.empty": "No files yet",
"filter": "Filter",
"hide": "Hide",
"hour": "Hour",
"hue": "Hue",
"import": "Import",
"info": "Info",
"insert": "Insert",
@ -327,7 +397,6 @@
"installation.issues.mbstring": "The <code>MB String</code> extension is required",
"installation.issues.media": "The <code>/media</code> folder does not exist or is not writable",
"installation.issues.php": "Make sure to use <code>PHP 8+</code>",
"installation.issues.server": "Kirby requires <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code>",
"installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable",
"language": "Language",
@ -335,6 +404,7 @@
"language.convert": "Make default",
"language.convert.confirm": "<p>Do you really want to convert <strong>{name}</strong> to the default language? This cannot be undone.</p><p>If <strong>{name}</strong> has untranslated content, there will no longer be a valid fallback and parts of your site might be empty.</p>",
"language.create": "Add a new language",
"language.default": "Default language",
"language.delete.confirm": "Do you really want to delete the language <strong>{name}</strong> including all translations? This cannot be undone!",
"language.deleted": "The language has been deleted",
"language.direction": "Reading direction",
@ -343,7 +413,16 @@
"language.locale": "PHP locale string",
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages",
"language.name": "Name",
"language.secondary": "Secondary language",
"language.settings": "Language settings",
"language.updated": "The language has been updated",
"language.variables": "Language variables",
"language.variables.empty": "No translations yet",
"language.variable.delete.confirm": "Do you really want to delete the variable for {key}?",
"language.variable.key": "Key",
"language.variable.notFound": "The variable could not be found",
"language.variable.value": "Value",
"languages": "Languages",
"languages.default": "Default language",
@ -352,15 +431,30 @@
"languages.secondary.empty": "There are no secondary languages yet",
"license": "License",
"license.activate": "Activate it now",
"license.activate.label": "Please activate your license",
"license.activate.domain": "Your license will be activated for <strong>{host}</strong>.",
"license.activate.local": "You are about to activate your Kirby license for your local domain <strong>{host}</strong>. If this site will be deployed to a public domain, please activate it there instead. If {host} is the domain you want to use your license for, please continue.",
"license.activated": "Activated",
"license.buy": "Buy a license",
"license.register": "Register",
"license.code": "Code",
"license.code.help": "You received your license code after the purchase via email. Please copy and paste it here.",
"license.code.label": "Please enter your license code",
"license.status.active.info": "Includes new major versions until {date}",
"license.status.active.label": "Valid license",
"license.status.demo.info": "This is a demo installation",
"license.status.demo.label": "Demo",
"license.status.inactive.info": "Renew license to update to new major versions",
"license.status.inactive.label": "No new major versions",
"license.status.legacy.bubble": "Ready to renew your license?",
"license.status.legacy.info": "Your license does not cover this version",
"license.status.legacy.label": "Please renew your license",
"license.status.missing.bubble": "Ready to launch your site?",
"license.status.missing.info": "No valid license",
"license.status.missing.label": "Please activate your license",
"license.manage": "Manage your licenses",
"license.register.help": "You received your license code after the purchase via email. Please copy and paste it to register.",
"license.register.label": "Please enter your license code",
"license.register.domain": "Your license will be registered to <strong>{host}</strong>.",
"license.register.local": "You are about to register your license for your local domain <strong>{host}</strong>. If this site will be deployed to a public domain, please register it there instead. If {host} is the domain you want to license Kirby to, please continue.",
"license.register.success": "Thank you for supporting Kirby",
"license.unregistered": "This is an unregistered demo of Kirby",
"license.purchased": "Purchased",
"license.success": "Thank you for supporting Kirby",
"license.unregistered.label": "Unregistered",
"link": "Link",
@ -370,17 +464,18 @@
"lock.unsaved": "Unsaved changes",
"lock.unsaved.empty": "There are no more unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.isLocked": "Unsaved changes by {email}",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"lock.unlock.submit": "Unlock and overwrite unsaved changes by <strong>{email}</strong>",
"lock.isUnlocked": "Was unlocked by another user",
"login": "Log in",
"login.code.label.login": "Login code",
"login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000",
"login.code.placeholder.totp": "000000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.",
"login.code.text.totp": "Please enter the onetime code from your authenticator app.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
@ -391,9 +486,24 @@
"login.toggleText.code.email-password": "Login with password",
"login.toggleText.password-reset.email": "Forgot your password?",
"login.toggleText.password-reset.email-password": "← Back to login",
"login.totp.enable.option": "Set up onetime codes",
"login.totp.enable.intro": "Authenticator apps can generate onetime codes that are used as a second factor when signing into your account.",
"login.totp.enable.qr.label": "1. Scan this QR code",
"login.totp.enable.qr.help": "Unable to scan? Add the setup key <code>{secret}</code> manually to your authenticator app.",
"login.totp.enable.confirm.headline": "2. Confirm with generated code",
"login.totp.enable.confirm.text": "Your app generates a new onetime code every 30 seconds. Enter the current code to complete the setup:",
"login.totp.enable.confirm.label": "Current code",
"login.totp.enable.confirm.help": "After this setup, we will ask you for a onetime code every time you log in.",
"login.totp.enable.success": "Onetime codes enabled",
"login.totp.disable.option": "Disable onetime codes",
"login.totp.disable.label": "Enter your password to disable onetime codes",
"login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up onetime codes again later.",
"login.totp.disable.admin": "<p>This will disable onetime codes for <strong>{user}</strong>.</p><p>In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up onetime codes again after their next login.</p>",
"login.totp.disable.success": "Onetime codes disabled",
"logout": "Log out",
"merge": "Merge",
"menu": "Menu",
"meridiem": "AM/PM",
"mime": "Media Type",
@ -414,21 +524,26 @@
"months.september": "September",
"more": "More",
"move": "Move",
"name": "Name",
"next": "Next",
"night": "Night",
"no": "no",
"off": "off",
"on": "on",
"open": "Open",
"open.newWindow": "Open in new window",
"option": "Option",
"options": "Options",
"options.none": "No options",
"options.all": "Show all {count} options",
"orientation": "Orientation",
"orientation.landscape": "Landscape",
"orientation.portrait": "Portrait",
"orientation.square": "Square",
"page": "Page",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Change URL",
"page.changeSlug.fromTitle": "Create from title",
@ -436,13 +551,15 @@
"page.changeStatus.position": "Please select a position",
"page.changeStatus.select": "Select a new status",
"page.changeTemplate": "Change template",
"page.changeTemplate.notice": "Changing the page's template will remove content for fields that don't match in type. Use with caution.",
"page.create": "Create as {status}",
"page.delete.confirm": "Do you really want to delete <strong>{title}</strong>?",
"page.delete.confirm.subpages": "<strong>This page has subpages</strong>. <br>All subpages will be deleted as well.",
"page.delete.confirm.title": "Enter the page title to confirm",
"page.draft.create": "Create draft",
"page.duplicate.appendix": "Copy",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.move": "Move page",
"page.sort": "Change position",
"page.status": "Status",
"page.status.draft": "Draft",
@ -463,6 +580,7 @@
"password": "Password",
"paste": "Paste",
"paste.after": "Paste after",
"paste.success": "{count} pasted!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugins",
@ -470,7 +588,9 @@
"preview": "Preview",
"remove": "Remove",
"rename": "Rename",
"renew": "Renew",
"replace": "Replace",
"replace.with": "Replace with",
"retry": "Try again",
"revert": "Revert",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
@ -486,10 +606,12 @@
"save": "Save",
"search": "Search",
"searching": "Searching",
"search.min": "Enter {min} characters to search",
"search.all": "Show all",
"search.all": "Show all {count} results",
"search.results.none": "No results",
"section.invalid": "The section is invalid",
"section.required": "The section is required",
"security": "Security",
@ -501,8 +623,15 @@
"size": "Size",
"slug": "URL appendix",
"sort": "Sort",
"sort.drag": "Drag to sort …",
"split": "Split",
"stats.empty": "No reports",
"status": "Status",
"system.info.copy": "Copy info",
"system.info.copied": "System info copied",
"system.issues.api.methods": "Your server does not support PATCH requests",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
@ -511,7 +640,9 @@
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "The site folder seems to be exposed",
"system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
"system.updateStatus": "Update status",
@ -524,10 +655,13 @@
"system.updateStatus.update": "Free update { version } available",
"system.updateStatus.upgrade": "Upgrade { version } available",
"title": "Title",
"tel": "Phone",
"tel.placeholder": "+49123456789",
"template": "Template",
"title": "Title",
"today": "Today",
"toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Code",
"toolbar.button.bold": "Bold",
"toolbar.button.email": "Email",
@ -545,6 +679,8 @@
"toolbar.button.link": "Link",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through",
"toolbar.button.sub": "Subscript",
"toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Ordered list",
"toolbar.button.underline": "Underline",
"toolbar.button.ul": "Bullet list",
@ -554,6 +690,8 @@
"translation.name": "English",
"translation.locale": "en_US",
"type": "Type",
"upload": "Upload",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
@ -578,6 +716,7 @@
"user.changeLanguage": "Change language",
"user.changeName": "Rename this user",
"user.changePassword": "Change password",
"user.changePassword.current": "Your current password",
"user.changePassword.new": "New password",
"user.changePassword.new.confirm": "Confirm the new password…",
"user.changeRole": "Change role",