Merge branch 'dev' of https://github.com/ajnart/homarr into common-troubleshoot-and-auto-handling

This commit is contained in:
Tagaishi
2023-10-30 18:55:05 +01:00
794 changed files with 17767 additions and 3519 deletions

View File

@@ -1,23 +1,14 @@
# Since the ".env" file is gitignored, you can use the ".env.example" file to
# build a new ".env" file when you clone the repo. Keep this file up-to-date
# when you add new variables to `.env`.
# This file will be committed to version control, so make sure not to have any
# secrets in it. If you are cloning this repo, create a copy of this file named
# ".env" and populate it with your secrets.
# When adding additional environment variables, the schema in "/src/env.js"
# should be updated accordingly.
# Prisma
# https://www.prisma.io/docs/reference/database-reference/connection-urls#env
DATABASE_URL="file:../database/db.sqlite"
DATABASE_URL="file:./database/db.sqlite"
# Next Auth
# You can generate a new secret on the command line with:
# openssl rand -base64 32
# https://next-auth.js.org/configuration/options#secret
# NEXTAUTH_SECRET=""
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET=""
NEXTAUTH_SECRET="anything"
# Disable analytics
NEXT_PUBLIC_DISABLE_ANALYTICS="true"
DEFAULT_COLOR_SCHEME="light"

View File

@@ -41,6 +41,7 @@ jobs:
permissions:
packages: write
contents: read
pull-requests: write
steps:
- name: Setup
@@ -74,7 +75,11 @@ jobs:
- run: yarn turbo build
- run: yarn test:run
- run: yarn test:coverage
- name: Report coverage
if: always()
uses: davelosert/vitest-coverage-report-action@v2
- name: Docker meta
if: github.event_name != 'pull_request'

3
.gitignore vendored
View File

@@ -58,8 +58,9 @@ public/locales/*
!public/locales/en
#database
prisma/db.sqlite
sqlite.db
database/*.sqlite
WILL_BE_OVERWRITTEN.sqlite
# IDE
.idea/*

View File

@@ -2,31 +2,45 @@ FROM node:20.5-slim
WORKDIR /app
# Define node.js environment variables
ARG PORT=7575
ENV NEXT_TELEMETRY_DISABLED 1
ENV NODE_ENV production
ENV NODE_OPTIONS '--no-experimental-fetch'
COPY next.config.js ./
COPY public ./public
COPY package.json ./package.json
COPY yarn.lock ./yarn.lock
COPY package.json ./temp_package.json
COPY yarn.lock ./temp_yarn.lock
# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY .next/standalone ./
COPY .next/static ./.next/static
COPY prisma/schema.prisma prisma/schema.prisma
COPY ./scripts/run.sh ./scripts/run.sh
COPY ./drizzle ./drizzle
RUN mkdir database
COPY ./src/migrate.ts ./src/migrate.ts
# Install dependencies
RUN apt-get update -y && apt-get install -y openssl
RUN yarn global add prisma
RUN apt-get update -y && apt-get install -y openssl wget
# Required for migration
RUN mv node_modules _node_modules
RUN rm package.json
RUN yarn add typescript ts-node dotenv drizzle-orm@0.28.6 better-sqlite3@8.6.0 @types/better-sqlite3
RUN mv node_modules node_modules_migrate
RUN mv _node_modules node_modules
# Expose the default application port
EXPOSE 7575
EXPOSE $PORT
ENV PORT=${PORT}
ENV DATABASE_URL "file:../database/db.sqlite"
ENV DATABASE_URL "file:./database/db.sqlite"
ENV NEXTAUTH_URL "http://localhost:3000"
ENV PORT 7575
ENV NEXTAUTH_SECRET NOT_IN_USE_BECAUSE_JWTS_ARE_UNUSED
HEALTHCHECK --interval=10s --timeout=5s --start-period=5s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:${PORT} || exit 1
CMD ["sh", "./scripts/run.sh"]

View File

@@ -492,7 +492,7 @@
"pageTitle": "Homarr ⭐️",
"logoImageUrl": "/imgs/logo/logo.png",
"faviconUrl": "/imgs/favicon/favicon-squared.png",
"backgroundImageUrl": "https://images.unsplash.com/32/Mc8kW4x9Q3aRR3RkP5Im_IMG_4417.jpg?ixid=M3wxMjA3fDB8MXxzZWFyY2h8MTV8fGJhY2tncm91bmQlMjBpbWFnZXxlbnwwfHx8fDE2OTE0NDQ5NjF8MA&ixlib=rb-4.0.3",
"backgroundImageUrl": "",
"customCss": "",
"colors": {
"primary": "red",

0
database/.gitkeep Normal file
View File

11
drizzle.config.ts Normal file
View File

@@ -0,0 +1,11 @@
import 'dotenv';
import { type Config } from 'drizzle-kit';
export default {
schema: './src/server/db/schema.ts',
driver: 'better-sqlite',
out: './drizzle',
dbCredentials: {
url: process.env.DATABASE_URL!,
},
} satisfies Config;

View File

@@ -0,0 +1,69 @@
CREATE TABLE `account` (
`userId` text NOT NULL,
`type` text NOT NULL,
`provider` text NOT NULL,
`providerAccountId` text NOT NULL,
`refresh_token` text,
`access_token` text,
`expires_at` integer,
`token_type` text,
`scope` text,
`id_token` text,
`session_state` text,
PRIMARY KEY(`provider`, `providerAccountId`),
FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `invite` (
`id` text PRIMARY KEY NOT NULL,
`token` text NOT NULL,
`expires` integer NOT NULL,
`created_by_id` text NOT NULL,
FOREIGN KEY (`created_by_id`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `session` (
`sessionToken` text PRIMARY KEY NOT NULL,
`userId` text NOT NULL,
`expires` integer NOT NULL,
FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `user_setting` (
`id` text PRIMARY KEY NOT NULL,
`user_id` text NOT NULL,
`color_scheme` text DEFAULT 'environment' NOT NULL,
`language` text DEFAULT 'en' NOT NULL,
`default_board` text DEFAULT 'default' NOT NULL,
`first_day_of_week` text DEFAULT 'monday' NOT NULL,
`search_template` text DEFAULT 'https://google.com/search?q=%s' NOT NULL,
`open_search_in_new_tab` integer DEFAULT true NOT NULL,
`disable_ping_pulse` integer DEFAULT false NOT NULL,
`replace_ping_with_icons` integer DEFAULT false NOT NULL,
`use_debug_language` integer DEFAULT false NOT NULL,
`auto_focus_search` integer DEFAULT false NOT NULL,
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `user` (
`id` text PRIMARY KEY NOT NULL,
`name` text,
`email` text,
`emailVerified` integer,
`image` text,
`password` text,
`salt` text,
`is_admin` integer DEFAULT false NOT NULL,
`is_owner` integer DEFAULT false NOT NULL
);
--> statement-breakpoint
CREATE TABLE `verificationToken` (
`identifier` text NOT NULL,
`token` text NOT NULL,
`expires` integer NOT NULL,
PRIMARY KEY(`identifier`, `token`)
);
--> statement-breakpoint
CREATE INDEX `userId_idx` ON `account` (`userId`);--> statement-breakpoint
CREATE UNIQUE INDEX `invite_token_unique` ON `invite` (`token`);--> statement-breakpoint
CREATE INDEX `user_id_idx` ON `session` (`userId`);

View File

@@ -0,0 +1,468 @@
{
"version": "5",
"dialect": "sqlite",
"id": "32c1bc91-e69f-4e1d-b53c-9c43f2e6c9d3",
"prevId": "00000000-0000-0000-0000-000000000000",
"tables": {
"account": {
"name": "account",
"columns": {
"userId": {
"name": "userId",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"provider": {
"name": "provider",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"providerAccountId": {
"name": "providerAccountId",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"refresh_token": {
"name": "refresh_token",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"access_token": {
"name": "access_token",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"token_type": {
"name": "token_type",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"scope": {
"name": "scope",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"id_token": {
"name": "id_token",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"session_state": {
"name": "session_state",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {
"userId_idx": {
"name": "userId_idx",
"columns": [
"userId"
],
"isUnique": false
}
},
"foreignKeys": {
"account_userId_user_id_fk": {
"name": "account_userId_user_id_fk",
"tableFrom": "account",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"account_provider_providerAccountId_pk": {
"columns": [
"provider",
"providerAccountId"
]
}
},
"uniqueConstraints": {}
},
"invite": {
"name": "invite",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"token": {
"name": "token",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires": {
"name": "expires",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_by_id": {
"name": "created_by_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"invite_token_unique": {
"name": "invite_token_unique",
"columns": [
"token"
],
"isUnique": true
}
},
"foreignKeys": {
"invite_created_by_id_user_id_fk": {
"name": "invite_created_by_id_user_id_fk",
"tableFrom": "invite",
"tableTo": "user",
"columnsFrom": [
"created_by_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"session": {
"name": "session",
"columns": {
"sessionToken": {
"name": "sessionToken",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"userId": {
"name": "userId",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires": {
"name": "expires",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"user_id_idx": {
"name": "user_id_idx",
"columns": [
"userId"
],
"isUnique": false
}
},
"foreignKeys": {
"session_userId_user_id_fk": {
"name": "session_userId_user_id_fk",
"tableFrom": "session",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"user_setting": {
"name": "user_setting",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color_scheme": {
"name": "color_scheme",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'environment'"
},
"language": {
"name": "language",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'en'"
},
"default_board": {
"name": "default_board",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'default'"
},
"first_day_of_week": {
"name": "first_day_of_week",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'monday'"
},
"search_template": {
"name": "search_template",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'https://google.com/search?q=%s'"
},
"open_search_in_new_tab": {
"name": "open_search_in_new_tab",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": true
},
"disable_ping_pulse": {
"name": "disable_ping_pulse",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"replace_ping_with_icons": {
"name": "replace_ping_with_icons",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"use_debug_language": {
"name": "use_debug_language",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"auto_focus_search": {
"name": "auto_focus_search",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
}
},
"indexes": {},
"foreignKeys": {
"user_setting_user_id_user_id_fk": {
"name": "user_setting_user_id_user_id_fk",
"tableFrom": "user_setting",
"tableTo": "user",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"user": {
"name": "user",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"name": {
"name": "name",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"email": {
"name": "email",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"emailVerified": {
"name": "emailVerified",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"image": {
"name": "image",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password": {
"name": "password",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"salt": {
"name": "salt",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"is_admin": {
"name": "is_admin",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"is_owner": {
"name": "is_owner",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"verificationToken": {
"name": "verificationToken",
"columns": {
"identifier": {
"name": "identifier",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"token": {
"name": "token",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires": {
"name": "expires",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"verificationToken_identifier_token_pk": {
"columns": [
"identifier",
"token"
]
}
},
"uniqueConstraints": {}
}
},
"enums": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
}
}

View File

@@ -0,0 +1,13 @@
{
"version": "5",
"dialect": "sqlite",
"entries": [
{
"idx": 0,
"version": "5",
"when": 1695874816934,
"tag": "0000_supreme_the_captain",
"breakpoints": true
}
]
}

1
next-env.d.ts vendored
View File

@@ -1,6 +1,5 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
/// <reference types="next/navigation-types/compat/navigation" />
// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.

View File

@@ -1,6 +1,6 @@
{
"name": "homarr",
"version": "0.13.2",
"version": "0.14.0",
"description": "Homarr - A homepage for your server.",
"license": "MIT",
"repository": {
@@ -18,15 +18,16 @@
"lint": "next lint",
"prettier:check": "prettier --check \"**/*.{ts,tsx}\"",
"prettier:write": "prettier --write \"**/*.{ts,tsx}\"",
"test": "vitest",
"test:ui": "vitest --ui",
"test:run": "vitest run",
"test:coverage": "vitest run --coverage",
"test": "SKIP_ENV_VALIDATION=1 vitest",
"test:ui": "SKIP_ENV_VALIDATION=1 vitest --ui",
"test:run": "SKIP_ENV_VALIDATION=1 vitest run",
"test:coverage": "SKIP_ENV_VALIDATION=1 vitest run --coverage",
"docker:build": "turbo build && docker build . -t homarr:local-dev",
"docker:start": "docker run -p 7575:7575 --name homarr-development homarr:local-dev",
"postinstall": "prisma generate"
"db:migrate": "ts-node src/migrate.ts"
},
"dependencies": {
"@auth/drizzle-adapter": "^0.3.2",
"@ctrl/deluge": "^4.1.0",
"@ctrl/qbittorrent": "^6.0.0",
"@ctrl/shared-torrent": "^4.1.1",
@@ -44,12 +45,10 @@
"@mantine/notifications": "^6.0.0",
"@mantine/prism": "^6.0.19",
"@mantine/tiptap": "^6.0.17",
"@next-auth/prisma-adapter": "^1.0.7",
"@nivo/core": "^0.83.0",
"@nivo/line": "^0.83.0",
"@prisma/client": "^5.0.0",
"@react-native-async-storage/async-storage": "^1.18.1",
"@t3-oss/env-nextjs": "^0.6.0",
"@t3-oss/env-nextjs": "^0.7.1",
"@tabler/icons-react": "^2.20.0",
"@tanstack/query-async-storage-persister": "^4.27.1",
"@tanstack/query-sync-storage-persister": "^4.27.1",
@@ -60,20 +59,24 @@
"@tiptap/pm": "^2.0.4",
"@tiptap/react": "^2.0.4",
"@tiptap/starter-kit": "^2.0.4",
"@trpc/client": "^10.29.1",
"@trpc/next": "^10.29.1",
"@trpc/react-query": "^10.29.1",
"@trpc/server": "^10.29.1",
"@trpc/client": "^10.37.1",
"@trpc/next": "^10.37.1",
"@trpc/react-query": "^10.37.1",
"@trpc/server": "^10.37.1",
"@types/bcryptjs": "^2.4.2",
"@vitejs/plugin-react": "^4.0.0",
"axios": "^1.0.0",
"bcryptjs": "^2.4.3",
"better-sqlite3": "^8.6.0",
"browser-geo-tz": "^0.0.4",
"consola": "^3.0.0",
"cookies": "^0.8.0",
"cookies-next": "^2.1.1",
"dayjs": "^1.11.7",
"dockerode": "^3.3.2",
"dotenv": "^16.3.1",
"drizzle-kit": "^0.19.13",
"drizzle-orm": "^0.28.6",
"fily-publish-gridstack": "^0.0.13",
"flag-icons": "^6.9.2",
"framer-motion": "^10.0.0",
@@ -86,10 +89,9 @@
"moment": "^2.29.4",
"moment-timezone": "^0.5.43",
"next": "13.4.12",
"next-auth": "^4.22.3",
"next-auth": "^4.23.0",
"next-i18next": "^14.0.0",
"nzbget-api": "^0.0.3",
"prisma": "^5.0.0",
"prismjs": "^1.29.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
@@ -110,17 +112,20 @@
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^14.0.0",
"@trivago/prettier-plugin-sort-imports": "^4.2.0",
"@types/better-sqlite3": "^7.6.5",
"@types/cookies": "^0.7.7",
"@types/dockerode": "^3.3.9",
"@types/node": "18.17.8",
"@types/prismjs": "^1.26.0",
"@types/react": "^18.2.11",
"@types/umami": "^0.1.4",
"@types/uuid": "^9.0.0",
"@types/video.js": "^7.3.51",
"@typescript-eslint/eslint-plugin": "^6.0.0",
"@typescript-eslint/parser": "^6.0.0",
"@vitest/coverage-c8": "^0.33.0",
"@vitest/ui": "^0.33.0",
"@vitest/coverage-v8": "^0.34.5",
"@vitest/ui": "^0.34.4",
"eslint": "^8.0.1",
"eslint-config-next": "^13.4.5",
"eslint-plugin-promise": "^6.0.0",
@@ -134,6 +139,7 @@
"prettier": "^3.0.0",
"sass": "^1.56.1",
"ts-node": "latest",
"ts-node-esm": "^0.0.6",
"turbo": "^1.10.12",
"typescript": "^5.1.0",
"video.js": "^8.0.3",

View File

@@ -1,92 +0,0 @@
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
binaryTargets = ["native", "linux-musl-openssl-3.0.x", "linux-musl-arm64-openssl-3.0.x", "debian-openssl-3.0.x"]
}
datasource db {
provider = "sqlite"
// NOTE: When using mysql or sqlserver, uncomment the @db.Text annotations in model Account below
// Further reading:
// https://next-auth.js.org/adapters/prisma#create-the-prisma-schema
// https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#string
url = env("DATABASE_URL")
}
// Necessary for Next auth
model Account {
id String @id @default(cuid())
userId String
type String
provider String
providerAccountId String
refresh_token String? // @db.Text
access_token String? // @db.Text
expires_at Int?
token_type String?
scope String?
id_token String? // @db.Text
session_state String?
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@unique([provider, providerAccountId])
}
model Session {
id String @id @default(cuid())
sessionToken String @unique
userId String
expires DateTime
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
model User {
id String @id @default(cuid())
name String?
email String? @unique
emailVerified DateTime?
image String?
password String?
salt String?
isAdmin Boolean @default(false)
isOwner Boolean @default(false)
accounts Account[]
sessions Session[]
settings UserSettings?
createdInvites Invite[]
}
model VerificationToken {
identifier String
token String @unique
expires DateTime
@@unique([identifier, token])
}
model Invite {
id String @id @default(cuid())
token String @unique
expires DateTime
createdById String
createdBy User @relation(fields: [createdById], references: [id], onDelete: Cascade)
}
model UserSettings {
id String @id @default(cuid())
userId String
colorScheme String @default("environment") // environment, light, dark
language String @default("en")
defaultBoard String @default("default")
firstDayOfWeek String @default("monday") // monday, saturnday, sunday
searchTemplate String @default("https://google.com/search?q=%s")
openSearchInNewTab Boolean @default(true)
disablePingPulse Boolean @default(false)
replacePingWithIcons Boolean @default(false)
useDebugLanguage Boolean @default(false)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@unique([userId])
}

View File

@@ -0,0 +1,35 @@
{
"metaTitle": "Opret konto",
"title": "Opret konto",
"text": "Angiv venligst dine legitimationsoplysninger nedenfor",
"form": {
"fields": {
"username": {
"label": "Brugernavn"
},
"password": {
"label": "Adgangskode"
},
"passwordConfirmation": {
"label": "Bekræft kodeord"
}
},
"buttons": {
"submit": "Opret konto"
}
},
"notifications": {
"loading": {
"title": "Opretter konto",
"text": "Vent venligst"
},
"success": {
"title": "Konto oprettet",
"text": "Din konto er blevet oprettet med succes"
},
"error": {
"title": "Fejl",
"text": "Noget gik galt, fik følgende fejl: {{error}}"
}
}
}

View File

@@ -1,27 +1,20 @@
{
"metaTitle": "Log ind",
"title": "Velkommen tilbage!",
"text": "Indtast venligst din adgangskode",
"text": "Indtast venligst dine legitimationsoplysninger",
"form": {
"fields": {
"username": {
"label": "Brugernavn"
},
"password": {
"label": "Adgangskode",
"placeholder": "Din adgangskode"
"label": "Adgangskode"
}
},
"buttons": {
"submit": "Log ind"
}
},
"afterLoginRedirection": "Når du er logget ind, bliver du omdirigeret til {{url}}"
},
"notifications": {
"checking": {
"title": "Tjekker din adgangskode",
"message": "Din adgangskode er ved at blive tjekket..."
},
"correct": {
"title": "Log ind vellykket, omdirigerer..."
},
"wrong": {
"title": "Kodeordet du tastede ind, var forkert. Prøv venligst igen."
}
}
}
"alert": "Dine legitimationsoplysninger er forkerte, eller denne konto findes ikke. Prøv venligst igen."
}

View File

@@ -0,0 +1,5 @@
{
"header": {
"customize": "Tilpas board"
}
}

View File

@@ -0,0 +1,29 @@
{
"metaTitle": "Tilpas {{name}} Board",
"pageTitle": "Tilpasning til {{name}} Board",
"backToBoard": "Tilbage til board",
"settings": {
"appearance": {
"primaryColor": "Primær farve",
"secondaryColor": "Sekundær farve"
}
},
"save": {
"button": "Gem ændringer",
"note": "Pas på, du har ændringer, der ikke er gemt!"
},
"notifications": {
"pending": {
"title": "Gemmer tilpasning",
"message": "Vent venligst, mens vi gemmer din tilpasning"
},
"success": {
"title": "Tilpasning gemt",
"message": "Din tilpasning er blevet gemt med succes"
},
"error": {
"title": "Fejl",
"message": "Kan ikke gemme ændringer"
}
}
}

View File

@@ -3,9 +3,13 @@
"about": "Om",
"cancel": "Annuller",
"close": "Luk",
"back": "Tilbage",
"delete": "Slet",
"ok": "OK",
"edit": "Rediger",
"next": "Næste",
"previous": "Forrige",
"confirm": "Bekræft",
"enabled": "Aktiveret",
"disabled": "Deaktiveret",
"enableAll": "Aktiver alle",

View File

@@ -0,0 +1,34 @@
{
"experimentalNote": {
"label": "Dette er en eksperimentel funktion i Homarr. Rapporter venligst eventuelle problemer på <gh>GitHub</gh> eller <dc>Discord</dc>."
},
"search": {
"label": "Søg",
"engines": {
"web": "Søg efter {{query}} på nettet",
"youtube": "Søg efter {{query}} på YouTube",
"torrent": "Søg efter {{query}} torrents",
"movie": "Søg efter {{query}} på {{app}}"
}
},
"actions": {
"avatar": {
"switchTheme": "Skift tema",
"preferences": "Brugerindstillinger",
"defaultBoard": "Standard dashboard",
"manage": "Administrer",
"about": {
"label": "Om",
"new": "Ny"
},
"logout": "Log {{username}} ud",
"login": "Log ind"
}
},
"modals": {
"movie": {
"title": "",
"topResults": "Top {{count}} resultater for <b>{{search}}</b>."
}
}
}

View File

@@ -0,0 +1,32 @@
{
"navigation": {
"home": {
"title": "Hjem"
},
"boards": {
"title": "Boards"
},
"users": {
"title": "Brugere",
"items": {
"manage": "Administrer",
"invites": "Invitationer"
}
},
"help": {
"title": "Hjælp",
"items": {
"documentation": "Dokumentation",
"report": "Rapporter et problem / en fejl",
"discord": "Discordfællesskab",
"contribute": "Bidrag!"
}
},
"tools": {
"title": "Værktøjer",
"items": {
"docker": "Docker"
}
}
}
}

View File

@@ -0,0 +1,44 @@
{
"metaTitle": "Boards",
"pageTitle": "Boards",
"cards": {
"statistics": {
"apps": "Apps",
"widgets": "Widgets",
"categories": "Kategorier"
},
"buttons": {
"view": "Se board"
},
"menu": {
"setAsDefault": "Indstil som din standardboard",
"delete": {
"label": "Slet permanent",
"disabled": "Sletning deaktiveret, fordi ældre Homarr-komponenter ikke tillader sletning af standardkonfigurationen. Sletning vil være mulig i fremtiden."
}
},
"badges": {
"fileSystem": "Filsystem",
"default": "Standard"
}
},
"buttons": {
"create": "Opret nyt board"
},
"modals": {
"delete": {
"title": "Slet board",
"text": "Er du sikker på, at du vil slette dette board? Denne handling kan ikke fortrydes, og dine data vil gå tabt permanent."
},
"create": {
"title": "Opret et board",
"text": "Navnet kan ikke ændres, efter at et board er blevet oprettet.",
"form": {
"name": {
"label": "Navn"
},
"submit": "Opret"
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"metaTitle": "Administrer",
"hero": {
"title": "Velkommen tilbage, {{username}}",
"fallbackUsername": "Anonym",
"subtitle": "Velkommen til din applikationshub. Organiser, optimer og erobr!"
},
"quickActions": {
"title": "Hurtige handlinger",
"boards": {
"title": "Dine boards",
"subtitle": "Opret og administrer dine boards"
},
"inviteUsers": {
"title": "Inviter en ny bruger",
"subtitle": "Opret og send en invitation til registrering"
},
"manageUsers": {
"title": "Administrér brugere",
"subtitle": "Slet og administrer dine brugere"
}
}
}

View File

@@ -0,0 +1,36 @@
{
"metaTitle": "Brugere",
"pageTitle": "Administrér brugere",
"text": "Ved hjælp af brugere kan du konfigurere, hvem der kan redigere dine dashboards. Fremtidige versioner af Homarr vil have endnu mere detaljeret kontrol over tilladelser og tavler.",
"buttons": {
"create": "Opret"
},
"table": {
"header": {
"user": "Bruger"
}
},
"tooltips": {
"deleteUser": "Slet bruger",
"demoteAdmin": "Degrader administrator",
"promoteToAdmin": "Promover til administrator"
},
"modals": {
"delete": {
"title": "Slet brugeren {{name}}",
"text": "Er du sikker på, at du vil slette brugeren {{name}}? Dette vil slette data, der er knyttet til denne konto, men ikke dashboards, der er oprettet af denne bruger."
},
"change-role": {
"promote": {
"title": "Forfrem brugeren {{name}} til administrator",
"text": "Er du sikker på, at du vil promovere brugeren {{name}} til administrator? Dette vil give brugeren adgang til alle ressourcer i din Homarr instans."
},
"demote": {
"title": "Degrader bruger {{name}} til bruger",
"text": "Er du sikker på, at du vil degradere brugeren {{name}} til bruger? Dette vil fjerne brugerens adgang til alle ressourcer på din Homarr-instans."
},
"confirm": "Bekræft"
}
},
"searchDoesntMatch": "Din søgning matcher ikke nogen poster. Juster venligst dit filter."
}

View File

@@ -0,0 +1,52 @@
{
"metaTitle": "Opret bruger",
"steps": {
"account": {
"title": "Første trin",
"text": "Opret konto",
"username": {
"label": "Brugernavn"
},
"email": {
"label": "E-mail"
}
},
"security": {
"title": "Andet trin",
"text": "Adgangskode",
"password": {
"label": "Adgangskode"
}
},
"finish": {
"title": "Bekræftelse",
"text": "Gem i databasen",
"card": {
"title": "Gennemgå dine input",
"text": "Når du har sendt dine data til databasen, vil brugeren kunne logge ind. Er du sikker på, at du vil gemme denne bruger i databasen og aktivere login?"
},
"table": {
"header": {
"property": "Egenskaber",
"value": "Værdi",
"username": "Brugernavn",
"email": "E-mail",
"password": "Adgangskode"
},
"notSet": "Ikke angivet",
"valid": "Gyldig"
},
"failed": "Brugeroprettelse er mislykkedes: {{error}}"
},
"completed": {
"alert": {
"title": "Brugeren blev oprettet",
"text": "Brugeren blev oprettet i databasen. De kan nu logge ind."
}
}
},
"buttons": {
"generateRandomPassword": "Generer tilfældig",
"createAnother": "Opret en anden"
}
}

View File

@@ -0,0 +1,48 @@
{
"metaTitle": "Brugerinvitationer",
"pageTitle": "Administrer brugerinvitationer",
"description": "Ved hjælp af invitationer kan du invitere brugere til din Homarr-instans. En invitation vil kun være gyldig i et bestemt tidsrum og kan kun bruges én gang. Udløbsdatoen skal være mellem 5 minutter og 12 måneder ved oprettelsen.",
"button": {
"createInvite": "Opret invitation",
"deleteInvite": "Slet invitation"
},
"table": {
"header": {
"id": "ID",
"creator": "Skaber",
"expires": "Udløber",
"action": "Handlinger"
},
"data": {
"expiresAt": "udløb {{at}}",
"expiresIn": "i {{in}}"
}
},
"modals": {
"create": {
"title": "Opret Invitation",
"description": "Efter udløb vil en invitation ikke længere være gyldig, og modtageren af invitationen vil ikke være i stand til at oprette en konto.",
"form": {
"expires": "Udløbsdato",
"submit": "Opret"
}
},
"copy": {
"title": "Kopier invitation",
"description": "Din invitation er blevet genereret. Når denne modal lukker, <b>vil du ikke længere kunne kopiere dette link</b>. Hvis du ikke længere ønsker at invitere den pågældende person, kan du til enhver tid slette denne invitation.",
"invitationLink": "Invitationslink",
"details": {
"id": "ID",
"token": "Token"
},
"button": {
"close": "Kopier og afvis"
}
},
"delete": {
"title": "Slet invitation",
"description": "Er du sikker på, at du vil slette denne invitation? Brugere med dette link vil ikke længere kunne oprette en konto ved hjælp af dette link."
}
},
"noInvites": "Der er endnu ingen invitationer."
}

View File

@@ -7,9 +7,6 @@
"useSonarrv4": {
"label": "Brug Sonarr v4 API"
},
"sundayStart": {
"label": "Søndag første ugedag"
},
"radarrReleaseType": {
"label": "Radarr udgivelsestype",
"data": {

View File

@@ -1,6 +1,18 @@
{
"descriptor": {
"name": "DNS hole kontrol",
"description": "Kontroller PiHole eller AdGuard fra dit dashboard"
"description": "Kontroller PiHole eller AdGuard fra dit dashboard",
"settings": {
"title": "Indstillinger for DNS hole",
"showToggleAllButtons": {
"label": "Vis 'Aktiver/deaktiver alle'-knapper"
}
},
"errors": {
"general": {
"title": "Kan ikke finde et DNS-hul",
"text": "Der opstod et problem med at oprette forbindelse til dit/dine DNS-hul(ler). Bekræft venligst din(e) konfiguration(er)/integration(er)."
}
}
}
}

View File

@@ -33,5 +33,5 @@
"unknown": "Ukendt"
}
},
"error": "Der er opstået en fejl"
"error": "Der opstod en fejl"
}

View File

@@ -0,0 +1,7 @@
{
"number": "Inkluderer nummer",
"lowercase": "Inkluderer små bogstaver",
"uppercase": "Inkluderer store bogstaver",
"special": "Inkluderer specialtegn",
"length": "Indeholder mindst {{count}} tegn"
}

View File

@@ -0,0 +1,6 @@
{
"allowGuests": {
"label": "Tillad anonym",
"description": "Tillad brugere, der ikke er logget ind, at se dit board"
}
}

View File

@@ -20,6 +20,10 @@
"accessibility": {
"name": "Hjælpefunktioner",
"description": "Konfigurer Homarr for deaktiverede og handicappede brugere"
},
"access": {
"name": "Adgang",
"description": "Konfigurer, hvem der har adgang til dit board"
}
}
}

View File

@@ -23,8 +23,5 @@
"description": "Yderligere, tilpasse dit dashboard ved hjælp af CSS, anbefales kun til erfarne brugere",
"placeholder": "Brugerdefineret CSS vil blive anvendt sidst",
"applying": "Anvender CSS..."
},
"buttons": {
"submit": "Indsend"
}
}
}

View File

@@ -0,0 +1,32 @@
{
"title": "Docker",
"alerts": {
"notConfigured": {
"text": "Din Homarr-instans har ikke Docker konfigureret, eller den har fejlet i at hente containere. Se i dokumentationen, hvordan du sætter integrationen op."
}
},
"modals": {
"selectBoard": {
"title": "Vælg et board",
"text": "Vælg det board, hvor du vil tilføje applikationer til de valgte Docker-containere.",
"form": {
"board": {
"label": "Board"
},
"submit": "Tilføj apps"
}
}
},
"notifications": {
"selectBoard": {
"success": {
"title": "Tilføjede apps til board",
"message": "Apps til de valgte Docker-containere er blevet tilføjet til boardet."
},
"error": {
"title": "Kunne ikke tilføje apps til board",
"message": "Apps til de valgte Docker-containere kunne ikke føjes til boardet."
}
}
}
}

View File

@@ -0,0 +1,48 @@
{
"metaTitle": "Indstillinger",
"pageTitle": "Dine indstillinger",
"boards": {
"defaultBoard": {
"label": "Standard board"
}
},
"accessibility": {
"title": "Hjælpefunktioner",
"disablePulse": {
"label": "Deaktiver ping-puls",
"description": "Som standard vil ping-indikatorerne i Homarr pulsere. Det kan være irriterende. Denne skyder vil deaktivere animationen"
},
"replaceIconsWithDots": {
"label": "Udskift ping-prikker med ikoner",
"description": "For farveblinde brugere kan ping-prikker være uigenkendelige. Dette vil erstatte indikatorer med ikoner"
}
},
"localization": {
"language": {
"label": "Sprog"
},
"firstDayOfWeek": {
"label": "Første ugedag",
"options": {
"monday": "Mandag",
"saturday": "Lørdag",
"sunday": "Søndag"
}
}
},
"searchEngine": {
"title": "Søgemaskine",
"custom": "Brugerdefineret",
"newTab": {
"label": "Åben søgeresultater i en ny fane"
},
"autoFocus": {
"label": "Fokuser søgefeltet, når siden indlæses.",
"description": "Dette vil automatisk fokusere søgefeltet, når du navigerer til board sider. Det virker kun på desktop-enheder."
},
"template": {
"label": "Forespørgsels URL",
"description": "Brug %s som pladsholder for forespørgslen"
}
}
}

View File

@@ -0,0 +1,22 @@
{
"errors": {
"default": "Dette felt er ugyldigt",
"required": "Dette felt er påkrævet",
"string": {
"startsWith": "Dette felt skal starte med {{startsWith}}",
"endsWith": "Dette felt skal slutte med {{endsWith}}",
"includes": "Dette felt skal indeholde {{includes}}"
},
"tooSmall": {
"string": "Dette felt skal være mindst {{minimum}} tegn langt",
"number": "Dette felt skal være større end eller lig med {{minimum}}"
},
"tooBig": {
"string": "Dette felt må højst være på {{maximum}} tegn",
"number": "Dette felt skal være mindre end eller lig med {{maximum}}"
},
"custom": {
"passwordMatch": "Adgangskoderne skal stemme overens"
}
}
}

View File

@@ -0,0 +1,35 @@
{
"metaTitle": "Account erstellen",
"title": "Account erstellen",
"text": "Bitte geben Sie Ihre Anmeldedaten an",
"form": {
"fields": {
"username": {
"label": "Benutzername"
},
"password": {
"label": "Passwort"
},
"passwordConfirmation": {
"label": "Passwort bestätigen"
}
},
"buttons": {
"submit": "Account erstellen"
}
},
"notifications": {
"loading": {
"title": "Account wird erstellt",
"text": "Bitte warten"
},
"success": {
"title": "Account erstellt",
"text": "Ihr Account wurde erfolgreich erstellt"
},
"error": {
"title": "Fehler",
"text": "Etwas ist schiefgelaufen. Folgender Fehler ist aufgetreten: {{error}}"
}
}
}

View File

@@ -1,27 +1,20 @@
{
"metaTitle": "Anmelden",
"title": "Willkommen zurück!",
"text": "Bitte geben Sie Ihr Kennwort ein",
"text": "Bitte geben Sie Ihre Anmeldedaten ein",
"form": {
"fields": {
"username": {
"label": "Benutzername"
},
"password": {
"label": "Passwort",
"placeholder": "Ihr Passwort"
"label": "Passwort"
}
},
"buttons": {
"submit": "Anmelden"
}
},
"afterLoginRedirection": "Nach der Anmeldung werden Sie zu {{url}} weitergeleitet"
},
"notifications": {
"checking": {
"title": "Ihr Passwort wird überprüft",
"message": "Ihr Passwort wird geprüft..."
},
"correct": {
"title": "Anmeldung erfolgreich, Weiterleitung..."
},
"wrong": {
"title": "Das von dir eingegebene Passwort ist nicht korrekt. Bitte versuche es noch mal."
}
}
}
"alert": "Ihre Anmeldedaten sind falsch oder dieses Konto existiert nicht. Bitte versuchen Sie es erneut."
}

View File

@@ -0,0 +1,5 @@
{
"header": {
"customize": "Board anpassen"
}
}

View File

@@ -0,0 +1,29 @@
{
"metaTitle": "{{name}} Board anpassen",
"pageTitle": "Anpassungen für {{name}} Board",
"backToBoard": "Zurück zum Board",
"settings": {
"appearance": {
"primaryColor": "Primärfarbe",
"secondaryColor": "Sekundärfarbe"
}
},
"save": {
"button": "Änderungen speichern",
"note": "Vorsicht, Sie haben ungespeicherte Änderungen!"
},
"notifications": {
"pending": {
"title": "Anpassungen werden gespeichert",
"message": "Bitte warten Sie, während wir Ihre Anpassungen speichern"
},
"success": {
"title": "Anpassungen gespeichert",
"message": "Ihre Anpassungen wurden erfolgreich gespeichert"
},
"error": {
"title": "Fehler",
"message": "Ihre Anpassungen konnten nicht gespeichert werden"
}
}
}

View File

@@ -3,9 +3,13 @@
"about": "Über",
"cancel": "Abbrechen",
"close": "Schließen",
"back": "Zurück",
"delete": "Löschen",
"ok": "OK",
"edit": "Bearbeiten",
"next": "Weiter",
"previous": "Zurück",
"confirm": "Bestätigen",
"enabled": "Aktiviert",
"disabled": "Deaktiviert",
"enableAll": "Alle aktivieren",

View File

@@ -0,0 +1,34 @@
{
"experimentalNote": {
"label": "Dies ist eine experimentelle Funktion von Homarr. Bitte melde Probleme auf <gh>GitHub</gh> oder <dc>Discord</dc>."
},
"search": {
"label": "Suchen",
"engines": {
"web": "Suche nach {{query}} im Internet",
"youtube": "Suche nach {{query}} auf YouTube",
"torrent": "Suche nach {{query}} torrents",
"movie": "Suche nach {{query}} auf {{app}}"
}
},
"actions": {
"avatar": {
"switchTheme": "Design wechseln",
"preferences": "Benutzereinstellungen",
"defaultBoard": "Standard-Dashboard",
"manage": "Verwalten",
"about": {
"label": "Über",
"new": "Neu"
},
"logout": "{{username}} abmelden",
"login": "Anmelden"
}
},
"modals": {
"movie": {
"title": "",
"topResults": "Die ersten {{count}} Ergebnisse für <b>{{search}}</b>."
}
}
}

View File

@@ -0,0 +1,32 @@
{
"navigation": {
"home": {
"title": "Startseite"
},
"boards": {
"title": "Boards"
},
"users": {
"title": "Benutzer",
"items": {
"manage": "Verwalten",
"invites": "Einladungen"
}
},
"help": {
"title": "Hilfe",
"items": {
"documentation": "Dokumentation",
"report": "Ein Problem / einen Fehler melden",
"discord": "Community Discord",
"contribute": "Mitwirken"
}
},
"tools": {
"title": "Werkzeuge",
"items": {
"docker": "Docker"
}
}
}
}

View File

@@ -0,0 +1,44 @@
{
"metaTitle": "Boards",
"pageTitle": "Boards",
"cards": {
"statistics": {
"apps": "Apps",
"widgets": "Widgets",
"categories": "Kategorien"
},
"buttons": {
"view": "Board anzeigen"
},
"menu": {
"setAsDefault": "Als Standard-Board festlegen",
"delete": {
"label": "Dauerhaft löschen",
"disabled": "Ein Löschen wurde deaktiviert, da ältere Homarr-Komponenten das Löschen der Standardkonfiguration nicht erlauben. Die Löschung wird in Zukunft möglich sein."
}
},
"badges": {
"fileSystem": "Dateisystem",
"default": "Standard"
}
},
"buttons": {
"create": "Neues Board erstellen"
},
"modals": {
"delete": {
"title": "Board löschen",
"text": "Sind Sie sicher, dass Sie dieses Board löschen wollen? Diese Aktion kann nicht rückgängig gemacht werden und Ihre Daten gehen dauerhaft verloren."
},
"create": {
"title": "Board erstellen",
"text": "Der Name kann nicht mehr geändert werden, nachdem ein Board erstellt wurde.",
"form": {
"name": {
"label": "Name"
},
"submit": "Erstellen"
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"metaTitle": "Verwalten",
"hero": {
"title": "Willkommen zurück, {{username}}",
"fallbackUsername": "Anonym",
"subtitle": "Willkommen bei Ihrem Application Hub. Organisieren, Optimieren und Erobern!"
},
"quickActions": {
"title": "Quick Actions",
"boards": {
"title": "Deine Boards",
"subtitle": "Erstellen und verwalten Sie Ihre Boards"
},
"inviteUsers": {
"title": "Einen neuen Benutzer einladen",
"subtitle": "Erstellen und versenden Sie eine Einladung zur Registrierung"
},
"manageUsers": {
"title": "Verwaltung von Benutzern",
"subtitle": "Löschen und Verwalten Ihrer Benutzer"
}
}
}

View File

@@ -0,0 +1,36 @@
{
"metaTitle": "Benutzer",
"pageTitle": "Verwaltung von Benutzern",
"text": "Mit Benutzern können Sie konfigurieren, wer Ihre Dashboards bearbeiten kann. Zukünftige Versionen von Homarr werden eine noch detailliertere Kontrolle über Berechtigungen und Boards haben.",
"buttons": {
"create": "Erstellen"
},
"table": {
"header": {
"user": "Benutzer"
}
},
"tooltips": {
"deleteUser": "Benutzer löschen",
"demoteAdmin": "Administrator degradieren",
"promoteToAdmin": "Zum Administrator befördern"
},
"modals": {
"delete": {
"title": "Benutzer \"{{name}}\" löschen",
"text": "Sind Sie sicher, dass Sie den Benutzer {{name}} löschen möchten? Dadurch werden die mit diesem Konto verbundenen Daten gelöscht, nicht aber die von diesem Benutzer erstellten Dashboards."
},
"change-role": {
"promote": {
"title": "Benutzer {{name}} zum Administrator ernennen",
"text": "Sind Sie sicher, dass Sie den Benutzer {{name}} zum Admin befördern wollen? Dadurch erhält der Benutzer Zugriff auf alle Ressourcen in Ihrer Homarr-Instanz."
},
"demote": {
"title": "Benutzer {{name}} zum Benutzer degradieren",
"text": "Sind Sie sicher, dass Sie den Benutzer {{name}} zum Benutzer degradieren wollen? Dadurch wird dem Benutzer der Zugriff auf alle Ressourcen in Ihrer Homarr-Instanz entzogen."
},
"confirm": "Bestätigen"
}
},
"searchDoesntMatch": "Ihre Suche ergab keine Treffer. Bitte passen Sie Ihren Filter an."
}

View File

@@ -0,0 +1,52 @@
{
"metaTitle": "Benutzer erstellen",
"steps": {
"account": {
"title": "Erster Schritt",
"text": "Account erstellen",
"username": {
"label": "Benutzername"
},
"email": {
"label": "E-Mail"
}
},
"security": {
"title": "Zweiter Schritt",
"text": "Passwort",
"password": {
"label": "Passwort"
}
},
"finish": {
"title": "Bestätigung",
"text": "In Datenbank speichern",
"card": {
"title": "Überprüfen Sie Ihre Eingaben",
"text": "Nachdem Sie Ihre Daten an die Datenbank übermittelt haben, kann sich der Benutzer anmelden. Sind Sie sicher, dass Sie diesen Benutzer in der Datenbank speichern und die Anmeldung aktivieren wollen?"
},
"table": {
"header": {
"property": "Eigenschaft",
"value": "Wert",
"username": "Benutzername",
"email": "E-Mail",
"password": "Passwort"
},
"notSet": "Nicht festgelegt",
"valid": "Gültig"
},
"failed": "Die Erstellung eines Benutzers ist fehlgeschlagen: {{error}}"
},
"completed": {
"alert": {
"title": "Benutzer wurde erstellt",
"text": "Der Benutzer wurde in der Datenbank angelegt. Er kann sich nun anmelden."
}
}
},
"buttons": {
"generateRandomPassword": "Zufällig generieren",
"createAnother": "Weiteren erstellen"
}
}

View File

@@ -0,0 +1,48 @@
{
"metaTitle": "Benutzereinladungen",
"pageTitle": "Verwalten von Benutzereinladungen",
"description": "Mit Einladungen können Sie Benutzer zu Ihrer Homarr-Instanz einladen. Eine Einladung ist nur für eine bestimmte Zeitspanne gültig und kann nur einmal verwendet werden. Die Gültigkeitsdauer muss bei der Erstellung zwischen 5 Minuten und 12 Monaten liegen.",
"button": {
"createInvite": "Einladung erstellen",
"deleteInvite": "Einladung löschen"
},
"table": {
"header": {
"id": "ID",
"creator": "Ersteller",
"expires": "Endet",
"action": "Aktivitäten"
},
"data": {
"expiresAt": "Abgelaufen {{at}}",
"expiresIn": "in {{in}}"
}
},
"modals": {
"create": {
"title": "Einladung erstellen",
"description": "Nach Ablauf der Frist ist eine Einladung nicht mehr gültig und der Empfänger der Einladung kann kein Konto erstellen.",
"form": {
"expires": "Ablaufdatum",
"submit": "Erstellen"
}
},
"copy": {
"title": "Einladung kopieren",
"description": "Ihre Einladung wurde erstellt. Nachdem dieses Modal geschlossen wurde, <b>können Sie diesen Link nicht mehr kopieren</b>. Wenn Sie die besagte Person nicht mehr einladen möchten, können Sie diese Einladung jederzeit löschen.",
"invitationLink": "Link zur Einladung",
"details": {
"id": "ID",
"token": "Token"
},
"button": {
"close": "Kopieren & Verwerfen"
}
},
"delete": {
"title": "Einladung löschen",
"description": "Sind Sie sicher, dass Sie diese Einladung löschen möchten? Benutzer mit diesem Link können dann kein Konto mehr über diesen Link erstellen."
}
},
"noInvites": "Es liegen noch keine Einladungen vor."
}

View File

@@ -7,9 +7,6 @@
"useSonarrv4": {
"label": "Sonarr v4 API verwenden"
},
"sundayStart": {
"label": "Wochenbeginn am Sonntag"
},
"radarrReleaseType": {
"label": "Radarr Veröffentlichungs Typ",
"data": {

View File

@@ -1,6 +1,18 @@
{
"descriptor": {
"name": "DNS-Hole Steuerung",
"description": "Steuern Sie PiHole oder AdGuard von Ihrem Dashboard aus"
"description": "Steuern Sie PiHole oder AdGuard von Ihrem Dashboard aus",
"settings": {
"title": "Einstellungen für DNS-Kontrollen",
"showToggleAllButtons": {
"label": "Schaltflächen \"Alle aktivieren/deaktivieren\" anzeigen"
}
},
"errors": {
"general": {
"title": "Konnte kein DNS Hole finden",
"text": "Es gab ein Problem bei der Verbindung zu Ihrem DNS Hole(s). Bitte überprüfen Sie Ihre Konfiguration/Integration(en)."
}
}
}
}

View File

@@ -0,0 +1,7 @@
{
"number": "Enthält Ziffern",
"lowercase": "Enthält Kleinbuchstaben",
"uppercase": "Enthält Großbuchstaben",
"special": "Enthält Sonderzeichen",
"length": "Enthält mindestens {{count}} Zeichen"
}

View File

@@ -0,0 +1,6 @@
{
"allowGuests": {
"label": "Anonyme zulassen",
"description": "Benutzern die nicht eingeloggt sind, erlauben, Ihr Board anzusehen"
}
}

View File

@@ -20,6 +20,10 @@
"accessibility": {
"name": "Barrierefreiheit",
"description": "Homarr für behinderte und gehandicapte Benutzer einrichten"
},
"access": {
"name": "Zugriff",
"description": "Konfigurieren Sie, wer Zugriff auf Ihr Board hat"
}
}
}

View File

@@ -23,8 +23,5 @@
"description": "Außerdem können Sie Ihr Dashboard mittels CSS anpassen, dies wird nur für erfahrene Benutzer empfohlen",
"placeholder": "Benutzerdefiniertes CSS wird zuletzt angewendet",
"applying": "CSS wird übernommen..."
},
"buttons": {
"submit": "Absenden"
}
}
}

View File

@@ -0,0 +1,32 @@
{
"title": "Docker",
"alerts": {
"notConfigured": {
"text": "Auf Ihrer Homarr-Instanz ist Docker nicht konfiguriert oder es ist nicht möglich, Container zu erkennen. Bitte lesen Sie in der Dokumentation nach, wie Sie diese Integration einrichten können."
}
},
"modals": {
"selectBoard": {
"title": "Board auswählen",
"text": "Wählen Sie das Board, dem Sie die Anwendungen für die ausgewählten Docker-Container hinzufügen möchten.",
"form": {
"board": {
"label": "Board"
},
"submit": "Apps hinzufügen"
}
}
},
"notifications": {
"selectBoard": {
"success": {
"title": "Anwendungen zum Board hinzugefügt",
"message": "Die Anwendungen für die ausgewählten Docker-Container wurden dem Board hinzugefügt."
},
"error": {
"title": "Anwendungen konnten nicht zum Board hinzugefügt werden",
"message": "Die Anwendungen für die ausgewählten Docker-Container konnten dem Board nicht hinzugefügt werden."
}
}
}
}

View File

@@ -0,0 +1,48 @@
{
"metaTitle": "Einstellungen",
"pageTitle": "Ihre Einstellungen",
"boards": {
"defaultBoard": {
"label": "Standard-Board"
}
},
"accessibility": {
"title": "Barrierefreiheit",
"disablePulse": {
"label": "Ping-Puls deaktivieren",
"description": "Standardmäßig pulsieren die Ping-Indikatoren in Homarr. Dies kann irritierend sein. Mit diesem Regler kann diese Animation deaktiviert werden"
},
"replaceIconsWithDots": {
"label": "Ping Punkte mit Icons ersetzen",
"description": "Für farbenblinde Benutzer können Ping-Punkte nicht erkennbar sein. Dies ersetzt Indikatoren durch Icons"
}
},
"localization": {
"language": {
"label": "Sprache"
},
"firstDayOfWeek": {
"label": "Erster Tag der Woche",
"options": {
"monday": "Montag",
"saturday": "Samstag",
"sunday": "Sonntag"
}
}
},
"searchEngine": {
"title": "Suchmaschine",
"custom": "Benutzerdefiniert",
"newTab": {
"label": "Suchergebnisse in neuem Tab öffnen"
},
"autoFocus": {
"label": "Suchleiste beim Laden der Seite fokussieren.",
"description": "Dadurch wird die Suchleiste automatisch fokussiert, wenn Sie auf den Seiten des Boards navigieren. Dies funktioniert nur auf Desktop-Geräten."
},
"template": {
"label": "Suchanfrage URL",
"description": "Verwenden Sie %s als Platzhalter für die Suchanfrage"
}
}
}

View File

@@ -0,0 +1,22 @@
{
"errors": {
"default": "Dieses Feld ist ungültig",
"required": "Dieses Feld ist erforderlich",
"string": {
"startsWith": "Dieses Feld muss mit {{startsWith}} beginnen",
"endsWith": "Dieses Feld muss mit {{endsWith}} enden",
"includes": "Dieses Feld muss {{includes}} beinhalten"
},
"tooSmall": {
"string": "Dieses Feld muss mindestens {{minimum}} Zeichen lang sein",
"number": "Dieses Feld muss größer oder gleich {{minimum}} sein"
},
"tooBig": {
"string": "Dieses Feld muss mindestens {{maximum}} Zeichen lang sein",
"number": "Dieses Feld muss größer oder gleich {{maximum}} sein"
},
"custom": {
"passwordMatch": "Die Passwörter müssen übereinstimmen"
}
}
}

View File

@@ -0,0 +1,35 @@
{
"metaTitle": "Δημιουργία λογαριασμού",
"title": "Δημιουργία λογαριασμού",
"text": "Παρακαλώ καθορίστε τα διαπιστευτήριά σας παρακάτω",
"form": {
"fields": {
"username": {
"label": "Όνομα Χρήστη"
},
"password": {
"label": "Κωδικός"
},
"passwordConfirmation": {
"label": "Επιβεβαίωση κωδικού"
}
},
"buttons": {
"submit": "Δημιουργία λογαριασμού"
}
},
"notifications": {
"loading": {
"title": "Δημιουργία λογαριασμού",
"text": "Παρακαλώ περιμένετε"
},
"success": {
"title": "Ο λογαριασμός δημιουργήθηκε",
"text": "Ο λογαριασμός σας έχει δημιουργηθεί επιτυχώς"
},
"error": {
"title": "Σφάλμα",
"text": "Κάτι πήγε στραβά, προέκυψε το ακόλουθο σφάλμα: {{error}}"
}
}
}

View File

@@ -1,27 +1,20 @@
{
"metaTitle": "Σύνδεση",
"title": "Καλώς ήρθατε!",
"text": "Παρακαλώ εισάγετε τον κωδικό σας",
"text": "Παρακαλώ εισάγετε τα στοιχεία σας",
"form": {
"fields": {
"username": {
"label": "Όνομα Χρήστη"
},
"password": {
"label": "Κωδικός",
"placeholder": "Ο κωδικός σας"
"label": "Κωδικός"
}
},
"buttons": {
"submit": "Σύνδεση"
}
},
"afterLoginRedirection": "Μετά τη σύνδεση, θα μεταφερθείτε στο {{url}}"
},
"notifications": {
"checking": {
"title": "Έλεγχος κωδικού πρόσβασης",
"message": "Ο κωδικός πρόσβασής σας ελέγχεται..."
},
"correct": {
"title": "Σύνδεση επιτυχής, ανακατεύθυνση..."
},
"wrong": {
"title": "Ο κωδικός που εισαγάγατε είναι εσφαλμένος. Προσπαθήστε ξανά."
}
}
}
"alert": "Τα διαπιστευτήριά σας είναι λανθασμένα ή αυτός ο λογαριασμός δεν υπάρχει. Προσπαθήστε ξανά."
}

View File

@@ -0,0 +1,5 @@
{
"header": {
"customize": "Προσαρμογή ταμπλό"
}
}

View File

@@ -0,0 +1,29 @@
{
"metaTitle": "Προσαρμογή {{name}} ταμπλό",
"pageTitle": "Προσαρμογή για το ταμπλό {{name}}",
"backToBoard": "Πίσω στο ταμπλό",
"settings": {
"appearance": {
"primaryColor": "Βασικό χρώμα",
"secondaryColor": "Δευτερεύον χρώμα"
}
},
"save": {
"button": "Αποθήκευση αλλαγών",
"note": "Προσοχή, έχετε μη αποθηκευμένες αλλαγές!"
},
"notifications": {
"pending": {
"title": "Αποθήκευση προσαρμογής",
"message": "Παρακαλώ περιμένετε όσο αποθηκεύουμε την προσαρμογή σας"
},
"success": {
"title": "Η προσαρμογή αποθηκεύτηκε",
"message": "Η προσαρμογή σας έχει αποθηκευτεί με επιτυχία"
},
"error": {
"title": "Σφάλμα",
"message": "Αδυναμία αποθήκευσης αλλαγών"
}
}
}

View File

@@ -3,9 +3,13 @@
"about": "Σχετικά",
"cancel": "Ακύρωση",
"close": "Κλείσιμο",
"back": "Πίσω",
"delete": "Διαγραφή",
"ok": "ΟΚ",
"edit": "Επεξεργασία",
"next": "Επόμενο",
"previous": "Προηγούμενο",
"confirm": "Επιβεβαίωση",
"enabled": "Ενεργοποιημένο",
"disabled": "Απενεργοποιημένο",
"enableAll": "Ενεργοποίηση όλων",

View File

@@ -0,0 +1,34 @@
{
"experimentalNote": {
"label": "Αυτή είναι μια πειραματική λειτουργία του Homarr. Αναφέρετε τυχόν προβλήματα στο <gh>GitHub</gh> ή στο <dc>Discord</dc>."
},
"search": {
"label": "Αναζήτηση",
"engines": {
"web": "Αναζήτηση για {{query}} στο διαδίκτυο",
"youtube": "Αναζήτηση για {{query}} στο YouTube",
"torrent": "Αναζήτηση για {{query}} torrents",
"movie": "Αναζήτηση για {{query}} στο {{app}}"
}
},
"actions": {
"avatar": {
"switchTheme": "Αλλαγή θέματος",
"preferences": "Προτιμήσεις χρήστη",
"defaultBoard": "Προεπιλεγμένο ταμπλό",
"manage": "Διαχείριση",
"about": {
"label": "Σχετικά",
"new": "Νέο"
},
"logout": "Αποσύνδεση από {{username}}",
"login": "Σύνδεση"
}
},
"modals": {
"movie": {
"title": "",
"topResults": "Κορυφαία αποτελέσματα {{count}} για <b>{{search}}</b>."
}
}
}

View File

@@ -0,0 +1,32 @@
{
"navigation": {
"home": {
"title": "Αρχική"
},
"boards": {
"title": "Πίνακες"
},
"users": {
"title": "Χρήστες",
"items": {
"manage": "Διαχείριση",
"invites": "Προσκλήσεις"
}
},
"help": {
"title": "Βοήθεια",
"items": {
"documentation": "Τεκμηρίωση",
"report": "Αναφορά προβλήματος / σφάλματος",
"discord": "Κοινότητα Discord",
"contribute": "Συνεισφέρετε"
}
},
"tools": {
"title": "Εργαλεία",
"items": {
"docker": "Docker"
}
}
}
}

View File

@@ -0,0 +1,44 @@
{
"metaTitle": "Πίνακες",
"pageTitle": "Πίνακες",
"cards": {
"statistics": {
"apps": "Εφαρμογές",
"widgets": "Widgets",
"categories": "Κατηγορίες"
},
"buttons": {
"view": "Προβολή πίνακα"
},
"menu": {
"setAsDefault": "Ορισμός ως προεπιλεγμένος πίνακας",
"delete": {
"label": "Οριστική διαγραφή",
"disabled": "Η διαγραφή απενεργοποιήθηκε, επειδή τα παλαιότερα components του Homarr δεν επιτρέπουν τη διαγραφή των προεπιλεγμένων ρυθμίσεων. Η διαγραφή θα είναι δυνατή στο μέλλον."
}
},
"badges": {
"fileSystem": "Σύστημα αρχείων",
"default": "Προεπιλογή"
}
},
"buttons": {
"create": "Δημιουργία νέου πίνακα"
},
"modals": {
"delete": {
"title": "Διαγραφή πίνακα",
"text": "Είστε σίγουροι, ότι θέλετε να διαγράψετε αυτόν τον πίνακα; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί και τα δεδομένα σας θα χαθούν μόνιμα."
},
"create": {
"title": "Δημιουργία πίνακα",
"text": "Το όνομα δεν μπορεί να αλλάξει μετά τη δημιουργία του πίνακα.",
"form": {
"name": {
"label": "Όνομα"
},
"submit": "Δημιουργία"
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"metaTitle": "Διαχείριση",
"hero": {
"title": "Καλώς ήρθατε, {{username}}",
"fallbackUsername": "Ανώνυμος",
"subtitle": "Καλώς ήρθατε στον κόμβο εφαρμογών σας. Οργανώστε, βελτιστοποιήστε και κατακτήστε!"
},
"quickActions": {
"title": "Γρήγορες ενέργειες",
"boards": {
"title": "Οι πίνακές σας",
"subtitle": "Δημιουργήστε και διαχειριστείτε τους πίνακες σας"
},
"inviteUsers": {
"title": "Πρόσκληση νέου χρήστη",
"subtitle": "Δημιουργία και αποστολή πρόσκλησης για εγγραφή"
},
"manageUsers": {
"title": "Διαχείριση χρηστών",
"subtitle": "Διαγραφή και διαχείριση των χρηστών σας"
}
}
}

View File

@@ -0,0 +1,36 @@
{
"metaTitle": "Χρήστες",
"pageTitle": "Διαχείριση χρηστών",
"text": "Χρησιμοποιώντας τους χρήστες, μπορείτε να ρυθμίσετε ποιος μπορεί να επεξεργάζεται τους πίνακές σας. Οι μελλοντικές εκδόσεις του Homarr θα έχουν ακόμα πιο λεπτομερή έλεγχο των δικαιωμάτων και των πινάκων.",
"buttons": {
"create": "Δημιουργία"
},
"table": {
"header": {
"user": "Χρήστης"
}
},
"tooltips": {
"deleteUser": "Διαγραφή χρήστη",
"demoteAdmin": "Υποβίβαση διαχειριστή",
"promoteToAdmin": "Προαγωγή σε διαχειριστή"
},
"modals": {
"delete": {
"title": "Διαγραφή χρήστη {{name}}",
"text": "Είστε σίγουροι ότι θέλετε να διαγράψετε τον χρήστη {{name}}; Αυτό θα διαγράψει τα δεδομένα που σχετίζονται με αυτόν τον λογαριασμό, αλλά όχι τους πίνακες που έχουν δημιουργηθεί από αυτόν τον χρήστη."
},
"change-role": {
"promote": {
"title": "Προαγωγή του χρήστη {{name}} σε διαχειριστή",
"text": "Είστε σίγουροι ότι θέλετε να προάγετε τον χρήστη {{name}} σε διαχειριστή; Αυτό θα δώσει στον χρήστη πρόσβαση σε όλους τους πόρους της Homarr εγκατάστασης σας."
},
"demote": {
"title": "Υποβιβασμός του χρήστη {{name}} σε χρήστη",
"text": "Είστε σίγουροι ότι θέλετε να υποβιβάσετε τον χρήστη {{name}} σε χρήστη; Αυτό θα αφαιρέσει την πρόσβαση του χρήστη σε όλους τους πόρους της Homarr εγκατάστασης σας."
},
"confirm": "Επιβεβαίωση"
}
},
"searchDoesntMatch": "Η αναζήτησή σας δεν ταιριάζει με καμία καταχώριση. Παρακαλώ προσαρμόστε το φίλτρο σας."
}

View File

@@ -0,0 +1,52 @@
{
"metaTitle": "Δημιουργία χρήστη",
"steps": {
"account": {
"title": "Πρώτο βήμα",
"text": "Δημιουργία λογαριασμού",
"username": {
"label": "Όνομα Χρήστη"
},
"email": {
"label": "E-Mail"
}
},
"security": {
"title": "Δεύτερο βήμα",
"text": "Κωδικός",
"password": {
"label": "Κωδικός"
}
},
"finish": {
"title": "Επιβεβαίωση",
"text": "Αποθήκευση στη βάση δεδομένων",
"card": {
"title": "Ελέγξτε τις εισαγωγές σας",
"text": "Μετά την υποβολή των δεδομένων σας στη βάση δεδομένων, ο χρήστης θα είναι σε θέση να συνδεθεί. Είστε βέβαιοι ότι θέλετε να αποθηκεύσετε αυτό το χρήστη στη βάση δεδομένων και να ενεργοποιήσετε τη σύνδεση;"
},
"table": {
"header": {
"property": "Ιδιότητα",
"value": "Τιμή",
"username": "Όνομα Χρήστη",
"email": "E-Mail",
"password": "Κωδικός"
},
"notSet": "Δεν έχει οριστεί",
"valid": "Έγκυρο"
},
"failed": "Η δημιουργία χρήστη απέτυχε: {{error}}"
},
"completed": {
"alert": {
"title": "Ο χρήστης δημιουργήθηκε",
"text": "Ο χρήστης δημιουργήθηκε στη βάση δεδομένων. Μπορεί πλέον να συνδεθεί."
}
}
},
"buttons": {
"generateRandomPassword": "Δημιουργία τυχαίου",
"createAnother": "Δημιουργία άλλου"
}
}

View File

@@ -0,0 +1,48 @@
{
"metaTitle": "Προσκλήσεις χρηστών",
"pageTitle": "Διαχείριση προσκλήσεων χρηστών",
"description": "Χρησιμοποιώντας προσκλήσεις, μπορείτε να προσκαλέσετε χρήστες στο Homarr σας. Μια πρόσκληση ισχύει μόνο για συγκεκριμένο χρονικό διάστημα και μπορεί να χρησιμοποιηθεί μία φορά. Η λήξη πρέπει να είναι μεταξύ 5 λεπτών και 12 μηνών κατά τη δημιουργία.",
"button": {
"createInvite": "Δημιουργία πρόσκλησης",
"deleteInvite": "Διαγραφή πρόσκλησης"
},
"table": {
"header": {
"id": "Αναγνωριστικό (ID)",
"creator": "Δημιουργός",
"expires": "Λήγει",
"action": "Ενέργειες"
},
"data": {
"expiresAt": "έληξε {{at}}",
"expiresIn": "σε {{in}}"
}
},
"modals": {
"create": {
"title": "Δημιουργία πρόσκλησης",
"description": "Μετά τη λήξη, μια πρόσκληση δε θα είναι πλέον έγκυρη και ο παραλήπτης της πρόσκλησης δε θα είναι σε θέση να δημιουργήσει λογαριασμό.",
"form": {
"expires": "Ημερομηνία λήξης",
"submit": "Δημιουργία"
}
},
"copy": {
"title": "Αντιγραφή πρόσκλησης",
"description": "Η πρόσκλησή σας έχει δημιουργηθεί. Αφού κλείσει αυτό το modal, <b>δεν θα μπορείτε πλέον να αντιγράψετε αυτόν τον σύνδεσμο</b>. Εάν δεν επιθυμείτε πλέον να προσκαλέσετε το εν λόγω άτομο, μπορείτε να διαγράψετε αυτή την πρόσκληση ανά πάσα στιγμή.",
"invitationLink": "Σύνδεσμος πρόσκλησης",
"details": {
"id": "Αναγνωριστικό (ID)",
"token": "Token"
},
"button": {
"close": "Αντιγραφή & Απόρριψη"
}
},
"delete": {
"title": "Διαγραφή πρόσκλησης",
"description": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την πρόσκληση; Οι χρήστες με αυτόν τον σύνδεσμο δεν θα μπορούν πλέον να δημιουργήσουν λογαριασμό χρησιμοποιώντας αυτόν τον σύνδεσμο."
}
},
"noInvites": "Δεν υπάρχουν ακόμη προσκλήσεις."
}

View File

@@ -7,9 +7,6 @@
"useSonarrv4": {
"label": "Χρήση του API Sonarr v4"
},
"sundayStart": {
"label": "Ξεκινήστε την εβδομάδα από την Κυριακή"
},
"radarrReleaseType": {
"label": "Τύπος κυκλοφορίας Radarr",
"data": {
@@ -22,7 +19,7 @@
"label": "Απόκρυψη εργάσιμων"
},
"showUnmonitored": {
"label": ""
"label": "Εμφάνιση αντικειμένων που δεν παρακολουθούνται"
},
"fontSize": {
"label": "Μέγεθος γραμματοσειράς",

View File

@@ -1,6 +1,18 @@
{
"descriptor": {
"name": "Στοιχεία ελέγχου DNS hole",
"description": "Ελέγξτε το PiHole ή το AdGuard από το dashboard σας"
"description": "Ελέγξτε το PiHole ή το AdGuard από το dashboard σας",
"settings": {
"title": "Ρυθμίσεις ελέγχου DNS hole",
"showToggleAllButtons": {
"label": "Εμφάνιση Κουμπιών 'Ενεργοποίηση/Απενεργοποίηση Όλων'"
}
},
"errors": {
"general": {
"title": "Αδυναμία εύρεσης DNS hole",
"text": "Υπήρξε ένα πρόβλημα κατά τη σύνδεση στο/α DNS Hole(s) σας. Παρακαλώ επαληθεύστε τις ρυθμίσεις / ενσωμάτωση."
}
}
}
}

View File

@@ -33,5 +33,5 @@
"unknown": "Άγνωστο"
}
},
"error": "Προέκυψε ένα σφάλμα"
"error": αρουσιάστηκε ένα σφάλμα"
}

View File

@@ -0,0 +1,7 @@
{
"number": "Περιλαμβάνει αριθμό",
"lowercase": "Περιλαμβάνει πεζό γράμμα",
"uppercase": "Περιλαμβάνει κεφαλαίο γράμμα",
"special": "Περιλαμβάνει ειδικό χαρακτήρα",
"length": "Περιλαμβάνει τουλάχιστον {{count}} χαρακτήρες"
}

View File

@@ -0,0 +1,6 @@
{
"allowGuests": {
"label": "Να επιτρέπεται η ανωνυμία",
"description": "Επιτρέψτε σε χρήστες που δεν είναι συνδεδεμένοι να δουν τον πίνακα σας"
}
}

View File

@@ -20,6 +20,10 @@
"accessibility": {
"name": "Προσβασιμότητα",
"description": "Διαμόρφωση του Homarr για χρήστες με αναπηρία και άτομα με ειδικές ανάγκες"
},
"access": {
"name": "Πρόσβαση",
"description": "Ρυθμίστε ποιος έχει πρόσβαση στο ταμπλό σας"
}
}
}

View File

@@ -23,8 +23,5 @@
"description": "Περαιτέρω, προσαρμόστε τον πίνακα ελέγχου σας χρησιμοποιώντας CSS, συνιστάται μόνο για έμπειρους χρήστες",
"placeholder": "Το προσαρμοσμένο CSS θα εφαρμοστεί τελευταίο",
"applying": "Εφαρμογή CSS..."
},
"buttons": {
"submit": "Υποβολή"
}
}
}

View File

@@ -0,0 +1,32 @@
{
"title": "Docker",
"alerts": {
"notConfigured": {
"text": "Η Homarr εγκατάσταση σας δεν έχει το Docker εγκατεστημένο ή απέτυχε να ανακτήσει τα containers. Ελέγξτε την τεκμηρίωση για το πώς να ρυθμίσετε την ενσωμάτωση."
}
},
"modals": {
"selectBoard": {
"title": "Επιλέξτε έναν πίνακα",
"text": "Επιλέξτε τον πίνακα όπου θέλετε να προσθέσετε τις εφαρμογές για τα επιλεγμένα Docker containers.",
"form": {
"board": {
"label": "Πίνακας"
},
"submit": "Προσθήκη εφαρμογών"
}
}
},
"notifications": {
"selectBoard": {
"success": {
"title": "Προστέθηκαν εφαρμογές στον πίνακα",
"message": "Οι εφαρμογές για τα επιλεγμένα Docker containers έχουν προστεθεί στον πίνακα."
},
"error": {
"title": "Αποτυχία προσθήκης εφαρμογών στον πίνακα",
"message": "Οι εφαρμογές για τα επιλεγμένα Docker containers δεν μπόρεσαν να προστεθούν στον πίνακα."
}
}
}
}

View File

@@ -0,0 +1,48 @@
{
"metaTitle": "Ρυθμίσεις",
"pageTitle": "Οι ρυθμίσεις σας",
"boards": {
"defaultBoard": {
"label": "Προεπιλεγμένο ταμπλο"
}
},
"accessibility": {
"title": "Προσβασιμότητα",
"disablePulse": {
"label": "Απενεργοποίηση παλμού ping",
"description": "Από προεπιλογή, οι δείκτες ping στο Homarr θα πάλλονται. Αυτό μπορεί να είναι ενοχλητικό. Αυτή η ρύθμιση θα απενεργοποιήσει το παλλόμενο εφέ"
},
"replaceIconsWithDots": {
"label": "Αντικαταστήστε τις τελείες ping με εικονίδια",
"description": "Για τους χρήστες με αχρωματοψία, οι κουκκίδες ping μπορεί να μην είναι αναγνωρίσιμες. Αυτό θα αντικαταστήσει τις ενδείξεις με εικονίδια"
}
},
"localization": {
"language": {
"label": "Γλώσσα"
},
"firstDayOfWeek": {
"label": "Πρώτη ημέρα της εβδομάδας",
"options": {
"monday": "Δευτέρα",
"saturday": "Σάββατο",
"sunday": "Κυριακή"
}
}
},
"searchEngine": {
"title": "Μηχανή αναζήτησης",
"custom": "Προσαρμοσμένη",
"newTab": {
"label": "Άνοιγμα αποτελεσμάτων αναζήτησης σε νέα καρτέλα"
},
"autoFocus": {
"label": "Εστίαση της γραμμής αναζήτησης κατά τη φόρτωση της σελίδας.",
"description": "Αυτό θα εστιάσει αυτόματα τη γραμμή αναζήτησης, όταν μεταβείτε στις σελίδες του πίνακα. Θα λειτουργήσει μόνο σε συσκευές γραφείου."
},
"template": {
"label": "Ερώτημα URL",
"description": "Χρησιμοποιήστε το %s ως placeholder για το query"
}
}
}

View File

@@ -0,0 +1,22 @@
{
"errors": {
"default": "Το πεδίο δεν είναι έγκυρο",
"required": "Αυτό το πεδίο είναι υποχρεωτικό",
"string": {
"startsWith": "Αυτό το πεδίο πρέπει να ξεκινά με {{startsWith}}",
"endsWith": "Το πεδίο αυτό πρέπει να τελειώνει με {{endsWith}}",
"includes": "Το πεδίο αυτό πρέπει να περιλαμβάνει το {{includes}}"
},
"tooSmall": {
"string": "Το πεδίο αυτό πρέπει να έχει μήκος τουλάχιστον {{minimum}} χαρακτήρες",
"number": "Το πεδίο αυτό πρέπει να είναι μεγαλύτερο ή ίσο του {{minimum}}"
},
"tooBig": {
"string": "Το πεδίο αυτό πρέπει να έχει μήκος το πολύ {{maximum}} χαρακτήρες",
"number": "Το πεδίο αυτό πρέπει να είναι μικρότερο ή ίσο του {{maximum}}"
},
"custom": {
"passwordMatch": "Οι κωδικοί πρέπει να είναι ίδιοι"
}
}
}

View File

@@ -13,7 +13,8 @@
},
"buttons": {
"submit": "Sign in"
}
},
"afterLoginRedirection": "After login, you'll be redirected to {{url}}"
},
"alert": "Your credentials are incorrect or this account doesn't exist. Please try again."
}

View File

@@ -0,0 +1,5 @@
{
"title": "Access denied",
"text": "You do not have sufficient permissions to access this page. If you believe, that this is not intentional, please contact your administrator.",
"switchAccount": "Switch to a different account"
}

View File

@@ -7,6 +7,9 @@
"useSonarrv4": {
"label": "Use Sonarr v4 API"
},
"useRadarrv5": {
"label": "Use Radarr v5 API"
},
"radarrReleaseType": {
"label": "Radarr release type",
"data":{

View File

@@ -1,6 +1,18 @@
{
"descriptor": {
"name": "DNS hole controls",
"description": "Control PiHole or AdGuard from your dashboard"
"description": "Control PiHole or AdGuard from your dashboard",
"settings": {
"title": "DNS hole controls settings",
"showToggleAllButtons": {
"label": "Show 'Enable/Disable All' Buttons"
}
},
"errors": {
"general": {
"title": "Unable to find a DNS hole",
"text": "There was a problem connecting to your DNS Hole(s). Please verify your configuration/integration(s)."
}
}
}
}

View File

@@ -13,8 +13,6 @@
}
},
"noRequests": "No requests found. Please ensure that you've configured your apps correctly.",
"pending": "There are {{countPendingApproval}} requests waiting for approval.",
"nonePending": "There are currently no pending approvals. You're good to go!",
"state": {
"approved": "Approved",
"pendingApproval": "Pending approval",

View File

@@ -1,7 +1,7 @@
{
"descriptor": {
"name": "RSS Widget",
"description": "",
"description": "The rss widget allows you to display RSS feeds on your dashboard.",
"settings": {
"title": "Settings for RSS widget",
"rssFeedUrl": {

View File

@@ -33,5 +33,5 @@
"unknown": "Unknown"
}
},
"error": "An error occured"
"error": "An error occurred"
}

View File

@@ -0,0 +1,6 @@
{
"allowGuests": {
"label": "Allow anonymous",
"description": "Allow users that are not logged in to view your board"
}
}

View File

@@ -20,6 +20,10 @@
"accessibility": {
"name": "Accessibility",
"description": "Configure Homarr for disabled and handicapped users"
},
"access": {
"name": "Acccess",
"description": "Configure who has access to your board"
}
}
}

View File

@@ -36,6 +36,10 @@
"newTab": {
"label": "Open search results in a new tab"
},
"autoFocus": {
"label": "Focus search bar on page load.",
"description": "This will automatically focus the search bar, when you navigate to the board pages. It will only work on desktop devices."
},
"template": {
"label": "Query URL",
"description": "Use %s as a placeholder for the query"

View File

@@ -0,0 +1,35 @@
{
"metaTitle": "Crear cuenta",
"title": "Crear cuenta",
"text": "Por favor, define tus credenciales a continuación",
"form": {
"fields": {
"username": {
"label": "Nombre de usuario"
},
"password": {
"label": "Contraseña"
},
"passwordConfirmation": {
"label": "Confirmar contraseña"
}
},
"buttons": {
"submit": "Crear cuenta"
}
},
"notifications": {
"loading": {
"title": "Creando cuenta",
"text": "Por favor, espera"
},
"success": {
"title": "Cuenta creada",
"text": "Tu cuenta ha sido creada con éxito"
},
"error": {
"title": "Error",
"text": "Algo salió mal, se encontró el siguiente error: {{error}}"
}
}
}

View File

@@ -1,27 +1,20 @@
{
"metaTitle": "Iniciar sesión",
"title": "¡Bienvenido/a otra vez!",
"text": "Por favor, introduce tu contraseña",
"text": "Por favor, introduce tus credenciales",
"form": {
"fields": {
"username": {
"label": "Nombre de usuario"
},
"password": {
"label": "Contraseña",
"placeholder": "Tu contraseña"
"label": "Contraseña"
}
},
"buttons": {
"submit": "Iniciar sesión"
}
},
"afterLoginRedirection": "Después de iniciar sesión, serás redirigido a {{url}}"
},
"notifications": {
"checking": {
"title": "Comprobando tu contraseña",
"message": "Tu contraseña está siendo comprobada..."
},
"correct": {
"title": "Inicio de sesión satisfactorio, redirigiendo..."
},
"wrong": {
"title": "La contraseña introducida es incorrecta, por favor, inténtalo de nuevo."
}
}
}
"alert": "Tus credenciales son incorrectas o esta cuenta no existe. Por favor, inténtalo de nuevo."
}

View File

@@ -0,0 +1,5 @@
{
"header": {
"customize": "Personalizar tablero"
}
}

View File

@@ -0,0 +1,29 @@
{
"metaTitle": "Personalizar tablero {{name}}",
"pageTitle": "Personalización para el tablero {{name}}",
"backToBoard": "Volver al tablero",
"settings": {
"appearance": {
"primaryColor": "Color primario",
"secondaryColor": "Color secundario"
}
},
"save": {
"button": "Guardar cambios",
"note": "¡Cuidado, tienes cambios sin guardar!"
},
"notifications": {
"pending": {
"title": "Guardando personalización",
"message": "Por favor, espera mientras guardamos tu personalización"
},
"success": {
"title": "Personalización guardada",
"message": "Tu personalización se ha guardado correctamente"
},
"error": {
"title": "Error",
"message": "No se pueden guardar los cambios"
}
}
}

View File

@@ -3,9 +3,13 @@
"about": "Acerca de",
"cancel": "Cancelar",
"close": "Cerrar",
"back": "Atrás",
"delete": "Eliminar",
"ok": "OK",
"edit": "Editar",
"next": "Siguiente",
"previous": "Anterior",
"confirm": "Confirmar",
"enabled": "Activado",
"disabled": "Desactivado",
"enableAll": "Activar todo",

View File

@@ -0,0 +1,34 @@
{
"experimentalNote": {
"label": "Esta es una característica experimental de Homarr. Por favor, reporta cualquier problema en <gh>GitHub</gh> o <dc>Discord</dc>."
},
"search": {
"label": "Buscar",
"engines": {
"web": "Buscar {{query}} en la web",
"youtube": "Buscar {{query}} en YouTube",
"torrent": "Buscar {{query}} en torrents",
"movie": "Buscar {{query}} en {{app}}"
}
},
"actions": {
"avatar": {
"switchTheme": "Cambiar tema",
"preferences": "Preferencias de usuario",
"defaultBoard": "Panel predeterminado",
"manage": "Administrar",
"about": {
"label": "Acerca de",
"new": "Nuevo"
},
"logout": "Cerrar sesión de {{username}}",
"login": "Iniciar sesión"
}
},
"modals": {
"movie": {
"title": "",
"topResults": "Mejores {{count}} resultados para <b>{{search}}</b>."
}
}
}

View File

@@ -0,0 +1,32 @@
{
"navigation": {
"home": {
"title": "Inicio"
},
"boards": {
"title": "Tableros"
},
"users": {
"title": "Usuarios",
"items": {
"manage": "Administrar",
"invites": "Invitaciones"
}
},
"help": {
"title": "Ayuda",
"items": {
"documentation": "Documentación",
"report": "Reportar un problema / error",
"discord": "Comunidad Discord",
"contribute": "Contribuir"
}
},
"tools": {
"title": "Herramientas",
"items": {
"docker": "Docker"
}
}
}
}

View File

@@ -0,0 +1,44 @@
{
"metaTitle": "Tableros",
"pageTitle": "Tableros",
"cards": {
"statistics": {
"apps": "Aplicaciones",
"widgets": "Widgets",
"categories": "Categorías"
},
"buttons": {
"view": "Ver tablero"
},
"menu": {
"setAsDefault": "Establecer como tu tablero predeterminado",
"delete": {
"label": "Eliminar permanentemente",
"disabled": "Eliminación deshabilitada, porque los componentes más antiguos de Homarr no permiten la eliminación de la configuración predeterminada. La eliminación será posible en el futuro."
}
},
"badges": {
"fileSystem": "Sistema de archivos",
"default": "Por defecto"
}
},
"buttons": {
"create": "Crear nuevo tablero"
},
"modals": {
"delete": {
"title": "Eliminar tablero",
"text": "¿Estás seguro de que deseas eliminar este tablero? Esta acción no se puede deshacer y tus datos se perderán permanentemente."
},
"create": {
"title": "Crear tablero",
"text": "El nombre no se puede cambiar una vez creado el tablero.",
"form": {
"name": {
"label": "Nombre"
},
"submit": "Crear"
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"metaTitle": "Administrar",
"hero": {
"title": "Bienvenido/a de nuevo, {{username}}",
"fallbackUsername": "Anónimo",
"subtitle": "Bienvenido/a a tu centro de aplicaciones. ¡Organiza, optimiza y conquista!"
},
"quickActions": {
"title": "Acciones rápidas",
"boards": {
"title": "Tus tableros",
"subtitle": "Crea y administra tus tableros"
},
"inviteUsers": {
"title": "Invitar a un nuevo usuario",
"subtitle": "Crear y enviar una invitación para registrarse"
},
"manageUsers": {
"title": "Administrar usuarios",
"subtitle": "Elimina y administra tus usuarios"
}
}
}

View File

@@ -0,0 +1,36 @@
{
"metaTitle": "Usuarios",
"pageTitle": "Administrar usuarios",
"text": "Mediante los usuarios, puedes configurar quién puede editar tus paneles. Las versiones futuras de Homarr tendrán un control aún más granular sobre los permisos y los tableros.",
"buttons": {
"create": "Crear"
},
"table": {
"header": {
"user": "Usuario"
}
},
"tooltips": {
"deleteUser": "Eliminar usuario",
"demoteAdmin": "Degradar administrador",
"promoteToAdmin": "Promover a administrador"
},
"modals": {
"delete": {
"title": "Eliminar usuario {{name}}",
"text": "¿Estás seguro de que deseas eliminar el usuario {{name}}? Esto eliminará los datos asociados con esta cuenta, pero no los paneles creados por este usuario."
},
"change-role": {
"promote": {
"title": "Promover al usuario {{name}} a administrador",
"text": "¿Estás seguro de que deseas promocionar al usuario {{name}} a administrador? Esto le dará al usuario acceso a todos los recursos en tu instancia de Homarr."
},
"demote": {
"title": "Degradar al usuario {{name}} a usuario",
"text": "¿Estás seguro de que deseas degradar al usuario {{name}} a usuario? Esto eliminará el acceso del usuario a todos los recursos en tu instancia de Homarr."
},
"confirm": "Confirmar"
}
},
"searchDoesntMatch": "Tu búsqueda no coincide con ningún registro. Por favor, ajusta tu filtro."
}

View File

@@ -0,0 +1,52 @@
{
"metaTitle": "Crear usuario",
"steps": {
"account": {
"title": "Primer paso",
"text": "Crear cuenta",
"username": {
"label": "Nombre de usuario"
},
"email": {
"label": "Correo electrónico"
}
},
"security": {
"title": "Segundo paso",
"text": "Contraseña",
"password": {
"label": "Contraseña"
}
},
"finish": {
"title": "Confirmación",
"text": "Guardar en la base de datos",
"card": {
"title": "Revisar datos introducidos",
"text": "Después de enviar tus datos a la base de datos, el usuario podrá iniciar sesión. ¿Está seguro de que desea almacenar este usuario en la base de datos y activar el inicio de sesión?"
},
"table": {
"header": {
"property": "Propiedad",
"value": "Valor",
"username": "Nombre de usuario",
"email": "Correo electrónico",
"password": "Contraseña"
},
"notSet": "No configurado",
"valid": "Válido"
},
"failed": "La creación del usuario ha fallado: {{error}}"
},
"completed": {
"alert": {
"title": "El usuario fue creado",
"text": "El usuario fue creado en la base de datos. Ahora pueden iniciar sesión."
}
}
},
"buttons": {
"generateRandomPassword": "Generar aleatorio",
"createAnother": "Crear otro"
}
}

View File

@@ -0,0 +1,48 @@
{
"metaTitle": "Invitaciones de usuario",
"pageTitle": "Administrar invitaciones de usuario",
"description": "Mediante invitaciones, puedes invitar usuarios a tu instancia de Homarr. Una invitación solo será válida por un período de tiempo determinado y podrá usarse una vez. La caducidad debe ser entre 5 minutos y 12 meses desde su creación.",
"button": {
"createInvite": "Crear invitación",
"deleteInvite": "Eliminar invitación"
},
"table": {
"header": {
"id": "ID",
"creator": "Creador",
"expires": "Caduca",
"action": "Acciones"
},
"data": {
"expiresAt": "Caducado {{at}}",
"expiresIn": "en {{in}}"
}
},
"modals": {
"create": {
"title": "Crear invitación",
"description": "Después de la caducidad, una invitación ya no será válida y el destinatario de la invitación no podrá crear una cuenta.",
"form": {
"expires": "Fecha de caducidad",
"submit": "Crear"
}
},
"copy": {
"title": "Copiar invitación",
"description": "Tu invitación ha sido generada. Después de que se cierre esta ventana, <b>ya no podrás copiar este enlace</b>. Si ya no deseas invitar a dicha persona, puedes eliminar esta invitación en cualquier momento.",
"invitationLink": "Link de invitación",
"details": {
"id": "ID",
"token": "Token"
},
"button": {
"close": "Copiar y Descartar"
}
},
"delete": {
"title": "Eliminar invitación",
"description": "¿Estás seguro de que deseas eliminar esta invitación? Los usuarios con este enlace ya no podrán crear una cuenta usando ese enlace."
}
},
"noInvites": "Aún no hay invitaciones."
}

Some files were not shown because too many files have changed in this diff Show More