diff --git a/.eslintrc.js b/.eslintrc.js index 2490d3526..bddf82eae 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -18,6 +18,7 @@ module.exports = { project: './tsconfig.json', }, rules: { + 'import/no-cycle': 'off', 'react/react-in-jsx-scope': 'off', 'react/no-children-prop': 'off', 'unused-imports/no-unused-imports': 'warn', @@ -28,5 +29,6 @@ module.exports = { '@typescript-eslint/no-shadow': 'off', '@typescript-eslint/no-use-before-define': 'off', '@typescript-eslint/no-non-null-assertion': 'off', + 'linebreak-style': 0, }, }; diff --git a/README.md b/README.md index 3331187db..14fca34f2 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,9 @@

Join the discord! — Don't forget to star the repo if you are enjoying the project!

+

Read the Docs

- Demo ↗️ Install ➡️ Read the Docs 📄 + Demo ↗️ Install ➡️

--- @@ -36,16 +37,14 @@ Homarr is a simple and lightweight homepage for your server, that helps you easi It integrates with the services you use to display information on the homepage (E.g. Show upcoming Sonarr/Radarr releases). -For a full list of integrations, [head over to our documentation](https://homarr.vercel.app/docs/advanced-configuration/integrations). +For a full list of integrations, [head over to our documentation](https://homarr.dev/docs/advanced-configuration/integrations). If you have any questions about Homarr or want to share information with us, please go to one of the following places: - [Github Discussions](https://github.com/ajnart/homarr/discussions) - [Discord Server](https://discord.gg/aCsmEV5RgA) -*Before you file an [issue](https://github.com/ajnart/homarr/issues/new/choose), make sure you have read the [known issues](#-known-issues) section.* - -**For more information, [read the documentation!](https://homarr.vercel.app/docs/about)** +**For more information, [read the documentation!](https://homarr.dev/docs/about)**
Table of Contents @@ -53,10 +52,7 @@ If you have any questions about Homarr or want to share information with us, ple - [✨ Features](#-features) - [👀 Preview](#-preview) -- [💥 Known Issues](#-known-issues) -- [🚀 Installation](#-installation) - - [🐳 Deploying from Docker Image](#-deploying-from-docker-image) - - [🛠️ Building from Source](#️-building-from-source) +- [🛠️ Running a dev environment](#️-running-a-dev-environment) - [💖 Contributing](#-contributing) - [📜 License](#-license) @@ -87,58 +83,7 @@ If you have any questions about Homarr or want to share information with us, ple --- -## 💥 Known Issues -- Posters on the Calendar get blocked by adblockers. (IMDb posters) - -**[⤴️ Back to Top](#homarr)** - ---- - -## 🚀 Installation -### 🐳 Deploying from Docker Image -> Supported architectures: x86-64, ARM, ARM64 - -_Requirements_: -- [Docker](https://docs.docker.com/get-docker/) - -**Standard Docker Install** -```bash -docker run \ - --name homarr \ - --restart unless-stopped \ - -p 7575:7575 \ - -v ./homarr/configs:/app/data/configs \ - -v ./homarr/icons:/app/public/icons \ - -d ghcr.io/ajnart/homarr:latest -``` - -**Docker Compose** -```yml -version: '3' -#---------------------------------------------------------------------# -# Homarr - A homepage for your server. # -#---------------------------------------------------------------------# -services: - homarr: - container_name: homarr - image: ghcr.io/ajnart/homarr:latest - restart: unless-stopped - volumes: - - ./homarr/configs:/app/data/configs - - ./homarr/icons:/app/public/icons - ports: - - '7575:7575' -``` - -```sh -docker compose up -d -``` - -*Getting EACCESS errors in the logs? Try running `sudo chmod 777 /directory-you-mounted-to`!* - -**[⤴️ Back to Top](#homarr)** - -### 🛠️ Building from Source +### 🛠️ Running a dev environment _Requirements_: - [Git](https://git-scm.com/downloads) @@ -197,7 +142,7 @@ SOFTWARE. ---

- Thank you for visiting! For more information read the documentation! + Thank you for visiting! For more information read the documentation!

diff --git a/data/configs/default.json b/data/configs/default.json index 3f2acea0d..6da172167 100644 --- a/data/configs/default.json +++ b/data/configs/default.json @@ -1,20 +1,383 @@ { - "name": "default", - "services": [ + "schemaVersion": 1, + "configProperties": { + "name": "default" + }, + "categories": [ { - "name": "example", - "id": "09c45847-8afc-4c1a-9697-f03192de948a", - "type": "Other", - "icon": "https://c.tenor.com/o656qFKDzeUAAAAC/rick-astley-never-gonna-give-you-up.gif", - "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" + "id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f", + "position": 1, + "name": "Welcome to Homarr 🎉", + "type": "category" + } + ], + "wrappers": [ + { + "id": "default", + "position": 1 + } + ], + "apps": [ + { + "id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a337", + "name": "Discord", + "url": "https://discord.com/invite/aCsmEV5RgA", + "behaviour": { + "onClickUrl": "https://discord.com/invite/aCsmEV5RgA", + "isOpeningNewTab": true, + "externalUrl": "https://discord.com/invite/aCsmEV5RgA" + }, + "network": { + "enabledStatusChecker": false, + "okStatus": [ + 200 + ] + }, + "appearance": { + "iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/discord.png" + }, + "integration": { + "type": null, + "properties": [] + }, + "area": { + "type": "category", + "properties": { + "id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f" + } + }, + "shape": { + "md": { + "location": { + "x": 3, + "y": 1 + }, + "size": { + "width": 3, + "height": 1 + } + }, + "sm": { + "location": { + "x": 2, + "y": 1 + }, + "size": { + "width": 1, + "height": 1 + } + }, + "lg": { + "location": { + "x": 2, + "y": 1 + }, + "size": { + "width": 1, + "height": 1 + } + } + } + }, + { + "id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a330", + "name": "Contribute", + "url": "https://github.com/ajnart/homarr", + "behaviour": { + "onClickUrl": "https://github.com/ajnart/homarr", + "externalUrl": "https://github.com/ajnart/homarr", + "isOpeningNewTab": true + }, + "network": { + "enabledStatusChecker": false, + "okStatus": [] + }, + "appearance": { + "iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/github.png" + }, + "integration": { + "type": null, + "properties": [] + }, + "area": { + "type": "category", + "properties": { + "id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f" + } + }, + "shape": { + "md": { + "location": { + "x": 2, + "y": 0 + }, + "size": { + "width": 2, + "height": 1 + } + }, + "sm": { + "location": { + "x": 0, + "y": 2 + }, + "size": { + "width": 2, + "height": 1 + } + }, + "lg": { + "location": { + "x": 4, + "y": 0 + }, + "size": { + "width": 2, + "height": 2 + } + } + } + }, + { + "id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a990", + "name": "Donate", + "url": "https://ko-fi.com/ajnart", + "behaviour": { + "onClickUrl": "https://ko-fi.com/ajnart", + "externalUrl": "https://ko-fi.com/ajnart", + "isOpeningNewTab": true + }, + "network": { + "enabledStatusChecker": false, + "okStatus": [ + 200 + ] + }, + "appearance": { + "iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/ko-fi.png" + }, + "integration": { + "type": null, + "properties": [] + }, + "area": { + "type": "category", + "properties": { + "id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f" + } + }, + "shape": { + "md": { + "location": { + "x": 2, + "y": 1 + }, + "size": { + "width": 1, + "height": 1 + } + }, + "sm": { + "location": { + "x": 2, + "y": 2 + }, + "size": { + "width": 1, + "height": 1 + } + }, + "lg": { + "location": { + "x": 3, + "y": 1 + }, + "size": { + "width": 1, + "height": 1 + } + } + } + }, + { + "id": "5df743d9-5cb1-457c-85d2-64ff86855652", + "name": "Documentation", + "url": "https://homarr.dev", + "behaviour": { + "onClickUrl": "https://homarr.dev", + "externalUrl": "https://homarr.dev", + "isOpeningNewTab": true + }, + "network": { + "enabledStatusChecker": false, + "okStatus": [ + 200 + ] + }, + "appearance": { + "iconUrl": "/imgs/logo/logo.png" + }, + "integration": { + "type": null, + "properties": [] + }, + "area": { + "type": "category", + "properties": { + "id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f" + } + }, + "shape": { + "md": { + "location": { + "x": 0, + "y": 1 + }, + "size": { + "width": 2, + "height": 1 + } + }, + "sm": { + "location": { + "x": 0, + "y": 0 + }, + "size": { + "width": 1, + "height": 1 + } + }, + "lg": { + "location": { + "x": 0, + "y": 1 + }, + "size": { + "width": 2, + "height": 1 + } + } + } + } + ], + "widgets": [ + { + "id": "date", + "properties": { + "display24HourFormat": true + }, + "area": { + "type": "category", + "properties": { + "id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f" + } + }, + "shape": { + "sm": { + "location": { + "x": 0, + "y": 1 + }, + "size": { + "width": 2, + "height": 1 + } + }, + "md": { + "location": { + "x": 4, + "y": 0 + }, + "size": { + "width": 2, + "height": 1 + } + }, + "lg": { + "location": { + "x": 2, + "y": 0 + }, + "size": { + "width": 2, + "height": 1 + } + } + } + }, + { + "id": "weather", + "properties": { + "displayInFahrenheit": false, + "location": "Paris" + }, + "area": { + "type": "category", + "properties": { + "id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f" + } + }, + "shape": { + "md": { + "location": { + "x": 0, + "y": 0 + }, + "size": { + "width": 2, + "height": 1 + } + }, + "sm": { + "location": { + "x": 1, + "y": 0 + }, + "size": { + "width": 2, + "height": 1 + } + }, + "lg": { + "location": { + "x": 0, + "y": 0 + }, + "size": { + "width": 2, + "height": 1 + } + } + } } ], "settings": { - "searchUrl": "https://google.com/search?q=" - }, - "modules": { - "Search Bar": { - "enabled": true + "common": { + "searchEngine": { + "type": "google", + "properties": {} + } + }, + "customization": { + "layout": { + "enabledLeftSidebar": false, + "enabledRightSidebar": false, + "enabledDocker": false, + "enabledPing": false, + "enabledSearchbar": true + }, + "pageTitle": "Homarr v0.11 ⭐️", + "logoImageUrl": "/imgs/logo/logo.png", + "faviconUrl": "/imgs/favicon/favicon-squared", + "backgroundImageUrl": "", + "customCss": "", + "colors": { + "primary": "red", + "secondary": "yellow", + "shade": 7 + }, + "appOpacity": 100 } } } \ No newline at end of file diff --git a/data/constants.ts b/data/constants.ts index 8ca22cd0b..bad03062e 100644 --- a/data/constants.ts +++ b/data/constants.ts @@ -1,2 +1,3 @@ export const REPO_URL = 'ajnart/homarr'; -export const CURRENT_VERSION = 'v0.10.7'; +export const CURRENT_VERSION = 'v0.11.0'; +export const ICON_PICKER_SLICE_LIMIT = 36; diff --git a/next.config.js b/next.config.js index b9989cfa8..dde3ec977 100644 --- a/next.config.js +++ b/next.config.js @@ -1,5 +1,3 @@ -const { env } = require('process'); - const { i18n } = require('./next-i18next.config'); const withBundleAnalyzer = require('@next/bundle-analyzer')({ @@ -10,7 +8,7 @@ module.exports = withBundleAnalyzer({ images: { domains: ['cdn.jsdelivr.net'], }, - reactStrictMode: false, + reactStrictMode: true, output: 'standalone', i18n, }); diff --git a/package.json b/package.json index bef8a0f18..2894dad75 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "0.10.7", + "version": "0.11.0", "description": "Homarr - A homepage for your server.", "license": "MIT", "repository": { @@ -32,27 +32,27 @@ "@dnd-kit/utilities": "^3.2.0", "@emotion/react": "^11.10.5", "@emotion/server": "^11.10.0", - "@mantine/carousel": "^5.1.0", - "@mantine/core": "^5.7.2", - "@mantine/dates": "^5.7.2", - "@mantine/dropzone": "^5.7.2", - "@mantine/form": "^5.7.2", - "@mantine/hooks": "^5.7.2", - "@mantine/modals": "^5.7.2", - "@mantine/next": "^5.2.3", - "@mantine/notifications": "^5.7.2", - "@mantine/prism": "^5.0.0", + "@mantine/carousel": "^5.9.3", + "@mantine/core": "^5.9.3", + "@mantine/dates": "^5.9.3", + "@mantine/dropzone": "^5.9.3", + "@mantine/form": "^5.9.3", + "@mantine/hooks": "^5.9.3", + "@mantine/modals": "^5.9.3", + "@mantine/next": "^5.9.3", + "@mantine/notifications": "^5.9.3", + "@mantine/prism": "^5.9.3", "@nivo/core": "^0.79.0", "@nivo/line": "^0.79.1", - "@tabler/icons": "^1.78.0", + "@tabler/icons": "^1.106.0", "@tanstack/react-query": "^4.2.1", - "add": "^2.0.6", "axios": "^0.27.2", "consola": "^2.15.3", "cookies-next": "^2.1.1", "dayjs": "^1.11.6", "dockerode": "^3.3.2", "embla-carousel-react": "^7.0.0", + "fily-publish-gridstack": "^0.0.13", "framer-motion": "^6.5.1", "i18next": "^21.9.1", "i18next-browser-languagedetector": "^6.1.5", @@ -61,6 +61,7 @@ "next": "12.2.0", "next-i18next": "^11.3.0", "nzbget-api": "^0.0.3", + "ping": "^0.4.2", "prism-react-renderer": "^1.3.5", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -68,13 +69,15 @@ "sharp": "^0.30.7", "systeminformation": "^5.12.1", "uuid": "^8.3.2", - "yarn": "^1.22.19" + "yarn": "^1.22.19", + "zustand": "^4.1.4" }, "devDependencies": { "@next/bundle-analyzer": "^12.1.4", "@next/eslint-plugin-next": "^12.1.4", "@types/dockerode": "^3.3.9", "@types/node": "17.0.1", + "@types/ping": "^0.4.1", "@types/react": "17.0.1", "@types/uuid": "^8.3.4", "@typescript-eslint/eslint-plugin": "^5.30.7", @@ -92,6 +95,7 @@ "eslint-plugin-unused-imports": "^2.0.0", "jest": "^28.1.3", "prettier": "^2.7.1", + "sass": "^1.56.1", "typescript": "^4.7.4" }, "resolutions": { diff --git a/public/imgs/favicon/favicon-squared.png b/public/imgs/favicon/favicon-squared.png index 66e321630..25581ea5c 100644 Binary files a/public/imgs/favicon/favicon-squared.png and b/public/imgs/favicon/favicon-squared.png differ diff --git a/public/locales/da/authentication/login.json b/public/locales/da/authentication/login.json index d81ca6743..8443dd103 100644 --- a/public/locales/da/authentication/login.json +++ b/public/locales/da/authentication/login.json @@ -1,6 +1,6 @@ { "title": "Velkommen tilbage!", - "text": "Angiv venligst adgangskoden", + "text": "Indtast venligst din adgangskode", "form": { "fields": { "password": { @@ -18,10 +18,10 @@ "message": "Din adgangskode er ved at blive tjekket..." }, "correct": { - "title": "Adgangskode korrekt, omdirigerer dig..." + "title": "Log ind vellykket, omdirigerer..." }, "wrong": { - "title": "Adgangskoden er forkert, prøv venligst igen." + "title": "Kodeordet du tastede ind, var forkert. Prøv venligst igen." } } } diff --git a/public/locales/da/common.json b/public/locales/da/common.json index d0ee0bd85..42592511e 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Gem" + "save": "Gem", + "about": "Om", + "cancel": "Annuller", + "close": "Luk", + "delete": "Slet", + "ok": "OK", + "edit": "Rediger", + "version": "Version", + "changePosition": "Ændre placering", + "remove": "Fjern", + "removeConfirm": "Er du sikker på, at du ønsker at fjerne {{item}} ?", + "sections": { + "settings": "Indstillinger", + "dangerZone": "Farezone" + }, + "secrets": { + "apiKey": "API nøgle", + "username": "Brugernavn", + "password": "Adgangskode" }, "tip": "Tip: ", "time": { @@ -8,4 +25,4 @@ "minutes": "minutter", "hours": "timer" } -} +} \ No newline at end of file diff --git a/public/locales/da/layout/add-service-app-shelf.json b/public/locales/da/layout/add-service-app-shelf.json index 80d76446b..c990a8485 100644 --- a/public/locales/da/layout/add-service-app-shelf.json +++ b/public/locales/da/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Avancerede indstillinger", "form": { - "httpStatusCodes": { - "label": "HTTP status kode", - "placeholder": "Vælg gyldige statuskoder", - "clearButtonLabel": "Ryd valgte", - "nothingFound": "Intet fundet" - }, "openServiceInNewTab": { "label": "Åbn tjeneste i ny fane" }, diff --git a/public/locales/da/layout/element-selector/selector.json b/public/locales/da/layout/element-selector/selector.json new file mode 100644 index 000000000..f6e731cf9 --- /dev/null +++ b/public/locales/da/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "Tilføj et nyt felt", + "text": "Felter er det vigtigste element i Homarr. De bruges til at vise dine apps og andre oplysninger. Du kan tilføje så mange felter, som du ønsker." + }, + "widgetDescription": "Widgets interagerer med dine apps for at give dig mere kontrol over dine programmer. De kræver normalt nogle få konfigurationer, før de kan bruges.", + "goBack": "Gå tilbage til det forrige trin", + "actionIcon": { + "tooltip": "Tilføj et felt" + } +} diff --git a/public/locales/da/layout/header/actions/toggle-edit-mode.json b/public/locales/da/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..e4c5db360 --- /dev/null +++ b/public/locales/da/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "I redigeringstilstand kan du justere felter og konfigurere apps. Ændringerne gemmes først, når du forlader redigeringstilstand.", + "button": { + "disabled": "Gå i redigeringstilstand", + "enabled": "Afslut og gem" + }, + "popover": { + "title": "Redigeringstilstand er aktiveret for <1>{{size}} størrelse", + "text": "Du kan justere og konfigurere dine apps nu. Ændringer er ikke gemt indtil du forlader redigeringstilstanden" + }, + "screenSizes": { + "small": "lille", + "medium": "mellem", + "large": "stor" + } +} diff --git a/public/locales/da/layout/mobile/drawer.json b/public/locales/da/layout/mobile/drawer.json new file mode 100644 index 000000000..c8f63000f --- /dev/null +++ b/public/locales/da/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} sidebjælke" +} diff --git a/public/locales/da/layout/modals/about.json b/public/locales/da/layout/modals/about.json new file mode 100644 index 000000000..d60c97911 --- /dev/null +++ b/public/locales/da/layout/modals/about.json @@ -0,0 +1,7 @@ +{ + "description": "Homarr er et elegant, moderne dashboard, der giver dig alle dine apps og tjenester lige ved hånden. Med Homarr kan du få adgang til og styre alt på ét praktisk sted. Homarr integrerer problemfrit med de apps, du har tilføjet, og giver dig værdifulde oplysninger og fuld kontrol. Installationen er en leg, og Homarr understøtter en lang række implementeringsmetoder.", + "i18n": "Indlæst I18n oversættelse navnerum", + "locales": "Konfigurerede I18n landestandarder", + "contact": "Har du problemer eller spørgsmål? Kontakt os!", + "addToDashboard": "Tilføj til dashboard" +} diff --git a/public/locales/da/layout/modals/add-app.json b/public/locales/da/layout/modals/add-app.json new file mode 100644 index 000000000..49d7d0241 --- /dev/null +++ b/public/locales/da/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "Generelt", + "behaviour": "Adfærd", + "network": "Netværk", + "appearance": "Udseende", + "integration": "Integration" + }, + "general": { + "appname": { + "label": "App navn", + "description": "Bruges til visning af appen på dashboardet." + }, + "internalAddress": { + "label": "Intern adresse", + "description": "Appens interne IP." + }, + "externalAddress": { + "label": "Ekstern adresse", + "description": "URL-adresse, der åbnes, når du klikker på appen." + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "Åbn i nyt faneblad", + "description": "Åbn appen i en ny fane i stedet for den aktuelle fane." + } + }, + "network": { + "statusChecker": { + "label": "Statuskontrol", + "description": "Kontrollerer, om din app er online ved hjælp af en simpel HTTP(S)-anmodning." + }, + "statusCodes": { + "label": "HTTP statuskoder", + "description": "De HTTP-statuskoder, der betragtes som online." + } + }, + "appearance": { + "icon": { + "label": "App Ikon", + "description": "Det ikon, der vises på dashboarded." + } + }, + "integration": { + "type": { + "label": "Konfiguration af integration", + "description": "Den integrationskonfiguration, der skal bruges til at oprette forbindelse til din app.", + "placeholder": "Vælg en integration", + "defined": "Defineret", + "undefined": "Udefineret", + "public": "Offentlig", + "private": "Privat", + "explanationPrivate": "En privat hemmelighed sendes kun én gang til serveren. Når din browser har opdateret siden, vil den aldrig blive sendt igen.", + "explanationPublic": "En offentlig hemmelighed vil altid blive sendt til klienten og er tilgængelig via API'en. Den bør ikke indeholde fortrolige værdier som f. eks. brugernavne, adgangskoder, tokens, certifikater og lignende!" + }, + "secrets": { + "description": "Hvis du vil opdatere en hemmelighed, skal du indtaste en værdi og klikke på knappen Gem. Hvis du vil fjerne en hemmelighed, skal du bruge knappen \"clear\".", + "warning": "Dine legitimationsoplysninger fungerer som adgang til dine integrationer, og du bør aldrig dele dem med andre. Det officielle Homarr-team vil aldrig bede om legitimationsoplysninger. Sørg for at opbevare og administrere dine hemmeligheder sikkert.", + "clear": "Ryd hemmelighed", + "save": "Gem hemmelighed", + "update": "Opdater hemmelighed" + } + }, + "validation": { + "popover": "Din formular indeholder ugyldige data. Derfor kan den ikke gemmes. Løs alle problemer og klik på denne knap igen for at gemme dine ændringer" + } +} diff --git a/public/locales/da/layout/modals/change-position.json b/public/locales/da/layout/modals/change-position.json new file mode 100644 index 000000000..84261868a --- /dev/null +++ b/public/locales/da/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "X akse position", + "width": "Bredde", + "height": "Højde", + "yPosition": "Y akse position", + "zeroOrHigher": "0 eller højere", + "betweenXandY": "Mellem {{min}} og {{max}}" +} \ No newline at end of file diff --git a/public/locales/da/layout/screen-sizes.json b/public/locales/da/layout/screen-sizes.json new file mode 100644 index 000000000..8c747f1da --- /dev/null +++ b/public/locales/da/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "lille", + "medium": "mellem", + "large": "stor" + } +} diff --git a/public/locales/da/layout/tools.json b/public/locales/da/layout/tools.json new file mode 100644 index 000000000..85fbf92c4 --- /dev/null +++ b/public/locales/da/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "Du har i øjeblikket ingen værktøjer" + }, + "iconPicker": { + "textInputPlaceholder": "Søg efter ikoner...", + "searchLimitationTitle": "Søgningen er begrænset til {{max}} ikoner", + "searchLimitationMessage": "For at holde det hele hurtigt og hurtigt er søgningen begrænset til {{max}} ikoner. Brug søgefeltet til at finde flere ikoner" + } +} \ No newline at end of file diff --git a/public/locales/da/modules/calendar.json b/public/locales/da/modules/calendar.json index ab77fa36b..a32cb723b 100644 --- a/public/locales/da/modules/calendar.json +++ b/public/locales/da/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Kalender", - "description": "Et kalendermodul til visning af kommende udgivelser. Det interagerer med Sonarr- og Radarr-API'erne.", + "description": "Viser en kalender med kommende udgivelser fra understøttede integrationer.", "settings": { + "title": "Indstillinger for kalender widget", "sundayStart": { "label": "Søndag første ugedag" + }, + "radarrReleaseType": { + "label": "Radarr udgivelsestype" } } } -} \ No newline at end of file +} diff --git a/public/locales/da/modules/common.json b/public/locales/da/modules/common.json index 525018e17..68d59d38a 100644 --- a/public/locales/da/modules/common.json +++ b/public/locales/da/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Indstillinger" + }, + "errors": { + "unmappedOptions": { + "text": "Der er fundet en ubrugt parameter i konfigurationen
{{key}}. Homarr kan ikke fortolke og bruge denne parameter. For at undgå uventet adfærd skal du sikkerhedskopiere din konfiguration og rette konfigurationen." + } } -} \ No newline at end of file +} diff --git a/public/locales/da/modules/dashdot.json b/public/locales/da/modules/dashdot.json index 465ebcbf2..beefc98aa 100644 --- a/public/locales/da/modules/dashdot.json +++ b/public/locales/da/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "Et modul til visning af graferne for din kørende Dash. instans.", + "description": "Viser graferne for en ekstern Dash. instans i Homarr.", "settings": { + "title": "Indstillinger for Dash. widget", "cpuMultiView": { "label": "CPU Multikerne Visning" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/da/modules/date.json b/public/locales/da/modules/date.json index 3e52aa6de..f40ee2391 100644 --- a/public/locales/da/modules/date.json +++ b/public/locales/da/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Dato", - "description": "Vis det aktuelle klokkeslæt og den aktuelle dato på et kort", + "name": "Dato og tid", + "description": "Viser aktuel dag og klokkeslæt.", "settings": { + "title": "Indstillinger for dato og tid widget", "display24HourFormat": { "label": "Vis fuld tid (24-timer)" } } } -} \ No newline at end of file +} diff --git a/public/locales/da/modules/dlspeed.json b/public/locales/da/modules/dlspeed.json index 737c0f075..4e4811ed5 100644 --- a/public/locales/da/modules/dlspeed.json +++ b/public/locales/da/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Download hastighed", - "description": "Vis den aktuelle downloadhastighed for understøttede tjenester" + "description": "Viser download- og uploadhastigheden for understøttede integrationer." }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/da/modules/docker.json b/public/locales/da/modules/docker.json index 154f40f14..a5b6cf21f 100644 --- a/public/locales/da/modules/docker.json +++ b/public/locales/da/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Docker", - "description": "Tillader dig nemt at administrere dine docker containere" + "description": "Giver dig mulighed for nemt at se og administrere alle dine Docker Containers." }, "search": { "placeholder": "Søg efter container- eller imagenavn" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Tilføj tjeneste", - "message": "Tilføj tjeneste til Homarr" + "title": "Tilføj app", + "message": "Tilføj app til Homarr" }, "restart": { "title": "Genstart" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "Docker integration mislykkedes", - "message": "Har du glemt at montere docker socket ?" + "message": "Har du glemt at mounte docker socket?" }, "unknownError": { "title": "Der opstod en fejl" }, "oneServiceAtATime": { - "title": "Du må kun tilføje én tjeneste ad gangen!" + "title": "Tilføj kun én app eller tjeneste ad gangen!" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/da/modules/overseerr.json b/public/locales/da/modules/overseerr.json index ad0e86084..0ebd9a9bd 100644 --- a/public/locales/da/modules/overseerr.json +++ b/public/locales/da/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Giver dig mulighed for at søge og tilføje medier fra Overseerr/Jellyseerr" + "description": "Giver dig mulighed for at søge og tilføje medier fra Overseerr eller Jellyseerr." }, "popup": { "item": { @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/da/modules/ping.json b/public/locales/da/modules/ping.json index 092f95ca4..c8ca496cd 100644 --- a/public/locales/da/modules/ping.json +++ b/public/locales/da/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "Giver dig mulighed for at kontrollere, om tjenesten er oppe eller returnerer en bestemt HTTP-statuskode." + "description": "Viser en statusindikator afhængig af HTTP-svarkoden for en given URL." }, "states": { "online": "Online {{response}}", "offline": "Offline {{response}}", "loading": "Indlæser..." } -} \ No newline at end of file +} diff --git a/public/locales/da/modules/search.json b/public/locales/da/modules/search.json index 0c37951eb..876c99352 100644 --- a/public/locales/da/modules/search.json +++ b/public/locales/da/modules/search.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Søgebjælke", - "description": "Søgebjælke til at søge på nettet, Youtube, Torrents eller Overseerr" + "description": "En søgelinje, der giver dig mulighed for at søge i din brugerdefinerede søgemaskine, YouTube og understøttede integrationer." }, "input": { "placeholder": "Søg på nettet..." @@ -10,7 +10,7 @@ "searchEngines": { "search": { "name": "Web", - "description": "Søg ved hjælp af din søgemaskine (defineret i indstillinger)" + "description": "Søg..." }, "youtube": { "name": "YouTube", @@ -22,9 +22,9 @@ }, "overseerr": { "name": "Overseerr", - "description": "Søg efter film og tv-serier ved hjælp af Overseerr (modul skal være aktiveret)" + "description": "Søg efter film og tv-udsendelser på Overseerr" } }, "tip": "Du kan vælge søgefeltet med genvejen ", "switchedSearchEngine": "Skiftede til søgning med {{searchEngine}}" -} \ No newline at end of file +} diff --git a/public/locales/da/modules/torrents-status.json b/public/locales/da/modules/torrents-status.json index 229e81b56..8db870296 100644 --- a/public/locales/da/modules/torrents-status.json +++ b/public/locales/da/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { "name": "Torrent", - "description": "Vis den aktuelle downloadhastighed for understøttede tjenester", + "description": "Viser en liste over torrents fra understøttede Torrent-klienter.", "settings": { - "hideComplete": { - "label": "Skjul fuldførte torrents" + "title": "Indstillinger for Torrent-widget", + "refreshInterval": { + "label": "Opdateringsinterval (i sekunder)" + }, + "displayCompletedTorrents": { + "label": "Vis fuldførte torrents" + }, + "displayStaleTorrents": { + "label": "Vis torrents uden aktivitet" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "Ingen understøttede downloadklienter fundet!", - "text": "Tilføj en downloadtjeneste for at se dine aktuelle downloads" + "title": "Ingen understøttede Torrent-klienter fundet!", + "text": "Tilføj en understøttet Torrent-klient for at se dine aktuelle downloads" + }, + "generic": { + "title": "Der opstod en uventet fejl", + "text": "Homarr kunne ikke kommunikere med dine Torrent-klienter. Kontroller venligst din konfiguration" } + }, + "loading": { + "title": "Indlæser..." } } -} \ No newline at end of file +} diff --git a/public/locales/da/modules/usenet.json b/public/locales/da/modules/usenet.json index c66a44c52..99ebc60e5 100644 --- a/public/locales/da/modules/usenet.json +++ b/public/locales/da/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { "name": "Usenet", - "description": "Tillader dig at se din usenet (Sabnzbd eller NZBGet) kø og historie, pause og genoptage downloads" + "description": "Tillader dig at se og administrere din Usenet instans." }, "card": { "errors": { "noDownloadClients": { "title": "Ingen understøttede downloadklienter fundet!", - "text": "Tilføj en downloadtjeneste for at se dine aktuelle downloads" + "text": "Tilføj en understøttet Usenet Download Client for at se dine aktuelle downloads" } } }, diff --git a/public/locales/da/modules/weather.json b/public/locales/da/modules/weather.json index 5112fb794..1976d55a7 100644 --- a/public/locales/da/modules/weather.json +++ b/public/locales/da/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Vejr", - "description": "Se det aktuelle vejr på din placering", + "description": "Viser de aktuelle vejroplysninger for en bestemt placering.", "settings": { + "title": "Indstillinger for vejr widget", "displayInFahrenheit": { "label": "Vis i Fahrenheit" }, @@ -29,4 +30,4 @@ "unknown": "Ukendt" } } -} \ No newline at end of file +} diff --git a/public/locales/da/settings/common.json b/public/locales/da/settings/common.json index bf0186826..cd7e64ce5 100644 --- a/public/locales/da/settings/common.json +++ b/public/locales/da/settings/common.json @@ -11,5 +11,19 @@ "credits": { "madeWithLove": "Lavet med ❤️ af @" }, - "grow": "" -} \ No newline at end of file + "grow": "Forøg gitteret (udnyt al pladsen)", + "layout": { + "title": "Dashboard layout", + "main": "Primær", + "sidebar": "Sidepanel", + "cannotturnoff": "Kan ikke slås fra", + "dashboardlayout": "Dashboard layout", + "enablersidebar": "Aktivér højre sidepanel", + "enablelsidebar": "Aktiver venstre sidebar", + "enablesearchbar": "Aktiver søgelinje", + "enabledocker": "Aktiver integration af docker", + "enableping": "Aktiver pings", + "enablelsidebardesc": "Valgfrit. Kan kun bruges til apps og integrationer", + "enablersidebardesc": "Valgfrit. Kan kun bruges til apps og integrationer" + } +} diff --git a/public/locales/da/settings/customization/page-appearance.json b/public/locales/da/settings/customization/page-appearance.json index c96002ca5..ff8ef2979 100644 --- a/public/locales/da/settings/customization/page-appearance.json +++ b/public/locales/da/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Sidetitel", - "placeholder": "Homarr 🦞" + "label": "Sidetitel" + }, + "metaTitle": { + "label": "Metatitel" }, "logo": { "label": "Logo" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "Tilpasset CSS", - "placeholder": "Brugerdefineret CSS vil blive eksekveret som det sidste" + "placeholder": "Brugerdefineret CSS vil blive anvendt sidst" }, "buttons": { "submit": "Indsend" diff --git a/public/locales/da/settings/general/config-changer.json b/public/locales/da/settings/general/config-changer.json index df61e77dc..7303244b8 100644 --- a/public/locales/da/settings/general/config-changer.json +++ b/public/locales/da/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Konfigurations indlæser" + "label": "Konfigurationsskifter", + "description": "{{configCount}} konfigurationer er tilgængelige", + "loadingNew": "Indlæser din konfiguration...", + "pleaseWait": "Vent venligst, indtil din nye konfiguration er indlæst!" }, "modal": { - "title": "Vælg navnet på din nye konfiguration", - "form": { - "configName": { - "label": "Konfigurationens navn", - "placeholder": "Dit nye konfigurationsnavn" + "copy": { + "title": "Vælg navnet på din nye konfiguration", + "form": { + "configName": { + "label": "Konfigurationens navn", + "validation": { + "required": "Konfigurationsnavn er påkrævet", + "notUnique": "Konfigurationsnavnet er allerede i brug" + }, + "placeholder": "Dit nye konfigurationsnavn" + }, + "submitButton": "Bekræft" }, - "submitButton": "Bekræft" + "events": { + "configSaved": { + "title": "Konfigurationen gemt", + "message": "Konfigurationen gemt som {{configName}}" + }, + "configCopied": { + "title": "Konfigurationen kopieret", + "message": "Konfigurationen kopieret som {{configName}}" + }, + "configNotCopied": { + "title": "Kan ikke kopiere konfigurationen", + "message": "Din konfiguration blev ikke kopieret som {{configName}}" + } + } }, - "events": { - "configSaved": { - "title": "Konfigurationen gemt", - "message": "Konfigurationen gemt som {{configName}}" + "confirmDeletion": { + "title": "Bekræft sletning af din konfiguration", + "warningText": "Du er ved at slette '{{configName}}'", + "text": "Bemærk venligst, at sletningen ikke kan fortrydes, og at dine data vil gå tabt permanent. Når du klikker på denne knap, slettes filen permanent fra din disk. Sørg for at oprette en passende sikkerhedskopi af din konfiguration.", + "buttons": { + "confirm": "Ja, slet '{{configName}}'" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "Sletning af konfiguration mislykkedes", "message": "Sletning af konfiguration mislykkedes" + }, + "deleteFailedDefaultConfig": { + "title": "Standardkonfiguration kan ikke slettes", + "message": "Konfigurationen blev ikke slettet fra filsystemet" } } }, @@ -46,10 +75,12 @@ } }, "accept": { + "title": "Upload af konfiguration", "text": "Træk filer hertil for at uploade en konfiguration. Kun understøttelse af JSON." }, "reject": { + "title": "Træk og slip Upload afvist", "text": "Dette filformat understøttes ikke. Upload venligst kun JSON." } } -} \ No newline at end of file +} diff --git a/public/locales/da/settings/general/module-enabler.json b/public/locales/da/settings/general/module-enabler.json index 4450dd64d..9e26dfeeb 100644 --- a/public/locales/da/settings/general/module-enabler.json +++ b/public/locales/da/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Modul aktivator" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/da/settings/general/search-engine.json b/public/locales/da/settings/general/search-engine.json index 5fedbdce2..d3578aece 100644 --- a/public/locales/da/settings/general/search-engine.json +++ b/public/locales/da/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Søgemaskine", + "configurationName": "Konfiguration af søgemaskiner", "tips": { - "generalTip": "Brug præfikserne !yt og !t foran din forespørgsel for at søge på YouTube eller efter en Torrent.", + "generalTip": "Der er flere præfikser, du kan bruge! Hvis du tilføjer disse foran din forespørgsel, filtreres resultaterne. !s (Web), !t (Torrents), !y (YouTube) og !m (Media).", "placeholderTip": "%s kan bruges som en pladsholder for forespørgslen." }, "customEngine": { + "title": "Brugerdefineret søgemaskine", "label": "Forespørgsels URL", "placeholder": "Brugerdefineret forespørgsels URL" }, "searchNewTab": { "label": "Åben søgeresultater i en ny fane" + }, + "searchEnabled": { + "label": "Søgning aktiveret" } -} \ No newline at end of file +} diff --git a/public/locales/da/settings/general/widget-positions.json b/public/locales/da/settings/general/widget-positions.json index 70a6a3d69..92bd90b40 100644 --- a/public/locales/da/settings/general/widget-positions.json +++ b/public/locales/da/settings/general/widget-positions.json @@ -1,3 +1,3 @@ { "label": "Placer widgets til venstre" -} \ No newline at end of file +} diff --git a/public/locales/de/authentication/login.json b/public/locales/de/authentication/login.json index bfd3d21d9..72e0156d5 100644 --- a/public/locales/de/authentication/login.json +++ b/public/locales/de/authentication/login.json @@ -1,6 +1,6 @@ { "title": "Willkommen zurück!", - "text": "Bitte geben Sie das Passwort ein", + "text": "Bitte geben Sie Ihr Kennwort ein", "form": { "fields": { "password": { @@ -18,10 +18,10 @@ "message": "Ihr Passwort wird geprüft..." }, "correct": { - "title": "Passwort korrekt, sie werden weitergeleitet..." + "title": "Anmeldung erfolgreich, Weiterleitung..." }, "wrong": { - "title": "Das Passwort ist falsch, bitte versuchen Sie es erneut." + "title": "Das von dir eingegebene Passwort ist nicht korrekt. Bitte versuche es noch mal." } } } diff --git a/public/locales/de/common.json b/public/locales/de/common.json index e5843b606..8b172d7e3 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Speichern" + "save": "Speichern", + "about": "Über", + "cancel": "Abbrechen", + "close": "Schließen", + "delete": "Löschen", + "ok": "OK", + "edit": "Bearbeiten", + "version": "Version", + "changePosition": "Position wechseln", + "remove": "Entfernen", + "removeConfirm": "Sind Sie sicher, dass Sie {{item}} entfernen möchten?", + "sections": { + "settings": "Einstellungen", + "dangerZone": "Gefahrenzone" + }, + "secrets": { + "apiKey": "API-Schlüssel", + "username": "Benutzername", + "password": "Passwort" }, "tip": "Tipp: ", "time": { @@ -8,4 +25,4 @@ "minutes": "Minuten", "hours": "Stunden" } -} +} \ No newline at end of file diff --git a/public/locales/de/layout/add-service-app-shelf.json b/public/locales/de/layout/add-service-app-shelf.json index 090578f1a..11b165974 100644 --- a/public/locales/de/layout/add-service-app-shelf.json +++ b/public/locales/de/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Erweiterte Optionen", "form": { - "httpStatusCodes": { - "label": "HTTP Status Nummern", - "placeholder": "Gültige Statuscodes auswählen", - "clearButtonLabel": "Auswahl löschen", - "nothingFound": "Nichts gefunden" - }, "openServiceInNewTab": { "label": "Service in einem neuen Tab öffnen" }, diff --git a/public/locales/de/layout/element-selector/selector.json b/public/locales/de/layout/element-selector/selector.json new file mode 100644 index 000000000..c665ab8e2 --- /dev/null +++ b/public/locales/de/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "Neue Kachel hinzufügen", + "text": "Kacheln sind das Hauptelement von Homarr. Sie werden verwendet, um Ihre Anwendungen und andere Informationen anzuzeigen. Sie können so viele Kacheln hinzufügen, wie Sie möchten." + }, + "widgetDescription": "Widgets interagieren mit Ihren Anwendungen, um Ihnen mehr Kontrolle über sie zu geben. Sie erfordern in der Regel eine zusätzliche Konfiguration vor der Verwendung.", + "goBack": "Zurück auf die vorherige Seite", + "actionIcon": { + "tooltip": "Kachel hinzufügen" + } +} diff --git a/public/locales/de/layout/header/actions/toggle-edit-mode.json b/public/locales/de/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..6824b9d63 --- /dev/null +++ b/public/locales/de/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "Im Bearbeitungsmodus können Sie Kacheln anpassen und Anwendungen konfigurieren. Die Änderungen werden erst gespeichert, wenn Sie den Bearbeitungsmodus verlassen.", + "button": { + "disabled": "Bearbeitungsmodus aktivieren", + "enabled": "Speichern und Beenden" + }, + "popover": { + "title": "Der Bearbeitungsmodus ist für <1>{{size}} aktiviert", + "text": "Sie können Ihre Apps jetzt anpassen und konfigurieren. Änderungen werden nicht gespeichert bis Sie den Bearbeitungsmodus verlassen" + }, + "screenSizes": { + "small": "Klein", + "medium": "Mittel", + "large": "Groß" + } +} diff --git a/public/locales/de/layout/mobile/drawer.json b/public/locales/de/layout/mobile/drawer.json new file mode 100644 index 000000000..e8ff05536 --- /dev/null +++ b/public/locales/de/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} Seitenleiste" +} diff --git a/public/locales/de/layout/modals/about.json b/public/locales/de/layout/modals/about.json new file mode 100644 index 000000000..2bd54bf47 --- /dev/null +++ b/public/locales/de/layout/modals/about.json @@ -0,0 +1,7 @@ +{ + "description": "Homarr ist ein schlankes, modernes Dashboard, das alle Ihre Apps und Dienste auf Knopfdruck zur Verfügung stellt. Mittels Homarr können Sie von einem einzigen Ort aus auf alles zugreifen und steuern. Es lässt sich nahtlos in die von Ihnen bevorzugten Apps integrieren und versorgt Sie mit wertvollen Informationen und der vollständige Kontrolle. Die Installation ist ein Kinderspiel, und es werden eine breite Palette von Konfigurations unterstützt.", + "i18n": "Geladene I18n Übersetzungs Namensräume", + "locales": "Konfigurierte I18n Sprachumgebungen", + "contact": "Haben Sie Probleme oder Fragen? Nehmen Sie Kontakt mit uns auf!", + "addToDashboard": "Zum Dashboard hinzufügen" +} diff --git a/public/locales/de/layout/modals/add-app.json b/public/locales/de/layout/modals/add-app.json new file mode 100644 index 000000000..758e777d7 --- /dev/null +++ b/public/locales/de/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "Allgemein", + "behaviour": "Verhalten", + "network": "Netzwerk", + "appearance": "Aussehen", + "integration": "Integration" + }, + "general": { + "appname": { + "label": "Anwendungsname", + "description": "Wird für die Anzeige der App auf dem Dashboard verwendet." + }, + "internalAddress": { + "label": "Interne Adresse", + "description": "Interne IP-Adresse der Anwendung." + }, + "externalAddress": { + "label": "Externe Adresse", + "description": "URL, die beim Anklicken der App geöffnet wird." + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "In neuem Tab öffnen", + "description": "Öffnen Sie die App in einer neuen Registerkarte, anstatt in der aktuellen Registerkarte." + } + }, + "network": { + "statusChecker": { + "label": "Statusprüfer", + "description": "Prüft, ob Ihre Anwendung online und mittels einer einfachen HTTP(S)-Anfrage erreichbar ist." + }, + "statusCodes": { + "label": "HTTP Statuscodes", + "description": "Die HTTP-Statuscodes, die als online angesehen werden." + } + }, + "appearance": { + "icon": { + "label": "App Symbol", + "description": "Das Symbol, das auf dem Dashboard angezeigt werden soll." + } + }, + "integration": { + "type": { + "label": "Integrations-Konfiguration", + "description": "Die Integrationskonfiguration, die für die Verbindung mit Ihrer Anwendung verwendet wird.", + "placeholder": "Integration auswählen", + "defined": "Definiert", + "undefined": "Nicht definiert", + "public": "Öffentlich sichtbar", + "private": "Privat", + "explanationPrivate": "Ein private Phrase wird nur einmal an den Server gesendet. Sobald Ihr Browser die Seite aktualisiert hat, wird es nie wieder gesendet.", + "explanationPublic": "Ein öffentliche Phrase wird immer an den Client gesendet und ist über die API zugänglich. Es sollte keine vertraulichen Werte wie Benutzernamen, Passwörter, Token, Zertifikate und ähnliches enthalten!" + }, + "secrets": { + "description": "Um eine Phrase zu aktualisieren, geben Sie einen Wert ein und klicken Sie auf Speichern. Um eine Phrase zu entfernen, klicken Sie auf die Schaltfläche Löschen.", + "warning": "Ihre Anmeldedaten dienen als Zugang für Homarr und sie sollten diese niemals an andere Personen weitergeben. Das Homarr-Team wird Sie niemals nach Ihren Zugangsdaten fragen. Stellen Sie sicher, dass sie ihre Zugangsdaten sicher aufbewahren und verwalten.", + "clear": "Phrase löschen", + "save": "Phrase speichern", + "update": "Phrase ändern" + } + }, + "validation": { + "popover": "Ihr Formular enthält ungültige Angaben, daher konnte es nicht gespeichert werden. Bitte beseitigen Sie diese ungültigen Angaben und klicken Sie erneut auf diesen Button, um Ihre Änderungen zu speichern" + } +} diff --git a/public/locales/de/layout/modals/change-position.json b/public/locales/de/layout/modals/change-position.json new file mode 100644 index 000000000..1b6e6437c --- /dev/null +++ b/public/locales/de/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "Position der X-Achse", + "width": "Breite", + "height": "Höhe", + "yPosition": "Position der Y-Achse", + "zeroOrHigher": "0 oder höher", + "betweenXandY": "Zwischen {{min}} und {{max}}" +} \ No newline at end of file diff --git a/public/locales/de/layout/screen-sizes.json b/public/locales/de/layout/screen-sizes.json new file mode 100644 index 000000000..563d99a0b --- /dev/null +++ b/public/locales/de/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "Klein", + "medium": "Mittel", + "large": "Groß" + } +} diff --git a/public/locales/de/layout/tools.json b/public/locales/de/layout/tools.json new file mode 100644 index 000000000..8cd43010e --- /dev/null +++ b/public/locales/de/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "Sie haben derzeit keine Werkzeuge" + }, + "iconPicker": { + "textInputPlaceholder": "Suche nach Symbolen...", + "searchLimitationTitle": "Die Suche ist auf {{max}} Symbole beschränkt", + "searchLimitationMessage": "Um die Suche schnell und effizient zu halten, ist die Suche auf {{max}} Symbole beschränkt. Verwenden Sie die Suche, um weitere Symbole zu finden" + } +} \ No newline at end of file diff --git a/public/locales/de/modules/calendar.json b/public/locales/de/modules/calendar.json index 3aea9f379..d6ddf5949 100644 --- a/public/locales/de/modules/calendar.json +++ b/public/locales/de/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Kalender", - "description": "Ein Kalendermodul für die Anzeige der kommenden Veröffentlichungen. Es interagiert mit der Sonarr- und Radarr-API.", + "description": "Zeigt einen Kalender mit anstehenden Veröffentlichungen von unterstützten Widgets an.", "settings": { + "title": "Einstellungen für das Kalender Widget", "sundayStart": { "label": "Wochenbeginn am Sonntag" + }, + "radarrReleaseType": { + "label": "Radarr Veröffentlichungs Typ" } } } -} \ No newline at end of file +} diff --git a/public/locales/de/modules/common.json b/public/locales/de/modules/common.json index 1ee890fe2..c7014d161 100644 --- a/public/locales/de/modules/common.json +++ b/public/locales/de/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Einstellungen" + }, + "errors": { + "unmappedOptions": { + "text": "Ungenutzter Parameter in der Konfiguration erkannt
{{key}}. Homarr ist nicht in der Lage, diesen Parameter zu interpretieren und zu verwenden. Um ein unerwartetes Verhalten zu vermeiden, sichern Sie Ihre Konfiguration und korrigieren Sie sie." + } } -} \ No newline at end of file +} diff --git a/public/locales/de/modules/dashdot.json b/public/locales/de/modules/dashdot.json index 4b49d328b..a484a30fb 100644 --- a/public/locales/de/modules/dashdot.json +++ b/public/locales/de/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "Ein Modul, welches die Graphen aus einer laufenden Dash. Instanz anzeigt.", + "description": "Zeigt die Graphen einer externen Dash.-Instanz innerhalb von Homarr an.", "settings": { + "title": "Einstellungen für Dash. Widget", "cpuMultiView": { "label": "CPU Multi-Core View" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/de/modules/date.json b/public/locales/de/modules/date.json index 11448ecfc..63de4fdc0 100644 --- a/public/locales/de/modules/date.json +++ b/public/locales/de/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Datum", - "description": "Die aktuelle Zeit und das aktuelle Datum in der Card anzeigen", + "name": "Datum und Zeit", + "description": "Zeigt das aktuelle Datum und die Uhrzeit an", "settings": { + "title": "Einstellungen für das Widget \"Datum und Uhrzeit", "display24HourFormat": { "label": "24-Stunden Format" } } } -} \ No newline at end of file +} diff --git a/public/locales/de/modules/dlspeed.json b/public/locales/de/modules/dlspeed.json index de1183baa..ecefcd65c 100644 --- a/public/locales/de/modules/dlspeed.json +++ b/public/locales/de/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Download Geschwindigkeit", - "description": "Zeige die aktuellen Downloadgeschwindigkeiten von unterstützten Services" + "description": "Zeigt die Download- und Upload-Geschwindigkeit der unterstützten Widgets an." }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/de/modules/docker.json b/public/locales/de/modules/docker.json index fcd1c56a8..718402eeb 100644 --- a/public/locales/de/modules/docker.json +++ b/public/locales/de/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Docker", - "description": "Ermöglicht dir die einfache Verwaltung deiner Docker-Container" + "description": "Ermöglicht es Ihnen, alle Ihre Docker-Container zu sehen und zu verwalten." }, "search": { "placeholder": "Suche nach Container- oder Image namen" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Service hinzufügen", - "message": "Service zu Homarr hinzufügen" + "title": "App hinzufügen", + "message": "App zu Homarr hinzufügen" }, "restart": { "title": "Neustarten" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "Docker-Integration fehlgeschlagen", - "message": "Hast du vergessen, den Docker Socket zu verbinden?" + "message": "Haben Sie vergessen, den Docker-Socket zu mounten?" }, "unknownError": { "title": "Es ist ein Fehler aufgetreten" }, "oneServiceAtATime": { - "title": "Bitte nur einen Service gleichzeitig hinzufügen!" + "title": "Bitte fügen Sie immer nur eine Anwendung oder einen Dienst auf einmal hinzu!" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/de/modules/overseerr.json b/public/locales/de/modules/overseerr.json index ef98e3adf..60767f669 100644 --- a/public/locales/de/modules/overseerr.json +++ b/public/locales/de/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Ermöglicht das Suchen und Hinzufügen von Medien via Overseerr/Jellyseerr" + "description": "Ermöglicht Ihnen das Suchen und Hinzufügen von Medien aus Overseerr oder Jellyseerr." }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "Kreuze die Staffeln an, die heruntergeladen werden sollen", + "caption": "Markieren Sie die Staffeln, die Sie herunterladen möchten", "table": { "header": { "season": "Staffel", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/de/modules/ping.json b/public/locales/de/modules/ping.json index 27d5c61b8..20ae061aa 100644 --- a/public/locales/de/modules/ping.json +++ b/public/locales/de/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "Ermöglicht es Ihnen, zu überprüfen, ob der Service aktiv ist oder einen bestimmten HTTP-Statuscode zurückgibt." + "description": "Zeigt einen Statusindikator in Abhängigkeit vom HTTP-Antwortcode einer bestimmten URL an." }, "states": { "online": "Online {{response}}", "offline": "Offline {{response}}", "loading": "Wird geladen..." } -} \ No newline at end of file +} diff --git a/public/locales/de/modules/search.json b/public/locales/de/modules/search.json index 739e7632b..8d04cb708 100644 --- a/public/locales/de/modules/search.json +++ b/public/locales/de/modules/search.json @@ -1,30 +1,30 @@ { "descriptor": { "name": "Suchleiste", - "description": "Suchleiste zum Durchsuchen des Internets, von Youtube, Torrents oder Overseerr" + "description": "Eine Suchleiste, mit der Sie Ihre eigene Suchmaschine, YouTube und andere unterstützte Konfigurationen durchsuchen können." }, "input": { "placeholder": "Das Internet durchsuchen..." }, - "switched-to": "", + "switched-to": "Wechseln zu", "searchEngines": { "search": { - "name": "", - "description": "" + "name": "Web", + "description": "Suche..." }, "youtube": { - "name": "", - "description": "" + "name": "YouTube", + "description": "Auf YouTube suchen" }, "torrents": { - "name": "", - "description": "" + "name": "Torrents", + "description": "Suche nach Torrents" }, "overseerr": { "name": "Overseerr", - "description": "" + "description": "Suche nach Filmen und TV-Sendungen auf Overseerr" } }, - "tip": "", - "switchedSearchEngine": "" -} \ No newline at end of file + "tip": "Sie können die Suchleiste mit dem Tastenkürzel auswählen ", + "switchedSearchEngine": "Umgestellt auf die Suche mit {{searchEngine}}" +} diff --git a/public/locales/de/modules/torrents-status.json b/public/locales/de/modules/torrents-status.json index 0f12a88ae..4b9053bc6 100644 --- a/public/locales/de/modules/torrents-status.json +++ b/public/locales/de/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { "name": "Torrent", - "description": "Zeige die aktuellen Downloadgeschwindigkeiten von unterstützten Services", + "description": "Zeigt eine Liste von Torrents der unterstützten Torrent-Clients an.", "settings": { - "hideComplete": { - "label": "Abgeschlossene Torrents ausblenden" + "title": "Einstellungen für das Torrent Widget", + "refreshInterval": { + "label": "Aktualisierungsintervall (in Sekunden)" + }, + "displayCompletedTorrents": { + "label": "Abgeschlossene Torrents anzeigen" + }, + "displayStaleTorrents": { + "label": "Angehaltene Torrents anzeigen" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "Keine unterstützten Download-Clients gefunden!", - "text": "Fügen Sie einen Download-Service hinzu, um Ihre aktuellen Downloads anzuzeigen" + "title": "Keine unterstützten Torrent Clients gefunden!", + "text": "Fügen Sie einen unterstützten Torrent Client hinzu, um Ihre aktuellen Downloads anzuzeigen" + }, + "generic": { + "title": "Ein unerwarteter Fehler ist aufgetreten", + "text": "Homarr konnte nicht mit Ihren Torrent Clients kommunizieren. Bitte überprüfen Sie Ihre Konfiguration" } + }, + "loading": { + "title": "Wird geladen..." } } -} \ No newline at end of file +} diff --git a/public/locales/de/modules/usenet.json b/public/locales/de/modules/usenet.json index bdda79882..f14981934 100644 --- a/public/locales/de/modules/usenet.json +++ b/public/locales/de/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { - "name": "", - "description": "" + "name": "Usenet", + "description": "Ermöglicht es Ihnen, Ihre Usenet-Instanz anzuzeigen und zu verwalten." }, "card": { "errors": { "noDownloadClients": { "title": "Keine unterstützten Download-Clients gefunden!", - "text": "Fügen Sie einen Download-Service hinzu, um Ihre aktuellen Downloads anzuzeigen" + "text": "Fügen Sie einen unterstützten Usenet Download Client hinzu, um Ihre aktuellen Downloads anzuzeigen" } } }, diff --git a/public/locales/de/modules/weather.json b/public/locales/de/modules/weather.json index 00fcb929c..16a5d8039 100644 --- a/public/locales/de/modules/weather.json +++ b/public/locales/de/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Wetter", - "description": "Aktuelles Wetter an deinem Standort anzeigen", + "description": "Zeigt die aktuellen Wetterinformationen für einen bestimmten Ort an.", "settings": { + "title": "Einstellungen für das Wetter Widget", "displayInFahrenheit": { "label": "In Fahrenheit anzeigen" }, @@ -29,4 +30,4 @@ "unknown": "Unbekannt" } } -} \ No newline at end of file +} diff --git a/public/locales/de/settings/common.json b/public/locales/de/settings/common.json index 273b28efc..e2a08e507 100644 --- a/public/locales/de/settings/common.json +++ b/public/locales/de/settings/common.json @@ -6,10 +6,24 @@ "customizations": "Anpassungen" }, "tips": { - "configTip": "Laden Sie Ihre Konfigurationsdatei durch Ziehen und Ablegen auf die Seite!" + "configTip": "Laden Sie Ihre Konfigurationsdatei hoch, indem Sie sie per Drag & Drop auf diese Seite ziehen!" }, "credits": { "madeWithLove": "Gemacht mit ❤️ von @" }, - "grow": "" -} \ No newline at end of file + "grow": "Erweitertes Raster (nutzt den ganzen Platz)", + "layout": { + "title": "Dashboard Anordnung", + "main": "Haupt", + "sidebar": "Seitenleiste", + "cannotturnoff": "Kann nicht deaktiviert werden", + "dashboardlayout": "Dashboard Anordnung", + "enablersidebar": "Rechte Seitenleiste aktivieren", + "enablelsidebar": "Linke Seitenleiste aktivieren", + "enablesearchbar": "Suchleiste aktivieren", + "enabledocker": "Docker Integration aktivieren", + "enableping": "Pings aktivieren", + "enablelsidebardesc": "Optional. Kann nur für Anwendungen und Integrationen verwendet werden", + "enablersidebardesc": "Optional. Kann nur für Anwendungen und Integrationen verwendet werden" + } +} diff --git a/public/locales/de/settings/customization/page-appearance.json b/public/locales/de/settings/customization/page-appearance.json index e4e3d1e9d..d55ac9c5f 100644 --- a/public/locales/de/settings/customization/page-appearance.json +++ b/public/locales/de/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Seiten Titel", - "placeholder": "Homarr 🦞" + "label": "Seiten Titel" + }, + "metaTitle": { + "label": "Meta Titel" }, "logo": { "label": "Logo" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "Benutzerdefiniertes CSS", - "placeholder": "Benutzerdefiniertes CSS wird zuletzt ausgeführt" + "placeholder": "Benutzerdefiniertes CSS wird zuletzt angewendet" }, "buttons": { "submit": "Absenden" diff --git a/public/locales/de/settings/general/config-changer.json b/public/locales/de/settings/general/config-changer.json index c22184269..87c200f02 100644 --- a/public/locales/de/settings/general/config-changer.json +++ b/public/locales/de/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Konfigurationslader" + "label": "Konfigurationslader", + "description": "", + "loadingNew": "Ihre Konfiguration wird geladen...", + "pleaseWait": "Bitte warten Sie, bis Ihre neue Konfiguration geladen ist!" }, "modal": { - "title": "Wählen Sie den Namen für Ihre neue Konfiguration", - "form": { - "configName": { - "label": "Konfigurationsname", - "placeholder": "Ihr neuer Konfigurationsname" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "Bestätigen" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "Konfiguration gespeichert", - "message": "Konfiguration gespeichert als {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "Löschung der Konfiguration fehlgeschlagen", "message": "Löschung der Konfiguration fehlgeschlagen" + }, + "deleteFailedDefaultConfig": { + "title": "Die Standardkonfiguration kann nicht gelöscht werden", + "message": "Die Konfiguration wurde nicht vom System gelöscht" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "Ziehen Sie Dateien hierher, um eine Konfiguration hochzuladen. Unterstützung nur für JSON." + "title": "Konfiguration hochladen", + "text": "Ziehen Sie unterstütze Dateien hierher, um eine Konfiguration hochzuladen. Nur für JSON-Dateien." }, "reject": { - "text": "Dieses Dateiformat wird nicht unterstützt. Bitte lade nur JSON hoch." + "title": "Drag and Drop Upload abgelehnt", + "text": "Dieses Dateiformat wird nicht unterstützt. Bitte laden Sie nur JSON-Dateien hoch." } } -} \ No newline at end of file +} diff --git a/public/locales/de/settings/general/module-enabler.json b/public/locales/de/settings/general/module-enabler.json index b14f9bb89..9e26dfeeb 100644 --- a/public/locales/de/settings/general/module-enabler.json +++ b/public/locales/de/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Modul-Aktivierer" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/de/settings/general/search-engine.json b/public/locales/de/settings/general/search-engine.json index 4ace118a1..900ecb677 100644 --- a/public/locales/de/settings/general/search-engine.json +++ b/public/locales/de/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Suchmaschine", + "configurationName": "Suchmaschinen Einstellungen", "tips": { - "generalTip": "Verwenden die Präfixe !yt und !t vor deiner Suchanfrage, um auf YouTube bzw. nach einem Torrent zu suchen.", + "generalTip": "Es gibt mehrere Präfixe, die Sie verwenden können! Wenn Sie diese vor Ihrer Abfrage hinzufügen, werden die Ergebnisse gefiltert. z.b. !s (Web), !t (Torrents), !y (YouTube), und !m (Medien).", "placeholderTip": "%s kann als Platzhalter für deine Suchanfrage verwendet werden." }, "customEngine": { + "title": "Benutzerdefinierte Suchmaschine", "label": "Suchanfrage URL", "placeholder": "Benutzerdefinierte Abfrage-URL" }, "searchNewTab": { "label": "Öffne Suchergebnisse in einem neuen Tab" + }, + "searchEnabled": { + "label": "Suchmaschine aktiviert" } -} \ No newline at end of file +} diff --git a/public/locales/de/settings/general/widget-positions.json b/public/locales/de/settings/general/widget-positions.json index d34be8358..22bf81801 100644 --- a/public/locales/de/settings/general/widget-positions.json +++ b/public/locales/de/settings/general/widget-positions.json @@ -1,3 +1,3 @@ { "label": "Widgets auf der linken Seite positionieren" -} \ No newline at end of file +} diff --git a/public/locales/en/authentication/login.json b/public/locales/en/authentication/login.json index f52e3da6f..68f32cbe8 100644 --- a/public/locales/en/authentication/login.json +++ b/public/locales/en/authentication/login.json @@ -1,6 +1,6 @@ { "title": "Welcome back!", - "text": "Please enter the Password", + "text": "Please enter your password", "form": { "fields": { "password": { @@ -18,10 +18,10 @@ "message": "Your password is being checked..." }, "correct": { - "title": "Password correct, redirecting you..." + "title": "Sign in successful, redirecting..." }, "wrong": { - "title": "Password is wrong, please try again." + "title": "The password you entered is incorrect, please try again." } } } diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 64232fcf5..5c14a9ca6 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Save" + "save": "Save", + "about": "About", + "cancel": "Cancel", + "close": "Close", + "delete": "Delete", + "ok": "OK", + "edit": "Edit", + "version": "Version", + "changePosition": "Change position", + "remove": "Remove", + "removeConfirm": "Are you sure that you want to remove {{item}} ?", + "sections": { + "settings": "Settings", + "dangerZone": "Danger zone" + }, + "secrets": { + "apiKey": "Api key", + "username": "Username", + "password": "Password" }, "tip": "Tip: ", "time": { @@ -8,4 +25,4 @@ "minutes": "minutes", "hours": "hours" } -} +} \ No newline at end of file diff --git a/public/locales/en/layout/add-service-app-shelf.json b/public/locales/en/layout/add-service-app-shelf.json deleted file mode 100644 index 735110906..000000000 --- a/public/locales/en/layout/add-service-app-shelf.json +++ /dev/null @@ -1,134 +0,0 @@ -{ - "actionIcon": { - "tooltip": "Add a service" - }, - "modal": { - "title": "Add service", - "form": { - "validation": { - "invalidUrl": "Please enter a valid URL", - "noStatusCodeSelected": "Please select a status code" - } - }, - "tabs": { - "options": { - "title": "Options", - "form": { - "serviceName": { - "label": "Service name", - "placeholder": "Plex" - }, - "iconUrl": { - "label": "Icon URL" - }, - "serviceUrl": { - "label": "Service URL" - }, - "onClickUrl": { - "label": "On Click URL" - }, - "serviceType": { - "label": "Service type", - "defaultValue": "Other", - "placeholder": "Pick one" - }, - "category": { - "label": "Category", - "placeholder": "Select a category or create a new one", - "nothingFound": "Nothing found", - "createLabel": "+ Create {{query}}" - }, - "integrations": { - "apiKey": { - "label": "API key", - "placeholder": "Your API key", - "validation": { - "noKey": "Invalid Key" - }, - "tip": { - "text": "Get your API key", - "link": "here." - } - }, - "qBittorrent": { - "username": { - "label": "Username", - "placeholder": "admin", - "validation": { - "invalidUsername": "Invalid username" - } - }, - "password": { - "label": "Password", - "placeholder": "adminadmin", - "validation": { - "invalidPassword": "Invalid password" - } - } - }, - "deluge": { - "password": { - "label": "Password", - "placeholder": "password", - "validation": { - "invalidPassword": "Invalid password" - } - } - }, - "transmission": { - "username": { - "label": "Username", - "placeholder": "admin", - "validation": { - "invalidUsername": "Invalid username" - } - }, - "password": { - "label": "Password", - "placeholder": "adminadmin", - "validation": { - "invalidPassword": "Invalid password" - } - } - }, - "nzbget": { - "username": { - "label": "Username", - "placeholder": "admin", - "validation": { - "invalidUsername": "Invalid username" - } - }, - "password": { - "label": "Password", - "placeholder": "password", - "validation": { - "invalidPassword": "Invalid password" - } - } - } - } - } - }, - "advancedOptions": { - "title": "Advanced options", - "form": { - "httpStatusCodes": { - "label": "HTTP Status Codes", - "placeholder": "Select valid status codes", - "clearButtonLabel": "Clear selection", - "nothingFound": "Nothing found" - }, - "openServiceInNewTab": { - "label": "Open service in new tab" - }, - "buttons": { - "submit": { - "content": "Add service" - } - } - } - } - } - } -} \ No newline at end of file diff --git a/public/locales/en/layout/app-shelf-menu.json b/public/locales/en/layout/app-shelf-menu.json deleted file mode 100644 index 006e906c2..000000000 --- a/public/locales/en/layout/app-shelf-menu.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "modal": { - "title": "Modify a service", - "buttons": { - "save": "Save service" - } - }, - "menu": { - "labels": { - "settings": "Settings", - "dangerZone": "Danger zone" - }, - "actions": { - "edit": "Edit", - "delete": "Delete" - } - } -} \ No newline at end of file diff --git a/public/locales/en/layout/app-shelf.json b/public/locales/en/layout/app-shelf.json deleted file mode 100644 index 2074f4105..000000000 --- a/public/locales/en/layout/app-shelf.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "accordions": { - "downloads": { - "text": "Your downloads", - "torrents": "Your Torrent downloads", - "usenet": "Your Usenet downloads" - }, - "others": { - "text": "Others" - } - } -} \ No newline at end of file diff --git a/public/locales/en/layout/element-selector/selector.json b/public/locales/en/layout/element-selector/selector.json new file mode 100644 index 000000000..7f7b0c778 --- /dev/null +++ b/public/locales/en/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "Add a new tile", + "text": "Tiles are the main element of Homarr. They are used to display your apps and other information. You can add as many tiles as you want." + }, + "widgetDescription": "Widgets interact with your apps, to provide you with more control over your applications. They usually require additional configuration before use.", + "goBack": "Go back to the previous step", + "actionIcon": { + "tooltip": "Add a tile" + } +} diff --git a/public/locales/en/layout/header/actions/toggle-edit-mode.json b/public/locales/en/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..965eb3b8a --- /dev/null +++ b/public/locales/en/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "In Edit Mode, you can adjust tiles and configure apps. Changes are not saved until you exit Edit Mode.", + "button": { + "disabled": "Enter Edit Mode", + "enabled": "Exit and Save" + }, + "popover": { + "title": "Edit mode is enabled for <1>{{size}} size", + "text": "You can adjust and configure your apps now. Changes are not saved until you exit edit mode" + }, + "screenSizes": { + "small": "small", + "medium": "medium", + "large": "large" + } +} diff --git a/public/locales/en/layout/mobile/drawer.json b/public/locales/en/layout/mobile/drawer.json new file mode 100644 index 000000000..42d8f7df0 --- /dev/null +++ b/public/locales/en/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} sidebar" +} diff --git a/public/locales/en/layout/modals/about.json b/public/locales/en/layout/modals/about.json new file mode 100644 index 000000000..fa0044a91 --- /dev/null +++ b/public/locales/en/layout/modals/about.json @@ -0,0 +1,7 @@ +{ + "description": "Homarr is a sleek, modern dashboard that puts all of your apps and services at your fingertips. With Homarr, you can access and control everything in one convenient location. Homarr seamlessly integrates with the apps you've added, providing you with valuable information and giving you complete control. Installation is a breeze, and Homarr supports a wide range of deployment methods.", + "i18n": "Loaded I18n translation namespaces", + "locales": "Configured I18n locales", + "contact": "Having trouble or questions? Connect with us!", + "addToDashboard": "Add to Dashboard" +} diff --git a/public/locales/en/layout/modals/add-app.json b/public/locales/en/layout/modals/add-app.json new file mode 100644 index 000000000..d0343a93b --- /dev/null +++ b/public/locales/en/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "General", + "behaviour": "Behaviour", + "network": "Network", + "appearance": "Appearance", + "integration": "Integration" + }, + "general": { + "appname": { + "label": "App name", + "description": "Used to display the app on the dashboard." + }, + "internalAddress": { + "label": "Internal address", + "description": "Internal IP-address of the app." + }, + "externalAddress": { + "label": "External address", + "description": "URL that will be opened when clicking on the app." + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "Open in new tab", + "description": "Open the app in a new tab instead of the current one." + } + }, + "network": { + "statusChecker": { + "label": "Status checker", + "description": "Checks if your app is online using a simple HTTP(S) request." + }, + "statusCodes": { + "label": "HTTP status codes", + "description": "The HTTP status codes that are considered as online." + } + }, + "appearance": { + "icon": { + "label": "App Icon", + "description": "The icon that will be displayed on the dashboard." + } + }, + "integration": { + "type": { + "label": "Integration configuration", + "description": "The integration configuration that will be used to connect to your app.", + "placeholder": "Select an integration", + "defined": "Defined", + "undefined": "Undefined", + "public": "Public", + "private": "Private", + "explanationPrivate": "A private secret will be sent to the server only once. Once your browser has refreshed the page, it will never be sent again.", + "explanationPublic": "A public secret will always be sent to the client and is accessible over the API. It should not contain any confidential values such as usernames, passwords, tokens, certificates and similar!" + }, + "secrets": { + "description": "To update a secret, enter a value and click the save button. To remove a secret, use the clear button.", + "warning": "Your credentials act as the access for your integrations and you should never share them with anybody else. The Homarr team will never ask for credentials. Make sure to store and manage your secrets safely.", + "clear": "Clear secret", + "save": "Save secret", + "update": "Update secret" + } + }, + "validation": { + "popover": "Your form contains invalid data. Hence, it can't be saved. Please resolve all issues and click this button again to save your changes" + } +} diff --git a/public/locales/en/layout/modals/change-position.json b/public/locales/en/layout/modals/change-position.json new file mode 100644 index 000000000..464a676de --- /dev/null +++ b/public/locales/en/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "X axis position", + "width": "Width", + "height": "Height", + "yPosition": "Y axis position", + "zeroOrHigher": "0 or higher", + "betweenXandY": "Between {{min}} and {{max}}" +} \ No newline at end of file diff --git a/public/locales/en/modules/calendar.json b/public/locales/en/modules/calendar.json index d470eabe9..fe7fc32ce 100644 --- a/public/locales/en/modules/calendar.json +++ b/public/locales/en/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Calendar", - "description": "A calendar module for displaying upcoming releases. It interacts with the Sonarr and Radarr API.", + "description": "Displays a calendar with upcoming releases, from supported integrations.", "settings": { + "title": "Settings for Calendar widget", "sundayStart": { "label": "Start the week on Sunday" + }, + "radarrReleaseType": { + "label": "Radarr release type" } } } -} \ No newline at end of file +} diff --git a/public/locales/en/modules/common.json b/public/locales/en/modules/common.json index 3f4b36b03..18a748dcd 100644 --- a/public/locales/en/modules/common.json +++ b/public/locales/en/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Settings" + }, + "errors": { + "unmappedOptions": { + "text": "Un-used parameter in configuration detected
{{key}}. Homarr is unable to interpret and use this parameter. To avoid any unexpected behavior, back up your configuration and correct your configuration." + } } -} \ No newline at end of file +} diff --git a/public/locales/en/modules/dashdot.json b/public/locales/en/modules/dashdot.json index c44e04ca2..9268364f7 100644 --- a/public/locales/en/modules/dashdot.json +++ b/public/locales/en/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "A module for displaying the graphs of your running Dash. instance.", + "description": "Displays the graphs of an external Dash. instance inside of Homarr.", "settings": { + "title": "Settings for Dash. widget", "cpuMultiView": { "label": "CPU Multi-Core View" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/en/modules/date.json b/public/locales/en/modules/date.json index 521e220a4..3f925d2d5 100644 --- a/public/locales/en/modules/date.json +++ b/public/locales/en/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Date", - "description": "Show the current time and date in a card", + "name": "Date and Time", + "description": "Displays the current date and time.", "settings": { + "title": "Settings for Date and Time widget", "display24HourFormat": { "label": "Display full time (24-hour)" } } } -} \ No newline at end of file +} diff --git a/public/locales/en/modules/dlspeed.json b/public/locales/en/modules/dlspeed.json index ff9bc709e..3d11e5894 100644 --- a/public/locales/en/modules/dlspeed.json +++ b/public/locales/en/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Download Speed", - "description": "Show the current download speed of supported services" + "description": "Displays the Download and Upload speed of supported integrations." }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/en/modules/docker.json b/public/locales/en/modules/docker.json index 432d48f82..436a78eeb 100644 --- a/public/locales/en/modules/docker.json +++ b/public/locales/en/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Docker", - "description": "Allows you to easily manage your docker containers" + "description": "Allows you to easily see and manage all of your Docker Containers." }, "search": { "placeholder": "Search by container or image name" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Add service", - "message": "Add service to Homarr" + "title": "Add app", + "message": "Add app Homarr" }, "restart": { "title": "Restart" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "Docker integration failed", - "message": "Did you forget to mount the docker socket ?" + "message": "Did you forget to mount the docker socket?" }, "unknownError": { "title": "There was an error" }, "oneServiceAtATime": { - "title": "Please only add one service at a time!" + "title": "Please only add one app or service at a time!" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/en/modules/overseerr.json b/public/locales/en/modules/overseerr.json index e7b44289e..09e7b69c7 100644 --- a/public/locales/en/modules/overseerr.json +++ b/public/locales/en/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Allows you to search and add media from Overseerr/Jellyseerr" + "description": "Allows you to search and add media from Overseerr or Jellyseerr." }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "Tick the seasons that you want to be downloaded", + "caption": "Tick the seasons you want to download", "table": { "header": { "season": "Season", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/en/modules/ping.json b/public/locales/en/modules/ping.json index 403c8027b..50d78f53a 100644 --- a/public/locales/en/modules/ping.json +++ b/public/locales/en/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "Allows you to check if the service is up or returns a specific HTTP status code." + "description": "Displays a status indicator depeding on the HTTP response code of a given URL." }, "states": { "online": "Online {{response}}", "offline": "Offline {{response}}", "loading": "Loading..." } -} \ No newline at end of file +} diff --git a/public/locales/en/modules/search.json b/public/locales/en/modules/search.json index cf3f50de0..625009afe 100644 --- a/public/locales/en/modules/search.json +++ b/public/locales/en/modules/search.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Search Bar", - "description": "Search bar to search the web, Youtube, Torrents or Overseerr" + "description": "A search bar that allows you to search your custom search engine, YouTube, and supported integrations." }, "input": { "placeholder": "Search the web..." @@ -10,7 +10,7 @@ "searchEngines": { "search": { "name": "Web", - "description": "Search using your search engine (defined in settings)" + "description": "Search..." }, "youtube": { "name": "Youtube", @@ -22,9 +22,9 @@ }, "overseerr": { "name": "Overseerr", - "description": "Search for Movies and TV Shows using Overseerr (module must be enabled)" + "description": "Search for Movies and TV Shows on Overseerr" } }, "tip": "You can select the search bar with the shortcut ", "switchedSearchEngine": "Switched to searching with {{searchEngine}}" -} \ No newline at end of file +} diff --git a/public/locales/en/modules/torrents-status.json b/public/locales/en/modules/torrents-status.json index 7e8970a92..fab92cd83 100644 --- a/public/locales/en/modules/torrents-status.json +++ b/public/locales/en/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { "name": "Torrent", - "description": "Show the current download speed of supported services", + "description": "Displays a list of torrents from supported Torrent clients.", "settings": { - "hideComplete": { - "label": "Hide completed torrents" + "title": "Settings for Torrent widget", + "refreshInterval": { + "label": "Refresh interval (in seconds)" + }, + "displayCompletedTorrents": { + "label": "Display completed torrents" + }, + "displayStaleTorrents": { + "label": "Display stale torrents" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "No supported download clients found!", - "text": "Add a download service to view your current downloads" + "title": "No supported Torrent clients found!", + "text": "Add a supported Torrent client to view your current downloads" + }, + "generic": { + "title": "An unexpected error occured", + "text": "Homarr was unable to communicate with your Torrent clients. Please check your configuration" } + }, + "loading": { + "title": "Loading..." } } -} \ No newline at end of file +} diff --git a/public/locales/en/modules/usenet.json b/public/locales/en/modules/usenet.json index f9df705a3..d21c37ff4 100644 --- a/public/locales/en/modules/usenet.json +++ b/public/locales/en/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { "name": "Usenet", - "description": "Allows you to see your usenet (Sabnzbd or NZBGet) queue and history, pause and resume downloads" + "description": "Allows you to view and manage your Usenet instance." }, "card": { "errors": { "noDownloadClients": { "title": "No supported download clients found!", - "text": "Add a download service to view your current downloads" + "text": "Add a supported Usenet Download Client to view your current downloads" } } }, diff --git a/public/locales/en/modules/weather.json b/public/locales/en/modules/weather.json index 405c36263..791f80897 100644 --- a/public/locales/en/modules/weather.json +++ b/public/locales/en/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Weather", - "description": "Look up the current weather in your location", + "description": "Displays the current weather information of a set location.", "settings": { + "title": "Settings for weather widget", "displayInFahrenheit": { "label": "Display in Fahrenheit" }, @@ -29,4 +30,4 @@ "unknown": "Unknown" } } -} \ No newline at end of file +} diff --git a/public/locales/en/settings/common.json b/public/locales/en/settings/common.json index 4ff9b984e..193f5195b 100644 --- a/public/locales/en/settings/common.json +++ b/public/locales/en/settings/common.json @@ -6,10 +6,24 @@ "customizations": "Customizations" }, "tips": { - "configTip": "Upload your config file by dragging and dropping it onto the page!" + "configTip": "Upload your config file by drag and dropping it onto the page!" }, "credits": { "madeWithLove": "Made with ❤️ by @" }, - "grow": "Grow grid (take all space)" -} \ No newline at end of file + "grow": "Grow grid (take all space)", + "layout": { + "title": "Dashboard layout", + "main": "Main", + "sidebar": "Sidebar", + "cannotturnoff": "Cannot be turned off", + "dashboardlayout": "Dashboard layout", + "enablersidebar": "Enable right sidebar", + "enablelsidebar": "Enable left sidebar", + "enablesearchbar": "Enable search bar", + "enabledocker": "Enable docker integration", + "enableping": "Enable pings", + "enablelsidebardesc": "Optional. Can be used for apps and integrations only", + "enablersidebardesc": "Optional. Can be used for apps and integrations only" + } +} diff --git a/public/locales/en/settings/customization/page-appearance.json b/public/locales/en/settings/customization/page-appearance.json index 63fa96886..459154ceb 100644 --- a/public/locales/en/settings/customization/page-appearance.json +++ b/public/locales/en/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Page Title", - "placeholder": "Homarr 🦞" + "label": "Page Title" + }, + "metaTitle": { + "label": "Meta Title" }, "logo": { "label": "Logo" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "Custom CSS", - "placeholder": "Custom CSS will be executed last" + "placeholder": "Custom CSS will be applied last" }, "buttons": { "submit": "Submit" diff --git a/public/locales/en/settings/general/config-changer.json b/public/locales/en/settings/general/config-changer.json index ad4ac012d..82e0a8374 100644 --- a/public/locales/en/settings/general/config-changer.json +++ b/public/locales/en/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Config loader" + "label": "Config changer", + "description": "{{configCount}} configurations are available", + "loadingNew": "Loading your config...", + "pleaseWait": "Please wait until your new config is loaded!" }, "modal": { - "title": "Choose the name of your new config", - "form": { - "configName": { - "label": "Config name", - "placeholder": "Your new config name" + "copy": { + "title": "Choose the name of your new config", + "form": { + "configName": { + "label": "Config name", + "validation": { + "required": "Config name is required", + "notUnique": "Config name is already in use" + }, + "placeholder": "Your new config name" + }, + "submitButton": "Confirm" }, - "submitButton": "Confirm" + "events": { + "configSaved": { + "title": "Config saved", + "message": "Config saved as {{configName}}" + }, + "configCopied": { + "title": "Config copied", + "message": "Config copied as {{configName}}" + }, + "configNotCopied": { + "title": "Unable to copy config", + "message": "Your config was not copied as {{configName}}" + } + } }, - "events": { - "configSaved": { - "title": "Config saved", - "message": "Config saved as {{configName}}" + "confirmDeletion": { + "title": "Confirm deletion of your config", + "warningText": "You're about to delete '{{configName}}'", + "text": "Please note, that the deletion is not invertible and your data will be lost permanently. After clicking this button, the file will be permanently deleted from your disk. Make sure to create an adequate backup of your configuration.", + "buttons": { + "confirm": "Yes, delete '{{configName}}'" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "Config delete failed", "message": "Config delete failed" + }, + "deleteFailedDefaultConfig": { + "title": "Default config can't be deleted", + "message": "Configuration was not deleted from the file system" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "Drag files here to upload a config. Support for JSON only." + "title": "Configuration Upload", + "text": "Drag files here to upload a config. Support for JSON files only." }, "reject": { - "text": "This file format is not supported. Please only upload JSON." + "title": "Drag and Drop Upload rejected", + "text": "This file format is not supported. Please only upload JSON files." } } -} \ No newline at end of file +} diff --git a/public/locales/en/settings/general/module-enabler.json b/public/locales/en/settings/general/module-enabler.json deleted file mode 100644 index 179753b6f..000000000 --- a/public/locales/en/settings/general/module-enabler.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "title": "Module enabler" -} \ No newline at end of file diff --git a/public/locales/en/settings/general/search-engine.json b/public/locales/en/settings/general/search-engine.json index 8d419fcf8..86fe8b862 100644 --- a/public/locales/en/settings/general/search-engine.json +++ b/public/locales/en/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Search engine", + "configurationName": "Search engine configuration", "tips": { - "generalTip": "Use the prefixes !yt and !t in front of your query to search on YouTube or for a Torrent respectively.", + "generalTip": "There are multiple prefixes you can use! Adding these infront of your query will filter the results. !s (Web), !t (Torrents), !y (YouTube), and !m (Media).", "placeholderTip": "%s can be used as a placeholder for the query." }, "customEngine": { + "title": "Custom search engine", "label": "Query URL", "placeholder": "Custom query URL" }, "searchNewTab": { "label": "Open search results in new tab" + }, + "searchEnabled": { + "label": "Search enabled" } -} \ No newline at end of file +} diff --git a/public/locales/en/settings/general/widget-positions.json b/public/locales/en/settings/general/widget-positions.json index 746578cce..41d0d60d6 100644 --- a/public/locales/en/settings/general/widget-positions.json +++ b/public/locales/en/settings/general/widget-positions.json @@ -1,3 +1,3 @@ { - "label": "Position widgets on left" -} \ No newline at end of file + "label": "Position widgets on the left" +} diff --git a/public/locales/es/authentication/login.json b/public/locales/es/authentication/login.json index 268d533c8..7944a509a 100644 --- a/public/locales/es/authentication/login.json +++ b/public/locales/es/authentication/login.json @@ -1,6 +1,6 @@ { "title": "¡Bienvenido/a otra vez!", - "text": "Por favor, introduce la Contraseña", + "text": "Por favor, introduce tu contraseña", "form": { "fields": { "password": { @@ -18,10 +18,10 @@ "message": "Tu contraseña está siendo comprobada..." }, "correct": { - "title": "Contraseña correcta, redireccionándote..." + "title": "Inicio de sesión satisfactorio, redirigiendo..." }, "wrong": { - "title": "Contraseña incorrecta, por favor, intenta otra vez." + "title": "La contraseña introducida es incorrecta, por favor, intenta de nuevo." } } } diff --git a/public/locales/es/common.json b/public/locales/es/common.json index c52a23152..24494ca8d 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Guardar" + "save": "Guardar", + "about": "Sobre", + "cancel": "Cancelar", + "close": "Cerrar", + "delete": "Eliminar", + "ok": "OK", + "edit": "Editar", + "version": "Versión", + "changePosition": "Cambiar posición", + "remove": "Eliminar", + "removeConfirm": "Seguro que quieres eliminar {{item}} ?", + "sections": { + "settings": "Ajustes", + "dangerZone": "Zona de riesgo" + }, + "secrets": { + "apiKey": "Clave API", + "username": "Nombre de usuario", + "password": "Contraseña" }, "tip": "Consejo: ", "time": { @@ -8,4 +25,4 @@ "minutes": "minutos", "hours": "horas" } -} +} \ No newline at end of file diff --git a/public/locales/es/layout/add-service-app-shelf.json b/public/locales/es/layout/add-service-app-shelf.json index 50ea3ad56..20815426b 100644 --- a/public/locales/es/layout/add-service-app-shelf.json +++ b/public/locales/es/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Opciones avanzadas", "form": { - "httpStatusCodes": { - "label": "Códigos de Estado HTTP", - "placeholder": "Seleccionar códigos de estado válidos", - "clearButtonLabel": "Borrar selección", - "nothingFound": "No se ha encontrado ningún resultado" - }, "openServiceInNewTab": { "label": "Abrir el servicio en una nueva pestaña" }, diff --git a/public/locales/es/layout/element-selector/selector.json b/public/locales/es/layout/element-selector/selector.json new file mode 100644 index 000000000..448cf2d7c --- /dev/null +++ b/public/locales/es/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "Añadir nueva tarjeta", + "text": "Las tarjetas son el elemento principal de Homarr. Éstas se usan para mostrar tus apps, e información extra. Puedes agregar tantas tarjetas como quieras." + }, + "widgetDescription": "Los widgets interactúan con tus apps, para otorgarte mayor control sobre éstas. Por lo general, éstos requieren de configuración adicional antes de poder usarlos.", + "goBack": "Volver al paso anterior", + "actionIcon": { + "tooltip": "Añadir tarjeta" + } +} diff --git a/public/locales/es/layout/header/actions/toggle-edit-mode.json b/public/locales/es/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..d0f4f8f3b --- /dev/null +++ b/public/locales/es/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "En Modo Edición, puedes ajustar tarjetas y configurar apps. Los cambios no se guardan hasta que salgas del Modo Edición.", + "button": { + "disabled": "Abrir Modo Edición", + "enabled": "Salir y Guardar" + }, + "popover": { + "title": "Modo edición activado para el tamaño <1>{{size}}", + "text": "Puedes ajustar y configurar tus apps ahora. Los cambios no son guardados hasta que salgas del modo edición" + }, + "screenSizes": { + "small": "pequeño", + "medium": "medio", + "large": "grande" + } +} diff --git a/public/locales/es/layout/mobile/drawer.json b/public/locales/es/layout/mobile/drawer.json new file mode 100644 index 000000000..d640fbb11 --- /dev/null +++ b/public/locales/es/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} barra lateral" +} diff --git a/public/locales/es/layout/modals/about.json b/public/locales/es/layout/modals/about.json new file mode 100644 index 000000000..914f56aad --- /dev/null +++ b/public/locales/es/layout/modals/about.json @@ -0,0 +1,6 @@ +{ + "i18n": "I18n translation namespaces cargados", + "locales": "Configurar I18n locales", + "contact": "¿Tienes problemas o preguntas? ¡Conéctate con nosotros!", + "addToDashboard": "Añadir al Dashboard" +} diff --git a/public/locales/es/layout/modals/add-app.json b/public/locales/es/layout/modals/add-app.json new file mode 100644 index 000000000..c99a35771 --- /dev/null +++ b/public/locales/es/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "General", + "behaviour": "Comportamiento", + "network": "Red", + "appearance": "Apariencia", + "integration": "Integración" + }, + "general": { + "appname": { + "label": "Nombre de la app", + "description": "" + }, + "internalAddress": { + "label": "Dirección interna", + "description": "" + }, + "externalAddress": { + "label": "Dirección externa", + "description": "" + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "Abrir en nueva pestaña", + "description": "" + } + }, + "network": { + "statusChecker": { + "label": "Verificador de estado", + "description": "" + }, + "statusCodes": { + "label": "Códigos HTTP de estado", + "description": "" + } + }, + "appearance": { + "icon": { + "label": "Icono App", + "description": "" + } + }, + "integration": { + "type": { + "label": "Configuración de integración", + "description": "", + "placeholder": "Seleccionar una integración", + "defined": "Definido", + "undefined": "Sin definir", + "public": "Público", + "private": "Privado", + "explanationPrivate": "", + "explanationPublic": "" + }, + "secrets": { + "description": "Para actualizar una clave, introducir un valor y pulsar el botón guardar. Para eliminar una clave, usa el botón limpiar.", + "warning": "", + "clear": "Limpiar clave", + "save": "Guardar clave", + "update": "Actualizar clave" + } + }, + "validation": { + "popover": "Tu formulario contiene datos no válidos. Por lo tanto, no pude ser guardado. Por favor, resuelve los problemas, y presiona este botón, otra vez, para guardar cambios" + } +} diff --git a/public/locales/es/layout/modals/change-position.json b/public/locales/es/layout/modals/change-position.json new file mode 100644 index 000000000..d797e40c9 --- /dev/null +++ b/public/locales/es/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "Posición eje X", + "width": "Ancho", + "height": "Altura", + "yPosition": "Posición eje Y", + "zeroOrHigher": "0 o superior", + "betweenXandY": "Entre {{min}} y {{max}}" +} \ No newline at end of file diff --git a/public/locales/es/layout/screen-sizes.json b/public/locales/es/layout/screen-sizes.json new file mode 100644 index 000000000..8d1288896 --- /dev/null +++ b/public/locales/es/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "pequeño", + "medium": "medio", + "large": "grande" + } +} diff --git a/public/locales/es/layout/tools.json b/public/locales/es/layout/tools.json new file mode 100644 index 000000000..117b2a1ec --- /dev/null +++ b/public/locales/es/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "Actualmente, no tienes ninguna herramienta" + }, + "iconPicker": { + "textInputPlaceholder": "Buscar iconos...", + "searchLimitationTitle": "Búsqueda limitada a {{max}} iconos", + "searchLimitationMessage": "Para mantener las cosas ágiles y rápidas, la búsqueda está limitada a {{max}} iconos. Usa el cuadro de búsqueda para encontrar más iconos" + } +} \ No newline at end of file diff --git a/public/locales/es/modules/calendar.json b/public/locales/es/modules/calendar.json index 94bb9ff6d..e390b0496 100644 --- a/public/locales/es/modules/calendar.json +++ b/public/locales/es/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Calendario", - "description": "Un módulo de calendario para mostrar próximos lanzamientos. Interactúa con las API de Sonarr y Radarr.", + "description": "", "settings": { + "title": "", "sundayStart": { "label": "Marcar Domingo como primer día de la semana" + }, + "radarrReleaseType": { + "label": "Tipo de release en Radarr" } } } -} \ No newline at end of file +} diff --git a/public/locales/es/modules/common.json b/public/locales/es/modules/common.json index 9a96df72d..07775cac0 100644 --- a/public/locales/es/modules/common.json +++ b/public/locales/es/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Ajustes" + }, + "errors": { + "unmappedOptions": { + "text": "" + } } -} \ No newline at end of file +} diff --git a/public/locales/es/modules/dashdot.json b/public/locales/es/modules/dashdot.json index 8345d26fd..fbd4c8916 100644 --- a/public/locales/es/modules/dashdot.json +++ b/public/locales/es/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "Un módulo para mostrar los gráficos de la instancia de Dash. en ejecución.", + "description": "", "settings": { + "title": "Ajustes para el widget Dash.", "cpuMultiView": { "label": "Vista CPU Multinúcleo" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/es/modules/date.json b/public/locales/es/modules/date.json index 127072703..4ed6f3fb1 100644 --- a/public/locales/es/modules/date.json +++ b/public/locales/es/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Fecha", - "description": "Mostrar la fecha y hora actuales en una tarjeta", + "name": "", + "description": "", "settings": { + "title": "", "display24HourFormat": { "label": "Mostrar hora completa (24 horas)" } } } -} \ No newline at end of file +} diff --git a/public/locales/es/modules/dlspeed.json b/public/locales/es/modules/dlspeed.json index 19bfd2dc6..b2da20c34 100644 --- a/public/locales/es/modules/dlspeed.json +++ b/public/locales/es/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Velocidad de Descarga", - "description": "Mostrar la velocidad de descarga actual de los servicios compatibles" + "description": "" }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/es/modules/docker.json b/public/locales/es/modules/docker.json index edd23cc74..c4b9b273f 100644 --- a/public/locales/es/modules/docker.json +++ b/public/locales/es/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Docker", - "description": "Permite administrar sus contenedores docker de manera sencilla" + "description": "" }, "search": { "placeholder": "Buscar por nombre de contenedor o nombre de imagen" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Añadir servicio", - "message": "Añadir servicio a Homarr" + "title": "", + "message": "" }, "restart": { "title": "Reiniciar" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "Error en la integración con Docker", - "message": "¿Has olvidado montar el socket de docker?" + "message": "" }, "unknownError": { "title": "Se ha producido un error" }, "oneServiceAtATime": { - "title": "Por favor, ¡añade un servicio a la vez!" + "title": "" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/es/modules/overseerr.json b/public/locales/es/modules/overseerr.json index 373ec6e1d..2c03b0502 100644 --- a/public/locales/es/modules/overseerr.json +++ b/public/locales/es/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Te permite buscar y añadir medios desde Overseerr/Jellyseerr" + "description": "" }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "Marca las temporadas que quieres que se descarguen", + "caption": "", "table": { "header": { "season": "Temporada", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/es/modules/ping.json b/public/locales/es/modules/ping.json index ecf4efdb2..5315f83dd 100644 --- a/public/locales/es/modules/ping.json +++ b/public/locales/es/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Latencia", - "description": "Te permite comprobar si el servicio está operativo o si devuelve un código HTTP en específico." + "description": "" }, "states": { "online": "En línea {{response}}", "offline": "Desconectado {{response}}", "loading": "Cargando..." } -} \ No newline at end of file +} diff --git a/public/locales/es/modules/search.json b/public/locales/es/modules/search.json index 9d1742273..b76b6cddb 100644 --- a/public/locales/es/modules/search.json +++ b/public/locales/es/modules/search.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Barra de búsqueda", - "description": "Barra de búsqueda para buscar en la web, YouTube, Torrents u Overseerr" + "description": "" }, "input": { "placeholder": "Buscar en Internet..." @@ -10,7 +10,7 @@ "searchEngines": { "search": { "name": "Web", - "description": "Buscar usando tu motor de búsqueda (definido en ajustes)" + "description": "" }, "youtube": { "name": "Youtube", @@ -22,9 +22,9 @@ }, "overseerr": { "name": "Overseerr", - "description": "Buscar Películas y Series TV usando Overseerr (el módulo debe esta activado)" + "description": "" } }, "tip": "Puedes seleccionar la barra de búsqueda con el atajo ", "switchedSearchEngine": "Cambiado a buscando con {{searchEngine}}" -} \ No newline at end of file +} diff --git a/public/locales/es/modules/torrents-status.json b/public/locales/es/modules/torrents-status.json index 1cf179205..fae30838b 100644 --- a/public/locales/es/modules/torrents-status.json +++ b/public/locales/es/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { "name": "Torrent", - "description": "Mostrar la velocidad de descarga actual de los servicios compatibles", + "description": "", "settings": { - "hideComplete": { - "label": "Ocultar torrents completados" + "title": "", + "refreshInterval": { + "label": "Intervalo de refresco (en segundos)" + }, + "displayCompletedTorrents": { + "label": "Mostrar torrents completados" + }, + "displayStaleTorrents": { + "label": "Mostrar torrents estancados" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "¡No se han encontrado clientes de descarga compatibles!", - "text": "Añade un servicio de descarga para ver tus descargas actuales" + "title": "", + "text": "" + }, + "generic": { + "title": "Ocurrió un error inesperado", + "text": "" } + }, + "loading": { + "title": "Cargando..." } } -} \ No newline at end of file +} diff --git a/public/locales/es/modules/usenet.json b/public/locales/es/modules/usenet.json index fda32e8b4..3023f8675 100644 --- a/public/locales/es/modules/usenet.json +++ b/public/locales/es/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { "name": "Usenet", - "description": "Te permite ver la cola e historial de tu usenet (Sabnzbd or NZBGet), pausar y reanudar descargas" + "description": "" }, "card": { "errors": { "noDownloadClients": { "title": "¡No se han encontrado clientes de descarga compatibles!", - "text": "Añade un servicio de descarga para ver tus descargas actuales" + "text": "" } } }, diff --git a/public/locales/es/modules/weather.json b/public/locales/es/modules/weather.json index 3532932ba..12fbe7f37 100644 --- a/public/locales/es/modules/weather.json +++ b/public/locales/es/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Clima", - "description": "Consulta el clima actual en tu ubicación", + "description": "", "settings": { + "title": "", "displayInFahrenheit": { "label": "Mostrar en Fahrenheit" }, @@ -29,4 +30,4 @@ "unknown": "Desconocido" } } -} \ No newline at end of file +} diff --git a/public/locales/es/settings/common.json b/public/locales/es/settings/common.json index 4fb995e74..bd5b62586 100644 --- a/public/locales/es/settings/common.json +++ b/public/locales/es/settings/common.json @@ -6,10 +6,24 @@ "customizations": "Personalizaciones" }, "tips": { - "configTip": "¡Sube tu archivo de configuración arrastrándolo y soltándolo en la página!" + "configTip": "" }, "credits": { "madeWithLove": "Hecho con ❤️ por @" }, - "grow": "Aumentar cuadrícula (toma todo el espacio)" -} \ No newline at end of file + "grow": "Aumentar cuadrícula (toma todo el espacio)", + "layout": { + "title": "Diseño del dashboard", + "main": "Principal", + "sidebar": "Barra lateral", + "cannotturnoff": "No puede ser apagado", + "dashboardlayout": "Diseño del dashboard", + "enablersidebar": "Habilitar barra lateral derecha", + "enablelsidebar": "Habilitar barra lateral izquierda", + "enablesearchbar": "Habilitar barra de búsqueda", + "enabledocker": "Habilitar integración docker", + "enableping": "Habilitar pings", + "enablelsidebardesc": "Opcional. Solo puede usarse con apps e integraciones", + "enablersidebardesc": "Opcional. Solo puede usarse con apps e integraciones" + } +} diff --git a/public/locales/es/settings/customization/page-appearance.json b/public/locales/es/settings/customization/page-appearance.json index d55ab3519..b858f1e83 100644 --- a/public/locales/es/settings/customization/page-appearance.json +++ b/public/locales/es/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Título de Página", - "placeholder": "Homarr 🦞" + "label": "Título de Página" + }, + "metaTitle": { + "label": "Tarjeta Meta" }, "logo": { "label": "Logo" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "CSS Personalizado", - "placeholder": "El CSS personalizado se ejecutará en último lugar" + "placeholder": "" }, "buttons": { "submit": "Aplicar" diff --git a/public/locales/es/settings/general/config-changer.json b/public/locales/es/settings/general/config-changer.json index c7259767b..4001ec8c7 100644 --- a/public/locales/es/settings/general/config-changer.json +++ b/public/locales/es/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Cargador de configuración" + "label": "", + "description": "", + "loadingNew": "Cargando tu configuración...", + "pleaseWait": "" }, "modal": { - "title": "Escoge el nombre de tu nueva configuración", - "form": { - "configName": { - "label": "Nombre de la configuración", - "placeholder": "Tu nuevo nombre de configuración" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "Confirmar" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "Configuración guardada", - "message": "Configuración guardada como {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "Error en el borrado de la configuración", "message": "Error en el borrado de la configuración" + }, + "deleteFailedDefaultConfig": { + "title": "", + "message": "" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "Arrastra un archivo aqui para subir una configuración. Sólo se admiten archivos JSON." + "title": "Configuración subida", + "text": "" }, "reject": { - "text": "Este formato de archivo no es compatible. Por favor, sube solo archivos JSON." + "title": "Subida Arrastar y Soltar rechada", + "text": "" } } -} \ No newline at end of file +} diff --git a/public/locales/es/settings/general/module-enabler.json b/public/locales/es/settings/general/module-enabler.json index b3ed9372d..9e26dfeeb 100644 --- a/public/locales/es/settings/general/module-enabler.json +++ b/public/locales/es/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Activador de Módulos" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/es/settings/general/search-engine.json b/public/locales/es/settings/general/search-engine.json index 0b576aa00..8c55f8426 100644 --- a/public/locales/es/settings/general/search-engine.json +++ b/public/locales/es/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Motor de búsqueda", + "configurationName": "Configuración del motor de búsqueda", "tips": { - "generalTip": "Usa los prefijos !yt y !t delante de tu consulta para buscar en YouTube o un torrent respectivamente.", + "generalTip": "", "placeholderTip": "%s puede utilizarse como modelo para la petición." }, "customEngine": { + "title": "Motor de búsqueda personalizado", "label": "URL de la Petición", "placeholder": "URL de petición personalizada" }, "searchNewTab": { "label": "Abrir los resultados de la búsqueda en una pestaña nueva" + }, + "searchEnabled": { + "label": "Búsqueda habilitada" } -} \ No newline at end of file +} diff --git a/public/locales/es/settings/general/widget-positions.json b/public/locales/es/settings/general/widget-positions.json index b14e5648b..0967ef424 100644 --- a/public/locales/es/settings/general/widget-positions.json +++ b/public/locales/es/settings/general/widget-positions.json @@ -1,3 +1 @@ -{ - "label": "Colocar widgets a la izquierda" -} \ No newline at end of file +{} diff --git a/public/locales/fr/authentication/login.json b/public/locales/fr/authentication/login.json index 9e47001a8..112db8720 100644 --- a/public/locales/fr/authentication/login.json +++ b/public/locales/fr/authentication/login.json @@ -18,10 +18,10 @@ "message": "Votre mot de passe est en cours de vérification..." }, "correct": { - "title": "Mot de passe correct, redirection en cours..." + "title": "Inscription réussie, redirection..." }, "wrong": { - "title": "Mot de passe erroné, veuillez réessayer." + "title": "Le mot de passe saisi est incorrect, veuillez réessayer." } } } diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index cf78741aa..aa92409e4 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Sauvegarder" + "save": "Sauvegarder", + "about": "À propos", + "cancel": "Annuler", + "close": "Fermer", + "delete": "Supprimer", + "ok": "OK", + "edit": "Modifier", + "version": "Version", + "changePosition": "Modifier la position", + "remove": "Supprimer", + "removeConfirm": "Êtes-vous sûr de vouloir supprimer {{item}} ?", + "sections": { + "settings": "Paramètres", + "dangerZone": "Zone de danger" + }, + "secrets": { + "apiKey": "Clé d'API", + "username": "Nom d'utilisateur", + "password": "Mot de passe" }, "tip": "Conseil : ", "time": { @@ -8,4 +25,4 @@ "minutes": "minutes", "hours": "heures" } -} +} \ No newline at end of file diff --git a/public/locales/fr/layout/add-service-app-shelf.json b/public/locales/fr/layout/add-service-app-shelf.json index f94e8c0a4..fe2b74135 100644 --- a/public/locales/fr/layout/add-service-app-shelf.json +++ b/public/locales/fr/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Options avancées", "form": { - "httpStatusCodes": { - "label": "Codes d'état HTTP", - "placeholder": "Sélectionnez les codes d'état valides", - "clearButtonLabel": "Effacer la sélection", - "nothingFound": "Rien trouvé" - }, "openServiceInNewTab": { "label": "Ouvrir le service dans un nouvel onglet" }, diff --git a/public/locales/fr/layout/element-selector/selector.json b/public/locales/fr/layout/element-selector/selector.json new file mode 100644 index 000000000..95b5836ee --- /dev/null +++ b/public/locales/fr/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "Ajouter une tuile", + "text": "" + }, + "widgetDescription": "Les widgets interagissent avec vos applications, pour vous permettre de mieux les contrôler. Ils nécessitent généralement quelques configurations supplémentaires avant d'être utilisés.", + "goBack": "Retourner à la page précédente", + "actionIcon": { + "tooltip": "Ajouter une tuile" + } +} diff --git a/public/locales/fr/layout/header/actions/toggle-edit-mode.json b/public/locales/fr/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..39e034157 --- /dev/null +++ b/public/locales/fr/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "", + "button": { + "disabled": "Entrer en mode édition", + "enabled": "Quitter et sauvegarder" + }, + "popover": { + "title": "", + "text": "Vous pouvez désormais ajuster et configurer vos applications. Les modifications ne sont pas enregistrées jusqu'à ce que vous quittiez le mode édition" + }, + "screenSizes": { + "small": "petit", + "medium": "moyen", + "large": "grand" + } +} diff --git a/public/locales/fr/layout/mobile/drawer.json b/public/locales/fr/layout/mobile/drawer.json new file mode 100644 index 000000000..de438318a --- /dev/null +++ b/public/locales/fr/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} barre latérale" +} diff --git a/public/locales/fr/layout/modals/about.json b/public/locales/fr/layout/modals/about.json new file mode 100644 index 000000000..582f5d996 --- /dev/null +++ b/public/locales/fr/layout/modals/about.json @@ -0,0 +1,7 @@ +{ + "description": "Homarr est un tableau de bord élégant, moderne qui met toutes vos applications et services au bout de vos doigts. Avec Homarr, vous pouvez accéder et contrôler tout dans un seul endroit. Homarr s'intègre de façon transparente avec les applications que vous avez ajoutées, vous fournissant des informations précieuses et vous donnant un contrôle total. L'installation est un jeu d'enfant, et Homarr prend en charge un large éventail de méthodes de déploiement.", + "i18n": "Espaces de traduction I18n chargés", + "locales": "Locales I18n configurées", + "contact": "Vous avez des problèmes ou des questions ? Communiquez-le nous !", + "addToDashboard": "Ajouter au tableau de bord" +} diff --git a/public/locales/fr/layout/modals/add-app.json b/public/locales/fr/layout/modals/add-app.json new file mode 100644 index 000000000..dd58e754c --- /dev/null +++ b/public/locales/fr/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "Général", + "behaviour": "Comportement", + "network": "Réseau", + "appearance": "Apparence", + "integration": "Intégration" + }, + "general": { + "appname": { + "label": "Nom de l'application", + "description": "Utilisé pour afficher l'application sur le tableau de bord." + }, + "internalAddress": { + "label": "Adresse interne", + "description": "IP interne de l'application." + }, + "externalAddress": { + "label": "Adresse externe", + "description": "URL qui sera ouverte dans le navigateur lorsque l'on clique sur l'application." + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "Ouvrir dans un nouvel onglet", + "description": "Ouvrez l'application dans un nouvel onglet au lieu de l'onglet actuel." + } + }, + "network": { + "statusChecker": { + "label": "Vérificateur de statut", + "description": "Vérifie si votre application est en ligne en utilisant une simple requête HTTP(S)." + }, + "statusCodes": { + "label": "Codes d'état HTTP", + "description": "Les codes d'état HTTP qui sont considérés comme étant en ligne." + } + }, + "appearance": { + "icon": { + "label": "Icône de l’app", + "description": "L'icône qui sera affichée sur le tableau de bord." + } + }, + "integration": { + "type": { + "label": "Configuration d’intégrations", + "description": "", + "placeholder": "Sélectionner une itégration", + "defined": "Défini", + "undefined": "Indéfini", + "public": "Public", + "private": "Privé", + "explanationPrivate": "", + "explanationPublic": "" + }, + "secrets": { + "description": "Pour mettre à jour un secret, entrez une valeur et cliquez sur le bouton Enregistrer. Pour supprimer un secret, utilisez le bouton Effacer.", + "warning": "", + "clear": "Effacer le secret", + "save": "Sauvegarder le secret", + "update": "Mettre à jour le secret" + } + }, + "validation": { + "popover": "Votre formulaire contient des données invalides et ne peut être sauvegardé. Veuillez résoudre tous les problèmes et cliquez à nouveau sur ce bouton pour enregistrer vos modifications" + } +} diff --git a/public/locales/fr/layout/modals/change-position.json b/public/locales/fr/layout/modals/change-position.json new file mode 100644 index 000000000..4e1016a5f --- /dev/null +++ b/public/locales/fr/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "Position sur l'axe X", + "width": "Largeur", + "height": "Hauteur", + "yPosition": "Position sur l'axe X", + "zeroOrHigher": "0 ou plus", + "betweenXandY": "Entre {{min}} et {{max}}" +} \ No newline at end of file diff --git a/public/locales/fr/layout/screen-sizes.json b/public/locales/fr/layout/screen-sizes.json new file mode 100644 index 000000000..487cdf1ab --- /dev/null +++ b/public/locales/fr/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "petit", + "medium": "moyen", + "large": "grand" + } +} diff --git a/public/locales/fr/layout/tools.json b/public/locales/fr/layout/tools.json new file mode 100644 index 000000000..b4745d34f --- /dev/null +++ b/public/locales/fr/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "Vous ne disposez actuellement d'aucun outil" + }, + "iconPicker": { + "textInputPlaceholder": "Rechercher des icônes", + "searchLimitationTitle": "La recherche est limitée à {{max}} icônes", + "searchLimitationMessage": "Pour que les choses restent rapides, la recherche est limitée à {{max}} icônes. Utilisez le champ de recherche pour trouver d'autres icônes" + } +} \ No newline at end of file diff --git a/public/locales/fr/modules/calendar.json b/public/locales/fr/modules/calendar.json index fcf3e6001..9ffc23c68 100644 --- a/public/locales/fr/modules/calendar.json +++ b/public/locales/fr/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Calendrier", - "description": "Un module de calendrier pour afficher les prochaines versions. Il interagit avec les API Sonarr et Radarr.", + "description": "", "settings": { + "title": "", "sundayStart": { "label": "Commencez la semaine par dimanche" + }, + "radarrReleaseType": { + "label": "Type de sortie Radarr" } } } -} \ No newline at end of file +} diff --git a/public/locales/fr/modules/common.json b/public/locales/fr/modules/common.json index e13463d31..cc7a46382 100644 --- a/public/locales/fr/modules/common.json +++ b/public/locales/fr/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Paramètres" + }, + "errors": { + "unmappedOptions": { + "text": "Un paramètre non utilisé dans votre configuration a été détectée
{{key}}. Homarr est incapable d'interpréter et d'utiliser ce paramètre. Pour éviter tout comportement inattendu, sauvegardez votre configuration et corrigez-la." + } } -} \ No newline at end of file +} diff --git a/public/locales/fr/modules/dashdot.json b/public/locales/fr/modules/dashdot.json index b33cbba31..46c383e86 100644 --- a/public/locales/fr/modules/dashdot.json +++ b/public/locales/fr/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "Un module pour afficher les graphiques de votre instance Dash. en cours.", + "description": "", "settings": { + "title": "Paramètres du widget Dash", "cpuMultiView": { "label": "Vue du CPU multi-cœur" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/fr/modules/date.json b/public/locales/fr/modules/date.json index c1f777c4f..08db74791 100644 --- a/public/locales/fr/modules/date.json +++ b/public/locales/fr/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Date", - "description": "Affiches l'heure et la date actuelles dans un module", + "name": "Date et heure", + "description": "Affiche la date et l'heure courante.", "settings": { + "title": "", "display24HourFormat": { "label": "Affichage 24 h" } } } -} \ No newline at end of file +} diff --git a/public/locales/fr/modules/dlspeed.json b/public/locales/fr/modules/dlspeed.json index 187fbd054..aa4f78111 100644 --- a/public/locales/fr/modules/dlspeed.json +++ b/public/locales/fr/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Vitesse de téléchargement", - "description": "Afficher la vitesse de téléchargement actuelle des services pris en charge" + "description": "" }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/fr/modules/docker.json b/public/locales/fr/modules/docker.json index 2cefad874..ddf7efa72 100644 --- a/public/locales/fr/modules/docker.json +++ b/public/locales/fr/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Docker", - "description": "Vous permet de gérer facilement vos conteneurs docker" + "description": "" }, "search": { "placeholder": "Recherche par nom de conteneur ou d'image" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Ajouter un service", - "message": "Ajouter un service à Homarr" + "title": "Ajouter une application", + "message": "" }, "restart": { "title": "Redémarrer" @@ -41,7 +41,7 @@ "title": "Rafraîchir les données" }, "remove": { - "title": "Retirer" + "title": "Supprimer" }, "addToHomarr": { "title": "Ajouter à Homarr" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "L'intégration de Docker a échoué", - "message": "Avez-vous oublié de monter le docker socket ?" + "message": "Avez-vous oublié de monter le socket Docker ?" }, "unknownError": { "title": "Une erreur s’est produite" }, "oneServiceAtATime": { - "title": "Veuillez n'ajouter qu'un seul service à la fois !" + "title": "Veuillez n'ajouter qu'une application ou service à la fois !" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/fr/modules/overseerr.json b/public/locales/fr/modules/overseerr.json index 2884a5b98..975dc1769 100644 --- a/public/locales/fr/modules/overseerr.json +++ b/public/locales/fr/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Permet de rechercher et d'ajouter des médias depuis Overseerr/Jellyseerr" + "description": "Permet de rechercher et d'ajouter des médias depuis Overseerr ou Jellyseerr." }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "Cochez les saisons que vous souhaitez télécharger", + "caption": "", "table": { "header": { "season": "Saison", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/fr/modules/ping.json b/public/locales/fr/modules/ping.json index fdb946c0e..d9317be27 100644 --- a/public/locales/fr/modules/ping.json +++ b/public/locales/fr/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "Permet de vérifier si le service est en place ou renvoie un code d'état HTTP spécifique." + "description": "" }, "states": { "online": "En ligne {{response}}", "offline": "Hors ligne {{response}}", "loading": "Chargement..." } -} \ No newline at end of file +} diff --git a/public/locales/fr/modules/search.json b/public/locales/fr/modules/search.json index f81d6b1ee..9100ecbbe 100644 --- a/public/locales/fr/modules/search.json +++ b/public/locales/fr/modules/search.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Barre de recherche", - "description": "Barre de recherche pour rechercher sur le web, Youtube, Torrents ou Overseerr" + "description": "Une barre de recherche qui vous permet d'effectuer des recherches dans un moteur de recherche personnalisé, sur YouTube et dans les intégrations prises en charge." }, "input": { "placeholder": "Cherchez sur le web..." @@ -10,11 +10,11 @@ "searchEngines": { "search": { "name": "Web", - "description": "Recherche à l'aide de votre moteur de recherche (défini dans les paramètres)" + "description": "Rechercher..." }, "youtube": { "name": "YouTube", - "description": "Cherchez sur YouTube" + "description": "Rechercher sur YouTube" }, "torrents": { "name": "Torrents", @@ -22,9 +22,9 @@ }, "overseerr": { "name": "Overseerr", - "description": "Chercher des films et séries TV avec Overseerr (le module doit-être activé)" + "description": "Rechercher des films et sériess sur Overseerr" } }, "tip": "Vous pouvez sélectionner la barre de recherche avec le raccourci ", "switchedSearchEngine": "Basculer vers la recherche avec {{searchEngine}}" -} \ No newline at end of file +} diff --git a/public/locales/fr/modules/torrents-status.json b/public/locales/fr/modules/torrents-status.json index aea9aec81..fb9c03ab2 100644 --- a/public/locales/fr/modules/torrents-status.json +++ b/public/locales/fr/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { "name": "Torrent", - "description": "Afficher la vitesse de téléchargement actuelle des services pris en charge", + "description": "Affiche une liste de torrents provenant de clients Torrent pris en charge.", "settings": { - "hideComplete": { + "title": "Paramètres du widget Torrent", + "refreshInterval": { + "label": "Intervalle d'actualisation en secondes" + }, + "displayCompletedTorrents": { "label": "Cacher les torrents terminés" + }, + "displayStaleTorrents": { + "label": "Afficher les torrents périmés" } } }, @@ -13,8 +20,8 @@ "header": { "name": "Nom", "size": "Taille", - "download": "Duvet", - "upload": "Up", + "download": "Descendant", + "upload": "Montant", "estimatedTimeOfArrival": "ETA", "progress": "Progrès" }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "Aucun client de téléchargement supporté n'a été trouvé !", - "text": "Ajouter un service de téléchargement pour afficher vos téléchargements en cours" + "title": "Aucun client Torrent supporté n'a été trouvé !", + "text": "Ajouter un client Torrent pris en charge pour voir vos téléchargements en cours" + }, + "generic": { + "title": "Une erreur inattendue s'est produite", + "text": "Homarr n'a pas pu communiquer avec vos clients Torrent. Veuillez vérifier votre configuration" } + }, + "loading": { + "title": "Chargement..." } } -} \ No newline at end of file +} diff --git a/public/locales/fr/modules/usenet.json b/public/locales/fr/modules/usenet.json index 9e747820b..afd2ea7f0 100644 --- a/public/locales/fr/modules/usenet.json +++ b/public/locales/fr/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { "name": "Usenet", - "description": "Permet de voir la file d'attente et l'historique de vos téléchargements usenet (Sabnzbd ou NZBGet), de mettre en pause et de reprendre les téléchargements" + "description": "Vous permet d'afficher et de gérer votre instance Usenet." }, "card": { "errors": { "noDownloadClients": { "title": "Aucun client de téléchargement supporté n'a été trouvé !", - "text": "Ajouter un service de téléchargement pour afficher vos téléchargements en cours" + "text": "Ajoutez un client de téléchargement Usenet pris en charge pour afficher vos téléchargements" } } }, diff --git a/public/locales/fr/modules/weather.json b/public/locales/fr/modules/weather.json index 45669569c..8accacb79 100644 --- a/public/locales/fr/modules/weather.json +++ b/public/locales/fr/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Météo", - "description": "Consultez la météo actuelle dans votre région", + "description": "Affiche la météo actuelle d'un emplacement préconfiguré.", "settings": { + "title": "Paramètres du widget météo", "displayInFahrenheit": { "label": "Affichage en Fahrenheit" }, @@ -29,4 +30,4 @@ "unknown": "Inconnu" } } -} \ No newline at end of file +} diff --git a/public/locales/fr/settings/common.json b/public/locales/fr/settings/common.json index 43759b7b5..80cdaca53 100644 --- a/public/locales/fr/settings/common.json +++ b/public/locales/fr/settings/common.json @@ -2,14 +2,28 @@ "title": "Paramètres", "tooltip": "Paramètres", "tabs": { - "common": "Common", + "common": "Général", "customizations": "Personnalisations" }, "tips": { - "configTip": "Téléchargez votre fichier de configuration en le faisant glisser et en le déposant sur la page !" + "configTip": "Importer votre fichier de configuration en le faisant glisser et en le déposant sur la page !" }, "credits": { "madeWithLove": "Fait avec ❤️ par @" }, - "grow": "" -} \ No newline at end of file + "grow": "Grille progressive (prend toute la largeur)", + "layout": { + "title": "Disposition du tableau de bord", + "main": "Principal", + "sidebar": "Barre latérale", + "cannotturnoff": "Ne peut être désactivé", + "dashboardlayout": "Disposition du tableau de bord", + "enablersidebar": "Activer la barre latérale droite", + "enablelsidebar": "Activer la barre latérale gauche", + "enablesearchbar": "Activer la barre de recherche", + "enabledocker": "Activer l'intégration Docker", + "enableping": "Activer les \"pings\"", + "enablelsidebardesc": "Optionnel. Ne peut être utilisé que pour les applications et les intégrations", + "enablersidebardesc": "Optionnel. Ne peut être utilisé que pour les applications et les intégrations" + } +} diff --git a/public/locales/fr/settings/customization/page-appearance.json b/public/locales/fr/settings/customization/page-appearance.json index d604e5c40..0072601b6 100644 --- a/public/locales/fr/settings/customization/page-appearance.json +++ b/public/locales/fr/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Titre de la page", - "placeholder": "Homarr 🦞" + "label": "Titre de la page" + }, + "metaTitle": { + "label": "Titre Méta" }, "logo": { "label": "Logo" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "CSS personnalisé", - "placeholder": "Le CSS personnalisé sera exécuté en dernier" + "placeholder": "Le CSS personnalisé sera appliqué en dernier" }, "buttons": { "submit": "Soumettre" diff --git a/public/locales/fr/settings/general/color-schema.json b/public/locales/fr/settings/general/color-schema.json index b9a69545a..236cb9728 100644 --- a/public/locales/fr/settings/general/color-schema.json +++ b/public/locales/fr/settings/general/color-schema.json @@ -1,3 +1,3 @@ { - "label": "Passez en mode {{scheme}}" + "label": "Passer en mode {{scheme}}" } \ No newline at end of file diff --git a/public/locales/fr/settings/general/config-changer.json b/public/locales/fr/settings/general/config-changer.json index 2951c8163..c964b9391 100644 --- a/public/locales/fr/settings/general/config-changer.json +++ b/public/locales/fr/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Chargeur de configuration" + "label": "", + "description": "", + "loadingNew": "Chargement des configurations ...", + "pleaseWait": "Veuillez attendre que votre nouvelle configuration soit chargée !" }, "modal": { - "title": "Choisissez le nom de votre nouvelle configuration", - "form": { - "configName": { - "label": "Nom de la configuration", - "placeholder": "Le nom de votre nouvelle configuration" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "Confirmer" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "Configuration sauvegardée", - "message": "Configuration enregistrée sous {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "La suppression de la configuration a échoué", "message": "La suppression de la configuration a échoué" + }, + "deleteFailedDefaultConfig": { + "title": "La configuration par défaut ne peut pas être supprimée", + "message": "La configuration n'a pas pu être supprimée du système de fichiers" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "Faites glisser les fichiers ici pour télécharger une configuration. Support pour JSON uniquement." + "title": "Téléversement de la configuration", + "text": "Faites glisser les fichiers ici pour importer votre configuration. Supporte uniquement les fichiers JSON." }, "reject": { - "text": "Ce format de fichier n'est pas pris en charge. Veuillez télécharger uniquement JSON." + "title": "Upload par glisser-déposer rejeté", + "text": "Ce format de fichier n'est pas pris en charge. Veuillez ne téléverser que des fichiers JSON." } } -} \ No newline at end of file +} diff --git a/public/locales/fr/settings/general/module-enabler.json b/public/locales/fr/settings/general/module-enabler.json index 179753b6f..9e26dfeeb 100644 --- a/public/locales/fr/settings/general/module-enabler.json +++ b/public/locales/fr/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Module enabler" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/fr/settings/general/search-engine.json b/public/locales/fr/settings/general/search-engine.json index fa2b7e2b0..ba73acb6d 100644 --- a/public/locales/fr/settings/general/search-engine.json +++ b/public/locales/fr/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Moteur de recherche", + "configurationName": "Configuration du moteur de recherche", "tips": { - "generalTip": "Utilisez les préfixes !yt et !t devant votre requête pour rechercher respectivement sur YouTube ou pour un Torrent.", + "generalTip": "Il existe plusieurs préfixes que vous pouvez utiliser ! L'ajout de ces préfixes devant votre requête filtrera les résultats. !s (Web), !t (Torrents), !y (YouTube), et !m (Media).", "placeholderTip": "%s peut être utilisé en tant que placeholder pour la requête." }, "customEngine": { + "title": "Moteur de recherche personnalisé", "label": "URL de la requête", "placeholder": "URL de requête personnalisée" }, "searchNewTab": { "label": "Ouvrir les résultats de la recherche dans un nouvel onglet" + }, + "searchEnabled": { + "label": "Recherche activée" } -} \ No newline at end of file +} diff --git a/public/locales/fr/settings/general/theme-selector.json b/public/locales/fr/settings/general/theme-selector.json index aae766602..170184905 100644 --- a/public/locales/fr/settings/general/theme-selector.json +++ b/public/locales/fr/settings/general/theme-selector.json @@ -1,3 +1,3 @@ { - "label": "Passez en mode {{theme}}" + "label": "Passer en mode {{theme}}" } \ No newline at end of file diff --git a/public/locales/fr/settings/general/widget-positions.json b/public/locales/fr/settings/general/widget-positions.json index 28649cb99..96674015a 100644 --- a/public/locales/fr/settings/general/widget-positions.json +++ b/public/locales/fr/settings/general/widget-positions.json @@ -1,3 +1,3 @@ { "label": "Positionner les widgets à gauche" -} \ No newline at end of file +} diff --git a/public/locales/he/authentication/login.json b/public/locales/he/authentication/login.json index 586b0ab5d..b4e9fa11e 100644 --- a/public/locales/he/authentication/login.json +++ b/public/locales/he/authentication/login.json @@ -1,6 +1,6 @@ { - "title": "ברוך הבא!", - "text": "אנא הזן את הסיסמה", + "title": "ברוך שובך!", + "text": "נא להזין סיסמה", "form": { "fields": { "password": { @@ -9,7 +9,7 @@ } }, "buttons": { - "submit": "כניסה למערכת" + "submit": "התחבר\\י" } }, "notifications": { @@ -18,10 +18,10 @@ "message": "הסיסמה בבדיקה..." }, "correct": { - "title": "הסיסמה נכונה לניתוב מחדש..." + "title": "התחברת בהצלחה" }, "wrong": { - "title": "הסיסמה שגויה אנא נסה שוב." + "title": "הסיסמה שגויה, נסה שנית" } } } diff --git a/public/locales/he/common.json b/public/locales/he/common.json index 8bb412672..a27baca6f 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "שמור" + "save": "שמור", + "about": "אודות", + "cancel": "בטל", + "close": "סגור", + "delete": "מחיקה", + "ok": "אישור", + "edit": "עריכה", + "version": "גרסה", + "changePosition": "שנה מיקום", + "remove": "הסר", + "removeConfirm": "האם אתה בטוח שברצונך להסיר את {{item}} ?", + "sections": { + "settings": "הגדרות", + "dangerZone": "אזור מסוכן" + }, + "secrets": { + "apiKey": "מפתח API", + "username": "שם משתמש", + "password": "סיסמה" }, "tip": "טיפ:", "time": { @@ -8,4 +25,4 @@ "minutes": "דקות", "hours": "שעות" } -} +} \ No newline at end of file diff --git a/public/locales/he/layout/add-service-app-shelf.json b/public/locales/he/layout/add-service-app-shelf.json index 4b6ed80d5..1acdb404d 100644 --- a/public/locales/he/layout/add-service-app-shelf.json +++ b/public/locales/he/layout/add-service-app-shelf.json @@ -36,7 +36,7 @@ "label": "קטגוריה", "placeholder": "בחר קטגוריה קיימת או צור חדשה", "nothingFound": "לא נמצא דבר", - "createLabel": "יצירת שאילתה" + "createLabel": "יצירת שאילתה {{query}}" }, "integrations": { "apiKey": { @@ -113,12 +113,6 @@ "advancedOptions": { "title": "אפשרויות מתקדמות", "form": { - "httpStatusCodes": { - "label": "סטטוס קוד HTTP", - "placeholder": "בחר קודי מצב חוקיים", - "clearButtonLabel": "נקה בחירה", - "nothingFound": "לא נמצא דבר" - }, "openServiceInNewTab": { "label": "פתיחת שירות בכרטיסיה חדשה" }, diff --git a/public/locales/he/layout/element-selector/selector.json b/public/locales/he/layout/element-selector/selector.json new file mode 100644 index 000000000..8c50729af --- /dev/null +++ b/public/locales/he/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "הוספת אריח חדש", + "text": "אריחים הם המרכיב העיקרי של Homarr. הם משמשים להצגת אפליקציות ומידע נוסף. ניתן להוסיף אריחים ללא הגבלה." + }, + "widgetDescription": "ווידג'טים מקיימים אינטראקציה עם האפליקציות, כדי לספק שליטה רבה יותר על היישומים. בדרך כלל דורשים תצורה נוספת לפני השימוש.", + "goBack": "חזרה לשלב הקודם", + "actionIcon": { + "tooltip": "הוספת אריח" + } +} diff --git a/public/locales/he/layout/header/actions/toggle-edit-mode.json b/public/locales/he/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..7486123e6 --- /dev/null +++ b/public/locales/he/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "במצב עריכה, ניתן להתאים אריחים ולהגדיר אפליקציות. שינויים לא נשמרים עד יציאה ממצב עריכה.", + "button": { + "disabled": "כניסה למצב עריכה", + "enabled": "יציאה ושמירה" + }, + "popover": { + "title": "מצב עריכה מופעל עבור גודל <1>{{size}}", + "text": "ניתן להתאים ולהגדיר את האפליקציות עכשיו. השינויים לא נשמרים עד יציאה ממצב עריכה." + }, + "screenSizes": { + "small": "קטן", + "medium": "בינוני", + "large": "גדול" + } +} diff --git a/public/locales/he/layout/mobile/drawer.json b/public/locales/he/layout/mobile/drawer.json new file mode 100644 index 000000000..ceb832da3 --- /dev/null +++ b/public/locales/he/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "סרגל צד {{position}}" +} diff --git a/public/locales/he/layout/modals/about.json b/public/locales/he/layout/modals/about.json new file mode 100644 index 000000000..6f3d57a9b --- /dev/null +++ b/public/locales/he/layout/modals/about.json @@ -0,0 +1,7 @@ +{ + "description": "Homarr הוא לוח מחוונים אלגנטי, מודרני, אשר שם את כל האפליקציות והשירותים בהישג יד. עם Homarr, ניתן לגשת לכל דבר ולשלוט בו במיקום נוח אחד. Homarr משתלב בצורה חלקה עם האפליקציות, מספק מידע רב ערך ונותן שליטה מלאה. ההתקנה היא קלה ותומכת במגוון רחב של שיטות פריסה.", + "i18n": "מרחבי שמות טעונים של תרגום i18n", + "locales": "אזורי i18n שתצורתם נקבעה", + "contact": "נתקלת בבעיות או בשאלות? צור איתנו קשר!", + "addToDashboard": "הוספה ללוח מחוונים" +} diff --git a/public/locales/he/layout/modals/add-app.json b/public/locales/he/layout/modals/add-app.json new file mode 100644 index 000000000..feae550bb --- /dev/null +++ b/public/locales/he/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "כללי", + "behaviour": "התנהגות", + "network": "רשת", + "appearance": "מראה", + "integration": "אינטגרציה" + }, + "general": { + "appname": { + "label": "שם אפליקציה", + "description": "משמש להצגת האפליקציה בלוח המחוונים." + }, + "internalAddress": { + "label": "כתובת פנימית", + "description": "כתובת פנימית של האפליקציה." + }, + "externalAddress": { + "label": "כתובת חיצונית", + "description": "כתובת אינטרנט שתיפתח בעת לחיצה על האפליקציה." + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "פתיחה בכרטיסיה חדשה", + "description": "פתח את האפליקציה בלשונית חדשה במקום הנוכחית." + } + }, + "network": { + "statusChecker": { + "label": "בודק מצב", + "description": "בודק אם האפליקציה שלך מקוונת באמצעות בקשת אינטרנט פשוטה." + }, + "statusCodes": { + "label": "קוד מצב HTTP ", + "description": "קודי סטטוס שנחשבים מקוונים." + } + }, + "appearance": { + "icon": { + "label": "סמל אפליקציה", + "description": "הסמל שיוצג בלוח המחוונים." + } + }, + "integration": { + "type": { + "label": "תצורת אינטגרציה", + "description": "תצורת האינטגרציה שתשמש לחיבור לאפליקציה שלך.", + "placeholder": "בחר אינטגרציה", + "defined": "מוגדר", + "undefined": "לא מוגדר", + "public": "ציבורי", + "private": "פרטי", + "explanationPrivate": "קוד פרטי יישלח לשרת פעם אחת בלבד. לאחר שהדפדפן שלך ירענן את הדף, הוא לעולם לא יישלח שוב.", + "explanationPublic": "קוד ציבורי יישלח תמיד ללקוח והוא נגיש דרך ה-API. זה לא אמור להכיל ערכים סודיים כגון שמות משתמש, סיסמאות, אסימונים, אישורים וכדומה!" + }, + "secrets": { + "description": "כדי לעדכן את הקוד, הזן ערך ולחץ על הלחצן שמור. כדי להסיר סוד השתמש בלחצן נקה.", + "warning": "האישורים שלך משמשים כגישה לאינטגרציות שלך ואתה לעולם לא תשתף אותם עם אף אחד אחר. צוות Homarr לעולם לא יבקש אישורים. הקפד לאחסן ולנהל את אישורים שלך בבטחה.", + "clear": "נקה אישורים", + "save": "שמור אישורים", + "update": "עדכן אישורים" + } + }, + "validation": { + "popover": "הטופס שלך מכיל מידע שגוי ולכן לא ניתן לשמירה. תקן את השגיאות ותשמור בשנית." + } +} diff --git a/public/locales/he/layout/modals/change-position.json b/public/locales/he/layout/modals/change-position.json new file mode 100644 index 000000000..df7a9dd93 --- /dev/null +++ b/public/locales/he/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "מיקום ציר X", + "width": "רוחב", + "height": "גובה", + "yPosition": "מיקום ציר Y", + "zeroOrHigher": "אפס או גבוה יותר", + "betweenXandY": "בין {{min}} ל- {{max}}" +} \ No newline at end of file diff --git a/public/locales/he/layout/screen-sizes.json b/public/locales/he/layout/screen-sizes.json new file mode 100644 index 000000000..30bc77a02 --- /dev/null +++ b/public/locales/he/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "קטן", + "medium": "בינוני", + "large": "גדול" + } +} diff --git a/public/locales/he/layout/tools.json b/public/locales/he/layout/tools.json new file mode 100644 index 000000000..7629d8e6e --- /dev/null +++ b/public/locales/he/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "כרגע אין לך כלים" + }, + "iconPicker": { + "textInputPlaceholder": "מחפש אחר סמלים", + "searchLimitationTitle": "חיפוש מוגבל ל- {{max}} סמלים", + "searchLimitationMessage": "כדי לשמור על פעולות מהירות, החיפוש מוגבל ל- {{max}} סמלים. השתמש בתיבת החיפוש למציאת סמלים נוספים" + } +} \ No newline at end of file diff --git a/public/locales/he/modules/calendar.json b/public/locales/he/modules/calendar.json index f5bec3620..4bb55e5f1 100644 --- a/public/locales/he/modules/calendar.json +++ b/public/locales/he/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "לוח שנה", - "description": "מודול לוח שנה להצגת עדכונים. מקושר ל- Sonarr ו- Radarr API.", + "description": "מציג לוח שנה עם עדכונים מאינטגרציות נתמכות.", "settings": { + "title": "הגדרות עבור ווידג'ט יומן", "sundayStart": { - "label": "להתחיל את השבוע ביום ראשון" + "label": "התחל את השבוע ביום ראשון" + }, + "radarrReleaseType": { + "label": "סוג שחרור של Radarr" } } } -} \ No newline at end of file +} diff --git a/public/locales/he/modules/common.json b/public/locales/he/modules/common.json index 0247e829e..8fd412e0b 100644 --- a/public/locales/he/modules/common.json +++ b/public/locales/he/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "הגדרות" + }, + "errors": { + "unmappedOptions": { + "text": "זוהה פרמטר לא בשימוש בתצורה
{{key}}. לא ניתן להשתמש בפרמטר זה. כדי להימנע מכל התנהגות בלתי צפויה, גבה ותקן את התצורה." + } } -} \ No newline at end of file +} diff --git a/public/locales/he/modules/dashdot.json b/public/locales/he/modules/dashdot.json index 407f6e782..cb9db2f42 100644 --- a/public/locales/he/modules/dashdot.json +++ b/public/locales/he/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "מודול להצגת הגרפים משירות Dash.", + "description": "מציג נתוני גרפים.", "settings": { + "title": "הגדרות עבור וידג׳ט Dash.", "cpuMultiView": { "label": "תצוגת מעבד מרובת ליבות" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/he/modules/date.json b/public/locales/he/modules/date.json index 0e804c8e5..5afc50fd3 100644 --- a/public/locales/he/modules/date.json +++ b/public/locales/he/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "תאריך", - "description": "הצגת השעה והתאריך הנוכחיים", + "name": "תאריך ושעה", + "description": "מציג את התאריך והשעה הנוכחיים.", "settings": { + "title": "הגדרות עבור ווידג'ט תאריך ושעה", "display24HourFormat": { "label": "הצגת זמן בפורמט 24 שעות" } } } -} \ No newline at end of file +} diff --git a/public/locales/he/modules/dlspeed.json b/public/locales/he/modules/dlspeed.json index d82ab968c..e5a190159 100644 --- a/public/locales/he/modules/dlspeed.json +++ b/public/locales/he/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "מהירות הורדה", - "description": "מציג את מהירות ההורדה הנוכחית של שירות נתמך" + "description": "מציג את מהירות ההורדה וההעלאה של אינטגרציות נתמכות." }, "card": { "table": { @@ -19,17 +19,17 @@ }, "lineChart": { "title": "מהירות הורדה נוכחית", - "download": "הורדה", - "upload": "העלאה", - "timeSpan": "לפני שניות", - "totalDownload": "הורדה ממתינה", - "totalUpload": "העלאה ממתינה" + "download": "הורדה {{download}}", + "upload": "העלאה {{upload}}", + "timeSpan": "לפני {{seconds}} שניות", + "totalDownload": "הורדות: {{download}}", + "totalUpload": "העלאות: {{upload}}" }, "errors": { "noDownloadClients": { "title": "לא נמצאו לקוחות הורדה נתמכים!", - "text": "הוסף שירות הורדה כדי להציג את ההורדות הנוכחיות שלך" + "text": "הוסף שירות הורדה כדי להציג ססטוס ההורדה / העלאה נוכחית" } } } -} \ No newline at end of file +} diff --git a/public/locales/he/modules/docker.json b/public/locales/he/modules/docker.json index 55d15bcbc..4067d78ca 100644 --- a/public/locales/he/modules/docker.json +++ b/public/locales/he/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "דוקר", - "description": "מאפשר ניהול בקלות את הקונטיינרים בדוקר" + "description": "מאפשר לראות ולנהל בקלות את כל מכולות הדוקר." }, "search": { "placeholder": "חיפוש לפי קונטיינר או שם קובץ תמונה" @@ -14,7 +14,7 @@ "state": "מצב" }, "body": { - "portCollapse": "יציאות" + "portCollapse": "עוד {{ports}}" }, "states": { "running": "פועל", @@ -25,14 +25,14 @@ }, "actionBar": { "addService": { - "title": "הוספת שירות", - "message": "הוסף שירות ל- Homarr" + "title": "הוספת יישום", + "message": "הוספת יישום ל-Homarr" }, "restart": { "title": "אתחל" }, "stop": { - "title": "עצר" + "title": "עצור" }, "start": { "title": "התחל" @@ -67,17 +67,17 @@ }, "errors": { "integrationFailed": { - "title": "שילוב docker נכשל", - "message": "האם שכחת לטעון את ה- Docker?" + "title": "שילוב דוקר נכשל", + "message": "האם שכחת לטעון את הדוקר?" }, "unknownError": { "title": "אירעה שגיאה" }, "oneServiceAtATime": { - "title": "אנא הוסף שירות אחד בלבד בכל פעם!" + "title": "אנא הוסף רק אפליקציה או שירות אחד בכל פעם!" } }, "actionIcon": { - "tooltip": "Docker" + "tooltip": "דוקר" } -} \ No newline at end of file +} diff --git a/public/locales/he/modules/overseerr.json b/public/locales/he/modules/overseerr.json index 9b273f167..f025277e7 100644 --- a/public/locales/he/modules/overseerr.json +++ b/public/locales/he/modules/overseerr.json @@ -1,12 +1,12 @@ { "descriptor": { "name": "Overseerr", - "description": "מאפשר חיפוש והוספת מידה מ- Overseerr/Jellyseerr" + "description": "מאפשר לך לחפש ולהוסיף מדיה מ-Overseerr או Jellyseerr." }, "popup": { "item": { "buttons": { - "askFor": "בקש מ", + "askFor": "בקש {{title}}", "cancel": "בטל", "request": "בקשה" }, @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/he/modules/ping.json b/public/locales/he/modules/ping.json index 4fe08857a..55acb8638 100644 --- a/public/locales/he/modules/ping.json +++ b/public/locales/he/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "פינג", - "description": "מאפשר בדיקה אם השירות פעיל או מחזיר קוד ספציפי של HTTP" + "description": "מציג מחוון סטטוס בהתאם לקוד תגובת בקשת רשת של כתובת אינטרנט נתונה." }, "states": { - "online": "מקוון", - "offline": "לא מקוון", + "online": "מקוון {{response}}", + "offline": "לא מקוון {{response}}", "loading": "טוען..." } -} \ No newline at end of file +} diff --git a/public/locales/he/modules/search.json b/public/locales/he/modules/search.json index b6aaf78a1..940239c6c 100644 --- a/public/locales/he/modules/search.json +++ b/public/locales/he/modules/search.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "סרגל חיפוש", - "description": "סרגל לחיפוש ברשת, יוטיוב, טורנטים או Overseerr" + "description": "שורת חיפוש המאפשרת לחפש במנוע החיפוש, ביוטיוב ובאינטגרציות נתמכות." }, "input": { "placeholder": "חפש באינטרנט..." @@ -10,7 +10,7 @@ "searchEngines": { "search": { "name": "אינטרנט", - "description": "חיפוש באמצעות מנוע החיפוש שלך (מוגדר בהגדרות)" + "description": "חיפוש..." }, "youtube": { "name": "יוטיוב", @@ -22,9 +22,9 @@ }, "overseerr": { "name": "Overseerr", - "description": "חיפוש סרטים ותוכניות טלוויזיה באמצעות Overseerr (המודול חייב להיות מאופשר)" + "description": "חפש סרטים ותוכניות טלוויזיה ב-Overseerr" } }, "tip": "באפשרותך לבחור את סרגל החיפוש באמצעות קיצור הדרך", "switchedSearchEngine": "עבור לחיפוש עם" -} \ No newline at end of file +} diff --git a/public/locales/he/modules/torrents-status.json b/public/locales/he/modules/torrents-status.json index 27e9d0dd7..093a96df4 100644 --- a/public/locales/he/modules/torrents-status.json +++ b/public/locales/he/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { "name": "טורנט", - "description": "מציג את מהירות ההורדה הנוכחית של שירות נתמך", + "description": "מציג רשימה של טורנטים מלקוחות טורנט נתמכים.", "settings": { - "hideComplete": { - "label": "הסתר טורנטים שהושלמו" + "title": "הגדרות עבור וידג׳ט טורנט", + "refreshInterval": { + "label": "מרווח הזמן לרענון (בשניות)" + }, + "displayCompletedTorrents": { + "label": "הצג טורנטים שהושלמו" + }, + "displayStaleTorrents": { + "label": "הצג טורנטים שהושלמו" } } }, @@ -24,17 +31,24 @@ }, "lineChart": { "title": "מהירות הורדה נוכחית", - "download": "הורדה", - "upload": "העלאה", - "timeSpan": "לפני שניות", - "totalDownload": "הורדה ממתינה", - "totalUpload": "העלאה ממתינה" + "download": "הורדה {{download}}", + "upload": "העלאה {{upload}}", + "timeSpan": "לפני {{seconds}} שניות", + "totalDownload": "הורדות: {{download}}", + "totalUpload": "העלאות: {{upload}}" }, "errors": { "noDownloadClients": { - "title": "לא נמצאו לקוחות הורדה נתמכים!", - "text": "הוסף שירות הורדה כדי להציג את ההורדות הנוכחיות שלך" + "title": "לא נמצאו לקוחות טורנט נתמכים!", + "text": "הוסף לקוח טורנט נתמך כדי להציג את ההורדות הנוכחיות שלך" + }, + "generic": { + "title": "שגיאה לא צפויה התרחשה", + "text": "לא ניתן לתקשר עם לקוחות הטורנט שלך. אנא בדוק את התצורה שלך" } + }, + "loading": { + "title": "טוען..." } } -} \ No newline at end of file +} diff --git a/public/locales/he/modules/usenet.json b/public/locales/he/modules/usenet.json index 86add712d..a76171842 100644 --- a/public/locales/he/modules/usenet.json +++ b/public/locales/he/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { "name": "קבוצת דיון", - "description": "מאפשר צפייה בהיסטוריה, תור ההורדות, עצירה וחידוש הורדות בקבוצות הדיון (Sabnzbd או NZBGet)" + "description": "מאפשר לך להציג ולנהל את מופע Usenet שלך." }, "card": { "errors": { "noDownloadClients": { "title": "לא נמצאו לקוחות הורדה נתמכים!", - "text": "הוסף שירות הורדה כדי להציג את ההורדות הנוכחיות שלך" + "text": "הוסף לקוח הורדה נתמך של Usenet כדי להציג את ההורדות הנוכחיות שלך" } } }, diff --git a/public/locales/he/modules/weather.json b/public/locales/he/modules/weather.json index 81e34a55f..82217d6d0 100644 --- a/public/locales/he/modules/weather.json +++ b/public/locales/he/modules/weather.json @@ -1,10 +1,11 @@ { "descriptor": { "name": "מזג אוויר", - "description": "חפש את מזג האוויר הנוכחי במיקום שלך", + "description": "מציג את מידע מזג האוויר הנוכחי של מיקום מוגדר.", "settings": { + "title": "הגדרות עבור ווידג'ט מזג אוויר", "displayInFahrenheit": { - "label": "להציג בפרנהייט" + "label": "פרנהייט" }, "location": { "label": "מיקום מזג האוויר" @@ -29,4 +30,4 @@ "unknown": "לא ידוע" } } -} \ No newline at end of file +} diff --git a/public/locales/he/settings/common.json b/public/locales/he/settings/common.json index b3b4b0c68..63be54c7f 100644 --- a/public/locales/he/settings/common.json +++ b/public/locales/he/settings/common.json @@ -6,10 +6,24 @@ "customizations": "התאמה אישית" }, "tips": { - "configTip": "העלה את קובץ ההגדרות שלך על-ידי גרירה ושחרור שלו לדף!" + "configTip": "העלה את קובץ התצורה שלך על ידי גרירה ושחרור שלו אל הדף!" }, "credits": { "madeWithLove": "נעשה ב- ❤️ ע״י @" }, - "grow": "" -} \ No newline at end of file + "grow": "הגדלת אריחים (תופס את כל השטח)", + "layout": { + "title": "פריסת לוח מחוונים", + "main": "ראשי", + "sidebar": "סרגל צד", + "cannotturnoff": "לא ניתן להסרה", + "dashboardlayout": "פריסת לוח מחוונים", + "enablersidebar": "הפעלת סרגל הצד הימני", + "enablelsidebar": "הפעלת סרגל הצד השמאלי", + "enablesearchbar": "הפעלת סרגל חיפוש", + "enabledocker": "הפעלת אינטגרצית דוקר", + "enableping": "הפעלת פינג", + "enablelsidebardesc": "אופציונלי. ניתן להשתמש עבור יישומים ואינטגרציות בלבד", + "enablersidebardesc": "אופציונלי. ניתן להשתמש עבור יישומים ואינטגרציות בלבד" + } +} diff --git a/public/locales/he/settings/customization/color-selector.json b/public/locales/he/settings/customization/color-selector.json index 5e856a2c8..c6dfd5967 100644 --- a/public/locales/he/settings/customization/color-selector.json +++ b/public/locales/he/settings/customization/color-selector.json @@ -1,3 +1,3 @@ { - "suffix": "צבע" + "suffix": "צבע {{color}}" } \ No newline at end of file diff --git a/public/locales/he/settings/customization/page-appearance.json b/public/locales/he/settings/customization/page-appearance.json index ba69da064..3e08c2634 100644 --- a/public/locales/he/settings/customization/page-appearance.json +++ b/public/locales/he/settings/customization/page-appearance.json @@ -1,22 +1,24 @@ { "pageTitle": { - "label": "כותרת העמוד", - "placeholder": "Homarr 🦞" + "label": "כותרת העמוד" + }, + "metaTitle": { + "label": "כותרת דף" }, "logo": { "label": "סמל" }, "favicon": { - "label": "אייקון לצד שם העמוד" + "label": "אייקון לצד שם הדף" }, "background": { "label": "רקע" }, "customCSS": { "label": "CSS מותאם אישית", - "placeholder": "css מותאם אישית יבוצע אחרון" + "placeholder": "CSS מותאם אישית יוחל אחרון" }, "buttons": { - "submit": "שמירה" + "submit": "שלח" } } diff --git a/public/locales/he/settings/general/color-schema.json b/public/locales/he/settings/general/color-schema.json index 0c6c5d0d1..f24f983a8 100644 --- a/public/locales/he/settings/general/color-schema.json +++ b/public/locales/he/settings/general/color-schema.json @@ -1,3 +1,3 @@ { - "label": "מעבר למצב סכמה" + "label": "מעבר למראה {{scheme}}" } \ No newline at end of file diff --git a/public/locales/he/settings/general/config-changer.json b/public/locales/he/settings/general/config-changer.json index eb3e91f88..e9df3fbb8 100644 --- a/public/locales/he/settings/general/config-changer.json +++ b/public/locales/he/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "טעינת קובץ הגדרות" + "label": "מחליף הגדרות", + "description": "{{configCount}} תצורות זמינות", + "loadingNew": "טוען הגדרות...", + "pleaseWait": "אנא המתן עד לטעינת התצורה החדשה שלך!" }, "modal": { - "title": "בחירת שם קובץ הגדרות חדש", - "form": { - "configName": { - "label": "שם קובץ הגדרות", - "placeholder": "שם קובץ הגדרות חדש" + "copy": { + "title": "בחר/י את שם התצורה החדשה שלך", + "form": { + "configName": { + "label": "שם תצורה", + "validation": { + "required": "נדרש שם תצורה", + "notUnique": "שם התצורה כבר בשימוש" + }, + "placeholder": "שם התצורה החדש שלך" + }, + "submitButton": "לאשר" }, - "submitButton": "אישור" + "events": { + "configSaved": { + "title": "התצורה נשמרה", + "message": "התצורה נשמרה בשם {{configName}}" + }, + "configCopied": { + "title": "התצורה הועתקה", + "message": "התצורה הועתקה בשם {{configName}}" + }, + "configNotCopied": { + "title": "לא ניתן להעתיק את התצורה", + "message": "התצורה שלך לא הועתקה בשם {{configName}}" + } + } }, - "events": { - "configSaved": { - "title": "קובץ הגדרות נשמר", - "message": "קובץ הגדרות נשמר בשם {{configName}}" + "confirmDeletion": { + "title": "אשר את מחיקת התצורה שלך", + "warningText": "אתה עומד למחוק את ' {{configName}}'", + "text": "שים לב שהמחיקה לא ניתנת לשינוי והנתונים שלך יאבדו לצמיתות. לאחר לחיצה על כפתור זה, הקובץ יימחק לצמיתות מהדיסק שלך. הקפד ליצור גיבוי מתאים של התצורה שלך.", + "buttons": { + "confirm": "כן, למחוק ' {{configName}}'" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "נכשל במחיקת קובץ הגדרות", "message": "נכשל במחיקת קובץ הגדרות" + }, + "deleteFailedDefaultConfig": { + "title": "לא ניתן למחוק את תצורת ברירת המחדל", + "message": "התצורה לא נמחקה ממערכת הקבצים" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "גרור קובץ לכאן כדי להעלות את קובץ ההגדרות, תמיכה ב- JSON בלבד" + "title": "קובץ הגדרות עלה", + "text": "גרור לכאן קבצים כדי להעלות תצורה. תמיכה בקבצי JSON בלבד." }, "reject": { - "text": "תבנית קובץ זו אינה נתמכת, ניתן להעלות קובץ JSON בלבד" + "title": "גרור ושחרר העלאה שנדחתה", + "text": "פורמט קובץ זה אינו נתמך. נא להעלות רק קובצי JSON." } } -} \ No newline at end of file +} diff --git a/public/locales/he/settings/general/module-enabler.json b/public/locales/he/settings/general/module-enabler.json index cbfa34dbd..9e26dfeeb 100644 --- a/public/locales/he/settings/general/module-enabler.json +++ b/public/locales/he/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "מודול מופעל" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/he/settings/general/search-engine.json b/public/locales/he/settings/general/search-engine.json index b21e58b98..0f7325a17 100644 --- a/public/locales/he/settings/general/search-engine.json +++ b/public/locales/he/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "מנוע חיפוש", + "configurationName": "הגדרות מנוע חיפוש", "tips": { - "generalTip": "השתמש בקידומות yt ו- t לפני השאילתה שלך כדי לחפש ב- Youtube או עבור סיקור", + "generalTip": "ישנן מספר קידומות שבהן ניתן להשתמש! הוספה לפני השאילתה שלך תסנן את התוצאות. !s (אינטרנט), !t (טורנטים), !y! ,(YouTube) m (מדיה).", "placeholderTip": "s% יכול לשמש כמציין מיקום עבור השאילתה." }, "customEngine": { + "title": "מנוע חיפוש מותאם אישית", "label": "כתובת URL של שאילתה", "placeholder": "כתובת URL של שאילתה מותאמת אישית" }, "searchNewTab": { "label": "פתיחת תוצאות חיפוש בכרטיסיה חדשה" + }, + "searchEnabled": { + "label": "חיפוש מאופשר" } -} \ No newline at end of file +} diff --git a/public/locales/he/settings/general/theme-selector.json b/public/locales/he/settings/general/theme-selector.json index f22eabf08..2806dbfae 100644 --- a/public/locales/he/settings/general/theme-selector.json +++ b/public/locales/he/settings/general/theme-selector.json @@ -1,3 +1,3 @@ { - "label": "החלפת ערכת נושא" + "label": "מעבר למראה {{theme}}" } \ No newline at end of file diff --git a/public/locales/he/settings/general/widget-positions.json b/public/locales/he/settings/general/widget-positions.json index 77e470db1..0a06fcb50 100644 --- a/public/locales/he/settings/general/widget-positions.json +++ b/public/locales/he/settings/general/widget-positions.json @@ -1,3 +1,3 @@ { - "label": "מקם ווידג'טים משמאל" -} \ No newline at end of file + "label": "מקם ווידג'טים בצד שמאל" +} diff --git a/public/locales/it/authentication/login.json b/public/locales/it/authentication/login.json index 847451237..c4f632b70 100644 --- a/public/locales/it/authentication/login.json +++ b/public/locales/it/authentication/login.json @@ -18,10 +18,10 @@ "message": "La tua password è in fase di controllo..." }, "correct": { - "title": "Password corretta, reindirizzamento..." + "title": "Accesso effettuato, reindirizzamento..." }, "wrong": { - "title": "Password errata. Per favore riprova." + "title": "La password inserita non è corretta. Si prega di riprovare." } } } diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 5ec01c8be..2dac6ccd1 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Salva" + "save": "Salva", + "about": "Info", + "cancel": "Annulla", + "close": "Chiudi", + "delete": "Elimina", + "ok": "OK", + "edit": "Modifica", + "version": "Versione", + "changePosition": "Cambia posizione", + "remove": "Rimuovi", + "removeConfirm": "Siete sicuri di voler rimuovere {{item}}?", + "sections": { + "settings": "Impostazioni", + "dangerZone": "Danger zone" + }, + "secrets": { + "apiKey": "Chiave API", + "username": "Nome utente", + "password": "Password" }, "tip": "Suggerimento: ", "time": { @@ -8,4 +25,4 @@ "minutes": "minuti", "hours": "ore" } -} +} \ No newline at end of file diff --git a/public/locales/it/layout/add-service-app-shelf.json b/public/locales/it/layout/add-service-app-shelf.json index cc3831387..f93d2fee6 100644 --- a/public/locales/it/layout/add-service-app-shelf.json +++ b/public/locales/it/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Impostazioni avanzate", "form": { - "httpStatusCodes": { - "label": "Status Codes HTTP", - "placeholder": "Selezionare status codes validi", - "clearButtonLabel": "Elimina selezione", - "nothingFound": "Nessun risultato" - }, "openServiceInNewTab": { "label": "Apri servizio in una nuova scheda" }, diff --git a/public/locales/it/layout/element-selector/selector.json b/public/locales/it/layout/element-selector/selector.json new file mode 100644 index 000000000..03a055510 --- /dev/null +++ b/public/locales/it/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "Aggiungi nuovo riquadro", + "text": "I tile sono l'elemento principale di Homarr. Sono utilizzati per visualizzare le tue app e altre informazioni. Puoi aggiungere tutti i tile che vuoi." + }, + "widgetDescription": "I widget interagiscono con le applicazioni per fornire un maggior controllo. Normalmente richiedono configurazioni aggiuntive prima di essere utilizzati.", + "goBack": "Torna indietro allo step precedente", + "actionIcon": { + "tooltip": "Aggiungi riquadro" + } +} diff --git a/public/locales/it/layout/header/actions/toggle-edit-mode.json b/public/locales/it/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..070a49a6a --- /dev/null +++ b/public/locales/it/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "In Edit Mode, è possibile regolare i tile e configurare le applicazioni. Le modifiche non vengono salvate fino all'uscita dalla Edit Mode.", + "button": { + "disabled": "Attiva Edit Mode", + "enabled": "Salva ed esci" + }, + "popover": { + "title": "Edit mode abilitata per dimensione <1>{{size}}", + "text": "Ora è possibile regolare e configurare le applicazioni. Le modifiche non verranno salvate finché non si esce dalla edit mode" + }, + "screenSizes": { + "small": "piccolo", + "medium": "medio", + "large": "grande" + } +} diff --git a/public/locales/it/layout/mobile/drawer.json b/public/locales/it/layout/mobile/drawer.json new file mode 100644 index 000000000..30c2fede5 --- /dev/null +++ b/public/locales/it/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} barra laterale" +} diff --git a/public/locales/it/layout/modals/about.json b/public/locales/it/layout/modals/about.json new file mode 100644 index 000000000..b5e5c5c6a --- /dev/null +++ b/public/locales/it/layout/modals/about.json @@ -0,0 +1,7 @@ +{ + "description": "Homarr è una elegante e moderna dashboard che mette tutte le vostre app e i vostri servizi a portata di mano. Con Homarr, potete controllare tutto in un'unica comoda posizione. Homarr si integra perfettamente con le app aggiunte, fornendo informazioni preziose e offrendo un controllo completo. L'installazione è semplice e Homarr supporta un'ampia gamma di metodi di deployment.", + "i18n": "Translation namespaces I18n caricati", + "locales": "I18n locales configurati", + "contact": "Problemi o domande? Contattaci!", + "addToDashboard": "Aggiungi alla dashboard" +} diff --git a/public/locales/it/layout/modals/add-app.json b/public/locales/it/layout/modals/add-app.json new file mode 100644 index 000000000..924813a35 --- /dev/null +++ b/public/locales/it/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "Generale", + "behaviour": "Comportamento", + "network": "Rete", + "appearance": "Aspetto", + "integration": "Integrazione" + }, + "general": { + "appname": { + "label": "Nome app", + "description": "Utilizzato per visualizzare l'app sulla dashboard." + }, + "internalAddress": { + "label": "Indirizzo interno", + "description": "IP interno dell'app." + }, + "externalAddress": { + "label": "Indirizzo esterno", + "description": "URL che verrà aperto nel browser al clic dell'app." + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "Apri in una nuova scheda", + "description": "Apri l'app in una nuova scheda invece di quella attuale." + } + }, + "network": { + "statusChecker": { + "label": "Status checker", + "description": "Verifica se l'applicazione è online utilizzando una semplice richiesta HTTP(S)." + }, + "statusCodes": { + "label": "Codici di stato HTTP", + "description": "Gli status code HTTP considerati online." + } + }, + "appearance": { + "icon": { + "label": "Icona App", + "description": "L'icona che verrà visualizzata sulla dashboard." + } + }, + "integration": { + "type": { + "label": "Configurazione integrazioni", + "description": "La configurazione dell'integrazione che verrà utilizzata per connettersi all'applicazione.", + "placeholder": "Seleziona un'integrazione", + "defined": "Definito", + "undefined": "Indefinito", + "public": "Pubblico", + "private": "Privato", + "explanationPrivate": "Un secret privato verrà inviato al server una sola volta. Una volta che il browser avrà aggiornato la pagina, non verrà mai inviato di nuovo.", + "explanationPublic": "Un secret pubblico sarà sempre inviato al client ed è accessibile tramite API. Non dovrebbe contenere dati sensibili come nomi utente, password, token, certificati e simili!" + }, + "secrets": { + "description": "Per aggiornare un secret, inserisci un valore e fai clic sul pulsante Salva. Per rimuoverlo, usa il pulsante rimuovi.", + "warning": "Le tue credenziali fungono da accesso per le tue integrazioni e non devi mai condividerle con nessuno. Il team ufficiale di Homarr non chiederà mai le credenziali. Assicurati di memorizzare e gestire i tuoi dati privati in modo sicuro.", + "clear": "Rimuovi secret", + "save": "Salva secret", + "update": "Aggiorna secret" + } + }, + "validation": { + "popover": "Il form contiene dati invalidi. Pertanto, non può essere salvato. Risolvere tutti i problemi e fare nuovamente clic su questo pulsante per salvare le modifiche" + } +} diff --git a/public/locales/it/layout/modals/change-position.json b/public/locales/it/layout/modals/change-position.json new file mode 100644 index 000000000..12df9bd38 --- /dev/null +++ b/public/locales/it/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "Posizione asse X", + "width": "Larghezza", + "height": "Altezza", + "yPosition": "Posizione asse Y", + "zeroOrHigher": "0 o maggiore", + "betweenXandY": "Fra {{min}} e {{max}}" +} \ No newline at end of file diff --git a/public/locales/it/layout/screen-sizes.json b/public/locales/it/layout/screen-sizes.json new file mode 100644 index 000000000..84227d21a --- /dev/null +++ b/public/locales/it/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "piccolo", + "medium": "medio", + "large": "grande" + } +} diff --git a/public/locales/it/layout/tools.json b/public/locales/it/layout/tools.json new file mode 100644 index 000000000..70f9565d9 --- /dev/null +++ b/public/locales/it/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "Al momento non si dispone di alcuno strumento" + }, + "iconPicker": { + "textInputPlaceholder": "Cerca un'icona...", + "searchLimitationTitle": "La ricerca è limitata a {{max}} icone", + "searchLimitationMessage": "Per garantire le performance, la ricerca è limitata a {{max}} icone. Usa la barra di ricerca per trovare più icone" + } +} \ No newline at end of file diff --git a/public/locales/it/modules/calendar.json b/public/locales/it/modules/calendar.json index baa9106ce..2ce0f0f48 100644 --- a/public/locales/it/modules/calendar.json +++ b/public/locales/it/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Calendario", - "description": "Un calendario per la visualizzazione delle prossime uscite. Può comunicare con le API di Sonarr e Radarr.", + "description": "Mostra un calendario con le prossime versioni dalle integrazioni supportate.", "settings": { + "title": "Impostazioni per il widget Calendario", "sundayStart": { "label": "Inizia la settimana di domenica" + }, + "radarrReleaseType": { + "label": "Tipo di release Radarr" } } } -} \ No newline at end of file +} diff --git a/public/locales/it/modules/common.json b/public/locales/it/modules/common.json index 162178e59..c5f229a8f 100644 --- a/public/locales/it/modules/common.json +++ b/public/locales/it/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Impostazioni" + }, + "errors": { + "unmappedOptions": { + "text": "Parametro non utilizzato nella configurazione rilevata
{{key}}. Homarr non è in grado d'interpretare e utilizzare questo parametro. Onde evitare comportamenti imprevisti, eseguire un backup della configurazione e correggerla." + } } -} \ No newline at end of file +} diff --git a/public/locales/it/modules/dashdot.json b/public/locales/it/modules/dashdot.json index 620dcae18..0c235b998 100644 --- a/public/locales/it/modules/dashdot.json +++ b/public/locales/it/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "Un modulo per visualizzare i grafici dell'istanza di Dash. in esecuzione.", + "description": "Visualizza i grafici di un'istanza Dash. esterna all'interno di Homarr.", "settings": { + "title": "Impostazioni del widget Dash.", "cpuMultiView": { "label": "Vista CPU Multi-Core" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/it/modules/date.json b/public/locales/it/modules/date.json index e68b8f2ec..e0f6ff5a0 100644 --- a/public/locales/it/modules/date.json +++ b/public/locales/it/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Data", - "description": "Mostra l'ora e la data corrente in una scheda", + "name": "Data e Ora", + "description": "Visualizza la data e l'ora correnti.", "settings": { + "title": "Impostazioni per il widget Data e Ora", "display24HourFormat": { "label": "Visualizza formato 24 ore" } } } -} \ No newline at end of file +} diff --git a/public/locales/it/modules/dlspeed.json b/public/locales/it/modules/dlspeed.json index 1e2b24047..89319eea0 100644 --- a/public/locales/it/modules/dlspeed.json +++ b/public/locales/it/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Velocità Di Download", - "description": "Mostra la velocità di download corrente dei servizi supportati" + "description": "Visualizza la velocità di download e upload delle integrazioni supportate." }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/it/modules/docker.json b/public/locales/it/modules/docker.json index 6411a2537..b5b314a97 100644 --- a/public/locales/it/modules/docker.json +++ b/public/locales/it/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Docker", - "description": "Gestisci facilmente i tuoi container di docker" + "description": "Permette di vedere e gestire facilmente tutti i vostri Container di Docker." }, "search": { "placeholder": "Ricerca per container nome immagine" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Aggiungi servizio", - "message": "Aggiungi servizio a Homarr" + "title": "Aggiungi App", + "message": "Aggiungi app ad Homarr" }, "restart": { "title": "Riavvia" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "Integrazione Docker fallita", - "message": "Hai dimenticato di montare il socket di docker?" + "message": "Vi siete dimenticati di montare il socket di Docker?" }, "unknownError": { "title": "Si è verificato un errore" }, "oneServiceAtATime": { - "title": "Si prega di aggiungere solo un servizio alla volta!" + "title": "Aggiungi solo un'app o un servizio alla volta!" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/it/modules/overseerr.json b/public/locales/it/modules/overseerr.json index f360e9788..99a674cc0 100644 --- a/public/locales/it/modules/overseerr.json +++ b/public/locales/it/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Permette di cercare e aggiungere media da Overseerr/Jellyseerr" + "description": "Permette di cercare e aggiungere media da Overseerr o Jellyseerr." }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "Seleziona le stagioni che desideri scaricare", + "caption": "Spuntare le stagioni che si desidera scaricare", "table": { "header": { "season": "Stagione", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/it/modules/ping.json b/public/locales/it/modules/ping.json index 9235a48e9..623156fe1 100644 --- a/public/locales/it/modules/ping.json +++ b/public/locales/it/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "Consente di controllare se il servizio è attivo o restituisce uno specifico status code HTTP." + "description": "Visualizza un indicatore di stato in base al codice di risposta HTTP di un determinato URL." }, "states": { "online": "Online {{response}}", "offline": "Offline {{response}}", "loading": "Caricamento in corso..." } -} \ No newline at end of file +} diff --git a/public/locales/it/modules/search.json b/public/locales/it/modules/search.json index 06f1404db..f12a59ca8 100644 --- a/public/locales/it/modules/search.json +++ b/public/locales/it/modules/search.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Barra di ricerca", - "description": "Barra di ricerca per cercare sul web, Youtube, Torrent o Overseerr" + "description": "Una barra di ricerca che consente di cercare nel motore di ricerca personalizzato, YouTube e integrazioni supportate." }, "input": { "placeholder": "Cerca sul web..." @@ -10,7 +10,7 @@ "searchEngines": { "search": { "name": "Web", - "description": "Cerca usando il tuo motore di ricerca (definito nelle impostazioni)" + "description": "Cerca..." }, "youtube": { "name": "Youtube", @@ -22,9 +22,9 @@ }, "overseerr": { "name": "Overseerr", - "description": "Cerca film e serie TV con Overseerr (il modulo deve essere abilitato)" + "description": "Cerca film e serie TV su Overseerr" } }, "tip": "Puoi selezionare la barra di ricerca con la scorciatoia ", "switchedSearchEngine": "Ricerca cambiata con {{searchEngine}}" -} \ No newline at end of file +} diff --git a/public/locales/it/modules/torrents-status.json b/public/locales/it/modules/torrents-status.json index cad61981b..eed33ce83 100644 --- a/public/locales/it/modules/torrents-status.json +++ b/public/locales/it/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { "name": "Torrent", - "description": "Mostra la velocità di download corrente dei servizi supportati", + "description": "Visualizza un elenco di torrent dai client Torrent supportati.", "settings": { - "hideComplete": { - "label": "Nascondi torrent completati" + "title": "Impostazioni per il widget Torrent", + "refreshInterval": { + "label": "Intervallo di aggiornamento (in secondi)" + }, + "displayCompletedTorrents": { + "label": "Mostra torrent completati" + }, + "displayStaleTorrents": { + "label": "Mostra torrent in stallo" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "Nessun client di download supportato trovato!", - "text": "Aggiungi un servizio di download per visualizzare i tuoi download attuali" + "title": "Nessun client Torrent supportato trovato!", + "text": "Aggiungi un client Torrent supportato per visualizzare i download attuali" + }, + "generic": { + "title": "Si è verificato un errore inaspettato", + "text": "Homarr non è riuscito a comunicare con i client Torrent. Controlla la tua configurazione" } + }, + "loading": { + "title": "Caricamento in corso..." } } -} \ No newline at end of file +} diff --git a/public/locales/it/modules/usenet.json b/public/locales/it/modules/usenet.json index 6fb5bb105..c7bdc8cd7 100644 --- a/public/locales/it/modules/usenet.json +++ b/public/locales/it/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { "name": "Usenet", - "description": "Permette di vedere la coda e la cronologia di usenet (Sabnzbd o NZBGet), di mettere in pausa e riprendere i download" + "description": "Consente di visualizzare e gestire la propria istanza Usenet." }, "card": { "errors": { "noDownloadClients": { "title": "Nessun client di download supportato trovato!", - "text": "Aggiungi un servizio di download per visualizzare i tuoi download attuali" + "text": "Aggiungi un client di download Usenet supportato per visualizzare i download attuali" } } }, diff --git a/public/locales/it/modules/weather.json b/public/locales/it/modules/weather.json index a2fe6610c..0f882abef 100644 --- a/public/locales/it/modules/weather.json +++ b/public/locales/it/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Meteo", - "description": "Consulta il meteo attuale della propria località", + "description": "Mostra le informazioni meteo attuali di una località.", "settings": { + "title": "Impostazioni per l'integrazione meteo", "displayInFahrenheit": { "label": "Mostra in Fahrenheit" }, @@ -29,4 +30,4 @@ "unknown": "Sconosciuto" } } -} \ No newline at end of file +} diff --git a/public/locales/it/settings/common.json b/public/locales/it/settings/common.json index 31e06d5ec..552939da4 100644 --- a/public/locales/it/settings/common.json +++ b/public/locales/it/settings/common.json @@ -11,5 +11,19 @@ "credits": { "madeWithLove": "Realizzato con ❤️ da @" }, - "grow": "" -} \ No newline at end of file + "grow": "Espandi la griglia (occupa tutto lo spazio)", + "layout": { + "title": "Layout della Dashboard", + "main": "Main", + "sidebar": "Barra laterale", + "cannotturnoff": "Impossibile disattivare", + "dashboardlayout": "Layout della Dashboard", + "enablersidebar": "Abilita la barra laterale destra", + "enablelsidebar": "Abilita la barra laterale sinistra", + "enablesearchbar": "Abilita barra di ricerca", + "enabledocker": "Abilita integrazione di docker", + "enableping": "Abilita i ping", + "enablelsidebardesc": "Facoltativo. Può essere utilizzato solo per applicazioni e integrazioni", + "enablersidebardesc": "Facoltativo. Può essere utilizzato solo per applicazioni e integrazioni" + } +} diff --git a/public/locales/it/settings/customization/page-appearance.json b/public/locales/it/settings/customization/page-appearance.json index 9f724bc2b..4df78cf7d 100644 --- a/public/locales/it/settings/customization/page-appearance.json +++ b/public/locales/it/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Titolo pagina", - "placeholder": "Homarr 🦞" + "label": "Titolo pagina" + }, + "metaTitle": { + "label": "Titolo meta" }, "logo": { "label": "Logo" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "CSS personalizzato", - "placeholder": "I CSS personalizzati saranno eseguiti per ultimi" + "placeholder": "I CSS personalizzati saranno applicati per ultimi" }, "buttons": { "submit": "Invia" diff --git a/public/locales/it/settings/general/config-changer.json b/public/locales/it/settings/general/config-changer.json index b9dec1e85..e7b4a2b30 100644 --- a/public/locales/it/settings/general/config-changer.json +++ b/public/locales/it/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Carica configurazione" + "label": "Config changer", + "description": "", + "loadingNew": "Caricamento della configurazione...", + "pleaseWait": "Attendere fino al caricamento della nuova configurazione!" }, "modal": { - "title": "Scegli il nome della nuova configurazione", - "form": { - "configName": { - "label": "Nome configurazione", - "placeholder": "Nuovo nome configurazione" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "Conferma" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "Configurazione salvata", - "message": "Configurazione salvata come {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "Eliminazione configurazione fallita", "message": "Eliminazione configurazione fallita" + }, + "deleteFailedDefaultConfig": { + "title": "Il config predefinito non può essere eliminato", + "message": "La configurazione non è stata eliminata dal file system" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "Trascina qui i file per caricare una configurazione. Solo file JSON supportati." + "title": "Caricamento configurazione", + "text": "Trascinare i file qui per caricare una configurazione. Supporto solo per i file JSON." }, "reject": { + "title": "Caricamento Drag and Drop rifiutato", "text": "Formato file non supportato. Caricare solo file JSON." } } -} \ No newline at end of file +} diff --git a/public/locales/it/settings/general/module-enabler.json b/public/locales/it/settings/general/module-enabler.json index 07c1d273c..9e26dfeeb 100644 --- a/public/locales/it/settings/general/module-enabler.json +++ b/public/locales/it/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Abilitatore moduli" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/it/settings/general/search-engine.json b/public/locales/it/settings/general/search-engine.json index a10bfaf54..956a59a82 100644 --- a/public/locales/it/settings/general/search-engine.json +++ b/public/locales/it/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Motore di ricerca", + "configurationName": "Configurazione del motore di ricerca", "tips": { - "generalTip": "Usa i prefissi !yt e !t di fronte alla tua ricerca per cercare rispettivamente su YouTube o un Torrent.", + "generalTip": "È possibile utilizzare diversi prefissi! L'aggiunta di questi prefissi davanti alla query filtrerà i risultati. !s (Web), !t (Torrent), !y (YouTube) e !m (Media).", "placeholderTip": "%s può essere usato come segnaposto per la ricerca." }, "customEngine": { + "title": "Motore di ricerca personalizzato", "label": "URL di ricerca", "placeholder": "URL di ricerca personalizzato" }, "searchNewTab": { "label": "Apri i risultati della ricerca in una nuova scheda" + }, + "searchEnabled": { + "label": "Ricerca abilitata" } -} \ No newline at end of file +} diff --git a/public/locales/it/settings/general/widget-positions.json b/public/locales/it/settings/general/widget-positions.json index 8d141a558..9cfb7dcf4 100644 --- a/public/locales/it/settings/general/widget-positions.json +++ b/public/locales/it/settings/general/widget-positions.json @@ -1,3 +1,3 @@ { "label": "Posiziona widget a sinistra" -} \ No newline at end of file +} diff --git a/public/locales/ja/authentication/login.json b/public/locales/ja/authentication/login.json index 2630421a1..546f9bcf4 100644 --- a/public/locales/ja/authentication/login.json +++ b/public/locales/ja/authentication/login.json @@ -1,21 +1,21 @@ { - "title": "", + "title": "お帰りなさい", "text": "", "form": { "fields": { "password": { "label": "パスワード", - "placeholder": "" + "placeholder": "パスワード" } }, "buttons": { - "submit": "" + "submit": "サインイン" } }, "notifications": { "checking": { - "title": "", - "message": "" + "title": "パスワードの確認", + "message": "パスワードは確認中です..." }, "correct": { "title": "" diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 41628d546..6f1b00766 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "保存" + "save": "保存", + "about": "について", + "cancel": "キャンセル", + "close": "閉じる", + "delete": "削除", + "ok": "よっしゃー", + "edit": "編集", + "version": "バージョン", + "changePosition": "ポジションを変更する", + "remove": "削除", + "removeConfirm": "", + "sections": { + "settings": "設定", + "dangerZone": "デンジャーゾーン" + }, + "secrets": { + "apiKey": "Apiキー", + "username": "ユーザー名", + "password": "パスワード" }, "tip": "ヒント ", "time": { @@ -8,4 +25,4 @@ "minutes": "議事録", "hours": "時間" } -} +} \ No newline at end of file diff --git a/public/locales/ja/layout/add-service-app-shelf.json b/public/locales/ja/layout/add-service-app-shelf.json index 9d48b1ce9..574240262 100644 --- a/public/locales/ja/layout/add-service-app-shelf.json +++ b/public/locales/ja/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "高度なオプション", "form": { - "httpStatusCodes": { - "label": "HTTPステータスコード", - "placeholder": "有効なステータスコードを選択する", - "clearButtonLabel": "クリア選択", - "nothingFound": "何も見つかりません" - }, "openServiceInNewTab": { "label": "新しいタブでサービスを開く" }, diff --git a/public/locales/ja/layout/element-selector/selector.json b/public/locales/ja/layout/element-selector/selector.json new file mode 100644 index 000000000..1fe2fe166 --- /dev/null +++ b/public/locales/ja/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "新しいタイルを追加する", + "text": "" + }, + "widgetDescription": "", + "goBack": "前のステップに戻る", + "actionIcon": { + "tooltip": "タイルを追加する" + } +} diff --git a/public/locales/ja/layout/header/actions/toggle-edit-mode.json b/public/locales/ja/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..bf76a5328 --- /dev/null +++ b/public/locales/ja/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "", + "button": { + "disabled": "編集モードに入る", + "enabled": "終了と保存" + }, + "popover": { + "title": "", + "text": "" + }, + "screenSizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/ja/layout/mobile/drawer.json b/public/locales/ja/layout/mobile/drawer.json new file mode 100644 index 000000000..8549fe35e --- /dev/null +++ b/public/locales/ja/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} サイドバー" +} diff --git a/public/locales/ja/layout/modals/about.json b/public/locales/ja/layout/modals/about.json new file mode 100644 index 000000000..9b88f6ddb --- /dev/null +++ b/public/locales/ja/layout/modals/about.json @@ -0,0 +1,6 @@ +{ + "i18n": "ロードされたI18n翻訳名前空間", + "locales": "設定されたI18nロケール", + "contact": "お困りごとやご質問はありませんか?私たちにご連絡ください。", + "addToDashboard": "ダッシュボードに追加" +} diff --git a/public/locales/ja/layout/modals/add-app.json b/public/locales/ja/layout/modals/add-app.json new file mode 100644 index 000000000..f76a5fb3a --- /dev/null +++ b/public/locales/ja/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "一般", + "behaviour": "ビヘイビア", + "network": "ネットワーク", + "appearance": "外観", + "integration": "統合化" + }, + "general": { + "appname": { + "label": "アプリ名", + "description": "" + }, + "internalAddress": { + "label": "内部アドレス", + "description": "" + }, + "externalAddress": { + "label": "外部アドレス", + "description": "" + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "新しいタブで開く", + "description": "" + } + }, + "network": { + "statusChecker": { + "label": "ステータスチェッカー", + "description": "" + }, + "statusCodes": { + "label": "HTTPステータスコード", + "description": "" + } + }, + "appearance": { + "icon": { + "label": "アプリアイコン", + "description": "" + } + }, + "integration": { + "type": { + "label": "インテグレーション構成", + "description": "", + "placeholder": "インテグレーションを選択する", + "defined": "定義", + "undefined": "未定義", + "public": "公開", + "private": "プライベート", + "explanationPrivate": "", + "explanationPublic": "" + }, + "secrets": { + "description": "シークレットを更新するには、値を入力し、保存ボタンをクリックします。シークレットを削除するには、クリアボタンを使用します。", + "warning": "", + "clear": "クリアシークレット", + "save": "秘密を守る", + "update": "アップデートシークレット" + } + }, + "validation": { + "popover": "" + } +} diff --git a/public/locales/ja/layout/modals/change-position.json b/public/locales/ja/layout/modals/change-position.json new file mode 100644 index 000000000..251afd45d --- /dev/null +++ b/public/locales/ja/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "X軸位置", + "width": "幅", + "height": "高さ", + "yPosition": "Y軸位置", + "zeroOrHigher": "0以上", + "betweenXandY": "{{min}} と {{max}}の間" +} \ No newline at end of file diff --git a/public/locales/ja/layout/screen-sizes.json b/public/locales/ja/layout/screen-sizes.json new file mode 100644 index 000000000..24e49a689 --- /dev/null +++ b/public/locales/ja/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/ja/layout/tools.json b/public/locales/ja/layout/tools.json new file mode 100644 index 000000000..c433c061b --- /dev/null +++ b/public/locales/ja/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "現在お持ちでないツール" + }, + "iconPicker": { + "textInputPlaceholder": "アイコンの検索...", + "searchLimitationTitle": "検索対象は {{max}} のアイコンに限定されます。", + "searchLimitationMessage": "迅速な処理を行うため、検索対象は {{max}} のアイコンに限定されています。その他のアイコンを探すには、検索ボックスをご利用ください。" + } +} \ No newline at end of file diff --git a/public/locales/ja/modules/calendar.json b/public/locales/ja/modules/calendar.json index cb3c90213..40f3f5a4f 100644 --- a/public/locales/ja/modules/calendar.json +++ b/public/locales/ja/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "カレンダー", - "description": "今後のリリースを表示するためのカレンダーモジュールです。SonarrとRadarrのAPIと連動しています。", + "description": "", "settings": { + "title": "", "sundayStart": { "label": "週の始まりは日曜日" + }, + "radarrReleaseType": { + "label": "" } } } -} \ No newline at end of file +} diff --git a/public/locales/ja/modules/common.json b/public/locales/ja/modules/common.json index cc4ef4555..2b539b6d0 100644 --- a/public/locales/ja/modules/common.json +++ b/public/locales/ja/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "設定" + }, + "errors": { + "unmappedOptions": { + "text": "" + } } -} \ No newline at end of file +} diff --git a/public/locales/ja/modules/dashdot.json b/public/locales/ja/modules/dashdot.json index fa792b081..6172cd65b 100644 --- a/public/locales/ja/modules/dashdot.json +++ b/public/locales/ja/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "ダッシュ", - "description": "実行中のDash.インスタンスのグラフを表示するためのモジュールです。", + "description": "", "settings": { + "title": "Dash.ウィジェットの設定", "cpuMultiView": { "label": "CPUマルチコアビュー" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/ja/modules/date.json b/public/locales/ja/modules/date.json index ea0e82593..2e45b2e37 100644 --- a/public/locales/ja/modules/date.json +++ b/public/locales/ja/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "日付", - "description": "カードに現在時刻と日付を表示する", + "name": "", + "description": "", "settings": { + "title": "", "display24HourFormat": { "label": "フルタイム(24時間)表示" } } } -} \ No newline at end of file +} diff --git a/public/locales/ja/modules/dlspeed.json b/public/locales/ja/modules/dlspeed.json index e688d2aa0..47b687619 100644 --- a/public/locales/ja/modules/dlspeed.json +++ b/public/locales/ja/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "ダウンロード速度", - "description": "対応サービスの現在のダウンロード速度を表示する" + "description": "" }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/ja/modules/docker.json b/public/locales/ja/modules/docker.json index 63ad3e54b..f53a45c3c 100644 --- a/public/locales/ja/modules/docker.json +++ b/public/locales/ja/modules/docker.json @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "サービス追加", - "message": "ホーマーにサービスを追加する" + "title": "", + "message": "" }, "restart": { "title": "再スタート" @@ -49,35 +49,35 @@ }, "actions": { "start": { - "start": "", - "end": "" + "start": "スタート", + "end": "開始" }, "stop": { - "start": "", + "start": "停止", "end": "停止中" }, "restart": { - "start": "", - "end": "" + "start": "再スタート", + "end": "再スタート" }, "remove": { - "start": "", - "end": "" + "start": "削除", + "end": "削除" } }, "errors": { "integrationFailed": { "title": "Dockerとの連携に失敗", - "message": "ドッカーソケットをマウントするのを忘れていませんか?" + "message": "" }, "unknownError": { "title": "エラーが発生しました" }, "oneServiceAtATime": { - "title": "一度に1つのサービスのみを追加してください" + "title": "" } }, "actionIcon": { "tooltip": "ドッカー" } -} \ No newline at end of file +} diff --git a/public/locales/ja/modules/overseerr.json b/public/locales/ja/modules/overseerr.json index 36c49d328..16c7ee862 100644 --- a/public/locales/ja/modules/overseerr.json +++ b/public/locales/ja/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "オーバーホール", - "description": "Overseerr/Jellyseerrからメディアを検索して追加できるようにする。" + "description": "" }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "ダウンロードしたい季節にチェックを入れる", + "caption": "", "table": { "header": { "season": "シーズン", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/ja/modules/ping.json b/public/locales/ja/modules/ping.json index 3c65a9837..38f4eecc3 100644 --- a/public/locales/ja/modules/ping.json +++ b/public/locales/ja/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "ピング", - "description": "サービスが稼働しているか、特定のHTTPステータスコードを返しているかどうかを確認できるようにします。" + "description": "" }, "states": { "online": "オンライン {{response}}", "offline": "オフライン {{response}}", "loading": "読み込み中..." } -} \ No newline at end of file +} diff --git a/public/locales/ja/modules/search.json b/public/locales/ja/modules/search.json index 3efea179d..165ba4037 100644 --- a/public/locales/ja/modules/search.json +++ b/public/locales/ja/modules/search.json @@ -1,30 +1,30 @@ { "descriptor": { "name": "検索バー", - "description": "ウェブ、Youtube、Torrent、Overseerrを検索するための検索バー" + "description": "" }, "input": { "placeholder": "ウェブで検索..." }, - "switched-to": "", + "switched-to": "に切り替わりました。", "searchEngines": { "search": { - "name": "", + "name": "ウェブ", "description": "" }, "youtube": { - "name": "", - "description": "" + "name": "Youtube", + "description": "Youtubeで検索" }, "torrents": { - "name": "", - "description": "" + "name": "トレント", + "description": "トレントを検索する" }, "overseerr": { "name": "オーバーホール", "description": "" } }, - "tip": "", - "switchedSearchEngine": "" -} \ No newline at end of file + "tip": "ショートカットで検索バーを選択することができます ", + "switchedSearchEngine": "{{searchEngine}}で検索するように変更しました。" +} diff --git a/public/locales/ja/modules/torrents-status.json b/public/locales/ja/modules/torrents-status.json index 33a54b4ab..4da76108a 100644 --- a/public/locales/ja/modules/torrents-status.json +++ b/public/locales/ja/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { - "name": "奔流", - "description": "対応サービスの現在のダウンロード速度を表示する", + "name": "", + "description": "", "settings": { - "hideComplete": { - "label": "完了したトレントを隠す" + "title": "", + "refreshInterval": { + "label": "リフレッシュ間隔(秒)" + }, + "displayCompletedTorrents": { + "label": "完了したトレントを表示する" + }, + "displayStaleTorrents": { + "label": "古くなったトレントを表示する" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "対応するダウンロードクライアントが見つかりません", - "text": "ダウンロードサービスを追加して、現在のダウンロードを表示する" + "title": "", + "text": "" + }, + "generic": { + "title": "予期せぬエラーが発生しました", + "text": "" } + }, + "loading": { + "title": "読み込み中..." } } -} \ No newline at end of file +} diff --git a/public/locales/ja/modules/usenet.json b/public/locales/ja/modules/usenet.json index 5c95fd2f5..22fa97379 100644 --- a/public/locales/ja/modules/usenet.json +++ b/public/locales/ja/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { - "name": "", + "name": "ユーズネット", "description": "" }, "card": { "errors": { "noDownloadClients": { "title": "対応するダウンロードクライアントが見つかりません", - "text": "ダウンロードサービスを追加して、現在のダウンロードを表示する" + "text": "" } } }, diff --git a/public/locales/ja/modules/weather.json b/public/locales/ja/modules/weather.json index cdf742ae4..e7461b4cb 100644 --- a/public/locales/ja/modules/weather.json +++ b/public/locales/ja/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "天気", - "description": "現在地の天気を調べる", + "description": "", "settings": { + "title": "", "displayInFahrenheit": { "label": "表示単位:華氏" }, @@ -29,4 +30,4 @@ "unknown": "不明" } } -} \ No newline at end of file +} diff --git a/public/locales/ja/settings/common.json b/public/locales/ja/settings/common.json index d17465f6b..c9d9243aa 100644 --- a/public/locales/ja/settings/common.json +++ b/public/locales/ja/settings/common.json @@ -6,10 +6,24 @@ "customizations": "カスタマイズ" }, "tips": { - "configTip": "設定ファイルをドラッグ&ドロップでアップロードしよう" + "configTip": "" }, "credits": { "madeWithLove": "で作った❤️ by @さん" }, - "grow": "" -} \ No newline at end of file + "grow": "グロースグリッド(全領域を占有)", + "layout": { + "title": "ダッシュボードのレイアウト", + "main": "メイン", + "sidebar": "サイドバー", + "cannotturnoff": "OFFにできない", + "dashboardlayout": "ダッシュボードのレイアウト", + "enablersidebar": "右サイドバーを有効にする", + "enablelsidebar": "左サイドバーを有効にする", + "enablesearchbar": "検索バーを有効にする", + "enabledocker": "dockerとの統合を有効にする", + "enableping": "Pingを有効にする", + "enablelsidebardesc": "オプションです。アプリと統合にのみ使用可能", + "enablersidebardesc": "オプションです。アプリと統合にのみ使用可能" + } +} diff --git a/public/locales/ja/settings/customization/page-appearance.json b/public/locales/ja/settings/customization/page-appearance.json index 48a8d31b2..1bbf56b73 100644 --- a/public/locales/ja/settings/customization/page-appearance.json +++ b/public/locales/ja/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "ページタイトル", - "placeholder": "ホーマー" + "label": "ページタイトル" + }, + "metaTitle": { + "label": "メタ・タイトル" }, "logo": { "label": "ロゴマーク" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "カスタムCSS", - "placeholder": "カスタムCSSは最後に実行されます" + "placeholder": "" }, "buttons": { "submit": "提出" diff --git a/public/locales/ja/settings/general/config-changer.json b/public/locales/ja/settings/general/config-changer.json index 173eb68ff..c9b9a549b 100644 --- a/public/locales/ja/settings/general/config-changer.json +++ b/public/locales/ja/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "コンフィグローダ" + "label": "", + "description": "", + "loadingNew": "コンフィグを読み込む...", + "pleaseWait": "" }, "modal": { - "title": "新しいコンフィグの名前を選択します。", - "form": { - "configName": { - "label": "コンフィグ名", - "placeholder": "新しいコンフィグ名" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "確認" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "コンフィグ保存", - "message": "{{configName}}として保存されたコンフィグ" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "コンフィグ削除の失敗", "message": "コンフィグ削除の失敗" + }, + "deleteFailedDefaultConfig": { + "title": "", + "message": "" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "ここにファイルをドラッグしてコンフィグをアップロードしてください。JSONのみ対応。" + "title": "コンフィギュレーションアップロード", + "text": "" }, "reject": { - "text": "このファイル形式はサポートされていません。JSONのみアップロードしてください。" + "title": "ドラッグ&ドロップによるアップロードを拒否", + "text": "" } } -} \ No newline at end of file +} diff --git a/public/locales/ja/settings/general/module-enabler.json b/public/locales/ja/settings/general/module-enabler.json index c559d8e12..9e26dfeeb 100644 --- a/public/locales/ja/settings/general/module-enabler.json +++ b/public/locales/ja/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "モジュールイネーブラー" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/ja/settings/general/search-engine.json b/public/locales/ja/settings/general/search-engine.json index 8ea9536c4..2b41ccf0c 100644 --- a/public/locales/ja/settings/general/search-engine.json +++ b/public/locales/ja/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "検索エンジン", + "configurationName": "", "tips": { - "generalTip": "YouTube を検索する場合は「!yt」、Torrent を検索する場合は「!t」という接頭辞を付けてください。", + "generalTip": "", "placeholderTip": "%s は、クエリのプレースホルダとして使用することができます。" }, "customEngine": { + "title": "カスタム検索エンジン", "label": "クエリURL", "placeholder": "カスタムクエリURL" }, "searchNewTab": { - "label": "" + "label": "検索結果を新しいタブで開く" + }, + "searchEnabled": { + "label": "検索可能" } -} \ No newline at end of file +} diff --git a/public/locales/ja/settings/general/widget-positions.json b/public/locales/ja/settings/general/widget-positions.json index bc924ba82..0967ef424 100644 --- a/public/locales/ja/settings/general/widget-positions.json +++ b/public/locales/ja/settings/general/widget-positions.json @@ -1,3 +1 @@ -{ - "label": "ウィジェットを左側に配置する" -} \ No newline at end of file +{} diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index fb60078fe..a23341b5d 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "저장" + "save": "", + "about": "", + "cancel": "취소", + "close": "", + "delete": "삭제", + "ok": "", + "edit": "수정", + "version": "", + "changePosition": "", + "remove": "제거", + "removeConfirm": "", + "sections": { + "settings": "설정", + "dangerZone": "위험한 설정" + }, + "secrets": { + "apiKey": "", + "username": "사용자 이름", + "password": "비밀번호" }, "tip": "팁: ", "time": { @@ -8,4 +25,4 @@ "minutes": "분", "hours": "시간" } -} +} \ No newline at end of file diff --git a/public/locales/ko/layout/add-service-app-shelf.json b/public/locales/ko/layout/add-service-app-shelf.json index 76d8977ef..7fe728856 100644 --- a/public/locales/ko/layout/add-service-app-shelf.json +++ b/public/locales/ko/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "고급 설정", "form": { - "httpStatusCodes": { - "label": "HTTP 상태 코드", - "placeholder": "유효한 상태 코드를 선택해 주세요", - "clearButtonLabel": "모두 선택 취소", - "nothingFound": "찾을 수 없음" - }, "openServiceInNewTab": { "label": "새 탭에서 서비스 열기" }, diff --git a/public/locales/ko/layout/element-selector/selector.json b/public/locales/ko/layout/element-selector/selector.json new file mode 100644 index 000000000..2a4f14e0d --- /dev/null +++ b/public/locales/ko/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "", + "text": "" + }, + "widgetDescription": "", + "goBack": "", + "actionIcon": { + "tooltip": "" + } +} diff --git a/public/locales/ko/layout/header/actions/toggle-edit-mode.json b/public/locales/ko/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..56487b8b1 --- /dev/null +++ b/public/locales/ko/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "", + "button": { + "disabled": "", + "enabled": "" + }, + "popover": { + "title": "", + "text": "" + }, + "screenSizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/ko/layout/mobile/drawer.json b/public/locales/ko/layout/mobile/drawer.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/public/locales/ko/layout/mobile/drawer.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/ko/layout/modals/about.json b/public/locales/ko/layout/modals/about.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/public/locales/ko/layout/modals/about.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/ko/layout/modals/add-app.json b/public/locales/ko/layout/modals/add-app.json new file mode 100644 index 000000000..fa07081e7 --- /dev/null +++ b/public/locales/ko/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "", + "behaviour": "", + "network": "네트워크", + "appearance": "", + "integration": "" + }, + "general": { + "appname": { + "label": "", + "description": "" + }, + "internalAddress": { + "label": "", + "description": "" + }, + "externalAddress": { + "label": "", + "description": "" + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "", + "description": "" + } + }, + "network": { + "statusChecker": { + "label": "", + "description": "" + }, + "statusCodes": { + "label": "", + "description": "" + } + }, + "appearance": { + "icon": { + "label": "", + "description": "" + } + }, + "integration": { + "type": { + "label": "", + "description": "", + "placeholder": "", + "defined": "", + "undefined": "", + "public": "", + "private": "", + "explanationPrivate": "", + "explanationPublic": "" + }, + "secrets": { + "description": "", + "warning": "", + "clear": "", + "save": "", + "update": "" + } + }, + "validation": { + "popover": "" + } +} diff --git a/public/locales/ko/layout/modals/change-position.json b/public/locales/ko/layout/modals/change-position.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/public/locales/ko/layout/modals/change-position.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/locales/ko/layout/screen-sizes.json b/public/locales/ko/layout/screen-sizes.json new file mode 100644 index 000000000..24e49a689 --- /dev/null +++ b/public/locales/ko/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/ko/layout/tools.json b/public/locales/ko/layout/tools.json new file mode 100644 index 000000000..ffbe07e69 --- /dev/null +++ b/public/locales/ko/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "" + }, + "iconPicker": { + "textInputPlaceholder": "", + "searchLimitationTitle": "", + "searchLimitationMessage": "" + } +} \ No newline at end of file diff --git a/public/locales/ko/modules/calendar.json b/public/locales/ko/modules/calendar.json index ec1a2470a..c07ab21b8 100644 --- a/public/locales/ko/modules/calendar.json +++ b/public/locales/ko/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "캘린더", - "description": "일정을 표시하기 위한 캘린더 모듈입니다. Sonarr API와 Radarr API로 작동합니다.", + "description": "", "settings": { + "title": "", "sundayStart": { "label": "한 주의 시작을 일요일로 설정" + }, + "radarrReleaseType": { + "label": "" } } } -} \ No newline at end of file +} diff --git a/public/locales/ko/modules/common.json b/public/locales/ko/modules/common.json index 3b6f3312f..6eba896fa 100644 --- a/public/locales/ko/modules/common.json +++ b/public/locales/ko/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "설정" + }, + "errors": { + "unmappedOptions": { + "text": "" + } } -} \ No newline at end of file +} diff --git a/public/locales/ko/modules/dashdot.json b/public/locales/ko/modules/dashdot.json index deed26758..7111a2872 100644 --- a/public/locales/ko/modules/dashdot.json +++ b/public/locales/ko/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "실행 중인 Dash. 인스턴스의 그래프를 표시하는 모듈입니다.", + "description": "", "settings": { + "title": "", "cpuMultiView": { "label": "CPU 멀티 코어 보기" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/ko/modules/date.json b/public/locales/ko/modules/date.json index ddcae6973..8bb5d6de4 100644 --- a/public/locales/ko/modules/date.json +++ b/public/locales/ko/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "날짜", - "description": "시간과 날짜를 보여주는 카드를 추가합니다", + "name": "", + "description": "", "settings": { + "title": "", "display24HourFormat": { "label": "24시간제로 표시" } } } -} \ No newline at end of file +} diff --git a/public/locales/ko/modules/dlspeed.json b/public/locales/ko/modules/dlspeed.json index 5ec5cd979..597f8e12b 100644 --- a/public/locales/ko/modules/dlspeed.json +++ b/public/locales/ko/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "다운로드 속도", - "description": "지원하는 서비스의 현재 다운로드 속도를 표시합니다" + "description": "" }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/ko/modules/docker.json b/public/locales/ko/modules/docker.json index 855eb6667..f9213952a 100644 --- a/public/locales/ko/modules/docker.json +++ b/public/locales/ko/modules/docker.json @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "서비스 추가", - "message": "Homarr에 서비스 추가" + "title": "", + "message": "" }, "restart": { "title": "재시작" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "Docker 통합 실패", - "message": "도커 소켓 마운트를 잊지 않으셨나요?" + "message": "" }, "unknownError": { "title": "오류가 발생했습니다" }, "oneServiceAtATime": { - "title": "한 번에 하나의 서비스만 추가해 주세요!" + "title": "" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/ko/modules/overseerr.json b/public/locales/ko/modules/overseerr.json index 60230d7b0..50f802d9e 100644 --- a/public/locales/ko/modules/overseerr.json +++ b/public/locales/ko/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Overseerr/Jellyseerr에서 미디어를 추가하고 검색할 수 있습니다" + "description": "" }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "다운로드하려는 시즌을 선택하세요", + "caption": "", "table": { "header": { "season": "시즌", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/ko/modules/ping.json b/public/locales/ko/modules/ping.json index e583a4633..dba49b218 100644 --- a/public/locales/ko/modules/ping.json +++ b/public/locales/ko/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "핑", - "description": "서비스가 작동 중인지 또는 특정 HTTP 상태 코드를 반환하는지 확인할 수 있습니다" + "description": "" }, "states": { "online": "온라인 {{response}}", "offline": "오프라인 {{response}}", "loading": "불러오는 중…" } -} \ No newline at end of file +} diff --git a/public/locales/ko/modules/search.json b/public/locales/ko/modules/search.json index 41d0e72f7..308df4e6f 100644 --- a/public/locales/ko/modules/search.json +++ b/public/locales/ko/modules/search.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "검색창", - "description": "웹, 유튜브. 토렌트, Overseerr를 검색할 수 있는 검색창" + "description": "" }, "input": { "placeholder": "웹에서 검색..." @@ -27,4 +27,4 @@ }, "tip": "", "switchedSearchEngine": "" -} \ No newline at end of file +} diff --git a/public/locales/ko/modules/torrents-status.json b/public/locales/ko/modules/torrents-status.json index fad5c677f..01e1fb831 100644 --- a/public/locales/ko/modules/torrents-status.json +++ b/public/locales/ko/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { - "name": "토렌트", - "description": "지원하는 서비스의 현재 다운로드 속도를 표시합니다", + "name": "", + "description": "", "settings": { - "hideComplete": { - "label": "완료된 토렌트 숨기기" + "title": "", + "refreshInterval": { + "label": "" + }, + "displayCompletedTorrents": { + "label": "" + }, + "displayStaleTorrents": { + "label": "" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "지원되는 다운로드 클라이언트를 찾을 수 없습니다!", - "text": "현재 다운로드를 보려면 다운로드 서비스를 추가하세요" + "title": "", + "text": "" + }, + "generic": { + "title": "", + "text": "" } + }, + "loading": { + "title": "불러오는 중…" } } -} \ No newline at end of file +} diff --git a/public/locales/ko/modules/usenet.json b/public/locales/ko/modules/usenet.json index 5b2b547af..44a15b52b 100644 --- a/public/locales/ko/modules/usenet.json +++ b/public/locales/ko/modules/usenet.json @@ -7,7 +7,7 @@ "errors": { "noDownloadClients": { "title": "지원되는 다운로드 클라이언트를 찾을 수 없습니다!", - "text": "현재 다운로드를 보려면 다운로드 서비스를 추가하세요" + "text": "" } } }, diff --git a/public/locales/ko/modules/weather.json b/public/locales/ko/modules/weather.json index 60712f31c..b5caa8d55 100644 --- a/public/locales/ko/modules/weather.json +++ b/public/locales/ko/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "날씨", - "description": "현재 위치의 날씨 보기", + "description": "", "settings": { + "title": "", "displayInFahrenheit": { "label": "화씨로 표시" }, @@ -29,4 +30,4 @@ "unknown": "알 수 없음" } } -} \ No newline at end of file +} diff --git a/public/locales/ko/settings/common.json b/public/locales/ko/settings/common.json index 5b38bc24b..0e4e749fd 100644 --- a/public/locales/ko/settings/common.json +++ b/public/locales/ko/settings/common.json @@ -6,10 +6,24 @@ "customizations": "커스터마이징" }, "tips": { - "configTip": "설정 파일을 드래그 앤 드롭으로 업로드해 보세요!" + "configTip": "" }, "credits": { "madeWithLove": "Made with ❤️ by @" }, - "grow": "" -} \ No newline at end of file + "grow": "", + "layout": { + "title": "", + "main": "", + "sidebar": "", + "cannotturnoff": "", + "dashboardlayout": "", + "enablersidebar": "", + "enablelsidebar": "", + "enablesearchbar": "", + "enabledocker": "", + "enableping": "", + "enablelsidebardesc": "", + "enablersidebardesc": "" + } +} diff --git a/public/locales/ko/settings/customization/page-appearance.json b/public/locales/ko/settings/customization/page-appearance.json index a7ab68df2..ec84dee44 100644 --- a/public/locales/ko/settings/customization/page-appearance.json +++ b/public/locales/ko/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "페이지 제목", - "placeholder": "Homarr 🦞" + "label": "페이지 제목" + }, + "metaTitle": { + "label": "" }, "logo": { "label": "로고" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "커스텀 CSS", - "placeholder": "커스텀 CSS는 마지막으로 실행됩니다" + "placeholder": "" }, "buttons": { "submit": "적용" diff --git a/public/locales/ko/settings/general/config-changer.json b/public/locales/ko/settings/general/config-changer.json index f55d6d064..cb1e4745f 100644 --- a/public/locales/ko/settings/general/config-changer.json +++ b/public/locales/ko/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "설정 불러오기" + "label": "", + "description": "", + "loadingNew": "", + "pleaseWait": "" }, "modal": { - "title": "새로운 설정의 이름을 입력하세요", - "form": { - "configName": { - "label": "설정 이름", - "placeholder": "새로운 설정 이름" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "확인" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "설정 저장됨", - "message": "{{configName}} 로 설정 저장됨" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "설정 삭제 실패", "message": "설정 삭제 실패" + }, + "deleteFailedDefaultConfig": { + "title": "", + "message": "" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "구성을 업로드하려면 여기로 파일을 드래그하세요. JSON 형식만 지원합니다." + "title": "", + "text": "" }, "reject": { - "text": "이 파일 형식은 지원되지 않습니다. JSON 형식만 업로드하세요." + "title": "", + "text": "" } } -} \ No newline at end of file +} diff --git a/public/locales/ko/settings/general/module-enabler.json b/public/locales/ko/settings/general/module-enabler.json index a7d107e9e..9e26dfeeb 100644 --- a/public/locales/ko/settings/general/module-enabler.json +++ b/public/locales/ko/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "모듈 활성화" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/ko/settings/general/search-engine.json b/public/locales/ko/settings/general/search-engine.json index 38cc44498..844b076ce 100644 --- a/public/locales/ko/settings/general/search-engine.json +++ b/public/locales/ko/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "검색 엔진", + "configurationName": "", "tips": { - "generalTip": "YouTube 또는 Torrent에서 검색하려면 각각 검색어 앞에 !yt 및 !t 접두사를 사용하십시오.", + "generalTip": "", "placeholderTip": "%s는 쿼리의 자리 표시자로 사용할 수 있습니다." }, "customEngine": { + "title": "", "label": "쿼리 URL", "placeholder": "커스텀 쿼리 URL" }, "searchNewTab": { "label": "" + }, + "searchEnabled": { + "label": "" } -} \ No newline at end of file +} diff --git a/public/locales/ko/settings/general/widget-positions.json b/public/locales/ko/settings/general/widget-positions.json index f6f5efba1..0967ef424 100644 --- a/public/locales/ko/settings/general/widget-positions.json +++ b/public/locales/ko/settings/general/widget-positions.json @@ -1,3 +1 @@ -{ - "label": "위젯을 왼쪽에 배치" -} \ No newline at end of file +{} diff --git a/public/locales/lol/authentication/login.json b/public/locales/lol/authentication/login.json index 302fe120d..aad381afa 100644 --- a/public/locales/lol/authentication/login.json +++ b/public/locales/lol/authentication/login.json @@ -1,27 +1,27 @@ { - "title": "", - "text": "", + "title": "Welcom Bak!", + "text": "Plz Entr Ur Pasword", "form": { "fields": { "password": { "label": "Password", - "placeholder": "" + "placeholder": "Ur Pasword" } }, "buttons": { - "submit": "" + "submit": "Sign In" } }, "notifications": { "checking": { - "title": "", - "message": "" + "title": "Checkin Ur Pasword", + "message": "Ur Pasword Iz Bean Checkd..." }, "correct": { - "title": "" + "title": "Sign In Succesful, Redirectin..." }, "wrong": { - "title": "" + "title": "Teh Pasword U Enterd Iz Incorrect, Plz Try Again." } } } diff --git a/public/locales/lol/common.json b/public/locales/lol/common.json index 2e9b3ea27..8eb46d61c 100644 --- a/public/locales/lol/common.json +++ b/public/locales/lol/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Save" + "save": "Saev", + "about": "'bout", + "cancel": "Cancel", + "close": "Cloes", + "delete": "Deleet", + "ok": "K", + "edit": "Edit", + "version": "Vershun", + "changePosition": "Change Posishun", + "remove": "Remoev", + "removeConfirm": "R U Sure Dat U Wants 2 Remoov {{item}} ?", + "sections": { + "settings": "Settingz", + "dangerZone": "Dangr zoen" + }, + "secrets": { + "apiKey": "Api key", + "username": "Usernaem", + "password": "Password" }, "tip": "Tip: ", "time": { @@ -8,4 +25,4 @@ "minutes": "minutz", "hours": "hourz" } -} +} \ No newline at end of file diff --git a/public/locales/lol/layout/add-service-app-shelf.json b/public/locales/lol/layout/add-service-app-shelf.json index 39dd49297..3356e4054 100644 --- a/public/locales/lol/layout/add-service-app-shelf.json +++ b/public/locales/lol/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Advancd opshuns", "form": { - "httpStatusCodes": { - "label": "HTTP Status Codes", - "placeholder": "Select valid status coeds", - "clearButtonLabel": "Clear selecshun", - "nothingFound": "Nofin findz" - }, "openServiceInNewTab": { "label": "Open survis in nu tab" }, diff --git a/public/locales/lol/layout/element-selector/selector.json b/public/locales/lol/layout/element-selector/selector.json new file mode 100644 index 000000000..941461707 --- /dev/null +++ b/public/locales/lol/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "Add New Tile", + "text": "Tilez R Teh Main Element Ov Homarr. They R Usd 2 Display Ur Apps An Othr Informashun. U Can Add As Lotz Da Tilez As U Wants." + }, + "widgetDescription": "Widgets Interact Wif Ur Apps, 2 Provide U Wif Moar Control Ovar Ur Applicashuns. They Usually Require Addishunal Configurashun Before Use.", + "goBack": "Go Bak 2 Teh Previous Step", + "actionIcon": { + "tooltip": "Add Tile" + } +} diff --git a/public/locales/lol/layout/header/actions/toggle-edit-mode.json b/public/locales/lol/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..616aa7dea --- /dev/null +++ b/public/locales/lol/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "In Edit Mode, U Can Adjust Tilez An Configure Apps. Changez R Not Savd Til U Exit Edit Mode.", + "button": { + "disabled": "Entr Edit Mode", + "enabled": "Exit An Save" + }, + "popover": { + "title": "Edit Mode Iz Enabld 4 <1>{{size}} Size", + "text": "U Can Adjust An Configure Ur Apps Nao. Changez R Not Savd Til U Exit Edit Mode" + }, + "screenSizes": { + "small": "small", + "medium": "medium", + "large": "large" + } +} diff --git a/public/locales/lol/layout/mobile/drawer.json b/public/locales/lol/layout/mobile/drawer.json new file mode 100644 index 000000000..7c82c2d51 --- /dev/null +++ b/public/locales/lol/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} Sidebar" +} diff --git a/public/locales/lol/layout/modals/about.json b/public/locales/lol/layout/modals/about.json new file mode 100644 index 000000000..926b2a843 --- /dev/null +++ b/public/locales/lol/layout/modals/about.json @@ -0,0 +1,7 @@ +{ + "description": "Homarr Iz Sleek, Modern Dashbord Dat Puts All Ov Ur Apps An Servicez At Ur Fingertips. Wif Homarr, U Can Acces An Control Evrythin In Wan Convenient Locashun. Homarr Seamlesly Integratez Wif Teh Apps Uve Addd, Providin U Wif Valuable Informashun An Givin U Complete Control. Installashun Iz Breeze, An Homarr Supports Wide Range Ov Deployment Methodz.", + "i18n": "Loadd I18N Tranzlashun Namespacez", + "locales": "Configurd I18N Localez", + "contact": "Havin Trouble Or Queshuns? Connect Wif Us!", + "addToDashboard": "Add 2 Dashbord" +} diff --git a/public/locales/lol/layout/modals/add-app.json b/public/locales/lol/layout/modals/add-app.json new file mode 100644 index 000000000..6c3e7645d --- /dev/null +++ b/public/locales/lol/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "General", + "behaviour": "Behaviour", + "network": "Netwerk", + "appearance": "Appearance", + "integration": "Integrashun" + }, + "general": { + "appname": { + "label": "App Naym", + "description": "Usd 2 Display Teh App On Teh Dashbord." + }, + "internalAddress": { + "label": "Internal Addres", + "description": "Internal IP-address Ov Teh App." + }, + "externalAddress": { + "label": "External address", + "description": "URL Dat Will Be Opend When Clickin On Teh App." + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "Open in new tab", + "description": "Open Teh App In New Tab Instead Ov Teh Current Wan." + } + }, + "network": { + "statusChecker": { + "label": "Status Checkr", + "description": "Checkz If Ur App Iz Online Usin Simple HTTP(S) Request." + }, + "statusCodes": { + "label": "HTTP Status Codez", + "description": "Teh HTTP Status Codez Dat R Considerd As Online." + } + }, + "appearance": { + "icon": { + "label": "App Icon", + "description": "Teh Icon Dat Will Be Displayd On Teh Dashbord." + } + }, + "integration": { + "type": { + "label": "Integrashun Configurashun", + "description": "Teh Integrashun Configurashun Dat Will Be Usd 2 Connect 2 Ur App.", + "placeholder": "Select An Integrashun", + "defined": "Defind", + "undefined": "Undefind", + "public": "Public", + "private": "Private", + "explanationPrivate": "A Private Seekret Will Be Sent 2 Teh Servr Only Once. Once Ur Browsr Has Refreshd Teh Paeg, It Will Nevr Be Sent Again.", + "explanationPublic": "A Public Seekret Will Always Be Sent 2 Teh Client An Iz Accesible Ovar Teh Api. It Shud Not Contain Any Confidential Valuez Such As Usernamez, Paswordz, Tokens, Certificatez An Similar!" + }, + "secrets": { + "description": "2 Update Seekret, Entr Value An Click Teh Save Butn. 2 Remoov Seekret, Use Teh Clear Butn.", + "warning": "Ur Credentials Act As Teh Acces 4 Ur Integrashuns An U Shud Nevr Share Them Wif Anybody Else. Teh Homarr Team Will Nevr Ask 4 Credentials. Mak Sure 2 Store An Manage Ur Secrets Safely.", + "clear": "Clear Seekret", + "save": "Save Seekret", + "update": "Update Seekret" + } + }, + "validation": { + "popover": "Ur Form Contains Invalid Data. Hence, It Cant Be Savd. Plz Resolve All Issuez An Click Dis Butn Again 2 Save Ur Changez" + } +} diff --git a/public/locales/lol/layout/modals/change-position.json b/public/locales/lol/layout/modals/change-position.json new file mode 100644 index 000000000..cf3c63cc8 --- /dev/null +++ b/public/locales/lol/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "X Axis Posishun", + "width": "Width", + "height": "Height", + "yPosition": "Y Axis Posishun", + "zeroOrHigher": "0 Or Highr", + "betweenXandY": "Tween {{min}} An {{max}}" +} \ No newline at end of file diff --git a/public/locales/lol/layout/screen-sizes.json b/public/locales/lol/layout/screen-sizes.json new file mode 100644 index 000000000..24e49a689 --- /dev/null +++ b/public/locales/lol/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/lol/layout/tools.json b/public/locales/lol/layout/tools.json new file mode 100644 index 000000000..ffbe07e69 --- /dev/null +++ b/public/locales/lol/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "" + }, + "iconPicker": { + "textInputPlaceholder": "", + "searchLimitationTitle": "", + "searchLimitationMessage": "" + } +} \ No newline at end of file diff --git a/public/locales/lol/modules/calendar.json b/public/locales/lol/modules/calendar.json index b58ac229e..603eb170d 100644 --- a/public/locales/lol/modules/calendar.json +++ b/public/locales/lol/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Calendar", - "description": "Calendar moduel 4 displaying upcomin releasez, Srsly. It interacts wif teh Sonarr an Radarr API.", + "description": "Displayz calendar wif upcomin releasez, frum supportd integrations.", "settings": { + "title": "Settings 4 Calendar Widget", "sundayStart": { "label": "Start teh week on Sunday" + }, + "radarrReleaseType": { + "label": "Radarr Release Type" } } } -} \ No newline at end of file +} diff --git a/public/locales/lol/modules/common.json b/public/locales/lol/modules/common.json index 4895885d3..6b9bf14bd 100644 --- a/public/locales/lol/modules/common.json +++ b/public/locales/lol/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Settingz" + }, + "errors": { + "unmappedOptions": { + "text": "Un-Usd Parametr In Configurashun Detectd
{{key}}. Homarr Iz Unable 2 Interpret An Use Dis Parametr. 2 Avoid Any Unexpectd Behavior, Bak Up Ur Configurashun An Correct Ur Configurashun." + } } -} \ No newline at end of file +} diff --git a/public/locales/lol/modules/dashdot.json b/public/locales/lol/modules/dashdot.json index efdd6bd88..cdcded471 100644 --- a/public/locales/lol/modules/dashdot.json +++ b/public/locales/lol/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "Moduel 4 displaying teh graphs ov ur runnin Dash. instanz.", + "description": "Displays Teh Grafs Ov An External Dash. Instance Inside Ov Homarr.", "settings": { + "title": "Settings 4 Dash. Widget", "cpuMultiView": { "label": "CPU Multi-Coer View" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/lol/modules/date.json b/public/locales/lol/modules/date.json index fc6851fde..3b0b45bd0 100644 --- a/public/locales/lol/modules/date.json +++ b/public/locales/lol/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Daet", - "description": "Show teh current tiem an daet in card", + "name": "Date An Tiem", + "description": "Displays Teh Current Date An Tiem.", "settings": { + "title": "Settings 4 Date An Tiem Widget", "display24HourFormat": { "label": "Display fol tiem (24-hour)" } } } -} \ No newline at end of file +} diff --git a/public/locales/lol/modules/dlspeed.json b/public/locales/lol/modules/dlspeed.json index 0be4fb54b..219538ed5 100644 --- a/public/locales/lol/modules/dlspeed.json +++ b/public/locales/lol/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Download Sped", - "description": "Show teh current download sped ov supportd servicez" + "description": "Displays Teh Download An Upload Sped Ov Supportd Integrashuns." }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/lol/modules/docker.json b/public/locales/lol/modules/docker.json index c5e635e77..c1ec180ef 100644 --- a/public/locales/lol/modules/docker.json +++ b/public/locales/lol/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Dockah", - "description": "" + "description": "Allows U 2 Easily C An Manage All Ov Ur Dockr Containers." }, "search": { "placeholder": "Search by contaneah or imaeg naym" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Add survis", - "message": "Add survis 2 Homarr" + "title": "Add app", + "message": "Add App 2 Homarr" }, "restart": { "title": "Restart" @@ -49,35 +49,35 @@ }, "actions": { "start": { - "start": "", - "end": "" + "start": "Startin", + "end": "Startd" }, "stop": { - "start": "", + "start": "Stoppin", "end": "Stopped" }, "restart": { - "start": "", - "end": "" + "start": "Restartin", + "end": "Restartd" }, "remove": { - "start": "", - "end": "" + "start": "Removin", + "end": "Removd" } }, "errors": { "integrationFailed": { "title": "Dockah integrashn faild", - "message": "Did u forget 2 mount teh dockah socket ?" + "message": "Did U Forget 2 Mount Teh Dockr Socket?" }, "unknownError": { "title": "Thar wuz an error" }, "oneServiceAtATime": { - "title": "Plz only add wan survis at tiem!" + "title": "Plz Only Add Wan App Or Service At Tiem!" } }, "actionIcon": { "tooltip": "Dockah" } -} \ No newline at end of file +} diff --git a/public/locales/lol/modules/overseerr.json b/public/locales/lol/modules/overseerr.json index 8664f923e..7867f831b 100644 --- a/public/locales/lol/modules/overseerr.json +++ b/public/locales/lol/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Allowz u 2 search an add media frum Overseerr/Jellyseerr" + "description": "Allows U 2 Search An Add Media Frum Overseerr Or Jellyseerr." }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "Tick teh seasons dat u wantz 2 bees downloaded", + "caption": "Tick Teh Seasons U Wants 2 Download", "table": { "header": { "season": "Season", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/lol/modules/ping.json b/public/locales/lol/modules/ping.json index f5c944627..35ca650e3 100644 --- a/public/locales/lol/modules/ping.json +++ b/public/locales/lol/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "Allowz u 2 check if teh survis iz up or returns specific HTTP status coed." + "description": "Displays Status Indicator Dependin On Teh HTTP Response Code Ov Given URL." }, "states": { "online": "Onlien {{response}}", "offline": "Offlien {{response}}", "loading": "Loadin..." } -} \ No newline at end of file +} diff --git a/public/locales/lol/modules/search.json b/public/locales/lol/modules/search.json index 3ee484112..9165db59e 100644 --- a/public/locales/lol/modules/search.json +++ b/public/locales/lol/modules/search.json @@ -1,30 +1,30 @@ { "descriptor": { "name": "Search Bar", - "description": "Search bar 2 search teh web, yootoob, Torrents or Overseerr" + "description": "A Search Bar Dat Allows U 2 Search Ur Custom Search Engine, Youtube, An Supportd Integrashuns." }, "input": { "placeholder": "Search teh web..." }, - "switched-to": "", + "switched-to": "Switchd 2", "searchEngines": { "search": { - "name": "", - "description": "" + "name": "Web", + "description": "Search..." }, "youtube": { - "name": "", - "description": "" + "name": "Youtube", + "description": "Search on Youtube" }, "torrents": { - "name": "", - "description": "" + "name": "Torrents", + "description": "Search 4 Torrents" }, "overseerr": { "name": "Overseerr", - "description": "" + "description": "Search 4 Movies An TV Shows On Overseerr" } }, - "tip": "", - "switchedSearchEngine": "" -} \ No newline at end of file + "tip": "U Can Select Teh Search Bar Wif Teh Shortcut ", + "switchedSearchEngine": "Switchd 2 Searchin Wif {{searchEngine}}" +} diff --git a/public/locales/lol/modules/torrents-status.json b/public/locales/lol/modules/torrents-status.json index 864ce3919..7c87b0cea 100644 --- a/public/locales/lol/modules/torrents-status.json +++ b/public/locales/lol/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { "name": "Torrent", - "description": "Show teh current download sped ov supportd servicez", + "description": "Displays List Ov Torrents Frum Supportd Torrent Clients.", "settings": { - "hideComplete": { - "label": "Hied completd torrentz" + "title": "Settings 4 Torrent Widget", + "refreshInterval": { + "label": "Refresh Interval (In Secondz)" + }, + "displayCompletedTorrents": { + "label": "Display Completd Torrents" + }, + "displayStaleTorrents": { + "label": "Display Stale Torrents" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "No supportd download clientz findz!", - "text": "Add download survis 2 view ur current downloadz" + "title": "No Supportd Torrent Clients Findz!", + "text": "Add Supportd Torrent Client 2 View Ur Current Downloadz" + }, + "generic": { + "title": "An Unexpectd Error Occurd", + "text": "Homarr Wuz Unable 2 Speek Wif Ur Torrent Clients. Plz Check Ur Configurashun" } + }, + "loading": { + "title": "Loadin..." } } -} \ No newline at end of file +} diff --git a/public/locales/lol/modules/usenet.json b/public/locales/lol/modules/usenet.json index ea078dc3c..73debdd1f 100644 --- a/public/locales/lol/modules/usenet.json +++ b/public/locales/lol/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { - "name": "", - "description": "" + "name": "Usenet", + "description": "Allows U 2 View An Manage Ur Usenet Instance." }, "card": { "errors": { "noDownloadClients": { "title": "No supportd download clientz findz!", - "text": "Add download survis 2 view ur current downloadz" + "text": "Add Supportd Usenet Download Client 2 View Ur Current Downloadz" } } }, diff --git a/public/locales/lol/modules/weather.json b/public/locales/lol/modules/weather.json index d0318319d..fd35719f8 100644 --- a/public/locales/lol/modules/weather.json +++ b/public/locales/lol/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Weafr", - "description": "Look up teh current weafr in ur locashun", + "description": "Displays Teh Current Weathr Informashun Ov Set Locashun.", "settings": { + "title": "Settings 4 Weathr Widget", "displayInFahrenheit": { "label": "Display in Fahrenheit" }, @@ -29,4 +30,4 @@ "unknown": "Unknown" } } -} \ No newline at end of file +} diff --git a/public/locales/lol/settings/common.json b/public/locales/lol/settings/common.json index 74687468a..fd2c87840 100644 --- a/public/locales/lol/settings/common.json +++ b/public/locales/lol/settings/common.json @@ -6,10 +6,24 @@ "customizations": "Customahzations" }, "tips": { - "configTip": "Upload ur config fiel by dragging an dropping it onto teh paeg!" + "configTip": "Upload Ur Config File By Drag An Droppin It Onto Teh Paeg!" }, "credits": { "madeWithLove": "Maded wif ❤️ by @" }, - "grow": "" -} \ No newline at end of file + "grow": "Grow Grid (Taek All Space)", + "layout": { + "title": "Dashbord Layout", + "main": "Main", + "sidebar": "Sidebar", + "cannotturnoff": "Cant Be Turnd Off", + "dashboardlayout": "Dashbord Layout", + "enablersidebar": "Enable Rite Sidebar", + "enablelsidebar": "Enable Left Sidebar", + "enablesearchbar": "Enable Search Bar", + "enabledocker": "Enable Dockr Integrashun", + "enableping": "Enable Pings", + "enablelsidebardesc": "Opshunal. Can Be Usd 4 Apps An Integrashuns Only", + "enablersidebardesc": "Opshunal. Can Be Usd 4 Apps An Integrashuns Only" + } +} diff --git a/public/locales/lol/settings/customization/page-appearance.json b/public/locales/lol/settings/customization/page-appearance.json index d2596232d..965b599bf 100644 --- a/public/locales/lol/settings/customization/page-appearance.json +++ b/public/locales/lol/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Paeg Titel", - "placeholder": "Homarr 🦞" + "label": "Paeg Titel" + }, + "metaTitle": { + "label": "Meta Title" }, "logo": { "label": "Logooo" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "Custom CSS", - "placeholder": "Custom CSS will bees executed last" + "placeholder": "Custom CSS Will Be Applid Last" }, "buttons": { "submit": "Submit" diff --git a/public/locales/lol/settings/general/config-changer.json b/public/locales/lol/settings/general/config-changer.json index 9b75cbab6..8cd05fcd2 100644 --- a/public/locales/lol/settings/general/config-changer.json +++ b/public/locales/lol/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Config loadah" + "label": "Config Changr", + "description": "", + "loadingNew": "Loadin Ur Config...", + "pleaseWait": "Plz Wait Til Ur New Config Iz Loadd!" }, "modal": { - "title": "Chooz teh naym ov ur nu config", - "form": { - "configName": { - "label": "Config naym", - "placeholder": "Ur nu config naym" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "Confirm" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "Config saved", - "message": "Config saved as {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "Config deleet faild", "message": "Config deleet faild" + }, + "deleteFailedDefaultConfig": { + "title": "", + "message": "" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "Drag filez hah 2 upload config. Support 4 JSON only." + "title": "Configurashun Upload", + "text": "Drag Filez Her 2 Upload Config. Support 4 JSON Filez Only." }, "reject": { - "text": "Dis fiel format iz not supportd. Srsly plz only upload JSON." + "title": "Drag An Drop Upload Rejectd", + "text": "Dis File Format Iz Not Supportd. Plz Only Upload JSON Filez." } } -} \ No newline at end of file +} diff --git a/public/locales/lol/settings/general/module-enabler.json b/public/locales/lol/settings/general/module-enabler.json index be4366845..9e26dfeeb 100644 --- a/public/locales/lol/settings/general/module-enabler.json +++ b/public/locales/lol/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Moduel enablah" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/lol/settings/general/search-engine.json b/public/locales/lol/settings/general/search-engine.json index d011753b1..6e22ac92e 100644 --- a/public/locales/lol/settings/general/search-engine.json +++ b/public/locales/lol/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Search engien", + "configurationName": "Search Engine Configurashun", "tips": { - "generalTip": "Ues teh prefixes !yt an !t in frunt ov ur quewee 2 search on yootoob or 4 Torrent respectively.", + "generalTip": "Thar R Multiple Prefixez U Can Use! Addin Thees Infront Ov Ur Query Will Filtr Teh Results. !S (Web), !T (Torrents), !Y (Youtube), An !M (Media).", "placeholderTip": "%s can bees usd as placeholdah 4 teh quewee." }, "customEngine": { + "title": "Custom Search Engine", "label": "Quewee URL", "placeholder": "Custom quewee URL" }, "searchNewTab": { - "label": "" + "label": "Open Search Results In New Tab" + }, + "searchEnabled": { + "label": "Search Enabld" } -} \ No newline at end of file +} diff --git a/public/locales/lol/settings/general/widget-positions.json b/public/locales/lol/settings/general/widget-positions.json index 6a8772c99..8ac278113 100644 --- a/public/locales/lol/settings/general/widget-positions.json +++ b/public/locales/lol/settings/general/widget-positions.json @@ -1,3 +1,3 @@ { - "label": "Posishun widgetz on left" -} \ No newline at end of file + "label": "Posishun Widgets On Teh Left" +} diff --git a/public/locales/nl/authentication/login.json b/public/locales/nl/authentication/login.json index f8049f9f6..e4408eeba 100644 --- a/public/locales/nl/authentication/login.json +++ b/public/locales/nl/authentication/login.json @@ -1,27 +1,27 @@ { - "title": "", - "text": "", + "title": "Welkom terug!", + "text": "Voer uw wachtwoord in", "form": { "fields": { "password": { "label": "Wachtwoord", - "placeholder": "" + "placeholder": "Uw wachtwoord" } }, "buttons": { - "submit": "" + "submit": "Inloggen" } }, "notifications": { "checking": { - "title": "", - "message": "" + "title": "Bezig met uw wachtwoord controleren", + "message": "Uw wachtwoord wordt gecontroleerd..." }, "correct": { - "title": "" + "title": "Log in succesvol, redirect..." }, "wrong": { - "title": "" + "title": "Het ingevoerde wachtwoord is onjuist, probeer het opnieuw." } } } diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index c9b35befd..36b13c7a7 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Opslaan" + "save": "Opslaan", + "about": "Over", + "cancel": "Annuleer", + "close": "Sluiten", + "delete": "Verwijder", + "ok": "OK", + "edit": "Wijzig", + "version": "Versie", + "changePosition": "Positie wijzigen", + "remove": "Verwijder", + "removeConfirm": "Weet u zeker dat u {{item}} wilt verwijderen?", + "sections": { + "settings": "Instellingen", + "dangerZone": "Gevarenzone" + }, + "secrets": { + "apiKey": "API-sleutel", + "username": "Gebruikersnaam", + "password": "Wachtwoord" }, "tip": "Tip: ", "time": { @@ -8,4 +25,4 @@ "minutes": "minuten", "hours": "uren" } -} +} \ No newline at end of file diff --git a/public/locales/nl/layout/add-service-app-shelf.json b/public/locales/nl/layout/add-service-app-shelf.json index 7720848f4..c6a781177 100644 --- a/public/locales/nl/layout/add-service-app-shelf.json +++ b/public/locales/nl/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Geavanceerde opties", "form": { - "httpStatusCodes": { - "label": "HTTP-statuscodes", - "placeholder": "Selecteer geldige statuscodes", - "clearButtonLabel": "Selectie wissen", - "nothingFound": "Geen resultaten" - }, "openServiceInNewTab": { "label": "Service in nieuw tabblad openen" }, diff --git a/public/locales/nl/layout/element-selector/selector.json b/public/locales/nl/layout/element-selector/selector.json new file mode 100644 index 000000000..8bbff652a --- /dev/null +++ b/public/locales/nl/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "Nieuwe tegel toevoegen", + "text": "Tegels zijn het belangrijkste element van Homarr. Ze worden gebruikt om je apps en andere informatie weer te geven. Je kunt zoveel tegels toevoegen als je wilt." + }, + "widgetDescription": "Widgets werken samen met uw apps, om u meer controle over uw toepassingen te geven. Ze vereisen meestal extra configuratie voor gebruik.", + "goBack": "Ga terug naar de vorige stap", + "actionIcon": { + "tooltip": "Tegel toevoegen" + } +} diff --git a/public/locales/nl/layout/header/actions/toggle-edit-mode.json b/public/locales/nl/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..e0a996780 --- /dev/null +++ b/public/locales/nl/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "In de bewerkingsmodus kunt u tegels aanpassen en apps configureren. Wijzigingen worden niet opgeslagen totdat u de bewerkingsmodus afsluit.", + "button": { + "disabled": "Ga naar de bewerkingsmodus", + "enabled": "Afsluiten en opslaan" + }, + "popover": { + "title": "Bewerkingsmodus is ingeschakeld voor de <1>{{size}} grootte", + "text": "U kunt uw apps nu aanpassen en configureren. Wijzigingen zijn niet opgeslagen totdat u de bewerkingsmodus verlaat" + }, + "screenSizes": { + "small": "klein", + "medium": "gemiddeld", + "large": "groot" + } +} diff --git a/public/locales/nl/layout/mobile/drawer.json b/public/locales/nl/layout/mobile/drawer.json new file mode 100644 index 000000000..dc3c40d98 --- /dev/null +++ b/public/locales/nl/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} zijbalk" +} diff --git a/public/locales/nl/layout/modals/about.json b/public/locales/nl/layout/modals/about.json new file mode 100644 index 000000000..42e91ade2 --- /dev/null +++ b/public/locales/nl/layout/modals/about.json @@ -0,0 +1,7 @@ +{ + "description": "Homarr is een sterk, modern dashboard dat al je apps en diensten binnen handbereik brengt. Met Homarr heb je toegang tot en controle over alles op één handige locatie. Homarr integreert naadloos met de apps die je hebt toegevoegd en geeft je waardevolle informatie en volledige controle. Installatie is een fluitje van een cent en Homarr ondersteunt een breed scala aan implementatiemethoden.", + "i18n": "\"I18n translation namespaces\" geladen", + "locales": "\"I18n locales\" geconfigureerd", + "contact": "Problemen of vragen? Neem contact met ons op!", + "addToDashboard": "Aan dashboard toevoegen" +} diff --git a/public/locales/nl/layout/modals/add-app.json b/public/locales/nl/layout/modals/add-app.json new file mode 100644 index 000000000..3bad4836a --- /dev/null +++ b/public/locales/nl/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "Algemeen", + "behaviour": "Gedrag", + "network": "Netwerk", + "appearance": "Opmaak", + "integration": "Integratie" + }, + "general": { + "appname": { + "label": "App naam", + "description": "Wordt gebruikt om de app op het dashboard weer te geven." + }, + "internalAddress": { + "label": "Intern adres", + "description": "Intern IP-adres van de app." + }, + "externalAddress": { + "label": "Extern adres", + "description": "URL die wordt geopend wanneer op de app wordt geklikt." + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "Open in nieuw tabblad", + "description": "Open de app in een nieuw tabblad in plaats van de huidige." + } + }, + "network": { + "statusChecker": { + "label": "Status checker", + "description": "Controleert of uw app online is met een eenvoudig HTTP(S)-verzoek." + }, + "statusCodes": { + "label": "HTTP-statuscodes", + "description": "De HTTP-statuscodes die als online worden beschouwd." + } + }, + "appearance": { + "icon": { + "label": "App icoon", + "description": "Het pictogram dat op het dashboard wordt weergegeven." + } + }, + "integration": { + "type": { + "label": "Integratie configuratie", + "description": "De integratieconfiguratie die zal worden gebruikt om verbinding te maken met uw app.", + "placeholder": "Selecteer een integratie", + "defined": "Gedefinieerd", + "undefined": "Ongedefinieerd", + "public": "Openbaar", + "private": "Privé", + "explanationPrivate": "Een geheim wordt slechts eenmaal naar de server gestuurd. Zodra uw browser de pagina heeft ververst, wordt het nooit meer verzonden.", + "explanationPublic": "Een publiek geheim wordt altijd naar de client gestuurd en is toegankelijk via de API. Het mag geen vertrouwelijke waarden bevatten zoals gebruikersnamen, wachtwoorden, tokens, certificaten en dergelijke!" + }, + "secrets": { + "description": "Om een geheim bij te werken, voert u een waarde in en klikt u op de knop Opslaan. Om een geheim te verwijderen, gebruikt u de knop wissen.", + "warning": "Uw referenties fungeren als de toegang tot uw integraties en u zou deze nooit hoeven delen met iemand anders. Het Homarr team zal nooit om inloggegevens vragen. Zorg ervoor dat uw geheimen veilig opslaat en beheert.", + "clear": "Wis geheim", + "save": "Geheim opslaan", + "update": "Update geheim" + } + }, + "validation": { + "popover": "Uw formulier bevat ongeldige gegevens. Daarom kan het niet worden opgeslagen. Los alle problemen op en klik opnieuw op deze knop om uw wijzigingen op te slaan" + } +} diff --git a/public/locales/nl/layout/modals/change-position.json b/public/locales/nl/layout/modals/change-position.json new file mode 100644 index 000000000..bfd2993ea --- /dev/null +++ b/public/locales/nl/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "X-as positie", + "width": "Breedte", + "height": "Hoogte", + "yPosition": "Y-as positie", + "zeroOrHigher": "0 of hoger", + "betweenXandY": "Tussen {{min}} en {{max}}" +} \ No newline at end of file diff --git a/public/locales/nl/layout/screen-sizes.json b/public/locales/nl/layout/screen-sizes.json new file mode 100644 index 000000000..27d38a1fa --- /dev/null +++ b/public/locales/nl/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "klein", + "medium": "gemiddeld", + "large": "groot" + } +} diff --git a/public/locales/nl/layout/tools.json b/public/locales/nl/layout/tools.json new file mode 100644 index 000000000..a4b260760 --- /dev/null +++ b/public/locales/nl/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "Je hebt momenteel geen tools" + }, + "iconPicker": { + "textInputPlaceholder": "Zoek naar iconen...", + "searchLimitationTitle": "Zoeken is beperkt tot {{max}} iconen", + "searchLimitationMessage": "Om alles snel en vlot te laten verlopen, is de zoekopdracht beperkt tot {{max}} iconen. Gebruik het zoekvak om meer iconen te vinden" + } +} \ No newline at end of file diff --git a/public/locales/nl/modules/calendar.json b/public/locales/nl/modules/calendar.json index ea966125a..4d355b377 100644 --- a/public/locales/nl/modules/calendar.json +++ b/public/locales/nl/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Kalender", - "description": "Een kalender module voor het weergeven van aankomende releases. Deze module werkt samen met de Sonarr en Radarr API.", + "description": "Toont een kalender met komende releases, van ondersteunde integraties.", "settings": { + "title": "Instellingen voor Kalender widget", "sundayStart": { "label": "Begin de week op zondag" + }, + "radarrReleaseType": { + "label": "Radarr release type" } } } -} \ No newline at end of file +} diff --git a/public/locales/nl/modules/common.json b/public/locales/nl/modules/common.json index 4b90a1518..29ea4b19f 100644 --- a/public/locales/nl/modules/common.json +++ b/public/locales/nl/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Instellingen" + }, + "errors": { + "unmappedOptions": { + "text": "Ongebruikte parameter in configuratie gedetecteerd
{{key}}. Homarr kan deze parameter niet interpreteren en gebruiken. Maak een back-up van uw configuratie en corrigeer uw configuratie om onverwacht gedrag te voorkomen." + } } -} \ No newline at end of file +} diff --git a/public/locales/nl/modules/dashdot.json b/public/locales/nl/modules/dashdot.json index a95922fad..c301c6f33 100644 --- a/public/locales/nl/modules/dashdot.json +++ b/public/locales/nl/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "Een module voor het weergeven van de grafieken van uw Dash. instance.", + "description": "Toont de grafieken van een externe Dash. instantie binnen Homarr.", "settings": { + "title": "Instellingen voor Dash. widget", "cpuMultiView": { "label": "CPU Multi-Core Weergave" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/nl/modules/date.json b/public/locales/nl/modules/date.json index 6d8989c4c..bc34adcf3 100644 --- a/public/locales/nl/modules/date.json +++ b/public/locales/nl/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Datum", - "description": "Toon de huidige tijd en datum in een kaart", + "name": "Datum en tijd", + "description": "Toont de huidige datum en tijd.", "settings": { + "title": "Instellingen voor datum en tijd widget", "display24HourFormat": { "label": "Volledige tijd weergeven (24-uur)" } } } -} \ No newline at end of file +} diff --git a/public/locales/nl/modules/dlspeed.json b/public/locales/nl/modules/dlspeed.json index 0b8ab9d43..559cd3e0a 100644 --- a/public/locales/nl/modules/dlspeed.json +++ b/public/locales/nl/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Downloadsnelheid", - "description": "Toon de huidige downloadsnelheid van ondersteunde diensten" + "description": "Toont de download- en uploadsnelheid van ondersteunde integraties." }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/nl/modules/docker.json b/public/locales/nl/modules/docker.json index ee2a048ee..fc60406be 100644 --- a/public/locales/nl/modules/docker.json +++ b/public/locales/nl/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Docker", - "description": "" + "description": "Hiermee kunt u gemakkelijk al uw Docker Containers zien en beheren." }, "search": { "placeholder": "Zoek op container of afbeeldingsnaam" @@ -17,7 +17,7 @@ "portCollapse": "{{ports}} meer" }, "states": { - "running": "Draait", + "running": "Actief", "created": "Aangemaakt", "stopped": "Gestopt", "unknown": "Onbekend" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Service toevoegen", - "message": "Service toevoegen aan Homarr" + "title": "App toevoegen", + "message": "App aan Homarr toevoegen" }, "restart": { "title": "Herstart" @@ -38,7 +38,7 @@ "title": "Start" }, "refreshData": { - "title": "Gegevens verversen" + "title": "Gegevens vernieuwen" }, "remove": { "title": "Verwijder" @@ -49,35 +49,35 @@ }, "actions": { "start": { - "start": "", - "end": "" + "start": "Bezig met starten", + "end": "Gestart" }, "stop": { - "start": "", + "start": "Bezig met Stoppen", "end": "Gestopt" }, "restart": { - "start": "", - "end": "" + "start": "Bezig met herstarten", + "end": "Opnieuw gestart" }, "remove": { - "start": "", - "end": "" + "start": "Bezig met verwijderen", + "end": "Verwijderd" } }, "errors": { "integrationFailed": { "title": "Docker integratie mislukt", - "message": "Bent u vergeten de doktersocket te koppelen?" + "message": "Bent u vergeten de dokter-socket te koppelen?" }, "unknownError": { "title": "Er is een fout opgetreden" }, "oneServiceAtATime": { - "title": "Voeg alstublieft slechts één dienst per keer toe!" + "title": "Voeg slechts één app of dienst per keer toe!" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/nl/modules/overseerr.json b/public/locales/nl/modules/overseerr.json index d185f5f6e..a8b92c2aa 100644 --- a/public/locales/nl/modules/overseerr.json +++ b/public/locales/nl/modules/overseerr.json @@ -1,12 +1,12 @@ { "descriptor": { "name": "Overseerr", - "description": "Staat je toe om media van Overseerr/Jellyseerr te zoeken en toe te voegen" + "description": "Hiermee kunt u media zoeken en toevoegen vanuit Overseerr of Jellyseerr." }, "popup": { "item": { "buttons": { - "askFor": "Vraag om {{title}}", + "askFor": "Vraag naar {{title}}", "cancel": "Annuleer", "request": "Aanvraag" }, @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/nl/modules/ping.json b/public/locales/nl/modules/ping.json index cc57fbe46..6801f9056 100644 --- a/public/locales/nl/modules/ping.json +++ b/public/locales/nl/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "Hiermee kunt u controleren of de service up is of een specifieke HTTP-statuscode retourneert." + "description": "Toont een statusindicator op basis van de HTTP-responscode van een gegeven URL." }, "states": { "online": "Online {{response}}", "offline": "Offline {{response}}", - "loading": "Laden..." + "loading": "Bezig met laden..." } -} \ No newline at end of file +} diff --git a/public/locales/nl/modules/search.json b/public/locales/nl/modules/search.json index a1fec76b9..dae9a0474 100644 --- a/public/locales/nl/modules/search.json +++ b/public/locales/nl/modules/search.json @@ -1,30 +1,30 @@ { "descriptor": { "name": "Zoekbalk", - "description": "Zoekbalk om te zoeken op het web, Youtube, Torrents of Overseerr" + "description": "Een zoekbalk waarmee u uw aangepaste zoekmachine, YouTube en ondersteunde integraties kunt doorzoeken." }, "input": { - "placeholder": "Doorzoek het web..." + "placeholder": "Zoek op het web..." }, - "switched-to": "", + "switched-to": "Omgeschakeld naar", "searchEngines": { "search": { - "name": "", - "description": "" + "name": "Web", + "description": "Zoeken..." }, "youtube": { - "name": "", - "description": "" + "name": "YouTube", + "description": "Zoek op YouTube" }, "torrents": { - "name": "", - "description": "" + "name": "Torrents", + "description": "Zoek naar Torrents" }, "overseerr": { "name": "Overseerr", - "description": "" + "description": "Zoek naar Films en TV-series op Overseerr" } }, - "tip": "", - "switchedSearchEngine": "" -} \ No newline at end of file + "tip": "U kunt de zoekbalk selecteren met de sneltoets ", + "switchedSearchEngine": "Omgeschakeld naar zoeken met {{searchEngine}}" +} diff --git a/public/locales/nl/modules/torrents-status.json b/public/locales/nl/modules/torrents-status.json index 255e12322..48a864a97 100644 --- a/public/locales/nl/modules/torrents-status.json +++ b/public/locales/nl/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { "name": "Torrent", - "description": "Toon de huidige downloadsnelheid van ondersteunde diensten", + "description": "Toont een lijst met torrents van ondersteunde Torrent-clients.", "settings": { - "hideComplete": { - "label": "Verberg voltooide torrents" + "title": "Instellingen voor Torrent widget", + "refreshInterval": { + "label": "Verversingsinterval (in seconden)" + }, + "displayCompletedTorrents": { + "label": "Afgeronde torrents weergeven" + }, + "displayStaleTorrents": { + "label": "Toon verouderde torrents" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "Geen ondersteunde download clients gevonden!", - "text": "Voeg een downloadservice toe om uw huidige downloads weer te geven" + "title": "Geen ondersteunde Torrent clients gevonden!", + "text": "Voeg een ondersteunde Torrent-client toe om je huidige downloads te bekijken" + }, + "generic": { + "title": "Onbekende fout opgetreden", + "text": "Homarr kon niet communiceren met je Torrent-clients. Controleer je configuratie" } + }, + "loading": { + "title": "Bezig met laden..." } } -} \ No newline at end of file +} diff --git a/public/locales/nl/modules/usenet.json b/public/locales/nl/modules/usenet.json index 91c7bd8d5..1761b9e54 100644 --- a/public/locales/nl/modules/usenet.json +++ b/public/locales/nl/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { - "name": "", - "description": "" + "name": "Usenet", + "description": "Maakt het mogelijk om je Usenet installatie te bekijken en te beheren." }, "card": { "errors": { "noDownloadClients": { "title": "Geen ondersteunde download clients gevonden!", - "text": "Voeg een downloadservice toe om uw huidige downloads weer te geven" + "text": "Voeg een ondersteunde Usenet Download Client toe om uw huidige downloads te bekijken" } } }, @@ -42,7 +42,7 @@ "empty": "Leeg", "error": { "title": "Fout", - "message": "Fout bij laden geschiedenis" + "message": "Fout bij het laden van de geschiedenis" }, "paused": "Gepauzeerd" } diff --git a/public/locales/nl/modules/weather.json b/public/locales/nl/modules/weather.json index 25ca62188..8f3a5320c 100644 --- a/public/locales/nl/modules/weather.json +++ b/public/locales/nl/modules/weather.json @@ -1,10 +1,11 @@ { "descriptor": { "name": "Weer", - "description": "Zoek het actuele weer op uw locatie", + "description": "Toont de huidige weersinformatie van een ingestelde locatie.", "settings": { + "title": "Instellingen voor weer widget", "displayInFahrenheit": { - "label": "Toon in Fahrenheit" + "label": "Weergeven in Fahrenheit" }, "location": { "label": "Weerslocatie" @@ -29,4 +30,4 @@ "unknown": "Onbekend" } } -} \ No newline at end of file +} diff --git a/public/locales/nl/settings/common.json b/public/locales/nl/settings/common.json index 535908947..68f6bd5cd 100644 --- a/public/locales/nl/settings/common.json +++ b/public/locales/nl/settings/common.json @@ -6,10 +6,24 @@ "customizations": "Aanpassingen" }, "tips": { - "configTip": "Upload uw configuratiebestand door het op de pagina te slepen!" + "configTip": "Upload uw configuratiebestand door het naar de pagina te slepen!" }, "credits": { "madeWithLove": "Gemaakt met ❤️ door @" }, - "grow": "" -} \ No newline at end of file + "grow": "Groei raster (neem alle ruimte)", + "layout": { + "title": "Dashboard lay-out", + "main": "Algemeen", + "sidebar": "Zijbalk", + "cannotturnoff": "Kan niet worden uitgeschakeld", + "dashboardlayout": "Dashboard lay-out", + "enablersidebar": "Rechter zijbalk inschakelen", + "enablelsidebar": "Linker zijbalk inschakelen", + "enablesearchbar": "Zoekbalk inschakelen", + "enabledocker": "Docker-integratie inschakelen", + "enableping": "Pings inschakelen", + "enablelsidebardesc": "Optioneel. Kan alleen worden gebruikt voor apps en integraties", + "enablersidebardesc": "Optioneel. Kan alleen worden gebruikt voor apps en integraties" + } +} diff --git a/public/locales/nl/settings/customization/app-width.json b/public/locales/nl/settings/customization/app-width.json index ee95be0dc..01afead26 100644 --- a/public/locales/nl/settings/customization/app-width.json +++ b/public/locales/nl/settings/customization/app-width.json @@ -1,3 +1,3 @@ { - "label": "Applicatie breedte" + "label": "App Breedte" } \ No newline at end of file diff --git a/public/locales/nl/settings/customization/page-appearance.json b/public/locales/nl/settings/customization/page-appearance.json index 6694ed701..626757ae9 100644 --- a/public/locales/nl/settings/customization/page-appearance.json +++ b/public/locales/nl/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Paginatitel", - "placeholder": "Homarr 🦞" + "label": "Paginatitel" + }, + "metaTitle": { + "label": "Meta Titel" }, "logo": { "label": "Logo" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "Eigen CSS", - "placeholder": "Eigen CSS wordt als laatste uitgevoerd" + "placeholder": "Eigen CSS wordt als laatste toegepast" }, "buttons": { "submit": "Indienen" diff --git a/public/locales/nl/settings/general/color-schema.json b/public/locales/nl/settings/general/color-schema.json index a74b1f119..c66b90890 100644 --- a/public/locales/nl/settings/general/color-schema.json +++ b/public/locales/nl/settings/general/color-schema.json @@ -1,3 +1,3 @@ { - "label": "Overschakelen naar {{scheme}} modus" + "label": "Schakel over naar {{scheme}} modus" } \ No newline at end of file diff --git a/public/locales/nl/settings/general/config-changer.json b/public/locales/nl/settings/general/config-changer.json index 04e3cf6cf..29875ed0c 100644 --- a/public/locales/nl/settings/general/config-changer.json +++ b/public/locales/nl/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Configuratie lader" + "label": "Configuratiewisselaar", + "description": "", + "loadingNew": "Uw configuratie wordt geladen...", + "pleaseWait": "Wacht tot uw nieuwe configuratie is geladen!" }, "modal": { - "title": "Kies de naam van uw nieuwe configuratie", - "form": { - "configName": { - "label": "Configuratie naam", - "placeholder": "Uw nieuwe configuratienaam" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "Bevestig" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "Configuratie opgeslagen", - "message": "Configuratie opgeslagen als {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,26 +55,32 @@ "deleteFailed": { "title": "Configuratie verwijderen mislukt", "message": "Configuratie verwijderen mislukt" + }, + "deleteFailedDefaultConfig": { + "title": "Standaardconfiguratie kan niet worden verwijderd", + "message": "Configuratie is niet verwijderd uit het bestandssysteem" } } }, - "saveCopy": "Sla op als een kopie" + "saveCopy": "Kopie opslaan" }, "dropzone": { "notifications": { "invalidConfig": { "title": "Kan configuratie niet laden", - "message": "Kon uw configuratie niet laden. Ongeldig JSON formaat." + "message": "Kon uw configuratie niet laden. Ongeldige JSON-indeling." }, "loadedSuccessfully": { "title": "Configuratie {{configName}} succesvol geladen" } }, "accept": { - "text": "Sleep bestanden hierheen om een configuratie te uploaden. Alleen ondersteuning voor JSON." + "title": "Configuratie Upload", + "text": "Sleep bestanden hierheen om een configuratie te uploaden. Alleen ondersteuning voor JSON-bestanden." }, "reject": { - "text": "Dit bestandsformaat wordt niet ondersteund. Upload a.u.b. alleen JSON." + "title": "Drag & Drop Upload afgewezen", + "text": "Dit bestandsformaat wordt niet ondersteund. Upload alleen JSON-bestanden." } } -} \ No newline at end of file +} diff --git a/public/locales/nl/settings/general/module-enabler.json b/public/locales/nl/settings/general/module-enabler.json index ea042f81c..9e26dfeeb 100644 --- a/public/locales/nl/settings/general/module-enabler.json +++ b/public/locales/nl/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Module Inschakeler" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/nl/settings/general/search-engine.json b/public/locales/nl/settings/general/search-engine.json index 7ef1b89da..a52e4d39d 100644 --- a/public/locales/nl/settings/general/search-engine.json +++ b/public/locales/nl/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Zoekmachine", + "configurationName": "Zoekmachine configuratie", "tips": { - "generalTip": "Gebruik de voorvoegsels !yt en !t voor uw zoekopdracht om te zoeken op YouTube of naar een Torrent respectievelijk.", + "generalTip": "Er zijn meerdere voorvoegsels die u kunt gebruiken! Door deze voor uw zoekopdracht toe te voegen worden de resultaten gefilterd. !s (Web), !t (Torrents), !y (YouTube), en !m (Media).", "placeholderTip": "%s kan worden gebruikt als plaatshouder voor de query." }, "customEngine": { + "title": "Aangepaste zoekmachine", "label": "Query URL", - "placeholder": "Eigen query URL" + "placeholder": "Aangepaste query-URL" }, "searchNewTab": { - "label": "" + "label": "Open zoekresultaten in nieuw tabblad" + }, + "searchEnabled": { + "label": "Zoeken ingeschakeld" } -} \ No newline at end of file +} diff --git a/public/locales/nl/settings/general/widget-positions.json b/public/locales/nl/settings/general/widget-positions.json index e41e4243c..1bf3b56f3 100644 --- a/public/locales/nl/settings/general/widget-positions.json +++ b/public/locales/nl/settings/general/widget-positions.json @@ -1,3 +1,3 @@ { "label": "Plaats widgets aan de linkerkant" -} \ No newline at end of file +} diff --git a/public/locales/pl/authentication/login.json b/public/locales/pl/authentication/login.json index 17eb7f0a6..c17a87cbb 100644 --- a/public/locales/pl/authentication/login.json +++ b/public/locales/pl/authentication/login.json @@ -1,6 +1,6 @@ { "title": "Witaj ponownie!", - "text": "Wprowadź hasło", + "text": "", "form": { "fields": { "password": { @@ -18,10 +18,10 @@ "message": "Twoje hasło jest sprawdzane..." }, "correct": { - "title": "Hasło poprawne, przekierowywanie..." + "title": "" }, "wrong": { - "title": "To hasło jest nieprawidłowe. Spróbuj ponownie." + "title": "" } } } diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index 96b2656e5..a1f900a40 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Zapisz" + "save": "", + "about": "", + "cancel": "Anuluj", + "close": "", + "delete": "Usuń", + "ok": "", + "edit": "Edytuj", + "version": "", + "changePosition": "", + "remove": "Usuń", + "removeConfirm": "", + "sections": { + "settings": "Ustawienia", + "dangerZone": "Strefa zagrożenia" + }, + "secrets": { + "apiKey": "", + "username": "Nazwa użytkownika", + "password": "Hasło" }, "tip": "Wskazówka: ", "time": { @@ -8,4 +25,4 @@ "minutes": "minut", "hours": "godziny" } -} +} \ No newline at end of file diff --git a/public/locales/pl/layout/add-service-app-shelf.json b/public/locales/pl/layout/add-service-app-shelf.json index afc37e457..7c9cc75a9 100644 --- a/public/locales/pl/layout/add-service-app-shelf.json +++ b/public/locales/pl/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Opcje zaawansowane", "form": { - "httpStatusCodes": { - "label": "Kod statusu HTTP", - "placeholder": "Wybierz prawidłowe kody statusu", - "clearButtonLabel": "Wyczyść wybór", - "nothingFound": "Nic nie znaleziono" - }, "openServiceInNewTab": { "label": "Otwórz usługę w nowej karcie" }, diff --git a/public/locales/pl/layout/element-selector/selector.json b/public/locales/pl/layout/element-selector/selector.json new file mode 100644 index 000000000..2a4f14e0d --- /dev/null +++ b/public/locales/pl/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "", + "text": "" + }, + "widgetDescription": "", + "goBack": "", + "actionIcon": { + "tooltip": "" + } +} diff --git a/public/locales/pl/layout/header/actions/toggle-edit-mode.json b/public/locales/pl/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..56487b8b1 --- /dev/null +++ b/public/locales/pl/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "", + "button": { + "disabled": "", + "enabled": "" + }, + "popover": { + "title": "", + "text": "" + }, + "screenSizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/pl/layout/mobile/drawer.json b/public/locales/pl/layout/mobile/drawer.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/public/locales/pl/layout/mobile/drawer.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/pl/layout/modals/about.json b/public/locales/pl/layout/modals/about.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/public/locales/pl/layout/modals/about.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/pl/layout/modals/add-app.json b/public/locales/pl/layout/modals/add-app.json new file mode 100644 index 000000000..308de00f4 --- /dev/null +++ b/public/locales/pl/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "", + "behaviour": "", + "network": "Sieć", + "appearance": "", + "integration": "" + }, + "general": { + "appname": { + "label": "", + "description": "" + }, + "internalAddress": { + "label": "", + "description": "" + }, + "externalAddress": { + "label": "", + "description": "" + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "", + "description": "" + } + }, + "network": { + "statusChecker": { + "label": "", + "description": "" + }, + "statusCodes": { + "label": "", + "description": "" + } + }, + "appearance": { + "icon": { + "label": "", + "description": "" + } + }, + "integration": { + "type": { + "label": "", + "description": "", + "placeholder": "", + "defined": "", + "undefined": "", + "public": "", + "private": "", + "explanationPrivate": "", + "explanationPublic": "" + }, + "secrets": { + "description": "", + "warning": "", + "clear": "", + "save": "", + "update": "" + } + }, + "validation": { + "popover": "" + } +} diff --git a/public/locales/pl/layout/modals/change-position.json b/public/locales/pl/layout/modals/change-position.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/public/locales/pl/layout/modals/change-position.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/locales/pl/layout/screen-sizes.json b/public/locales/pl/layout/screen-sizes.json new file mode 100644 index 000000000..24e49a689 --- /dev/null +++ b/public/locales/pl/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/pl/layout/tools.json b/public/locales/pl/layout/tools.json new file mode 100644 index 000000000..ffbe07e69 --- /dev/null +++ b/public/locales/pl/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "" + }, + "iconPicker": { + "textInputPlaceholder": "", + "searchLimitationTitle": "", + "searchLimitationMessage": "" + } +} \ No newline at end of file diff --git a/public/locales/pl/modules/calendar.json b/public/locales/pl/modules/calendar.json index f0c955d35..b8382f5de 100644 --- a/public/locales/pl/modules/calendar.json +++ b/public/locales/pl/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Kalendarz", - "description": "Moduł kalendarza do wyświetlania nadchodzących wydań. Współpracuje z API Sonarra i Radarra.", + "description": "", "settings": { + "title": "", "sundayStart": { "label": "Rozpoczynaj tydzień od niedzieli" + }, + "radarrReleaseType": { + "label": "" } } } -} \ No newline at end of file +} diff --git a/public/locales/pl/modules/common.json b/public/locales/pl/modules/common.json index 489e89f1c..1ccc1c899 100644 --- a/public/locales/pl/modules/common.json +++ b/public/locales/pl/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Ustawienia" + }, + "errors": { + "unmappedOptions": { + "text": "" + } } -} \ No newline at end of file +} diff --git a/public/locales/pl/modules/dashdot.json b/public/locales/pl/modules/dashdot.json index eda73bf02..e01fdbc8d 100644 --- a/public/locales/pl/modules/dashdot.json +++ b/public/locales/pl/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "Moduł do wyświetlania wykresów z uruchomionej instancji Dash.", + "description": "", "settings": { + "title": "", "cpuMultiView": { "label": "Widok wielordzeniowy procesora" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/pl/modules/date.json b/public/locales/pl/modules/date.json index 80b581fc6..90537536f 100644 --- a/public/locales/pl/modules/date.json +++ b/public/locales/pl/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Data", - "description": "Pokaż bieżącą datę i godzinę w karcie", + "name": "", + "description": "", "settings": { + "title": "", "display24HourFormat": { "label": "Wyświetlaj pełną godzinę (24 godziny)" } } } -} \ No newline at end of file +} diff --git a/public/locales/pl/modules/dlspeed.json b/public/locales/pl/modules/dlspeed.json index 92eda8be8..397287dc4 100644 --- a/public/locales/pl/modules/dlspeed.json +++ b/public/locales/pl/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Prędkość pobierania", - "description": "Pokaż bieżącą prędkość pobierania obsługiwanych usług" + "description": "" }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/pl/modules/docker.json b/public/locales/pl/modules/docker.json index 3e0ad09e5..0e15bd362 100644 --- a/public/locales/pl/modules/docker.json +++ b/public/locales/pl/modules/docker.json @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Dodaj usługę", - "message": "Dodaj usługę do Homarra" + "title": "", + "message": "" }, "restart": { "title": "Uruchom ponownie" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "Integracja Dockera nie powiodła się", - "message": "Czy zapomniałeś nie zamontować docker socket?" + "message": "" }, "unknownError": { "title": "Wystąpił błąd" }, "oneServiceAtATime": { - "title": "Nie dodawaj wielu usług naraz!" + "title": "" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/pl/modules/overseerr.json b/public/locales/pl/modules/overseerr.json index c2f615187..9921e9454 100644 --- a/public/locales/pl/modules/overseerr.json +++ b/public/locales/pl/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Umożliwia wyszukiwanie i dodawanie mediów z Overseerr/Jellyseerr" + "description": "" }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "Zaznacz sezony, które chcesz pobrać", + "caption": "", "table": { "header": { "season": "Sezon", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/pl/modules/ping.json b/public/locales/pl/modules/ping.json index 122670e96..71b18bd88 100644 --- a/public/locales/pl/modules/ping.json +++ b/public/locales/pl/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "Pozwala sprawdzić, czy usługa jest aktywna lub zwraca określony kod statusu HTTP." + "description": "" }, "states": { "online": "Dostępny {{response}}", "offline": "Niedostępny {{response}}", "loading": "Ładowanie..." } -} \ No newline at end of file +} diff --git a/public/locales/pl/modules/search.json b/public/locales/pl/modules/search.json index 2ea5ddfa4..be4b6e466 100644 --- a/public/locales/pl/modules/search.json +++ b/public/locales/pl/modules/search.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Pasek wyszukiwania", - "description": "Pasek wyszukiwania pozwala przeszukiwać strony internetowe, YouTube, Torrenty i Overseerr" + "description": "" }, "input": { "placeholder": "Szukaj w internecie..." @@ -27,4 +27,4 @@ }, "tip": "", "switchedSearchEngine": "" -} \ No newline at end of file +} diff --git a/public/locales/pl/modules/torrents-status.json b/public/locales/pl/modules/torrents-status.json index 984a59666..5e973604b 100644 --- a/public/locales/pl/modules/torrents-status.json +++ b/public/locales/pl/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { - "name": "Torrent", - "description": "Pokaż bieżącą prędkość pobierania obsługiwanych usług", + "name": "", + "description": "", "settings": { - "hideComplete": { - "label": "Ukryj ukończone torrenty" + "title": "", + "refreshInterval": { + "label": "" + }, + "displayCompletedTorrents": { + "label": "" + }, + "displayStaleTorrents": { + "label": "" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "Nie znaleziono obsługiwanych klientów pobierania!", - "text": "Dodaj usługę pobierania, aby wyświetlić aktualnie pobierane pliki" + "title": "", + "text": "" + }, + "generic": { + "title": "", + "text": "" } + }, + "loading": { + "title": "Ładowanie..." } } -} \ No newline at end of file +} diff --git a/public/locales/pl/modules/usenet.json b/public/locales/pl/modules/usenet.json index 64473ac0c..e4bc613b3 100644 --- a/public/locales/pl/modules/usenet.json +++ b/public/locales/pl/modules/usenet.json @@ -7,7 +7,7 @@ "errors": { "noDownloadClients": { "title": "Nie znaleziono obsługiwanych klientów pobierania!", - "text": "Dodaj usługę pobierania, aby wyświetlić aktualnie pobierane pliki" + "text": "" } } }, diff --git a/public/locales/pl/modules/weather.json b/public/locales/pl/modules/weather.json index b4de96096..1258d7365 100644 --- a/public/locales/pl/modules/weather.json +++ b/public/locales/pl/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Pogoda", - "description": "Sprawdź aktualną pogodę w swojej lokalizacji", + "description": "", "settings": { + "title": "", "displayInFahrenheit": { "label": "Wyświetlaj w Fahrenheitach" }, @@ -29,4 +30,4 @@ "unknown": "Nieznany" } } -} \ No newline at end of file +} diff --git a/public/locales/pl/settings/common.json b/public/locales/pl/settings/common.json index 7e9c62714..61bc5b718 100644 --- a/public/locales/pl/settings/common.json +++ b/public/locales/pl/settings/common.json @@ -6,10 +6,24 @@ "customizations": "Personalizacja" }, "tips": { - "configTip": "Prześlij swój plik konfiguracyjny, przeciągając go i upuszczając na stronę!" + "configTip": "" }, "credits": { "madeWithLove": "Wykonane z ❤️ przez @" }, - "grow": "" -} \ No newline at end of file + "grow": "", + "layout": { + "title": "", + "main": "", + "sidebar": "", + "cannotturnoff": "", + "dashboardlayout": "", + "enablersidebar": "", + "enablelsidebar": "", + "enablesearchbar": "", + "enabledocker": "", + "enableping": "", + "enablelsidebardesc": "", + "enablersidebardesc": "" + } +} diff --git a/public/locales/pl/settings/customization/page-appearance.json b/public/locales/pl/settings/customization/page-appearance.json index 7880d6595..a3663a791 100644 --- a/public/locales/pl/settings/customization/page-appearance.json +++ b/public/locales/pl/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Tytuł strony", - "placeholder": "Homarr 🦞" + "label": "Tytuł strony" + }, + "metaTitle": { + "label": "" }, "logo": { "label": "Logo" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "Niestandardowy CSS", - "placeholder": "Niestandardowy CSS zostanie wykonany jako ostatni" + "placeholder": "" }, "buttons": { "submit": "" diff --git a/public/locales/pl/settings/general/config-changer.json b/public/locales/pl/settings/general/config-changer.json index a14a99214..5e692e232 100644 --- a/public/locales/pl/settings/general/config-changer.json +++ b/public/locales/pl/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Wybór konfiguracji" + "label": "", + "description": "", + "loadingNew": "", + "pleaseWait": "" }, "modal": { - "title": "Wybierz nazwę nowej konfiguracji", - "form": { - "configName": { - "label": "Nazwa konfiguracji", - "placeholder": "Twoja nowa nazwa konfiguracji" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "Potwierdź" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "Konfiguracja zapisana", - "message": "Konfiguracja zapisana jako {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "Nie udało się usunąć konfiguracji", "message": "Nie udało się usunąć konfiguracji" + }, + "deleteFailedDefaultConfig": { + "title": "", + "message": "" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "Przeciągnij pliki tutaj, aby przesłać konfigurację. Wsparcie tylko dla plików JSON." + "title": "", + "text": "" }, "reject": { - "text": "Ten format pliku nie jest obsługiwany. Przesyłaj tylko pliki JSON." + "title": "", + "text": "" } } -} \ No newline at end of file +} diff --git a/public/locales/pl/settings/general/module-enabler.json b/public/locales/pl/settings/general/module-enabler.json index 901523fad..9e26dfeeb 100644 --- a/public/locales/pl/settings/general/module-enabler.json +++ b/public/locales/pl/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Wybór modułów" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/pl/settings/general/search-engine.json b/public/locales/pl/settings/general/search-engine.json index 3365d9024..1a9fbffce 100644 --- a/public/locales/pl/settings/general/search-engine.json +++ b/public/locales/pl/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Silnik wyszukiwania", + "configurationName": "", "tips": { - "generalTip": "Użyj prefiksów !yt i !t aby szukać plików torrent lub wyszukać zapytanie na YouTube.", + "generalTip": "", "placeholderTip": "%s może być użyte jako symbol zastępczy dla zapytania." }, "customEngine": { + "title": "", "label": "Adres URL zapytania", "placeholder": "Własny adres URL zapytania" }, "searchNewTab": { "label": "" + }, + "searchEnabled": { + "label": "" } -} \ No newline at end of file +} diff --git a/public/locales/pl/settings/general/widget-positions.json b/public/locales/pl/settings/general/widget-positions.json index 62039ed15..0967ef424 100644 --- a/public/locales/pl/settings/general/widget-positions.json +++ b/public/locales/pl/settings/general/widget-positions.json @@ -1,3 +1 @@ -{ - "label": "Umieść widżety po lewej stronie" -} \ No newline at end of file +{} diff --git a/public/locales/pt/authentication/login.json b/public/locales/pt/authentication/login.json index 30f543e65..266e00475 100644 --- a/public/locales/pt/authentication/login.json +++ b/public/locales/pt/authentication/login.json @@ -1,6 +1,6 @@ { "title": "Bem-vindo de volta!", - "text": "Por favor digite a senha", + "text": "", "form": { "fields": { "password": { @@ -18,10 +18,10 @@ "message": "Sua senha está sendo verificada..." }, "correct": { - "title": "Senha correta, redirecionando você..." + "title": "" }, "wrong": { - "title": "A senha está errada, por favor tente novamente." + "title": "" } } } diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 8ece5df7f..9121db8a5 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Salvar" + "save": "", + "about": "", + "cancel": "Cancelar", + "close": "", + "delete": "Apagar", + "ok": "", + "edit": "Editar", + "version": "", + "changePosition": "", + "remove": "Excluir", + "removeConfirm": "", + "sections": { + "settings": "Configurações", + "dangerZone": "Zona de risco" + }, + "secrets": { + "apiKey": "", + "username": "Usuário", + "password": "Senha" }, "tip": "Dica: ", "time": { @@ -8,4 +25,4 @@ "minutes": "minutos", "hours": "horas" } -} +} \ No newline at end of file diff --git a/public/locales/pt/layout/add-service-app-shelf.json b/public/locales/pt/layout/add-service-app-shelf.json index 6c0e1a860..1abae73d2 100644 --- a/public/locales/pt/layout/add-service-app-shelf.json +++ b/public/locales/pt/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Opções avançadas", "form": { - "httpStatusCodes": { - "label": "Códigos de estado HTTP", - "placeholder": "Selecione um código de estado válido", - "clearButtonLabel": "Limpar seleção", - "nothingFound": "Nenhum resultado encontrado" - }, "openServiceInNewTab": { "label": "Abrir links em uma nova aba" }, diff --git a/public/locales/pt/layout/element-selector/selector.json b/public/locales/pt/layout/element-selector/selector.json new file mode 100644 index 000000000..2a4f14e0d --- /dev/null +++ b/public/locales/pt/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "", + "text": "" + }, + "widgetDescription": "", + "goBack": "", + "actionIcon": { + "tooltip": "" + } +} diff --git a/public/locales/pt/layout/header/actions/toggle-edit-mode.json b/public/locales/pt/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..56487b8b1 --- /dev/null +++ b/public/locales/pt/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "", + "button": { + "disabled": "", + "enabled": "" + }, + "popover": { + "title": "", + "text": "" + }, + "screenSizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/pt/layout/mobile/drawer.json b/public/locales/pt/layout/mobile/drawer.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/public/locales/pt/layout/mobile/drawer.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/pt/layout/modals/about.json b/public/locales/pt/layout/modals/about.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/public/locales/pt/layout/modals/about.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/pt/layout/modals/add-app.json b/public/locales/pt/layout/modals/add-app.json new file mode 100644 index 000000000..cded7b9f7 --- /dev/null +++ b/public/locales/pt/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "", + "behaviour": "", + "network": "Rede", + "appearance": "", + "integration": "" + }, + "general": { + "appname": { + "label": "", + "description": "" + }, + "internalAddress": { + "label": "", + "description": "" + }, + "externalAddress": { + "label": "", + "description": "" + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "", + "description": "" + } + }, + "network": { + "statusChecker": { + "label": "", + "description": "" + }, + "statusCodes": { + "label": "", + "description": "" + } + }, + "appearance": { + "icon": { + "label": "", + "description": "" + } + }, + "integration": { + "type": { + "label": "", + "description": "", + "placeholder": "", + "defined": "", + "undefined": "", + "public": "", + "private": "", + "explanationPrivate": "", + "explanationPublic": "" + }, + "secrets": { + "description": "", + "warning": "", + "clear": "", + "save": "", + "update": "" + } + }, + "validation": { + "popover": "" + } +} diff --git a/public/locales/pt/layout/modals/change-position.json b/public/locales/pt/layout/modals/change-position.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/public/locales/pt/layout/modals/change-position.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/locales/pt/layout/screen-sizes.json b/public/locales/pt/layout/screen-sizes.json new file mode 100644 index 000000000..24e49a689 --- /dev/null +++ b/public/locales/pt/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/pt/layout/tools.json b/public/locales/pt/layout/tools.json new file mode 100644 index 000000000..ffbe07e69 --- /dev/null +++ b/public/locales/pt/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "" + }, + "iconPicker": { + "textInputPlaceholder": "", + "searchLimitationTitle": "", + "searchLimitationMessage": "" + } +} \ No newline at end of file diff --git a/public/locales/pt/modules/calendar.json b/public/locales/pt/modules/calendar.json index eaa7538d7..45ad9d7bc 100644 --- a/public/locales/pt/modules/calendar.json +++ b/public/locales/pt/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Calendário", - "description": "Um módulo de calendário para exibir os próximos lançamentos. Interage com o Sonarr e o Radarr API.", + "description": "", "settings": { + "title": "", "sundayStart": { "label": "Comece a semana no Domingo" + }, + "radarrReleaseType": { + "label": "" } } } -} \ No newline at end of file +} diff --git a/public/locales/pt/modules/common.json b/public/locales/pt/modules/common.json index ad436ac69..6fa228cf8 100644 --- a/public/locales/pt/modules/common.json +++ b/public/locales/pt/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Configurações" + }, + "errors": { + "unmappedOptions": { + "text": "" + } } -} \ No newline at end of file +} diff --git a/public/locales/pt/modules/dashdot.json b/public/locales/pt/modules/dashdot.json index f9e47755a..3b945da26 100644 --- a/public/locales/pt/modules/dashdot.json +++ b/public/locales/pt/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "", - "description": "Um módulo para exibir os gráficos da sua instância Dash. em execução.", + "description": "", "settings": { + "title": "", "cpuMultiView": { "label": "Visualização múltipla de CPU" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/pt/modules/date.json b/public/locales/pt/modules/date.json index 078ba2720..cf5815ee0 100644 --- a/public/locales/pt/modules/date.json +++ b/public/locales/pt/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Data", - "description": "Mostrar a hora e a data atuais em um card", + "name": "", + "description": "", "settings": { + "title": "", "display24HourFormat": { "label": "Mostrar tempo (24 horas)" } } } -} \ No newline at end of file +} diff --git a/public/locales/pt/modules/dlspeed.json b/public/locales/pt/modules/dlspeed.json index c93394dcc..719ec407e 100644 --- a/public/locales/pt/modules/dlspeed.json +++ b/public/locales/pt/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Velocidade de Transferência", - "description": "Mostrar a velocidade atual de download dos serviços suportados" + "description": "" }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/pt/modules/docker.json b/public/locales/pt/modules/docker.json index fee767599..58ad2754e 100644 --- a/public/locales/pt/modules/docker.json +++ b/public/locales/pt/modules/docker.json @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Adicionar serviço", - "message": "Adicionar serviço ao Homarr" + "title": "", + "message": "" }, "restart": { "title": "Reiniciar" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "Integração com Docker falhou", - "message": "Você esqueceu de montar o Docker socket?" + "message": "" }, "unknownError": { "title": "Ocorreu um erro" }, "oneServiceAtATime": { - "title": "Por favor, acrescente apenas um serviço de cada vez!" + "title": "" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/pt/modules/overseerr.json b/public/locales/pt/modules/overseerr.json index 1398f6dfa..aebe7e9ef 100644 --- a/public/locales/pt/modules/overseerr.json +++ b/public/locales/pt/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Permite que você pesquise e adicione conteúdo do Overseerr/Jellyseerr" + "description": "" }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "Marque as temporadas que você deseja que sejam baixadas", + "caption": "", "table": { "header": { "season": "Temporada", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/pt/modules/ping.json b/public/locales/pt/modules/ping.json index efc43c919..c2dc22556 100644 --- a/public/locales/pt/modules/ping.json +++ b/public/locales/pt/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Latência", - "description": "Permite verificar se o serviço está ativo ou retorna um código de estado HTTP específico." + "description": "" }, "states": { "online": "Online {{response}}", "offline": "{{response}} off-line", "loading": "Carregando..." } -} \ No newline at end of file +} diff --git a/public/locales/pt/modules/search.json b/public/locales/pt/modules/search.json index 8669c1b5d..0784da6b1 100644 --- a/public/locales/pt/modules/search.json +++ b/public/locales/pt/modules/search.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Barra de pesquisa", - "description": "Barra de pesquisa para pesquisar na ‘internet’, YouTube, torrents ou Overseerr" + "description": "" }, "input": { "placeholder": "Pesquisar na Internet..." @@ -27,4 +27,4 @@ }, "tip": "", "switchedSearchEngine": "" -} \ No newline at end of file +} diff --git a/public/locales/pt/modules/torrents-status.json b/public/locales/pt/modules/torrents-status.json index 4de386e43..06434c0d0 100644 --- a/public/locales/pt/modules/torrents-status.json +++ b/public/locales/pt/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { - "name": "Torrent", - "description": "Mostrar a velocidade atual de download dos serviços suportados", + "name": "", + "description": "", "settings": { - "hideComplete": { - "label": "Ocultar torrents completos" + "title": "", + "refreshInterval": { + "label": "" + }, + "displayCompletedTorrents": { + "label": "" + }, + "displayStaleTorrents": { + "label": "" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "Nenhum cliente de download suportado encontrado!", - "text": "Adicione um serviço de download para ver seus downloads atuais" + "title": "", + "text": "" + }, + "generic": { + "title": "", + "text": "" } + }, + "loading": { + "title": "Carregando..." } } -} \ No newline at end of file +} diff --git a/public/locales/pt/modules/usenet.json b/public/locales/pt/modules/usenet.json index c975cb4e0..49c1b7219 100644 --- a/public/locales/pt/modules/usenet.json +++ b/public/locales/pt/modules/usenet.json @@ -7,7 +7,7 @@ "errors": { "noDownloadClients": { "title": "Nenhum cliente de download suportado encontrado!", - "text": "Adicione um serviço de download para ver seus downloads atuais" + "text": "" } } }, diff --git a/public/locales/pt/modules/weather.json b/public/locales/pt/modules/weather.json index e843f1ea9..b263780c6 100644 --- a/public/locales/pt/modules/weather.json +++ b/public/locales/pt/modules/weather.json @@ -3,6 +3,7 @@ "name": "Tempo", "description": "", "settings": { + "title": "", "displayInFahrenheit": { "label": "Mostrar em Fahrenheit" }, @@ -29,4 +30,4 @@ "unknown": "Desconhecido" } } -} \ No newline at end of file +} diff --git a/public/locales/pt/settings/common.json b/public/locales/pt/settings/common.json index 09f60b792..16b3db5c8 100644 --- a/public/locales/pt/settings/common.json +++ b/public/locales/pt/settings/common.json @@ -11,5 +11,19 @@ "credits": { "madeWithLove": "Feito com ❤️ por @" }, - "grow": "" -} \ No newline at end of file + "grow": "", + "layout": { + "title": "", + "main": "", + "sidebar": "", + "cannotturnoff": "", + "dashboardlayout": "", + "enablersidebar": "", + "enablelsidebar": "", + "enablesearchbar": "", + "enabledocker": "", + "enableping": "", + "enablelsidebardesc": "", + "enablersidebardesc": "" + } +} diff --git a/public/locales/pt/settings/customization/page-appearance.json b/public/locales/pt/settings/customization/page-appearance.json index 6b8c66ecf..b6b548ccb 100644 --- a/public/locales/pt/settings/customization/page-appearance.json +++ b/public/locales/pt/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "", - "placeholder": "" + "label": "" + }, + "metaTitle": { + "label": "" }, "logo": { "label": "Logo" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "CSS Personalizado", - "placeholder": "O CSS personalizado será executado por último" + "placeholder": "" }, "buttons": { "submit": "Enviar" diff --git a/public/locales/pt/settings/general/config-changer.json b/public/locales/pt/settings/general/config-changer.json index 793552a11..dc8f3ea4b 100644 --- a/public/locales/pt/settings/general/config-changer.json +++ b/public/locales/pt/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Carregar configurações" + "label": "", + "description": "", + "loadingNew": "", + "pleaseWait": "" }, "modal": { - "title": "", - "form": { - "configName": { - "label": "", - "placeholder": "" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "", - "message": "" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "", "message": "" + }, + "deleteFailedDefaultConfig": { + "title": "", + "message": "" } } }, @@ -46,10 +75,12 @@ } }, "accept": { + "title": "", "text": "" }, "reject": { + "title": "", "text": "" } } -} \ No newline at end of file +} diff --git a/public/locales/pt/settings/general/search-engine.json b/public/locales/pt/settings/general/search-engine.json index df277ccef..9cb91483a 100644 --- a/public/locales/pt/settings/general/search-engine.json +++ b/public/locales/pt/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "", + "configurationName": "", "tips": { "generalTip": "", "placeholderTip": "" }, "customEngine": { + "title": "", "label": "", "placeholder": "" }, "searchNewTab": { "label": "" + }, + "searchEnabled": { + "label": "" } -} \ No newline at end of file +} diff --git a/public/locales/pt/settings/general/widget-positions.json b/public/locales/pt/settings/general/widget-positions.json index 9e26dfeeb..0967ef424 100644 --- a/public/locales/pt/settings/general/widget-positions.json +++ b/public/locales/pt/settings/general/widget-positions.json @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/public/locales/ru/authentication/login.json b/public/locales/ru/authentication/login.json index b5b05dea9..4b8444033 100644 --- a/public/locales/ru/authentication/login.json +++ b/public/locales/ru/authentication/login.json @@ -1,6 +1,6 @@ { "title": "С возвращением!", - "text": "Пожалуйста, введите пароль", + "text": "", "form": { "fields": { "password": { @@ -18,10 +18,10 @@ "message": "Ваш пароль проверяется..." }, "correct": { - "title": "Пароль верный, перенаправляет вас..." + "title": "" }, "wrong": { - "title": "Пароль неверный, попробуйте еще раз." + "title": "" } } } diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index f5e2a45c2..394ab5ef6 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -1,11 +1,28 @@ { - "actions": { - "save": "Сохранить" + "save": "", + "about": "", + "cancel": "Отмена", + "close": "", + "delete": "Удалить", + "ok": "", + "edit": "Изменить", + "version": "", + "changePosition": "", + "remove": "Удалить", + "removeConfirm": "", + "sections": { + "settings": "Настройки", + "dangerZone": "Опасная зона" + }, + "secrets": { + "apiKey": "", + "username": "Имя пользователя", + "password": "Пароль" }, "tip": "Совет: ", "time": { - "seconds": "секунды", + "seconds": "секунд", "minutes": "минут", - "hours": "часы" + "hours": "часов" } -} +} \ No newline at end of file diff --git a/public/locales/ru/layout/add-service-app-shelf.json b/public/locales/ru/layout/add-service-app-shelf.json index ae52c1cc7..d463835ac 100644 --- a/public/locales/ru/layout/add-service-app-shelf.json +++ b/public/locales/ru/layout/add-service-app-shelf.json @@ -15,17 +15,17 @@ "title": "Настройки", "form": { "serviceName": { - "label": "Имя сервиса", + "label": "Название сервиса", "placeholder": "Plex" }, "iconUrl": { "label": "URL-адрес иконки" }, "serviceUrl": { - "label": "Адрес сервиса" + "label": "URL-адрес сервиса" }, "onClickUrl": { - "label": "URL-адрес при нажатии" + "label": "URL-адрес по клику" }, "serviceType": { "label": "Тип сервиса", @@ -36,7 +36,7 @@ "label": "Категория", "placeholder": "Выберите категорию или создайте новую", "nothingFound": "Ничего не найдено", - "createLabel": "+ Добавить {{query}}" + "createLabel": "+ Создать {{query}}" }, "integrations": { "apiKey": { @@ -69,7 +69,7 @@ "deluge": { "password": { "label": "Пароль", - "placeholder": "Введите пароль", + "placeholder": "пароль", "validation": { "invalidPassword": "Неверный пароль" } @@ -101,7 +101,7 @@ }, "password": { "label": "Пароль", - "placeholder": "Введите пароль", + "placeholder": "пароль", "validation": { "invalidPassword": "Неверный пароль" } @@ -111,14 +111,8 @@ } }, "advancedOptions": { - "title": "Дополнительные параметры", + "title": "Дополнительные настройки", "form": { - "httpStatusCodes": { - "label": "Коды состояния HTTP", - "placeholder": "Выберите подходящие коды состояния", - "clearButtonLabel": "Очистить выбранное", - "nothingFound": "Ничего не найдено" - }, "openServiceInNewTab": { "label": "Открывать сервис в новой вкладке" }, diff --git a/public/locales/ru/layout/element-selector/selector.json b/public/locales/ru/layout/element-selector/selector.json new file mode 100644 index 000000000..2a4f14e0d --- /dev/null +++ b/public/locales/ru/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "", + "text": "" + }, + "widgetDescription": "", + "goBack": "", + "actionIcon": { + "tooltip": "" + } +} diff --git a/public/locales/ru/layout/header/actions/toggle-edit-mode.json b/public/locales/ru/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..56487b8b1 --- /dev/null +++ b/public/locales/ru/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "", + "button": { + "disabled": "", + "enabled": "" + }, + "popover": { + "title": "", + "text": "" + }, + "screenSizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/ru/layout/mobile/drawer.json b/public/locales/ru/layout/mobile/drawer.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/public/locales/ru/layout/mobile/drawer.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/ru/layout/modals/about.json b/public/locales/ru/layout/modals/about.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/public/locales/ru/layout/modals/about.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/ru/layout/modals/add-app.json b/public/locales/ru/layout/modals/add-app.json new file mode 100644 index 000000000..2476a828a --- /dev/null +++ b/public/locales/ru/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "", + "behaviour": "", + "network": "Сеть", + "appearance": "", + "integration": "" + }, + "general": { + "appname": { + "label": "", + "description": "" + }, + "internalAddress": { + "label": "", + "description": "" + }, + "externalAddress": { + "label": "", + "description": "" + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "", + "description": "" + } + }, + "network": { + "statusChecker": { + "label": "", + "description": "" + }, + "statusCodes": { + "label": "", + "description": "" + } + }, + "appearance": { + "icon": { + "label": "", + "description": "" + } + }, + "integration": { + "type": { + "label": "", + "description": "", + "placeholder": "", + "defined": "", + "undefined": "", + "public": "", + "private": "", + "explanationPrivate": "", + "explanationPublic": "" + }, + "secrets": { + "description": "", + "warning": "", + "clear": "", + "save": "", + "update": "" + } + }, + "validation": { + "popover": "" + } +} diff --git a/public/locales/ru/layout/modals/change-position.json b/public/locales/ru/layout/modals/change-position.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/public/locales/ru/layout/modals/change-position.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/locales/ru/layout/screen-sizes.json b/public/locales/ru/layout/screen-sizes.json new file mode 100644 index 000000000..24e49a689 --- /dev/null +++ b/public/locales/ru/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/ru/layout/tools.json b/public/locales/ru/layout/tools.json new file mode 100644 index 000000000..ffbe07e69 --- /dev/null +++ b/public/locales/ru/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "" + }, + "iconPicker": { + "textInputPlaceholder": "", + "searchLimitationTitle": "", + "searchLimitationMessage": "" + } +} \ No newline at end of file diff --git a/public/locales/ru/modules/calendar.json b/public/locales/ru/modules/calendar.json index b55010493..588df0f7a 100644 --- a/public/locales/ru/modules/calendar.json +++ b/public/locales/ru/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Календарь", - "description": "Модуль календаря для отображения предстоящих релизов. Интегрируется с Sonarr и Radarr.", + "description": "", "settings": { + "title": "", "sundayStart": { "label": "Начинать неделю с воскресенья" + }, + "radarrReleaseType": { + "label": "" } } } -} \ No newline at end of file +} diff --git a/public/locales/ru/modules/common.json b/public/locales/ru/modules/common.json index 127ac067c..eb23e76a3 100644 --- a/public/locales/ru/modules/common.json +++ b/public/locales/ru/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Настройки" + }, + "errors": { + "unmappedOptions": { + "text": "" + } } -} \ No newline at end of file +} diff --git a/public/locales/ru/modules/dashdot.json b/public/locales/ru/modules/dashdot.json index b15988789..d9179c2ce 100644 --- a/public/locales/ru/modules/dashdot.json +++ b/public/locales/ru/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "Модуль для отображения графиков из Dash.", + "description": "", "settings": { + "title": "", "cpuMultiView": { "label": "Многоядерный процессор Вид" }, @@ -16,7 +17,7 @@ "label": "Графики" }, "url": { - "label": "Тире. URL" + "label": "URL-адрес Dash." } } }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/ru/modules/date.json b/public/locales/ru/modules/date.json index cdb0f4a48..c0f48b3c5 100644 --- a/public/locales/ru/modules/date.json +++ b/public/locales/ru/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Дата", - "description": "Показать текущее время и дату в карточке", + "name": "", + "description": "", "settings": { + "title": "", "display24HourFormat": { "label": "Отображение полного времени (24 часа)" } } } -} \ No newline at end of file +} diff --git a/public/locales/ru/modules/dlspeed.json b/public/locales/ru/modules/dlspeed.json index 516735d11..a437478c1 100644 --- a/public/locales/ru/modules/dlspeed.json +++ b/public/locales/ru/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Скорость загрузки", - "description": "Показать текущую скорость загрузки поддерживаемых сервисов" + "description": "" }, "card": { "table": { @@ -10,7 +10,7 @@ "size": "Размер", "download": "Вниз", "upload": "Вверх", - "estimatedTimeOfArrival": "РАСЧЕТНОЕ ВРЕМЯ ПРИБЫТИЯ", + "estimatedTimeOfArrival": "ETA", "progress": "Прогресс" }, "body": { @@ -19,11 +19,11 @@ }, "lineChart": { "title": "Текущая скорость загрузки", - "download": "Скачать: {{download}}", - "upload": "Загрузка: {{upload}}", - "timeSpan": "{{seconds}} несколько секунд назад", + "download": "Загрузка: {{download}}", + "upload": "Отдача: {{upload}}", + "timeSpan": "{{seconds}} секунд назад", "totalDownload": "Скачать: {{download}}/s", - "totalUpload": "Загрузка: {{upload}}/s" + "totalUpload": "Отдача: {{upload}}/s" }, "errors": { "noDownloadClients": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/ru/modules/docker.json b/public/locales/ru/modules/docker.json index 9177ac326..5f77a749d 100644 --- a/public/locales/ru/modules/docker.json +++ b/public/locales/ru/modules/docker.json @@ -1,23 +1,23 @@ { "descriptor": { "name": "Docker", - "description": "Позволяет легко управлять контейнерами docker" + "description": "" }, "search": { - "placeholder": "Поиск по имени контейнера или изображения" + "placeholder": "Поиск по названию контейнера или образа" }, "table": { "header": { "name": "Имя", - "image": "Изображение", + "image": "Образ", "ports": "Порты", - "state": "Государство" + "state": "Состояние" }, "body": { - "portCollapse": "{{ports}} больше" + "portCollapse": "Ещё {{ports}}" }, "states": { - "running": "Бег", + "running": "Запущено", "created": "Создано", "stopped": "Остановлено", "unknown": "Неизвестно" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Добавить сервис", - "message": "Добавить услугу в Homarr" + "title": "", + "message": "" }, "restart": { "title": "Перезапустить" @@ -35,7 +35,7 @@ "title": "Остановить" }, "start": { - "title": "Начало" + "title": "Запустить" }, "refreshData": { "title": "Обновить данные" @@ -49,11 +49,11 @@ }, "actions": { "start": { - "start": "Начало", - "end": "Начало" + "start": "Запуск", + "end": "Запущен" }, "stop": { - "start": "Остановка", + "start": "Останавливается", "end": "Остановлено" }, "restart": { @@ -61,23 +61,23 @@ "end": "Перезапущен" }, "remove": { - "start": "Удаление", + "start": "Удаляется", "end": "Удалено" } }, "errors": { "integrationFailed": { "title": "Сбой интеграции Docker", - "message": "Вы забыли смонтировать сокет docker?" + "message": "" }, "unknownError": { "title": "Произошла ошибка" }, "oneServiceAtATime": { - "title": "Пожалуйста, добавляйте только одну услугу за один раз!" + "title": "" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/ru/modules/overseerr.json b/public/locales/ru/modules/overseerr.json index e13e28541..2dc62f333 100644 --- a/public/locales/ru/modules/overseerr.json +++ b/public/locales/ru/modules/overseerr.json @@ -1,12 +1,12 @@ { "descriptor": { "name": "Overseerr", - "description": "Позволяет искать и добавлять медиафайлы из Overseerr/Jellyseerr" + "description": "" }, "popup": { "item": { "buttons": { - "askFor": "Спросите на {{title}}", + "askFor": "Запросить {{title}}", "cancel": "Отмена", "request": "Запрос" }, @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "Отметьте сезоны, которые вы хотите загрузить", + "caption": "", "table": { "header": { "season": "Сезон", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/ru/modules/ping.json b/public/locales/ru/modules/ping.json index f81fc4737..a8d2d635b 100644 --- a/public/locales/ru/modules/ping.json +++ b/public/locales/ru/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Пинг", - "description": "Позволяет проверить, работает ли служба или возвращает определенный код состояния HTTP." + "description": "" }, "states": { "online": "Онлайн {{response}}", - "offline": "Offline {{response}}", + "offline": "Оффлайн {{response}}", "loading": "Загрузка..." } -} \ No newline at end of file +} diff --git a/public/locales/ru/modules/search.json b/public/locales/ru/modules/search.json index 33ec9789b..5c78264a5 100644 --- a/public/locales/ru/modules/search.json +++ b/public/locales/ru/modules/search.json @@ -1,30 +1,30 @@ { "descriptor": { - "name": "Поиск", - "description": "Строка поиска для поиска в Интернете, Youtube, Torrents или Overseerr" + "name": "Панель поиска", + "description": "" }, "input": { "placeholder": "Искать в интернете..." }, - "switched-to": "", + "switched-to": "Переключен на", "searchEngines": { "search": { - "name": "", + "name": "Web", "description": "" }, "youtube": { - "name": "", - "description": "" + "name": "Youtube", + "description": "Поиск на Youtube" }, "torrents": { - "name": "", - "description": "" + "name": "Торренты", + "description": "Поиск по торрентам" }, "overseerr": { "name": "Overseerr", "description": "" } }, - "tip": "", - "switchedSearchEngine": "" -} \ No newline at end of file + "tip": "Вы можете выбрать строку поиска с помощью сочетания клавиш ", + "switchedSearchEngine": "Переключился на поиск с помощью {{searchEngine}}" +} diff --git a/public/locales/ru/modules/torrents-status.json b/public/locales/ru/modules/torrents-status.json index 3448c5a20..e3916904f 100644 --- a/public/locales/ru/modules/torrents-status.json +++ b/public/locales/ru/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { - "name": "Торрент", - "description": "Показать текущую скорость загрузки поддерживаемых сервисов", + "name": "", + "description": "", "settings": { - "hideComplete": { - "label": "Скрыть завершенные торренты" + "title": "", + "refreshInterval": { + "label": "" + }, + "displayCompletedTorrents": { + "label": "" + }, + "displayStaleTorrents": { + "label": "" } } }, @@ -15,7 +22,7 @@ "size": "Размер", "download": "Вниз", "upload": "Вверх", - "estimatedTimeOfArrival": "РАСЧЕТНОЕ ВРЕМЯ ПРИБЫТИЯ", + "estimatedTimeOfArrival": "ETA", "progress": "Прогресс" }, "body": { @@ -24,17 +31,24 @@ }, "lineChart": { "title": "Текущая скорость загрузки", - "download": "Скачать: {{download}}", - "upload": "Загрузка: {{upload}}", - "timeSpan": "{{seconds}} несколько секунд назад", + "download": "Загрузка: {{download}}", + "upload": "Отдача: {{upload}}", + "timeSpan": "{{seconds}} секунд назад", "totalDownload": "Скачать: {{download}}/s", - "totalUpload": "Загрузка: {{upload}}/s" + "totalUpload": "Отдача: {{upload}}/s" }, "errors": { "noDownloadClients": { - "title": "Не найдено ни одного поддерживаемого клиента загрузки!", - "text": "Добавьте службу загрузки для просмотра текущих загрузок" + "title": "", + "text": "" + }, + "generic": { + "title": "", + "text": "" } + }, + "loading": { + "title": "Загрузка..." } } -} \ No newline at end of file +} diff --git a/public/locales/ru/modules/usenet.json b/public/locales/ru/modules/usenet.json index 160de8c4f..d7a5d17e0 100644 --- a/public/locales/ru/modules/usenet.json +++ b/public/locales/ru/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { - "name": "", + "name": "Usenet", "description": "" }, "card": { "errors": { "noDownloadClients": { "title": "Не найдено ни одного поддерживаемого клиента загрузки!", - "text": "Добавьте службу загрузки для просмотра текущих загрузок" + "text": "" } } }, @@ -23,10 +23,10 @@ "header": { "name": "Имя", "size": "Размер", - "eta": "РАСЧЕТНОЕ ВРЕМЯ ПРИБЫТИЯ", + "eta": "ETA", "progress": "Прогресс" }, - "empty": "Пустой", + "empty": "Пусто", "error": { "title": "Ошибка", "message": "Произошла ошибка" @@ -39,7 +39,7 @@ "size": "Размер", "duration": "Продолжительность" }, - "empty": "Пустой", + "empty": "Пусто", "error": { "title": "Ошибка", "message": "Ошибка загрузки истории" diff --git a/public/locales/ru/modules/weather.json b/public/locales/ru/modules/weather.json index 38b177c57..b4a62db76 100644 --- a/public/locales/ru/modules/weather.json +++ b/public/locales/ru/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Погода", - "description": "Узнайте текущую погоду в вашем регионе", + "description": "", "settings": { + "title": "", "displayInFahrenheit": { "label": "Отображение в градусах Фаренгейта" }, @@ -14,19 +15,19 @@ "card": { "weatherDescriptions": { "clear": "Ясно", - "mainlyClear": "В основном ясно", + "mainlyClear": "Преимущественно ясно", "fog": "Туман", - "drizzle": "Мелкий дождь", + "drizzle": "Небольшой дождь", "freezingDrizzle": "Изморозь", "rain": "Дождь", "freezingRain": "Ледяной дождь", "snowFall": "Снегопад", - "snowGrains": "Снежные зерна", - "rainShowers": "Ливневый дождь", - "snowShowers": "Пурга", + "snowGrains": "Снежные зёрна", + "rainShowers": "Ливень", + "snowShowers": "Снегопад", "thunderstorm": "Гроза", "thunderstormWithHail": "Гроза с градом", "unknown": "Неизвестно" } } -} \ No newline at end of file +} diff --git a/public/locales/ru/settings/common.json b/public/locales/ru/settings/common.json index c6fd9f5b5..df63d172c 100644 --- a/public/locales/ru/settings/common.json +++ b/public/locales/ru/settings/common.json @@ -2,14 +2,28 @@ "title": "Настройки", "tooltip": "Настройки", "tabs": { - "common": "Общий", - "customizations": "Персонализации" + "common": "Общие", + "customizations": "Оформление" }, "tips": { - "configTip": "Загрузите файл конфигурации, перетащив его на страницу!" + "configTip": "" }, "credits": { - "madeWithLove": "Сделано с ❤️ по @." + "madeWithLove": "Сделано с ❤️ от @" }, - "grow": "" -} \ No newline at end of file + "grow": "Увеличение сетки (занимает все пространство)", + "layout": { + "title": "", + "main": "", + "sidebar": "", + "cannotturnoff": "", + "dashboardlayout": "", + "enablersidebar": "", + "enablelsidebar": "", + "enablesearchbar": "", + "enabledocker": "", + "enableping": "", + "enablelsidebardesc": "", + "enablersidebardesc": "" + } +} diff --git a/public/locales/ru/settings/customization/page-appearance.json b/public/locales/ru/settings/customization/page-appearance.json index 339539b2c..3876fec57 100644 --- a/public/locales/ru/settings/customization/page-appearance.json +++ b/public/locales/ru/settings/customization/page-appearance.json @@ -1,22 +1,24 @@ { "pageTitle": { - "label": "Название страницы", - "placeholder": "Хомарр 🦞" + "label": "Название страницы" + }, + "metaTitle": { + "label": "" }, "logo": { "label": "Логотип" }, "favicon": { - "label": "Фавикон" + "label": "Значок веб-страницы" }, "background": { - "label": "Справочная информация" + "label": "Фон" }, "customCSS": { "label": "Пользовательский CSS", - "placeholder": "Пользовательский CSS будет выполняться в последнюю очередь" + "placeholder": "" }, "buttons": { - "submit": "Отправить" + "submit": "Подтвердить" } } diff --git a/public/locales/ru/settings/general/config-changer.json b/public/locales/ru/settings/general/config-changer.json index 3b1e12b53..b1a0e6eea 100644 --- a/public/locales/ru/settings/general/config-changer.json +++ b/public/locales/ru/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Загрузчик конфигурации" + "label": "", + "description": "", + "loadingNew": "", + "pleaseWait": "" }, "modal": { - "title": "Выберите имя новой конфигурации", - "form": { - "configName": { - "label": "Имя конфигурации", - "placeholder": "Имя вашей новой конфигурации" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "Подтвердить" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "Конфигурация сохранена", - "message": "Конфигурация сохранена как {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "Не удалось удалить конфигурацию", "message": "Не удалось удалить конфигурацию" + }, + "deleteFailedDefaultConfig": { + "title": "", + "message": "" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "Перетащите файлы сюда, чтобы загрузить конфигурацию. Поддерживается только JSON." + "title": "", + "text": "" }, "reject": { - "text": "Этот формат файла не поддерживается. Пожалуйста, загружайте только JSON." + "title": "", + "text": "" } } -} \ No newline at end of file +} diff --git a/public/locales/ru/settings/general/module-enabler.json b/public/locales/ru/settings/general/module-enabler.json index ddfa4ac43..9e26dfeeb 100644 --- a/public/locales/ru/settings/general/module-enabler.json +++ b/public/locales/ru/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Усилитель модуля" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/ru/settings/general/search-engine.json b/public/locales/ru/settings/general/search-engine.json index 3826fd131..ba72f58ba 100644 --- a/public/locales/ru/settings/general/search-engine.json +++ b/public/locales/ru/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Поисковая система", + "configurationName": "", "tips": { - "generalTip": "Используйте префиксы !yt и !t перед вашим запросом для поиска на YouTube или для поиска торрента соответственно.", + "generalTip": "", "placeholderTip": "%s можно использовать в качестве заполнителя для запроса." }, "customEngine": { + "title": "", "label": "URL запроса", "placeholder": "URL пользовательского запроса" }, "searchNewTab": { "label": "Открыть результаты поиска в новой вкладке" + }, + "searchEnabled": { + "label": "" } -} \ No newline at end of file +} diff --git a/public/locales/ru/settings/general/theme-selector.json b/public/locales/ru/settings/general/theme-selector.json index 542b263b2..ef81ef433 100644 --- a/public/locales/ru/settings/general/theme-selector.json +++ b/public/locales/ru/settings/general/theme-selector.json @@ -1,3 +1,3 @@ { - "label": "Переключитесь на режим {{theme}}" + "label": "Переключить на {{theme}} режим" } \ No newline at end of file diff --git a/public/locales/ru/settings/general/widget-positions.json b/public/locales/ru/settings/general/widget-positions.json index 44c3968fc..0967ef424 100644 --- a/public/locales/ru/settings/general/widget-positions.json +++ b/public/locales/ru/settings/general/widget-positions.json @@ -1,3 +1 @@ -{ - "label": "Расположите виджеты слева" -} \ No newline at end of file +{} diff --git a/public/locales/sl/authentication/login.json b/public/locales/sl/authentication/login.json index 66feacbf6..ed462c60b 100644 --- a/public/locales/sl/authentication/login.json +++ b/public/locales/sl/authentication/login.json @@ -1,6 +1,6 @@ { "title": "Dobrodošli nazaj!", - "text": "Prosimo vnesite geslo", + "text": "", "form": { "fields": { "password": { @@ -18,10 +18,10 @@ "message": "Preverjamo vaše geslo..." }, "correct": { - "title": "Geslo je pravilno, preusmerjam..." + "title": "" }, "wrong": { - "title": "Geslo je napačno, poskusite znova." + "title": "" } } } diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index e7704e52b..a23a8f5e4 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Shrani" + "save": "Shrani", + "about": "O programu", + "cancel": "Prekliči", + "close": "Zapri", + "delete": "Izbriši", + "ok": "V redu", + "edit": "Uredi", + "version": "Različica", + "changePosition": "Spremeni položaj", + "remove": "Odstrani", + "removeConfirm": "", + "sections": { + "settings": "Nastavitve", + "dangerZone": "Nevarno območje" + }, + "secrets": { + "apiKey": "Api ključ", + "username": "Uporabniško ime", + "password": "Geslo" }, "tip": "Nasvet: ", "time": { @@ -8,4 +25,4 @@ "minutes": "minut", "hours": "ur" } -} +} \ No newline at end of file diff --git a/public/locales/sl/layout/add-service-app-shelf.json b/public/locales/sl/layout/add-service-app-shelf.json index ffaa2f278..bad0a433a 100644 --- a/public/locales/sl/layout/add-service-app-shelf.json +++ b/public/locales/sl/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Napredne nastavitve", "form": { - "httpStatusCodes": { - "label": "HTTP statusne kode", - "placeholder": "Izberite veljavne kode statusa", - "clearButtonLabel": "Počisti izbiro", - "nothingFound": "Brez rezultatov iskanja" - }, "openServiceInNewTab": { "label": "Odprite storitev v novem zavihku" }, diff --git a/public/locales/sl/layout/element-selector/selector.json b/public/locales/sl/layout/element-selector/selector.json new file mode 100644 index 000000000..2a4f14e0d --- /dev/null +++ b/public/locales/sl/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "", + "text": "" + }, + "widgetDescription": "", + "goBack": "", + "actionIcon": { + "tooltip": "" + } +} diff --git a/public/locales/sl/layout/header/actions/toggle-edit-mode.json b/public/locales/sl/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..56487b8b1 --- /dev/null +++ b/public/locales/sl/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "", + "button": { + "disabled": "", + "enabled": "" + }, + "popover": { + "title": "", + "text": "" + }, + "screenSizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/sl/layout/mobile/drawer.json b/public/locales/sl/layout/mobile/drawer.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/public/locales/sl/layout/mobile/drawer.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/sl/layout/modals/about.json b/public/locales/sl/layout/modals/about.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/public/locales/sl/layout/modals/about.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/sl/layout/modals/add-app.json b/public/locales/sl/layout/modals/add-app.json new file mode 100644 index 000000000..06a9ee408 --- /dev/null +++ b/public/locales/sl/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "", + "behaviour": "", + "network": "Omrežje", + "appearance": "", + "integration": "" + }, + "general": { + "appname": { + "label": "", + "description": "" + }, + "internalAddress": { + "label": "", + "description": "" + }, + "externalAddress": { + "label": "", + "description": "" + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "", + "description": "" + } + }, + "network": { + "statusChecker": { + "label": "", + "description": "" + }, + "statusCodes": { + "label": "", + "description": "" + } + }, + "appearance": { + "icon": { + "label": "", + "description": "" + } + }, + "integration": { + "type": { + "label": "", + "description": "", + "placeholder": "", + "defined": "", + "undefined": "", + "public": "", + "private": "", + "explanationPrivate": "", + "explanationPublic": "" + }, + "secrets": { + "description": "", + "warning": "", + "clear": "", + "save": "", + "update": "" + } + }, + "validation": { + "popover": "" + } +} diff --git a/public/locales/sl/layout/modals/change-position.json b/public/locales/sl/layout/modals/change-position.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/public/locales/sl/layout/modals/change-position.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/locales/sl/layout/screen-sizes.json b/public/locales/sl/layout/screen-sizes.json new file mode 100644 index 000000000..24e49a689 --- /dev/null +++ b/public/locales/sl/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/sl/layout/tools.json b/public/locales/sl/layout/tools.json new file mode 100644 index 000000000..ffbe07e69 --- /dev/null +++ b/public/locales/sl/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "" + }, + "iconPicker": { + "textInputPlaceholder": "", + "searchLimitationTitle": "", + "searchLimitationMessage": "" + } +} \ No newline at end of file diff --git a/public/locales/sl/modules/calendar.json b/public/locales/sl/modules/calendar.json index 0f31e2d4c..e9ac58a1b 100644 --- a/public/locales/sl/modules/calendar.json +++ b/public/locales/sl/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Koledar", - "description": "Koledarski modul za prikaz prihajajočih izdaj. Deluje z API vmesnikom od Sonarr in Radarr.", + "description": "", "settings": { + "title": "", "sundayStart": { "label": "Začni teden z nedeljo" + }, + "radarrReleaseType": { + "label": "" } } } -} \ No newline at end of file +} diff --git a/public/locales/sl/modules/common.json b/public/locales/sl/modules/common.json index 93851f8a5..c2a7719e6 100644 --- a/public/locales/sl/modules/common.json +++ b/public/locales/sl/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Nastavitve" + }, + "errors": { + "unmappedOptions": { + "text": "" + } } -} \ No newline at end of file +} diff --git a/public/locales/sl/modules/dashdot.json b/public/locales/sl/modules/dashdot.json index cfb6af169..b6a86094d 100644 --- a/public/locales/sl/modules/dashdot.json +++ b/public/locales/sl/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "Modul za prikazovanje grafov iz vašega delujočega programa Dash.", + "description": "", "settings": { + "title": "Nastavitve za pripomoček Dash", "cpuMultiView": { "label": "Pogled večjedrnih procesorjev" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/sl/modules/date.json b/public/locales/sl/modules/date.json index b26ac578f..a5373d595 100644 --- a/public/locales/sl/modules/date.json +++ b/public/locales/sl/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Datum", - "description": "Prikaz trenutnega časa in datuma na kartici", + "name": "", + "description": "", "settings": { + "title": "", "display24HourFormat": { "label": "Prikaz polnega časa (24-urni)" } } } -} \ No newline at end of file +} diff --git a/public/locales/sl/modules/dlspeed.json b/public/locales/sl/modules/dlspeed.json index f39b1d828..5cf32f2a8 100644 --- a/public/locales/sl/modules/dlspeed.json +++ b/public/locales/sl/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Hitrost prenosa", - "description": "Prikaži trenutno hitrost prenosa podprtih storitev" + "description": "" }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/sl/modules/docker.json b/public/locales/sl/modules/docker.json index 9f6491778..91e01aaa5 100644 --- a/public/locales/sl/modules/docker.json +++ b/public/locales/sl/modules/docker.json @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Dodaj storitev", - "message": "Dodajanje storitev v Homarr" + "title": "", + "message": "" }, "restart": { "title": "Ponovno zaženi" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "Integracija Dockerja ni uspela", - "message": "Ste pozabili namestiti Docker vtičnico?" + "message": "" }, "unknownError": { "title": "Prišlo je do napake" }, "oneServiceAtATime": { - "title": "Naenkrat dodajte samo eno storitev!" + "title": "" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/sl/modules/overseerr.json b/public/locales/sl/modules/overseerr.json index 451d366ad..a543ab236 100644 --- a/public/locales/sl/modules/overseerr.json +++ b/public/locales/sl/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Omogoča iskanje in dodajanje medijev iz storitev Overseerr/Jellyseerr" + "description": "" }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "Označite sezone, ki jih želite prenesti", + "caption": "", "table": { "header": { "season": "Sezona", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/sl/modules/ping.json b/public/locales/sl/modules/ping.json index 9ef65dc92..ff0b9c34e 100644 --- a/public/locales/sl/modules/ping.json +++ b/public/locales/sl/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "Omogoča preverjanje, ali je storitev vzpostavljena ali vrača določeno HTTP kodo statusa." + "description": "" }, "states": { "online": "Povezan {{response}}", "offline": "Prekinjen {{response}}", "loading": "Nalaganje..." } -} \ No newline at end of file +} diff --git a/public/locales/sl/modules/search.json b/public/locales/sl/modules/search.json index 652cec58c..9abd0387e 100644 --- a/public/locales/sl/modules/search.json +++ b/public/locales/sl/modules/search.json @@ -1,30 +1,30 @@ { "descriptor": { "name": "Iskalna vrstica", - "description": "Iskalna vrstica za iskanje po spletu, YouTubu, torrentih ali Overseerru" + "description": "" }, "input": { "placeholder": "Preišči splet..." }, - "switched-to": "", + "switched-to": "Preklopljeno na", "searchEngines": { "search": { - "name": "", + "name": "Splet", "description": "" }, "youtube": { - "name": "", - "description": "" + "name": "YouTube", + "description": "Poišči na YouTube" }, "torrents": { - "name": "", - "description": "" + "name": "Torrenti", + "description": "Iskanje torrentov" }, "overseerr": { "name": "Overseerr", "description": "" } }, - "tip": "", - "switchedSearchEngine": "" -} \ No newline at end of file + "tip": "Iskalno vrstico lahko izberete z bližnjico ", + "switchedSearchEngine": "Preklopljen na iskanje s {{searchEngine}}" +} diff --git a/public/locales/sl/modules/torrents-status.json b/public/locales/sl/modules/torrents-status.json index aab63c6bc..cd14e165b 100644 --- a/public/locales/sl/modules/torrents-status.json +++ b/public/locales/sl/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { - "name": "Torrent", - "description": "Prikaži trenutno hitrost prenosa podprtih storitev", + "name": "", + "description": "", "settings": { - "hideComplete": { - "label": "Skrijte dokončane torrente" + "title": "", + "refreshInterval": { + "label": "" + }, + "displayCompletedTorrents": { + "label": "" + }, + "displayStaleTorrents": { + "label": "" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "Ni bilo najdenih podprtih odjemalcev za prenos!", - "text": "Dodajte storitev prenosa za ogled trenutnih prenosov" + "title": "", + "text": "" + }, + "generic": { + "title": "", + "text": "" } + }, + "loading": { + "title": "Nalaganje..." } } -} \ No newline at end of file +} diff --git a/public/locales/sl/modules/usenet.json b/public/locales/sl/modules/usenet.json index 4f30f78f2..7d60b9547 100644 --- a/public/locales/sl/modules/usenet.json +++ b/public/locales/sl/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { - "name": "", + "name": "Usenet", "description": "" }, "card": { "errors": { "noDownloadClients": { "title": "Ni bilo najdenih podprtih odjemalcev za prenos!", - "text": "Dodajte storitev prenosa za ogled trenutnih prenosov" + "text": "" } } }, diff --git a/public/locales/sl/modules/weather.json b/public/locales/sl/modules/weather.json index 97baa3aa9..385342a6a 100644 --- a/public/locales/sl/modules/weather.json +++ b/public/locales/sl/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Vreme", - "description": "Iskanje trenutnega vremena na vaši lokaciji", + "description": "", "settings": { + "title": "", "displayInFahrenheit": { "label": "Prikaz v Fahrenheitu" }, @@ -29,4 +30,4 @@ "unknown": "Neznano" } } -} \ No newline at end of file +} diff --git a/public/locales/sl/settings/common.json b/public/locales/sl/settings/common.json index dac1a8a69..ae9a3076a 100644 --- a/public/locales/sl/settings/common.json +++ b/public/locales/sl/settings/common.json @@ -6,10 +6,24 @@ "customizations": "Prilagoditve" }, "tips": { - "configTip": "Konfiguracijsko datoteko naložite tako, da jo povlečete in spustite na stran!" + "configTip": "" }, "credits": { "madeWithLove": "Narejeno s ❤️ od @" }, - "grow": "" -} \ No newline at end of file + "grow": "Rastoča mreža (zavzema ves prostor)", + "layout": { + "title": "Postavitev nadzorne plošče", + "main": "Glavno", + "sidebar": "Stranska vrstica", + "cannotturnoff": "Ni mogoče izklopiti", + "dashboardlayout": "Postavitev nadzorne plošče", + "enablersidebar": "Omogočite desno stransko vrstico", + "enablelsidebar": "Omogočite levo stransko vrstico", + "enablesearchbar": "Omogočite iskalno vrstico", + "enabledocker": "Omogočite integracijo dockerja", + "enableping": "Omogočite pinganje", + "enablelsidebardesc": "Izbirno. Uporablja se lahko samo za aplikacije in integracije", + "enablersidebardesc": "Izbirno. Uporablja se lahko samo za aplikacije in integracije" + } +} diff --git a/public/locales/sl/settings/customization/page-appearance.json b/public/locales/sl/settings/customization/page-appearance.json index 5d63587dc..6dd25bc2b 100644 --- a/public/locales/sl/settings/customization/page-appearance.json +++ b/public/locales/sl/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Naslov strani", - "placeholder": "Homarr 🦞" + "label": "Naslov strani" + }, + "metaTitle": { + "label": "" }, "logo": { "label": "Logotip" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "Po meri CSS", - "placeholder": "CSS po meri se izvede kot zadnji" + "placeholder": "" }, "buttons": { "submit": "Pošlji" diff --git a/public/locales/sl/settings/general/config-changer.json b/public/locales/sl/settings/general/config-changer.json index 835bfb160..6af6195b2 100644 --- a/public/locales/sl/settings/general/config-changer.json +++ b/public/locales/sl/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Nalagalnik konfiguracije" + "label": "", + "description": "", + "loadingNew": "", + "pleaseWait": "" }, "modal": { - "title": "Izberite ime vaše nove konfiguracije", - "form": { - "configName": { - "label": "Ime konfiguracije", - "placeholder": "Vaše novo ime konfiguracije" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "Potrdi" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "Konfiguracija je shranjena", - "message": "Konfiguracija shranjena kot {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "Brisanje konfiguracije ni uspelo", "message": "Brisanje konfiguracije ni uspelo" + }, + "deleteFailedDefaultConfig": { + "title": "", + "message": "" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "Če želite naložiti konfiguracijo, povlecite datoteke sem. Podpora samo za JSON." + "title": "", + "text": "" }, "reject": { - "text": "Ta oblika datoteke ni podprta. Prenesite samo JSON." + "title": "", + "text": "" } } -} \ No newline at end of file +} diff --git a/public/locales/sl/settings/general/module-enabler.json b/public/locales/sl/settings/general/module-enabler.json index 48543dc34..9e26dfeeb 100644 --- a/public/locales/sl/settings/general/module-enabler.json +++ b/public/locales/sl/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Omogočanje modulov" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/sl/settings/general/search-engine.json b/public/locales/sl/settings/general/search-engine.json index 829340fec..94a9fd765 100644 --- a/public/locales/sl/settings/general/search-engine.json +++ b/public/locales/sl/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Iskalnik", + "configurationName": "", "tips": { - "generalTip": "Za iskanje v YouTubu ali Torrentu uporabite predponi !yt in !t pred poizvedbo.", + "generalTip": "", "placeholderTip": "%s lahko uporabite kot nadomestno ime za poizvedbo." }, "customEngine": { + "title": "", "label": "URL poizvedbe", "placeholder": "URL poizvedbe po meri" }, "searchNewTab": { + "label": "Odprite rezultate iskanja v novem zavihku" + }, + "searchEnabled": { "label": "" } -} \ No newline at end of file +} diff --git a/public/locales/sl/settings/general/widget-positions.json b/public/locales/sl/settings/general/widget-positions.json index d34ee5438..0967ef424 100644 --- a/public/locales/sl/settings/general/widget-positions.json +++ b/public/locales/sl/settings/general/widget-positions.json @@ -1,3 +1 @@ -{ - "label": "Prikaži gradnike na levi strani" -} \ No newline at end of file +{} diff --git a/public/locales/sv/authentication/login.json b/public/locales/sv/authentication/login.json index 5f3102cff..4ff931453 100644 --- a/public/locales/sv/authentication/login.json +++ b/public/locales/sv/authentication/login.json @@ -1,6 +1,6 @@ { "title": "Välkommen tillbaka!", - "text": "Vänligen ange lösenordet", + "text": "Ange ditt lösenord", "form": { "fields": { "password": { @@ -18,10 +18,10 @@ "message": "Ditt lösenord kontrolleras..." }, "correct": { - "title": "Lösenord korrekt, omdirigerar dig..." + "title": "Inloggning lyckades, omdirigerar..." }, "wrong": { - "title": "Lösenordet är fel, försök igen." + "title": "Lösenordet du angav är felaktigt. Försök igen." } } } diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index 9fae26e10..c6a924e89 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Spara" + "save": "Spara", + "about": "Om", + "cancel": "Avbryt", + "close": "Stäng", + "delete": "Radera", + "ok": "OK", + "edit": "Redigera", + "version": "Version", + "changePosition": "Ändra position", + "remove": "Ta bort", + "removeConfirm": "Är du säker på att du vill ta bort {{item}} ?", + "sections": { + "settings": "Inställningar", + "dangerZone": "Farozon" + }, + "secrets": { + "apiKey": "API-nyckel", + "username": "Användarnamn", + "password": "Lösenord" }, "tip": "Tips: ", "time": { @@ -8,4 +25,4 @@ "minutes": "minuter", "hours": "timmar" } -} +} \ No newline at end of file diff --git a/public/locales/sv/layout/add-service-app-shelf.json b/public/locales/sv/layout/add-service-app-shelf.json index fc9a29523..f53f1e228 100644 --- a/public/locales/sv/layout/add-service-app-shelf.json +++ b/public/locales/sv/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Avancerade inställningar", "form": { - "httpStatusCodes": { - "label": "HTTP-statuskoder", - "placeholder": "Välj giltiga statuskoder", - "clearButtonLabel": "Rensa markering", - "nothingFound": "Ingenting hittades" - }, "openServiceInNewTab": { "label": "Öppna tjänsten i ny flik" }, diff --git a/public/locales/sv/layout/element-selector/selector.json b/public/locales/sv/layout/element-selector/selector.json new file mode 100644 index 000000000..2bf2d3538 --- /dev/null +++ b/public/locales/sv/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "Lägg till en ny ruta", + "text": "Rutor är det viktigaste elementet i Homarr. De används för att visa dina appar och annan information. Du kan lägga till så många rutor som du vill." + }, + "widgetDescription": "Widgetar interagerar med dina appar, för att ge dig mer kontroll över dina applikationer. De kräver vanligtvis ytterligare konfiguration innan användning.", + "goBack": "Gå tillbaka till föregående steg", + "actionIcon": { + "tooltip": "Lägg till en ruta" + } +} diff --git a/public/locales/sv/layout/header/actions/toggle-edit-mode.json b/public/locales/sv/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..d605a70b4 --- /dev/null +++ b/public/locales/sv/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "I redigeringsläge kan du justera rutor och konfigurera appar. Ändringar sparas inte förrän du avslutar redigeringsläget.", + "button": { + "disabled": "Gå till redigeringsläge", + "enabled": "Avsluta och spara" + }, + "popover": { + "title": "Redigeringsläget är aktiverat för <1>{{size}} storlek", + "text": "Du kan justera och konfigurera dina appar nu. Ändringarna sparas inte förrän du lämnar redigeringsläget" + }, + "screenSizes": { + "small": "liten", + "medium": "mellan", + "large": "stor" + } +} diff --git a/public/locales/sv/layout/mobile/drawer.json b/public/locales/sv/layout/mobile/drawer.json new file mode 100644 index 000000000..135580d42 --- /dev/null +++ b/public/locales/sv/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} sidofältet" +} diff --git a/public/locales/sv/layout/modals/about.json b/public/locales/sv/layout/modals/about.json new file mode 100644 index 000000000..e35dbbfed --- /dev/null +++ b/public/locales/sv/layout/modals/about.json @@ -0,0 +1,7 @@ +{ + "description": "Homarr är en stilren, modern instrumentpanel som ger dig tillgång till alla dina appar och tjänster. Med Homarr kan du få tillgång till och kontrollera allt på ett bekvämt ställe. Homarr integreras sömlöst med de appar du har lagt till, vilket ger dig värdefull information och ger dig fullständig kontroll. Installationen är enkel och Homarr stöder ett stort antal installationsmetoder.", + "i18n": "Laddade namnområden för I18n-översättningar", + "locales": "Konfigurerade I18n lokalspråk", + "contact": "Har du problem eller frågor? Kontakta oss!", + "addToDashboard": "Lägg till i instrumentpanel" +} diff --git a/public/locales/sv/layout/modals/add-app.json b/public/locales/sv/layout/modals/add-app.json new file mode 100644 index 000000000..923c67f0d --- /dev/null +++ b/public/locales/sv/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "Allmänt", + "behaviour": "Beteende", + "network": "Nätverk", + "appearance": "Utseende", + "integration": "Integration" + }, + "general": { + "appname": { + "label": "Appnamn", + "description": "Används för att visa appen på instrumentpanelen." + }, + "internalAddress": { + "label": "Intern adress", + "description": "Appens interna IP-adress." + }, + "externalAddress": { + "label": "Extern adress", + "description": "URL som öppnas när du klickar på appen." + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "Öppna i ny flik", + "description": "Öppna appen i en ny flik istället för den nuvarande." + } + }, + "network": { + "statusChecker": { + "label": "Statuskontroll", + "description": "Kontrollerar om din app är online med en enkel HTTP(S) begäran." + }, + "statusCodes": { + "label": "HTTP-statuskoder", + "description": "HTTP-statuskoder som anses vara online." + } + }, + "appearance": { + "icon": { + "label": "Appikon", + "description": "Ikonen som kommer att visas på instrumentpanelen." + } + }, + "integration": { + "type": { + "label": "Integrationskonfiguration", + "description": "Integrationskonfigurationen som kommer att användas för att ansluta till din app.", + "placeholder": "Välj en integration", + "defined": "Definierad", + "undefined": "Odefinierad", + "public": "Publik", + "private": "Privat", + "explanationPrivate": "En privat hemlighet skickas endast en gång till servern. När webbläsaren har uppdaterat sidan kommer den aldrig skickas igen.", + "explanationPublic": "En offentlig hemlighet kommer alltid att skickas till klienten och är tillgänglig över API. Det bör inte innehålla några konfidentiella värden som användarnamn, lösenord, tokens, certifikat och liknande!" + }, + "secrets": { + "description": "För att uppdatera en hemlighet, ange ett värde och klicka på knappen Spara. För att ta bort en hemlighet, använd knappen rensa.", + "warning": "Dina autentiseringsuppgifter fungerar som åtkomst till dina integrationer och du bör aldrig dela dem med någon annan. Homarr-teamet kommer aldrig att be om autentiseringsuppgifter. Se till att lagra och hantera dina hemligheter på ett säkert sätt.", + "clear": "Rensa hemlighet", + "save": "Spara hemlighet", + "update": "Uppdatera hemlighet" + } + }, + "validation": { + "popover": "Ditt formulär innehåller ogiltiga data. Därför kan det inte sparas. Vänligen lös alla problem och klicka på denna knapp igen för att spara dina ändringar" + } +} diff --git a/public/locales/sv/layout/modals/change-position.json b/public/locales/sv/layout/modals/change-position.json new file mode 100644 index 000000000..5d1714b75 --- /dev/null +++ b/public/locales/sv/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "X axel position", + "width": "Bredd", + "height": "Höjd", + "yPosition": "Y axel position", + "zeroOrHigher": "0 eller högre", + "betweenXandY": "Mellan {{min}} och {{max}}" +} \ No newline at end of file diff --git a/public/locales/sv/layout/screen-sizes.json b/public/locales/sv/layout/screen-sizes.json new file mode 100644 index 000000000..3825e4341 --- /dev/null +++ b/public/locales/sv/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "liten", + "medium": "mellan", + "large": "stor" + } +} diff --git a/public/locales/sv/layout/tools.json b/public/locales/sv/layout/tools.json new file mode 100644 index 000000000..e2e2f0b6c --- /dev/null +++ b/public/locales/sv/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "Du har för närvarande inga verktyg" + }, + "iconPicker": { + "textInputPlaceholder": "Sök efter ikoner...", + "searchLimitationTitle": "Sökningen är begränsad till {{max}} ikoner", + "searchLimitationMessage": "För att det ska gå snabbt och smidigt är sökningen begränsad till {{max}} ikoner. Använd sökrutan för att hitta fler ikoner" + } +} \ No newline at end of file diff --git a/public/locales/sv/modules/calendar.json b/public/locales/sv/modules/calendar.json index eadf477a3..cea0dfff4 100644 --- a/public/locales/sv/modules/calendar.json +++ b/public/locales/sv/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Kalender", - "description": "En kalendermodul för att visa kommande releaser. Den interagerar med Sonarr- och Radarr-API:erna.", + "description": "Visar en kalender med kommande utgåvor, från integrationer som stöds.", "settings": { + "title": "Inställningar för kalenderwidget", "sundayStart": { "label": "Börja veckan på söndag" + }, + "radarrReleaseType": { + "label": "Radarr releasetyp" } } } -} \ No newline at end of file +} diff --git a/public/locales/sv/modules/common.json b/public/locales/sv/modules/common.json index 99e8ff249..85ebdf33c 100644 --- a/public/locales/sv/modules/common.json +++ b/public/locales/sv/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Inställningar" + }, + "errors": { + "unmappedOptions": { + "text": "En oanvänd parameter i konfigurationen har upptäckts
{{key}}. Homarr kan inte tolka och använda denna parameter. För att undvika oväntat beteende bör du säkerhetskopiera din konfiguration och korrigera den." + } } -} \ No newline at end of file +} diff --git a/public/locales/sv/modules/dashdot.json b/public/locales/sv/modules/dashdot.json index 008745445..2ae7fa75a 100644 --- a/public/locales/sv/modules/dashdot.json +++ b/public/locales/sv/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "En modul för att visa graferna från din Dash. instans.", + "description": "Visar graferna för en extern Dash.-instans i Homarr.", "settings": { + "title": "Inställningar för Dash. widget", "cpuMultiView": { "label": "Flerkärnig CPU vy" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/sv/modules/date.json b/public/locales/sv/modules/date.json index b99b6e859..1cf22b595 100644 --- a/public/locales/sv/modules/date.json +++ b/public/locales/sv/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Datum", - "description": "Visa aktuell tid och datum på ett kort", + "name": "Datum och tid", + "description": "Visar aktuellt datum och tid.", "settings": { + "title": "Inställningar för datum och tid widget", "display24HourFormat": { "label": "Visa heltid (24-timmars)" } } } -} \ No newline at end of file +} diff --git a/public/locales/sv/modules/dlspeed.json b/public/locales/sv/modules/dlspeed.json index d07d9d509..3ef35a452 100644 --- a/public/locales/sv/modules/dlspeed.json +++ b/public/locales/sv/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Nedladdningshastighet ", - "description": "Visa den aktuella nedladdningshastigheten för tjänster som stöds" + "description": "Visar nedladdnings- och uppladdningshastigheten för integrationer som stöds." }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/sv/modules/docker.json b/public/locales/sv/modules/docker.json index 1cd48d13f..2e4b4dda5 100644 --- a/public/locales/sv/modules/docker.json +++ b/public/locales/sv/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Docker", - "description": "Låter dig enkelt hantera dina docker containers" + "description": "Låter dig enkelt se och hantera dina docker containers." }, "search": { "placeholder": "Sök efter container eller imagenamn" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Lägg till tjänst", - "message": "Lägg till tjänst till Homarr" + "title": "Lägg till app", + "message": "Lägg till i Homarr" }, "restart": { "title": "Starta om" @@ -74,10 +74,10 @@ "title": "Ett fel inträffade" }, "oneServiceAtATime": { - "title": "Lägg bara till en tjänst åt gången!" + "title": "Lägg bara till en app eller tjänst åt gången!" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/sv/modules/overseerr.json b/public/locales/sv/modules/overseerr.json index a105b8809..713e380b8 100644 --- a/public/locales/sv/modules/overseerr.json +++ b/public/locales/sv/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Låter dig söka och lägga till media från Overseerr/Jellyseerr" + "description": "Låter dig söka och lägga till media från Overseerr eller Jellyseerr." }, "popup": { "item": { @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/sv/modules/ping.json b/public/locales/sv/modules/ping.json index 871bc0f5b..6db1bb267 100644 --- a/public/locales/sv/modules/ping.json +++ b/public/locales/sv/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "Låter dig kontrollera om tjänsten är uppe eller returnerar en specifik HTTP-statuskod." + "description": "Visar en statusindikator beroende på HTTP-svarskoden för en given URL." }, "states": { "online": "Online {{response}}", "offline": "Offline {{response}}", "loading": "Laddar..." } -} \ No newline at end of file +} diff --git a/public/locales/sv/modules/search.json b/public/locales/sv/modules/search.json index 0eaff0b7d..ae518f605 100644 --- a/public/locales/sv/modules/search.json +++ b/public/locales/sv/modules/search.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Sökfält", - "description": "Sökfältet för att söka på webben, Youtube, Torrents eller Overseerr" + "description": "Ett sökfält där du kan söka i din anpassade sökmotor, YouTube och integreringar som stöds." }, "input": { "placeholder": "Sök på webben..." @@ -10,7 +10,7 @@ "searchEngines": { "search": { "name": "Webb", - "description": "Sök med din sökmotor (definierad i inställningar)" + "description": "Sök..." }, "youtube": { "name": "YouTube", @@ -22,9 +22,9 @@ }, "overseerr": { "name": "Overseerr", - "description": "Sök efter filmer och TV-program med Overseerr (modulen måste vara aktiverad)" + "description": "Sök efter filmer och TV-program i Overseerr" } }, "tip": "Du kan välja sökfältet med kortkommandot ", "switchedSearchEngine": "Växlade till att söka med {{searchEngine}}" -} \ No newline at end of file +} diff --git a/public/locales/sv/modules/torrents-status.json b/public/locales/sv/modules/torrents-status.json index 619537ec0..b710e2c6d 100644 --- a/public/locales/sv/modules/torrents-status.json +++ b/public/locales/sv/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { "name": "Torrent", - "description": "Visa den aktuella nedladdningshastigheten för tjänster som stöds", + "description": "Visar en lista med torrents från Torrent-klienter som stöds.", "settings": { - "hideComplete": { - "label": "Dölj slutförda torrents" + "title": "Inställningar för Torrent widget", + "refreshInterval": { + "label": "Uppdateringsfrekvens (sekunder)" + }, + "displayCompletedTorrents": { + "label": "Visa slutförda torrents" + }, + "displayStaleTorrents": { + "label": "Visa inaktuella torrents" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "Inga nedladdningsklienter som stöds hittades!", - "text": "Lägg till en nedladdningstjänst för att visa dina aktuella nedladdningar" + "title": "Inga Torrent-klienter som stöds hittades!", + "text": "Lägg till en Torrent-klient som stöds för att visa dina aktuella nedladdningar" + }, + "generic": { + "title": "Ett oväntat fel uppstod", + "text": "Homarr kunde inte kommunicera med dina torrent-klienter. Vänligen kontrollera din konfiguration" } + }, + "loading": { + "title": "Laddar..." } } -} \ No newline at end of file +} diff --git a/public/locales/sv/modules/usenet.json b/public/locales/sv/modules/usenet.json index 8ee92da1c..1e4bce64d 100644 --- a/public/locales/sv/modules/usenet.json +++ b/public/locales/sv/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { "name": "Usenet", - "description": "Låter dig se din usenet (Sabnzbd eller NZBGet) kö och historik, pausa och återuppta nedladdningar" + "description": "Låter dig visa och hantera din Usenet instans." }, "card": { "errors": { "noDownloadClients": { "title": "Inga nedladdningsklienter som stöds hittades!", - "text": "Lägg till en nedladdningstjänst för att visa dina aktuella nedladdningar" + "text": "Lägg till en nedladdningsklient för Usenet som stöds för att se dina aktuella nedladdningar" } } }, diff --git a/public/locales/sv/modules/weather.json b/public/locales/sv/modules/weather.json index 0abf49694..810253dd8 100644 --- a/public/locales/sv/modules/weather.json +++ b/public/locales/sv/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Väder", - "description": "Se det aktuella vädret på din plats", + "description": "Visar aktuell väderinformation för en bestämd plats.", "settings": { + "title": "Inställningar för väderwidget", "displayInFahrenheit": { "label": "Visa i Fahrenheit" }, @@ -29,4 +30,4 @@ "unknown": "Okänd" } } -} \ No newline at end of file +} diff --git a/public/locales/sv/settings/common.json b/public/locales/sv/settings/common.json index e1aeac17f..747032b8a 100644 --- a/public/locales/sv/settings/common.json +++ b/public/locales/sv/settings/common.json @@ -11,5 +11,19 @@ "credits": { "madeWithLove": "Gjort med ❤️ av @" }, - "grow": "Växande rutnät (ta allt utrymme)" -} \ No newline at end of file + "grow": "Växande rutnät (ta allt utrymme)", + "layout": { + "title": "Instrumentpanelslayout", + "main": "Allmänt", + "sidebar": "Sidopanel", + "cannotturnoff": "Kan inte inaktiveras", + "dashboardlayout": "Instrumentpanelslayout", + "enablersidebar": "Aktivera höger sidopanel", + "enablelsidebar": "Aktivera vänster sidopanel", + "enablesearchbar": "Aktivera sökfält", + "enabledocker": "Aktivera dockerintegration", + "enableping": "Aktivera pings", + "enablelsidebardesc": "Valfritt. Kan endast användas för appar och integrationer", + "enablersidebardesc": "Valfritt. Kan endast användas för appar och integrationer" + } +} diff --git a/public/locales/sv/settings/customization/page-appearance.json b/public/locales/sv/settings/customization/page-appearance.json index 04513596d..75c9ee3bf 100644 --- a/public/locales/sv/settings/customization/page-appearance.json +++ b/public/locales/sv/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Sidotitel", - "placeholder": "Homarr 🦞" + "label": "Sidotitel" + }, + "metaTitle": { + "label": "Metatitel" }, "logo": { "label": "Logotyp" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "Anpassad CSS", - "placeholder": "Anpassad CSS kommer att utföras sist" + "placeholder": "Anpassad CSS tillämpas sist" }, "buttons": { "submit": "Skicka" diff --git a/public/locales/sv/settings/general/config-changer.json b/public/locales/sv/settings/general/config-changer.json index d0671304b..91b543cb6 100644 --- a/public/locales/sv/settings/general/config-changer.json +++ b/public/locales/sv/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Konfigurationsladdare" + "label": "Konfigurationsväxlare", + "description": "{{configCount}} konfigurationer finns tillgängliga", + "loadingNew": "Laddar din konfiguration...", + "pleaseWait": "Vänta tills din nya konfiguration är laddad!" }, "modal": { - "title": "Välj namn på din nya konfigurering", - "form": { - "configName": { - "label": "Konfigurationsnamn", - "placeholder": "Ditt nya konfigurationsnamn" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "Konfigurationens namn används redan" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "Bekräfta" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "Konfigurationen sparad", - "message": "Konfigurationen sparad som {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "Radering av konfigurationen misslyckades", "message": "Radering av konfigurationen misslyckades" + }, + "deleteFailedDefaultConfig": { + "title": "Standardkonfigurationen kan inte tas bort", + "message": "Konfigurationen togs inte bort från filsystemet" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "Dra filer hit för att ladda upp en konfiguration. Endast stöd för JSON." + "title": "Uppladdning av konfiguration", + "text": "Dra filer hit för att ladda upp en konfiguration. Stöd för endast JSON-filer." }, "reject": { - "text": "Det här filformatet stöds inte. Ladda endast upp JSON." + "title": "Dra och släpp uppladdningen avvisades", + "text": "Det här filformatet stöds inte. Ladda bara upp JSON-filer." } } -} \ No newline at end of file +} diff --git a/public/locales/sv/settings/general/module-enabler.json b/public/locales/sv/settings/general/module-enabler.json index d74a481fc..9e26dfeeb 100644 --- a/public/locales/sv/settings/general/module-enabler.json +++ b/public/locales/sv/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Modulaktiverare" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/sv/settings/general/search-engine.json b/public/locales/sv/settings/general/search-engine.json index d602e80f8..8e72064cc 100644 --- a/public/locales/sv/settings/general/search-engine.json +++ b/public/locales/sv/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Sökmotor", + "configurationName": "Sökmotorns konfiguration", "tips": { - "generalTip": "Använd prefixen !yt och !t framför din sökning för att söka på YouTube eller efter en Torrent.", + "generalTip": "Det finns flera prefix som du kan använda! Om du lägger till dessa före din fråga filtrerar du resultaten. !s (Webb), !t (Torrents), !y (YouTube) och !m (Media).", "placeholderTip": "%s kan användas som platshållare för förfrågningen." }, "customEngine": { + "title": "Anpassad sökmotor", "label": "URL för förfrågan", "placeholder": "Anpassad sök-URL" }, "searchNewTab": { "label": "Öppna sökresultaten i en ny flik" + }, + "searchEnabled": { + "label": "Sökning aktiverad" } -} \ No newline at end of file +} diff --git a/public/locales/sv/settings/general/widget-positions.json b/public/locales/sv/settings/general/widget-positions.json index 02ed34b24..829c45b2c 100644 --- a/public/locales/sv/settings/general/widget-positions.json +++ b/public/locales/sv/settings/general/widget-positions.json @@ -1,3 +1,3 @@ { "label": "Placera widgetar till vänster" -} \ No newline at end of file +} diff --git a/public/locales/uk/authentication/login.json b/public/locales/uk/authentication/login.json index cfc12d549..aa074a55f 100644 --- a/public/locales/uk/authentication/login.json +++ b/public/locales/uk/authentication/login.json @@ -1,6 +1,6 @@ { "title": "З поверненням!", - "text": "Будь ласка, введіть пароль", + "text": "", "form": { "fields": { "password": { @@ -18,10 +18,10 @@ "message": "Ваш пароль перевіряється..." }, "correct": { - "title": "Пароль вірний, перенаправлення..." + "title": "" }, "wrong": { - "title": "Невірний пароль. Будь ласка, спробуйте ще раз." + "title": "" } } } diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 8b53a5c55..9cc4ef05c 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Зберегти" + "save": "Зберегти", + "about": "Про програму", + "cancel": "Скасувати", + "close": "Закрити", + "delete": "Видалити", + "ok": "OK", + "edit": "Редагувати", + "version": "Версія", + "changePosition": "Змінити положення", + "remove": "Видалити", + "removeConfirm": "Ви впевнені, що хочете видалити {{item}} ?", + "sections": { + "settings": "Налаштування", + "dangerZone": "Небезпечна зона" + }, + "secrets": { + "apiKey": "Ключ API", + "username": "Логін", + "password": "Пароль" }, "tip": "Підказка: ", "time": { @@ -8,4 +25,4 @@ "minutes": "хвилин", "hours": "годин" } -} +} \ No newline at end of file diff --git a/public/locales/uk/layout/add-service-app-shelf.json b/public/locales/uk/layout/add-service-app-shelf.json index 46a9216a9..8d9358ebf 100644 --- a/public/locales/uk/layout/add-service-app-shelf.json +++ b/public/locales/uk/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Додаткові параметри", "form": { - "httpStatusCodes": { - "label": "Коди статусу HTTP", - "placeholder": "Виберіть правильні коди статусу", - "clearButtonLabel": "Очистити вибране", - "nothingFound": "Нічого не знайдено" - }, "openServiceInNewTab": { "label": "Відкрити сервіс у новій вкладці" }, diff --git a/public/locales/uk/layout/element-selector/selector.json b/public/locales/uk/layout/element-selector/selector.json new file mode 100644 index 000000000..c47c38ba7 --- /dev/null +++ b/public/locales/uk/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "Додати плитку", + "text": "" + }, + "widgetDescription": "", + "goBack": "Повернутися на попередню сторінку", + "actionIcon": { + "tooltip": "Додати плитку" + } +} diff --git a/public/locales/uk/layout/header/actions/toggle-edit-mode.json b/public/locales/uk/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..22ac2c060 --- /dev/null +++ b/public/locales/uk/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "", + "button": { + "disabled": "Ввійти в режим редагування", + "enabled": "Зберегти та вийти" + }, + "popover": { + "title": "", + "text": "" + }, + "screenSizes": { + "small": "малий", + "medium": "середній", + "large": "великий" + } +} diff --git a/public/locales/uk/layout/mobile/drawer.json b/public/locales/uk/layout/mobile/drawer.json new file mode 100644 index 000000000..f7870b3d8 --- /dev/null +++ b/public/locales/uk/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} бічна панель" +} diff --git a/public/locales/uk/layout/modals/about.json b/public/locales/uk/layout/modals/about.json new file mode 100644 index 000000000..25ef14aec --- /dev/null +++ b/public/locales/uk/layout/modals/about.json @@ -0,0 +1,6 @@ +{ + "i18n": "Завантажено інтернаціональні переклади", + "locales": "Налаштовано інтернаціональні локалі", + "contact": "Виникли проблеми або питання? Зв'яжіться з нами!", + "addToDashboard": "Додати до панелі інструментів" +} diff --git a/public/locales/uk/layout/modals/add-app.json b/public/locales/uk/layout/modals/add-app.json new file mode 100644 index 000000000..637cc7a40 --- /dev/null +++ b/public/locales/uk/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "Загальне", + "behaviour": "Поведінка", + "network": "Мережа", + "appearance": "Вигляд", + "integration": "Інтеграція" + }, + "general": { + "appname": { + "label": "Назва застосунку", + "description": "" + }, + "internalAddress": { + "label": "Внутрішня адреса", + "description": "" + }, + "externalAddress": { + "label": "Зовнішня адреса", + "description": "" + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "Відкрити в новій вкладці", + "description": "" + } + }, + "network": { + "statusChecker": { + "label": "Перевірка стану", + "description": "" + }, + "statusCodes": { + "label": "Код Статусу HTTP", + "description": "" + } + }, + "appearance": { + "icon": { + "label": "Іконка програми", + "description": "" + } + }, + "integration": { + "type": { + "label": "Налаштування інтеграції", + "description": "", + "placeholder": "Виберіть інтеграцію", + "defined": "Визначено", + "undefined": "Невизначено", + "public": "Публічний", + "private": "Приватний", + "explanationPrivate": "", + "explanationPublic": "" + }, + "secrets": { + "description": "Щоб оновити секрет, введіть значення і натисніть кнопку Зберегти. Щоб видалити секрет, використовуйте кнопку \"Очистити\".", + "warning": "", + "clear": "Очистити секрет", + "save": "Зберегти секрет", + "update": "Оновити секрет" + } + }, + "validation": { + "popover": "Ваша форма містить неприпустимі дані тож не може бути збережена. Будь ласка, розв'яжіть усі проблеми та натисніть цю кнопку знову, щоб зберегти свої зміни" + } +} diff --git a/public/locales/uk/layout/modals/change-position.json b/public/locales/uk/layout/modals/change-position.json new file mode 100644 index 000000000..4e9079512 --- /dev/null +++ b/public/locales/uk/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "Положення осі X", + "width": "Ширина", + "height": "Висота", + "yPosition": "Положення осі Y", + "zeroOrHigher": "0 або вище", + "betweenXandY": "Між {{min}} та {{max}}" +} \ No newline at end of file diff --git a/public/locales/uk/layout/screen-sizes.json b/public/locales/uk/layout/screen-sizes.json new file mode 100644 index 000000000..cea849402 --- /dev/null +++ b/public/locales/uk/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "малий", + "medium": "середній", + "large": "великий" + } +} diff --git a/public/locales/uk/layout/tools.json b/public/locales/uk/layout/tools.json new file mode 100644 index 000000000..8ab3b6975 --- /dev/null +++ b/public/locales/uk/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "Наразі у вас немає жодного інструменту" + }, + "iconPicker": { + "textInputPlaceholder": "Пошук іконки...", + "searchLimitationTitle": "Пошук обмежений до {{max}} значків", + "searchLimitationMessage": "Для того, щоб зробити пошук швидким і швидким, пошук обмежений іконками {{max}}. Використовуйте поле пошуку, щоб знайти більше іконок" + } +} \ No newline at end of file diff --git a/public/locales/uk/modules/calendar.json b/public/locales/uk/modules/calendar.json index 2092b9683..4d28455e9 100644 --- a/public/locales/uk/modules/calendar.json +++ b/public/locales/uk/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Календар", - "description": "Модуль календаря для відстежування майбутніх релізів. Він взаємодіє з API Sonarr і Radarr.", + "description": "", "settings": { + "title": "", "sundayStart": { "label": "Почати тиждень у Неділю" + }, + "radarrReleaseType": { + "label": "Radarr - тип релізів" } } } -} \ No newline at end of file +} diff --git a/public/locales/uk/modules/common.json b/public/locales/uk/modules/common.json index f48fb9d7c..1963ca573 100644 --- a/public/locales/uk/modules/common.json +++ b/public/locales/uk/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Налаштування" + }, + "errors": { + "unmappedOptions": { + "text": "" + } } -} \ No newline at end of file +} diff --git a/public/locales/uk/modules/dashdot.json b/public/locales/uk/modules/dashdot.json index fa309ad35..878c47242 100644 --- a/public/locales/uk/modules/dashdot.json +++ b/public/locales/uk/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "Модуль для зображення графіків від вашого Dash. сервісу.", + "description": "", "settings": { + "title": "Налаштування віджета Dash.", "cpuMultiView": { "label": "Процесор по ядрах" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/uk/modules/date.json b/public/locales/uk/modules/date.json index 37a6f00d8..b317d7d6c 100644 --- a/public/locales/uk/modules/date.json +++ b/public/locales/uk/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Дата", - "description": "Показати поточний час і дату в картці", + "name": "", + "description": "", "settings": { + "title": "", "display24HourFormat": { "label": "Показувати повний час (24 години)" } } } -} \ No newline at end of file +} diff --git a/public/locales/uk/modules/dlspeed.json b/public/locales/uk/modules/dlspeed.json index 1d898c614..5deac07e6 100644 --- a/public/locales/uk/modules/dlspeed.json +++ b/public/locales/uk/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Швидкість завантаження", - "description": "Показувати поточну швидкість завантаження для сервісів, які підтримуються" + "description": "" }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/uk/modules/docker.json b/public/locales/uk/modules/docker.json index f899c7689..20b3d3ce0 100644 --- a/public/locales/uk/modules/docker.json +++ b/public/locales/uk/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Docker", - "description": "Дозволяє вам легко керувати контейнерами докер" + "description": "" }, "search": { "placeholder": "Пошук по назві контейнера або образу" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Додати сервіс", - "message": "Додати сервіс до Homarr" + "title": "", + "message": "" }, "restart": { "title": "Перезапустити" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "Помилка інтеграції з Docker", - "message": "Ви забули під'єднати docker сокет?" + "message": "" }, "unknownError": { "title": "Виникла помилка" }, "oneServiceAtATime": { - "title": "Будь ласка, лише один сервіс за один раз!" + "title": "" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/uk/modules/overseerr.json b/public/locales/uk/modules/overseerr.json index 9cda16bed..8162c79ed 100644 --- a/public/locales/uk/modules/overseerr.json +++ b/public/locales/uk/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Дозволяє вам шукати та додавати медіа з Overseerr/Jellyseerr" + "description": "" }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "Позначте сезони, які ви хочете завантажити", + "caption": "", "table": { "header": { "season": "Сезон", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/uk/modules/ping.json b/public/locales/uk/modules/ping.json index 878ff1c3c..90a7960d3 100644 --- a/public/locales/uk/modules/ping.json +++ b/public/locales/uk/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Пінг", - "description": "Дозволяє перевірити, чи працює сервіс або повертає певний код статусу HTTP." + "description": "" }, "states": { "online": "Онлайн {{response}}", "offline": "Оффлайн {{response}}", "loading": "Завантаження..." } -} \ No newline at end of file +} diff --git a/public/locales/uk/modules/search.json b/public/locales/uk/modules/search.json index 70bff8526..bdec390c3 100644 --- a/public/locales/uk/modules/search.json +++ b/public/locales/uk/modules/search.json @@ -1,30 +1,30 @@ { "descriptor": { "name": "Панель пошуку", - "description": "Панель для пошуку в Інтернеті, Youtube, Torrents або Overseerr" + "description": "" }, "input": { "placeholder": "Пошук в Інтернеті..." }, - "switched-to": "", + "switched-to": "Змінити на", "searchEngines": { "search": { - "name": "", + "name": "Веб", "description": "" }, "youtube": { - "name": "", - "description": "" + "name": "YouTube", + "description": "Пошук на YouTube" }, "torrents": { - "name": "", - "description": "" + "name": "Torrent", + "description": "Пошук за торентами" }, "overseerr": { "name": "Overseerr", "description": "" } }, - "tip": "", - "switchedSearchEngine": "" -} \ No newline at end of file + "tip": "Викликати рядок пошуку можна за допомогою комбінації клавіш ", + "switchedSearchEngine": "Перейшли на пошук за допомогою {{searchEngine}}" +} diff --git a/public/locales/uk/modules/torrents-status.json b/public/locales/uk/modules/torrents-status.json index 074976700..7a12c569c 100644 --- a/public/locales/uk/modules/torrents-status.json +++ b/public/locales/uk/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { "name": "Торент", - "description": "Показувати поточну швидкість завантаження для сервісів, які підтримуються", + "description": "", "settings": { - "hideComplete": { - "label": "Приховувати завершені" + "title": "", + "refreshInterval": { + "label": "Інтервал оновлення (у секундах)" + }, + "displayCompletedTorrents": { + "label": "Відображати завершені торренти" + }, + "displayStaleTorrents": { + "label": "Відображати застарілі торренти" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "Не знайдено клієнтів для завантаження що підтримуються!", - "text": "Додайте сервіс завантаження, щоб переглянути поточні завантаження" + "title": "", + "text": "" + }, + "generic": { + "title": "Сталась непередбачена помилка", + "text": "" } + }, + "loading": { + "title": "Завантаження..." } } -} \ No newline at end of file +} diff --git a/public/locales/uk/modules/usenet.json b/public/locales/uk/modules/usenet.json index 055b0ad9e..baf14e5d5 100644 --- a/public/locales/uk/modules/usenet.json +++ b/public/locales/uk/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { "name": "Usenet", - "description": "Дозволяє вам бачити вашу чергу та історію в usenet (Sabnzbd або NZBGet), керувати завантаженнями" + "description": "" }, "card": { "errors": { "noDownloadClients": { "title": "Не знайдено клієнтів для завантаження що підтримуються!", - "text": "Додайте сервіс завантаження, щоб переглянути поточні завантаження" + "text": "" } } }, diff --git a/public/locales/uk/modules/weather.json b/public/locales/uk/modules/weather.json index c267f65e0..31cf29449 100644 --- a/public/locales/uk/modules/weather.json +++ b/public/locales/uk/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Погода", - "description": "Шукати поточну погоду у вашому місцеперебуванні", + "description": "", "settings": { + "title": "", "displayInFahrenheit": { "label": "Використовувати Фаренгейт" }, @@ -29,4 +30,4 @@ "unknown": "Невідомо" } } -} \ No newline at end of file +} diff --git a/public/locales/uk/settings/common.json b/public/locales/uk/settings/common.json index cc6add962..440b73f6a 100644 --- a/public/locales/uk/settings/common.json +++ b/public/locales/uk/settings/common.json @@ -6,10 +6,24 @@ "customizations": "Персоналізація" }, "tips": { - "configTip": "Завантажте файл конфігурації, перетягуючи його на сторінку!" + "configTip": "" }, "credits": { "madeWithLove": "Зроблено з ❤️ by @" }, - "grow": "" -} \ No newline at end of file + "grow": "Виростити сітку (зайняти весь простір)", + "layout": { + "title": "Схема панелі інструментів", + "main": "Основне", + "sidebar": "Бокова панель", + "cannotturnoff": "Неможливо вимкнути", + "dashboardlayout": "Схема панелі інструментів", + "enablersidebar": "Увімкнути праву бічну панель", + "enablelsidebar": "Увімкнути ліву бічну панель", + "enablesearchbar": "Увімкнути панель пошуку", + "enabledocker": "Увімкнути інтеграцію з Docker", + "enableping": "Увімкнути пінг", + "enablelsidebardesc": "Необов'язково. Може використовуватися тільки для додатків та інтеграцій", + "enablersidebardesc": "Необов'язково. Може використовуватися тільки для додатків та інтеграцій" + } +} diff --git a/public/locales/uk/settings/customization/page-appearance.json b/public/locales/uk/settings/customization/page-appearance.json index 85c0974f5..c089eb233 100644 --- a/public/locales/uk/settings/customization/page-appearance.json +++ b/public/locales/uk/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Заголовок сторінки", - "placeholder": "Homarr 🦞" + "label": "Заголовок сторінки" + }, + "metaTitle": { + "label": "Мета-заголовок" }, "logo": { "label": "Логотип" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "Власний CSS", - "placeholder": "Власний CSS буде оброблятися в останню чергу" + "placeholder": "" }, "buttons": { "submit": "Надіслати" diff --git a/public/locales/uk/settings/general/config-changer.json b/public/locales/uk/settings/general/config-changer.json index 0aa0248f1..d9d9294b9 100644 --- a/public/locales/uk/settings/general/config-changer.json +++ b/public/locales/uk/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Завантаження налаштувань" + "label": "", + "description": "", + "loadingNew": "Завантаження конфігурації...", + "pleaseWait": "" }, "modal": { - "title": "Виберіть ім'я для нової конфігурації", - "form": { - "configName": { - "label": "Ім'я конфігурації", - "placeholder": "Нове ім'я вашої конфігурації" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "Підтвердити" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "Конфігурацію збережено", - "message": "Конфігурація збережена як {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "Помилка видалення конфігурації", "message": "Помилка видалення конфігурації" + }, + "deleteFailedDefaultConfig": { + "title": "", + "message": "" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "Перетягніть файли сюди для завантаження конфігурації. Підтримка лише для JSON." + "title": "Завантаження конфігурації", + "text": "" }, "reject": { - "text": "Цей формат файлу не підтримується. Будь ласка, лише завантажте JSON." + "title": "Відхилено завантаження за допомогою перетягування", + "text": "" } } -} \ No newline at end of file +} diff --git a/public/locales/uk/settings/general/module-enabler.json b/public/locales/uk/settings/general/module-enabler.json index a6415343f..9e26dfeeb 100644 --- a/public/locales/uk/settings/general/module-enabler.json +++ b/public/locales/uk/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Використовувати модулі" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/uk/settings/general/search-engine.json b/public/locales/uk/settings/general/search-engine.json index f4b27efd6..bdd2a6cbc 100644 --- a/public/locales/uk/settings/general/search-engine.json +++ b/public/locales/uk/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Пошукова система", + "configurationName": "Налаштування пошукової системи", "tips": { - "generalTip": "Використовуйте префікси !yt і !t перед вашим запитом на YouTube або Торент відповідно.", + "generalTip": "", "placeholderTip": "%s можна використовувати як заповнювач для запиту." }, "customEngine": { + "title": "Оберіть пошукову систему", "label": "URL-адреса запиту", "placeholder": "Власна URL-адреса запиту" }, "searchNewTab": { "label": "Відкрити результати пошуку у новій вкладці" + }, + "searchEnabled": { + "label": "Пошук увімкнено" } -} \ No newline at end of file +} diff --git a/public/locales/uk/settings/general/widget-positions.json b/public/locales/uk/settings/general/widget-positions.json index 71c4f67e7..0967ef424 100644 --- a/public/locales/uk/settings/general/widget-positions.json +++ b/public/locales/uk/settings/general/widget-positions.json @@ -1,3 +1 @@ -{ - "label": "Показувати віджети зліва" -} \ No newline at end of file +{} diff --git a/public/locales/vi/authentication/login.json b/public/locales/vi/authentication/login.json index 6db3fcb6c..4790ba53e 100644 --- a/public/locales/vi/authentication/login.json +++ b/public/locales/vi/authentication/login.json @@ -1,6 +1,6 @@ { "title": "Chào mừng quay trở lại!", - "text": "Vui lòng nhập mật khẩu", + "text": "", "form": { "fields": { "password": { @@ -18,10 +18,10 @@ "message": "Mật khẩu của bạn đang được kiểm tra..." }, "correct": { - "title": "Mật khẩu chính xác, đang điều hướng..." + "title": "" }, "wrong": { - "title": "Sai mật khẩu, xin hãy thử lại." + "title": "" } } } diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 06605cea9..53716f998 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "Lưu" + "save": "", + "about": "", + "cancel": "Hủy", + "close": "", + "delete": "Xóa", + "ok": "", + "edit": "Sửa", + "version": "", + "changePosition": "", + "remove": "Xóa", + "removeConfirm": "", + "sections": { + "settings": "Cài đặt", + "dangerZone": "Khu vực nguy hiểm" + }, + "secrets": { + "apiKey": "", + "username": "Tên người dùng", + "password": "Mật khẩu" }, "tip": "Mẹo: ", "time": { @@ -8,4 +25,4 @@ "minutes": "phút", "hours": "giờ" } -} +} \ No newline at end of file diff --git a/public/locales/vi/layout/add-service-app-shelf.json b/public/locales/vi/layout/add-service-app-shelf.json index 9b433e8a9..c5ab25b42 100644 --- a/public/locales/vi/layout/add-service-app-shelf.json +++ b/public/locales/vi/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "Tùy chọn nâng cao", "form": { - "httpStatusCodes": { - "label": "Mã trạng thái HTTP", - "placeholder": "Chọn một mã trạng thái hợp lệ", - "clearButtonLabel": "Xóa lựa chọn", - "nothingFound": "Không tìm thấy" - }, "openServiceInNewTab": { "label": "Mở trong tab mới" }, diff --git a/public/locales/vi/layout/element-selector/selector.json b/public/locales/vi/layout/element-selector/selector.json new file mode 100644 index 000000000..c1409b3d4 --- /dev/null +++ b/public/locales/vi/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "Thêm ô mới", + "text": "" + }, + "widgetDescription": "", + "goBack": "Quay lại bước trước", + "actionIcon": { + "tooltip": "Thêm ô" + } +} diff --git a/public/locales/vi/layout/header/actions/toggle-edit-mode.json b/public/locales/vi/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..f400cb962 --- /dev/null +++ b/public/locales/vi/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "", + "button": { + "disabled": "Vào chế độ chỉnh sửa", + "enabled": "Lưu và thoát" + }, + "popover": { + "title": "", + "text": "" + }, + "screenSizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/vi/layout/mobile/drawer.json b/public/locales/vi/layout/mobile/drawer.json new file mode 100644 index 000000000..2171e09ac --- /dev/null +++ b/public/locales/vi/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} thanh bên" +} diff --git a/public/locales/vi/layout/modals/about.json b/public/locales/vi/layout/modals/about.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/public/locales/vi/layout/modals/about.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/vi/layout/modals/add-app.json b/public/locales/vi/layout/modals/add-app.json new file mode 100644 index 000000000..1f187d74a --- /dev/null +++ b/public/locales/vi/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "", + "behaviour": "", + "network": "Mạng", + "appearance": "", + "integration": "" + }, + "general": { + "appname": { + "label": "", + "description": "" + }, + "internalAddress": { + "label": "", + "description": "" + }, + "externalAddress": { + "label": "", + "description": "" + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "", + "description": "" + } + }, + "network": { + "statusChecker": { + "label": "", + "description": "" + }, + "statusCodes": { + "label": "", + "description": "" + } + }, + "appearance": { + "icon": { + "label": "", + "description": "" + } + }, + "integration": { + "type": { + "label": "", + "description": "", + "placeholder": "", + "defined": "", + "undefined": "", + "public": "", + "private": "", + "explanationPrivate": "", + "explanationPublic": "" + }, + "secrets": { + "description": "", + "warning": "", + "clear": "", + "save": "", + "update": "" + } + }, + "validation": { + "popover": "" + } +} diff --git a/public/locales/vi/layout/modals/change-position.json b/public/locales/vi/layout/modals/change-position.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/public/locales/vi/layout/modals/change-position.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/locales/vi/layout/screen-sizes.json b/public/locales/vi/layout/screen-sizes.json new file mode 100644 index 000000000..24e49a689 --- /dev/null +++ b/public/locales/vi/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/vi/layout/tools.json b/public/locales/vi/layout/tools.json new file mode 100644 index 000000000..ffbe07e69 --- /dev/null +++ b/public/locales/vi/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "" + }, + "iconPicker": { + "textInputPlaceholder": "", + "searchLimitationTitle": "", + "searchLimitationMessage": "" + } +} \ No newline at end of file diff --git a/public/locales/vi/modules/calendar.json b/public/locales/vi/modules/calendar.json index d1faa1671..0cb76aead 100644 --- a/public/locales/vi/modules/calendar.json +++ b/public/locales/vi/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "Lịch", - "description": "Một mô-đun lịch để hiển thị các lượt phát hành sắp tới. Nó tương tác với API của Sonarr và Radarr.", + "description": "", "settings": { + "title": "", "sundayStart": { "label": "Đặt đầu tuần là Chủ Nhật" + }, + "radarrReleaseType": { + "label": "Loại phát hành Radarr" } } } -} \ No newline at end of file +} diff --git a/public/locales/vi/modules/common.json b/public/locales/vi/modules/common.json index d25fd6088..014084f9d 100644 --- a/public/locales/vi/modules/common.json +++ b/public/locales/vi/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "Cài đặt" + }, + "errors": { + "unmappedOptions": { + "text": "" + } } -} \ No newline at end of file +} diff --git a/public/locales/vi/modules/dashdot.json b/public/locales/vi/modules/dashdot.json index ca91e7fdf..138a7df1b 100644 --- a/public/locales/vi/modules/dashdot.json +++ b/public/locales/vi/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "Một mô-đun để hiển thị biểu đồ cho quá trình Dash. của bạn.", + "description": "", "settings": { + "title": "Cài đặt cho tiện ích Dash.", "cpuMultiView": { "label": "Chế độ hiện đa nhân CPU" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/vi/modules/date.json b/public/locales/vi/modules/date.json index d7ee3ee79..1c8ef3c53 100644 --- a/public/locales/vi/modules/date.json +++ b/public/locales/vi/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "Ngày giờ", - "description": "Hiển thị ngày và giờ trong một thẻ", + "name": "", + "description": "", "settings": { + "title": "", "display24HourFormat": { "label": "Dùng thời gian 24 giờ" } } } -} \ No newline at end of file +} diff --git a/public/locales/vi/modules/dlspeed.json b/public/locales/vi/modules/dlspeed.json index 1805ef315..53a646394 100644 --- a/public/locales/vi/modules/dlspeed.json +++ b/public/locales/vi/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Tốc độ tải", - "description": "Hiển thị tốc độ tải xuống của các dịch vụ được hỗ trợ" + "description": "" }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/vi/modules/docker.json b/public/locales/vi/modules/docker.json index cbd35728f..59b46b1fa 100644 --- a/public/locales/vi/modules/docker.json +++ b/public/locales/vi/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Docker", - "description": "Cho phép bạn dễ dàng quản lý các khoang chứa docker" + "description": "" }, "search": { "placeholder": "Tìm kiếm bằng tên khoang chứa hoặc tên hình ảnh" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "Thêm dịch vụ", - "message": "Thêm dịch vụ vào Homarr" + "title": "", + "message": "" }, "restart": { "title": "Khởi động lại" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "Tích hợp Docker thất bại", - "message": "Có phải bạn quên gắn ổ cắm docker không?" + "message": "" }, "unknownError": { "title": "Có lỗi xảy ra" }, "oneServiceAtATime": { - "title": "Vui lòng chỉ thêm từng dịch vụ một!" + "title": "" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/vi/modules/overseerr.json b/public/locales/vi/modules/overseerr.json index 4634603d4..797c59496 100644 --- a/public/locales/vi/modules/overseerr.json +++ b/public/locales/vi/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "Cho phép bạn tìm và thêm phương tiện truyền thông từ Overseerr/Jellyseerr" + "description": "" }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "Đánh dấu các mùa bạn muốn tải về", + "caption": "", "table": { "header": { "season": "Mùa", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/vi/modules/ping.json b/public/locales/vi/modules/ping.json index 47071817a..5af9ed697 100644 --- a/public/locales/vi/modules/ping.json +++ b/public/locales/vi/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "Giúp bạn kiểm tra nếu dịch vụ đang hoạt động hoặc trả lại một mã trạng thái HTTP cụ thể." + "description": "" }, "states": { "online": "Trực tuyến {{response}}", "offline": "Ngoại tuyến {{response}}", "loading": "Đang tải..." } -} \ No newline at end of file +} diff --git a/public/locales/vi/modules/search.json b/public/locales/vi/modules/search.json index 4261a4378..7515274db 100644 --- a/public/locales/vi/modules/search.json +++ b/public/locales/vi/modules/search.json @@ -1,30 +1,30 @@ { "descriptor": { "name": "Thanh tìm kiếm", - "description": "Thanh tìm kiếm để tìm trên web, Youtube, torrent hoặc Overseerr" + "description": "" }, "input": { "placeholder": "Tìm kiếm trên web..." }, - "switched-to": "", + "switched-to": "Đổi sang", "searchEngines": { "search": { - "name": "", + "name": "Web", "description": "" }, "youtube": { - "name": "", - "description": "" + "name": "YouTube", + "description": "Tìm kiếm trên YouTube" }, "torrents": { - "name": "", - "description": "" + "name": "Torrent", + "description": "Tìm kiếm torrent" }, "overseerr": { "name": "Overseerr", "description": "" } }, - "tip": "", - "switchedSearchEngine": "" -} \ No newline at end of file + "tip": "Bạn có thể chọn thanh tìm kiếm bằng phím tắt ", + "switchedSearchEngine": "Đã đổi sang tìm kiếm bằng {{searchEngine}}" +} diff --git a/public/locales/vi/modules/torrents-status.json b/public/locales/vi/modules/torrents-status.json index 2da764d24..f6873e629 100644 --- a/public/locales/vi/modules/torrents-status.json +++ b/public/locales/vi/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { - "name": "Torrent", - "description": "Hiển thị tốc độ tải xuống hiện tại của các dịch vụ được hỗ trợ", + "name": "", + "description": "", "settings": { - "hideComplete": { - "label": "Ẩn torrent đã hoàn thành" + "title": "", + "refreshInterval": { + "label": "" + }, + "displayCompletedTorrents": { + "label": "" + }, + "displayStaleTorrents": { + "label": "" } } }, @@ -23,7 +30,7 @@ } }, "lineChart": { - "title": "Tốc độ tải xuống hiện tại", + "title": "Tốc độ tải hiện tại", "download": "Tải xuống: {{download}}", "upload": "Tải lên: {{upload}}", "timeSpan": "{{seconds}} giây trước", @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "Không tìm thấy ứng dụng tải xuống được hỗ trợ nào!", - "text": "Hãy thêm dịch vụ tải xuống để xem các bản tải xuống của bạn" + "title": "", + "text": "" + }, + "generic": { + "title": "", + "text": "" } + }, + "loading": { + "title": "Đang tải..." } } -} \ No newline at end of file +} diff --git a/public/locales/vi/modules/usenet.json b/public/locales/vi/modules/usenet.json index a1c2a1487..cc0b9478b 100644 --- a/public/locales/vi/modules/usenet.json +++ b/public/locales/vi/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { "name": "Usenet", - "description": "Cho phép bạn xem lịch sử và hàng chờ usenet (Sabnzbd hoặc NZBGet), cũng như tạm dừng và tiếp tục tải xuống" + "description": "" }, "card": { "errors": { "noDownloadClients": { "title": "Không tìm thấy ứng dụng tải xuống được hỗ trợ nào!", - "text": "Hãy thêm dịch vụ tải xuống để xem các bản tải xuống của bạn" + "text": "" } } }, diff --git a/public/locales/vi/modules/weather.json b/public/locales/vi/modules/weather.json index d6175e6c6..58c80242c 100644 --- a/public/locales/vi/modules/weather.json +++ b/public/locales/vi/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Thời tiết", - "description": "Kiểm tra thời tiết hiện tại theo khu vực của bạn", + "description": "", "settings": { + "title": "", "displayInFahrenheit": { "label": "Hiển thị bằng Fahrenheit" }, @@ -29,4 +30,4 @@ "unknown": "Không xác định" } } -} \ No newline at end of file +} diff --git a/public/locales/vi/settings/common.json b/public/locales/vi/settings/common.json index 7f26fc342..af4b77ccb 100644 --- a/public/locales/vi/settings/common.json +++ b/public/locales/vi/settings/common.json @@ -6,10 +6,24 @@ "customizations": "Cá nhân hoá" }, "tips": { - "configTip": "Tải tệp cấu hình của bạn lên chỉ bằng cách kéo và thả tệp vào trong trang!" + "configTip": "" }, "credits": { "madeWithLove": "From @ with ❤️" }, - "grow": "" -} \ No newline at end of file + "grow": "Khung giãn (chiếm toàn bộ không gian)", + "layout": { + "title": "", + "main": "", + "sidebar": "", + "cannotturnoff": "", + "dashboardlayout": "", + "enablersidebar": "", + "enablelsidebar": "", + "enablesearchbar": "", + "enabledocker": "", + "enableping": "", + "enablelsidebardesc": "", + "enablersidebardesc": "" + } +} diff --git a/public/locales/vi/settings/customization/page-appearance.json b/public/locales/vi/settings/customization/page-appearance.json index 7db328370..870fdd627 100644 --- a/public/locales/vi/settings/customization/page-appearance.json +++ b/public/locales/vi/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "Tiêu đề trang", - "placeholder": "Homarr 🦞" + "label": "Tiêu đề trang" + }, + "metaTitle": { + "label": "Tiêu đề meta" }, "logo": { "label": "Logo" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "CSS tuỳ chỉnh", - "placeholder": "CSS tùy chỉnh sẽ được áp dụng sau cùng" + "placeholder": "" }, "buttons": { "submit": "Gửi" diff --git a/public/locales/vi/settings/general/config-changer.json b/public/locales/vi/settings/general/config-changer.json index 2e4aa86c3..18118c77e 100644 --- a/public/locales/vi/settings/general/config-changer.json +++ b/public/locales/vi/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "Trình nạp cấu hình" + "label": "", + "description": "", + "loadingNew": "", + "pleaseWait": "" }, "modal": { - "title": "Chọn tên cho cấu hình mới của bạn", - "form": { - "configName": { - "label": "Tên cấu hình", - "placeholder": "Tên cấu hình mới của bạn" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "Xác nhận" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "Đã lưu cấu hình", - "message": "Đã lưu cấu hình thành {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "Xoá cấu hình thất bại", "message": "Xoá cấu hình thất bại" + }, + "deleteFailedDefaultConfig": { + "title": "", + "message": "" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "Kéo thả tệp vào đây để tải cấu hình lên. Chỉ hỗ trợ JSON." + "title": "", + "text": "" }, "reject": { - "text": "Định dạng tệp này không được hỗ trợ. Vui lòng chỉ tải lên JSON." + "title": "", + "text": "" } } -} \ No newline at end of file +} diff --git a/public/locales/vi/settings/general/module-enabler.json b/public/locales/vi/settings/general/module-enabler.json index d223fdff9..9e26dfeeb 100644 --- a/public/locales/vi/settings/general/module-enabler.json +++ b/public/locales/vi/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "Kích hoạt mô-đun" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/vi/settings/general/search-engine.json b/public/locales/vi/settings/general/search-engine.json index 57b7eca2f..1e93e7d6e 100644 --- a/public/locales/vi/settings/general/search-engine.json +++ b/public/locales/vi/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "Công cụ tìm kiếm", + "configurationName": "Thiết lập công cụ tìm kiếm", "tips": { - "generalTip": "Sử dụng các tiền tố !yt và !t trước truy vấn để tìm kiếm trên YouTube hoặc torrent.", + "generalTip": "", "placeholderTip": "%s có thể được sử dụng làm phần giữ chỗ cho truy vấn." }, "customEngine": { + "title": "Công cụ tìm kiếm tuỳ chỉnh", "label": "URL truy vấn", "placeholder": "URL truy vấn tuỳ chỉnh" }, "searchNewTab": { "label": "Mở kết quả tìm kiếm trong tab mới" + }, + "searchEnabled": { + "label": "Đã bật tìm kiếm" } -} \ No newline at end of file +} diff --git a/public/locales/vi/settings/general/widget-positions.json b/public/locales/vi/settings/general/widget-positions.json index 4cdc1c02d..0967ef424 100644 --- a/public/locales/vi/settings/general/widget-positions.json +++ b/public/locales/vi/settings/general/widget-positions.json @@ -1,3 +1 @@ -{ - "label": "Đặt tiện ích ở bên trái" -} \ No newline at end of file +{} diff --git a/public/locales/zh/authentication/login.json b/public/locales/zh/authentication/login.json index dfd8bae39..65585a5ec 100644 --- a/public/locales/zh/authentication/login.json +++ b/public/locales/zh/authentication/login.json @@ -1,6 +1,6 @@ { "title": "欢迎回来!", - "text": "请输入密码", + "text": "请输入密码。", "form": { "fields": { "password": { @@ -18,10 +18,10 @@ "message": "正在检查你的密码..." }, "correct": { - "title": "密码正确,正在重定向..." + "title": "登录成功,正在跳转..." }, "wrong": { - "title": "密码错误,请重试。" + "title": "密码错误,请重新输入。" } } } diff --git a/public/locales/zh/common.json b/public/locales/zh/common.json index 480023b58..db36b5396 100644 --- a/public/locales/zh/common.json +++ b/public/locales/zh/common.json @@ -1,6 +1,23 @@ { - "actions": { - "save": "保存" + "save": "保存", + "about": "关于", + "cancel": "取消", + "close": "关闭", + "delete": "删除", + "ok": "确定", + "edit": "编辑", + "version": "版本", + "changePosition": "改变位置", + "remove": "移除", + "removeConfirm": "确定要删除 {{item}} 吗?", + "sections": { + "settings": "设置", + "dangerZone": "危险操作" + }, + "secrets": { + "apiKey": "Api密钥", + "username": "用户名", + "password": "密码" }, "tip": "提示。 ", "time": { @@ -8,4 +25,4 @@ "minutes": "分钟", "hours": "小时" } -} +} \ No newline at end of file diff --git a/public/locales/zh/layout/add-service-app-shelf.json b/public/locales/zh/layout/add-service-app-shelf.json index 9c25c9e7c..b7762da09 100644 --- a/public/locales/zh/layout/add-service-app-shelf.json +++ b/public/locales/zh/layout/add-service-app-shelf.json @@ -113,12 +113,6 @@ "advancedOptions": { "title": "高级选项", "form": { - "httpStatusCodes": { - "label": "HTTP状态代码", - "placeholder": "选择有效的状态代码", - "clearButtonLabel": "清除选择项", - "nothingFound": "没有找到" - }, "openServiceInNewTab": { "label": "在新标签中打开应用" }, diff --git a/public/locales/zh/layout/element-selector/selector.json b/public/locales/zh/layout/element-selector/selector.json new file mode 100644 index 000000000..6b861a95a --- /dev/null +++ b/public/locales/zh/layout/element-selector/selector.json @@ -0,0 +1,11 @@ +{ + "modal": { + "title": "添加新磁贴", + "text": "磁贴是Homarr的主要组成元素。它们被用来显示你的应用程序和其他信息。你可以根据需要增加任意数量的磁贴。" + }, + "widgetDescription": "小组件与你的应用程序交互,提供更多的应用程序控制。在使用前通常需要额外的配置。", + "goBack": "上一步", + "actionIcon": { + "tooltip": "添加磁贴" + } +} diff --git a/public/locales/zh/layout/header/actions/toggle-edit-mode.json b/public/locales/zh/layout/header/actions/toggle-edit-mode.json new file mode 100644 index 000000000..a0f191283 --- /dev/null +++ b/public/locales/zh/layout/header/actions/toggle-edit-mode.json @@ -0,0 +1,16 @@ +{ + "description": "在编辑模式下,你可以调整磁贴和配置应用程序。在退出编辑模式之前不会保存更改。", + "button": { + "disabled": "进入编辑模式", + "enabled": "退出并保存" + }, + "popover": { + "title": "", + "text": "现在你可以调整和配置你的应用程序,在退出编辑模式之前不会保存更改 。" + }, + "screenSizes": { + "small": "小", + "medium": "中", + "large": "大" + } +} diff --git a/public/locales/zh/layout/mobile/drawer.json b/public/locales/zh/layout/mobile/drawer.json new file mode 100644 index 000000000..d06d8c4a9 --- /dev/null +++ b/public/locales/zh/layout/mobile/drawer.json @@ -0,0 +1,3 @@ +{ + "title": "{{position}} 侧边栏" +} diff --git a/public/locales/zh/layout/modals/about.json b/public/locales/zh/layout/modals/about.json new file mode 100644 index 000000000..76fdc070d --- /dev/null +++ b/public/locales/zh/layout/modals/about.json @@ -0,0 +1,7 @@ +{ + "description": "Homarr是一个 顺滑现代化 的面板,它把你所有的应用和服务汇于指尖。有了Homarr,你可以在一个页面访问和控制一切。Homarr与你添加的应用无缝交互,为你提供有价值的信息并由你完全把控。安装Homarr轻松简单,并且支持多种部署方式。", + "i18n": "加载的I18n翻译命名空间", + "locales": "配置的I18n语言", + "contact": "遇到困难或问题?请与我们联系!", + "addToDashboard": "添加到面板" +} diff --git a/public/locales/zh/layout/modals/add-app.json b/public/locales/zh/layout/modals/add-app.json new file mode 100644 index 000000000..751e27830 --- /dev/null +++ b/public/locales/zh/layout/modals/add-app.json @@ -0,0 +1,68 @@ +{ + "tabs": { + "general": "一般", + "behaviour": "行为", + "network": "网络", + "appearance": "外观", + "integration": "融合" + }, + "general": { + "appname": { + "label": "应用名称", + "description": "用于在面板上显示应用。" + }, + "internalAddress": { + "label": "内部地址", + "description": "应用的内部IP地址。" + }, + "externalAddress": { + "label": "外部地址", + "description": "点击应用时打开的URL。" + } + }, + "behaviour": { + "isOpeningNewTab": { + "label": "在新标签中打开", + "description": "在新标签中打开应用,而不是当前标签。" + } + }, + "network": { + "statusChecker": { + "label": "状态检测", + "description": "使用简单的HTTP(S) 请求检查你的应用是否在线。" + }, + "statusCodes": { + "label": "HTTP状态码", + "description": "被视为在线的 HTTP 状态码。" + } + }, + "appearance": { + "icon": { + "label": "应用图标", + "description": "将在面板上显示的图标。" + } + }, + "integration": { + "type": { + "label": "集成配置", + "description": "将用于连接您的应用的集成配置。", + "placeholder": "选择一个整合", + "defined": "已定义", + "undefined": "未定义", + "public": "公开的", + "private": "私有的", + "explanationPrivate": "", + "explanationPublic": "" + }, + "secrets": { + "description": "要更新一个秘密,输入一个值并点击保存按钮。要删除一个秘密,请使用清除按钮。", + "warning": "", + "clear": "清除密钥", + "save": "保存密钥", + "update": "更新密钥" + } + }, + "validation": { + "popover": "你的表单包含无效数据,因此它不能被保存。请解决所有问题,并再次点击此按钮保存您的更改。" + } +} diff --git a/public/locales/zh/layout/modals/change-position.json b/public/locales/zh/layout/modals/change-position.json new file mode 100644 index 000000000..3b1156da0 --- /dev/null +++ b/public/locales/zh/layout/modals/change-position.json @@ -0,0 +1,8 @@ +{ + "xPosition": "X轴位置", + "width": "宽度", + "height": "高度", + "yPosition": "Y轴位置", + "zeroOrHigher": "0或更高", + "betweenXandY": "在 {{min}} 和 {{max}}之间" +} \ No newline at end of file diff --git a/public/locales/zh/layout/screen-sizes.json b/public/locales/zh/layout/screen-sizes.json new file mode 100644 index 000000000..24e49a689 --- /dev/null +++ b/public/locales/zh/layout/screen-sizes.json @@ -0,0 +1,11 @@ +{ + "popover": { + "title": "", + "description": "" + }, + "sizes": { + "small": "", + "medium": "", + "large": "" + } +} diff --git a/public/locales/zh/layout/tools.json b/public/locales/zh/layout/tools.json new file mode 100644 index 000000000..99582c6d0 --- /dev/null +++ b/public/locales/zh/layout/tools.json @@ -0,0 +1,10 @@ +{ + "fallback": { + "title": "你目前没有任何工具" + }, + "iconPicker": { + "textInputPlaceholder": "搜索图标...", + "searchLimitationTitle": "搜索范围限于 {{max}} 图标", + "searchLimitationMessage": "为了保持迅速和快捷,搜索范围仅限于 {{max}} 图标。使用搜索框来寻找更多的图标" + } +} \ No newline at end of file diff --git a/public/locales/zh/modules/calendar.json b/public/locales/zh/modules/calendar.json index 76ea4aeca..0958fd3a6 100644 --- a/public/locales/zh/modules/calendar.json +++ b/public/locales/zh/modules/calendar.json @@ -1,11 +1,15 @@ { "descriptor": { "name": "日历", - "description": "一个用于显示即将发布的日历模块。它与Sonarr和Radarr API进行交互。", + "description": "", "settings": { + "title": "", "sundayStart": { "label": "使用周日作为一周的开始" + }, + "radarrReleaseType": { + "label": "" } } } -} \ No newline at end of file +} diff --git a/public/locales/zh/modules/common.json b/public/locales/zh/modules/common.json index 4c489bf5e..d95286e50 100644 --- a/public/locales/zh/modules/common.json +++ b/public/locales/zh/modules/common.json @@ -1,5 +1,10 @@ { "settings": { "label": "设置" + }, + "errors": { + "unmappedOptions": { + "text": "" + } } -} \ No newline at end of file +} diff --git a/public/locales/zh/modules/dashdot.json b/public/locales/zh/modules/dashdot.json index 33771d348..cf270aab1 100644 --- a/public/locales/zh/modules/dashdot.json +++ b/public/locales/zh/modules/dashdot.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "Dash.", - "description": "一个显示运行中的仪表板实例的图表模块。", + "description": "", "settings": { + "title": "为Dash.Widget设置", "cpuMultiView": { "label": "CPU多核视图" }, @@ -50,4 +51,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/zh/modules/date.json b/public/locales/zh/modules/date.json index 14d9991da..ac5fc650b 100644 --- a/public/locales/zh/modules/date.json +++ b/public/locales/zh/modules/date.json @@ -1,11 +1,12 @@ { "descriptor": { - "name": "日期", - "description": "在卡片中显示当前时间和日期", + "name": "", + "description": "", "settings": { + "title": "", "display24HourFormat": { "label": "显示完整时间 (24小时)" } } } -} \ No newline at end of file +} diff --git a/public/locales/zh/modules/dlspeed.json b/public/locales/zh/modules/dlspeed.json index f6090e6da..7896827d4 100644 --- a/public/locales/zh/modules/dlspeed.json +++ b/public/locales/zh/modules/dlspeed.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "下载速度", - "description": "显示支持的服务的当前下载速度" + "description": "" }, "card": { "table": { @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/zh/modules/docker.json b/public/locales/zh/modules/docker.json index 103e91ecc..a12b4be2a 100644 --- a/public/locales/zh/modules/docker.json +++ b/public/locales/zh/modules/docker.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Docker", - "description": "轻松管理你的docker容器" + "description": "" }, "search": { "placeholder": "按容器或镜像名称搜索" @@ -25,8 +25,8 @@ }, "actionBar": { "addService": { - "title": "添加应用", - "message": "添加服务到 Homarr" + "title": "", + "message": "" }, "restart": { "title": "重新启动" @@ -68,16 +68,16 @@ "errors": { "integrationFailed": { "title": "Docker整合失败", - "message": "你忘了挂载docker socket吗?" + "message": "" }, "unknownError": { "title": "出现了一个错误" }, "oneServiceAtATime": { - "title": "请一次只添加一项服务!" + "title": "" } }, "actionIcon": { "tooltip": "Docker" } -} \ No newline at end of file +} diff --git a/public/locales/zh/modules/overseerr.json b/public/locales/zh/modules/overseerr.json index 07e2ab118..e03a944d3 100644 --- a/public/locales/zh/modules/overseerr.json +++ b/public/locales/zh/modules/overseerr.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Overseerr", - "description": "允许你从Overseerr/Jellyseerr搜索和添加媒体" + "description": "" }, "popup": { "item": { @@ -18,7 +18,7 @@ } }, "seasonSelector": { - "caption": "勾选你想要下载的季数", + "caption": "", "table": { "header": { "season": "季数", @@ -27,4 +27,4 @@ } } } -} \ No newline at end of file +} diff --git a/public/locales/zh/modules/ping.json b/public/locales/zh/modules/ping.json index 7eaf68d92..76932212c 100644 --- a/public/locales/zh/modules/ping.json +++ b/public/locales/zh/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "允许你检查服务是否启动或返回一个特定的HTTP状态代码。" + "description": "" }, "states": { "online": "在线 {{response}}", "offline": "离线 {{response}}", "loading": "正在加载..." } -} \ No newline at end of file +} diff --git a/public/locales/zh/modules/search.json b/public/locales/zh/modules/search.json index e445878c4..0c64d70fe 100644 --- a/public/locales/zh/modules/search.json +++ b/public/locales/zh/modules/search.json @@ -1,30 +1,30 @@ { "descriptor": { "name": "搜索栏", - "description": "搜索栏可搜索网页、Youtube、Torrents或Overseerr" + "description": "" }, "input": { "placeholder": "在网上搜索..." }, - "switched-to": "", + "switched-to": "换成了", "searchEngines": { "search": { - "name": "", + "name": "网络", "description": "" }, "youtube": { - "name": "", - "description": "" + "name": "录像带", + "description": "在Youtube上搜索" }, "torrents": { - "name": "", - "description": "" + "name": "火炬", + "description": "搜索山洪病毒" }, "overseerr": { "name": "Overseerr", "description": "" } }, - "tip": "", - "switchedSearchEngine": "" -} \ No newline at end of file + "tip": "你可以用快捷键选择搜索栏 ", + "switchedSearchEngine": "改为用 {{searchEngine}}进行搜索" +} diff --git a/public/locales/zh/modules/torrents-status.json b/public/locales/zh/modules/torrents-status.json index c5a686a90..6a95ac2a3 100644 --- a/public/locales/zh/modules/torrents-status.json +++ b/public/locales/zh/modules/torrents-status.json @@ -1,10 +1,17 @@ { "descriptor": { - "name": "Torrent", - "description": "显示支持的服务的当前下载速度", + "name": "", + "description": "", "settings": { - "hideComplete": { - "label": "隐藏已完成的种子" + "title": "", + "refreshInterval": { + "label": "刷新时间间隔(秒)。" + }, + "displayCompletedTorrents": { + "label": "显示已完成的洪流" + }, + "displayStaleTorrents": { + "label": "显示陈旧的山洪" } } }, @@ -32,9 +39,16 @@ }, "errors": { "noDownloadClients": { - "title": "没有找到支持的下载客户端!", - "text": "添加下载服务,查看你当前的下载量" + "title": "", + "text": "" + }, + "generic": { + "title": "发生了一个意外的错误", + "text": "" } + }, + "loading": { + "title": "正在加载..." } } -} \ No newline at end of file +} diff --git a/public/locales/zh/modules/usenet.json b/public/locales/zh/modules/usenet.json index 9c8f005cb..53b38eec3 100644 --- a/public/locales/zh/modules/usenet.json +++ b/public/locales/zh/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { - "name": "", + "name": "おそれについて", "description": "" }, "card": { "errors": { "noDownloadClients": { "title": "没有找到支持的下载客户端!", - "text": "添加下载服务,查看你当前的下载量" + "text": "" } } }, diff --git a/public/locales/zh/modules/weather.json b/public/locales/zh/modules/weather.json index 081245a36..18affa0b3 100644 --- a/public/locales/zh/modules/weather.json +++ b/public/locales/zh/modules/weather.json @@ -1,8 +1,9 @@ { "descriptor": { "name": "天气", - "description": "查看你所在地区的当前天气", + "description": "", "settings": { + "title": "", "displayInFahrenheit": { "label": "显示为华氏度" }, @@ -29,4 +30,4 @@ "unknown": "未知" } } -} \ No newline at end of file +} diff --git a/public/locales/zh/settings/common.json b/public/locales/zh/settings/common.json index b35c3ca9b..ecda7b70d 100644 --- a/public/locales/zh/settings/common.json +++ b/public/locales/zh/settings/common.json @@ -6,10 +6,24 @@ "customizations": "个性化" }, "tips": { - "configTip": "将你的配置文件拖放到页面上,就可以上传了!" + "configTip": "" }, "credits": { "madeWithLove": "用❤️创造,出品于" }, - "grow": "" -} \ No newline at end of file + "grow": "增长的网格(占用所有空间)", + "layout": { + "title": "仪表板布局", + "main": "主要的", + "sidebar": "侧边栏", + "cannotturnoff": "不能关闭", + "dashboardlayout": "仪表板布局", + "enablersidebar": "启用右边的侧边栏", + "enablelsidebar": "启用左边的侧边栏", + "enablesearchbar": "启用搜索栏", + "enabledocker": "启用docker集成", + "enableping": "启用平移功能", + "enablelsidebardesc": "可选的。只能用于应用程序和集成", + "enablersidebardesc": "可选的。只能用于应用程序和集成" + } +} diff --git a/public/locales/zh/settings/customization/color-selector.json b/public/locales/zh/settings/customization/color-selector.json index c079d3d6f..98603c298 100644 --- a/public/locales/zh/settings/customization/color-selector.json +++ b/public/locales/zh/settings/customization/color-selector.json @@ -1,3 +1,3 @@ { - "suffix": "{{color}} 颜色" + "suffix": "{{color}} 色" } \ No newline at end of file diff --git a/public/locales/zh/settings/customization/opacity-selector.json b/public/locales/zh/settings/customization/opacity-selector.json index 8c97ca75b..d7341529e 100644 --- a/public/locales/zh/settings/customization/opacity-selector.json +++ b/public/locales/zh/settings/customization/opacity-selector.json @@ -1,3 +1,3 @@ { - "label": "应用程序的不透明度" + "label": "应用不透明度" } \ No newline at end of file diff --git a/public/locales/zh/settings/customization/page-appearance.json b/public/locales/zh/settings/customization/page-appearance.json index 82f7da30f..06f0ec79e 100644 --- a/public/locales/zh/settings/customization/page-appearance.json +++ b/public/locales/zh/settings/customization/page-appearance.json @@ -1,7 +1,9 @@ { "pageTitle": { - "label": "页面标题", - "placeholder": "Homarr 🦞" + "label": "页面标题" + }, + "metaTitle": { + "label": "元标题" }, "logo": { "label": "徽标" @@ -14,7 +16,7 @@ }, "customCSS": { "label": "自定义CSS", - "placeholder": "自定义CSS将被最后执行" + "placeholder": "自定义 CSS 将在最后应用" }, "buttons": { "submit": "提交" diff --git a/public/locales/zh/settings/general/config-changer.json b/public/locales/zh/settings/general/config-changer.json index 20adb5740..9a52fcdff 100644 --- a/public/locales/zh/settings/general/config-changer.json +++ b/public/locales/zh/settings/general/config-changer.json @@ -1,20 +1,45 @@ { "configSelect": { - "label": "配置加载器" + "label": "", + "description": "", + "loadingNew": "加载你的配置...", + "pleaseWait": "" }, "modal": { - "title": "选择你的新配置的名称", - "form": { - "configName": { - "label": "配置名称", - "placeholder": "你的新配置名称" + "copy": { + "title": "", + "form": { + "configName": { + "label": "", + "validation": { + "required": "", + "notUnique": "" + }, + "placeholder": "" + }, + "submitButton": "" }, - "submitButton": "确认" + "events": { + "configSaved": { + "title": "", + "message": "" + }, + "configCopied": { + "title": "", + "message": "" + }, + "configNotCopied": { + "title": "", + "message": "" + } + } }, - "events": { - "configSaved": { - "title": "配置已保存", - "message": "配置保存为 {{configName}}" + "confirmDeletion": { + "title": "", + "warningText": "", + "text": "", + "buttons": { + "confirm": "" } } }, @@ -30,6 +55,10 @@ "deleteFailed": { "title": "配置删除失败", "message": "配置删除失败" + }, + "deleteFailedDefaultConfig": { + "title": "", + "message": "" } } }, @@ -46,10 +75,12 @@ } }, "accept": { - "text": "在这里拖动文件来上传配置。只支持JSON。" + "title": "配置上传", + "text": "" }, "reject": { - "text": "不支持这种文件格式。请只上传JSON。" + "title": "拒绝拖拽式上传", + "text": "" } } -} \ No newline at end of file +} diff --git a/public/locales/zh/settings/general/module-enabler.json b/public/locales/zh/settings/general/module-enabler.json index 10852fa26..9e26dfeeb 100644 --- a/public/locales/zh/settings/general/module-enabler.json +++ b/public/locales/zh/settings/general/module-enabler.json @@ -1,3 +1 @@ -{ - "title": "启用模块" -} \ No newline at end of file +{} \ No newline at end of file diff --git a/public/locales/zh/settings/general/search-engine.json b/public/locales/zh/settings/general/search-engine.json index 25ec90673..3df9c1344 100644 --- a/public/locales/zh/settings/general/search-engine.json +++ b/public/locales/zh/settings/general/search-engine.json @@ -1,14 +1,19 @@ { "title": "搜索引擎", + "configurationName": "搜索引擎设置", "tips": { - "generalTip": "在查询前使用前缀 !yt和 !t,可以在YouTube或Torrent中搜索。", + "generalTip": "", "placeholderTip": "%s 可以作为查询的占位符。" }, "customEngine": { + "title": "自定义搜索引擎", "label": "查询网址", "placeholder": "自定义查询网址" }, "searchNewTab": { "label": "在新选项卡中打开搜索结果页" + }, + "searchEnabled": { + "label": "启用搜索" } -} \ No newline at end of file +} diff --git a/public/locales/zh/settings/general/widget-positions.json b/public/locales/zh/settings/general/widget-positions.json index 60e015a6a..0967ef424 100644 --- a/public/locales/zh/settings/general/widget-positions.json +++ b/public/locales/zh/settings/general/widget-positions.json @@ -1,3 +1 @@ -{ - "label": "将小部件放在左边" -} \ No newline at end of file +{} diff --git a/src/components/About/AboutModal.tsx b/src/components/About/AboutModal.tsx new file mode 100644 index 000000000..8d258ebd3 --- /dev/null +++ b/src/components/About/AboutModal.tsx @@ -0,0 +1,241 @@ +import { + ActionIcon, + Anchor, + Badge, + Button, + createStyles, + Divider, + Group, + HoverCard, + Modal, + Table, + Text, + Title, +} from '@mantine/core'; +import { + IconBrandDiscord, + IconBrandGithub, + IconFile, + IconLanguage, + IconSchema, + IconVersions, + IconVocabulary, + IconWorldWww, +} from '@tabler/icons'; +import { motion } from 'framer-motion'; +import { InitOptions } from 'i18next'; +import { i18n, Trans, useTranslation } from 'next-i18next'; +import Image from 'next/image'; +import { ReactNode } from 'react'; +import { CURRENT_VERSION } from '../../../data/constants'; +import { useConfigContext } from '../../config/provider'; +import { useConfigStore } from '../../config/store'; +import { usePrimaryGradient } from '../layout/useGradient'; +import Credits from '../Settings/Common/Credits'; + +interface AboutModalProps { + opened: boolean; + closeModal: () => void; + newVersionAvailable?: string; +} + +export const AboutModal = ({ opened, closeModal, newVersionAvailable }: AboutModalProps) => { + const { classes } = useStyles(); + const colorGradiant = usePrimaryGradient(); + const informations = useInformationTableItems(newVersionAvailable); + const { t } = useTranslation(['common', 'layout/modals/about']); + + return ( + closeModal()} + opened={opened} + title={ + + + + {t('about')} Homarr + + + } + size="xl" + > + + + + + + + {informations.map((item, index) => ( + + + + + ))} + +
+ + + {item.icon} + + {t(item.label)} + + {item.content}
+ + + {t('layout/modals/about:contact')} + + + + + + + + +
+ ); +}; + +interface InformationTableItem { + icon: ReactNode; + label: string; + content: ReactNode; +} + +interface ExtendedInitOptions extends InitOptions { + locales: string[]; +} + +const useInformationTableItems = (newVersionAvailable?: string): InformationTableItem[] => { + // TODO: Fix this to not request. Pass it as a prop. + const colorGradiant = usePrimaryGradient(); + + const { configVersion } = useConfigContext(); + const { configs } = useConfigStore(); + + let items: InformationTableItem[] = []; + + if (i18n !== null) { + const usedI18nNamespaces = i18n.reportNamespaces.getUsedNamespaces(); + const initOptions = i18n.options as ExtendedInitOptions; + + items = [ + ...items, + { + icon: , + label: 'layout/modals/about:i18n', + content: ( + + {usedI18nNamespaces.length} + + ), + }, + { + icon: , + label: 'layout/modals/about:locales', + content: ( + + {initOptions.locales.length} + + ), + }, + ]; + } + + items = [ + { + icon: , + label: 'Configuration schema version', + content: ( + + {configVersion} + + ), + }, + { + icon: , + label: 'Available configurations', + content: ( + + {configs.length} + + ), + }, + { + icon: , + label: 'version', + content: ( + + + {CURRENT_VERSION} + + {newVersionAvailable && ( + + + + + new: {newVersionAvailable} + + + + + Version{' '} + + + {newVersionAvailable} + + {' '} + is available ! Current version: {CURRENT_VERSION} + + + )} + + ), + }, + ...items, + ]; + + return items; +}; + +const useStyles = createStyles(() => ({ + informationTableColumn: { + textAlign: 'right', + }, + informationIcon: { + cursor: 'default', + }, +})); diff --git a/src/components/AppShelf/AddAppShelfItem.tsx b/src/components/AppShelf/AddAppShelfItem.tsx deleted file mode 100644 index 01dd3da81..000000000 --- a/src/components/AppShelf/AddAppShelfItem.tsx +++ /dev/null @@ -1,490 +0,0 @@ -import { - ActionIcon, - Anchor, - Button, - Center, - Group, - Image, - LoadingOverlay, - Modal, - MultiSelect, - PasswordInput, - Select, - Space, - Stack, - Switch, - Tabs, - TextInput, - Title, - Tooltip, -} from '@mantine/core'; -import { useForm } from '@mantine/form'; -import { useDebouncedValue } from '@mantine/hooks'; -import { IconApps } from '@tabler/icons'; -import { useTranslation } from 'next-i18next'; -import { useEffect, useState } from 'react'; -import { v4 as uuidv4 } from 'uuid'; -import { useConfig } from '../../tools/state'; -import { tryMatchPort, ServiceTypeList, StatusCodes, Config } from '../../tools/types'; -import apiKeyPaths from './apiKeyPaths.json'; -import Tip from '../layout/Tip'; - -export function AddItemShelfButton(props: any) { - const { config, setConfig } = useConfig(); - const [opened, setOpened] = useState(false); - const { t } = useTranslation('layout/add-service-app-shelf'); - return ( - <> - {t('modal.title')}} - opened={props.opened || opened} - onClose={() => setOpened(false)} - > - - - - setOpened(true)} - > - - - - - ); -} - -function MatchIcon(name: string | undefined, form: any) { - if (name === undefined || name === '') return null; - fetch( - `https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/${name - .replace(/\s+/g, '-') - .toLowerCase() - .replace(/^dash\.$/, 'dashdot')}.png` - ).then((res) => { - if (res.ok) { - form.setFieldValue('icon', res.url); - } - }); - - return false; -} - -function MatchService(name: string, form: any) { - const service = ServiceTypeList.find((s) => s.toLowerCase() === name.toLowerCase()); - if (service) { - form.setFieldValue('type', service); - } -} - -const DEFAULT_ICON = '/imgs/favicon/favicon.png'; - -interface AddAppShelfItemFormProps { - setOpened: (b: boolean) => void; - config: Config; - setConfig: (config: Config) => void; - // Any other props you want to pass to the form - [key: string]: any; -} - -export function AddAppShelfItemForm(props: AddAppShelfItemFormProps) { - const { setOpened, config, setConfig } = props; - // Only get config and setConfig from useCOnfig if they are not present in props - const [isLoading, setLoading] = useState(false); - const { t } = useTranslation('layout/add-service-app-shelf'); - - // Extract all the categories from the services in config - const InitialCategories = config.services.reduce((acc, cur) => { - if (cur.category && !acc.includes(cur.category)) { - acc.push(cur.category); - } - return acc; - }, [] as string[]); - const [categories, setCategories] = useState(InitialCategories); - - const form = useForm({ - initialValues: { - id: props.id ?? uuidv4(), - type: props.type ?? 'Other', - category: props.category ?? null, - name: props.name ?? '', - icon: props.icon ?? DEFAULT_ICON, - url: props.url ?? '', - apiKey: props.apiKey ?? undefined, - username: props.username ?? undefined, - password: props.password ?? undefined, - openedUrl: props.openedUrl ?? undefined, - ping: props.ping ?? true, - status: props.status ?? ['200'], - newTab: props.newTab ?? true, - }, - validate: { - apiKey: () => null, - // Validate icon with a regex - icon: (value: string) => - // Disable matching to allow any values - null, - // Validate url with a regex http/https - url: (value: string) => { - try { - const _isValid = new URL(value); - } catch (e) { - return t('modal.form.validation.invalidUrl'); - } - return null; - }, - status: (value: string[]) => { - if (!value.length) { - return t('modal.form.validation.noStatusCodeSelected'); - } - return null; - }, - }, - }); - - const [debounced, cancel] = useDebouncedValue(form.values.name, 250); - useEffect(() => { - if ( - form.values.name !== debounced || - form.values.icon !== DEFAULT_ICON || - form.values.type !== 'Other' - ) { - return; - } - MatchIcon(form.values.name, form); - MatchService(form.values.name, form); - tryMatchPort(form.values.name, form); - }, [debounced]); - - // Try to set const hostname to new URL(form.values.url).hostname) - // If it fails, set it to the form.values.url - let hostname = form.values.url; - try { - hostname = new URL(form.values.url).origin; - } catch (e) { - // Do nothing - } - - return ( - <> -
- Placeholder -
-
{ - const newForm = { ...form.values }; - if (newForm.newTab === true) newForm.newTab = undefined; - if (newForm.openedUrl === '') newForm.openedUrl = undefined; - if (newForm.category === null) newForm.category = undefined; - if (newForm.ping === true) newForm.ping = undefined; - if ( - (newForm.status.length === 1 && newForm.status[0] === '200') || - newForm.ping === false - ) { - delete newForm.status; - } - // If service already exists, update it. - if (config.services && config.services.find((s) => s.id === newForm.id)) { - setConfig({ - ...config, - // replace the found item by matching ID - services: config.services.map((s) => { - if (s.id === newForm.id) { - return { - ...newForm, - }; - } - return s; - }), - }); - } else { - setConfig({ - ...config, - services: [...config.services, newForm], - }); - } - setOpened(false); - form.reset(); - })} - > - - - {t('modal.tabs.options.title')} - {t('modal.tabs.advancedOptions.title')} - - - - - - - - - { - const item = { value: query, label: query }; - setCategories([...InitialCategories, query]); - return item; - }} - getCreateLabel={(query) => - t('modal.tabs.options.form.category.createLabel', { - query, - }) - } - {...form.getInputProps('category')} - /> - - {(form.values.type === 'Sonarr' || - form.values.type === 'Radarr' || - form.values.type === 'Lidarr' || - form.values.type === 'Overseerr' || - form.values.type === 'Jellyseerr' || - form.values.type === 'Readarr' || - form.values.type === 'Sabnzbd') && ( - <> - { - form.setFieldValue('apiKey', event.currentTarget.value); - }} - error={ - form.errors.apiKey && - t('modal.tabs.options.form.integrations.apiKey.validation.noKey') - } - /> - - {t('modal.tabs.options.form.integrations.apiKey.tip.text')}{' '} - - {t('modal.tabs.options.form.integrations.apiKey.tip.link')} - - - - )} - {form.values.type === 'qBittorrent' && ( - <> - { - form.setFieldValue('username', event.currentTarget.value); - }} - error={ - form.errors.username && - t( - 'modal.tabs.options.form.integrations.qBittorrent.username.validation.invalidUsername' - ) - } - /> - { - form.setFieldValue('password', event.currentTarget.value); - }} - error={ - form.errors.password && - t( - 'modal.tabs.options.form.integrations.qBittorrent.password.validation.invalidPassword' - ) - } - /> - - )} - {form.values.type === 'Deluge' && ( - <> - { - form.setFieldValue('password', event.currentTarget.value); - }} - error={ - form.errors.password && - t( - 'modal.tabs.options.form.integrations.deluge.password.validation.invalidPassword' - ) - } - /> - - )} - {form.values.type === 'Transmission' && ( - <> - { - form.setFieldValue('username', event.currentTarget.value); - }} - error={ - form.errors.username && - t( - 'modal.tabs.options.form.integrations.transmission.username.validation.invalidUsername' - ) - } - /> - { - form.setFieldValue('password', event.currentTarget.value); - }} - error={ - form.errors.password && - t( - 'modal.tabs.options.form.integrations.transmission.password.validation.invalidPassword' - ) - } - /> - - )} - {form.values.type === 'NZBGet' && ( - <> - { - form.setFieldValue('username', event.currentTarget.value); - }} - error={ - form.errors.username && - t( - 'modal.tabs.options.form.integrations.nzbget.username.validation.invalidUsername' - ) - } - /> - { - form.setFieldValue('password', event.currentTarget.value); - }} - error={ - form.errors.password && - t( - 'modal.tabs.options.form.integrations.nzbget.password.validation.invalidPassword' - ) - } - /> - - )} - - - - - - - {form.values.ping && ( - - )} - - - - - - - -
- - ); -} diff --git a/src/components/AppShelf/AppShelf.tsx b/src/components/AppShelf/AppShelf.tsx deleted file mode 100644 index ff2d118c8..000000000 --- a/src/components/AppShelf/AppShelf.tsx +++ /dev/null @@ -1,166 +0,0 @@ -import React, { useState } from 'react'; -import { Accordion, Grid, Stack, Title, useMantineColorScheme } from '@mantine/core'; -import { - closestCenter, - DndContext, - DragOverlay, - MouseSensor, - TouchSensor, - useSensor, - useSensors, -} from '@dnd-kit/core'; - -import { arrayMove, SortableContext } from '@dnd-kit/sortable'; -import { useLocalStorage } from '@mantine/hooks'; -import { useTranslation } from 'next-i18next'; -import * as Modules from '../../modules'; -import { useConfig } from '../../tools/state'; - -import { AppShelfItem, SortableItem } from './AppShelfItem'; -import { ModuleWrapper } from '../../modules/moduleWrapper'; -import { UsenetModule, TorrentsModule } from '../../modules'; - -const AppShelf = (props: any) => { - const { config, setConfig } = useConfig(); - // Extract all the categories from the services in config - const categoryList = config.services.reduce((acc, cur) => { - if (cur.category && !acc.includes(cur.category)) { - acc.push(cur.category); - } - return acc; - }, [] as string[]); - - const [toggledCategories, setToggledCategories] = useLocalStorage({ - key: 'app-shelf-toggled', - // This is a bit of a hack to toggle the categories on the first load, return a string[] of the categories - defaultValue: categoryList, - }); - const [activeId, setActiveId] = useState(null); - const { colorScheme } = useMantineColorScheme(); - - const { t } = useTranslation('layout/app-shelf'); - - const sensors = useSensors( - useSensor(TouchSensor, { - activationConstraint: { - delay: 500, - tolerance: 5, - }, - }), - useSensor(MouseSensor, { - // Require the mouse to move by 10 pixels before activating - activationConstraint: { - delay: 500, - tolerance: 5, - }, - }) - ); - - function handleDragStart(event: any) { - const { active } = event; - - setActiveId(active.id); - } - - function handleDragEnd(event: any) { - const { active, over } = event; - - if (active.id !== over.id) { - const newConfig = { ...config }; - const activeIndex = newConfig.services.findIndex((e) => e.id === active.id); - const overIndex = newConfig.services.findIndex((e) => e.id === over.id); - newConfig.services = arrayMove(newConfig.services, activeIndex, overIndex); - setConfig(newConfig); - } - - setActiveId(null); - } - - const getItems = (filter?: string) => { - // If filter is not set, return all the services without a category or a null category - let filtered = config.services; - const modules = Object.values(Modules).map((module) => module); - - if (!filter) { - filtered = config.services.filter((e) => !e.category || e.category === null); - } - if (filter) { - filtered = config.services.filter((e) => e.category === filter); - } - return ( - - - - {filtered.map((service) => ( - - - - - - ))} - - - - {activeId ? ( - e.id === activeId)} id={activeId} /> - ) : null} - - - ); - }; - - return ( - - { - setToggledCategories([...state]); - }} - > - {categoryList.map((category, idx) => ( - - - - {category} - - - {getItems(category)} - - ))} - - {getItems()} - - - - ); -}; - -export default AppShelf; diff --git a/src/components/AppShelf/AppShelfItem.tsx b/src/components/AppShelf/AppShelfItem.tsx deleted file mode 100644 index bbc51122c..000000000 --- a/src/components/AppShelf/AppShelfItem.tsx +++ /dev/null @@ -1,145 +0,0 @@ -import { useSortable } from '@dnd-kit/sortable'; -import { CSS } from '@dnd-kit/utilities'; -import { - Anchor, - AspectRatio, - Card, - Center, - createStyles, - Image, - Text, - useMantineColorScheme, -} from '@mantine/core'; -import { motion } from 'framer-motion'; -import { useState } from 'react'; -import PingComponent from '../../modules/ping/PingModule'; -import { useConfig } from '../../tools/state'; -import { serviceItem } from '../../tools/types'; -import AppShelfMenu from './AppShelfMenu'; - -const useStyles = createStyles((theme) => ({ - item: { - transition: 'box-shadow 150ms ease, transform 100ms ease', - - '&:hover': { - boxShadow: `${theme.shadows.md} !important`, - transform: 'scale(1.05)', - }, - [theme.fn.smallerThan('sm')]: { - WebkitUserSelect: 'none', - }, - }, -})); - -export function SortableItem(props: any) { - const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ - id: props.id, - }); - - const style = { - transform: CSS.Transform.toString(transform), - transition, - }; - - return ( -
- {props.children} -
- ); -} - -export function AppShelfItem(props: any) { - const { service }: { service: serviceItem } = props; - const [hovering, setHovering] = useState(false); - const { config } = useConfig(); - const { colorScheme } = useMantineColorScheme(); - const { classes } = useStyles(); - return ( - { - setHovering(true); - }} - onHoverEnd={() => { - setHovering(false); - }} - > - - - - - {service.name} - - - - - - - -
- - - - - - - - {service.ping !== false && } -
-
-
-
- ); -} diff --git a/src/components/AppShelf/AppShelfMenu.tsx b/src/components/AppShelf/AppShelfMenu.tsx deleted file mode 100644 index 402867ac0..000000000 --- a/src/components/AppShelf/AppShelfMenu.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { ActionIcon, Menu, Modal, Text } from '@mantine/core'; -import { showNotification } from '@mantine/notifications'; -import { useState } from 'react'; -import { IconCheck as Check, IconEdit as Edit, IconMenu, IconTrash as Trash } from '@tabler/icons'; -import { useTranslation } from 'next-i18next'; -import { useConfig } from '../../tools/state'; -import { serviceItem } from '../../tools/types'; -import { AddAppShelfItemForm } from './AddAppShelfItem'; -import { useColorTheme } from '../../tools/color'; - -export default function AppShelfMenu(props: any) { - const { service }: { service: serviceItem } = props; - const { config, setConfig } = useConfig(); - const { secondaryColor } = useColorTheme(); - const { t } = useTranslation('layout/app-shelf-menu'); - const [opened, setOpened] = useState(false); - return ( - <> - setOpened(false)} - title={t('modal.title')} - > - - - - - - - - - - {t('menu.labels.settings')} - } onClick={() => setOpened(true)}> - {t('menu.actions.edit')} - - {t('menu.labels.dangerZone')} - { - setConfig({ - ...config, - services: config.services.filter((s) => s.id !== service.id), - }); - showNotification({ - autoClose: 5000, - title: ( - - Service {service.name} removed successfully! - - ), - color: 'green', - icon: , - message: undefined, - }); - }} - icon={} - > - {t('menu.actions.delete')} - - - - - ); -} diff --git a/src/components/AppShelf/SmallServiceItem.tsx b/src/components/AppShelf/SmallServiceItem.tsx deleted file mode 100644 index 98c8bbf53..000000000 --- a/src/components/AppShelf/SmallServiceItem.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Avatar, Group, Text } from '@mantine/core'; - -interface smallServiceItem { - label: string; - icon?: string; - url?: string; -} - -export default function SmallServiceItem(props: any) { - const { service }: { service: smallServiceItem } = props; - // TODO : Use Next/link - return ( - - {service.icon && } - {service.label} - - ); -} diff --git a/src/components/AppShelf/apiKeyPaths.json b/src/components/AppShelf/apiKeyPaths.json deleted file mode 100644 index 3ecd0f338..000000000 --- a/src/components/AppShelf/apiKeyPaths.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Jellyseerr": "settings", - "Overseerr": "settings", - "Sonarr": "settings/general", - "Radarr": "settings/general", - "Readarr": "settings/general", - "Lidarr": "settings/general", - "Sabnzbd": "sabnzbd/config/general" -} diff --git a/src/components/AppShelf/index.ts b/src/components/AppShelf/index.ts deleted file mode 100644 index fd496bd5b..000000000 --- a/src/components/AppShelf/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as AppShelf } from './AppShelf'; -export * from './AppShelfItem'; diff --git a/src/components/ColorSchemeToggle/ColorSchemeSwitch.tsx b/src/components/ColorSchemeToggle/ColorSchemeSwitch.tsx deleted file mode 100644 index a167d0b94..000000000 --- a/src/components/ColorSchemeToggle/ColorSchemeSwitch.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import React from 'react'; -import { - createStyles, - Switch, - Group, - useMantineColorScheme, - Kbd, - useMantineTheme, -} from '@mantine/core'; -import { IconMoonStars, IconSun } from '@tabler/icons'; -import { useTranslation } from 'next-i18next'; - -const useStyles = createStyles((theme) => ({ - root: { - position: 'relative', - '& *': { - cursor: 'pointer', - }, - }, - - icon: { - pointerEvents: 'none', - position: 'absolute', - zIndex: 1, - top: 3, - }, - - iconLight: { - left: 4, - color: theme.white, - }, - - iconDark: { - right: 4, - color: theme.colors.gray[6], - }, -})); - -export function ColorSchemeSwitch() { - const { colorScheme, toggleColorScheme } = useMantineColorScheme(); - const { t } = useTranslation('settings/general/theme-selector'); - const theme = useMantineTheme(); - return ( - - toggleColorScheme()} - size="md" - onLabel={} - offLabel={} - /> - {t('label', { - theme: colorScheme === 'dark' ? 'light' : 'dark', - })} - - Ctrl+J - - - ); -} diff --git a/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx b/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx deleted file mode 100644 index 3fbe701ee..000000000 --- a/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { Box, useMantineColorScheme } from '@mantine/core'; -import { IconSun as Sun, IconMoonStars as MoonStars } from '@tabler/icons'; -import { motion } from 'framer-motion'; - -export function ColorSchemeToggle() { - const { colorScheme, toggleColorScheme } = useMantineColorScheme(); - - return ( - - toggleColorScheme()} - sx={(theme) => ({ - cursor: 'pointer', - color: theme.colorScheme === 'dark' ? theme.colors.yellow[4] : theme.colors.blue[6], - })} - > - {colorScheme === 'dark' ? : } - - - ); -} diff --git a/src/components/Config/ConfigChanger.tsx b/src/components/Config/ConfigChanger.tsx index 0e129bd2c..faa60f1f0 100644 --- a/src/components/Config/ConfigChanger.tsx +++ b/src/components/Config/ConfigChanger.tsx @@ -1,20 +1,36 @@ -import { Center, Loader, Select, Tooltip } from '@mantine/core'; +import { Center, Dialog, Loader, Notification, Select, Tooltip } from '@mantine/core'; +import { useToggle } from '@mantine/hooks'; +import { useQuery } from '@tanstack/react-query'; import { setCookie } from 'cookies-next'; import { useTranslation } from 'next-i18next'; -import { useEffect, useState } from 'react'; -import { useConfig } from '../../tools/state'; +import { useRouter } from 'next/router'; +import { useState } from 'react'; +import { useConfigContext } from '../../config/provider'; export default function ConfigChanger() { - const { config, loadConfig, setConfig, getConfigs } = useConfig(); - const [configList, setConfigList] = useState([]); - const [value, setValue] = useState(config.name); - const { t } = useTranslation('settings/general/config-changer'); + const router = useRouter(); + + const { t } = useTranslation('settings/general/config-changer'); + const { name: configName, setConfigName } = useConfigContext(); + + const { data: configs, isLoading } = useConfigsQuery(); + const [activeConfig, setActiveConfig] = useState(configName); + const [isRefreshing, toggle] = useToggle(); + + const onConfigChange = (value: string) => { + setCookie('config-name', value ?? 'default', { + maxAge: 60 * 60 * 24 * 30, + sameSite: 'strict', + }); + setActiveConfig(value); + toggle(); + + router.push(`/${value}`); + setConfigName(value); + }; - useEffect(() => { - getConfigs().then((configs) => setConfigList(configs)); - }, [config]); // If configlist is empty, return a loading indicator - if (configList.length === 0) { + if (isLoading || !configs || configs.length === 0 || !configName) { return (
@@ -23,23 +39,36 @@ export default function ConfigChanger() { ); } - // return { - loadConfig(e ?? 'default'); - setCookie('config-name', e ?? 'default', { - maxAge: 60 * 60 * 24 * 30, - sameSite: 'strict', - }); - }} - data={ - // If config list is empty, return the current config - configList.length === 0 ? [config.name] : configList - } - /> + <> + + + + + + item.label?.toLowerCase().includes(value.toLowerCase().trim()) || + item.description?.toLowerCase().includes(value.toLowerCase().trim()) + } + icon={ + form.values.integration?.type && ( + x.value === form.values.integration?.type)?.image} + alt="integration" + width={20} + height={20} + /> + ) + } + onChange={(value) => { + form.setFieldValue('integration.properties', getNewProperties(value)); + inputProps.onChange(value); + }} + withinPortal + {...inputProps} + /> + ); +}; + +interface ItemProps extends React.ComponentPropsWithoutRef<'div'> { + image: string; + description: string; + label: string; +} + +const SelectItemComponent = forwardRef( + ({ image, label, description, ...others }: ItemProps, ref) => ( +
+ + integration icon + +
+ {label} + {description && ( + + {description} + + )} +
+
+
+ ) +); diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer.tsx b/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer.tsx new file mode 100644 index 000000000..0d8d4bfd9 --- /dev/null +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer.tsx @@ -0,0 +1,89 @@ +import { Stack } from '@mantine/core'; +import { UseFormReturnType } from '@mantine/form'; +import { IconKey } from '@tabler/icons'; +import { + IntegrationField, + integrationFieldDefinitions, + integrationFieldProperties, + AppIntegrationPropertyType, + AppType, +} from '../../../../../../../../types/app'; +import { GenericSecretInput } from '../InputElements/GenericSecretInput'; + +interface IntegrationOptionsRendererProps { + form: UseFormReturnType AppType>; +} + +export const IntegrationOptionsRenderer = ({ form }: IntegrationOptionsRendererProps) => { + const selectedIntegration = form.values.integration?.type; + + if (!selectedIntegration) return null; + + const displayedProperties = integrationFieldProperties[selectedIntegration]; + + return ( + + {displayedProperties.map((property, index) => { + const [_, definition] = Object.entries(integrationFieldDefinitions).find( + ([key]) => property === key + )!; + + let indexInFormValue = + form.values.integration?.properties.findIndex((p) => p.field === property) ?? -1; + if (indexInFormValue === -1) { + const { type } = Object.entries(integrationFieldDefinitions).find( + ([k, v]) => k === property + )![1]; + const newProperty: AppIntegrationPropertyType = { + type, + field: property as IntegrationField, + isDefined: false, + }; + form.insertListItem('integration.properties', newProperty); + indexInFormValue = form.values.integration!.properties.length; + } + const formValue = form.values.integration?.properties[indexInFormValue]; + + const isPresent = formValue?.isDefined; + const accessabilityType = formValue?.type; + + if (!definition) { + return ( + { + form.setFieldValue(`integration.properties.${index}.value`, value); + form.setFieldValue( + `integration.properties.${index}.isDefined`, + value !== undefined + ); + }} + key={`input-${property}`} + label={`${property} (potentionally unmapped)`} + secretIsPresent={isPresent} + setIcon={IconKey} + value={formValue.value} + type={accessabilityType} + {...form.getInputProps(`integration.properties.${index}.value`)} + /> + ); + } + + return ( + { + form.setFieldValue(`integration.properties.${index}.value`, value); + form.setFieldValue(`integration.properties.${index}.isDefined`, value !== undefined); + }} + key={`input-${definition.label}`} + label={definition.label} + value="" + secretIsPresent={isPresent} + setIcon={definition.icon} + type={accessabilityType} + {...form.getInputProps(`integration.properties.${index}.value`)} + /> + ); + })} + + ); +}; diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/IntegrationTab.tsx b/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/IntegrationTab.tsx new file mode 100644 index 000000000..c57c69ced --- /dev/null +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/IntegrationTab.tsx @@ -0,0 +1,37 @@ +import { Alert, Divider, Tabs, Text } from '@mantine/core'; +import { UseFormReturnType } from '@mantine/form'; +import { IconAlertTriangle } from '@tabler/icons'; +import { Trans, useTranslation } from 'next-i18next'; +import { AppType } from '../../../../../../types/app'; +import { IntegrationSelector } from './Components/InputElements/IntegrationSelector'; +import { IntegrationOptionsRenderer } from './Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer'; + +interface IntegrationTabProps { + form: UseFormReturnType AppType>; +} + +export const IntegrationTab = ({ form }: IntegrationTabProps) => { + const { t } = useTranslation('layout/modals/add-app'); + const hasIntegrationSelected = form.values.integration?.type; + + return ( + + + + {hasIntegrationSelected && ( + <> + + + {t('integration.secrets.description')} + + + } color="yellow"> + + + + + + )} + + ); +}; diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/NetworkTab/NetworkTab.tsx b/src/components/Dashboard/Modals/EditAppModal/Tabs/NetworkTab/NetworkTab.tsx new file mode 100644 index 000000000..7845c77d7 --- /dev/null +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/NetworkTab/NetworkTab.tsx @@ -0,0 +1,37 @@ +import { Tabs, Switch, MultiSelect } from '@mantine/core'; +import { UseFormReturnType } from '@mantine/form'; +import { useTranslation } from 'next-i18next'; +import { StatusCodes } from '../../../../../../tools/acceptableStatusCodes'; +import { AppType } from '../../../../../../types/app'; + +interface NetworkTabProps { + form: UseFormReturnType AppType>; +} + +export const NetworkTab = ({ form }: NetworkTabProps) => { + const { t } = useTranslation('layout/modals/add-app'); + return ( + + + {form.values.network.enabledStatusChecker && ( + + )} + + ); +}; diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/Shared/DebouncedAppIcon.tsx b/src/components/Dashboard/Modals/EditAppModal/Tabs/Shared/DebouncedAppIcon.tsx new file mode 100644 index 000000000..90e575fa1 --- /dev/null +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/Shared/DebouncedAppIcon.tsx @@ -0,0 +1,59 @@ +// disabled due to too many dynamic targets for next image cache +/* eslint-disable @next/next/no-img-element */ +import Image from 'next/image'; +import { createStyles, Loader } from '@mantine/core'; +import { UseFormReturnType } from '@mantine/form'; +import { useDebouncedValue } from '@mantine/hooks'; +import { AppType } from '../../../../../../types/app'; + +interface DebouncedAppIconProps { + width: number; + height: number; + form: UseFormReturnType AppType>; + debouncedWaitPeriod?: number; +} + +export const DebouncedAppIcon = ({ + form, + width, + height, + debouncedWaitPeriod = 1000, +}: DebouncedAppIconProps) => { + const { classes } = useStyles(); + const [debouncedIconImageUrl] = useDebouncedValue( + form.values.appearance.iconUrl, + debouncedWaitPeriod + ); + + if (debouncedIconImageUrl !== form.values.appearance.iconUrl) { + return ; + } + + if (debouncedIconImageUrl.length > 0) { + return ( + + ); + } + + return ( + + ); +}; + +const useStyles = createStyles(() => ({ + iconImage: { + objectFit: 'contain', + }, +})); diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/type.ts b/src/components/Dashboard/Modals/EditAppModal/Tabs/type.ts new file mode 100644 index 000000000..a67947134 --- /dev/null +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/type.ts @@ -0,0 +1 @@ +export type EditAppModalTab = 'general' | 'behaviour' | 'network' | 'appereance' | 'integration'; diff --git a/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx b/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx new file mode 100644 index 000000000..d746ae334 --- /dev/null +++ b/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx @@ -0,0 +1,170 @@ +import { Group, Space, Stack, Text, UnstyledButton } from '@mantine/core'; +import { closeModal } from '@mantine/modals'; +import { showNotification } from '@mantine/notifications'; +import { IconBox, IconBoxAlignTop, IconStack } from '@tabler/icons'; +import { motion } from 'framer-motion'; +import { useTranslation } from 'next-i18next'; +import { ReactNode } from 'react'; +import { v4 as uuidv4 } from 'uuid'; +import { useConfigContext } from '../../../../../../config/provider'; +import { useConfigStore } from '../../../../../../config/store'; +import { openContextModalGeneric } from '../../../../../../tools/mantineModalManagerExtensions'; +import { AppType } from '../../../../../../types/app'; +import { CategoryEditModalInnerProps } from '../../../../Wrappers/Category/CategoryEditModal'; +import { useStyles } from '../Shared/styles'; + +interface AvailableElementTypesProps { + modalId: string; + onOpenIntegrations: () => void; + onOpenStaticElements: () => void; +} + +export const AvailableElementTypes = ({ + modalId, + onOpenIntegrations: onOpenWidgets, + onOpenStaticElements, +}: AvailableElementTypesProps) => { + const { t } = useTranslation('layout/element-selector/selector'); + const { config, name: configName } = useConfigContext(); + const { updateConfig } = useConfigStore(); + const getLowestWrapper = () => config?.wrappers.sort((a, b) => a.position - b.position)[0]; + + const onClickCreateCategory = async () => { + openContextModalGeneric({ + modal: 'categoryEditModal', + title: 'Name of new category', + withCloseButton: false, + innerProps: { + category: { + id: uuidv4(), + name: 'New category', + position: 0, // doesn't matter, is being overwritten + }, + onSuccess: async (category) => { + if (!configName) return; + + await updateConfig(configName, (previousConfig) => ({ + ...previousConfig, + wrappers: [ + ...previousConfig.wrappers, + { + id: uuidv4(), + // Thank you ChatGPT ;) + position: previousConfig.categories.length + 1, + }, + ], + categories: [ + ...previousConfig.categories, + { + id: uuidv4(), + name: category.name, + position: previousConfig.categories.length + 1, + }, + ], + })).then(() => { + closeModal(modalId); + showNotification({ + title: 'Category created', + message: `The category ${category.name} has been created`, + color: 'teal', + }); + }); + }, + }, + }); + }; + + return ( + <> + {t('modal.text')} + + + } + onClick={() => { + openContextModalGeneric<{ app: AppType; allowAppNamePropagation: boolean }>({ + modal: 'editApp', + innerProps: { + app: { + id: uuidv4(), + name: 'Your app', + url: 'https://homarr.dev', + appearance: { + iconUrl: '/imgs/logo/logo.png', + }, + network: { + enabledStatusChecker: true, + okStatus: [200], + }, + behaviour: { + isOpeningNewTab: true, + externalUrl: '', + }, + + area: { + type: 'wrapper', + properties: { + id: getLowestWrapper()?.id ?? 'default', + }, + }, + shape: {}, + integration: { + type: null, + properties: [], + }, + }, + allowAppNamePropagation: true, + }, + size: 'xl', + }); + }} + /> + } + onClick={onOpenWidgets} + /> + } + onClick={onClickCreateCategory} + /> + {/*} + onClick={onOpenStaticElements} + />*/} + + + ); +}; + +interface ElementItemProps { + icon: ReactNode; + name: string; + onClick: () => void; +} + +const ElementItem = ({ name, icon, onClick }: ElementItemProps) => { + const { classes, cx } = useStyles(); + return ( + + + + {icon} + + + {name} + + + + ); +}; diff --git a/src/components/Dashboard/Modals/SelectElement/Components/Shared/GenericElementType.tsx b/src/components/Dashboard/Modals/SelectElement/Components/Shared/GenericElementType.tsx new file mode 100644 index 000000000..07938aba2 --- /dev/null +++ b/src/components/Dashboard/Modals/SelectElement/Components/Shared/GenericElementType.tsx @@ -0,0 +1,61 @@ +import { Button, Card, Center, Grid, Stack, Text } from '@mantine/core'; +import { TablerIcon } from '@tabler/icons'; +import { useTranslation } from 'next-i18next'; +import Image from 'next/image'; +import React from 'react'; +import { useStyles } from './styles'; + +interface GenericAvailableElementTypeProps { + name: string; + handleAddition: () => Promise; + description?: string; + image: string | TablerIcon; + disabled?: boolean; +} + +export const GenericAvailableElementType = ({ + name, + description, + image, + disabled, + handleAddition, +}: GenericAvailableElementTypeProps) => { + const { classes } = useStyles(); + const { t } = useTranslation('layout/modals/about'); + + const Icon = + typeof image === 'string' ? () => : image; + + return ( + + + + +
+ +
+ + {name} + + {description && ( + + {description} + + )} +
+ +
+
+
+ ); +}; diff --git a/src/components/Dashboard/Modals/SelectElement/Components/Shared/SelectorBackArrow.tsx b/src/components/Dashboard/Modals/SelectElement/Components/Shared/SelectorBackArrow.tsx new file mode 100644 index 000000000..575820366 --- /dev/null +++ b/src/components/Dashboard/Modals/SelectElement/Components/Shared/SelectorBackArrow.tsx @@ -0,0 +1,23 @@ +import { Button, Text } from '@mantine/core'; +import { IconArrowNarrowLeft } from '@tabler/icons'; +import { useTranslation } from 'next-i18next'; + +interface SelectorBackArrowProps { + onClickBack: () => void; +} + +export function SelectorBackArrow({ onClickBack }: SelectorBackArrowProps) { + const { t } = useTranslation('layout/element-selector/selector'); + return ( + + ); +} diff --git a/src/components/Dashboard/Modals/SelectElement/Components/Shared/styles.tsx b/src/components/Dashboard/Modals/SelectElement/Components/Shared/styles.tsx new file mode 100644 index 000000000..41a8d263e --- /dev/null +++ b/src/components/Dashboard/Modals/SelectElement/Components/Shared/styles.tsx @@ -0,0 +1,28 @@ +import { createStyles } from '@mantine/core'; + +export const useStyles = createStyles((theme) => ({ + styledButton: { + backgroundColor: theme.colorScheme === 'dark' ? theme.colors.gray[9] : theme.colors.gray[2], + color: theme.colorScheme === 'dark' ? theme.colors.gray[0] : theme.colors.dark[9], + '&:hover': { + backgroundColor: theme.colorScheme === 'dark' ? theme.colors.gray[8] : theme.colors.gray[3], + }, + }, + elementButton: { + width: '100%', + height: '100%', + borderRadius: theme.radius.sm, + }, + elementStack: { + width: '100%', + }, + elementName: { + whiteSpace: 'normal', + textAlign: 'center', + lineHeight: 1.2, + }, + elementText: { + lineHeight: 1.2, + whiteSpace: 'normal', + }, +})); diff --git a/src/components/Dashboard/Modals/SelectElement/Components/StaticElementsTab/AvailableStaticElementsTab.tsx b/src/components/Dashboard/Modals/SelectElement/Components/StaticElementsTab/AvailableStaticElementsTab.tsx new file mode 100644 index 000000000..ef0da1757 --- /dev/null +++ b/src/components/Dashboard/Modals/SelectElement/Components/StaticElementsTab/AvailableStaticElementsTab.tsx @@ -0,0 +1,32 @@ +import { Grid, Text } from '@mantine/core'; +import { IconCursorText } from '@tabler/icons'; +import { useTranslation } from 'next-i18next'; +import { GenericAvailableElementType } from '../Shared/GenericElementType'; +import { SelectorBackArrow } from '../Shared/SelectorBackArrow'; + +interface AvailableStaticTypesProps { + onClickBack: () => void; +} + +export const AvailableStaticTypes = ({ onClickBack }: AvailableStaticTypesProps) => { + const { t } = useTranslation('layout/element-selector/selector'); + return ( + <> + + + + Static elements provide you additional control over your dashboard. They are static, because + they don't integrate with any apps and their content never changes. + + + + {}} + /> + + + ); +}; diff --git a/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/AvailableWidgetsTab.tsx b/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/AvailableWidgetsTab.tsx new file mode 100644 index 000000000..c6192ab58 --- /dev/null +++ b/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/AvailableWidgetsTab.tsx @@ -0,0 +1,34 @@ +import { Grid, Text } from '@mantine/core'; +import { useTranslation } from 'next-i18next'; +import { useConfigContext } from '../../../../../../config/provider'; +import widgets from '../../../../../../widgets'; +import { SelectorBackArrow } from '../Shared/SelectorBackArrow'; +import { WidgetElementType } from './WidgetElementType'; + +interface AvailableIntegrationElementsProps { + onClickBack: () => void; +} + +export const AvailableIntegrationElements = ({ + onClickBack, +}: AvailableIntegrationElementsProps) => { + const { t } = useTranslation('layout/element-selector/selector'); + const activeWidgets = useConfigContext().config?.widgets ?? []; + return ( + <> + + + + {t('widgetDescription')} + + + + {Object.entries(widgets) + .filter(([widgetId]) => !activeWidgets.some((aw) => aw.id === widgetId)) + .map(([k, v]) => ( + + ))} + + + ); +}; diff --git a/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/WidgetElementType.tsx b/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/WidgetElementType.tsx new file mode 100644 index 000000000..ce3a2b708 --- /dev/null +++ b/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/WidgetElementType.tsx @@ -0,0 +1,105 @@ +import { useModals } from '@mantine/modals'; +import { showNotification } from '@mantine/notifications'; +import { IconChecks, TablerIcon } from '@tabler/icons'; +import { useTranslation } from 'next-i18next'; +import { useConfigContext } from '../../../../../../config/provider'; +import { useConfigStore } from '../../../../../../config/store'; +import { IWidget, IWidgetDefinition } from '../../../../../../widgets/widgets'; +import { useEditModeStore } from '../../../../Views/useEditModeStore'; +import { GenericAvailableElementType } from '../Shared/GenericElementType'; + +interface WidgetElementTypeProps { + id: string; + image: string | TablerIcon; + disabled?: boolean; + widget: IWidgetDefinition; +} + +export const WidgetElementType = ({ id, image, disabled, widget }: WidgetElementTypeProps) => { + const { closeModal } = useModals(); + const { t } = useTranslation(`modules/${id}`); + const { name: configName, config } = useConfigContext(); + const updateConfig = useConfigStore((x) => x.updateConfig); + const isEditMode = useEditModeStore((x) => x.enabled); + + if (!configName) return null; + + const getLowestWrapper = () => config?.wrappers.sort((a, b) => a.position - b.position)[0]; + + const handleAddition = async () => { + updateConfig( + configName, + (prev) => ({ + ...prev, + widgets: [ + ...prev.widgets.filter((w) => w.id !== widget.id), + { + id: widget.id, + properties: Object.entries(widget.options).reduce((prev, [k, v]) => { + const newPrev = prev; + newPrev[k] = v.defaultValue; + return newPrev; + }, {} as IWidget['properties']), + area: { + type: 'wrapper', + properties: { + id: getLowestWrapper()?.id ?? '', + }, + }, + shape: { + sm: { + location: { + x: 0, + y: 0, + }, + size: { + width: widget.gridstack.minWidth, + height: widget.gridstack.minHeight, + }, + }, + md: { + location: { + x: 0, + y: 0, + }, + size: { + width: widget.gridstack.minWidth, + height: widget.gridstack.minHeight, + }, + }, + lg: { + location: { + x: 0, + y: 0, + }, + size: { + width: widget.gridstack.minWidth, + height: widget.gridstack.minHeight, + }, + }, + }, + }, + ], + }), + true, + !isEditMode + ); + closeModal('selectElement'); + showNotification({ + title: t('descriptor.name'), + message: t('descriptor.description'), + icon: , + color: 'teal', + }); + }; + + return ( + + ); +}; diff --git a/src/components/Dashboard/Modals/SelectElement/SelectElementModal.tsx b/src/components/Dashboard/Modals/SelectElement/SelectElementModal.tsx new file mode 100644 index 000000000..0f288c1ce --- /dev/null +++ b/src/components/Dashboard/Modals/SelectElement/SelectElementModal.tsx @@ -0,0 +1,28 @@ +import { ContextModalProps } from '@mantine/modals'; +import { useState } from 'react'; +import { AvailableIntegrationElements } from './Components/WidgetsTab/AvailableWidgetsTab'; +import { AvailableElementTypes } from './Components/Overview/AvailableElementsOverview'; +import { AvailableStaticTypes } from './Components/StaticElementsTab/AvailableStaticElementsTab'; + +export const SelectElementModal = ({ context, id }: ContextModalProps) => { + const [activeTab, setActiveTab] = useState(); + + switch (activeTab) { + case undefined: + return ( + setActiveTab('integrations')} + onOpenStaticElements={() => setActiveTab('static_elements')} + /> + ); + case 'integrations': + return setActiveTab(undefined)} />; + case 'static_elements': + return setActiveTab(undefined)} />; + default: + /* default to the main selection tab */ + setActiveTab(undefined); + return <>; + } +}; diff --git a/src/components/Dashboard/Tiles/Apps/AppIcon.tsx b/src/components/Dashboard/Tiles/Apps/AppIcon.tsx new file mode 100644 index 000000000..9775b9849 --- /dev/null +++ b/src/components/Dashboard/Tiles/Apps/AppIcon.tsx @@ -0,0 +1,5 @@ +interface ServiceIconProps { + size: '100%' | number; +} + +export const AppIcon = ({ size }: ServiceIconProps) => null; diff --git a/src/components/Dashboard/Tiles/Apps/AppMenu.tsx b/src/components/Dashboard/Tiles/Apps/AppMenu.tsx new file mode 100644 index 000000000..fea3a6e2c --- /dev/null +++ b/src/components/Dashboard/Tiles/Apps/AppMenu.tsx @@ -0,0 +1,64 @@ +import { useConfigContext } from '../../../../config/provider'; +import { useConfigStore } from '../../../../config/store'; +import { openContextModalGeneric } from '../../../../tools/mantineModalManagerExtensions'; +import { AppType } from '../../../../types/app'; +import { GenericTileMenu } from '../GenericTileMenu'; + +interface TileMenuProps { + app: AppType; +} + +export const AppMenu = ({ app }: TileMenuProps) => { + const { config, name: configName } = useConfigContext(); + const { updateConfig } = useConfigStore(); + + const handleClickEdit = () => { + openContextModalGeneric<{ app: AppType; allowAppNamePropagation: boolean }>({ + modal: 'editApp', + size: 'xl', + innerProps: { + app, + allowAppNamePropagation: false, + }, + styles: { + root: { + zIndex: 201, + }, + }, + }); + }; + + const handleClickChangePosition = () => { + openContextModalGeneric({ + modal: 'changeAppPositionModal', + innerProps: { + app, + }, + styles: { + root: { + zIndex: 201, + }, + }, + }); + }; + + const handleClickDelete = () => { + if (configName === undefined) { + return; + } + + updateConfig(configName, (previousConfig) => ({ + ...previousConfig, + apps: previousConfig.apps.filter((a) => a.id !== app.id), + })); + }; + + return ( + + ); +}; diff --git a/src/components/Dashboard/Tiles/Apps/AppPing.tsx b/src/components/Dashboard/Tiles/Apps/AppPing.tsx new file mode 100644 index 000000000..3f2a8c925 --- /dev/null +++ b/src/components/Dashboard/Tiles/Apps/AppPing.tsx @@ -0,0 +1,64 @@ +import { Indicator, Tooltip } from '@mantine/core'; +import { useQuery } from '@tanstack/react-query'; +import { motion } from 'framer-motion'; +import { useTranslation } from 'next-i18next'; +import { useConfigContext } from '../../../../config/provider'; +import { AppType } from '../../../../types/app'; + +interface AppPingProps { + app: AppType; +} + +export const AppPing = ({ app }: AppPingProps) => { + const { t } = useTranslation('modules/ping'); + const { config } = useConfigContext(); + const active = + (config?.settings.customization.layout.enabledPing && app.network.enabledStatusChecker) ?? + false; + const { data, isLoading } = useQuery({ + queryKey: [`ping/${app.id}`], + queryFn: async () => { + const response = await fetch(`/api/modules/ping?url=${encodeURI(app.url)}`); + const isOk = app.network.okStatus.includes(response.status); + return { + status: response.status, + state: isOk ? 'online' : 'down', + }; + }, + enabled: active, + }); + + const isOnline = data?.state === 'online'; + + if (!active) return null; + + return ( + + + + + + ); +}; + +type PingState = 'loading' | 'down' | 'online'; diff --git a/src/components/Dashboard/Tiles/Apps/AppTile.tsx b/src/components/Dashboard/Tiles/Apps/AppTile.tsx new file mode 100644 index 000000000..0bd65decf --- /dev/null +++ b/src/components/Dashboard/Tiles/Apps/AppTile.tsx @@ -0,0 +1,103 @@ +import { Center, Text, UnstyledButton } from '@mantine/core'; +import { NextLink } from '@mantine/next'; +import { createStyles } from '@mantine/styles'; +import { motion } from 'framer-motion'; +import { AppType } from '../../../../types/app'; +import { useCardStyles } from '../../../layout/useCardStyles'; +import { useEditModeStore } from '../../Views/useEditModeStore'; +import { HomarrCardWrapper } from '../HomarrCardWrapper'; +import { BaseTileProps } from '../type'; +import { AppMenu } from './AppMenu'; +import { AppPing } from './AppPing'; + +interface AppTileProps extends BaseTileProps { + app: AppType; +} + +export const AppTile = ({ className, app }: AppTileProps) => { + const isEditMode = useEditModeStore((x) => x.enabled); + + const { cx, classes } = useStyles(); + + const { + classes: { card: cardClass }, + } = useCardStyles(false); + + function Inner() { + return ( + <> + + {app.name} + +
+ {/* eslint-disable-next-line @next/next/no-img-element */} + +
+ + ); + } + + return ( + + + {!app.url || isEditMode ? ( + + + + ) : ( + 0 ? app.behaviour.externalUrl : app.url} + target={app.behaviour.isOpeningNewTab ? '_blank' : '_self'} + className={cx(classes.button)} + > + + + )} + + + ); +}; + +const useStyles = createStyles((theme, _params, getRef) => ({ + image: { + ref: getRef('image'), + maxHeight: '90%', + maxWidth: '90%', + }, + appName: { + ref: getRef('appName'), + }, + button: { + paddingBottom: 10, + height: '100%', + width: '100%', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + gap: 4, + }, +})); + +export const appTileDefinition = { + component: AppTile, + minWidth: 1, + minHeight: 1, + maxWidth: 12, + maxHeight: 12, +}; diff --git a/src/components/Dashboard/Tiles/EmptyTile.tsx b/src/components/Dashboard/Tiles/EmptyTile.tsx new file mode 100644 index 000000000..9fdb26db7 --- /dev/null +++ b/src/components/Dashboard/Tiles/EmptyTile.tsx @@ -0,0 +1,6 @@ +import { HomarrCardWrapper } from './HomarrCardWrapper'; +import { BaseTileProps } from './type'; + +export const EmptyTile = ({ className }: BaseTileProps) => ( + Empty +); diff --git a/src/components/Dashboard/Tiles/GenericTileMenu.tsx b/src/components/Dashboard/Tiles/GenericTileMenu.tsx new file mode 100644 index 000000000..fba87edfa --- /dev/null +++ b/src/components/Dashboard/Tiles/GenericTileMenu.tsx @@ -0,0 +1,57 @@ +import { ActionIcon, Menu } from '@mantine/core'; +import { IconDots, IconLayoutKanban, IconPencil, IconTrash } from '@tabler/icons'; +import { useTranslation } from 'next-i18next'; +import { useEditModeStore } from '../Views/useEditModeStore'; + +interface GenericTileMenuProps { + handleClickEdit: () => void; + handleClickChangePosition: () => void; + handleClickDelete: () => void; + displayEdit: boolean; +} + +export const GenericTileMenu = ({ + handleClickEdit, + handleClickChangePosition, + handleClickDelete, + displayEdit, +}: GenericTileMenuProps) => { + const { t } = useTranslation('common'); + const isEditMode = useEditModeStore((x) => x.enabled); + + if (!isEditMode) { + return null; + } + + return ( + + + + + + + + {t('sections.settings')} + {displayEdit && ( + } onClick={handleClickEdit}> + {t('edit')} + + )} + } + onClick={handleClickChangePosition} + > + {t('changePosition')} + + {t('sections.dangerZone')} + } + onClick={handleClickDelete} + > + {t('remove')} + + + + ); +}; diff --git a/src/components/Dashboard/Tiles/HomarrCardWrapper.tsx b/src/components/Dashboard/Tiles/HomarrCardWrapper.tsx new file mode 100644 index 000000000..8958667fc --- /dev/null +++ b/src/components/Dashboard/Tiles/HomarrCardWrapper.tsx @@ -0,0 +1,28 @@ +import { Card, CardProps } from '@mantine/core'; +import { ReactNode } from 'react'; +import { useCardStyles } from '../../layout/useCardStyles'; +import { useEditModeStore } from '../Views/useEditModeStore'; + +interface HomarrCardWrapperProps extends CardProps { + children: ReactNode; + isCategory?: boolean; +} + +export const HomarrCardWrapper = ({ ...props }: HomarrCardWrapperProps) => { + const { isCategory = false, ...restProps } = props; + const { + cx, + classes: { card: cardClass }, + } = useCardStyles(isCategory); + const isEditMode = useEditModeStore((x) => x.enabled); + return ( + + ); +}; diff --git a/src/components/Dashboard/Tiles/TileWrapper.tsx b/src/components/Dashboard/Tiles/TileWrapper.tsx new file mode 100644 index 000000000..8d94abdd7 --- /dev/null +++ b/src/components/Dashboard/Tiles/TileWrapper.tsx @@ -0,0 +1,73 @@ +/* eslint-disable react/no-unknown-property */ +import { ReactNode, RefObject } from 'react'; + +interface GridstackTileWrapperProps { + id: string; + type: 'app' | 'widget'; + x?: number; + y?: number; + width?: number; + height?: number; + minWidth?: number; + minHeight?: number; + maxWidth?: number; + maxHeight?: number; + itemRef: RefObject; + children: ReactNode; +} + +export const GridstackTileWrapper = ({ + id, + type, + x, + y, + width, + height, + minWidth, + minHeight, + maxWidth, + maxHeight, + children, + itemRef, +}: GridstackTileWrapperProps) => { + const locationProperties = useLocationProperties(x, y); + const normalizedWidth = width ?? minWidth; + const normalizedHeight = height ?? minHeight; + + return ( +
+ {children} +
+ ); +}; + +const useLocationProperties = (x: number | undefined, y: number | undefined) => { + const isLocationDefined = x !== undefined && y !== undefined; + + if (!isLocationDefined) { + return { + 'gs-auto-position': 'true', + }; + } + + return { + 'gs-x': x.toString(), + 'data-gridstack-x': x.toString(), + 'gs-y': y.toString(), + 'data-gridstack-y': y.toString(), + }; +}; diff --git a/src/components/Dashboard/Tiles/Widgets/WidgetsEditModal.tsx b/src/components/Dashboard/Tiles/Widgets/WidgetsEditModal.tsx new file mode 100644 index 000000000..73a8110d3 --- /dev/null +++ b/src/components/Dashboard/Tiles/Widgets/WidgetsEditModal.tsx @@ -0,0 +1,193 @@ +import { + Alert, + Button, + Group, + MultiSelect, + Stack, + Switch, + TextInput, + Text, + NumberInput, + Slider, + Select, +} from '@mantine/core'; +import { ContextModalProps } from '@mantine/modals'; +import { IconAlertTriangle } from '@tabler/icons'; +import { Trans, useTranslation } from 'next-i18next'; +import { useState } from 'react'; +import Widgets from '../../../../widgets'; +import type { IWidgetOptionValue } from '../../../../widgets/widgets'; +import { useConfigContext } from '../../../../config/provider'; +import { useConfigStore } from '../../../../config/store'; +import { IWidget } from '../../../../widgets/widgets'; +import { useColorTheme } from '../../../../tools/color'; + +export type WidgetEditModalInnerProps = { + widgetId: string; + options: IWidget['properties']; + widgetOptions: IWidget['properties']; +}; + +type IntegrationOptionsValueType = IWidget['properties'][string]; + +export const WidgetsEditModal = ({ + context, + id, + innerProps, +}: ContextModalProps) => { + const { t } = useTranslation([`modules/${innerProps.widgetId}`, 'common']); + const [moduleProperties, setModuleProperties] = useState(innerProps.options); + // const items = Object.entries(moduleProperties ?? {}) as [string, IntegrationOptionsValueType][]; + const items = Object.entries(innerProps.widgetOptions ?? {}) as [ + string, + IntegrationOptionsValueType + ][]; + + // Find the Key in the "Widgets" Object that matches the widgetId + const currentWidgetDefinition = Widgets[innerProps.widgetId as keyof typeof Widgets]; + const { name: configName } = useConfigContext(); + const updateConfig = useConfigStore((x) => x.updateConfig); + + if (!configName || !innerProps.options) return null; + + const handleChange = (key: string, value: IntegrationOptionsValueType) => { + setModuleProperties((prev) => { + const copyOfPrev: any = { ...prev }; + copyOfPrev[key] = value; + return copyOfPrev; + }); + }; + + const handleSave = () => { + updateConfig( + configName, + (prev) => { + const currentWidget = prev.widgets.find((x) => x.id === innerProps.widgetId); + currentWidget!.properties = moduleProperties; + + return { + ...prev, + widgets: [...prev.widgets.filter((x) => x.id !== innerProps.widgetId), currentWidget!], + }; + }, + true + ); + context.closeModal(id); + }; + + return ( + + {items.map(([key, _], index) => { + const option = (currentWidgetDefinition as any).options[key] as IWidgetOptionValue; + const value = moduleProperties[key] ?? option.defaultValue; + + if (!option) { + return ( + } color="red"> + + , code: }} + /> + + + ); + } + return WidgetOptionTypeSwitch(option, index, t, key, value, handleChange); + })} + + + + + + ); +}; + +// Widget switch +// Widget options are computed based on their type. +// here you can define new types for options (along with editing the widgets.d.ts file) +function WidgetOptionTypeSwitch( + option: IWidgetOptionValue, + index: number, + t: any, + key: string, + value: string | number | boolean | string[], + handleChange: (key: string, value: IntegrationOptionsValueType) => void +) { + const { primaryColor, secondaryColor } = useColorTheme(); + switch (option.type) { + case 'switch': + return ( + handleChange(key, ev.currentTarget.checked)} + /> + ); + case 'text': + return ( + handleChange(key, ev.currentTarget.value)} + /> + ); + case 'multi-select': + return ( + handleChange(key, v)} + /> + ); + case 'select': + return ( +