Compare commits
50
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8dbe5a93d6 | ||
|
|
f748a12b58 | ||
|
|
6b746b09b5 | ||
|
|
e1eda534da | ||
|
|
09f4e6785b | ||
|
|
09f3989483 | ||
|
|
4cb004fce0 | ||
|
|
0ef2310776 | ||
|
|
b5bc8379ae | ||
|
|
43b82419e9 | ||
|
|
329d4727f1 | ||
|
|
9840644ca5 | ||
|
|
37d637dcae | ||
|
|
1584114e72 | ||
|
|
49498c870e | ||
|
|
5466ff5047 | ||
|
|
1e7b2e617b | ||
|
|
371803ac50 | ||
|
|
746ada97be | ||
|
|
5080f51a8d | ||
|
|
23404a27f1 | ||
|
|
dae6dedde5 | ||
|
|
caaee503c1 | ||
|
|
a356d61808 | ||
|
|
72bcbe8eff | ||
|
|
145365fab7 | ||
|
|
8c59abdde3 | ||
|
|
47869a3af4 | ||
|
|
5403b9c95e | ||
|
|
50445b560e | ||
|
|
18c465e81e | ||
|
|
eb5d5f8260 | ||
|
|
096d37be37 | ||
|
|
279a4b6add | ||
|
|
22954b8d26 | ||
|
|
92ebc05fbf | ||
|
|
79755c95d3 | ||
|
|
49b7080415 | ||
|
|
5b9f75eb45 | ||
|
|
6e2aa87102 | ||
|
|
17fbb0fc41 | ||
|
|
28be77b9c3 | ||
|
|
adddae6430 | ||
|
|
ef540e980f | ||
|
|
15675d95bd | ||
|
|
16e2f3f1e4 | ||
|
|
bf6b7912f9 | ||
|
|
ee8870b66b | ||
|
|
c6464e582e | ||
|
|
886e95d517 |
No files matched your search
@@ -31,6 +31,7 @@ body:
|
||||
label: Version
|
||||
description: What version of Homarr are you running?
|
||||
options:
|
||||
- 1.20.0
|
||||
- 1.19.1
|
||||
- 1.19.0
|
||||
- 1.18.0
|
||||
|
||||
@@ -1,3 +1,39 @@
|
||||
## [1.21.0](https://github.com/homarr-labs/homarr/compare/v1.20.0...v1.21.0) (2025-05-23)
|
||||
|
||||
### Features
|
||||
|
||||
* docker widget ([#2288](https://github.com/homarr-labs/homarr/issues/2288)) ([e1eda53](https://github.com/homarr-labs/homarr/commit/e1eda534da6d97655546f3140f9e36eca8817db3))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **deps:** update dependency @tabler/icons-react to ^3.33.0 ([#3132](https://github.com/homarr-labs/homarr/issues/3132)) ([ee8870b](https://github.com/homarr-labs/homarr/commit/ee8870b66bbcb8eeeef359ece9391a496198be0d))
|
||||
* **deps:** update dependency octokit to ^4.1.4 ([#3165](https://github.com/homarr-labs/homarr/issues/3165)) ([50445b5](https://github.com/homarr-labs/homarr/commit/50445b560edc3af2631f8d8d9aa81f3387d848f7))
|
||||
* **deps:** update dependency octokit to v5 ([#3156](https://github.com/homarr-labs/homarr/issues/3156)) ([8c59abd](https://github.com/homarr-labs/homarr/commit/8c59abdde3d8034f22a2b926b3291b55a0d492ea))
|
||||
* **deps:** update dependency swagger-ui-react to ^5.22.0 ([#3178](https://github.com/homarr-labs/homarr/issues/3178)) ([1e7b2e6](https://github.com/homarr-labs/homarr/commit/1e7b2e617b1437f0f98bc791e763bc49b6589b9e))
|
||||
* **deps:** update dependency undici to v7.10.0 ([#3158](https://github.com/homarr-labs/homarr/issues/3158)) ([eb5d5f8](https://github.com/homarr-labs/homarr/commit/eb5d5f8260cc9795806ecdb56fbb3f8d19858ed7))
|
||||
* **deps:** update dependency zod to ^3.25.12 ([#3172](https://github.com/homarr-labs/homarr/issues/3172)) ([caaee50](https://github.com/homarr-labs/homarr/commit/caaee503c128ff2a0b2a7de7a7c353484e4741a5))
|
||||
* **deps:** update dependency zod to ^3.25.13 ([#3173](https://github.com/homarr-labs/homarr/issues/3173)) ([dae6ded](https://github.com/homarr-labs/homarr/commit/dae6dedde544bf28fcdf87c71a9d585078527b82))
|
||||
* **deps:** update dependency zod to ^3.25.14 ([#3174](https://github.com/homarr-labs/homarr/issues/3174)) ([23404a2](https://github.com/homarr-labs/homarr/commit/23404a27f1a9dfec4e9126750f8d97e7c5eda572))
|
||||
* **deps:** update dependency zod to ^3.25.16 ([#3175](https://github.com/homarr-labs/homarr/issues/3175)) ([5080f51](https://github.com/homarr-labs/homarr/commit/5080f51a8dbe1b82571f356f7ae29ed7be69e18e))
|
||||
* **deps:** update dependency zod to ^3.25.17 ([#3177](https://github.com/homarr-labs/homarr/issues/3177)) ([371803a](https://github.com/homarr-labs/homarr/commit/371803ac509efd246367c812a6c0143e7aeda03f))
|
||||
* **deps:** update dependency zod to ^3.25.20 ([#3183](https://github.com/homarr-labs/homarr/issues/3183)) ([49498c8](https://github.com/homarr-labs/homarr/commit/49498c870e494b417e6c63d8547a4c0ffd93768b))
|
||||
* **deps:** update dependency zod to ^3.25.21 ([#3187](https://github.com/homarr-labs/homarr/issues/3187)) ([37d637d](https://github.com/homarr-labs/homarr/commit/37d637dcae6cbf62efda25a8dc01eedba66f2c74))
|
||||
* **deps:** update dependency zod to ^3.25.23 ([#3188](https://github.com/homarr-labs/homarr/issues/3188)) ([9840644](https://github.com/homarr-labs/homarr/commit/9840644ca50d3157223e7da0cf895f2e750afc58))
|
||||
* **deps:** update dependency zod to ^3.25.3 ([#3148](https://github.com/homarr-labs/homarr/issues/3148)) ([6e2aa87](https://github.com/homarr-labs/homarr/commit/6e2aa87102b72319236483b9a1d3e5ddd6fe2c82))
|
||||
* **deps:** update dependency zod to ^3.25.4 ([#3150](https://github.com/homarr-labs/homarr/issues/3150)) ([49b7080](https://github.com/homarr-labs/homarr/commit/49b7080415aaeee576507d48e8cda18acc9943a8))
|
||||
* **deps:** update dependency zod to ^3.25.5 ([#3152](https://github.com/homarr-labs/homarr/issues/3152)) ([79755c9](https://github.com/homarr-labs/homarr/commit/79755c95d3cf58680e434f0113c130db9f649d96))
|
||||
* **deps:** update dependency zod to ^3.25.6 ([#3153](https://github.com/homarr-labs/homarr/issues/3153)) ([92ebc05](https://github.com/homarr-labs/homarr/commit/92ebc05fbfded6d20d242ad477cb0dc30243e8cc))
|
||||
* **deps:** update dependency zod to ^3.25.7 ([#3154](https://github.com/homarr-labs/homarr/issues/3154)) ([22954b8](https://github.com/homarr-labs/homarr/commit/22954b8d2637cdea9a6502cab2d3d40359fa098f))
|
||||
* **deps:** update dependency zod to ^3.25.8 ([#3170](https://github.com/homarr-labs/homarr/issues/3170)) ([72bcbe8](https://github.com/homarr-labs/homarr/commit/72bcbe8effe47fdfb6a94de8defc0d3c12e7c754))
|
||||
* **deps:** update dependency zod-validation-error to ^3.4.1 ([#3127](https://github.com/homarr-labs/homarr/issues/3127)) ([886e95d](https://github.com/homarr-labs/homarr/commit/886e95d51714ce20e03d32b4c2cfb673e7e4c218))
|
||||
* **deps:** update tanstack-query monorepo to ^5.76.2 ([#3186](https://github.com/homarr-labs/homarr/issues/3186)) ([1584114](https://github.com/homarr-labs/homarr/commit/1584114e72246a018b9f49a859e49f7fb985009d))
|
||||
* **deps:** update testcontainers-node monorepo to ^10.27.0 ([#3159](https://github.com/homarr-labs/homarr/issues/3159)) ([18c465e](https://github.com/homarr-labs/homarr/commit/18c465e81e92cf58b7e32bcb70f1ab404a03a135))
|
||||
* **deps:** update testcontainers-node monorepo to ^10.28.0 ([#3191](https://github.com/homarr-labs/homarr/issues/3191)) ([43b8241](https://github.com/homarr-labs/homarr/commit/43b82419e9396f0b80bafa0a707d575c3732dc5b))
|
||||
* **downloads:** reordering columns in widget does not work ([#3194](https://github.com/homarr-labs/homarr/issues/3194)) ([09f4e67](https://github.com/homarr-labs/homarr/commit/09f4e6785b2ce38da3b52003e9c9300cdd0feb85))
|
||||
* esbuild not part of dependencies ([#3139](https://github.com/homarr-labs/homarr/issues/3139)) ([ef540e9](https://github.com/homarr-labs/homarr/commit/ef540e980f90f730020ef081dd105e33b0671232))
|
||||
* **items:** resize handle overlaps header ([#3193](https://github.com/homarr-labs/homarr/issues/3193)) ([09f3989](https://github.com/homarr-labs/homarr/commit/09f398948348fb402600506571a967ba405fbafb))
|
||||
* **releases-widget:** add hardcoded css classNames([#3181](https://github.com/homarr-labs/homarr/issues/3181)) ([4cb004f](https://github.com/homarr-labs/homarr/commit/4cb004fce0750da339f603b944de55135faa4bfa))
|
||||
|
||||
## [1.20.0](https://github.com/homarr-labs/homarr/compare/v1.19.1...v1.20.0) (2025-05-16)
|
||||
|
||||
### Features
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
FROM node:22.15.1-alpine AS base
|
||||
FROM node:22.16.0-alpine AS base
|
||||
|
||||
FROM base AS builder
|
||||
RUN apk add --no-cache libc6-compat
|
||||
|
||||
@@ -55,10 +55,10 @@
|
||||
"@mantine/modals": "^8.0.1",
|
||||
"@mantine/tiptap": "^8.0.1",
|
||||
"@million/lint": "1.0.14",
|
||||
"@tabler/icons-react": "^3.31.0",
|
||||
"@tanstack/react-query": "^5.76.1",
|
||||
"@tanstack/react-query-devtools": "^5.76.1",
|
||||
"@tanstack/react-query-next-experimental": "^5.76.1",
|
||||
"@tabler/icons-react": "^3.33.0",
|
||||
"@tanstack/react-query": "^5.76.2",
|
||||
"@tanstack/react-query-devtools": "^5.76.2",
|
||||
"@tanstack/react-query-next-experimental": "^5.76.2",
|
||||
"@trpc/client": "^11.1.2",
|
||||
"@trpc/next": "^11.1.2",
|
||||
"@trpc/react-query": "^11.1.2",
|
||||
@@ -83,22 +83,22 @@
|
||||
"react-simple-code-editor": "^0.14.1",
|
||||
"sass": "^1.89.0",
|
||||
"superjson": "2.2.2",
|
||||
"swagger-ui-react": "^5.21.0",
|
||||
"swagger-ui-react": "^5.22.0",
|
||||
"use-deep-compare-effect": "^1.8.1",
|
||||
"zod": "^3.24.4"
|
||||
"zod": "^3.25.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/chroma-js": "3.1.1",
|
||||
"@types/node": "^22.15.18",
|
||||
"@types/node": "^22.15.21",
|
||||
"@types/prismjs": "^1.26.5",
|
||||
"@types/react": "19.1.4",
|
||||
"@types/react": "19.1.5",
|
||||
"@types/react-dom": "19.1.5",
|
||||
"@types/swagger-ui-react": "^5.18.0",
|
||||
"concurrently": "^9.1.2",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"node-loader": "^2.1.0",
|
||||
"prettier": "^3.5.3",
|
||||
"typescript": "^5.8.3"
|
||||
|
||||
@@ -17,6 +17,7 @@ import type { RouterOutputs } from "@homarr/api";
|
||||
import { clientApi } from "@homarr/api/client";
|
||||
import { useTimeAgo } from "@homarr/common";
|
||||
import type { ContainerState } from "@homarr/docker";
|
||||
import { containerStateColorMap } from "@homarr/docker/shared";
|
||||
import { useModalAction } from "@homarr/modals";
|
||||
import { AddDockerAppToHomarr } from "@homarr/modals-collection";
|
||||
import { showErrorNotification, showSuccessNotification } from "@homarr/notifications";
|
||||
@@ -244,21 +245,11 @@ const ContainerActionBarButton = (props: ContainerActionBarButtonProps) => {
|
||||
);
|
||||
};
|
||||
|
||||
const containerStates = {
|
||||
created: "cyan",
|
||||
running: "green",
|
||||
paused: "yellow",
|
||||
restarting: "orange",
|
||||
exited: "red",
|
||||
removing: "pink",
|
||||
dead: "dark",
|
||||
} satisfies Record<ContainerState, MantineColor>;
|
||||
|
||||
const ContainerStateBadge = ({ state }: { state: ContainerState }) => {
|
||||
const t = useScopedI18n("docker.field.state.option");
|
||||
|
||||
return (
|
||||
<Badge size="lg" radius="sm" variant="light" w={120} color={containerStates[state]}>
|
||||
<Badge size="lg" radius="sm" variant="light" w={120} color={containerStateColorMap[state]}>
|
||||
{t(state)}
|
||||
</Badge>
|
||||
);
|
||||
|
||||
@@ -125,8 +125,8 @@ const InnerContent = ({ item, ...dimensions }: InnerContentProps) => {
|
||||
setOptions={(partialNewOptions) =>
|
||||
updateOptions({
|
||||
newOptions: {
|
||||
...partialNewOptions.newOptions,
|
||||
...options,
|
||||
...partialNewOptions.newOptions,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@@ -6,6 +6,12 @@
|
||||
--gridstack-cell-size: 0;
|
||||
}
|
||||
|
||||
.ui-resizable-handle {
|
||||
// Override default z-index of 100 to prevent it from being on top of the header.
|
||||
// See https://github.com/homarr-labs/homarr/issues/1999
|
||||
z-index: 1 !important;
|
||||
}
|
||||
|
||||
.grid-stack-placeholder > .placeholder-content {
|
||||
background-color: rgb(248, 249, 250) !important;
|
||||
border-radius: 12px;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"main": "./src/main.ts",
|
||||
"types": "./src/main.ts",
|
||||
"scripts": {
|
||||
"build": "esbuild src/main.ts --bundle --platform=node --loader:.scss=text --external:@opentelemetry/api --external:deasync --outfile=tasks.cjs",
|
||||
"build": "esbuild src/main.ts --bundle --platform=node --loader:.scss=text --external:*.node --external:@opentelemetry/api --external:deasync --outfile=tasks.cjs",
|
||||
"clean": "rm -rf .turbo node_modules",
|
||||
"dev": "pnpm with-env tsx ./src/main.ts",
|
||||
"format": "prettier --check . --ignore-path ../../.gitignore",
|
||||
@@ -38,15 +38,16 @@
|
||||
"dayjs": "^1.11.13",
|
||||
"dotenv": "^16.5.0",
|
||||
"superjson": "2.2.2",
|
||||
"undici": "7.9.0"
|
||||
"undici": "7.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/node": "^22.15.18",
|
||||
"@types/node": "^22.15.21",
|
||||
"dotenv-cli": "^8.0.0",
|
||||
"eslint": "^9.26.0",
|
||||
"esbuild": "^0.25.4",
|
||||
"eslint": "^9.27.0",
|
||||
"prettier": "^3.5.3",
|
||||
"tsx": "4.19.4",
|
||||
"typescript": "^5.8.3"
|
||||
|
||||
@@ -34,7 +34,8 @@
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/ws": "^8.18.1",
|
||||
"eslint": "^9.26.0",
|
||||
"esbuild": "^0.25.4",
|
||||
"eslint": "^9.27.0",
|
||||
"prettier": "^3.5.3",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
|
||||
+9
-9
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "homarr",
|
||||
"version": "1.20.0",
|
||||
"version": "1.21.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "cross-env CI=true turbo build",
|
||||
@@ -39,23 +39,23 @@
|
||||
"@semantic-release/npm": "^12.0.1",
|
||||
"@semantic-release/release-notes-generator": "^14.0.3",
|
||||
"@turbo/gen": "^2.5.3",
|
||||
"@vitejs/plugin-react": "^4.4.1",
|
||||
"@vitest/coverage-v8": "^3.1.3",
|
||||
"@vitest/ui": "^3.1.3",
|
||||
"@vitejs/plugin-react": "^4.5.0",
|
||||
"@vitest/coverage-v8": "^3.1.4",
|
||||
"@vitest/ui": "^3.1.4",
|
||||
"conventional-changelog-conventionalcommits": "^8.0.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"jsdom": "^26.1.0",
|
||||
"prettier": "^3.5.3",
|
||||
"semantic-release": "^24.2.3",
|
||||
"testcontainers": "^10.26.0",
|
||||
"semantic-release": "^24.2.4",
|
||||
"testcontainers": "^10.28.0",
|
||||
"turbo": "^2.5.3",
|
||||
"typescript": "^5.8.3",
|
||||
"vite-tsconfig-paths": "^5.1.4",
|
||||
"vitest": "^3.1.3"
|
||||
"vitest": "^3.1.4"
|
||||
},
|
||||
"packageManager": "pnpm@10.11.0",
|
||||
"engines": {
|
||||
"node": ">=22.15.1"
|
||||
"node": ">=22.16.0"
|
||||
},
|
||||
"pnpm": {
|
||||
"onlyBuiltDependencies": [
|
||||
@@ -70,7 +70,7 @@
|
||||
"tree-sitter-json"
|
||||
],
|
||||
"overrides": {
|
||||
"proxmox-api>undici": "7.9.0"
|
||||
"proxmox-api>undici": "7.10.0"
|
||||
},
|
||||
"allowUnusedPatches": true,
|
||||
"ignoredBuiltDependencies": [
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@
|
||||
"@homarr/server-settings": "workspace:^0.1.0",
|
||||
"@homarr/validation": "workspace:^0.1.0",
|
||||
"@kubernetes/client-node": "^1.2.0",
|
||||
"@tanstack/react-query": "^5.76.1",
|
||||
"@tanstack/react-query": "^5.76.2",
|
||||
"@trpc/client": "^11.1.2",
|
||||
"@trpc/react-query": "^11.1.2",
|
||||
"@trpc/server": "^11.1.2",
|
||||
@@ -52,13 +52,13 @@
|
||||
"react-dom": "19.1.0",
|
||||
"superjson": "2.2.2",
|
||||
"trpc-to-openapi": "^2.2.0",
|
||||
"zod": "^3.24.4"
|
||||
"zod": "^3.25.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"prettier": "^3.5.3",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
|
||||
@@ -1,90 +1,48 @@
|
||||
import { TRPCError } from "@trpc/server";
|
||||
import { observable } from "@trpc/server/observable";
|
||||
import { z } from "zod";
|
||||
|
||||
import { db, like, or } from "@homarr/db";
|
||||
import { icons } from "@homarr/db/schema";
|
||||
import type { Container, ContainerState, Docker, Port } from "@homarr/docker";
|
||||
import { DockerSingleton } from "@homarr/docker";
|
||||
import type { Container, ContainerInfo, ContainerState, Docker, Port } from "@homarr/docker";
|
||||
import { logger } from "@homarr/log";
|
||||
import { createCacheChannel } from "@homarr/redis";
|
||||
import { dockerContainersRequestHandler } from "@homarr/request-handler/docker";
|
||||
|
||||
import { dockerMiddleware } from "../../middlewares/docker";
|
||||
import { createTRPCRouter, permissionRequiredProcedure } from "../../trpc";
|
||||
|
||||
const dockerCache = createCacheChannel<{
|
||||
containers: (ContainerInfo & { instance: string; iconUrl: string | null })[];
|
||||
}>("docker-containers", 5 * 60 * 1000);
|
||||
|
||||
export const dockerRouter = createTRPCRouter({
|
||||
getContainers: permissionRequiredProcedure
|
||||
.requiresPermission("admin")
|
||||
.concat(dockerMiddleware())
|
||||
.query(async () => {
|
||||
const result = await dockerCache
|
||||
.consumeAsync(async () => {
|
||||
const dockerInstances = DockerSingleton.getInstances();
|
||||
const containers = await Promise.all(
|
||||
// Return all the containers of all the instances into only one item
|
||||
dockerInstances.map(({ instance, host: key }) =>
|
||||
instance.listContainers({ all: true }).then((containers) =>
|
||||
containers.map((container) => ({
|
||||
...container,
|
||||
instance: key,
|
||||
})),
|
||||
),
|
||||
),
|
||||
).then((containers) => containers.flat());
|
||||
|
||||
const extractImage = (container: ContainerInfo) => container.Image.split("/").at(-1)?.split(":").at(0) ?? "";
|
||||
const likeQueries = containers.map((container) => like(icons.name, `%${extractImage(container)}%`));
|
||||
const dbIcons =
|
||||
likeQueries.length >= 1
|
||||
? await db.query.icons.findMany({
|
||||
where: or(...likeQueries),
|
||||
})
|
||||
: [];
|
||||
|
||||
return {
|
||||
containers: containers.map((container) => ({
|
||||
...container,
|
||||
iconUrl:
|
||||
dbIcons.find((icon) => {
|
||||
const extractedImage = extractImage(container);
|
||||
if (!extractedImage) return false;
|
||||
return icon.name.toLowerCase().includes(extractedImage.toLowerCase());
|
||||
})?.url ?? null,
|
||||
})),
|
||||
};
|
||||
})
|
||||
.catch((error) => {
|
||||
logger.error(error);
|
||||
return {
|
||||
isError: true,
|
||||
error: error as unknown,
|
||||
};
|
||||
});
|
||||
|
||||
if ("isError" in result) {
|
||||
throw new TRPCError({
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
message: "An error occurred while fetching the containers",
|
||||
cause: result.error,
|
||||
});
|
||||
}
|
||||
const innerHandler = dockerContainersRequestHandler.handler({});
|
||||
const result = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false });
|
||||
|
||||
const { data, timestamp } = result;
|
||||
|
||||
return {
|
||||
containers: sanitizeContainers(data.containers),
|
||||
containers: data satisfies DockerContainer[],
|
||||
timestamp,
|
||||
};
|
||||
}),
|
||||
subscribeContainers: permissionRequiredProcedure
|
||||
.requiresPermission("admin")
|
||||
.concat(dockerMiddleware())
|
||||
.subscription(() => {
|
||||
return observable<DockerContainer[]>((emit) => {
|
||||
const innerHandler = dockerContainersRequestHandler.handler({});
|
||||
const unsubscribe = innerHandler.subscribe((data) => {
|
||||
emit.next(data);
|
||||
});
|
||||
|
||||
return unsubscribe;
|
||||
});
|
||||
}),
|
||||
invalidate: permissionRequiredProcedure
|
||||
.requiresPermission("admin")
|
||||
.concat(dockerMiddleware())
|
||||
.mutation(async () => {
|
||||
await dockerCache.invalidateAsync();
|
||||
return;
|
||||
const innerHandler = dockerContainersRequestHandler.handler({});
|
||||
await innerHandler.invalidateAsync();
|
||||
}),
|
||||
startAll: permissionRequiredProcedure
|
||||
.requiresPermission("admin")
|
||||
@@ -98,7 +56,8 @@ export const dockerRouter = createTRPCRouter({
|
||||
}),
|
||||
);
|
||||
|
||||
await dockerCache.invalidateAsync();
|
||||
const innerHandler = dockerContainersRequestHandler.handler({});
|
||||
await innerHandler.invalidateAsync();
|
||||
}),
|
||||
stopAll: permissionRequiredProcedure
|
||||
.requiresPermission("admin")
|
||||
@@ -112,7 +71,8 @@ export const dockerRouter = createTRPCRouter({
|
||||
}),
|
||||
);
|
||||
|
||||
await dockerCache.invalidateAsync();
|
||||
const innerHandler = dockerContainersRequestHandler.handler({});
|
||||
await innerHandler.invalidateAsync();
|
||||
}),
|
||||
restartAll: permissionRequiredProcedure
|
||||
.requiresPermission("admin")
|
||||
@@ -126,7 +86,8 @@ export const dockerRouter = createTRPCRouter({
|
||||
}),
|
||||
);
|
||||
|
||||
await dockerCache.invalidateAsync();
|
||||
const innerHandler = dockerContainersRequestHandler.handler({});
|
||||
await innerHandler.invalidateAsync();
|
||||
}),
|
||||
removeAll: permissionRequiredProcedure
|
||||
.requiresPermission("admin")
|
||||
@@ -140,7 +101,8 @@ export const dockerRouter = createTRPCRouter({
|
||||
}),
|
||||
);
|
||||
|
||||
await dockerCache.invalidateAsync();
|
||||
const innerHandler = dockerContainersRequestHandler.handler({});
|
||||
await innerHandler.invalidateAsync();
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -180,20 +142,6 @@ interface DockerContainer {
|
||||
image: string;
|
||||
ports: Port[];
|
||||
iconUrl: string | null;
|
||||
}
|
||||
|
||||
function sanitizeContainers(
|
||||
containers: (ContainerInfo & { instance: string; iconUrl: string | null })[],
|
||||
): DockerContainer[] {
|
||||
return containers.map((container) => {
|
||||
return {
|
||||
name: container.Names[0]?.split("/")[1] ?? "Unknown",
|
||||
id: container.Id,
|
||||
instance: container.instance,
|
||||
state: container.State as ContainerState,
|
||||
image: container.Image,
|
||||
ports: container.Ports,
|
||||
iconUrl: container.iconUrl,
|
||||
};
|
||||
});
|
||||
cpuUsage: number;
|
||||
memoryUsage: number;
|
||||
}
|
||||
@@ -4,14 +4,26 @@ import { describe, expect, test, vi } from "vitest";
|
||||
import type { Session } from "@homarr/auth";
|
||||
import { objectKeys } from "@homarr/common";
|
||||
import type { Database } from "@homarr/db";
|
||||
import { getPermissionsWithChildren } from "@homarr/definitions";
|
||||
import type { GroupPermissionKey } from "@homarr/definitions";
|
||||
import { getPermissionsWithChildren } from "@homarr/definitions";
|
||||
|
||||
import type { RouterInputs } from "../../..";
|
||||
import { dockerRouter } from "../../docker/docker-router";
|
||||
|
||||
// Mock the auth module to return an empty session
|
||||
vi.mock("@homarr/auth", () => ({ auth: () => ({}) as Session }));
|
||||
vi.mock("@homarr/request-handler/docker", () => ({
|
||||
dockerContainersRequestHandler: {
|
||||
handler: () => ({
|
||||
getCachedOrUpdatedDataAsync: async () => {
|
||||
return await Promise.resolve({ containers: [] });
|
||||
},
|
||||
invalidateAsync: async () => {
|
||||
return await Promise.resolve();
|
||||
},
|
||||
}),
|
||||
},
|
||||
}));
|
||||
vi.mock("@homarr/redis", () => ({
|
||||
createCacheChannel: () => ({
|
||||
// eslint-disable-next-line @typescript-eslint/require-await
|
||||
@@ -22,6 +34,7 @@ vi.mock("@homarr/redis", () => ({
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
||||
invalidateAsync: async () => {},
|
||||
}),
|
||||
createWidgetOptionsChannel: () => ({}),
|
||||
}));
|
||||
|
||||
vi.mock("@homarr/docker/env", () => ({
|
||||
@@ -46,6 +59,7 @@ const validInputs: {
|
||||
[key in (typeof procedureKeys)[number]]: RouterInputs["docker"][key];
|
||||
} = {
|
||||
getContainers: undefined,
|
||||
subscribeContainers: undefined,
|
||||
startAll: { ids: ["1"] },
|
||||
stopAll: { ids: ["1"] },
|
||||
restartAll: { ids: ["1"] },
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
"next-auth": "5.0.0-beta.28",
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0",
|
||||
"zod": "^3.24.4"
|
||||
"zod": "^3.25.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
@@ -47,7 +47,7 @@
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/bcrypt": "5.0.2",
|
||||
"@types/cookies": "0.9.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"prettier": "^3.5.3",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -24,13 +24,13 @@
|
||||
"dependencies": {
|
||||
"@homarr/common": "workspace:^0.1.0",
|
||||
"@homarr/db": "workspace:^0.1.0",
|
||||
"undici": "7.9.0"
|
||||
"undici": "7.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,8 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"esbuild": "^0.25.4",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -33,15 +33,15 @@
|
||||
"next": "15.3.2",
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0",
|
||||
"undici": "7.9.0",
|
||||
"zod": "^3.24.4",
|
||||
"zod-validation-error": "^3.4.0"
|
||||
"undici": "7.10.0",
|
||||
"zod": "^3.25.23",
|
||||
"zod-validation-error": "^3.4.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,7 @@ export const cronJobs = {
|
||||
mediaTranscoding: { preventManualExecution: false },
|
||||
minecraftServerStatus: { preventManualExecution: false },
|
||||
networkController: { preventManualExecution: false },
|
||||
dockerContainers: { preventManualExecution: false },
|
||||
} satisfies Record<JobGroupKeys, { preventManualExecution?: boolean }>;
|
||||
|
||||
/**
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -32,7 +32,7 @@
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/node-cron": "^3.0.11",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import { analyticsJob } from "./jobs/analytics";
|
||||
import { dockerContainersJob } from "./jobs/docker";
|
||||
import { iconsUpdaterJob } from "./jobs/icons-updater";
|
||||
import { dnsHoleJob } from "./jobs/integrations/dns-hole";
|
||||
import { downloadsJob } from "./jobs/integrations/downloads";
|
||||
@@ -35,6 +36,7 @@ export const jobGroup = createCronJobGroup({
|
||||
updateChecker: updateCheckerJob,
|
||||
mediaTranscoding: mediaTranscodingJob,
|
||||
minecraftServerStatus: minecraftServerStatusJob,
|
||||
dockerContainers: dockerContainersJob,
|
||||
networkController: networkControllerJob,
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
import SuperJSON from "superjson";
|
||||
|
||||
import { EVERY_MINUTE } from "@homarr/cron-jobs-core/expressions";
|
||||
import { db, eq } from "@homarr/db";
|
||||
import { items } from "@homarr/db/schema";
|
||||
import { logger } from "@homarr/log";
|
||||
import { dockerContainersRequestHandler } from "@homarr/request-handler/docker";
|
||||
|
||||
import type { WidgetComponentProps } from "../../../widgets";
|
||||
import { createCronJob } from "../lib";
|
||||
|
||||
export const dockerContainersJob = createCronJob("dockerContainers", EVERY_MINUTE).withCallback(async () => {
|
||||
const dockerItems = await db.query.items.findMany({
|
||||
where: eq(items.kind, "dockerContainers"),
|
||||
});
|
||||
|
||||
await Promise.allSettled(
|
||||
dockerItems.map(async (item) => {
|
||||
try {
|
||||
const options = SuperJSON.parse<WidgetComponentProps<"dockerContainers">["options"]>(item.options);
|
||||
const innerHandler = dockerContainersRequestHandler.handler(options);
|
||||
await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: true });
|
||||
} catch (error) {
|
||||
logger.error("Failed to update Docker container status", { item, error });
|
||||
}
|
||||
}),
|
||||
);
|
||||
});
|
||||
@@ -46,7 +46,7 @@
|
||||
"@homarr/server-settings": "workspace:^0.1.0",
|
||||
"@mantine/core": "^8.0.1",
|
||||
"@paralleldrive/cuid2": "^2.2.2",
|
||||
"@testcontainers/mysql": "^10.26.0",
|
||||
"@testcontainers/mysql": "^10.28.0",
|
||||
"better-sqlite3": "^11.10.0",
|
||||
"dotenv": "^16.5.0",
|
||||
"drizzle-kit": "^0.31.1",
|
||||
@@ -60,7 +60,8 @@
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/better-sqlite3": "7.6.13",
|
||||
"dotenv-cli": "^8.0.0",
|
||||
"eslint": "^9.26.0",
|
||||
"esbuild": "^0.25.4",
|
||||
"eslint": "^9.27.0",
|
||||
"prettier": "^3.5.3",
|
||||
"tsx": "4.19.4",
|
||||
"typescript": "^5.8.3"
|
||||
|
||||
@@ -25,13 +25,13 @@
|
||||
"dependencies": {
|
||||
"@homarr/common": "workspace:^0.1.0",
|
||||
"fast-xml-parser": "^5.2.3",
|
||||
"zod": "^3.24.4"
|
||||
"zod": "^3.25.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"tsx": "4.19.4",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
|
||||
@@ -24,5 +24,6 @@ export const widgetKinds = [
|
||||
"indexerManager",
|
||||
"healthMonitoring",
|
||||
"releases",
|
||||
"dockerContainers",
|
||||
] as const;
|
||||
export type WidgetKind = (typeof widgetKinds)[number];
|
||||
@@ -6,6 +6,7 @@
|
||||
"type": "module",
|
||||
"exports": {
|
||||
".": "./index.ts",
|
||||
"./shared": "./src/shared.ts",
|
||||
"./env": "./src/env.ts"
|
||||
},
|
||||
"typesVersions": {
|
||||
@@ -31,8 +32,8 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/dockerode": "^3.3.38",
|
||||
"eslint": "^9.26.0",
|
||||
"@types/dockerode": "^3.3.39",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import type { MantineColor } from "@mantine/core";
|
||||
|
||||
import type { ContainerState } from ".";
|
||||
|
||||
export const containerStateColorMap = {
|
||||
created: "cyan",
|
||||
running: "green",
|
||||
paused: "yellow",
|
||||
restarting: "orange",
|
||||
exited: "red",
|
||||
removing: "pink",
|
||||
dead: "dark",
|
||||
} satisfies Record<ContainerState, MantineColor>;
|
||||
Vendored
+2
-2
@@ -24,13 +24,13 @@
|
||||
"prettier": "@homarr/prettier-config",
|
||||
"dependencies": {
|
||||
"@t3-oss/env-nextjs": "^0.13.4",
|
||||
"zod": "^3.24.4"
|
||||
"zod": "^3.25.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -27,13 +27,13 @@
|
||||
"@homarr/translation": "workspace:^0.1.0",
|
||||
"@homarr/validation": "workspace:^0.1.0",
|
||||
"@mantine/form": "^8.0.1",
|
||||
"zod": "^3.24.4"
|
||||
"zod": "^3.25.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -31,13 +31,13 @@
|
||||
"@homarr/validation": "workspace:^0.1.0",
|
||||
"@mantine/core": "^8.0.1",
|
||||
"react": "19.1.0",
|
||||
"zod": "^3.24.4"
|
||||
"zod": "^3.25.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -42,9 +42,9 @@
|
||||
"node-ical": "^0.20.1",
|
||||
"proxmox-api": "1.1.1",
|
||||
"tsdav": "^2.1.4",
|
||||
"undici": "7.9.0",
|
||||
"undici": "7.10.0",
|
||||
"xml2js": "^0.6.2",
|
||||
"zod": "^3.24.4"
|
||||
"zod": "^3.25.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
@@ -52,7 +52,7 @@
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/node-unifi": "^2.5.1",
|
||||
"@types/xml2js": "^0.4.14",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -184,20 +184,21 @@ export class OverseerrIntegration extends Integration implements ISearchableInte
|
||||
|
||||
public async approveRequestAsync(requestId: number): Promise<void> {
|
||||
logger.info(`Approving media request id='${requestId}' integration='${this.integration.name}'`);
|
||||
await fetchWithTrustedCertificatesAsync(this.url(`/api/v1/request/${requestId}/approve`), {
|
||||
const response = await fetchWithTrustedCertificatesAsync(this.url(`/api/v1/request/${requestId}/approve`), {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"X-Api-Key": this.getSecretValue("apiKey"),
|
||||
},
|
||||
}).then((response) => {
|
||||
if (!response.ok) {
|
||||
logger.error(
|
||||
`Failed to approve media request id='${requestId}' integration='${this.integration.name}' reason='${response.status} ${response.statusText}' url='${response.url}'`,
|
||||
);
|
||||
}
|
||||
|
||||
logger.info(`Successfully approved media request id='${requestId}' integration='${this.integration.name}'`);
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
const content = await response.text();
|
||||
logger.error(
|
||||
`Failed to approve media request id='${requestId}' integration='${this.integration.name}' reason='${response.status} ${response.statusText}' url='${response.url}' content='${content}'`,
|
||||
);
|
||||
}
|
||||
|
||||
logger.info(`Successfully approved media request id='${requestId}' integration='${this.integration.name}'`);
|
||||
}
|
||||
|
||||
public async declineRequestAsync(requestId: number): Promise<void> {
|
||||
|
||||
@@ -27,13 +27,13 @@
|
||||
"ioredis": "5.6.1",
|
||||
"superjson": "2.2.2",
|
||||
"winston": "3.17.0",
|
||||
"zod": "^3.24.4"
|
||||
"zod": "^3.25.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -34,18 +34,18 @@
|
||||
"@homarr/ui": "workspace:^0.1.0",
|
||||
"@homarr/validation": "workspace:^0.1.0",
|
||||
"@mantine/core": "^8.0.1",
|
||||
"@tabler/icons-react": "^3.31.0",
|
||||
"@tabler/icons-react": "^3.33.0",
|
||||
"dayjs": "^1.11.13",
|
||||
"next": "15.3.2",
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0",
|
||||
"zod": "^3.24.4"
|
||||
"zod": "^3.25.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -32,7 +32,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -25,13 +25,13 @@
|
||||
"dependencies": {
|
||||
"@homarr/ui": "workspace:^0.1.0",
|
||||
"@mantine/notifications": "^8.0.1",
|
||||
"@tabler/icons-react": "^3.31.0"
|
||||
"@tabler/icons-react": "^3.33.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0",
|
||||
"superjson": "2.2.2",
|
||||
"zod": "^3.24.4",
|
||||
"zod": "^3.25.23",
|
||||
"zod-form-data": "^2.0.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -52,7 +52,7 @@
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/adm-zip": "0.5.7",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -23,13 +23,13 @@
|
||||
"prettier": "@homarr/prettier-config",
|
||||
"dependencies": {
|
||||
"@homarr/common": "workspace:^0.1.0",
|
||||
"zod": "^3.24.4"
|
||||
"zod": "^3.25.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -30,14 +30,14 @@
|
||||
"@homarr/log": "workspace:^0.1.0",
|
||||
"@homarr/redis": "workspace:^0.1.0",
|
||||
"dayjs": "^1.11.13",
|
||||
"octokit": "^4.1.3",
|
||||
"octokit": "^5.0.2",
|
||||
"superjson": "2.2.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
import dayjs from "dayjs";
|
||||
import type { ContainerInfo, ContainerStats } from "dockerode";
|
||||
|
||||
import { db, like, or } from "@homarr/db";
|
||||
import { icons } from "@homarr/db/schema";
|
||||
|
||||
import type { ContainerState } from "../../docker/src";
|
||||
import { DockerSingleton } from "../../docker/src";
|
||||
import { createCachedWidgetRequestHandler } from "./lib/cached-widget-request-handler";
|
||||
|
||||
export const dockerContainersRequestHandler = createCachedWidgetRequestHandler({
|
||||
queryKey: "dockerContainersResult",
|
||||
widgetKind: "dockerContainers",
|
||||
async requestAsync() {
|
||||
const containers = await getContainersWithStatsAsync();
|
||||
|
||||
return containers;
|
||||
},
|
||||
cacheDuration: dayjs.duration(20, "seconds"),
|
||||
});
|
||||
|
||||
const dockerInstances = DockerSingleton.getInstances();
|
||||
|
||||
const extractImage = (container: ContainerInfo) => container.Image.split("/").at(-1)?.split(":").at(0) ?? "";
|
||||
|
||||
async function getContainersWithStatsAsync() {
|
||||
const containers = await Promise.all(
|
||||
dockerInstances.map(async ({ instance, host }) => {
|
||||
const instanceContainers = await instance.listContainers({ all: true });
|
||||
return instanceContainers.map((container) => ({
|
||||
...container,
|
||||
instance: host,
|
||||
}));
|
||||
}),
|
||||
).then((res) => res.flat());
|
||||
|
||||
const likeQueries = containers.map((container) => like(icons.name, `%${extractImage(container)}%`));
|
||||
|
||||
const dbIcons =
|
||||
likeQueries.length > 0
|
||||
? await db.query.icons.findMany({
|
||||
where: or(...likeQueries),
|
||||
})
|
||||
: [];
|
||||
|
||||
const containerStatsPromises = containers.map(async (container) => {
|
||||
const instance = dockerInstances.find(({ host }) => host === container.instance)?.instance;
|
||||
if (!instance) return null;
|
||||
|
||||
const stats = await instance.getContainer(container.Id).stats({ stream: false });
|
||||
|
||||
return {
|
||||
id: container.Id,
|
||||
name: container.Names[0]?.split("/")[1] ?? "Unknown",
|
||||
state: container.State as ContainerState,
|
||||
iconUrl:
|
||||
dbIcons.find((icon) => {
|
||||
const extractedImage = extractImage(container);
|
||||
if (!extractedImage) return false;
|
||||
return icon.name.toLowerCase().includes(extractedImage.toLowerCase());
|
||||
})?.url ?? null,
|
||||
cpuUsage: calculateCpuUsage(stats),
|
||||
memoryUsage: stats.memory_stats.usage,
|
||||
image: container.Image,
|
||||
ports: container.Ports,
|
||||
};
|
||||
});
|
||||
|
||||
return (await Promise.all(containerStatsPromises)).filter((container) => container !== null);
|
||||
}
|
||||
|
||||
function calculateCpuUsage(stats: ContainerStats): number {
|
||||
const cpuDelta = stats.cpu_stats.cpu_usage.total_usage - stats.precpu_stats.cpu_usage.total_usage;
|
||||
const systemDelta = stats.cpu_stats.system_cpu_usage - stats.precpu_stats.system_cpu_usage;
|
||||
const numberOfCpus = stats.cpu_stats.online_cpus || 1;
|
||||
|
||||
if (systemDelta === 0) return 0;
|
||||
|
||||
return (cpuDelta / systemDelta) * numberOfCpus * 100;
|
||||
}
|
||||
@@ -29,7 +29,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,7 @@
|
||||
"@mantine/core": "^8.0.1",
|
||||
"@mantine/hooks": "^8.0.1",
|
||||
"@mantine/spotlight": "^8.0.1",
|
||||
"@tabler/icons-react": "^3.31.0",
|
||||
"@tabler/icons-react": "^3.33.0",
|
||||
"jotai": "^2.12.4",
|
||||
"next": "15.3.2",
|
||||
"react": "19.1.0",
|
||||
@@ -47,7 +47,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Comprova la connexió i crea",
|
||||
"edit": "Comprova la connexió i desa"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "El botó \"Desa\" s'habilita quan la connexió s'estableix correctament",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "",
|
||||
"delete": "",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "",
|
||||
"continue": "",
|
||||
"previous": "",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "测试连接并创建",
|
||||
"edit": "测试连接并保存"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "成功建立连接后保存按钮将启用",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "取消",
|
||||
"delete": "删除",
|
||||
"discard": "Discard",
|
||||
"close": "",
|
||||
"confirm": "确认",
|
||||
"continue": "继续",
|
||||
"previous": "上一步",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": "日志"
|
||||
},
|
||||
"certificates": {
|
||||
"label": "证书"
|
||||
"label": "证书",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "可信证书",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": "到期时间 {when}"
|
||||
"expires": "到期时间 {when}",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": "无法删除证书"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Otestovat připojení a vytvořit",
|
||||
"edit": "Otestovat připojení a uložit"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Zrušit",
|
||||
"delete": "Odstranit",
|
||||
"discard": "Zahodit",
|
||||
"close": "",
|
||||
"confirm": "Potvrdit",
|
||||
"continue": "Pokračovat",
|
||||
"previous": "Zpět",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Test forbindelse og opret",
|
||||
"edit": "Test forbindelse og gem"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "Gem-knappen er aktiveret, når en vellykket forbindelse er etableret",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Annuller",
|
||||
"delete": "Slet",
|
||||
"discard": "Kassér",
|
||||
"close": "",
|
||||
"confirm": "Bekræft",
|
||||
"continue": "Forsæt",
|
||||
"previous": "Forrige",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": "Logs"
|
||||
},
|
||||
"certificates": {
|
||||
"label": "Certifikater"
|
||||
"label": "Certifikater",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "Betroede certifikater",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": "Udløber {when}"
|
||||
"expires": "Udløber {when}",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": "Certifikatet kunne ikke slettes"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Verbindig teste und erstäue",
|
||||
"edit": "Verbinding teste und spichere"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "Dr Spicherknopf isch aktiv sobald d Verbindig het chönne hergstellt werde",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Abbrechen",
|
||||
"delete": "Löschen",
|
||||
"discard": "Verwerfen",
|
||||
"close": "",
|
||||
"confirm": "Bestätigen",
|
||||
"continue": "Fortfahren",
|
||||
"previous": "Zurück",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": "Zertifikate"
|
||||
"label": "Zertifikate",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "Vertrauenswürdige Zertifikate",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": "Gültig bis {when}"
|
||||
"expires": "Gültig bis {when}",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": "Das Zertifikat konnte nicht entfernt werden"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -612,15 +612,15 @@
|
||||
"select": {
|
||||
"label": "App auswählen",
|
||||
"notFound": "Keine App gefunden",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
"search": "Nach einer App suchen",
|
||||
"noResults": "Keine Ergebnisse",
|
||||
"action": "{app} auswählen",
|
||||
"title": "Wählen Sie eine App, die diesem Board hinzugefügt werden soll"
|
||||
},
|
||||
"create": {
|
||||
"title": "Neue App erstellen",
|
||||
"description": "",
|
||||
"action": ""
|
||||
"description": "Eine neue App erstellen",
|
||||
"action": "App-Erstellung öffnen"
|
||||
},
|
||||
"add": "App hinzufügen"
|
||||
}
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Verbindung erstellen und testen",
|
||||
"edit": "Verbindung erstellen und speichern"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": "Fall mit mehr Details"
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "Unbekannter Fehler",
|
||||
"description": "Ein unbekannter Fehler ist aufgetreten, den Fall unten für mehr Details öffnen"
|
||||
},
|
||||
"parse": {
|
||||
"title": "Fehler beim Parsen",
|
||||
"description": "Die Antwort konnte nicht analysiert werden. Bitte stellen Sie sicher, dass die URL auf die Basis-URL des Dienstes zeigt."
|
||||
},
|
||||
"authorization": {
|
||||
"title": "Autorisierungsfehler",
|
||||
"description": "Die Anfrage wurde nicht autorisiert. Bitte überprüfen Sie, ob die Anmeldedaten korrekt sind und Sie diese mit mit den entsprechenden Berechtigungen konfiguriert haben."
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "Antwort Fehler",
|
||||
"description": "Unerwartete {statusCode} ({reason}) Antwort von <url></url>erhalten. Bitte überprüfen Sie, ob die URL auf die Basis-URL der Integration verweist.",
|
||||
"otherDescription": "Unerwartete {statusCode} Antwort von <url></url>erhalten. Bitte stellen Sie sicher, dass die URL auf die Basis-URL der Integration zeigt.",
|
||||
"reason": {
|
||||
"badRequest": "Fehlerhafte Anfrage",
|
||||
"notFound": "Nicht gefunden",
|
||||
"tooManyRequests": "Zu viele Anfragen",
|
||||
"internalServerError": "Interner Serverfehler",
|
||||
"serviceUnavailable": "Dienst nicht verfügbar",
|
||||
"gatewayTimeout": "Gateway-Zeitüberschreitung"
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "Zertifikatfehler",
|
||||
"description": {
|
||||
"expired": "Das Zertifikat ist abgelaufen.",
|
||||
"notYetValid": "Das Zertifikat ist noch nicht gültig.",
|
||||
"untrusted": "Dem Zertifikat wird nicht vertraut.",
|
||||
"hostnameMismatch": "Der Hostname des Zertifikats entspricht nicht der URL."
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "Nicht genügend Berechtigungen",
|
||||
"message": "Sie sind nicht berechtigt Zertifikate zu vertrauen oder hochzuladen. Bitte kontaktieren Sie Ihren Administrator, um das notwendige Root-Zertifikat hochzuladen."
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "Hostname stimmt nicht überein",
|
||||
"message": "Der Hostname im Zertifikat stimmt nicht mit dem Hostnamen überein, mit dem Sie probieren sich zu verbinden. Dies könnte auf ein Sicherheitsrisiko hindeuten, Sie können trotzdem diesem Zertifikat vertrauen."
|
||||
},
|
||||
"extract": {
|
||||
"title": "CA-Zertifikatextraktion fehlgeschlagen",
|
||||
"message": "Nur selbstsignierte Zertifikate ohne Kette können automatisch abgerufen werden. Falls Sie ein selbst signiertes Zertifikat verwenden, stellen Sie bitte sicher, dass Sie das CA-Zertifikat manuell hochladen. Hier finden Sie Anweisungen, wie man das <docsLink></docsLink> macht."
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": "Erstellung wiederholen"
|
||||
},
|
||||
"trust": {
|
||||
"label": "Zertifikat vertrauen"
|
||||
},
|
||||
"upload": {
|
||||
"label": "Zertifikat hochladen"
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "Der Nichtübereinstimmung der Hostnamen zustimmen",
|
||||
"message": "Sind Sie sicher, dass Sie dem Zertifikat mit einer Nichtübereinstimmung des Hostnamens vertrauen möchten?"
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "Vertrauenswürdige Zertifikate",
|
||||
"message": "Hostname zu vertrauenswürdiger Zertifikatsliste hinzugefügt"
|
||||
},
|
||||
"error": {
|
||||
"title": "Ein Fehler ist beim vertrauen des Zertifikats aufgetreten",
|
||||
"message": "Dem Zertifikat mit einer Nichtübereinstimmung des Hostnamens konnte nicht vertraut werden"
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "Selbstsigniertem Zertifikat vertrauen",
|
||||
"message": "Sind Sie sicher, dass Sie diesem selbst signierten Zertifikat vertrauen möchten?"
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "Vertrauenswürdige Zertifikate",
|
||||
"message": "Zertifikat zur vertrauenswürdigen Zertifikatsliste hinzugefügt"
|
||||
},
|
||||
"error": {
|
||||
"title": "Ein Fehler ist beim vertrauen des Zertifikats aufgetreten",
|
||||
"message": "Das Zertifikat konnte nicht zur vertrauenswürdigen Zertifikatsliste hinzugefügt werden"
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "Details",
|
||||
"description": "Überprüfen Sie die Zertifikatsinformationen, bevor Sie sich dazu entschließen, ihr zu vertrauen.",
|
||||
"content": {
|
||||
"action": "Inhalt anzeigen",
|
||||
"title": "PEM Zertifikat"
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "Anfrage Fehler",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "Der Server konnte nicht erreicht werden. Dies bedeutet in der Regel, dass der Host offline oder nicht von Ihrem Netzwerk aus erreichbar ist.",
|
||||
"networkUnreachable": "Das Netzwerk ist nicht erreichbar. Bitte überprüfen Sie Ihre Internetverbindung oder die Netzwerkkonfiguration.",
|
||||
"refused": "Der Server hat die Verbindung abgelehnt. Er läuft möglicherweise nicht oder lehnt Anfragen auf dem angegebenen Port ab.",
|
||||
"reset": "Die Verbindung wurde unerwartet vom Server getrennt. Dies kann passieren, wenn der Server instabil ist oder neu gestartet wurde."
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "Die Serveradresse konnte nicht gefunden werden. Bitte überprüfen Sie die URL auf Tippfehler oder ungültige Domainnamen.",
|
||||
"timeout": "Zeitüberschreitung bei der DNS Anfrage. Dies kann ein temporäres Problem sein – bitte versuchen Sie es in ein paar Augenblicken erneut.",
|
||||
"noAnswer": "Der DNS-Server hat keine gültige Antwort zurückgegeben. Die Domain existiert vielleicht, hat jedoch keine gültigen Datensätze."
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "Die Anfrage wurde abgebrochen, bevor sie abgeschlossen werden konnte. Dies könnte auf eine Benutzeraktion oder einen System Timeout zurückzuführen sein.",
|
||||
"timeout": "Die Anfrage zu bearbeiten hat zu lange gedauert, sie ist damit abgelaufen. Überprüfe dein Netzwerk oder versuche es später erneut."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "Der Speichern Button ist verfügbar, sobald eine erfolgreiche Verbindung hergestellt wurde",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -769,8 +895,8 @@
|
||||
"message": "Der Pfad ist vermutlich nicht korrekt"
|
||||
},
|
||||
"tooManyRequests": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Zu viele Anfragen innerhalb einer bestimmten Zeit",
|
||||
"message": "Es gab zu viele Anfragen. Sie werden wahrscheinlich vom Zielsystem begrenzt oder abgelehnt"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Abbrechen",
|
||||
"delete": "Löschen",
|
||||
"discard": "Verwerfen",
|
||||
"close": "Schließen",
|
||||
"confirm": "Bestätigen",
|
||||
"continue": "Fortfahren",
|
||||
"previous": "Zurück",
|
||||
@@ -1093,7 +1220,7 @@
|
||||
"label": "Integrationen"
|
||||
},
|
||||
"title": {
|
||||
"label": ""
|
||||
"label": "Titel"
|
||||
},
|
||||
"customCssClasses": {
|
||||
"label": "Benutzerdefinierte CSS Klassen"
|
||||
@@ -1445,76 +1572,76 @@
|
||||
}
|
||||
},
|
||||
"stockPrice": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Aktienpreis",
|
||||
"description": "Zeigt den aktuellen Aktienkurs einer Firma an",
|
||||
"option": {
|
||||
"stock": {
|
||||
"label": ""
|
||||
"label": "Aktiensymbol"
|
||||
},
|
||||
"timeRange": {
|
||||
"label": "",
|
||||
"label": "Zeitraum",
|
||||
"option": {
|
||||
"1d": {
|
||||
"label": ""
|
||||
"label": "1 Tag"
|
||||
},
|
||||
"5d": {
|
||||
"label": ""
|
||||
"label": "5 Tage"
|
||||
},
|
||||
"1mo": {
|
||||
"label": ""
|
||||
"label": "1 Monat"
|
||||
},
|
||||
"3mo": {
|
||||
"label": ""
|
||||
"label": "3 Monate"
|
||||
},
|
||||
"6mo": {
|
||||
"label": ""
|
||||
"label": "6 Monate"
|
||||
},
|
||||
"ytd": {
|
||||
"label": ""
|
||||
"label": "Bisheriger Jahresverlauf"
|
||||
},
|
||||
"1y": {
|
||||
"label": ""
|
||||
"label": "1 Jahr"
|
||||
},
|
||||
"2y": {
|
||||
"label": ""
|
||||
"label": "2 Jahre"
|
||||
},
|
||||
"5y": {
|
||||
"label": ""
|
||||
"label": "5 Jahre"
|
||||
},
|
||||
"10y": {
|
||||
"label": ""
|
||||
"label": "10 Jahre"
|
||||
},
|
||||
"max": {
|
||||
"label": ""
|
||||
"label": "Max"
|
||||
}
|
||||
}
|
||||
},
|
||||
"timeInterval": {
|
||||
"label": "",
|
||||
"label": "Zeitintervall",
|
||||
"option": {
|
||||
"5m": {
|
||||
"label": ""
|
||||
"label": "5 Minuten"
|
||||
},
|
||||
"15m": {
|
||||
"label": ""
|
||||
"label": "15 Minuten"
|
||||
},
|
||||
"30m": {
|
||||
"label": ""
|
||||
"label": "30 Minuten"
|
||||
},
|
||||
"1h": {
|
||||
"label": ""
|
||||
"label": "1 Stunde"
|
||||
},
|
||||
"1d": {
|
||||
"label": ""
|
||||
"label": "1 Tag"
|
||||
},
|
||||
"5d": {
|
||||
"label": ""
|
||||
"label": "5 Tage"
|
||||
},
|
||||
"1wk": {
|
||||
"label": ""
|
||||
"label": "1 Woche"
|
||||
},
|
||||
"1mo": {
|
||||
"label": ""
|
||||
"label": "1 Monat"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1771,8 +1898,8 @@
|
||||
"description": "Zeige die aktuellen Streams auf deinen Medienservern an",
|
||||
"option": {
|
||||
"showOnlyPlaying": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Nur aktuelle Wiedergabe anzeigen",
|
||||
"description": "Diese Einstellung zu deaktivieren wird für Plex nicht funktionieren"
|
||||
}
|
||||
},
|
||||
"items": {
|
||||
@@ -1805,7 +1932,7 @@
|
||||
"label": "Torrent Einträge anzeigen die abgeschlossen wurden"
|
||||
},
|
||||
"showCompletedHttp": {
|
||||
"label": ""
|
||||
"label": "Andere Einträge als abgeschlossen anzeigen"
|
||||
},
|
||||
"activeTorrentThreshold": {
|
||||
"label": "Abgeschlossene Torrents unter diesem Schwellenwert ausblenden (in kiB/s)"
|
||||
@@ -1950,7 +2077,7 @@
|
||||
"approved": "Bestätigt",
|
||||
"declined": "Abgelehnt",
|
||||
"failed": "Fehlgeschlagen",
|
||||
"completed": ""
|
||||
"completed": "Abgeschlossen"
|
||||
},
|
||||
"toBeDetermined": "Noch Festzulegen"
|
||||
},
|
||||
@@ -2054,94 +2181,94 @@
|
||||
}
|
||||
},
|
||||
"releases": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Veröffentlichungen",
|
||||
"description": "Zeigt eine Liste der aktuellen Version der angegebenen Repositories mit der angegebenen Version regex an.",
|
||||
"option": {
|
||||
"newReleaseWithin": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Neue Version innerhalb",
|
||||
"description": "Anwendungsbeispiel: 1w (1 Woche), 10M (10 Monate). Akzeptierte Einheiten h (Stunden), d (Tage), w (Wochen), M (Monate), y (Jahre). Leer lassen für keine Hervorhebung neuer Releases."
|
||||
},
|
||||
"staleReleaseWithin": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Veraltete Version innerhalb",
|
||||
"description": "Anwendungsbeispiel: 1w (1 Woche), 10M (10 Monate). Akzeptierte Einheiten h (Stunden), d (Tage), w (Wochen), M (Monate), y (Jahre). Leer lassen für keine Hervorhebung von veralteten Releases."
|
||||
},
|
||||
"showOnlyHighlighted": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Nur markierte anzeigen",
|
||||
"description": "Nur neue oder veraltete Versionen anzeigen. Wie oben beschrieben."
|
||||
},
|
||||
"showDetails": {
|
||||
"label": ""
|
||||
"label": "Details anzeigen"
|
||||
},
|
||||
"topReleases": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Top Releases",
|
||||
"description": "Die maximale Anzahl der neuesten Versionen, die angezeigt werden sollen. Null bedeutet kein Limit."
|
||||
},
|
||||
"repositories": {
|
||||
"label": "",
|
||||
"label": "Repositories",
|
||||
"addRRepository": {
|
||||
"label": ""
|
||||
"label": "Repository hinzufügen"
|
||||
},
|
||||
"provider": {
|
||||
"label": ""
|
||||
"label": "Anbieter"
|
||||
},
|
||||
"identifier": {
|
||||
"label": "",
|
||||
"placeholder": ""
|
||||
"label": "Identifier",
|
||||
"placeholder": "Name oder Eigentümer/Name"
|
||||
},
|
||||
"name": {
|
||||
"label": ""
|
||||
"label": "Name"
|
||||
},
|
||||
"versionFilter": {
|
||||
"label": "",
|
||||
"label": "Versionsfilter",
|
||||
"prefix": {
|
||||
"label": ""
|
||||
"label": "Präfix"
|
||||
},
|
||||
"precision": {
|
||||
"label": "",
|
||||
"label": "Präzision",
|
||||
"options": {
|
||||
"none": ""
|
||||
"none": "Keine"
|
||||
}
|
||||
},
|
||||
"suffix": {
|
||||
"label": ""
|
||||
"label": "Suffix"
|
||||
},
|
||||
"regex": {
|
||||
"label": ""
|
||||
"label": "Regulärer Ausdruck"
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"label": ""
|
||||
"label": "Bearbeiten"
|
||||
},
|
||||
"editForm": {
|
||||
"title": "",
|
||||
"title": "Repository bearbeiten",
|
||||
"cancel": {
|
||||
"label": ""
|
||||
"label": "Abbrechen"
|
||||
},
|
||||
"confirm": {
|
||||
"label": ""
|
||||
"label": "Bestätigen"
|
||||
}
|
||||
},
|
||||
"example": {
|
||||
"label": ""
|
||||
"label": "Beispiel"
|
||||
},
|
||||
"invalid": ""
|
||||
"invalid": "Ungültige Repository Definition, bitte überprüfen Sie die Werte"
|
||||
}
|
||||
},
|
||||
"not-found": "",
|
||||
"pre-release": "",
|
||||
"archived": "",
|
||||
"forked": "",
|
||||
"starsCount": "",
|
||||
"forksCount": "",
|
||||
"issuesCount": "",
|
||||
"openProjectPage": "",
|
||||
"openReleasePage": "",
|
||||
"releaseDescription": "",
|
||||
"created": "",
|
||||
"not-found": "Nicht gefunden",
|
||||
"pre-release": "Vorveröffentlichung",
|
||||
"archived": "Archiviert",
|
||||
"forked": "Forked",
|
||||
"starsCount": "Sterne",
|
||||
"forksCount": "Ableger",
|
||||
"issuesCount": "Offene Tickets",
|
||||
"openProjectPage": "Projektseite öffnen",
|
||||
"openReleasePage": "Release Seite öffnen",
|
||||
"releaseDescription": "Release Beschreibung",
|
||||
"created": "Erstellt",
|
||||
"error": {
|
||||
"label": "",
|
||||
"label": "Fehler",
|
||||
"options": {
|
||||
"noMatchingVersion": ""
|
||||
"noMatchingVersion": "Keine passende Version gefunden"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2149,56 +2276,56 @@
|
||||
"option": {},
|
||||
"card": {
|
||||
"vpn": {
|
||||
"countConnected": ""
|
||||
"countConnected": "{count} verbunden"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"integrationsDisconnected": "",
|
||||
"unknownContentOption": ""
|
||||
"integrationsDisconnected": "Keine Daten verfügbar, alle Integrationen getrennt",
|
||||
"unknownContentOption": "Unbekannte Inhaltsoption für das Widget der Netzwerk Controller Zusammenfassung: "
|
||||
},
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Netzwerk Controller Zusammenfassung",
|
||||
"description": "Zeigt die Zusammenfassung eines Netzwerk Controller (wie UniFi-Controller) an"
|
||||
},
|
||||
"networkControllerStatus": {
|
||||
"card": {
|
||||
"variants": {
|
||||
"wired": {
|
||||
"name": ""
|
||||
"name": "Kabel"
|
||||
},
|
||||
"wifi": {
|
||||
"name": ""
|
||||
"name": "WLAN"
|
||||
}
|
||||
},
|
||||
"users": {
|
||||
"label": ""
|
||||
"label": "Benutzer"
|
||||
},
|
||||
"guests": {
|
||||
"label": ""
|
||||
"label": "Gäste"
|
||||
}
|
||||
},
|
||||
"option": {
|
||||
"content": {
|
||||
"option": {
|
||||
"wifi": {
|
||||
"label": ""
|
||||
"label": "WLAN"
|
||||
},
|
||||
"wired": {
|
||||
"label": ""
|
||||
"label": "Kabel"
|
||||
}
|
||||
},
|
||||
"label": ""
|
||||
"label": "Widget Inhalt"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"integrationsDisconnected": "",
|
||||
"unknownContentOption": ""
|
||||
"integrationsDisconnected": "Keine Daten verfügbar, alle Integrationen getrennt",
|
||||
"unknownContentOption": "Unbekannte Inhaltsoption für das Netzwerkstatus Widget: "
|
||||
},
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Netzwerkstatus",
|
||||
"description": "Angeschlossene Geräte in einem Netzwerk anzeigen"
|
||||
},
|
||||
"networkController": {
|
||||
"error": {
|
||||
"internalServerError": ""
|
||||
"internalServerError": "Fehler beim Abrufen der Netzwerk Controller Zusammenfassung"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2321,10 +2448,10 @@
|
||||
},
|
||||
"backgroundImageUrl": {
|
||||
"label": "URL des Hintergrundbildes",
|
||||
"placeholder": "",
|
||||
"placeholder": "Tippen, um nach lokale Bilder zu suchen",
|
||||
"group": {
|
||||
"your": "",
|
||||
"other": ""
|
||||
"your": "Ihre Bilder",
|
||||
"other": "Andere Bilder"
|
||||
}
|
||||
},
|
||||
"backgroundImageAttachment": {
|
||||
@@ -2963,7 +3090,7 @@
|
||||
"label": "Medien Transkodierung"
|
||||
},
|
||||
"networkController": {
|
||||
"label": ""
|
||||
"label": "Netzwerk Controller"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": "Logs"
|
||||
},
|
||||
"certificates": {
|
||||
"label": "Zertifikate"
|
||||
"label": "Zertifikate",
|
||||
"hostnames": {
|
||||
"label": "Hostnamen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": "Hostname"
|
||||
},
|
||||
"subject": {
|
||||
"label": "Thema"
|
||||
},
|
||||
"issuer": {
|
||||
"label": "Ersteller"
|
||||
},
|
||||
"validFrom": {
|
||||
"label": "Gültig ab"
|
||||
},
|
||||
"validTo": {
|
||||
"label": "Gültig bis"
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": "Seriennummer"
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": "Fingerabdruck"
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "Vertrauenswürdige Zertifikate",
|
||||
@@ -3902,10 +4055,19 @@
|
||||
"title": "Es gibt noch keine Zertifikate"
|
||||
},
|
||||
"invalid": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
"title": "Ungültiges Zertifikat",
|
||||
"description": "Fehler beim Analysieren des Zertifikats"
|
||||
},
|
||||
"expires": "Gültig bis {when}"
|
||||
"expires": "Gültig bis {when}",
|
||||
"toHostnames": "Vertrauenswürdige Hostnamen"
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "Hostnamen der vertrauten Zertifikate",
|
||||
"description": "Einige Zertifikate erlauben es der spezifischen Domäne von Homarr nicht, sie anzufordern. Um diese Einschränkungen zu umgehen werden alle vertrauenswürdigen Hostnamen mit ihrem Zertifikats Fingerabdruck verwendet.",
|
||||
"noResults": {
|
||||
"title": "Noch keine Hostnamen vorhanden"
|
||||
},
|
||||
"toCertificates": "Zertifikate"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": "Das Zertifikat konnte nicht entfernt werden"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "Vertrauenswürdigen Hostnamen entfernen",
|
||||
"confirm": "Sind Sie sicher, dass Sie diesen vertrauenswürdigen Hostnamen entfernen wollen? Dies kann dazu führen, dass einige Integrationen nicht mehr funktionieren.",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "Hostname entfernt",
|
||||
"message": "Der Hostname wurde erfolgreich entfernt"
|
||||
},
|
||||
"error": {
|
||||
"title": "Hostname nicht entfernt",
|
||||
"message": "Der Hostname konnte nicht entfernt werden"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Ακύρωση",
|
||||
"delete": "Διαγραφή",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "Επιβεβαίωση",
|
||||
"continue": "",
|
||||
"previous": "Προηγούμενο",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Test the connection and create integration",
|
||||
"edit": "Test the connection and save"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "The save button is enabled once the connection is successfully established",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete",
|
||||
"discard": "Discard",
|
||||
"close": "",
|
||||
"confirm": "Confirm",
|
||||
"continue": "Continue",
|
||||
"previous": "Previous",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1832,6 +1832,14 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"dockerContainers": {
|
||||
"name": "Docker stats",
|
||||
"description": "Stats of your containers (This widget can only be added with administrator privileges)",
|
||||
"option": {},
|
||||
"error": {
|
||||
"internalServerError": "Failed to fetch containers stats"
|
||||
}
|
||||
},
|
||||
"common": {
|
||||
"location": {
|
||||
"query": "City / Postal code",
|
||||
@@ -3091,6 +3099,9 @@
|
||||
},
|
||||
"networkController": {
|
||||
"label": "Network Controller"
|
||||
},
|
||||
"dockerContainers": {
|
||||
"label": "Docker containers"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -3154,8 +3165,9 @@
|
||||
"title": "Containers",
|
||||
"table": {
|
||||
"updated": "Updated {when}",
|
||||
"search": "Search {count} containers",
|
||||
"selected": "{selectCount} of {totalCount} containers selected"
|
||||
"search": "Seach {count} containers",
|
||||
"selected": "{selectCount} of {totalCount} containers selected",
|
||||
"footer": "Total {count} containers"
|
||||
},
|
||||
"field": {
|
||||
"name": {
|
||||
@@ -3173,6 +3185,14 @@
|
||||
"dead": "Dead"
|
||||
}
|
||||
},
|
||||
"stats": {
|
||||
"cpu": {
|
||||
"label": "CPU"
|
||||
},
|
||||
"memory": {
|
||||
"label": "Memory"
|
||||
}
|
||||
},
|
||||
"containerImage": {
|
||||
"label": "Image"
|
||||
},
|
||||
@@ -3181,6 +3201,7 @@
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"title": "Actions",
|
||||
"start": {
|
||||
"label": "Start",
|
||||
"notification": {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"step": {
|
||||
"start": {
|
||||
"title": "Bienvenido a Homarr",
|
||||
"subtitle": "Comencemos con la configuración de tu instancia de Homar.",
|
||||
"subtitle": "Comencemos con la configuración de tu instancia de Homarr.",
|
||||
"description": "Para empezar, por favor, seleccione cómo desea configurar su instancia de Homarr.",
|
||||
"action": {
|
||||
"scratch": "Empezar de cero",
|
||||
@@ -35,7 +35,7 @@
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"title": "Importar resumen",
|
||||
"title": "Resumen de importación",
|
||||
"description": "",
|
||||
"action": {
|
||||
"import": "Confirmar la importación y continuar"
|
||||
@@ -160,7 +160,7 @@
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"usernameTaken": "Nombre de usuario ya está ocupado"
|
||||
"usernameTaken": ""
|
||||
},
|
||||
"action": {
|
||||
"login": {
|
||||
@@ -172,7 +172,7 @@
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"title": "Inicio de sesión fallido",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Cancelar",
|
||||
"delete": "Eliminar",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "Confirmar",
|
||||
"continue": "",
|
||||
"previous": "Anterior",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "",
|
||||
"delete": "",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "",
|
||||
"continue": "",
|
||||
"previous": "",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Tester la connexion et créer",
|
||||
"edit": "Tester la connexion et enregistrer"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "Le bouton Enregistrer est activé une fois qu'une connexion est établie avec succès",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Annuler",
|
||||
"delete": "Supprimer",
|
||||
"discard": "Abandonner",
|
||||
"close": "",
|
||||
"confirm": "Confirmer",
|
||||
"continue": "Continuer",
|
||||
"previous": "Précédent",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": "Journaux"
|
||||
},
|
||||
"certificates": {
|
||||
"label": "Certificats"
|
||||
"label": "Certificats",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "Certificats de confiance",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": "Expire le {when}"
|
||||
"expires": "Expire le {when}",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": "Le certificat n'a pas pu être supprimé"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "בדוק חיבור וצור",
|
||||
"edit": "בדוק את החיבור ושמור"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": "סיבה עם פרטים נוספים"
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "שגיאה לא ידועה",
|
||||
"description": "אירעה שגיאה לא ידועה, פתח את הסיבה למטה כדי לראות פרטים נוספים"
|
||||
},
|
||||
"parse": {
|
||||
"title": "שגיאת ניתוח",
|
||||
"description": "לא ניתן היה לנתח את התגובה. אנא ודא שכתובת האתר מפנה לכתובת האתר הבסיסית של השירות."
|
||||
},
|
||||
"authorization": {
|
||||
"title": "שגיאת הרשאה",
|
||||
"description": "הבקשה לא אושרה. אנא ודא שהאישורים נכונים ושהוגדרו לך הרשאות מספיקות."
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "שגיאת תגובה",
|
||||
"description": "התקבלה תגובה בלתי צפויה של {statusCode} ({reason}) מ-<url></url>. אנא ודא שכתובת האתר מפנה לכתובת האתר הבסיסית של האינטגרציה.",
|
||||
"otherDescription": "התקבלה תגובה בלתי צפויה של {statusCode} מ-<url></url>. אנא ודא שכתובת האתר מפנה לכתובת האתר הבסיסית של האינטגרציה.",
|
||||
"reason": {
|
||||
"badRequest": "בקשה שגויה",
|
||||
"notFound": "לא נמצא",
|
||||
"tooManyRequests": "בקשות רבות מדי",
|
||||
"internalServerError": "שגיאת שרת פנימית",
|
||||
"serviceUnavailable": "השירות אינו זמין",
|
||||
"gatewayTimeout": "פסק זמן של השער"
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "שגיאת תעודה",
|
||||
"description": {
|
||||
"expired": "פג תוקפה של תעודה זו.",
|
||||
"notYetValid": "התעודה עדיין אינה בתוקף.",
|
||||
"untrusted": "התעודה אינה מהימנה.",
|
||||
"hostnameMismatch": "שם המארח של האישור אינו תואם לכתובת ה-URL."
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "אין מספיק הרשאות",
|
||||
"message": "אינך רשאי לתת אמון באישורים או להעלות אותם. אנא צור קשר עם מנהל המערכת שלך כדי להעלות את אישור הבסיס הדרוש."
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "שם השרת לא תואם",
|
||||
"message": "שם המארח בתעודה אינו תואם לשם המארח שאליו אתה מתחבר. זה יכול להצביע על סיכון אבטחה, אך עדיין תוכל לבחור לתת אמון בתעודה זו."
|
||||
},
|
||||
"extract": {
|
||||
"title": "חילוץ תעודת CA נכשל",
|
||||
"message": "ניתן לאחזר באופן אוטומטי רק אישורים חתומים עצמית ללא שרשרת. אם אתם משתמשים באישור חתום עצמית, אנא ודאו שאתם מעלים את אישור רשות האישור באופן ידני. תוכלו למצוא הוראות כיצד לעשות זאת <docsLink></docsLink>."
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": "נסה ליצור שוב"
|
||||
},
|
||||
"trust": {
|
||||
"label": "תעודה מהימנה"
|
||||
},
|
||||
"upload": {
|
||||
"label": "העלאת תעודת אבטחה"
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "אי התאמה בשם המארח",
|
||||
"message": "האם אתה בטוח שאתה רוצה לסמוך על האישור עם אי התאמה בשם המארח?"
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "תעודה מהימנה",
|
||||
"message": "נוסף שם מארח לרשימת האישורים המהימנים"
|
||||
},
|
||||
"error": {
|
||||
"title": "נכשל בהוספת תעודת אבטחה",
|
||||
"message": "לא ניתן היה לסמוך על האישור עם אי-התאמה בשם המארח"
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "תעודת אמון חתומה עצמית",
|
||||
"message": "האם אתה בטוח שאתה רוצה לסמוך על אישור חתום עצמי זה?"
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "תעודה מהימנה",
|
||||
"message": "נוסף שם מארח לרשימת האישורים המהימנים"
|
||||
},
|
||||
"error": {
|
||||
"title": "נכשל בהוספת תעודת אבטחה",
|
||||
"message": "נכשל בהוספת האישור לרשימת האישורים המהימנים"
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "פרטים",
|
||||
"description": "בדוק את פרטי האישור לפני שתחליט לסמוך עליו.",
|
||||
"content": {
|
||||
"action": "הצג תוכן",
|
||||
"title": "תעודת PEM"
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "שגיאת בקשה",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "לא ניתן היה להגיע לשרת. משמעות הדבר בדרך כלל היא שהמארח לא מקוון או שאינו ניתן להשגה מהרשת שלך.",
|
||||
"networkUnreachable": "הרשת אינה נגישה. אנא בדוק את חיבור האינטרנט או את תצורת הרשת שלך.",
|
||||
"refused": "השרת דחה את החיבור. ייתכן שהוא אינו פועל או דוחה בקשות בפורט שצוין.",
|
||||
"reset": "החיבור נסגר באופן בלתי צפוי על ידי השרת. זה יכול לקרות אם השרת אינו יציב או שהופעל מחדש."
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "לא ניתן היה למצוא את כתובת השרת. אנא בדוק את כתובת ה-URL עבור שגיאות הקלדה או שמות דומיין לא חוקיים.",
|
||||
"timeout": "בדיקת DNS הסתיימה. ייתכן שמדובר בבעיה זמנית - אנא נסה שוב בעוד מספר רגעים.",
|
||||
"noAnswer": "שרת ה-DNS לא החזיר תגובה תקפה. ייתכן שהדומיין קיים אך אין לו רשומות תקפות."
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "הבקשה בוטלה לפני שהספיקה להשלים אותה. ייתכן שהדבר נובע מפעולת משתמש או מפסק זמן של המערכת.",
|
||||
"timeout": "הבקשה ארכה זמן רב מדי להשלמה ופג תוקפו. בדוק את הרשת שלך או נסה שוב מאוחר יותר."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "הלחצן שמור מופעל לאחר יצירת חיבור מוצלח",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "בטל",
|
||||
"delete": "מחיקה",
|
||||
"discard": "ביטול",
|
||||
"close": "סגור",
|
||||
"confirm": "לאשר",
|
||||
"continue": "המשך",
|
||||
"previous": "הקודם",
|
||||
@@ -2059,11 +2186,11 @@
|
||||
"option": {
|
||||
"newReleaseWithin": {
|
||||
"label": "מהדורה חדשה בתוך",
|
||||
"description": ""
|
||||
"description": "דוגמת שימוש: שבוע אחד (1), חודש אחד (10 חודשים). סוגי יחידות מקובלים: h (שעות), d (ימים), w (שבועות), M (חודשים), y (שנים). השאר ריק כדי לא להדגיש מהדורות חדשות."
|
||||
},
|
||||
"staleReleaseWithin": {
|
||||
"label": "מהדורה חדשה בתוך",
|
||||
"description": ""
|
||||
"description": "דוגמת שימוש: 1w (שבוע אחד), 10M (10 חודשים). סוגי יחידות מקובלים h (שעות), d (ימים), w (שבועות), M (חודשים), y (שנים). השאר ריק כדי לא להדגיש גרסאות ישנות."
|
||||
},
|
||||
"showOnlyHighlighted": {
|
||||
"label": "הצג רק את המודגשים",
|
||||
@@ -2073,8 +2200,8 @@
|
||||
"label": "הצג פרטים"
|
||||
},
|
||||
"topReleases": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "מהדורות מובילות",
|
||||
"description": "המספר המרבי של מהדורות אחרונות להצגה. אפס פירושו שאין הגבלה."
|
||||
},
|
||||
"repositories": {
|
||||
"label": "מאגרים",
|
||||
@@ -2089,7 +2216,7 @@
|
||||
"placeholder": "שם או בעלים/שם"
|
||||
},
|
||||
"name": {
|
||||
"label": ""
|
||||
"label": "שם"
|
||||
},
|
||||
"versionFilter": {
|
||||
"label": "מסנן גירסאות",
|
||||
@@ -2139,9 +2266,9 @@
|
||||
"releaseDescription": "תיאור הגרסה",
|
||||
"created": "נוצר",
|
||||
"error": {
|
||||
"label": "",
|
||||
"label": "שגיאה",
|
||||
"options": {
|
||||
"noMatchingVersion": ""
|
||||
"noMatchingVersion": "לא נמצאה גרסה תואמת"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": "קבצי לוג"
|
||||
},
|
||||
"certificates": {
|
||||
"label": "אישורי אבטחה"
|
||||
"label": "אישורי אבטחה",
|
||||
"hostnames": {
|
||||
"label": "שמות מארחים"
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": "שם מארח"
|
||||
},
|
||||
"subject": {
|
||||
"label": "נושא"
|
||||
},
|
||||
"issuer": {
|
||||
"label": "מנפיק"
|
||||
},
|
||||
"validFrom": {
|
||||
"label": "בתוקף מ: "
|
||||
},
|
||||
"validTo": {
|
||||
"label": "בתוקף מ: "
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": "מספר סידורי"
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": "טביעת אצבע"
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "תעודות מהימנות",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "אישור לא חוקי",
|
||||
"description": "נכשל בהוספת תעודת אבטחה"
|
||||
},
|
||||
"expires": "פג ב- {when}"
|
||||
"expires": "פג ב- {when}",
|
||||
"toHostnames": "שמות מארחים מאושרים"
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "שמות מארחים של תעודות מהימנות",
|
||||
"description": "חלק מהאישורים אינם מאפשרים לדומיין הספציפי בו Homarr משתמש לבקש אותם, מסיבה זו כל שמות המארח המהימנים עם טביעות האצבע של האישור שלהם משמשים כדי לעקוף את ההגבלות הללו.",
|
||||
"noResults": {
|
||||
"title": "אין עדיין שמות מארחים"
|
||||
},
|
||||
"toCertificates": "אישורי אבטחה"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": "לא היה ניתן להסיר את תעודת האבטחה"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "הסר שם מארח מהימן",
|
||||
"confirm": "האם אתה בטוח שברצונך להסיר את שם המארח המהימן הזה? זה עלול לגרום לחלק מהאינטגרציות להפסיק לפעול.",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "שם המארח הוסר",
|
||||
"message": "שם המארח הוסר בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"title": "שם המארח לא הוסר",
|
||||
"message": "לא היה ניתן להסיר את שם המארח"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Otkaži",
|
||||
"delete": "Obriši",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "Potvrdi",
|
||||
"continue": "",
|
||||
"previous": "Prethodno",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Tesztelje a kapcsolatot és hozzon létre",
|
||||
"edit": "Tesztelje a kapcsolatot és mentsen"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "A Mentés gomb a sikeres kapcsolat létrehozása után aktiválódik",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Mégse",
|
||||
"delete": "Törlés",
|
||||
"discard": "Elvetés",
|
||||
"close": "",
|
||||
"confirm": "Megerősít",
|
||||
"continue": "Folytatás",
|
||||
"previous": "Előző",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Prova la connessione e crea",
|
||||
"edit": "Prova la connessione e salva"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "Il pulsante Salva è abilitato una volta stabilita una connessione con successo",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Annulla",
|
||||
"delete": "Elimina",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "Conferma",
|
||||
"continue": "",
|
||||
"previous": "Precedente",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "キャンセル",
|
||||
"delete": "削除",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "確認",
|
||||
"continue": "次へ",
|
||||
"previous": "前へ",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "취소",
|
||||
"delete": "삭제",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "확인",
|
||||
"continue": "",
|
||||
"previous": "이전",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Atšaukti",
|
||||
"delete": "",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "",
|
||||
"continue": "",
|
||||
"previous": "",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Atcelt",
|
||||
"delete": "Dzēst",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "Apstipriniet",
|
||||
"continue": "",
|
||||
"previous": "Iepriekšējais",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -612,17 +612,17 @@
|
||||
"select": {
|
||||
"label": "App selecteren",
|
||||
"notFound": "Geen app gevonden",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
"search": "Zoek naar een app",
|
||||
"noResults": "Geen resultaten gevonden voor deze zoekopdracht",
|
||||
"action": "Selecteer {app}",
|
||||
"title": "Selecteer een app om aan dit bord toe te voegen"
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
"title": "Nieuwe app aanmaken",
|
||||
"description": "Een nieuwe app aanmaken ",
|
||||
"action": "Open app aanmaken"
|
||||
},
|
||||
"add": ""
|
||||
"add": "Een app toevoegen"
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Verbinding testen en aanmaken",
|
||||
"edit": "Verbinding testen en opslaan"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": "Reden met meer details"
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "Onbekende fout",
|
||||
"description": "Er is een onbekende fout opgetreden, open de reden hieronder om meer details te zien"
|
||||
},
|
||||
"parse": {
|
||||
"title": "Parser fout",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "Fout tijdens het aanmelden",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "De opslaan knop wordt ingeschakeld zodra er een succesvolle verbinding tot stand is gebracht",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Annuleren",
|
||||
"delete": "Verwijderen",
|
||||
"discard": "Negeren",
|
||||
"close": "",
|
||||
"confirm": "Bevestigen",
|
||||
"continue": "Doorgaan",
|
||||
"previous": "Vorige",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": "Logs"
|
||||
},
|
||||
"certificates": {
|
||||
"label": "Certificaten"
|
||||
"label": "Certificaten",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "Vertrouwde certificaten",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": "Verloopt {when}"
|
||||
"expires": "Verloopt {when}",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": "Certificaat kon niet worden verwijderd"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Test tilkobling og opprett",
|
||||
"edit": "Test tilkobling og lagre"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "Lagre-knappen er aktivert når en vellykket tilkobling er opprettet",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Avbryt",
|
||||
"delete": "Slett",
|
||||
"discard": "Forkast",
|
||||
"close": "",
|
||||
"confirm": "Bekreft",
|
||||
"continue": "Fortsett",
|
||||
"previous": "Tidligere",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": "Logger"
|
||||
},
|
||||
"certificates": {
|
||||
"label": "Sertifikater"
|
||||
"label": "Sertifikater",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "Betrodde sertifikater",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": "Utløper {when}"
|
||||
"expires": "Utløper {when}",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": "Sertifikatet kunne ikke fjernes"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Sprawdź połączenie i utwórz",
|
||||
"edit": "Sprawdź połączenie i zapisz"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "Przycisk Zapisz jest włączony po nawiązaniu pomyślnego połączenia",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Anuluj",
|
||||
"delete": "Usuń",
|
||||
"discard": "Odrzuć",
|
||||
"close": "",
|
||||
"confirm": "Potwierdź",
|
||||
"continue": "Kontynuuj",
|
||||
"previous": "Poprzedni",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Cancelar",
|
||||
"delete": "Apagar",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "Confirme",
|
||||
"continue": "",
|
||||
"previous": "Anterior",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Anulează",
|
||||
"delete": "Șterge",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "Confirma",
|
||||
"continue": "",
|
||||
"previous": "Anteriorul",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Проверить подключение и создать",
|
||||
"edit": "Проверить подключение и сохранить"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "Кнопка сохранения станет доступна после успешного подключения",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Отмена",
|
||||
"delete": "Удалить",
|
||||
"discard": "Отменить",
|
||||
"close": "",
|
||||
"confirm": "Подтвердить",
|
||||
"continue": "Продолжить",
|
||||
"previous": "Назад",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": "Логи"
|
||||
},
|
||||
"certificates": {
|
||||
"label": "Сертификаты"
|
||||
"label": "Сертификаты",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "Доверенные сертификаты",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": "Истекает {when}"
|
||||
"expires": "Истекает {when}",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": "Произошла ошибка при удалении сертификата"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Otestujte pripojenie a vytvorte",
|
||||
"edit": "Otestujte pripojenie a uložte"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "Tlačidlo Uložiť sa aktivuje po úspešnom nadviazaní spojenia.",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Zrušiť",
|
||||
"delete": "Vymazať",
|
||||
"discard": "Zahodiť",
|
||||
"close": "",
|
||||
"confirm": "Potvrďte",
|
||||
"continue": "Pokračovať",
|
||||
"previous": "Predchádzajúci",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": "Záznamy"
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Prekliči",
|
||||
"delete": "Izbriši",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "Potrdi",
|
||||
"continue": "",
|
||||
"previous": "Prejšnji",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Avbryt",
|
||||
"delete": "Ta bort",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "Bekräfta",
|
||||
"continue": "",
|
||||
"previous": "Föregående",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Bağlantıyı test et ve oluştur",
|
||||
"edit": "Bağlantıyı test et ve kaydet"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": "Daha fazla detay içeren neden"
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "Bilinmeyen hata",
|
||||
"description": "Bilinmeyen bir hata oluştu, daha fazla ayrıntı görmek için aşağıdaki nedeni açın"
|
||||
},
|
||||
"parse": {
|
||||
"title": "Ayrıştırma hatası",
|
||||
"description": "Yanıt ayrıştırılamadı. Lütfen URL'nin hizmetin temel URL’sine yönlendirildiğinden emin olun."
|
||||
},
|
||||
"authorization": {
|
||||
"title": "Yetkilendirme hatası",
|
||||
"description": "İstek yetkilendirilemedi. Lütfen kimlik bilgilerinin doğru olduğunu ve yeterli izinlerle yapılandırıldığını doğrulayın."
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "Yanıt hatası",
|
||||
"description": "<url></url> adresinden beklenmeyen bir {statusCode} ({reason}) yanıtı alındı. Lütfen URL’nin entegrasyon temel URL’sine yönlendirildiğinden emin olun.",
|
||||
"otherDescription": "<url></url> adresinden beklenmeyen {statusCode} yanıtı alındı. Lütfen URL’nin entegrasyonun temel URL’sine yönlendirildiğinden emin olun.",
|
||||
"reason": {
|
||||
"badRequest": "Geçersiz istek",
|
||||
"notFound": "Bulunamadı",
|
||||
"tooManyRequests": "Çok fazla istek",
|
||||
"internalServerError": "Dahili sunucu hatası",
|
||||
"serviceUnavailable": "Hizmet mevcut değil",
|
||||
"gatewayTimeout": "Ağ geçidi zaman aşımı"
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "Sertifika hatası",
|
||||
"description": {
|
||||
"expired": "Sertifikanın süresi doldu.",
|
||||
"notYetValid": "Sertifika henüz geçerli değil.",
|
||||
"untrusted": "Sertifika güvenilir değil.",
|
||||
"hostnameMismatch": "Sertifika ana makine adı URL ile eşleşmiyor."
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "İzinler yetersiz",
|
||||
"message": "Sertifikalara güvenmeniz veya yüklemeniz yasaktır. Lütfen gerekli kök sertifikayı yüklemek için yöneticinizle iletişime geçin."
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "Ana makine adı uyumsuzluğu",
|
||||
"message": "Sertifikadaki ana makine adı, bağlandığınız ana makine adıyla eşleşmiyor. Bu bir güvenlik riski olduğunu gösterebilir, ancak yine de bu sertifikaya güvenmeyi seçebilirsiniz."
|
||||
},
|
||||
"extract": {
|
||||
"title": "CA sertifikası çıkarma işlemi başarısız oldu",
|
||||
"message": "Yalnızca zinciri olmayan kendinden imzalı sertifikalar otomatik olarak alınabilir. Kendinden imzalı bir sertifika kullanıyorsanız, lütfen CA sertifikasını manuel olarak yüklediğinizden emin olun. Bunu nasıl yapacağınızla ilgili talimatları <docsLink></docsLink> adresinde bulabilirsiniz."
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": "Yeniden oluşturmayı deneyin"
|
||||
},
|
||||
"trust": {
|
||||
"label": "Güvenilir sertifika"
|
||||
},
|
||||
"upload": {
|
||||
"label": "Sertifika yükle"
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "Güvenilen ana makine adı uyumsuzluğu",
|
||||
"message": "Ana makine adı uyumsuzluğu olan sertifikaya güvenmek istediğinizden emin misiniz?"
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "Güvenilen sertifika",
|
||||
"message": "Ana makine adı güvenilir sertifika listesine eklendi"
|
||||
},
|
||||
"error": {
|
||||
"title": "Sertifikaya güvenilemedi",
|
||||
"message": "Ana makine adı uyuşmazlığı olan sertifikaya güvenilemedi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "Kendinden imzalı sertifikaya güven",
|
||||
"message": "Kendinden imzalı bu sertifikaya güvenmek istediğinizden emin misiniz?"
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "Güvenilen sertifika",
|
||||
"message": "Sertifika güvenilen sertifika listesine eklendi"
|
||||
},
|
||||
"error": {
|
||||
"title": "Sertifikaya güvenilemedi",
|
||||
"message": "Sertifika güvenilen sertifika listesine eklenemedi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "Ayrıntılar",
|
||||
"description": "Güvenmeye karar vermeden önce sertifika bilgilerini inceleyin.",
|
||||
"content": {
|
||||
"action": "İçeriği göster",
|
||||
"title": "PEM Sertifikası"
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "İstek hatası",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "Sunucuya ulaşılamadı. Bu genellikle ana makinanın çevrimdışı olduğu veya ağınızdan erişilemediği anlamına gelir.",
|
||||
"networkUnreachable": "Ağa ulaşılamıyor. Lütfen internet bağlantınızı veya ağ yapılandırmanızı kontrol edin.",
|
||||
"refused": "Sunucu bağlantıyı reddetti. Belirtilen portta çalışmıyor olabilir veya istekler reddediliyor olabilir.",
|
||||
"reset": "Bağlantı sunucu tarafından beklenmedik şekilde kapatıldı. Bu, sunucunun dengesiz olması veya yeniden başlatılması durumunda olabilir."
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "Sunucu adresine ulaşılamadı. Lütfen URL’de yazım hatası veya geçersiz bir alan adı olup olmadığını kontrol edin.",
|
||||
"timeout": "DNS sorgusu zaman aşımına uğradı. Bu geçici bir sorun olabilir lütfen kısa bir süre sonra yeniden deneyin.",
|
||||
"noAnswer": "DNS sunucusu geçerli bir yanıt döndürmedi. Alan adı mevcut olabilir ancak geçerli kayıtlara sahip olmayabilir."
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "İstek tamamlanmadan önce iptal edildi. Bunun nedeni kullanıcı müdahalesi veya sistem zaman aşımı olabilir.",
|
||||
"timeout": "İsteğin tamamlanması çok uzun sürdü ve zaman aşımına uğradı. Ağ bağlantınızı kontrol edin veya daha sonra tekrar deneyin."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "Bağlantı başarılı olduğunda Kaydet butonu etkinleştirilir",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Vazgeç",
|
||||
"delete": "Sil",
|
||||
"discard": "Yoksay",
|
||||
"close": "Kapat",
|
||||
"confirm": "Onayla",
|
||||
"continue": "Devam Et",
|
||||
"previous": "Önceki",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": "Günlükler"
|
||||
},
|
||||
"certificates": {
|
||||
"label": "Sertifikalar"
|
||||
"label": "Sertifikalar",
|
||||
"hostnames": {
|
||||
"label": "Ana makine adları"
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": "Sunucu"
|
||||
},
|
||||
"subject": {
|
||||
"label": "Konu"
|
||||
},
|
||||
"issuer": {
|
||||
"label": "Sağlayıcı"
|
||||
},
|
||||
"validFrom": {
|
||||
"label": "Zamanından itibaren"
|
||||
},
|
||||
"validTo": {
|
||||
"label": "Zamanına kadar"
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": "Seri numarası"
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": "Parmak izi"
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "Güvenilen sertifikalar",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "Geçersiz sertifika",
|
||||
"description": "Sertifika çözümlenemedi"
|
||||
},
|
||||
"expires": "{when} süresi doluyor"
|
||||
"expires": "{when} süresi doluyor",
|
||||
"toHostnames": "Güvenilir ana makine adları"
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "Güvenilen sertifika ana makine adları",
|
||||
"description": "Bazı sertifikalar, Homarr’ın kullanmak istediği belirli alan adından istek yapılmasına izin vermemektedir. Bu nedenle, bu kısıtlamaları aşmak için tüm güvenilen ana makineler ve onların sertifika parmak izleri kullanılır.",
|
||||
"noResults": {
|
||||
"title": "Henüz hiçbir ana makine adı yok"
|
||||
},
|
||||
"toCertificates": "Sertifikalar"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": "Sertifika kaldırılamadı"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "Güvenilen ana makine adını kaldır",
|
||||
"confirm": "Güvenilen bu ana makine adını kaldırmak istediğinizden emin misiniz? İşlem, bazı entegrasyonların çalışmamasına neden olabilir.",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "Ana makine adı kaldırıldı",
|
||||
"message": "Ana makine adı başarıyla kaldırıldı"
|
||||
},
|
||||
"error": {
|
||||
"title": "Ana makine adı kaldırılmadı",
|
||||
"message": "Ana makine adı kaldırılamadı"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "Перевірити підключення та створити",
|
||||
"edit": "Перевірити підключення та зберегти"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "Кнопка \"Зберегти\" стане доступною після успішного підключення",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Скасувати",
|
||||
"delete": "Видалити",
|
||||
"discard": "Відмінити",
|
||||
"close": "",
|
||||
"confirm": "Підтвердити",
|
||||
"continue": "Продовжити",
|
||||
"previous": "Попередній",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": "Логи"
|
||||
},
|
||||
"certificates": {
|
||||
"label": "Сертифікати"
|
||||
"label": "Сертифікати",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": "Не вдалося видалити сертифікат"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "",
|
||||
"edit": ""
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "Hủy",
|
||||
"delete": "Xóa",
|
||||
"discard": "",
|
||||
"close": "",
|
||||
"confirm": "Xác nhận",
|
||||
"continue": "",
|
||||
"previous": "Trước",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"certificates": {
|
||||
"label": ""
|
||||
"label": "",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"expires": ""
|
||||
"expires": "",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +702,132 @@
|
||||
"create": "測試連線並創建",
|
||||
"edit": "測試連線並儲存"
|
||||
},
|
||||
"error": {
|
||||
"common": {
|
||||
"cause": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"parse": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"authorization": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"statusCode": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"otherDescription": "",
|
||||
"reason": {
|
||||
"badRequest": "",
|
||||
"notFound": "",
|
||||
"tooManyRequests": "",
|
||||
"internalServerError": "",
|
||||
"serviceUnavailable": "",
|
||||
"gatewayTimeout": ""
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"expired": "",
|
||||
"notYetValid": "",
|
||||
"untrusted": "",
|
||||
"hostnameMismatch": ""
|
||||
},
|
||||
"alert": {
|
||||
"permission": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"extract": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"retry": {
|
||||
"label": ""
|
||||
},
|
||||
"trust": {
|
||||
"label": ""
|
||||
},
|
||||
"upload": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"hostnameMismatch": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"selfSigned": {
|
||||
"confirm": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"content": {
|
||||
"action": "",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"title": "",
|
||||
"description": {
|
||||
"connection": {
|
||||
"hostUnreachable": "",
|
||||
"networkUnreachable": "",
|
||||
"refused": "",
|
||||
"reset": ""
|
||||
},
|
||||
"dns": {
|
||||
"notFound": "",
|
||||
"timeout": "",
|
||||
"noAnswer": ""
|
||||
},
|
||||
"timeout": {
|
||||
"aborted": "",
|
||||
"timeout": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alertNotice": "成功建立連線後儲存按鈕將啟用",
|
||||
"notification": {
|
||||
"success": {
|
||||
@@ -878,6 +1004,7 @@
|
||||
"cancel": "取消",
|
||||
"delete": "移除",
|
||||
"discard": "丟棄",
|
||||
"close": "",
|
||||
"confirm": "確認",
|
||||
"continue": "繼續",
|
||||
"previous": "上一步",
|
||||
@@ -3496,7 +3623,10 @@
|
||||
"label": "Logs"
|
||||
},
|
||||
"certificates": {
|
||||
"label": "憑證"
|
||||
"label": "憑證",
|
||||
"hostnames": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -3894,6 +4024,29 @@
|
||||
}
|
||||
},
|
||||
"certificate": {
|
||||
"field": {
|
||||
"hostname": {
|
||||
"label": ""
|
||||
},
|
||||
"subject": {
|
||||
"label": ""
|
||||
},
|
||||
"issuer": {
|
||||
"label": ""
|
||||
},
|
||||
"validFrom": {
|
||||
"label": ""
|
||||
},
|
||||
"validTo": {
|
||||
"label": ""
|
||||
},
|
||||
"serialNumber": {
|
||||
"label": ""
|
||||
},
|
||||
"fingerprint": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "可信任的憑證",
|
||||
@@ -3905,7 +4058,16 @@
|
||||
"title": "無效的證書",
|
||||
"description": "解析證書失敗"
|
||||
},
|
||||
"expires": "到期 {when}"
|
||||
"expires": "到期 {when}",
|
||||
"toHostnames": ""
|
||||
},
|
||||
"hostnames": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
},
|
||||
"toCertificates": ""
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -3935,6 +4097,20 @@
|
||||
"message": "此憑證無法被移除"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeHostname": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"@mantine/core": "^8.0.1",
|
||||
"@mantine/dates": "^8.0.1",
|
||||
"@mantine/hooks": "^8.0.1",
|
||||
"@tabler/icons-react": "^3.31.0",
|
||||
"@tabler/icons-react": "^3.33.0",
|
||||
"mantine-react-table": "2.0.0-beta.9",
|
||||
"next": "15.3.2",
|
||||
"react": "19.1.0",
|
||||
@@ -43,7 +43,7 @@
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/css-modules": "^1.0.5",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -24,14 +24,14 @@
|
||||
"dependencies": {
|
||||
"@homarr/definitions": "workspace:^0.1.0",
|
||||
"@homarr/translation": "workspace:^0.1.0",
|
||||
"zod": "^3.24.4",
|
||||
"zod": "^3.25.23",
|
||||
"zod-form-data": "^2.0.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -33,6 +33,7 @@
|
||||
"@homarr/common": "workspace:^0.1.0",
|
||||
"@homarr/db": "workspace:^0.1.0",
|
||||
"@homarr/definitions": "workspace:^0.1.0",
|
||||
"@homarr/docker": "workspace:^0.1.0",
|
||||
"@homarr/form": "workspace:^0.1.0",
|
||||
"@homarr/forms-collection": "workspace:^0.1.0",
|
||||
"@homarr/integrations": "workspace:^0.1.0",
|
||||
@@ -50,7 +51,7 @@
|
||||
"@mantine/charts": "^8.0.1",
|
||||
"@mantine/core": "^8.0.1",
|
||||
"@mantine/hooks": "^8.0.1",
|
||||
"@tabler/icons-react": "^3.31.0",
|
||||
"@tabler/icons-react": "^3.33.0",
|
||||
"@tiptap/extension-color": "2.12.0",
|
||||
"@tiptap/extension-highlight": "2.12.0",
|
||||
"@tiptap/extension-image": "2.12.0",
|
||||
@@ -75,14 +76,14 @@
|
||||
"react-markdown": "^10.1.0",
|
||||
"recharts": "^2.15.3",
|
||||
"video.js": "^8.22.0",
|
||||
"zod": "^3.24.4"
|
||||
"zod": "^3.25.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/video.js": "^7.3.58",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,256 @@
|
||||
"use client";
|
||||
|
||||
import { useMemo } from "react";
|
||||
import { ActionIcon, Avatar, Badge, Group, Stack, Text, Tooltip } from "@mantine/core";
|
||||
import type { IconProps } from "@tabler/icons-react";
|
||||
import { IconBrandDocker, IconPlayerPlay, IconPlayerStop, IconRotateClockwise } from "@tabler/icons-react";
|
||||
import type { MRT_ColumnDef } from "mantine-react-table";
|
||||
import { MantineReactTable } from "mantine-react-table";
|
||||
|
||||
import type { RouterOutputs } from "@homarr/api";
|
||||
import { clientApi } from "@homarr/api/client";
|
||||
import { humanFileSize, useTimeAgo } from "@homarr/common";
|
||||
import type { ContainerState } from "@homarr/docker";
|
||||
import { containerStateColorMap } from "@homarr/docker/shared";
|
||||
import { showErrorNotification, showSuccessNotification } from "@homarr/notifications";
|
||||
import { useScopedI18n } from "@homarr/translation/client";
|
||||
import { useTranslatedMantineReactTable } from "@homarr/ui/hooks";
|
||||
|
||||
import type { WidgetComponentProps } from "../definition";
|
||||
|
||||
const ContainerStateBadge = ({ state }: { state: ContainerState }) => {
|
||||
const t = useScopedI18n("docker.field.state.option");
|
||||
|
||||
return (
|
||||
<Badge size="xs" radius="sm" variant="light" color={containerStateColorMap[state]}>
|
||||
{t(state)}
|
||||
</Badge>
|
||||
);
|
||||
};
|
||||
|
||||
const memoryUsageColor = (number: number, state: string) => {
|
||||
const mbUsage = number / 1024 / 1024;
|
||||
if (mbUsage === 0 && state !== "running") return "red";
|
||||
if (mbUsage < 128) return "green";
|
||||
if (mbUsage < 256) return "yellow";
|
||||
if (mbUsage < 512) return "orange";
|
||||
return "red";
|
||||
};
|
||||
|
||||
const cpuUsageColor = (number: number, state: string) => {
|
||||
if (number === 0 && state !== "running") return "red";
|
||||
if (number < 40) return "green";
|
||||
if (number < 60) return "yellow";
|
||||
if (number < 90) return "orange";
|
||||
return "red";
|
||||
};
|
||||
|
||||
const safeValue = (value?: number, fallback = 0) => (value !== undefined && !isNaN(value) ? value : fallback);
|
||||
|
||||
const actionIconIconStyle: IconProps["style"] = {
|
||||
height: "var(--ai-icon-size)",
|
||||
width: "var(--ai-icon-size)",
|
||||
};
|
||||
|
||||
const createColumns = (
|
||||
t: ReturnType<typeof useScopedI18n<"docker">>,
|
||||
): MRT_ColumnDef<RouterOutputs["docker"]["getContainers"]["containers"][number]>[] => [
|
||||
{
|
||||
accessorKey: "name",
|
||||
header: t("field.name.label"),
|
||||
Cell({ renderedCellValue, row }) {
|
||||
return (
|
||||
<Group gap="xs" wrap="nowrap">
|
||||
<Avatar variant="outline" radius="md" size={20} src={row.original.iconUrl} />
|
||||
<Text p="0.5" size="sm" style={{ overflow: "hidden", textOverflow: "ellipsis" }}>
|
||||
{renderedCellValue}
|
||||
</Text>
|
||||
</Group>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
accessorKey: "state",
|
||||
size: 100,
|
||||
header: t("field.state.label"),
|
||||
Cell({ row }) {
|
||||
return <ContainerStateBadge state={row.original.state} />;
|
||||
},
|
||||
},
|
||||
{
|
||||
accessorKey: "cpuUsage",
|
||||
size: 80,
|
||||
header: t("field.stats.cpu.label"),
|
||||
Cell({ row }) {
|
||||
const cpuUsage = safeValue(row.original.cpuUsage);
|
||||
|
||||
return (
|
||||
<Text size="xs" c={cpuUsageColor(cpuUsage, row.original.state)}>
|
||||
{cpuUsage.toFixed(2)}%
|
||||
</Text>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
accessorKey: "memoryUsage",
|
||||
size: 80,
|
||||
header: t("field.stats.memory.label"),
|
||||
Cell({ row }) {
|
||||
const bytesUsage = safeValue(row.original.memoryUsage);
|
||||
|
||||
return (
|
||||
<Text size="xs" c={memoryUsageColor(bytesUsage, row.original.state)}>
|
||||
{humanFileSize(bytesUsage)}
|
||||
</Text>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
accessorKey: "actions",
|
||||
size: 80,
|
||||
header: t("action.title"),
|
||||
Cell({ row }) {
|
||||
const utils = clientApi.useUtils();
|
||||
const { mutateAsync: startContainer } = clientApi.docker.startAll.useMutation();
|
||||
const { mutateAsync: stopContainer } = clientApi.docker.stopAll.useMutation();
|
||||
const { mutateAsync: restartContainer } = clientApi.docker.restartAll.useMutation();
|
||||
|
||||
const handleActionAsync = async (action: "start" | "stop" | "restart") => {
|
||||
const mutation = action === "start" ? startContainer : action === "stop" ? stopContainer : restartContainer;
|
||||
|
||||
await mutation(
|
||||
{ ids: [row.original.id] },
|
||||
{
|
||||
async onSettled() {
|
||||
await utils.docker.getContainers.invalidate();
|
||||
},
|
||||
onSuccess() {
|
||||
showSuccessNotification({
|
||||
title: t(`action.${action}.notification.success.title`),
|
||||
message: t(`action.${action}.notification.success.message`),
|
||||
});
|
||||
},
|
||||
onError() {
|
||||
showErrorNotification({
|
||||
title: t(`action.${action}.notification.error.title`),
|
||||
message: t(`action.${action}.notification.error.message`),
|
||||
});
|
||||
},
|
||||
},
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<Group wrap="nowrap" gap="xs">
|
||||
<Tooltip label={row.original.state === "running" ? t("action.stop.label") : t("action.start.label")}>
|
||||
<ActionIcon
|
||||
variant="subtle"
|
||||
size="xs"
|
||||
radius="100%"
|
||||
onClick={() => handleActionAsync(row.original.state === "running" ? "stop" : "start")}
|
||||
>
|
||||
{row.original.state === "running" ? (
|
||||
<IconPlayerStop style={actionIconIconStyle} />
|
||||
) : (
|
||||
<IconPlayerPlay style={actionIconIconStyle} />
|
||||
)}
|
||||
</ActionIcon>
|
||||
</Tooltip>
|
||||
<Tooltip label={t("action.restart.label")}>
|
||||
<ActionIcon variant="subtle" size="xs" radius="100%" onClick={() => handleActionAsync("restart")}>
|
||||
<IconRotateClockwise style={actionIconIconStyle} />
|
||||
</ActionIcon>
|
||||
</Tooltip>
|
||||
</Group>
|
||||
);
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
export default function DockerWidget({ width }: WidgetComponentProps<"dockerContainers">) {
|
||||
const t = useScopedI18n("docker");
|
||||
const isTiny = width <= 256;
|
||||
|
||||
const utils = clientApi.useUtils();
|
||||
const [{ containers, timestamp }] = clientApi.docker.getContainers.useSuspenseQuery();
|
||||
const relativeTime = useTimeAgo(timestamp);
|
||||
|
||||
clientApi.docker.subscribeContainers.useSubscription(undefined, {
|
||||
onData(data) {
|
||||
utils.docker.getContainers.setData(undefined, { containers: data, timestamp: new Date() });
|
||||
},
|
||||
});
|
||||
|
||||
const totalContainers = containers.length;
|
||||
|
||||
const columns = useMemo(() => createColumns(t), [t]);
|
||||
|
||||
const table = useTranslatedMantineReactTable({
|
||||
columns,
|
||||
data: containers,
|
||||
enablePagination: false,
|
||||
enableTopToolbar: false,
|
||||
enableBottomToolbar: false,
|
||||
enableSorting: false,
|
||||
enableColumnActions: false,
|
||||
enableStickyHeader: false,
|
||||
enableColumnOrdering: false,
|
||||
enableRowSelection: false,
|
||||
enableFullScreenToggle: false,
|
||||
enableGlobalFilter: false,
|
||||
enableDensityToggle: false,
|
||||
enableFilters: false,
|
||||
enableHiding: false,
|
||||
initialState: {
|
||||
density: "xs",
|
||||
},
|
||||
mantinePaperProps: {
|
||||
flex: 1,
|
||||
withBorder: false,
|
||||
shadow: undefined,
|
||||
},
|
||||
mantineTableProps: {
|
||||
className: "docker-widget-table",
|
||||
style: {
|
||||
tableLayout: "fixed",
|
||||
},
|
||||
},
|
||||
mantineTableHeadProps: {
|
||||
fz: "xs",
|
||||
},
|
||||
mantineTableHeadCellProps: {
|
||||
p: 4,
|
||||
},
|
||||
mantineTableBodyCellProps: {
|
||||
p: 4,
|
||||
},
|
||||
mantineTableContainerProps: {
|
||||
style: {
|
||||
height: "100%",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return (
|
||||
<Stack gap={0} h="100%" display="flex">
|
||||
<MantineReactTable table={table} />
|
||||
|
||||
{!isTiny && (
|
||||
<Group
|
||||
justify="space-between"
|
||||
style={{
|
||||
borderTop: "0.0625rem solid var(--border-color)",
|
||||
}}
|
||||
p={4}
|
||||
>
|
||||
<Group gap={4}>
|
||||
<IconBrandDocker size={20} />
|
||||
<Text size="sm">{t("table.footer", { count: totalContainers.toString() })}</Text>
|
||||
</Group>
|
||||
|
||||
<Text size="sm">{t("table.updated", { when: relativeTime })}</Text>
|
||||
</Group>
|
||||
)}
|
||||
</Stack>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import { IconBrandDocker, IconServerOff } from "@tabler/icons-react";
|
||||
|
||||
import { createWidgetDefinition } from "../definition";
|
||||
import { optionsBuilder } from "../options";
|
||||
|
||||
export const { definition, componentLoader } = createWidgetDefinition("dockerContainers", {
|
||||
icon: IconBrandDocker,
|
||||
createOptions() {
|
||||
return optionsBuilder.from(() => ({}));
|
||||
},
|
||||
errors: {
|
||||
INTERNAL_SERVER_ERROR: {
|
||||
icon: IconServerOff,
|
||||
message: (t) => t("widget.dockerContainers.error.internalServerError"),
|
||||
},
|
||||
},
|
||||
}).withDynamicImport(() => import("./component"));
|
||||
@@ -6,7 +6,7 @@ import { translateIfNecessary } from "@homarr/translation";
|
||||
import { useI18n } from "@homarr/translation/client";
|
||||
import type { TablerIcon } from "@homarr/ui";
|
||||
|
||||
interface BaseWidgetErrorProps {
|
||||
export interface BaseWidgetErrorProps {
|
||||
icon: TablerIcon;
|
||||
message: stringOrTranslation;
|
||||
showLogsLink?: boolean;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { useMemo } from "react";
|
||||
import { IconExclamationCircle } from "@tabler/icons-react";
|
||||
import { IconExclamationCircle, IconShield } from "@tabler/icons-react";
|
||||
import { TRPCClientError } from "@trpc/client";
|
||||
import type { DefaultErrorData } from "@trpc/server/unstable-core-do-not-import";
|
||||
|
||||
@@ -8,6 +8,7 @@ import type { WidgetKind } from "@homarr/definitions";
|
||||
import type { WidgetDefinition } from "..";
|
||||
import { widgetImports } from "..";
|
||||
import { ErrorBoundaryError } from "./base";
|
||||
import type { BaseWidgetErrorProps } from "./base-component";
|
||||
import { BaseWidgetError } from "./base-component";
|
||||
|
||||
interface WidgetErrorProps {
|
||||
@@ -23,28 +24,58 @@ export const WidgetError = ({ error, resetErrorBoundary, kind }: WidgetErrorProp
|
||||
return <BaseWidgetError {...error.getErrorBoundaryData()} onRetry={resetErrorBoundary} />;
|
||||
}
|
||||
|
||||
const commonFallbackError = (
|
||||
const widgetTrpcErrorData = handleWidgetTrpcError(error, currentDefinition);
|
||||
if (widgetTrpcErrorData) {
|
||||
return <BaseWidgetError {...widgetTrpcErrorData} onRetry={resetErrorBoundary} />;
|
||||
}
|
||||
|
||||
const trpcErrorData = handleCommonTrpcError(error);
|
||||
if (trpcErrorData) {
|
||||
return <BaseWidgetError {...trpcErrorData} onRetry={resetErrorBoundary} />;
|
||||
}
|
||||
|
||||
return (
|
||||
<BaseWidgetError
|
||||
icon={IconExclamationCircle}
|
||||
message={(error as { toString: () => string }).toString()}
|
||||
onRetry={resetErrorBoundary}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
if (error instanceof TRPCClientError && "code" in error.data) {
|
||||
const errorData = error.data as DefaultErrorData;
|
||||
const handleWidgetTrpcError = (
|
||||
error: unknown,
|
||||
currentDefinition: WidgetDefinition,
|
||||
): Omit<BaseWidgetErrorProps, "onRetry"> | null => {
|
||||
if (!(error instanceof TRPCClientError && "code" in error.data)) return null;
|
||||
|
||||
if (!("errors" in currentDefinition)) return commonFallbackError;
|
||||
const errorData = error.data as DefaultErrorData;
|
||||
|
||||
const errors: Exclude<WidgetDefinition["errors"], undefined> = currentDefinition.errors;
|
||||
const errorDefinition = errors[errorData.code];
|
||||
if (!("errors" in currentDefinition) || currentDefinition.errors === undefined) return null;
|
||||
|
||||
if (!errorDefinition) return commonFallbackError;
|
||||
const errors: Exclude<WidgetDefinition["errors"], undefined> = currentDefinition.errors;
|
||||
const errorDefinition = errors[errorData.code];
|
||||
|
||||
return (
|
||||
<BaseWidgetError {...errorDefinition} onRetry={resetErrorBoundary} showLogsLink={!errorDefinition.hideLogsLink} />
|
||||
);
|
||||
if (!errorDefinition) return null;
|
||||
|
||||
return {
|
||||
...errorDefinition,
|
||||
showLogsLink: !errorDefinition.hideLogsLink,
|
||||
};
|
||||
};
|
||||
|
||||
const handleCommonTrpcError = (error: unknown): Omit<BaseWidgetErrorProps, "onRetry"> | null => {
|
||||
if (!(error instanceof TRPCClientError && "code" in error.data)) return null;
|
||||
|
||||
const errorData = error.data as DefaultErrorData;
|
||||
|
||||
if (errorData.code === "UNAUTHORIZED" || errorData.code === "FORBIDDEN") {
|
||||
return {
|
||||
icon: IconShield,
|
||||
message: "You don't have permission to access this widget",
|
||||
showLogsLink: false,
|
||||
};
|
||||
}
|
||||
|
||||
return commonFallbackError;
|
||||
return null;
|
||||
};
|
||||
@@ -14,6 +14,7 @@ import * as clock from "./clock";
|
||||
import type { WidgetComponentProps } from "./definition";
|
||||
import * as dnsHoleControls from "./dns-hole/controls";
|
||||
import * as dnsHoleSummary from "./dns-hole/summary";
|
||||
import * as dockerContainers from "./docker";
|
||||
import * as downloads from "./downloads";
|
||||
import * as healthMonitoring from "./health-monitoring";
|
||||
import * as iframe from "./iframe";
|
||||
@@ -64,6 +65,7 @@ export const widgetImports = {
|
||||
healthMonitoring,
|
||||
mediaTranscoding,
|
||||
minecraftServerStatus,
|
||||
dockerContainers,
|
||||
releases,
|
||||
} satisfies WidgetImportRecord;
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ export default function ReleasesWidget({ options }: WidgetComponentProps<"releas
|
||||
);
|
||||
|
||||
return (
|
||||
<Stack gap={0}>
|
||||
<Stack gap={0} className="releases">
|
||||
{repositories.map((repository: ReleasesRepositoryResponse) => {
|
||||
const isActive =
|
||||
expandedRepository.providerKey === repository.providerKey &&
|
||||
@@ -139,17 +139,23 @@ export default function ReleasesWidget({ options }: WidgetComponentProps<"releas
|
||||
return (
|
||||
<Stack
|
||||
key={`${repository.providerKey}.${repository.identifier}`}
|
||||
className={classes.releasesRepository}
|
||||
className={combineClasses(
|
||||
"releases-repository",
|
||||
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
||||
`releases-repository-${repository.providerKey}-${repository.name || repository.identifier.replace(/[^a-zA-Z0-9]/g, "_")}`,
|
||||
classes.releasesRepository,
|
||||
)}
|
||||
gap={0}
|
||||
>
|
||||
<Group
|
||||
className={combineClasses(classes.releasesRepositoryHeader, {
|
||||
className={combineClasses("releases-repository-header", classes.releasesRepositoryHeader, {
|
||||
[classes.active ?? ""]: isActive,
|
||||
})}
|
||||
p="xs"
|
||||
onClick={() => toggleExpandedRepository(repository)}
|
||||
>
|
||||
<MaskedOrNormalImage
|
||||
className="releases-repository-header-icon"
|
||||
imageUrl={repository.iconUrl ?? Providers[repository.providerKey]?.iconUrl}
|
||||
hasColor={hasIconColor}
|
||||
style={{
|
||||
@@ -158,24 +164,40 @@ export default function ReleasesWidget({ options }: WidgetComponentProps<"releas
|
||||
}}
|
||||
/>
|
||||
|
||||
<Group gap={5} justify="space-between" style={{ flex: 1 }}>
|
||||
{/* eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing */}
|
||||
<Text size="xs">{repository.name || repository.identifier}</Text>
|
||||
<Group
|
||||
className="releases-repository-header-nameVersion-wrapper"
|
||||
gap={5}
|
||||
justify="space-between"
|
||||
style={{ flex: 1 }}
|
||||
>
|
||||
<Text className="releases-repository-header-name" size="xs">
|
||||
{/* eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing */}
|
||||
{repository.name || repository.identifier}
|
||||
</Text>
|
||||
|
||||
<Tooltip
|
||||
className="releases-repository-header-version-tooltip"
|
||||
withArrow
|
||||
arrowSize={5}
|
||||
label={repository.latestRelease}
|
||||
events={{ hover: repository.latestRelease !== undefined, focus: false, touch: false }}
|
||||
>
|
||||
<Text size="xs" fw={700} truncate="end" c={hasError ? "red" : "text"} style={{ flexShrink: 1 }}>
|
||||
<Text
|
||||
className="releases-repository-header-version"
|
||||
size="xs"
|
||||
fw={700}
|
||||
truncate="end"
|
||||
c={hasError ? "red" : "text"}
|
||||
style={{ flexShrink: 1 }}
|
||||
>
|
||||
{hasError ? t("error.label") : (repository.latestRelease ?? t("not-found"))}
|
||||
</Text>
|
||||
</Tooltip>
|
||||
</Group>
|
||||
|
||||
<Group gap={5}>
|
||||
<Group className="releases-repository-header-releaseDate-wrapper" gap={5}>
|
||||
<Text
|
||||
className="releases-repository-header-releaseDate"
|
||||
size="xs"
|
||||
c={repository.isNewRelease ? "primaryColor" : repository.isStaleRelease ? "secondaryColor" : "dimmed"}
|
||||
>
|
||||
@@ -189,6 +211,7 @@ export default function ReleasesWidget({ options }: WidgetComponentProps<"releas
|
||||
{!hasError ? (
|
||||
(repository.isNewRelease || repository.isStaleRelease) && (
|
||||
<IconCircleFilled
|
||||
className="releases-repository-header-releaseDate-marker"
|
||||
size={10}
|
||||
color={
|
||||
repository.isNewRelease
|
||||
@@ -198,7 +221,11 @@ export default function ReleasesWidget({ options }: WidgetComponentProps<"releas
|
||||
/>
|
||||
)
|
||||
) : (
|
||||
<IconTriangleFilled size={10} color={"var(--mantine-color-red-filled)"} />
|
||||
<IconTriangleFilled
|
||||
className="releases-repository-header-releaseDate-error"
|
||||
size={10}
|
||||
color={"var(--mantine-color-red-filled)"}
|
||||
/>
|
||||
)}
|
||||
</Group>
|
||||
</Group>
|
||||
@@ -206,7 +233,7 @@ export default function ReleasesWidget({ options }: WidgetComponentProps<"releas
|
||||
<DetailsDisplay repository={repository} toggleExpandedRepository={toggleExpandedRepository} />
|
||||
)}
|
||||
{isActive && <ExpandedDisplay repository={repository} hasIconColor={hasIconColor} />}
|
||||
<Divider />
|
||||
<Divider className="releases-repository-divider" />
|
||||
</Stack>
|
||||
);
|
||||
})}
|
||||
@@ -225,16 +252,28 @@ const DetailsDisplay = ({ repository, toggleExpandedRepository }: DetailsDisplay
|
||||
|
||||
return (
|
||||
<>
|
||||
<Divider onClick={() => toggleExpandedRepository(repository)} />
|
||||
<Divider className="releases-repository-details-divider" onClick={() => toggleExpandedRepository(repository)} />
|
||||
<Group
|
||||
className={classes.releasesRepositoryDetails}
|
||||
className={combineClasses("releases-repository-details", classes.releasesRepositoryDetails)}
|
||||
justify="space-between"
|
||||
p={5}
|
||||
onClick={() => toggleExpandedRepository(repository)}
|
||||
>
|
||||
<Group>
|
||||
<Tooltip label={t("pre-release")} withArrow arrowSize={5}>
|
||||
<Group className="releases-repository-details-icon-wrapper">
|
||||
<Tooltip
|
||||
className={combineClasses(
|
||||
"releases-repository-details-icon-tooltip",
|
||||
"releases-repository-details-icon-preRelease-tooltip",
|
||||
)}
|
||||
label={t("pre-release")}
|
||||
withArrow
|
||||
arrowSize={5}
|
||||
>
|
||||
<IconProgressCheck
|
||||
className={combineClasses(
|
||||
"releases-repository-details-icon",
|
||||
"releases-repository-details-icon-preRelease",
|
||||
)}
|
||||
size={13}
|
||||
color={
|
||||
repository.isPreRelease ? "var(--mantine-color-secondaryColor-text)" : "var(--mantine-color-dimmed)"
|
||||
@@ -242,28 +281,74 @@ const DetailsDisplay = ({ repository, toggleExpandedRepository }: DetailsDisplay
|
||||
/>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip label={t("archived")} withArrow arrowSize={5}>
|
||||
<Tooltip
|
||||
className={combineClasses(
|
||||
"releases-repository-details-icon-tooltip",
|
||||
"releases-repository-details-icon-archived-tooltip",
|
||||
)}
|
||||
label={t("archived")}
|
||||
withArrow
|
||||
arrowSize={5}
|
||||
>
|
||||
<IconArchive
|
||||
className={combineClasses(
|
||||
"releases-repository-details-icon",
|
||||
"releases-repository-details-icon-archived",
|
||||
)}
|
||||
size={13}
|
||||
color={repository.isArchived ? "var(--mantine-color-secondaryColor-text)" : "var(--mantine-color-dimmed)"}
|
||||
/>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip label={t("forked")} withArrow arrowSize={5}>
|
||||
<Tooltip
|
||||
className={combineClasses(
|
||||
"releases-repository-details-icon-tooltip",
|
||||
"releases-repository-details-icon-forked-tooltip",
|
||||
)}
|
||||
label={t("forked")}
|
||||
withArrow
|
||||
arrowSize={5}
|
||||
>
|
||||
<IconGitFork
|
||||
className={combineClasses("releases-repository-details-icon", "releases-repository-details-icon-forked")}
|
||||
size={13}
|
||||
color={repository.isFork ? "var(--mantine-color-secondaryColor-text)" : "var(--mantine-color-dimmed)"}
|
||||
/>
|
||||
</Tooltip>
|
||||
</Group>
|
||||
<Group>
|
||||
<Tooltip label={t("starsCount")} withArrow arrowSize={5}>
|
||||
<Group gap={5}>
|
||||
<Group className="releases-repository-details-stats">
|
||||
<Tooltip
|
||||
className={combineClasses(
|
||||
"releases-repository-details-stats-tooltip",
|
||||
"releases-repository-details-stats-stars-tooltip",
|
||||
)}
|
||||
label={t("starsCount")}
|
||||
withArrow
|
||||
arrowSize={5}
|
||||
>
|
||||
<Group
|
||||
className={combineClasses(
|
||||
"releases-repository-details-stats-wrapper",
|
||||
"releases-repository-details-stats-stars-wrapper",
|
||||
)}
|
||||
gap={5}
|
||||
>
|
||||
<IconStar
|
||||
className={combineClasses(
|
||||
"releases-repository-details-stats-icon",
|
||||
"releases-repository-details-stats-stars-icon",
|
||||
)}
|
||||
size={12}
|
||||
color={!repository.starsCount ? "var(--mantine-color-dimmed)" : "var(--mantine-color-text)"}
|
||||
/>
|
||||
<Text size="xs" c={!repository.starsCount ? "dimmed" : ""}>
|
||||
<Text
|
||||
className={combineClasses(
|
||||
"releases-repository-details-stats-text",
|
||||
"releases-repository-details-stats-stars-text",
|
||||
)}
|
||||
size="xs"
|
||||
c={!repository.starsCount ? "dimmed" : ""}
|
||||
>
|
||||
{!repository.starsCount
|
||||
? "-"
|
||||
: formatter.number(repository.starsCount, {
|
||||
@@ -274,13 +359,38 @@ const DetailsDisplay = ({ repository, toggleExpandedRepository }: DetailsDisplay
|
||||
</Group>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip label={t("forksCount")} withArrow arrowSize={5}>
|
||||
<Group gap={5}>
|
||||
<Tooltip
|
||||
className={combineClasses(
|
||||
"releases-repository-details-stats-tooltip",
|
||||
"releases-repository-details-stats-forks-tooltip",
|
||||
)}
|
||||
label={t("forksCount")}
|
||||
withArrow
|
||||
arrowSize={5}
|
||||
>
|
||||
<Group
|
||||
className={combineClasses(
|
||||
"releases-repository-details-stats-wrapper",
|
||||
"releases-repository-details-stats-forks-wrapper",
|
||||
)}
|
||||
gap={5}
|
||||
>
|
||||
<IconGitFork
|
||||
className={combineClasses(
|
||||
"releases-repository-details-stats-icon",
|
||||
"releases-repository-details-stats-forks-icon",
|
||||
)}
|
||||
size={12}
|
||||
color={!repository.forksCount ? "var(--mantine-color-dimmed)" : "var(--mantine-color-text)"}
|
||||
/>
|
||||
<Text size="xs" c={!repository.forksCount ? "dimmed" : ""}>
|
||||
<Text
|
||||
className={combineClasses(
|
||||
"releases-repository-details-stats-text",
|
||||
"releases-repository-details-stats-forks-text",
|
||||
)}
|
||||
size="xs"
|
||||
c={!repository.forksCount ? "dimmed" : ""}
|
||||
>
|
||||
{!repository.forksCount
|
||||
? "-"
|
||||
: formatter.number(repository.forksCount, {
|
||||
@@ -291,13 +401,38 @@ const DetailsDisplay = ({ repository, toggleExpandedRepository }: DetailsDisplay
|
||||
</Group>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip label={t("issuesCount")} withArrow arrowSize={5}>
|
||||
<Group gap={5}>
|
||||
<Tooltip
|
||||
className={combineClasses(
|
||||
"releases-repository-details-stats-tooltip",
|
||||
"releases-repository-details-stats-issues-tooltip",
|
||||
)}
|
||||
label={t("issuesCount")}
|
||||
withArrow
|
||||
arrowSize={5}
|
||||
>
|
||||
<Group
|
||||
className={combineClasses(
|
||||
"releases-repository-details-stats-wrapper",
|
||||
"releases-repository-details-stats-issues-wrapper",
|
||||
)}
|
||||
gap={5}
|
||||
>
|
||||
<IconCircleDot
|
||||
className={combineClasses(
|
||||
"releases-repository-details-stats-icon",
|
||||
"releases-repository-details-stats-issues-icon",
|
||||
)}
|
||||
size={12}
|
||||
color={!repository.openIssues ? "var(--mantine-color-dimmed)" : "var(--mantine-color-text)"}
|
||||
/>
|
||||
<Text size="xs" c={!repository.openIssues ? "dimmed" : ""}>
|
||||
<Text
|
||||
className={combineClasses(
|
||||
"releases-repository-details-stats-text",
|
||||
"releases-repository-details-stats-issues-text",
|
||||
)}
|
||||
size="xs"
|
||||
c={!repository.openIssues ? "dimmed" : ""}
|
||||
>
|
||||
{!repository.openIssues
|
||||
? "-"
|
||||
: formatter.number(repository.openIssues, {
|
||||
@@ -325,11 +460,20 @@ const ExpandedDisplay = ({ repository, hasIconColor }: ExtendedDisplayProps) =>
|
||||
|
||||
return (
|
||||
<>
|
||||
<Divider mx={5} />
|
||||
<Stack className={classes.releasesRepositoryExpanded} gap={0} p={10}>
|
||||
<Group justify="space-between" align="center">
|
||||
<Group gap={5} align="center">
|
||||
<Divider className="releases-repository-expanded-divider" mx={5} />
|
||||
<Stack
|
||||
className={combineClasses("releases-repository-expanded", classes.releasesRepositoryExpanded)}
|
||||
gap="xs"
|
||||
p={10}
|
||||
>
|
||||
<Group className="releases-repository-expanded-header" justify="space-between" align="center" gap="xs">
|
||||
<Text className="releases-repository-expanded-header-identifier" size="xs" c="iconColor" ff="monospace">
|
||||
{repository.identifier}
|
||||
</Text>
|
||||
|
||||
<Group className="releases-repository-expanded-header-provider-wrapper" gap={5} align="center">
|
||||
<MaskedOrNormalImage
|
||||
className="releases-repository-expanded-header-provider-icon"
|
||||
imageUrl={Providers[repository.providerKey]?.iconUrl}
|
||||
hasColor={hasIconColor}
|
||||
style={{
|
||||
@@ -337,61 +481,72 @@ const ExpandedDisplay = ({ repository, hasIconColor }: ExtendedDisplayProps) =>
|
||||
aspectRatio: "1/1",
|
||||
}}
|
||||
/>
|
||||
<Text size="xs" c="iconColor" ff="monospace">
|
||||
<Text className="releases-repository-expanded-header-provider-name" size="xs" c="iconColor" ff="monospace">
|
||||
{Providers[repository.providerKey]?.name}
|
||||
</Text>
|
||||
</Group>
|
||||
{repository.createdAt && (
|
||||
<Text size="xs" c="dimmed" ff="monospace">
|
||||
<Text span>{t("created")}</Text>
|
||||
<Text span> | </Text>
|
||||
<Text span fw={700}>
|
||||
{formatter.relativeTime(repository.createdAt, {
|
||||
now,
|
||||
style: "narrow",
|
||||
})}
|
||||
</Text>
|
||||
</Text>
|
||||
)}
|
||||
</Group>
|
||||
|
||||
<Text size="xs" c="iconColor" ff="monospace">
|
||||
{repository.identifier}
|
||||
</Text>
|
||||
|
||||
{repository.createdAt && (
|
||||
<Text className="releases-repository-expanded-createdAt" size="xs" c="dimmed" ff="monospace">
|
||||
<Text className="releases-repository-expanded-createdAt-label" span>
|
||||
{`${t("created")} | `}
|
||||
</Text>
|
||||
<Text className="releases-repository-expanded-createdAt-date" span fw={700}>
|
||||
{formatter.relativeTime(repository.createdAt, {
|
||||
now,
|
||||
style: "narrow",
|
||||
})}
|
||||
</Text>
|
||||
</Text>
|
||||
)}
|
||||
{(repository.releaseUrl ?? repository.projectUrl) && (
|
||||
<>
|
||||
<Divider my={10} mx="30%" />
|
||||
<Divider className="releases-repository-expanded-openButton-divider" mx="30%" />
|
||||
<Button
|
||||
className="releases-repository-expanded-openButton"
|
||||
variant="light"
|
||||
component="a"
|
||||
href={repository.releaseUrl ?? repository.projectUrl}
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
<IconExternalLink />
|
||||
{repository.releaseUrl ? t("openReleasePage") : t("openProjectPage")}
|
||||
<IconExternalLink className="releases-repository-expanded-openButton-icon" />
|
||||
<Text className="releases-repository-expanded-openButton-text">
|
||||
{repository.releaseUrl ? t("openReleasePage") : t("openProjectPage")}
|
||||
</Text>
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
{repository.error && (
|
||||
<>
|
||||
<Divider my={10} mx="30%" />
|
||||
<Title order={4} ta="center">
|
||||
<Divider className="releases-repository-expanded-error-divider" mx="30%" />
|
||||
<Title className="releases-repository-expanded-error-title" order={4} ta="center">
|
||||
{t("error.label")}
|
||||
</Title>
|
||||
<Text size="xs" ff="monospace" c="red" style={{ whiteSpace: "pre-wrap" }}>
|
||||
<Text
|
||||
className="releases-repository-expanded-error-text"
|
||||
size="xs"
|
||||
ff="monospace"
|
||||
c="red"
|
||||
style={{ whiteSpace: "pre-wrap" }}
|
||||
>
|
||||
{repository.error.code ? t(`error.options.${repository.error.code}` as never) : repository.error.message}
|
||||
</Text>
|
||||
</>
|
||||
)}
|
||||
{repository.releaseDescription && (
|
||||
<>
|
||||
<Divider my={10} mx="30%" />
|
||||
<Title order={4} ta="center">
|
||||
<Divider className="releases-repository-expanded-description-divider" my={10} mx="30%" />
|
||||
<Title className="releases-repository-expanded-description-title" order={4} ta="center">
|
||||
{t("releaseDescription")}
|
||||
</Title>
|
||||
<Text component="div" size="xs" ff="monospace" className={classes.releasesDescription}>
|
||||
<Text
|
||||
className={combineClasses("releases-repository-expanded-description-text", classes.releasesDescription)}
|
||||
component="div"
|
||||
size="xs"
|
||||
ff="monospace"
|
||||
>
|
||||
<ReactMarkdown skipHtml>{repository.releaseDescription}</ReactMarkdown>
|
||||
</Text>
|
||||
</>
|
||||
|
||||
Generated
+1099
-1307
File diff suppressed because it is too large.
Load diff
@@ -1 +1 @@
|
||||
[{"username":"carlchina","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/6697/medium/d22bbe7797bbeb30dbdc73a5648d329a_default.png"},{"username":"zielmann","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png"},{"username":"Thalyn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12494028/medium/5faf5acc945a874ed116c4567edaa09f_default.png"},{"username":"magnushj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12503488/medium/68f32e33ea7b891960055c9f831f7344_default.png"},{"username":"almontegil","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12580457/medium/f4136cacbdfdb4c28ae7f85dc5f840db_default.png"},{"username":"Skick","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12619811/medium/0331f1de413a645b4516bc4e037f31bb.jpg"},{"username":"andibing","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12664938/medium/b8be63e4dcb2e791ced1ffc9e3a049a5.jpg"},{"username":"gronare","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12680911/medium/c6eb14d1504156f34a158e507f73aa3d_default.png"},{"username":"SmartPhoneLover","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12701640/medium/ec95486662ec875cda080e778c3ff702.jpg"},{"username":"marcelotk_15","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12773227/medium/ecf6bea16ab0c873c131df2154ee9718_default.png"},{"username":"S3OD177","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13051544/medium/11dd990837f61f7e8f7d36b041a7fddb_default.png"},{"username":"marcg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13153301/medium/ebcf60fbf27deb148ec40a659566c6ff_default.png"},{"username":"BeersTeddy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13185230/medium/2f1f4e1effe74a23422b195cbefb2a95_default.png"},{"username":"jamesmcmahon0","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13245578/medium/586aa873b4abddbd9abc6f3de99ab70e.jpeg"},{"username":"b1nar10","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13286752/medium/249b02e3368752cb175446082015737c_default.png"},{"username":"vannCN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13330448/medium/9b8a9ee3611e51e951e22d5fd4eb7d8d.jpg"},{"username":"binswm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13343482/medium/45dde0e6097b9b72705d2eba9dbbc276_default.png"},{"username":"SkewRam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13496556/medium/188f5c2deb7938eda51eb786cc4539ca.jpeg"},{"username":"raphcatarino","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13547726/medium/b003511e67df13a4b4b5689488fa8099.jpg"},{"username":"shillos5","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13600557/medium/b17650b2b84f829d54fa548c44c1ab27.jpeg"},{"username":"wolong98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13641407/medium/f4634edc58c7857a357e5293543c15cf.jpg"},{"username":"spair0039","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14012333/medium/72430e96027c09c19141cac38eae4617.png"},{"username":"MajorMarcin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14072183/medium/0a197e64bb92b6ea94cecbb607512c45.jpg"},{"username":"KosmoMoustache","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14103535/medium/51c438cdd9f86e8811c75f4869de479c.png"},{"username":"Soochaehwa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14118689/medium/496a1ce63111547bf455a1e0a7ac75f1_default.png"},{"username":"garryfield","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14187035/medium/520c964706676045f6eeec1b08edc880.jpg"},{"username":"droidenko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14444264/medium/4aa3a8e824f72bc9e5ec0d8de307095e.jpeg"},{"username":"maathis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14489950/medium/6eeddf13a757ee35f78f1763f94d95e1.jpeg"},{"username":"bukvam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14546502/medium/a819dc40a13c57395a17dc46e847d3ce.jpg"},{"username":"gm.cinalli","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14670666/medium/2d466a0fdbda40764526be86c97c0ab4.jpeg"},{"username":"antoine2tt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14722148/medium/f88d926900862dd59007ea4b3419cb9d.png"},{"username":"cretzen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14799754/medium/3ba5c1805ec20c000d5810c07985afe9.jpg"},{"username":"ktKongTong","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14817246/medium/97cfc3c028dbdaf85ebd1102da71e58c.jpeg"},{"username":"Prototypem95","avatarUrl":"https://croLine truncated
|
||||
[{"username":"carlchina","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/6697/medium/d22bbe7797bbeb30dbdc73a5648d329a_default.png"},{"username":"zielmann","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png"},{"username":"Thalyn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12494028/medium/5faf5acc945a874ed116c4567edaa09f_default.png"},{"username":"magnushj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12503488/medium/68f32e33ea7b891960055c9f831f7344_default.png"},{"username":"almontegil","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12580457/medium/f4136cacbdfdb4c28ae7f85dc5f840db_default.png"},{"username":"Skick","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12619811/medium/0331f1de413a645b4516bc4e037f31bb.jpg"},{"username":"andibing","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12664938/medium/b8be63e4dcb2e791ced1ffc9e3a049a5.jpg"},{"username":"gronare","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12680911/medium/c6eb14d1504156f34a158e507f73aa3d_default.png"},{"username":"SmartPhoneLover","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12701640/medium/ec95486662ec875cda080e778c3ff702.jpg"},{"username":"marcelotk_15","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12773227/medium/ecf6bea16ab0c873c131df2154ee9718_default.png"},{"username":"S3OD177","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13051544/medium/11dd990837f61f7e8f7d36b041a7fddb_default.png"},{"username":"marcg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13153301/medium/ebcf60fbf27deb148ec40a659566c6ff_default.png"},{"username":"BeersTeddy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13185230/medium/2f1f4e1effe74a23422b195cbefb2a95_default.png"},{"username":"jamesmcmahon0","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13245578/medium/586aa873b4abddbd9abc6f3de99ab70e.jpeg"},{"username":"b1nar10","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13286752/medium/249b02e3368752cb175446082015737c_default.png"},{"username":"vannCN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13330448/medium/9b8a9ee3611e51e951e22d5fd4eb7d8d.jpg"},{"username":"binswm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13343482/medium/45dde0e6097b9b72705d2eba9dbbc276_default.png"},{"username":"SkewRam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13496556/medium/188f5c2deb7938eda51eb786cc4539ca.jpeg"},{"username":"raphcatarino","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13547726/medium/b003511e67df13a4b4b5689488fa8099.jpg"},{"username":"shillos5","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13600557/medium/b17650b2b84f829d54fa548c44c1ab27.jpeg"},{"username":"wolong98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13641407/medium/f4634edc58c7857a357e5293543c15cf.jpg"},{"username":"spair0039","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14012333/medium/72430e96027c09c19141cac38eae4617.png"},{"username":"MajorMarcin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14072183/medium/0a197e64bb92b6ea94cecbb607512c45.jpg"},{"username":"KosmoMoustache","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14103535/medium/51c438cdd9f86e8811c75f4869de479c.png"},{"username":"Soochaehwa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14118689/medium/496a1ce63111547bf455a1e0a7ac75f1_default.png"},{"username":"garryfield","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14187035/medium/520c964706676045f6eeec1b08edc880.jpg"},{"username":"droidenko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14444264/medium/4aa3a8e824f72bc9e5ec0d8de307095e.jpeg"},{"username":"maathis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14489950/medium/6eeddf13a757ee35f78f1763f94d95e1.jpeg"},{"username":"bukvam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14546502/medium/a819dc40a13c57395a17dc46e847d3ce.jpg"},{"username":"gm.cinalli","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14670666/medium/2d466a0fdbda40764526be86c97c0ab4.jpeg"},{"username":"antoine2tt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14722148/medium/f88d926900862dd59007ea4b3419cb9d.png"},{"username":"cretzen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14799754/medium/3ba5c1805ec20c000d5810c07985afe9.jpg"},{"username":"ktKongTong","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14817246/medium/97cfc3c028dbdaf85ebd1102da71e58c.jpeg"},{"username":"Prototypem95","avatarUrl":"https://croLine truncated
|
||||
@@ -29,7 +29,7 @@
|
||||
"devDependencies": {
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.26.0",
|
||||
"eslint": "^9.27.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"prettier-plugin-packagejson": "^2.5.13",
|
||||
"prettier-plugin-packagejson": "^2.5.14",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user