{ "LoginPage": { "title": "Login", "apiKeyLabel": "API key", "apiKeyPlaceholder": "Enter your API key", "submit": "Login", "hint": "Use the same key as RUSTYCMS_API_KEY on the server. Without a key you can only read; with a key you can edit." }, "Sidebar": { "dashboard": "Dashboard", "types": "Types", "assets": "Assets", "settings": "Settings", "login": "Login", "logout": "Logout", "searchPlaceholder": "Search collections…", "searchAriaLabel": "Search collections", "closeMenu": "Close menu", "loading": "Loading…", "errorLoading": "Error loading collections", "noResults": "No results for \"{query}\"" }, "ContentForm": { "copyCode": "Copy code", "slugRequired": "Slug is required.", "slugInUse": "Slug already in use.", "slugMustStartWith": "Slug must start with \"{prefix}\".", "slugPrefix": "prefix", "slugSuffixPlaceholder": "e.g. my-campaign", "slugSuffixAriaLabel": "Slug suffix (prefix is fixed)", "slugPlaceholder": "e.g. my-post", "slugHint": "Lowercase letters (a-z), digits (0-9), hyphens. Spaces become hyphens.", "savedSuccessfully": "Saved successfully.", "errorSaving": "Error saving", "saving": "Saving…", "save": "Save", "backToList": "Back to list", "pleaseSelect": "— Please select —", "removeEntry": "Remove", "addEntry": "+ Add entry", "arrayAddItem": "Add item", "arrayRemoveItem": "Remove item", "arrayItemPlaceholder": "Value", "arrayItemPlaceholderNumber": "Number", "arrayHint": "List of values. Add or remove items below.", "keyPlaceholder": "Key", "valuePlaceholder": "Value", "pickAsset": "Pick image", "pickFromAssets": "Pick from assets", "loadingAssets": "Loading assets…", "noAssets": "No assets yet. Upload images in the Assets section.", "status": "Status", "statusDraft": "Draft", "statusPublished": "Published", "statusHint": "Draft entries are not visible in the public API." }, "SearchableSelect": { "placeholder": "— Please select —", "clearLabel": "— Clear selection —", "filterPlaceholder": "Filter…", "emptyLabel": "No matches" }, "ReferenceField": { "typeLabel": "Type: {collection}", "typesLabel": "Types: {collections}", "selectType": "— Select type —", "newEntry": "New entry", "openEntry": "Open entry", "noCollection": "No reference collection in schema. Set {collectionCode} or {collectionsCode} in the type, or start the API and reload the page." }, "ReferenceArrayField": { "typeLabel": "Type: {collection}", "typesLabel": "Types: {collections}", "componentType": "Component type", "selectType": "— Select type —", "selectFromExisting": "— Select from existing —", "filterPlaceholder": "Filter…", "emptyLabel": "No matches", "selectExistingAriaLabel": "Select existing entry to add", "moveUp": "Move up", "moveDown": "Move down", "remove": "Remove", "newComponent": "New {collection} component", "createNewComponent": "+ Create new component…", "openInNewTab": "Open in new tab; then reload this page.", "openEntry": "Open entry", "noCollection": "No reference collection in schema. Set {collectionCode} or {collectionsCode} in the type, or start the API and reload the page." }, "MarkdownEditor": { "bold": "Bold", "italic": "Italic", "code": "Code", "link": "Link", "bulletList": "Bullet list", "bulletListButton": "• List", "placeholder": "Enter markdown… **bold**, *italic*, [link](url), - list", "preview": "Preview", "emptyPreview": "Empty — preview appears as you type." }, "PaginationLinks": { "back": "Back", "next": "Next", "pageInfo": "Page {page} of {totalPages} ({total} entries)" }, "DataPreviewPanel": { "hide": "Hide data preview", "show": "Data preview", "loading": "Loading…", "errorLoading": "Error loading" }, "SchemaPanel": { "hide": "Hide schema", "show": "Show schema" }, "SchemaAndEditBar": { "editSchema": "Edit schema" }, "SchemaAndPreviewBar": { "hideSchema": "Hide schema", "showSchema": "Show schema", "editSchema": "Edit schema", "hidePreview": "Hide data preview", "showPreview": "Data preview", "sectionSchema": "Schema", "sectionDataPreview": "Current data", "copyCode": "Copy code", "loading": "Loading…", "errorLoading": "Error loading" }, "ReferenceOrInlineField": { "reference": "Reference", "inline": "Inline", "inlineObject": "Inline object (no reference)", "noInlineSchema": "No inline schema. Reload or check API (useFields / collection)." }, "LocaleSwitcher": { "label": "Language" }, "ContentLocaleSwitcher": { "label": "Content language" }, "Settings": { "title": "Settings", "connection": "Connection", "apiUrl": "API URL", "backendStatus": "Backend status", "checking": "Checking…", "apiReachable": "API reachable", "apiUnreachable": "API unreachable", "contentLocales": "Content locales", "default": "default", "thisDevice": "This device", "uiLanguage": "UI language", "itemsPerPage": "Items per page", "itemsPerPageHint": "Applies to content list pages.", "refreshData": "Refresh data", "refreshDataSuccess": "Data refreshed.", "clearSession": "Clear session", "clearSessionHint": "Removes API key and all admin preferences (e.g. on shared devices).", "clearSessionConfirmTitle": "Clear session?", "clearSessionConfirmDescription": "This will log you out and remove all stored preferences (e.g. items per page). You can log in again afterwards.", "clearSessionConfirmAction": "Clear", "cancel": "Cancel", "apiKeyStatus": "API key", "apiKeyFromEnv": "Set from environment (read-only).", "apiKeyManual": "Set manually (this session).", "logout": "Log out", "login": "Log in" }, "Dashboard": { "title": "Dashboard", "subtitle": "Choose a collection to manage content.", "newContentType": "New content type", "searchPlaceholder": "Search content types…", "filterByTag": "Tag:", "tagAll": "All", "noResults": "No content types match your search or filter.", "noCollections": "No collections loaded. Check that the RustyCMS API is running at {url}." }, "TypesPage": { "title": "Types", "newType": "New type", "description": "Content types (collections). Edit the schema or delete a type. Deleting removes the type definition file; existing content entries are not removed.", "searchPlaceholder": "Search content types…", "filterByTag": "Tag:", "tagAll": "All", "noResults": "No content types match your search or filter.", "loading": "Loading…", "errorLoading": "Error loading types: {error}", "noTypes": "No types yet. Create one with \"New type\".", "colName": "Name", "colDescription": "Description", "colCategory": "Category", "colActions": "Actions", "confirmDelete": "Delete \"{name}\"?", "confirmDeleteFinal": "Really delete \"{name}\"? This cannot be undone.", "delete": "Delete", "yesDelete": "Yes, delete", "deleting": "…", "cancel": "Cancel", "edit": "Edit" }, "NewTypePage": { "title": "Add new type", "description": "Creates a new content type (collection). The schema file is saved on the server at {path} and loaded via hot-reload.", "nameRequired": "Name is required.", "nameInvalid": "Name: only lowercase letters, digits and underscores.", "fieldRequired": "At least one field required.", "fieldNamesUnique": "Field names must be unique.", "errorCreating": "Error creating type.", "nameLabel": "Name", "namePlaceholder": "e.g. product, blog_post", "nameHint": "Lowercase letters, digits and underscores only.", "descriptionLabel": "Description", "categoryLabel": "Category", "categoryPlaceholder": "e.g. content", "tagsLabel": "Tags (comma-separated)", "tagsPlaceholder": "e.g. content, blog", "strictLabel": "Strict (reject unknown fields)", "fieldsLabel": "Fields", "addField": "Add field", "fieldNamePlaceholder": "Field name", "fieldTypeLabel": "Field type", "required": "Required", "removeField": "Remove field", "collectionPlaceholder": "Collection (e.g. page)", "allowedSlugsPlaceholder": "Allowed slugs (comma-separated, optional)", "allowedCollectionsPlaceholder": "Allowed content types (comma-separated, optional)", "arrayItemType": "Array item type", "itemTypePlaceholder": "e.g. string, reference", "arrayExplain": "This field is a list [ ] in JSON. Every position in the list has the same type—pick what one entry is below.", "arrayEachEntry": "One list entry is", "itemKindString": "Plain text (string)", "itemKindNumber": "Number", "itemKindObject": "Object (fixed sub-fields per entry)", "itemKindReference": "Reference (slug to an entry in a collection)", "objectItemFieldsLabel": "Fields on each list object", "addObjectField": "Add sub-field", "objectFieldNamePlaceholder": "Sub-field name", "arrayReferenceHelp": "All slugs in the list must exist in this collection (unless you use allowed slugs).", "multiSelectOptions": "Options", "multiSelectOptionsPlaceholder": "e.g. option1, option2, option3", "multiSelectOptionsHelp": "Comma- or newline-separated list of allowed values. User can select multiple.", "stringWidgetLabel": "Input style", "stringWidgetSingleline": "Single line", "stringWidgetTextarea": "Multi-line (textarea)", "stringWidgetCode": "Code (syntax highlighting)", "codeLanguageLabel": "Code language", "codeLanguageCss": "CSS", "codeLanguageJavascript": "JavaScript", "codeLanguageJson": "JSON", "codeLanguageHtml": "HTML", "defaultValueLabel": "Default value", "defaultValuePlaceholder": "e.g. \"text\", 0, true, [\"a\",\"b\"]", "defaultValueHelp": "JSON value; leave empty for none. Used when creating new entries.", "defaultValueInvalid": "Invalid JSON for default value in field \"{field}\"", "defaultValueBoolean": "Default: checked", "defaultValueEmpty": "Leave empty for none", "defaultValueMultiSelectSetOptions": "Set options above first, then choose defaults.", "defaultValueArrayPlaceholder": "Comma-separated values", "fieldDescriptionPlaceholder": "Field description (optional)", "creating": "Creating…", "createType": "Create type", "cancel": "Cancel" }, "EditTypePage": { "fieldRequired": "At least one field required.", "fieldNamesUnique": "Field names must be unique.", "errorSaving": "Error saving type.", "missingName": "Missing type name.", "backToTypes": "Back to Types", "loading": "Loading…", "errorLoading": "Error loading type: {error}", "title": "Edit type: {name}", "description": "Change description, category, tags, and fields. The schema file is updated on the server.", "nameLabel": "Name", "descriptionLabel": "Description", "categoryLabel": "Category", "categoryPlaceholder": "e.g. content", "tagsLabel": "Tags (comma-separated)", "tagsPlaceholder": "e.g. content, blog", "strictLabel": "Strict (reject unknown fields)", "fieldsLabel": "Fields", "addField": "Add field", "fieldNamePlaceholder": "Field name", "fieldTypeLabel": "Field type", "required": "Required", "removeField": "Remove field", "collectionPlaceholder": "Collection (e.g. page)", "allowedSlugsPlaceholder": "Allowed slugs (comma-separated, optional)", "allowedCollectionsPlaceholder": "Allowed content types (comma-separated, optional)", "arrayItemType": "Array item type", "itemTypePlaceholder": "e.g. string, reference", "arrayExplain": "This field is a list [ ] in JSON. Every position in the list has the same type—pick what one entry is below.", "arrayEachEntry": "One list entry is", "itemKindString": "Plain text (string)", "itemKindNumber": "Number", "itemKindObject": "Object (fixed sub-fields per entry)", "itemKindReference": "Reference (slug to an entry in a collection)", "objectItemFieldsLabel": "Fields on each list object", "addObjectField": "Add sub-field", "objectFieldNamePlaceholder": "Sub-field name", "arrayReferenceHelp": "All slugs in the list must exist in this collection (unless you use allowed slugs).", "multiSelectOptions": "Options", "multiSelectOptionsPlaceholder": "e.g. option1, option2, option3", "multiSelectOptionsHelp": "Comma- or newline-separated list of allowed values. User can select multiple.", "stringWidgetLabel": "Input style", "stringWidgetSingleline": "Single line", "stringWidgetTextarea": "Multi-line (textarea)", "stringWidgetCode": "Code (syntax highlighting)", "codeLanguageLabel": "Code language", "codeLanguageCss": "CSS", "codeLanguageJavascript": "JavaScript", "codeLanguageJson": "JSON", "codeLanguageHtml": "HTML", "defaultValueLabel": "Default value", "defaultValuePlaceholder": "e.g. \"text\", 0, true, [\"a\",\"b\"]", "defaultValueHelp": "JSON value; leave empty for none. Used when creating new entries.", "defaultValueInvalid": "Invalid JSON for default value in field \"{field}\"", "defaultValueBoolean": "Default: checked", "defaultValueEmpty": "Leave empty for none", "defaultValueMultiSelectSetOptions": "Set options above first, then choose defaults.", "defaultValueArrayPlaceholder": "Comma-separated values", "fieldDescriptionPlaceholder": "Field description (optional)", "saving": "Saving…", "save": "Save", "cancel": "Cancel" }, "ErrorBoundary": { "title": "Something went wrong", "reload": "Reload page" }, "Breadcrumbs": { "ariaLabel": "Breadcrumb", "content": "Content" }, "ContentListPage": { "title": "Entries", "newEntry": "New entry", "colActions": "Actions", "noEntries": "No entries.", "noEntriesCreate": "No entries yet. Create the first one.", "edit": "Edit", "delete": "Delete", "draft": "Draft", "searchPlaceholder": "Search…", "loading": "Loading…", "sortBy": "Sort by {field}", "sortAsc": "Ascending", "sortDesc": "Descending", "typeDependencies": "Type dependencies", "confirmDelete": "Delete \"{slug}\"?", "confirmDeleteDescription": "This cannot be undone.", "cancel": "Cancel", "deleting": "Deleting…", "yesDelete": "Yes, delete", "deleted": "Entry deleted.", "errorDeleting": "Error deleting entry." }, "ContentNewPage": { "breadcrumbNew": "New", "title": "Create new entry", "sectionSchema": "Schema" }, "ContentEditPage": { "title": "Edit entry", "apiLink": "API link (data preview):", "referrersSection": "Referenced by", "noReferrers": "No other entries reference this one.", "openReferrer": "Open entry" }, "AssetsPage": { "titleAll": "All assets", "titleRoot": "Root", "assetCount": "{count} image(s)", "assetCountFiltered": "{count} of {total} image(s)", "searchPlaceholder": "Search by filename…", "dateFrom": "From date", "dateTo": "To date", "upload": "Upload", "uploading": "Uploading…", "uploadedCount": "Uploaded {count} file(s).", "dropZoneHintRoot": "Click or drag & drop to upload to root", "dropZoneHintFolder": "Click or drag & drop to upload to \"{folder}\"", "loading": "Loading…", "errorLoading": "Error loading assets", "noAssets": "No assets here yet.", "urlCopied": "URL copied.", "copyUrl": "Copy URL", "confirmDelete": "Delete \"{filename}\"?", "confirmDeleteDesc": "This cannot be undone.", "yesDelete": "Yes, delete", "deleting": "…", "cancel": "Cancel", "deleted": "\"{filename}\" deleted.", "folders": "Folders", "all": "All", "root": "Root", "newFolder": "New folder", "folderNamePlaceholder": "e.g. blog", "folderCreated": "Folder \"{name}\" created.", "folderDeleted": "Folder \"{name}\" deleted.", "confirmDeleteFolder": "Delete folder \"{name}\"?", "confirmDeleteFolderDesc": "Only empty folders can be deleted.", "renameTitle": "Rename image", "renameFilenameLabel": "Filename", "rename": "Rename", "renaming": "Renaming…", "renamed": "\"{filename}\" renamed.", "copyWithTransformTitle": "Copy with transformation", "copyWithTransformDesc": "Create a new asset from this image with resize/crop/format. Same folder.", "copyWithTransformNewName": "New filename", "copyWithTransformCreate": "Create copy", "copyWithTransformDone": "Transformed copy created.", "transformPresetThumb": "Thumb 300px", "transformPresetSquare": "Square 1:1", "transformPresetMedium": "Medium 800px", "transformPresetJpeg": "JPEG 1200px", "transformWidth": "Width", "transformHeight": "Height", "transformAspect": "Aspect ratio", "transformFit": "Fit", "transformFormat": "Format", "transformQuality": "Quality (1–100)", "creating": "Creating…" } }