chore(release): automatic release v1.0.0

This commit is contained in:
homarr-releases[bot]
2024-12-24 13:33:47 +00:00
committed by GitHub
53 changed files with 2684 additions and 1929 deletions

View File

@@ -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

View File

@@ -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
View 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
View 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

View File

@@ -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

View File

@@ -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",

View File

@@ -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>

View File

@@ -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}>

View File

@@ -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]);

View File

@@ -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;
}

View File

@@ -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",

View File

@@ -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">

View File

@@ -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;
}
}
}

View File

@@ -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",

View File

@@ -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

View File

@@ -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)));
}),
});

View File

@@ -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) {

View File

@@ -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}`;

View File

@@ -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",

View File

@@ -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;
};

View File

@@ -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);
};

View File

@@ -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()));
};

View File

@@ -1,2 +1 @@
export * from "./app-url/client";
export * from "./revalidate-path-action";

View File

@@ -1,3 +1,2 @@
export * from "./app-url/server";
export * from "./security";
export * from "./encryption";

View File

@@ -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(",")) {

View File

@@ -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",

View File

@@ -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",

View File

@@ -5,7 +5,8 @@
"license": "MIT",
"type": "module",
"exports": {
".": "./index.ts"
".": "./index.ts",
"./local": "./src/local.ts"
},
"typesVersions": {
"*": {

View File

@@ -0,0 +1 @@
export { createLocalImageUrl, mapMediaToIcon, LOCAL_ICON_REPOSITORY_SLUG } from "./repositories/local.icon-repository";

View File

@@ -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,
});

View File

@@ -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",

View File

@@ -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",

View File

@@ -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": {

View File

@@ -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": {

View File

@@ -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",

View File

@@ -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"

View File

@@ -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": {

View File

@@ -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": {

View File

@@ -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": ""
}
},

View File

@@ -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 limage",
"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": {

View File

@@ -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

View File

@@ -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": "Не удалось удалить поисковую систему"
}
}
}

View File

@@ -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"

View File

@@ -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 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"

View File

@@ -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",

View File

@@ -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",

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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",