Files
homarr/packages/translation/src/lang/en.json
T

8024 lines
277 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"init": {
"studio": {
"navigationLabel": "Onboarding sections",
"back": "Back",
"buildBoard": "Build my board",
"common": {
"unknownError": "Something went wrong. Your choices are still here; try again."
},
"claim": {
"checking": "Securing this onboarding session…",
"checkingTitle": "Preparing secure setup",
"lockedTitle": "Setup is open in another browser",
"lockedDescription": "Continue there, or wait for its secure first-run session to expire before trying again.",
"signInTitle": "Administrator sign-in required",
"signInDescription": "An administrator already exists. Sign in to resume setup without exposing credentials or service access.",
"signIn": "Sign in and resume",
"errorTitle": "Setup could not be secured",
"errorDescription": "Reload the page to retry the secure first-run session."
},
"navigation": {
"essentials": "Essentials",
"discover": "Discover",
"connect": "Connect",
"board": "Board",
"extend": "Extend",
"review": "Review"
},
"welcome": {
"title": "Make home feel organized.",
"description": "Welcome to Homarr v{version}. We’ll guide you through the essentials and help you build your first board.",
"start": "Get started",
"restore": "Restore backup",
"restoreTitle": "Restore this Homarr",
"restoreDescription": "A full SQLite backup restores boards, people, apps, integrations, and settings. Homarr validates it before replacing anything.",
"errorTitle": "Setup could not start",
"errorDescription": "Your setup choices are still here. Try again, or reload the page if this continues."
},
"account": {
"title": "Create your administrator",
"description": "Specify the credentials for your administrator user.",
"username": "Administrator username",
"passwordHint": "Only the 8-character minimum is required. The other password-strength checks are suggestions.",
"create": "Create administrator",
"errorTitle": "Administrator could not be created",
"recoveryTitle": "Administrator account created",
"recoveryDescription": "Automatic sign-in did not complete. Sign in with the administrator credentials you just created to continue setup.",
"recoveryAction": "Sign in and continue",
"unknownError": "The administrator could not be created."
},
"externalGroup": {
"title": "Connect your administrator group",
"description": "Use the exact group name sent by LDAP or OIDC. Members of this group receive administrator access.",
"name": "External administrator group",
"nameDescription": "This is case-sensitive and must match your identity provider.",
"continue": "Save group and continue",
"errorTitle": "Group could not be saved",
"unknownError": "The administrator group could not be saved."
},
"essentials": {
"title": "Start with familiar defaults",
"description": "Set the language and appearance everyone sees first, then give Homarr the address pattern used by your services.",
"language": "Default language",
"theme": "Default theme",
"themeAuto": "System",
"themeLight": "Light",
"themeDark": "Dark",
"serverOriginHelp": "Homarr uses this address to prefill detected service URLs. You can still edit every service individually.",
"serverDescription": "This is a shortcut, not a restriction. Every detected service remains editable.",
"serverOrigin": "Domain, IP, or reverse-proxy path",
"serverOriginDescription": "Examples: home.lan, 192.168.1.10, or https://home.example.com/services. Choose how each service is appended below.",
"analytics": "Share anonymous product analytics",
"analyticsDescription": "Helps Homarr improve feature reliability. No service credentials or dashboard content are sent."
},
"discover": {
"title": "See what this installation can actually reach",
"description": "Homarr checks capabilities in place. A missing Docker socket or Kubernetes context never blocks a manual setup.",
"database": "Database",
"docker": "Docker and compatible sockets",
"kubernetes": "Kubernetes",
"assistantWorkshop": "Assistant and Workshop",
"found": "Found {integrations} integrations and {apps} additional apps",
"retryKubernetes": "Check Kubernetes again",
"retryWorkshop": "Check Workshop again",
"unknownVersion": "unknown version",
"kubernetesAvailable": "Connected to Kubernetes {version}",
"kubernetesDisabled": "Not enabled; continue with Docker or manual services",
"kubernetesUnavailable": "Kubernetes is enabled but cannot be reached from this Homarr process",
"workshopAvailable": "Community Workshop and hosted Assistant services are reachable",
"workshopUnavailable": "Local and custom Assistant providers remain available",
"partialTitle": "Some sources could not be scanned",
"partialDescription": "Results from reachable hosts are kept. Check socket permissions or add services manually in the next section.",
"status": {
"checking": "Checking availability…",
"available": "Available",
"partial": "Partially available",
"empty": "Reachable, no matching running services",
"disabled": "Disabled by server configuration",
"unavailable": "Unavailable from this Homarr process"
}
},
"connect": {
"title": "Connect what makes the board useful",
"description": "Select several services at once. Docker labels take priority, image matching fills gaps, and every URL and credential stays reviewable.",
"discoveredIntegrations": "Detected integration instances ({count})",
"detectedIntegrationLabel": "Import {name}, detected as {kind}",
"detectedAppLabel": "Import detected app {name}",
"otherIntegrations": "Add another integration",
"configureIntegrations": "Configure integrations",
"discoveredApps": "Detected apps ({count})",
"appAddressRequired": "Add an address for {name}, or remove it from the selection.",
"empty": "No integrations selected. Homarr will still create a useful starter board with general widgets.",
"dockerSource": "Docker",
"manualSource": "Manual",
"url": "Service URL",
"noCredentials": "No credentials",
"noCredentialsDescription": "This integration does not need credentials.",
"credentialMethod": "Credential method",
"getApiKey": "Open the API key settings for this service",
"openGuide": "Open Homarr's setup guide for this service",
"testConnection": "Test connection",
"testSuccess": "Connection works",
"testSuccessDescription": "Homarr connected with the current address and credentials.",
"testError": "Connection failed",
"testErrorDescription": "Check the service address and credentials, then try again.",
"needsConfiguration": "Needs configuration",
"tested": "Connection tested",
"testFailed": "Connection test failed",
"incompleteConfirmation": "Unfinished integrations will be skipped. Continue without them?"
},
"board": {
"title": "Shape the board before it is built",
"description": "Homarr creates protected Mobile and Base layouts, then places apps and compatible widgets from the services you selected.",
"target": "Board to configure",
"targetDescription": "Choose the exact existing board that this setup should update.",
"targetPlaceholder": "Select a board",
"targetRequired": "Select the board to configure before continuing.",
"name": "Board name",
"nameDescription": "Used in the board URL; letters, numbers, dashes, and underscores only.",
"nameRequired": "Enter a board name before continuing.",
"primaryColor": "Primary color",
"secondaryColor": "Secondary color",
"resetColors": "Reset colors",
"radius": "Widget corner radius",
"radiusOptions": {
"xs": "Tight",
"sm": "Subtle",
"md": "Balanced",
"lg": "Rounded",
"xl": "Soft"
},
"columns": "Board columns",
"columnsDescription": "Columns define the horizontal grid used to size and position items. 12 is plenty for most people.",
"columnCount": "{count, plural, one {# column} other {# columns}}",
"leftSidebar": "Left sidebar",
"rightSidebar": "Right sidebar",
"previewLabel": "Live preview of the first board layout"
},
"extend": {
"title": "Advanced features",
"tabsLabel": "Assistant, Workshop, and MCP setup",
"assistant": "Assistant",
"workshop": "Workshop",
"assistantSetup": {
"loginTitle": "Administrator sign-in required",
"loginDescription": "Provider keys and model access are privileged. Finish setup, sign in, and Homarr will open the Assistant configuration directly.",
"loginAction": "Sign in to configure Assistant"
},
"workshopSetup": {
"title": "Homarr Workshop",
"description": "Browse community Custom Widgets, inspect their requested capabilities, install them, and publish your own work without copying code between servers.",
"available": "Available",
"checking": "Checking…",
"unavailable": "Unavailable",
"discoverTitle": "Discover",
"discoverDescription": "Find widgets built for real self-hosted workflows.",
"installTitle": "Review and install",
"installDescription": "See metadata and configuration before adding anything.",
"publishTitle": "Share",
"publishDescription": "Publish reusable widgets back to the community.",
"browse": "Browse Workshop"
},
"mcpSetup": {
"title": "Homarr MCP",
"description": "Connect Claude, Codex, or another MCP client to Homarr's typed tools. API keys keep access explicit and revocable.",
"endpoint": "Streamable HTTP endpoint",
"keyTitle": "Copy this key now",
"keyDescription": "For security, Homarr cannot show this API key again.",
"copyKey": "Copy API key",
"createKey": "Create an MCP API key",
"errorTitle": "MCP API key could not be created",
"loginRequired": "Sign in as an administrator after setup to create an API key.",
"configuration": "Client configuration",
"copy": "Copy configuration",
"copied": "Copied",
"advanced": "Open MCP tools, permissions, and setup details"
}
},
"review": {
"title": "One board, built around your services",
"description": "Homarr tests unsaved connections, imports the selected apps, applies appearance and layouts, then opens the exact board it configured.",
"board": "First board",
"columns": "Board columns",
"columnsValue": "{count, plural, one {# column} other {# columns}}",
"sidebars": "Sidebars",
"sidebarsValue": "{count, plural, =0 {None} one {# sidebar} other {# sidebars}}",
"layouts": "Responsive layouts",
"layoutsValue": "Mobile + Base",
"integrations": "Integrations",
"integrationsValue": "{count, plural, =0 {None selected} one {# integration} other {# integrations}}",
"apps": "App tiles",
"appsValue": "{count, plural, =0 {Starter apps only} one {# app tile} other {# app tiles}}",
"language": "Language",
"theme": "Theme",
"themeAuto": "System preference",
"themeLight": "Light",
"themeDark": "Dark",
"colors": "Board colors",
"radius": "Widget radius",
"automaticTitle": "What Homarr will create",
"automaticDescription": "Compatible widgets, icons, app links, integration relationships, and responsive placement come from the shared Homarr catalog. You can edit every result later.",
"dockerWarningTitle": "Some Docker labels changed during setup",
"dockerWarningDescription": "{count, plural, one {# selected Docker result could not be applied because its service changed, targeted another board, or its widget was incompatible} other {# selected Docker results could not be applied because services changed, targeted another board, or their widgets were incompatible}}.",
"errorTitle": "Board could not be built",
"progress": {
"applying": "Testing connections and building your board",
"done": "Your board is ready"
}
},
"finish": {
"title": "Your first board is ready.",
"description": "Homarr connected the pieces you selected and kept the rest editable. Open the board now; the short in-product tour can show you edit mode, widgets, layouts, and search.",
"openBoard": "Open my board",
"manageTitle": "Manage",
"manageDescription": "Fine-tune apps, integrations, boards, users, and server settings.",
"workshopTitle": "Workshop",
"workshopDescription": "Discover and install community Custom Widgets.",
"docsTitle": "Learn Homarr",
"docsDescription": "Read the focused guides for boards, widgets, integrations, and tools."
}
}
},
"user": {
"name": "User",
"page": {
"login": {
"title": "Log in to your account",
"subtitle": "Welcome back! Please enter your credentials"
},
"invite": {
"title": "Join Homarr",
"titleWithAppName": "Join {appName}",
"subtitle": "Welcome to Homarr! Please create your account",
"subtitleWithAppName": "Welcome to {appName}! Please create your account",
"description": "You were invited by {username}"
}
},
"field": {
"email": {
"label": "E-Mail",
"verified": "Verified"
},
"username": {
"label": "Username"
},
"password": {
"label": "Password",
"suggestionsTitle": "Password suggestions",
"suggestion": {
"length": "At least 8 characters",
"lowercase": "Includes lowercase letter",
"uppercase": "Includes uppercase letter",
"number": "Includes number",
"special": "Includes special symbol"
}
},
"passwordConfirm": {
"label": "Confirm password"
},
"previousPassword": {
"label": "Previous password"
},
"pingIconsEnabled": {
"label": "Use icons for pings"
},
"enableRightClickOnWidgets": {
"label": "Enable right-click on widgets",
"description": "Show Homarr's context menu when right-clicking a widget. Disable to use the browser's default menu (e.g. \"Open link in new tab\")."
},
"defaultSearchEngine": {
"label": "Default search engine"
},
"openSearchInNewTab": {
"label": "Open search results in new tab"
},
"ddgBangs": {
"label": "Enable DuckDuckGo bangs"
}
},
"error": {
"usernameTaken": "Username already taken"
},
"action": {
"login": {
"label": "Login",
"labelWith": "Login with {provider}",
"notification": {
"success": {
"title": "Login successful",
"message": "You are now logged in"
},
"error": {
"title": "Login failed",
"message": "Your login failed"
}
},
"forgotPassword": {
"label": "Forgotten your password?",
"description": "An administrator can use the following command to reset your password:"
}
},
"register": {
"label": "Create account",
"notification": {
"success": {
"title": "Account created",
"message": "Please log in to continue"
},
"error": {
"title": "Account creation failed",
"message": "Your account could not be created"
}
}
},
"changePassword": {
"label": "Change password",
"notification": {
"success": {
"message": "Password changed successfully"
},
"error": {
"message": "Unable to change password"
}
}
},
"manageAvatar": {
"changeImage": {
"label": "Change image",
"notification": {
"success": {
"message": "The image changed successfully"
},
"error": {
"message": "Unable to change image"
},
"toLarge": {
"title": "Image is too large",
"message": "Max image size is {size}"
}
}
},
"removeImage": {
"label": "Remove image",
"confirm": "Are you sure you want to remove the image?",
"notification": {
"success": {
"message": "Image removed successfully"
},
"error": {
"message": "Unable to remove image"
}
}
}
},
"delete": {
"label": "Delete user permanently",
"description": "Deletes this user including their preferences. Will not delete any boards. User will not be notified.",
"confirm": "Are you sure, that you want to delete the user {username} with his preferences?"
},
"select": {
"label": "Select user",
"notFound": "No user found"
}
}
},
"group": {
"name": "Group",
"search": "Find a group",
"field": {
"members": "Members",
"homeBoard": {
"label": "Home board",
"description": "Only boards accessible to the group can be selected"
},
"mobileBoard": {
"label": "Mobile board",
"description": "Only boards accessible to the group can be selected"
}
},
"permission": {
"admin": {
"title": "Admin",
"item": {
"admin": {
"label": "Administrator",
"description": "Members with this permission have full access to all features and settings"
}
}
},
"custom-widget": {
"title": "Custom widgets",
"item": {
"manage": {
"label": "Manage custom widgets",
"description": "Allow members to create, edit, and delete custom widget definitions"
},
"secret-write": {
"label": "Configure custom widget secrets",
"description": "Allow members and their API keys to set encrypted custom widget credentials"
}
}
},
"app": {
"title": "Apps",
"item": {
"create": {
"label": "Create apps",
"description": "Allow members to create apps"
},
"use-all": {
"label": "Use all apps",
"description": "Allow members to add any apps to their boards"
},
"modify-all": {
"label": "Modify all apps",
"description": "Allow members to modify all apps"
},
"full-all": {
"label": "Full app access",
"description": "Allow members to manage, use and delete any app"
}
}
},
"board": {
"title": "Boards",
"item": {
"create": {
"label": "Create boards",
"description": "Allow members to create boards"
},
"view-all": {
"label": "View all boards",
"description": "Allow members to view all boards"
},
"modify-all": {
"label": "Modify all boards",
"description": "Allow members to modify all boards (Does not include access control and danger zone)"
},
"full-all": {
"label": "Full board access",
"description": "Allow members to view, modify, and delete all boards (Including access control and danger zone)"
}
}
},
"integration": {
"title": "Integrations",
"item": {
"create": {
"label": "Create integrations",
"description": "Allow members to create integrations"
},
"use-all": {
"label": "Use all integrations",
"description": "Allows members to add any integrations to their boards"
},
"interact-all": {
"label": "Interact with any integration",
"description": "Allow members to interact with any integration"
},
"full-all": {
"label": "Full integration access",
"description": "Allow members to manage, use and interact with any integration"
}
}
},
"media": {
"title": "Medias",
"item": {
"upload": {
"label": "Upload medias",
"description": "Allow members to upload medias"
},
"view-all": {
"label": "View all medias",
"description": "Allow members to view all medias"
},
"full-all": {
"label": "Full media access",
"description": "Allow members to manage and delete any media"
}
}
},
"other": {
"title": "Other",
"item": {
"view-logs": {
"label": "View logs",
"description": "Allow members to view logs"
}
}
},
"search-engine": {
"title": "Search engines",
"item": {
"create": {
"label": "Create search engines",
"description": "Allow members to create search engines"
},
"modify-all": {
"label": "Modify all search engines",
"description": "Allow members to modify all search engines"
},
"full-all": {
"label": "Full search engine access",
"description": "Allow members to manage and delete any search engine"
}
}
},
"matrix": {
"none": "No access",
"impliedHint": "Also grants: {permissions}",
"grantedViaAdmin": "Administrators already have this. Set Admin to “No access” to configure it separately.",
"preset": {
"label": "Presets",
"viewer": "Viewer",
"viewerDescription": "Read-only: view boards and medias, use apps and integrations that already exist.",
"editor": "Editor",
"editorDescription": "Day-to-day management: create and edit boards, apps, integrations and search engines.",
"admin": "Admin",
"adminDescription": "Unrestricted access to every feature and setting, including user management.",
"custom": "Custom"
},
"effective": {
"title": "Effective permissions",
"description": "The full, de-duplicated set of actions members of this group can perform, including permissions granted indirectly.",
"empty": "No permissions selected"
},
"noneDescription": "Members get no access to this area.",
"level": {
"view": "View",
"use": "Use",
"interact": "Interact",
"modify": "Modify",
"full": "Full"
},
"capabilityIncluded": "Already included in “{level}”"
}
},
"memberNotice": {
"mixed": "Some members are from external providers and cannot be managed here",
"external": "All members are from external providers and cannot be managed here"
},
"reservedNotice": {
"message": "This group is reserved for system use and restricts some actions. <checkoutDocs></checkoutDocs>"
},
"action": {
"create": {
"label": "New group",
"notification": {
"success": {
"message": "The group was successfully created"
},
"error": {
"message": "The group could not be created"
}
}
},
"transfer": {
"label": "Transfer ownership",
"description": "Transfer ownership of this group to another user.",
"confirm": "Are you sure you want to transfer ownership for the group {name} to {username}?",
"notification": {
"success": {
"message": "Transfered group {group} successfully to {user}"
},
"error": {
"message": "Unable to transfer ownership"
}
}
},
"addMember": {
"label": "Add member"
},
"removeMember": {
"label": "Remove member",
"confirm": "Are you sure you want to remove {user} from this group?"
},
"delete": {
"label": "Delete group",
"description": "Once you delete a group, there is no going back. Please be certain.",
"confirm": "Are you sure you want to delete the group {name}?",
"notification": {
"success": {
"message": "Deleted group {name} successfully"
},
"error": {
"message": "Unable to delete group {name}"
}
}
},
"changePermissions": {
"notification": {
"success": {
"title": "Permissions saved",
"message": "Permissions have been saved successfully"
},
"error": {
"title": "Permissions not saved",
"message": "Permissions have not been saved"
}
}
},
"update": {
"notification": {
"success": {
"message": "The group {name} was saved successfully"
},
"error": {
"message": "Unable to save group {name}"
}
}
},
"select": {
"label": "Select group",
"notFound": "No group found"
},
"settings": {
"board": {
"notification": {
"success": {
"title": "Settings saved",
"message": "Board settings saved successfully"
},
"error": {
"title": "Failed to save settings",
"message": "Unable to save board settings"
}
}
}
},
"changePosition": {
"notification": {
"success": {
"message": "Position changed successfully"
},
"error": {
"message": "Unable to change position"
}
}
}
},
"defaultGroup": {
"name": "Default group",
"description": "{name} - All signed in users"
}
},
"app": {
"search": "Find an app",
"page": {
"list": {
"ariaLabel": "Configured apps",
"noResults": {
"title": "There are no apps yet",
"description": "Apps are links to the services and tools you want on your boards.",
"action": "Create your first app",
"filteredTitle": "No apps match your search",
"filteredDescription": "No apps match \"{search}\". Try another name or URL.",
"createOnlyTitle": "You can only add apps",
"createOnlyDescription": "Your permissions let you create apps but not browse existing ones. Ask an administrator for app management access to see the full list."
}
},
"create": {
"title": "New app",
"notification": {
"success": {
"message": "The app was successfully created"
},
"error": {
"message": "The app could not be created"
}
}
},
"edit": {
"title": "Edit app",
"notification": {
"success": {
"message": "The app was successfully saved"
},
"error": {
"message": "The app could not be saved"
}
}
},
"delete": {
"title": "Delete app",
"message": "Are you sure you want to delete the app {name}?",
"notification": {
"success": {
"message": "The app was successfully deleted"
},
"error": {
"message": "Unable to delete the app"
}
}
}
},
"field": {
"description": {
"label": "Description"
},
"useDifferentUrlForPing": {
"checkbox": {
"label": "Use different URL for ping",
"description": "Useful if Homarr can directly access using an internal hostname or network to avoid bandwidth usage of ISP"
}
}
},
"action": {
"select": {
"label": "Select app",
"notFound": "No app found",
"search": "Search for an app",
"noResults": "No results",
"action": "Select {app}",
"title": "Select an app to add to this board",
"toggle": "Click to select",
"selected": "Selected",
"multiple": "Add {count}",
"selectedCount": "{count, plural, one {# selected} other {# selected}}",
"appsSelected": "{count, plural, one {# app selected} other {# apps selected}}",
"customApplication": "Custom application",
"application": "Application"
},
"create": {
"title": "Create new app",
"description": "Create a new app ",
"action": "Open app creation"
}
}
},
"tips": {
"dismiss": "Dismiss tip",
"multiSelectApps": "Tip: Hold Ctrl / ⌘ to select multiple apps at once"
},
"customWidget": {
"betaBanner": {
"title": "Custom Widgets are in Beta",
"description": "This feature is experimental and will probably change significantly. If you encounter bugs, want additional capabilities, or find something confusing, please share your feedback in the",
"discussionLink": "official discussion forum",
"closing": "so it can be considered. Happy hacking!"
},
"secretEntry": {
"title": "Configure API source",
"description": "Confirm the server URL and enter credentials. Secret values are encrypted by Homarr and never returned to the requesting agent.",
"loading": "Loading secure request…",
"saved": "API source configured. You can close this page.",
"unavailable": "Request unavailable",
"saveError": "Unable to configure API source",
"source": "API source: {name}",
"baseUrl": "Server URL",
"networkScope": "Network access",
"save": "Save API configuration",
"expires": "This one-time request expires at {time}."
},
"page": {
"list": {
"noResults": "No custom widgets yet. Create your first one!",
"noDescription": "No description",
"enabled": "Enabled",
"disabled": "Disabled",
"disabledDescription": "This widget stays configured but will not load on any board.",
"requestCount": "{count, plural, one {# request} other {# requests}}",
"invalidDefinition": "Invalid definition",
"migrationRequired": "Migration required",
"migrationInstructions": "Open Actions to copy or export the original v1 definition for manual recreation. You can also use the migration prompt with an LLM. Existing board placements keep working after migration.",
"missingCredentials": "{count, plural, one {Credential missing} other {# credentials missing}}",
"missingCredentialsDescription": "{count, plural, one {This widget still needs one credential.} other {This widget still needs # credentials.}} Select this badge to configure the URL and encrypted values."
},
"create": {
"title": "Create Custom Widget",
"subtitle": "Define an API URL, authentication, and how to display the response data."
},
"tabs": {
"ariaLabel": "Custom widget sections",
"installed": "Installed",
"workshop": "Workshop"
}
},
"action": {
"pasteImportHint": "Paste a full custom widget JSON with Ctrl+V or Command+V",
"delete": "Delete Custom Widget",
"deleteConfirm": "Are you sure you want to delete \"{name}\"? This action cannot be undone.",
"export": "Export",
"duplicate": "Duplicate",
"aiPrompt": "Design with AI",
"copyAiPrompt": "Copy AI prompt",
"enable": "Enable",
"disable": "Disable",
"menu": "Actions",
"downloadSkill": "View Custom Widget Skill",
"publishWorkshop": "Publish to Workshop",
"migrate": "Migrate Custom Widget",
"configureSources": "Configure sources",
"copyLegacyDefinition": "Copy original widget content",
"exportLegacyDefinition": "Export original widget content",
"copyMigrationPrompt": "Copy LLM migration prompt",
"pasteMigration": "Paste migrated widget",
"importMigration": "Import migrated JSON file"
},
"sourceSetupDialog": {
"title": "Configure widget sources",
"description": "Review where this widget connects and add or replace its encrypted credentials.",
"credentialsRequired": "Requests will fail until the required credentials are added.",
"save": "Save configuration"
},
"field": {
"description": "Description"
},
"editor": {
"errorBoundary": {
"title": "Something went wrong"
},
"action": {
"components": "Components",
"format": "Format",
"insertStarter": "Insert starter",
"redo": "Redo",
"copied": "Copied",
"schema": "Schema"
},
"reference": {
"minimal": "Minimal example",
"full": "Full example"
},
"componentReference": {
"search": "Search components",
"empty": "No matching components",
"count": "{count, number} components available"
},
"status": {
"errors": "{count, number} errors",
"warnings": "{count, number} warnings",
"ready": "No issues found",
"position": "Ln {line, number}, Col {column, number}",
"characters": "{count, number} characters",
"charactersWithLimit": "{count, number} / {limit, number}"
},
"diagnostics": {
"title": "Template diagnostics",
"line": "Line {line, number}",
"ast": "{value}",
"bindingTypeConflict": "The input \"{value}\" is shared by controls with incompatible value types.",
"runtimeBindingTypeConflict": "The input \"{value}\" is bound as both {firstType} and {secondType}.",
"dynamicRequestId": "A literal requestId is required. Dynamic request IDs are not accepted.",
"dynamicInputBinding": "A literal input name is required for bind.",
"inlineRequestProps": "Network components accept requestId and params; inline URL, method, header, and body props are blocked.",
"invalidRequestManifest": "Named requests must be a valid request map. {value}",
"missingRequestId": "This network component requires a literal requestId.",
"templateEmpty": "Enter a JSX template.",
"templateTooLong": "The template exceeds the 50,000 character limit.",
"unknownRequest": "No named request with ID \"{value}\" exists."
}
},
"workbench": {
"configure": "Configure",
"sectionNavigation": "Custom widget sections",
"widgetPreview": "Widget preview",
"generalInformation": "General information",
"invalidWidget": "Invalid widget",
"section": {
"general": "General",
"sources": "API sources",
"requests": "Requests",
"options": "Options",
"jsx": "JSX",
"preview": "Preview"
},
"status": {
"unsaved": "Unsaved changes",
"invalid": "Needs attention",
"ready": "Ready"
},
"saveError": {
"title": "Widget was not saved",
"description": "Fix these validation errors and save again.",
"more": "+{count} more errors are shown in the workbench.",
"errors": "Validation errors",
"copy": "Copy errors",
"copied": "Errors copied"
},
"action": {
"preview": "Test and preview",
"previewLoading": "Testing requests"
},
"requests": {
"title": "Named queries and actions",
"label": "Requests",
"description": "Queries load data; actions only run after user interaction. Any HTTP method is valid for either kind."
},
"options": {
"title": "Widget options"
},
"builder": {
"advancedManifest": "Advanced raw manifest",
"advancedJson": "Advanced manifest JSON",
"manifestFilename": "widget.json",
"request": "Request {count, number}",
"requestId": "Request ID",
"type": "Type",
"method": "Method",
"source": "API source",
"run": "Run",
"runLoad": "When the widget loads",
"runManual": "From SubFetch",
"permission": "Permission",
"path": "Path",
"pathDescription": "Use '{option:name}' for widget options and '{param:name}' for invocation values.",
"requestDetails": "Query, body and behavior",
"queryValues": "Query values",
"queryKey": "Query key",
"queryKeyInvalid": "Use a unique ID that starts with a letter and contains only letters, numbers, - or _.",
"valueSource": "Value source",
"literal": "Literal",
"widgetOption": "Widget option",
"invocationParameter": "Invocation parameter",
"option": "Option",
"parameterName": "Parameter name",
"value": "Value",
"removeQueryValue": "Remove query value",
"addQueryValue": "Add query value",
"jsonBody": "JSON body",
"jsonBodyDescription": "Optional. Insert $option and $param references at any depth.",
"insertOptionReference": "Insert option reference",
"insertParameterReference": "Insert parameter reference",
"confirmation": "Confirmation message",
"invalidation": "Refresh after success",
"invalidationDescription": "Comma-separated query IDs",
"noAuth": "Send without source authentication",
"moveRequestUp": "Move request up",
"moveRequestDown": "Move request down",
"removeRequest": "Remove request",
"addRequest": "Add request",
"optionName": "Option name",
"label": "Label",
"control": "Control",
"description": "Description",
"default": "Default",
"optionDetails": "Constraints and dynamic choices",
"minimum": "Minimum",
"maximum": "Maximum",
"step": "Step",
"choiceLabel": "Choice label",
"choiceValue": "Choice value",
"newChoice": "New choice",
"addChoice": "Add choice",
"removeChoice": "Remove choice",
"choicesRequest": "Load choices from request",
"itemsPath": "Items path",
"itemsPathPlaceholder": "items (optional)",
"valuePath": "Value path",
"labelPath": "Label path",
"group": "Group",
"advancedOption": "Advanced option",
"moveOptionUp": "Move option up",
"moveOptionDown": "Move option down",
"removeOption": "Remove option",
"addOption": "Add option",
"invalidJson": "Invalid JSON",
"invalidWidget": "Invalid widget"
},
"jsx": {
"title": "JSX template",
"label": "Template"
},
"sources": {
"title": "API sources and credentials",
"newName": "API {count, number}",
"duplicateSourceId": "API source IDs must be unique.",
"credentialRemoved": "Credential removed",
"credentialRemovedDescription": "The stored value was deleted.",
"primary": "Primary API",
"id": "Source ID",
"name": "Name",
"baseUrl": "Base URL",
"baseUrlError": {
"invalid": "Enter a complete URL.",
"protocol": "Use an HTTP or HTTPS URL.",
"credentials": "Remove the username and password from this URL. Configure credentials below instead.",
"queryOrFragment": "Remove the query string or fragment from this base URL. Add query values to a named request."
},
"networkScope": "Network access",
"authentication": "Authentication",
"headerName": "Header name",
"queryParameter": "Query parameter",
"configured": "Configured — enter a replacement",
"clear": "Clear",
"remove": "Remove source and its requests",
"advanced": "Advanced",
"add": "Add another API source"
},
"ai": {
"title": "Create or fix with any AI",
"description": "Copy one prompt, then paste the AI's single JSON block. Homarr loads its JSX into the editor automatically.",
"request": "What should this widget do?",
"documentationUrl": "API documentation URL (optional)",
"paste": "Paste",
"response": "AI response",
"loaded": "Widget loaded into the editor",
"invalidResponse": "Clipboard does not contain a valid v2 widget",
"invalidResponseDetail": "The AI response is invalid: {message}"
},
"preview": {
"invalid": "Fix validation errors to preview this widget.",
"fixtureError": "Preview fixture error",
"requestData": "Request data",
"status": {
"idle": "Requests have not been tested",
"loading": "Testing requests",
"success": "All load requests succeeded",
"error": "One or more load requests failed"
},
"result": {
"loading": {
"title": "Testing API requests",
"description": "Homarr is creating a preview session and loading the widget data."
},
"success": {
"title": "Preview ready",
"description": "{succeeded, plural, =0 {This widget has no load requests.} one {# load request succeeded.} other {# load requests succeeded.}} Open Data to inspect the response."
},
"error": {
"title": "Preview completed with request errors",
"description": "{succeeded, number} succeeded and {failed, number} failed. Open Data for the response and error details."
}
},
"instanceOptions": "Instance options",
"liveActions": "Run actions against the configured API",
"liveActionsDescription": "Off is safe simulation. Turning this on affects the real service.",
"noActions": "No actions are defined.",
"containedFailures": "Runtime failures are contained inside this widget. Request journals never include secret values.",
"validation": {
"title": "Validation",
"ready": "The widget definition is valid."
},
"accessibility": {
"title": "Accessibility checks",
"ready": "No common accessibility omissions detected.",
"pending": "Accessibility checks will run when the widget definition is valid.",
"imageAlt": "Add alt text to every Image, using an empty alt only for decorative images.",
"actionIconLabel": "Add an aria-label or title to every ActionIcon.",
"inputLabel": "Add a visible label or accessible name to every input."
},
"journal": "Redacted request journal",
"actionParameters": "Action parameters (JSON)",
"invalidParameters": "Use the declared string, number, and boolean parameter types.",
"runDestructive": "Run destructive action",
"runAction": "Run action",
"deleteConfirmation": "This preview action changes remote data through the configured API.",
"simulated": "Action simulated",
"httpStatus": "HTTP {status, number}",
"tab": {
"widget": "Widget",
"data": "Data",
"options": "Options",
"state": "State",
"actions": "Actions",
"diagnostics": "Diagnostics"
},
"size": {
"compact": "Compact",
"standard": "Standard",
"wide": "Wide"
},
"fixture": {
"live": "Live",
"loading": "Loading",
"empty": "Empty",
"error": "Error"
}
}
},
"preview": {
"request": {
"permission": {
"view": "View",
"modify": "Modify",
"full": "Full"
}
}
},
"notification": {
"created": "Widget \"{name}\" created successfully.",
"updated": "Widget \"{name}\" updated successfully.",
"deleted": "Widget \"{name}\" deleted.",
"imported": "Widget imported successfully.",
"migrated": "Legacy widget migrated successfully. Existing board placements now use the v2 definition.",
"migrationError": "Failed to migrate the legacy widget. Ensure the file uses the homarr-custom-widget-v2 schema.",
"legacyDefinitionCopied": "The original widget content was copied. Stored credential values are not included.",
"legacyDefinitionCopyError": "Failed to copy the original widget content.",
"migrationPromptCopied": "A redacted migration prompt was copied. Paste it into an LLM, copy its single JSON response, then choose Paste migrated widget here.",
"migrationPromptCopyError": "Failed to copy the migration prompt.",
"sourcesConfigured": "Widget sources and credentials saved.",
"sourceConfigurationError": "Failed to configure widget sources.",
"aiPromptCopiedWithCount": "AI prompt copied to clipboard ({count, number} characters).",
"aiPromptCopyError": "Failed to copy prompt to clipboard. Your browser may not support this feature.",
"aiPromptSent": "Prompt sent. You can keep editing while the assistant works in the background.",
"updateError": "Failed to update widget. Your changes were not saved.",
"importError": "Failed to import widget. Ensure the file is a valid custom widget JSON export.",
"exportError": "Failed to export widget.",
"duplicated": "Widget \"{name}\" duplicated.",
"duplicateError": "Failed to duplicate widget.",
"toggleError": "Failed to toggle widget status.",
"deleteError": "Failed to delete widget.",
"previewError": "Failed to fetch preview. Check the URL and try again."
},
"importReview": {
"title": "Review custom widget import",
"description": "Check where this widget connects and what board access its controls require before importing it.",
"migrationTitle": "Review migrated v2 replacement",
"migrationDescription": "Review and confirm this generated v2 definition. Confirming atomically replaces the preserved v1 record while keeping existing board placements linked to the same widget ID.",
"fileLabel": "Choose a custom widget JSON file",
"name": "Name",
"origin": "Base origin",
"authentication": "Authentication",
"networkScope": "Network scope",
"methods": "HTTP methods",
"permissions": "Required board permissions",
"sourceSetup": {
"title": "Configure API sources",
"description": "Confirm where this widget connects and add credentials. Private and loopback URLs are specific to your Homarr installation.",
"suggestedUrl": "Suggested URL",
"confirmUrl": "I confirm that this server URL is correct for my Homarr installation",
"ready": "URL ready",
"needsUrl": "Confirm URL",
"credentialsMissing": "Credentials missing",
"credentialsOptional": "You can install without credentials and configure them later, but requests will fail until they are added."
},
"actionWarning": {
"title": "This widget can change remote data",
"description": "Review every named action, inherited credential, and destructive confirmation after import. Secrets are not included in the file."
},
"cancel": "Cancel import",
"confirm": "Import widget",
"confirmMigration": "Confirm v2 replacement"
},
"secret": {
"apiKey": "API key or token",
"username": "Username",
"password": "Password",
"savedPlaceholder": "••••••• (saved, leave empty to keep)"
}
},
"workshop": {
"title": "Workshop",
"browseWorkshop": "Browse Workshop",
"openCommunity": "Open Workshop",
"openOnWorkshop": "Open {title} on the Workshop website",
"back": "Back to Workshop",
"search": "Search widgets",
"searchCss": "Search CSS themes",
"sort": "Sort",
"sortTop": "Top rated",
"sortNewest": "Newest",
"listAriaLabel": "Workshop widgets",
"listAriaLabelCss": "Workshop CSS themes",
"empty": "No widgets match this search.",
"emptyDescription": "Community widgets published to the Workshop show up here.",
"emptyFilteredTitle": "No widgets match this search",
"emptyFilteredDescription": "No Workshop widget matches \"{search}\".",
"emptyCss": "No CSS themes match this search.",
"unavailableTitle": "Homarr Workshop seems to be unavailable",
"unavailable": "The community service may be temporarily down. Try again in a moment. Your installed widgets are unaffected.",
"loadError": "This submission could not be loaded.",
"noDescription": "No description",
"author": "by {name}",
"communityMember": "Community member",
"outdated": "Outdated",
"outdatedWarning": "The author marked this submission as outdated. Review it carefully before importing.",
"score": "Score: {count, number}",
"upvote": "Upvote",
"downvote": "Downvote",
"voteError": "The vote could not be saved.",
"signIn": "Sign in with GitHub",
"signInError": "GitHub sign-in failed. Check that the Workshop OAuth provider is configured and that popups are allowed.",
"signOut": "Sign out",
"signInHint": "Sign in to vote or report. Installing does not require a Workshop account.",
"securityNotice": "Workshop widgets can call their declared API sources and perform declared actions with credentials you configure locally. Secrets are never included.",
"securityNoticeCss": "Community CSS can change the appearance and usability of a board. Review it before importing; nothing is saved until you save board settings.",
"install": "Install",
"installReviewTitle": "Review before installing",
"installError": "This widget cannot be installed",
"installErrorDescription": "The Workshop submission is not a valid Custom JSX v2 widget.",
"useCss": "Import CSS",
"importCss": "Import CSS from Workshop",
"importCssConfirm": "Replace the current custom CSS with \"{title}\"? Nothing is saved until you save the board settings.",
"screenshotAlt": "{title} screenshot {count, number}",
"zoomScreenshot": "View full size",
"previousScreenshot": "Previous screenshot",
"nextScreenshot": "Next screenshot",
"technicalDetails": "Technical details",
"sourceCode": "Workshop entry",
"export": "Export",
"report": "Report",
"reportTitle": "Report submission",
"reportReason": "Reason",
"reportExplanation": "What should the Workshop moderators know?",
"reportSend": "Send report",
"reportSent": "Report sent",
"reportSentDescription": "Workshop moderators can now review this submission.",
"reportCount": "{count, plural, one {# report} other {# reports}}",
"reportWarning": "{count, plural, one {This submission has # open community report.} other {This submission has # open community reports.}} It remains installable, but you should review its content first.",
"reportVisibility": "Report details are visible only to this submission's author and Workshop admins.",
"reportCategory": {
"outdated": "Outdated or no longer working",
"malicious": "Malicious",
"spam": "Spam",
"copyright": "Copyright",
"inappropriate": "Inappropriate",
"other": "Other"
},
"publish": {
"title": "Publish to Workshop",
"introTitle": "Share this widget with the community",
"introDescription": "Homarr exports a credential-free copy of the current widget. Add clear listing details so people know what it does before installing it.",
"listingDetails": "Workshop listing",
"listingDetailsDescription": "These details appear publicly alongside the exported widget definition.",
"success": "Published immediately. Community members can now install and report this widget.",
"successTitle": "Your widget is live",
"manageDescription": "Open the submission to update its listing, review reports, mark it outdated, or delete it. Submission management is handled directly on the Workshop website.",
"viewSubmission": "View and manage submission",
"done": "Done",
"signInHint": "Sign in to publish under your Workshop identity.",
"titleField": "Title",
"descriptionField": "Description",
"screenshots": "Screenshots",
"screenshotsDescription": "Up to five PNG, JPEG, or WebP images",
"screenshotsPlaceholder": "Choose screenshots",
"invalidScreenshot": "Use PNG, JPEG, or WebP images no larger than 5 MB each.",
"privateSourceWarning": "This widget contains private source URLs for: {sources}. Replace personal hosts or IP addresses with safe service placeholders before publishing.",
"reviewSourcesTitle": "Review private source URLs",
"privateSourceConfirmation": "I reviewed these source URLs and they do not expose private infrastructure details",
"action": "Publish now",
"publicationNote": "Publishing is immediate. You can manage the submission afterward on Workshop.",
"definitionChanged": "The widget changed while publication was being prepared. Review its private source URLs again, then retry.",
"error": "Publication failed"
}
},
"integration": {
"completion": {
"modalTitle": "Service ready",
"title": "{name} is connected",
"description": "The connection passed its test. Choose what to show on this board next.",
"connectionReady": "Service connection is ready",
"appReady": "App shortcut is ready",
"compatibleWidgets": "{count, plural, =0 {No compatible widgets} one {# compatible widget} other {# compatible widgets}} available",
"chooseWidget": "Choose widget",
"recipes": {
"title": "Recommended for this board",
"description": "Based on connected services and widgets already on this board.",
"newConnectionReason": "Now available through {integration}",
"existingConnectionReason": "Works with a service you already connected",
"dismiss": "Dismiss recommendations for this service on this board"
}
},
"page": {
"list": {
"ariaLabel": "Configured integrations",
"search": "Search integrations",
"scopedNote": "Showing only the integrations you are allowed to manage.",
"noResults": {
"title": "There are no integrations yet",
"description": "Connect a service to use its data and actions in Homarr widgets.",
"action": "Create your first integration",
"filteredTitle": "No integrations match your search",
"filteredDescription": "No integrations match \"{search}\". Try another name, type, or URL.",
"createOnlyTitle": "You can only add integrations",
"createOnlyDescription": "Your permissions let you create integrations but not manage existing ones. Ask an administrator for access to the ones you need."
}
},
"create": {
"title": "New {name} integration",
"notification": {
"success": {
"message": "The integration was successfully created"
},
"error": {
"message": "The integration could not be created"
}
},
"app": {
"option": {
"existing": {
"title": "Existing",
"label": "Select existing app"
},
"new": {
"title": "New",
"url": {
"label": "App url",
"description": "The url the app will open when accessed from the dashboard"
}
}
}
}
},
"edit": {
"title": "Edit {name} integration",
"notification": {
"success": {
"message": "The integration was successfully saved"
},
"error": {
"message": "The integration could not be saved"
}
},
"app": {
"action": {
"add": "Link an app",
"remove": "Unlink",
"select": "Select an app to link"
}
}
},
"delete": {
"title": "Delete integration",
"message": "Are you sure you want to delete the integration {name}?",
"notification": {
"success": {
"message": "The integration was successfully deleted"
},
"error": {
"message": "Unable to delete the integration"
}
}
}
},
"field": {
"attemptSearchEngineCreation": {
"label": "Create Search Engine",
"description": "Integration \"{kind}\" can be used with the search engines. Check this to automatically configure the search engine."
},
"app": {
"sectionTitle": "Linked App"
},
"createApp": {
"label": "Create app",
"description": "Create an app with the same name and icon as the integration. Leave the input field below empty to create the app with the integration URL."
},
"linkApp": {
"label": "Link an existing app",
"description": "Connect this integration to an app you can already use."
},
"appHref": {
"placeholder": "Custom app URL"
},
"apiKeySettings": {
"label": "Get API key"
}
},
"action": {
"create": "New integration"
},
"grid": {
"widgetCount": "{count} widgets",
"noWidgets": "No widgets",
"detected": "Detected via Docker",
"connected": "{count, plural, one {# connected} other {# connected}}",
"tiedWidgets": "Tied widgets",
"more": "+{count} more",
"loadError": "Integrations could not be loaded. Try again before creating a new connection."
},
"category": {
"dnsHole": "DNS",
"mediaService": "Media",
"calendar": "Calendar",
"mediaSearch": "Search",
"mediaRelease": "Releases",
"mediaRequest": "Requests",
"downloadClient": "Downloads",
"usenet": "Usenet",
"torrent": "Torrent",
"miscellaneous": "Misc",
"smartHomeServer": "Smart Home",
"indexerManager": "Indexer",
"healthMonitoring": "Health",
"search": "Search",
"mediaTranscoding": "Transcoding",
"networkController": "Network",
"releasesProvider": "Releases",
"notifications": "Notifications",
"firewall": "Firewall",
"timetable": "Timetable",
"photoService": "Photos",
"documents": "Documents",
"notes": "Notes",
"mediaMonitoring": "Monitoring",
"speedtest": "Speed Test",
"analytics": "Analytics",
"vpn": "VPN",
"mediaLibrary": "Media Library",
"uptimeMonitoring": "Uptime Monitoring",
"beszel": "Beszel"
},
"testConnection": {
"action": {
"create": "Test connection and create",
"edit": "Test connection and save"
},
"error": {
"common": {
"cause": {
"title": "Cause with more details"
}
},
"unknown": {
"title": "Unknown error",
"description": "An unknown error occurred, open the cause below to see more details"
},
"parse": {
"title": "Parse error",
"description": "The response could not be parsed. Please verify that the URL is pointing to the base URL of the service."
},
"authorization": {
"title": "Authorization error",
"description": "The request was not authorized. Please verify that the credentials are correct and you have them configured with enough permissions."
},
"statusCode": {
"title": "Response error",
"description": "Received unexpected {statusCode} ({reason}) response from <url></url>. Please verify that the URL is pointing to the base URL of the integration.",
"otherDescription": "Received unexpected {statusCode} response from <url></url>. Please verify that the URL is pointing to the base URL of the integration.",
"reason": {
"badRequest": "Bad request",
"notFound": "Not found",
"tooManyRequests": "Too many requests",
"internalServerError": "Internal server error",
"serviceUnavailable": "Service unavailable",
"gatewayTimeout": "Gateway timeout"
}
},
"certificate": {
"title": "Certificate error",
"description": {
"expired": "The certificate has expired.",
"notYetValid": "The certificate is not yet valid.",
"untrusted": "The certificate is not trusted.",
"hostnameMismatch": "The certificate hostname does not match the URL."
},
"alert": {
"permission": {
"title": "Not enough permissions",
"message": "You are not allowed to trust or upload certificates. Please contact your administrator to upload the necessary root certificate."
},
"hostnameMismatch": {
"title": "Hostname mismatch",
"message": "The hostname in the certificate does not match the hostname you are connecting to. This could indicate a security risk, but you can still choose to trust this certificate."
},
"extract": {
"title": "CA certificate extraction failed",
"message": "Only self signed certificates without a chain can be fetched automatically. If you are using a self signed certificate, please make sure to upload the CA certificate manually. You can find instructions on how to do this <docsLink></docsLink>."
}
},
"action": {
"retry": {
"label": "Retry creation"
},
"trust": {
"label": "Trust certificate"
},
"upload": {
"label": "Upload certificate"
}
},
"hostnameMismatch": {
"confirm": {
"title": "Trust hostname mismatch",
"message": "Are you sure you want to trust the certificate with a hostname mismatch?"
},
"notification": {
"success": {
"title": "Trusted certificate",
"message": "Added hostname to trusted certificate list"
},
"error": {
"title": "Failed to trust certificate",
"message": "The certificate with a hostname mismatch could not be trusted"
}
}
},
"selfSigned": {
"confirm": {
"title": "Trust self signed certificate",
"message": "Are you sure you want to trust this self signed certificate?"
},
"notification": {
"success": {
"title": "Trusted certificate",
"message": "Added certificate to trusted certificate list"
},
"error": {
"title": "Failed to trust certificate",
"message": "Failed to add certificate to trusted certificate list"
}
}
},
"details": {
"title": "Details",
"description": "Review the certificate information before deciding to trust it.",
"content": {
"action": "Show content",
"title": "PEM Certificate"
}
}
},
"request": {
"title": "Request error",
"description": {
"connection": {
"hostUnreachable": "The server could not be reached. This usually means the host is offline or unreachable from your network.",
"networkUnreachable": "The network is unreachable. Please check your internet connection or network configuration.",
"refused": "The server refused the connection. It may not be running or is rejecting requests on the specified port.",
"reset": "The connection was unexpectedly closed by the server. This can happen if the server is unstable or restarted."
},
"dns": {
"notFound": "The server address could not be found. Please check the URL for typos or invalid domain names.",
"timeout": "DNS lookup timed out. This may be a temporary issue—please try again in a few moments.",
"noAnswer": "The DNS server didn't return a valid response. The domain may exist but has no valid records."
},
"timeout": {
"aborted": "The request was aborted before it could complete. This might be due to a user action or system timeout.",
"timeout": "The request took too long to complete and was timed out. Check your network or try again later."
}
}
}
},
"alertNotice": "The Save button is enabled once a successful connection is established",
"notification": {
"success": {
"title": "Connection successful",
"message": "The connection was successfully established"
},
"invalidUrl": {
"title": "Invalid URL",
"message": "The URL is invalid"
},
"secretNotDefined": {
"title": "Missing credentials",
"message": "Not all credentials were provided"
},
"invalidCredentials": {
"title": "Invalid credentials",
"message": "The credentials are invalid"
},
"commonError": {
"title": "Connection failed",
"message": "The connection could not be established"
},
"badRequest": {
"title": "Bad request",
"message": "The request was malformed"
},
"unauthorized": {
"title": "Unauthorized",
"message": "Probably wrong credentials"
},
"forbidden": {
"title": "Forbidden",
"message": "Probably missing permissions"
},
"notFound": {
"title": "Not found",
"message": "Probably wrong url or path"
},
"internalServerError": {
"title": "Internal server error",
"message": "The server encountered an error"
},
"serviceUnavailable": {
"title": "Service unavailable",
"message": "The server is currently unavailable"
},
"connectionAborted": {
"title": "Connection aborted",
"message": "The connection was aborted"
},
"domainNotFound": {
"title": "Domain not found",
"message": "The domain could not be found"
},
"connectionRefused": {
"title": "Connection refused",
"message": "The connection was refused"
},
"invalidJson": {
"title": "Invalid JSON",
"message": "The response was not valid JSON"
},
"wrongPath": {
"title": "Wrong path",
"message": "The path is probably not correct"
},
"tooManyRequests": {
"title": "Too many requests in a given time",
"message": "There were too many requests. You are likely being rate-limited or rejected by the target system"
}
}
},
"secrets": {
"title": "Secrets",
"lastUpdated": "Last updated {date}",
"notSet": {
"label": "No value set",
"tooltip": "This required secret has not been set yet"
},
"secureNotice": "This secret cannot be retrieved after creation",
"reset": {
"title": "Reset secret",
"message": "Are you sure you want to reset this secret?"
},
"noSecretsRequired": {
"segmentTitle": "No secrets",
"text": "No secrets required for this integration"
},
"kind": {
"username": {
"label": "Username",
"newLabel": "New username"
},
"apiKey": {
"label": "API Key",
"newLabel": "New API Key"
},
"password": {
"label": "Password",
"newLabel": "New password"
},
"tokenId": {
"label": "Token ID",
"newLabel": "New token ID"
},
"realm": {
"label": "Realm",
"newLabel": "New realm"
},
"personalAccessToken": {
"label": "Personal Access Token",
"newLabel": "New Personal Access Token"
},
"topic": {
"label": "Topic",
"newLabel": "New topic"
},
"url": {
"label": "Url",
"newLabel": "New url"
},
"opnsenseApiKey": {
"label": "API Key (Key)",
"newLabel": "New API Key (Key)"
},
"opnsenseApiSecret": {
"label": "API Key (Secret)",
"newLabel": "New API Key (Secret)"
},
"patchmonApiKey": {
"label": "API Key",
"newLabel": "New API Key"
},
"patchmonApiSecret": {
"label": "API Secret",
"newLabel": "New API Secret"
},
"githubAppId": {
"label": "App Id",
"newLabel": "New App Id"
},
"githubInstallationId": {
"label": "Installation Id",
"newLabel": "New Installation Id"
},
"privateKey": {
"label": "Private key",
"newLabel": "New private key"
},
"slug": {
"label": "Status page slug",
"newLabel": "New status page slug"
}
}
},
"permission": {
"use": "Select integrations in items",
"interact": "Interact with integrations",
"full": "Full integration access"
}
},
"media": {
"plural": "Medias",
"search": "Find a media",
"field": {
"size": "Size",
"creator": "Creator"
},
"action": {
"upload": {
"label": "Upload media",
"file": "Select file",
"notification": {
"success": {
"message": "The media was successfully uploaded"
},
"error": {
"message": "The media could not be uploaded"
}
}
},
"delete": {
"label": "Delete media",
"description": "Are you sure you want to delete the media <bName></bName>?",
"notification": {
"success": {
"message": "The media was successfully deleted"
},
"error": {
"message": "The media could not be deleted"
}
}
},
"copy": {
"label": "Copy URL"
},
"open": {
"label": "Open media"
}
},
"noResults": {
"title": "No media uploaded"
}
},
"common": {
"success": "Success",
"beta": "Beta",
"error": "Error",
"analyticsError": "Setup analytics could not be recorded.",
"action": {
"add": "Add",
"apply": "Apply",
"backToOverview": "Back to overview",
"change": "Change",
"create": "Create",
"createAnother": "Create and start over",
"edit": "Edit",
"import": "Import",
"insert": "Insert",
"remove": "Remove",
"save": "Save",
"saveChanges": "Save changes",
"cancel": "Cancel",
"delete": "Delete",
"discard": "Discard",
"close": "Close",
"confirm": "Confirm",
"continue": "Continue",
"previous": "Previous",
"next": "Next",
"checkoutDocs": "Check out the documentation",
"checkLogs": "Check logs for more details",
"tryAgain": "Try again",
"loading": "Loading",
"show": "Show",
"hide": "Hide",
"undo": "Undo",
"editNamed": "Edit {name}",
"deleteNamed": "Delete {name}",
"clearSearch": "Clear search",
"copy": "Copy",
"copied": "Copied",
"refresh": "Refresh"
},
"here": "here",
"serviceUrlTemplate": {
"serverTitle": "Usual server address",
"urlModeLabel": "Service address pattern",
"hostPort": "Same host, different ports",
"subdomain": "One subdomain per service",
"path": "One path per service"
},
"iconPicker": {
"label": "Icon URL",
"description": "Search the library, paste an image URL, or upload a file.",
"header": "Search {countIcons} images by name",
"headerLoading": "Search images by name",
"clear": "Clear image",
"uploadImage": "Upload image",
"results": "Image search results",
"localImages": "Your images",
"svgIcons": "SVG icons",
"otherImages": "Other images",
"urlLoading": "Checking image…",
"urlReady": "Image is ready to use",
"urlError": "This image could not be loaded. Check the URL and try again.",
"noResults": "No icons match \"{search}\".",
"error": "Couldn't load icons."
},
"colorScheme": {
"options": {
"auto": "Auto",
"light": "Light",
"dark": "Dark"
}
},
"information": {
"min": "Min",
"max": "Max",
"hours": "Hours",
"minutes": "Minutes"
},
"notification": {
"create": {
"success": "Creation successful",
"error": "Creation failed"
},
"delete": {
"success": "Deletion successful",
"error": "Deletion failed"
},
"update": {
"success": "Changes applied successfully",
"error": "Unable to apply changes"
},
"transfer": {
"success": "Transfer successful",
"error": "Transfer failed"
}
},
"multiSelect": {
"placeholder": "Pick one or more values"
},
"multiText": {
"placeholder": "Add more values",
"addLabel": "Add {value}"
},
"select": {
"placeholder": "Pick value",
"badge": {
"recommended": "Recommended"
}
},
"userAvatar": {
"menu": {
"open": "Open account menu",
"management": "Management",
"preferences": "Your preferences",
"logout": "Logout",
"login": "Login",
"homeBoard": "Your home board",
"updateAvailable": "{countUpdates} updates available: {tag}",
"assistant": "Assistant",
"assistantThinking": "Thinking",
"modifier": "Mod"
}
},
"dangerZone": "Danger zone",
"noResults": "No results found",
"unsavedChanges": "You have unsaved changes!",
"servers": "Servers",
"applications": "Apps",
"services": "Services",
"preview": {
"show": "Show preview",
"hide": "Hide preview"
},
"zod": {
"errors": {
"default": "This field is invalid",
"required": "This field is required",
"string": {
"startsWith": "This field must start with {startsWith}",
"endsWith": "This field must end with {endsWith}",
"includes": "This field must include {includes}",
"invalidEmail": "This field must be a valid email"
},
"tooSmall": {
"string": "This field must be at least {minimum} characters long",
"number": "This field must be greater than or equal to {minimum}"
},
"tooBig": {
"string": "This field must be at most {maximum} characters long",
"number": "This field must be less than or equal to {maximum}"
},
"custom": {
"passwordsDoNotMatch": "Passwords do not match",
"passwordRequirements": "Password does not meet the requirements",
"boardAlreadyExists": "A board with this name already exists",
"invalidFileType": "Invalid file type, expected {expected}",
"invalidFileName": "Invalid file name",
"fileTooLarge": "File is too large, maximum size is {maxSize}",
"invalidConfiguration": "Invalid configuration",
"groupNameTaken": "Group name already taken"
}
}
},
"unit": {
"speed": {
"kilometersPerHour": "km/h",
"milesPerHour": "mph"
}
},
"widgetQuery": {
"loading": "Loading widget data"
},
"total": "Total",
"filesystemUsage": "{count, plural, one {Show usage for # filesystem} other {Show usage for # filesystems}}",
"field": {
"name": "Name"
},
"label": {
"new": "New"
},
"entity": {
"apps": "Apps",
"boards": "Boards",
"certificates": "Certificates",
"customWidgets": "Custom widgets",
"groups": "Groups",
"integrations": "Integrations",
"invites": "Invites",
"logs": "Logs",
"media": "Media",
"searchEngines": "Search engines",
"tasks": "Tasks",
"users": "Users"
}
},
"section": {
"option": {
"showLabel": {
"label": "Show label",
"description": "Display the container label above its contents."
},
"collapsible": {
"label": "Allow collapse",
"description": "Let viewers expand and collapse this container."
},
"showOpenAll": {
"label": "Show open-all action",
"description": "Show an action that opens every app in this container in new tabs."
},
"scrollable": {
"label": "Scrollable",
"description": "Keep this container at its set size and scroll its contents instead of growing to fit them."
}
},
"action": {
"openAllInNewTabsFor": "Open all apps in {name} in tabs"
},
"openAllInNewTabs": {
"title": "Open all in tabs",
"text": "Some browsers may block the bulk-opening of tabs for security reasons. Homarr was unable to open all windows, because your browser blocked this action. Please allow \"Open pop-up windows\" and re-try."
},
"container": {
"untitled": "Untitled container",
"action": {
"create": "New container",
"remove": "Remove container",
"expand": "Expand",
"collapse": "Collapse"
},
"option": {
"title": {
"label": "Title"
},
"customCssClasses": {
"label": "Custom css classes"
},
"borderColor": {
"label": "Border color"
}
},
"remove": {
"message": "Remove this container? Its contents will move into the surrounding area."
}
}
},
"item": {
"action": {
"edit": "Edit item",
"moveResize": "Move / resize item",
"duplicate": "Duplicate item",
"remove": "Remove item"
},
"menu": {
"label": {
"settings": "Settings",
"settingsFor": "Settings for {name}",
"options": "Options",
"actions": "Actions"
},
"status": {
"success": "OK",
"error": "Error",
"loading": "Loading",
"idle": "Idle"
},
"notification": {
"saveError": {
"title": "Unable to save widget",
"message": "The widget changes were rolled back"
}
}
},
"create": {
"title": "Choose item to add",
"search": "Filter items",
"addToBoard": "Add to board",
"addAtPosition": "Add item here",
"destination": {
"label": "Add to",
"description": "Choose where the widget should appear. You can still move it later.",
"mainCanvas": "Main canvas",
"leftRail": "Left rail",
"rightRail": "Right rail"
},
"connectionStatus": {
"ready": "Ready",
"needsSetup": "Needs setup",
"noConnectionRequired": "No connection required"
},
"customWidget": "Custom widget",
"standalone": "Standalone",
"missingIntegration": {
"title": "Connect a service first",
"noPermission": "This widget needs a compatible service connection. Ask an administrator to connect one, then try again."
},
"notification": {
"success": {
"title": "Widget added",
"message": "{name} was added to this board.",
"relocatedMessage": "{name} was added to {destination} because the selected destination was unavailable."
},
"error": {
"title": "Unable to add item",
"message": "The item could not be added to this board"
}
}
},
"selection": {
"summary": "{count, plural, one {# selected item} other {# selected items}}",
"selected": "{count, plural, one {# selected} other {# selected}}",
"copy": "Copy",
"copied": "{count, plural, one {# item copied to the clipboard} other {# items copied to the clipboard}}",
"copyError": "The selected items could not be copied. Your browser may not allow clipboard access.",
"paste": "Paste",
"pasteShortcut": "Paste copied items here (Ctrl / ⌘ + V)",
"pasted": "{count, plural, one {# item pasted} other {# items pasted}}",
"pasteError": "The clipboard could not be read. Your browser may not allow clipboard access.",
"pasteInvalid": "The clipboard does not contain valid Homarr board items.",
"pasteUnavailable": "The copied items do not fit on this board.",
"removed": "{count, plural, one {# item removed} other {# items removed}}",
"move": "Move",
"moveTo": "Move selected items",
"delete": "Delete",
"clear": "Clear selection",
"clearShortcut": "Clear selection (Escape)",
"saveErrorTitle": "Unable to update items",
"saveErrorMessage": "The changes could not be saved. The board was refreshed.",
"moveUnavailableTitle": "Unable to move selected items",
"moveUnavailableMessage": "The destination does not have enough room for the entire selection."
},
"moveResize": {
"title": "Move / resize item",
"entryLabel": "{name}, column {column}, row {row}",
"target": {
"numbered": "{name}, destination {index}",
"located": "{name}, {location}, destination {index}"
},
"keyboard": {
"instructions": "Press Enter or Space to start keyboard editing. Use arrow keys to move, Shift plus arrow keys to resize, and Escape to stop.",
"started": "Keyboard editing started. Use arrow keys to move, Shift plus arrow keys to resize, and Escape to stop.",
"stopped": "Keyboard editing stopped.",
"boundary": "That change does not fit inside this section."
},
"field": {
"section": {
"label": "Section or rail"
},
"width": {
"label": "Width",
"shortLabel": "W"
},
"height": {
"label": "Height",
"shortLabel": "H"
},
"xOffset": {
"label": "X offset"
},
"yOffset": {
"label": "Y offset"
}
}
},
"edit": {
"title": "Edit item",
"tab": {
"widget": "Edit widget",
"app": "Edit app",
"integration": "Edit integration"
},
"app": {
"propagationNotice": "Changes to this app will be applied everywhere it is used across all dashboards."
},
"integration": {
"action": "Edit connection",
"description": "Test or repair a selected connection without leaving this widget.",
"editLabel": "Edit {name} integration",
"fullAccessRequired": "Full access required",
"propagationNotice": "Changes to this integration apply everywhere it is used. The connection is tested before it is saved.",
"loading": "Loading integration",
"loadError": "This integration could not be loaded. Try again before changing its connection settings."
},
"preview": {
"integrationRequired": "Choose a connection to preview this widget.",
"size": "Size"
},
"settings": {
"label": "Widget settings"
},
"advancedOptions": {
"label": "Advanced options",
"title": "Advanced item options"
},
"field": {
"integrations": {
"label": "Integrations",
"removeLabel": "Remove {name} integration"
},
"title": {
"label": "Title"
},
"customCssClasses": {
"label": "Custom css classes"
},
"borderColor": {
"label": "Border color"
}
}
},
"remove": {
"message": "Are you sure?"
},
"advancedFocus": {
"open": "Open advanced view",
"close": "Close advanced view",
"label": "{widget} advanced view"
}
},
"widget": {
"integrationSelect": {
"configureIntegrationFirst": "Connect an integration first",
"placeholder": "Select an option"
},
"app": {
"name": "App",
"description": "Embeds an app into the board.",
"option": {
"appId": {
"label": "Choose app"
},
"showTitle": {
"label": "Show app name"
},
"pingEnabled": {
"label": "Enable status check"
},
"layout": {
"option": {
"row-reverse": "Horizontal (reversed)",
"column-reverse": "Vertical (reversed)"
}
},
"descriptionDisplayMode": {
"label": "Description display mode",
"description": "Choose how to display the app description",
"option": {
"normal": "Within widget",
"tooltip": "As tooltip",
"hidden": "Hidden"
}
}
},
"error": {
"notFound": {
"label": "No app",
"tooltip": "You have no valid app selected"
}
}
},
"bookmarks": {
"name": "Bookmarks",
"description": "Displays multiple app links",
"option": {
"layout": {
"label": "Layout",
"option": {
"adaptive": {
"label": "Adaptive"
},
"gridHorizontal": {
"label": "Compact grid"
},
"icons": {
"label": "Icons"
}
}
},
"variant": {
"label": "Appearance",
"option": {
"soft": {
"label": "Soft"
},
"filled": {
"label": "Filled"
},
"outline": {
"label": "Outline"
},
"plain": {
"label": "Plain"
}
}
},
"spacing": {
"label": "Card spacing",
"option": {
"xs": {
"label": "Extra small"
},
"sm": {
"label": "Small"
},
"md": {
"label": "Medium"
},
"lg": {
"label": "Large"
},
"xl": {
"label": "Extra large"
}
}
},
"hideTitle": {
"label": "Hide title"
},
"hideIcon": {
"label": "Hide icons"
},
"hideHostname": {
"label": "Hide hostnames"
},
"withBorder": {
"label": "Show border"
},
"customUrls": {
"label": "Custom links"
},
"items": {
"label": "Bookmarks",
"remove": "Remove bookmark",
"apps": {
"label": "Add bookmarks",
"description": "Paste URLs or find existing Apps. Drag the bookmarks below to reorder them.",
"placeholder": "Paste URLs or search Apps",
"addUrl": "Add this URL",
"hint": "Press Enter to add a URL. Paste comma-separated or one-per-line URLs to add several."
}
}
},
"empty": "Add a URL or App in the widget settings"
},
"archiveTeamWarrior": {
"name": "ArchiveTeam Warrior",
"description": "Monitor ArchiveTeam Warrior status, projects, and active archival jobs.",
"option": {
"showBroadcastMessage": {
"label": "Show broadcast messages"
}
},
"noProjectSelected": "No project selected",
"runnerStatus": "Runner: {status}",
"projectId": "Project: {id}",
"sessionReceived": "Session received: {value}",
"sessionSent": "Session sent: {value}",
"sessionId": "Session: {id}",
"startedAt": "Started {date}",
"emptyItems": "No active or recent jobs in this snapshot",
"metric": {
"running": "Running",
"completed": "Done",
"failed": "Failed",
"canceled": "Canceled",
"download": "Download",
"upload": "Upload"
},
"status": {
"running": "Running",
"completed": "Completed",
"failed": "Failed",
"canceled": "Canceled",
"stopped": "Stopped",
"idle": "Idle",
"unknown": "Unknown"
}
},
"wud": {
"name": "What's Up Docker",
"description": "Show how many watched containers have updates available.",
"title": "What's Up Docker",
"monitored": "Monitored",
"updatesAvailable": "{count, plural, one {# update available} other {# updates available}}",
"updateAvailable": "Update available",
"openReleaseNotes": "Open release notes",
"option": {
"showRing": {
"label": "Show update ring"
},
"showUpdateList": {
"label": "Show container update list",
"description": "Lists each monitored container that has an image update available"
}
}
},
"dnsHoleSummary": {
"name": "DNS Hole Summary",
"description": "Displays the summary of your DNS Hole",
"option": {
"usePiHoleColors": {
"label": "Use Pi-Hole colors"
}
},
"error": {
"internalServerError": "Failed to fetch DNS Hole Summary"
},
"data": {
"adsBlockedToday": "Blocked today",
"adsBlockedTodayPercentage": "Blocked today",
"dnsQueriesToday": "Queries today",
"domainsBeingBlocked": "Domains on blocklist"
},
"domainsTooltip": "Due to multiple integrations Homarr can't calculate the exact number of domains being blocked",
"status": {
"enabled": "Enabled",
"disabled": "Disabled",
"unknown": "Unknown"
}
},
"dnsHoleControls": {
"name": "DNS Hole Controls",
"description": "Control PiHole or AdGuard from your dashboard",
"option": {
"showToggleAllButtons": {
"label": "Show Toggle All Buttons"
}
},
"error": {
"internalServerError": "Failed to control DNS Hole",
"bulkActionsFailed": "{count, plural, one {# action failed} other {# actions failed}}"
},
"controls": {
"enableAll": "Enable All",
"disableAll": "Disable All",
"setTimer": "Set Timer",
"set": "Set",
"enabled": "Enabled",
"disabled": "Disabled",
"processing": "Processing",
"disconnected": "Disconnected",
"unlimited": "Leave blank to unlimited"
}
},
"clock": {
"name": "Date and time",
"description": "Displays the current date and time.",
"option": {
"customTitleToggle": {
"label": "Custom Title/City display",
"description": "Show off a custom title or the name of the city/country on top of the clock."
},
"is24HourFormat": {
"label": "24-hour format",
"description": "Use 24-hour format instead of 12-hour format"
},
"useCustomTimezone": {
"label": "Use a fixed timezone"
},
"timezone": {
"label": "Timezone",
"description": "Choose the timezone following the IANA standard"
},
"showDate": {
"label": "Show the date"
},
"dateFormat": {
"label": "Date format",
"description": "Choose a Day.js preset. Each option shows a live example and its format tokens."
},
"customTimeFormat": {
"label": "Time format",
"description": "Choose a Day.js preset. The selected format controls 12/24-hour display and whether the clock updates every second."
},
"showWeather": {
"label": "Show weather",
"description": "Display a small animated weather icon and temperature in the corner of the card"
},
"isWeatherFormatFahrenheit": {
"label": "Use Fahrenheit"
},
"animateWeatherIcon": {
"label": "Animate weather icon",
"description": "Animate the weather icon. Disabled by default and always disabled when reduced motion is requested."
},
"colorWeatherByDayNight": {
"label": "Color weather by day/night",
"description": "Tint the weather icon and temperature with a day color or a night color, based on whether it's currently day or night at the chosen location."
},
"dayWeatherColor": {
"label": "Day color"
},
"nightWeatherColor": {
"label": "Night color"
},
"worldClockCities": {
"label": "World clock cities",
"description": "Add and order up to six cities for advanced view."
}
},
"timezoneList": {
"timezone": "Timezone",
"cityLabel": "City label",
"searchPlaceholder": "Search timezones",
"noResults": "No timezones found",
"unsupportedOption": "Unsupported: {timeZone}",
"add": "Add city",
"remove": "Remove {city}",
"reorder": "Reorder {city}",
"limit": "{count} of {maximum} cities configured"
},
"worldClock": {
"primary": "Primary clock",
"local": "Local time",
"today": "Today",
"tomorrow": "Tomorrow",
"yesterday": "Yesterday",
"noSecondaryCities": "Add cities in widget options to compare them here.",
"unsupportedPrimaryTitle": "Primary timezone is unavailable",
"unsupportedPrimary": "{timeZone} is not supported in this browser. Showing UTC as a clearly marked fallback.",
"unsupportedTimeZone": "Unsupported timezone: {timeZone}",
"accessibleTime": "{city}: {time}, {date}, {timeZone}",
"advancedLabel": "Advanced world clock",
"cities": "World clocks",
"cityCount": "{count} timezones",
"timeBarLabel": "24-hour time-of-day position for {city}",
"dayProgress": "{percent}% elapsed · {hours}h {minutes}m remaining",
"phaseLegend": "Time-of-day legend",
"tick": {
"midnight": "00",
"morning": "06",
"noon": "12",
"evening": "18",
"end": "24"
},
"phaseRange": {
"night": "00–05 · 21–24",
"dawn": "05–08",
"day": "08–18",
"dusk": "18–21"
},
"phase": {
"night": "Night",
"dawn": "Dawn",
"day": "Day",
"dusk": "Dusk"
}
}
},
"airQuality": {
"name": "Air Quality & UV",
"description": "Displays air quality, ultraviolet index, pollutants and pollen for a location.",
"option": {
"location": {
"label": "Air quality location"
},
"aqiStandard": {
"label": "AQI standard",
"options": {
"auto": "Automatic for locale",
"european": "European AQI",
"us": "US AQI"
}
},
"showUv": {
"label": "Show UV index"
},
"showPollutants": {
"label": "Show pollutant concentrations"
},
"showPollen": {
"label": "Show pollen concentrations"
}
},
"category": {
"good": "Good",
"fair": "Fair",
"moderate": "Moderate",
"unhealthySensitive": "Unhealthy for sensitive groups",
"unhealthy": "Unhealthy",
"poor": "Poor",
"veryPoor": "Very poor",
"veryUnhealthy": "Very unhealthy",
"extremelyPoor": "Extremely poor",
"hazardous": "Hazardous",
"unknown": "No AQI reading"
},
"uv": {
"label": "UV index",
"category": {
"low": "Low",
"moderate": "Moderate",
"high": "High",
"veryHigh": "Very high",
"extreme": "Extreme",
"unknown": "No reading"
}
},
"dominantPollutant": "Dominant pollutant",
"aqiLabel": "AQI",
"strongestPollen": "Highest pollen",
"unit": {
"concentration": "{value} µg/m³",
"pollen": "{value} grains/m³"
},
"pollutant": {
"pm2_5": "PM2.5",
"pm10": "PM10",
"ozone": "Ozone",
"nitrogenDioxide": "Nitrogen dioxide",
"sulphurDioxide": "Sulphur dioxide",
"carbonMonoxide": "Carbon monoxide"
},
"pollen": {
"alder": "Alder",
"birch": "Birch",
"grass": "Grass",
"mugwort": "Mugwort",
"olive": "Olive",
"ragweed": "Ragweed"
},
"compact": {
"sixHourTrend": "AQI trend for the next six hours"
},
"advanced": {
"observedAt": "Updated at {time}",
"next24Hours": "Next 24 hours",
"pollutants": "Pollutant concentrations",
"pollen": "Pollen concentrations",
"sevenDayForecast": "7-day maximum forecast",
"aqiValue": "AQI {value}",
"uvValue": "UV {value}",
"uvShort": "UV {value}",
"noForecast": "No forecast data available"
}
},
"countdown": {
"name": "Countdowns",
"description": "Tracks upcoming events and recurring anniversaries.",
"option": {
"events": {
"label": "Events",
"description": "Add and order up to 20 one-time or yearly countdowns. Dates are entered in the selected timezone."
},
"showProgress": {
"label": "Show progress"
},
"showSeconds": {
"label": "Show seconds",
"description": "Keep seconds visible for every upcoming event."
}
},
"dateTimeEventList": {
"newEvent": "New event",
"add": "Add event",
"remove": "Remove {event}",
"reorder": "Reorder {event}",
"eventLabel": "Event label",
"timezone": "Timezone",
"unsupportedOption": "Unsupported: {timeZone}",
"recurrence": "Repeats",
"recurrenceOption": {
"none": "Does not repeat",
"yearly": "Every year"
},
"target": "Event date and time",
"trackProgress": "Track progress from a start date",
"start": "Progress start date and time",
"confirmDateTime": "Confirm date and time",
"limit": "{count} of {maximum} events configured"
},
"empty": {
"title": "No countdowns yet",
"description": "Add an event in widget options to start counting down."
},
"completed": "Completed",
"yearly": "Yearly",
"progress": "Event progress",
"upcoming": "Upcoming",
"completedEvents": "Completed events",
"invalid": {
"title": "Some events cannot be displayed",
"description": "{count, plural, one {One event has an invalid date or unsupported timezone.} other {# events have an invalid date or unsupported timezone.}}",
"value": "Unavailable"
},
"alert": {
"notifications": "Browser notifications",
"permissionDenied": "Notifications are blocked in this browser.",
"reached": "The countdown has reached its target."
}
},
"timer": {
"name": "Timer / Pomodoro",
"description": "Runs a simple timer or a configurable Pomodoro sequence.",
"option": {
"mode": {
"label": "Mode",
"options": {
"timer": "Timer",
"pomodoro": "Pomodoro"
}
},
"timerMinutes": {
"label": "Timer minutes"
},
"focusMinutes": {
"label": "Focus minutes"
},
"shortBreakMinutes": {
"label": "Short break minutes"
},
"longBreakMinutes": {
"label": "Long break minutes"
},
"sessionsBeforeLongBreak": {
"label": "Focus sessions before a long break"
},
"autoStartBreaks": {
"label": "Automatically start breaks"
},
"autoStartFocus": {
"label": "Automatically start focus sessions"
}
},
"phase": {
"timer": "Timer",
"focus": "Focus",
"shortBreak": "Short break",
"longBreak": "Long break"
},
"action": {
"start": "Start",
"pause": "Pause",
"reset": "Reset"
},
"attention": {
"timerComplete": "Timer complete",
"phaseReady": "{phase} ready"
},
"progress": "Timer progress: {progress}%",
"compact": {
"completedFocus": "{count, plural, =0 {No focus sessions completed} one {# focus session completed} other {# focus sessions completed}}"
},
"alert": {
"title": "Timer complete",
"completed": "{phase} completed."
},
"advanced": {
"sequence": "Pomodoro sequence",
"focusSession": "Focus {session}",
"settings": "Permanent settings",
"settingsHint": "Use the widget context menu to edit these board settings.",
"localAlerts": "Local alerts",
"notifications": "Browser notifications",
"sound": "Timer sounds",
"localAlertsHint": "Timer sounds are enabled by default. Sounds and notifications apply only to this widget in this browser.",
"notificationsDenied": "Notifications are blocked in this browser."
}
},
"minecraftServerStatus": {
"name": "Minecraft Server Status",
"description": "Displays the status of a Minecraft server",
"option": {
"domain": {
"label": "Server address"
},
"isBedrockServer": {
"label": "Bedrock server"
}
},
"status": {
"online": "Online",
"offline": "Offline"
}
},
"timetable": {
"name": "Timetable",
"description": "Displays departure times for a station",
"title": "Departures {station}",
"noStation": "No station selected",
"option": {
"baseUrl": {
"label": "Search.ch URL",
"description": "Custom URLs must resolve to a public IP address. Private and local hosts are rejected."
},
"station": {
"label": "Station",
"placeholder": "Search for a station"
}
},
"error": {
"customSourceUnavailable": "The timetable source is unavailable. Check that its URL resolves to a public IP address.",
"stationSearch": "Unable to search stations. Check the custom URL and your board access."
},
"warning": {
"stale": "The timetable could not be refreshed. Showing departures last updated at {time}.",
"staleCompact": "Stale data"
}
},
"notebook": {
"name": "Notebook",
"description": "A simple notebook widget that supports markdown",
"option": {
"showToolbar": {
"label": "Show the toolbar to help you write markdown"
},
"allowReadOnlyCheck": {
"label": "Allow check in read only mode"
},
"content": {
"label": "The content of the notebook"
}
},
"controls": {
"bold": "Bold",
"italic": "Italic",
"strikethrough": "Strikethrough",
"underline": "Underline",
"colorText": "Color text",
"colorHighlight": "Colored highlight text",
"code": "Code",
"clear": "Clear formatting",
"heading": "Heading {level}",
"align": "Align text: {position}",
"directionLtr": "Set text direction left to right",
"directionRtl": "Set text direction right to left",
"blockquote": "Blockquote",
"horizontalLine": "Horizontal line",
"bulletList": "Bullet list",
"orderedList": "Ordered list",
"checkList": "Check list",
"increaseIndent": "Increase Indent",
"decreaseIndent": "Decrease Indent",
"link": "Link",
"unlink": "Remove link",
"image": "Embed Image",
"addTable": "Add table",
"deleteTable": "Delete Table",
"colorCell": "Color Cell",
"mergeCell": "Toggle cell merging",
"addColumnLeft": "Add column before",
"addColumnRight": "Add column after",
"deleteColumn": "Delete column",
"addRowTop": "Add row before",
"addRowBelow": "Add row after",
"deleteRow": "Delete row"
},
"align": {
"left": "Left",
"center": "Center",
"right": "Right"
},
"popover": {
"clearColor": "Clear color",
"source": "Source",
"widthPlaceholder": "Value in % or pixels",
"columns": "Columns",
"rows": "Rows",
"width": "Width",
"height": "Height"
},
"placeholder": "Start writing your notes",
"dismiss": {
"title": "Dismiss changes?",
"message": "You have unsaved changes in your notebook. Are you sure you want to discard them?",
"action": {
"discard": "Discard changes",
"keepEditing": "Keep editing"
}
},
"saveFailed": "Unable to save note",
"documentStats": "{words, plural, one {# word} other {# words}} · {characters, plural, one {# character} other {# characters}}"
},
"anchorNote": {
"name": "Anchor Note",
"description": "Displays a selected note from Anchor",
"option": {
"noteId": {
"label": "Note"
},
"showUpdatedAt": {
"label": "Show last updated"
}
},
"empty": "Select a note to display",
"emptyContent": "This note has no content",
"notFound": "Note not found",
"noNotes": "No notes found",
"integrationRequired": "Select an Anchor integration first",
"untitled": "Untitled",
"readOnlyViewer": "You have viewer access to this note. Editing is disabled.",
"saveForbidden": "You do not have permission to edit this note.",
"saveFailed": "Failed to save this note. Please try again.",
"createdAt": "Created {date}",
"permission": {
"owner": "Owner",
"editor": "Editor",
"viewer": "Viewer"
},
"status": {
"pinned": "Pinned",
"archived": "Archived"
}
},
"iframe": {
"name": "iFrame",
"description": "Embed any content from the internet. Some websites may restrict access.",
"option": {
"embedUrl": {
"label": "Embed URL"
},
"allowFullScreen": {
"label": "Allow full screen"
},
"allowTransparency": {
"label": "Allow transparency"
},
"allowScrolling": {
"label": "Allow scrolling"
},
"allowPayment": {
"label": "Allow payment"
},
"allowAutoPlay": {
"label": "Allow auto play"
},
"allowMicrophone": {
"label": "Allow microphone"
},
"allowCamera": {
"label": "Allow camera"
},
"allowGeolocation": {
"label": "Allow geolocation"
},
"allowModals": {
"label": "Allow modals"
}
},
"error": {
"noUrl": "No iFrame URL provided",
"unsupportedProtocol": "The URL provided is using an unsupported protocol. Please use one of ({supportedProtocols})",
"noBrowerSupport": "Your Browser does not support iframes. Please update your browser."
}
},
"smartHome-entityState": {
"name": "Entity State",
"description": "Display the state of an entity and toggle it optionally",
"option": {
"entityId": {
"label": "Entity ID"
},
"displayName": {
"label": "Display-name"
},
"entityUnit": {
"label": "Entity Unit"
},
"clickable": {
"label": "Clickable"
}
},
"state": {
"on": "On",
"off": "Off",
"unavailable": "Unavailable",
"unknown": "Unknown"
},
"advanced": {
"entityId": "Entity ID: {id}",
"lastChanged": "Changed {date}",
"attribute": {
"unit": "Unit",
"deviceClass": "Device class",
"icon": "Icon"
}
},
"error": {
"loadFailed": "Unable to load entity",
"toggleFailed": "Unable to update entity"
}
},
"smartHome-executeAutomation": {
"name": "Execute Automation",
"description": "Trigger an automation with one click",
"option": {
"displayName": {
"label": "Display name"
},
"automationId": {
"label": "Automation ID"
}
},
"spotlightAction": {
"run": "Run {name}"
},
"advanced": {
"lastExecuted": "Last run at {time}",
"automationId": "Automation ID: {id}",
"ready": "Ready to run",
"noPermission": "No permission to run this automation"
},
"status": {
"running": "Running automation",
"success": "Automation completed"
},
"error": {
"executeFailed": "Unable to run automation"
}
},
"stockPrice": {
"name": "Stock Price",
"description": "Displays the current stock price of a company",
"advanced": {
"currentPrice": "Current price",
"previousClose": "Previous close",
"changePercentage": "Change (%)",
"minimum": "Minimum",
"maximum": "Maximum"
},
"option": {
"stock": {
"label": "Stock symbol"
},
"timeRange": {
"label": "Time Range",
"option": {
"1d": {
"label": "1 Day"
},
"5d": {
"label": "5 Day"
},
"1mo": {
"label": "1 Month"
},
"3mo": {
"label": "3 Months"
},
"6mo": {
"label": "6 Months"
},
"ytd": {
"label": "Year to Date"
},
"1y": {
"label": "1 Year"
},
"2y": {
"label": "2 Years"
},
"5y": {
"label": "5 Years"
},
"10y": {
"label": "10 Years"
},
"max": {
"label": "Max"
}
}
},
"timeInterval": {
"label": "Time Interval",
"option": {
"5m": {
"label": "5 Minutes"
},
"15m": {
"label": "15 Minutes"
},
"30m": {
"label": "30 Minutes"
},
"1h": {
"label": "1 Hour"
},
"1d": {
"label": "1 Day"
},
"5d": {
"label": "5 Days"
},
"1wk": {
"label": "1 Week"
},
"1mo": {
"label": "1 Month"
}
}
},
"showDetails": {
"label": "Show details",
"description": "Show the name, change, and time range in the compact view. Turn off for just the symbol and price."
}
}
},
"calendar": {
"name": "Calendar",
"description": "Display events from your integrations in a calendar view within a certain relative time period",
"duration": {
"allDay": "All day"
},
"option": {
"releaseType": {
"label": "Release type",
"options": {
"inCinemas": "In cinemas",
"digitalRelease": "Digital release",
"physicalRelease": "Physical release"
}
},
"filterPastMonths": {
"label": "Start from"
},
"filterFutureMonths": {
"label": "End at"
},
"showUnmonitored": {
"label": "Show unmonitored"
}
},
"advanced": {
"previousMonth": "Show previous month",
"nextMonth": "Show next month",
"eventCount": "{count, plural, one {# event} other {# events}}",
"loading": "Loading calendar events...",
"noEvents": "No events in this month"
}
},
"weather": {
"name": "Weather",
"description": "Displays the current weather information of a set location.",
"option": {
"isFormatFahrenheit": {
"label": "Temperature in Fahrenheit"
},
"disableTemperatureDecimals": {
"label": "Disable temperature decimals"
},
"animateIcons": {
"label": "Animate weather icons"
},
"showHumidity": {
"label": "Show humidity"
},
"showCurrentWindSpeed": {
"label": "Show current wind speed"
},
"useImperialSpeed": {
"label": "Use mph for windspeed"
},
"showCity": {
"label": "Show city"
},
"hasForecast": {
"label": "Show forecast"
},
"forecastDayCount": {
"label": "Amount of forecast days",
"description": "When the widget is not wide enough, less days are shown"
}
},
"currentWindSpeed": "{currentWindSpeed} {unit}",
"dailyForecast": {
"sunrise": "Sunrise",
"sunset": "Sunset",
"maxWindSpeed": "Max wind speed: {maxWindSpeed} {unit}",
"maxWindGusts": "Max wind gusts: {maxWindGusts} {unit}",
"humidity": "Humidity: {humidity}%"
},
"kind": {
"clear": "Clear",
"mainlyClear": "Mainly clear",
"fog": "Fog",
"drizzle": "Drizzle",
"freezingDrizzle": "Freezing drizzle",
"rain": "Rain",
"freezingRain": "Freezing rain",
"snowFall": "Snow fall",
"snowGrains": "Snow grains",
"rainShowers": "Rain showers",
"snowShowers": "Snow showers",
"thunderstorm": "Thunderstorm",
"thunderstormWithHail": "Thunderstorm with hail",
"unknown": "Unknown"
},
"details": "Show weather details",
"detailsFor": "Show weather details for {date}",
"advanced": {
"forecast": "7-day forecast",
"hourlyForecast": "Next 24 hours",
"day": "Day",
"time": "Time",
"conditions": "Conditions",
"temperature": "Temperature",
"feelsLike": "Feels like {temperature}",
"feelsLikeLabel": "Feels like",
"feelsLikeRange": "Feels like: {maximum} / {minimum}",
"highLow": "High {maximum} · low {minimum}",
"observedAt": "Updated at {time}",
"humidity": "Humidity",
"averageHumidity": "Average humidity: {humidity}%",
"currentHumidity": "Current humidity",
"wind": "Wind / gusts ({unit})",
"currentWind": "Current wind / gusts",
"windValue": "{speed} / {gusts} {unit}",
"windDetail": "Max wind / gusts: {speed} / {gusts} {unit}",
"nextHourPrecipitation": "Precipitation next hour",
"precipitationChance": "Precipitation chance",
"precipitationValue": "{probability}% · {amount} mm",
"precipitationDetail": "Precipitation: {probability}% · {amount} mm",
"todayUv": "Today's max UV index",
"uvIndex": "Max UV index: {value}",
"daylight": "Daylight: {duration}",
"hourlyTooltip": "Feels like {feelsLike}{temperatureUnit} · {amount} mm · {humidity}% humidity · {speed} {speedUnit} wind",
"hourlyTooltipWithoutHumidity": "Feels like {feelsLike}{temperatureUnit} · {amount} mm · {speed} {speedUnit} wind",
"detailLabel": {
"feelsLike": "Feels like",
"precipitation": "Precipitation",
"humidity": "Average humidity",
"wind": "Max wind / gusts",
"uv": "Max UV index",
"daylight": "Daylight"
},
"sun": "Sunrise / sunset",
"noForecast": "No forecast data available"
}
},
"indexerManager": {
"name": "Indexer manager status",
"description": "Status of your indexers",
"option": {
"openIndexerSiteInNewTab": {
"label": "Open indexer site in new tab"
}
},
"title": "Indexer manager",
"testAll": "Test all",
"status": {
"healthy": "Healthy",
"unhealthy": "Unhealthy",
"disabled": "Disabled"
},
"error": {
"internalServerError": "Failed to fetch indexers status",
"testAll": "The indexer test failed. Try again."
}
},
"healthMonitoring": {
"name": "System Health Monitoring",
"description": "Displays information showing the health and status of your system(s).",
"tab": {
"system": "System",
"cluster": "Cluster"
},
"option": {
"fahrenheit": {
"label": "CPU Temp in Fahrenheit"
},
"cpu": {
"label": "Show CPU Info"
},
"memory": {
"label": "Show Memory Info"
},
"gpu": {
"label": "Show GPU Info"
},
"showUptime": {
"label": "Show Uptime"
},
"fileSystem": {
"label": "Show Filesystem Info"
},
"defaultTab": {
"label": "Default tab"
},
"visibleClusterSections": {
"label": "Visible cluster sections"
},
"sectionIndicatorRequirement": {
"label": "Section indicator requirement"
}
},
"popover": {
"information": "Information",
"processor": "Processor: {cpuModelName}",
"memory": "Memory: {memory}GiB",
"memoryAvailable": "Available: {memoryAvailable}GiB ({percent}%)",
"version": "Version: {version}",
"uptime": "Uptime: {months} Months, {days} Days, {hours} Hours, {minutes} Minutes",
"loadAverage": "Load average:",
"minute": "1 minute",
"minutes": "{count} minutes",
"used": "Used",
"available": "Available",
"lastSeen": "Last status update: {lastSeen}",
"updatesAvailable": "{count, plural, one {# update available} other {# updates available}}",
"rebootRequired": "Reboot required",
"rebootNotRequired": "No reboot required"
},
"error": {
"internalServerError": "Failed to fetch health status"
},
"cluster": {
"resource": {
"node": {
"name": "Nodes"
},
"qemu": {
"name": "VMs"
},
"lxc": {
"name": "LXCs"
},
"storage": {
"name": "Storage"
}
},
"popover": {
"rightSection": {
"node": "Node",
"vmId": "VM ID",
"plugin": "Plugin"
},
"detail": {
"cpu": "Cores",
"memory": "Memory",
"storage": "Storage",
"uptime": "Uptime",
"haState": "HA State",
"storageType": {
"local": "Local storage",
"shared": "Shared storage"
}
}
},
"table": {
"header": {
"name": "Name",
"node": "Node"
}
}
}
},
"dockerContainers": {
"name": "Docker stats",
"description": "Stats of your containers (This widget can only be added with administrator privileges)",
"option": {
"endpointIds": {
"label": "Docker environments",
"description": "Leave empty to show containers from every Docker environment",
"placeholder": "All Docker environments"
},
"defaultSort": {
"option": {
"name": "Name",
"state": "State",
"cpuUsage": "CPU usage",
"memoryUsage": "Memory usage"
}
}
},
"error": {
"internalServerError": "Failed to fetch containers stats",
"endpointsUnavailable": "Docker endpoints are unavailable",
"layoutSaveTitle": "Table layout not saved",
"layoutSaveMessage": "The Docker table layout could not be saved. Try moving or resizing the column again."
},
"empty": {
"noContainers": "No containers found"
}
},
"coolify": {
"description": "Overview of your Coolify instance with servers and applications",
"option": {
"showServers": {
"label": "Show servers"
},
"showApplications": {
"label": "Show applications"
},
"showServices": {
"label": "Show services"
}
},
"empty": {
"servers": "No servers found",
"applications": "No applications found",
"services": "No services found"
},
"footer": {
"updated": "Updated {when}"
},
"error": {
"noIntegration": "No Coolify integration configured",
"internalServerError": "Failed to fetch Coolify data"
},
"server": {
"buildServer": "Build",
"resourceCounts": "{applications, plural, one {# app} other {# apps}} / {services, plural, one {# service} other {# services}}",
"reachability": "Reachability",
"usability": "Usability"
},
"source": {
"url": "Source: {url}",
"unavailable": "{source}: unavailable"
},
"instances": {
"title": "Instances"
},
"action": {
"openResource": "Open {name}",
"openLogs": "Open {name} logs",
"showIp": "Show IP address",
"hideIp": "Hide IP address"
},
"status": {
"running": "Running",
"stopped": "Stopped",
"exited": "Exited",
"starting": "Starting",
"restarting": "Restarting",
"unknown": "Unknown",
"online": "Online",
"offline": "Offline",
"reachable": "Reachable",
"unreachable": "Unreachable",
"usable": "Usable",
"unusable": "Unusable"
}
},
"vpn": {
"name": "VPN",
"description": "Overview of your VPN connections",
"serviceUnavailable": "VPN unavailable",
"status": {
"running": "Running",
"notRunning": "Not running",
"unavailable": "Unavailable",
"vpn": "VPN: {status}"
}
},
"ups": {
"name": "UPS",
"description": "Monitor the status of your UPS devices through a NUT server",
"option": {
"showBattery": {
"label": "Show battery"
},
"showLoad": {
"label": "Show load"
},
"showVoltage": {
"label": "Show voltage"
}
},
"status": {
"online": "Online",
"onBattery": "On battery",
"lowBattery": "Low battery",
"charging": "Charging",
"unknown": "Unknown"
},
"field": {
"runtime": "Runtime",
"load": "Load",
"input": "Input",
"output": "Output",
"batteryVoltage": "Battery voltage",
"power": "Power",
"temperature": "Temperature",
"manufacturer": "Manufacturer",
"model": "Model",
"serial": "Serial"
},
"error": {
"internalServerError": "Failed to fetch UPS data"
}
},
"tracearr": {
"description": "Enhanced media server monitoring with detailed stream and transcoding data",
"option": {
"showStreams": {
"label": "Show active streams"
},
"showStats": {
"label": "Show stats summary"
},
"showRecentActivity": {
"label": "Show recent activity"
},
"showViolations": {
"label": "Show violations"
}
},
"stats": {
"activeStreams": "Active Streams",
"totalUsers": "Total Users",
"transcodes": "Transcodes",
"bandwidth": "Bandwidth"
},
"streams": {
"empty": "No active streams",
"user": "User",
"media": "Media",
"state": "State",
"quality": "Quality",
"device": "Device",
"progress": "Progress",
"videoDecision": {
"directPlay": "Direct Play",
"transcode": "Transcode",
"directStream": "Direct Stream"
}
},
"recentActivity": {
"title": "Recent Activity",
"empty": "No recent activity",
"watched": "Watched",
"partial": "Partial"
},
"violations": {
"title": "Violations",
"empty": "No recent violations",
"rule": "Rule",
"user": "User"
},
"noSectionsEnabled": "No sections enabled",
"error": {
"noIntegration": "No Tracearr integration configured",
"internalServerError": "Failed to fetch Tracearr data"
}
},
"umami": {
"name": "Umami Analytics",
"description": "Display visitor stats from your Umami analytics instance",
"visitors": "visitors",
"active": "active",
"pageviews": "pageviews",
"visits": "visits",
"bounceRate": "bounce",
"avgDuration": "avg",
"option": {
"websiteId": {
"label": "Website",
"description": "Select a website tracked by your Umami instance",
"placeholder": "Select a website",
"loading": "Loading websites...",
"noWebsites": "No websites found",
"configureIntegrationFirst": "Connect a Umami integration first"
},
"timeFrame": {
"label": "Time frame",
"description": "The time period to display visitor data for",
"option": {
"today": "Today",
"24h": "Last 24 hours",
"7d": "Last 7 days",
"30d": "Last 30 days",
"month": "This month",
"lastMonth": "Last month"
}
},
"eventName": {
"label": "Event",
"description": "Show total occurrences of a specific event",
"placeholder": "Select an event",
"none": "No event"
},
"chartType": {
"label": "Chart type",
"description": "Display style for the chart",
"option": {
"bar": "Bar chart",
"sparkline": "Sparkline"
}
},
"chartStyle": {
"label": "Chart style",
"description": "How to display the event series in the chart",
"option": {
"grouped": "Side by side",
"overlay": "Overlay (subset)"
}
},
"viewMode": {
"label": "View",
"description": "What to display in the widget body",
"option": {
"chart": "Chart",
"events": "Events chart",
"topPages": "Top pages",
"topReferrers": "Top referrers"
}
},
"eventNames": {
"label": "Events",
"description": "Select one or more events to chart",
"placeholder": "Select events..."
},
"topCount": {
"label": "Items to show",
"description": "Number of top items to display (max 500)"
},
"events": {
"loading": "Loading events...",
"noEvents": "No events found",
"configureWebsiteFirst": "Select a website first to load events"
}
},
"event": {
"label": "events"
},
"events": {
"selectPrompt": "Select events to chart"
},
"error": {
"noIntegration": "No Umami integration configured",
"noWebsite": "No website configured",
"noData": "No data available",
"internalServerError": "Failed to fetch Umami data"
},
"top": {
"direct": "Direct"
}
},
"common": {
"location": {
"query": "City / Postal code",
"latitude": "Latitude",
"longitude": "Longitude",
"disabledTooltip": "Please enter a city or postal code",
"unknownLocation": "Unknown location",
"search": "Search",
"table": {
"header": {
"city": "City",
"country": "Country",
"coordinates": "Coordinates",
"population": "Population"
},
"action": {
"select": "Select {city}, {countryCode}"
},
"population": {
"fallback": "Unknown"
}
}
},
"integration": {
"noData": "No integration found",
"description": "Click <here></here> to create a new integration",
"manage": "Manage integrations"
},
"app": {
"noData": "No app found",
"description": "Click <here></here> to create a new app",
"quickCreate": "Create app on the fly"
},
"error": {
"noIntegration": "No integration selected",
"noData": "No integration data available"
},
"integrationDisconnected": "No data available, all integrations disconnected",
"updatedAt": "Updated {date}",
"title": {
"label": "Title"
},
"openInNewTab": {
"label": "Open in new tab"
},
"showTitle": {
"label": "Show title"
},
"weatherLocation": {
"label": "Weather location"
},
"layout": {
"label": "Layout",
"option": {
"horizontal": "Horizontal",
"vertical": "Vertical",
"grid": "Grid"
}
},
"select": {
"loading": "Loading...",
"loadError": "Failed to load options"
},
"dateFormat": {
"label": "Date Format",
"description": "How the date should look like"
},
"visibleStorageVolumes": {
"label": "Visible storage volumes",
"description": "Only available when all selected integrations are Synology. Leave empty to show all detected storage volumes.",
"placeholder": "Select storage volumes"
},
"tableOptions": {
"columns": {
"label": "Columns to show"
},
"columnOrder": {
"label": "Column order"
},
"columnWidths": {
"label": "Column widths"
},
"enableRowSorting": {
"label": "Enable items sorting"
},
"defaultSort": {
"label": "Column used for sorting by default"
},
"invertSorting": {
"label": "Invert sorting"
}
}
},
"video": {
"name": "Video Stream",
"description": "Embed a video stream or video from a camera or a website",
"option": {
"feedUrl": {
"label": "Feed URL"
},
"hasAutoPlay": {
"label": "Autoplay",
"description": "Autoplay only works when muted because of browser restrictions"
},
"isMuted": {
"label": "Muted"
},
"hasControls": {
"label": "Show controls"
}
},
"error": {
"noUrl": "No Video URL provided",
"forYoutubeUseIframe": "For YouTube videos use the iframe option"
}
},
"mediaServer": {
"name": "Current media server streams",
"description": "Show the current streams on your media servers",
"option": {
"showOnlyPlaying": {
"label": "Show only currently playing",
"description": "This option is not supported by every media server"
},
"showBitrate": {
"label": "Show bitrate",
"description": "Show the current playback bitrate next to the location"
},
"showLocation": {
"label": "Show location",
"description": "Show whether the stream is on your LAN or WAN"
}
},
"footer": {
"streams": "{count, plural, one {# active stream} other {# active streams}}",
"totalBitrate": "Total: {bitrate}"
},
"items": {
"currentlyPlaying": "Currently playing",
"user": "User",
"name": "Name",
"id": "Id",
"status": "Status",
"directPlay": "Direct play",
"directStream": "Direct stream",
"transcodeVideo": "Transcoding video",
"transcodeAudio": "Transcoding audio",
"transcoding": "Transcoding",
"paused": "Paused",
"remaining": "{minutes} min left",
"seasonEpisode": "S{season} E{episode}",
"metadata": {
"title": "Stats for nerds",
"video": {
"title": "Video",
"resolution": "Resolution"
},
"audio": {
"title": "Audio",
"channelCount": "Audio channels",
"codec": "Audio codec"
},
"transcoding": {
"title": "Transcoding",
"container": "Container",
"resolution": "Resolution",
"target": "Target codec"
}
},
"unknownUser": "Unknown user"
},
"summary": {
"sessions": "{count, plural, one {# session} other {# sessions}}",
"playing": "{count} playing",
"transcoding": "{count} transcoding"
}
},
"paperlessNgx": {
"description": "Overview of your Paperless-ngx document archive",
"documentsTotal": "Total Documents",
"documentsInbox": "Inbox",
"correspondents": "Correspondents",
"tags": "Tags",
"documentTypes": "Document Types",
"inboxRatio": "Inbox Ratio",
"inbox": "inbox",
"total": "total",
"option": {
"showInboxRatio": {
"label": "Show inbox ratio",
"description": "Display the inbox-to-total document ratio in the hero section"
},
"showInboxRing": {
"label": "Show inbox ring",
"description": "Display a progress ring alongside the inbox ratio"
},
"showDocumentsTotal": {
"label": "Show total documents",
"description": "Show the total number of documents in your archive"
},
"showDocumentsInbox": {
"label": "Show inbox count",
"description": "Show the number of unprocessed documents in the inbox"
},
"showCorrespondents": {
"label": "Show correspondents",
"description": "Show the total number of correspondents"
},
"showTags": {
"label": "Show tags",
"description": "Show the total number of tags"
},
"showDocumentTypes": {
"label": "Show document types",
"description": "Show the total number of document types"
}
},
"error": {
"internalServerError": "Failed to fetch Paperless-ngx data"
}
},
"patchmon": {
"description": "Overview of host patch status from PatchMon",
"title": "PatchMon Statistics",
"totalHosts": "Total Hosts",
"hostsNeedingUpdates": "Needs Updates",
"securityUpdates": "Security Updates",
"upToDateHosts": "Up-to-Date Hosts",
"hostsWithSecurityUpdates": "Hosts with Security Updates",
"recentUpdates24h": "Updates (24h)",
"totalOutdatedPackages": "Outdated Packages",
"totalRepos": "Repositories",
"osDistribution": "OS Distribution",
"compliance": "Patch Compliance",
"complianceRatio": "{upToDate} / {total}",
"lastUpdated": "Updated {time}",
"option": {
"showTotalHosts": {
"label": "Show total hosts",
"description": "Display the total number of monitored hosts"
},
"showHostsNeedingUpdates": {
"label": "Show hosts needing updates",
"description": "Display hosts with at least one outdated package"
},
"showSecurityUpdates": {
"label": "Show security updates",
"description": "Display the total number of security updates available"
},
"showUpToDateHosts": {
"label": "Show up-to-date hosts",
"description": "Display hosts with zero outdated packages"
},
"showHostsWithSecurityUpdates": {
"label": "Show hosts with security updates",
"description": "Display hosts requiring security patches"
},
"showRecentUpdates24h": {
"label": "Show recent updates (24h)",
"description": "Display the number of updates applied in the last 24 hours"
},
"showTotalOutdatedPackages": {
"label": "Show outdated packages",
"description": "Display the total number of outdated packages across all hosts"
},
"showTotalRepos": {
"label": "Show repositories",
"description": "Display the number of active repositories being monitored"
},
"enableThresholdColors": {
"label": "Enable threshold colors",
"description": "Color stat values green, yellow, or red based on severity presets"
},
"useCustomThresholds": {
"label": "Advanced thresholds",
"description": "Customize warning and critical thresholds per stat using absolute counts or percentages of total hosts"
},
"thresholdMode": {
"option": {
"absolute": "Absolute count",
"percent": "Percent of total hosts"
}
},
"hostsNeedingUpdatesThresholdMode": {
"label": "Needs updates threshold mode",
"description": "Compare the needs-updates count as an absolute value or percentage of total hosts"
},
"hostsNeedingUpdatesWarningAt": {
"label": "Needs updates warning threshold"
},
"hostsNeedingUpdatesCriticalAt": {
"label": "Needs updates critical threshold"
},
"securityUpdatesThresholdMode": {
"label": "Security updates threshold mode",
"description": "Compare the security-updates count as an absolute value or percentage of total hosts"
},
"securityUpdatesWarningAt": {
"label": "Security updates warning threshold"
},
"securityUpdatesCriticalAt": {
"label": "Security updates critical threshold"
},
"hostsWithSecurityUpdatesThresholdMode": {
"label": "Hosts with security updates threshold mode",
"description": "Compare the host count as an absolute value or percentage of total hosts"
},
"hostsWithSecurityUpdatesWarningAt": {
"label": "Hosts with security updates warning threshold"
},
"hostsWithSecurityUpdatesCriticalAt": {
"label": "Hosts with security updates critical threshold"
},
"upToDateHostsThresholdMode": {
"label": "Up-to-date hosts threshold mode",
"description": "Compare the up-to-date host count as an absolute value or percentage of total hosts"
},
"upToDateHostsWarningAt": {
"label": "Up-to-date hosts warning threshold",
"description": "Enter yellow when the value is at or above this threshold but below full coverage"
},
"upToDateHostsCriticalAt": {
"label": "Up-to-date hosts critical threshold",
"description": "Enter red when the value falls below this threshold"
},
"totalOutdatedPackagesThresholdMode": {
"label": "Outdated packages threshold mode",
"description": "Compare the outdated-packages count as an absolute value or percentage of total hosts"
},
"totalOutdatedPackagesWarningAt": {
"label": "Outdated packages warning threshold"
},
"totalOutdatedPackagesCriticalAt": {
"label": "Outdated packages critical threshold"
},
"showOsDistribution": {
"label": "Show OS distribution",
"description": "Display a breakdown of monitored hosts by operating system"
},
"osDistributionLimit": {
"label": "OS distribution limit",
"description": "Maximum number of operating systems to display",
"option": {
"3": "Top 3",
"5": "Top 5",
"10": "Top 10",
"all": "All"
}
},
"showOsVersion": {
"label": "Show OS version",
"description": "Append the OS version to each distribution label when available"
},
"showComplianceHero": {
"label": "Show compliance hero",
"description": "Display a compliance ring showing the percentage of up-to-date hosts"
},
"osDisplayMode": {
"label": "OS display mode",
"description": "Choose how to display the operating system distribution",
"option": {
"bars": "Horizontal bars",
"donut": "Donut chart"
}
},
"threshold": {
"warningAt": {
"description": "Enter yellow when the value reaches this threshold"
},
"criticalAt": {
"description": "Enter red when the value reaches this threshold"
}
}
},
"error": {
"internalServerError": "Failed to fetch PatchMon data"
}
},
"bazarr": {
"description": "Overview of missing subtitles and health status from your Bazarr instance",
"episodes": "Missing Episodes",
"movies": "Missing Movies",
"providers": "Provider Issues",
"status": "Health Issues",
"announcements": "Announcements",
"option": {
"showMissingEpisodes": {
"label": "Show missing episodes",
"description": "Display the number of episodes with missing subtitles"
},
"showMissingMovies": {
"label": "Show missing movies",
"description": "Display the number of movies with missing subtitles"
},
"showProviderIssues": {
"label": "Show provider issues",
"description": "Display the number of subtitle providers with issues"
},
"showHealthIssues": {
"label": "Show health issues",
"description": "Display the number of Bazarr health issues"
}
},
"error": {
"internalServerError": "Failed to fetch Bazarr data"
}
},
"immich-serverStats": {
"name": "Immich Server Stats",
"description": "Information about your Immich instance",
"option": {
"showUsers": {
"label": "Show users",
"description": "Show count of users on your instance"
},
"showPhotos": {
"label": "Show photos",
"description": "Show count of photos on your instance"
},
"showVideos": {
"label": "Show videos",
"description": "Show count of videos on your instance"
},
"showStorage": {
"label": "Show storage",
"description": "Show the total amount of storage used"
}
},
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Used Storage",
"albumLimit": "Largest albums (up to {count} shown)"
},
"immich-albumCarousel": {
"name": "Immich Album",
"allPhotos": "All photos",
"option": {
"albumId": {
"label": "Album",
"description": "Select an Immich album or All photos. An empty selection also shows random photos from your full library."
},
"rotationIntervalSeconds": {
"label": "Interval in seconds",
"description": "Rotate between pictures in the album every X seconds. Must be at least 1. Must be below 3600."
},
"showPhotoInfo": {
"label": "Show photo info",
"description": "Display date of the picture and the current index at the bottom of the slideshow"
},
"randomizePhotos": {
"label": "Randomize photos",
"description": "Show photos in a random order instead of always starting with the same album order."
}
},
"description": "Slideshow of pictures from an Immich album or your full library",
"noPhotos": "No photos found",
"albumPhoto": "Album photo",
"actions": {
"previousPhoto": "Previous photo",
"nextPhoto": "Next photo",
"pauseSlideshow": "Pause slideshow",
"resumeSlideshow": "Resume slideshow",
"toggleSlideshow": "Pause or resume slideshow",
"photo": "Photo {number}"
}
},
"downloads": {
"name": "Download Client",
"description": "Allows you to view and manage your Downloads from both Torrent and Usenet clients.",
"option": {
"showCompletedUsenet": {
"label": "Show usenet entries marked as completed"
},
"showCompletedTorrent": {
"label": "Show torrent entries marked as completed"
},
"showCompletedHttp": {
"label": "Show Miscellaneous entries marked as completed"
},
"activeTorrentThreshold": {
"label": "Hide completed torrent under this threshold (in kiB/s)"
},
"categoryFilter": {
"label": "Categories/labels to filter"
},
"filterIsWhitelist": {
"label": "Filter as a whitelist"
},
"applyFilterToRatio": {
"label": "Use filter to calculate Ratio"
},
"limitPerIntegration": {
"label": "Limit items per integration",
"description": "This will limit the number of items shown per integration, not globally"
}
},
"errors": {
"noColumns": "Select Columns in Items",
"noCommunications": "Can't load data from integration",
"noItems": "No downloads found",
"actionFailed": "Action failed",
"actionFailedMessage": "The action could not be completed. Please try again."
},
"items": {
"actions": {
"columnTitle": "Actions"
},
"added": {
"columnTitle": "Added",
"detailsTitle": "Added"
},
"category": {
"columnTitle": "Category",
"detailsTitle": "Category"
},
"downSpeed": {
"columnTitle": "Down",
"detailsTitle": "Down"
},
"index": {
"columnTitle": "#",
"detailsTitle": "Index"
},
"id": {
"columnTitle": "ID",
"detailsTitle": "ID"
},
"integration": {
"columnTitle": "Source"
},
"name": {
"columnTitle": "Name"
},
"progress": {
"columnTitle": "Progress",
"detailsTitle": "Progress"
},
"ratio": {
"columnTitle": "Ratio",
"detailsTitle": "Ratio"
},
"received": {
"columnTitle": "Down",
"detailsTitle": "Downloaded"
},
"sent": {
"columnTitle": "Up",
"detailsTitle": "Uploaded"
},
"size": {
"columnTitle": "Size",
"detailsTitle": "Size"
},
"state": {
"columnTitle": "State",
"detailsTitle": "State"
},
"time": {
"columnTitle": "ETA",
"detailsTitle": "ETA",
"eta": "ETA"
},
"type": {
"columnTitle": "Type",
"detailsTitle": "Type"
},
"upSpeed": {
"columnTitle": "Up",
"detailsTitle": "Up"
}
},
"states": {
"downloading": "Downloading",
"queued": "Queued",
"paused": "Paused",
"completed": "Completed",
"failed": "Failed",
"processing": "Processing",
"leeching": "Leeching",
"stalled": "Stalled",
"unknown": "Unknown",
"seeding": "Seeding"
},
"actions": {
"clients": {
"modalTitle": "Download clients list",
"pause": "Pause all clients/items",
"resume": "Resume all clients/items"
},
"client": {
"pause": "Pause client",
"resume": "Resume client"
},
"item": {
"pause": "Pause Item",
"resume": "Resume Item",
"delete": {
"title": "Delete Item",
"modalTitle": "Are you sure you want to delete this job?",
"entry": "Delete entry",
"entryAndFiles": "Delete entry and file(s)"
}
}
},
"globalRatio": "Global Ratio",
"contextMenu": {
"copyName": "Copy name",
"copyId": "Copy ID",
"clearFilters": "Clear filters"
},
"footer": {
"filter": "Filter downloads"
},
"stats": {
"show": "Show global stats",
"hide": "Hide global stats",
"overallProgress": "Overall queue progress",
"totalSize": "Total queue size",
"clients": "{count, plural, one {# client} other {# clients}}"
},
"disconnected": "(disconnected)"
},
"mediaReleases": {
"name": "Media releases",
"description": "Display newly added medias or upcoming releases from different integrations",
"option": {
"layout": {
"label": "Layout",
"option": {
"backdrop": {
"label": "Backdrop"
},
"poster": {
"label": "Poster"
}
}
},
"showDescriptionTooltip": {
"label": "Show description tooltip"
},
"showType": {
"label": "Show media type badge"
},
"showSource": {
"label": "Show source integration"
}
},
"length": {
"duration": "{length}min"
}
},
"mediaRequests-requestList": {
"name": "Media Requests List",
"description": "See a list of all media requests from your Seerr, Overseerr, or Jellyseerr instance",
"empty": {
"title": "No media requests yet",
"description": "Search for a movie or show to start a request."
},
"option": {
"linksTargetNewTab": {
"label": "Open links in new tab"
},
"statusFilter": {
"label": "Statuses to show"
},
"recentDays": {
"label": "Show only recent requests"
}
},
"pending": {
"approve": "Approve request",
"approving": "Approving request...",
"decline": "Decline request"
},
"availability": {
"unknown": "Unknown",
"pending": "Pending",
"processing": "Processing",
"requested": "Requested",
"partiallyAvailable": "Partial",
"available": "Available",
"blacklisted": "Blacklisted",
"deleted": "Deleted"
},
"status": {
"pending": "Pending",
"approved": "Approved",
"declined": "Declined",
"failed": "Failed",
"completed": "Completed"
},
"unknown": "Unknown",
"toBeDetermined": "TBD"
},
"mediaRequests-requestStats": {
"name": "Media Requests Stats",
"description": "Statistics about your media requests",
"empty": {
"title": "No request activity yet",
"description": "Stats will appear after the first media request."
},
"titles": {
"stats": {
"main": "Media Stats",
"approved": "Already approved",
"pending": "Pending approvals",
"processing": "Being processed",
"declined": "Already declined",
"available": "Already Available",
"tv": "TV requests",
"movie": "Movie requests"
},
"users": {
"main": "Top Users",
"requests": "Requests"
}
}
},
"mediaTranscoding": {
"name": "Media transcoding",
"description": "Statistics, current queue and worker status of your media transcoding",
"option": {
"defaultView": {
"label": "Default view"
},
"queuePageSize": {
"label": "Queue page size"
}
},
"tab": {
"workers": "Workers",
"queue": "Queue",
"statistics": "Statistics"
},
"currentIndex": "{start}-{end} of {total}",
"healthCheck": {
"queued": "Queued",
"status": {
"healthy": "Healthy",
"unhealthy": "Unhealthy"
}
},
"panel": {
"statistics": {
"filesCount": "Files",
"savedSpace": "Saved space",
"videoCodecs": "Codecs",
"videoContainers": "Containers",
"videoResolutions": "Resolutions"
},
"workers": {
"table": {
"eta": "ETA",
"progress": "Progress"
}
},
"queue": {
"table": {
"size": "Size"
}
},
"common": {
"empty": "Empty",
"file": "File",
"healthCheck": "Health check",
"transcode": "Transcode",
"transcodes": "Transcodes",
"healthChecks": "Health checks"
}
}
},
"mediaMissing": {
"name": "Missing & Queued Media",
"description": "Shows missing and queued movies and episodes from {radarr} and {sonarr}",
"option": {
"showMissing": {
"label": "Show missing items"
},
"showQueued": {
"label": "Show queued items"
},
"pageSize": {
"label": "Items per page"
}
},
"tab": {
"missing": "Missing",
"queued": "Queued"
},
"type": {
"movie": "Movie",
"episode": "Episode"
},
"empty": {
"missing": "No missing items",
"queued": "No queued items",
"noTabsEnabled": "Enable at least one tab in the widget settings"
},
"timeLeft": "Time left"
},
"rssFeed": {
"name": "RSS feeds",
"description": "Monitor and display one or more generic RSS, ATOM or JSON feeds",
"option": {
"feedUrls": {
"label": "Feed URLs"
},
"enableRtl": {
"label": "Enable RTL"
},
"textLinesClamp": {
"label": "Description line clamp"
},
"maximumAmountPosts": {
"label": "Amount posts limit"
},
"hideDescription": {
"label": "Hide description"
},
"showPosterImage": {
"label": "Show poster image"
}
},
"error": {
"allFeedsFailed": "Unable to load RSS feeds. Check the feed URLs and try again."
},
"warning": {
"partial": "{count, plural, one {# RSS feed could not be loaded} other {# RSS feeds could not be loaded}}",
"stale": "RSS feeds could not be refreshed. Showing previously loaded entries."
}
},
"releases": {
"name": "Releases",
"description": "Displays a list of the current version of the given repositories with the given version regex.",
"option": {
"newReleaseWithin": {
"label": "New Release Within",
"description": "Usage example: 1w (1 week), 10M (10 months). Accepted unit types h (hours), d (days), w (weeks), M (months), y (years). Leave empty for no highlighting of new releases."
},
"staleReleaseWithin": {
"label": "Stale Release Within",
"description": "Usage example: 1w (1 week), 10M (10 months). Accepted unit types h (hours), d (days), w (weeks), M (months), y (years). Leave empty for no highlighting of stale releases."
},
"showOnlyHighlighted": {
"label": "Show Only Highlighted",
"description": "Show only new or stale releases. As per the above."
},
"showDetails": {
"label": "Show Details"
},
"showOnlyIcon": {
"label": "Show Only Icon"
},
"topReleases": {
"label": "Top Releases",
"description": "The max number of latest releases to show. Zero means no limit."
},
"repositories": {
"label": "Repositories",
"addRepository": {
"label": "Add repository"
},
"importRepositories": {
"label": "Import from docker",
"loading": "Loading docker images",
"noImagesFound": "No docker images found",
"listFoundImages": "List of found images",
"listAlreadyImportedImages": "List of already imported images",
"allImagesAlreadyImported": "All images already imported",
"onlyAdminCanImport": "Only administrators can import from docker",
"selectAll": "Select all",
"deselectAll": "Deselect all"
},
"provider": {
"label": "Provider"
},
"providerUrl": {
"label": "Provider URL"
},
"identifier": {
"label": "Identifier",
"placeholder": "Name or Owner/Name"
},
"name": {
"label": "Name"
},
"versionFilter": {
"label": "Version Filter",
"prefix": {
"label": "Prefix"
},
"precision": {
"label": "Precision",
"options": {
"none": "None"
}
},
"suffix": {
"label": "Suffix"
},
"regex": {
"label": "Regular Expression"
}
},
"editForm": {
"title": "Edit Repository"
},
"importForm": {
"title": "Import from Docker"
},
"example": {
"label": "Example"
},
"invalid": "Invalid repository definition, please check the values",
"noProvider": {
"label": "No Provider",
"tooltip": "The provider could not be parsed, please manually set it after importing the images"
},
"tokens": {
"label": "Provider Tokens",
"token": "Token",
"configured": "Token configured",
"notConfigured": "No token set"
}
}
},
"not-found": "Not Found",
"pre-release": "Pre-Release",
"archived": "Archived",
"forked": "Forked",
"starsCount": "Stars",
"forksCount": "Forks",
"issuesCount": "Open Issues",
"markViewed": "Mark as viewed",
"openProjectPage": "Open Project Page",
"openReleasePage": "Open Release Page",
"releaseDescription": "Release Description",
"projectDescription": "Project Description",
"created": "Created",
"error": {
"label": "Error",
"messages": {
"invalidIdentifier": "Invalid identifier",
"noMatchingVersion": "No matching version found",
"noReleasesFound": "No releases found",
"noProviderSelected": "No provider selected",
"noProviderResponse": "No response from provider",
"unexpected": "Unexpected provider error"
}
},
"expandDetails": "Show details for {name}",
"collapseDetails": "Hide details for {name}"
},
"networkControllerSummary": {
"advanced": {
"updated": "Updated",
"metric": {
"latency": "Latency",
"ping": "Ping",
"uptime": "Uptime",
"users": "Users",
"guests": "Guests"
}
},
"card": {
"vpn": {
"countConnected": "{count, plural, one {# connected} other {# connected}}",
"label": "VPN"
},
"wan": "WAN",
"web": "Web",
"wifi": "Wi-Fi",
"lan": "LAN"
},
"error": {
"unknownContentOption": "Unknown content option for network controller summary widget: "
},
"name": "Network Controller Summary",
"description": "Displays the summary of a Network Controller (like UniFi Controller)"
},
"networkControllerStatus": {
"card": {
"variants": {
"wired": {
"name": "Wired"
},
"wifi": {
"name": "Wi-Fi"
}
},
"users": {
"label": "Users"
},
"guests": {
"label": "Guests"
}
},
"option": {
"content": {
"option": {
"wifi": {
"label": "Wi-Fi"
},
"wired": {
"label": "Wired"
}
},
"label": "Widget Content"
}
},
"error": {
"unknownContentOption": "Unknown content option for network status widget: "
},
"name": "Network Status",
"description": "Display connected devices on a network"
},
"networkController": {
"error": {
"internalServerError": "Failed to fetch Network Controller Summary"
}
},
"firewall": {
"name": "Firewall Monitoring",
"description": "Displays a summary of firewalls",
"tab": {
"system": "System",
"interfaces": "Interfaces"
},
"error": {
"internalServerError": "Unable to get data from firewall"
},
"option": {
"interfaces": "Network interfaces to display"
},
"widget": {
"fwname": "Name",
"version": "Version",
"versiontitle": "Versions",
"cputitle": "CPU usage",
"memorytitle": "Memory usage",
"memory": "Memory",
"interfaces": {
"name": "name",
"trans": "Transmited",
"recv": "Received",
"title": "Network Interfaces"
}
},
"empty": {
"noInterfaces": "No network interface data yet"
},
"versionUnknown": "Unknown version",
"metricAccessible": "{metric}: {value}%, {status}",
"status": {
"normal": "Normal",
"warning": "Warning",
"critical": "Critical"
}
},
"notifications": {
"name": "Notifications",
"description": "Display notification history from an integration",
"noItems": "No notifications to display.",
"option": {
"hideLogos": {
"label": "Hide logos"
}
}
},
"speedtestTracker": {
"name": "Speedtest Tracker",
"description": "Displays speed test results from your Speedtest Tracker instance.",
"option": {
"showLatestResult": {
"label": "Show latest result"
},
"showStats": {
"label": "Show averages"
},
"showRecentResults": {
"label": "Show recent results"
},
"showPingGraph": {
"label": "Show ping graph"
}
},
"latestResult": "Latest Result",
"averages": "Averages",
"tests": "{count} tests",
"recentResults": "Recent Results",
"recentResultsSpeed": "Speed",
"recentResultsPing": "Ping",
"download": "Download",
"upload": "Upload",
"ping": "Ping",
"status": "Status",
"avgDownload": "Avg Download",
"avgUpload": "Avg Upload",
"avgPing": "Avg Ping",
"healthy": "Healthy",
"unhealthy": "Unhealthy",
"ok": "OK",
"fail": "Fail",
"noSectionsEnabled": "Enable at least one section in widget options.",
"error": {
"internalServerError": "Failed to fetch speedtest data"
}
},
"uptimeKuma": {
"description": "Monitor uptime statistics from your Uptime Kuma status page",
"option": {
"showAverageUptime": {
"label": "Show average uptime",
"description": "Display the combined 24-hour average uptime percentage"
},
"showUptimeRing": {
"label": "Show uptime ring",
"description": "Display a progress ring alongside the average uptime value"
},
"showTotalMonitors": {
"label": "Show total monitors",
"description": "Display the total number of configured monitors"
},
"showUpCount": {
"label": "Show up count",
"description": "Display how many monitors are currently up"
},
"showDownCount": {
"label": "Show down count",
"description": "Display how many monitors are currently down"
},
"showPausedCount": {
"label": "Show paused count",
"description": "Display how many monitors are currently paused"
}
},
"averageUptime": "Average uptime (24h)",
"stats": {
"totalMonitors": "Total monitors",
"upCount": "Up",
"downCount": "Down",
"pausedCount": "Paused"
},
"error": {
"internalServerError": "Failed to fetch uptime data"
},
"status": {
"up": "Up",
"down": "Down",
"paused": "Paused"
}
},
"traefik": {
"description": "Overview of Traefik routers, services, middlewares, and entry points",
"option": {
"showTcp": {
"label": "Show TCP"
},
"showUdp": {
"label": "Show UDP"
},
"showEntryPoints": {
"label": "Show entry points"
}
},
"instances": "Traefik instances",
"versionUnknown": "Version unknown",
"summary": {
"routers": "Routers",
"entryPoints": "Entry points"
},
"resource": {
"routers": "Routers",
"middlewares": "Middlewares"
},
"status": {
"healthy": "Healthy",
"errors": "{count} errors",
"warnings": "{count} warnings"
},
"error": {
"internalServerError": "Failed to fetch Traefik data"
},
"resourceType": {
"router": "Router",
"service": "Service",
"middleware": "Middleware"
},
"resourceStatus": {
"enabled": "Enabled",
"disabled": "Disabled",
"warning": "Warning",
"error": "Error",
"unknown": "Unknown"
},
"failedEndpoint": "Failed: {endpoint}"
},
"audioStats": {
"name": "Audio stats",
"description": "Library and playback statistics from Navidrome or Audiobookshelf",
"option": {
"showArtists": {
"label": "Show artists",
"description": "Show the total number of artists in your music library (Navidrome)"
},
"showAlbums": {
"label": "Show albums",
"description": "Show the total number of albums in your music library (Navidrome)"
},
"showSongs": {
"label": "Show songs",
"description": "Show the total number of songs in your music library (Navidrome)"
},
"showLibraryCount": {
"label": "Show library count",
"description": "Show the number of libraries on your instance (Audiobookshelf)"
},
"showAudiobooks": {
"label": "Show audiobooks",
"description": "Show the total number of audiobooks across all libraries (Audiobookshelf)"
},
"showPodcasts": {
"label": "Show podcasts",
"description": "Show the total number of podcasts across all libraries (Audiobookshelf)"
},
"showListeningTime": {
"label": "Show listening time",
"description": "Show your total listening time (Audiobookshelf)"
},
"showActiveSessions": {
"label": "Show active sessions",
"description": "Show the number of currently active playback sessions (Audiobookshelf)"
},
"compactMode": {
"label": "Compact mode",
"description": "Use a denser layout with smaller tiles, ideal for small widget sizes"
}
},
"artists": "Artists",
"albums": "Albums",
"songs": "Songs",
"libraryCount": "Libraries",
"audiobooks": "Audiobooks",
"podcasts": "Podcasts",
"listeningTime": "Listening Time",
"activeSessions": "Active Sessions",
"error": {
"internalServerError": "Failed to fetch audio stats data"
}
},
"systemResources": {
"name": "System resources",
"description": "CPU, Memory, Disk and other hardware usage of your system",
"option": {
"hasShadow": {
"label": "Enable chart shading"
},
"visibleCharts": {
"label": "Visible charts",
"description": "Select the charts you want to be visible.",
"option": {
"memory": "Memory",
"network": "Network"
}
},
"labelDisplayMode": {
"label": "Label display mode",
"option": {
"textWithIcon": "Show text with icon",
"text": "Show only text",
"icon": "Show only icon",
"hidden": "Hide label"
}
}
},
"card": {
"memory": "MEM",
"network": "NET",
"up": "UP",
"down": "DOWN",
"memoryTooltip": "{used} / {available} ({percent}%)"
}
},
"systemDisks": {
"name": "System disks",
"description": "Disk usage of your system",
"option": {
"showTemperatureIfAvailable": {
"label": "Show temperature if available"
},
"displayMode": {
"label": "Display mode",
"option": {
"percentage": {
"label": "Percentage (e.g., 76%)"
},
"absolute": {
"label": "Absolute values (e.g., 800GB / 1TB)"
},
"free": {
"label": "Free space percentage (e.g., 24% free)"
}
}
},
"showBackgroundBar": {
"label": "Show background usage bar"
}
},
"status": {
"unhealthy": "Unhealthy",
"smart": "SMART",
"free": "{percentage}% free"
}
},
"customApi": {
"name": "Custom widget",
"description": "Render a configured Custom JSX definition.",
"customJsx": {
"noTemplate": "No JSX template is configured.",
"templateWarnings": "{count} template warnings:",
"requestIdRequired": "This network control requires a named requestId.",
"unsavedPreview": "Run the initial request test in the editor before testing named requests.",
"invalidParams": "The request parameters are invalid.",
"loading": "Loading request...",
"loadRequest": "Load request",
"requestFailed": "The request failed.",
"retry": "Retry request",
"actionCompleted": "Action completed successfully.",
"actionSimulated": "Action simulated; no request was sent.",
"actionsDisabledEditMode": "Actions are disabled while the board is in edit mode.",
"widgetItemUnavailable": "This widget item is not available.",
"toggle": "Toggle",
"copied": "Copied",
"confirmDelete": "Confirm this destructive action."
},
"option": {
"definitionId": {
"label": "Custom widget"
},
"refreshInterval": {
"label": "Refresh interval",
"description": "How often to refetch data from the API (in seconds)"
}
},
"noDefinition": "No definition selected",
"definitionNotFound": "Custom widget unavailable",
"migrationRequired": "This legacy custom widget is preserved, but it must be migrated to Custom JSX v2 from Manage custom widgets before it can run.",
"manageMigration": "Open Manage custom widgets",
"contactAdmin": "Contact an administrator.",
"configurationNeedsRepair": "This widget's options changed. Edit the widget to repair its configuration.",
"removeFromBoard": "Remove from board",
"editModePending": "Save the board to load this widget.",
"picker": {
"group": "Custom JSX widgets",
"empty": "No custom widgets found",
"preview": "Preview",
"sources": "{count, plural, one {# source} other {# sources}}",
"requests": "{count, plural, one {# request} other {# requests}}",
"migrationRequired": "Migration required",
"migrationDescription": "This placed v1 widget cannot run yet. Copy its redacted prompt to an LLM, then paste the single JSON response into Homarr.",
"manageMigration": "Open Manage custom widgets",
"contactAdmin": "Contact an administrator."
},
"configuration": {
"needsAttention": "Configuration needs attention: {message}",
"advancedOptions": "Advanced options",
"invalidJson": "Invalid JSON"
}
},
"beszelSystemTable": {
"name": "Beszel Systems (Table)",
"description": "Table view of all Beszel-monitored systems with sortable columns and status indicators",
"option": {
"sortBy": {
"label": "Sort by"
},
"sortDirection": {
"label": "Sort direction"
}
},
"error": {
"layoutSaveTitle": "Unable to save table layout",
"layoutSaveMessage": "Your column order or widths could not be saved. Please try again."
}
},
"beszelSystemGrid": {
"name": "Beszel Systems (Grid)",
"description": "Card grid view of all Beszel-monitored systems with real-time metrics"
},
"beszelAlerts": {
"name": "Beszel Alerts",
"description": "View Beszel alert configurations and history",
"option": {
"showHistory": {
"label": "Show alert history"
},
"maxHistoryItems": {
"label": "Max history items"
}
},
"empty": "No alerts configured",
"history": "History",
"resolved": "Resolved",
"alertDescription": {
"statusDuration": "Down for {minutes} min",
"threshold": "Exceeds {value} over {minutes} min"
},
"status": {
"triggered": "Triggered",
"ok": "OK"
}
},
"beszelSystemStats": {
"name": "Beszel System Stats",
"description": "Time-series charts for CPU, memory, disk, network, and Docker container metrics",
"option": {
"systemId": {
"label": "System",
"description": "Select a Beszel system to display stats for"
},
"timePeriod": {
"label": "Time period"
},
"showCpu": {
"label": "Show CPU chart"
},
"showMemory": {
"label": "Show memory chart"
},
"showDisk": {
"label": "Show disk chart"
},
"showDiskIO": {
"label": "Show disk I/O chart"
},
"showNetwork": {
"label": "Show network chart"
},
"showDockerCpu": {
"label": "Show Docker CPU chart"
},
"showDockerMemory": {
"label": "Show Docker memory chart"
},
"showDockerNetwork": {
"label": "Show Docker network chart"
}
},
"selectSystem": "Select system",
"empty": {
"noSystems": "No systems found"
},
"error": {
"liveConnectionFailed": "Live connection failed. Your Beszel instance may not support real-time streaming.",
"switchToHistorical": "Switch to historical view",
"systemNotFound": "Selected system was not found. Choose a different system.",
"selectionSaveTitle": "Unable to save selection",
"selectionSaveMessage": "Your system or time period selection could not be saved. Please try again."
},
"chart": {
"cpu": {
"title": "CPU Usage",
"subtitle": "Average system-wide CPU utilization"
},
"memory": {
"title": "Memory Usage",
"subtitle": "Precise utilization at the recorded time",
"series": "Used",
"cache": "Cache/Buffers"
},
"disk": {
"title": "Disk Usage",
"subtitle": "Usage by filesystem",
"series": "Root"
},
"diskIO": {
"title": "Disk I/O",
"subtitle": "Throughput of root filesystem",
"read": "Read",
"write": "Write"
},
"storage": {
"title": "Storage",
"subtitle": "Per-filesystem disk usage",
"series": "Used"
},
"network": {
"title": "Bandwidth",
"subtitle": "Network traffic of public interfaces",
"sent": "Sent",
"recv": "Received"
},
"dockerCpu": {
"title": "Docker CPU Usage",
"subtitle": "Average CPU utilization of containers"
},
"dockerMemory": {
"title": "Docker Memory Usage",
"subtitle": "Memory usage of docker containers"
},
"dockerNetwork": {
"title": "Docker Network I/O",
"subtitle": "Network traffic of docker containers"
}
},
"period": {
"live": "Live",
"oneHour": "1h",
"twelveHours": "12h",
"oneDay": "24h",
"oneWeek": "1w",
"thirtyDays": "30d"
}
},
"assistant": {
"name": "Assistant",
"description": "Have a complete assistant conversation directly on your board.",
"unavailable": {
"title": "Assistant unavailable",
"description": "Sign in and ask an administrator to configure the Assistant from the management panel."
},
"compact": {
"title": "Assistant",
"description": "Resize this widget to chat here, or open the full conversation.",
"open": "Open assistant",
"openTitle": "Assistant open in side panel",
"openDescription": "The conversation stays in one active surface.",
"returnToWidget": "Return the conversation to this widget",
"otherWidgetTitle": "Assistant active in another widget",
"otherWidgetDescription": "Only one conversation surface stays active at a time.",
"useHere": "Use the assistant in this widget"
}
},
"beszel": {
"error": {
"internalServerError": "Unable to connect to Beszel. Check your integration settings."
},
"empty": {
"noSystems": "No systems found"
},
"options": {
"statusFilter": {
"label": "Status filter"
},
"showCpu": {
"label": "Show CPU"
},
"showMemory": {
"label": "Show memory"
},
"showDisk": {
"label": "Show disk"
},
"showGpu": {
"label": "Show GPU"
},
"showLoadAvg": {
"label": "Show load average"
},
"showNet": {
"label": "Show network"
},
"showTemp": {
"label": "Show temperature"
},
"showBattery": {
"label": "Show battery"
},
"showServices": {
"label": "Show services"
},
"showUptime": {
"label": "Show uptime"
},
"showAgent": {
"label": "Show agent version"
}
},
"metric": {
"system": "System",
"source": "Source",
"hostname": "Hostname",
"cpuModel": "CPU model",
"cores": "Cores",
"memoryTotal": "Memory total",
"memory": "Memory",
"disk": "Disk",
"loadAvg": "Load Avg",
"net": "Net",
"temp": "Temp",
"battery": "Bat",
"uptime": "Uptime",
"agent": "Agent"
}
}
},
"widgetPreview": {
"toggle": {
"enabled": "Edit mode enabled",
"disabled": "Edit mode disabled"
},
"dimensions": {
"title": "Change dimensions"
}
},
"board": {
"emptyState": {
"title": "Build your first view",
"description": "Add a widget or app, or connect a service and use its data on this board.",
"addWidget": "Add widget",
"addApp": "Add app",
"connectService": "Connect service"
},
"setupChecklist": {
"title": "Make this board useful",
"description": "Pick up where you left off. Progress follows the content already on this board.",
"collapse": "Collapse setup checklist",
"resume": "Continue setup ({completed}/{total})",
"progress": "Board setup progress",
"step": {
"content": {
"label": "Add useful content",
"description": "Choose a widget and configure it before it is placed."
},
"app": {
"label": "Pin an app",
"description": "Keep a service or tool one click away from this board."
},
"service": {
"label": "Connect a service",
"description": "Unlock live data and actions for compatible widgets.",
"permissionDescription": "An administrator can connect a service to unlock live data.",
"action": "Connect"
}
}
},
"action": {
"addContent": "Add board content",
"settings": "Board settings",
"switch": "Switch board",
"switcher": {
"title": "Switch board",
"search": {
"empty": "No boards match \"{search}\"."
},
"results": "Available boards",
"preview": "Preview of {name} with {count} items",
"currentHidden": "Current board: {name}",
"keyboard": {
"navigate": "Navigate",
"open": "Open",
"instructions": "Type to filter boards. Use the arrow keys to move through results and Enter to open a board."
},
"empty": {
"title": "No other boards",
"description": "There are no other boards you can access."
},
"error": "Boards could not be loaded."
},
"create": {
"availability": {
"checking": "Checking availability…",
"available": "{name} is available"
},
"notification": {
"success": {
"title": "Board created",
"message": "Board {name} has been created"
},
"error": {
"title": "Unable to create board",
"message": "Board {name} could not be created"
}
}
},
"duplicate": {
"title": "Duplicate board",
"message": "This will duplicate the board {name} with all its content. If widgets reference integrations, that you are not allowed to use, they will be removed.",
"notification": {
"success": {
"title": "Board duplicated",
"message": "The board was successfully duplicated"
},
"error": {
"title": "Unable to duplicate board",
"message": "The board could not be duplicated"
}
}
},
"edit": {
"enter": "Edit board",
"save": "Save board",
"exit": "Exit edit mode",
"notification": {
"success": {
"message": "The board was successfully saved"
},
"error": {
"message": "The board could not be saved"
},
"loadError": {
"title": "Unable to start editing",
"message": "The board editor could not be loaded. Your dashboard is still available in view mode."
}
},
"confirmLeave": {
"title": "Unsaved changes",
"message": "You have unsaved changes, are you sure you want to leave?"
}
},
"quickCreateApp": {
"modal": {
"title": "Create app on the fly",
"createAndUse": "Create and use"
}
}
},
"landmark": {
"canvas": "Dashboard canvas",
"leftRail": "Left dashboard rail",
"rightRail": "Right dashboard rail",
"items": "Dashboard items"
},
"field": {
"pageTitle": {
"label": "Page title"
},
"metaTitle": {
"label": "Meta title"
},
"logoImageUrl": {
"label": "Logo image URL"
},
"faviconImageUrl": {
"label": "Favicon image URL"
},
"backgroundImageUrl": {
"label": "Background image URL",
"placeholder": "Start typing to search local images",
"group": {
"your": "Your images",
"other": "Other images"
}
},
"backgroundImageAttachment": {
"label": "Background image attachment",
"option": {
"fixed": {
"label": "Fixed",
"description": "Background stays in the same position."
},
"scroll": {
"label": "Scroll",
"description": "Background scrolls with your mouse."
}
}
},
"backgroundImageRepeat": {
"label": "Background image repeat",
"option": {
"repeat": {
"label": "Repeat",
"description": "The image is repeated as much as needed to cover the whole background image painting area."
},
"no-repeat": {
"label": "No repeat",
"description": "The image is not repeated and may not fill the entire space."
},
"repeat-x": {
"label": "Repeat X",
"description": "Same as 'Repeat' but only on horizontal axis."
},
"repeat-y": {
"label": "Repeat Y",
"description": "Same as 'Repeat' but only on vertical axis."
}
}
},
"backgroundImageSize": {
"label": "Background image size",
"option": {
"cover": {
"label": "Cover",
"description": "Scales the image as small as possible to cover the entire window by cropping excessive space."
},
"contain": {
"label": "Contain",
"description": "Scales the image as large as possible within its container without cropping or stretching the image."
}
}
},
"primaryColor": {
"label": "Primary color",
"locked": "Your administrator keeps the instance brand color on every board."
},
"secondaryColor": {
"label": "Secondary color"
},
"opacity": {
"label": "Opacity"
},
"iconColor": {
"label": "Icon color"
},
"clearColor": {
"label": "Clear color"
},
"customCss": {
"label": "Custom css for this board",
"description": "Further, customize your dashboard using CSS, only recommended for experienced users",
"customClassesAlert": {
"title": "Custom classes",
"description": "You can add custom classes to your board items in the advanced options of each item and use them in the custom CSS above."
}
},
"disableStatus": {
"label": "Disable app status",
"description": "Disables the status check for all apps on this board"
},
"columnCount": {
"label": "Column count"
},
"itemRadius": {
"label": "Item radius",
"description": "Changes the roundness of tiles on your board",
"option": {
"xs": "Very small",
"sm": "Small",
"md": "Medium",
"lg": "Large",
"xl": "Very large"
}
},
"isPublic": {
"label": "Public",
"description": "Public boards are accessible by everyone, even without an account."
}
},
"content": {
"metaTitle": "{boardName} board"
},
"setting": {
"title": "Settings for {boardName} board",
"section": {
"general": {
"title": "General",
"unrecognizedLink": "The provided link is not recognized and won't preview, it might still work."
},
"layout": {
"title": "Layout",
"responsive": {
"title": "Responsive layouts",
"description": "Each layout keeps its own widget positions and sizes. Mobile and Base are always available; add custom layouts at any additional breakpoint.",
"action": {
"add": "Add layout"
}
},
"role": {
"mobile": "Mobile",
"base": "Base",
"custom": "Custom"
},
"custom": {
"defaultName": "Custom layout"
},
"mobile": {
"breakpointDescription": "Mobile is always used from 0px until the next layout breakpoint."
},
"preview": {
"columns": "columns",
"empty": "This layout is empty",
"dynamicSection": "Dynamic section",
"editorWidthLabel": "{layoutName} · {width}px"
},
"reset": {
"action": "Reset from Base",
"confirm": {
"title": "Reset {layoutName}?",
"message": "This replaces every saved position and size in this layout with a new layout generated from Base. This cannot be undone."
}
},
"edit": {
"action": "Edit layout",
"saveAndEdit": "Save and edit",
"save": "Save layout",
"cancel": {
"action": "Cancel layout editing",
"title": "Discard layout changes?",
"message": "Your unsaved changes to this layout will be discarded."
}
}
},
"background": {
"title": "Background"
},
"appearance": {
"title": "Appearance"
},
"customCss": {
"title": "Custom css"
},
"behavior": {
"title": "Behavior"
},
"access": {
"title": "Access control",
"permission": {
"item": {
"view": {
"label": "View board"
},
"modify": {
"label": "Modify board"
},
"full": {
"label": "Full access"
}
}
}
},
"dangerZone": {
"title": "Danger zone",
"action": {
"rename": {
"label": "Rename board",
"description": "Changing the name will break any links to this board.",
"button": "Change name"
},
"visibility": {
"label": "Change board visibility",
"description": {
"public": "This board is currently public.",
"private": "This board is currently private."
},
"button": {
"public": "Make private",
"private": "Make public"
},
"confirm": {
"public": {
"title": "Make board private",
"description": "Are you sure you want to make this board private? This will hide the board from the public. Links for guest users will break."
},
"private": {
"title": "Make board public",
"description": "Are you sure you want to make this board public? This will make the board accessible to everyone."
}
}
},
"delete": {
"description": "Once you delete a board, there is no going back. Please be certain.",
"confirm": {
"title": "Delete board",
"description": "Are you sure you want to delete this board? This will permanently delete the board and all its content."
}
}
}
}
}
},
"error": {
"noBoard": {
"title": "Welcome to Homarr",
"description": "A sleek, modern dashboard that puts all of your apps and services at your fingertips.",
"link": "Create your first board",
"notice": "To make this page disappear, create a board and set it as the home board"
},
"notFound": {
"title": "Board not found",
"description": "The board specified was either not found or you don't have access to it.",
"link": "View all boards",
"notice": "Check the link or contact an administrator if you think it should be accessible"
},
"homeBoard": {
"title": "No home board",
"admin": {
"description": "You haven't set a home board for the server yet.",
"link": "Configure server-wide home board",
"notice": "To make this page disappear for all users, set a home board for the server"
},
"user": {
"description": "You haven't set a home board yet.",
"link": "Configure your home board",
"notice": "To make this page disappear, specify the home board in your preferences"
},
"anonymous": {
"description": "The server administrator hasn't set a home board yet.",
"link": "View public boards",
"notice": "To make this page disappear, ask the server administrator to set a home board for the server"
}
}
}
},
"layout": {
"field": {
"columnCount": {
"label": "Column count"
},
"breakpoint": {
"label": "Breakpoint",
"description": "Layout will be used on all screens larger than this breakpoint until the next bigger breakpoint."
},
"gutters": {
"label": "Fixed sidebars",
"description": "Reserve up to three dashboard columns on either side. The remaining canvas reflows automatically.",
"left": {
"label": "Left sidebar",
"description": "Keep this area visible while the dashboard scrolls.",
"thumbLabel": "Left sidebar width"
},
"right": {
"label": "Right sidebar",
"description": "Keep this area visible while the dashboard scrolls.",
"thumbLabel": "Right sidebar width"
},
"width": {
"label": "Width in columns"
},
"preview": {
"label": "Dashboard layout preview"
}
}
}
},
"management": {
"metaTitle": "Management",
"notFound": {
"title": "Not Found",
"text": "Could not find requested resource",
"backToHome": "Back to management home"
},
"error": {
"title": "This page couldn't load",
"text": "An unexpected error occurred while loading this page. Your navigation is still available — try reloading, or use another section from the sidebar.",
"digest": "Error reference: {digest}"
},
"navbar": {
"items": {
"home": "Home",
"users": {
"items": {
"manage": "Manage"
}
},
"tools": {
"label": "Tools",
"items": {
"docker": "Docker",
"kubernetes": "Kubernetes",
"api": "API & MCP",
"backup": "Backup"
}
},
"settings": "Settings",
"help": {
"label": "Help",
"items": {
"documentation": "Documentation",
"submitIssue": "Submit an issue",
"discord": "Community Discord",
"sourceCode": "Source Code"
}
},
"about": "About",
"assistant": "Assistant"
}
},
"page": {
"home": {
"statisticLabel": {
"boards": "Boards",
"resources": "Resources",
"authentication": "Authentication",
"authorization": "Authorization"
},
"heroBanner": {
"title": "Welcome back to your",
"subtitle": "{app} Board"
}
},
"board": {
"title": "Your boards",
"action": {
"new": {
"label": "New board"
},
"open": {
"label": "Open board"
},
"settings": {
"label": "Settings"
},
"setHomeBoard": {
"label": "Set as your home board",
"badge": {
"label": "Home",
"tooltip": "This board will show as your home board"
}
},
"setMobileHomeBoard": {
"label": "Set as your mobile board",
"badge": {
"label": "Mobile",
"tooltip": "This board will show as your mobile board"
}
},
"delete": {
"confirm": {
"description": "Are you sure you want to delete the {name} board?"
}
}
},
"visibility": {
"public": "This board is public",
"private": "This board is private"
},
"preview": {
"label": "Layout preview for {name}, with {count} items",
"unknownCreator": "Unknown creator"
},
"noResults": {
"title": "No boards yet",
"description": "Create a board to arrange your apps and widgets in one place."
}
},
"media": {
"includeFromAllUsers": "Include media from all users"
},
"user": {
"fieldsDisabledExternalProvider": "Certain fields are disabled because they are managed by an external authentication provider.",
"setting": {
"general": {
"title": "General",
"header": {
"title": "Header studio",
"badge": "Personal",
"description": "Drag controls anywhere in the row. Left, Center, and Right stay fixed while controls shift around them.",
"device": {
"desktop": "Desktop",
"mobile": "Mobile"
},
"zones": {
"left": "Left",
"center": "Center",
"right": "Right"
},
"action": {
"hide": "Hide the header",
"show": "Show the header",
"configure": "Move or configure {item}",
"remove": "Remove {item}",
"dropIntoZone": "Move into the {zone} section"
},
"preview": {
"board": "Dashboard preview for {name}",
"empty": "No dashboard layout is available"
},
"available": {
"title": "Available controls",
"description": "Add a control, then drag its full button into position above.",
"requiredAlways": "This control is required, but you can move it anywhere in the header.",
"allAdded": "Every built-in control is already in your header.",
"add": "Add {item}",
"boardShortcut": "Board shortcut",
"chooseBoard": "Choose a board"
},
"configuration": {
"description": "This control stays the same size as it does in the live header.",
"searchDisplay": {
"input": "Search bar",
"icon": "Icon only"
},
"logoDisplay": {
"logo": "Logo only",
"logoAndText": "Logo + text"
}
},
"items": {
"logo": "Logo",
"search": "Search",
"home": "Home board",
"boardSwitcher": "Boards",
"assistant": "Assistant",
"docker": "Docker",
"boardEdit": "Edit board",
"boardSettings": "Board settings",
"settings": "Your settings",
"themeToggle": "Toggle theme",
"user": "Account",
"boardUnavailable": "Board unavailable"
}
},
"item": {
"language": "Language & Region",
"board": {
"title": "Home board",
"type": {
"general": "General",
"mobile": "Mobile"
}
},
"search": "Search",
"firstDayOfWeek": "First day of the week",
"accessibility": "Accessibility",
"onboardingTours": {
"title": "Onboarding Tours",
"description": "Reset the onboarding tours to see them again on your next visit to the management area or dashboard.",
"reset": "Reset onboarding tours",
"resetSuccess": {
"title": "Tours reset",
"message": "Onboarding tours will show again on your next visit"
},
"status": {
"completed": "Completed",
"notStarted": "Not started"
},
"name": {
"management": "Management",
"dashboard": "Dashboard"
}
}
}
},
"security": {
"title": "Security"
}
},
"list": {
"metaTitle": "Manage users"
},
"edit": {
"metaTitle": "Edit user {username}"
},
"create": {
"metaTitle": "Create user",
"title": "Create new user",
"step": {
"personalInformation": {
"label": "Personal information"
},
"security": {
"label": "Security"
},
"groups": {
"label": "Groups",
"title": "Select all groups user should be member of",
"description": "The {everyoneGroup} group is assigned to all users and can not be removed."
},
"review": {
"label": "Review"
},
"completed": {
"title": "User created"
},
"error": {
"title": "User creation failed"
}
},
"action": {
"createAnother": "Create another user",
"back": "Return to the user list"
}
},
"invite": {
"title": "Manage user invites",
"action": {
"new": {
"title": "New invite",
"description": "After the expiration, an invite will no longer be valid and the recipient of the invite won't be able to create an account."
},
"copy": {
"title": "Copy invite",
"description": "Your invitation has been generated. After this modal closes, <b>you'll not be able to copy this link anymore.</b> If you do no longer wish to invite said person, you can delete this invitation any time.",
"link": "Invitation link",
"button": "Copy & close"
},
"delete": {
"title": "Delete invite",
"description": "Are you sure, that you want to delete this invitation? Users with this link will no longer be able to create an account using that link."
}
},
"field": {
"creator": {
"label": "Creator"
},
"expirationDate": {
"label": "Expiration date"
},
"token": {
"label": "Token"
}
}
}
},
"group": {
"back": "Back to groups",
"setting": {
"general": {
"title": "General",
"owner": "Owner",
"ownerOfGroup": "Owner of this group",
"ownerOfGroupDeleted": "The owner of this group was deleted. It currently has no owner."
},
"setting": {
"title": "Settings",
"alert": "Group settings are prioritized by the order of groups in the list. The top settings overwrite the bottom settings."
},
"members": {
"title": "Members",
"search": "Find a member",
"notFound": "No members found"
},
"permissions": {
"title": "Permissions"
}
}
},
"settings": {
"title": "Settings",
"notification": {
"success": {
"message": "Settings saved successfully"
}
},
"section": {
"analyticsDocumentation": "See exactly what analytics data Homarr collects",
"analytics": {
"title": "Analytics",
"general": {
"title": "Help us improve Homarr",
"text": "This helps us figure out what people actually use so we know where to spend our time. We see stuff like how many widgets or integrations you have, your Homarr version, and what database you're on. That's it — no personal info, no URLs, no names, nothing that could identify you or your setup."
}
},
"crawlingAndIndexing": {
"title": "Crawling and Indexing",
"warning": "Enabling or disabling any settings here will severely impact how search engines will index & crawl your page. Any setting is a request and it is up to the crawler to apply these settings. Any modification may take up to multiple days or weeks to apply. Some settings may be search engine specific.",
"noIndex": {
"title": "No index",
"text": "Do not index the website on search engines and don't show it in any search results"
},
"noFollow": {
"title": "No follow",
"text": "Do not follow any links while indexing. Disabling this will lead to crawlers attempting to follow all links on Homarr."
},
"noTranslate": {
"title": "No translate",
"text": "When the site language is likely not that the user is likely to want to read, Google will show a translation link in the search results"
},
"noSiteLinksSearchBox": {
"title": "No site links search box",
"text": "Google will build a search box with the crawled links along with other direct links. Enabling this will ask Google to disable that box."
}
},
"board": {
"homeBoard": {
"label": "Global home board",
"mobileLabel": "Global mobile board",
"description": "Only public boards are available for selection"
},
"status": {
"title": "App status",
"enableStatusByDefault": {
"label": "Enable status by default",
"description": "When adding an app item, the status will be enabled by default"
},
"forceDisableStatus": {
"label": "Force disable status",
"description": "Status for apps will be disabled for all users and can't be enabled"
}
}
},
"user": {
"enableGravatar": {
"label": "Enable Gravatar",
"description": "Falls back to user avatars from Libravatar/Gravatar when no custom avatar is set and an email is configured"
}
},
"search": {
"title": "Search",
"defaultSearchEngine": {
"label": "Global default search engine",
"description": "Integration search engines can not be selected here"
}
},
"appearance": {
"title": "Appearance",
"defaultColorScheme": {
"label": "Default color scheme"
}
},
"branding": {
"title": "Instance branding",
"groups": {
"identity": "Identity",
"appearance": "Appearance",
"authentication": "Authentication"
},
"identity": {
"description": "The application logo is the larger mark used inside the app, on sign-in pages, and for installed apps. The browser icon (favicon) is the small square used in tabs and bookmarks; when empty, it falls back to the application logo."
},
"appName": {
"label": "Application name"
},
"greeting": {
"label": "Custom greeting"
},
"logo": {
"label": "Application logo",
"placeholder": "/logo/logo.png"
},
"favicon": {
"label": "Browser icon (favicon)",
"placeholder": "Uses application logo"
},
"primaryColor": {
"label": "Primary color"
},
"secondaryColor": {
"label": "Secondary accent"
},
"lockPrimaryColor": {
"label": "Keep this color on every board",
"description": "Prevents board colors from replacing the application accent."
},
"signInBackground": {
"label": "Authentication background",
"placeholder": "https://example.com/background.jpg"
},
"signInOverlay": {
"label": "Background overlay"
},
"defaultRadius": {
"label": "Corner style",
"options": {
"xs": "Tight",
"sm": "Subtle",
"md": "Balanced",
"lg": "Rounded",
"xl": "Soft"
}
},
"authVisibility": {
"description": "Choose what appears on every authentication page.",
"appName": "Application name",
"logo": "Application logo",
"greeting": "Greeting"
},
"summary": {
"title": "Current branding",
"cornerStyle": "Corner style",
"palette": "Palette",
"backgroundConfigured": "Custom background · {overlay}% overlay",
"backgroundDefault": "Default background",
"greetingConfigured": "Custom greeting",
"greetingDefault": "Default greeting",
"boardColorLocked": "Board color locked",
"boardColorFlexible": "Board colors allowed",
"appName": "Name",
"logo": "Logo",
"greeting": "Greeting",
"on": "On",
"off": "Off"
}
},
"culture": {
"title": "Culture",
"defaultLocale": {
"label": "Default language"
}
},
"assistant": {
"loading": "Loading assistant configuration",
"title": "Assistant",
"description": "Connect an OpenAI-compatible model endpoint for the instance-wide assistant.",
"security": {
"description": "API keys and additional header values are encrypted in the Homarr database. They are never returned to browsers. Model requests are sent from the Homarr server directly to the configured endpoint."
},
"overview": {
"connectionReady": "Connection ready",
"unsavedChanges": "Unsaved changes",
"setupRequired": "Setup required",
"disabled": "Disabled",
"noModel": "No model selected"
},
"connection": {
"endpointTitle": "Provider and endpoint",
"description": "Choose a preset or connect any service that implements the OpenAI Chat Completions API.",
"save": "Save provider connection"
},
"credentials": {
"title": "Credentials",
"description": "Add the secrets this endpoint needs. Stored values stay encrypted and cannot be read back.",
"required": "Key required",
"optional": "Key optional",
"workshop": "Per-user GitHub sign-in"
},
"provider": {
"title": "Provider",
"groups": {
"free": "Free with Homarr",
"hosted": "Hosted providers",
"local": "Local providers",
"custom": "Custom"
},
"options": {
"homarr": {
"description": "A limited number of Assistant uses are free each day, paid for by the Homarr team. Sign in with the Community Workshop to use your allowance."
},
"openrouter": {
"description": "Hosted model routing with a large tool-capable model catalog."
},
"openai": {
"description": "OpenAI Chat Completions through the official API endpoint."
},
"anthropic": {
"description": "Claude through Anthropic's OpenAI SDK compatibility endpoint."
},
"google-gemini": {
"description": "Gemini through Google's OpenAI-compatible API endpoint."
},
"xai": {
"description": "Grok models through xAI's OpenAI-compatible API."
},
"groq": {
"description": "Fast hosted inference through Groq's OpenAI-compatible API."
},
"mistral": {
"description": "Mistral models through the official API."
},
"deepseek": {
"description": "DeepSeek models through its OpenAI-compatible API."
},
"together": {
"description": "Hosted open models through Together's OpenAI-compatible API."
},
"ollama": {
"description": "A local or network Ollama server using its OpenAI-compatible API."
},
"lm-studio": {
"description": "An LM Studio local server with OpenAI compatibility enabled."
},
"custom": {
"label": "Custom endpoint",
"description": "Any other endpoint compatible with OpenAI Chat Completions."
}
},
"homarrAuth": {
"title": "Free daily Assistant uses included",
"description": "No API key is needed. The Homarr team covers a limited number of Assistant uses for you each day. Sign in with the Community Workshop to keep your allowance separate."
}
},
"baseUrl": {
"title": "API base URL",
"description": "Include the API prefix, usually /v1. In containers, localhost refers to the Homarr container."
},
"apiKey": {
"title": "API key",
"required": "Required by this provider. The value is encrypted and write-only.",
"optional": "Optional for local endpoints. Leave it blank when the service does not require bearer authentication.",
"placeholder": "Enter an API key",
"savedTitle": "Encrypted API key saved",
"savedDescription": "Homarr can use this key, but it cannot display or recover its value.",
"remove": "Remove saved API key",
"removeFlow": {
"title": "Remove the saved API key?",
"description": "This provider requires an API key. Removing it can stop model discovery and assistant responses until another key is saved.",
"optionalDescription": "The endpoint will stop receiving bearer authentication after this key is removed. Confirm that it accepts unauthenticated requests or uses another stored header.",
"cancel": "Keep saved key",
"confirm": "Remove API key"
}
},
"headers": {
"title": "Additional request headers",
"description": "Optional authentication or routing headers. Header values are encrypted and write-only.",
"add": "Add header",
"name": "Header name",
"value": "Header value",
"valuePlaceholder": "Secret or routing value",
"remove": "Remove header",
"configured": "Additional encrypted headers are configured. Adding headers replaces the complete stored set.",
"empty": "No additional headers are stored for this provider.",
"savedBadge": "Headers saved",
"pendingRemoval": "Removal pending",
"clear": "Remove stored headers when saving",
"keep": "Keep stored headers"
},
"model": {
"title": "Model",
"description": "Select a discovered model or enter an exact endpoint model ID.",
"placeholder": "Model ID",
"refresh": "Refresh models",
"chooseModel": "Choose the model used for new conversations.",
"discoveryPath": "Model discovery path",
"discoveryPathDescription": "Appended to the API base URL. Leave blank to disable discovery and use a manual model ID.",
"manual": "Enter a model ID manually or save the connection to discover models.",
"manualFallback": "Discovery is unavailable. You can still enter a model ID manually.",
"saveConnectionFirst": "Save the provider connection before choosing a model.",
"discovering": "Refreshing the models available from this provider…",
"discovered": "{count, plural, one {Discovered # model. Tool support depends on the selected endpoint and model.} other {Discovered # models. Tool support depends on the selected endpoint and model.}}",
"discoveryFailed": "Model discovery did not complete",
"context": "{count} context window",
"toolsConfirmed": "Tools advertised",
"toolsUnknown": "Verify tool support"
},
"serverTools": {
"title": "Server tools",
"webSearch": {
"label": "Web search",
"description": "Allow the model to search the live web through OpenRouter when a request needs current information. Search usage is charged separately by OpenRouter.",
"proxyDescription": "Send OpenRouter's web-search server tool to this endpoint. Enable this only when the custom endpoint forwards the OpenRouter server-tools format, such as a Homarr Router proxy.",
"limit": "The model decides when to search, with a limit of 3 searches and 5 results per search for each request."
}
},
"enabled": {
"label": "Enable Assistant",
"description": "Shows the assistant to all signed-in users. Existing Homarr permissions still apply to every internal tool call."
},
"save": "Save assistant",
"notification": {
"connectionSaved": {
"title": "Provider connection saved",
"message": "The endpoint and encrypted credentials are ready for model selection.",
"credentialsCleared": "The endpoint changed, so previous credentials were cleared. Add credentials for the new destination if required."
},
"saved": {
"title": "Assistant settings saved",
"message": "The new model and availability settings are active."
},
"error": {
"title": "Assistant settings could not be saved"
}
}
}
}
},
"tool": {
"tasks": {
"status": {
"idle": "Idle",
"running": "Running",
"error": "Error",
"disabled": "Disabled"
},
"job": {
"iconsUpdater": {
"label": "Icons Updater"
},
"analytics": {
"label": "Analytics"
},
"ping": {
"label": "Pings"
}
},
"interval": {
"seconds": "Every {interval, plural, =1 {second} other {# seconds}}",
"minutes": "Every {interval, plural, =1 {minute} other {# minutes}}",
"hours": "Every {interval, plural, =1 {hour} other {# hours}}",
"midnight": "Every day at midnight",
"weeklyMonday": "Every week on monday",
"update": {
"success": {
"message": "Interval updated successfully"
},
"error": {
"message": "Failed to update interval"
}
}
},
"field": {
"interval": {
"label": "Schedule interval"
},
"lastExecution": {
"label": "Last Execution"
},
"actions": {
"label": "Actions"
}
},
"table": {
"search": "Search {count} tasks..."
},
"refresh": {
"success": {
"message": "Tasks refreshed successfully"
},
"error": {
"message": "Failed to refresh tasks"
}
},
"trigger": {
"success": {
"message": "Task triggered successfully"
},
"error": {
"message": "Failed to trigger task"
}
},
"enable": {
"success": {
"message": "Task enabled successfully"
}
},
"disable": {
"success": {
"message": "Task disabled successfully"
}
},
"toggle": {
"error": {
"message": "Failed to toggle task status"
}
}
},
"api": {
"modal": {
"createApiToken": {
"title": "API token created",
"description": "API token was created. Be careful, this token is encrypted in the database and will never be transferred again to you. If you loose this token, you'll no longer be able to retrieve this specific token.",
"button": "Copy and close"
}
},
"tab": {
"documentation": {
"label": "Documentation"
},
"apiKey": {
"label": "Authentication",
"title": "API Keys",
"button": {
"createApiToken": "Create API token"
},
"modal": {
"delete": {
"title": "Delete API token",
"text": "This will permanently delete the API token. API clients using this token can no longer authenticate and perform API requests. This action cannot be undone."
}
},
"table": {
"header": {
"createdBy": "Created by",
"actions": "Actions"
}
}
},
"mcp": {
"label": "AI / MCP",
"title": "AI Integration",
"subtitle": "Model Context Protocol (MCP) Server",
"description": "Connect AI assistants to your Homarr instance and control your entire homelab through natural language. Search and request media on Overseerr, manage Docker containers, toggle Pi-hole, check server health, control Home Assistant devices, and more — all from your AI assistant.",
"noApiKey": "You need an API key to authenticate with the MCP server.",
"createApiKeyButton": "Create API Key",
"endpoint": {
"title": "MCP Endpoint"
},
"authentication": {
"title": "Authentication",
"intro": "You can authenticate with your MCP server using either an API key or OAuth. Both methods grant the same level of access.",
"apiKey": {
"title": "API Key (manual)",
"description": "Pass the ApiKey header with your full API key in the MCP client configuration."
},
"oauth": {
"title": "OAuth (browser login)",
"description": "Clients that support OAuth (such as Claude Code, opencode, or Cursor) can authenticate by opening a browser window. Run the auth command in your client, log in to Homarr in the browser, and you're connected — an API key is created automatically.",
"hint": "OAuth tokens appear as regular API keys in the Authentication tab. You can revoke them at any time."
},
"permissions": "The API key determines the permissions available to the AI — it operates with the same access level as the key owner."
},
"clientConfig": {
"title": "Client Configuration",
"streamableHttp": {
"recommended": "Recommended",
"title": "Streamable HTTP",
"worksWith": "Works with: Cursor, Claude Desktop, VS Code Copilot, Windsurf, Claude Code",
"addToConfig": "Add to your MCP client configuration file:",
"cursor": "{name}: {file} in your project or global settings",
"claudeDesktop": "{name}: {file}",
"claudeCode": "{name}: {file} or use {command}",
"vsCodeCopilot": "{name}: {file} in workspace settings",
"replaceHint": "Replace the placeholder with the API key you received when creating it."
},
"stdio": {
"title": "stdio (legacy clients via mcp-remote bridge)",
"description": "For clients that only support stdio transport. Requires {dependency} (Node.js) installed locally:"
}
},
"testConnection": {
"title": "Test Your Connection",
"description": "Run this in your terminal to verify the endpoint is reachable and your API key works:",
"hint": "A successful response returns the MCP server capabilities. If you see an error, check the JSON response for hints."
},
"availableTools": {
"title": "Available Tools",
"description": "{count} tools available. Expand a category to see individual tools and their descriptions."
}
}
}
},
"backup": {
"title": "Full Database Backup",
"metaTitle": "Backup & Restore",
"export": {
"title": "Export Database",
"description": "Download a full backup of your SQLite database including all settings, users, boards, and encrypted integration secrets. The backup is bundled as a ZIP file with the encryption key and metadata.",
"button": "Download Backup",
"error": "Export failed",
"confirm": {
"title": "Sensitive data export",
"warningTitle": "This export contains your entire database.",
"warningBody": "The backup includes all users, integration secrets (encrypted), API keys, board configurations, and app data. Store the exported file securely and do not share it.",
"submit": "Export Database"
}
},
"import": {
"title": "Restore Database",
"description": "Upload a previously exported backup ZIP to restore your database. This will replace your entire database. If the backup was created with a different encryption key, secrets will be automatically re-encrypted."
},
"restore": {
"dropzone": {
"title": "Drop your backup ZIP here",
"description": "Accepts .zip files from a Homarr SQLite backup (max 256 MB)"
},
"analyzing": "Analyzing backup...",
"changeFile": "Change file",
"continueToRestore": "Continue to restore",
"analysisError": "Analysis Error",
"preview": {
"title": "Backup Contents",
"exported": "Exported {date}",
"entity": "Entity",
"count": "Count",
"entities": {
"item": "Widgets"
},
"migrationsApplied": "{count} migration applied",
"migrationsAppliedPlural": "{count} migrations applied",
"migrationsOlderVersion": "This backup was from an older Homarr version. {count} schema migration was applied to bring it up to date.",
"migrationsOlderVersionPlural": "This backup was from an older Homarr version. {count} schema migrations were applied to bring it up to date.",
"migrationsUpToDate": "Database schema is up to date ({count} migrations applied)",
"migrationsPending": "{count} pending"
},
"migration": {
"title": "Applying migrations ({current}/{total})",
"migrationLabel": "Migration {index}"
},
"confirm": {
"title": "Destructive action",
"warningTitle": "This will permanently replace your entire database.",
"warningBody": "All current boards, users, apps, integrations, settings, and sessions will be lost. This action cannot be undone. The application will restart after the restore.",
"submit": "Restore Database"
},
"progress": {
"title": "Restoring database...",
"restarting": "Restarting server"
},
"timeout": {
"title": "Server did not come back online",
"message": "The database restore finished, but Homarr did not become ready again. Retry the connection check or refresh this page manually."
},
"failed": {
"title": "Restore Failed"
},
"invalidMissingMetadata": "Invalid backup: missing metadata.json",
"invalidMissingDb": "Invalid backup: missing db.sqlite",
"analyzeError": "Failed to analyze backup"
},
"confirm": {
"typePrompt": "Type \"{phrase}\" to continue"
}
}
},
"about": {
"version": "Version {version}",
"text": "Homarr is a community driven open source project that is being maintained by volunteers. Thanks to these people, Homarr has been a growing project since 2021. Our team is working completely remote from many different countries on Homarr in their leisure time for no compensation.",
"accordion": {
"contributors": {
"title": "Contributors",
"subtitle": "{count} maintaining code & Homarr"
},
"translators": {
"title": "Translators",
"subtitle": "{count} contributing translations in many languages"
},
"sponsors": {
"title": "Sponsors",
"subtitle": "{count} supporting the project financially"
},
"libraries": {
"title": "Libraries",
"subtitle": "{count} used in the Code of Homarr"
},
"hotkeys": {
"title": "Hotkeys",
"subtitle": "Keyboard shortcuts to enhance your workflow",
"field": {
"shortcut": "Shortcut",
"action": "Action"
},
"action": {
"toggleBoardEdit": "Toggle board edit mode",
"toggleColorScheme": "Toggle light/dark mode",
"saveNotebook": "Save notebook (only inside notebook widget)",
"openSpotlight": "Open search",
"openSpotlightApps": "Open app search",
"openSpotlightAssistant": "Open Assistant mode",
"openSpotlightPreferences": "Open preferences mode",
"openAssistant": "Open Assistant"
},
"note": "Tip: Mod refers to both Ctrl key and ⌘ key on macOS"
}
}
}
}
},
"docker": {
"title": "Containers",
"reconciliation": {
"title": "Assisted Docker setup",
"suggestions": "{count, plural, =0 {No suggestions} one {# suggestion} other {# suggestions}}",
"attention": "{count} need attention",
"endpointUnavailable": "Some services could not be checked because these endpoints are unavailable: {names}",
"empty": "No visible Docker services were found.",
"emptyFilter": "No services match this view.",
"ambiguous": "More than one existing item could match this service. Homarr will not choose one automatically.",
"filter": {
"attention": "Needs attention",
"represented": "Already set up",
"all": "All"
},
"state": {
"newRecognized": "Ready to connect",
"newApp": "New service",
"represented": "Already represented",
"linked": "Linked",
"moved": "Address changed"
},
"url": {
"manual": "Enter an address manually"
},
"health": {
"layer": {
"docker": "Docker",
"integrationConfiguration": "Integration",
"authentication": "Authentication",
"apiRequest": "API",
"appRepresentation": "App",
"widgetConfiguration": "Widget",
"widgetQuery": "Widget query"
},
"status": {
"available": "Available",
"configured": "Configured",
"linked": "Linked",
"missing": "Missing",
"changed": "Changed",
"unused": "Not used",
"notApplicable": "Not applicable",
"notObserved": "Not observed"
}
},
"action": {
"review": "Review",
"dismiss": "Dismiss",
"restoreDismissed": "Restore dismissed ({count})",
"setupIntegration": "Set up integration",
"reviewIntegration": "Review integration",
"viewRepresentation": "View setup"
},
"loadError": {
"title": "Docker setup assistant could not be loaded",
"message": "Docker service information is unavailable. Try again without leaving this page."
}
},
"table": {
"updated": "Updated {when}",
"refresh": {
"lastUpdated": "Last refresh {when}"
},
"search": "Seach {count} containers",
"selected": "{selectCount} of {totalCount} containers selected",
"footer": "Total {count} containers",
"totalCpu": "Total CPU: {cpu}%",
"totalMemory": "Total Mem: {memory}"
},
"field": {
"state": {
"label": "State",
"option": {
"created": "Created",
"running": "Running",
"paused": "Paused",
"restarting": "Restarting",
"exited": "Exited",
"removing": "Removing",
"dead": "Dead"
}
},
"stats": {
"memory": {
"label": "Memory"
}
},
"containerImage": {
"label": "Image"
},
"ports": {
"label": "Ports"
},
"host": {
"label": "Host"
}
},
"action": {
"title": "Actions",
"logs": {
"label": "View logs",
"page": {
"title": "{name} logs"
}
},
"start": {
"label": "Start",
"notification": {
"success": {
"title": "Containers started",
"message": "The containers were started successfully"
},
"error": {
"title": "Containers not started",
"message": "The containers could not be started"
}
}
},
"stop": {
"label": "Stop",
"notification": {
"success": {
"title": "Containers stopped",
"message": "The containers were stopped successfully"
},
"error": {
"title": "Containers not stopped",
"message": "The containers could not be stopped"
}
}
},
"restart": {
"label": "Restart",
"notification": {
"success": {
"title": "Containers restarted",
"message": "The containers were restarted successfully"
},
"error": {
"title": "Containers not restarted",
"message": "The containers could not be restarted"
}
}
},
"remove": {
"confirm": "Click again to remove permanently",
"confirmation": {
"title": "{count, plural, one {Remove # container?} other {Remove # containers?}}",
"message": "{count, plural, one {This permanently removes # container: {names}} other {This permanently removes # containers: {names}}}"
},
"notification": {
"success": {
"title": "Containers removed",
"message": "The containers were removed successfully"
},
"error": {
"title": "Containers not removed",
"message": "The containers could not be removed"
}
}
},
"result": {
"failure": {
"title": "Some container actions failed",
"message": "{total, plural, one {{failed} of # action failed: {names}} other {{failed} of # actions failed: {names}}}"
}
},
"refresh": {
"notification": {
"success": {
"title": "Containers refreshed",
"message": "You are now viewing the most recent data"
},
"error": {
"title": "Containers not refreshed",
"message": "Something went wrong while refreshing the containers"
}
}
},
"addToHomarr": {
"label": "Add to Homarr",
"notification": {
"success": {
"title": "Added to Homarr",
"message": "Selected apps have been added to Homarr"
},
"error": {
"title": "Could not add to Homarr",
"message": "Selected apps could not be added to Homarr"
}
},
"modal": {
"title": "Add docker container(-s) to Homarr"
}
}
},
"error": {
"internalServerError": "Failed to fetch Docker containers",
"endpointUnavailable": "{count, plural, one {# Docker endpoint unavailable: {names}} other {# Docker endpoints unavailable: {names}}}",
"noColumns": "Select at least one column in the widget settings"
}
},
"kubernetes": {
"context": {
"label": "Kubernetes context",
"loadError": {
"title": "Kubernetes contexts could not be loaded",
"message": "Context information is unavailable. Try again without leaving this page."
},
"status": {
"available": "Available",
"degraded": "Metrics unavailable",
"unavailable": "Unavailable"
},
"unavailable": "This Kubernetes context cannot be reached. Select another context or verify its credentials and endpoint.",
"metricsUnavailable": "This context is reachable, but Metrics Server is unavailable. Inventory remains available without live CPU and memory usage."
},
"cluster": {
"title": "Cluster Dashboard",
"label": "Cluster",
"providers": "Providers",
"version": "Version",
"capacity": {
"title": "Capacity",
"metricsUnavailable": "Metrics Server is unavailable. Inventory and reserved capacity remain visible, but live CPU and memory usage cannot be shown.",
"resource": {
"reserved": "Reserved",
"used": "Used"
}
},
"resources": {
"title": "Resources",
"nodes": "Nodes",
"namespaces": "Namespaces",
"ingresses": "Ingresses",
"services": "Services",
"pods": "Pods",
"configmaps": "ConfigMaps",
"secrets": "Secrets",
"volumes": "Volumes"
}
},
"nodes": {
"field": {
"metricsUnavailable": "Unavailable",
"kubernetesVersion": {
"label": "Kubernetes version"
}
},
"table": {
"search": "Search {count} nodes"
}
},
"namespaces": {
"table": {
"search": "Search {count} namespaces"
}
},
"ingresses": {
"field": {
"className": {
"label": "Class name"
},
"rulesAndPaths": {
"label": "Rules & paths"
}
},
"table": {
"search": "Search {count} ingresses"
}
},
"services": {
"field": {
"ports": {
"label": "Ports"
},
"targetPorts": {
"label": "Target ports"
},
"clusterIP": {
"label": "Cluster IP"
}
},
"table": {
"search": "Search {count} services"
}
},
"pods": {
"field": {
"image": {
"label": "Image"
},
"applicationType": {
"label": "Application type"
}
},
"table": {
"search": "Search {count} pods"
}
},
"secrets": {
"table": {
"search": "Search {count} secrets"
}
},
"configmaps": {
"table": {
"search": "Search {count} configMaps"
}
},
"volumes": {
"field": {
"accessModes": {
"label": "Access Modes"
},
"storage": {
"label": "Storage"
},
"storageClassName": {
"label": "Storage Class Name"
},
"volumeMode": {
"label": "Volume Mode"
},
"volumeName": {
"label": "Volume Name"
}
},
"table": {
"search": "Search {count} volumes"
}
},
"error": {
"internalServerError": "Failed to fetch Kubernetes data"
},
"field": {
"name": {
"label": "Name"
},
"namespace": {
"label": "Namespace"
},
"creationTimestamp": {
"label": "Created"
},
"state": {
"label": "State"
},
"status": {
"label": "Status"
},
"type": {
"label": "Type"
},
"architecture": {
"label": "Architecture"
}
}
},
"permission": {
"title": "Permissions",
"userSelect": {
"title": "Add user permission"
},
"groupSelect": {
"title": "Add group permission"
},
"tab": {
"user": "Users",
"group": "Groups",
"inherited": "Inherited groups"
},
"field": {
"user": {
"label": "User"
},
"group": {
"label": "Group"
},
"permission": {
"label": "Permission"
}
},
"action": {
"saveUser": "Save user permission",
"saveGroup": "Save group permission"
}
},
"navigationStructure": {
"manage": {
"label": "Manage",
"custom-widgets": {
"edit": {
"flow": {
"label": "Flow"
}
},
"workshop": {
"label": "Workshop"
},
"publish": {
"label": "Publish to Workshop"
}
},
"users": {
"general": "General",
"security": "Security"
},
"tools": {
"label": "Tools",
"kubernetes": {
"nodes": {
"label": "Nodes"
},
"namespaces": {
"label": "Namespaces"
},
"ingresses": {
"label": "Ingresses"
},
"services": {
"label": "Services"
},
"pods": {
"label": "pods"
},
"configmaps": {
"label": "ConfigMaps"
},
"secrets": {
"label": "Secrets"
},
"volumes": {
"label": "Volumes"
}
},
"certificates": {
"hostnames": {
"label": "Hostnames"
}
}
},
"settings": {
"label": "Settings"
},
"about": {
"label": "About"
},
"assistant": {
"label": "Assistant"
}
}
},
"search": {
"placeholder": "Search for anything",
"nothingFound": "Nothing found",
"modePicker": {
"search": {
"label": "Search",
"placeholder": "Search apps, boards, pages, commands, and preferences"
},
"apps": {
"label": "Apps",
"placeholder": "Search apps, boards, and integrations"
},
"command": {
"label": "Commands",
"placeholder": "Search actions and commands"
},
"preferences": {
"label": "Preferences",
"placeholder": "Search and change preferences"
},
"assistant": {
"label": "Assistant",
"placeholder": "Ask Assistant"
},
"external": {
"label": "Web",
"placeholder": "Search with an external search engine"
},
"media": {
"label": "Media",
"placeholder": "Search for a movie or show",
"fallback": "Search media for \"{query}\""
},
"userGroup": {
"label": "People",
"placeholder": "Search users and groups"
},
"continueWith": "Continue with",
"dialogAriaLabel": "{mode} command menu",
"navigationLabel": "Search modes",
"modeAriaLabel": "{mode} mode",
"resultsAriaLabel": "{mode} results",
"footer": {
"navigate": "Navigate",
"open": "Open",
"close": "Close"
}
},
"error": {
"fetch": "An error occurred while fetching data"
},
"mode": {
"appIntegrationBoard": {
"help": "Search for apps, integrations or boards",
"group": {
"app": {
"children": {
"action": {
"open": {
"label": "Open app url"
},
"edit": {
"label": "Edit app"
}
},
"detail": {
"title": "Select an action for the app"
}
}
},
"board": {
"children": {
"action": {
"open": {
"label": "Open board"
},
"homeBoard": {
"label": "Set as home board"
},
"mobileBoard": {
"label": "Set as mobile board"
},
"settings": {
"label": "Open settings"
}
},
"detail": {
"title": "Select an action for the board"
}
}
}
}
},
"command": {
"help": "Activate command mode",
"group": {
"localCommand": {
"title": "Local commands"
},
"globalCommand": {
"title": "Global commands",
"option": {
"create": {
"label": "Create something"
},
"colorScheme": {
"auto": "Toggle appearance mode",
"light": "Switch to light mode",
"dark": "Switch to dark mode"
},
"language": {
"label": "Change language",
"children": {
"detail": {
"title": "Select your prefered language"
}
}
},
"newBoard": {
"label": "Create a new board"
},
"newApp": {
"label": "Create a new app"
},
"newIntegration": {
"label": "Create a new integration",
"children": {
"detail": {
"title": "Select the integration type you want to create"
}
}
},
"newUser": {
"label": "Create a new user"
},
"newInvite": {
"label": "Create a new invite"
},
"newGroup": {
"label": "Create a new group"
}
}
},
"preferences": {
"title": "Preferences",
"children": {
"detail": {
"title": "Select a preference to change",
"backHint": "Press Backspace or use the back button to go back",
"backAction": "Go back"
}
},
"notification": {
"error": {
"message": "Unable to update preference"
}
},
"option": {
"preferences": {
"label": "Open preferences"
},
"boolean": {
"enabled": "Enabled",
"disabled": "Disabled"
},
"board": {
"none": "None",
"unavailable": "Currently selected (unavailable)"
},
"searchEngine": {
"none": "None",
"unavailable": "Currently selected (unavailable)"
},
"colorScheme": {
"label": "Color scheme",
"children": {
"detail": {
"title": "Select your color scheme"
}
}
},
"locale": {
"label": "Language",
"children": {
"detail": {
"title": "Select your preferred language"
}
}
},
"defaultSearchEngineId": {
"children": {
"detail": {
"title": "Select your default search engine"
}
}
},
"openSearchInNewTab": {
"children": {
"detail": {
"title": "Open search results in new tab"
}
}
},
"ddgBangs": {
"children": {
"detail": {
"title": "Enable DuckDuckGo bangs"
}
}
},
"firstDayOfWeek": {
"label": "First day of the week",
"children": {
"detail": {
"title": "Select the first day of the week"
}
}
},
"homeBoardId": {
"label": "Home board",
"children": {
"detail": {
"title": "Select your home board"
}
}
},
"mobileHomeBoardId": {
"label": "Mobile home board",
"children": {
"detail": {
"title": "Select your mobile home board"
}
}
},
"pingIconsEnabled": {
"children": {
"detail": {
"title": "Use icons for pings"
}
}
},
"enableRightClickOnWidgets": {
"children": {
"detail": {
"title": "Enable right-click on widgets"
}
}
},
"fullPreferencesPage": {
"label": "Open full preferences page"
}
}
}
}
},
"media": {
"help": "Search for movies or shows to request",
"requestMovie": "Request movie",
"requestSeries": "Request series",
"openIn": "Open in {kind}",
"group": {
"title": "Movies and shows"
},
"action": {
"search": {
"label": "Search for movies or shows",
"description": "Start typing to search your media request integrations",
"disabled": {
"noIntegration": "Add an Overseerr, Jellyseerr, or Seerr integration to enable media search.",
"signInRequired": "Sign in to search media request integrations.",
"scoped": "This widget does not have an accessible media request integration."
}
}
},
"availability": {
"available": "Available",
"partiallyAvailable": "Partial",
"processing": "Processing",
"requested": "Requested",
"pending": "Requested"
}
},
"external": {
"help": "Use an external search engine",
"group": {
"searchEngine": {
"tipDdgBangs": "Tip: You can use any DuckDuckGo bangs here as well, e.g. !something",
"bang": {
"searchWithQuery": "Search \"{query}\" with {label}",
"pressEnterToOpen": "Press Enter to open",
"engineSelected": "{label} selected (!{bang})",
"typeQueryToContinue": "Type your search query to continue",
"emptyBangHint": "Type a bang, e.g. !yt, then press Space to select"
},
"children": {
"action": {
"search": {
"label": "Search with {name}"
}
},
"detail": {
"title": "Select an action for the search engine"
},
"searchResults": {
"title": "Select a search result for actions"
}
},
"option": {
"google": {
"name": "Google",
"description": "Search the web with Google"
},
"bing": {
"name": "Bing",
"description": "Search the web with Bing"
},
"duckduckgo": {
"name": "DuckDuckGo",
"description": "Search the web with DuckDuckGo"
},
"torrent": {
"name": "Torrents",
"description": "Search for torrents on torrentdownloads.pro"
},
"youTube": {
"name": "YouTube",
"description": "Search for videos on YouTube"
}
}
}
}
},
"help": {
"group": {
"mode": {
"title": "Modes"
}
}
},
"home": {
"group": {
"search": {
"title": "Search",
"option": {
"other": {
"label": "Search with another search engine"
},
"no-engines": {
"label": "No search engines configured",
"descriptionCreate": "Add a search engine to search from the command menu",
"descriptionUnavailable": "Ask an administrator to configure a search engine"
},
"search": {
"label": "Search for \"{query}\" with {name}"
},
"from-integration": {
"description": "Start typing to search"
}
}
},
"local": {
"title": "Local results"
}
}
},
"page": {
"help": "Search for pages",
"group": {
"page": {
"title": "Pages",
"option": {
"manageHome": {
"label": "Manage home page"
},
"manageBoard": {
"label": "Manage boards"
},
"manageApp": {
"label": "Manage apps"
},
"manageIntegration": {
"label": "Manage integrations"
},
"manageSearchEngine": {
"label": "Manage search engines"
},
"manageMedia": {
"label": "Manage medias"
},
"manageUser": {
"label": "Manage users"
},
"manageInvite": {
"label": "Manage invites"
},
"manageGroup": {
"label": "Manage groups"
},
"manageDocker": {
"label": "Manage docker"
},
"manageApi": {
"label": "Swagger API"
},
"manageLog": {
"label": "View logs"
},
"manageTask": {
"label": "Manage tasks"
},
"manageSettings": {
"label": "Global settings"
},
"about": {
"label": "About"
},
"homeBoard": {
"label": "Home board"
},
"preferences": {
"label": "Your preferences"
}
}
}
}
},
"userGroup": {
"help": "Search for users or groups",
"group": {
"user": {
"children": {
"action": {
"detail": {
"label": "Show user details"
}
},
"detail": {
"title": "Select an action for the user"
}
}
},
"group": {
"children": {
"action": {
"detail": {
"label": "Show group details"
},
"manageMember": {
"label": "Manage members"
},
"managePermission": {
"label": "Manage permissions"
}
},
"detail": {
"title": "Select an action for the group"
}
}
}
}
}
},
"engine": {
"search": "Find a search engine",
"field": {
"short": {
"label": "Short"
},
"urlTemplate": {
"label": "URL search template"
},
"description": {
"label": "Description"
}
},
"page": {
"list": {
"ariaLabel": "Configured search engines",
"noResults": {
"title": "There are no search engines yet",
"description": "Search engines let Spotlight send a query to a site or connected service.",
"action": "Create your first search engine",
"filteredTitle": "No search engines match your search",
"filteredDescription": "No search engines match \"{search}\". Try another name or URL."
},
"interactive": "Interactive, uses an integration",
"type": {
"generic": "URL template",
"fromIntegration": "Integration"
}
},
"create": {
"title": "New search engine",
"notification": {
"success": {
"title": "Search engine created",
"message": "The search engine was created successfully"
},
"error": {
"title": "Search engine not created",
"message": "The search engine could not be created"
}
}
},
"edit": {
"title": "Edit search engine",
"notification": {
"success": {
"message": "The search engine was saved successfully"
},
"error": {
"message": "The search engine could not be saved"
}
},
"configControl": "Configuration",
"searchEngineType": {
"generic": "Generic",
"fromIntegration": "From integration"
}
},
"delete": {
"title": "Delete search engine",
"message": "Are you sure you want to delete the search engine {name}?",
"notification": {
"success": {
"title": "Search engine deleted",
"message": "The search engine was deleted successfully"
},
"error": {
"title": "Search engine not deleted",
"message": "The search engine could not be deleted"
}
}
}
},
"media": {
"request": {
"modal": {
"title": "Request \"{name}\"",
"table": {
"header": {
"season": "Season",
"episodes": "Episodes",
"status": "Status"
},
"status": {
"requested": "Requested"
}
},
"button": {
"send": "Send request"
}
}
}
}
}
},
"certificate": {
"field": {
"hostname": {
"label": "Hostname"
},
"subject": {
"label": "Subject"
},
"issuer": {
"label": "Issuer"
},
"validFrom": {
"label": "Valid from"
},
"validTo": {
"label": "Valid to"
},
"serialNumber": {
"label": "Serial number"
},
"fingerprint": {
"label": "Fingerprint"
}
},
"page": {
"list": {
"title": "Trusted certificates",
"description": "Used by Homarr to request data from integrations.",
"noResults": {
"title": "There are no certificates yet"
},
"invalid": {
"title": "Invalid certificate",
"description": "Failed to parse certificate"
},
"expires": "Expires {when}",
"toHostnames": "Trusted hostnames"
},
"hostnames": {
"title": "Trusted certificate hostnames",
"description": "Some certificates do not allow the specific domain Homarr uses to request them, because of this all trusted hostnames with their certificate thumbprints are used to bypass these restrictions.",
"noResults": {
"title": "There are no hostnames yet"
},
"toCertificates": "Certificates"
}
},
"action": {
"create": {
"label": "Add certificate",
"notification": {
"success": {
"title": "Certificate added",
"message": "The certificate was added successfully"
},
"error": {
"title": "Failed to add certificate",
"message": "The certificate could not be added"
}
}
},
"remove": {
"label": "Remove certificate",
"confirm": "Are you sure you want to remove the certificate?",
"notification": {
"success": {
"title": "Certificate removed",
"message": "The certificate was removed successfully"
},
"error": {
"title": "Certificate not removed",
"message": "The certificate could not be removed"
}
}
},
"removeHostname": {
"label": "Remove trusted hostname",
"confirm": "Are you sure you want to remove this trusted hostname? This can cause some integrations to stop working.",
"notification": {
"success": {
"title": "Hostname removed",
"message": "The hostname was removed successfully"
},
"error": {
"title": "Hostname not removed",
"message": "The hostname could not be removed"
}
}
}
}
},
"log": {
"context": {
"widgetError": "Widget reported an error around this time",
"expiredWidgetError": "Logs around this widget error are no longer retained"
},
"level": {
"option": {
"debug": "Debug",
"info": "Info",
"warn": "Warn",
"error": "Error"
}
}
},
"onboardingTour": {
"learnMore": "Read the docs",
"prev": "Back",
"done": "Done",
"skip": "Skip tour",
"manage": {
"welcome": {
"title": "Welcome to Homarr!",
"description": "This is your control center. From here you manage boards, apps, integrations, users, and server settings. Let's take a tour of each section."
},
"boardsList": {
"title": "Your Boards",
"description": "Here are all your dashboards. Each board has its own layout, background, and access settings. You can see who created each one and whether it's public or private."
},
"boardsCreate": {
"title": "Create a Board",
"description": "Click here to create a new dashboard or import one from a previous Homarr installation. Each board gets its own URL you can share."
},
"appsList": {
"title": "Your Apps",
"description": "These are all the apps you've added — links to your self-hosted services. Each app has an icon, optional health check, and a status badge on the dashboard."
},
"appsCreate": {
"title": "Add an App",
"description": "Register a new service here. Give it a name, URL, and icon — it will appear as a tile on your boards with live status monitoring."
},
"integrationsList": {
"title": "Your Integrations",
"description": "These are the services connected to Homarr. All credentials are encrypted at rest."
},
"integrationsCreate": {
"title": "Add an Integration",
"description": "Connect a new service here. Pick the type, enter the URL and API key — Homarr validates the connection before saving."
},
"usersList": {
"title": "Your Users",
"description": "See everyone who has access. Organize users into groups and control who can view or edit each board."
},
"usersCreate": {
"title": "Create a User",
"description": "Add a new user account here. You can also use invite links for easy onboarding. That's the tour — you're all set!"
}
},
"board": {
"welcome": {
"title": "This is your board",
"description": "A drag-and-drop dashboard where you arrange apps and widgets. Press Ctrl+K anytime to search for apps, boards, and actions."
},
"editMode": {
"title": "Edit Mode",
"description": "Click here to enter edit mode. You can then add widgets, apps, and sections — drag to reposition, resize with the corner handle. Click again to save your changes."
},
"settings": {
"title": "Board Settings",
"description": "Change this board's name, columns, background, colors, and who can access it. Each board can be public or private."
},
"switcher": {
"title": "Switch Boards",
"description": "Jump between boards. Create separate dashboards for different purposes — media, networking, per-user, or anything you like."
},
"userMenu": {
"title": "Your Profile",
"description": "Change your color scheme, language, home board, and preferences. You can also jump to the management area from here."
}
}
},
"metadata": {
"description": "A self-hosted dashboard for the *arr stack and your entire homelab. Integrates with 50+ services, real-time widgets, no config files.",
"dashboardTitle": "{appName} Dashboard"
},
"assistant": {
"title": "Assistant",
"open": "Open Assistant",
"close": "Close assistant",
"minimize": "Minimize assistant",
"spotlight": "Ask Assistant",
"spotlightDescription": "Type and send a prompt without leaving the command menu.",
"spotlightPrompt": {
"title": "Ask Assistant",
"description": "Type a prompt above. Enter sends it in the background.",
"send": "Send prompt",
"empty": "Type a prompt above"
},
"unavailable": {
"checking": "Checking whether the assistant is available…",
"error": "The assistant's availability could not be checked. Try again.",
"notConfigured": "An administrator must configure and enable the assistant first.",
"signIn": "Sign in to use Assistant."
},
"newConversation": "New conversation",
"conversations": "Conversations",
"conversationActions": "Conversation actions",
"searchConversations": "Search conversations",
"noMatchingConversations": "No matching conversations",
"moreActions": "More response actions",
"renameConversation": {
"action": "Rename",
"label": "Conversation name",
"save": "Save name",
"failedTitle": "Conversation could not be renamed",
"failedDescription": "Homarr could not rename this conversation. Try again."
},
"deleteConversation": {
"title": "Delete conversation?",
"description": "“{title}” and its messages will be permanently deleted.",
"failedTitle": "Conversation could not be deleted",
"failedDescription": "Homarr could not delete this conversation. Try again."
},
"closeHistory": "Close conversation history",
"openHistory": "Open conversation history",
"emptyTitle": "What can I help with?",
"emptyDescription": "Ask about your Homarr setup, inspect live instance data, or approve actions when you want me to make a change.",
"suggestions": {
"health": {
"label": "Check service health",
"prompt": "Check my integrations and summarize anything that needs attention."
},
"explore": {
"label": "Explore my Homarr",
"prompt": "Show me what I can view and manage in this Homarr instance."
},
"media": {
"label": "Find media to request",
"prompt": "Help me find a movie or series to request."
},
"style": {
"label": "Improve a dashboard",
"prompt": "Help me improve a board's appearance or custom CSS. Show me my boards first, then preserve my current settings while we make the change."
}
},
"composerPlaceholder": "Ask Assistant…",
"runtime": {
"model": "Model",
"searchModels": "Search models",
"noModels": "No models available",
"otherModels": "Other models",
"imageInput": "Accepts image input",
"thinking": "Thinking mode",
"reasoning": {
"auto": "Auto",
"none": "Off",
"minimal": "Minimal",
"low": "Low",
"medium": "Medium",
"high": "High"
}
},
"providerQuota": {
"title": "Homarr provider",
"communityWorkshop": "Community Workshop",
"dailyAllowance": "Daily request allowance",
"remainingLabel": "{remaining} of {limit} Homarr provider requests remaining",
"loading": "Loading Homarr provider allowance",
"signInRequired": "Workshop sign-in required for the Homarr provider",
"signInDescription": "Sign in with GitHub through the Community Workshop to receive your separate daily allowance.",
"exhaustedDescription": "Your Homarr provider allowance is used for today. It resets at midnight UTC.",
"unavailableDescription": "Sign in to the Workshop or wait for your Homarr provider allowance to reset.",
"signIn": "Sign in with GitHub",
"signInError": "GitHub sign-in failed. Try again in a moment.",
"loadError": "The Homarr provider allowance could not be loaded.",
"reset": "Resets {relative} at <time></time>",
"toolCalls": "Each model request and completed tool call uses one request.",
"retry": "Reload allowance",
"level": {
"ok": "OK",
"warning": "Warning",
"bad": "Low",
"dead": "Used"
}
},
"stop": "Stop response",
"send": "Send message",
"copy": "Copy response",
"copyMessage": "Copy message",
"editMessage": "Edit message",
"updateMessage": "Update message",
"regenerate": "Regenerate response",
"helpful": "Helpful",
"notHelpful": "Not helpful",
"readAloud": "Read response aloud",
"stopReading": "Stop reading response",
"feedbackError": "Your feedback could not be saved. Try again.",
"exportMarkdown": "Export as Markdown",
"exportConversation": {
"action": "Export conversation as Markdown",
"failedTitle": "Conversation could not be exported",
"failedDescription": "Homarr could not load this conversation. Try again."
},
"reasoning": "Thinking",
"previousResponse": "Previous response",
"nextResponse": "Next response",
"removeAttachment": "Remove attachment",
"downloadFile": "Download {name}",
"attachedImage": "Attached image",
"externalImageBlocked": "External image blocked for privacy",
"image": {
"loading": "Loading image",
"failed": "This image could not be loaded.",
"retry": "Try image again"
},
"quoteSelection": "Quote",
"dismissQuote": "Remove quote",
"attachments": {
"add": "Attach an image or document",
"errorTitle": "Attachment could not be added",
"imageUnsupported": "The selected model does not support image input."
},
"mentions": {
"menu": "Add Homarr context",
"context": "Context",
"app": "Apps",
"integration": "Integrations",
"board": "Boards",
"widget": "Widgets",
"tools": "Available tools"
},
"markdown": {
"diagram": "Diagram",
"renderingDiagram": "Rendering diagram…",
"diagramUnavailable": "This diagram could not be rendered."
},
"commands": {
"menu": "Assistant commands",
"health": "Prepare a service-health check",
"explore": "Prepare an overview of this Homarr instance",
"media": "Prepare a media search",
"style": "Prepare a board appearance or custom CSS change"
},
"usage": {
"tokens": "tokens",
"contextWindow": "Context window",
"requestDetails": "Request details",
"used": "Used",
"remaining": "Remaining",
"capacity": "Capacity",
"input": "Input",
"output": "Output",
"cached": "Cached input",
"cacheWrite": "Cache write",
"reasoning": "Reasoning",
"inputShort": "in",
"outputShort": "out",
"cachedShort": "cached",
"reasoningShort": "reasoning",
"firstOutput": "First output",
"homarrTiming": "Homarr observed",
"endToEnd": "End to end",
"observedThroughput": "Observed throughput",
"providerTiming": "Provider reported",
"loadingProviderDetails": "Loading generation details…",
"providerDetailsPending": "OpenRouter is still processing some generation details. Reopen to retry.",
"providerLatency": "Provider latency",
"generationTime": "Generation time",
"moderationLatency": "Moderation",
"providerThroughput": "Provider throughput",
"fallbacks": "Fallbacks",
"fallbackLatency": "Fallback latency",
"cacheDiscount": "Cache discount",
"normalizedTokens": "OpenRouter normalized input / output",
"byok": "BYOK",
"cost": "Cost",
"reported": "Reported by provider",
"estimated": "Estimated from model pricing",
"upstreamCost": "Upstream inference",
"webSearches": "Web searches",
"finishReason": "Finish reason",
"notReported": "Not reported",
"agentSteps": "Agent steps",
"step": "Step {number}",
"generation": "Generation"
},
"toolInput": "Input",
"toolOutput": "Output",
"toolActivity": {
"iconSearch": "Looking for “{query}” icons",
"iconBrowse": "Browsing available icons"
},
"toolNavigation": {
"openPreview": "Open preview",
"openWidget": "Open widget"
},
"webSearch": {
"title": "Web search",
"completed": "OpenRouter searched the live web for this response.",
"searches": "{count, plural, one {# search} other {# searches}}",
"sources": "{count, plural, one {# source} other {# sources}}"
},
"responseError": {
"title": "The assistant could not finish",
"description": "Try again. If the problem continues, ask an administrator to verify the configured model endpoint."
},
"toolPreparationError": {
"title": "This request could not be prepared",
"description": "The model stopped before it supplied complete details. Retry the response or describe the request again. No change was made."
},
"busy": {
"title": "The assistant is already working",
"description": "Wait for the current response or open it to stop the run."
},
"pendingAction": {
"answerTitle": "Answer needed",
"answerFallback": "Choose an answer to continue",
"formTitle": "Review app details",
"boardFormTitle": "Review board changes",
"review": "Review",
"sendBlocked": "Resolve the pending request before sending"
},
"activity": {
"thinking": "Assistant is thinking",
"working": "Working on your prompt",
"ready": "Response ready",
"completed": "Open the response",
"approval": "Approval needed",
"failed": "Assistant needs attention",
"expand": "Open the assistant response",
"dismiss": "Dismiss assistant activity"
},
"scrollToLatest": "Scroll to latest",
"refresh": {
"action": "Refresh current view",
"working": "Refreshing current view",
"completeTitle": "View refreshed",
"completeDescription": "Visible Homarr data has been reloaded.",
"failedTitle": "View could not be refreshed",
"failedDescription": "The change may still be saved. Try the refresh action again."
},
"askUser": {
"preparing": "Preparing question",
"answered": "Your answer",
"other": "Other",
"otherLabel": "Your answer",
"otherPlaceholder": "Type another answer…",
"submit": "Send answer",
"cancelOther": "Cancel other answer",
"optionKind": {
"affirmative": "Confirm",
"negative": "Decline",
"alternative": "Option",
"custom": "Custom"
}
},
"configureApp": {
"title": "Review app details",
"description": "Choose a local icon and adjust anything before the assistant requests creation approval.",
"preparing": "Preparing app details",
"continue": "Use these details",
"ready": "App details ready",
"automaticContinue": "Using these app details automatically"
},
"configureBoardSettings": {
"title": "Review board changes",
"loading": "Loading current board settings",
"loadErrorTitle": "Board settings could not be loaded",
"loadErrorDescription": "The board may no longer exist, or you may not have permission to modify it.",
"proposedCount": "Assistant proposed {count} fields",
"changeCount": "{count} changes ready",
"ready": "Board changes ready",
"cancelled": "Current board settings kept",
"noChanges": "No settings will change",
"keepCurrent": "Keep current settings",
"continue": "Continue to approval",
"automaticContinue": "Accepting the proposed board changes automatically",
"resetAll": "Reset all changes",
"tabs": {
"css": "Custom CSS",
"appearance": "Appearance",
"background": "Background",
"general": "General"
},
"cssDescription": "Edit the complete stylesheet. Existing rules are kept unless they are removed here.",
"cssCharacters": "{count} of 16384 characters",
"copyCss": "Copy CSS",
"copied": "Copied",
"restoreCss": "Restore current CSS",
"remoteCssTitle": "This CSS loads a remote resource",
"remoteCssDescription": "Imported stylesheets and remote URLs contact another server when the board loads. Review them before continuing."
},
"configureWidget": {
"title": "Review widget",
"preparing": "Preparing widget settings",
"review": "Review widget and integrations",
"ready": "Widget configuration ready",
"cancelled": "Widget was not added",
"automaticContinue": "Accepting the proposed widget configuration automatically",
"definitionLoadErrorTitle": "Widget settings could not be loaded",
"definitionLoadErrorDescription": "Homarr could not load this widget's settings. Try again.",
"loadErrorTitle": "Integrations could not be loaded",
"loadErrorDescription": "Homarr could not load the integrations available for this widget.",
"noIntegrationTitle": "A compatible integration is required",
"noIntegrationDescription": "Configure an integration supported by this widget before adding it to the dashboard.",
"connectIntegration": "Connect service",
"manageIntegrations": "Manage integrations",
"skip": "Do not add",
"errorTitle": "Widget settings could not be prepared",
"errorDescription": "The model did not provide a complete widget configuration. No widget was added."
},
"approvalRequired": "Approval required",
"complete": "Complete",
"denied": "Denied",
"failed": "Failed",
"working": "Working",
"approvalDescription": "Review this change before it runs.",
"approveAndRun": "Approve and run",
"deny": "Deny",
"autoApproval": {
"label": "Automatic approvals",
"title": "Automatic approvals",
"description": "Automatically prepare forms and approve protected changes for this conversation. Questions still wait for your answer, and your Homarr permissions still apply. This turns off when you switch conversations.",
"enable": "Enable for this conversation",
"disable": "Turn off automatic approvals",
"enabled": "Automatic approvals are on",
"approving": "Approving automatically"
}
}
}