7639 lines
248 KiB
JSON
7639 lines
248 KiB
JSON
{
|
|
"init": {
|
|
"step": {
|
|
"start": {
|
|
"title": "Welcome to Homarr",
|
|
"subtitle": "Let's get started with setting up your Homarr instance.",
|
|
"description": "To get started, please select how you want to set up your Homarr instance.",
|
|
"action": {
|
|
"scratch": "Start from scratch",
|
|
"importOldmarr": "Import from Homarr before 1.0",
|
|
"restoreSqlite": "Restore from SQLite backup",
|
|
"restoreSqliteDescription": "Upload a full SQLite database backup from a previous Homarr instance. This will restore all boards, users, apps, integrations, and settings.",
|
|
"backToOptions": "← Back to setup options"
|
|
}
|
|
},
|
|
"import": {
|
|
"title": "Import data",
|
|
"subtitle": "You can import data from an existing Homarr instance.",
|
|
"dropzone": {
|
|
"title": "Drag the zip file here or click to browse",
|
|
"description": "The uploaded zip will be processed and you'll be able to select what you want to import"
|
|
},
|
|
"fileInfo": {
|
|
"action": {
|
|
"change": "Change file"
|
|
}
|
|
},
|
|
"importSettings": {
|
|
"title": "Import settings",
|
|
"description": "Configure the import behavior"
|
|
},
|
|
"boardSelection": {
|
|
"title": "Found {count} boards",
|
|
"description": "Choose all boards with the size you want to import",
|
|
"action": {
|
|
"selectAll": "Select all",
|
|
"unselectAll": "Unselect all"
|
|
}
|
|
},
|
|
"summary": {
|
|
"title": "Import summary",
|
|
"description": "In the below summary you can see what will be imported",
|
|
"action": {
|
|
"import": "Confirm import and continue"
|
|
},
|
|
"entities": {
|
|
"apps": "Apps",
|
|
"boards": "Boards",
|
|
"integrations": "Integrations",
|
|
"credentialUsers": "Credential users"
|
|
}
|
|
},
|
|
"tokenModal": {
|
|
"title": "Enter import token",
|
|
"field": {
|
|
"token": {
|
|
"label": "Token",
|
|
"description": "Enter the shown import token from your previous homarr instance"
|
|
}
|
|
},
|
|
"notification": {
|
|
"error": {
|
|
"title": "Invalid token",
|
|
"message": "The token you entered is invalid"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"user": {
|
|
"title": "Admin user",
|
|
"subtitle": "Specify the credentials for your administrator user.",
|
|
"notification": {
|
|
"success": {
|
|
"title": "User created",
|
|
"message": "The user was successfully created"
|
|
},
|
|
"error": {
|
|
"title": "User creation failed"
|
|
}
|
|
}
|
|
},
|
|
"group": {
|
|
"title": "External group",
|
|
"subtitle": "Specify the group that should be used for external users.",
|
|
"form": {
|
|
"name": {
|
|
"label": "Group name",
|
|
"description": "Name has to match admin group of external provider"
|
|
}
|
|
}
|
|
},
|
|
"settings": {
|
|
"title": "Settings",
|
|
"subtitle": "Configure server settings."
|
|
},
|
|
"integrations": {
|
|
"title": "Integrations",
|
|
"subtitle": "Select the services you use.",
|
|
"description": "Choose the integrations you'd like to connect. We'll set up your dashboard with matching widgets automatically.",
|
|
"action": {
|
|
"continue": "Continue",
|
|
"skip": "Skip for now"
|
|
},
|
|
"configure": {
|
|
"progress": "{current} of {total}",
|
|
"skip": "Skip this integration",
|
|
"finishing": "Setting up your dashboard...",
|
|
"error": {
|
|
"title": "Setup failed",
|
|
"message": "Something went wrong while setting up your dashboard. Please try again."
|
|
},
|
|
"helpers": {
|
|
"tooltip": "URL helpers",
|
|
"description": "These helpers try to guess the URL for your services. If it doesn't work, just type the address manually."
|
|
}
|
|
},
|
|
"urlTemplate": {
|
|
"label": "Base URL",
|
|
"placeholder": "homelab.local or 192.168.1.1",
|
|
"hint": "Enter your base domain or IP to auto-fill integration URLs",
|
|
"warning": "Setting your base URL now will auto-fill all integration URLs, saving you time during setup",
|
|
"preview": "e.g. {example}",
|
|
"mode": {
|
|
"subdomain": "Subdomain",
|
|
"hostPort": "Host:Port"
|
|
}
|
|
},
|
|
"docker": {
|
|
"detected": "Docker detected {count} services",
|
|
"detectedBreakdown": "{integrations} integrations · {apps} apps",
|
|
"summary": "Homarr detected {apps} apps, {integrations} of which have integrations built-in",
|
|
"appBadge": "App",
|
|
"appSectionLabel": "Apps to add to dashboard ({count} selected)",
|
|
"scanning": "Scanning Docker...",
|
|
"scanningDescription": "Looking for running containers on your system"
|
|
}
|
|
},
|
|
"finish": {
|
|
"title": "Finish setup",
|
|
"subtitle": "You are ready to go!",
|
|
"description": "You have successfully completed the setup process. You can now start using Homarr. Select your next action:",
|
|
"action": {
|
|
"goToBoard": "Go to {name} board",
|
|
"createBoard": "Create your first board",
|
|
"inviteUser": "Invite other users",
|
|
"docs": "Read the documentation"
|
|
}
|
|
}
|
|
},
|
|
"backToStart": "Back to start"
|
|
},
|
|
"user": {
|
|
"title": "Users",
|
|
"name": "User",
|
|
"page": {
|
|
"login": {
|
|
"title": "Log in to your account",
|
|
"subtitle": "Welcome back! Please enter your credentials"
|
|
},
|
|
"invite": {
|
|
"title": "Join Homarr",
|
|
"subtitle": "Welcome to Homarr! Please create your account",
|
|
"description": "You were invited by {username}"
|
|
},
|
|
"init": {
|
|
"title": "New Homarr installation",
|
|
"subtitle": "Please create the initial administrator user"
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"homeBoard": {
|
|
"label": "Home board"
|
|
},
|
|
"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"
|
|
}
|
|
}
|
|
},
|
|
"create": "Create user",
|
|
"changePassword": {
|
|
"label": "Change password",
|
|
"notification": {
|
|
"success": {
|
|
"message": "Password changed successfully"
|
|
},
|
|
"error": {
|
|
"message": "Unable to change password"
|
|
}
|
|
}
|
|
},
|
|
"changeHomeBoard": {
|
|
"notification": {
|
|
"success": {
|
|
"message": "Home board changed successfully"
|
|
},
|
|
"error": {
|
|
"message": "Unable to change home board"
|
|
}
|
|
}
|
|
},
|
|
"changeSearchPreferences": {
|
|
"notification": {
|
|
"success": {
|
|
"message": "Search preferences changed successfully"
|
|
},
|
|
"error": {
|
|
"message": "Unable to change search preferences"
|
|
}
|
|
}
|
|
},
|
|
"changeFirstDayOfWeek": {
|
|
"notification": {
|
|
"success": {
|
|
"message": "First day of week changed successfully"
|
|
},
|
|
"error": {
|
|
"message": "Unable to change first day of week"
|
|
}
|
|
}
|
|
},
|
|
"changePingIconsEnabled": {
|
|
"notification": {
|
|
"success": {
|
|
"message": "Ping icons toggled successfully"
|
|
},
|
|
"error": {
|
|
"message": "Unable to toggle ping icons"
|
|
}
|
|
}
|
|
},
|
|
"changeDdgBangs": {
|
|
"notification": {
|
|
"success": {
|
|
"message": "DuckDuckGo bangs toggled successfully"
|
|
},
|
|
"error": {
|
|
"message": "Unable to toggle DuckDuckGo bangs"
|
|
}
|
|
}
|
|
},
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"editProfile": {
|
|
"notification": {
|
|
"success": {
|
|
"message": "Profile updated successfully"
|
|
},
|
|
"error": {
|
|
"message": "Unable to update profile"
|
|
}
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"transfer": {
|
|
"label": "Select new owner"
|
|
}
|
|
}
|
|
},
|
|
"group": {
|
|
"title": "Groups",
|
|
"name": "Group",
|
|
"search": "Find a group",
|
|
"field": {
|
|
"name": "Name",
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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": {
|
|
"title": "Apps",
|
|
"noResults": {
|
|
"title": "There are no apps yet",
|
|
"action": "Create your first app"
|
|
}
|
|
},
|
|
"create": {
|
|
"title": "New app",
|
|
"notification": {
|
|
"success": {
|
|
"title": "Creation successful",
|
|
"message": "The app was successfully created"
|
|
},
|
|
"error": {
|
|
"title": "Creation failed",
|
|
"message": "The app could not be created"
|
|
}
|
|
}
|
|
},
|
|
"edit": {
|
|
"title": "Edit app",
|
|
"notification": {
|
|
"success": {
|
|
"title": "Changes applied successfully",
|
|
"message": "The app was successfully saved"
|
|
},
|
|
"error": {
|
|
"title": "Unable to apply changes",
|
|
"message": "The app could not be saved"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"title": "Delete app",
|
|
"message": "Are you sure you want to delete the app {name}?",
|
|
"notification": {
|
|
"success": {
|
|
"title": "Deletion successful",
|
|
"message": "The app was successfully deleted"
|
|
},
|
|
"error": {
|
|
"title": "Deletion failed",
|
|
"message": "Unable to delete the app"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"description": {
|
|
"label": "Description"
|
|
},
|
|
"url": {
|
|
"label": "Url"
|
|
},
|
|
"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"
|
|
},
|
|
"create": {
|
|
"title": "Create new app",
|
|
"description": "Create a new app ",
|
|
"action": "Open app creation"
|
|
},
|
|
"add": "Add an app"
|
|
}
|
|
},
|
|
"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}.",
|
|
"field": {
|
|
"apiKey": "API key or token",
|
|
"username": "Username",
|
|
"password": "Password"
|
|
}
|
|
},
|
|
"page": {
|
|
"list": {
|
|
"title": "Custom Widgets",
|
|
"noResults": "No custom widgets yet. Create your first one!",
|
|
"loading": "Loading...",
|
|
"invalidDefinition": "Invalid definition",
|
|
"invalidDefinitionDescription": "This stored widget no longer matches the current Custom Widget schema. Delete it and recreate or import a valid definition.",
|
|
"migrationRequired": "Migration required",
|
|
"migrationDescription": "This v1 custom widget is preserved but cannot run until it is migrated to Custom JSX v2.",
|
|
"migrationInstructions": "Open Actions, copy the redacted migration prompt into an LLM, then copy its single JSON response and choose Paste migrated widget. 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.}} Edit it to configure the encrypted values."
|
|
},
|
|
"create": {
|
|
"title": "Create Custom Widget",
|
|
"subtitle": "Define an API URL, authentication, and how to display the response data."
|
|
},
|
|
"edit": {
|
|
"title": "Edit Custom Widget"
|
|
}
|
|
},
|
|
"action": {
|
|
"create": "Create",
|
|
"import": "Import",
|
|
"pasteImportHint": "Paste a full custom widget JSON with Ctrl+V or Command+V",
|
|
"save": "Save",
|
|
"delete": "Delete Custom Widget",
|
|
"deleteConfirm": "Are you sure you want to delete \"{name}\"? This action cannot be undone.",
|
|
"export": "Export",
|
|
"edit": "Edit",
|
|
"duplicate": "Duplicate",
|
|
"copyAiPrompt": "Copy AI prompt",
|
|
"enable": "Enable",
|
|
"disable": "Disable",
|
|
"menu": "Actions",
|
|
"downloadSkill": "View Custom Widget Skill",
|
|
"publishWorkshop": "Publish to Workshop",
|
|
"migrate": "Migrate Custom Widget",
|
|
"copyMigrationPrompt": "Copy LLM migration prompt",
|
|
"pasteMigration": "Paste migrated widget",
|
|
"importMigration": "Import migrated JSON file",
|
|
"addMapping": "Add Mapping",
|
|
"addColumn": "Add Column",
|
|
"removeMapping": "Remove mapping",
|
|
"removeColumn": "Remove column",
|
|
"addItem": "Add Item",
|
|
"removeItem": "Remove item",
|
|
"addBar": "Add Bar"
|
|
},
|
|
"field": {
|
|
"name": "Name",
|
|
"description": "Description",
|
|
"iconUrl": "Icon URL",
|
|
"url": "URL",
|
|
"authType": "Auth Type",
|
|
"headerName": "Header/Query Parameter Name",
|
|
"method": "Method",
|
|
"requestBody": "Request Body",
|
|
"displayType": "Display Type",
|
|
"jsonPath": "JSON Path",
|
|
"jsonPathHint": "Use JSONPath syntax to extract values, e.g. $.data.temperature or $.items[0].name",
|
|
"label": "Label",
|
|
"unit": "Unit",
|
|
"mappings": "Mappings",
|
|
"tablePath": "Array JSON Path",
|
|
"tablePathHint": "Path to the array in the response, e.g. $.data.items",
|
|
"columns": "Columns",
|
|
"header": "Header",
|
|
"items": "Items",
|
|
"gridColumns": "Grid Columns",
|
|
"cardStyle": "Card Style",
|
|
"bars": "Bars",
|
|
"valuePath": "Value JSON Path",
|
|
"maxPath": "Max Value JSON Path",
|
|
"showPercentage": "Show Percentage",
|
|
"barSize": "Bar Size",
|
|
"goodValues": "Good Values (comma-separated)",
|
|
"dotSize": "Dot Size",
|
|
"valueSize": "Value Size",
|
|
"labelPosition": "Label Position",
|
|
"kvLayout": "Layout",
|
|
"striped": "Striped Rows",
|
|
"compact": "Compact Mode",
|
|
"maxHeight": "Max Height (px)",
|
|
"color": "Color",
|
|
"buttonLabel": "Button Label",
|
|
"buttonColor": "Button Color",
|
|
"confirmText": "Confirmation Text",
|
|
"confirmTextHint": "If set, a confirmation dialog will appear before executing the request",
|
|
"successMessage": "Success Message",
|
|
"successMessageHint": "Message shown after successful execution",
|
|
"enabled": "Enabled",
|
|
"template": {
|
|
"label": "JSX Template",
|
|
"description": "Mantine JSX template. Access API response fields via data bindings (e.g. data.name). Use whitelisted components only. Forbidden: constructor, __proto__, eval, Function, window, document."
|
|
}
|
|
},
|
|
"editor": {
|
|
"errorBoundary": {
|
|
"title": "Something went wrong",
|
|
"retry": "Try again"
|
|
},
|
|
"language": {
|
|
"jsx": "JSX",
|
|
"json": "JSON"
|
|
},
|
|
"action": {
|
|
"components": "Components",
|
|
"format": "Format",
|
|
"insertStarter": "Insert starter",
|
|
"undo": "Undo",
|
|
"redo": "Redo",
|
|
"copy": "Copy",
|
|
"copied": "Copied",
|
|
"schema": "Schema"
|
|
},
|
|
"reference": {
|
|
"schema": "JSON Schema",
|
|
"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.",
|
|
"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",
|
|
"create": "Create",
|
|
"save": "Save"
|
|
},
|
|
"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",
|
|
"schema": "Options schema",
|
|
"defaults": "Default option values"
|
|
},
|
|
"builder": {
|
|
"advancedManifest": "Advanced raw manifest",
|
|
"manifestFilename": "widget.json",
|
|
"advancedJson": "Advanced manifest 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",
|
|
"secret": {
|
|
"apiKey": "API key or token",
|
|
"username": "Username",
|
|
"password": "Password"
|
|
}
|
|
},
|
|
"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 sends a DELETE request to 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"
|
|
}
|
|
},
|
|
"title": "Preview",
|
|
"test": "Test",
|
|
"hint": "Click Test to preview the API response with your current configuration.",
|
|
"rawResponse": "Raw JSON response"
|
|
},
|
|
"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.",
|
|
"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.",
|
|
"aiPromptCopied": "AI prompt copied to clipboard",
|
|
"aiPromptCopiedWithCount": "AI prompt copied to clipboard ({count, number} characters).",
|
|
"aiPromptCopyError": "Failed to copy prompt to clipboard. Your browser may not support this feature.",
|
|
"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.",
|
|
"aiPromptDescription": "Copy a pre-built prompt to paste into any AI chatbot (ChatGPT, Claude, Gemini...). It includes the full widget schema and your API response so the AI can generate a ready-to-import JSON config for you.",
|
|
"aiPromptCopy": "Copy to clipboard",
|
|
"aiPromptNoResponse": "Tip: Run a test first to include your API response in the prompt for better results.",
|
|
"createError": "Failed to create widget. Check your API endpoint is reachable.",
|
|
"executed": "Action executed successfully.",
|
|
"executeError": "Action failed: {error}"
|
|
},
|
|
"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",
|
|
"credentials": {
|
|
"title": "Configure credentials now",
|
|
"description": "Secrets are encrypted locally and never added to the imported widget. You can leave a field blank and configure it later.",
|
|
"header": "Sent through the {name} header",
|
|
"query": "Sent through the {name} query parameter",
|
|
"field": {
|
|
"apiKey": "API key or token",
|
|
"username": "Username",
|
|
"password": "Password"
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"placeholder": {
|
|
"exampleLabel": "CPU Temperature",
|
|
"exampleLabelShort": "CPU Temp",
|
|
"exampleHeader": "Name",
|
|
"exampleUnit": "°C",
|
|
"iconUrl": "https://...",
|
|
"url": "https://api.example.com/api/v1/status",
|
|
"headerName": "X-API-Key",
|
|
"jsonPath": "$.data.value",
|
|
"tablePath": "$.data.items",
|
|
"columnJsonPath": "$.name",
|
|
"valuePath": "$.data.used",
|
|
"maxPath": "$.data.total",
|
|
"goodValues": "online, true, up",
|
|
"color": "blue"
|
|
},
|
|
"cardStyleOption": {
|
|
"filled": "Filled",
|
|
"outline": "Outline",
|
|
"subtle": "Subtle"
|
|
},
|
|
"layoutOption": {
|
|
"list": "List",
|
|
"grid": "Grid"
|
|
},
|
|
"sizeOption": {
|
|
"sm": "Small",
|
|
"md": "Medium",
|
|
"lg": "Large",
|
|
"xl": "Extra Large"
|
|
},
|
|
"labelPositionOption": {
|
|
"above": "Above",
|
|
"below": "Below"
|
|
},
|
|
"fieldset": {
|
|
"general": "General",
|
|
"connection": "API Connection",
|
|
"display": "Display Configuration"
|
|
},
|
|
"displayTypeDescription": {
|
|
"singleValue": "Show one extracted value with a label and unit",
|
|
"keyValue": "Show multiple labeled values side by side",
|
|
"table": "Show rows of data in a table format",
|
|
"statGrid": "Colored stat cards in a grid — like Pi-Hole or Speedtest widgets",
|
|
"progressBars": "Progress bars showing usage or completion — for disk, memory, quotas",
|
|
"statusIndicator": "Colored status dots showing online/offline or health states",
|
|
"countGrid": "Compact number + label counters in a tight grid",
|
|
"raw": "Pretty-printed JSON output for debugging",
|
|
"actionButton": "A button that triggers a request when clicked",
|
|
"customJsx": "Custom JSX layout using whitelisted Mantine components with full API data binding"
|
|
},
|
|
"authType": {
|
|
"none": "None",
|
|
"bearer": "Bearer Token",
|
|
"basic": "Basic Auth",
|
|
"apiKeyHeader": "API Key (Header)",
|
|
"apiKeyQuery": "API Key (Query)"
|
|
},
|
|
"displayType": {
|
|
"singleValue": "Single Value",
|
|
"keyValue": "Key-Value",
|
|
"table": "Table",
|
|
"statGrid": "Stat Grid",
|
|
"progressBars": "Progress Bars",
|
|
"statusIndicator": "Status Indicator",
|
|
"countGrid": "Count Grid",
|
|
"raw": "Raw JSON",
|
|
"actionButton": "Action Button",
|
|
"customJsx": "Custom JSX"
|
|
},
|
|
"secret": {
|
|
"apiKey": "API Key / Token",
|
|
"username": "Username",
|
|
"password": "Password",
|
|
"savedPlaceholder": "••••••• (saved, leave empty to keep)"
|
|
},
|
|
"table": {
|
|
"name": "Name",
|
|
"url": "URL",
|
|
"display": "Display"
|
|
},
|
|
"widget": {
|
|
"disabled": "This widget is disabled"
|
|
}
|
|
},
|
|
"workshop": {
|
|
"installSuccess": "Custom widget installed",
|
|
"installSuccessDescription": "Add its credentials, test the requests, and save when it is ready.",
|
|
"installError": "Could not install widget",
|
|
"installErrorDescription": "The Workshop submission is not a valid Custom JSX v2 widget.",
|
|
"title": "Workshop",
|
|
"importFromWorkshop": "Import from Workshop",
|
|
"openCommunity": "Open Workshop",
|
|
"description": "Community Custom JSX v2 widgets. Inspect the source and network capabilities before installing.",
|
|
"descriptionCss": "Community Custom CSS themes. Preview every rule before importing it into a board.",
|
|
"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.",
|
|
"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",
|
|
"search": "Search widgets",
|
|
"searchCss": "Search CSS themes",
|
|
"sort": "Sort",
|
|
"sortTop": "Top rated",
|
|
"sortNewest": "Newest",
|
|
"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.",
|
|
"retry": "Try again",
|
|
"empty": "No widgets match this search.",
|
|
"emptyCss": "No CSS themes match this search.",
|
|
"noDescription": "No description",
|
|
"author": "by {name}",
|
|
"inspectCss": "Inspect CSS",
|
|
"sourceCode": "Workshop entry",
|
|
"loadError": "This submission could not be loaded.",
|
|
"sources": "Declared API sources",
|
|
"requests": "Declared queries and actions",
|
|
"noRequests": "This widget does not declare network requests.",
|
|
"export": "Export",
|
|
"report": "Report",
|
|
"install": "Install widget",
|
|
"continueInstall": "Continue installation",
|
|
"confirmInstallTitle": "Confirm widget installation",
|
|
"confirmInstallDescription": "Confirm where this widget connects and add any credentials required by your Homarr installation.",
|
|
"backToWidget": "Back to widget",
|
|
"useCss": "Import CSS",
|
|
"signInHint": "Sign in to vote or report. Installing does not require a Workshop account.",
|
|
"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.",
|
|
"voteError": "The vote could not be saved.",
|
|
"publish": {
|
|
"title": "Publish to Workshop",
|
|
"success": "Published immediately. Community members can now install and report this widget.",
|
|
"signInHint": "Sign in to publish under your Workshop identity.",
|
|
"titleField": "Title",
|
|
"descriptionField": "Description",
|
|
"screenshots": "Screenshots",
|
|
"screenshotsDescription": "Up to five PNG, JPEG, or WebP images",
|
|
"privateSourceWarning": "This widget contains private source URLs for: {sources}. Replace personal hosts or IP addresses with safe service placeholders before publishing.",
|
|
"privateSourceConfirmation": "I reviewed these source URLs and they do not expose private infrastructure details",
|
|
"action": "Publish now",
|
|
"definitionChanged": "The widget changed while publication was being prepared. Review its private source URLs again, then retry.",
|
|
"error": "Publication failed"
|
|
},
|
|
"installDialog": "Install from Workshop",
|
|
"installed": "Widget installed",
|
|
"installedDescription": "{name} is ready to configure."
|
|
},
|
|
"integration": {
|
|
"page": {
|
|
"list": {
|
|
"title": "Integrations",
|
|
"search": "Search integrations",
|
|
"noResults": {
|
|
"title": "There are no integrations yet"
|
|
}
|
|
},
|
|
"create": {
|
|
"title": "New {name} integration",
|
|
"notification": {
|
|
"success": {
|
|
"title": "Creation successful",
|
|
"message": "The integration was successfully created"
|
|
},
|
|
"error": {
|
|
"title": "Creation failed",
|
|
"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": {
|
|
"title": "Changes applied successfully",
|
|
"message": "The integration was successfully saved"
|
|
},
|
|
"error": {
|
|
"title": "Unable to apply changes",
|
|
"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": {
|
|
"title": "Deletion successful",
|
|
"message": "The integration was successfully deleted"
|
|
},
|
|
"error": {
|
|
"title": "Deletion failed",
|
|
"message": "Unable to delete the integration"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"url": {
|
|
"label": "Url"
|
|
},
|
|
"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."
|
|
},
|
|
"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"
|
|
},
|
|
"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"
|
|
},
|
|
"audiobookshelf": {
|
|
"name": "Audiobookshelf",
|
|
"description": "Self-hosted audiobook and podcast server"
|
|
},
|
|
"navidrome": {
|
|
"name": "Navidrome",
|
|
"description": "Self-hosted music streaming server with Subsonic API compatibility"
|
|
},
|
|
"uptimeKuma": {
|
|
"name": "Uptime Kuma",
|
|
"description": "Self-hosted uptime monitoring with public status pages",
|
|
"secret": {
|
|
"slug": {
|
|
"description": "The slug of your public status page. Defaults to \"default\" if not set."
|
|
},
|
|
"apiKey": {
|
|
"description": "Optional API key for authenticated /metrics access"
|
|
}
|
|
}
|
|
},
|
|
"traefik": {
|
|
"name": "Traefik",
|
|
"description": "Cloud-native reverse proxy and load balancer"
|
|
},
|
|
"wud": {
|
|
"name": "What's Up Docker",
|
|
"description": "Monitor which of your Docker containers have image updates available"
|
|
},
|
|
"paperlessNgx": {
|
|
"name": "Paperless-ngx",
|
|
"description": "Document management system for archiving and organizing scanned documents"
|
|
},
|
|
"patchmon": {
|
|
"name": "PatchMon",
|
|
"description": "Patch management and monitoring for Linux hosts"
|
|
},
|
|
"bazarr": {
|
|
"name": "Bazarr",
|
|
"description": "Companion application to Sonarr and Radarr that manages and downloads subtitles"
|
|
}
|
|
},
|
|
"media": {
|
|
"plural": "Medias",
|
|
"search": "Find a media",
|
|
"field": {
|
|
"name": "Name",
|
|
"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",
|
|
"action": {
|
|
"add": "Add",
|
|
"apply": "Apply",
|
|
"backToOverview": "Back to overview",
|
|
"skip": "Skip",
|
|
"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"
|
|
},
|
|
"here": "here",
|
|
"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",
|
|
"days": "Days",
|
|
"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": {
|
|
"switchToDarkMode": "Switch to dark mode",
|
|
"switchToLightMode": "Switch to light mode",
|
|
"management": "Management",
|
|
"assistant": "Homarr Assistant",
|
|
"assistantThinking": "Thinking",
|
|
"docker": "Docker",
|
|
"preferences": "Your preferences",
|
|
"logout": "Logout",
|
|
"login": "Login",
|
|
"homeBoard": "Your home board",
|
|
"loggedOut": "Logged out",
|
|
"updateAvailable": "{countUpdates} updates available: {tag}"
|
|
}
|
|
},
|
|
"assistant": {
|
|
"title": "Homarr Assistant",
|
|
"subtitle": "Connected to this Homarr instance",
|
|
"open": "Open Homarr Assistant",
|
|
"close": "Close assistant",
|
|
"spotlight": "Ask Homarr 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 Homarr Assistant."
|
|
},
|
|
"newConversation": "New conversation",
|
|
"archivedConversation": "Archived conversation",
|
|
"conversations": "Conversations",
|
|
"archived": "Archived",
|
|
"archive": "Archive",
|
|
"restore": "Restore",
|
|
"delete": "Delete",
|
|
"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."
|
|
},
|
|
"command": {
|
|
"label": "Open the command menu",
|
|
"prompt": "Open the Homarr command menu for me."
|
|
}
|
|
},
|
|
"composerPlaceholder": "Ask Homarr Assistant…",
|
|
"stop": "Stop response",
|
|
"send": "Send message",
|
|
"copy": "Copy response",
|
|
"regenerate": "Regenerate response",
|
|
"responseError": {
|
|
"title": "The assistant could not finish",
|
|
"description": "Try again. If the problem continues, ask an administrator to verify the configured model endpoint.",
|
|
"retry": "Try again"
|
|
},
|
|
"busy": {
|
|
"title": "The assistant is already working",
|
|
"description": "Wait for the current response or open it to stop the run."
|
|
},
|
|
"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",
|
|
"approvalRequired": "Approval required",
|
|
"complete": "Complete",
|
|
"denied": "Denied",
|
|
"failed": "Failed",
|
|
"working": "Working",
|
|
"approvalDescription": "This action changes Homarr. Review the input before allowing it.",
|
|
"allowOnce": "Allow once",
|
|
"deny": "Deny"
|
|
},
|
|
"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",
|
|
"stale": "Could not refresh {widget}; showing saved data"
|
|
},
|
|
"total": "Total",
|
|
"filesystemUsage": "{count, plural, one {Show usage for # filesystem} other {Show usage for # filesystems}}"
|
|
},
|
|
"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."
|
|
}
|
|
},
|
|
"action": {
|
|
"openAllInNewTabs": "Open all in tabs",
|
|
"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": {
|
|
"title": "Remove container",
|
|
"message": "Remove this container? Its contents will move into the surrounding area."
|
|
}
|
|
},
|
|
"dynamic": {
|
|
"action": {
|
|
"create": "New dynamic section",
|
|
"remove": "Remove dynamic section"
|
|
},
|
|
"option": {
|
|
"title": {
|
|
"label": "Title"
|
|
},
|
|
"customCssClasses": {
|
|
"label": "Custom css classes"
|
|
},
|
|
"borderColor": {
|
|
"label": "Border color"
|
|
}
|
|
},
|
|
"remove": {
|
|
"title": "Remove dynamic section",
|
|
"message": "Are you sure you want to remove this dynamic section? Items will be moved at the same location in the parent section."
|
|
}
|
|
},
|
|
"category": {
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
}
|
|
},
|
|
"action": {
|
|
"create": "New category",
|
|
"edit": "Rename category",
|
|
"remove": "Remove category",
|
|
"moveUp": "Move up",
|
|
"moveDown": "Move down",
|
|
"createAbove": "New category above",
|
|
"createBelow": "New category below",
|
|
"openAllInNewTabs": "Open all in tabs"
|
|
},
|
|
"create": {
|
|
"title": "New category",
|
|
"submit": "Add category"
|
|
},
|
|
"remove": {
|
|
"title": "Remove category",
|
|
"message": "Are you sure you want to remove the category {name}?"
|
|
},
|
|
"edit": {
|
|
"title": "Rename category",
|
|
"submit": "Rename category"
|
|
},
|
|
"menu": {
|
|
"label": {
|
|
"create": "New category",
|
|
"changePosition": "Change position",
|
|
"settings": "Settings"
|
|
}
|
|
},
|
|
"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."
|
|
}
|
|
}
|
|
},
|
|
"item": {
|
|
"action": {
|
|
"create": "New item",
|
|
"import": "Import item",
|
|
"edit": "Edit item",
|
|
"moveResize": "Move / resize item",
|
|
"duplicate": "Duplicate item",
|
|
"remove": "Remove item"
|
|
},
|
|
"menu": {
|
|
"label": {
|
|
"settings": "Settings",
|
|
"settingsFor": "Settings for {name}",
|
|
"refresh": "Refresh",
|
|
"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",
|
|
"notification": {
|
|
"error": {
|
|
"title": "Unable to add item",
|
|
"message": "The item could not be added to this board"
|
|
}
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"height": {
|
|
"label": "Height"
|
|
},
|
|
"xOffset": {
|
|
"label": "X offset"
|
|
},
|
|
"yOffset": {
|
|
"label": "Y offset"
|
|
}
|
|
}
|
|
},
|
|
"edit": {
|
|
"title": "Edit item",
|
|
"tab": {
|
|
"widget": "Edit widget",
|
|
"app": "Edit app"
|
|
},
|
|
"app": {
|
|
"propagationNotice": "Changes to this app will be applied everywhere it is used across all dashboards."
|
|
},
|
|
"advancedOptions": {
|
|
"label": "Advanced options",
|
|
"title": "Advanced item options"
|
|
},
|
|
"field": {
|
|
"integrations": {
|
|
"label": "Integrations"
|
|
},
|
|
"title": {
|
|
"label": "Title"
|
|
},
|
|
"customCssClasses": {
|
|
"label": "Custom css classes"
|
|
},
|
|
"borderColor": {
|
|
"label": "Border color"
|
|
}
|
|
}
|
|
},
|
|
"remove": {
|
|
"title": "Remove item",
|
|
"message": "Are you sure you want to remove this item?"
|
|
},
|
|
"advancedFocus": {
|
|
"open": "Open advanced view",
|
|
"close": "Close advanced view",
|
|
"label": "{widget} advanced view"
|
|
}
|
|
},
|
|
"widget": {
|
|
"integrationSelect": {
|
|
"configureIntegrationFirst": "Connect an integration first",
|
|
"loading": "Loading...",
|
|
"placeholder": "Select an option",
|
|
"noResults": "No results found",
|
|
"loadError": "Failed to load options"
|
|
},
|
|
"app": {
|
|
"name": "App",
|
|
"description": "Embeds an app into the board.",
|
|
"option": {
|
|
"appId": {
|
|
"label": "Choose app"
|
|
},
|
|
"openInNewTab": {
|
|
"label": "Open in new tab"
|
|
},
|
|
"showTitle": {
|
|
"label": "Show app name"
|
|
},
|
|
"pingEnabled": {
|
|
"label": "Enable status check"
|
|
},
|
|
"layout": {
|
|
"label": "Layout",
|
|
"option": {
|
|
"row": "Horizontal",
|
|
"row-reverse": "Horizontal (reversed)",
|
|
"column": "Vertical",
|
|
"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": {
|
|
"title": {
|
|
"label": "Title"
|
|
},
|
|
"layout": {
|
|
"label": "Layout",
|
|
"option": {
|
|
"row": {
|
|
"label": "Horizontal"
|
|
},
|
|
"column": {
|
|
"label": "Vertical"
|
|
},
|
|
"grid": {
|
|
"label": "Grid"
|
|
},
|
|
"gridHorizontal": {
|
|
"label": "Grid horizontal"
|
|
}
|
|
}
|
|
},
|
|
"hideTitle": {
|
|
"label": "Hide title"
|
|
},
|
|
"hideIcon": {
|
|
"label": "Hide icons"
|
|
},
|
|
"hideHostname": {
|
|
"label": "Hide hostnames"
|
|
},
|
|
"openNewTab": {
|
|
"label": "Open in new tab"
|
|
},
|
|
"withBorder": {
|
|
"label": "Show border"
|
|
},
|
|
"items": {
|
|
"label": "Bookmarks",
|
|
"add": "Add bookmark"
|
|
}
|
|
}
|
|
},
|
|
"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}",
|
|
"updatedAt": "Updated {date}",
|
|
"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": {
|
|
"showTitle": {
|
|
"label": "Show title"
|
|
},
|
|
"showRing": {
|
|
"label": "Show update ring"
|
|
},
|
|
"layout": {
|
|
"label": "Layout",
|
|
"option": {
|
|
"horizontal": {
|
|
"label": "Horizontal"
|
|
},
|
|
"vertical": {
|
|
"label": "Vertical"
|
|
}
|
|
}
|
|
},
|
|
"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": {
|
|
"layout": {
|
|
"label": "Layout",
|
|
"option": {
|
|
"row": {
|
|
"label": "Horizontal"
|
|
},
|
|
"column": {
|
|
"label": "Vertical"
|
|
},
|
|
"grid": {
|
|
"label": "Grid"
|
|
}
|
|
}
|
|
},
|
|
"usePiHoleColors": {
|
|
"label": "Use Pi-Hole colors"
|
|
}
|
|
},
|
|
"error": {
|
|
"internalServerError": "Failed to fetch DNS Hole Summary",
|
|
"integrationsDisconnected": "No data available, all integrations disconnected"
|
|
},
|
|
"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": {
|
|
"layout": {
|
|
"label": "Layout",
|
|
"option": {
|
|
"row": {
|
|
"label": "Horizontal"
|
|
},
|
|
"column": {
|
|
"label": "Vertical"
|
|
},
|
|
"grid": {
|
|
"label": "Grid"
|
|
}
|
|
}
|
|
},
|
|
"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",
|
|
"hours": "Hours",
|
|
"minutes": "Minutes",
|
|
"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."
|
|
},
|
|
"customTitle": {
|
|
"label": "Title"
|
|
},
|
|
"is24HourFormat": {
|
|
"label": "24-hour format",
|
|
"description": "Use 24-hour format instead of 12-hour format"
|
|
},
|
|
"showSeconds": {
|
|
"label": "Display seconds"
|
|
},
|
|
"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": "How the date should look like"
|
|
},
|
|
"customTimeFormat": {
|
|
"label": "Custom time format",
|
|
"description": "Use ISO 8601 to format time (this will override other options)"
|
|
},
|
|
"customDateFormat": {
|
|
"label": "Custom date format",
|
|
"description": "Use ISO 8601 to format date (this will override other options)"
|
|
},
|
|
"showWeather": {
|
|
"label": "Show weather",
|
|
"description": "Display a small animated weather icon and temperature in the corner of the card"
|
|
},
|
|
"weatherLocation": {
|
|
"label": "Weather location"
|
|
},
|
|
"isWeatherFormatFahrenheit": {
|
|
"label": "Use Fahrenheit"
|
|
}
|
|
}
|
|
},
|
|
"minecraftServerStatus": {
|
|
"name": "Minecraft Server Status",
|
|
"description": "Displays the status of a Minecraft server",
|
|
"option": {
|
|
"title": {
|
|
"label": "Title"
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"showTitle": {
|
|
"label": "Show title"
|
|
},
|
|
"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",
|
|
"updatedAt": "Updated {date}",
|
|
"untitled": "Untitled",
|
|
"edit": "Edit",
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"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}",
|
|
"lastUpdated": "Updated {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}"
|
|
},
|
|
"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",
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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": "Radarr 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"
|
|
},
|
|
"showCurrentWindSpeed": {
|
|
"label": "Show current wind speed",
|
|
"description": "Only on current weather"
|
|
},
|
|
"useImperialSpeed": {
|
|
"label": "Use mph for windspeed"
|
|
},
|
|
"location": {
|
|
"label": "Weather location"
|
|
},
|
|
"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"
|
|
},
|
|
"dateFormat": {
|
|
"label": "Date Format",
|
|
"description": "How the date should look like"
|
|
}
|
|
},
|
|
"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",
|
|
"day": "Day",
|
|
"conditions": "Conditions",
|
|
"temperature": "High / low",
|
|
"humidity": "Humidity",
|
|
"wind": "Wind / gusts ({unit})",
|
|
"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",
|
|
"error": {
|
|
"internalServerError": "Failed to fetch indexers status"
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"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"
|
|
},
|
|
"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}"
|
|
},
|
|
"memory": {},
|
|
"error": {
|
|
"internalServerError": "Failed to fetch health status"
|
|
},
|
|
"cluster": {
|
|
"summary": {
|
|
"cpu": "CPU",
|
|
"memory": "RAM"
|
|
},
|
|
"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",
|
|
"cpu": "CPU",
|
|
"memory": "RAM",
|
|
"node": "Node"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"dockerContainers": {
|
|
"name": "Docker stats",
|
|
"description": "Stats of your containers (This widget can only be added with administrator privileges)",
|
|
"option": {
|
|
"columns": {
|
|
"label": "Columns to show"
|
|
},
|
|
"enableRowSorting": {
|
|
"label": "Enable items sorting"
|
|
},
|
|
"defaultSort": {
|
|
"label": "Column used for sorting by default",
|
|
"option": {
|
|
"name": "Name",
|
|
"state": "State",
|
|
"cpuUsage": "CPU usage",
|
|
"memoryUsage": "Memory usage"
|
|
}
|
|
},
|
|
"descendingDefaultSort": {
|
|
"label": "Invert sorting"
|
|
},
|
|
"columnOrder": {
|
|
"label": "Column order"
|
|
},
|
|
"columnWidths": {
|
|
"label": "Column widths"
|
|
}
|
|
},
|
|
"error": {
|
|
"internalServerError": "Failed to fetch containers stats",
|
|
"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": {
|
|
"name": "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}}"
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"vpn": {
|
|
"name": "VPN",
|
|
"description": "Overview of your VPN connections",
|
|
"serviceUnavailable": "VPN unavailable",
|
|
"option": {},
|
|
"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": {
|
|
"name": "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",
|
|
"loading": "Loading events...",
|
|
"noEvents": "No events found",
|
|
"none": "No event",
|
|
"configureWebsiteFirst": "Select a website first to load events"
|
|
},
|
|
"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...",
|
|
"loading": "Loading events...",
|
|
"noEvents": "No events found",
|
|
"configureWebsiteFirst": "Select a website first to load events"
|
|
},
|
|
"topCount": {
|
|
"label": "Items to show",
|
|
"description": "Number of top items to display (max 500)"
|
|
}
|
|
},
|
|
"event": {
|
|
"occurrences": "events",
|
|
"label": "events"
|
|
},
|
|
"topPages": {
|
|
"direct": "Direct"
|
|
},
|
|
"topReferrers": {
|
|
"direct": "Direct"
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"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"
|
|
},
|
|
"option": {}
|
|
},
|
|
"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": "Disabling this will not work for plex"
|
|
},
|
|
"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",
|
|
"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": {
|
|
"name": "Paperless-ngx",
|
|
"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": {
|
|
"name": "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",
|
|
"description": "Enter yellow when the value reaches this threshold"
|
|
},
|
|
"hostsNeedingUpdatesCriticalAt": {
|
|
"label": "Needs updates critical threshold",
|
|
"description": "Enter red when the value reaches this 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",
|
|
"description": "Enter yellow when the value reaches this threshold"
|
|
},
|
|
"securityUpdatesCriticalAt": {
|
|
"label": "Security updates critical threshold",
|
|
"description": "Enter red when the value reaches this 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",
|
|
"description": "Enter yellow when the value reaches this threshold"
|
|
},
|
|
"hostsWithSecurityUpdatesCriticalAt": {
|
|
"label": "Hosts with security updates critical threshold",
|
|
"description": "Enter red when the value reaches this 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",
|
|
"description": "Enter yellow when the value reaches this threshold"
|
|
},
|
|
"totalOutdatedPackagesCriticalAt": {
|
|
"label": "Outdated packages critical threshold",
|
|
"description": "Enter red when the value reaches this 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"
|
|
}
|
|
}
|
|
},
|
|
"error": {
|
|
"internalServerError": "Failed to fetch PatchMon data"
|
|
}
|
|
},
|
|
"bazarr": {
|
|
"name": "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",
|
|
"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": {
|
|
"columns": {
|
|
"label": "Columns to show"
|
|
},
|
|
"enableRowSorting": {
|
|
"label": "Enable items sorting"
|
|
},
|
|
"defaultSort": {
|
|
"label": "Column used for sorting by default"
|
|
},
|
|
"descendingDefaultSort": {
|
|
"label": "Invert sorting"
|
|
},
|
|
"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"
|
|
},
|
|
"columnOrder": {
|
|
"label": "Column order"
|
|
},
|
|
"columnWidths": {
|
|
"label": "Column widths"
|
|
}
|
|
},
|
|
"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": "Controls"
|
|
},
|
|
"added": {
|
|
"columnTitle": "Added",
|
|
"detailsTitle": "Date Added"
|
|
},
|
|
"category": {
|
|
"columnTitle": "Extras",
|
|
"detailsTitle": "Categories (Or extra information)"
|
|
},
|
|
"downSpeed": {
|
|
"columnTitle": "Down",
|
|
"detailsTitle": "Download Speed"
|
|
},
|
|
"index": {
|
|
"columnTitle": "#",
|
|
"detailsTitle": "Current index within client"
|
|
},
|
|
"id": {
|
|
"columnTitle": "Id",
|
|
"detailsTitle": "Item ID"
|
|
},
|
|
"integration": {
|
|
"columnTitle": "Integration"
|
|
},
|
|
"name": {
|
|
"columnTitle": "Job name"
|
|
},
|
|
"progress": {
|
|
"columnTitle": "Progress",
|
|
"detailsTitle": "Download Progress"
|
|
},
|
|
"ratio": {
|
|
"columnTitle": "Ratio",
|
|
"detailsTitle": "Torrent ratio (received/sent)"
|
|
},
|
|
"received": {
|
|
"columnTitle": "Total down",
|
|
"detailsTitle": "Total downloaded"
|
|
},
|
|
"sent": {
|
|
"columnTitle": "Total up",
|
|
"detailsTitle": "Total Uploaded"
|
|
},
|
|
"size": {
|
|
"columnTitle": "File Size",
|
|
"detailsTitle": "Total Size of selection/files"
|
|
},
|
|
"state": {
|
|
"columnTitle": "State",
|
|
"detailsTitle": "Job State"
|
|
},
|
|
"time": {
|
|
"columnTitle": "Finish time",
|
|
"detailsTitle": "Time since/to completion",
|
|
"eta": "ETA"
|
|
},
|
|
"type": {
|
|
"columnTitle": "Type",
|
|
"detailsTitle": "Download Client type"
|
|
},
|
|
"upSpeed": {
|
|
"columnTitle": "Up",
|
|
"detailsTitle": "Upload Speed"
|
|
}
|
|
},
|
|
"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 Overseerr or Jellyseerr instance",
|
|
"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"
|
|
},
|
|
"toBeDetermined": "TBD"
|
|
},
|
|
"mediaRequests-requestStats": {
|
|
"name": "Media Requests Stats",
|
|
"description": "Statistics about your media requests",
|
|
"option": {},
|
|
"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",
|
|
"total": "Total"
|
|
},
|
|
"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": {
|
|
"title": "Health check",
|
|
"queued": "Queued",
|
|
"status": {
|
|
"healthy": "Healthy",
|
|
"unhealthy": "Unhealthy"
|
|
}
|
|
},
|
|
"panel": {
|
|
"statistics": {
|
|
"empty": "Empty",
|
|
"transcodes": "Transcodes",
|
|
"transcodesCount": "Transcodes",
|
|
"healthChecksCount": "Health checks",
|
|
"filesCount": "Files",
|
|
"savedSpace": "Saved space",
|
|
"healthChecks": "Health checks",
|
|
"videoCodecs": "Codecs",
|
|
"videoContainers": "Containers",
|
|
"videoResolutions": "Resolutions"
|
|
},
|
|
"workers": {
|
|
"empty": "Empty",
|
|
"table": {
|
|
"file": "File",
|
|
"eta": "ETA",
|
|
"progress": "Progress",
|
|
"transcode": "Transcode",
|
|
"healthCheck": "Health check"
|
|
}
|
|
},
|
|
"queue": {
|
|
"empty": "Empty",
|
|
"table": {
|
|
"file": "File",
|
|
"size": "Size",
|
|
"transcode": "Transcode",
|
|
"healthCheck": "Health check"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"edit": {
|
|
"label": "Edit"
|
|
},
|
|
"editForm": {
|
|
"title": "Edit Repository",
|
|
"cancel": {
|
|
"label": "Cancel"
|
|
},
|
|
"confirm": {
|
|
"label": "Confirm"
|
|
}
|
|
},
|
|
"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",
|
|
"save": "Save"
|
|
}
|
|
}
|
|
},
|
|
"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": {
|
|
"option": {},
|
|
"card": {
|
|
"vpn": {
|
|
"countConnected": "{count, plural, one {# connected} other {# connected}}",
|
|
"label": "VPN"
|
|
},
|
|
"wan": "WAN",
|
|
"web": "Web",
|
|
"wifi": "Wi-Fi",
|
|
"lan": "LAN"
|
|
},
|
|
"error": {
|
|
"integrationsDisconnected": "No data available, all integrations disconnected",
|
|
"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": {
|
|
"integrationsDisconnected": "No data available, all integrations disconnected",
|
|
"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",
|
|
"cpu": "CPU",
|
|
"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"
|
|
},
|
|
"range": {
|
|
"twelveHours": "12h",
|
|
"oneDay": "24h",
|
|
"all": "All"
|
|
}
|
|
},
|
|
"uptimeKuma": {
|
|
"name": "Uptime Kuma",
|
|
"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": {
|
|
"name": "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",
|
|
"services": "Services",
|
|
"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": {
|
|
"cpu": "CPU",
|
|
"memory": "Memory",
|
|
"gpu": "GPU",
|
|
"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": {
|
|
"cpu": "CPU",
|
|
"memory": "MEM",
|
|
"gpu": "GPU",
|
|
"network": "NET",
|
|
"up": "UP",
|
|
"down": "DOWN"
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"status": {
|
|
"unhealthy": "Unhealthy"
|
|
}
|
|
},
|
|
"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 a GET 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",
|
|
"refresh": "Refresh",
|
|
"copy": "Copy",
|
|
"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": {
|
|
"statusFilter": {
|
|
"label": "Status filter"
|
|
},
|
|
"sortBy": {
|
|
"label": "Sort by"
|
|
},
|
|
"sortDirection": {
|
|
"label": "Sort direction"
|
|
},
|
|
"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"
|
|
},
|
|
"columnOrder": {
|
|
"label": "Column order"
|
|
},
|
|
"columnWidths": {
|
|
"label": "Column widths"
|
|
}
|
|
},
|
|
"noRecords": "No systems found",
|
|
"error": {
|
|
"internalServerError": "Unable to connect to Beszel. Check your integration settings.",
|
|
"layoutSaveTitle": "Unable to save table layout",
|
|
"layoutSaveMessage": "Your column order or widths could not be saved. Please try again."
|
|
},
|
|
"column": {
|
|
"system": "System",
|
|
"cpu": "CPU",
|
|
"memory": "Memory",
|
|
"disk": "Disk",
|
|
"gpu": "GPU",
|
|
"loadAvg": "Load Avg",
|
|
"net": "Net",
|
|
"temp": "Temp",
|
|
"battery": "Bat",
|
|
"services": "Services",
|
|
"uptime": "Uptime",
|
|
"agent": "Agent"
|
|
}
|
|
},
|
|
"beszelSystemGrid": {
|
|
"name": "Beszel Systems (Grid)",
|
|
"description": "Card grid view of all Beszel-monitored systems with real-time metrics",
|
|
"option": {
|
|
"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"
|
|
}
|
|
},
|
|
"error": {
|
|
"internalServerError": "Unable to connect to Beszel. Check your integration settings."
|
|
},
|
|
"empty": {
|
|
"noSystems": "No systems found"
|
|
},
|
|
"metric": {
|
|
"cpu": "CPU",
|
|
"memory": "Memory",
|
|
"disk": "Disk",
|
|
"gpu": "GPU",
|
|
"loadAvg": "Load Avg",
|
|
"net": "Net",
|
|
"temp": "Temp",
|
|
"battery": "Bat",
|
|
"services": "Services",
|
|
"uptime": "Uptime",
|
|
"agent": "Agent"
|
|
}
|
|
},
|
|
"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",
|
|
"error": {
|
|
"internalServerError": "Unable to connect to Beszel. Check your integration settings."
|
|
},
|
|
"history": "History",
|
|
"resolved": "Resolved",
|
|
"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": {
|
|
"internalServerError": "Unable to connect to Beszel. Check your integration settings.",
|
|
"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",
|
|
"series": "CPU"
|
|
},
|
|
"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"
|
|
}
|
|
}
|
|
},
|
|
"widgetPreview": {
|
|
"toggle": {
|
|
"enabled": "Edit mode enabled",
|
|
"disabled": "Edit mode disabled"
|
|
},
|
|
"dimensions": {
|
|
"title": "Change dimensions"
|
|
}
|
|
},
|
|
"board": {
|
|
"action": {
|
|
"addContent": "Add board content",
|
|
"settings": "Board settings",
|
|
"switch": "Switch board",
|
|
"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": {
|
|
"title": "Changes applied successfully",
|
|
"message": "The board was successfully saved"
|
|
},
|
|
"error": {
|
|
"title": "Unable to apply changes",
|
|
"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?"
|
|
}
|
|
},
|
|
"oldImport": {
|
|
"label": "Import from homarr before 1.0.0",
|
|
"notification": {
|
|
"success": {
|
|
"title": "Import successful",
|
|
"message": "The board was successfully imported"
|
|
},
|
|
"error": {
|
|
"title": "Import failed",
|
|
"message": "The board could not be imported, check the logs for further details"
|
|
}
|
|
},
|
|
"form": {
|
|
"file": {
|
|
"label": "Select JSON file",
|
|
"invalidError": "Invalid configuration file"
|
|
},
|
|
"apps": {
|
|
"label": "Apps",
|
|
"avoidDuplicates": {
|
|
"label": "Avoid duplicates",
|
|
"description": "Ignores apps where an app with the same href already exists"
|
|
},
|
|
"onlyImportApps": {
|
|
"label": "Only import apps",
|
|
"description": "Only adds the apps, the board need to be recreated manually"
|
|
}
|
|
},
|
|
"name": {
|
|
"label": "Board name"
|
|
},
|
|
"screenSize": {
|
|
"label": "Screen size",
|
|
"description": "In versions before 1.0 three different modes existed, so you were able to choose the amount of columns for each screen size.",
|
|
"option": {
|
|
"sm": "Small",
|
|
"md": "Medium",
|
|
"lg": "Large"
|
|
}
|
|
},
|
|
"sidebarBehavior": {
|
|
"label": "Sidebar behavior",
|
|
"description": "Sidebars were removed in 1.0, you can select what should happen with the items inside them.",
|
|
"option": {
|
|
"lastSection": {
|
|
"label": "Last section",
|
|
"description": "Sidebar will be displayed below the last section"
|
|
},
|
|
"removeItems": {
|
|
"label": "Remove items",
|
|
"description": "Items contained in the sidebar will be removed"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"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 for widths in between.",
|
|
"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",
|
|
"modal": {
|
|
"title": "Rename board"
|
|
}
|
|
},
|
|
"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": {
|
|
"label": "Delete this board",
|
|
"description": "Once you delete a board, there is no going back. Please be certain.",
|
|
"button": "Delete this board",
|
|
"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": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"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",
|
|
"title": {
|
|
"morning": "Good morning, {username}",
|
|
"afternoon": "Good afternoon, {username}",
|
|
"evening": "Good evening, {username}"
|
|
},
|
|
"notFound": {
|
|
"title": "Not Found",
|
|
"text": "Could not find requested resource"
|
|
},
|
|
"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",
|
|
"boards": "Boards",
|
|
"apps": "Apps",
|
|
"integrations": "Integrations",
|
|
"customWidgets": "Custom Widgets",
|
|
"workshop": "Workshop",
|
|
"searchEngies": "Search engines",
|
|
"medias": "Medias",
|
|
"assistant": "Assistant",
|
|
"users": {
|
|
"label": "Users",
|
|
"items": {
|
|
"manage": "Manage",
|
|
"invites": "Invites",
|
|
"groups": "Groups"
|
|
}
|
|
},
|
|
"tools": {
|
|
"label": "Tools",
|
|
"items": {
|
|
"docker": "Docker",
|
|
"kubernetes": "Kubernetes",
|
|
"logs": "Logs",
|
|
"api": "API & MCP",
|
|
"certificates": "Certificates",
|
|
"tasks": "Tasks",
|
|
"backup": "Backup"
|
|
}
|
|
},
|
|
"settings": "Settings",
|
|
"help": {
|
|
"label": "Help",
|
|
"items": {
|
|
"documentation": "Documentation",
|
|
"submitIssue": "Submit an issue",
|
|
"discord": "Community Discord",
|
|
"sourceCode": "Source Code"
|
|
}
|
|
},
|
|
"about": "About"
|
|
}
|
|
},
|
|
"page": {
|
|
"home": {
|
|
"statistic": {
|
|
"board": "Boards",
|
|
"user": "Users",
|
|
"invite": "Invites",
|
|
"integration": "Integrations",
|
|
"app": "Apps",
|
|
"group": "Groups",
|
|
"searchEngine": "Search engines",
|
|
"media": "Medias"
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"duplicate": {
|
|
"label": "Duplicate board"
|
|
},
|
|
"delete": {
|
|
"label": "Delete permanently",
|
|
"confirm": {
|
|
"title": "Delete board",
|
|
"description": "Are you sure you want to delete the {name} board?"
|
|
}
|
|
}
|
|
},
|
|
"visibility": {
|
|
"public": "This board is public",
|
|
"private": "This board is private"
|
|
},
|
|
"noResults": {
|
|
"title": "No boards yet"
|
|
},
|
|
"modal": {
|
|
"createBoard": {
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"media": {
|
|
"includeFromAllUsers": "Include media from all users"
|
|
},
|
|
"user": {
|
|
"back": "Back to users",
|
|
"fieldsDisabledExternalProvider": "Certain fields are disabled because they are managed by an external authentication provider.",
|
|
"setting": {
|
|
"general": {
|
|
"title": "General",
|
|
"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"
|
|
},
|
|
"board": {
|
|
"title": "Boards"
|
|
}
|
|
},
|
|
"list": {
|
|
"metaTitle": "Manage users",
|
|
"title": "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": {
|
|
"id": {
|
|
"label": "ID"
|
|
},
|
|
"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.",
|
|
"board": {
|
|
"title": "Boards"
|
|
}
|
|
},
|
|
"members": {
|
|
"title": "Members",
|
|
"search": "Find a member",
|
|
"notFound": "No members found"
|
|
},
|
|
"permissions": {
|
|
"title": "Permissions",
|
|
"form": {
|
|
"unsavedChanges": "You have unsaved changes!"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"settings": {
|
|
"title": "Settings",
|
|
"notification": {
|
|
"success": {
|
|
"message": "Settings saved successfully"
|
|
},
|
|
"error": {
|
|
"message": "Failed to save settings"
|
|
}
|
|
},
|
|
"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."
|
|
}
|
|
},
|
|
"assistant": {
|
|
"title": "Assistant",
|
|
"description": "Connect an OpenAI-compatible model endpoint for the instance-wide assistant.",
|
|
"security": {
|
|
"title": "Server-side secrets",
|
|
"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."
|
|
},
|
|
"connection": {
|
|
"title": "Provider connection",
|
|
"description": "Choose a preset or connect any service that implements the OpenAI Chat Completions API.",
|
|
"saved": "Connection saved",
|
|
"notSaved": "Not configured",
|
|
"save": "Save provider connection",
|
|
"clearCredentials": "Remove all credentials"
|
|
},
|
|
"provider": {
|
|
"title": "Provider",
|
|
"groups": {
|
|
"hosted": "Hosted providers",
|
|
"local": "Local providers",
|
|
"custom": "Custom"
|
|
},
|
|
"options": {
|
|
"openrouter": {
|
|
"label": "OpenRouter",
|
|
"description": "Hosted model routing with a large tool-capable model catalog."
|
|
},
|
|
"openai": {
|
|
"label": "OpenAI",
|
|
"description": "OpenAI Chat Completions through the official API endpoint."
|
|
},
|
|
"anthropic": {
|
|
"label": "Anthropic Claude",
|
|
"description": "Claude through Anthropic's OpenAI SDK compatibility endpoint."
|
|
},
|
|
"google-gemini": {
|
|
"label": "Google Gemini",
|
|
"description": "Gemini through Google's OpenAI-compatible API endpoint."
|
|
},
|
|
"xai": {
|
|
"label": "xAI",
|
|
"description": "Grok models through xAI's OpenAI-compatible API."
|
|
},
|
|
"groq": {
|
|
"label": "Groq",
|
|
"description": "Fast hosted inference through Groq's OpenAI-compatible API."
|
|
},
|
|
"mistral": {
|
|
"label": "Mistral AI",
|
|
"description": "Mistral models through the official API."
|
|
},
|
|
"deepseek": {
|
|
"label": "DeepSeek",
|
|
"description": "DeepSeek models through its OpenAI-compatible API."
|
|
},
|
|
"together": {
|
|
"label": "Together AI",
|
|
"description": "Hosted open models through Together's OpenAI-compatible API."
|
|
},
|
|
"ollama": {
|
|
"label": "Ollama",
|
|
"description": "A local or network Ollama server using its OpenAI-compatible API."
|
|
},
|
|
"lm-studio": {
|
|
"label": "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."
|
|
}
|
|
}
|
|
},
|
|
"baseUrl": {
|
|
"title": "API base URL",
|
|
"description": "Include the API prefix, usually /v1. In containers, localhost refers to the Homarr container."
|
|
},
|
|
"destinationChanged": {
|
|
"title": "Credentials will not follow this endpoint",
|
|
"description": "Changing the provider or base URL clears the stored API key and headers unless replacements are entered now. This prevents sending one provider's secrets to another service."
|
|
},
|
|
"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",
|
|
"replacementPlaceholder": "Enter a replacement API key",
|
|
"configuredBadge": "Saved key active",
|
|
"pendingRemoval": "Removal pending",
|
|
"remove": "Remove saved API key",
|
|
"removeDescription": "Deletes the saved key after you click Save provider connection.",
|
|
"removalPendingDescription": "The saved key will be deleted when you save the provider connection."
|
|
},
|
|
"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.",
|
|
"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",
|
|
"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": "Discovered {count} models. Tool support depends on the selected endpoint and model.",
|
|
"discoveryFailed": "Model discovery did not complete",
|
|
"context": "{count} token context",
|
|
"toolsConfirmed": "Tools advertised",
|
|
"toolsUnknown": "Verify tool support"
|
|
},
|
|
"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."
|
|
},
|
|
"credentialsCleared": {
|
|
"title": "Provider credentials removed",
|
|
"message": "The stored API key and headers were removed, and the assistant was disabled."
|
|
},
|
|
"saved": {
|
|
"title": "Assistant settings saved",
|
|
"message": "The new model and availability settings are active."
|
|
},
|
|
"error": {
|
|
"title": "Assistant settings could not be saved"
|
|
}
|
|
}
|
|
},
|
|
"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": {
|
|
"title": "Boards",
|
|
"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": {
|
|
"title": "Users",
|
|
"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",
|
|
"options": {
|
|
"auto": "Auto",
|
|
"light": "Light",
|
|
"dark": "Dark"
|
|
}
|
|
}
|
|
},
|
|
"culture": {
|
|
"title": "Culture",
|
|
"defaultLocale": {
|
|
"label": "Default language"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"tool": {
|
|
"tasks": {
|
|
"title": "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"
|
|
}
|
|
}
|
|
},
|
|
"settings": {
|
|
"title": "Task settings for {jobName}"
|
|
},
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"interval": {
|
|
"label": "Schedule interval"
|
|
},
|
|
"lastExecution": {
|
|
"label": "Last Execution"
|
|
},
|
|
"actions": {
|
|
"label": "Actions"
|
|
}
|
|
},
|
|
"table": {
|
|
"search": "Search {count} tasks..."
|
|
},
|
|
"action": {
|
|
"refresh": {
|
|
"label": "Refresh"
|
|
}
|
|
},
|
|
"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": {
|
|
"title": "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": {
|
|
"id": "ID",
|
|
"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.",
|
|
"columnType": "Type",
|
|
"columnName": "Tool",
|
|
"columnDescription": "Description"
|
|
},
|
|
"troubleshooting": {
|
|
"title": "Troubleshooting",
|
|
"missingHeader": {
|
|
"title": "\"Missing ApiKey header\"",
|
|
"description": "Your client is not sending the {header} header. Verify the {section} section in your MCP config is correct. Some clients require restarting after config changes."
|
|
},
|
|
"invalidFormat": {
|
|
"title": "\"Invalid ApiKey format\"",
|
|
"description": "Make sure you copied the full API key, not just part of it."
|
|
},
|
|
"invalidKey": {
|
|
"title": "\"Invalid API key\"",
|
|
"description": "The key ID was not found or the token is wrong. API keys can only be viewed once when created. If you lost it, delete the old key and create a new one."
|
|
},
|
|
"connectionRefused": {
|
|
"title": "Connection refused / timeout",
|
|
"description": "Make sure the URL is reachable from your AI client. If Homarr runs behind a reverse proxy or in Docker, use the external URL (not {localhost}). Verify the port is correct (default: 7575 for Docker)."
|
|
},
|
|
"toolsNotAppearing": {
|
|
"title": "Tools not appearing",
|
|
"description": "Some tools require specific integrations to be configured (e.g. Docker, Overseerr). The tool list depends on what's available in your Homarr instance."
|
|
}
|
|
},
|
|
"copy": "Copy",
|
|
"oneClick": {
|
|
"title": "Install in One Click",
|
|
"subtitle": "Uses OAuth — authenticate in your browser on first use",
|
|
"vsCode": "Install in VS Code",
|
|
"cursor": "Install in Cursor",
|
|
"copyUrl": "Copy MCP URL",
|
|
"copied": "Copied!",
|
|
"copyHint": "For ChatGPT, Claude Code, or any MCP client",
|
|
"manualConfig": "Manual Configuration"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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.",
|
|
"typePrompt": "Type \"{phrase}\" to continue",
|
|
"submit": "Export Database",
|
|
"cancel": "Cancel"
|
|
}
|
|
},
|
|
"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.",
|
|
"warning": "Restoring a backup will completely replace your current database and restart the application. This action cannot be undone.",
|
|
"dropzone": {
|
|
"title": "Drop your backup ZIP here or click to browse",
|
|
"description": "Only .zip files from a Homarr SQLite backup are accepted"
|
|
},
|
|
"changeFile": "Change file",
|
|
"button": "Restore Database",
|
|
"success": {
|
|
"title": "Restore Complete",
|
|
"message": "Database has been restored successfully. The application is restarting..."
|
|
},
|
|
"error": "Import failed"
|
|
},
|
|
"preview": {
|
|
"title": "Backup Contents",
|
|
"exported": "Exported {date}",
|
|
"loading": "Analyzing backup file...",
|
|
"errorTitle": "Preview Error",
|
|
"entity": "Entity",
|
|
"count": "Count",
|
|
"boards": "Boards",
|
|
"entities": {
|
|
"board": "Boards",
|
|
"user": "Users",
|
|
"app": "Apps",
|
|
"integration": "Integrations",
|
|
"item": "Widgets",
|
|
"media": "Media",
|
|
"search_engine": "Search Engines"
|
|
},
|
|
"analyzeError": "Failed to analyze backup file",
|
|
"invalidMissingMetadata": "Invalid backup: missing metadata.json",
|
|
"invalidMissingDb": "Invalid backup: missing db.sqlite"
|
|
},
|
|
"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",
|
|
"tryAgain": "Try again",
|
|
"analysisError": "Analysis Error",
|
|
"preview": {
|
|
"title": "Backup Contents",
|
|
"exported": "Exported {date}",
|
|
"entity": "Entity",
|
|
"count": "Count",
|
|
"boards": "Boards",
|
|
"entities": {
|
|
"board": "Boards",
|
|
"user": "Users",
|
|
"app": "Apps",
|
|
"integration": "Integrations",
|
|
"item": "Widgets",
|
|
"media": "Media",
|
|
"search_engine": "Search Engines"
|
|
},
|
|
"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)",
|
|
"upToDate": "Up to date",
|
|
"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.",
|
|
"typePrompt": "Type \"{phrase}\" to continue",
|
|
"cancel": "Cancel",
|
|
"submit": "Restore Database"
|
|
},
|
|
"progress": {
|
|
"title": "Restoring database...",
|
|
"extracting": "Extracting backup archive",
|
|
"migrating": "Applying database migrations",
|
|
"encrypting": "Re-encrypting integration secrets",
|
|
"swapping": "Replacing database file",
|
|
"restarting": "Restarting server"
|
|
},
|
|
"complete": {
|
|
"title": "Restore Complete",
|
|
"message": "Database has been restored successfully. The server is restarting — please refresh the page in a few seconds."
|
|
},
|
|
"failed": {
|
|
"title": "Restore Failed"
|
|
},
|
|
"invalidMissingMetadata": "Invalid backup: missing metadata.json",
|
|
"invalidMissingDb": "Invalid backup: missing db.sqlite",
|
|
"analyzeError": "Failed to analyze backup"
|
|
}
|
|
}
|
|
},
|
|
"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",
|
|
"openAssistant": "Open Homarr Assistant"
|
|
},
|
|
"note": "Tip: Mod refers to both Ctrl key and ⌘ key on macOS"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"docker": {
|
|
"title": "Containers",
|
|
"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": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"state": {
|
|
"label": "State",
|
|
"option": {
|
|
"created": "Created",
|
|
"running": "Running",
|
|
"paused": "Paused",
|
|
"restarting": "Restarting",
|
|
"exited": "Exited",
|
|
"removing": "Removing",
|
|
"dead": "Dead"
|
|
}
|
|
},
|
|
"stats": {
|
|
"cpu": {
|
|
"label": "CPU"
|
|
},
|
|
"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": {
|
|
"label": "Remove",
|
|
"confirm": "Click again to remove permanently",
|
|
"notification": {
|
|
"success": {
|
|
"title": "Containers removed",
|
|
"message": "The containers were removed successfully"
|
|
},
|
|
"error": {
|
|
"title": "Containers not removed",
|
|
"message": "The containers could not be removed"
|
|
}
|
|
}
|
|
},
|
|
"refresh": {
|
|
"label": "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",
|
|
"noColumns": "Select at least one column in the widget settings"
|
|
}
|
|
},
|
|
"kubernetes": {
|
|
"cluster": {
|
|
"title": "Cluster Dashboard",
|
|
"label": "Cluster",
|
|
"providers": "Providers",
|
|
"version": "Version",
|
|
"architecture": "Architecture",
|
|
"capacity": {
|
|
"title": "Capacity",
|
|
"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": {
|
|
"label": "Nodes",
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"state": {
|
|
"label": "State",
|
|
"option": {
|
|
"ready": "Ready",
|
|
"NotReady": "Not Ready"
|
|
}
|
|
},
|
|
"cpu": {
|
|
"label": "CPU"
|
|
},
|
|
"memory": {
|
|
"label": "RAM"
|
|
},
|
|
"pods": {
|
|
"label": "Pods"
|
|
},
|
|
"operatingSystem": {
|
|
"label": "OS"
|
|
},
|
|
"architecture": {
|
|
"label": "Architecture"
|
|
},
|
|
"kubernetesVersion": {
|
|
"label": "Kubernetes version"
|
|
},
|
|
"creationTimestamp": {
|
|
"label": "Created"
|
|
}
|
|
},
|
|
"table": {
|
|
"search": "Search {count} nodes"
|
|
}
|
|
},
|
|
"namespaces": {
|
|
"label": "Namespaces",
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"state": {
|
|
"label": "State",
|
|
"option": {
|
|
"active": "Active",
|
|
"terminating": "Terminating"
|
|
}
|
|
},
|
|
"creationTimestamp": {
|
|
"label": "Created"
|
|
}
|
|
},
|
|
"table": {
|
|
"search": "Search {count} namespaces"
|
|
}
|
|
},
|
|
"ingresses": {
|
|
"label": "Ingresses",
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"namespace": {
|
|
"label": "Namespace"
|
|
},
|
|
"className": {
|
|
"label": "Class name"
|
|
},
|
|
"rulesAndPaths": {
|
|
"label": "Rules & paths"
|
|
},
|
|
"creationTimestamp": {
|
|
"label": "Created"
|
|
}
|
|
},
|
|
"table": {
|
|
"search": "Search {count} ingresses"
|
|
}
|
|
},
|
|
"services": {
|
|
"label": "Services",
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"namespace": {
|
|
"label": "Namespace"
|
|
},
|
|
"type": {
|
|
"label": "Type"
|
|
},
|
|
"ports": {
|
|
"label": "Ports"
|
|
},
|
|
"targetPorts": {
|
|
"label": "Target ports"
|
|
},
|
|
"clusterIP": {
|
|
"label": "Cluster IP"
|
|
},
|
|
"creationTimestamp": {
|
|
"label": "Created"
|
|
}
|
|
},
|
|
"table": {
|
|
"search": "Search {count} services"
|
|
}
|
|
},
|
|
"pods": {
|
|
"label": "Pods",
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"namespace": {
|
|
"label": "Namespace"
|
|
},
|
|
"image": {
|
|
"label": "Image"
|
|
},
|
|
"applicationType": {
|
|
"label": "Application type"
|
|
},
|
|
"status": {
|
|
"label": "Status"
|
|
},
|
|
"creationTimestamp": {
|
|
"label": "Created"
|
|
}
|
|
},
|
|
"table": {
|
|
"search": "Search {count} pods"
|
|
}
|
|
},
|
|
"secrets": {
|
|
"label": "Secrets",
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"namespace": {
|
|
"label": "namespace"
|
|
},
|
|
"type": {
|
|
"label": "type"
|
|
},
|
|
"creationTimestamp": {
|
|
"label": "Created"
|
|
}
|
|
},
|
|
"table": {
|
|
"search": "Search {count} secrets"
|
|
}
|
|
},
|
|
"configmaps": {
|
|
"label": "ConfigMaps",
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"namespace": {
|
|
"label": "namespace"
|
|
},
|
|
"creationTimestamp": {
|
|
"label": "Created"
|
|
}
|
|
},
|
|
"table": {
|
|
"search": "Search {count} configMaps"
|
|
}
|
|
},
|
|
"volumes": {
|
|
"label": "Volumes",
|
|
"field": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"namespace": {
|
|
"label": "Namespace"
|
|
},
|
|
"accessModes": {
|
|
"label": "Access Modes"
|
|
},
|
|
"storage": {
|
|
"label": "Storage"
|
|
},
|
|
"storageClassName": {
|
|
"label": "Storage Class Name"
|
|
},
|
|
"volumeMode": {
|
|
"label": "Volume Mode"
|
|
},
|
|
"volumeName": {
|
|
"label": "Volume Name"
|
|
},
|
|
"status": {
|
|
"label": "Status"
|
|
},
|
|
"creationTimestamp": {
|
|
"label": "Created"
|
|
}
|
|
},
|
|
"table": {
|
|
"search": "Search {count} volumes"
|
|
}
|
|
},
|
|
"error": {
|
|
"internalServerError": "Failed to fetch Kubernetes data"
|
|
}
|
|
},
|
|
"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",
|
|
"boards": {
|
|
"label": "Boards"
|
|
},
|
|
"integrations": {
|
|
"label": "Integrations",
|
|
"edit": {
|
|
"label": "Edit"
|
|
},
|
|
"new": {
|
|
"label": "New"
|
|
}
|
|
},
|
|
"search-engines": {
|
|
"label": "Search engines",
|
|
"new": {
|
|
"label": "New"
|
|
},
|
|
"edit": {
|
|
"label": "Edit"
|
|
}
|
|
},
|
|
"medias": {
|
|
"label": "Medias"
|
|
},
|
|
"assistant": {
|
|
"label": "Assistant"
|
|
},
|
|
"apps": {
|
|
"label": "Apps",
|
|
"new": {
|
|
"label": "New"
|
|
},
|
|
"edit": {
|
|
"label": "Edit"
|
|
}
|
|
},
|
|
"custom-widgets": {
|
|
"label": "Custom widgets",
|
|
"new": {
|
|
"label": "New"
|
|
},
|
|
"edit": {
|
|
"label": "Edit",
|
|
"flow": {
|
|
"label": "Flow"
|
|
}
|
|
}
|
|
},
|
|
"workshop": {
|
|
"label": "Workshop"
|
|
},
|
|
"users": {
|
|
"label": "Users",
|
|
"create": {
|
|
"label": "Create"
|
|
},
|
|
"general": "General",
|
|
"security": "Security",
|
|
"board": "Boards",
|
|
"groups": {
|
|
"label": "Groups"
|
|
},
|
|
"invites": {
|
|
"label": "Invites"
|
|
}
|
|
},
|
|
"tools": {
|
|
"label": "Tools",
|
|
"tasks": {
|
|
"label": "Tasks"
|
|
},
|
|
"docker": {
|
|
"label": "Docker",
|
|
"logs": {
|
|
"label": "Logs"
|
|
}
|
|
},
|
|
"kubernetes": {
|
|
"label": "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"
|
|
}
|
|
},
|
|
"logs": {
|
|
"label": "Logs"
|
|
},
|
|
"certificates": {
|
|
"label": "Certificates",
|
|
"hostnames": {
|
|
"label": "Hostnames"
|
|
}
|
|
}
|
|
},
|
|
"settings": {
|
|
"label": "Settings"
|
|
},
|
|
"about": {
|
|
"label": "About"
|
|
}
|
|
}
|
|
},
|
|
"search": {
|
|
"placeholder": "Search for anything",
|
|
"nothingFound": "Nothing found",
|
|
"error": {
|
|
"fetch": "An error occurred while fetching data"
|
|
},
|
|
"mode": {
|
|
"appIntegrationBoard": {
|
|
"help": "Search for apps, integrations or boards",
|
|
"group": {
|
|
"app": {
|
|
"title": "Apps",
|
|
"children": {
|
|
"action": {
|
|
"open": {
|
|
"label": "Open app url"
|
|
},
|
|
"edit": {
|
|
"label": "Edit app"
|
|
}
|
|
},
|
|
"detail": {
|
|
"title": "Select an action for the app"
|
|
}
|
|
}
|
|
},
|
|
"board": {
|
|
"title": "Boards",
|
|
"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"
|
|
}
|
|
}
|
|
},
|
|
"integration": {
|
|
"title": "Integrations"
|
|
}
|
|
}
|
|
},
|
|
"command": {
|
|
"help": "Activate command mode",
|
|
"group": {
|
|
"localCommand": {
|
|
"title": "Local commands"
|
|
},
|
|
"globalCommand": {
|
|
"title": "Global commands",
|
|
"option": {
|
|
"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"
|
|
},
|
|
"importBoard": {
|
|
"label": "Import a 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": {
|
|
"label": "Default search engine",
|
|
"children": {
|
|
"detail": {
|
|
"title": "Select your default search engine"
|
|
}
|
|
}
|
|
},
|
|
"openSearchInNewTab": {
|
|
"label": "Open search results in new tab",
|
|
"children": {
|
|
"detail": {
|
|
"title": "Open search results in new tab"
|
|
}
|
|
}
|
|
},
|
|
"ddgBangs": {
|
|
"label": "Enable DuckDuckGo bangs",
|
|
"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": {
|
|
"label": "Use icons for pings",
|
|
"children": {
|
|
"detail": {
|
|
"title": "Use icons for pings"
|
|
}
|
|
}
|
|
},
|
|
"enableRightClickOnWidgets": {
|
|
"label": "Enable right-click on widgets",
|
|
"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.",
|
|
"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": {
|
|
"title": "Search engines",
|
|
"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"
|
|
},
|
|
"help": {
|
|
"title": "Help",
|
|
"option": {
|
|
"documentation": {
|
|
"label": "Documentation"
|
|
},
|
|
"submitIssue": {
|
|
"label": "Submit an issue"
|
|
},
|
|
"discord": {
|
|
"label": "Community Discord"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"home": {
|
|
"group": {
|
|
"search": {
|
|
"title": "Search",
|
|
"option": {
|
|
"other": {
|
|
"label": "Search with another search engine"
|
|
},
|
|
"no-default": {
|
|
"label": "No default search engine",
|
|
"description": "Set a default search engine in preferences"
|
|
},
|
|
"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": {
|
|
"title": "Users",
|
|
"children": {
|
|
"action": {
|
|
"detail": {
|
|
"label": "Show user details"
|
|
}
|
|
},
|
|
"detail": {
|
|
"title": "Select an action for the user"
|
|
}
|
|
}
|
|
},
|
|
"group": {
|
|
"title": "Groups",
|
|
"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": {
|
|
"name": {
|
|
"label": "Name"
|
|
},
|
|
"short": {
|
|
"label": "Short"
|
|
},
|
|
"urlTemplate": {
|
|
"label": "URL search template"
|
|
},
|
|
"description": {
|
|
"label": "Description"
|
|
}
|
|
},
|
|
"page": {
|
|
"list": {
|
|
"title": "Search engines",
|
|
"noResults": {
|
|
"title": "There are no search engines yet",
|
|
"action": "Create your first search engine"
|
|
},
|
|
"interactive": "Interactive, uses an 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": {
|
|
"title": "Changes applied successfully",
|
|
"message": "The search engine was saved successfully"
|
|
},
|
|
"error": {
|
|
"title": "Unable to apply changes",
|
|
"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": {
|
|
"level": {
|
|
"option": {
|
|
"debug": "Debug",
|
|
"info": "Info",
|
|
"warn": "Warn",
|
|
"error": "Error"
|
|
}
|
|
}
|
|
},
|
|
"onboardingTour": {
|
|
"learnMore": "Read the docs",
|
|
"next": "Next",
|
|
"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 — Sonarr, Radarr, Plex, Jellyfin, and 50+ more. 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."
|
|
}
|
|
}
|
|
}
|
|
}
|