{ "app": { "name": "Logbuch", "tagline": "What happened lately, per project." }, "header": { "newEntry": "Write entry", "skipToContent": "Skip to content" }, "nav": { "overview": "Overview", "search": "Search", "archive": "By month", "sidebar": "Main navigation", "openMenu": "Open menu", "closeMenu": "Close menu", "state": "State {number}", "admin": "Admin", "toArchive": "To the log" }, "pagination": { "previous": "Back", "next": "Next", "status": "{from} - {to} of {total}" }, "search": { "title": "Search", "label": "Search term", "placeholder": "Search titles and teasers", "submit": "Search", "prompt": "Enter a search term.", "found": "Matches for “{query}”", "empty": "No entry found for “{query}”. Try a single word or take a look at the latest entries.", "emptyTitle": "No match", "promptTitle": "What are you looking for?", "intro": "Searches titles and teasers of all published entries.", "suggestions": "Published lately" }, "post": { "fields": { "project": "Project", "published": "Published", "type": "Type", "author": "Author", "images": "Images", "number": "Number" }, "content": "Content", "empty": "This entry has no content yet.", "back": "All entries of {project}", "details": "Details", "readingTime": "{minutes} min read", "emptyTitle": "No content yet", "previous": "Previous entry", "next": "Next entry", "nearby": "More in this project", "more": "More from {project}" }, "block": { "before": "Before", "after": "After", "video": "Watch video", "image": "Image", "gallery": "Gallery", "open": "Enlarge image", "close": "Close", "previous": "Previous image", "next": "Next image", "position": "{index} of {total}", "compare": "Move the comparison", "comparePosition": "{percent} percent before" }, "notFound": { "title": "This page is not in the logbook.", "hint": "This address does not exist, or the entry is not published.", "home": "To the overview", "next": "From the overview you can reach every project and every entry. If you are looking for a specific entry, the search will help.", "nextTitle": "What helps now", "code": "404" }, "theme": { "label": "Change colour mode", "light": "Light", "dark": "Dark", "system": "System" }, "overview": { "title": "What happened lately.", "intro": "Every two weeks we write down per project what has been finished. With images, in full sentences, without ticket number gibberish.", "allProjects": "All projects", "empty": "No entry published yet. Create a project in the administration and write the first entry.", "fields": { "brands": "Fleet", "period": "Period", "entries": "Entries", "updated": "Updated" }, "entryCount": "{total} in total, {recent} within the last {days} days", "period": "{from} - {to}", "emptyTitle": "Nothing published yet", "emptyFilteredTitle": "Nothing in this period", "emptyFiltered": "No entry appeared in this period. Reset the filter or pick another month.", "emptyTypeTitle": "Nothing of this kind", "emptyType": "There is no entry of this kind here. Pick another kind or show all entries.", "updated": "Last {date}", "toAdmin": "To the administration", "emptyProject": "No entry published in this project yet. Take a look at the other projects or write the first entry in the administration.", "emptyPageTitle": "This page does not exist", "emptyPage": "The list does not reach that far. Go back to the first page.", "firstPage": "To the first page" }, "entry": { "latest": "Latest", "older": "Older entries", "summary": "{count, plural, one {# entry} other {# entries}} · {days} days", "new": "New", "read": "read", "unread": "unread", "number": "Entry {number}", "images": "{count, plural, one {# image} other {# images}}", "next": "More entries" }, "archive": { "title": "Archive", "all": "All entries", "filtered": "Narrowed down to {period}", "entries": "{count, plural, one {# entry} other {# entries}}", "months": { "1": "Jan", "2": "Feb", "3": "Mar", "4": "Apr", "5": "May", "6": "Jun", "7": "Jul", "8": "Aug", "9": "Sep", "10": "Oct", "11": "Nov", "12": "Dec" }, "firstPage": "To the first page" }, "inapp": { "title": "Inside the application", "hint": "Every app fetches the same entries through the API and renders them in its own design. Read state is kept per user of the respective app.", "markAllRead": "Mark all read", "open": "Open in Logbuch", "close": "Close" }, "footer": { "state": "Updated {date}" }, "login": { "eyebrow": "Administration", "title": "Sign in", "intro": "Sign in to create projects and write entries.", "email": "Email address", "password": "Password", "submit": "Sign in", "pending": "Checking", "back": "Back to Logbuch", "noAccount": "Accounts are created by the administration. If you do not have one yet, ask the person who looks after Logbuch.", "errors": { "email": "Enter your email address exactly as it is stored on the account.", "password": "Enter your password.", "credentials": "Email address and password do not match. Check both and try again.", "tooMany": "Too many attempts in a row. Wait a minute and try again.", "unknown": "Signing in did not work just now. Try again in a moment." }, "magic": { "title": "With a sign-in link", "intro": "Enter your address. You will receive a link by email that signs you in without a password.", "email": "Email address", "submit": "Send link", "pending": "Sending", "sentTitle": "The link is on its way", "sent": "If {email} is allowed to sign in, an email with the sign-in link will arrive shortly.", "sentHint": "The link is valid for {minutes} minutes and can be used once. If nothing arrives, check the spam folder.", "again": "Use a different address", "passwordTitle": "Sign in with a password instead", "linkFailed": "This sign-in link is no longer valid. It expires after {minutes} minutes and can only be used once. Request a new link.", "errors": { "email": "Enter a complete email address, for example name@nyo.de.", "tooMany": "Too many links have just been requested for this address. Wait {minutes} minutes and try again." } } }, "admin": { "eyebrow": "Administration", "title": "Administration", "intro": "This is where you create projects and write entries.", "signedInAs": "Signed in as {name}", "signOut": "Sign out", "toArchive": "To Logbuch", "projects": { "eyebrow": "Administration", "title": "Projects", "intro": "A project is its own section in Logbuch, with its own colour, code and running number.", "create": "Create project", "createTitle": "New project", "createIntro": "Name and brand are enough to start. The slug is suggested from the name and stays editable.", "editIntro": "Changes take effect right away, in the archive as well.", "save": "Save", "saving": "Saving", "back": "Back to the list", "toArchive": "View in the archive", "active": "Active", "inactive": "Retired", "emptyTitle": "No project yet", "empty": "There is no project yet. Create the first one, then you can add entries and images for it.", "noBrandsTitle": "A brand first", "noBrands": "A project always belongs to a brand. Create a brand first, then you can create the project.", "toBrands": "Create brand", "columns": { "name": "Name", "code": "Code", "brand": "Brand", "brandMissing": "Unknown", "color": "Colour", "posts": "Entries", "state": "State", "edit": "Edit" }, "fields": { "name": "Name", "slug": "Slug", "code": "Code", "brand": "Brand", "brandEmpty": "Pick a brand", "color": "Colour", "colorPicker": "Pick a colour", "sort": "Sorting", "description": "Description", "active": "Project is active" }, "hints": { "slug": "Part of the archive address, for example /trakk. Lower case letters, digits and hyphens.", "code": "Shown on the plate, at most four characters. Leave empty to derive it from the slug.", "color": "Carries plate and bar. As a hex value, for example #2e7d5b.", "sort": "Smaller numbers come first.", "description": "One or two sentences on what the project is about.", "active": "A retired project shows up neither in the archive nor in the API." } }, "projectsMeta": "{count, plural, =0 {no project} one {# project} other {# projects}}", "emptyTitle": "No project yet", "empty": "No project has been released for you yet, or none has been created.", "role": { "admin": "Administration", "moderator": "Moderator" }, "noAccess": { "title": "Not released yet", "forNobody": "Your account exists, but it is not released for any project. Ask the person who looks after Logbuch to add you as a moderator for your project.", "forModerator": "This part of the administration is reserved for accounts with administration rights. You find your projects on the overview.", "toOverview": "To the overview", "wrongAccount": "Wrong account? Sign out and sign in with the right one." }, "yourProjects": "Your projects", "edit": "Edit", "inactive": "Retired", "emptyForAdmin": "There is no project yet. Create one, then you can add entries and images for it.", "emptyAction": "Create project", "nav": { "label": "Administration sections", "overview": "Overview", "posts": "Entries", "media": "Media", "projects": "Projects", "brands": "Brands", "users": "Users", "clients": "Access", "manage": "Manage", "postTypes": "Post types", "api": "API" }, "messages": { "created": "Created.", "updated": "Saved.", "forbidden": "Your account is missing the right for this. Only administration may change it.", "notFound": "That record is gone. Reload the page.", "invalid": "Please check the marked fields.", "slugTaken": "That slug already exists. Pick another one.", "selfAdmin": "You cannot change the administration right on your own account. Another administration account has to do it.", "typeInUse": "This type is still in use. Clear the active checkbox instead." }, "errors": { "nameRequired": "Enter a name.", "slugInvalid": "A slug is made of lower case letters, digits and hyphens, at least two characters.", "slugTaken": "That slug is taken. Pick another one.", "codeInvalid": "The code holds at most four characters, letters and digits only.", "colorInvalid": "The colour needs the form #rrggbb.", "brandUnknown": "Pick a brand.", "projectUnknown": "Pick a project or let the access cover all projects.", "sortInvalid": "Sorting is a whole number from 0 to 9999.", "modeInvalid": "Pick read or write.", "scopeInvalid": "Pick an audience.", "tooLong": "That text is too long.", "invalid": "That value does not fit." }, "entries": { "eyebrow": "Administration", "title": "Entries", "intro": "Type a title, start writing, publish. Project, type and audience come preset.", "listTitle": "All entries", "create": "New entry", "createTitle": "New entry", "editTitle": "Entry", "back": "To the list", "meta": "{count, plural, =0 {no entry} one {# entry} other {# entries}}", "noAuthor": "no author", "emptyTitle": "No entry yet", "empty": "There is no entry in your projects yet. Write the first one, it takes less than two minutes.", "emptyFilteredTitle": "No match", "emptyFiltered": "No entry matches this filter. Reset it or pick different values.", "noProjectsTitle": "No project yet", "noProjects": "No project has been released for you yet. Ask administration to add you as a moderator.", "noProjectsForAdmin": "There is no project yet. Create one, then you can write entries for it.", "toProjects": "Create project", "columns": { "number": "Number", "title": "Title", "project": "Project", "type": "Type", "audience": "Audience", "status": "Status", "date": "Date", "author": "Author" }, "pagination": { "previous": "Back", "next": "Next", "status": "Page {page} of {pages}" }, "filters": { "project": "Project", "allProjects": "All projects", "status": "Status", "allStatus": "Any status", "type": "Type", "allTypes": "All types", "search": "Search", "searchPlaceholder": "Title and teaser", "submit": "Apply", "reset": "Reset filter" }, "status": { "draft": "Draft", "review": "Review", "scheduled": "Scheduled", "published": "Published", "archived": "Withdrawn" }, "audience": { "internal": "Internal", "customer": "Customer", "public": "Public" }, "fields": { "title": "Title", "titlePlaceholder": "What is it about?", "teaser": "Teaser", "teaserPlaceholder": "Two sentences that sum up the entry.", "project": "Project", "type": "Type", "audience": "Audience", "slug": "Slug", "cover": "Cover image" }, "hints": { "audience": "Customers never see internal entries, public is visible to everyone.", "teaser": "Shown in the list and in the lead. Leaving it empty is fine.", "slug": "Part of the address in the archive. Leave it empty to derive it from the title.", "cover": "Sits large above the entry. Without an image the plate takes that space.", "drop": "Drag images here or paste them with Ctrl+V, several at once works.", "schedule": "A moment in the future. The entry appears automatically once it is reached.", "projectMove": "On a move the entry receives the next free number in the target project." }, "save": { "idle": "Nothing saved yet", "pending": "Saving", "dirty": "Unsaved changes", "saved": "Saved at {time}", "stored": "Last saved {time}" }, "schedule": { "title": "Schedule" }, "actions": { "save": "Save", "publish": "Publish", "publishing": "Publishing", "schedule": "Set date", "unschedule": "Drop date", "archive": "Withdraw", "resume": "Back to draft", "preview": "Preview", "edit": "Edit", "addBlock": "Add block", "remove": "Remove block", "up": "Move up", "down": "Move down", "drag": "Move block", "choose": "Choose image", "change": "Other image", "clear": "Remove image", "upload": "Upload", "close": "Close", "delete": "Delete draft", "deleteConfirm": "Really delete?", "deleting": "Deleting" }, "blocks": { "text": "Text", "image": "Image", "gallery": "Gallery", "before_after": "Before and after", "video": "Video", "quote": "Quote", "code": "Code", "link": "Link", "callout": "Callout" }, "blockFields": { "text": "Text", "textPlaceholder": "Write in full sentences. An empty line separates paragraphs.", "image": "Image", "gallery": "Images", "galleryHint": "The order follows your selection.", "before": "Before", "after": "After", "video": "Video file", "videoHint": "Without a file a link to the video is enough.", "url": "Address", "label": "Label", "description": "Description", "quote": "Quote", "source": "Source", "language": "Language", "code": "Code", "tone": "Tone", "toneInfo": "Note", "toneWarning": "Warning" }, "media": { "empty": "This project has no image yet. Upload one or drag it into the editor.", "altMissing": "no alt text" }, "uploads": { "pending": "{name} is uploading", "done": "{name} is uploaded", "failed": "{name}: {reason}" }, "preview": { "scope": "View as", "untitled": "Untitled", "empty": "This entry has no content yet.", "hiddenTitle": "Invisible for this audience", "hidden": "As {scope} this entry is not visible, it is meant for {audience}." }, "checks": { "blockersTitle": "This holds publishing back", "title_missing": "The title is missing.", "content_empty": "The entry has no content yet.", "alt_text_missing": "An image has no alt text. Public entries require one.", "tags_missing": "No tag set yet.", "cover_missing": "No cover image set yet." }, "errors": { "forbidden": "Your account lacks the right for this.", "projectUnknown": "This project does not exist.", "typeUnknown": "This post type is no longer available. Pick a different one.", "projectLocked": "The project cannot be changed once the entry exists.", "notFound": "This entry is gone. Reload the page.", "titleMissing": "Enter a title first.", "titleTooLong": "The title is too long.", "teaserTooLong": "The teaser is too long.", "slugInvalid": "The slug consists of lowercase letters, digits and hyphens, at least two characters.", "slugTaken": "This slug already exists in this project.", "blocksInvalid": "A block is incomplete. Check the addresses and the images.", "blocked": "Publishing is not possible yet.", "statusInvalid": "This step is not possible from the current status.", "scheduleMissing": "Pick a date and time.", "schedulePast": "The date has to be in the future.", "uploadFailed": "The upload did not work just now. Try again in a moment.", "fileMissing": "Choose an image file.", "fileTooLarge": "The file is larger than 15 MB. Shrink it and try again.", "unsupportedType": "This format is not accepted. Use JPEG, PNG, WebP, AVIF, GIF or TIFF.", "unreadableImage": "The file cannot be read as an image. Check whether it is complete.", "unknown": "That did not work just now. Try again." }, "format": { "bold": "Bold", "italic": "Italic", "heading": "Subheading", "bulletList": "Bullet list", "orderedList": "Numbered list", "link": "Add link", "unlink": "Remove link", "linkTarget": "Link address", "linkApply": "Apply" } }, "brands": { "eyebrow": "Administration", "title": "Brands", "intro": "Brands group projects, by company for example. Every project belongs to exactly one brand.", "create": "Create brand", "createTitle": "New brand", "createIntro": "Name and colour are enough. The slug is suggested from the name.", "editIntro": "Changes take effect right away for all projects of this brand.", "save": "Save", "saving": "Saving", "back": "Back to the list", "emptyTitle": "No brand yet", "empty": "There is no brand yet. Create the first one, then you can create projects.", "columns": { "name": "Name", "slug": "Slug", "color": "Colour", "projects": "Projects", "sort": "Sorting", "edit": "Edit" }, "fields": { "name": "Name", "slug": "Slug", "color": "Colour", "colorPicker": "Pick a colour", "sort": "Sorting" }, "hints": { "slug": "Lower case letters, digits and hyphens.", "color": "As a hex value, for example #2b4a9b.", "sort": "Smaller numbers come first." } }, "postTypes": { "eyebrow": "Admin", "title": "Post types", "intro": "Post types mark what a post is about. Key, label, colour and order are set here.", "create": "Add post type", "createTitle": "New post type", "createIntro": "Label and colour are enough. The key is derived from the German label.", "editIntro": "Changes apply at once to every post of this type.", "save": "Save", "saving": "Saving", "back": "Back to the list", "emptyTitle": "No post type yet", "empty": "There is no post type yet. Add the first one, then you can classify posts.", "active": "Active", "inactive": "Retired", "usage": "{count, plural, =0 {no post} one {# post} other {# posts}}", "deleteTitle": "Delete", "delete": "Delete post type", "deleting": "Deleting", "deleteBlocked": "This type is used by {count, plural, one {# post} other {# posts}} and cannot be deleted. Clear the active checkbox instead, then it is no longer offered.", "columns": { "label": "Label", "key": "Key", "color": "Colour", "posts": "Posts", "sort": "Order", "active": "Active", "edit": "Edit" }, "fields": { "labelDe": "Label German", "labelEn": "Label English", "key": "Key", "color": "Colour", "colorPicker": "Pick a colour", "sort": "Order", "isActive": "Active" }, "hints": { "key": "Lower case letters, digits and hyphens. This is what the API reports.", "color": "As a hex value, for example #2b4a9b. It marks the type on a post.", "sort": "Smaller numbers come first, in the picker and in the filters.", "isActive": "Only active types are offered while writing.", "activeInUse": "Only active types are offered while writing. Posts that already carry this type keep it." } }, "users": { "eyebrow": "Administration", "title": "Users", "intro": "Only people who write need an account. Reading works without one.", "columns": { "name": "Name", "email": "Email", "role": "Right", "projects": "Projects", "edit": "Open" }, "roles": { "admin": "Administration", "moderator": "Moderator" }, "you": "you", "all": "all", "back": "Back to the list", "saving": "Saving", "emptyTitle": "No account yet", "empty": "There is no account yet. Create one with the command pnpm admin:create.", "newAccountTitle": "New account", "newAccount": "Accounts are created with the command pnpm admin:create. After that you hand out the rights here.", "adminSection": "Administration right", "isAdmin": "This account administers everything and reaches every project.", "isNotAdmin": "This account works only in the projects it has been released for.", "grantAdmin": "Grant administration right", "revokeAdmin": "Revoke administration right", "selfHint": "The administration right cannot be changed on your own account.", "rolesSection": "Projects", "assignedMeta": "{count, plural, =0 {no project} one {# project} other {# projects}}", "adminHasAll": "This account holds the administration right and reaches every project anyway. The releases below apply once the administration right is revoked.", "grantRole": "Release", "revokeRole": "Withdraw", "implicit": "through administration right", "rolesHint": "A moderator creates and publishes entries and images of their projects.", "noProjectsTitle": "No project yet", "noProjects": "There is no project you could release yet.", "toProjects": "Create project", "accountSection": "Account", "accountHint": "Name, email and password are set by the command pnpm admin:create." }, "clients": { "eyebrow": "Administration", "title": "API access", "intro": "Applications fetch entries through an access. Read access delivers published entries of its audience, write access creates drafts.", "listTitle": "Access", "meta": "{count, plural, =0 {no access} one {# access} other {# accesses}}", "emptyTitle": "No access yet", "empty": "There is no access yet. Create one below so an application can fetch entries.", "columns": { "name": "Name", "mode": "Mode", "scope": "Audience", "project": "Project", "lastUsed": "Last used", "state": "State", "action": "Action" }, "modes": { "read": "Read", "write": "Write" }, "scopes": { "internal": "Internal", "customer": "Customer", "public": "Public" }, "allProjects": "All projects", "unknownProject": "Unknown", "never": "never", "activeState": "Active", "revoked": "Revoked", "revoke": "Revoke", "revoking": "Revoking", "createTitle": "Create access", "createIntro": "The token is shown once and stored as a hash only. Whoever loses it creates a new access and revokes the old one.", "create": "Create access", "creating": "Creating", "tokenTitle": "Token, visible now only", "tokenHint": "Copy the token now and put it into the application. It cannot be shown again later.", "copy": "Copy token", "copied": "Copied", "fields": { "name": "Name", "mode": "Mode", "scope": "Audience", "project": "Project" }, "hints": { "name": "How you recognise this access later, for example Trakk Web.", "mode": "Read fetches entries. Write creates drafts and uploads images.", "scope": "Decides which entries the access sees. Customer never gets internal entries.", "project": "Without a binding the access covers all projects." }, "publishTitle": "Publishing", "publishHint": "No access may publish. That stays bound to accounts." }, "recentEntries": "Recently edited", "allEntries": "All entries" }, "filter": { "type": "Type", "allTypes": "All types" }, "media": { "eyebrow": "Images", "title": "Media library", "intro": "One image stock per project. Uploading creates WebP renditions in several widths automatically.", "back": "All projects", "library": "Stock", "projectIntro": "Upload images and maintain alt text and caption. Without alt text a public entry cannot be published.", "projectMeta": "{count, plural, =0 {no image} one {# image} other {# images}}", "emptyProjectsTitle": "No project yet", "emptyProjects": "No project has been released for you yet, or none has been created.", "emptyLibraryTitle": "No image yet", "emptyLibrary": "This project holds no image yet. Upload the first one with the field above.", "upload": { "title": "Upload image", "hint": "JPEG, PNG, WebP, AVIF, GIF or TIFF. The original is kept, the renditions are made from it.", "file": "File", "submit": "Upload", "pending": "Processing", "limit": "15 MB at most" }, "fields": { "alt": "Alt text", "altHint": "Mandatory for public entries, a recommendation otherwise.", "altPlaceholder": "What can be seen in the image?", "caption": "Caption" }, "meta": { "submit": "Save", "pending": "Saving" }, "card": { "meta": "{width} × {height} · {size} KB · {variants, plural, =0 {no rendition} one {# rendition} other {# renditions}}", "altMissing": "No alt text. It is mandatory for public entries.", "variantError": "The renditions could not be created. The original is stored and usable.", "delete": "Delete image", "deleteConfirm": "Really delete?", "keep": "Keep" }, "messages": { "uploaded": "The image is uploaded and the renditions are created.", "saved": "Alt text and caption are saved.", "fileMissing": "Pick an image file.", "fileTooLarge": "The file is larger than 15 MB. Shrink it and try again.", "unsupportedType": "This format is not accepted. Use JPEG, PNG, WebP, AVIF, GIF or TIFF.", "unreadableImage": "The file cannot be read as an image. Check whether it is complete.", "projectUnknown": "This project does not exist.", "mediaUnknown": "This image no longer exists.", "uploadFailed": "Uploading did not work just now. Try again in a moment.", "deleted": "The image is deleted.", "mediaInUse": "The image is still used in an entry. Remove it there first." } }, "mail": { "magicLink": { "subject": "Your sign-in link for Logbuch", "greeting": "Hello,", "body": "here is your sign-in link for Logbuch. It is valid for {minutes} minutes and can be used once.", "ignore": "If you did not request a link, ignore this message. Nothing happens without the link.", "signature": "Logbuch" } } }