chore(release): automatic release v1.0.0
This commit is contained in:
75
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
75
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,37 +1,78 @@
|
||||
name: 🐞 Bug Report
|
||||
description: Create a bug report to help us improve
|
||||
description: Report that something is broken, not working as intended or causes side-effects
|
||||
title: "bug: "
|
||||
labels: ["🐞❔ unconfirmed bug"]
|
||||
labels: ["needs triage"]
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Provide environment information
|
||||
description: |
|
||||
Run this command in your project root and paste the results in a code block:
|
||||
```bash
|
||||
npx envinfo --system --binaries
|
||||
```
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the bug
|
||||
description: A clear and concise description of the bug, as well as what you expected to happen when encountering it.
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Link to reproduction
|
||||
description: Please provide a link to a reproduction of the bug. Issues without a reproduction repo may be ignored.
|
||||
label: Steps to reproduce
|
||||
description: Describe how to reproduce your bug. Steps, code snippets, reproduction repos etc.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: To reproduce
|
||||
description: Describe how to reproduce your bug. Steps, code snippets, reproduction repos etc.
|
||||
label: Impact
|
||||
description: How big is the impact of this bug? Does it make Homarr unusable? Is there any workaround that you're aware of?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional information
|
||||
description: Add any other information related to the bug here, screenshots if applicable.
|
||||
- type: dropdown
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of Homarr are you running?
|
||||
options:
|
||||
- 1.0.0-beta
|
||||
- Other (describe in "additional information")
|
||||
default: 0
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: installationMethod
|
||||
attributes:
|
||||
label: Installation method
|
||||
description: How do you run Homarr? Post docker-compose, configs or screenshots if applicable.
|
||||
options:
|
||||
- Docker Run
|
||||
- Docker Compose
|
||||
- Portainer
|
||||
- Helm
|
||||
- QNAP
|
||||
- Saltbox
|
||||
- EasyPanel
|
||||
- Unraid Apps
|
||||
- TrueNAS Apps
|
||||
- Synology
|
||||
- HomeAssistant Addon
|
||||
- From Source
|
||||
- Other (describe in "additional information")
|
||||
default: 0
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: browser
|
||||
attributes:
|
||||
label: Browser
|
||||
description: If relevant, what browser do you use?
|
||||
options:
|
||||
- Firefox
|
||||
- Edge (Chromium)
|
||||
- Edge (Proprietary)
|
||||
- Chrome
|
||||
- Safari
|
||||
- Vivaldi
|
||||
- Brave
|
||||
- Samsung Internet
|
||||
- Other (describe in "additional information")
|
||||
default: 0
|
||||
validations:
|
||||
required: false
|
||||
14
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
14
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -2,26 +2,16 @@
|
||||
# See here: https://github.com/vercel/next.js/blob/canary/.github/ISSUE_TEMPLATE/3.feature_request.yml
|
||||
|
||||
name: 🛠 Feature Request
|
||||
description: Create a feature request for the core packages
|
||||
description: Request a new feature that you would like to have implemented
|
||||
title: "feat: "
|
||||
labels: ["✨ enhancement"]
|
||||
labels: ["needs triage"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for taking the time to file a feature request. Please fill out this form as completely as possible.
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the feature you'd like to request
|
||||
description: Please describe the feature as clear and concise as possible. Remember to add context as to why you believe this feature is needed.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the solution you'd like to see
|
||||
description: Please describe the solution you would like to see. Adding example usage is a good way to provide context.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional information
|
||||
|
||||
40
.github/ISSUE_TEMPLATE/integration.yml
vendored
Normal file
40
.github/ISSUE_TEMPLATE/integration.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
name: 🛠 Integration request
|
||||
description: Request support for a new integration (eg. Sonarr, Radarr)
|
||||
title: "feat: "
|
||||
labels: ["needs triage"]
|
||||
body:
|
||||
- type: input
|
||||
attributes:
|
||||
label: Project Website
|
||||
description: Post the link to the website of the application. Paste the official link.
|
||||
placeholder: ex. https://sonarr.tv/
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe what data should be consumed by Homarr
|
||||
description: Please describe what data Homarr should fetch from the integration. Specify in what interval data should be fetched and whether the user can also perform write operations (eg. deleting a movie or adding a user).
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional information
|
||||
description: Add any other information related to the integration.
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Public API available?
|
||||
description: Is there a public API available, that we can consume in Homarr?
|
||||
options:
|
||||
- Yes, available on a website
|
||||
- Yes, available in the application itself
|
||||
- No
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Are you willing to contribute this yourself?
|
||||
options:
|
||||
- Yes
|
||||
- No
|
||||
validations:
|
||||
required: true
|
||||
30
.github/ISSUE_TEMPLATE/widget.yml
vendored
Normal file
30
.github/ISSUE_TEMPLATE/widget.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
name: 🛠 Widget request
|
||||
description: Request a new widget (eg. Clock, Calendar, ...)
|
||||
title: "feat: "
|
||||
labels: ["needs triage"]
|
||||
body:
|
||||
- type: input
|
||||
attributes:
|
||||
label: Compatible integrations
|
||||
description: Post a list of the integrations that should be compatible with this widget. Divide using comma. Leave empty if no integration is needed.
|
||||
placeholder: ex. Sonarr, Radarr, Lidarr, Readarr, Nextcloud
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe what data should be displayed
|
||||
description: Please describe what data Homarr should display. Describe how elements should be intractable and what actions the user can perform.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional information
|
||||
description: Add any other information related to the widget.
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Are you willing to contribute this yourself?
|
||||
options:
|
||||
- Yes
|
||||
- No
|
||||
validations:
|
||||
required: true
|
||||
@@ -149,7 +149,7 @@ jobs:
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64
|
||||
context: .
|
||||
push: ${{ env.PUSH_IMAGE}}
|
||||
push: ${{ env.PUSH_IMAGE }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
network: host
|
||||
|
||||
@@ -38,18 +38,18 @@
|
||||
"@homarr/ui": "workspace:^0.1.0",
|
||||
"@homarr/validation": "workspace:^0.1.0",
|
||||
"@homarr/widgets": "workspace:^0.1.0",
|
||||
"@mantine/colors-generator": "^7.15.1",
|
||||
"@mantine/core": "^7.15.1",
|
||||
"@mantine/dropzone": "^7.15.1",
|
||||
"@mantine/hooks": "^7.15.1",
|
||||
"@mantine/modals": "^7.15.1",
|
||||
"@mantine/tiptap": "^7.15.1",
|
||||
"@mantine/colors-generator": "^7.15.2",
|
||||
"@mantine/core": "^7.15.2",
|
||||
"@mantine/dropzone": "^7.15.2",
|
||||
"@mantine/hooks": "^7.15.2",
|
||||
"@mantine/modals": "^7.15.2",
|
||||
"@mantine/tiptap": "^7.15.2",
|
||||
"@million/lint": "1.0.14",
|
||||
"@t3-oss/env-nextjs": "^0.11.1",
|
||||
"@tabler/icons-react": "^3.26.0",
|
||||
"@tanstack/react-query": "^5.62.8",
|
||||
"@tanstack/react-query-devtools": "^5.62.8",
|
||||
"@tanstack/react-query-next-experimental": "5.62.8",
|
||||
"@tanstack/react-query": "^5.62.10",
|
||||
"@tanstack/react-query-devtools": "^5.62.10",
|
||||
"@tanstack/react-query-next-experimental": "5.62.10",
|
||||
"@trpc/client": "next",
|
||||
"@trpc/next": "next",
|
||||
"@trpc/react-query": "next",
|
||||
@@ -63,14 +63,14 @@
|
||||
"dotenv": "^16.4.7",
|
||||
"flag-icons": "^7.2.3",
|
||||
"glob": "^11.0.0",
|
||||
"jotai": "^2.10.4",
|
||||
"jotai": "^2.11.0",
|
||||
"mantine-react-table": "2.0.0-beta.7",
|
||||
"next": "^14.2.21",
|
||||
"postcss-preset-mantine": "^1.17.0",
|
||||
"prismjs": "^1.29.0",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0",
|
||||
"react-error-boundary": "^4.1.2",
|
||||
"react-error-boundary": "^5.0.0",
|
||||
"react-simple-code-editor": "^0.14.1",
|
||||
"sass": "^1.83.0",
|
||||
"superjson": "2.2.2",
|
||||
|
||||
@@ -6,7 +6,6 @@ import { IconBox, IconPencil } from "@tabler/icons-react";
|
||||
import type { RouterOutputs } from "@homarr/api";
|
||||
import { api } from "@homarr/api/server";
|
||||
import { auth } from "@homarr/auth/next";
|
||||
import { parseAppHrefWithVariablesServer } from "@homarr/common/server";
|
||||
import { getI18n, getScopedI18n } from "@homarr/translation/server";
|
||||
|
||||
import { ManageContainer } from "~/components/manage/manage-container";
|
||||
@@ -82,8 +81,8 @@ const AppCard = async ({ app }: AppCardProps) => {
|
||||
</Text>
|
||||
)}
|
||||
{app.href && (
|
||||
<Anchor href={parseAppHrefWithVariablesServer(app.href)} lineClamp={1} size="sm" w="min-content">
|
||||
{parseAppHrefWithVariablesServer(app.href)}
|
||||
<Anchor href={app.href} lineClamp={1} size="sm" w="min-content">
|
||||
{app.href}
|
||||
</Anchor>
|
||||
)}
|
||||
</Stack>
|
||||
|
||||
@@ -13,10 +13,7 @@ interface CopyMediaProps {
|
||||
export const CopyMedia = ({ media }: CopyMediaProps) => {
|
||||
const t = useI18n();
|
||||
|
||||
const url =
|
||||
typeof window !== "undefined"
|
||||
? `${window.location.protocol}://${window.location.hostname}:${window.location.port}/api/user-medias/${media.id}`
|
||||
: "";
|
||||
const url = typeof window !== "undefined" ? `${window.location.origin}/api/user-medias/${media.id}` : "";
|
||||
|
||||
return (
|
||||
<CopyButton value={url}>
|
||||
|
||||
@@ -10,6 +10,12 @@ import { useSectionContext } from "./section-context";
|
||||
export const SectionContent = () => {
|
||||
const { section, innerSections, refs } = useSectionContext();
|
||||
const board = useRequiredBoard();
|
||||
|
||||
/**
|
||||
* IMPORTANT: THE ORDER OF THE BELOW ITEMS HAS TO MATCH THE ORDER OF
|
||||
* THE ITEMS RENDERED WITH GRIDSTACK, OTHERWISE THE ITEMS WILL BE MIXED UP
|
||||
* @see https://github.com/homarr-labs/homarr/pull/1770
|
||||
*/
|
||||
const sortedItems = useMemo(() => {
|
||||
return [
|
||||
...section.items.map((item) => ({ ...item, type: "item" as const })),
|
||||
@@ -19,7 +25,7 @@ export const SectionContent = () => {
|
||||
return itemA.xOffset - itemB.xOffset;
|
||||
}
|
||||
|
||||
return itemA.yOffset - itemB.xOffset;
|
||||
return itemA.yOffset - itemB.yOffset;
|
||||
});
|
||||
}, [section.items, innerSections]);
|
||||
|
||||
|
||||
@@ -7,6 +7,6 @@
|
||||
--background-color: rgb(from var(--mantine-color-white) r g b / var(--opacity));
|
||||
--border-color: rgb(from var(--mantine-color-gray-3) r g b / var(--opacity));
|
||||
}
|
||||
background-color: var(--background-color);
|
||||
border-color: var(--border-color);
|
||||
background-color: var(--background-color) !important;
|
||||
border-color: var(--border-color) !important;
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/node": "^22.10.2",
|
||||
"dotenv-cli": "^7.4.4",
|
||||
"dotenv-cli": "^8.0.0",
|
||||
"eslint": "^9.17.0",
|
||||
"prettier": "^3.4.2",
|
||||
"tsx": "4.19.2",
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
<a href="https://github.com/homarr-labs/homarr/actions/workflows/deployment-docker-image.yml">
|
||||
<img title="Docker CI Status" src="https://github.com/homarr-labs/homarr/actions/workflows/deployment-docker-image.yml/badge.svg" alt="CI Status">
|
||||
</a>
|
||||
<a href=https://translate.homarr.dev/>
|
||||
<img title="Translations" src="https://badges.crowdin.net/homarr/localized.svg" />
|
||||
<a href="https://crowdin.com/project/homarr_labs">
|
||||
<img title="Translations" src="https://badges.crowdin.net/homarr_labs/localized.svg" />
|
||||
</a>
|
||||
<a href="https://discord.gg/aCsmEV5RgA">
|
||||
<img title="Discord" src="https://discordapp.com/api/guilds/972958686051962910/widget.png?style=shield">
|
||||
|
||||
@@ -21,7 +21,7 @@ http {
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,7 @@
|
||||
"@homarr/cron-jobs": "workspace:^0.1.0",
|
||||
"@homarr/db": "workspace:^0.1.0",
|
||||
"@homarr/definitions": "workspace:^0.1.0",
|
||||
"@homarr/icons": "workspace:^0.1.0",
|
||||
"@homarr/integrations": "workspace:^0.1.0",
|
||||
"@homarr/log": "workspace:^",
|
||||
"@homarr/old-import": "workspace:^0.1.0",
|
||||
|
||||
@@ -152,11 +152,17 @@ export const groupRouter = createTRPCRouter({
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
await checkSimilarNameAndThrowAsync(ctx.db, input.name);
|
||||
|
||||
const groupId = createId();
|
||||
await ctx.db.insert(groups).values({
|
||||
id: createId(),
|
||||
id: groupId,
|
||||
name: input.name,
|
||||
});
|
||||
|
||||
await ctx.db.insert(groupPermissions).values({
|
||||
groupId,
|
||||
permission: "admin",
|
||||
});
|
||||
|
||||
await nextOnboardingStepAsync(ctx.db, undefined);
|
||||
}),
|
||||
createGroup: permissionRequiredProcedure
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import { TRPCError } from "@trpc/server";
|
||||
|
||||
import type { InferInsertModel } from "@homarr/db";
|
||||
import { and, createId, desc, eq, like } from "@homarr/db";
|
||||
import { medias } from "@homarr/db/schema";
|
||||
import { iconRepositories, icons, medias } from "@homarr/db/schema";
|
||||
import { createLocalImageUrl, LOCAL_ICON_REPOSITORY_SLUG, mapMediaToIcon } from "@homarr/icons/local";
|
||||
import { validation, z } from "@homarr/validation";
|
||||
|
||||
import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure } from "../../trpc";
|
||||
@@ -52,13 +54,29 @@ export const mediaRouter = createTRPCRouter({
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
const content = Buffer.from(await input.file.arrayBuffer());
|
||||
const id = createId();
|
||||
await ctx.db.insert(medias).values({
|
||||
const media = {
|
||||
id,
|
||||
creatorId: ctx.session.user.id,
|
||||
content,
|
||||
size: input.file.size,
|
||||
contentType: input.file.type,
|
||||
name: input.file.name,
|
||||
} satisfies InferInsertModel<typeof medias>;
|
||||
await ctx.db.insert(medias).values(media);
|
||||
|
||||
const localIconRepository = await ctx.db.query.iconRepositories.findFirst({
|
||||
where: eq(iconRepositories.slug, LOCAL_ICON_REPOSITORY_SLUG),
|
||||
});
|
||||
|
||||
if (!localIconRepository) return id;
|
||||
|
||||
const icon = mapMediaToIcon(media);
|
||||
await ctx.db.insert(icons).values({
|
||||
id: createId(),
|
||||
checksum: icon.checksum,
|
||||
name: icon.fileNameWithExtension,
|
||||
url: icon.imageUrl,
|
||||
iconRepositoryId: localIconRepository.id,
|
||||
});
|
||||
|
||||
return id;
|
||||
@@ -67,6 +85,7 @@ export const mediaRouter = createTRPCRouter({
|
||||
const dbMedia = await ctx.db.query.medias.findFirst({
|
||||
where: eq(medias.id, input.id),
|
||||
columns: {
|
||||
id: true,
|
||||
creatorId: true,
|
||||
},
|
||||
});
|
||||
@@ -87,5 +106,6 @@ export const mediaRouter = createTRPCRouter({
|
||||
}
|
||||
|
||||
await ctx.db.delete(medias).where(eq(medias.id, input.id));
|
||||
await ctx.db.delete(icons).where(eq(icons.url, createLocalImageUrl(input.id)));
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -23,7 +23,8 @@ export const OidcProvider = (headers: ReadonlyHeaders | null): OIDCConfig<Profil
|
||||
authorization: {
|
||||
params: {
|
||||
scope: env.AUTH_OIDC_SCOPE_OVERWRITE,
|
||||
redirect_uri: createRedirectUri(headers, "/api/auth/callback/oidc"),
|
||||
// We fallback to https as generally oidc providers require https
|
||||
redirect_uri: createRedirectUri(headers, "/api/auth/callback/oidc", "https"),
|
||||
},
|
||||
},
|
||||
profile(profile) {
|
||||
|
||||
@@ -8,12 +8,16 @@ import { extractBaseUrlFromHeaders } from "@homarr/common";
|
||||
* @param pathname
|
||||
* @returns
|
||||
*/
|
||||
export const createRedirectUri = (headers: ReadonlyHeaders | null, pathname: string) => {
|
||||
export const createRedirectUri = (
|
||||
headers: ReadonlyHeaders | null,
|
||||
pathname: string,
|
||||
fallbackProtocol: "http" | "https" = "http",
|
||||
) => {
|
||||
if (!headers) {
|
||||
return pathname;
|
||||
}
|
||||
|
||||
const baseUrl = extractBaseUrlFromHeaders(headers);
|
||||
const baseUrl = extractBaseUrlFromHeaders(headers, fallbackProtocol);
|
||||
|
||||
const path = pathname.startsWith("/") ? pathname : `/${pathname}`;
|
||||
|
||||
|
||||
@@ -28,8 +28,7 @@
|
||||
"@homarr/log": "workspace:^0.1.0",
|
||||
"dayjs": "^1.11.13",
|
||||
"next": "^14.2.21",
|
||||
"react": "^19.0.0",
|
||||
"tldts": "^6.1.69"
|
||||
"react": "^19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
import * as tldts from "tldts";
|
||||
|
||||
const safeParseTldts = (url: string) => {
|
||||
try {
|
||||
return tldts.parse(url);
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
export const parseAppHrefWithVariables = <TInput extends string | null>(url: TInput, currentHref: string): TInput => {
|
||||
if (!url || url.length === 0) return url;
|
||||
|
||||
const tldtsResult = safeParseTldts(currentHref);
|
||||
|
||||
const urlObject = new URL(currentHref);
|
||||
|
||||
return url
|
||||
.replaceAll("[homarr_base]", `${urlObject.protocol}//${urlObject.hostname}`)
|
||||
.replaceAll("[homarr_hostname]", tldtsResult?.hostname ?? "")
|
||||
.replaceAll("[homarr_domain]", tldtsResult?.domain ?? "")
|
||||
.replaceAll("[homarr_protocol]", urlObject.protocol.replace(":", "")) as TInput;
|
||||
};
|
||||
@@ -1,6 +0,0 @@
|
||||
import { parseAppHrefWithVariables } from "./base";
|
||||
|
||||
export const parseAppHrefWithVariablesClient = <TInput extends string | null>(url: TInput): TInput => {
|
||||
if (typeof window === "undefined") return url;
|
||||
return parseAppHrefWithVariables(url, window.location.href);
|
||||
};
|
||||
@@ -1,8 +0,0 @@
|
||||
import { headers } from "next/headers";
|
||||
|
||||
import { extractBaseUrlFromHeaders } from "../url";
|
||||
import { parseAppHrefWithVariables } from "./base";
|
||||
|
||||
export const parseAppHrefWithVariablesServer = <TInput extends string | null>(url: TInput): TInput => {
|
||||
return parseAppHrefWithVariables(url, extractBaseUrlFromHeaders(headers()));
|
||||
};
|
||||
@@ -1,2 +1 @@
|
||||
export * from "./app-url/client";
|
||||
export * from "./revalidate-path-action";
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
export * from "./app-url/server";
|
||||
export * from "./security";
|
||||
export * from "./encryption";
|
||||
|
||||
@@ -4,8 +4,16 @@ export const removeTrailingSlash = (path: string) => {
|
||||
return path.at(-1) === "/" ? path.substring(0, path.length - 1) : path;
|
||||
};
|
||||
|
||||
export const extractBaseUrlFromHeaders = (headers: ReadonlyHeaders): `${string}://${string}` => {
|
||||
let protocol = headers.get("x-forwarded-proto") ?? "http";
|
||||
export const extractBaseUrlFromHeaders = (
|
||||
headers: ReadonlyHeaders,
|
||||
fallbackProtocol: "http" | "https" = "http",
|
||||
): `${string}://${string}` => {
|
||||
let protocol = headers.get("x-forwarded-proto");
|
||||
|
||||
// If the protocol is not set or an empty string
|
||||
if (!protocol) {
|
||||
protocol = fallbackProtocol;
|
||||
}
|
||||
|
||||
// @see https://support.glitch.com/t/x-forwarded-proto-contains-multiple-protocols/17219
|
||||
if (protocol.includes(",")) {
|
||||
|
||||
@@ -50,14 +50,14 @@
|
||||
"drizzle-kit": "^0.30.1",
|
||||
"drizzle-orm": "^0.38.2",
|
||||
"drizzle-zod": "^0.6.0",
|
||||
"mysql2": "3.11.5"
|
||||
"mysql2": "3.12.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/better-sqlite3": "7.6.12",
|
||||
"dotenv-cli": "^7.4.4",
|
||||
"dotenv-cli": "^8.0.0",
|
||||
"eslint": "^9.17.0",
|
||||
"prettier": "^3.4.2",
|
||||
"tsx": "4.19.2",
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"@homarr/common": "workspace:^0.1.0",
|
||||
"@homarr/translation": "workspace:^0.1.0",
|
||||
"@homarr/validation": "workspace:^0.1.0",
|
||||
"@mantine/form": "^7.15.1"
|
||||
"@mantine/form": "^7.15.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
".": "./index.ts"
|
||||
".": "./index.ts",
|
||||
"./local": "./src/local.ts"
|
||||
},
|
||||
"typesVersions": {
|
||||
"*": {
|
||||
|
||||
1
packages/icons/src/local.ts
Normal file
1
packages/icons/src/local.ts
Normal file
@@ -0,0 +1 @@
|
||||
export { createLocalImageUrl, mapMediaToIcon, LOCAL_ICON_REPOSITORY_SLUG } from "./repositories/local.icon-repository";
|
||||
@@ -1,26 +1,36 @@
|
||||
import { createHash } from "crypto";
|
||||
|
||||
import type { InferSelectModel } from "@homarr/db";
|
||||
import { db } from "@homarr/db";
|
||||
import type { medias } from "@homarr/db/schema";
|
||||
|
||||
import type { RepositoryIconGroup } from "../types";
|
||||
import type { RepositoryIcon, RepositoryIconGroup } from "../types";
|
||||
import { IconRepository } from "./icon-repository";
|
||||
|
||||
export const LOCAL_ICON_REPOSITORY_SLUG = "local";
|
||||
|
||||
export class LocalIconRepository extends IconRepository {
|
||||
constructor() {
|
||||
super("Local", "local", undefined, undefined, undefined, undefined);
|
||||
super("Local", LOCAL_ICON_REPOSITORY_SLUG, undefined, undefined, undefined, undefined);
|
||||
}
|
||||
protected async getAllIconsInternalAsync(): Promise<RepositoryIconGroup> {
|
||||
const medias = await db.query.medias.findMany();
|
||||
return {
|
||||
success: true,
|
||||
icons: medias.map((media) => ({
|
||||
local: true,
|
||||
fileNameWithExtension: media.name,
|
||||
imageUrl: `/api/user-medias/${media.id}`,
|
||||
checksum: createHash("md5").update(media.content).digest("hex"),
|
||||
sizeInBytes: media.size,
|
||||
})),
|
||||
slug: "local",
|
||||
icons: medias.map(mapMediaToIcon),
|
||||
slug: LOCAL_ICON_REPOSITORY_SLUG,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export const createLocalImageUrl = (id: string) => `/api/user-medias/${id}`;
|
||||
|
||||
export const mapMediaToIcon = (
|
||||
media: Pick<InferSelectModel<typeof medias>, "name" | "id" | "content" | "size">,
|
||||
): RepositoryIcon => ({
|
||||
local: true,
|
||||
fileNameWithExtension: media.name,
|
||||
imageUrl: createLocalImageUrl(media.id),
|
||||
checksum: createHash("md5").update(media.content).digest("hex"),
|
||||
sizeInBytes: media.size,
|
||||
});
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"prettier": "@homarr/prettier-config",
|
||||
"dependencies": {
|
||||
"@ctrl/deluge": "^7.0.0",
|
||||
"@ctrl/qbittorrent": "^9.1.0",
|
||||
"@ctrl/qbittorrent": "^9.2.0",
|
||||
"@ctrl/transmission": "^7.1.0",
|
||||
"@homarr/common": "workspace:^0.1.0",
|
||||
"@homarr/db": "workspace:^0.1.0",
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"@homarr/translation": "workspace:^0.1.0",
|
||||
"@homarr/ui": "workspace:^0.1.0",
|
||||
"@homarr/validation": "workspace:^0.1.0",
|
||||
"@mantine/core": "^7.15.1",
|
||||
"@mantine/core": "^7.15.2",
|
||||
"@tabler/icons-react": "^3.26.0",
|
||||
"dayjs": "^1.11.13",
|
||||
"next": "^14.2.21",
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
"dependencies": {
|
||||
"@homarr/translation": "workspace:^0.1.0",
|
||||
"@homarr/ui": "workspace:^0.1.0",
|
||||
"@mantine/core": "^7.15.1",
|
||||
"@mantine/hooks": "^7.15.1",
|
||||
"@mantine/core": "^7.15.2",
|
||||
"@mantine/hooks": "^7.15.2",
|
||||
"react": "^19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"prettier": "@homarr/prettier-config",
|
||||
"dependencies": {
|
||||
"@homarr/ui": "workspace:^0.1.0",
|
||||
"@mantine/notifications": "^7.15.1",
|
||||
"@mantine/notifications": "^7.15.2",
|
||||
"@tabler/icons-react": "^3.26.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
"@homarr/translation": "workspace:^0.1.0",
|
||||
"@homarr/ui": "workspace:^0.1.0",
|
||||
"@homarr/validation": "workspace:^0.1.0",
|
||||
"@mantine/core": "^7.15.1",
|
||||
"@mantine/hooks": "^7.15.1",
|
||||
"@mantine/core": "^7.15.2",
|
||||
"@mantine/hooks": "^7.15.2",
|
||||
"adm-zip": "0.5.16",
|
||||
"next": "^14.2.21",
|
||||
"react": "^19.0.0",
|
||||
|
||||
@@ -32,11 +32,11 @@
|
||||
"@homarr/modals-collection": "workspace:^0.1.0",
|
||||
"@homarr/translation": "workspace:^0.1.0",
|
||||
"@homarr/ui": "workspace:^0.1.0",
|
||||
"@mantine/core": "^7.15.1",
|
||||
"@mantine/hooks": "^7.15.1",
|
||||
"@mantine/spotlight": "^7.15.1",
|
||||
"@mantine/core": "^7.15.2",
|
||||
"@mantine/hooks": "^7.15.2",
|
||||
"@mantine/spotlight": "^7.15.2",
|
||||
"@tabler/icons-react": "^3.26.0",
|
||||
"jotai": "^2.10.4",
|
||||
"jotai": "^2.11.0",
|
||||
"next": "^14.2.21",
|
||||
"react": "^19.0.0",
|
||||
"use-deep-compare-effect": "^1.8.1"
|
||||
|
||||
@@ -2,130 +2,130 @@
|
||||
"init": {
|
||||
"step": {
|
||||
"start": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"description": "",
|
||||
"title": "欢迎使用 Homarr",
|
||||
"subtitle": "让我们开始设置您的 Homarr 实例。",
|
||||
"description": "首先,请选择您想要如何设置您的 Homarr 实例。",
|
||||
"action": {
|
||||
"scratch": "",
|
||||
"importOldmarr": ""
|
||||
"scratch": "从头开始",
|
||||
"importOldmarr": "从 1.0 之前的 Homarr 导入"
|
||||
}
|
||||
},
|
||||
"import": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"title": "导入数据",
|
||||
"subtitle": "您可以从已有的 Homarr 实例导入数据。",
|
||||
"dropzone": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
"title": "将 zip 文件拖到此处或单击浏览",
|
||||
"description": "上传的压缩包将被处理,您可以选择要导入的内容"
|
||||
},
|
||||
"fileInfo": {
|
||||
"action": {
|
||||
"change": ""
|
||||
"change": "更改文件"
|
||||
}
|
||||
},
|
||||
"importSettings": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
"title": "导入设置",
|
||||
"description": "配置导入方式"
|
||||
},
|
||||
"boardSelection": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"title": "找到 {count} 个面板",
|
||||
"description": "选择您想要导入的所有面板",
|
||||
"action": {
|
||||
"selectAll": "",
|
||||
"unselectAll": ""
|
||||
"selectAll": "选择全部",
|
||||
"unselectAll": "取消全选"
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"title": "导入概况",
|
||||
"description": "在下面的概况中,您可以看到将要导入的内容",
|
||||
"action": {
|
||||
"import": ""
|
||||
"import": "确认导入并继续"
|
||||
},
|
||||
"entities": {
|
||||
"apps": "应用",
|
||||
"boards": "面板",
|
||||
"integrations": "",
|
||||
"credentialUsers": ""
|
||||
"integrations": "组件",
|
||||
"credentialUsers": "凭证用户"
|
||||
}
|
||||
},
|
||||
"tokenModal": {
|
||||
"title": "",
|
||||
"title": "输入导入密钥",
|
||||
"field": {
|
||||
"token": {
|
||||
"label": "Token",
|
||||
"description": ""
|
||||
"label": "令牌",
|
||||
"description": "输入您之前的 homarr 实例中显示的导入秘钥"
|
||||
}
|
||||
},
|
||||
"notification": {
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "无效秘钥",
|
||||
"message": "您输入的秘钥无效"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"title": "管理员用户",
|
||||
"subtitle": "指定您的管理员用户的凭据。",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "创建用户",
|
||||
"message": "用户已成功创建"
|
||||
},
|
||||
"error": {
|
||||
"title": ""
|
||||
"title": "用户创建失败"
|
||||
}
|
||||
}
|
||||
},
|
||||
"group": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"title": "外部组",
|
||||
"subtitle": "指定应该用于外部用户的组。",
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "组名称",
|
||||
"description": "名称必须与外部提供商的管理组匹配"
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"title": "设置",
|
||||
"subtitle": ""
|
||||
"subtitle": "配置服务器的设置"
|
||||
},
|
||||
"finish": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"description": "",
|
||||
"title": "完成设置",
|
||||
"subtitle": "你已设置完成!",
|
||||
"description": "您已成功完成设置过程。现在您可以开始使用 Homarr 了。选择下一步操作:",
|
||||
"action": {
|
||||
"goToBoard": "",
|
||||
"createBoard": "",
|
||||
"inviteUser": "",
|
||||
"docs": ""
|
||||
"goToBoard": "转到 {name} 面板",
|
||||
"createBoard": "创建您的第一个面板",
|
||||
"inviteUser": "邀请其他用户",
|
||||
"docs": "阅读文档"
|
||||
}
|
||||
}
|
||||
},
|
||||
"backToStart": ""
|
||||
"backToStart": "返回起点"
|
||||
},
|
||||
"user": {
|
||||
"title": "用户",
|
||||
"name": "用户",
|
||||
"page": {
|
||||
"login": {
|
||||
"title": "",
|
||||
"subtitle": ""
|
||||
"title": "登录你的账户",
|
||||
"subtitle": "欢迎回来!请输入您的凭据"
|
||||
},
|
||||
"invite": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"description": ""
|
||||
"title": "加入 Homarr",
|
||||
"subtitle": "欢迎来到 Homarr!请创建您的账户",
|
||||
"description": "您受到了 {username} 的邀请。"
|
||||
},
|
||||
"init": {
|
||||
"title": "",
|
||||
"subtitle": ""
|
||||
"title": "新建Homarr 安装",
|
||||
"subtitle": "请创建初始管理员用户"
|
||||
}
|
||||
},
|
||||
"field": {
|
||||
"email": {
|
||||
"label": "邮箱",
|
||||
"verified": ""
|
||||
"verified": "已验证"
|
||||
},
|
||||
"username": {
|
||||
"label": "用户名"
|
||||
@@ -133,46 +133,46 @@
|
||||
"password": {
|
||||
"label": "密码",
|
||||
"requirement": {
|
||||
"length": "",
|
||||
"length": "包含至少8个字符",
|
||||
"lowercase": "包括小写字母",
|
||||
"uppercase": "包含大写字母",
|
||||
"number": "包含数字",
|
||||
"special": ""
|
||||
"special": "包含特殊符号"
|
||||
}
|
||||
},
|
||||
"passwordConfirm": {
|
||||
"label": "确认密码"
|
||||
},
|
||||
"previousPassword": {
|
||||
"label": ""
|
||||
"label": "先前的密码"
|
||||
},
|
||||
"homeBoard": {
|
||||
"label": ""
|
||||
"label": "首页"
|
||||
},
|
||||
"pingIconsEnabled": {
|
||||
"label": ""
|
||||
"label": "用于ping的图标"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"usernameTaken": ""
|
||||
"usernameTaken": "用户名称已被占用"
|
||||
},
|
||||
"action": {
|
||||
"login": {
|
||||
"label": "登录",
|
||||
"labelWith": "",
|
||||
"labelWith": "使用 {provider} 登录",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "登录成功",
|
||||
"message": "您已登录"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "登录失败",
|
||||
"message": "您登录失败"
|
||||
}
|
||||
},
|
||||
"forgotPassword": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "忘记密码?",
|
||||
"description": "管理员可以使用以下命令重置您的密码:"
|
||||
}
|
||||
},
|
||||
"register": {
|
||||
@@ -180,81 +180,81 @@
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "账号已创建",
|
||||
"message": ""
|
||||
"message": "请登录以继续"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "创建账户失败",
|
||||
"message": "无法创建您的帐户"
|
||||
}
|
||||
}
|
||||
},
|
||||
"create": "创建用户",
|
||||
"changePassword": {
|
||||
"label": "",
|
||||
"label": "修改密码",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "密码修改成功"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "无法修改密码"
|
||||
}
|
||||
}
|
||||
},
|
||||
"changeHomeBoard": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "主页面修改成功"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "无法修改主面板"
|
||||
}
|
||||
}
|
||||
},
|
||||
"changeFirstDayOfWeek": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "成功修改一周的第一天"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "无法修改一周的第一天"
|
||||
}
|
||||
}
|
||||
},
|
||||
"changePingIconsEnabled": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "Ping 图标切换成功"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "无法切换 ping 图标"
|
||||
}
|
||||
}
|
||||
},
|
||||
"manageAvatar": {
|
||||
"changeImage": {
|
||||
"label": "",
|
||||
"label": "更改图像",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "图像修改成功"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "无法更改图像"
|
||||
},
|
||||
"toLarge": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "图片太大",
|
||||
"message": "最大图像尺寸为 {size}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeImage": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"label": "删除图像",
|
||||
"confirm": "确定要移除这张图片吗?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "图像删除成功"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "无法删除图像"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -262,42 +262,42 @@
|
||||
"editProfile": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "资料更新成功"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "资料更新失败"
|
||||
}
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"confirm": ""
|
||||
"label": "永久删除用户",
|
||||
"description": "删除此用户及其偏好设置。这将不会删除任何看板。用户将不会收到通知。",
|
||||
"confirm": "您确定要删除用户 {username} 及其偏好设置吗?"
|
||||
},
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
"label": "选择用户",
|
||||
"notFound": "找不到用户"
|
||||
},
|
||||
"transfer": {
|
||||
"label": ""
|
||||
"label": "选择新的所有者"
|
||||
}
|
||||
}
|
||||
},
|
||||
"group": {
|
||||
"title": "",
|
||||
"name": "",
|
||||
"search": "",
|
||||
"title": "组",
|
||||
"name": "组",
|
||||
"search": "查找组",
|
||||
"field": {
|
||||
"name": "名称",
|
||||
"members": ""
|
||||
"members": "成员列表"
|
||||
},
|
||||
"permission": {
|
||||
"admin": {
|
||||
"title": "管理员",
|
||||
"item": {
|
||||
"admin": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "管理员",
|
||||
"description": "拥有此权限的成员可完全访问所有功能和设置"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -305,20 +305,20 @@
|
||||
"title": "应用",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "创建应用",
|
||||
"description": "允许成员创建应用"
|
||||
},
|
||||
"use-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "使用全部应用",
|
||||
"description": "允许成员将任何应用添加到他们的看板"
|
||||
},
|
||||
"modify-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "修改全部应用",
|
||||
"description": "允许成员修改全部应用"
|
||||
},
|
||||
"full-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "完整应用访问权限",
|
||||
"description": "允许成员管理、使用和删除全部应用"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -326,165 +326,165 @@
|
||||
"title": "面板",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "创建面板",
|
||||
"description": "允许成员创建看板"
|
||||
},
|
||||
"view-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "查看全部面板",
|
||||
"description": "允许成员查看全部看板"
|
||||
},
|
||||
"modify-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "修改全部看板",
|
||||
"description": "允许成员修改全部看板 (不包括访问控制和危险区)"
|
||||
},
|
||||
"full-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "完整的看板访问权限",
|
||||
"description": "允许成员查看、修改和删除全部看板 (包括访问控制和危险区)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
"title": "",
|
||||
"title": "组件",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "创建组件",
|
||||
"description": "允许成员创建组件"
|
||||
},
|
||||
"use-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "使用全部组件",
|
||||
"description": "允许成员将任何组件添加到他们的看板"
|
||||
},
|
||||
"interact-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "与任何组件互动",
|
||||
"description": "允许成员与任何组件互动"
|
||||
},
|
||||
"full-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "完全的组件访问权限",
|
||||
"description": "允许成员管理、使用并与任何组件交互"
|
||||
}
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"title": "",
|
||||
"title": "媒体",
|
||||
"item": {
|
||||
"upload": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "上传媒体",
|
||||
"description": "允许成员上传媒体"
|
||||
},
|
||||
"view-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "查看全部媒体",
|
||||
"description": "允许成员查看全部媒体"
|
||||
},
|
||||
"full-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "完全的媒体访问权限",
|
||||
"description": "允许成员管理和删除任何媒体"
|
||||
}
|
||||
}
|
||||
},
|
||||
"other": {
|
||||
"title": "",
|
||||
"title": "其它",
|
||||
"item": {
|
||||
"view-logs": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "查看日志",
|
||||
"description": "允许成员查看日志"
|
||||
}
|
||||
}
|
||||
},
|
||||
"search-engine": {
|
||||
"title": "",
|
||||
"title": "搜索引擎",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "创建搜索引擎",
|
||||
"description": "允许成员创建搜索引擎"
|
||||
},
|
||||
"modify-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "修改全部搜索引擎",
|
||||
"description": "允许成员修改全部搜索引擎"
|
||||
},
|
||||
"full-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "完整的搜索引擎访问权限",
|
||||
"description": "允许成员管理和删除任何搜索引擎"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"memberNotice": {
|
||||
"mixed": "",
|
||||
"external": ""
|
||||
"mixed": "部分成员来自外部提供者,无法在此处管理",
|
||||
"external": "所有成员都来自外部提供者,无法在此处管理"
|
||||
},
|
||||
"reservedNotice": {
|
||||
"message": ""
|
||||
"message": "此用户组保留供系统使用并限制部分操作 <checkoutDocs></checkoutDocs>"
|
||||
},
|
||||
"action": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"label": "新建用户组",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "用户组已成功创建"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "无法创建用户组"
|
||||
}
|
||||
}
|
||||
},
|
||||
"transfer": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"confirm": "",
|
||||
"label": "转移所有权",
|
||||
"description": "将此用户组的所有权转移给另一个用户。",
|
||||
"confirm": "确定将用户组 {name} 的所有权转移给 {username} 吗?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "成功将用户组 {group} 的所有权转移给 {user}"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "无法转移所有权"
|
||||
}
|
||||
}
|
||||
},
|
||||
"addMember": {
|
||||
"label": ""
|
||||
"label": "添加成员"
|
||||
},
|
||||
"removeMember": {
|
||||
"label": "",
|
||||
"confirm": ""
|
||||
"label": "删除成员",
|
||||
"confirm": "确定将 {user} 从此用户组移除吗?"
|
||||
},
|
||||
"delete": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"confirm": "",
|
||||
"label": "删除用户组",
|
||||
"description": "用户组一旦删除就无法恢复. 请谨慎操作.",
|
||||
"confirm": "确认删除用户组 {name} 吗?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "成功删除用户组 {name}"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "无法删除用户组 {name}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"changePermissions": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "权限已保存",
|
||||
"message": "权限保存成功"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "权限未保存",
|
||||
"message": "权限尚未保存"
|
||||
}
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "用户组 {name} 保存成功"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "无法保存用户组 {name}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
"label": "选择用户组",
|
||||
"notFound": "未找到用户组"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -493,47 +493,47 @@
|
||||
"list": {
|
||||
"title": "应用",
|
||||
"noResults": {
|
||||
"title": "",
|
||||
"action": ""
|
||||
"title": "尚无应用",
|
||||
"action": "创建您的第一个应用"
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"title": "新建应用",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "创建成功",
|
||||
"message": "应用已成功创建"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "创建失败",
|
||||
"message": "无法创建此应用"
|
||||
}
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"title": "",
|
||||
"title": "编辑应用",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "更改应用成功",
|
||||
"message": "应用保存成功"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "无法应用更改",
|
||||
"message": "无法保存此应用"
|
||||
}
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"title": "删除应用",
|
||||
"message": "确认删除应用 {name} 吗?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "成功删除",
|
||||
"message": "应用已成功删除"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "删除失败",
|
||||
"message": "无法删除应用"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -543,65 +543,65 @@
|
||||
"label": "名称"
|
||||
},
|
||||
"description": {
|
||||
"label": ""
|
||||
"label": "描述"
|
||||
},
|
||||
"url": {
|
||||
"label": ""
|
||||
"label": "Url"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
"label": "选择应用",
|
||||
"notFound": "未找到应用"
|
||||
}
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
"search": "",
|
||||
"title": "组件",
|
||||
"search": "搜索组件",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
"title": "尚无组件"
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"title": "新的组件 {name}",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "创建成功",
|
||||
"message": "组件已成功创建"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "创建失败",
|
||||
"message": "无法创建组件"
|
||||
}
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"title": "",
|
||||
"title": "编辑组件 {name}",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "更改应用成功",
|
||||
"message": "组件已成功保存"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "无法应用更改",
|
||||
"message": "无法保存此组件"
|
||||
}
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"title": "删除组件",
|
||||
"message": "确认删除组件 {name} 吗?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "成功删除",
|
||||
"message": "组件已成功删除"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "删除失败",
|
||||
"message": "无法删除组件"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -611,21 +611,21 @@
|
||||
"label": "名称"
|
||||
},
|
||||
"url": {
|
||||
"label": ""
|
||||
"label": "Url"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"create": ""
|
||||
"create": "新建组件"
|
||||
},
|
||||
"testConnection": {
|
||||
"action": {
|
||||
"create": "",
|
||||
"edit": ""
|
||||
"create": "测试连接并创建",
|
||||
"edit": "测试连接并保存"
|
||||
},
|
||||
"alertNotice": "",
|
||||
"alertNotice": "成功建立连接后保存按钮将启用",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"title": "连接成功",
|
||||
"message": ""
|
||||
},
|
||||
"invalidUrl": {
|
||||
@@ -978,7 +978,7 @@
|
||||
},
|
||||
"field": {
|
||||
"integrations": {
|
||||
"label": ""
|
||||
"label": "组件"
|
||||
},
|
||||
"customCssClasses": {
|
||||
"label": ""
|
||||
@@ -1213,7 +1213,7 @@
|
||||
}
|
||||
},
|
||||
"iframe": {
|
||||
"name": "iFrame",
|
||||
"name": "",
|
||||
"description": "嵌入互联网上的任何内容。某些网站可能限制访问。",
|
||||
"option": {
|
||||
"embedUrl": {
|
||||
@@ -1981,15 +1981,15 @@
|
||||
},
|
||||
"error": {
|
||||
"noBoard": {
|
||||
"title": "",
|
||||
"title": "欢迎使用 Homarr",
|
||||
"description": "",
|
||||
"link": "",
|
||||
"link": "创建您的第一个面板",
|
||||
"notice": ""
|
||||
},
|
||||
"notFound": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"link": "",
|
||||
"link": "查看全部面板",
|
||||
"notice": ""
|
||||
},
|
||||
"homeBoard": {
|
||||
@@ -2028,7 +2028,7 @@
|
||||
"home": "首页",
|
||||
"boards": "面板",
|
||||
"apps": "应用",
|
||||
"integrations": "",
|
||||
"integrations": "组件",
|
||||
"searchEngies": "",
|
||||
"medias": "",
|
||||
"users": {
|
||||
@@ -2042,9 +2042,9 @@
|
||||
"tools": {
|
||||
"label": "工具",
|
||||
"items": {
|
||||
"docker": "Docker",
|
||||
"docker": "",
|
||||
"logs": "",
|
||||
"api": "API",
|
||||
"api": "",
|
||||
"tasks": ""
|
||||
}
|
||||
},
|
||||
@@ -2067,7 +2067,7 @@
|
||||
"board": "面板",
|
||||
"user": "用户",
|
||||
"invite": "邀请",
|
||||
"integration": "",
|
||||
"integration": "组件",
|
||||
"app": "应用",
|
||||
"group": ""
|
||||
},
|
||||
@@ -2168,10 +2168,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"completed": {
|
||||
"title": ""
|
||||
"title": "创建用户"
|
||||
},
|
||||
"error": {
|
||||
"title": ""
|
||||
"title": "用户创建失败"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -2199,7 +2199,7 @@
|
||||
},
|
||||
"field": {
|
||||
"id": {
|
||||
"label": "ID"
|
||||
"label": ""
|
||||
},
|
||||
"creator": {
|
||||
"label": "创建者"
|
||||
@@ -2208,7 +2208,7 @@
|
||||
"label": "过期时间"
|
||||
},
|
||||
"token": {
|
||||
"label": "Token"
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2370,7 +2370,7 @@
|
||||
}
|
||||
},
|
||||
"api": {
|
||||
"title": "API",
|
||||
"title": "",
|
||||
"modal": {
|
||||
"createApiToken": {
|
||||
"title": "",
|
||||
@@ -2390,7 +2390,7 @@
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"id": "ID",
|
||||
"id": "",
|
||||
"createdBy": ""
|
||||
}
|
||||
}
|
||||
@@ -2555,7 +2555,7 @@
|
||||
"label": "面板"
|
||||
},
|
||||
"integrations": {
|
||||
"label": "",
|
||||
"label": "组件",
|
||||
"edit": {
|
||||
"label": "编辑"
|
||||
},
|
||||
@@ -2602,7 +2602,7 @@
|
||||
"tools": {
|
||||
"label": "工具",
|
||||
"docker": {
|
||||
"label": "Docker"
|
||||
"label": ""
|
||||
},
|
||||
"logs": {
|
||||
"label": ""
|
||||
@@ -2662,7 +2662,7 @@
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
"title": ""
|
||||
"title": "组件"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2749,7 +2749,7 @@
|
||||
"description": ""
|
||||
},
|
||||
"torrent": {
|
||||
"name": "Torrents",
|
||||
"name": "",
|
||||
"description": ""
|
||||
},
|
||||
"youTube": {
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
"description": "Konfigurovat chování importu"
|
||||
},
|
||||
"boardSelection": {
|
||||
"title": "",
|
||||
"title": "Nalezeno {count} ploch",
|
||||
"description": "Vyberte všechny plochy s velikostmi, které chcete importovat",
|
||||
"action": {
|
||||
"selectAll": "Vybrat vše",
|
||||
@@ -38,33 +38,33 @@
|
||||
"title": "Přehled importu",
|
||||
"description": "",
|
||||
"action": {
|
||||
"import": ""
|
||||
"import": "Potvrdit import a pokračovat"
|
||||
},
|
||||
"entities": {
|
||||
"apps": "Aplikace",
|
||||
"boards": "Plochy",
|
||||
"integrations": "",
|
||||
"integrations": "Integrace",
|
||||
"credentialUsers": ""
|
||||
}
|
||||
},
|
||||
"tokenModal": {
|
||||
"title": "",
|
||||
"title": "Zadejte token pro import",
|
||||
"field": {
|
||||
"token": {
|
||||
"label": "",
|
||||
"label": "Token",
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"notification": {
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Neplatný token",
|
||||
"message": "Token, který jste zadali je neplatný"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"title": "",
|
||||
"title": "Správce",
|
||||
"subtitle": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
|
||||
@@ -893,11 +893,11 @@
|
||||
"dynamic": {
|
||||
"action": {
|
||||
"create": "Neuer dynamischer Abschnitt",
|
||||
"remove": ""
|
||||
"remove": "Dynamischen Abschnitt entfernen"
|
||||
},
|
||||
"remove": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Dynamischen Abschnitt entfernen",
|
||||
"message": "Möchten Sie diesen dynamischen Abschnitt wirklich entfernen? Die Elemente werden an die gleiche Position im übergeordneten Abschnitt verschoben."
|
||||
}
|
||||
},
|
||||
"category": {
|
||||
@@ -907,29 +907,29 @@
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"create": "",
|
||||
"edit": "",
|
||||
"remove": "",
|
||||
"create": "Neue Kategorie",
|
||||
"edit": "Kategorie umbenennen",
|
||||
"remove": "Kategorie entfernen",
|
||||
"moveUp": "Nach oben bewegen",
|
||||
"moveDown": "Nach unten bewegen",
|
||||
"createAbove": "",
|
||||
"createBelow": ""
|
||||
"createAbove": "Neue Kategorie oben",
|
||||
"createBelow": "Neue Kategorie unten"
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"submit": ""
|
||||
"title": "Neue Kategorie",
|
||||
"submit": "Kategorie hinzufügen"
|
||||
},
|
||||
"remove": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Kategorie entfernen",
|
||||
"message": "Möchten Sie die Kategorie {name} wirklich entfernen?"
|
||||
},
|
||||
"edit": {
|
||||
"title": "",
|
||||
"submit": ""
|
||||
"title": "Kategorie umbenennen",
|
||||
"submit": "Kategorie umbenennen"
|
||||
},
|
||||
"menu": {
|
||||
"label": {
|
||||
"create": "",
|
||||
"create": "Neue Kategorie",
|
||||
"changePosition": "Position wechseln"
|
||||
}
|
||||
}
|
||||
@@ -937,12 +937,12 @@
|
||||
},
|
||||
"item": {
|
||||
"action": {
|
||||
"create": "",
|
||||
"import": "",
|
||||
"edit": "",
|
||||
"moveResize": "",
|
||||
"duplicate": "",
|
||||
"remove": ""
|
||||
"create": "Neues Element",
|
||||
"import": "Element importieren",
|
||||
"edit": "Element bearbeiten",
|
||||
"moveResize": "Element verschieben/Größe ändern",
|
||||
"duplicate": "Element duplizieren",
|
||||
"remove": "Element löschen"
|
||||
},
|
||||
"menu": {
|
||||
"label": {
|
||||
@@ -950,11 +950,11 @@
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"addToBoard": ""
|
||||
"title": "Wählen Sie das hinzuzufügende Element aus",
|
||||
"addToBoard": "Zum Board hinzufügen"
|
||||
},
|
||||
"moveResize": {
|
||||
"title": "",
|
||||
"title": "Element verschieben/Größe ändern",
|
||||
"field": {
|
||||
"width": {
|
||||
"label": "Breite"
|
||||
@@ -963,67 +963,67 @@
|
||||
"label": "Höhe"
|
||||
},
|
||||
"xOffset": {
|
||||
"label": ""
|
||||
"label": "X Versatz"
|
||||
},
|
||||
"yOffset": {
|
||||
"label": ""
|
||||
"label": "Y Versatz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"title": "",
|
||||
"title": "Element bearbeiten",
|
||||
"advancedOptions": {
|
||||
"label": "",
|
||||
"title": ""
|
||||
"label": "Erweiterte Optionen",
|
||||
"title": "Erweiterte Element Optionen"
|
||||
},
|
||||
"field": {
|
||||
"integrations": {
|
||||
"label": ""
|
||||
"label": "Integrationen"
|
||||
},
|
||||
"customCssClasses": {
|
||||
"label": ""
|
||||
"label": "Benutzerdefinierte CSS Klassen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"remove": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Element löschen",
|
||||
"message": "Soll dieses Element wirklich entfernt werden?"
|
||||
}
|
||||
},
|
||||
"widget": {
|
||||
"app": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"description": "Bettet eine App in das Board ein.",
|
||||
"option": {
|
||||
"appId": {
|
||||
"label": ""
|
||||
"label": "App auswählen"
|
||||
},
|
||||
"openInNewTab": {
|
||||
"label": "In neuem Tab öffnen"
|
||||
},
|
||||
"showTitle": {
|
||||
"label": ""
|
||||
"label": "App Namen anzeigen"
|
||||
},
|
||||
"showDescriptionTooltip": {
|
||||
"label": ""
|
||||
"label": "Beschreibungs Tooltip anzeigen"
|
||||
},
|
||||
"pingEnabled": {
|
||||
"label": ""
|
||||
"label": "Einfachen Ping aktivieren"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"notFound": {
|
||||
"label": "",
|
||||
"tooltip": ""
|
||||
"label": "Keine App",
|
||||
"tooltip": "Sie haben keine gültige App ausgewählt"
|
||||
}
|
||||
}
|
||||
},
|
||||
"bookmarks": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Lesezeichen",
|
||||
"description": "Zeigt mehrere App Links an",
|
||||
"option": {
|
||||
"title": {
|
||||
"label": ""
|
||||
"label": "Titel"
|
||||
},
|
||||
"layout": {
|
||||
"label": "Ansicht",
|
||||
@@ -1040,7 +1040,7 @@
|
||||
}
|
||||
},
|
||||
"items": {
|
||||
"label": "",
|
||||
"label": "Lesezeichen",
|
||||
"add": ""
|
||||
}
|
||||
}
|
||||
@@ -1376,16 +1376,16 @@
|
||||
}
|
||||
},
|
||||
"popover": {
|
||||
"information": "",
|
||||
"processor": "",
|
||||
"memory": "",
|
||||
"memoryAvailable": "",
|
||||
"information": "Informationen",
|
||||
"processor": "Prozessor: {cpuModelName}",
|
||||
"memory": "Speicher: {memory}GiB",
|
||||
"memoryAvailable": "Verfügbar: {memoryAvailable} GiB ({percent}%)",
|
||||
"version": "",
|
||||
"uptime": "",
|
||||
"loadAverage": "",
|
||||
"minute": "",
|
||||
"minutes": "",
|
||||
"used": "",
|
||||
"uptime": "Betriebszeit: {days} Tage, {hours} Stunden, {minutes} Minuten",
|
||||
"loadAverage": "Durchschnittliche Last:",
|
||||
"minute": "1 Minute",
|
||||
"minutes": "{count} Minuten",
|
||||
"used": "Belegt",
|
||||
"available": "Verfügbar",
|
||||
"lastSeen": ""
|
||||
},
|
||||
@@ -1422,7 +1422,7 @@
|
||||
"description": ""
|
||||
},
|
||||
"app": {
|
||||
"noData": "",
|
||||
"noData": "Keine App gefunden",
|
||||
"description": ""
|
||||
},
|
||||
"error": {
|
||||
@@ -1735,11 +1735,11 @@
|
||||
"edit": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"title": "Änderungen erfolgreich angewendet",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"title": "Änderungen konnten nicht angewendet werden",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
@@ -1981,15 +1981,15 @@
|
||||
},
|
||||
"error": {
|
||||
"noBoard": {
|
||||
"title": "",
|
||||
"title": "Willkommen bei Homarr",
|
||||
"description": "",
|
||||
"link": "",
|
||||
"link": "Erstellen Sie Ihr erstes Board",
|
||||
"notice": ""
|
||||
},
|
||||
"notFound": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"link": "",
|
||||
"link": "Alle Boards anzeigen",
|
||||
"notice": ""
|
||||
},
|
||||
"homeBoard": {
|
||||
@@ -2013,7 +2013,7 @@
|
||||
}
|
||||
},
|
||||
"management": {
|
||||
"metaTitle": "",
|
||||
"metaTitle": "Verwaltung",
|
||||
"title": {
|
||||
"morning": "",
|
||||
"afternoon": "",
|
||||
@@ -2028,15 +2028,15 @@
|
||||
"home": "Startseite",
|
||||
"boards": "",
|
||||
"apps": "",
|
||||
"integrations": "",
|
||||
"searchEngies": "",
|
||||
"medias": "",
|
||||
"integrations": "Integrationen",
|
||||
"searchEngies": "Suchmaschinen",
|
||||
"medias": "Medien",
|
||||
"users": {
|
||||
"label": "Benutzer",
|
||||
"items": {
|
||||
"manage": "Verwalten",
|
||||
"invites": "Einladungen",
|
||||
"groups": ""
|
||||
"groups": "Gruppen"
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
@@ -2067,9 +2067,9 @@
|
||||
"board": "",
|
||||
"user": "Benutzer",
|
||||
"invite": "Einladungen",
|
||||
"integration": "",
|
||||
"integration": "Integrationen",
|
||||
"app": "",
|
||||
"group": ""
|
||||
"group": "Gruppen"
|
||||
},
|
||||
"statisticLabel": {
|
||||
"boards": "",
|
||||
@@ -2160,7 +2160,7 @@
|
||||
"label": "Sicherheit"
|
||||
},
|
||||
"groups": {
|
||||
"label": "",
|
||||
"label": "Gruppen",
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
@@ -2168,10 +2168,10 @@
|
||||
"label": ""
|
||||
},
|
||||
"completed": {
|
||||
"title": ""
|
||||
"title": "Benutzer erstellt"
|
||||
},
|
||||
"error": {
|
||||
"title": ""
|
||||
"title": "Benutzer anlegen fehlgeschlagen"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -2223,7 +2223,7 @@
|
||||
"ownerOfGroupDeleted": ""
|
||||
},
|
||||
"members": {
|
||||
"title": "",
|
||||
"title": "Mitglieder",
|
||||
"search": "",
|
||||
"notFound": ""
|
||||
},
|
||||
@@ -2297,8 +2297,8 @@
|
||||
"defaultColorScheme": {
|
||||
"label": "",
|
||||
"options": {
|
||||
"light": "",
|
||||
"dark": ""
|
||||
"light": "Hell",
|
||||
"dark": "Dunkel"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2529,7 +2529,7 @@
|
||||
},
|
||||
"tab": {
|
||||
"user": "Benutzer",
|
||||
"group": "",
|
||||
"group": "Gruppen",
|
||||
"inherited": ""
|
||||
},
|
||||
"field": {
|
||||
@@ -2537,7 +2537,7 @@
|
||||
"label": "Benutzer"
|
||||
},
|
||||
"group": {
|
||||
"label": ""
|
||||
"label": "Gruppe"
|
||||
},
|
||||
"permission": {
|
||||
"label": ""
|
||||
@@ -2555,7 +2555,7 @@
|
||||
"label": ""
|
||||
},
|
||||
"integrations": {
|
||||
"label": "",
|
||||
"label": "Integrationen",
|
||||
"edit": {
|
||||
"label": "Bearbeiten"
|
||||
},
|
||||
@@ -2564,7 +2564,7 @@
|
||||
}
|
||||
},
|
||||
"search-engines": {
|
||||
"label": "",
|
||||
"label": "Suchmaschinen",
|
||||
"new": {
|
||||
"label": ""
|
||||
},
|
||||
@@ -2573,7 +2573,7 @@
|
||||
}
|
||||
},
|
||||
"medias": {
|
||||
"label": ""
|
||||
"label": "Medien"
|
||||
},
|
||||
"apps": {
|
||||
"label": "",
|
||||
@@ -2593,7 +2593,7 @@
|
||||
"security": "Sicherheit",
|
||||
"board": "",
|
||||
"groups": {
|
||||
"label": ""
|
||||
"label": "Gruppen"
|
||||
},
|
||||
"invites": {
|
||||
"label": "Einladungen"
|
||||
@@ -2634,7 +2634,7 @@
|
||||
"label": ""
|
||||
},
|
||||
"edit": {
|
||||
"label": ""
|
||||
"label": "App bearbeiten"
|
||||
}
|
||||
},
|
||||
"detail": {
|
||||
@@ -2662,7 +2662,7 @@
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
"title": ""
|
||||
"title": "Integrationen"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2676,8 +2676,8 @@
|
||||
"title": "",
|
||||
"option": {
|
||||
"colorScheme": {
|
||||
"light": "",
|
||||
"dark": ""
|
||||
"light": "Zum hellen Design wechseln",
|
||||
"dark": "Zum dunklen Design wechseln"
|
||||
},
|
||||
"language": {
|
||||
"label": "",
|
||||
@@ -2721,7 +2721,7 @@
|
||||
"help": "",
|
||||
"group": {
|
||||
"searchEngine": {
|
||||
"title": "",
|
||||
"title": "Suchmaschinen",
|
||||
"children": {
|
||||
"action": {
|
||||
"search": {
|
||||
@@ -2828,7 +2828,7 @@
|
||||
"label": ""
|
||||
},
|
||||
"manageLog": {
|
||||
"label": ""
|
||||
"label": "Logs anzeigen"
|
||||
},
|
||||
"manageTask": {
|
||||
"label": ""
|
||||
@@ -2866,7 +2866,7 @@
|
||||
}
|
||||
},
|
||||
"group": {
|
||||
"title": "",
|
||||
"title": "Gruppen",
|
||||
"children": {
|
||||
"action": {
|
||||
"detail": {
|
||||
@@ -2900,12 +2900,12 @@
|
||||
"label": ""
|
||||
},
|
||||
"description": {
|
||||
"label": ""
|
||||
"label": "Beschreibung"
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
"title": "Suchmaschinen",
|
||||
"noResults": {
|
||||
"title": "",
|
||||
"action": ""
|
||||
@@ -2929,11 +2929,11 @@
|
||||
"title": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"title": "Änderungen erfolgreich angewendet",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"title": "Änderungen konnten nicht angewendet werden",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
"field": {
|
||||
"token": {
|
||||
"label": "Jeton",
|
||||
"description": ""
|
||||
"description": "Entrez le jeton d'importation de votre instance précédente"
|
||||
}
|
||||
},
|
||||
"notification": {
|
||||
@@ -65,7 +65,7 @@
|
||||
},
|
||||
"user": {
|
||||
"title": "Administrateur",
|
||||
"subtitle": "",
|
||||
"subtitle": "Spécifiez les informations d'identification pour votre compte d'administrateur.",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "Utilisateur créé",
|
||||
@@ -97,7 +97,7 @@
|
||||
"action": {
|
||||
"goToBoard": "",
|
||||
"createBoard": "",
|
||||
"inviteUser": "",
|
||||
"inviteUser": "Inviter d'autres utilisateurs",
|
||||
"docs": "Lire la documentation"
|
||||
}
|
||||
}
|
||||
@@ -144,7 +144,7 @@
|
||||
"label": "Confirmation du mot de passe"
|
||||
},
|
||||
"previousPassword": {
|
||||
"label": ""
|
||||
"label": "Ancien mot de passe"
|
||||
},
|
||||
"homeBoard": {
|
||||
"label": ""
|
||||
@@ -166,13 +166,13 @@
|
||||
"message": "Vous êtes maintenant connecté"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"title": "Échec de la connexion",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"forgotPassword": {
|
||||
"label": "Mot de passe oublié?",
|
||||
"description": ""
|
||||
"description": "Un administrateur peut utiliser la commande suivante pour réinitialiser votre mot de passe :"
|
||||
}
|
||||
},
|
||||
"register": {
|
||||
@@ -184,7 +184,7 @@
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"message": "Votre compte n'a pas pu être créé"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -196,7 +196,7 @@
|
||||
"message": "Mot de passe modifié avec succès"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "Modification du mot de passe impossible"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -232,17 +232,17 @@
|
||||
},
|
||||
"manageAvatar": {
|
||||
"changeImage": {
|
||||
"label": "",
|
||||
"label": "Modifier l’image",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "L'image a été modifiée avec succès"
|
||||
},
|
||||
"error": {
|
||||
"message": "Impossible de modifier l'image"
|
||||
},
|
||||
"toLarge": {
|
||||
"title": "L'image est trop volumineuse",
|
||||
"message": ""
|
||||
"message": "La taille maximale de l'image est {size}"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -271,8 +271,8 @@
|
||||
},
|
||||
"delete": {
|
||||
"label": "Supprimer définitivement l'utilisateur",
|
||||
"description": "",
|
||||
"confirm": ""
|
||||
"description": "Supprime cet utilisateur ainsi que ses préférences. Ne supprimera aucun tableau. L'utilisateur ne sera pas averti.",
|
||||
"confirm": "Êtes-vous sûr de vouloir supprimer l'utilisateur {username} ainsi que ses préférences ?"
|
||||
},
|
||||
"select": {
|
||||
"label": "Sélectionner l'utilisateur",
|
||||
@@ -297,7 +297,7 @@
|
||||
"item": {
|
||||
"admin": {
|
||||
"label": "Administrateur",
|
||||
"description": ""
|
||||
"description": "Les membres avec cette permission ont un accès complet à toutes les fonctionnalités et paramètres"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -309,11 +309,11 @@
|
||||
"description": "Autoriser les membres à créer des apps"
|
||||
},
|
||||
"use-all": {
|
||||
"label": "",
|
||||
"label": "Utiliser toutes les apps",
|
||||
"description": ""
|
||||
},
|
||||
"modify-all": {
|
||||
"label": "",
|
||||
"label": "Modifier toutes les apps",
|
||||
"description": ""
|
||||
},
|
||||
"full-all": {
|
||||
@@ -344,11 +344,11 @@
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
"title": "",
|
||||
"title": "Intégrations",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Créer des intégrations",
|
||||
"description": "Autoriser les membres à créer des intégrations"
|
||||
},
|
||||
"use-all": {
|
||||
"label": "",
|
||||
@@ -365,37 +365,37 @@
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"title": "",
|
||||
"title": "Médias",
|
||||
"item": {
|
||||
"upload": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Téléverser des médias",
|
||||
"description": "Autoriser les membres à téléverser des médias"
|
||||
},
|
||||
"view-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Voir tous les médias",
|
||||
"description": "Autoriser les membres à voir tous les médias"
|
||||
},
|
||||
"full-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Accès complet aux médias",
|
||||
"description": "Autoriser les membres à gérer et supprimer les médias"
|
||||
}
|
||||
}
|
||||
},
|
||||
"other": {
|
||||
"title": "",
|
||||
"title": "Autre",
|
||||
"item": {
|
||||
"view-logs": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Voir les logs",
|
||||
"description": "Autoriser les membres à voir les logs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"search-engine": {
|
||||
"title": "",
|
||||
"title": "Moteurs de recherche",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Créer des moteurs de recherche",
|
||||
"description": "Autoriser les membres à créer des moteurs de recherche"
|
||||
},
|
||||
"modify-all": {
|
||||
"label": "",
|
||||
@@ -413,62 +413,62 @@
|
||||
"external": ""
|
||||
},
|
||||
"reservedNotice": {
|
||||
"message": ""
|
||||
"message": "Ce groupe est réservé pour l'utilisation du système et restreint certaines actions. <checkoutDocs></checkoutDocs>"
|
||||
},
|
||||
"action": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"label": "Nouveau groupe",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "Le groupe a été créé avec succès"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "Le groupe n'a pas pu être créé"
|
||||
}
|
||||
}
|
||||
},
|
||||
"transfer": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"confirm": "",
|
||||
"label": "Changer le propriétaire",
|
||||
"description": "Transférer la propriété de ce groupe à un autre utilisateur.",
|
||||
"confirm": "Êtes-vous sûr de vouloir transférer la propriété du groupe {name} à {username}?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "Le groupe {group} a été transféré avec succès à {user}"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "Impossible de transférer la propriété"
|
||||
}
|
||||
}
|
||||
},
|
||||
"addMember": {
|
||||
"label": ""
|
||||
"label": "Ajouter un membre"
|
||||
},
|
||||
"removeMember": {
|
||||
"label": "",
|
||||
"confirm": ""
|
||||
"label": "Retirer un membre",
|
||||
"confirm": "Êtes-vous sûr de vouloir retirer {user} de ce groupe ?"
|
||||
},
|
||||
"delete": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"confirm": "",
|
||||
"label": "Supprimer le groupe",
|
||||
"description": "Une fois que vous supprimez un groupe, il n'y a pas de retour en arrière possible. Soyez certain.",
|
||||
"confirm": "Êtes-vous sûr de vouloir supprimer le groupe {name}?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "Groupe {name} supprimé avec succès"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "Impossible de supprimer le groupe {name}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"changePermissions": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Permissions sauvegardées",
|
||||
"message": "Les permissions ont été sauvegardées avec succès"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Permissions non sauvegardées",
|
||||
"message": "Les permissions n'ont pas été sauvegardées"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -483,8 +483,8 @@
|
||||
}
|
||||
},
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
"label": "Sélectionner un groupe",
|
||||
"notFound": "Aucun groupe trouvé"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -493,16 +493,16 @@
|
||||
"list": {
|
||||
"title": "Applications",
|
||||
"noResults": {
|
||||
"title": "",
|
||||
"action": ""
|
||||
"title": "Il n'y a pas encore d'apps",
|
||||
"action": "Créer votre première app"
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"title": "Nouvelle app",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Créé avec succès",
|
||||
"message": "L'application a bien été créée"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
@@ -518,17 +518,17 @@
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"title": "Impossible d'appliquer les changements",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"title": "Supprimer l'app",
|
||||
"message": "Êtes-vous sûr de vouloir supprimer l'app {name}?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"title": "Suppression effectuée avec succès",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
@@ -543,23 +543,23 @@
|
||||
"label": "Nom"
|
||||
},
|
||||
"description": {
|
||||
"label": ""
|
||||
"label": "Description"
|
||||
},
|
||||
"url": {
|
||||
"label": ""
|
||||
"label": "Url"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
"label": "Sélectionner l'app",
|
||||
"notFound": "Aucune app trouvée"
|
||||
}
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
"title": "Intégrations",
|
||||
"search": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
@@ -569,7 +569,7 @@
|
||||
"title": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"title": "Créé avec succès",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
@@ -611,37 +611,37 @@
|
||||
"label": "Nom"
|
||||
},
|
||||
"url": {
|
||||
"label": ""
|
||||
"label": "Url"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"create": ""
|
||||
"create": "Nouvelle intégration"
|
||||
},
|
||||
"testConnection": {
|
||||
"action": {
|
||||
"create": "",
|
||||
"edit": ""
|
||||
"create": "Tester la connexion et créer",
|
||||
"edit": "Tester la connexion et enregistrer"
|
||||
},
|
||||
"alertNotice": "",
|
||||
"alertNotice": "Le bouton Enregistrer est activé une fois qu'une connexion est établie avec succès",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Connexion réussie",
|
||||
"message": "La connexion a été établie avec succès"
|
||||
},
|
||||
"invalidUrl": {
|
||||
"title": "URL invalide",
|
||||
"message": ""
|
||||
"message": "L'URL est invalide."
|
||||
},
|
||||
"secretNotDefined": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Identifiants manquants",
|
||||
"message": "Les informations d'identification n'ont pas toutes été fournies"
|
||||
},
|
||||
"invalidCredentials": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Informations d'identification incorrectes.",
|
||||
"message": "Les informations d'identification ne sont pas valides"
|
||||
},
|
||||
"commonError": {
|
||||
"title": "",
|
||||
"title": "Échec de la connexion",
|
||||
"message": ""
|
||||
},
|
||||
"badRequest": {
|
||||
@@ -709,11 +709,11 @@
|
||||
"kind": {
|
||||
"username": {
|
||||
"label": "Nom d'utilisateur",
|
||||
"newLabel": ""
|
||||
"newLabel": "Nouveau nom d'utilisateur"
|
||||
},
|
||||
"apiKey": {
|
||||
"label": "",
|
||||
"newLabel": ""
|
||||
"label": "Clé API",
|
||||
"newLabel": "Nouvelle clé API"
|
||||
},
|
||||
"password": {
|
||||
"label": "Mot de passe",
|
||||
@@ -761,12 +761,12 @@
|
||||
}
|
||||
},
|
||||
"copy": {
|
||||
"label": ""
|
||||
"label": "Copier l'URL"
|
||||
}
|
||||
}
|
||||
},
|
||||
"common": {
|
||||
"beta": "",
|
||||
"beta": "Bêta",
|
||||
"error": "Erreur",
|
||||
"action": {
|
||||
"add": "Ajouter",
|
||||
@@ -774,7 +774,7 @@
|
||||
"backToOverview": "",
|
||||
"create": "Créer",
|
||||
"edit": "Modifier",
|
||||
"import": "",
|
||||
"import": "Importer",
|
||||
"insert": "Insérer",
|
||||
"remove": "Supprimer",
|
||||
"save": "Sauvegarder",
|
||||
@@ -783,31 +783,31 @@
|
||||
"delete": "Supprimer",
|
||||
"discard": "",
|
||||
"confirm": "Confirmer",
|
||||
"continue": "",
|
||||
"continue": "Continuer",
|
||||
"previous": "Précédent",
|
||||
"next": "Suivant",
|
||||
"checkoutDocs": "",
|
||||
"checkLogs": "",
|
||||
"checkoutDocs": "Voir la documentation",
|
||||
"checkLogs": "Vérifiez les logs pour plus de détails",
|
||||
"tryAgain": "Réessayer",
|
||||
"loading": ""
|
||||
"loading": "Chargement"
|
||||
},
|
||||
"here": "",
|
||||
"here": "ici",
|
||||
"iconPicker": {
|
||||
"label": "",
|
||||
"header": ""
|
||||
},
|
||||
"colorScheme": {
|
||||
"options": {
|
||||
"light": "",
|
||||
"dark": ""
|
||||
"light": "Clair",
|
||||
"dark": "Sombre"
|
||||
}
|
||||
},
|
||||
"information": {
|
||||
"min": "",
|
||||
"max": "",
|
||||
"days": "",
|
||||
"min": "Min",
|
||||
"max": "Max",
|
||||
"days": "Jours",
|
||||
"hours": "Heures",
|
||||
"minutes": ""
|
||||
"minutes": "Minutes"
|
||||
},
|
||||
"notification": {
|
||||
"create": {
|
||||
@@ -832,7 +832,7 @@
|
||||
},
|
||||
"multiText": {
|
||||
"placeholder": "",
|
||||
"addLabel": ""
|
||||
"addLabel": "Ajouter {value}"
|
||||
},
|
||||
"select": {
|
||||
"placeholder": "",
|
||||
@@ -844,9 +844,9 @@
|
||||
"menu": {
|
||||
"switchToDarkMode": "Activer le mode sombre",
|
||||
"switchToLightMode": "Activer le mode clair",
|
||||
"management": "",
|
||||
"management": "Administration",
|
||||
"preferences": "Vos préférences",
|
||||
"logout": "",
|
||||
"logout": "Se déconnecter",
|
||||
"login": "Connexion",
|
||||
"homeBoard": "",
|
||||
"loggedOut": "",
|
||||
@@ -992,7 +992,7 @@
|
||||
},
|
||||
"widget": {
|
||||
"app": {
|
||||
"name": "",
|
||||
"name": "App",
|
||||
"description": "",
|
||||
"option": {
|
||||
"appId": {
|
||||
|
||||
@@ -93,39 +93,39 @@
|
||||
"finish": {
|
||||
"title": "סיים את ההגדרה",
|
||||
"subtitle": "",
|
||||
"description": "",
|
||||
"description": "השלמת בהצלחה את תהליך ההגדרה. כעת תוכל להתחיל להשתמש ב-Homarr. בחר את הפעולה הבאה שלך:",
|
||||
"action": {
|
||||
"goToBoard": "",
|
||||
"createBoard": "",
|
||||
"inviteUser": "",
|
||||
"docs": ""
|
||||
"goToBoard": "עבור ללוח {name}",
|
||||
"createBoard": "צור את הלוח הראשון שלך",
|
||||
"inviteUser": "הזמן משתמשים אחרים",
|
||||
"docs": "קרא את הדוקומנטציה"
|
||||
}
|
||||
}
|
||||
},
|
||||
"backToStart": ""
|
||||
"backToStart": "חזרה להתחלה"
|
||||
},
|
||||
"user": {
|
||||
"title": "משתמשים",
|
||||
"name": "משתמש",
|
||||
"page": {
|
||||
"login": {
|
||||
"title": "",
|
||||
"subtitle": ""
|
||||
"title": "היכנס לחשבון שלך",
|
||||
"subtitle": "ברוך שובך! אנא הזן את שם המשתמש והסיסמה שלך"
|
||||
},
|
||||
"invite": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"description": ""
|
||||
"title": "הצטרף ל- Homarr",
|
||||
"subtitle": "ברוכים הבאים ל- Homarr! נא ליצור את החשבון שלך",
|
||||
"description": "הוזמנת על ידי {username}"
|
||||
},
|
||||
"init": {
|
||||
"title": "",
|
||||
"subtitle": ""
|
||||
"title": "התקנת Homarr חדשה",
|
||||
"subtitle": "נא ליצור את משתמש המנהל הראשוני"
|
||||
}
|
||||
},
|
||||
"field": {
|
||||
"email": {
|
||||
"label": "אימייל",
|
||||
"verified": ""
|
||||
"verified": "מאומת"
|
||||
},
|
||||
"username": {
|
||||
"label": "שם משתמש"
|
||||
@@ -133,46 +133,46 @@
|
||||
"password": {
|
||||
"label": "סיסמה",
|
||||
"requirement": {
|
||||
"length": "",
|
||||
"length": "כולל לפחות 8 תווים",
|
||||
"lowercase": "אפשר אותיות קטנות",
|
||||
"uppercase": "אפשר אותיות גדולות",
|
||||
"number": "אפשר מספרים",
|
||||
"special": ""
|
||||
"special": "כולל סמל מיוחד"
|
||||
}
|
||||
},
|
||||
"passwordConfirm": {
|
||||
"label": "אימות סיסמא"
|
||||
},
|
||||
"previousPassword": {
|
||||
"label": ""
|
||||
"label": "סיסמה קודמת"
|
||||
},
|
||||
"homeBoard": {
|
||||
"label": ""
|
||||
"label": "לוח בית"
|
||||
},
|
||||
"pingIconsEnabled": {
|
||||
"label": ""
|
||||
"label": "השתמש בסמלים עבור פינגים"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"usernameTaken": ""
|
||||
"usernameTaken": "שם המשתמש תפוס"
|
||||
},
|
||||
"action": {
|
||||
"login": {
|
||||
"label": "התחבר/י",
|
||||
"labelWith": "",
|
||||
"labelWith": "התחבר עם {provider}",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "התחברת בהצלחה",
|
||||
"message": "אתה כעת מחובר"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "התחברות נכשלה",
|
||||
"message": "הכניסה נכשלה"
|
||||
}
|
||||
},
|
||||
"forgotPassword": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "שכחת את הסיסמה שלך?",
|
||||
"description": "מנהל מערכת יכול להשתמש בפקודה הבאה כדי לאפס את הסיסמה שלך:"
|
||||
}
|
||||
},
|
||||
"register": {
|
||||
@@ -180,81 +180,81 @@
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "החשבון נוצר",
|
||||
"message": ""
|
||||
"message": "אנא היכנס כדי להמשיך"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "יצירת החשבון נכשלה",
|
||||
"message": "לא ניתן ליצור את החשבון שלך"
|
||||
}
|
||||
}
|
||||
},
|
||||
"create": "צור משתמש",
|
||||
"changePassword": {
|
||||
"label": "",
|
||||
"label": "שינוי סיסמה",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "הסיסמה שונתה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "לא ניתן לשנות סיסמה"
|
||||
}
|
||||
}
|
||||
},
|
||||
"changeHomeBoard": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "לוח הבית השתנה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "לא ניתן לשנות לוח בית"
|
||||
}
|
||||
}
|
||||
},
|
||||
"changeFirstDayOfWeek": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "היום הראשון בשבוע השתנה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "לא ניתן לשנות את היום הראשון בשבוע"
|
||||
}
|
||||
}
|
||||
},
|
||||
"changePingIconsEnabled": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "סמלי פינג הוחלפו בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "לא ניתן לשנות את סמלי הפינג"
|
||||
}
|
||||
}
|
||||
},
|
||||
"manageAvatar": {
|
||||
"changeImage": {
|
||||
"label": "",
|
||||
"label": "שנה תמונה",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "התמונה השתנתה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "לא ניתן לשנות תמונה"
|
||||
},
|
||||
"toLarge": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "התמונה גדולה מדי",
|
||||
"message": "גודל התמונה המרבי הוא {size}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeImage": {
|
||||
"label": "",
|
||||
"confirm": "",
|
||||
"label": "הסר תמונה",
|
||||
"confirm": "האם אתה בטוח שברצונך להסיר את התמונה?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "התמונה הוסרה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "לא ניתן להסיר תמונה"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -262,42 +262,42 @@
|
||||
"editProfile": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "הפרופיל עודכן בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "לא ניתן לעדכן את הפרופיל"
|
||||
}
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"confirm": ""
|
||||
"label": "מחק משתמש לצמיתות",
|
||||
"description": "מוחק משתמש זה כולל העדפותיו. לא ימחק אף לוח. המשתמש לא יקבל הודעה.",
|
||||
"confirm": "האם אתה בטוח שאתה רוצה למחוק את המשתמש {username} עם ההעדפות שלו?"
|
||||
},
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
"label": "בחר משתמש",
|
||||
"notFound": "לא נמצא משתמש"
|
||||
},
|
||||
"transfer": {
|
||||
"label": ""
|
||||
"label": "בחר בעלים חדש"
|
||||
}
|
||||
}
|
||||
},
|
||||
"group": {
|
||||
"title": "",
|
||||
"name": "",
|
||||
"search": "",
|
||||
"title": "קבוצות",
|
||||
"name": "קבוצה",
|
||||
"search": "מצא קבוצה",
|
||||
"field": {
|
||||
"name": "שם",
|
||||
"members": ""
|
||||
"members": "חברים"
|
||||
},
|
||||
"permission": {
|
||||
"admin": {
|
||||
"title": "מנהל מערכת",
|
||||
"item": {
|
||||
"admin": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "מנהל",
|
||||
"description": "לחברים עם הרשאה זו יש גישה מלאה לכל התכונות וההגדרות"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -305,20 +305,20 @@
|
||||
"title": "אפליקציות",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "יצירת אפליקציות",
|
||||
"description": "מאפשר לחברים ליצור אפליקציות"
|
||||
},
|
||||
"use-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "שימוש בכל האפליקציות",
|
||||
"description": "מאפשר לחברים להוסיף כל אפליקציות ללוחות שלהם"
|
||||
},
|
||||
"modify-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "משנה את כל האפליקציות",
|
||||
"description": "מאפשר לחברים לשנות את כל האפליקציות"
|
||||
},
|
||||
"full-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "גישה מלאה לאפליקציה",
|
||||
"description": "מאפשר לחברים לנהל, להשתמש ולמחוק כל אפליקציה"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -326,20 +326,20 @@
|
||||
"title": "לוחות",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "יצירת לוחות",
|
||||
"description": "מאפשר לחברים ליצור לוחות"
|
||||
},
|
||||
"view-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "הצגת כל הלוחות",
|
||||
"description": "מאפשר לחברים לצפות בכל הלוחות"
|
||||
},
|
||||
"modify-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "משנה את כל הלוחות",
|
||||
"description": "מאפשר לחברים לשנות את כל הלוחות (לא כולל בקרת גישה ואזור סכנה)"
|
||||
},
|
||||
"full-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "גישה מלאה ללוח",
|
||||
"description": "אפשר לחברים להציג, לשנות ולמחוק את כל הלוחות (כולל בקרת גישה ואזור סכנה)"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -347,144 +347,144 @@
|
||||
"title": "אינטגרציות",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "יצירת אינטגרציות",
|
||||
"description": "אפשר לחברים ליצור אינטגרציות"
|
||||
},
|
||||
"use-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "שימוש בכל האינטגרציות",
|
||||
"description": "מאפשר לחברים להוסיף כל אינטגרציה ללוחות שלהם"
|
||||
},
|
||||
"interact-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "אינטראקציה עם כל אינטגרציה",
|
||||
"description": "אפשר לחברים לקיים אינטראקציה עם כל אינטגרציה"
|
||||
},
|
||||
"full-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "גישת אינטגרציה מלאה",
|
||||
"description": "אפשר לחברים לנהל, להשתמש ולקיים אינטראקציה עם כל אינטגרציה"
|
||||
}
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"title": "",
|
||||
"title": "מדיה",
|
||||
"item": {
|
||||
"upload": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "העלה מדיה",
|
||||
"description": "אפשר לחברים להעלות מדיה"
|
||||
},
|
||||
"view-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "הצג את כל המדיה",
|
||||
"description": "אפשר לחברים להציג את כל המדיה"
|
||||
},
|
||||
"full-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "גישה מלאה למדיה",
|
||||
"description": "אפשר לחברים לנהל ולמחוק כל מדיה"
|
||||
}
|
||||
}
|
||||
},
|
||||
"other": {
|
||||
"title": "",
|
||||
"title": "אחר",
|
||||
"item": {
|
||||
"view-logs": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "הצג לוגים",
|
||||
"description": "אפשר לחברים לצפות בלוגים"
|
||||
}
|
||||
}
|
||||
},
|
||||
"search-engine": {
|
||||
"title": "",
|
||||
"title": "מנועי חיפוש",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "צור מנועי חיפוש",
|
||||
"description": "אפשר לחברים ליצור מנועי חיפוש"
|
||||
},
|
||||
"modify-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "שנה את כל מנועי החיפוש",
|
||||
"description": "אפשר לחברים לשנות את כל מנועי החיפוש"
|
||||
},
|
||||
"full-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "גישה מלאה למנועי חיפוש",
|
||||
"description": "אפשר לחברים לנהל ולמחוק כל מנוע חיפוש"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"memberNotice": {
|
||||
"mixed": "",
|
||||
"external": ""
|
||||
"mixed": "חלק מהחברים הם מספקים חיצוניים ולא ניתן לנהל אותם כאן",
|
||||
"external": "כל החברים הם מספקים חיצוניים ולא ניתן לנהל אותם כאן"
|
||||
},
|
||||
"reservedNotice": {
|
||||
"message": ""
|
||||
"message": "קבוצה זו שמורה לשימוש במערכת ומגבילה חלק מהפעולות. <checkoutDocs></checkoutDocs>"
|
||||
},
|
||||
"action": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"label": "קבוצה חדשה",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "הקבוצה נוצרה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "לא ניתן ליצור את הקבוצה"
|
||||
}
|
||||
}
|
||||
},
|
||||
"transfer": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"confirm": "",
|
||||
"label": "העברת בעלות",
|
||||
"description": "העבר את הבעלות על הקבוצה הזו למשתמש אחר.",
|
||||
"confirm": "האם אתה בטוח שברצונך להעביר בעלות על הקבוצה {name} ל- {username}?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "הקבוצה {group} הועברה בהצלחה ל {user}"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "לא ניתן להעביר בעלות"
|
||||
}
|
||||
}
|
||||
},
|
||||
"addMember": {
|
||||
"label": ""
|
||||
"label": "הוסף חבר"
|
||||
},
|
||||
"removeMember": {
|
||||
"label": "",
|
||||
"confirm": ""
|
||||
"label": "הסר חבר",
|
||||
"confirm": "האם אתה בטוח שברצונך להסיר את {user} מהקבוצה הזו?"
|
||||
},
|
||||
"delete": {
|
||||
"label": "",
|
||||
"label": "מחק קבוצה",
|
||||
"description": "",
|
||||
"confirm": "",
|
||||
"confirm": "האם אתה בטוח שברצונך למחוק את הקבוצה {name}?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "הקבוצה {name} נמחקה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "לא ניתן למחוק את הקבוצה {name}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"changePermissions": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "ההרשאות נשמרו",
|
||||
"message": "ההרשאות נשמרו בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "ההרשאות לא נשמרו",
|
||||
"message": "ההרשאות לא נשמרו"
|
||||
}
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "הקבוצה {name} נשמרה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "לא ניתן לשמור את הקבוצה {name}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
"label": "בחר קבוצה",
|
||||
"notFound": "לא נמצאה קבוצה"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -493,47 +493,47 @@
|
||||
"list": {
|
||||
"title": "אפליקציות",
|
||||
"noResults": {
|
||||
"title": "",
|
||||
"action": ""
|
||||
"title": "עדיין אין אפליקציות",
|
||||
"action": "צור את האפליקציה הראשונה שלך"
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"title": "אפליקציה חדשה",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "היצירה הצליחה",
|
||||
"message": "האפליקציה נוצרה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "היצירה נכשלה",
|
||||
"message": "לא ניתן ליצור את האפליקציה"
|
||||
}
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"title": "",
|
||||
"title": "ערוך אפליקציה",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "השינויים הוחלו בהצלחה",
|
||||
"message": "האפליקציה נשמרה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "לא ניתן להחיל שינויים",
|
||||
"message": "לא ניתן היה לשמור את האפליקציה"
|
||||
}
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"title": "מחק אפליקציה",
|
||||
"message": "האם אתה בטוח שברצונך למחוק את האפליקציה {name}?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "המחיקה הצליחה",
|
||||
"message": "האפליקציה נמחקה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "המחיקה נכשלה",
|
||||
"message": "לא ניתן למחוק את האפליקציה"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -543,16 +543,16 @@
|
||||
"label": "שם"
|
||||
},
|
||||
"description": {
|
||||
"label": ""
|
||||
"label": "תיאור"
|
||||
},
|
||||
"url": {
|
||||
"label": ""
|
||||
"label": "כתובת אתר"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
"label": "בחר אפליקציה",
|
||||
"notFound": "לא נמצאה אפליקציה"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -560,48 +560,48 @@
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "אינטגרציות",
|
||||
"search": "",
|
||||
"search": "חיפוש אינטגרציות",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
"title": "עדיין אין אינטגרציות"
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"title": "אינטגרציה {name} חדשה",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "היצירה הצליחה",
|
||||
"message": "האינטגרציה נוצרה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "היצירה נכשלה",
|
||||
"message": "לא ניתן ליצור את האינטגרציה"
|
||||
}
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"title": "",
|
||||
"title": "ערוך אינטגרציה {name}",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "השינויים הוחלו בהצלחה",
|
||||
"message": "האינטגרציה נשמרה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "לא ניתן להחיל שינויים",
|
||||
"message": "לא ניתן היה לשמור את האינטגרציה"
|
||||
}
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"title": "מחק אינטגרציה",
|
||||
"message": "האם אתה בטוח שברצונך למחוק את האינטגרציה {name}?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "המחיקה הצליחה",
|
||||
"message": "האינטגרציה נמחקה בהצלחה"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "המחיקה נכשלה",
|
||||
"message": "לא ניתן למחוק את האינטגרציה"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -611,29 +611,29 @@
|
||||
"label": "שם"
|
||||
},
|
||||
"url": {
|
||||
"label": ""
|
||||
"label": "כתובת אתר"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"create": ""
|
||||
"create": "אינטגרציה חדשה"
|
||||
},
|
||||
"testConnection": {
|
||||
"action": {
|
||||
"create": "",
|
||||
"edit": ""
|
||||
"create": "בדוק חיבור וצור",
|
||||
"edit": "בדוק את החיבור ושמור"
|
||||
},
|
||||
"alertNotice": "",
|
||||
"alertNotice": "הלחצן שמור מופעל לאחר יצירת חיבור מוצלח",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "החיבור הצליח",
|
||||
"message": "החיבור נוצר בהצלחה"
|
||||
},
|
||||
"invalidUrl": {
|
||||
"title": "קישור לא תקין",
|
||||
"message": ""
|
||||
"message": "כתובת האתר אינה חוקית"
|
||||
},
|
||||
"secretNotDefined": {
|
||||
"title": "",
|
||||
"title": "חסרים פרטי התחברות",
|
||||
"message": ""
|
||||
},
|
||||
"invalidCredentials": {
|
||||
@@ -724,11 +724,11 @@
|
||||
"permission": {
|
||||
"use": "",
|
||||
"interact": "",
|
||||
"full": ""
|
||||
"full": "גישת אינטגרציה מלאה"
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"plural": "",
|
||||
"plural": "מדיה",
|
||||
"search": "",
|
||||
"field": {
|
||||
"name": "שם",
|
||||
@@ -811,16 +811,16 @@
|
||||
},
|
||||
"notification": {
|
||||
"create": {
|
||||
"success": "",
|
||||
"error": ""
|
||||
"success": "היצירה הצליחה",
|
||||
"error": "היצירה נכשלה"
|
||||
},
|
||||
"delete": {
|
||||
"success": "",
|
||||
"error": ""
|
||||
"success": "המחיקה הצליחה",
|
||||
"error": "המחיקה נכשלה"
|
||||
},
|
||||
"update": {
|
||||
"success": "",
|
||||
"error": ""
|
||||
"success": "השינויים הוחלו בהצלחה",
|
||||
"error": "לא ניתן להחיל שינויים"
|
||||
},
|
||||
"transfer": {
|
||||
"success": "",
|
||||
@@ -1213,7 +1213,7 @@
|
||||
}
|
||||
},
|
||||
"iframe": {
|
||||
"name": "",
|
||||
"name": "iFrame",
|
||||
"description": "הטמע כל תוכן מהאינטרנט. חלק מהאתרים עשויים להגביל את הגישה.",
|
||||
"option": {
|
||||
"embedUrl": {
|
||||
@@ -1422,7 +1422,7 @@
|
||||
"description": ""
|
||||
},
|
||||
"app": {
|
||||
"noData": "",
|
||||
"noData": "לא נמצאה אפליקציה",
|
||||
"description": ""
|
||||
},
|
||||
"error": {
|
||||
@@ -1735,11 +1735,11 @@
|
||||
"edit": {
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"title": "השינויים הוחלו בהצלחה",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"title": "לא ניתן להחיל שינויים",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
@@ -1983,13 +1983,13 @@
|
||||
"noBoard": {
|
||||
"title": "ברוכים הבאים ל- Homarr",
|
||||
"description": "",
|
||||
"link": "",
|
||||
"link": "צור את הלוח הראשון שלך",
|
||||
"notice": ""
|
||||
},
|
||||
"notFound": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"link": "",
|
||||
"link": "הצגת כל הלוחות",
|
||||
"notice": ""
|
||||
},
|
||||
"homeBoard": {
|
||||
@@ -2029,14 +2029,14 @@
|
||||
"boards": "לוחות",
|
||||
"apps": "אפליקציות",
|
||||
"integrations": "אינטגרציות",
|
||||
"searchEngies": "",
|
||||
"medias": "",
|
||||
"searchEngies": "מנועי חיפוש",
|
||||
"medias": "מדיה",
|
||||
"users": {
|
||||
"label": "משתמשים",
|
||||
"items": {
|
||||
"manage": "ניהול",
|
||||
"invites": "הזמנות",
|
||||
"groups": ""
|
||||
"groups": "קבוצות"
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
@@ -2069,7 +2069,7 @@
|
||||
"invite": "הזמנות",
|
||||
"integration": "אינטגרציות",
|
||||
"app": "אפליקציות",
|
||||
"group": ""
|
||||
"group": "קבוצות"
|
||||
},
|
||||
"statisticLabel": {
|
||||
"boards": "לוחות",
|
||||
@@ -2130,7 +2130,7 @@
|
||||
"title": "כללי",
|
||||
"item": {
|
||||
"language": "",
|
||||
"board": "",
|
||||
"board": "לוח בית",
|
||||
"firstDayOfWeek": "היום הראשון בשבוע",
|
||||
"accessibility": "נגישות"
|
||||
}
|
||||
@@ -2160,7 +2160,7 @@
|
||||
"label": "אבטחה"
|
||||
},
|
||||
"groups": {
|
||||
"label": "",
|
||||
"label": "קבוצות",
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
@@ -2223,7 +2223,7 @@
|
||||
"ownerOfGroupDeleted": ""
|
||||
},
|
||||
"members": {
|
||||
"title": "",
|
||||
"title": "חברים",
|
||||
"search": "",
|
||||
"notFound": ""
|
||||
},
|
||||
@@ -2529,7 +2529,7 @@
|
||||
},
|
||||
"tab": {
|
||||
"user": "משתמשים",
|
||||
"group": "",
|
||||
"group": "קבוצות",
|
||||
"inherited": ""
|
||||
},
|
||||
"field": {
|
||||
@@ -2537,7 +2537,7 @@
|
||||
"label": "משתמש"
|
||||
},
|
||||
"group": {
|
||||
"label": ""
|
||||
"label": "קבוצה"
|
||||
},
|
||||
"permission": {
|
||||
"label": ""
|
||||
@@ -2564,7 +2564,7 @@
|
||||
}
|
||||
},
|
||||
"search-engines": {
|
||||
"label": "",
|
||||
"label": "מנועי חיפוש",
|
||||
"new": {
|
||||
"label": ""
|
||||
},
|
||||
@@ -2573,7 +2573,7 @@
|
||||
}
|
||||
},
|
||||
"medias": {
|
||||
"label": ""
|
||||
"label": "מדיה"
|
||||
},
|
||||
"apps": {
|
||||
"label": "אפליקציות",
|
||||
@@ -2593,7 +2593,7 @@
|
||||
"security": "אבטחה",
|
||||
"board": "לוחות",
|
||||
"groups": {
|
||||
"label": ""
|
||||
"label": "קבוצות"
|
||||
},
|
||||
"invites": {
|
||||
"label": "הזמנות"
|
||||
@@ -2634,7 +2634,7 @@
|
||||
"label": ""
|
||||
},
|
||||
"edit": {
|
||||
"label": ""
|
||||
"label": "ערוך אפליקציה"
|
||||
}
|
||||
},
|
||||
"detail": {
|
||||
@@ -2721,7 +2721,7 @@
|
||||
"help": "",
|
||||
"group": {
|
||||
"searchEngine": {
|
||||
"title": "",
|
||||
"title": "מנועי חיפוש",
|
||||
"children": {
|
||||
"action": {
|
||||
"search": {
|
||||
@@ -2828,7 +2828,7 @@
|
||||
"label": ""
|
||||
},
|
||||
"manageLog": {
|
||||
"label": ""
|
||||
"label": "הצג לוגים"
|
||||
},
|
||||
"manageTask": {
|
||||
"label": ""
|
||||
@@ -2840,7 +2840,7 @@
|
||||
"label": "אודות"
|
||||
},
|
||||
"homeBoard": {
|
||||
"label": ""
|
||||
"label": "לוח בית"
|
||||
},
|
||||
"preferences": {
|
||||
"label": "העדפות שלך"
|
||||
@@ -2866,7 +2866,7 @@
|
||||
}
|
||||
},
|
||||
"group": {
|
||||
"title": "",
|
||||
"title": "קבוצות",
|
||||
"children": {
|
||||
"action": {
|
||||
"detail": {
|
||||
@@ -2900,12 +2900,12 @@
|
||||
"label": ""
|
||||
},
|
||||
"description": {
|
||||
"label": ""
|
||||
"label": "תיאור"
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
"title": "מנועי חיפוש",
|
||||
"noResults": {
|
||||
"title": "",
|
||||
"action": ""
|
||||
@@ -2929,11 +2929,11 @@
|
||||
"title": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"title": "השינויים הוחלו בהצלחה",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"title": "לא ניתן להחיל שינויים",
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -2093,7 +2093,7 @@
|
||||
"setHomeBoard": {
|
||||
"label": "Сделать домашней панелью",
|
||||
"badge": {
|
||||
"label": "Домашняя",
|
||||
"label": "Главная",
|
||||
"tooltip": "Эта панель будет показываться как ваша домашняя панель"
|
||||
}
|
||||
},
|
||||
@@ -2312,70 +2312,70 @@
|
||||
},
|
||||
"tool": {
|
||||
"tasks": {
|
||||
"title": "",
|
||||
"title": "Задачи",
|
||||
"status": {
|
||||
"idle": "",
|
||||
"running": "Работает",
|
||||
"idle": "Ожидание",
|
||||
"running": "Выполняется",
|
||||
"error": "Ошибка"
|
||||
},
|
||||
"job": {
|
||||
"iconsUpdater": {
|
||||
"label": ""
|
||||
"label": "Обновление иконок"
|
||||
},
|
||||
"analytics": {
|
||||
"label": ""
|
||||
"label": "Аналитика"
|
||||
},
|
||||
"smartHomeEntityState": {
|
||||
"label": ""
|
||||
"label": "Состояние объектов умного дома"
|
||||
},
|
||||
"ping": {
|
||||
"label": ""
|
||||
"label": "Проверка доступности"
|
||||
},
|
||||
"mediaServer": {
|
||||
"label": "Медиасервер"
|
||||
},
|
||||
"mediaOrganizer": {
|
||||
"label": ""
|
||||
"label": "Организация медиафайлов"
|
||||
},
|
||||
"downloads": {
|
||||
"label": ""
|
||||
"label": "Загрузки"
|
||||
},
|
||||
"mediaRequestStats": {
|
||||
"label": ""
|
||||
"label": "Статистика запросов медиаконтента"
|
||||
},
|
||||
"mediaRequestList": {
|
||||
"label": ""
|
||||
"label": "Список запросов медиаконтента"
|
||||
},
|
||||
"rssFeeds": {
|
||||
"label": ""
|
||||
"label": "RSS-ленты"
|
||||
},
|
||||
"indexerManager": {
|
||||
"label": ""
|
||||
"label": "Управление индексаторами"
|
||||
},
|
||||
"healthMonitoring": {
|
||||
"label": ""
|
||||
"label": "Мониторинг состояния"
|
||||
},
|
||||
"dnsHole": {
|
||||
"label": ""
|
||||
"label": "Данные DNS-фильтра"
|
||||
},
|
||||
"sessionCleanup": {
|
||||
"label": ""
|
||||
"label": "Очистка сессий"
|
||||
},
|
||||
"updateChecker": {
|
||||
"label": ""
|
||||
"label": "Проверка обновлений"
|
||||
},
|
||||
"mediaTranscoding": {
|
||||
"label": ""
|
||||
"label": "Перекодирование медиафайлов"
|
||||
}
|
||||
}
|
||||
},
|
||||
"api": {
|
||||
"title": "",
|
||||
"title": "API",
|
||||
"modal": {
|
||||
"createApiToken": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"button": ""
|
||||
"title": "API-токен создан",
|
||||
"description": "API-токен создан. Этот токен зашифрован в базе данных и будет показан только один раз. После закрытия окна его нельзя будет восстановить.",
|
||||
"button": "Копировать и закрыть"
|
||||
}
|
||||
},
|
||||
"tab": {
|
||||
@@ -2383,15 +2383,15 @@
|
||||
"label": "Документация"
|
||||
},
|
||||
"apiKey": {
|
||||
"label": "",
|
||||
"title": "",
|
||||
"label": "Аутентификация",
|
||||
"title": "API-ключи",
|
||||
"button": {
|
||||
"createApiToken": ""
|
||||
"createApiToken": "Создать API-токен"
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"id": "",
|
||||
"createdBy": ""
|
||||
"id": "ID",
|
||||
"createdBy": "Создан пользователем"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2399,20 +2399,20 @@
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"version": "",
|
||||
"text": "",
|
||||
"version": "Версия {version}",
|
||||
"text": "Homarr — это проект с открытым исходным кодом, поддерживаемый сообществом и развиваемый добровольцами. Благодаря этим людям Homarr остаётся растущим проектом с 2021 года. Наша команда работает над Homarr полностью удалённо из разных стран в своё свободное время без какой-либо компенсации.",
|
||||
"accordion": {
|
||||
"contributors": {
|
||||
"title": "",
|
||||
"subtitle": ""
|
||||
"title": "Участники проекта",
|
||||
"subtitle": "{count} поддерживают код и Homarr"
|
||||
},
|
||||
"translators": {
|
||||
"title": "",
|
||||
"subtitle": ""
|
||||
"title": "Переводчики",
|
||||
"subtitle": "{count} помогают с переводами на разные языки"
|
||||
},
|
||||
"libraries": {
|
||||
"title": "",
|
||||
"subtitle": ""
|
||||
"title": "Библиотеки",
|
||||
"subtitle": "{count} используются в коде Homarr"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2421,9 +2421,9 @@
|
||||
"docker": {
|
||||
"title": "Контейнеры",
|
||||
"table": {
|
||||
"updated": "",
|
||||
"search": "",
|
||||
"selected": ""
|
||||
"updated": "Обновлено {when}",
|
||||
"search": "Поиск среди {count} контейнеров",
|
||||
"selected": "Выбрано {selectCount} из {totalCount} контейнеров"
|
||||
},
|
||||
"field": {
|
||||
"name": {
|
||||
@@ -2434,11 +2434,11 @@
|
||||
"option": {
|
||||
"created": "Создан",
|
||||
"running": "Работает",
|
||||
"paused": "Приостановлено",
|
||||
"restarting": "Перезапуск",
|
||||
"exited": "",
|
||||
"removing": "Удаление",
|
||||
"dead": ""
|
||||
"paused": "Приостановлен",
|
||||
"restarting": "Перезапускается",
|
||||
"exited": "Остановлен",
|
||||
"removing": "Удаляется",
|
||||
"dead": "Нерабочий"
|
||||
}
|
||||
},
|
||||
"containerImage": {
|
||||
@@ -2453,12 +2453,12 @@
|
||||
"label": "Запустить",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Контейнеры запущены",
|
||||
"message": "Контейнеры успешно запущены"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Не удалось запустить контейнеры",
|
||||
"message": "Не удалось запустить контейнеры"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2466,12 +2466,12 @@
|
||||
"label": "Остановить",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Контейнеры остановлены",
|
||||
"message": "Контейнеры успешно остановлены"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Не удалось остановить контейнеры",
|
||||
"message": "Не удалось остановить контейнеры"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2479,12 +2479,12 @@
|
||||
"label": "Перезапустить",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Контейнеры перезапущены",
|
||||
"message": "Контейнеры успешно перезапущены"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Не удалось перезапустить контейнеры",
|
||||
"message": "Не удалось перезапустить контейнеры"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2492,45 +2492,45 @@
|
||||
"label": "Удалить",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Контейнеры удалены",
|
||||
"message": "Контейнеры успешно удалены"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Не удалось удалить контейнеры",
|
||||
"message": "Не удалось удалить контейнеры"
|
||||
}
|
||||
}
|
||||
},
|
||||
"refresh": {
|
||||
"label": "",
|
||||
"label": "Обновить",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Контейнеры обновлены",
|
||||
"message": "Отображаются актуальные данные"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Не удалось обновить контейнеры",
|
||||
"message": "Произошла ошибка при обновлении данных о контейнерах"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"internalServerError": ""
|
||||
"internalServerError": "Произошла ошибка при обновлении данных о контейнерах"
|
||||
}
|
||||
},
|
||||
"permission": {
|
||||
"title": "",
|
||||
"title": "Права доступа",
|
||||
"userSelect": {
|
||||
"title": ""
|
||||
"title": "Добавить права для пользователя"
|
||||
},
|
||||
"groupSelect": {
|
||||
"title": ""
|
||||
"title": "Добавить права для группы"
|
||||
},
|
||||
"tab": {
|
||||
"user": "Пользователи",
|
||||
"group": "Группы",
|
||||
"inherited": ""
|
||||
"inherited": "Унаследованные группы"
|
||||
},
|
||||
"field": {
|
||||
"user": {
|
||||
@@ -2540,12 +2540,12 @@
|
||||
"label": "Группа"
|
||||
},
|
||||
"permission": {
|
||||
"label": ""
|
||||
"label": "Права доступа"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"saveUser": "",
|
||||
"saveGroup": ""
|
||||
"saveUser": "Сохранить права пользователя",
|
||||
"saveGroup": "Сохранить права группы"
|
||||
}
|
||||
},
|
||||
"navigationStructure": {
|
||||
@@ -2560,13 +2560,13 @@
|
||||
"label": "Редактировать"
|
||||
},
|
||||
"new": {
|
||||
"label": ""
|
||||
"label": "Новая"
|
||||
}
|
||||
},
|
||||
"search-engines": {
|
||||
"label": "Поисковые системы",
|
||||
"new": {
|
||||
"label": ""
|
||||
"label": "Новая"
|
||||
},
|
||||
"edit": {
|
||||
"label": "Редактировать"
|
||||
@@ -2578,7 +2578,7 @@
|
||||
"apps": {
|
||||
"label": "Приложения",
|
||||
"new": {
|
||||
"label": ""
|
||||
"label": "Новое"
|
||||
},
|
||||
"edit": {
|
||||
"label": "Редактировать"
|
||||
@@ -2589,7 +2589,7 @@
|
||||
"create": {
|
||||
"label": "Создать"
|
||||
},
|
||||
"general": "Основное",
|
||||
"general": "Общие",
|
||||
"security": "Безопасность",
|
||||
"board": "Панели",
|
||||
"groups": {
|
||||
@@ -2602,10 +2602,10 @@
|
||||
"tools": {
|
||||
"label": "Инструменты",
|
||||
"docker": {
|
||||
"label": ""
|
||||
"label": "Docker"
|
||||
},
|
||||
"logs": {
|
||||
"label": ""
|
||||
"label": "Логи"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -2617,28 +2617,28 @@
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "",
|
||||
"nothingFound": "",
|
||||
"placeholder": "Найдётся все",
|
||||
"nothingFound": "Ничего не найдено",
|
||||
"error": {
|
||||
"fetch": ""
|
||||
"fetch": "Произошла ошибка при получении данных"
|
||||
},
|
||||
"mode": {
|
||||
"appIntegrationBoard": {
|
||||
"help": "",
|
||||
"help": "Поиск приложений, интеграций или панелей",
|
||||
"group": {
|
||||
"app": {
|
||||
"title": "Приложения",
|
||||
"children": {
|
||||
"action": {
|
||||
"open": {
|
||||
"label": ""
|
||||
"label": "Открыть URL приложения"
|
||||
},
|
||||
"edit": {
|
||||
"label": "Редактирование приложения"
|
||||
"label": "Редактировать приложение"
|
||||
}
|
||||
},
|
||||
"detail": {
|
||||
"title": ""
|
||||
"title": "Выберите действие для приложения"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2647,17 +2647,17 @@
|
||||
"children": {
|
||||
"action": {
|
||||
"open": {
|
||||
"label": ""
|
||||
"label": "Открыть панель"
|
||||
},
|
||||
"homeBoard": {
|
||||
"label": ""
|
||||
"label": "Сделать домашней панелью"
|
||||
},
|
||||
"settings": {
|
||||
"label": ""
|
||||
"label": "Открыть настройки"
|
||||
}
|
||||
},
|
||||
"detail": {
|
||||
"title": ""
|
||||
"title": "Выберите действие для панели"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2667,94 +2667,94 @@
|
||||
}
|
||||
},
|
||||
"command": {
|
||||
"help": "",
|
||||
"help": "Активировать режим команд",
|
||||
"group": {
|
||||
"localCommand": {
|
||||
"title": ""
|
||||
"title": "Локальные команды"
|
||||
},
|
||||
"globalCommand": {
|
||||
"title": "",
|
||||
"title": "Глобальные команды",
|
||||
"option": {
|
||||
"colorScheme": {
|
||||
"light": "",
|
||||
"dark": ""
|
||||
"light": "Переключить на светлую тему",
|
||||
"dark": "Переключить на тёмную тему"
|
||||
},
|
||||
"language": {
|
||||
"label": "",
|
||||
"label": "Изменить язык",
|
||||
"children": {
|
||||
"detail": {
|
||||
"title": ""
|
||||
"title": "Выберите предпочитаемый язык"
|
||||
}
|
||||
}
|
||||
},
|
||||
"newBoard": {
|
||||
"label": ""
|
||||
"label": "Создать новую панель"
|
||||
},
|
||||
"importBoard": {
|
||||
"label": ""
|
||||
"label": "Импортировать панель"
|
||||
},
|
||||
"newApp": {
|
||||
"label": ""
|
||||
"label": "Создать новое приложение"
|
||||
},
|
||||
"newIntegration": {
|
||||
"label": "",
|
||||
"label": "Создать новую интеграцию",
|
||||
"children": {
|
||||
"detail": {
|
||||
"title": ""
|
||||
"title": "Выберите тип интеграции для создания"
|
||||
}
|
||||
}
|
||||
},
|
||||
"newUser": {
|
||||
"label": ""
|
||||
"label": "Создать нового пользователя"
|
||||
},
|
||||
"newInvite": {
|
||||
"label": ""
|
||||
"label": "Создать новое приглашение"
|
||||
},
|
||||
"newGroup": {
|
||||
"label": ""
|
||||
"label": "Создать новую группу"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"external": {
|
||||
"help": "",
|
||||
"help": "Использовать внешнюю поисковую систему",
|
||||
"group": {
|
||||
"searchEngine": {
|
||||
"title": "Поисковые системы",
|
||||
"children": {
|
||||
"action": {
|
||||
"search": {
|
||||
"label": ""
|
||||
"label": "Искать через {name}"
|
||||
}
|
||||
},
|
||||
"detail": {
|
||||
"title": ""
|
||||
"title": "Выберите действие для поисковой системы"
|
||||
},
|
||||
"searchResults": {
|
||||
"title": ""
|
||||
"title": "Выберите результат поиска для действий"
|
||||
}
|
||||
},
|
||||
"option": {
|
||||
"google": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Google",
|
||||
"description": "Поиск в интернете через Google"
|
||||
},
|
||||
"bing": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Bing",
|
||||
"description": "Поиск в интернете через Bing"
|
||||
},
|
||||
"duckduckgo": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "DuckDuckGo",
|
||||
"description": "Поиск в интернете через DuckDuckGo"
|
||||
},
|
||||
"torrent": {
|
||||
"name": "Торренты",
|
||||
"description": ""
|
||||
"description": "Поиск торрентов на torrentdownloads.pro"
|
||||
},
|
||||
"youTube": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "YouTube",
|
||||
"description": "Поиск видео на YouTube"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2763,7 +2763,7 @@
|
||||
"help": {
|
||||
"group": {
|
||||
"mode": {
|
||||
"title": ""
|
||||
"title": "Режимы"
|
||||
},
|
||||
"help": {
|
||||
"title": "Справка",
|
||||
@@ -2772,7 +2772,7 @@
|
||||
"label": "Документация"
|
||||
},
|
||||
"submitIssue": {
|
||||
"label": ""
|
||||
"label": "Сообщить о проблеме"
|
||||
},
|
||||
"discord": {
|
||||
"label": "Сообщество Discord"
|
||||
@@ -2784,57 +2784,57 @@
|
||||
"home": {
|
||||
"group": {
|
||||
"local": {
|
||||
"title": ""
|
||||
"title": "Локальные результаты"
|
||||
}
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"help": "",
|
||||
"help": "Поиск по страницам",
|
||||
"group": {
|
||||
"page": {
|
||||
"title": "",
|
||||
"title": "Страницы",
|
||||
"option": {
|
||||
"manageHome": {
|
||||
"label": ""
|
||||
"label": "Управление главной страницей"
|
||||
},
|
||||
"manageBoard": {
|
||||
"label": ""
|
||||
"label": "Управление панелями"
|
||||
},
|
||||
"manageApp": {
|
||||
"label": ""
|
||||
"label": "Управление приложениями"
|
||||
},
|
||||
"manageIntegration": {
|
||||
"label": ""
|
||||
"label": "Управление интеграциями"
|
||||
},
|
||||
"manageSearchEngine": {
|
||||
"label": ""
|
||||
"label": "Управление поисковыми системами"
|
||||
},
|
||||
"manageMedia": {
|
||||
"label": ""
|
||||
"label": "Управление медиафайлами"
|
||||
},
|
||||
"manageUser": {
|
||||
"label": "Управление пользователями"
|
||||
},
|
||||
"manageInvite": {
|
||||
"label": ""
|
||||
"label": "Управление приглашениями"
|
||||
},
|
||||
"manageGroup": {
|
||||
"label": ""
|
||||
"label": "Управление группами"
|
||||
},
|
||||
"manageDocker": {
|
||||
"label": ""
|
||||
"label": "Управление Docker"
|
||||
},
|
||||
"manageApi": {
|
||||
"label": ""
|
||||
"label": "Swagger API"
|
||||
},
|
||||
"manageLog": {
|
||||
"label": "Просмотр журналов"
|
||||
"label": "Просмотр логов"
|
||||
},
|
||||
"manageTask": {
|
||||
"label": ""
|
||||
"label": "Управление задачами"
|
||||
},
|
||||
"manageSettings": {
|
||||
"label": ""
|
||||
"label": "Глобальные настройки"
|
||||
},
|
||||
"about": {
|
||||
"label": "О программе"
|
||||
@@ -2850,18 +2850,18 @@
|
||||
}
|
||||
},
|
||||
"userGroup": {
|
||||
"help": "",
|
||||
"help": "Поиск пользователей или групп",
|
||||
"group": {
|
||||
"user": {
|
||||
"title": "Пользователи",
|
||||
"children": {
|
||||
"action": {
|
||||
"detail": {
|
||||
"label": ""
|
||||
"label": "Показать сведения о пользователе"
|
||||
}
|
||||
},
|
||||
"detail": {
|
||||
"title": ""
|
||||
"title": "Выберите действие для пользователя"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2870,17 +2870,17 @@
|
||||
"children": {
|
||||
"action": {
|
||||
"detail": {
|
||||
"label": ""
|
||||
"label": "Показать сведения о группе"
|
||||
},
|
||||
"manageMember": {
|
||||
"label": ""
|
||||
"label": "Управление участниками"
|
||||
},
|
||||
"managePermission": {
|
||||
"label": ""
|
||||
"label": "Управление разрешениями"
|
||||
}
|
||||
},
|
||||
"detail": {
|
||||
"title": ""
|
||||
"title": "Выберите действие для группы"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2888,16 +2888,16 @@
|
||||
}
|
||||
},
|
||||
"engine": {
|
||||
"search": "",
|
||||
"search": "Найти поисковую систему",
|
||||
"field": {
|
||||
"name": {
|
||||
"label": "Название"
|
||||
},
|
||||
"short": {
|
||||
"label": ""
|
||||
"label": "Краткое название"
|
||||
},
|
||||
"urlTemplate": {
|
||||
"label": ""
|
||||
"label": "Шаблон URL поиска"
|
||||
},
|
||||
"description": {
|
||||
"label": "Описание"
|
||||
@@ -2907,53 +2907,53 @@
|
||||
"list": {
|
||||
"title": "Поисковые системы",
|
||||
"noResults": {
|
||||
"title": "",
|
||||
"action": ""
|
||||
"title": "Поисковые системы пока отсутствуют",
|
||||
"action": "Создать первую поисковую систему"
|
||||
},
|
||||
"interactive": ""
|
||||
"interactive": "Интерактивная, использует интеграцию"
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"title": "Новая поисковая система",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Поисковая система создана",
|
||||
"message": "Поисковая система успешно создана"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Не удалось создать",
|
||||
"message": "Не удалось создать поисковую систему"
|
||||
}
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"title": "",
|
||||
"title": "Редактирование поисковой системы",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "Изменения сохранены",
|
||||
"message": ""
|
||||
"message": "Поисковая система успешно сохранена"
|
||||
},
|
||||
"error": {
|
||||
"title": "Не удалось сохранить",
|
||||
"message": ""
|
||||
"message": "Не удалось сохранить поисковую систему"
|
||||
}
|
||||
},
|
||||
"configControl": "",
|
||||
"configControl": "Настройка",
|
||||
"searchEngineType": {
|
||||
"generic": "",
|
||||
"fromIntegration": ""
|
||||
"generic": "Обычная",
|
||||
"fromIntegration": "Из интеграции"
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"title": "Удаление поисковой системы",
|
||||
"message": "Вы уверены, что хотите удалить поисковую систему '{name}'?",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Поисковая система удалена",
|
||||
"message": "Поисковая система успешно удалена"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Не удалось удалить",
|
||||
"message": "Не удалось удалить поисковую систему"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
"title": "Zadajte token importu",
|
||||
"field": {
|
||||
"token": {
|
||||
"label": "",
|
||||
"label": "Token",
|
||||
"description": "Zadajte zobrazený token importu z predchádzajúcej inštancie homarr"
|
||||
}
|
||||
},
|
||||
@@ -546,7 +546,7 @@
|
||||
"label": "Popis"
|
||||
},
|
||||
"url": {
|
||||
"label": ""
|
||||
"label": "Url"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -611,7 +611,7 @@
|
||||
"label": "Názov"
|
||||
},
|
||||
"url": {
|
||||
"label": ""
|
||||
"label": "Url"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -766,7 +766,7 @@
|
||||
}
|
||||
},
|
||||
"common": {
|
||||
"beta": "",
|
||||
"beta": "Beta",
|
||||
"error": "Chyba",
|
||||
"action": {
|
||||
"add": "Pridať",
|
||||
@@ -803,8 +803,8 @@
|
||||
}
|
||||
},
|
||||
"information": {
|
||||
"min": "",
|
||||
"max": "",
|
||||
"min": "Min",
|
||||
"max": "Max",
|
||||
"days": "Dni",
|
||||
"hours": "Hodiny",
|
||||
"minutes": "Minúty"
|
||||
@@ -963,10 +963,10 @@
|
||||
"label": "Výška"
|
||||
},
|
||||
"xOffset": {
|
||||
"label": ""
|
||||
"label": "X offset"
|
||||
},
|
||||
"yOffset": {
|
||||
"label": ""
|
||||
"label": "Y offset"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1213,7 +1213,7 @@
|
||||
}
|
||||
},
|
||||
"iframe": {
|
||||
"name": "",
|
||||
"name": "iFrame",
|
||||
"description": "Vložte akýkoľvek obsah z internetu. Niektoré webové stránky môžu obmedziť prístup.",
|
||||
"option": {
|
||||
"embedUrl": {
|
||||
@@ -1515,11 +1515,11 @@
|
||||
"detailsTitle": "Rýchlosť sťahovania"
|
||||
},
|
||||
"index": {
|
||||
"columnTitle": "",
|
||||
"columnTitle": "#",
|
||||
"detailsTitle": "Aktuálny index v rámci klienta"
|
||||
},
|
||||
"id": {
|
||||
"columnTitle": ""
|
||||
"columnTitle": "Id"
|
||||
},
|
||||
"integration": {
|
||||
"columnTitle": "Integrácia"
|
||||
@@ -1619,7 +1619,7 @@
|
||||
"partiallyAvailable": "Čiastočný",
|
||||
"available": "K dispozícii"
|
||||
},
|
||||
"toBeDetermined": ""
|
||||
"toBeDetermined": "TBD"
|
||||
},
|
||||
"mediaRequests-requestStats": {
|
||||
"name": "Štatistiky mediálnych žiadostí",
|
||||
@@ -2042,9 +2042,9 @@
|
||||
"tools": {
|
||||
"label": "Nástroje",
|
||||
"items": {
|
||||
"docker": "",
|
||||
"docker": "Docker",
|
||||
"logs": "Záznamy",
|
||||
"api": "",
|
||||
"api": "API",
|
||||
"tasks": "Úlohy"
|
||||
}
|
||||
},
|
||||
@@ -2199,7 +2199,7 @@
|
||||
},
|
||||
"field": {
|
||||
"id": {
|
||||
"label": ""
|
||||
"label": "ID"
|
||||
},
|
||||
"creator": {
|
||||
"label": "Autor"
|
||||
@@ -2208,7 +2208,7 @@
|
||||
"label": "Dátum vypršania"
|
||||
},
|
||||
"token": {
|
||||
"label": ""
|
||||
"label": "Token"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2370,7 +2370,7 @@
|
||||
}
|
||||
},
|
||||
"api": {
|
||||
"title": "",
|
||||
"title": "API",
|
||||
"modal": {
|
||||
"createApiToken": {
|
||||
"title": "Vytvorený token API",
|
||||
@@ -2390,7 +2390,7 @@
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"id": "",
|
||||
"id": "ID",
|
||||
"createdBy": "Vytvoril/a"
|
||||
}
|
||||
}
|
||||
@@ -2602,7 +2602,7 @@
|
||||
"tools": {
|
||||
"label": "Nástroje",
|
||||
"docker": {
|
||||
"label": ""
|
||||
"label": "Docker"
|
||||
},
|
||||
"logs": {
|
||||
"label": "Záznamy"
|
||||
@@ -2737,15 +2737,15 @@
|
||||
},
|
||||
"option": {
|
||||
"google": {
|
||||
"name": "",
|
||||
"name": "Google",
|
||||
"description": "Hľadajte na webe pomocou Google"
|
||||
},
|
||||
"bing": {
|
||||
"name": "",
|
||||
"name": "Bing",
|
||||
"description": "Vyhľadávajte na webe pomocou Bingu"
|
||||
},
|
||||
"duckduckgo": {
|
||||
"name": "",
|
||||
"name": "DuckDuckGo",
|
||||
"description": "Vyhľadávajte na webe pomocou DuckDuckGo"
|
||||
},
|
||||
"torrent": {
|
||||
@@ -2753,7 +2753,7 @@
|
||||
"description": "Vyhľadajte torrenty na torrentdownloads.pro"
|
||||
},
|
||||
"youTube": {
|
||||
"name": "",
|
||||
"name": "YouTube",
|
||||
"description": "Hľadajte videá na YouTube"
|
||||
}
|
||||
}
|
||||
@@ -2825,7 +2825,7 @@
|
||||
"label": "Spravovať docker"
|
||||
},
|
||||
"manageApi": {
|
||||
"label": ""
|
||||
"label": "Swagger API"
|
||||
},
|
||||
"manageLog": {
|
||||
"label": "Zobraziť denníky"
|
||||
|
||||
@@ -6,59 +6,59 @@
|
||||
"subtitle": "Homarr örneğinizi kurmaya başlayalım.",
|
||||
"description": "Başlamak için lütfen Homarr örneğinizi nasıl kurmak istediğinizi seçin.",
|
||||
"action": {
|
||||
"scratch": "Sıfırdan başlayın",
|
||||
"importOldmarr": "Homarr 1.0'dan önceki yedeğinizi içe aktarın"
|
||||
"scratch": "Sıfırdan Başla",
|
||||
"importOldmarr": "Homarr 1.0'dan Önceki Yedeğinizi İçe Aktarın"
|
||||
}
|
||||
},
|
||||
"import": {
|
||||
"title": "Verileri içe aktar",
|
||||
"subtitle": "Mevcut bir Homarr örneğinden alınan verileri içe aktarabilirsiniz.",
|
||||
"title": "Verileri İçe Aktar",
|
||||
"subtitle": "Mevcut Homarr Örneğinden Alınan Verileri İçe Aktarabilirsiniz.",
|
||||
"dropzone": {
|
||||
"title": "Zip dosyasını buraya sürükleyin veya göz atmak için tıklayın",
|
||||
"description": "Seçtiğiniz zip işlenecek ve içe aktarmak istediğiniz verileri seçebileceksiniz"
|
||||
},
|
||||
"fileInfo": {
|
||||
"action": {
|
||||
"change": "Dosyayı değiştir"
|
||||
"change": "Dosyayı Değiştir"
|
||||
}
|
||||
},
|
||||
"importSettings": {
|
||||
"title": "İçe aktarma ayarları",
|
||||
"description": "İçe aktarma işlevlerini yapılandırın"
|
||||
"title": "İçe Aktarma Ayarları",
|
||||
"description": "İçe Aktarma İşlevlerini Yapılandırın"
|
||||
},
|
||||
"boardSelection": {
|
||||
"title": "{count} panel bulundu",
|
||||
"description": "İçe aktarılacak tüm panellerin boyutlarını seçin",
|
||||
"title": "{count} Panel Bulundu",
|
||||
"description": "İçe Aktarılacak Tüm Panellerin Boyutlarını Seçin",
|
||||
"action": {
|
||||
"selectAll": "Tümünü seç",
|
||||
"unselectAll": "Tüm seçimi kaldır"
|
||||
"selectAll": "Tümünü Seç",
|
||||
"unselectAll": "Tüm Seçimi Kaldır"
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"title": "İçe aktarma özeti",
|
||||
"description": "Aşağıdaki özeti kontrol ederek içe aktarılacak işlevleri görebilirsiniz",
|
||||
"title": "İçe Aktarma Özeti",
|
||||
"description": "Aşağıdaki Özeti Kontrol Ederek İçe Aktarılacak İşlevleri Görebilirsiniz",
|
||||
"action": {
|
||||
"import": "İçe aktarmayı onayla ve devam et"
|
||||
"import": "İçe Aktarmayı Onayla ve Devam Et"
|
||||
},
|
||||
"entities": {
|
||||
"apps": "Uygulamalar",
|
||||
"boards": "Paneller",
|
||||
"integrations": "Entegrasyonlar",
|
||||
"credentialUsers": "Kullanıcı kimlik Bilgileri"
|
||||
"credentialUsers": "Kullanıcı Kimlik Bilgileri"
|
||||
}
|
||||
},
|
||||
"tokenModal": {
|
||||
"title": "İçe aktarma token'ını girin",
|
||||
"title": "İçe Aktarma Token'ını Girin",
|
||||
"field": {
|
||||
"token": {
|
||||
"label": "Erişim Anahtarı",
|
||||
"description": "Önceki homarr örneğinizden aldığınız içe aktarma Token'ını girin"
|
||||
"description": "Önceki Homarr Örneğinizden Aldığınız İçe Aktarma Token'ını girin"
|
||||
}
|
||||
},
|
||||
"notification": {
|
||||
"error": {
|
||||
"title": "Geçersiz token",
|
||||
"message": "Girdiğiniz token geçersiz"
|
||||
"title": "Geçersiz Token",
|
||||
"message": "Girdiğiniz Token Geçersiz"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -92,24 +92,24 @@
|
||||
},
|
||||
"finish": {
|
||||
"title": "Kurulumu Bitir",
|
||||
"subtitle": "Başlamaya hazırsınız!",
|
||||
"subtitle": "Başlamaya Hazırsınız!",
|
||||
"description": "Kurulum sürecini başarıyla tamamladınız. Artık Homarr'ı kullanmaya başlayabilirsiniz. Sonraki eyleminizi seçin:",
|
||||
"action": {
|
||||
"goToBoard": "{name} paneline git",
|
||||
"createBoard": "İlk panelinizi oluşturun",
|
||||
"inviteUser": "Yeni kullanıcı davet et",
|
||||
"docs": "Dökümanları okuyun"
|
||||
"goToBoard": "{name} Paneline Git",
|
||||
"createBoard": "İlk Panelinizi Oluşturun",
|
||||
"inviteUser": "Yeni Kullanıcı Davet Et",
|
||||
"docs": "Dökümanları Oku"
|
||||
}
|
||||
}
|
||||
},
|
||||
"backToStart": "Başlangıca geri dön"
|
||||
"backToStart": "Başlangıca Geri Dön"
|
||||
},
|
||||
"user": {
|
||||
"title": "Kullanıcılar",
|
||||
"name": "Kullanıcı",
|
||||
"page": {
|
||||
"login": {
|
||||
"title": "Hesabınıza giriş yapın",
|
||||
"title": "Hesabınıza Giriş Yapın",
|
||||
"subtitle": "Tekrar hoş geldiniz! Lütfen kimlik bilgilerinizi girin"
|
||||
},
|
||||
"invite": {
|
||||
@@ -118,7 +118,7 @@
|
||||
"description": "{username} tarafından davet edildiniz"
|
||||
},
|
||||
"init": {
|
||||
"title": "Yeni Homarr kurulumu",
|
||||
"title": "Yeni Homarr Kurulumu",
|
||||
"subtitle": "Lütfen yönetici kullanıcısını oluşturun"
|
||||
}
|
||||
},
|
||||
@@ -141,20 +141,20 @@
|
||||
}
|
||||
},
|
||||
"passwordConfirm": {
|
||||
"label": "Şifreyi onayla"
|
||||
"label": "Şifreyi Onayla"
|
||||
},
|
||||
"previousPassword": {
|
||||
"label": "Eski Şifre"
|
||||
},
|
||||
"homeBoard": {
|
||||
"label": "Varsayılan panel"
|
||||
"label": "Varsayılan Panel"
|
||||
},
|
||||
"pingIconsEnabled": {
|
||||
"label": "Pingler için simgeler kullanın"
|
||||
"label": "Pingler İçin Simgeler Kullanın"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"usernameTaken": "Kullanıcı adı önceden alındı"
|
||||
"usernameTaken": "Kullanıcı Adı Önceden Alındı"
|
||||
},
|
||||
"action": {
|
||||
"login": {
|
||||
@@ -391,7 +391,7 @@
|
||||
}
|
||||
},
|
||||
"search-engine": {
|
||||
"title": "Arama motorları",
|
||||
"title": "Arama Motorları",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "Arama motorları oluşturun",
|
||||
@@ -546,7 +546,7 @@
|
||||
"label": "Tanım"
|
||||
},
|
||||
"url": {
|
||||
"label": ""
|
||||
"label": "Url"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -611,7 +611,7 @@
|
||||
"label": "İsim"
|
||||
},
|
||||
"url": {
|
||||
"label": ""
|
||||
"label": "Url"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
@@ -766,7 +766,7 @@
|
||||
}
|
||||
},
|
||||
"common": {
|
||||
"beta": "",
|
||||
"beta": "Test",
|
||||
"error": "Hata",
|
||||
"action": {
|
||||
"add": "Ekle",
|
||||
@@ -791,7 +791,7 @@
|
||||
"tryAgain": "Tekrar Deneyin",
|
||||
"loading": "Yükleniyor"
|
||||
},
|
||||
"here": "burada",
|
||||
"here": "buraya",
|
||||
"iconPicker": {
|
||||
"label": "Simge URL'si",
|
||||
"header": "Simgeleri filtrelemek için isim veya nesne yazın... Homarr sizin için {countIcons} simge arasında arama yapacaktır."
|
||||
@@ -803,8 +803,8 @@
|
||||
}
|
||||
},
|
||||
"information": {
|
||||
"min": "Asgari",
|
||||
"max": "Azami",
|
||||
"min": "En Düşük",
|
||||
"max": "En Yüksek",
|
||||
"days": "Gün",
|
||||
"hours": "Saat",
|
||||
"minutes": "Dakika"
|
||||
@@ -856,8 +856,8 @@
|
||||
"dangerZone": "Tehlikeli bölge",
|
||||
"noResults": "Sonuç bulunamadı",
|
||||
"preview": {
|
||||
"show": "Önizlemeyi göster",
|
||||
"hide": "Önizlemeyi Gizle"
|
||||
"show": "Ara Renkleri Göster",
|
||||
"hide": "Ara Renkleri Gizle"
|
||||
},
|
||||
"zod": {
|
||||
"errors": {
|
||||
@@ -866,16 +866,16 @@
|
||||
"string": {
|
||||
"startsWith": "Bu alan {startsWith} ile başlamalıdır",
|
||||
"endsWith": "Bu alan {endsWith} ile bitmelidir",
|
||||
"includes": "Bu alan {includes} adresini içermelidir",
|
||||
"includes": "Bu alan {includes} içermelidir",
|
||||
"invalidEmail": "Bu alanda geçerli bir e-posta olmalıdır"
|
||||
},
|
||||
"tooSmall": {
|
||||
"string": "Bu alan en az {minimum} karakter uzunluğunda olmalıdır",
|
||||
"number": "Bu alan {minimum} adresinden uzun veya eşit olmalıdır"
|
||||
"number": "Bu alan {minimum} değerinden uzun veya eşit olmalıdır"
|
||||
},
|
||||
"tooBig": {
|
||||
"string": "Bu alan en fazla {maximum} karakter uzunluğunda olmalıdır",
|
||||
"number": "Bu alan {maximum} adresinden kısa veya eşit olmalıdır"
|
||||
"number": "Bu alan {maximum} değerinden kısa veya eşit olmalıdır"
|
||||
},
|
||||
"custom": {
|
||||
"passwordsDoNotMatch": "Parolalar uyuşmuyor",
|
||||
@@ -1110,7 +1110,7 @@
|
||||
"set": "Ayarla",
|
||||
"enabled": "Etkin",
|
||||
"disabled": "Pasif",
|
||||
"processing": "İşleniyor",
|
||||
"processing": "İşlemde",
|
||||
"disconnected": "Bağlantısı kesildi",
|
||||
"hours": "Saat",
|
||||
"minutes": "Dakika",
|
||||
@@ -1185,7 +1185,7 @@
|
||||
"decreaseIndent": "Girintiyi Azalt",
|
||||
"link": "Bağlantı",
|
||||
"unlink": "Bağlantıyı kaldır",
|
||||
"image": "Resim Göm",
|
||||
"image": "Görsel Göm",
|
||||
"addTable": "Tablo ekle",
|
||||
"deleteTable": "Tablo Sil",
|
||||
"colorCell": "Renk Hücresi",
|
||||
@@ -1213,7 +1213,7 @@
|
||||
}
|
||||
},
|
||||
"iframe": {
|
||||
"name": "",
|
||||
"name": "iFrame",
|
||||
"description": "İnternetten herhangi bir içeriği yerleştirin. Bazı web siteleri erişimi kısıtlayabilir.",
|
||||
"option": {
|
||||
"embedUrl": {
|
||||
@@ -1295,10 +1295,10 @@
|
||||
}
|
||||
},
|
||||
"filterPastMonths": {
|
||||
"label": "Başla"
|
||||
"label": "Başlangıç"
|
||||
},
|
||||
"filterFutureMonths": {
|
||||
"label": "Bitir"
|
||||
"label": "Bitiş"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1419,11 +1419,11 @@
|
||||
},
|
||||
"integration": {
|
||||
"noData": "Hiçbir entegrasyon bulunamadı",
|
||||
"description": "Yeni bir entegrasyon oluşturmak için <here></here> öğesine tıklayın"
|
||||
"description": "Yeni bir entegrasyon oluşturmak için <here></here> tıklayın"
|
||||
},
|
||||
"app": {
|
||||
"noData": "Uygulama bulunamadı",
|
||||
"description": "Yeni bir uygulama oluşturmak için <here></here> öğesine tıklayın"
|
||||
"description": "Yeni bir uygulama oluşturmak için <here></here> tıklayın"
|
||||
},
|
||||
"error": {
|
||||
"noIntegration": "Hiçbir entegrasyon seçilmedi",
|
||||
@@ -1503,7 +1503,7 @@
|
||||
"columnTitle": "Kontroller"
|
||||
},
|
||||
"added": {
|
||||
"columnTitle": "Eklendi",
|
||||
"columnTitle": "Ekleme",
|
||||
"detailsTitle": "Ekleme Tarihi"
|
||||
},
|
||||
"category": {
|
||||
@@ -1515,7 +1515,7 @@
|
||||
"detailsTitle": "İndirme Hızı"
|
||||
},
|
||||
"index": {
|
||||
"columnTitle": "",
|
||||
"columnTitle": "#",
|
||||
"detailsTitle": "İstemci içindeki mevcut endeks"
|
||||
},
|
||||
"id": {
|
||||
@@ -1532,7 +1532,7 @@
|
||||
"detailsTitle": "İndirme İlerlemesi"
|
||||
},
|
||||
"ratio": {
|
||||
"columnTitle": "",
|
||||
"columnTitle": "Oran",
|
||||
"detailsTitle": "Torrent oranı (alınan/gönderilen)"
|
||||
},
|
||||
"received": {
|
||||
@@ -1570,7 +1570,7 @@
|
||||
"paused": "Duraklatıldı",
|
||||
"completed": "Tamamlanan",
|
||||
"failed": "Başarısız",
|
||||
"processing": "İşleniyor",
|
||||
"processing": "İşlemde",
|
||||
"leeching": "Leechleme",
|
||||
"stalled": "Durduruldu",
|
||||
"unknown": "Bilinmeyen",
|
||||
@@ -1593,7 +1593,7 @@
|
||||
"title": "Öğeyi Sil",
|
||||
"modalTitle": "Bu işi silmek istediğinizden emin misiniz?",
|
||||
"entry": "Girdiyi sil",
|
||||
"entryAndFiles": "Girişi ve dosyayı sil"
|
||||
"entryAndFiles": "Girdiyi ve dosyaları sil"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1615,7 +1615,7 @@
|
||||
"availability": {
|
||||
"unknown": "Bilinmeyen",
|
||||
"pending": "Bekleyen",
|
||||
"processing": "İşleniyor",
|
||||
"processing": "İşlemde",
|
||||
"partiallyAvailable": "Kısmi",
|
||||
"available": "Mevcut"
|
||||
},
|
||||
@@ -1631,8 +1631,8 @@
|
||||
"approved": "Onaylanan",
|
||||
"pending": "Onay bekleyen",
|
||||
"processing": "İşleniyor",
|
||||
"declined": "Zaten reddedildi",
|
||||
"available": "Zaten Mevcut",
|
||||
"declined": "Reddedilen",
|
||||
"available": "Mevcut",
|
||||
"tv": "Dizi talepleri",
|
||||
"movie": "Film talepleri",
|
||||
"total": "Toplam"
|
||||
@@ -1713,10 +1713,10 @@
|
||||
"label": "RTL'yi etkinleştir"
|
||||
},
|
||||
"textLinesClamp": {
|
||||
"label": "Açıklamalar satır sınırı"
|
||||
"label": "Açıklamalarda satır sınırı"
|
||||
},
|
||||
"maximumAmountPosts": {
|
||||
"label": "Gönderi değer sınırı"
|
||||
"label": "Gönderi sayısı sınırı"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1813,7 +1813,7 @@
|
||||
"label": "Meta başlığı"
|
||||
},
|
||||
"logoImageUrl": {
|
||||
"label": "Logo görseli URL'si"
|
||||
"label": "Logo görsel URL'si"
|
||||
},
|
||||
"faviconImageUrl": {
|
||||
"label": "Favicon görsel URL'si"
|
||||
@@ -1822,10 +1822,10 @@
|
||||
"label": "Arkaplan görsel URL'si"
|
||||
},
|
||||
"backgroundImageAttachment": {
|
||||
"label": "Arkaplan resim ekle",
|
||||
"label": "Arkaplan görsel yerleştirme",
|
||||
"option": {
|
||||
"fixed": {
|
||||
"label": "Düzeltildi",
|
||||
"label": "Sabit",
|
||||
"description": "Arka plan aynı pozisyonda kalır."
|
||||
},
|
||||
"scroll": {
|
||||
@@ -1839,11 +1839,11 @@
|
||||
"option": {
|
||||
"repeat": {
|
||||
"label": "Tekrarla",
|
||||
"description": "Resim, tüm arka plan alanını kaplayacak kadar tekrarlanır."
|
||||
"description": "Görsel, tüm arka plan alanını kaplayacak kadar tekrarlanır."
|
||||
},
|
||||
"no-repeat": {
|
||||
"label": "Tekrarlama yok",
|
||||
"description": "Resim tekrarlanmaz ve tüm alanı doldurmayabilir."
|
||||
"description": "Görsel tekrarlanmaz ve tüm alanı doldurmayabilir."
|
||||
},
|
||||
"repeat-x": {
|
||||
"label": "Y tekrarla",
|
||||
@@ -1856,7 +1856,7 @@
|
||||
}
|
||||
},
|
||||
"backgroundImageSize": {
|
||||
"label": "Arkaplan resim boyutu",
|
||||
"label": "Arkaplan görsel boyutu",
|
||||
"option": {
|
||||
"cover": {
|
||||
"label": "Kapak",
|
||||
@@ -1879,7 +1879,7 @@
|
||||
},
|
||||
"customCss": {
|
||||
"label": "Bu panel için özel css",
|
||||
"description": "Ayrıca, yalnızca deneyimli kullanıcılar için önerilen CSS kullanarak kontrol panelinizi özelleştirin",
|
||||
"description": "Kontrol panelinizi yalnızca deneyimli kullanıcılar için önerilen CSS kullanarak özelleştirin",
|
||||
"customClassesAlert": {
|
||||
"title": "Özel sınıflar",
|
||||
"description": "Her öğenin gelişmiş seçeneklerinde panel örneklerinize özel sınıflar ekleyebilir ve bunları yukarıdaki özel CSS'de kullanabilirsiniz."
|
||||
@@ -2001,13 +2001,13 @@
|
||||
},
|
||||
"user": {
|
||||
"description": "Henüz bir ev paneli belirlemediniz.",
|
||||
"link": "Varsayılan paneli yapılandır",
|
||||
"notice": "Bu sayfanın kaybolmasını sağlamak için tercihlerden varsayılan panel seçin"
|
||||
"link": "Varsayılan Paneli Yapılandır",
|
||||
"notice": "Bu Sayfanın Kaybolmasını Sağlamak İçin Tercihlerden Varsayılan Panel Atayın"
|
||||
},
|
||||
"anonymous": {
|
||||
"description": "Sunucu yöneticiniz henüz bir varsayılan panel belirlemedi.",
|
||||
"description": "Sunucu Yöneticiniz Henüz Bir Varsayılan Panel Atamadı.",
|
||||
"link": "Herkese açık panelleri görüntüle",
|
||||
"notice": "Bu sayfanın kaybolmasını sağlamak için sunucu yöneticisinden varsayılan panel ayarlamasını isteyin"
|
||||
"notice": "Bu Sayfanın Kaybolmasını Sağlamak İçin Sunucu Yöneticisinden Varsayılan Panel Atamasını isteyin"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2025,11 +2025,11 @@
|
||||
},
|
||||
"navbar": {
|
||||
"items": {
|
||||
"home": "Ana sayfa",
|
||||
"home": "Ana Sayfa",
|
||||
"boards": "Paneller",
|
||||
"apps": "Uygulamalar",
|
||||
"integrations": "Entegrasyonlar",
|
||||
"searchEngies": "Arama motorları",
|
||||
"searchEngies": "Arama Motorları",
|
||||
"medias": "Medyalar",
|
||||
"users": {
|
||||
"label": "Kullanıcılar",
|
||||
@@ -2042,9 +2042,9 @@
|
||||
"tools": {
|
||||
"label": "Araçlar",
|
||||
"items": {
|
||||
"docker": "",
|
||||
"docker": "Docker",
|
||||
"logs": "Günlükler",
|
||||
"api": "",
|
||||
"api": "API",
|
||||
"tasks": "Görevler"
|
||||
}
|
||||
},
|
||||
@@ -2091,9 +2091,9 @@
|
||||
"label": "Ayarlar"
|
||||
},
|
||||
"setHomeBoard": {
|
||||
"label": "Varsayılan panel olarak ayarlayın",
|
||||
"label": "Varsayılan Panel Olarak Ata",
|
||||
"badge": {
|
||||
"label": "Ana sayfa",
|
||||
"label": "Ana Sayfa",
|
||||
"tooltip": "Bu panel sizin varsayılan paneliniz olarak görüntülenecektir"
|
||||
}
|
||||
},
|
||||
@@ -2120,7 +2120,7 @@
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"includeFromAllUsers": "Tüm kullanıcıların medyasına dahil edin"
|
||||
"includeFromAllUsers": "Tüm kullanıcıların medyalarını dahil et"
|
||||
},
|
||||
"user": {
|
||||
"back": "Kullanıcılara geri dön",
|
||||
@@ -2130,7 +2130,7 @@
|
||||
"title": "Genel",
|
||||
"item": {
|
||||
"language": "Dil & Bölge",
|
||||
"board": "Varsayılan panel",
|
||||
"board": "Varsayılan Panel",
|
||||
"firstDayOfWeek": "Haftanın ilk günü",
|
||||
"accessibility": "Erişilebilirlik"
|
||||
}
|
||||
@@ -2180,7 +2180,7 @@
|
||||
}
|
||||
},
|
||||
"invite": {
|
||||
"title": "Kullanıcı davetlerini yönet",
|
||||
"title": "Kullanıcı Davetlerini Yönet",
|
||||
"action": {
|
||||
"new": {
|
||||
"title": "Yeni davet",
|
||||
@@ -2288,7 +2288,7 @@
|
||||
"board": {
|
||||
"title": "Paneller",
|
||||
"homeBoard": {
|
||||
"label": "Küresel ana sayfa paneli",
|
||||
"label": "Genel Varsayılan Panel",
|
||||
"description": "Seçim için yalnızca herkese açık paneller kullanılabilir"
|
||||
}
|
||||
},
|
||||
@@ -2370,7 +2370,7 @@
|
||||
}
|
||||
},
|
||||
"api": {
|
||||
"title": "",
|
||||
"title": "API",
|
||||
"modal": {
|
||||
"createApiToken": {
|
||||
"title": "API token'ı oluşturuldu",
|
||||
@@ -2602,7 +2602,7 @@
|
||||
"tools": {
|
||||
"label": "Araçlar",
|
||||
"docker": {
|
||||
"label": ""
|
||||
"label": "Docker"
|
||||
},
|
||||
"logs": {
|
||||
"label": "Günlükler"
|
||||
@@ -2617,7 +2617,7 @@
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "Aramak için yaz",
|
||||
"placeholder": "Ara",
|
||||
"nothingFound": "Hiçbir şey bulunamadı",
|
||||
"error": {
|
||||
"fetch": "Veriler alınırken bir hata oluştu"
|
||||
@@ -2650,7 +2650,7 @@
|
||||
"label": "Panel'i aç"
|
||||
},
|
||||
"homeBoard": {
|
||||
"label": "Varsayılan panel olarak ayarla"
|
||||
"label": "Varsayılan Panel Olarak Ata"
|
||||
},
|
||||
"settings": {
|
||||
"label": "Ayarları aç"
|
||||
@@ -2737,15 +2737,15 @@
|
||||
},
|
||||
"option": {
|
||||
"google": {
|
||||
"name": "",
|
||||
"name": "Google",
|
||||
"description": "Google ile web'de arama yapın"
|
||||
},
|
||||
"bing": {
|
||||
"name": "",
|
||||
"name": "Bing",
|
||||
"description": "Bing ile web'de arama yapın"
|
||||
},
|
||||
"duckduckgo": {
|
||||
"name": "",
|
||||
"name": "DuckDuckGo",
|
||||
"description": "DuckDuckGo ile web'de arama yapın"
|
||||
},
|
||||
"torrent": {
|
||||
@@ -2753,7 +2753,7 @@
|
||||
"description": "Torrentdownloads.pro'da torrentleri arayın"
|
||||
},
|
||||
"youTube": {
|
||||
"name": "",
|
||||
"name": "YouTube",
|
||||
"description": "YouTube'da video arayın"
|
||||
}
|
||||
}
|
||||
@@ -2795,7 +2795,7 @@
|
||||
"title": "Sayfalar",
|
||||
"option": {
|
||||
"manageHome": {
|
||||
"label": "Ana sayfayı yönet"
|
||||
"label": "Ana Sayfayı Yönet"
|
||||
},
|
||||
"manageBoard": {
|
||||
"label": "Panelleri yönet"
|
||||
@@ -2825,7 +2825,7 @@
|
||||
"label": "Docker'ı yönet"
|
||||
},
|
||||
"manageApi": {
|
||||
"label": ""
|
||||
"label": "Swagger API'si"
|
||||
},
|
||||
"manageLog": {
|
||||
"label": "Günlükleri görüntüle"
|
||||
@@ -2840,7 +2840,7 @@
|
||||
"label": "Hakkında"
|
||||
},
|
||||
"homeBoard": {
|
||||
"label": "Varsayılan panel"
|
||||
"label": "Varsayılan Panel"
|
||||
},
|
||||
"preferences": {
|
||||
"label": "Tercihleriniz"
|
||||
@@ -2894,7 +2894,7 @@
|
||||
"label": "İsim"
|
||||
},
|
||||
"short": {
|
||||
"label": "Kısa"
|
||||
"label": "Kısa Ad"
|
||||
},
|
||||
"urlTemplate": {
|
||||
"label": "URL arama şablonu"
|
||||
@@ -2905,7 +2905,7 @@
|
||||
},
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "Arama motorları",
|
||||
"title": "Arama Motorları",
|
||||
"noResults": {
|
||||
"title": "Henüz bir arama motoru yok",
|
||||
"action": "İlk arama motorunuzu oluşturun"
|
||||
|
||||
@@ -29,9 +29,9 @@
|
||||
"@homarr/log": "workspace:^0.1.0",
|
||||
"@homarr/translation": "workspace:^0.1.0",
|
||||
"@homarr/validation": "workspace:^0.1.0",
|
||||
"@mantine/core": "^7.15.1",
|
||||
"@mantine/dates": "^7.15.1",
|
||||
"@mantine/hooks": "^7.15.1",
|
||||
"@mantine/core": "^7.15.2",
|
||||
"@mantine/dates": "^7.15.2",
|
||||
"@mantine/hooks": "^7.15.2",
|
||||
"@tabler/icons-react": "^3.26.0",
|
||||
"mantine-react-table": "2.0.0-beta.7",
|
||||
"next": "^14.2.21",
|
||||
|
||||
@@ -41,8 +41,8 @@
|
||||
"@homarr/translation": "workspace:^0.1.0",
|
||||
"@homarr/ui": "workspace:^0.1.0",
|
||||
"@homarr/validation": "workspace:^0.1.0",
|
||||
"@mantine/core": "^7.15.1",
|
||||
"@mantine/hooks": "^7.15.1",
|
||||
"@mantine/core": "^7.15.2",
|
||||
"@mantine/hooks": "^7.15.2",
|
||||
"@tabler/icons-react": "^3.26.0",
|
||||
"@tiptap/extension-color": "2.10.4",
|
||||
"@tiptap/extension-highlight": "2.10.4",
|
||||
|
||||
@@ -7,7 +7,6 @@ import { IconLoader } from "@tabler/icons-react";
|
||||
import combineClasses from "clsx";
|
||||
|
||||
import { clientApi } from "@homarr/api/client";
|
||||
import { parseAppHrefWithVariablesClient } from "@homarr/common/client";
|
||||
import { useRegisterSpotlightContextResults } from "@homarr/spotlight";
|
||||
import { useI18n } from "@homarr/translation/client";
|
||||
|
||||
@@ -31,26 +30,30 @@ export default function AppWidget({ options, isEditMode }: WidgetComponentProps<
|
||||
);
|
||||
useRegisterSpotlightContextResults(
|
||||
`app-${app.id}`,
|
||||
[
|
||||
{
|
||||
id: app.id,
|
||||
name: app.name,
|
||||
icon: app.iconUrl,
|
||||
interaction() {
|
||||
return {
|
||||
type: "link",
|
||||
href: parseAppHrefWithVariablesClient(app.href ?? ""),
|
||||
newTab: options.openInNewTab,
|
||||
};
|
||||
},
|
||||
},
|
||||
],
|
||||
app.href
|
||||
? [
|
||||
{
|
||||
id: app.id,
|
||||
name: app.name,
|
||||
icon: app.iconUrl,
|
||||
interaction() {
|
||||
return {
|
||||
type: "link",
|
||||
// We checked above that app.href is defined
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
href: app.href!,
|
||||
newTab: options.openInNewTab,
|
||||
};
|
||||
},
|
||||
},
|
||||
]
|
||||
: [],
|
||||
[app, options.openInNewTab],
|
||||
);
|
||||
|
||||
return (
|
||||
<AppLink
|
||||
href={parseAppHrefWithVariablesClient(app.href ?? "")}
|
||||
href={app.href ?? undefined}
|
||||
openInNewTab={options.openInNewTab}
|
||||
enabled={Boolean(app.href) && !isEditMode}
|
||||
>
|
||||
@@ -88,7 +91,7 @@ export default function AppWidget({ options, isEditMode }: WidgetComponentProps<
|
||||
}
|
||||
|
||||
interface AppLinkProps {
|
||||
href: string;
|
||||
href: string | undefined;
|
||||
openInNewTab: boolean;
|
||||
enabled: boolean;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ import { IconCheck, IconX } from "@tabler/icons-react";
|
||||
|
||||
import type { RouterOutputs } from "@homarr/api";
|
||||
import { clientApi } from "@homarr/api/client";
|
||||
import { parseAppHrefWithVariablesClient } from "@homarr/common/client";
|
||||
|
||||
import { PingDot } from "./ping-dot";
|
||||
|
||||
@@ -14,7 +13,7 @@ interface PingIndicatorProps {
|
||||
export const PingIndicator = ({ href }: PingIndicatorProps) => {
|
||||
const [ping] = clientApi.widget.app.ping.useSuspenseQuery(
|
||||
{
|
||||
url: parseAppHrefWithVariablesClient(href),
|
||||
url: href,
|
||||
},
|
||||
{
|
||||
refetchOnMount: false,
|
||||
@@ -25,7 +24,7 @@ export const PingIndicator = ({ href }: PingIndicatorProps) => {
|
||||
const [pingResult, setPingResult] = useState<RouterOutputs["widget"]["app"]["ping"]>(ping);
|
||||
|
||||
clientApi.widget.app.updatedPing.useSubscription(
|
||||
{ url: parseAppHrefWithVariablesClient(href) },
|
||||
{ url: href },
|
||||
{
|
||||
onData(data) {
|
||||
setPingResult(data);
|
||||
|
||||
@@ -4,7 +4,6 @@ import { Anchor, Box, Card, Divider, Flex, Group, Stack, Text, Title, UnstyledBu
|
||||
|
||||
import type { RouterOutputs } from "@homarr/api";
|
||||
import { clientApi } from "@homarr/api/client";
|
||||
import { parseAppHrefWithVariablesClient } from "@homarr/common/client";
|
||||
import { useRegisterSpotlightContextResults } from "@homarr/spotlight";
|
||||
|
||||
import type { WidgetComponentProps } from "../definition";
|
||||
@@ -19,18 +18,22 @@ export default function BookmarksWidget({ options, width, height, itemId }: Widg
|
||||
|
||||
useRegisterSpotlightContextResults(
|
||||
`bookmark-${itemId}`,
|
||||
data.map((app) => ({
|
||||
id: app.id,
|
||||
name: app.name,
|
||||
icon: app.iconUrl,
|
||||
interaction() {
|
||||
return {
|
||||
type: "link",
|
||||
href: parseAppHrefWithVariablesClient(app.href ?? ""),
|
||||
newTab: false,
|
||||
};
|
||||
},
|
||||
})),
|
||||
data
|
||||
.filter((app) => app.href !== null)
|
||||
.map((app) => ({
|
||||
id: app.id,
|
||||
name: app.name,
|
||||
icon: app.iconUrl,
|
||||
interaction() {
|
||||
return {
|
||||
type: "link",
|
||||
// We checked above that app.href is defined
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
href: app.href!,
|
||||
newTab: false,
|
||||
};
|
||||
},
|
||||
})),
|
||||
[data],
|
||||
);
|
||||
|
||||
|
||||
1261
pnpm-lock.yaml
generated
1261
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -22,9 +22,9 @@
|
||||
"eslint-config-turbo": "^2.3.3",
|
||||
"eslint-plugin-import": "^2.31.0",
|
||||
"eslint-plugin-jsx-a11y": "^6.10.2",
|
||||
"eslint-plugin-react": "^7.37.2",
|
||||
"eslint-plugin-react": "^7.37.3",
|
||||
"eslint-plugin-react-hooks": "^5.1.0",
|
||||
"typescript-eslint": "^8.18.1"
|
||||
"typescript-eslint": "^8.18.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
|
||||
Reference in New Issue
Block a user