diff --git a/.env.example b/.env.example index 5a434dfc1..2de2526be 100644 --- a/.env.example +++ b/.env.example @@ -11,4 +11,4 @@ NEXTAUTH_SECRET="anything" # Disable analytics NEXT_PUBLIC_DISABLE_ANALYTICS="true" -DEFAULT_COLOR_SCHEME="light" \ No newline at end of file +DEFAULT_COLOR_SCHEME="light" \ No newline at end of file diff --git a/.github/workflows/docker_dev.yml b/.github/workflows/docker_dev.yml index b515dbcbd..a4322a4bf 100644 --- a/.github/workflows/docker_dev.yml +++ b/.github/workflows/docker_dev.yml @@ -112,7 +112,7 @@ jobs: if: github.event_name != 'pull_request' uses: docker/build-push-action@v4 with: - platforms: linux/amd64,linux/arm64,linux/arm/v7 + platforms: linux/amd64,linux/arm64 context: . push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} diff --git a/Dockerfile b/Dockerfile index d244cd039..f1a674f23 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,16 +32,14 @@ RUN apt update && apt install -y openssl wget # Move node_modules to temp location to avoid overwriting RUN mv node_modules _node_modules RUN rm package.json - # Install dependencies for migration RUN cp ./migrate/package.json ./package.json RUN yarn - # Copy better_sqlite3 build for current platform RUN cp /app/node_modules/better-sqlite3/build/Release/better_sqlite3.node /app/_node_modules/better-sqlite3/build/Release/better_sqlite3.node - # Copy node_modules for migration to migrate folder for migration script RUN mv node_modules ./migrate/node_modules + # Copy temp node_modules of app to app folder RUN mv _node_modules node_modules @@ -63,4 +61,4 @@ HEALTHCHECK --interval=10s --timeout=5s --start-period=5s --retries=3 \ VOLUME [ "/app/data/configs" ] VOLUME [ "/data" ] -ENTRYPOINT ["sh", "./scripts/run.sh"] +ENTRYPOINT ["sh", "./scripts/run.sh"] \ No newline at end of file diff --git a/README.md b/README.md index 52dc35460..b1ed118a1 100644 --- a/README.md +++ b/README.md @@ -73,8 +73,8 @@ Homarr will integrate with the following applications: - [NZBGet](https://homarr.dev/docs/integrations/usenet#nzbget) 📺 Media servers -- [Plex](https://homarr.dev/docs/integrations/usenet#nzbget) -- [Jellyfin](https://homarr.dev/docs/integrations/usenet#nzbget) +- [Plex](https://homarr.dev/docs/integrations/media-server/#plex) +- [Jellyfin](https://homarr.dev/docs/integrations/media-server#jellyfin-and-emby) 📚 Media collection managers - [Sonarr](https://homarr.dev/docs/integrations/servarr#sonarr) diff --git a/next-i18next.config.js b/next-i18next.config.js index 9aea1577e..8ee9c6e11 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -5,6 +5,7 @@ module.exports = { i18n: { defaultLocale: 'en', locales: [ + 'ar', 'cn', 'cr', 'cs', diff --git a/package.json b/package.json index 255df001d..7eb148800 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "0.15.3", + "version": "0.15.4", "description": "Homarr - A homepage for your server.", "license": "MIT", "repository": { @@ -19,6 +19,7 @@ "prettier:check": "prettier --check \"**/*.{ts,tsx}\"", "prettier:write": "prettier --write \"**/*.{ts,tsx}\"", "test": "SKIP_ENV_VALIDATION=1 vitest", + "test:docker": "yarn run turbo build && yarn test:run && docker build . -t homarr:local-dev && docker run -p 7575:7575 --name homarr-dev homarr:local-dev", "test:ui": "SKIP_ENV_VALIDATION=1 vitest --ui", "test:run": "SKIP_ENV_VALIDATION=1 vitest run", "test:coverage": "SKIP_ENV_VALIDATION=1 vitest run --coverage", @@ -71,6 +72,7 @@ "@trpc/server": "^10.37.1", "@types/bcryptjs": "^2.4.2", "@vitejs/plugin-react": "^4.0.0", + "adm-zip": "^0.5.15", "axios": "^1.0.0", "bcryptjs": "^2.4.3", "better-sqlite3": "^8.6.0", @@ -119,6 +121,7 @@ "@next/eslint-plugin-next": "^13.4.5", "@testing-library/react": "^14.0.0", "@trivago/prettier-plugin-sort-imports": "^4.2.0", + "@types/adm-zip": "^0.5.5", "@types/better-sqlite3": "^7.6.5", "@types/cookies": "^0.7.7", "@types/dockerode": "^3.3.9", @@ -241,4 +244,4 @@ ] } } -} \ No newline at end of file +} diff --git a/public/locales/cn/common.json b/public/locales/cn/common.json index 901d86599..fe953c036 100644 --- a/public/locales/cn/common.json +++ b/public/locales/cn/common.json @@ -17,6 +17,7 @@ "disabled": "已禁用", "enableAll": "全部启用", "disableAll": "全部禁用", + "setTimer": "设置计时器", "version": "版本", "changePosition": "换位", "remove": "删除", diff --git a/public/locales/cn/layout/modals/add-app.json b/public/locales/cn/layout/modals/add-app.json index 0c5a68798..a3e2a7e4d 100644 --- a/public/locales/cn/layout/modals/add-app.json +++ b/public/locales/cn/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "外部地址", - "description": "点击应用时打开的网址。" + "description": "点击应用时打开的网址。", + "tooltip": "您可以使用几个变量来创建动态地址:

[homarr_base]: 不包括端口和路径的完整地址。(例如:'https://subdomain.homarr.dev')
[homarr_hostname]: 完整的基本网址,包括当前的子域。(例如:'subdomain.homarr.dev')
[homarr_domain]: 域名,已过滤子域。(例如:\"homarr.dev\")
[homarr_protocol]:http/https

这些变量都取决于当前网址。" } }, "behaviour": { diff --git a/public/locales/cn/modules/dns-hole-controls.json b/public/locales/cn/modules/dns-hole-controls.json index 7828a632f..e2c7dab5f 100644 --- a/public/locales/cn/modules/dns-hole-controls.json +++ b/public/locales/cn/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "到DNS漏洞的连接有问题。请验证您的配置/集成设置。" } } + }, + "durationModal": { + "title": "设置禁用时长", + "hours": "时", + "minutes": "分", + "unlimited": "留空表示无限制", + "set": "设置" } } \ No newline at end of file diff --git a/public/locales/cn/modules/health-monitoring.json b/public/locales/cn/modules/health-monitoring.json index dc3a5d023..6c344714a 100644 --- a/public/locales/cn/modules/health-monitoring.json +++ b/public/locales/cn/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "运行时间", - "uptimeFormat": "{{days}} 天, {{hours}} 小时", + "uptimeFormat": "{{days}} 天, {{hours}} 小时, {{minutes}} 分钟", "updates": "可用更新", "reboot": "重启" }, diff --git a/public/locales/cn/modules/indexer-manager.json b/public/locales/cn/modules/indexer-manager.json index eb9d92813..cc73b31fa 100644 --- a/public/locales/cn/modules/indexer-manager.json +++ b/public/locales/cn/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "索引器管理状态", "description": "有关索引器的状态", "settings": { - "title": "索引器管理状态" + "title": "索引器管理状态", + "openIndexerSiteInNewTab": { + "label": "在新选项卡中打开索引器站点" + } } }, "indexersStatus": { diff --git a/public/locales/cr/common.json b/public/locales/cr/common.json index d7212edf0..ce74e26cf 100644 --- a/public/locales/cr/common.json +++ b/public/locales/cr/common.json @@ -17,6 +17,7 @@ "disabled": "crwdns2885:0crwdne2885:0", "enableAll": "crwdns2887:0crwdne2887:0", "disableAll": "crwdns2889:0crwdne2889:0", + "setTimer": "crwdns4484:0crwdne4484:0", "version": "crwdns2023:0crwdne2023:0", "changePosition": "crwdns2025:0crwdne2025:0", "remove": "crwdns2027:0crwdne2027:0", diff --git a/public/locales/cr/layout/modals/add-app.json b/public/locales/cr/layout/modals/add-app.json index d801870f8..f90b93b38 100644 --- a/public/locales/cr/layout/modals/add-app.json +++ b/public/locales/cr/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "crwdns2067:0crwdne2067:0", - "description": "crwdns2309:0crwdne2309:0" + "description": "crwdns2309:0crwdne2309:0", + "tooltip": "crwdns4482:0crwdne4482:0" } }, "behaviour": { diff --git a/public/locales/cr/modules/dns-hole-controls.json b/public/locales/cr/modules/dns-hole-controls.json index 785317f45..ef851977f 100644 --- a/public/locales/cr/modules/dns-hole-controls.json +++ b/public/locales/cr/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "crwdns3862:0crwdne3862:0" } } + }, + "durationModal": { + "title": "crwdns4486:0crwdne4486:0", + "hours": "crwdns4488:0crwdne4488:0", + "minutes": "crwdns4490:0crwdne4490:0", + "unlimited": "crwdns4492:0crwdne4492:0", + "set": "crwdns4494:0crwdne4494:0" } } \ No newline at end of file diff --git a/public/locales/cr/modules/health-monitoring.json b/public/locales/cr/modules/health-monitoring.json index 1a1eb2719..334e8d33e 100644 --- a/public/locales/cr/modules/health-monitoring.json +++ b/public/locales/cr/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "crwdns4226:0crwdne4226:0", - "uptimeFormat": "crwdns4310:0{{days}}crwdnd4310:0{{hours}}crwdne4310:0", + "uptimeFormat": "crwdns4498:0{{days}}crwdnd4498:0{{hours}}crwdnd4498:0{{minutes}}crwdne4498:0", "updates": "crwdns4312:0crwdne4312:0", "reboot": "crwdns4230:0crwdne4230:0" }, diff --git a/public/locales/cr/modules/indexer-manager.json b/public/locales/cr/modules/indexer-manager.json index 57d43abf3..91a58a76b 100644 --- a/public/locales/cr/modules/indexer-manager.json +++ b/public/locales/cr/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "crwdns4188:0crwdne4188:0", "description": "crwdns4190:0crwdne4190:0", "settings": { - "title": "crwdns4192:0crwdne4192:0" + "title": "crwdns4192:0crwdne4192:0", + "openIndexerSiteInNewTab": { + "label": "crwdns4496:0crwdne4496:0" + } } }, "indexersStatus": { diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 250cca079..c3ceaf4ad 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -17,6 +17,7 @@ "disabled": "Vypnuto", "enableAll": "Aktivovat vše", "disableAll": "Zakázat vše", + "setTimer": "Nastavit časovat", "version": "Verze", "changePosition": "Změnit pozici", "remove": "Odstranit", diff --git a/public/locales/cs/layout/modals/add-app.json b/public/locales/cs/layout/modals/add-app.json index f2dab0eb8..548f59fe3 100644 --- a/public/locales/cs/layout/modals/add-app.json +++ b/public/locales/cs/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Veřejná adresa", - "description": "URL která bude otevřena po kliknutí na aplikaci." + "description": "URL která bude otevřena po kliknutí na aplikaci.", + "tooltip": "Můžete použít několik proměnných k vytvoření dynamických adres:

[homarr_base] : plná adresa bez portu a cesty. (Příklad: 'https://subdomain.homarr.dev')
[homarr_hostname] : plná základní url včetně její aktuální subdomény. (Příklad: 'subdomain.homarr.dev')
[homarr_domain] : doména bez subdomény. (Příklad: `homarr.dev')
[homarr_protocol] : http/https

Všechny tyto proměnné závisejí na aktuální url adrese." } }, "behaviour": { diff --git a/public/locales/cs/modules/dns-hole-controls.json b/public/locales/cs/modules/dns-hole-controls.json index 4bd1c271e..41fc254ab 100644 --- a/public/locales/cs/modules/dns-hole-controls.json +++ b/public/locales/cs/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Došlo k problému s připojením k Vaší DNS Hole. Ověřte prosím svou konfiguraci." } } + }, + "durationModal": { + "title": "Nastavit dobu trvání deaktivace", + "hours": "Hodin", + "minutes": "Minut", + "unlimited": "ponechte prázdne pro neomezenou dobu", + "set": "Nastavit" } } \ No newline at end of file diff --git a/public/locales/cs/modules/health-monitoring.json b/public/locales/cs/modules/health-monitoring.json index 0db0b942f..ec6ca64cc 100644 --- a/public/locales/cs/modules/health-monitoring.json +++ b/public/locales/cs/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "Doba provozu", - "uptimeFormat": "{{days}} dny/ů, {{hours}} hodin/a/y", + "uptimeFormat": "{{days}} dní, {{hours}} hodin, {{minutes}} minut", "updates": "Dostupné aktualizace", "reboot": "Restartovat" }, diff --git a/public/locales/cs/modules/indexer-manager.json b/public/locales/cs/modules/indexer-manager.json index dd2e9a365..d8e0206fa 100644 --- a/public/locales/cs/modules/indexer-manager.json +++ b/public/locales/cs/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Stav správce indexeru", "description": "Stav Vašich indexerů", "settings": { - "title": "Stav správce indexeru" + "title": "Stav správce indexeru", + "openIndexerSiteInNewTab": { + "label": "Otevírat stránku indexeru na nové kartě" + } } }, "indexersStatus": { diff --git a/public/locales/da/common.json b/public/locales/da/common.json index 5525065f3..27bf98bf2 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -17,6 +17,7 @@ "disabled": "Deaktiveret", "enableAll": "Aktiver alle", "disableAll": "Deaktiver alle", + "setTimer": "Sæt timer", "version": "Version", "changePosition": "Ændre placering", "remove": "Fjern", diff --git a/public/locales/da/layout/modals/add-app.json b/public/locales/da/layout/modals/add-app.json index 531f4d7ee..486304b38 100644 --- a/public/locales/da/layout/modals/add-app.json +++ b/public/locales/da/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Ekstern adresse", - "description": "URL-adresse, der åbnes, når du klikker på appen." + "description": "URL-adresse, der åbnes, når du klikker på appen.", + "tooltip": "Du kan bruge nogle få variabler til at oprette dynamiske adresser:

[homarr_base]: fuld adresse uden port og sti. (Eksempel: 'https://subdomain.homarr.dev')
[homarr_hostname]: fuld base-url inklusive det aktuelle subdomæne. (Eksempel: ' subdomain.homarr.dev')
[homarr_domain]: domæne med subdomæne filtreret ud. (Eksempel: `homarr.dev')
[homarr_protocol]: http/https

Disse variabler afhænger alle af den aktuelle url." } }, "behaviour": { diff --git a/public/locales/da/modules/dns-hole-controls.json b/public/locales/da/modules/dns-hole-controls.json index 1cf0154c4..6d96e8a8d 100644 --- a/public/locales/da/modules/dns-hole-controls.json +++ b/public/locales/da/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Der opstod et problem med at oprette forbindelse til dit/dine DNS-hul(ler). Bekræft venligst din(e) konfiguration(er)/integration(er)." } } + }, + "durationModal": { + "title": "Indstil varighed af deaktivering", + "hours": "Timer", + "minutes": "Minutter", + "unlimited": "lad være tom for ubegrænset", + "set": "Indstil" } } \ No newline at end of file diff --git a/public/locales/da/modules/health-monitoring.json b/public/locales/da/modules/health-monitoring.json index 9e35bf02f..02a76c2f9 100644 --- a/public/locales/da/modules/health-monitoring.json +++ b/public/locales/da/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "Oppetid", - "uptimeFormat": "{{days}} dage, {{hours}} timer", + "uptimeFormat": "{{days}} dage, {{hours}} timer, {{minutes}} minutter", "updates": "Opdateringer tilgængelige", "reboot": "Genstart" }, diff --git a/public/locales/da/modules/indexer-manager.json b/public/locales/da/modules/indexer-manager.json index f03abb67f..e6fba14bd 100644 --- a/public/locales/da/modules/indexer-manager.json +++ b/public/locales/da/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Indekserings manager status", "description": "Status for dine indekser", "settings": { - "title": "Indekserings manager status" + "title": "Indekserings manager status", + "openIndexerSiteInNewTab": { + "label": "Åbn Indekseringswebsted I Nyt Faneblad" + } } }, "indexersStatus": { diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 20f5aa02a..1bc659ed3 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -17,6 +17,7 @@ "disabled": "Deaktiviert", "enableAll": "Alle aktivieren", "disableAll": "Alles deaktivieren", + "setTimer": "Timer festlegen", "version": "Version", "changePosition": "Position wechseln", "remove": "Entfernen", diff --git a/public/locales/de/layout/modals/add-app.json b/public/locales/de/layout/modals/add-app.json index 1b4a9f19e..2d462351f 100644 --- a/public/locales/de/layout/modals/add-app.json +++ b/public/locales/de/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Externe Adresse", - "description": "URL, die beim Anklicken der App geöffnet wird." + "description": "URL, die beim Anklicken der App geöffnet wird.", + "tooltip": "Sie können einige Variablen verwenden, um dynamische Adressen zu erstellen:

[homarr_base] : vollständige Adresse ohne Port und Pfad. (Beispiel: „https://subdomain.homarr.dev“)
[homarr_hostname] : vollständige Basis-URL einschließlich der aktuellen Subdomäne. (Beispiel: „subdomain.homarr.dev“)
[homarr_domain] : Domäne mit herausgefilterter Subdomäne. (Beispiel: „homarr.dev“)
[homarr_protocol] : http/https

Diese Variablen hängen alle von der aktuellen URL ab." } }, "behaviour": { diff --git a/public/locales/de/modules/dns-hole-controls.json b/public/locales/de/modules/dns-hole-controls.json index 9bba851bb..13cc611a9 100644 --- a/public/locales/de/modules/dns-hole-controls.json +++ b/public/locales/de/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Es gab ein Problem bei der Verbindung zu Ihrem DNS Hole(s). Bitte überprüfen Sie Ihre Konfiguration/Integration(en)." } } + }, + "durationModal": { + "title": "Deaktivierungsdauer festlegen", + "hours": "Stunden", + "minutes": "Minuten", + "unlimited": "leer lassen für unbegrenzt", + "set": "Speichern" } } \ No newline at end of file diff --git a/public/locales/de/modules/health-monitoring.json b/public/locales/de/modules/health-monitoring.json index 22246ac92..a9bde524a 100644 --- a/public/locales/de/modules/health-monitoring.json +++ b/public/locales/de/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "Betriebszeit", - "uptimeFormat": "{{days}} Tage, {{hours}} Stunden", + "uptimeFormat": "{{days}} Tage, {{hours}} Stunden, {{minutes}} Minuten", "updates": "Updates verfügbar", "reboot": "Neustart" }, diff --git a/public/locales/de/modules/indexer-manager.json b/public/locales/de/modules/indexer-manager.json index 1958e5ffe..e7de6158d 100644 --- a/public/locales/de/modules/indexer-manager.json +++ b/public/locales/de/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Status des Indexer-Managers", "description": "Status ihrer Indexer", "settings": { - "title": "Status des Indexer-Managers" + "title": "Status des Indexer-Managers", + "openIndexerSiteInNewTab": { + "label": "Indexer in neuem Tab öffnen" + } } }, "indexersStatus": { diff --git a/public/locales/de/modules/smart-home/entity-state.json b/public/locales/de/modules/smart-home/entity-state.json index 501cedf5d..aaf109afa 100644 --- a/public/locales/de/modules/smart-home/entity-state.json +++ b/public/locales/de/modules/smart-home/entity-state.json @@ -22,11 +22,11 @@ }, "displayFriendlyName": { "label": "Benutzerdefinierten Namen anzeigen", - "info": "" + "info": "Zeige Benutzerdefinierten Namen anstatt des Anzeigenamen vom Home-Assistent an." }, "genericToggle": { - "label": "", - "info": "" + "label": "Entität umschalten", + "info": "Führen Sie beim Klicken eine Home Assistant-Umschaltaktion für die Entität aus." } } } diff --git a/public/locales/el/common.json b/public/locales/el/common.json index 9fc5dc816..9007a5821 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -17,6 +17,7 @@ "disabled": "Απενεργοποιημένο", "enableAll": "Ενεργοποίηση όλων", "disableAll": "Απενεργοποίηση όλων", + "setTimer": "Ορισμός Χρονοδιακόπτη", "version": "Έκδοση", "changePosition": "Αλλαγή θέσης", "remove": "Αφαίρεση", diff --git a/public/locales/el/layout/modals/add-app.json b/public/locales/el/layout/modals/add-app.json index 348cd18fb..4bcc43e0a 100644 --- a/public/locales/el/layout/modals/add-app.json +++ b/public/locales/el/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Εξωτερική διεύθυνση", - "description": "URL που θα ανοίγει όταν κάνετε κλικ στην εφαρμογή." + "description": "URL που θα ανοίγει όταν κάνετε κλικ στην εφαρμογή.", + "tooltip": "Μπορείτε να χρησιμοποιήσετε μερικές μεταβλητές για να δημιουργήσετε δυναμικές διευθύνσεις:

[homarr_base]: πλήρης διεύθυνση χωρίς τη πόρτα και τη διαδρομή. (Παράδειγμα: 'https://subdomain.homarr.dev')
[homarr_hostname]: πλήρες url βάσης συμπεριλαμβανομένου του τρέχοντος subdomain. (Παράδειγμα: 'subdomain.homarr.dev')
[homarr_domain]: domain χωρίς το subdomoain. (Παράδειγμα: `homarr.dev')
[homarr_protocol]: http/https

Όλες αυτές οι μεταβλητές εξαρτώνται από το τρέχον url." } }, "behaviour": { diff --git a/public/locales/el/modules/dns-hole-controls.json b/public/locales/el/modules/dns-hole-controls.json index 4d7e9fd48..88d2fe736 100644 --- a/public/locales/el/modules/dns-hole-controls.json +++ b/public/locales/el/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Υπήρξε ένα πρόβλημα κατά τη σύνδεση στο/α DNS Hole(s) σας. Παρακαλώ επαληθεύστε τις ρυθμίσεις / ενσωμάτωση." } } + }, + "durationModal": { + "title": "Ρύθμιση χρόνου απενεργοποίησης", + "hours": "Ώρες", + "minutes": "Λεπτά", + "unlimited": "αφήστε κενό για απεριόριστο", + "set": "Ορισμός" } } \ No newline at end of file diff --git a/public/locales/el/modules/health-monitoring.json b/public/locales/el/modules/health-monitoring.json index 5f256c95e..eb28b29f8 100644 --- a/public/locales/el/modules/health-monitoring.json +++ b/public/locales/el/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "Χρόνος Λειτουργίας", - "uptimeFormat": "{{days}} ημέρες, {{hours}} ώρες", + "uptimeFormat": "", "updates": "Διαθέσιμες ενημερώσεις", "reboot": "Επανεκκίνηση" }, diff --git a/public/locales/el/modules/indexer-manager.json b/public/locales/el/modules/indexer-manager.json index 86268695e..77ff9554b 100644 --- a/public/locales/el/modules/indexer-manager.json +++ b/public/locales/el/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Κατάσταση διαχειριστή indexer", "description": "Κατάσταση σχετικά με τους indexers σας", "settings": { - "title": "Κατάσταση διαχειριστή indexer" + "title": "Κατάσταση διαχειριστή indexer", + "openIndexerSiteInNewTab": { + "label": "Άνοιγμα του Indexer ιστότοπου σε νέα καρτέλα" + } } }, "indexersStatus": { diff --git a/public/locales/el/modules/smart-home/entity-state.json b/public/locales/el/modules/smart-home/entity-state.json index 6b33912c0..05c185380 100644 --- a/public/locales/el/modules/smart-home/entity-state.json +++ b/public/locales/el/modules/smart-home/entity-state.json @@ -22,11 +22,11 @@ }, "displayFriendlyName": { "label": "Εμφάνιση φιλικού ονόματος", - "info": "" + "info": "Εμφάνιση φιλικού ονόματος από το Home Assistant αντί για το εμφανιζόμενο όνομα." }, "genericToggle": { - "label": "", - "info": "" + "label": "Εναλλαγή οντοτήτων", + "info": "Εκτέλεση εναλλαγής στην οντότητα του Home Assistant όταν κάνετε κλικ." } } } diff --git a/public/locales/en/common.json b/public/locales/en/common.json index bebc69de8..3f3b56922 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -17,6 +17,7 @@ "disabled": "Disabled", "enableAll": "Enable all", "disableAll": "Disable all", + "setTimer": "Set timer", "version": "Version", "changePosition": "Change position", "remove": "Remove", diff --git a/public/locales/en/modules/dns-hole-controls.json b/public/locales/en/modules/dns-hole-controls.json index 2059f802a..562bf62af 100644 --- a/public/locales/en/modules/dns-hole-controls.json +++ b/public/locales/en/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "There was a problem connecting to your DNS Hole(s). Please verify your configuration/integration(s)." } } + }, + "durationModal": { + "title": "Set disable duration time", + "hours": "Hours", + "minutes": "Minutes", + "unlimited": "leave empty for unlimited", + "set": "Set" } } \ No newline at end of file diff --git a/public/locales/en/modules/health-monitoring.json b/public/locales/en/modules/health-monitoring.json index be6e085e4..933386e80 100644 --- a/public/locales/en/modules/health-monitoring.json +++ b/public/locales/en/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "Uptime", - "uptimeFormat": "{{days}} days, {{hours}} hours", + "uptimeFormat": "{{days}} days, {{hours}} hours, {{minutes}} minutes", "updates": "Updates Available", "reboot": "Reboot" }, diff --git a/public/locales/en/modules/indexer-manager.json b/public/locales/en/modules/indexer-manager.json index 051593223..587eac0b1 100644 --- a/public/locales/en/modules/indexer-manager.json +++ b/public/locales/en/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Indexer manager status", "description": "Status about your indexers", "settings": { - "title": "Indexer manager status" + "title": "Indexer manager status", + "openIndexerSiteInNewTab": { + "label": "Open Indexer Site In New Tab" + } } }, "indexersStatus": { diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 7f9cf06a6..df7f0bf6b 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -17,6 +17,7 @@ "disabled": "Desactivado", "enableAll": "Activar todo", "disableAll": "Desactivar todo", + "setTimer": "", "version": "Versión", "changePosition": "Cambiar posición", "remove": "Eliminar", diff --git a/public/locales/es/layout/modals/add-app.json b/public/locales/es/layout/modals/add-app.json index aa14009f3..bf5306996 100644 --- a/public/locales/es/layout/modals/add-app.json +++ b/public/locales/es/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Dirección externa", - "description": "URL que se abrirá al hacer clic en la aplicación." + "description": "URL que se abrirá al hacer clic en la aplicación.", + "tooltip": "" } }, "behaviour": { diff --git a/public/locales/es/modules/dns-hole-controls.json b/public/locales/es/modules/dns-hole-controls.json index 334649e77..ec08dafe2 100644 --- a/public/locales/es/modules/dns-hole-controls.json +++ b/public/locales/es/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Hubo un problema al conectarse a tus agujeros DNS. Verifica tu configuración/integración(es)." } } + }, + "durationModal": { + "title": "", + "hours": "", + "minutes": "", + "unlimited": "", + "set": "" } } \ No newline at end of file diff --git a/public/locales/es/modules/indexer-manager.json b/public/locales/es/modules/indexer-manager.json index 9b01e3093..931454027 100644 --- a/public/locales/es/modules/indexer-manager.json +++ b/public/locales/es/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "", "description": "", "settings": { - "title": "" + "title": "", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/et/common.json b/public/locales/et/common.json index 273eab357..7fcc60495 100644 --- a/public/locales/et/common.json +++ b/public/locales/et/common.json @@ -17,6 +17,7 @@ "disabled": "", "enableAll": "", "disableAll": "", + "setTimer": "", "version": "", "changePosition": "", "remove": "", diff --git a/public/locales/et/layout/modals/add-app.json b/public/locales/et/layout/modals/add-app.json index f5a7aa4ea..61b551914 100644 --- a/public/locales/et/layout/modals/add-app.json +++ b/public/locales/et/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "", - "description": "" + "description": "", + "tooltip": "" } }, "behaviour": { diff --git a/public/locales/et/modules/dns-hole-controls.json b/public/locales/et/modules/dns-hole-controls.json index 3bf25c924..c8f2e0756 100644 --- a/public/locales/et/modules/dns-hole-controls.json +++ b/public/locales/et/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "" } } + }, + "durationModal": { + "title": "", + "hours": "", + "minutes": "", + "unlimited": "", + "set": "" } } \ No newline at end of file diff --git a/public/locales/et/modules/indexer-manager.json b/public/locales/et/modules/indexer-manager.json index 9b01e3093..931454027 100644 --- a/public/locales/et/modules/indexer-manager.json +++ b/public/locales/et/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "", "description": "", "settings": { - "title": "" + "title": "", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 522a013aa..93387a132 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -17,6 +17,7 @@ "disabled": "Désactivé", "enableAll": "Activer tout", "disableAll": "Désactiver tout", + "setTimer": "Définir le minuteur", "version": "Version", "changePosition": "Modifier la position", "remove": "Supprimer", diff --git a/public/locales/fr/layout/modals/add-app.json b/public/locales/fr/layout/modals/add-app.json index c78bb0c9d..01580aa0a 100644 --- a/public/locales/fr/layout/modals/add-app.json +++ b/public/locales/fr/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Adresse externe", - "description": "URL qui sera ouverte dans le navigateur lorsque l'on clique sur l'application." + "description": "URL qui sera ouverte dans le navigateur lorsque l'on clique sur l'application.", + "tooltip": "Vous pouvez utiliser quelques variables pour créer des adresses dynamiques :

[homarr_base]: adresse complète sans le port et le chemin. (Exemple : 'https://subdomain.homarr.dev')
[homarr_hostname]: url de base complète incluant son sous-domaine actuel. (Exemple : 'subdomain.homarr.dev')
[homarr_domain]: domaine dont le sous-domaine est filtré. (Exemple : `homarr.dev')
[homarr_protocol]: http/https

Ces variables dépendent toutes de l'url courante." } }, "behaviour": { diff --git a/public/locales/fr/modules/dns-hole-controls.json b/public/locales/fr/modules/dns-hole-controls.json index 4ec23c3ed..d4fedb5ef 100644 --- a/public/locales/fr/modules/dns-hole-controls.json +++ b/public/locales/fr/modules/dns-hole-controls.json @@ -11,8 +11,15 @@ "errors": { "general": { "title": "Impossible de trouver un DNS hole", - "text": "Il y a un problème de connexion à votre/vos DNS hole(s). Veuillez vérifier votre/vos configuration/iintégration(s)." + "text": "Il y a un problème de connexion à votre/vos DNS hole(s). Veuillez vérifier votre/vos configuration/intégration(s)." } } + }, + "durationModal": { + "title": "Définir la durée de désactivation", + "hours": "Heures", + "minutes": "Minutes", + "unlimited": "laisser vide pour illimité", + "set": "Définir" } } \ No newline at end of file diff --git a/public/locales/fr/modules/health-monitoring.json b/public/locales/fr/modules/health-monitoring.json index e50b9c629..395de45de 100644 --- a/public/locales/fr/modules/health-monitoring.json +++ b/public/locales/fr/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "Temps de disponibilité", - "uptimeFormat": "{{days}} jours, {{hours}} heures", + "uptimeFormat": "{{days}} jours, {{hours}} heures, {{minutes}} minutes", "updates": "Mises à jour disponibles", "reboot": "Redémarrage" }, diff --git a/public/locales/fr/modules/indexer-manager.json b/public/locales/fr/modules/indexer-manager.json index a36d3d812..edd707f68 100644 --- a/public/locales/fr/modules/indexer-manager.json +++ b/public/locales/fr/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Statut du gestionnaire d’indexeur", "description": "Statuts de vos indexeurs", "settings": { - "title": "Statut du gestionnaire d’indexeur" + "title": "Statut du gestionnaire d’indexeur", + "openIndexerSiteInNewTab": { + "label": "Ouvrir le site de l'indexeur dans un nouvel onglet" + } } }, "indexersStatus": { diff --git a/public/locales/fr/modules/media-transcoding.json b/public/locales/fr/modules/media-transcoding.json index eb5c63a64..2a6444c73 100644 --- a/public/locales/fr/modules/media-transcoding.json +++ b/public/locales/fr/modules/media-transcoding.json @@ -5,92 +5,92 @@ "settings": { "title": "Paramètres de transcodage des médias", "appId": { - "label": "" + "label": "Sélectionner une application" }, "defaultView": { - "label": "", + "label": "Affichage par défaut", "data": { - "workers": "", + "workers": "Travailleurs", "queue": "File d'attente", - "statistics": "" + "statistics": "Statistiques" } }, "showHealthCheck": { - "label": "" + "label": "Afficher l'indicateur de bilan de santé" }, "showHealthChecksInQueue": { - "label": "" + "label": "Afficher les diagnostics dans la file d'attente" }, "queuePageSize": { - "label": "" + "label": "File d'attente : éléments par page" }, "showAppIcon": { - "label": "" + "label": "Afficher l'icône de l'application dans le coin inférieur droit" } } }, - "noAppSelected": "", + "noAppSelected": "Sélectionnez une application dans les paramètres du widget", "views": { "workers": { "table": { "header": { - "name": "", + "name": "Fichier", "eta": "ETA", "progress": "Progrès" }, "empty": "Vide", "tooltip": { - "transcode": "", - "healthCheck": "" + "transcode": "Transcodeur", + "healthCheck": "État des services" } } }, "queue": { "table": { "header": { - "name": "", + "name": "Fichier", "size": "Taille" }, "footer": { - "currentIndex": "" + "currentIndex": "{{start}}-{{end}} de {{total}}" }, "empty": "Vide", "tooltip": { - "transcode": "", - "healthCheck": "" + "transcode": "Transcodeur", + "healthCheck": "État des services" } } }, "statistics": { "empty": "Vide", "box": { - "transcodes": "", - "healthChecks": "", - "files": "", - "spaceSaved": "" + "transcodes": "Transcodes : {{value}}", + "healthChecks": "Diagnostiques complets : {{value}}", + "files": "Fichiers : {{value}}", + "spaceSaved": "Sauvegardé : {{value}}" }, "pies": { - "transcodes": "", - "healthChecks": "", - "videoCodecs": "", - "videoContainers": "", - "videoResolutions": "" + "transcodes": "Transcodeur", + "healthChecks": "Diagnostics", + "videoCodecs": "Codecs", + "videoContainers": "Conteneurs", + "videoResolutions": "Résolutions" } } }, "error": { "title": "Erreur", - "message": "" + "message": "Une erreur s'est produite lors de la récupération des données depuis Tdarr." }, "tabs": { - "workers": "", + "workers": "Travailleurs", "queue": "File d'attente", - "statistics": "" + "statistics": "Statistiques" }, "healthCheckStatus": { - "title": "", - "queued": "", - "healthy": "", - "unhealthy": "" + "title": "État des services", + "queued": "En file d’attente", + "healthy": "Sain", + "unhealthy": "Dysfonctionnement" } } diff --git a/public/locales/fr/modules/smart-home/entity-state.json b/public/locales/fr/modules/smart-home/entity-state.json index 742db046b..4f44170bd 100644 --- a/public/locales/fr/modules/smart-home/entity-state.json +++ b/public/locales/fr/modules/smart-home/entity-state.json @@ -22,11 +22,11 @@ }, "displayFriendlyName": { "label": "Afficher le nom personnalisé", - "info": "" + "info": "Afficher le nom personnalisé de Home Assistant au lieu du nom d'affichage." }, "genericToggle": { - "label": "", - "info": "" + "label": "Activer/Désactiver l'entité", + "info": "Effectuez une activation/désactivation de Home Assistant sur l'entité lorsque vous cliquez dessus." } } } diff --git a/public/locales/he/common.json b/public/locales/he/common.json index d61704d22..a9cc3fe5d 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -17,6 +17,7 @@ "disabled": "מושבת", "enableAll": "אפשר הכל", "disableAll": "השבת הכל", + "setTimer": "הגדר שעון עצר", "version": "גרסה", "changePosition": "שנה מיקום", "remove": "הסר", diff --git a/public/locales/he/layout/modals/add-app.json b/public/locales/he/layout/modals/add-app.json index c8fe619d6..1e37bbb20 100644 --- a/public/locales/he/layout/modals/add-app.json +++ b/public/locales/he/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "כתובת חיצונית", - "description": "כתובת אינטרנט שתיפתח בעת לחיצה על האפליקציה." + "description": "כתובת אינטרנט שתיפתח בעת לחיצה על האפליקציה.", + "tooltip": "אתה יכול להשתמש במספר משתנים כדי ליצור כתובות דינמיות:

[homarr_base] : כתובת מלאה לא כולל יציאה ונתיב. (דוגמה: 'https://subdomain.homarr.dev')
[homarr_hostname] : כתובת אתר בסיס מלאה כולל תת-הדומיין הנוכחי שלו. (דוגמה: 'subdomain.homarr.dev')
[homarr_domain] : דומיין עם תת-דומיין מסונן. (דוגמה: `homarr.dev')
[homarr_protocol] : http/https

המשתנים האלה תלויים כולם בכתובת האתר הנוכחית." } }, "behaviour": { diff --git a/public/locales/he/modules/dns-hole-controls.json b/public/locales/he/modules/dns-hole-controls.json index a96121397..c529dd389 100644 --- a/public/locales/he/modules/dns-hole-controls.json +++ b/public/locales/he/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "לא הייתה אפשרות להתחבר לשרת שמות דומיין. נא לבדוק את הגדרות האינטגרציה." } } + }, + "durationModal": { + "title": "הגדר את משך זמן ההשבתה", + "hours": "שעות", + "minutes": "דקות", + "unlimited": "להשאיר ריק ללא הגבלה", + "set": "הגדר" } } \ No newline at end of file diff --git a/public/locales/he/modules/health-monitoring.json b/public/locales/he/modules/health-monitoring.json index 66d407c0b..3fcc3f157 100644 --- a/public/locales/he/modules/health-monitoring.json +++ b/public/locales/he/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "זמן פעילות", - "uptimeFormat": "{{days}} ימים, {{hours}} שעות", + "uptimeFormat": "{{days}} ימים, {{hours}} שעות, {{minutes}} דקות", "updates": "עדכונים זמינים", "reboot": "אתחול מחדש" }, diff --git a/public/locales/he/modules/indexer-manager.json b/public/locales/he/modules/indexer-manager.json index 90b6aeeba..2154c247c 100644 --- a/public/locales/he/modules/indexer-manager.json +++ b/public/locales/he/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "סטטוס מנהל אינדקס", "description": "סטטוס לגבי האינדקסים שלך", "settings": { - "title": "סטטוס מנהל אינדקס" + "title": "סטטוס מנהל אינדקס", + "openIndexerSiteInNewTab": { + "label": "פתח את אתר האינדקס בכרטיסייה חדשה" + } } }, "indexersStatus": { diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index d8fa7ee6e..3b84da90d 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -17,6 +17,7 @@ "disabled": "Onemogućeno", "enableAll": "Omogući sve", "disableAll": "Onemogući sve", + "setTimer": "", "version": "Verzija", "changePosition": "Promijenjen položaj", "remove": "Ukloni", diff --git a/public/locales/hr/layout/modals/add-app.json b/public/locales/hr/layout/modals/add-app.json index b8646fa69..6a8ac0323 100644 --- a/public/locales/hr/layout/modals/add-app.json +++ b/public/locales/hr/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Vanjska adresa", - "description": "URL koji će se otvoriti prilikom klika na aplikaciju." + "description": "URL koji će se otvoriti prilikom klika na aplikaciju.", + "tooltip": "" } }, "behaviour": { diff --git a/public/locales/hr/modules/dns-hole-controls.json b/public/locales/hr/modules/dns-hole-controls.json index 118e6d75a..6bbcd55d5 100644 --- a/public/locales/hr/modules/dns-hole-controls.json +++ b/public/locales/hr/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Došlo je do problema pri povezivanju s vašim DNS rupama. Provjerite svoju konfiguraciju/integraciju(e)." } } + }, + "durationModal": { + "title": "", + "hours": "", + "minutes": "", + "unlimited": "", + "set": "" } } \ No newline at end of file diff --git a/public/locales/hr/modules/indexer-manager.json b/public/locales/hr/modules/indexer-manager.json index 9b01e3093..931454027 100644 --- a/public/locales/hr/modules/indexer-manager.json +++ b/public/locales/hr/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "", "description": "", "settings": { - "title": "" + "title": "", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index 56d93b517..e7b8877d7 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -17,6 +17,7 @@ "disabled": "Letiltva", "enableAll": "Összes engedélyezése", "disableAll": "Az összes tiltása", + "setTimer": "Időzítő beállítása", "version": "Verzió", "changePosition": "Pozíció módosítása", "remove": "Eltávolítás", diff --git a/public/locales/hu/layout/modals/add-app.json b/public/locales/hu/layout/modals/add-app.json index b68782ad6..373af2b08 100644 --- a/public/locales/hu/layout/modals/add-app.json +++ b/public/locales/hu/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Külső cím", - "description": "URL, amely az alkalmazásra kattintva megnyílik." + "description": "URL, amely az alkalmazásra kattintva megnyílik.", + "tooltip": "A dinamikus címek létrehozásához néhány változót használhat:

[homarr_base]: teljes cím a port és az elérési út nélkül. (Példa: 'https://subdomain.homarr.dev')
[homarr_hostname]: teljes alap url, beleértve az aktuális aldomain-t is. (Példa: 'subdomain.homarr.dev')
[homarr_domain]: domain az aldomainek kiszűrésével. (Példa: `homarr.dev')
[homarr_protocol]: http/https

Ezek a változók mind az aktuális url-től függnek." } }, "behaviour": { diff --git a/public/locales/hu/modules/dns-hole-controls.json b/public/locales/hu/modules/dns-hole-controls.json index 1523bcd10..2faa788ce 100644 --- a/public/locales/hu/modules/dns-hole-controls.json +++ b/public/locales/hu/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Probléma adódott a DNS-blokkoló(k)hoz való csatlakozással. Kérjük, ellenőrizze a konfigurációt/integráció(ka)t." } } + }, + "durationModal": { + "title": "Letiltási időtartam beállítása", + "hours": "Óra", + "minutes": "Perc", + "unlimited": "a korlátlanhoz hagyja üresen", + "set": "Beállít" } } \ No newline at end of file diff --git a/public/locales/hu/modules/health-monitoring.json b/public/locales/hu/modules/health-monitoring.json index ffba03b8f..367db8b99 100644 --- a/public/locales/hu/modules/health-monitoring.json +++ b/public/locales/hu/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "Üzemidő", - "uptimeFormat": "{{days}} nap, {{hours}} óra", + "uptimeFormat": "{{days}} nap, {{hours}} óra, {{minutes}} perc", "updates": "Frissítés elérhető", "reboot": "Újraindítás" }, diff --git a/public/locales/hu/modules/indexer-manager.json b/public/locales/hu/modules/indexer-manager.json index 1d37a8824..5062c4b9b 100644 --- a/public/locales/hu/modules/indexer-manager.json +++ b/public/locales/hu/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Indexelő menedzser állapota", "description": "Az indexelők állapota", "settings": { - "title": "Indexelő menedzser állapota" + "title": "Indexelő menedzser állapota", + "openIndexerSiteInNewTab": { + "label": "Indexer webhely megnyitása új lapon" + } } }, "indexersStatus": { diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 463c3989b..1b54caebe 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -17,6 +17,7 @@ "disabled": "Disattivato", "enableAll": "Abilita tutto", "disableAll": "Disattiva tutto", + "setTimer": "Imposta timer", "version": "Versione", "changePosition": "Cambia posizione", "remove": "Rimuovi", diff --git a/public/locales/it/layout/modals/add-app.json b/public/locales/it/layout/modals/add-app.json index 29c57f4af..a1c2a109e 100644 --- a/public/locales/it/layout/modals/add-app.json +++ b/public/locales/it/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Indirizzo esterno", - "description": "URL che verrà aperto nel browser al clic dell'app." + "description": "URL che verrà aperto nel browser al clic dell'app.", + "tooltip": "È possibile utilizzare alcune variabili per creare indirizzi dinamici:

[homarr_base] : indirizzo completo escludendo porta e percorso. (Esempio: 'https://subdomain.homarr.dev')
[homarr_hostname] : url di base completo compreso il suo attuale sottodominio. (Esempio: 'subdomain.homarr.dev')
[homarr_domain] : dominio con sottodominio filtrato. (Esempio: `homarr.dev')
[homarr_protocol] : http/https

Queste variabili dipendono dall'url corrente." } }, "behaviour": { diff --git a/public/locales/it/modules/dns-hole-controls.json b/public/locales/it/modules/dns-hole-controls.json index 66028b6d1..a95f91aef 100644 --- a/public/locales/it/modules/dns-hole-controls.json +++ b/public/locales/it/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Si è verificato un problema di connessione ai vostri DNS hole. Verificate la vostra configurazione/integrazione." } } + }, + "durationModal": { + "title": "Imposta tempo di disattivazione", + "hours": "Ore", + "minutes": "Minuti", + "unlimited": "Lasciare vuoto per nessun limite", + "set": "Imposta" } } \ No newline at end of file diff --git a/public/locales/it/modules/health-monitoring.json b/public/locales/it/modules/health-monitoring.json index 2d9f21ad6..30292c022 100644 --- a/public/locales/it/modules/health-monitoring.json +++ b/public/locales/it/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "Uptime", - "uptimeFormat": "{{days}} giorni, {{hours}} ore", + "uptimeFormat": "{{days}} giorni, {{hours}} ore, {{minutes}} minuti", "updates": "Aggiornamenti disponibili", "reboot": "Riavvio" }, diff --git a/public/locales/it/modules/indexer-manager.json b/public/locales/it/modules/indexer-manager.json index a9d978f90..58b8fa4c0 100644 --- a/public/locales/it/modules/indexer-manager.json +++ b/public/locales/it/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Stato del gestore dell'indicizzatore", "description": "Stato dei tuoi indicizzatori", "settings": { - "title": "Stato del gestore dell'indicizzatore" + "title": "Stato del gestore dell'indicizzatore", + "openIndexerSiteInNewTab": { + "label": "Apri il sito dell'indexer in una nuova scheda" + } } }, "indexersStatus": { diff --git a/public/locales/it/modules/media-transcoding.json b/public/locales/it/modules/media-transcoding.json index 1715ecdaf..54d549be9 100644 --- a/public/locales/it/modules/media-transcoding.json +++ b/public/locales/it/modules/media-transcoding.json @@ -1,9 +1,9 @@ { "descriptor": { - "name": "Transcodifica Multimediale", - "description": "Mostra informazioni sulla transcodifica multimediale", + "name": "Transcoding multimediale", + "description": "Mostra informazioni sul transcoding multimediale", "settings": { - "title": "Impostazioni Transcodifica Multimediale", + "title": "Impostazioni transcoding multimediale", "appId": { "label": "Seleziona un'app" }, @@ -40,7 +40,7 @@ }, "empty": "Vuoto", "tooltip": { - "transcode": "Transcodifica", + "transcode": "Transcode", "healthCheck": "Controllo Integrità" } } @@ -56,7 +56,7 @@ }, "empty": "Vuoto", "tooltip": { - "transcode": "Transcodifica", + "transcode": "Transcode", "healthCheck": "Controllo Integrità" } } @@ -64,16 +64,16 @@ "statistics": { "empty": "Vuoto", "box": { - "transcodes": "Transcodifiche: {{value}}", + "transcodes": "Transcodes: {{value}}", "healthChecks": "Controlli Integrità: {{value}}", "files": "File: {{value}}", "spaceSaved": "Salvati: {{value}}" }, "pies": { - "transcodes": "Transcodifiche", + "transcodes": "Transcodes", "healthChecks": "Controlli Integrità", - "videoCodecs": "Codec", - "videoContainers": "Container", + "videoCodecs": "Codecs", + "videoContainers": "Containers", "videoResolutions": "Risoluzioni" } } diff --git a/public/locales/it/modules/torrents-status.json b/public/locales/it/modules/torrents-status.json index 97c099d9f..1bdf17132 100644 --- a/public/locales/it/modules/torrents-status.json +++ b/public/locales/it/modules/torrents-status.json @@ -31,10 +31,10 @@ "info": "Se disabilitato, verrà visualizzato solo il ratio globale. Il ratio globale utilizzerà comunque i label, se impostati" }, "columnOrdering": { - "label": "Abilita il riordinamento delle colonne" + "label": "Abilita riordinamento colonne" }, "rowSorting": { - "label": "Abilita l'ordinamento delle righe" + "label": "Abilita ordinamento righe" }, "columns": { "label": "Seleziona colonne da visualizzare", diff --git a/public/locales/ja/authentication/login.json b/public/locales/ja/authentication/login.json index 2a7df8064..14667fb5c 100644 --- a/public/locales/ja/authentication/login.json +++ b/public/locales/ja/authentication/login.json @@ -16,8 +16,8 @@ }, "afterLoginRedirection": "ログイン後、 {{url}}にリダイレクトされます。", "providersEmpty": { - "title": "", - "message": "" + "title": "認証プロバイダーエラー", + "message": "プロバイダーが設定されていません。詳細についてはログを確認してください。" } }, "alert": "認証情報が間違っているか、このアカウントが存在しません。もう一度お試しください。" diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index eaa97835f..c9fde867d 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -1,7 +1,7 @@ { "save": "保存", - "apply": "", - "insert": "", + "apply": "適用する", + "insert": "挿入", "about": "About", "cancel": "キャンセル", "close": "閉じる", @@ -13,10 +13,11 @@ "previous": "前へ", "confirm": "確認", "enabled": "有効", - "duplicate": "", + "duplicate": "複製", "disabled": "無効", "enableAll": "すべてを有効にする", "disableAll": "すべてを無効にする", + "setTimer": "タイマーを設定する", "version": "バージョン", "changePosition": "ポジションを変更する", "remove": "削除", @@ -46,7 +47,7 @@ "seeMore": "もっと見る...", "position": { "left": "左", - "center": "", + "center": "中央寄せ", "right": "右" }, "attributes": { @@ -54,5 +55,5 @@ "height": "高さ" }, "public": "公開", - "restricted": "" + "restricted": "制限付き" } \ No newline at end of file diff --git a/public/locales/ja/layout/element-selector/selector.json b/public/locales/ja/layout/element-selector/selector.json index a85b18b38..0173bf1e8 100644 --- a/public/locales/ja/layout/element-selector/selector.json +++ b/public/locales/ja/layout/element-selector/selector.json @@ -22,5 +22,5 @@ "message": "カテゴリ \"{{name}}\" が作成されました" } }, - "importFromDocker": "" + "importFromDocker": "Dockerからのインポート" } diff --git a/public/locales/ja/layout/manage.json b/public/locales/ja/layout/manage.json index 2f5a586ee..f67b3f9d3 100644 --- a/public/locales/ja/layout/manage.json +++ b/public/locales/ja/layout/manage.json @@ -26,7 +26,7 @@ "title": "ツール", "items": { "docker": "Docker", - "api": "" + "api": "API" } }, "about": { diff --git a/public/locales/ja/layout/modals/about.json b/public/locales/ja/layout/modals/about.json index 6f49df3e9..51e52691a 100644 --- a/public/locales/ja/layout/modals/about.json +++ b/public/locales/ja/layout/modals/about.json @@ -5,10 +5,10 @@ "key": "ショートカットキー", "action": "アクション", "keybinds": "キー設定", - "translators": "", - "translatorsDescription": "", - "contributors": "", - "contributorsDescription": "", + "translators": "翻訳者 ({{count}})", + "translatorsDescription": "これらの人々のおかげで、Homarrは {{languages}} の言語で利用可能です!Homarrをあなたの言語に翻訳してみませんか?その方法はこちらをご覧ください。", + "contributors": "貢献者 ({{count}})", + "contributorsDescription": "これらの人々はhomarrを機能させるコードを構築しました!Homarrの構築を手伝いたいですか?その方法はこちら", "actions": { "toggleTheme": "ライト/ダークモードに変更する", "focusSearchBar": "検索バーにフォーカス", diff --git a/public/locales/ja/layout/modals/add-app.json b/public/locales/ja/layout/modals/add-app.json index 579f60446..29724d5c0 100644 --- a/public/locales/ja/layout/modals/add-app.json +++ b/public/locales/ja/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "外部アドレス", - "description": "アプリをクリックしたときに開くURL。" + "description": "アプリをクリックしたときに開くURL。", + "tooltip": "いくつかの変数を使用して動的アドレスを作成できます:

[homarr_base] : ポートとパスを除いた完全なアドレス。 (例: 'https://subdomain.homarr.dev')
[homarr_hostname] : 現在のサブドメインを含む完全なベース Url。 (例: 'subdomain.homarr.dev')
[homarr_domain] : サブドメインがフィルターされたドメイン。 (例: `homarr.dev')
[homarr_protocol] : http/https

これらの変数はすべて現在の Url に依存します。" } }, "behaviour": { diff --git a/public/locales/ja/manage/boards.json b/public/locales/ja/manage/boards.json index 33c154d03..ca9e69d9e 100644 --- a/public/locales/ja/manage/boards.json +++ b/public/locales/ja/manage/boards.json @@ -16,15 +16,15 @@ "label": "永久削除", "disabled": "古いHomarrコンポーネントはデフォルト設定の削除を許可していないため、削除は無効です。将来的には削除できるようになるでしょう。" }, - "duplicate": "", + "duplicate": "複製", "rename": { - "label": "", + "label": "名前を変更", "modal": { - "title": "", + "title": "ボード名の変更 {{name}}", "fields": { "name": { - "label": "", - "placeholder": "" + "label": "新しい名前", + "placeholder": "新しいボード名" } } } diff --git a/public/locales/ja/manage/users.json b/public/locales/ja/manage/users.json index 5859c7d2d..60c704cc4 100644 --- a/public/locales/ja/manage/users.json +++ b/public/locales/ja/manage/users.json @@ -6,10 +6,10 @@ }, "filter": { "roles": { - "all": "", - "normal": "", - "admin": "", - "owner": "" + "all": "すべて", + "normal": "通常", + "admin": "管理者", + "owner": "所有者" } }, "table": { diff --git a/public/locales/ja/manage/users/edit.json b/public/locales/ja/manage/users/edit.json index 176d99790..a425f48e0 100644 --- a/public/locales/ja/manage/users/edit.json +++ b/public/locales/ja/manage/users/edit.json @@ -1,6 +1,6 @@ { - "metaTitle": "", - "back": "", + "metaTitle": "ユーザー {{username}}", + "back": "ユーザー管理に戻る", "sections": { "general": { "title": "一般", @@ -14,40 +14,40 @@ } }, "security": { - "title": "", + "title": "セキュリティ", "inputs": { "password": { - "label": "" + "label": "新しいパスワード" }, "terminateExistingSessions": { - "label": "", - "description": "" + "label": "既存のセッションを終了する", + "description": "ユーザーのデバイスで再ログインを強制する" }, "confirm": { "label": "確認", - "description": "" + "description": "パスワードが更新されます。操作を元に戻すことはできません。" } } }, "roles": { - "title": "", - "currentRole": "", + "title": " ロール", + "currentRole": "現在のロール: ", "badges": { - "owner": "", - "admin": "", - "normal": "" + "owner": "所有者", + "admin": "管理者", + "normal": "通常" } }, "deletion": { - "title": "", + "title": "アカウント削除", "inputs": { "confirmUsername": { - "label": "", - "description": "" + "label": "ユーザー名を確認", + "description": "削除するにはユーザー名を入力してください" }, "confirm": { "label": "永久削除", - "description": "" + "description": "この操作は永続的であり、すべてのアカウント データが失われることを理解しています。" } } } diff --git a/public/locales/ja/modules/date.json b/public/locales/ja/modules/date.json index 43e533ff2..3c2f5530b 100644 --- a/public/locales/ja/modules/date.json +++ b/public/locales/ja/modules/date.json @@ -5,11 +5,11 @@ "settings": { "title": "日付と時刻ウィジェットの設定", "timezone": { - "label": "", - "info": "" + "label": "タイムゾーン", + "info": "タイムゾーンの名前を選択してください。ここから見つけてください。 " }, "customTitle": { - "label": "" + "label": "都市名またはカスタムタイトル" }, "display24HourFormat": { "label": "24時間表示" @@ -21,11 +21,11 @@ } }, "titleState": { - "label": "", - "info": "", + "label": "時計のタイトル", + "info": "カスタムタイトルとタイムゾーンコードは、ウィジェットに表示することができます。
また、都市のみを表示したり、何も表示しなかったり、
、あるいは両方が選択されていてタイトルが提供されていない場合は、タイムゾーンのみを表示することもできます。", "data": { - "both": "", - "city": "", + "both": "タイトルとタイムゾーン", + "city": "タイトルのみ", "none": "なし" } } diff --git a/public/locales/ja/modules/dns-hole-controls.json b/public/locales/ja/modules/dns-hole-controls.json index 2e79b9cff..ca231ecf1 100644 --- a/public/locales/ja/modules/dns-hole-controls.json +++ b/public/locales/ja/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "DNSホールへの接続に問題が発生しました。設定/統合を確認してください。" } } + }, + "durationModal": { + "title": "無効化期間を設定する", + "hours": "時間", + "minutes": "分", + "unlimited": "無制限の場合は空白にする", + "set": "設定" } } \ No newline at end of file diff --git a/public/locales/ja/modules/dns-hole-summary.json b/public/locales/ja/modules/dns-hole-summary.json index a7824956a..cbd09f33a 100644 --- a/public/locales/ja/modules/dns-hole-summary.json +++ b/public/locales/ja/modules/dns-hole-summary.json @@ -21,8 +21,8 @@ "metrics": { "domainsOnAdlist": "アドリスト上のドメイン", "queriesToday": "今日のクエリ", - "queriesBlockedTodayPercentage": "", - "queriesBlockedToday": "" + "queriesBlockedTodayPercentage": "今日のブロック", + "queriesBlockedToday": "今日のブロック" } } } diff --git a/public/locales/ja/modules/health-monitoring.json b/public/locales/ja/modules/health-monitoring.json index 215e5631e..5ee9c8f40 100644 --- a/public/locales/ja/modules/health-monitoring.json +++ b/public/locales/ja/modules/health-monitoring.json @@ -1,104 +1,104 @@ { "descriptor": { - "name": "", - "description": "", + "name": "システムヘルスモニタリング", + "description": "システムの健全性とステータスを示す情報を表示します。", "settings": { - "title": "", + "title": "システムヘルス監視の設定", "fahrenheit": { - "label": "" + "label": "CPU温度(華氏)" }, "cpu": { - "label": "", - "load": "", - "minute": "", - "minutes": "" + "label": "CPU 情報を表示", + "load": "システム平均負荷", + "minute": "{{minute}} 分", + "minutes": "{{minutes}} 分" }, "memory": { - "label": "" + "label": "メモリー情報を表示" }, "fileSystem": { - "label": "" + "label": "ファイルシステム情報を表示" }, "node": { - "label": "", - "info": "" + "label": "ノード名で絞り込む", + "info": "Proxmox ノード名を入力すると、そのノードのメトリックのみが表示されます。デフォルトでは、クラスター全体が表示されます。" }, "defaultViewState": { - "label": "", + "label": "デフォルトで開いているセクション", "data": { "none": "なし", - "node": "", - "vm": "", - "lxc": "", + "node": "ノード", + "vm": "VMs", + "lxc": "LXCs", "storage": "ストレージ" } }, "defaultTabState": { - "label": "", - "info": "", + "label": "デフォルトでタブが開く", + "info": "デフォルトでタブが開きます。複数の統合が利用可能な場合にのみ使用されます。", "data": { - "system": "", - "cluster": "" + "system": "システム", + "cluster": "クラスター" } }, "summary": { - "label": "" + "label": "概要セクションを表示" }, "showNode": { - "label": "" + "label": "ノードセクションを表示" }, "showVM": { - "label": "" + "label": "VMセクションを表示" }, "showLXCs": { - "label": "" + "label": "LXCセクションを表示" }, "showStorage": { - "label": "" + "label": "ストレージセクションを表示" }, "sectionIndicatorColor": { - "label": "", - "info": "", + "label": "セクションステータスインジケーターが「OK」であることの要件", + "info": "「すべて」の場合、インジケーターが緑色になるにはすべてのアイテムがオンラインである必要があります。「いずれか」の場合、少なくとも 1 つのアイテムがオンラインである必要があります。", "data": { - "any": "", - "all": "" + "any": "任意のアクティブ", + "all": "すべてアクティブ" } }, "ignoreCert": { - "label": "", - "info": "" + "label": "証明書エラーを無視する", + "info": "有効にすると、ウィジェットは Proxmox API にアクセスするときに証明書エラーを無視します。これは、HTTPS 経由で Proxmox にアクセスする場合に役立ちます。" } } }, "cpu": { "label": "CPU", - "load": "", - "minute": "" + "load": "システム平均負荷", + "minute": "{{minute}} 分" }, "memory": { - "label": "", - "totalMem": "", - "available": "" + "label": "メモリ", + "totalMem": "合計メモリ: {{total}}GB", + "available": "利用可能: {{available}}GB - {{percentage}}%" }, "fileSystem": { - "label": "", - "available": "" + "label": "ファイルシステム", + "available": "利用可能: {{available}} - {{percentage}}%" }, "info": { - "uptime": "", - "uptimeFormat": "", - "updates": "", - "reboot": "" + "uptime": "稼働時間", + "uptimeFormat": "{{days}} 日、 {{hours}} 時間、 {{minutes}} 分", + "updates": "利用可能な更新", + "reboot": "再起動" }, "errors": { "general": { - "title": "", - "text": "" + "title": "システムが見つかりません。", + "text": "システムへの接続中に問題が発生しました。設定/統合を確認してください。" } }, "headings": { - "system": "", - "cluster": "" + "system": "システム", + "cluster": "クラスター" }, "cluster": { "summary": { @@ -107,9 +107,9 @@ }, "accordion": { "title": { - "nodes": "", - "vms": "", - "lxcs": "", + "nodes": "ノード", + "vms": "VMs", + "lxcs": "LXCs", "storage": "ストレージ" } }, @@ -118,24 +118,24 @@ "name": "名称", "cpu": "CPU", "ram": "メモリ", - "node": "" + "node": "ノード" } }, "popover": { - "node": "", - "vmid": "", + "node": "ノード", + "vmid": "VMID", "details": "詳細", - "cores": "", - "memSize": "", - "memRatio": "", - "diskSize": "", - "diskRatio": "", - "uptime": "", - "plugin": "", - "ha": "", - "sharedStorage": "", - "localStorage": "", - "na": "" + "cores": "コア - {{maxCpu}}", + "memSize": "メモリ - {{maxMem}}", + "memRatio": "メモリ - {{usedMem}} / {{maxMem}}", + "diskSize": "ディスク - {{maxDisk}}", + "diskRatio": "ディスク - {{usedDisk}} / {{maxDisk}}", + "uptime": "稼働時間 - {{uptime}}", + "plugin": "プラグイン", + "ha": "HA 状態 - {{haState}}", + "sharedStorage": "共有ストレージ", + "localStorage": "ローカルストレージ", + "na": "利用不可" } } } \ No newline at end of file diff --git a/public/locales/ja/modules/indexer-manager.json b/public/locales/ja/modules/indexer-manager.json index 9b01e3093..e071219c9 100644 --- a/public/locales/ja/modules/indexer-manager.json +++ b/public/locales/ja/modules/indexer-manager.json @@ -1,19 +1,22 @@ { "descriptor": { - "name": "", - "description": "", + "name": "インデックス・マネージャーのステータス", + "description": "インデクサーのステータス", "settings": { - "title": "" + "title": "インデックス・マネージャーのステータス", + "openIndexerSiteInNewTab": { + "label": "インデクサーサイトを新しいタブで開く" + } } }, "indexersStatus": { - "title": "", - "testAllButton": "" + "title": "インデクサーマネージャー", + "testAllButton": "すべてのテスト" }, "errors": { "general": { - "title": "", - "text": "" + "title": "インデクサー マネージャーが見つかりません", + "text": "インデクサー マネージャーへの接続中に問題が発生しました。構成/統合を確認してください。" } } } \ No newline at end of file diff --git a/public/locales/ja/modules/media-requests-list.json b/public/locales/ja/modules/media-requests-list.json index 4079b6524..8d82edcda 100644 --- a/public/locales/ja/modules/media-requests-list.json +++ b/public/locales/ja/modules/media-requests-list.json @@ -17,8 +17,8 @@ "approved": "承認済み", "pendingApproval": "承認待ち", "declined": "拒否", - "available": "", - "partial": "" + "available": "利用可能", + "partial": "一部" }, "tooltips": { "approve": "リクエスト承認", diff --git a/public/locales/ja/modules/media-transcoding.json b/public/locales/ja/modules/media-transcoding.json index c23b80329..9ddb172c4 100644 --- a/public/locales/ja/modules/media-transcoding.json +++ b/public/locales/ja/modules/media-transcoding.json @@ -1,96 +1,96 @@ { "descriptor": { - "name": "", - "description": "", + "name": "メディアトランスコーディング", + "description": "メディアトランスコーディングに関する情報を表示します", "settings": { - "title": "", + "title": "メディアトランスコーディング設定", "appId": { - "label": "" + "label": "アプリを選択" }, "defaultView": { - "label": "", + "label": "デフォルト表示", "data": { - "workers": "", + "workers": "ワーカー", "queue": "キュー", - "statistics": "" + "statistics": "統計" } }, "showHealthCheck": { - "label": "" + "label": "ヘルスチェックインジケーターを表示" }, "showHealthChecksInQueue": { - "label": "" + "label": "キュー内のヘルスチェックを表示" }, "queuePageSize": { - "label": "" + "label": "キュー: ページあたりのアイテム数" }, "showAppIcon": { - "label": "" + "label": "右下にアプリアイコンを表示する" } } }, - "noAppSelected": "", + "noAppSelected": "ウィジェット設定でアプリを選択してください", "views": { "workers": { "table": { "header": { - "name": "", + "name": "ファイル", "eta": "ETA", "progress": "進捗状況" }, "empty": "空", "tooltip": { - "transcode": "", - "healthCheck": "" + "transcode": "トランスコード", + "healthCheck": "ヘルスチェック" } } }, "queue": { "table": { "header": { - "name": "", + "name": "ファイル", "size": "サイズ" }, "footer": { - "currentIndex": "" + "currentIndex": "{{start}}-{{end}} / {{total}}" }, "empty": "空", "tooltip": { - "transcode": "", - "healthCheck": "" + "transcode": "トランスコード", + "healthCheck": "ヘルスチェック" } } }, "statistics": { "empty": "空", "box": { - "transcodes": "", - "healthChecks": "", - "files": "", - "spaceSaved": "" + "transcodes": "トランスコード: {{value}}", + "healthChecks": "ヘルスチェック: {{value}}", + "files": "ファイル: {{value}}", + "spaceSaved": "保存しました: {{value}}" }, "pies": { - "transcodes": "", - "healthChecks": "", - "videoCodecs": "", - "videoContainers": "", - "videoResolutions": "" + "transcodes": "トランスコード", + "healthChecks": "ヘルスチェック", + "videoCodecs": "コーデック", + "videoContainers": "コンテナ", + "videoResolutions": "解像度" } } }, "error": { "title": "エラー", - "message": "" + "message": "Tdarr からデータを取得中にエラーが発生しました。" }, "tabs": { - "workers": "", + "workers": "ワーカー", "queue": "キュー", - "statistics": "" + "statistics": "統計" }, "healthCheckStatus": { - "title": "", - "queued": "", - "healthy": "", - "unhealthy": "" + "title": "ヘルスチェック", + "queued": "処理待ち", + "healthy": "正常", + "unhealthy": "異常" } } diff --git a/public/locales/ja/modules/notebook.json b/public/locales/ja/modules/notebook.json index c0c8ca301..34fa08bdc 100644 --- a/public/locales/ja/modules/notebook.json +++ b/public/locales/ja/modules/notebook.json @@ -8,7 +8,7 @@ "label": "マークダウンを書くのに役立つツールバーを表示する" }, "allowReadOnlyCheck": { - "label": "" + "label": "読み取り専用モードでのチェックを許可する" }, "content": { "label": "ノートの内容" @@ -17,43 +17,43 @@ }, "card": { "controls": { - "bold": "", - "italic": "", - "strikethrough": "", - "underline": "", - "colorText": "", - "colorHighlight": "", - "code": "", - "clear": "", - "heading": "", - "align": "", - "blockquote": "", - "horizontalLine": "", - "bulletList": "", - "orderedList": "", - "checkList": "", - "increaseIndent": "", - "decreaseIndent": "", - "link": "", - "unlink": "", - "image": "", - "addTable": "", - "deleteTable": "", - "colorCell": "", - "mergeCell": "", - "addColumnLeft": "", - "addColumnRight": "", - "deleteColumn": "", - "addRowTop": "", - "addRowBelow": "", - "deleteRow": "" + "bold": "太字", + "italic": "斜体", + "strikethrough": "取り消し線", + "underline": "下線", + "colorText": "色付きテキスト", + "colorHighlight": "色付きのハイライトテキスト", + "code": "コード", + "clear": "書式をクリア", + "heading": "見出し {{level}}", + "align": "テキストの整列: {{position}}", + "blockquote": "引用", + "horizontalLine": "水平線", + "bulletList": "箇条書きリスト", + "orderedList": "順序付きリスト", + "checkList": "チェックリスト", + "increaseIndent": "インデントを上げる", + "decreaseIndent": "インデントを下げる", + "link": "リンク", + "unlink": "リンクを削除", + "image": "画像を埋め込む", + "addTable": "テーブルを追加", + "deleteTable": "テーブルを削除", + "colorCell": "色付きテキスト", + "mergeCell": "セル結合の切り替え", + "addColumnLeft": "前に列を追加", + "addColumnRight": "後に列を追加", + "deleteColumn": "列を削除", + "addRowTop": "前に行を追加", + "addRowBelow": "後に行を追加", + "deleteRow": "行の削除" }, "modals": { - "clearColor": "", - "source": "", - "widthPlaceholder": "", - "columns": "", - "rows": "" + "clearColor": "色をクリア", + "source": "参照元", + "widthPlaceholder": "% またはピクセル単位の値", + "columns": "列数", + "rows": "行数" } } } \ No newline at end of file diff --git a/public/locales/ja/modules/rss.json b/public/locales/ja/modules/rss.json index 383a66878..e562b66b2 100644 --- a/public/locales/ja/modules/rss.json +++ b/public/locales/ja/modules/rss.json @@ -19,13 +19,13 @@ "label": "テキスト行クランプ" }, "sortByPublishDateAscending": { - "label": "" + "label": "公開日で並べ替え(昇順)" }, "sortPostsWithoutPublishDateToTheTop": { - "label": "" + "label": "公開日のない投稿を一番上に表示する" }, "maximumAmountOfPosts": { - "label": "" + "label": "投稿の最大数" } }, "card": { diff --git a/public/locales/ja/modules/smart-home/entity-state.json b/public/locales/ja/modules/smart-home/entity-state.json index 45587f0a5..ff0b5a2fb 100644 --- a/public/locales/ja/modules/smart-home/entity-state.json +++ b/public/locales/ja/modules/smart-home/entity-state.json @@ -1,32 +1,32 @@ { - "entityNotFound": "", + "entityNotFound": "エンティティが見つかりません", "descriptor": { - "name": "", - "description": "", + "name": "Home Assistant エンティティ", + "description": "Home Assistant のエンティティの現在の状態", "settings": { - "title": "", + "title": "エンティティの状態", "entityId": { - "label": "", - "info": "" + "label": "エンティティID", + "info": "Home Assistant の一意のエンティティ ID。エンティティをクリックしてコピー > 歯車アイコンをクリック > 「エンティティ ID」のコピー ボタンをクリックします。一部のカスタム エンティティはサポートされていない場合があります。" }, "appendUnit": { - "label": "", - "info": "" + "label": "測定単位を追加", + "info": "エンティティ状態に測定単位属性を追加します。" }, "automationId": { - "label": "", - "info": "" + "label": "オプションのオートメーションID", + "info": "あなた固有のオートメーションID。常にautomation.XXXXXで始まります。設定されていない場合、ウィジェットはクリックされず、状態のみが表示されます。クリック後、エンティティの状態はリフレッシュされます。" }, "displayName": { - "label": "" + "label": "表示名" }, "displayFriendlyName": { - "label": "", - "info": "" + "label": "フレンドリーネームを表示", + "info": "表示名の代わりに、Home Assistant からのフレンドリ名を表示します。" }, "genericToggle": { - "label": "", - "info": "" + "label": "エンティティの切り替え", + "info": "クリックすると、エンティティに対して一般的な Home Assistant トグル アクションを実行します。" } } } diff --git a/public/locales/ja/modules/smart-home/trigger-automation.json b/public/locales/ja/modules/smart-home/trigger-automation.json index 37046b5cf..11e03576c 100644 --- a/public/locales/ja/modules/smart-home/trigger-automation.json +++ b/public/locales/ja/modules/smart-home/trigger-automation.json @@ -1,15 +1,15 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Home Assistant 自動化", + "description": "オートメーションを実行", "settings": { - "title": "", + "title": "オートメーションを実行", "automationId": { - "label": "", - "info": "" + "label": "オートメーションID", + "info": "あなた固有のオートメーションID。常に automation.XXXXX で始まる。" }, "displayName": { - "label": "" + "label": "表示名" } } } diff --git a/public/locales/ja/modules/torrents-status.json b/public/locales/ja/modules/torrents-status.json index a6fb63a44..3e0e83faa 100644 --- a/public/locales/ja/modules/torrents-status.json +++ b/public/locales/ja/modules/torrents-status.json @@ -11,10 +11,10 @@ "label": "完了したトレントを表示する" }, "displayActiveTorrents": { - "label": "" + "label": "アクティブな Torrent を表示" }, "speedLimitOfActiveTorrents": { - "label": "" + "label": "Torrent をアクティブとするアップロード速度 (kB/s)" }, "displayStaleTorrents": { "label": "古くなったトレントを表示する" @@ -27,19 +27,19 @@ "description": "「ホワイトリスト」にチェックされている場合、これはホワイトリストとして機能する。チェックされていない場合、これはブラックリストとなる。空の場合は何もしません。" }, "displayRatioWithFilter": { - "label": "", - "info": "" + "label": "フィルタリングされたTorrent リストの比率を表示", + "info": "無効にすると、グローバル比率のみが表示されます。グローバル比率が設定されている場合でも、ラベルは使用されます。" }, "columnOrdering": { - "label": "" + "label": "列の並べ替えを有効にします" }, "rowSorting": { - "label": "" + "label": "行の並べ替えを有効にします" }, "columns": { - "label": "", + "label": "表示する列を選択", "data": { - "date": "", + "date": "追加日", "down": "ダウンロード", "up": "アップロード", "eta": "ETA", @@ -47,7 +47,7 @@ } }, "nameColumnSize": { - "label": "" + "label": "名前の列のサイズを変更する" } } }, @@ -55,27 +55,27 @@ "footer": { "error": "エラー", "lastUpdated": "最終更新 {{time}} 前", - "ratioGlobal": "", - "ratioWithFilter": "" + "ratioGlobal": "グローバル比率", + "ratioWithFilter": "フィルタによる比率" }, "table": { "header": { - "isCompleted": "", + "isCompleted": "ダウンロード中", "name": "名称", - "dateAdded": "", + "dateAdded": "追加日", "size": "サイズ", "download": "ダウンロード", "upload": "アップロード", "estimatedTimeOfArrival": "ETA", "progress": "進捗状況", - "totalUploaded": "", - "totalDownloaded": "", - "ratio": "", - "seeds": "", - "peers": "", - "label": "", + "totalUploaded": "合計アップロード", + "totalDownloaded": "合計ダウンロード", + "ratio": "比率", + "seeds": "シード(接続済)", + "peers": "ピア(接続済み)", + "label": "ラベル", "state": "状態", - "stateMessage": "" + "stateMessage": "状態メッセージ" }, "item": { "text": "運営: {{appName}}, {{ratio}} 比率" diff --git a/public/locales/ja/modules/weather.json b/public/locales/ja/modules/weather.json index ab0143ae0..84b618e93 100644 --- a/public/locales/ja/modules/weather.json +++ b/public/locales/ja/modules/weather.json @@ -11,10 +11,10 @@ "label": "都市名の表示" }, "displayWeekly": { - "label": "" + "label": "週間予報を表示する" }, "forecastDays": { - "label": "" + "label": "表示する日数" }, "location": { "label": "天候の場所" diff --git a/public/locales/ja/settings/customization/general.json b/public/locales/ja/settings/customization/general.json index 69ea1b592..b7f0ae640 100644 --- a/public/locales/ja/settings/customization/general.json +++ b/public/locales/ja/settings/customization/general.json @@ -22,7 +22,7 @@ "description": "障害のあるユーザーのためのHomarr設定" }, "access": { - "name": "", + "name": "アクセス", "description": "ボードにアクセスできる人を設定する" } } diff --git a/public/locales/ja/settings/customization/page-appearance.json b/public/locales/ja/settings/customization/page-appearance.json index 3c7f56f61..36e328b9e 100644 --- a/public/locales/ja/settings/customization/page-appearance.json +++ b/public/locales/ja/settings/customization/page-appearance.json @@ -19,26 +19,26 @@ "label": "背景" }, "backgroundImageAttachment": { - "label": "", + "label": "背景画像の添付ファイル", "options": { - "fixed": "", - "scroll": "" + "fixed": "固定 - 背景は同じ位置に留まります (推奨)", + "scroll": "スクロール - マウスで背景をスクロールします" } }, "backgroundImageSize": { - "label": "", + "label": "背景画像サイズ", "options": { - "cover": "", - "contain": "" + "cover": "Cover - 画像を可能な限り小さく拡大縮小し、余分なスペースをトリミングしてウィンドウ全体を覆います。(推奨)", + "contain": "Contain - 画像を切り取ったり引き伸ばしたりすることなく、コンテナ内で可能な限り大きく拡大縮小します。" } }, "backgroundImageRepeat": { - "label": "", + "label": "背景画像の添付ファイル", "options": { - "repeat": "", - "no-repeat": "", - "repeat-x": "", - "repeat-y": "" + "repeat": "Repeat - 背景画像の描画領域全体をカバーするために必要なだけ画像を繰り返します。", + "no-repeat": "No repeat - 画像は繰り返されず、スペース全体を埋めないこともある(推奨)", + "repeat-x": "Repeat X - 'Repeat'と同じだが、横軸のみ。", + "repeat-y": "Repeat Y - 'Repeat'と同じだが、縦軸のみ。" } }, "customCSS": { diff --git a/public/locales/ja/tools/docker.json b/public/locales/ja/tools/docker.json index 21b96a1ca..1410ae92d 100644 --- a/public/locales/ja/tools/docker.json +++ b/public/locales/ja/tools/docker.json @@ -2,7 +2,7 @@ "title": "Docker", "alerts": { "notConfigured": { - "text": "" + "text": "Homarr インスタンスに Docker が設定されていないか、コンテナの取得に失敗しました。統合の設定方法については、ドキュメントを確認してください。" } }, "modals": { diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 42b330b7a..3b32a177c 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -17,6 +17,7 @@ "disabled": "장애인", "enableAll": "모두 사용", "disableAll": "모두 비활성화", + "setTimer": "", "version": "버전", "changePosition": "위치 변경", "remove": "제거", diff --git a/public/locales/ko/layout/modals/add-app.json b/public/locales/ko/layout/modals/add-app.json index da944cb0d..ebafd4bd3 100644 --- a/public/locales/ko/layout/modals/add-app.json +++ b/public/locales/ko/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "외부 주소", - "description": "앱을 클릭할 때 열리는 URL입니다." + "description": "앱을 클릭할 때 열리는 URL입니다.", + "tooltip": "" } }, "behaviour": { diff --git a/public/locales/ko/modules/dns-hole-controls.json b/public/locales/ko/modules/dns-hole-controls.json index 05369de6b..120515b58 100644 --- a/public/locales/ko/modules/dns-hole-controls.json +++ b/public/locales/ko/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "DNS 홀에 연결하는 동안 문제가 발생했습니다. 구성/연동을 확인하세요." } } + }, + "durationModal": { + "title": "", + "hours": "", + "minutes": "", + "unlimited": "", + "set": "" } } \ No newline at end of file diff --git a/public/locales/ko/modules/indexer-manager.json b/public/locales/ko/modules/indexer-manager.json index 9b01e3093..931454027 100644 --- a/public/locales/ko/modules/indexer-manager.json +++ b/public/locales/ko/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "", "description": "", "settings": { - "title": "" + "title": "", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/lt/common.json b/public/locales/lt/common.json index 13d0b6793..d5ad08464 100644 --- a/public/locales/lt/common.json +++ b/public/locales/lt/common.json @@ -17,6 +17,7 @@ "disabled": "", "enableAll": "", "disableAll": "", + "setTimer": "", "version": "", "changePosition": "", "remove": "Pašalinti", diff --git a/public/locales/lt/layout/modals/add-app.json b/public/locales/lt/layout/modals/add-app.json index e0d46deeb..7bc93b7b8 100644 --- a/public/locales/lt/layout/modals/add-app.json +++ b/public/locales/lt/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Išorinis adresas", - "description": "URL adresas, kuris bus atidarytas spustelėjus programą." + "description": "URL adresas, kuris bus atidarytas spustelėjus programą.", + "tooltip": "" } }, "behaviour": { diff --git a/public/locales/lt/modules/dns-hole-controls.json b/public/locales/lt/modules/dns-hole-controls.json index e92cb9160..d8636eaf5 100644 --- a/public/locales/lt/modules/dns-hole-controls.json +++ b/public/locales/lt/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Kilo problema jungiantis prie jūsų DNS hole. Patikrinkite savo konfigūraciją / integraciją (-as)." } } + }, + "durationModal": { + "title": "", + "hours": "", + "minutes": "", + "unlimited": "", + "set": "" } } \ No newline at end of file diff --git a/public/locales/lt/modules/indexer-manager.json b/public/locales/lt/modules/indexer-manager.json index a210e0566..851e0d0eb 100644 --- a/public/locales/lt/modules/indexer-manager.json +++ b/public/locales/lt/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Indeksavimo tvarkytuvo būsena", "description": "Būsena apie jūsų indeksavimo įrenginius", "settings": { - "title": "Indeksavimo tvarkytuvo būsena" + "title": "Indeksavimo tvarkytuvo būsena", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index d2480df66..e0951179f 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -17,6 +17,7 @@ "disabled": "Atspējots", "enableAll": "Iespējot visu", "disableAll": "Atspējot visu", + "setTimer": "", "version": "Versija", "changePosition": "Mainīt pozīciju", "remove": "Noņemt", diff --git a/public/locales/lv/layout/modals/add-app.json b/public/locales/lv/layout/modals/add-app.json index 6d933b7c6..b10e96652 100644 --- a/public/locales/lv/layout/modals/add-app.json +++ b/public/locales/lv/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Ārējā adrese", - "description": "URL, kas tiks atvērts, noklikšķinot uz lietotnes." + "description": "URL, kas tiks atvērts, noklikšķinot uz lietotnes.", + "tooltip": "" } }, "behaviour": { diff --git a/public/locales/lv/modules/dns-hole-controls.json b/public/locales/lv/modules/dns-hole-controls.json index 2c2afa1a8..412a4ba1d 100644 --- a/public/locales/lv/modules/dns-hole-controls.json +++ b/public/locales/lv/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Radās problēma, savienojoties ar jūsu DNS caurumu(-iem). Lūdzu, pārbaudiet savu konfigurāciju/integrāciju(-as)." } } + }, + "durationModal": { + "title": "", + "hours": "", + "minutes": "", + "unlimited": "", + "set": "" } } \ No newline at end of file diff --git a/public/locales/lv/modules/indexer-manager.json b/public/locales/lv/modules/indexer-manager.json index 901ea35a5..6b2cc979f 100644 --- a/public/locales/lv/modules/indexer-manager.json +++ b/public/locales/lv/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Indeksētāja pārvaldnieka statuss", "description": "Statuss par jūsu indeksētājiem", "settings": { - "title": "Indeksētāja pārvaldnieka statuss" + "title": "Indeksētāja pārvaldnieka statuss", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/nl/authentication/invite.json b/public/locales/nl/authentication/invite.json index 5b5b7dfe4..f6ce31ba1 100644 --- a/public/locales/nl/authentication/invite.json +++ b/public/locales/nl/authentication/invite.json @@ -20,7 +20,7 @@ }, "notifications": { "loading": { - "title": "Account aanmaken", + "title": "Bezig met account aanmaken", "text": "Even geduld" }, "success": { diff --git a/public/locales/nl/authentication/login.json b/public/locales/nl/authentication/login.json index 13385aca3..cf98def48 100644 --- a/public/locales/nl/authentication/login.json +++ b/public/locales/nl/authentication/login.json @@ -14,11 +14,11 @@ "buttons": { "submit": "Inloggen" }, - "afterLoginRedirection": "Na het inloggen wordt u doorgestuurd naar {{url}}", + "afterLoginRedirection": "Na het inloggen word je doorgestuurd naar {{url}}", "providersEmpty": { - "title": "", - "message": "" + "title": "Auth provider fout", + "message": "De provider(s) zijn niet ingesteld, controleer je logs voor meer informatie." } }, - "alert": "Je gegevens zijn onjuist of deze account bestaat niet. Probeer het opnieuw." + "alert": "Je gegevens zijn onjuist of bestaat niet. Probeer het opnieuw." } \ No newline at end of file diff --git a/public/locales/nl/boards/common.json b/public/locales/nl/boards/common.json index ad4021e4d..b0e09584f 100644 --- a/public/locales/nl/boards/common.json +++ b/public/locales/nl/boards/common.json @@ -1,5 +1,5 @@ { "header": { - "customize": "Pas bord aan" + "customize": "Bord aanpassen" } } \ No newline at end of file diff --git a/public/locales/nl/boards/customize.json b/public/locales/nl/boards/customize.json index 89f37860b..2902342cd 100644 --- a/public/locales/nl/boards/customize.json +++ b/public/locales/nl/boards/customize.json @@ -1,7 +1,7 @@ { "metaTitle": "{{name}} bord aanpassen", - "pageTitle": "Aanpassing voor {{name}} Board", - "backToBoard": "Terug naar bestuur", + "pageTitle": "Aanpassing voor {{name}} bord", + "backToBoard": "Terug naar bord", "settings": { "appearance": { "primaryColor": "Primaire kleur", @@ -14,11 +14,11 @@ }, "notifications": { "pending": { - "title": "Aanpassingen opslaan", + "title": "Bezig met aanpassingen opslaan", "message": "Even geduld terwijl we je aanpassing opslaan" }, "success": { - "title": "Opgeslagen aanpassingen", + "title": "Aanpassing opgeslagen", "message": "Je aanpassing is succesvol opgeslagen" }, "error": { diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index ac142d66c..081ef4e6e 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -7,20 +7,21 @@ "close": "Sluiten", "back": "Terug", "delete": "Verwijderen", - "ok": "OKÉ", + "ok": "Oké", "edit": "Wijzigen", "next": "Volgende", "previous": "Vorige", "confirm": "Bevestigen", "enabled": "Ingeschakeld", - "duplicate": "", + "duplicate": "Dupliceren", "disabled": "Uitgeschakeld", "enableAll": "Alles inschakelen", "disableAll": "Alles uitschakelen", + "setTimer": "Timer instellen", "version": "Versie", "changePosition": "Positie wijzigen", "remove": "Verwijderen", - "removeConfirm": "Weet u zeker dat u {{item}} wilt verwijderen?", + "removeConfirm": "Weet je zeker dat je {{item}} wilt verwijderen?", "createItem": "+ {{item}} aanmaken", "sections": { "settings": "Instellingen", @@ -37,7 +38,7 @@ "minutes": "minuten", "hours": "uren" }, - "loading": "Bezig met laden...", + "loading": "Zie meer…", "breakPoints": { "small": "klein", "medium": "middel", diff --git a/public/locales/nl/layout/common.json b/public/locales/nl/layout/common.json index 0e5a127e5..7e1ad51a4 100644 --- a/public/locales/nl/layout/common.json +++ b/public/locales/nl/layout/common.json @@ -2,9 +2,9 @@ "modals": { "blockedPopups": { "title": "Pop-ups geblokkeerd", - "text": "Je browser heeft de toegang tot Homarr's API geblokkeerd. Dit wordt meestal veroorzaakt door AdBlockers of geweigerde toestemmingen. Homarr is niet in staat om automatisch rechten aan te vragen.", + "text": "Je browser heeft de toegang tot Homarr's API geblokkeerd. Dit wordt meestal veroorzaakt door AdBlockers of geweigerde rechten. Homarr is niet in staat om automatisch rechten aan te vragen.", "list": { - "browserPermission": "Klik op het pictogram naast de URL en controleer de toestemmingen. Pop-ups en vensters toestaan", + "browserPermission": "Klik op het icoon naast de URL en controleer de rechten. Pop-ups en vensters toestaan", "adBlockers": "Schakel advertentieblokkers en beveiligingsprogramma's van je browser uit", "otherBrowser": "Probeer een andere browser" } @@ -17,8 +17,8 @@ }, "menu": { "moveUp": "Omhoog", - "moveDown": "Naar beneden", - "addCategory": "Categorie {{location}}toevoegen", + "moveDown": "Omlaag", + "addCategory": "Categorie {{location}} toevoegen", "addAbove": "boven", "addBelow": "onder" } diff --git a/public/locales/nl/layout/element-selector/selector.json b/public/locales/nl/layout/element-selector/selector.json index 9cdac4576..4f1013aec 100644 --- a/public/locales/nl/layout/element-selector/selector.json +++ b/public/locales/nl/layout/element-selector/selector.json @@ -22,5 +22,5 @@ "message": "De categorie \"{{name}}\" is aangemaakt" } }, - "importFromDocker": "" + "importFromDocker": "Importeren vanuit docker" } diff --git a/public/locales/nl/layout/header.json b/public/locales/nl/layout/header.json index 26a2fbcc9..8e9ca4a54 100644 --- a/public/locales/nl/layout/header.json +++ b/public/locales/nl/layout/header.json @@ -1,6 +1,6 @@ { "search": { - "label": "Zoek op", + "label": "Zoeken", "engines": { "web": "Zoek naar {{query}} op het web", "youtube": "Zoek naar {{query}} op YouTube", @@ -13,8 +13,8 @@ "switchTheme": "Thema omschakelen", "preferences": "Gebruikersvoorkeuren", "defaultBoard": "Standaard dashboard", - "manage": "Beheer", - "logout": "Afmelden bij {{username}}", + "manage": "Beheren", + "logout": "Uitloggen van {{username}}", "login": "Inloggen" } }, diff --git a/public/locales/nl/layout/manage.json b/public/locales/nl/layout/manage.json index 86326edd0..d6b846f33 100644 --- a/public/locales/nl/layout/manage.json +++ b/public/locales/nl/layout/manage.json @@ -9,8 +9,8 @@ "users": { "title": "Gebruikers", "items": { - "manage": "Beheer", - "invites": "Nodigt uit" + "manage": "Beheren", + "invites": "Uitnodigingen" } }, "help": { @@ -19,14 +19,14 @@ "documentation": "Documentatie", "report": "Een probleem / bug melden", "discord": "Community Discord", - "contribute": "Draag bij" + "contribute": "Bijdragen" } }, "tools": { - "title": "Gereedschap", + "title": "Gereedschappen", "items": { "docker": "Docker", - "api": "" + "api": "API" } }, "about": { diff --git a/public/locales/nl/layout/modals/about.json b/public/locales/nl/layout/modals/about.json index c0ae18d74..620d6b679 100644 --- a/public/locales/nl/layout/modals/about.json +++ b/public/locales/nl/layout/modals/about.json @@ -1,19 +1,19 @@ { "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.", - "addToDashboard": "Aan dashboard toevoegen", + "addToDashboard": "Toevoegen aan dashboard", "tip": "Mod verwijst naar je modifier toets, dat zijn de Ctrl en Commando/Super/Windows toets", "key": "Sneltoets", "action": "Actie", "keybinds": "Sneltoetsen", - "translators": "", - "translatorsDescription": "", - "contributors": "", - "contributorsDescription": "", + "translators": "Vertalers ({{count}})", + "translatorsDescription": "Dankzij deze mensen is Homarr beschikbaar in {{languages}} talen! Wil je helpen om Homarr in jouw taal te vertalen? Lees hier hoe je dat kunt doen.", + "contributors": "Bijdragers ({{count}})", + "contributorsDescription": "Deze mensen hebben de code gebouwd waardoor Homarr werkt! Wil je meebouwen aan Homarr? Lees hier hoe je dat kunt doen", "actions": { - "toggleTheme": "Schakelen tussen licht en donker", + "toggleTheme": "Lichte/donkere modus togglen", "focusSearchBar": "Focus op zoekbalk", - "openDocker": "Open Docker Widget", - "toggleEdit": "De bewerkingsmodus schakelen" + "openDocker": "Open Docker widget", + "toggleEdit": "Bewerkingsmodus togglen" }, "metrics": { "configurationSchemaVersion": "Configuratieschema versie", @@ -21,7 +21,7 @@ "nodeEnvironment": "Node environment", "i18n": "I18n vertaling namespaces geladen", "locales": "I18n talen geconfigureerd", - "experimental_disableEditMode": "EXPERIMENTEEL: Bewerkmodus uitschakelen" + "experimental_disableEditMode": "EXPERIMENTEEL: bewerkmodus uitschakelen" }, "version": { "new": "Nieuw: {{newVersion}}", diff --git a/public/locales/nl/layout/modals/add-app.json b/public/locales/nl/layout/modals/add-app.json index d29b94b15..0288d47e0 100644 --- a/public/locales/nl/layout/modals/add-app.json +++ b/public/locales/nl/layout/modals/add-app.json @@ -18,12 +18,12 @@ "label": "Heb je problemen?", "header": "Hier is een lijst met veelgemaakte fouten en probleemoplossing:", "lines": { - "nothingAfterPort": "In de meeste, zo niet alle gevallen, moet je geen pad invoeren na de poort. (Zelfs de '/admin' voor pihole of '/web' voor plex)", + "nothingAfterPort": "In de meeste, zo niet alle gevallen, moet je geen pad invoeren na de poort. (Zelfs de '/admin' voor Pi-hole of '/web' voor Plex)", "protocolCheck": "Controleer altijd of de URL wordt voorafgegaan door http of https en of je de juiste URL gebruikt.", - "preferIP": "Het wordt aanbevolen om het directe ip te gebruiken van de machine of container waarmee je probeert te communiceren.", - "enablePings": "Controleer of het IP correct is door pings in te schakelen. Pas bord aan -> Lay-out -> Pings inschakelen. Er verschijnt een rood of groen bubbeltje op de app-tegels en als je er met de muis overheen gaat, zie je de responscode (in de meeste gevallen wordt een groen bubbeltje met code 200 verwacht).", - "wget": "Om er zeker van te zijn dat homarr kan communiceren met de andere apps, moet je wget/curl/ping doen naar de IP:poort van de app.", - "iframe": "Iframes moeten altijd hetzelfde protocol (http/s) gebruiken als Homarr.", + "preferIP": "Het wordt aanbevolen om het directe IP te gebruiken van de machine of container waarmee je probeert te communiceren.", + "enablePings": "Controleer of het IP correct is door pings in te schakelen. Pas bord aan -> Lay-out -> Pings inschakelen. Er verschijnt een rood of groen bubbeltje op de app-tegels en als je er met de muis overheen gaat, zie je de response code (in de meeste gevallen wordt een groen bubbeltje met code 200 verwacht).", + "wget": "Om er zeker van te zijn dat Homarr kan communiceren met de andere apps, moet je wget/curl/ping doen naar de IP:poort van de app.", + "iframe": "Als het gaat om iframes, moeten deze altijd hetzelfde protocol (http/s) gebruiken als Homarr.", "clearCache": "Sommige informatie wordt geregistreerd in de cache, dus een integratie werkt misschien niet tenzij je de cache leegmaakt in de algemene opties van Homarr." }, "footer": "Neem voor meer probleemoplossing contact op met onze {{discord}}." @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Extern adres", - "description": "URL die wordt geopend wanneer op de app wordt geklikt." + "description": "URL die wordt geopend wanneer op de app wordt geklikt.", + "tooltip": "Je kunt een paar variabelen gebruiken om dynamische adressen te maken:

[homarr_base]: volledig adres zonder poort en pad. (Voorbeeld: 'https://subdomain.homarr.dev')
[homarr_hostname]: volledige basis URL inclusief het huidige subdomein. (Voorbeeld: 'subdomain.homarr.dev')
[homarr_domain]: domein met uitgefilterd subdomein. (Voorbeeld: `homarr.dev')
[homarr_protocol]: http/https

Deze variabelen zijn allemaal afhankelijk van de huidige URL." } }, "behaviour": { @@ -40,15 +41,15 @@ "description": "Open de app in een nieuw tabblad in plaats van de huidige." }, "tooltipDescription": { - "label": "Toepassing Beschrijving", - "description": "De tekst die je invoert verschijnt wanneer je met de muis over je app beweegt.\r\nGebruik dit om gebruikers meer details over je app te geven of laat het leeg om niets te hebben." + "label": "Applicatie beschrijving", + "description": "De tekst die je invoert verschijnt wanneer je met de muis over je app beweegt.\nGebruik dit om gebruikers meer details over je app te geven of laat het leeg om niets te hebben." }, - "customProtocolWarning": "Een niet-standaard protocol gebruiken. Dit kan vooraf geïnstalleerde toepassingen vereisen en veiligheidsrisico's met zich meebrengen. Zorg ervoor dat je adres veilig en vertrouwd is." + "customProtocolWarning": "Een niet-standaard protocol gebruiken. Dit kan vooraf geïnstalleerde applicaties vereisen en veiligheidsrisico's met zich meebrengen. Zorg ervoor dat je adres veilig en vertrouwd is." }, "network": { "statusChecker": { "label": "Status checker", - "description": "Controleert of uw app online is met een eenvoudig HTTP(S)-verzoek." + "description": "Controleert of je app online is met een eenvoudig HTTP(S)-verzoek." }, "statusCodes": { "label": "HTTP-statuscodes", @@ -58,42 +59,42 @@ "appearance": { "icon": { "label": "App icoon", - "description": "Begin te typen om een pictogram te vinden. Je kunt ook een URL van een afbeelding plakken om een aangepast pictogram te gebruiken.", + "description": "Begin te typen om een icoon te vinden. Je kunt ook een URL van een afbeelding plakken om een aangepast icoon te gebruiken.", "autocomplete": { "title": "Geen resultaten gevonden", - "text": "Probeer een specifiekere zoekterm te gebruiken. Als je het gewenste pictogram niet kan vinden, plak dan de bovenstaande URL van de afbeelding voor een aangepast pictogram" + "text": "Probeer een specifiekere zoekterm te gebruiken. Als je het gewenste icoon niet kan vinden, plak dan de bovenstaande URL van de afbeelding voor een aangepast icoon" }, "noItems": { - "title": "Externe pictogrammen laden", + "title": "Bezig met externe iconen laden", "text": "Dit kan enkele seconden duren" } }, "appNameFontSize": { - "label": "Lettergrootte app naam", + "label": "App naam lettergrootte", "description": "Stel de lettergrootte in voor wanneer de app-naam wordt weergegeven op de tegel." }, "appNameStatus": { - "label": "App Naam Status", + "label": "App naam status", "description": "Kies waar je de titel wilt weergeven, als dat al gebeurt.", "dropdown": { - "normal": "Toon titel alleen op tegel", - "hover": "Titel alleen tonen bij zweven over tooltip", + "normal": "Titel alleen op tegel weergeven", + "hover": "Titel alleen bij tooltip hoveren weergeven", "hidden": "Helemaal niet laten zien" } }, "positionAppName": { - "label": "App Naam Positie", - "description": "Positie van de naam van de app ten opzichte van het pictogram.", + "label": "App naam positie", + "description": "Positie van de naam van de app ten opzichte van het icoon.", "dropdown": { - "top": "Top", + "top": "Bovenkant", "right": "Rechts", - "bottom": "Bodem", + "bottom": "Onderkant", "left": "Links" } }, "lineClampAppName": { - "label": "App naam Lijnklem", - "description": "Bepaalt op hoeveel regels uw titel maximaal moet passen. Stel 0 in voor onbeperkt." + "label": "App naam regel clamp", + "description": "Bepaalt op hoeveel regels je titel maximaal moet passen. Stel 0 in voor onbeperkt." } }, "integration": { @@ -109,9 +110,9 @@ "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": "Je referenties fungeren als de toegang tot uw integraties en je zou deze nooit moeten delen met iemand anders. Het Homarr team zal nooit om inloggegevens vragen. Zorg ervoor dat je geheimen veilig opslaat en beheert.", - "clear": "Wis geheim", + "description": "Om een geheim bij te werken, voer je een waarde in en klikt je op de knop Opslaan. Om een geheim te verwijderen, gebruik je de knop Wissen.", + "warning": "Je referenties fungeren als de toegang tot je integraties en je zou deze nooit moeten delen met iemand anders. Het Homarr team zal nooit om inloggegevens vragen. Zorg ervoor dat je geheimen veilig opslaat en beheert.", + "clear": "Geheim wissen", "save": "Geheim opslaan", "update": "Geheim updaten" } @@ -120,7 +121,7 @@ "popover": "Je formulier bevat ongeldige gegevens. Daarom kan het niet worden opgeslagen. Los alle problemen op en klik opnieuw op deze knop om je wijzigingen op te slaan", "name": "Naam is vereist", "noUrl": "URL is vereist", - "invalidUrl": "Waarde is geen geldige url", + "invalidUrl": "Waarde is geen geldige URL", "noIconUrl": "Dit veld is verplicht", "noExternalUri": "Externe URL is vereist", "invalidExternalUri": "Externe URL is geen geldige uri" diff --git a/public/locales/nl/manage/boards.json b/public/locales/nl/manage/boards.json index 8b8d7d94a..70b5f672b 100644 --- a/public/locales/nl/manage/boards.json +++ b/public/locales/nl/manage/boards.json @@ -11,20 +11,20 @@ "view": "Bord bekijken" }, "menu": { - "setAsDefault": "Instellen als standaardkaart", + "setAsDefault": "Instellen als standaard bord", "delete": { "label": "Permanent verwijderen", - "disabled": "Verwijderen uitgeschakeld, omdat oudere Homarr-componenten het verwijderen van de standaardconfiguratie niet toestaan. Verwijdering zal in de toekomst mogelijk zijn." + "disabled": "Verwijderen uitgeschakeld, omdat oudere Homarr componenten het verwijderen van de standaardconfiguratie niet toestaan. Verwijdering zal in de toekomst mogelijk zijn." }, - "duplicate": "", + "duplicate": "Dupliceren", "rename": { - "label": "", + "label": "Hernoemen", "modal": { - "title": "", + "title": "{{name}} bord hernoemen", "fields": { "name": { - "label": "", - "placeholder": "" + "label": "Nieuwe naam", + "placeholder": "Nieuw bord naam" } } } @@ -36,7 +36,7 @@ } }, "buttons": { - "create": "Nieuw bord maken" + "create": "Nieuw bord aanmaken" }, "modals": { "delete": { @@ -44,13 +44,13 @@ "text": "Weet je zeker dat je dit bord wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt en je gegevens zullen permanent verloren gaan." }, "create": { - "title": "Maak bord", + "title": "Bord aanmaken", "text": "De naam kan niet worden gewijzigd nadat een bord is aangemaakt.", "form": { "name": { "label": "Naam" }, - "submit": "Maak" + "submit": "Aanmaken" } } } diff --git a/public/locales/nl/manage/index.json b/public/locales/nl/manage/index.json index 402609c82..0793b9cfc 100644 --- a/public/locales/nl/manage/index.json +++ b/public/locales/nl/manage/index.json @@ -1,15 +1,15 @@ { - "metaTitle": "Beheer", + "metaTitle": "Beheren", "hero": { "title": "Welkom terug, {{username}}", - "fallbackUsername": "Anonieme", - "subtitle": "Welkom bij Your Application Hub. Organiseer, optimaliseer en overwin!" + "fallbackUsername": "Anoniem", + "subtitle": "Welkom bij je applicatie hub. Organiseer, optimaliseer en overwin!" }, "quickActions": { "title": "Snelle acties", "boards": { "title": "Jouw borden", - "subtitle": "Uw borden maken en beheren" + "subtitle": "Je borden aanmaken en beheren" }, "inviteUsers": { "title": "Een nieuwe gebruiker uitnodigen", diff --git a/public/locales/nl/manage/users.json b/public/locales/nl/manage/users.json index 54780524d..664b5bdf6 100644 --- a/public/locales/nl/manage/users.json +++ b/public/locales/nl/manage/users.json @@ -2,14 +2,14 @@ "metaTitle": "Gebruikers", "pageTitle": "Gebruikers beheren", "buttons": { - "create": "Maak" + "create": "Aanmaken" }, "filter": { "roles": { - "all": "", - "normal": "", - "admin": "", - "owner": "" + "all": "Alle", + "normal": "Normaal", + "admin": "Beheerder", + "owner": "Eigenaar" } }, "table": { @@ -25,17 +25,17 @@ }, "modals": { "delete": { - "title": "Gebruiker verwijderen {{name}}", - "text": "Weet je zeker dat je de gebruiker {{name}}wilt verwijderen? Dit zal de gegevens van deze account verwijderen, maar niet de dashboards die door deze gebruiker zijn gemaakt." + "title": "Gebruiker {{name}} verwijderen", + "text": "Weet je zeker dat je de gebruiker {{name}} wilt verwijderen? Dit zal de gegevens van deze account verwijderen, maar niet de dashboards die door deze gebruiker zijn gemaakt." }, "change-role": { "promote": { - "title": "Promoveer gebruiker {{name}} tot admin", - "text": "Weet je zeker dat je de gebruiker {{name}} wilt promoveren tot admin? Dit geeft de gebruiker toegang tot alle bronnen op je Homarr-instantie." + "title": "Promoveer gebruiker {{name}} tot beheerder", + "text": "Weet je zeker dat je de gebruiker {{name}} wilt promoveren tot beheerder? Dit geeft de gebruiker toegang tot alle bronnen op je Homarr instantie." }, "demote": { "title": "Degradeer gebruiker {{name}} naar gebruiker", - "text": "Weet je zeker dat je de gebruiker {{name}} wilt degraderen naar gebruiker? Dit zal de toegang van de gebruiker tot alle bronnen op je Homarr-instantie verwijderen." + "text": "Weet je zeker dat je de gebruiker {{name}} wilt degraderen naar gebruiker? Dit zal de toegang van de gebruiker tot alle bronnen op je Homarr instantie verwijderen." }, "confirm": "Bevestigen" } diff --git a/public/locales/nl/manage/users/create.json b/public/locales/nl/manage/users/create.json index a107acc7f..ad316eda3 100644 --- a/public/locales/nl/manage/users/create.json +++ b/public/locales/nl/manage/users/create.json @@ -22,8 +22,8 @@ "title": "Bevestiging", "text": "Opslaan in database", "card": { - "title": "Uw invoer controleren", - "text": "Nadat je je gegevens naar de database hebt gestuurd, kan de gebruiker inloggen. Weet je zeker dat je deze gebruiker wilt opslaan in de database en de aanmelding wilt activeren?" + "title": "Controleer je invoeringen", + "text": "Nadat je je gegevens naar de database hebt gestuurd, kan de gebruiker inloggen. Weet je zeker dat je deze gebruiker wilt opslaan in de database en de login wilt activeren?" }, "table": { "header": { @@ -47,6 +47,6 @@ }, "buttons": { "generateRandomPassword": "Willekeurig genereren", - "createAnother": "Maak een andere" + "createAnother": "Andere aanmaken" } } \ No newline at end of file diff --git a/public/locales/nl/manage/users/edit.json b/public/locales/nl/manage/users/edit.json index 270ab7277..9d613f7c9 100644 --- a/public/locales/nl/manage/users/edit.json +++ b/public/locales/nl/manage/users/edit.json @@ -1,6 +1,6 @@ { - "metaTitle": "", - "back": "", + "metaTitle": "Gebruiker {{username}}", + "back": "Terug naar gebruikersbeheer", "sections": { "general": { "title": "Algemeen", @@ -14,40 +14,40 @@ } }, "security": { - "title": "", + "title": "Beveiliging", "inputs": { "password": { - "label": "" + "label": "Nieuw wachtwoord" }, "terminateExistingSessions": { - "label": "", - "description": "" + "label": "Bestaande sessies beëindigen", + "description": "Dwingt gebruikers om opnieuw in te loggen op hun apparaten" }, "confirm": { - "label": "Bevestig", - "description": "" + "label": "Bevestigen", + "description": "Wachtwoord wordt bijgewerkt. De actie kan niet worden teruggedraaid." } } }, "roles": { - "title": "", - "currentRole": "", + "title": "Rollen", + "currentRole": "Huidige rol: ", "badges": { - "owner": "", - "admin": "", - "normal": "" + "owner": "Eigenaar", + "admin": "Beheerder", + "normal": "Normaal" } }, "deletion": { - "title": "", + "title": "Account verwijdering", "inputs": { "confirmUsername": { - "label": "", - "description": "" + "label": "Gebruikersnaam bevestigen", + "description": "Typ gebruikersnaam om verwijdering te bevestigen" }, "confirm": { "label": "Permanent verwijderen", - "description": "" + "description": "Ik ben me ervan bewust dat deze actie permanent is en dat alle accountgegevens verloren zullen gaan." } } } diff --git a/public/locales/nl/manage/users/invites.json b/public/locales/nl/manage/users/invites.json index 5223d771a..4a1af11e8 100644 --- a/public/locales/nl/manage/users/invites.json +++ b/public/locales/nl/manage/users/invites.json @@ -1,16 +1,16 @@ { - "metaTitle": "Gebruiker nodigt uit", - "pageTitle": "Uitnodigingen voor gebruikers beheren", - "description": "Met behulp van uitnodigingen kun je gebruikers uitnodigen voor je Homarr instance. Een uitnodiging is slechts een bepaalde tijd geldig en kan eenmalig gebruikt worden. De geldigheidsduur moet bij het aanmaken tussen 5 minuten en 12 maanden liggen.", + "metaTitle": "Gebruikersuitnodigingen", + "pageTitle": "Gebruikersuitnodigingen beheren", + "description": "Met behulp van uitnodigingen kun je gebruikers uitnodigen voor je Homarr instantie. Een uitnodiging is slechts een bepaalde tijd geldig en kan eenmalig gebruikt worden. De geldigheidsduur moet bij het aanmaken tussen 5 minuten en 12 maanden liggen.", "button": { - "createInvite": "Uitnodiging maken", + "createInvite": "Uitnodiging aanmaken", "deleteInvite": "Uitnodiging verwijderen" }, "table": { "header": { "id": "ID", - "creator": "Schepper", - "expires": "Verloopt op", + "creator": "Maker", + "expires": "Verloopt", "action": "Acties" }, "data": { @@ -20,17 +20,17 @@ }, "modals": { "create": { - "title": "Uitnodiging maken", + "title": "Uitnodiging aanmaken", "description": "Na de vervaldatum is een uitnodiging niet langer geldig en kan de ontvanger van de uitnodiging geen account meer aanmaken.", "form": { "expires": "Vervaldatum", - "submit": "Maak" + "submit": "Aanmaken" } }, "copy": { "title": "Uitnodiging kopiëren", "description": "Je uitnodiging is gegenereerd. Nadat deze modal is gesloten, kun je deze link niet meer kopiëren. Als je deze persoon niet langer wilt uitnodigen, kun je deze uitnodiging op elk gewenst moment verwijderen.", - "invitationLink": "Uitnodiging link", + "invitationLink": "Uitnodigingslink", "details": { "id": "ID", "token": "Penning" diff --git a/public/locales/nl/modules/bookmark.json b/public/locales/nl/modules/bookmark.json index 0570423c4..80551f65c 100644 --- a/public/locales/nl/modules/bookmark.json +++ b/public/locales/nl/modules/bookmark.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Bladwijzer", - "description": "Een statische lijst met strings of koppelingen weergeven", + "description": "Een statische lijst met strings of links weergeven", "settings": { - "title": "Bladwijzerinstellingen", + "title": "Bladwijzer instellingen", "name": { - "label": "Widget Titel", + "label": "Widget titel", "info": "Laat leeg om de titel verborgen te houden." }, "items": { @@ -29,7 +29,7 @@ }, "item": { "validation": { - "length": "De lengte moet tussen {{shortest}} en {{longest}}liggen.", + "length": "De lengte moet tussen {{shortest}} en {{longest}} liggen.", "invalidLink": "Geen geldige link", "errorMsg": "Niet opgeslagen, omdat er validatiefouten waren. Pas je invoer aan" }, @@ -37,7 +37,7 @@ "url": "URL", "newTab": "Open in nieuw tabblad", "hideHostname": "Hostnaam verbergen", - "hideIcon": "Pictogram verbergen", + "hideIcon": "Icoon verbergen", "delete": "Verwijderen" } } diff --git a/public/locales/nl/modules/calendar.json b/public/locales/nl/modules/calendar.json index b649feb36..80c291eec 100644 --- a/public/locales/nl/modules/calendar.json +++ b/public/locales/nl/modules/calendar.json @@ -3,7 +3,7 @@ "name": "Kalender", "description": "Toont een kalender met komende releases, van ondersteunde integraties.", "settings": { - "title": "Instellingen voor Kalender widget", + "title": "Instellingen voor kalender widget", "radarrReleaseType": { "label": "Radarr release type", "data": { @@ -13,19 +13,19 @@ } }, "hideWeekDays": { - "label": "Verberg weekdagen" + "label": "Weekdagen verbergen" }, "showUnmonitored": { - "label": "Toon niet-bewaakte items" + "label": "Niet-bewaakte items weergeven" }, "fontSize": { "label": "Lettergrootte", "data": { - "xs": "Extra Klein", + "xs": "Extra klein", "sm": "Klein", - "md": "Medium", + "md": "Middel", "lg": "Groot", - "xl": "Extra Groot" + "xl": "Extra groot" } } } diff --git a/public/locales/nl/modules/dashdot.json b/public/locales/nl/modules/dashdot.json index fa7e98574..a292e0335 100644 --- a/public/locales/nl/modules/dashdot.json +++ b/public/locales/nl/modules/dashdot.json @@ -33,7 +33,7 @@ "label": "Weergeven als tekst (compact)" }, "multiView": { - "label": "Weergeven als multi-drive weergave" + "label": "Weergeven als multi-drive-weergave" } }, "network": { @@ -57,7 +57,7 @@ "label": "Kolombreedte" }, "multiView": { - "label": "Weergeven als multi-core weergave" + "label": "Weergeven als multi-core-weergave" } }, "ram": { @@ -85,10 +85,10 @@ "title": "Dash.", "errors": { "noService": "Geen Dash. service gevonden. Voeg er een toe aan je Homarr dashboard of stel een Dash. URL in in de module opties", - "noInformation": "Kan geen informatie verkrijgen van dash. - gebruik je de laatste versie?", + "noInformation": "Kan geen informatie verkrijgen van Dash. - gebruik je de laatste versie?", "protocolDowngrade": { "title": "Protocol downgrade gedetecteerd", - "text": "De verbinding met uw Dash. instantie gebruikt HTTP. Dit is een veiligheidsrisico, want HTTP is niet gecodeerd en aanvallers zouden deze verbinding kunnen misbruiken. Zorg ervoor dat Dash. HTTPS gebruikt, of downgrade Homarr naar HTTP (niet aanbevolen)." + "text": "De verbinding met je Dash. instantie gebruikt HTTP. Dit is een veiligheidsrisico, want HTTP is niet gecodeerd en aanvallers zouden deze verbinding kunnen misbruiken. Zorg ervoor dat Dash. HTTPS gebruikt, of downgrade Homarr naar HTTP (niet aanbevolen)." } }, "graphs": { diff --git a/public/locales/nl/modules/date.json b/public/locales/nl/modules/date.json index d79cd7714..ad439b1d7 100644 --- a/public/locales/nl/modules/date.json +++ b/public/locales/nl/modules/date.json @@ -22,9 +22,9 @@ }, "titleState": { "label": "Klok titel", - "info": "", + "info": "De aangepaste titel en de tijdzonecode kunnen worden getoond op je widget.
Je kunt ook alleen de stad tonen, geen enkele tonen,
of zelfs alleen de tijdzone tonen als beide zijn geselecteerd maar er geen titel is gegeven.", "data": { - "both": "", + "both": "Titel en tijdzone", "city": "Alleen titel", "none": "Geen" } diff --git a/public/locales/nl/modules/dlspeed.json b/public/locales/nl/modules/dlspeed.json index 559cd3e0a..de9f71b1e 100644 --- a/public/locales/nl/modules/dlspeed.json +++ b/public/locales/nl/modules/dlspeed.json @@ -28,7 +28,7 @@ "errors": { "noDownloadClients": { "title": "Geen ondersteunde download clients gevonden!", - "text": "Voeg een downloadservice toe om uw huidige downloads weer te geven" + "text": "Voeg een downloadservice toe om je huidige downloads weer te geven" } } } diff --git a/public/locales/nl/modules/dns-hole-controls.json b/public/locales/nl/modules/dns-hole-controls.json index 29f896385..aac193a64 100644 --- a/public/locales/nl/modules/dns-hole-controls.json +++ b/public/locales/nl/modules/dns-hole-controls.json @@ -1,18 +1,25 @@ { "descriptor": { - "name": "Controle DNS-gat", + "name": "DNS-hole bedieningen", "description": "Bedien PiHole of AdGuard vanaf je dashboard", "settings": { - "title": "Instellingen DNS-gatcontrole", + "title": "Instellingen DNS-hole bedieningen", "showToggleAllButtons": { - "label": "Toon de knoppen 'Alles inschakelen/uitschakelen" + "label": "Toon de knoppen 'Alles in-/uitschakelen" } }, "errors": { "general": { - "title": "Kan geen DNS-gat vinden", - "text": "Er is een probleem opgetreden bij de verbinding met uw DNS-gat(en). Controleer uw configuratie/integratie(s)." + "title": "Kan geen DNS-hole vinden", + "text": "Er is een probleem opgetreden bij de verbinding met uw DNS-gat(en). Controleer je configuratie/integratie(s)." } } + }, + "durationModal": { + "title": "Duur uitschakelen instellen", + "hours": "Uren", + "minutes": "Minuten", + "unlimited": "laat leeg voor onbeperkt", + "set": "Instellen" } } \ No newline at end of file diff --git a/public/locales/nl/modules/dns-hole-summary.json b/public/locales/nl/modules/dns-hole-summary.json index 57ba024c3..59f15e4e4 100644 --- a/public/locales/nl/modules/dns-hole-summary.json +++ b/public/locales/nl/modules/dns-hole-summary.json @@ -1,9 +1,9 @@ { "descriptor": { - "name": "DNS-gat samenvatting", + "name": "DNS-hole samenvatting", "description": "Toont belangrijke gegevens van PiHole of AdGuard", "settings": { - "title": "Instellingen voor DNS-gatenoverzicht", + "title": "Instellingen voor DNS-hole overzicht", "usePiHoleColors": { "label": "Gebruik kleuren van PiHole" }, diff --git a/public/locales/nl/modules/docker.json b/public/locales/nl/modules/docker.json index cddb32123..831ad3502 100644 --- a/public/locales/nl/modules/docker.json +++ b/public/locales/nl/modules/docker.json @@ -4,7 +4,7 @@ "description": "Geeft de mogelijkheid om al je Docker Containers gemakkelijk te zien en beheren." }, "search": { - "placeholder": "Zoek op container of afbeeldingsnaam" + "placeholder": "Zoek op container- of afbeeldingsnaam" }, "table": { "header": { @@ -26,7 +26,7 @@ "actionBar": { "addService": { "title": "App toevoegen", - "message": "Toevoegen aan Homarr" + "message": "App toevoegen aan Homarr" }, "restart": { "title": "Herstart" diff --git a/public/locales/nl/modules/health-monitoring.json b/public/locales/nl/modules/health-monitoring.json index 88e3a4a27..02e6de999 100644 --- a/public/locales/nl/modules/health-monitoring.json +++ b/public/locales/nl/modules/health-monitoring.json @@ -1,104 +1,104 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Systeem gezondheidsmonitoring", + "description": "Toont informatie over de gezondheid en status van je systeem(en).", "settings": { - "title": "", + "title": "Instellingen voor systeem gezondheidsmonitoring", "fahrenheit": { - "label": "" + "label": "CPU-temperatuur in fahrenheit" }, "cpu": { - "label": "", - "load": "", - "minute": "", - "minutes": "" + "label": "CPU-info weergeven", + "load": "Gemiddelde laden", + "minute": "{{minute}} minuut", + "minutes": "{{minutes}} minuten" }, "memory": { - "label": "" + "label": "Werkgeheugen info weergeven" }, "fileSystem": { - "label": "" + "label": "Bestandssysteem info weergeven" }, "node": { - "label": "", - "info": "" + "label": "Filter op node-naam", + "info": "Voer de naam van je Proxmox node in om alleen de statistieken voor die node te tonen. Standaard wordt het gehele cluster getoond." }, "defaultViewState": { - "label": "", + "label": "Sectie standaard geopend", "data": { "none": "Geen", - "node": "", - "vm": "", - "lxc": "", + "node": "Onderdelen", + "vm": "VM's", + "lxc": "LXC's", "storage": "Opslagruimte" } }, "defaultTabState": { - "label": "", - "info": "", + "label": "Tabblad standaard geopend", + "info": "Tabblad standaard geopend. Wordt alleen gebruikt als er meerdere integraties beschikbaar zijn.", "data": { - "system": "", - "cluster": "" + "system": "Systeem", + "cluster": "Cluster" } }, "summary": { - "label": "" + "label": "Samenvatting-sectie weergeven" }, "showNode": { - "label": "" + "label": "Nodes-sectie weergeven" }, "showVM": { - "label": "" + "label": "VM's weergeven" }, "showLXCs": { - "label": "" + "label": "LXC’s-sectie weergeven" }, "showStorage": { - "label": "" + "label": "Opslag-sectie weergeven" }, "sectionIndicatorColor": { - "label": "", - "info": "", + "label": "Sectiestatusindicator moet ‘Oké’ zijn", + "info": "voor ‘Alle’ moeten alle items online zijn om de indicator groen te krijgen. voor ‘Elke’ moet ten minste één item online zijn.", "data": { - "any": "", - "all": "" + "any": "Elke actieve", + "all": "Alle actieve" } }, "ignoreCert": { - "label": "", - "info": "" + "label": "Fouten in certificaten negeren", + "info": "Als deze optie is ingeschakeld, negeert de widget certificaatfouten bij toegang tot de Proxmox API. Dit kan handig zijn bij toegang tot Proxmox via HTTPS." } } }, "cpu": { "label": "CPU", - "load": "", - "minute": "" + "load": "Gemiddelde laden", + "minute": "{{minute}} minuut" }, "memory": { - "label": "", - "totalMem": "", - "available": "" + "label": "Geheugen", + "totalMem": "Totaal werkgeheugen: {{total}}GB", + "available": "Beschikbaar: {{available}}GB - {{percentage}}%" }, "fileSystem": { - "label": "", - "available": "" + "label": "Bestandssysteem", + "available": "Beschikbaar: {{available}} - {{percentage}}%" }, "info": { - "uptime": "", - "uptimeFormat": "", - "updates": "", - "reboot": "" + "uptime": "Uptime", + "uptimeFormat": "{{days}} dagen, {{hours}} uren, {{minutes}} minuten", + "updates": "Updates beschikbaar", + "reboot": "Opnieuw opstarten" }, "errors": { "general": { - "title": "", - "text": "" + "title": "Kan je systeem(en) niet vinden.", + "text": "Er is een probleem opgetreden bij de verbinding met je systeem. Controleer je configuratie/integratie(s)." } }, "headings": { - "system": "", - "cluster": "" + "system": "Systeem", + "cluster": "Cluster" }, "cluster": { "summary": { @@ -107,9 +107,9 @@ }, "accordion": { "title": { - "nodes": "", - "vms": "", - "lxcs": "", + "nodes": "Onderdelen", + "vms": "VM's", + "lxcs": "LXC's", "storage": "Opslagruimte" } }, @@ -118,24 +118,24 @@ "name": "Naam", "cpu": "CPU", "ram": "RAM", - "node": "" + "node": "Systeem" } }, "popover": { - "node": "", - "vmid": "", + "node": "Systeem", + "vmid": "VMID", "details": "Beschrijving", - "cores": "", - "memSize": "", - "memRatio": "", - "diskSize": "", - "diskRatio": "", - "uptime": "", - "plugin": "", - "ha": "", - "sharedStorage": "", - "localStorage": "", - "na": "" + "cores": "Cores - {{maxCpu}}", + "memSize": "Werkgeheugen - {{maxMem}}", + "memRatio": "Werkgeheugen - {{usedMem}} / {{maxMem}}", + "diskSize": "Schijf - {{maxDisk}}", + "diskRatio": "Schijf - {{usedDisk}} / {{maxDisk}}", + "uptime": "Uptime - {{uptime}}", + "plugin": "Plugin", + "ha": "HA-status - {{haState}}", + "sharedStorage": "Gedeelde opslag", + "localStorage": "Lokale opslag", + "na": "N.v.t." } } } \ No newline at end of file diff --git a/public/locales/nl/modules/indexer-manager.json b/public/locales/nl/modules/indexer-manager.json index 9b01e3093..c77501510 100644 --- a/public/locales/nl/modules/indexer-manager.json +++ b/public/locales/nl/modules/indexer-manager.json @@ -1,19 +1,22 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Indexeer beheerder status", + "description": "Status over je indexers", "settings": { - "title": "" + "title": "Indexeer beheerder status", + "openIndexerSiteInNewTab": { + "label": "Indexeringssite openen in nieuw tabblad" + } } }, "indexersStatus": { - "title": "", - "testAllButton": "" + "title": "Indexeer beheerder", + "testAllButton": "Alles testen" }, "errors": { "general": { - "title": "", - "text": "" + "title": "Kan geen indexer beheerder vinden", + "text": "Er is een probleem opgetreden bij het verbinden met je indexer beheerder. Controleer je configuratie/integratie(s)." } } } \ No newline at end of file diff --git a/public/locales/nl/modules/media-requests-list.json b/public/locales/nl/modules/media-requests-list.json index 279dbdcda..7e521cd31 100644 --- a/public/locales/nl/modules/media-requests-list.json +++ b/public/locales/nl/modules/media-requests-list.json @@ -1,7 +1,7 @@ { "descriptor": { - "name": "Media Verzoeken", - "description": "Bekijk een lijst met alle mediaverzoeken van uw Overseerr of Jellyseerr instantie", + "name": "Mediaverzoeken", + "description": "Bekijk een lijst met alle mediaverzoeken van je Overseerr of Jellyseerr instantie", "settings": { "title": "Lijst met mediaverzoeken", "replaceLinksWithExternalHost": { @@ -17,18 +17,18 @@ "approved": "Goedgekeurd", "pendingApproval": "In afwachting van goedkeuring", "declined": "Afgewezen", - "available": "", + "available": "Beschikbaar", "partial": "Gedeeltelijk" }, "tooltips": { "approve": "Verzoeken goedkeuren", - "decline": "Verzoeken weigeren", - "approving": "Verzoek goedkeuren..." + "decline": "Verzoeken afwijzen", + "approving": "Bezig met verzoek goedkeuren…" }, "mutation": { - "approving": "Goedkeuring", - "declining": "Afnemend", - "request": "verzoek...", + "approving": "Bezig met goedkeuren", + "declining": "Bezig met afwijzen", + "request": "verzoek…", "approved": "Aanvraag goedgekeurd!", "declined": "Verzoek afgewezen!" } diff --git a/public/locales/nl/modules/media-requests-stats.json b/public/locales/nl/modules/media-requests-stats.json index 654f7a3da..f9605ac8a 100644 --- a/public/locales/nl/modules/media-requests-stats.json +++ b/public/locales/nl/modules/media-requests-stats.json @@ -1,6 +1,6 @@ { "descriptor": { - "name": "Media verzoek statistieken", + "name": "Mediaverzoek statistieken", "description": "Statistieken over je mediaverzoeken", "settings": { "title": "Mediaverzoeken statistieken", @@ -14,14 +14,14 @@ }, "mediaStats": { "title": "Media statistieken", - "pending": "Wachtende goedkeuringen", + "pending": "In afwachting van goedkeuring", "tvRequests": "TV verzoeken", "movieRequests": "Film verzoeken", "approved": "Reeds goedgekeurd", "totalRequests": "Totaal" }, "userStats": { - "title": "Top gebruikers", + "title": "Grootste gebruikers", "requests": "Verzoeken: {{number}}" } } diff --git a/public/locales/nl/modules/media-server.json b/public/locales/nl/modules/media-server.json index 691d5d3f7..046a9752b 100644 --- a/public/locales/nl/modules/media-server.json +++ b/public/locales/nl/modules/media-server.json @@ -1,12 +1,12 @@ { "descriptor": { - "name": "Media Server", + "name": "Media server", "description": "Interageer met je Jellyfin of Plex mediaserver", "settings": { "title": "Instellingen voor media server widget" } }, - "loading": "Stromen laden", + "loading": "Bezig met streams laden", "card": { "table": { "header": { @@ -17,7 +17,7 @@ }, "errors": { "general": { - "title": "Het is niet mogelijk om de content te laden", + "title": "Kan inhoud niet laden", "text": "Kan geen informatie van de server ophalen. Controleer de logs voor meer details" } } diff --git a/public/locales/nl/modules/media-transcoding.json b/public/locales/nl/modules/media-transcoding.json index b6d1cc9e3..ea4127194 100644 --- a/public/locales/nl/modules/media-transcoding.json +++ b/public/locales/nl/modules/media-transcoding.json @@ -1,96 +1,96 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Media transcodering", + "description": "Informatie over media transcodering weergeven", "settings": { - "title": "", + "title": "Instellingen voor media transcodering", "appId": { - "label": "" + "label": "Selecteer een app" }, "defaultView": { - "label": "", + "label": "Standaardweergave", "data": { - "workers": "", + "workers": "Workers", "queue": "Wachtrij", - "statistics": "" + "statistics": "Statistieken" } }, "showHealthCheck": { - "label": "" + "label": "Indicator voor gezondheidscontrole weergeven" }, "showHealthChecksInQueue": { - "label": "" + "label": "Gezondheidscontroles in wachtrij weergeven" }, "queuePageSize": { - "label": "" + "label": "Wachtrij: items per pagina" }, "showAppIcon": { - "label": "" + "label": "App-icoon in de rechterbenedenhoek weergeven" } } }, - "noAppSelected": "", + "noAppSelected": "Selecteer een app in de widget instellingen", "views": { "workers": { "table": { "header": { - "name": "", + "name": "Bestand", "eta": "ETA", "progress": "Voortgang" }, "empty": "Leeg", "tooltip": { - "transcode": "", - "healthCheck": "" + "transcode": "Transcoderen", + "healthCheck": "Gezondheidscontrole" } } }, "queue": { "table": { "header": { - "name": "", + "name": "Bestand", "size": "Grootte" }, "footer": { - "currentIndex": "" + "currentIndex": "{{start}}-{{end}} van {{total}}" }, "empty": "Leeg", "tooltip": { - "transcode": "", - "healthCheck": "" + "transcode": "Transcoderen", + "healthCheck": "Gezondheidscontrole" } } }, "statistics": { "empty": "Leeg", "box": { - "transcodes": "", - "healthChecks": "", - "files": "", - "spaceSaved": "" + "transcodes": "Transcodes: {{value}}", + "healthChecks": "Gezondheidstests: {{value}}", + "files": "Bestanden: {{value}}", + "spaceSaved": "Opgeslagen: {{value}}" }, "pies": { - "transcodes": "", - "healthChecks": "", - "videoCodecs": "", - "videoContainers": "", - "videoResolutions": "" + "transcodes": "Transcodes", + "healthChecks": "Gezondheidscontroles", + "videoCodecs": "Codecs", + "videoContainers": "Containers", + "videoResolutions": "Resoluties" } } }, "error": { "title": "Fout", - "message": "" + "message": "Er is een fout opgetreden tijdens het ophalen van gegevens uit Tdarr." }, "tabs": { - "workers": "", + "workers": "Workers", "queue": "Wachtrij", - "statistics": "" + "statistics": "Statistieken" }, "healthCheckStatus": { - "title": "", - "queued": "", - "healthy": "", - "unhealthy": "" + "title": "Gezondheidscontrole", + "queued": "In wachtrij", + "healthy": "Gezond", + "unhealthy": "Ongezond" } } diff --git a/public/locales/nl/modules/notebook.json b/public/locales/nl/modules/notebook.json index cd011572e..123ac781e 100644 --- a/public/locales/nl/modules/notebook.json +++ b/public/locales/nl/modules/notebook.json @@ -1,14 +1,14 @@ { "descriptor": { - "name": "Notebook", + "name": "Notitieboek", "description": "Een op markdown gebaseerde interactieve widget om je notities op te schrijven!", "settings": { - "title": "Instellingen voor de notebook widget", + "title": "Instellingen voor de notitieboek widget", "showToolbar": { "label": "Toon de werkbalk om je te helpen markdown te schrijven" }, "allowReadOnlyCheck": { - "label": "" + "label": "Controle in alleen-lezen modus toestaan" }, "content": { "label": "De inhoud van het notitieboek" @@ -22,38 +22,38 @@ "strikethrough": "Doorgestreept", "underline": "Onderstreept", "colorText": "Kleur tekst", - "colorHighlight": "", - "code": "", - "clear": "", - "heading": "", - "align": "", - "blockquote": "", - "horizontalLine": "", + "colorHighlight": "Gekleurde tekst markeren", + "code": "Code", + "clear": "Opmaak wissen", + "heading": "Koptekst {{level}}", + "align": "Tekst uitlijnen: {{position}}", + "blockquote": "Blokquote", + "horizontalLine": "Horizontale lijn", "bulletList": "Opsommingslijst", - "orderedList": "", - "checkList": "", - "increaseIndent": "", - "decreaseIndent": "", + "orderedList": "Geordende lijst", + "checkList": "Controlelijst", + "increaseIndent": "Inspringen vergroten", + "decreaseIndent": "Inspringen verminderen", "link": "Link", "unlink": "Link verwijderen", "image": "Afbeelding insluiten", "addTable": "Tabel toevoegen", "deleteTable": "Tabel verwijderen", "colorCell": "Kleur cel", - "mergeCell": "", - "addColumnLeft": "", - "addColumnRight": "", - "deleteColumn": "", - "addRowTop": "", - "addRowBelow": "", - "deleteRow": "" + "mergeCell": "Cellen samenvoegen togglen", + "addColumnLeft": "Kolom toevoegen vóór", + "addColumnRight": "Kolom toevoegen ná", + "deleteColumn": "Kolom verwijderen", + "addRowTop": "Rij toevoegen vóór", + "addRowBelow": "Rij toevoegen ná", + "deleteRow": "Rij verwijderen" }, "modals": { - "clearColor": "", - "source": "", - "widthPlaceholder": "", - "columns": "", - "rows": "" + "clearColor": "Kleur wissen", + "source": "Bron", + "widthPlaceholder": "Waarde in % or pixels", + "columns": "Kolommen", + "rows": "Rijen" } } } \ No newline at end of file diff --git a/public/locales/nl/modules/ping.json b/public/locales/nl/modules/ping.json index bfbf8ff3f..0ec1aa59d 100644 --- a/public/locales/nl/modules/ping.json +++ b/public/locales/nl/modules/ping.json @@ -1,11 +1,11 @@ { "descriptor": { "name": "Ping", - "description": "Toont een statusindicator afhankelijk van de HTTP response code van een bepaalde URL." + "description": "Toont een statusindicator afhankelijk van de HTTP-response code van een bepaalde URL." }, "states": { "online": "Online {{response}}", "offline": "Offline {{response}}", - "loading": "Bezig met laden..." + "loading": "Zie meer…" } } diff --git a/public/locales/nl/modules/rss.json b/public/locales/nl/modules/rss.json index 9edc3731a..74a64a446 100644 --- a/public/locales/nl/modules/rss.json +++ b/public/locales/nl/modules/rss.json @@ -1,12 +1,12 @@ { "descriptor": { - "name": "RSS Widget", - "description": "Met de rss-widget kun je RSS-feeds weergeven op je dashboard.", + "name": "RSS-widget", + "description": "Met de RSS-widget kun je RSS-feeds weergeven op je dashboard.", "settings": { - "title": "Instellingen voor RSS widget", + "title": "Instellingen voor RSS-widget", "rssFeedUrl": { - "label": "RSS feed URL's", - "description": "De URL's van de RSS-feeds die u wilt weergeven." + "label": "RSS-feed URL's", + "description": "De URL's van de RSS-feeds die je wilt weergeven." }, "refreshInterval": { "label": "Verversingsinterval (in minuten)" @@ -16,23 +16,23 @@ "info": "HTML-opmaak van buitenaf toestaan kan gevaarlijk zijn.
Zorg ervoor dat de feed afkomstig is van een betrouwbare bron." }, "textLinesClamp": { - "label": "Tekstregels klem" + "label": "Tekstregels clamp" }, "sortByPublishDateAscending": { - "label": "" + "label": "Sorteren op publicatiedatum (oplopend)" }, "sortPostsWithoutPublishDateToTheTop": { - "label": "" + "label": "Zet berichten zonder publicatiedatum bovenaan" }, "maximumAmountOfPosts": { - "label": "" + "label": "Maximum aantal berichten" } }, "card": { "errors": { "general": { - "title": "Kan RSS feed niet ophalen", - "text": "Er was een probleem met het bereiken van de RSS feed. Zorg ervoor dat u de RSS-feed correct hebt geconfigureerd met een geldige URL. URL's moeten overeenkomen met de officiële specificatie. Na het bijwerken van de feed, moet u mogelijk het dashboard vernieuwen." + "title": "Kan RSS-feed niet ophalen", + "text": "Er was een probleem met het bereiken van de RSS-feed. Zorg ervoor dat je de RSS-feed correct hebt geconfigureerd met een geldige URL. URL's moeten overeenkomen met de officiële specificatie. Na het bijwerken van de feed, moet je mogelijk het dashboard vernieuwen." } } } diff --git a/public/locales/nl/modules/search.json b/public/locales/nl/modules/search.json index ca94fd822..1c5606638 100644 --- a/public/locales/nl/modules/search.json +++ b/public/locales/nl/modules/search.json @@ -1,16 +1,16 @@ { "descriptor": { "name": "Zoekbalk", - "description": "Een zoekbalk waarmee u uw aangepaste zoekmachine, YouTube en ondersteunde integraties kunt doorzoeken." + "description": "Een zoekbalk waarmee je je aangepaste zoekmachine, YouTube en ondersteunde integraties kunt doorzoeken." }, "input": { - "placeholder": "Zoek op het web..." + "placeholder": "Zoek op het web…" }, "switched-to": "Omgeschakeld naar", "searchEngines": { "search": { "name": "Web", - "description": "Zoeken..." + "description": "Zoeken…" }, "youtube": { "name": "YouTube", @@ -18,11 +18,11 @@ }, "torrents": { "name": "Torrents", - "description": "Zoek naar Torrents" + "description": "Zoek naar torrents" }, "overseerr": { "name": "Overseerr", - "description": "Zoek naar Films en TV-series op Overseerr" + "description": "Zoek naar films en TV-series op Overseerr" } }, "tip": "Je kan de zoekbalk selecteren met de sneltoets ", diff --git a/public/locales/nl/modules/smart-home/entity-state.json b/public/locales/nl/modules/smart-home/entity-state.json index 45587f0a5..af422fc28 100644 --- a/public/locales/nl/modules/smart-home/entity-state.json +++ b/public/locales/nl/modules/smart-home/entity-state.json @@ -1,32 +1,32 @@ { - "entityNotFound": "", + "entityNotFound": "Entiteit niet gevonden", "descriptor": { - "name": "", - "description": "", + "name": "Home Assistent entiteit", + "description": "Huidige status van een entiteit in Home Assistant", "settings": { - "title": "", + "title": "Status entiteit", "entityId": { - "label": "", - "info": "" + "label": "Entiteit-ID", + "info": "Unieke entiteit-ID in Home Assistant. Kopieer door te klikken op entiteit > Klik op tandwielicoon > Klik op de kopieerknop bij 'Entiteit ID'. Sommige aangepaste entiteiten worden mogelijk niet ondersteund." }, "appendUnit": { - "label": "", - "info": "" + "label": "Maateenheid toevoegen", + "info": "Voeg het attribuut van de maateenheid toe aan de status van de entiteit." }, "automationId": { - "label": "", - "info": "" + "label": "Optionele automatiserings-ID", + "info": "Je unieke automatiserings-ID. Begint altijd met automation.XXXXX. Als dit niet is ingesteld, kan er niet op de widget worden geklikt en wordt alleen de status weergegeven. Na een klik wordt de status van de entiteit vernieuwd." }, "displayName": { - "label": "" + "label": "Weergavenaam" }, "displayFriendlyName": { - "label": "", - "info": "" + "label": "Vriendelijke naam weergeven", + "info": "Vriendelijke naam van Home Assistant weergeven in plaats van weergavenaam." }, "genericToggle": { - "label": "", - "info": "" + "label": "Entiteit toggle", + "info": "Voer een algemene Home Assistant toggle-actie uit op een entiteit wanneer erop wordt geklikt." } } } diff --git a/public/locales/nl/modules/smart-home/trigger-automation.json b/public/locales/nl/modules/smart-home/trigger-automation.json index 37046b5cf..dffc38894 100644 --- a/public/locales/nl/modules/smart-home/trigger-automation.json +++ b/public/locales/nl/modules/smart-home/trigger-automation.json @@ -1,15 +1,15 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Home Assistant automatisering", + "description": "Een automatisering uitvoeren", "settings": { - "title": "", + "title": "Een automatisering uitvoeren", "automationId": { - "label": "", - "info": "" + "label": "Automatiserings-ID", + "info": "Je unieke automatiserings-ID. Begint altijd met automation.XXXXX." }, "displayName": { - "label": "" + "label": "Weergavenaam" } } } diff --git a/public/locales/nl/modules/torrents-status.json b/public/locales/nl/modules/torrents-status.json index 02aeec058..c143b38f6 100644 --- a/public/locales/nl/modules/torrents-status.json +++ b/public/locales/nl/modules/torrents-status.json @@ -11,35 +11,35 @@ "label": "Afgeronde torrents weergeven" }, "displayActiveTorrents": { - "label": "" + "label": "Actieve torrents weergeven" }, "speedLimitOfActiveTorrents": { - "label": "" + "label": "Uploadsnelheid om een torrent als actief te beschouwen (kB/s)" }, "displayStaleTorrents": { - "label": "Toon verouderde torrents" + "label": "Verouderde torrents weergeven" }, "labelFilterIsWhitelist": { "label": "Label lijst is een whitelist (in plaats van blacklist)" }, "labelFilter": { "label": "Label lijst", - "description": "Als \"is whitelist\" is aangevinkt, is dit een witte lijst. Indien niet aangevinkt, is dit een zwarte lijst. Doet niets als hij leeg is" + "description": "Als \"is whitelist\" is aangevinkt, is dit een insluitingslijst. Indien niet aangevinkt, is dit een uitsluitingslijst. Zal niets doen wanneer leeg" }, "displayRatioWithFilter": { - "label": "", - "info": "" + "label": "Toon gefilterde torrents lijst verhouding", + "info": "Als deze optie is uitgeschakeld, wordt alleen de globale verhouding weergegeven. De globale verhouding zal nog steeds de labels gebruiken indien ingesteld" }, "columnOrdering": { - "label": "" + "label": "Volgorde van de kolommen wijzigen inschakelen" }, "rowSorting": { - "label": "" + "label": "Rijen sorteren inschakelen" }, "columns": { - "label": "", + "label": "Selecteer kolommen om weer te geven", "data": { - "date": "", + "date": "Datum toegevoegd", "down": "Down", "up": "Up", "eta": "ETA", @@ -47,7 +47,7 @@ } }, "nameColumnSize": { - "label": "" + "label": "Grootte van de naamkolom wijzigen" } } }, @@ -55,27 +55,27 @@ "footer": { "error": "Fout", "lastUpdated": "Laatst bijgewerkt {{time}} geleden", - "ratioGlobal": "", - "ratioWithFilter": "" + "ratioGlobal": "Globale verhouding", + "ratioWithFilter": "Verhouding met filter" }, "table": { "header": { - "isCompleted": "", + "isCompleted": "Bezig met downloaden", "name": "Naam", - "dateAdded": "", + "dateAdded": "Toegevoegd op", "size": "Grootte", "download": "Down", "upload": "Up", "estimatedTimeOfArrival": "ETA", "progress": "Voortgang", - "totalUploaded": "", - "totalDownloaded": "", - "ratio": "", - "seeds": "", - "peers": "", - "label": "", + "totalUploaded": "Totale upload", + "totalDownloaded": "Totale download", + "ratio": "Verhouding", + "seeds": "Seeds (Verbonden)", + "peers": "Peers (Verbonden)", + "label": "Label", "state": "Status", - "stateMessage": "" + "stateMessage": "Status bericht" }, "item": { "text": "Beheerd door {{appName}}, {{ratio}} verhouding" @@ -96,11 +96,11 @@ "errors": { "noDownloadClients": { "title": "Geen ondersteunde Torrent clients gevonden!", - "text": "Voeg een ondersteunde Torrent-client toe om je huidige downloads te bekijken" + "text": "Voeg een ondersteunde Torrent client toe om je huidige downloads te bekijken" }, "generic": { "title": "Er is een onverwachte fout opgetreden", - "text": "Kan niet communiceren met je Torrent-clients. Controleer je configuratie" + "text": "Kan niet communiceren met je Torrent clients. Controleer je configuratie" } }, "popover": { diff --git a/public/locales/nl/modules/usenet.json b/public/locales/nl/modules/usenet.json index b98f951c6..6cab94e0c 100644 --- a/public/locales/nl/modules/usenet.json +++ b/public/locales/nl/modules/usenet.json @@ -1,13 +1,13 @@ { "descriptor": { "name": "Usenet", - "description": "Maakt het mogelijk om je Usenet installatie te bekijken en te beheren." + "description": "Geef de mogelijkheid om je Usenet installatie te bekijken en te beheren." }, "card": { "errors": { "noDownloadClients": { "title": "Geen ondersteunde download clients gevonden!", - "text": "Voeg een ondersteunde Usenet Download Client toe om uw huidige downloads te bekijken" + "text": "Voeg een ondersteunde Usenet download client toe om je huidige downloads te bekijken" } } }, @@ -42,7 +42,7 @@ "empty": "Leeg", "error": { "title": "Fout", - "message": "Fout bij het laden van de geschiedenis" + "message": "Fout bij laden van geschiedenis" }, "paused": "Gepauzeerd" } diff --git a/public/locales/nl/modules/weather.json b/public/locales/nl/modules/weather.json index 026b97b26..db73c565c 100644 --- a/public/locales/nl/modules/weather.json +++ b/public/locales/nl/modules/weather.json @@ -40,4 +40,4 @@ } }, "error": "Er is een fout opgetreden" -} \ No newline at end of file +} diff --git a/public/locales/nl/settings/customization/access.json b/public/locales/nl/settings/customization/access.json index 5c93d2e16..202e2f8a8 100644 --- a/public/locales/nl/settings/customization/access.json +++ b/public/locales/nl/settings/customization/access.json @@ -1,6 +1,6 @@ { "allowGuests": { "label": "Anoniem toestaan", - "description": "Niet-ingelogde gebruikers je forum laten bekijken" + "description": "Niet-ingelogde gebruikers toestaan je bord te bekijken" } } \ No newline at end of file diff --git a/public/locales/nl/settings/customization/general.json b/public/locales/nl/settings/customization/general.json index a93f65a2b..2385b55cb 100644 --- a/public/locales/nl/settings/customization/general.json +++ b/public/locales/nl/settings/customization/general.json @@ -19,11 +19,11 @@ }, "accessibility": { "name": "Toegankelijkheid", - "description": "Homarr configureren voor gehandicapte gebruikers" + "description": "Homarr configureren voor beperkte en gehandicapte gebruikers" }, "access": { - "name": "", - "description": "Configureren wie toegang heeft tot je board" + "name": "Toegang", + "description": "Configureren wie toegang heeft tot je bord" } } } diff --git a/public/locales/nl/settings/customization/gridstack.json b/public/locales/nl/settings/customization/gridstack.json index adb548a83..ead9b07bb 100644 --- a/public/locales/nl/settings/customization/gridstack.json +++ b/public/locales/nl/settings/customization/gridstack.json @@ -1,10 +1,10 @@ { "columnsCount": { "labelPreset": "Kolommen in {{size}} grootte", - "descriptionPreset": "Aantal kolommen wanneer het scherm minder dan {{pixels}} pixels breed is.", + "descriptionPreset": "Aantal kolommen wanneer het scherm minder is dan {{pixels}} pixels breed", "descriptionExceedsPreset": "Aantal kolommen wanneer het scherm groter is dan {{pixels}} pixels" }, "unsavedChanges": "Je hebt niet opgeslagen wijzigingen. Klik op de knop Wijzigingen toepassen hieronder om ze toe te passen en op te slaan.", "applyChanges": "Wijzigingen toepassen", - "defaultValues": "Standaardwaarden" + "defaultValues": "Standaard waarden" } \ 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 ca2b258ff..225e55d04 100644 --- a/public/locales/nl/settings/customization/page-appearance.json +++ b/public/locales/nl/settings/customization/page-appearance.json @@ -13,38 +13,38 @@ }, "favicon": { "label": "Favicon", - "description": "Het pictogram dat wordt weergegeven in je browsertabblad" + "description": "Het icoon dat wordt weergegeven in je browsertabblad" }, "background": { "label": "Achtergrond" }, "backgroundImageAttachment": { - "label": "", + "label": "Achtergrondafbeelding bijlage", "options": { - "fixed": "", - "scroll": "" + "fixed": "Vastgezet - Achtergrond blijft op dezelfde positie (aanbevolen)", + "scroll": "Scrollen - De achtergrond scrolt met je muis" } }, "backgroundImageSize": { - "label": "Grootte achtergrondafbeelding", + "label": "Achtergrondafbeelding grootte", "options": { "cover": "Bedekken - Schaalt de afbeelding zo klein mogelijk om het hele venster te bedekken door overtollige ruimte bij te snijden. (aanbevolen)", - "contain": "" + "contain": "Bevatten - Schaalt de afbeelding zo groot mogelijk binnen de container zonder de afbeelding bij te snijden of uit te rekken." } }, "backgroundImageRepeat": { - "label": "", + "label": "Achtergrondafbeelding bijlage", "options": { - "repeat": "", - "no-repeat": "", - "repeat-x": "", - "repeat-y": "" + "repeat": "Herhalen - De afbeelding wordt zoveel herhaald als nodig is om het hele achtergrondafbeelding gebied te bedekken.", + "no-repeat": "Geen herhaling - De afbeelding wordt niet herhaald en mag niet de hele ruimte vullen (aanbevolen)", + "repeat-x": "Herhaal X - Hetzelfde als 'Herhaal' maar alleen op de horizontale as.", + "repeat-y": "Herhaal Y - Hetzelfde als 'Herhaal' maar alleen op de verticale as." } }, "customCSS": { "label": "Eigen CSS", "description": "Pas je dashboard verder aan met behulp van CSS, alleen aanbevolen voor ervaren gebruikers", "placeholder": "Eigen CSS wordt als laatste toegepast", - "applying": "CSS aan het toepassen..." + "applying": "Bezig met CSS toepassen…" } } diff --git a/public/locales/nl/tools/docker.json b/public/locales/nl/tools/docker.json index a85983df6..86cf3d945 100644 --- a/public/locales/nl/tools/docker.json +++ b/public/locales/nl/tools/docker.json @@ -2,7 +2,7 @@ "title": "Docker", "alerts": { "notConfigured": { - "text": "" + "text": "Je Homarr instantie heeft Docker niet geconfigureerd of het is mislukt om containers op te halen. Raadpleeg de documentatie over het instellen van de integratie." } }, "modals": { @@ -11,7 +11,7 @@ "text": "Kies het bord waar je de apps voor de geselecteerde Docker-containers wilt toevoegen.", "form": { "board": { - "label": "Raad van bestuur" + "label": "Bord" }, "submit": "Apps toevoegen" } diff --git a/public/locales/nl/user/preferences.json b/public/locales/nl/user/preferences.json index b3cb5c0fd..2fb81024c 100644 --- a/public/locales/nl/user/preferences.json +++ b/public/locales/nl/user/preferences.json @@ -3,18 +3,18 @@ "pageTitle": "Jouw voorkeuren", "boards": { "defaultBoard": { - "label": "Standaardkaart" + "label": "Standaard bord" } }, "accessibility": { "title": "Toegankelijkheid", "disablePulse": { "label": "Ping-puls uitschakelen", - "description": "Standaard pingen de ping-indicatoren in Homarr. Dit kan irritant zijn. Deze schuifknop deactiveert de animatie" + "description": "Standaard pulseren de ping-indicatoren in Homarr. Dit kan irritant zijn. Deze schuifregelaar deactiveert de animatie" }, "replaceIconsWithDots": { "label": "Ping-punten vervangen door pictogrammen", - "description": "Voor kleurenblinde gebruikers kunnen ping-punten onherkenbaar zijn. Dit vervangt indicatoren door pictogrammen" + "description": "Voor kleurenblinde gebruikers kunnen ping-punten onherkenbaar zijn. Dit vervangt indicatoren door iconen" } }, "localization": { diff --git a/public/locales/nl/widgets/draggable-list.json b/public/locales/nl/widgets/draggable-list.json index b803f9793..51b2fba5e 100644 --- a/public/locales/nl/widgets/draggable-list.json +++ b/public/locales/nl/widgets/draggable-list.json @@ -1,7 +1,7 @@ { "noEntries": { - "title": "Geen inzendingen", + "title": "Geen items", "text": "Gebruik de knoppen hieronder om meer items toe te voegen" }, - "buttonAdd": "Voeg toe" + "buttonAdd": "Toevoegen" } diff --git a/public/locales/nl/zod.json b/public/locales/nl/zod.json index 43ca8a9ce..434626726 100644 --- a/public/locales/nl/zod.json +++ b/public/locales/nl/zod.json @@ -5,7 +5,7 @@ "string": { "startsWith": "Dit veld moet beginnen met {{startsWith}}", "endsWith": "Dit veld moet eindigen op {{endsWith}}", - "includes": "Dit veld moet {{includes}}bevatten." + "includes": "Dit veld moet {{includes}} bevatten." }, "tooSmall": { "string": "Dit veld moet minstens {{minimum}} tekens lang zijn", diff --git a/public/locales/no/common.json b/public/locales/no/common.json index 72dedab7d..c0067ee12 100644 --- a/public/locales/no/common.json +++ b/public/locales/no/common.json @@ -17,6 +17,7 @@ "disabled": "Deaktivert", "enableAll": "Aktiver alle", "disableAll": "Deaktiver alle", + "setTimer": "", "version": "Versjon", "changePosition": "Endre posisjon", "remove": "Fjern", diff --git a/public/locales/no/layout/modals/add-app.json b/public/locales/no/layout/modals/add-app.json index 371ecbe64..905b573e9 100644 --- a/public/locales/no/layout/modals/add-app.json +++ b/public/locales/no/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Ekstern adresse", - "description": "URL som vil åpnes når du klikker på appen." + "description": "URL som vil åpnes når du klikker på appen.", + "tooltip": "" } }, "behaviour": { diff --git a/public/locales/no/modules/dns-hole-controls.json b/public/locales/no/modules/dns-hole-controls.json index 5f2d6e088..cda036870 100644 --- a/public/locales/no/modules/dns-hole-controls.json +++ b/public/locales/no/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Det oppsto et problem med å koble til ditt DNS-hole. Vennligst bekreft konfigurasjonen/integrasjonen(e)." } } + }, + "durationModal": { + "title": "", + "hours": "", + "minutes": "", + "unlimited": "", + "set": "" } } \ No newline at end of file diff --git a/public/locales/no/modules/indexer-manager.json b/public/locales/no/modules/indexer-manager.json index 6018869e3..b5f99e5ac 100644 --- a/public/locales/no/modules/indexer-manager.json +++ b/public/locales/no/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Indekserings-behandler status", "description": "Status om indeksererne dine", "settings": { - "title": "Indekserings-behandler status" + "title": "Indekserings-behandler status", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/pl/authentication/login.json b/public/locales/pl/authentication/login.json index 3cab00b0e..31ad0b73c 100644 --- a/public/locales/pl/authentication/login.json +++ b/public/locales/pl/authentication/login.json @@ -16,7 +16,7 @@ }, "afterLoginRedirection": "Po zalogowaniu nastąpi przekierowanie na stronę {{url}}", "providersEmpty": { - "title": "", + "title": "Błąd dostawcy uwierzytelniania", "message": "" } }, diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index d3a5c1c20..5673ad35d 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -17,6 +17,7 @@ "disabled": "Wyłączony", "enableAll": "Włącz wszystkie", "disableAll": "Wyłącz wszystkie", + "setTimer": "Ustaw minutnik", "version": "Wersja", "changePosition": "Zmiana pozycji", "remove": "Usuń", diff --git a/public/locales/pl/layout/modals/add-app.json b/public/locales/pl/layout/modals/add-app.json index 79445aae3..1ae131f8e 100644 --- a/public/locales/pl/layout/modals/add-app.json +++ b/public/locales/pl/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Adres zewnętrzny", - "description": "URL, który zostanie otwarty po kliknięciu na aplikację." + "description": "URL, który zostanie otwarty po kliknięciu na aplikację.", + "tooltip": "" } }, "behaviour": { diff --git a/public/locales/pl/modules/dns-hole-controls.json b/public/locales/pl/modules/dns-hole-controls.json index 0501bf15b..765d88a6b 100644 --- a/public/locales/pl/modules/dns-hole-controls.json +++ b/public/locales/pl/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Wystąpił problem z połączeniem się z pułapką DNS. Sprawdź konfigurację/integrację." } } + }, + "durationModal": { + "title": "", + "hours": "", + "minutes": "", + "unlimited": "", + "set": "" } } \ No newline at end of file diff --git a/public/locales/pl/modules/indexer-manager.json b/public/locales/pl/modules/indexer-manager.json index 9b01e3093..931454027 100644 --- a/public/locales/pl/modules/indexer-manager.json +++ b/public/locales/pl/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "", "description": "", "settings": { - "title": "" + "title": "", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/pl/modules/media-requests-stats.json b/public/locales/pl/modules/media-requests-stats.json index d68657356..9c60024b7 100644 --- a/public/locales/pl/modules/media-requests-stats.json +++ b/public/locales/pl/modules/media-requests-stats.json @@ -16,7 +16,7 @@ "title": "Statystyki mediów", "pending": "Oczekujące na zatwierdzenie", "tvRequests": "Zapytania o seriale", - "movieRequests": "Zaptrania o filmy", + "movieRequests": "Zapytania o filmy", "approved": "Zatwierdzone", "totalRequests": "Razem" }, diff --git a/public/locales/pl/modules/rss.json b/public/locales/pl/modules/rss.json index f783a6edf..73d779732 100644 --- a/public/locales/pl/modules/rss.json +++ b/public/locales/pl/modules/rss.json @@ -19,7 +19,7 @@ "label": "Maksymalna ilość linii tekstu" }, "sortByPublishDateAscending": { - "label": "" + "label": "Sortuj według daty publikacji (rosnąco)" }, "sortPostsWithoutPublishDateToTheTop": { "label": "" diff --git a/public/locales/pl/modules/torrents-status.json b/public/locales/pl/modules/torrents-status.json index 1863277a3..559a8bd95 100644 --- a/public/locales/pl/modules/torrents-status.json +++ b/public/locales/pl/modules/torrents-status.json @@ -31,15 +31,15 @@ "info": "Jeśli ta opcja jest wyłączona, wyświetlany będzie tylko współczynnik globalny. Współczynnik globalny będzie nadal używał etykiet, jeśli są ustawione" }, "columnOrdering": { - "label": "" + "label": "Włącz zmianę kolejności kolumn" }, "rowSorting": { - "label": "" + "label": "Włącz sortowanie wierszy" }, "columns": { - "label": "", + "label": "Wybierz kolumny do wyświetlenia", "data": { - "date": "", + "date": "Data dodania", "down": "Pobieranie", "up": "Udostępnianie", "eta": "ETA", @@ -47,7 +47,7 @@ } }, "nameColumnSize": { - "label": "" + "label": "Zmień rozmiar kolumny nazwy" } } }, @@ -60,20 +60,20 @@ }, "table": { "header": { - "isCompleted": "", + "isCompleted": "Pobieranie", "name": "Nazwa", - "dateAdded": "", + "dateAdded": "Dodano", "size": "Rozmiar", "download": "Pobieranie", "upload": "Udostępnianie", "estimatedTimeOfArrival": "ETA", "progress": "Postęp", - "totalUploaded": "", - "totalDownloaded": "", - "ratio": "", - "seeds": "", - "peers": "", - "label": "", + "totalUploaded": "Suma Przesyłania", + "totalDownloaded": "Suma pobierania", + "ratio": "Proporcja", + "seeds": "Seedy (połączone)", + "peers": "Peery (połączone)", + "label": "Etykieta", "state": "Status", "stateMessage": "" }, diff --git a/public/locales/pl/modules/weather.json b/public/locales/pl/modules/weather.json index 3e7f1acc2..62984e4a1 100644 --- a/public/locales/pl/modules/weather.json +++ b/public/locales/pl/modules/weather.json @@ -11,10 +11,10 @@ "label": "Wyświetlaj nazwę miasta" }, "displayWeekly": { - "label": "" + "label": "Wyświetl tygodniową prognozę" }, "forecastDays": { - "label": "" + "label": "Dni do wyświetlenia" }, "location": { "label": "Lokalizacja pogody" diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 72242b38c..7040eba2f 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -17,6 +17,7 @@ "disabled": "Desativado", "enableAll": "Habilitar tudo", "disableAll": "Desativar tudo", + "setTimer": "", "version": "Versão", "changePosition": "Mudar de posição", "remove": "Excluir", diff --git a/public/locales/pt/layout/modals/add-app.json b/public/locales/pt/layout/modals/add-app.json index b91ded8ce..d938fc4ba 100644 --- a/public/locales/pt/layout/modals/add-app.json +++ b/public/locales/pt/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Endereço externo", - "description": "URL que será aberto ao clicar na aplicação." + "description": "URL que será aberto ao clicar na aplicação.", + "tooltip": "" } }, "behaviour": { diff --git a/public/locales/pt/modules/dns-hole-controls.json b/public/locales/pt/modules/dns-hole-controls.json index 93b1950b1..d57209772 100644 --- a/public/locales/pt/modules/dns-hole-controls.json +++ b/public/locales/pt/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Houve um problema na conexão com seu(s) buraco(s) DNS. Verifique sua(s) configuração(ões)/integração(ões)." } } + }, + "durationModal": { + "title": "", + "hours": "", + "minutes": "", + "unlimited": "", + "set": "" } } \ No newline at end of file diff --git a/public/locales/pt/modules/health-monitoring.json b/public/locales/pt/modules/health-monitoring.json index bd01b5577..786beeb78 100644 --- a/public/locales/pt/modules/health-monitoring.json +++ b/public/locales/pt/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "Tempo de Atividade", - "uptimeFormat": "{{days}} dias, {{hours}} horas", + "uptimeFormat": "", "updates": "Atualizações disponíveis", "reboot": "Reiniciar" }, diff --git a/public/locales/pt/modules/indexer-manager.json b/public/locales/pt/modules/indexer-manager.json index 271658e04..b4795ad10 100644 --- a/public/locales/pt/modules/indexer-manager.json +++ b/public/locales/pt/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Status do Gerenciador de Indexadores", "description": "Estado dos seus indexadores", "settings": { - "title": "Status do Gerenciador de Indexadores" + "title": "Status do Gerenciador de Indexadores", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index 7c60b4ee9..fb6d92826 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -17,6 +17,7 @@ "disabled": "Dezactivat", "enableAll": "Activați toate", "disableAll": "Dezactivaţi toate", + "setTimer": "", "version": "Versiune", "changePosition": "Schimbă locația", "remove": "Elimină", diff --git a/public/locales/ro/layout/modals/add-app.json b/public/locales/ro/layout/modals/add-app.json index 2cf647ee5..4d2b36933 100644 --- a/public/locales/ro/layout/modals/add-app.json +++ b/public/locales/ro/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Adresa externă", - "description": "Adresa URL-ul care va fi deschisă atunci când faceți clic pe aplicație." + "description": "Adresa URL-ul care va fi deschisă atunci când faceți clic pe aplicație.", + "tooltip": "Puteți utiliza câteva variabile pentru a crea adrese dinamice:

[homarr_base]: adresa completă, excluzând portul și calea. (Exemplu: \"https://subdomain.homarr.dev\")
[homarr_hostname]: adresa completă a bazei, inclusiv subdomeniul curent. (Exemplu: \"subdomain.homarr.dev\")
[homarr_domain]: domeniu cu subdomeniul filtrat. (Exemplu: `homarr.dev')
[homarr_protocol]: http/https

Toate aceste variabile depind de URL-ul curent." } }, "behaviour": { diff --git a/public/locales/ro/modules/dns-hole-controls.json b/public/locales/ro/modules/dns-hole-controls.json index 39ff87c0d..9096b7e7d 100644 --- a/public/locales/ro/modules/dns-hole-controls.json +++ b/public/locales/ro/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "A apărut o problemă la conectarea la hole-DNS. Vă rugăm să verificați configurația/integrarea (integrările)." } } + }, + "durationModal": { + "title": "", + "hours": "", + "minutes": "", + "unlimited": "", + "set": "" } } \ No newline at end of file diff --git a/public/locales/ro/modules/health-monitoring.json b/public/locales/ro/modules/health-monitoring.json index 8111caeaf..183714d2b 100644 --- a/public/locales/ro/modules/health-monitoring.json +++ b/public/locales/ro/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "Timp de funcționare", - "uptimeFormat": "{{days}} zile, {{hours}} ore", + "uptimeFormat": "", "updates": "Actualizări disponibile", "reboot": "Repornire" }, diff --git a/public/locales/ro/modules/indexer-manager.json b/public/locales/ro/modules/indexer-manager.json index fd7c90f3d..75179d599 100644 --- a/public/locales/ro/modules/indexer-manager.json +++ b/public/locales/ro/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Starea managerului de clasificare", "description": "Statistici despre clasificatoarele dvs.", "settings": { - "title": "Starea managerului de clasificare" + "title": "Starea managerului de clasificare", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/ro/modules/smart-home/entity-state.json b/public/locales/ro/modules/smart-home/entity-state.json index 3d826fbe3..235c2335d 100644 --- a/public/locales/ro/modules/smart-home/entity-state.json +++ b/public/locales/ro/modules/smart-home/entity-state.json @@ -22,11 +22,11 @@ }, "displayFriendlyName": { "label": "Afișează un nume prietenos", - "info": "" + "info": "Afișează un nume prietenos din Home Assistant în loc de numele afișat." }, "genericToggle": { - "label": "", - "info": "" + "label": "Schimbător de entități", + "info": "Efectuați o acțiune generala de comutare al Home Assistant-ului când faceți clic pe entitate." } } } diff --git a/public/locales/ru/authentication/login.json b/public/locales/ru/authentication/login.json index 1e04c7d5b..e12160547 100644 --- a/public/locales/ru/authentication/login.json +++ b/public/locales/ru/authentication/login.json @@ -14,10 +14,10 @@ "buttons": { "submit": "Войти" }, - "afterLoginRedirection": "После входа вы будете перенаправлены на сайт {{url}}", + "afterLoginRedirection": "После входа вы будете перенаправлены на {{url}}", "providersEmpty": { "title": "Ошибка провайдера авторизации", - "message": "Провайдер(ы) не установлен(ы), проверьте журналы для получения дополнительной информации." + "message": "Провайдер(ы) не настроен(ы), проверьте журналы для получения дополнительной информации." } }, "alert": "Ваши учетные данные неверны или данный аккаунт не существует. Пожалуйста, попробуйте еще раз." diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 9bf87ecfc..b06efae7e 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -17,6 +17,7 @@ "disabled": "Отключено", "enableAll": "Включить всё", "disableAll": "Отключить всё", + "setTimer": "Установите таймер", "version": "Версия", "changePosition": "Изменить положение", "remove": "Удалить", diff --git a/public/locales/ru/layout/modals/add-app.json b/public/locales/ru/layout/modals/add-app.json index 6befedd3f..fadf37089 100644 --- a/public/locales/ru/layout/modals/add-app.json +++ b/public/locales/ru/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Внешний адрес", - "description": "URL-адрес, который будет открыт при нажатии на приложение." + "description": "URL-адрес, который будет открыт при нажатии на приложение.", + "tooltip": "Вы можете использовать несколько переменных для создания динамических адресов:

[homarr_base]: полный адрес без порта и пути. (Пример: 'https://subdomain.homarr.dev')
[homarr_hostname]: полный базовый URL, включая текущий поддомен. (Пример: 'subdomain.homarr.dev')
[homarr_domain]: домен без поддомена. (Пример: 'homarr.dev')
[homarr_protocol]: http/https

Эти переменные зависят от текущего URL." } }, "behaviour": { diff --git a/public/locales/ru/modules/dns-hole-controls.json b/public/locales/ru/modules/dns-hole-controls.json index 402674cf2..074995863 100644 --- a/public/locales/ru/modules/dns-hole-controls.json +++ b/public/locales/ru/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Проблема с подключением к вашим фильтрующим DNS. Пожалуйста, проверьте свои настройки/интеграцию." } } + }, + "durationModal": { + "title": "Установить время отключения", + "hours": "Часы", + "minutes": "Минуты", + "unlimited": "оставьте это поле пустым, если не хотите устанавливать время", + "set": "Установить" } } \ No newline at end of file diff --git a/public/locales/ru/modules/health-monitoring.json b/public/locales/ru/modules/health-monitoring.json index 720834f33..ca93a582f 100644 --- a/public/locales/ru/modules/health-monitoring.json +++ b/public/locales/ru/modules/health-monitoring.json @@ -1,78 +1,78 @@ { "descriptor": { "name": "Мониторинг состояния системы", - "description": "Информация о вашем NAS", + "description": "Отображает информацию о состоянии и статусе вашей системы(систем).", "settings": { - "title": "", + "title": "Настройки мониторинга состояния системы", "fahrenheit": { - "label": "По Фаренгейту" + "label": "Температура процессора в градусах Фаренгейта" }, "cpu": { - "label": "", - "load": "Средняя загрузка", + "label": "Показывать информацию о процессоре", + "load": "Средняя нагрузка", "minute": "{{minute}} минута", - "minutes": "" + "minutes": "{{minutes}} минут" }, "memory": { - "label": "" + "label": "Показать информацию о памяти" }, "fileSystem": { - "label": "" + "label": "Показать информацию о файловой системе" }, "node": { - "label": "", - "info": "" + "label": "Фильтр по имени узла", + "info": "Введите имя узла Proxmox, чтобы отображать метрики только для этого узла. По умолчанию отображается весь кластер." }, "defaultViewState": { - "label": "", + "label": "Раздел открыт по умолчанию", "data": { "none": "Ничего", - "node": "", - "vm": "", - "lxc": "", + "node": "Узлы", + "vm": "Виртуальные машины", + "lxc": "LXC", "storage": "Хранилище" } }, "defaultTabState": { - "label": "", - "info": "", + "label": "Вкладка, открытая по умолчанию", + "info": "Вкладка, открытая по умолчанию. Используется только при наличии нескольких интеграций.", "data": { - "system": "", - "cluster": "" + "system": "Система", + "cluster": "Кластер" } }, "summary": { - "label": "" + "label": "Показать раздел сводки" }, "showNode": { - "label": "" + "label": "Показать раздел узлов" }, "showVM": { - "label": "" + "label": "Показать раздел виртуальных машин" }, "showLXCs": { - "label": "" + "label": "Показать раздел LXC" }, "showStorage": { - "label": "" + "label": "Показать раздел хранилища" }, "sectionIndicatorColor": { - "label": "", - "info": "", + "label": "Требование для индикатора состояния раздела быть 'OK'", + "info": "'Все' требует, чтобы все элементы были онлайн для зеленого индикатора. 'Любой' требует, чтобы хотя бы один элемент был онлайн.", "data": { - "any": "", - "all": "" + "any": "Любой активен", + "all": "Все активны" } }, "ignoreCert": { - "label": "", - "info": "" + "label": "Игнорировать ошибки сертификата", + "info": "Если включено, виджет будет игнорировать ошибки сертификата при доступе к API Proxmox. Это может быть полезно при доступе к Proxmox через HTTPS." } } }, "cpu": { "label": "ЦПУ", - "load": "Средняя загрузка", + "load": "Средняя нагрузка", "minute": "{{minute}} минута" }, "memory": { @@ -86,19 +86,19 @@ }, "info": { "uptime": "Время работы", - "uptimeFormat": "", - "updates": "Обновления", + "uptimeFormat": "{{days}} дней, {{hours}} часов, {{minutes}} минут", + "updates": "Доступны обновления", "reboot": "Перезагрузка" }, "errors": { "general": { - "title": "Не удалось найти ваш NAS", - "text": "Проблема с подключением к вашему NAS. Пожалуйста, проверьте свою конфигурацию/интеграцию." + "title": "Невозможно найти вашу систему (системы).", + "text": "Возникла проблема с подключением к вашей системе. Пожалуйста, проверьте вашу конфигурацию/интеграцию." } }, "headings": { - "system": "", - "cluster": "" + "system": "Система", + "cluster": "Кластер" }, "cluster": { "summary": { @@ -107,9 +107,9 @@ }, "accordion": { "title": { - "nodes": "", - "vms": "", - "lxcs": "", + "nodes": "Узлы", + "vms": "Виртуальные машины", + "lxcs": "LXC", "storage": "Хранилище" } }, @@ -118,24 +118,24 @@ "name": "Имя", "cpu": "ЦПУ", "ram": "ОЗУ", - "node": "" + "node": "Узел" } }, "popover": { - "node": "", - "vmid": "", + "node": "Узел", + "vmid": "VMID", "details": "Подробности", - "cores": "", - "memSize": "", - "memRatio": "", - "diskSize": "", - "diskRatio": "", - "uptime": "", - "plugin": "", - "ha": "", - "sharedStorage": "", - "localStorage": "", - "na": "" + "cores": "Ядра - {{maxCpu}}", + "memSize": "Память - {{maxMem}}", + "memRatio": "Память - {{usedMem}} / {{maxMem}}", + "diskSize": "Диск - {{maxDisk}}", + "diskRatio": "Диск - {{usedDisk}} / {{maxDisk}}", + "uptime": "Время работы - {{uptime}}", + "plugin": "Плагин", + "ha": "Состояние HA - {{haState}}", + "sharedStorage": "Общее хранилище", + "localStorage": "Локальное хранилище", + "na": "Н/Д" } } } \ No newline at end of file diff --git a/public/locales/ru/modules/indexer-manager.json b/public/locales/ru/modules/indexer-manager.json index 2d1f8d3a3..4e9d22278 100644 --- a/public/locales/ru/modules/indexer-manager.json +++ b/public/locales/ru/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Статус менеджера индексаторов", "description": "Информация о статусе ваших индексаторов", "settings": { - "title": "Статус менеджера индексаторов" + "title": "Статус менеджера индексаторов", + "openIndexerSiteInNewTab": { + "label": "Открыть сайт индексатора в новой вкладке" + } } }, "indexersStatus": { diff --git a/public/locales/ru/modules/media-transcoding.json b/public/locales/ru/modules/media-transcoding.json index dafb09a3f..ebbad9b17 100644 --- a/public/locales/ru/modules/media-transcoding.json +++ b/public/locales/ru/modules/media-transcoding.json @@ -1,96 +1,96 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Транскодирование медиа", + "description": "Отображает информацию о транскодировании медиа", "settings": { - "title": "", + "title": "Настройки транскодирования медиа", "appId": { - "label": "" + "label": "Выберите приложение" }, "defaultView": { - "label": "", + "label": "Вид по умолчанию", "data": { - "workers": "", + "workers": "Рабочие процессы", "queue": "Очередь", - "statistics": "" + "statistics": "Статистика" } }, "showHealthCheck": { - "label": "" + "label": "Показать индикатор проверки состояния" }, "showHealthChecksInQueue": { - "label": "" + "label": "Показывать проверки состояния в очереди" }, "queuePageSize": { - "label": "" + "label": "Очередь: элементов на странице" }, "showAppIcon": { - "label": "" + "label": "Показывать иконку приложения в правом нижнем углу" } } }, - "noAppSelected": "", + "noAppSelected": "Пожалуйста, выберите приложение в настройках виджета", "views": { "workers": { "table": { "header": { - "name": "", + "name": "Файл", "eta": "Осталось", "progress": "Прогресс" }, "empty": "Пусто", "tooltip": { - "transcode": "", - "healthCheck": "" + "transcode": "Транскодирование", + "healthCheck": "Проверка состояния" } } }, "queue": { "table": { "header": { - "name": "", + "name": "Файл", "size": "Размер" }, "footer": { - "currentIndex": "" + "currentIndex": "{{start}}-{{end}} из {{total}}" }, "empty": "Пусто", "tooltip": { - "transcode": "", - "healthCheck": "" + "transcode": "Транскодирование", + "healthCheck": "Проверка состояния" } } }, "statistics": { "empty": "Пусто", "box": { - "transcodes": "", - "healthChecks": "", - "files": "", - "spaceSaved": "" + "transcodes": "Транскодирование: {{value}}", + "healthChecks": "Проверки состояния: {{value}}", + "files": "Файлы: {{value}}", + "spaceSaved": "Сохранено: {{value}}" }, "pies": { - "transcodes": "", - "healthChecks": "", - "videoCodecs": "", - "videoContainers": "", - "videoResolutions": "" + "transcodes": "Транскодирование", + "healthChecks": "Проверки состояния", + "videoCodecs": "Кодеки", + "videoContainers": "Контейнеры", + "videoResolutions": "Разрешения" } } }, "error": { "title": "Ошибка", - "message": "" + "message": "Произошла ошибка при получении данных из Tdarr." }, "tabs": { - "workers": "", + "workers": "Рабочие процессы", "queue": "Очередь", - "statistics": "" + "statistics": "Статистика" }, "healthCheckStatus": { - "title": "", - "queued": "", - "healthy": "", - "unhealthy": "" + "title": "Проверка состояния", + "queued": "Очередь", + "healthy": "Исправен", + "unhealthy": "Неисправен" } } diff --git a/public/locales/ru/modules/smart-home/entity-state.json b/public/locales/ru/modules/smart-home/entity-state.json index 5f4e5bd52..bfec03d85 100644 --- a/public/locales/ru/modules/smart-home/entity-state.json +++ b/public/locales/ru/modules/smart-home/entity-state.json @@ -22,11 +22,11 @@ }, "displayFriendlyName": { "label": "Показать собственное имя", - "info": "" + "info": "Показывать собственное имя Home Assistant вместо отображаемого имени." }, "genericToggle": { - "label": "", - "info": "" + "label": "Переключение объекта", + "info": "Выполнить общее действие переключения Home Assistant для объекта при нажатии." } } } diff --git a/public/locales/ru/modules/torrents-status.json b/public/locales/ru/modules/torrents-status.json index 472c90779..8793a027e 100644 --- a/public/locales/ru/modules/torrents-status.json +++ b/public/locales/ru/modules/torrents-status.json @@ -17,7 +17,7 @@ "label": "Скорость загрузки, при которой торрент считается активным (кБ/с)" }, "displayStaleTorrents": { - "label": "Отображение устаревших торрентов" + "label": "Отображать неактивные торренты" }, "labelFilterIsWhitelist": { "label": "Список меток является белым списком (вместо черного списка)" @@ -31,15 +31,15 @@ "info": "Если отключено, будет отображаться только общий рейтинг. Общий рейтинг все равно будет использовать метки, если они заданы" }, "columnOrdering": { - "label": "" + "label": "Включить изменение порядка столбцов" }, "rowSorting": { - "label": "" + "label": "Включить сортировку строк" }, "columns": { - "label": "", + "label": "Выбрать столбцы для отображения", "data": { - "date": "", + "date": "Дата добавления", "down": "Загрузка", "up": "Отдача", "eta": "Осталось", @@ -47,7 +47,7 @@ } }, "nameColumnSize": { - "label": "" + "label": "Изменить размер столбца имени" } } }, @@ -95,7 +95,7 @@ }, "errors": { "noDownloadClients": { - "title": "Не найдено ни одного поддерживаемого Torrent-клиента!", + "title": "Не найдено поддерживаемых клиентов Torrent!", "text": "Добавьте поддерживаемый Torrent-клиент для просмотра текущих загрузок" }, "generic": { diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index d3f1d8d99..a5c234e1e 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -17,6 +17,7 @@ "disabled": "Zakázané", "enableAll": "Povoliť všetko", "disableAll": "Zakázať všetko", + "setTimer": "Nastavte časovač", "version": "verzia", "changePosition": "Zmeniť pozíciu", "remove": "Odstrániť", diff --git a/public/locales/sk/layout/modals/add-app.json b/public/locales/sk/layout/modals/add-app.json index fdebf8173..2895f846c 100644 --- a/public/locales/sk/layout/modals/add-app.json +++ b/public/locales/sk/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Externá adresa", - "description": "URL, ktorá sa otvorí po kliknutí na aplikáciu." + "description": "URL, ktorá sa otvorí po kliknutí na aplikáciu.", + "tooltip": "Na vytvorenie dynamických adries môžete použiť niekoľko premenných:

[homarr_base]: úplná adresa bez portu a cesty. (Príklad: 'https://subdomain.homarr.dev')
[homarr_hostname]: úplná základná url adresa vrátane jej aktuálnej subdomény. (Príklad: 'subdomena.homarr.dev')
[homarr_domena]: doména s odfiltrovanou subdoménou. (Príklad: `homarr.dev')
[homarr_protocol]: http/https

Všetky tieto premenné závisia od aktuálnej url." } }, "behaviour": { diff --git a/public/locales/sk/modules/dns-hole-controls.json b/public/locales/sk/modules/dns-hole-controls.json index 2fc15ed78..3bd0e40a1 100644 --- a/public/locales/sk/modules/dns-hole-controls.json +++ b/public/locales/sk/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Vyskytol sa problém s pripojením k vašim dieram DNS. Skontrolujte prosím svoju konfiguráciu/integráciu." } } + }, + "durationModal": { + "title": "Nastavenie času trvania zákazu", + "hours": "Hodiny", + "minutes": "Minúty", + "unlimited": "nechajte prázdne pre neobmedzené", + "set": "Nastaviť" } } \ No newline at end of file diff --git a/public/locales/sk/modules/health-monitoring.json b/public/locales/sk/modules/health-monitoring.json index f8dca0773..f5a02a359 100644 --- a/public/locales/sk/modules/health-monitoring.json +++ b/public/locales/sk/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "Čas prevádzky", - "uptimeFormat": "{{days}} dní, {{hours}} hodín", + "uptimeFormat": "{{days}} dní, {{hours}} hodín, {{minutes}} minút", "updates": "Dostupné aktualizácie", "reboot": "Reštartovať" }, diff --git a/public/locales/sk/modules/indexer-manager.json b/public/locales/sk/modules/indexer-manager.json index 2698af172..037ca941b 100644 --- a/public/locales/sk/modules/indexer-manager.json +++ b/public/locales/sk/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Stav správcu indexovača", "description": "Stav vašich indexov", "settings": { - "title": "Stav správcu indexovača" + "title": "Stav správcu indexovača", + "openIndexerSiteInNewTab": { + "label": "Otvorenie stránky Indexer v novej karte" + } } }, "indexersStatus": { diff --git a/public/locales/sk/modules/smart-home/entity-state.json b/public/locales/sk/modules/smart-home/entity-state.json index e41822b83..1fd5744d6 100644 --- a/public/locales/sk/modules/smart-home/entity-state.json +++ b/public/locales/sk/modules/smart-home/entity-state.json @@ -22,11 +22,11 @@ }, "displayFriendlyName": { "label": "Zobraziť priateľské meno", - "info": "" + "info": "Zobrazenie priateľského názvu z aplikácie Home Assistant namiesto zobrazenia názvu." }, "genericToggle": { - "label": "", - "info": "" + "label": "Prepínanie entít", + "info": "Vykonanie všeobecnej akcie prepínania asistenta Domov na entitu po kliknutí." } } } diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index 07594565d..c928210b8 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -17,6 +17,7 @@ "disabled": "Invalidi", "enableAll": "Omogoči vse", "disableAll": "Onemogočite vse", + "setTimer": "", "version": "Različica", "changePosition": "Spremeni položaj", "remove": "Odstrani", diff --git a/public/locales/sl/layout/modals/add-app.json b/public/locales/sl/layout/modals/add-app.json index 624acb750..d180df595 100644 --- a/public/locales/sl/layout/modals/add-app.json +++ b/public/locales/sl/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Zunanji naslov", - "description": "URL, ki se odpre ob kliku na aplikacijo." + "description": "URL, ki se odpre ob kliku na aplikacijo.", + "tooltip": "" } }, "behaviour": { diff --git a/public/locales/sl/modules/dns-hole-controls.json b/public/locales/sl/modules/dns-hole-controls.json index c2b122a57..b435f36b4 100644 --- a/public/locales/sl/modules/dns-hole-controls.json +++ b/public/locales/sl/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Pri povezovanju z vašimi luknjami DNS je prišlo do težave. Prosimo, preverite svojo konfiguracijo/integracijo(-e)." } } + }, + "durationModal": { + "title": "", + "hours": "", + "minutes": "", + "unlimited": "", + "set": "" } } \ No newline at end of file diff --git a/public/locales/sl/modules/indexer-manager.json b/public/locales/sl/modules/indexer-manager.json index 9b01e3093..931454027 100644 --- a/public/locales/sl/modules/indexer-manager.json +++ b/public/locales/sl/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "", "description": "", "settings": { - "title": "" + "title": "", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/sv/authentication/login.json b/public/locales/sv/authentication/login.json index 0586554e3..680e0f4e9 100644 --- a/public/locales/sv/authentication/login.json +++ b/public/locales/sv/authentication/login.json @@ -17,7 +17,7 @@ "afterLoginRedirection": "Efter inloggningen kommer du att omdirigeras till {{url}}", "providersEmpty": { "title": "Fel vid autentiseringsfel", - "message": "" + "message": "Leverantören/leverantörerna är inte inställda, kontrollera dina loggar för mer information." } }, "alert": "Dina autentiseringsuppgifter är felaktiga eller så finns inte det här kontot. Vänligen försök igen." diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index c607569ab..1e735e9ee 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -17,6 +17,7 @@ "disabled": "Inaktiverad", "enableAll": "Aktivera alla", "disableAll": "Inaktivera alla", + "setTimer": "Ställ in timer", "version": "Version", "changePosition": "Ändra position", "remove": "Ta bort", diff --git a/public/locales/sv/layout/modals/add-app.json b/public/locales/sv/layout/modals/add-app.json index d17ee83ae..092eb3b88 100644 --- a/public/locales/sv/layout/modals/add-app.json +++ b/public/locales/sv/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Extern adress", - "description": "URL som öppnas när du klickar på appen." + "description": "URL som öppnas när du klickar på appen.", + "tooltip": "Du kan använda några variabler för att skapa dynamiska adresser:

[homarr_base]: fullständig adress exklusive port och sökväg. (Exempel: 'https://subdomain.homarr.dev')
[homarr_hostname]: fullständig basadress inklusive dess aktuella underdomän. (Exempel: 'subdomain.homarr.dev')
[homarr_domain]: domän med underdomän bortfiltrerad. (Exempel: `homarr.dev')
[homarr_protocol]: http/https

Dessa variabler är alla beroende av den aktuella webbadressen." } }, "behaviour": { diff --git a/public/locales/sv/manage/users.json b/public/locales/sv/manage/users.json index 16965f8db..18fd3c57e 100644 --- a/public/locales/sv/manage/users.json +++ b/public/locales/sv/manage/users.json @@ -7,15 +7,15 @@ "filter": { "roles": { "all": "Alla", - "normal": "", - "admin": "", - "owner": "" + "normal": "Normal", + "admin": "Admin", + "owner": "Ägare" } }, "table": { "header": { "user": "Användare", - "email": "" + "email": "E-post" } }, "tooltips": { @@ -26,19 +26,19 @@ "modals": { "delete": { "title": "Ta bort användare {{name}}", - "text": "" + "text": "Är du säker att du vill ta bort användaren {{name}}? Detta kommer att radera data som är associerade med detta konto, men inte några skapade instrumentpaneler av den här användaren." }, "change-role": { "promote": { - "title": "", - "text": "" + "title": "Befordra användaren {{name}} till admin", + "text": "Är du säker på att du vill befordra användaren {{name}} till admin? Detta ger användaren tillgång till alla resurser på din Homarr-instans." }, "demote": { - "title": "", - "text": "" + "title": "Degradera användare {{name}} till användare", + "text": "Är du säker på att du vill degradera användaren {{name}} till användare? Detta kommer att ta bort användarens åtkomst till alla resurser på din Homarr-instans." }, "confirm": "Bekräfta" } }, - "searchDoesntMatch": "" + "searchDoesntMatch": "Din sökning matchar inte några poster. Vänligen justera ditt filter." } \ No newline at end of file diff --git a/public/locales/sv/manage/users/create.json b/public/locales/sv/manage/users/create.json index 3fb2a1563..b44e04ad8 100644 --- a/public/locales/sv/manage/users/create.json +++ b/public/locales/sv/manage/users/create.json @@ -1,14 +1,14 @@ { - "metaTitle": "", + "metaTitle": "Skapa användare", "steps": { "account": { - "title": "", + "title": "Första steget", "text": "Skapa konto", "username": { "label": "Användarnamn" }, "email": { - "label": "" + "label": "E-post" } }, "security": { @@ -30,7 +30,7 @@ "property": "Egenskap", "value": "Värde", "username": "Användarnamn", - "email": "", + "email": "E-post", "password": "Lösenord" }, "notSet": "Inte anget", diff --git a/public/locales/sv/manage/users/edit.json b/public/locales/sv/manage/users/edit.json index 1d3e780ab..fc7304946 100644 --- a/public/locales/sv/manage/users/edit.json +++ b/public/locales/sv/manage/users/edit.json @@ -1,6 +1,6 @@ { - "metaTitle": "", - "back": "", + "metaTitle": "Användare {{username}}", + "back": "Tillbaka till användarhantering", "sections": { "general": { "title": "Allmänt", @@ -9,45 +9,45 @@ "label": "Användarnamn" }, "eMail": { - "label": "" + "label": "E-post" } } }, "security": { - "title": "", + "title": "Säkerhet", "inputs": { "password": { - "label": "" + "label": "Nytt lösenord" }, "terminateExistingSessions": { - "label": "", - "description": "" + "label": "Avsluta befintliga sessioner", + "description": "Tvingar användaren att logga in igen på sina enheter" }, "confirm": { "label": "Bekräfta", - "description": "" + "description": "Lösenordet kommer att uppdateras. Åtgärden kan inte återställas." } } }, "roles": { - "title": "", - "currentRole": "", + "title": "Roller", + "currentRole": "Nuvarande roll: ", "badges": { - "owner": "", - "admin": "", - "normal": "" + "owner": "Ägare", + "admin": "Admin", + "normal": "Normal" } }, "deletion": { - "title": "", + "title": "Radering av konto", "inputs": { "confirmUsername": { - "label": "", - "description": "" + "label": "Bekräfta användarnamn", + "description": "Skriv användarnamn för att bekräfta borttagningen" }, "confirm": { "label": "Radera permanent", - "description": "" + "description": "Jag är medveten om att denna åtgärd är permanent och att alla kontouppgifter kommer att gå förlorade." } } } diff --git a/public/locales/sv/manage/users/invites.json b/public/locales/sv/manage/users/invites.json index 68f5440fd..5755a9faf 100644 --- a/public/locales/sv/manage/users/invites.json +++ b/public/locales/sv/manage/users/invites.json @@ -21,28 +21,28 @@ "modals": { "create": { "title": "Skapa inbjudan", - "description": "", + "description": "Efter utgångsdatumet är en inbjudan inte längre giltig och mottagaren av inbjudan kan inte skapa ett konto.", "form": { - "expires": "", + "expires": "Utgångsdatum", "submit": "Skapa" } }, "copy": { - "title": "", - "description": "", - "invitationLink": "", + "title": "Kopiera inbjudan", + "description": "Din inbjudan har genererats. Efter att denna modal stängs kommer du inte att kunna kopiera den här länken längre. Om du inte längre vill bjuda in personen i fråga kan du när som helst ta bort inbjudan.", + "invitationLink": "Inbjudningslänk", "details": { "id": "ID", - "token": "" + "token": "Token" }, "button": { - "close": "" + "close": "Kopiera och avfärda" } }, "delete": { "title": "Ta bort inbjudan", - "description": "" + "description": "Är du säker på att du vill ta bort den här inbjudan? Användare med den här länken kommer inte längre att kunna skapa ett konto med hjälp av den länken." } }, - "noInvites": "" + "noInvites": "Det finns inga inbjudningar ännu." } \ No newline at end of file diff --git a/public/locales/sv/modules/dns-hole-controls.json b/public/locales/sv/modules/dns-hole-controls.json index 58e47db12..cfbcc6602 100644 --- a/public/locales/sv/modules/dns-hole-controls.json +++ b/public/locales/sv/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Det gick inte att ansluta till ditt(dina) DNS-hål. Vänligen verifiera dina konfiguration/integration(er)." } } + }, + "durationModal": { + "title": "Ställ in inaktiveringstid", + "hours": "Timmar", + "minutes": "Minuter", + "unlimited": "lämna tomt för obegränsat", + "set": "Ställ in" } } \ No newline at end of file diff --git a/public/locales/sv/modules/health-monitoring.json b/public/locales/sv/modules/health-monitoring.json index bad4ee1f5..7e766375c 100644 --- a/public/locales/sv/modules/health-monitoring.json +++ b/public/locales/sv/modules/health-monitoring.json @@ -1,72 +1,72 @@ { "descriptor": { "name": "Övervakning av systemhälsan", - "description": "", + "description": "Visar information som visar hälsa och status för ditt/dina system.", "settings": { - "title": "", + "title": "Inställningar för övervakning av systemhälsa", "fahrenheit": { - "label": "" + "label": "CPU-temperatur i Fahrenheit" }, "cpu": { - "label": "", + "label": "Visa CPU-information", "load": "Genomsnittlig belastning", "minute": "{{minute}} minut", - "minutes": "" + "minutes": "{{minutes}} minuter" }, "memory": { - "label": "" + "label": "Visa minnesinformation" }, "fileSystem": { - "label": "" + "label": "Visa information om filsystemet" }, "node": { - "label": "", - "info": "" + "label": "Filtrera efter nodnamn", + "info": "Ange namnet på din Proxmox-nod för att endast visa mätvärden för den noden. Som standard visas hela klustret." }, "defaultViewState": { - "label": "", + "label": "Sektion öppen som standard", "data": { "none": "Ingen", - "node": "", - "vm": "", - "lxc": "", + "node": "Noder", + "vm": "VMs", + "lxc": "LXC:er", "storage": "Lagring" } }, "defaultTabState": { - "label": "", - "info": "", + "label": "Flik öppen som standard", + "info": "Flik öppen som standard. Används endast när flera integrationer är tillgängliga.", "data": { "system": "", "cluster": "" } }, "summary": { - "label": "" + "label": "Visa sammanfattningssektion" }, "showNode": { - "label": "" + "label": "Visa sektion för noder" }, "showVM": { - "label": "" + "label": "Visa sektion för VMs" }, "showLXCs": { - "label": "" + "label": "Visa sektion för LXC" }, "showStorage": { - "label": "" + "label": "Visa lagringssektion" }, "sectionIndicatorColor": { - "label": "", - "info": "", + "label": "Krav på att indikatorn för sektionsstatus ska vara \"OK", + "info": "\"Alla\" kräver att alla objekt är online för att indikatorn ska vara grön. \"Någon\" kräver att minst en artikel är online.", "data": { - "any": "", - "all": "" + "any": "Någon aktiv", + "all": "Alla aktiva" } }, "ignoreCert": { - "label": "", - "info": "" + "label": "Ignorera certifikatfel", + "info": "Om aktiverad, kommer widgeten att ignorera certifikatfel när du öppnar Proxmox API. Detta kan vara till hjälp när du öppnar Proxmox via HTTPS." } } }, @@ -86,14 +86,14 @@ }, "info": { "uptime": "Drifttid", - "uptimeFormat": "", - "updates": "", + "uptimeFormat": "{{days}} dagar, {{hours}} timmar, {{minutes}} minuter", + "updates": "Uppdateringar är tillgängliga", "reboot": "Omstart" }, "errors": { "general": { - "title": "", - "text": "" + "title": "Det går inte att hitta ditt/dina system.", + "text": "Det uppstod ett problem vid anslutningen till ditt system. Vänligen verifiera din konfiguration/integration(er)." } }, "headings": { @@ -107,9 +107,9 @@ }, "accordion": { "title": { - "nodes": "", - "vms": "", - "lxcs": "", + "nodes": "Noder", + "vms": "VMs", + "lxcs": "LXC:er", "storage": "Lagring" } }, @@ -118,24 +118,24 @@ "name": "Namn", "cpu": "CPU", "ram": "RAM", - "node": "" + "node": "Nod" } }, "popover": { - "node": "", - "vmid": "", + "node": "Nod", + "vmid": "VMID", "details": "Detaljer", - "cores": "", - "memSize": "", - "memRatio": "", - "diskSize": "", - "diskRatio": "", - "uptime": "", - "plugin": "", - "ha": "", - "sharedStorage": "", - "localStorage": "", - "na": "" + "cores": "Kärnor - {{maxCpu}}", + "memSize": "Minne - {{maxMem}}", + "memRatio": "Minne - {{usedMem}} / {{maxMem}}", + "diskSize": "Disk - {{maxDisk}}", + "diskRatio": "Disk - {{usedDisk}} / {{maxDisk}}", + "uptime": "Drifttid - {{uptime}}", + "plugin": "Plugin", + "ha": "HA-tillstånd - {{haState}}", + "sharedStorage": "Delad lagring", + "localStorage": "Lokal lagring", + "na": "Ej tillgängligt" } } } \ No newline at end of file diff --git a/public/locales/sv/modules/indexer-manager.json b/public/locales/sv/modules/indexer-manager.json index 9b01e3093..ec002612d 100644 --- a/public/locales/sv/modules/indexer-manager.json +++ b/public/locales/sv/modules/indexer-manager.json @@ -1,19 +1,22 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Status för indexeringshanteraren", + "description": "Status för dina indexerare", "settings": { - "title": "" + "title": "Status för indexeringshanteraren", + "openIndexerSiteInNewTab": { + "label": "Öppna indexeringssidan i ny flik" + } } }, "indexersStatus": { - "title": "", - "testAllButton": "" + "title": "Indexeringshanterare", + "testAllButton": "Testa alla" }, "errors": { "general": { - "title": "", - "text": "" + "title": "Det gick inte att hitta en indexeringshanterare", + "text": "Det gick inte att ansluta till din indexeringshanterare. Vänligen verifiera din konfiguration/integration(er)." } } } \ No newline at end of file diff --git a/public/locales/sv/modules/media-transcoding.json b/public/locales/sv/modules/media-transcoding.json index 0dca284da..9c3a325d4 100644 --- a/public/locales/sv/modules/media-transcoding.json +++ b/public/locales/sv/modules/media-transcoding.json @@ -1,96 +1,96 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Omkodning av media", + "description": "Visar information om omkodning av media", "settings": { - "title": "", + "title": "Inställningar för omkodning av media", "appId": { - "label": "" + "label": "Välj en app" }, "defaultView": { - "label": "", + "label": "Standardvy", "data": { - "workers": "", + "workers": "Arbetare", "queue": "Kö", - "statistics": "" + "statistics": "Statistik" } }, "showHealthCheck": { - "label": "" + "label": "Visa hälsokontrollindikator" }, "showHealthChecksInQueue": { - "label": "" + "label": "Visa hälsokontroller i kö" }, "queuePageSize": { - "label": "" + "label": "Kö: Objekt per sida" }, "showAppIcon": { - "label": "" + "label": "Visa appikonen i det nedre högra hörnet" } } }, - "noAppSelected": "", + "noAppSelected": "Välj en app i widgetinställningarna", "views": { "workers": { "table": { "header": { - "name": "", + "name": "Fil", "eta": "Beräknad sluttid", "progress": "Förlopp" }, "empty": "Tom", "tooltip": { - "transcode": "", - "healthCheck": "" + "transcode": "Omkoda", + "healthCheck": "Hälsokontroll" } } }, "queue": { "table": { "header": { - "name": "", + "name": "Fil", "size": "Storlek" }, "footer": { - "currentIndex": "" + "currentIndex": "{{start}}-{{end}} av {{total}}" }, "empty": "Tom", "tooltip": { - "transcode": "", - "healthCheck": "" + "transcode": "Omkoda", + "healthCheck": "Hälsokontroll" } } }, "statistics": { "empty": "Tom", "box": { - "transcodes": "", - "healthChecks": "", - "files": "", - "spaceSaved": "" + "transcodes": "Omkodar: {{value}}", + "healthChecks": "Hälsokontroller: {{value}}", + "files": "Filer: {{value}}", + "spaceSaved": "Sparat: {{value}}" }, "pies": { - "transcodes": "", - "healthChecks": "", - "videoCodecs": "", - "videoContainers": "", - "videoResolutions": "" + "transcodes": "Omkodning", + "healthChecks": "Hälsokontroller", + "videoCodecs": "Codecs", + "videoContainers": "Containers", + "videoResolutions": "Upplösningar" } } }, "error": { "title": "Fel", - "message": "" + "message": "Ett fel uppstod när data hämtades från Tdarr." }, "tabs": { - "workers": "", + "workers": "Arbetare", "queue": "Kö", - "statistics": "" + "statistics": "Statistik" }, "healthCheckStatus": { - "title": "", - "queued": "", - "healthy": "", - "unhealthy": "" + "title": "Hälsokontroll", + "queued": "Köad", + "healthy": "Hälsosam", + "unhealthy": "Ohälsosam" } } diff --git a/public/locales/sv/modules/smart-home/entity-state.json b/public/locales/sv/modules/smart-home/entity-state.json index 45587f0a5..be910b31c 100644 --- a/public/locales/sv/modules/smart-home/entity-state.json +++ b/public/locales/sv/modules/smart-home/entity-state.json @@ -1,32 +1,32 @@ { - "entityNotFound": "", + "entityNotFound": "Entitet hittades inte", "descriptor": { - "name": "", - "description": "", + "name": "Home Assistant-enhet", + "description": "Aktuellt tillstånd för en entitet i Home Assistant", "settings": { - "title": "", + "title": "Entitetens tillstånd", "entityId": { - "label": "", - "info": "" + "label": "Enhets-ID", + "info": "Unik entitets-ID i Home Assistant. Kopiera genom att klicka på entitet > Klicka på kugghjulsikonen > Klicka på kopieringsknappen vid \"Entitet-ID\". Vissa anpassade entiteter kanske inte stöds." }, "appendUnit": { - "label": "", - "info": "" + "label": "Lägg till måttenhet", + "info": "Lägg till attributet för måttenhet till entitetens tillstånd." }, "automationId": { - "label": "", - "info": "" + "label": "Valfritt automations-ID", + "info": "Ditt unika automations-ID. Börjar alltid med automation.XXXXX. Om den inte är inställd är widgeten inte klickbar och visar bara status. Efter klick uppdateras entitetens tillstånd." }, "displayName": { - "label": "" + "label": "Visningsnamn" }, "displayFriendlyName": { "label": "", "info": "" }, "genericToggle": { - "label": "", - "info": "" + "label": "Växla entitet", + "info": "Utför en generisk Home Assistant-växlingsåtgärd på entitet när du klickar på den." } } } diff --git a/public/locales/sv/modules/smart-home/trigger-automation.json b/public/locales/sv/modules/smart-home/trigger-automation.json index 37046b5cf..87ea624f5 100644 --- a/public/locales/sv/modules/smart-home/trigger-automation.json +++ b/public/locales/sv/modules/smart-home/trigger-automation.json @@ -1,15 +1,15 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Home Assistant automation", + "description": "Utför en automatisering", "settings": { - "title": "", + "title": "Utför en automatisering", "automationId": { - "label": "", - "info": "" + "label": "Automations-ID", + "info": "Ditt unika automations-ID. Börjar alltid med automation.XXXXX." }, "displayName": { - "label": "" + "label": "Visningsnamn" } } } diff --git a/public/locales/sv/modules/torrents-status.json b/public/locales/sv/modules/torrents-status.json index f27db998b..b0fce89ea 100644 --- a/public/locales/sv/modules/torrents-status.json +++ b/public/locales/sv/modules/torrents-status.json @@ -31,15 +31,15 @@ "info": "Om inaktiverat visas endast det globala förhållandet. Det globala förhållandet kommer fortfarande att använda etiketterna om det är inställt" }, "columnOrdering": { - "label": "" + "label": "Aktivera omsortering av kolumner" }, "rowSorting": { - "label": "" + "label": "Aktivera sortering av rader" }, "columns": { - "label": "", + "label": "Välj kolumner som ska visas", "data": { - "date": "", + "date": "Datum tillagt", "down": "Ned", "up": "Upp", "eta": "Beräknad sluttid", @@ -47,7 +47,7 @@ } }, "nameColumnSize": { - "label": "" + "label": "Ändra storlek på namnkolumnen" } } }, diff --git a/public/locales/sv/password-requirements.json b/public/locales/sv/password-requirements.json index 9e26dfeeb..d36597c49 100644 --- a/public/locales/sv/password-requirements.json +++ b/public/locales/sv/password-requirements.json @@ -1 +1,7 @@ -{} \ No newline at end of file +{ + "number": "Inkluderar nummer", + "lowercase": "Inkluderar liten bokstav", + "uppercase": "Inkluderar stor bokstav", + "special": "Inkluderar specialtecken", + "length": "Inkluderar minst {{count}} tecken" +} \ No newline at end of file diff --git a/public/locales/sv/settings/customization/access.json b/public/locales/sv/settings/customization/access.json index cc4d17f61..27f6e2859 100644 --- a/public/locales/sv/settings/customization/access.json +++ b/public/locales/sv/settings/customization/access.json @@ -1,6 +1,6 @@ { "allowGuests": { - "label": "", - "description": "" + "label": "Tillåt anonyma", + "description": "Tillåt användare som inte är inloggade att se din tavla" } } \ No newline at end of file diff --git a/public/locales/sv/tools/docker.json b/public/locales/sv/tools/docker.json index c224c68ec..06a0e0995 100644 --- a/public/locales/sv/tools/docker.json +++ b/public/locales/sv/tools/docker.json @@ -2,30 +2,30 @@ "title": "Docker", "alerts": { "notConfigured": { - "text": "" + "text": "Din Homarr-instans har inte Docker konfigurerad eller så har den misslyckats med att hämta containers. Kontrollera dokumentationen om hur du ställer in integrationen." } }, "modals": { "selectBoard": { - "title": "", - "text": "", + "title": "Välj en tavla", + "text": "Välj den tavla där du vill lägga till appar för de valda Docker-containrarna.", "form": { "board": { - "label": "" + "label": "Tavla" }, - "submit": "" + "submit": "Lägg till appar" } } }, "notifications": { "selectBoard": { "success": { - "title": "", - "message": "" + "title": "Lade till appar på tavlan", + "message": "Apparna för de valda Docker-containrarna har lagts till på tavlan." }, "error": { - "title": "", - "message": "" + "title": "Misslyckades med att lägga till appar på tavlan", + "message": "Apparna för de valda Docker-containrarna kunde inte läggas till på tavlan." } } } diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index 4ed9134f6..1b9af71eb 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -17,6 +17,7 @@ "disabled": "Pasif", "enableAll": "Tümünü etkinleştir", "disableAll": "Tümünü pasifleştir", + "setTimer": "Zamanlayıcıyı ayarla", "version": "Sürüm", "changePosition": "Pozisyonu değiştir", "remove": "Kaldır", diff --git a/public/locales/tr/layout/modals/add-app.json b/public/locales/tr/layout/modals/add-app.json index 4350caf82..5dd2145a5 100644 --- a/public/locales/tr/layout/modals/add-app.json +++ b/public/locales/tr/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Harici adres", - "description": "Uygulamaya tıklandığında açılacak URL." + "description": "Uygulamaya tıklandığında açılacak URL.", + "tooltip": "Dinamik adresler oluşturmak için birkaç değişken kullanabilirsiniz:

[homarr_base] : port ve yol hariç tam adres. (Örnek: 'https://subdomain.homarr.dev')
[homarr_hostname] : geçerli alt alan adını da içeren tam temel URL. (Örnek: 'subdomain.homarr.dev')
[homarr_domain] : alt alan adının filtrelendiği alan adı. (Örnek: `homarr.dev')
[homarr_protocol] : http/https

Bu değişkenlerin tümü geçerli URL'ye bağlıdır." } }, "behaviour": { diff --git a/public/locales/tr/modules/dns-hole-controls.json b/public/locales/tr/modules/dns-hole-controls.json index b64a6d161..6cd5cfbda 100644 --- a/public/locales/tr/modules/dns-hole-controls.json +++ b/public/locales/tr/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "DNS Çözümleyici(leri)nize bağlanırken bir sorun oluştu. Lütfen yapılandırmanızı/entegrasyon(ları)nızı kontrol edin." } } + }, + "durationModal": { + "title": "Devre dışı bırakma süresini ayarla", + "hours": "Saat", + "minutes": "Dakika", + "unlimited": "sınırsız için boş bırakın", + "set": "Ayarla" } } \ No newline at end of file diff --git a/public/locales/tr/modules/health-monitoring.json b/public/locales/tr/modules/health-monitoring.json index a9fec5688..d8b3c8a9c 100644 --- a/public/locales/tr/modules/health-monitoring.json +++ b/public/locales/tr/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "Çalışma süresi", - "uptimeFormat": "{{days}} gün, {{hours}} saat", + "uptimeFormat": "{{days}} gün, {{hours}} saat, {{minutes}} dakika", "updates": "Güncellemeler mevcut", "reboot": "Yeniden başlat" }, diff --git a/public/locales/tr/modules/indexer-manager.json b/public/locales/tr/modules/indexer-manager.json index 7fa9f83d5..af6c846fb 100644 --- a/public/locales/tr/modules/indexer-manager.json +++ b/public/locales/tr/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "Dizin oluşturucu yöneticisi statüsü", "description": "Dizin oluşturucularınızın statüsü", "settings": { - "title": "Dizin oluşturucu yöneticisi statüsü" + "title": "Dizin oluşturucu yöneticisi statüsü", + "openIndexerSiteInNewTab": { + "label": "Dizin Oluşturucu Sitesini Yeni Sekmede Aç" + } } }, "indexersStatus": { diff --git a/public/locales/tr/settings/common.json b/public/locales/tr/settings/common.json index 2c3099114..5ec051b54 100644 --- a/public/locales/tr/settings/common.json +++ b/public/locales/tr/settings/common.json @@ -9,11 +9,11 @@ "configTip": "Yapılandırma dosyanı sayfaya sürükleyip bırakarak yükleyebilirsin!" }, "credits": { - "madeWithLove": " @ tarafından ❤️ ile yapılmıştır", + "madeWithLove": "Şu kişilerce ❤️ ile yapılmıştır: ", "thirdPartyContent": "Üçüncü şahıs içeriğine bakın", "thirdPartyContentTable": { "dependencyName": "Bağımlılık", - "dependencyVersion": "Versiyon" + "dependencyVersion": "Sürüm" } }, "grow": "Izgarayı büyütün (tüm alanı kapla)", diff --git a/public/locales/tw/common.json b/public/locales/tw/common.json index 877d5b492..652685e79 100644 --- a/public/locales/tw/common.json +++ b/public/locales/tw/common.json @@ -17,6 +17,7 @@ "disabled": "已禁用", "enableAll": "全部啟用", "disableAll": "全部禁用", + "setTimer": "設定計時器", "version": "版本", "changePosition": "換位", "remove": "刪除", diff --git a/public/locales/tw/layout/modals/add-app.json b/public/locales/tw/layout/modals/add-app.json index 9fd81b80c..2bdc74308 100644 --- a/public/locales/tw/layout/modals/add-app.json +++ b/public/locales/tw/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "外部網址", - "description": "點擊應用時開啟的網址" + "description": "點擊應用時開啟的網址", + "tooltip": "你可以使用變量來創建動態網址:

[homarr_base]:不包括端口和路徑的完整網址。(例如:'https://subdomain.homarr.dve')
[homarr_hostname]:完整的基本網址,包括當前的子網域。(例如:'subdomain.homarr.dev')
[homarr_domain]:已過濾之網域。(例如:'homarr.dev')
[homarr_protocol]:http/https

這些變量絕於當前網址" } }, "behaviour": { diff --git a/public/locales/tw/modules/dns-hole-controls.json b/public/locales/tw/modules/dns-hole-controls.json index a20f3e058..c703cef7e 100644 --- a/public/locales/tw/modules/dns-hole-controls.json +++ b/public/locales/tw/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "到 DNS 漏洞的聯結有問題,請驗證您的設定/集成配置" } } + }, + "durationModal": { + "title": "設定禁用時長", + "hours": "時", + "minutes": "分", + "unlimited": "留空表示無限制", + "set": "設定" } } \ No newline at end of file diff --git a/public/locales/tw/modules/health-monitoring.json b/public/locales/tw/modules/health-monitoring.json index baa53ad9b..76a60b772 100644 --- a/public/locales/tw/modules/health-monitoring.json +++ b/public/locales/tw/modules/health-monitoring.json @@ -86,7 +86,7 @@ }, "info": { "uptime": "運行時間", - "uptimeFormat": "{{days}} 天,{{hours}} 小時", + "uptimeFormat": "{{days}} 天,{{hours}} 小時,{{minutes}} 分鐘", "updates": "可用更新", "reboot": "重新啟動" }, diff --git a/public/locales/tw/modules/indexer-manager.json b/public/locales/tw/modules/indexer-manager.json index a9b41c16e..db83eda05 100644 --- a/public/locales/tw/modules/indexer-manager.json +++ b/public/locales/tw/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "索引管理器狀態", "description": "有關索引器的狀態", "settings": { - "title": "索引管理器狀態" + "title": "索引管理器狀態", + "openIndexerSiteInNewTab": { + "label": "在新頁面中打開索引器站點" + } } }, "indexersStatus": { diff --git a/public/locales/tw/modules/smart-home/entity-state.json b/public/locales/tw/modules/smart-home/entity-state.json index c62e72bd9..16c079f40 100644 --- a/public/locales/tw/modules/smart-home/entity-state.json +++ b/public/locales/tw/modules/smart-home/entity-state.json @@ -22,11 +22,11 @@ }, "displayFriendlyName": { "label": "顯示友好名稱", - "info": "" + "info": "顯示來自家庭助理的友好名稱,而不是顯示名稱" }, "genericToggle": { - "label": "", - "info": "" + "label": "實體切換", + "info": "點擊時對實體執行通用的家提助理切換操作" } } } diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index e8269b2ec..0586a2323 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -17,6 +17,7 @@ "disabled": "Вимкнено", "enableAll": "Увімкнути все", "disableAll": "Вимкнути усе", + "setTimer": "", "version": "Версія", "changePosition": "Змінити положення", "remove": "Видалити", diff --git a/public/locales/uk/layout/modals/add-app.json b/public/locales/uk/layout/modals/add-app.json index 681f2c7ee..811751f2d 100644 --- a/public/locales/uk/layout/modals/add-app.json +++ b/public/locales/uk/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Зовнішня адреса", - "description": "URL-адреса відкриється в браузері при натисканні на додаток." + "description": "URL-адреса відкриється в браузері при натисканні на додаток.", + "tooltip": "" } }, "behaviour": { diff --git a/public/locales/uk/modules/dns-hole-controls.json b/public/locales/uk/modules/dns-hole-controls.json index 0e2f1d433..f1e556025 100644 --- a/public/locales/uk/modules/dns-hole-controls.json +++ b/public/locales/uk/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Виникла проблема з підключенням до ваших DNS-дірок. Будь ласка, перевірте вашу конфігурацію/інтеграцію." } } + }, + "durationModal": { + "title": "", + "hours": "", + "minutes": "", + "unlimited": "", + "set": "" } } \ No newline at end of file diff --git a/public/locales/uk/modules/indexer-manager.json b/public/locales/uk/modules/indexer-manager.json index 9b01e3093..931454027 100644 --- a/public/locales/uk/modules/indexer-manager.json +++ b/public/locales/uk/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "", "description": "", "settings": { - "title": "" + "title": "", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/vi/authentication/login.json b/public/locales/vi/authentication/login.json index a0eec5d8f..b11da6e38 100644 --- a/public/locales/vi/authentication/login.json +++ b/public/locales/vi/authentication/login.json @@ -16,8 +16,8 @@ }, "afterLoginRedirection": "Sau khi đăng nhập, bạn sẽ được chuyển hướng đến {{url}}", "providersEmpty": { - "title": "", - "message": "" + "title": "Lỗi nhà cung cấp xác thực", + "message": "(Các) nhà cung cấp chưa được đặt, vui lòng kiểm tra nhật ký để biết thêm thông tin." } }, "alert": "Thông tin xác thực của bạn không chính xác hoặc tài khoản này không tồn tại. Vui lòng thử lại." diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 2371d6d0d..1e64498ed 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -17,6 +17,7 @@ "disabled": "Tắt", "enableAll": "Bật toàn bộ", "disableAll": "Tắt toàn bộ", + "setTimer": "Đặt hẹn giờ", "version": "Phiên bản", "changePosition": "Đổi vị trí", "remove": "Xóa", diff --git a/public/locales/vi/layout/modals/add-app.json b/public/locales/vi/layout/modals/add-app.json index 45217e905..e7d7d0d0a 100644 --- a/public/locales/vi/layout/modals/add-app.json +++ b/public/locales/vi/layout/modals/add-app.json @@ -31,7 +31,8 @@ }, "externalAddress": { "label": "Địa chỉ bên ngoài", - "description": "Đường dẫn được mở khi nhấp vào ứng dụng." + "description": "Đường dẫn được mở khi nhấp vào ứng dụng.", + "tooltip": "Bạn có thể sử dụng một số biến để tạo địa chỉ động:

[homarr_base]: địa chỉ đầy đủ không bao gồm cổng và đường dẫn. (Ví dụ: 'https://tênmiềnphụ.homarr.dev')
[homarr_hostname]: URL cơ sở hoàn chỉnh, bao gồm cả tên miền phụ hiện tại. (Ví dụ: 'tênmiềnphụ.homarr.dev')
[homarr_domain]: tên miền với tên miền phụ được lọc ra. (Ví dụ: \"homarr.dev\")
[homarr_protocol]:http/https

Các biến này phụ thuộc vào URL hiện tại." } }, "behaviour": { diff --git a/public/locales/vi/modules/dns-hole-controls.json b/public/locales/vi/modules/dns-hole-controls.json index dcbc1a7e9..5ae8136b9 100644 --- a/public/locales/vi/modules/dns-hole-controls.json +++ b/public/locales/vi/modules/dns-hole-controls.json @@ -14,5 +14,12 @@ "text": "Đã xảy ra sự cố khi kết nối với (các) Lỗ DNS của bạn. Vui lòng xác minh (các) cấu hình/tích hợp của bạn." } } + }, + "durationModal": { + "title": "Đặt thời gian vô hiệu hóa", + "hours": "Giờ", + "minutes": "Phút", + "unlimited": "để trống cho không giới hạn", + "set": "Đặt" } } \ No newline at end of file diff --git a/public/locales/vi/modules/indexer-manager.json b/public/locales/vi/modules/indexer-manager.json index 9b01e3093..931454027 100644 --- a/public/locales/vi/modules/indexer-manager.json +++ b/public/locales/vi/modules/indexer-manager.json @@ -3,7 +3,10 @@ "name": "", "description": "", "settings": { - "title": "" + "title": "", + "openIndexerSiteInNewTab": { + "label": "" + } } }, "indexersStatus": { diff --git a/public/locales/vi/modules/smart-home/entity-state.json b/public/locales/vi/modules/smart-home/entity-state.json index dbe4a23ea..287f34ba2 100644 --- a/public/locales/vi/modules/smart-home/entity-state.json +++ b/public/locales/vi/modules/smart-home/entity-state.json @@ -22,11 +22,11 @@ }, "displayFriendlyName": { "label": "Hiển thị tên thân thiện", - "info": "" + "info": "Hiển thị tên thân thiện từ Home Assistant thay vì tên hiển thị." }, "genericToggle": { - "label": "", - "info": "" + "label": "Chuyển đổi thực thể", + "info": "Thực hiện hành động chuyển đổi Home Assistant thông thường trên một thực thể khi được nhấp vào." } } } diff --git a/public/locales/vi/modules/torrents-status.json b/public/locales/vi/modules/torrents-status.json index bca83f78c..276d207b4 100644 --- a/public/locales/vi/modules/torrents-status.json +++ b/public/locales/vi/modules/torrents-status.json @@ -31,15 +31,15 @@ "info": "Nếu tắt, chỉ tỉ lệ chung sẽ được hiển thị. Tỉ lệ chung sẽ vẫn sử dụng nhãn nếu được đặt" }, "columnOrdering": { - "label": "" + "label": "Bật sắp xếp lại các cột" }, "rowSorting": { - "label": "" + "label": "Bật sắp xếp các hàng" }, "columns": { - "label": "", + "label": "Chọn cột để hiển thị", "data": { - "date": "", + "date": "Ngày thêm", "down": "Tải xuống", "up": "Tải lên", "eta": "Thời gian dự kiến", @@ -47,7 +47,7 @@ } }, "nameColumnSize": { - "label": "" + "label": "Thay đổi kích thước cột tên" } } }, diff --git a/public/locales/vi/modules/weather.json b/public/locales/vi/modules/weather.json index 25f79146c..45c290eb0 100644 --- a/public/locales/vi/modules/weather.json +++ b/public/locales/vi/modules/weather.json @@ -11,10 +11,10 @@ "label": "Hiển thị tên thành phố" }, "displayWeekly": { - "label": "" + "label": "Hiển thị dự báo hàng tuần" }, "forecastDays": { - "label": "" + "label": "Số ngày hiển thị" }, "location": { "label": "Vị trí thời tiết" diff --git a/src/components/Dashboard/Tiles/Apps/AppPing.tsx b/src/components/Dashboard/Tiles/Apps/AppPing.tsx index be58ec2ea..4b3e4a4b8 100644 --- a/src/components/Dashboard/Tiles/Apps/AppPing.tsx +++ b/src/components/Dashboard/Tiles/Apps/AppPing.tsx @@ -108,18 +108,19 @@ const usePing = (app: AppType) => { configName: name ?? '', }, { - retry: false, + retry: true, enabled: isActive, refetchOnWindowFocus: false, + refetchInterval: 1000 * 60, retryDelay(failureCount, error) { - // TODO: Add logic to retry on timeout - return 3000; + console.error(`Unable to retry app ping for app '${app.name}' (${app.id})`, error); + if (failureCount > 3) { + return 60 * 1000; + } + return 3 * 1000; }, - // 5 minutes of cache - cacheTime: 1000 * 60 * 5, - staleTime: 1000 * 60 * 5, + cacheTime: 1000 * 60, retryOnMount: true, - select: (data) => { const isOk = isStatusOk(app, data.status); if (isOk) diff --git a/src/components/Dashboard/Wrappers/Category/useCategoryActions.tsx b/src/components/Dashboard/Wrappers/Category/useCategoryActions.tsx index e2362eb38..83f6ecf12 100644 --- a/src/components/Dashboard/Wrappers/Category/useCategoryActions.tsx +++ b/src/components/Dashboard/Wrappers/Category/useCategoryActions.tsx @@ -185,10 +185,20 @@ export const useCategoryActions = (configName: string | undefined, category: Cat updateConfig( configName, (previous) => { - const currentItem = previous.categories.find((x) => x.id === category.id); + const currentItem = previous.categories.find( + (previousCategory) => previousCategory.id === category.id + ); if (!currentItem) return previous; + + const currentWrapper = previous.wrappers.find( + (previousWrapper) => previousWrapper.position === currentItem?.position + ); + if (!currentWrapper) return previous; + // Find the main wrapper - const mainWrapper = previous.wrappers.find((x) => x.position === 0); + const mainWrapper = previous.wrappers.find( + (previousWrapper) => previousWrapper.position === 0 + ); const mainWrapperId = mainWrapper?.id ?? 'default'; const isAppAffectedFilter = (app: AppType): boolean => { @@ -196,7 +206,7 @@ export const useCategoryActions = (configName: string | undefined, category: Cat return false; } - if (app.area.type !== 'category') { + if (app.area.type === 'sidebar') { return false; } @@ -204,7 +214,10 @@ export const useCategoryActions = (configName: string | undefined, category: Cat return false; } - return app.area.properties.id === currentItem.id; + return ( + app.area.properties.id === currentItem.id || + app.area.properties.id === currentWrapper.id + ); }; const isWidgetAffectedFilter = (widget: IWidget): boolean => { @@ -212,7 +225,7 @@ export const useCategoryActions = (configName: string | undefined, category: Cat return false; } - if (widget.area.type !== 'category') { + if (widget.area.type === 'sidebar') { return false; } @@ -220,7 +233,10 @@ export const useCategoryActions = (configName: string | undefined, category: Cat return false; } - return widget.area.properties.id === currentItem.id; + return ( + widget.area.properties.id === currentItem.id || + widget.area.properties.id === currentWrapper.id + ); }; return { @@ -261,8 +277,12 @@ export const useCategoryActions = (configName: string | undefined, category: Cat }) ), ], - categories: previous.categories.filter((x) => x.id !== category.id), - wrappers: previous.wrappers.filter((x) => x.position !== currentItem.position), + categories: previous.categories.filter( + (previousCategory) => previousCategory.id !== category.id + ), + wrappers: previous.wrappers.filter( + (previousWrapper) => previousWrapper.position !== currentItem.position + ), }; }, true diff --git a/src/components/layout/Meta/BoardHeadOverride.tsx b/src/components/layout/Meta/BoardHeadOverride.tsx index cc9728360..f62c15405 100644 --- a/src/components/layout/Meta/BoardHeadOverride.tsx +++ b/src/components/layout/Meta/BoardHeadOverride.tsx @@ -1,5 +1,4 @@ import Head from 'next/head'; -import React from 'react'; import { useConfigContext } from '~/config/provider'; import { firstUpperCase } from '~/tools/shared/strings'; @@ -19,9 +18,9 @@ export const BoardHeadOverride = () => { {faviconUrl && faviconUrl.length > 0 && ( <> - + - + )} diff --git a/src/components/layout/Meta/CommonHead.tsx b/src/components/layout/Meta/CommonHead.tsx index 30341c6f3..55df63e83 100644 --- a/src/components/layout/Meta/CommonHead.tsx +++ b/src/components/layout/Meta/CommonHead.tsx @@ -7,12 +7,12 @@ export const CommonHead = () => { return ( - + {/* configure apple splash screen & touch icon */} - + diff --git a/src/pages/api/download.ts b/src/pages/api/download.ts new file mode 100644 index 000000000..915d35626 --- /dev/null +++ b/src/pages/api/download.ts @@ -0,0 +1,34 @@ +import AdmZip from 'adm-zip'; +import fs from 'fs'; +import { NextApiRequest, NextApiResponse } from 'next'; +import { getServerAuthSession } from '~/server/auth'; +import { getFrontendConfig } from '~/tools/config/getFrontendConfig'; + +const handler = async (req: NextApiRequest, res: NextApiResponse) => { + const session = await getServerAuthSession({ req, res }); + if (!session) { + return res.status(401).end(); + } + + if (!session.user.isAdmin) { + return res.status(403).end(); + } + + const files = fs.readdirSync('./data/configs').filter((file) => file.endsWith('.json')); + + const zip = new AdmZip(); + + for (const file of files) { + const data = await getFrontendConfig(file.replace('.json', '')); + const content = JSON.stringify(data, null, 2); + zip.addFile(file, Buffer.from(content, 'utf-8')); + } + + const zipBuffer = zip.toBuffer(); + res.setHeader('Content-Type', 'application/zip'); + res.setHeader('Content-Disposition', 'attachment; filename=board-configs.zip'); + res.setHeader('Content-Length', zipBuffer.length.toString()); + res.status(200).end(zipBuffer); +}; + +export default handler; diff --git a/src/pages/manage/boards/index.tsx b/src/pages/manage/boards/index.tsx index 52e068dcd..212c2ce3b 100644 --- a/src/pages/manage/boards/index.tsx +++ b/src/pages/manage/boards/index.tsx @@ -13,6 +13,7 @@ import { Title, } from '@mantine/core'; import { useDisclosure, useListState } from '@mantine/hooks'; +import { notifications } from '@mantine/notifications'; import { IconBox, IconCategory, @@ -20,6 +21,7 @@ import { IconCursorText, IconDeviceFloppy, IconDotsVertical, + IconDownload, IconFolderFilled, IconLock, IconLockOff, @@ -32,6 +34,8 @@ import { GetServerSidePropsContext, InferGetServerSidePropsType } from 'next'; import { useTranslation } from 'next-i18next'; import Head from 'next/head'; import Link from 'next/link'; +import { useState } from 'react'; +import { RenameBoardModal } from '~/components/Dashboard/Modals/RenameBoard/RenameBoardModal'; import { openCreateBoardModal } from '~/components/Manage/Board/create-board.modal'; import { openDeleteBoardModal } from '~/components/Manage/Board/delete-board.modal'; import { ManageLayout } from '~/components/layout/Templates/ManageLayout'; @@ -42,16 +46,14 @@ import { getServerSideTranslations } from '~/tools/server/getServerSideTranslati import { checkForSessionOrAskForLogin } from '~/tools/server/loginBuilder'; import { manageNamespaces } from '~/tools/server/translation-namespaces'; import { api } from '~/utils/api'; -import { notifications } from '@mantine/notifications'; -import { RenameBoardModal } from '~/components/Dashboard/Modals/RenameBoard/RenameBoardModal'; -import { useState } from 'react'; // Infer return type from the `getServerSideProps` function export default function BoardsPage({ - boards, - session, + boards, + session, }: InferGetServerSidePropsType) { - const [openedRenameBoardModal, { open: openRenameBoardModal, close: closeRenameBoardModal }] = useDisclosure(false); + const [openedRenameBoardModal, { open: openRenameBoardModal, close: closeRenameBoardModal }] = + useDisclosure(false); const [renameBoardName, setRenameBoardName] = useState<{ boardName: string }>(); const { data, refetch } = api.boards.all.useQuery(undefined, { @@ -79,6 +81,11 @@ export default function BoardsPage({ }); const [deletingDashboards, { append, filter }] = useListState([]); + const downloadAllBoards = async () => { + const a = document.createElement('a'); + a.href = `/api/download`; + a.click(); + }; const { t } = useTranslation('manage/boards'); @@ -90,22 +97,37 @@ export default function BoardsPage({ {metaTitle} - - board.name)} - onClose={closeRenameBoardModal} /> + + board.name)} + onClose={closeRenameBoardModal} + /> {t('pageTitle')} {session?.user.isAdmin && ( - + + + + )} @@ -200,18 +222,20 @@ export default function BoardsPage({ boardName: board.name, }); }} - icon={}> + icon={} + > {t('cards.menu.duplicate')} { setRenameBoardName({ - boardName: board.name as string + boardName: board.name as string, }); openRenameBoardModal(); }} icon={} - disabled={board.name === 'default'}> + disabled={board.name === 'default'} + > {t('cards.menu.rename.label')} const result = checkForSessionOrAskForLogin( context, session, - () => session?.user.isAdmin == true, + () => session?.user.isAdmin == true ); if (result !== undefined) { return result; @@ -281,7 +305,7 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) => manageNamespaces, context.locale, context.req, - context.res, + context.res ); return { diff --git a/src/server/api/routers/dns-hole/router.ts b/src/server/api/routers/dns-hole/router.ts index 8f02ea981..d58039a53 100644 --- a/src/server/api/routers/dns-hole/router.ts +++ b/src/server/api/routers/dns-hole/router.ts @@ -14,6 +14,7 @@ export const dnsHoleRouter = createTRPCRouter({ .input( z.object({ action: z.enum(['enable', 'disable']), + duration: z.number(), configName: z.string(), appsToChange: z.optional(z.array(z.string())), }) @@ -32,12 +33,12 @@ export const dnsHoleRouter = createTRPCRouter({ await Promise.all( applicableApps.map(async (app) => { if (app.integration?.type === 'pihole') { - await processPiHole(app, input.action === 'enable'); + await processPiHole(app, input.action === 'enable', input.duration); return; } - await processAdGuard(app, input.action === 'enable'); + await processAdGuard(app, input.action === 'enable', input.duration); }) ); }), @@ -89,7 +90,7 @@ export const dnsHoleRouter = createTRPCRouter({ }), }); -const processAdGuard = async (app: ConfigAppType, enable: boolean) => { +const processAdGuard = async (app: ConfigAppType, enable: boolean, duration: number = 0) => { const adGuard = new AdGuard( app.url, findAppProperty(app, 'username'), @@ -106,13 +107,13 @@ const processAdGuard = async (app: ConfigAppType, enable: boolean) => { } try { - await adGuard.disable(); + await adGuard.disable(duration); } catch (error) { Consola.error((error as Error).message); } }; -const processPiHole = async (app: ConfigAppType, enable: boolean) => { +const processPiHole = async (app: ConfigAppType, enable: boolean, duration: number = 0) => { const pihole = new PiHoleClient(app.url, findAppProperty(app, 'apiKey')); if (enable) { @@ -125,7 +126,7 @@ const processPiHole = async (app: ConfigAppType, enable: boolean) => { } try { - await pihole.disable(); + await pihole.disable(duration); } catch (error) { Consola.error((error as Error).message); } diff --git a/src/tools/language.ts b/src/tools/language.ts index 0b4b4c626..476eccefd 100644 --- a/src/tools/language.ts +++ b/src/tools/language.ts @@ -16,6 +16,14 @@ export type Language = { }; export const languages = [ + { + shortName: 'ar', + originalName: 'العربية', + translatedName: 'Arabic', + country: 'BH', + locale: 'ar-bh', + dayJsLocale: 'ar' + }, { shortName: 'en', originalName: 'English', diff --git a/src/tools/server/sdk/adGuard/adGuard.ts b/src/tools/server/sdk/adGuard/adGuard.ts index 461b06f64..f1c631c29 100644 --- a/src/tools/server/sdk/adGuard/adGuard.ts +++ b/src/tools/server/sdk/adGuard/adGuard.ts @@ -59,8 +59,8 @@ export class AdGuard { .reduce((sum, filter) => filter.rules_count + sum, 0); } - async disable() { - await this.changeProtectionStatus(false); + async disable(duration: number) { + await this.changeProtectionStatus(false, duration); } async enable() { await this.changeProtectionStatus(true); @@ -69,7 +69,7 @@ export class AdGuard { /** * Make a post request to the AdGuard API to change the protection status based on the value of newStatus * @param {boolean} newStatus - The new status of the protection - * @param {number} duration - Duration of a pause, in milliseconds. Enabled should be false. + * @param {number} duration - Duration of a pause, in seconds. Enabled should be false. * @returns {string} - The response from the AdGuard API */ private async changeProtectionStatus(newStatus: boolean, duration = 0) { @@ -78,7 +78,7 @@ export class AdGuard { `${this.baseHostName}/control/protection`, { enabled: newStatus, - duration, + duration: duration * 1000, }, { headers: { diff --git a/src/tools/server/sdk/pihole/piHole.ts b/src/tools/server/sdk/pihole/piHole.ts index 76ed4517c..52c55867f 100644 --- a/src/tools/server/sdk/pihole/piHole.ts +++ b/src/tools/server/sdk/pihole/piHole.ts @@ -37,16 +37,19 @@ export class PiHoleClient { return response.status === 'enabled'; } - async disable() { - const response = await this.sendStatusChangeRequest('disable'); + async disable(duration: number) { + const response = await this.sendStatusChangeRequest('disable', duration); return response.status === 'disabled'; } private async sendStatusChangeRequest( - action: 'enable' | 'disable' + action: 'enable' | 'disable', + duration = 0 ): Promise { const response = await fetch( - `${this.baseHostName}/admin/api.php?${action}&auth=${this.apiToken}` + duration !== 0 + ? `${this.baseHostName}/admin/api.php?${action}=${duration}&auth=${this.apiToken}` + : `${this.baseHostName}/admin/api.php?${action}&auth=${this.apiToken}` ); if (response.status !== 200) { diff --git a/src/validations/user.ts b/src/validations/user.ts index c88bcc99a..1ef35c025 100644 --- a/src/validations/user.ts +++ b/src/validations/user.ts @@ -20,7 +20,7 @@ export const signInSchema = z.object({ export const signUpFormSchema = z .object({ username: z.string().min(3), - password: z.string().min(minPasswordLength), + password: passwordSchema, passwordConfirmation: z.string().min(minPasswordLength), }) .refine((data) => data.password === data.passwordConfirmation, { diff --git a/src/widgets/dnshole/DnsHoleControls.tsx b/src/widgets/dnshole/DnsHoleControls.tsx index 872f891c3..8a543e610 100644 --- a/src/widgets/dnshole/DnsHoleControls.tsx +++ b/src/widgets/dnshole/DnsHoleControls.tsx @@ -1,21 +1,29 @@ import { + ActionIcon, Badge, Box, Button, Card, Center, + Flex, Group, Image, - SimpleGrid, Stack, Text, Title, + Tooltip, UnstyledButton, } from '@mantine/core'; -import { useElementSize } from '@mantine/hooks'; -import { IconDeviceGamepad, IconPlayerPlay, IconPlayerStop } from '@tabler/icons-react'; +import { useDisclosure } from '@mantine/hooks'; +import { + IconClockPause, + IconDeviceGamepad, + IconPlayerPlay, + IconPlayerStop, +} from '@tabler/icons-react'; import { useSession } from 'next-auth/react'; import { useTranslation } from 'next-i18next'; +import { useState } from 'react'; import { useConfigContext } from '~/config/provider'; import { api } from '~/utils/api'; @@ -23,6 +31,7 @@ import { defineWidget } from '../helper'; import { WidgetLoading } from '../loading'; import { IWidget } from '../widgets'; import { useDnsHoleSummeryQuery } from './DnsHoleSummary'; +import { TimerModal } from './TimerModal'; const definition = defineWidget({ id: 'dns-hole-controls', @@ -69,9 +78,10 @@ const dnsLightStatus = ( function DnsHoleControlsWidgetTile({ widget }: DnsHoleControlsWidgetProps) { const { data: sessionData } = useSession(); + const [opened, { close, open }] = useDisclosure(false); + const [appId, setAppId] = useState(''); const { isInitialLoading, data, isFetching: fetchingDnsSummary } = useDnsHoleSummeryQuery(); const { mutateAsync, isLoading: changingStatus } = useDnsHoleControlMutation(); - const { width, ref } = useElementSize(); const { t } = useTranslation(['common', 'modules/dns-hole-controls']); const enableControls = sessionData?.user.isAdmin ?? false; @@ -124,10 +134,17 @@ function DnsHoleControlsWidgetTile({ widget }: DnsHoleControlsWidgetProps) { return dnsList; }; - const toggleDns = async (action: 'enable' | 'disable', appsToChange?: string[]) => { + const toggleDns = async ( + action: 'enable' | 'disable', + appsToChange?: string[], + hours: number = 0, + minutes: number = 0 + ) => { + const duration = hours * 3600 + minutes * 60; await mutateAsync( { action, + duration, configName, appsToChange, }, @@ -137,40 +154,68 @@ function DnsHoleControlsWidgetTile({ widget }: DnsHoleControlsWidgetProps) { }, } ); + setAppId(''); }; return ( - + {enableControls && widget.properties.showToggleAllButtons && ( - 275 ? 2 : 1} - verticalSpacing="0.25rem" - spacing="0.25rem" - > - - - + + + + + + + + + + + + + )} + + {app.name} - - toggleDns(dnsHole.status === 'enabled' ? 'disable' : 'enable', [app.id]) - } - disabled={fetchingDnsSummary || changingStatus} - style={{ pointerEvents: enableControls ? 'auto' : 'none' }} - > - ({ - root: { - '&:hover': { - background: - theme.colorScheme === 'dark' - ? theme.colors.dark[4] - : theme.colors.gray[2], - }, - '&:active': { - background: - theme.colorScheme === 'dark' - ? theme.colors.dark[5] - : theme.colors.gray[3], - }, - }, - })} + + + toggleDns(dnsHole.status === 'enabled' ? 'disable' : 'enable', [app.id]) + } + disabled={fetchingDnsSummary || changingStatus} + style={{ pointerEvents: enableControls ? 'auto' : 'none' }} > - {t(dnsHole.status)} - - + ({ + root: { + '&:hover': { + background: + theme.colorScheme === 'dark' + ? theme.colors.dark[4] + : theme.colors.gray[2], + }, + '&:active': { + background: + theme.colorScheme === 'dark' + ? theme.colors.dark[5] + : theme.colors.gray[3], + }, + }, + })} + > + {t(dnsHole.status)} + + + { + setAppId(app.id); + open(); + }} + > + + + diff --git a/src/widgets/dnshole/DnsHoleSummary.tsx b/src/widgets/dnshole/DnsHoleSummary.tsx index b3451d23f..420b4ebe2 100644 --- a/src/widgets/dnshole/DnsHoleSummary.tsx +++ b/src/widgets/dnshole/DnsHoleSummary.tsx @@ -1,4 +1,4 @@ -import { Box, Card, Center, Container, Flex, Text } from '@mantine/core'; +import { Card, Center, Container, Flex, Text } from '@mantine/core'; import { useElementSize } from '@mantine/hooks'; import { IconAd, @@ -112,7 +112,7 @@ export const useDnsHoleSummeryQuery = () => { configName: configName!, }, { - staleTime: 1000 * 60 * 2, + refetchInterval: 1000 * 60 * 2, } ); }; diff --git a/src/widgets/dnshole/TimerModal.tsx b/src/widgets/dnshole/TimerModal.tsx new file mode 100644 index 000000000..2ae413502 --- /dev/null +++ b/src/widgets/dnshole/TimerModal.tsx @@ -0,0 +1,124 @@ +import { + ActionIcon, + Button, + Flex, + Group, + Modal, + NumberInput, + NumberInputHandlers, + Stack, + Text, + rem, +} from '@mantine/core'; +import { IconClockPause } from '@tabler/icons-react'; +import { useRef, useState } from 'react'; +import { useTranslation } from 'react-i18next'; + +interface TimerModalProps { + toggleDns: any; + getDnsStatus(): any; + opened: boolean; + close(): any; + appId: string; +} + +export function TimerModal({ toggleDns, getDnsStatus, opened, close, appId }: TimerModalProps) { + const [hours, setHours] = useState(0); + const [minutes, setMinutes] = useState(0); + const hoursHandlers = useRef(); + const minutesHandlers = useRef(); + const { t } = useTranslation('modules/dns-hole-controls'); + + return ( + { + close(); + setHours(0); + setMinutes(0); + }} + title={t('modules/dns-hole-controls:durationModal.title')} + > + + + + {t('modules/dns-hole-controls:durationModal.hours')} + hoursHandlers.current?.decrement()} + > + – + + setHours(Number(val))} + handlersRef={hoursHandlers} + max={999} + min={0} + step={1} + styles={{ input: { width: rem(54), textAlign: 'center' } }} + /> + hoursHandlers.current?.increment()} + > + + + + + + {t('modules/dns-hole-controls:durationModal.minutes')} + minutesHandlers.current?.decrement()} + > + – + + setMinutes(Number(val))} + handlersRef={minutesHandlers} + max={59} + min={0} + step={1} + styles={{ input: { width: rem(54), textAlign: 'center' } }} + /> + minutesHandlers.current?.increment()} + > + + + + + + + {t('modules/dns-hole-controls:durationModal.unlimited')} + + + + + ); +} diff --git a/src/widgets/health-monitoring/HealthMonitoringTile.tsx b/src/widgets/health-monitoring/HealthMonitoringTile.tsx index 71bddeeed..573ddd423 100644 --- a/src/widgets/health-monitoring/HealthMonitoringTile.tsx +++ b/src/widgets/health-monitoring/HealthMonitoringTile.tsx @@ -6,6 +6,8 @@ import { IconInfoSquare, IconStatusChange, } from '@tabler/icons-react'; +import dayjs from 'dayjs'; +import duration from 'dayjs/plugin/duration'; import { useTranslation } from 'next-i18next'; import { useConfigContext } from '~/config/provider'; import { api } from '~/utils/api'; @@ -18,6 +20,8 @@ import HealthMonitoringFileSystem from './HealthMonitoringFileSystem'; import HealthMonitoringMemory from './HealthMonitoringMemory'; import { ClusterStatusTile } from './cluster/HealthMonitoringClusterTile'; +dayjs.extend(duration); + const defaultViewStates = ['none', 'node', 'vm', 'lxc', 'storage'] as const; type DefaultViewState = (typeof defaultViewStates)[number]; @@ -186,12 +190,6 @@ function HealthMonitoringWidgetTile({ widget }: HealthMonitoringWidgetProps) { const SystemStatusTile = ({ data, properties }: { data: any; properties: any }) => { const { t } = useTranslation('modules/health-monitoring'); - const formatUptime = (uptime: number) => { - const days = Math.floor(uptime / (60 * 60 * 24)); - const remainingHours = Math.floor((uptime % (60 * 60 * 24)) / 3600); - return t('info.uptimeFormat', { days: days, hours: remainingHours}) - }; - return ( @@ -268,3 +266,13 @@ const useStatusQuery = (node: string, ignoreCerts: boolean) => { }; export default definition; + +export const formatUptime = (uptime: number) => { + const { t } = useTranslation('modules/health-monitoring'); + const time = dayjs.duration(uptime, 's'); + return t('info.uptimeFormat', { + days: Math.floor(time.asDays()), + hours: time.hours(), + minutes: time.minutes(), + }); +}; diff --git a/src/widgets/health-monitoring/cluster/HealthMonitoringClusterTile.tsx b/src/widgets/health-monitoring/cluster/HealthMonitoringClusterTile.tsx index 2ad96cb40..9b37d8f57 100644 --- a/src/widgets/health-monitoring/cluster/HealthMonitoringClusterTile.tsx +++ b/src/widgets/health-monitoring/cluster/HealthMonitoringClusterTile.tsx @@ -1,24 +1,20 @@ -import { Accordion, Center, Flex, Group, RingProgress, Stack, Text } from '@mantine/core'; +import { Accordion, Card, Center, Flex, Group, RingProgress, Stack, Text } from '@mantine/core'; import { IconBrain, IconCpu, IconCube, IconDatabase, IconDeviceLaptop, + IconInfoSquare, IconServer, } from '@tabler/icons-react'; import { useTranslation } from 'react-i18next'; -import { ResourceData, ResourceSummary } from '~/widgets/health-monitoring/cluster/types'; +import { ResourceData } from '~/widgets/health-monitoring/cluster/types'; +import { formatUptime } from '../HealthMonitoringTile'; import { ResourceType } from './HealthMonitoringClusterResourceRow'; -export const ClusterStatusTile = ({ - data, - properties, -}: { - data: ResourceSummary; - properties: any; -}) => { +export const ClusterStatusTile = ({ data, properties }: { data: any; properties: any }) => { const { t } = useTranslation('modules/health-monitoring'); const running = (total: number, current: ResourceData) => { @@ -46,12 +42,26 @@ export const ClusterStatusTile = ({ (sum: number, item: ResourceData) => (item.running ? item.cpu * item.maxCpu + sum : sum), 0 ); + const uptime = data.nodes.reduce( + (sum: number, { uptime }: ResourceData) => (sum > uptime ? sum : uptime), + 0 + ); const cpuPercent = (usedCpu / maxCpu) * 100; const memPercent = (usedMem / maxMem) * 100; return ( + + + + + {t('info.uptime')}: +
+ {formatUptime(uptime)} +
+
+
{ const { t } = useTranslation('modules/health-monitoring'); - if (!include) { - return null; - } + if (!include) return null; + return (
@@ -142,7 +151,7 @@ const SummaryHeader = ({ cpu, memory, include }: SummaryHeaderProps) => { sections={[{ value: cpu, color: cpu > 75 ? 'orange' : 'green' }]} /> - {t('cluster.summary.cpu')} + {t('cluster.summary.cpu')} {cpu.toFixed(1)}% @@ -159,7 +168,7 @@ const SummaryHeader = ({ cpu, memory, include }: SummaryHeaderProps) => { sections={[{ value: memory, color: memory > 75 ? 'orange' : 'green' }]} /> - {t('cluster.summary.ram')} + {t('cluster.summary.ram')} {memory.toFixed(1)}% diff --git a/src/widgets/indexer-manager/IndexerManagerTile.tsx b/src/widgets/indexer-manager/IndexerManagerTile.tsx index 98b68d800..9673ccd50 100644 --- a/src/widgets/indexer-manager/IndexerManagerTile.tsx +++ b/src/widgets/indexer-manager/IndexerManagerTile.tsx @@ -1,4 +1,13 @@ -import { Button, Card, Flex, Group, ScrollArea, Text } from '@mantine/core'; +import { + Anchor, + Button, + Card, + Flex, + Group, + ScrollArea, + Text, + useMantineTheme, +} from '@mantine/core'; import { IconCircleCheck, IconCircleX, IconReportSearch, IconTestPipe } from '@tabler/icons-react'; import { useSession } from 'next-auth/react'; import { useTranslation } from 'next-i18next'; @@ -12,7 +21,12 @@ import { IWidget } from '../widgets'; const definition = defineWidget({ id: 'indexer-manager', icon: IconReportSearch, - options: {}, + options: { + openIndexerSiteInNewTab: { + type: 'switch', + defaultValue: true, + }, + }, gridstack: { minWidth: 1, minHeight: 1, @@ -30,6 +44,7 @@ interface IndexerManagerWidgetProps { function IndexerManagerWidgetTile({ widget }: IndexerManagerWidgetProps) { const { t } = useTranslation('modules/indexer-manager'); + const mantineTheme = useMantineTheme(); const { data: sessionData } = useSession(); const { name: configName } = useConfigContext(); const utils = api.useUtils(); @@ -49,7 +64,7 @@ function IndexerManagerWidgetTile({ widget }: IndexerManagerWidgetProps) { configName: configName!, }, { - staleTime: 1000 * 60 * 2, + refetchInterval: 1000 * 60 * 2, } ); if (indexersLoading || !indexersData || statusesLoading) { @@ -63,9 +78,15 @@ function IndexerManagerWidgetTile({ widget }: IndexerManagerWidgetProps) { {indexersData.map((indexer: any) => ( - - {indexer.name} - + + + {indexer.name} + + {!statusesData.find((status: any) => indexer.id === status.indexerId) && indexer.enable ? ( diff --git a/src/widgets/notebook/NotebookWidgetTile.tsx b/src/widgets/notebook/NotebookWidgetTile.tsx index 4d2882d34..5d746c49d 100644 --- a/src/widgets/notebook/NotebookWidgetTile.tsx +++ b/src/widgets/notebook/NotebookWidgetTile.tsx @@ -27,7 +27,7 @@ const definition = defineWidget({ }, }, gridstack: { - minWidth: 2, + minWidth: 1, minHeight: 1, maxWidth: 12, maxHeight: 12, diff --git a/yarn.lock b/yarn.lock index c9d89b889..eda51e616 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3022,6 +3022,15 @@ __metadata: languageName: node linkType: hard +"@types/adm-zip@npm:^0.5.5": + version: 0.5.5 + resolution: "@types/adm-zip@npm:0.5.5" + dependencies: + "@types/node": "*" + checksum: 808c25b8a1c2e1c594cf9b1514e7953105cf96e19e38aa7dc109ff2537bda7345b950ef1f4e54a6e824e5503e29d24b0ff6d0aa1ff9bd4afb79ef0ef2df9ebab + languageName: node + linkType: hard + "@types/aria-query@npm:^5.0.1": version: 5.0.4 resolution: "@types/aria-query@npm:5.0.4" @@ -4031,6 +4040,13 @@ __metadata: languageName: node linkType: hard +"adm-zip@npm:^0.5.15": + version: 0.5.15 + resolution: "adm-zip@npm:0.5.15" + checksum: 23fc108ba0ead637cf8f89431bd152017d3d2eccbbac5e77bcfa3d0209029a53921d9735c5110c06b51cf223184f4cf2fdade975f20266a64183e94717a535f4 + languageName: node + linkType: hard + "aes-decrypter@npm:4.0.1, aes-decrypter@npm:^4.0.1": version: 4.0.1 resolution: "aes-decrypter@npm:4.0.1" @@ -4351,25 +4367,14 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.0.0": - version: 1.6.2 - resolution: "axios@npm:1.6.2" +"axios@npm:^1.0.0, axios@npm:^1.4.0": + version: 1.7.4 + resolution: "axios@npm:1.7.4" dependencies: - follow-redirects: ^1.15.0 + follow-redirects: ^1.15.6 form-data: ^4.0.0 proxy-from-env: ^1.1.0 - checksum: 4a7429e2b784be0f2902ca2680964391eae7236faa3967715f30ea45464b98ae3f1c6f631303b13dfe721b17126b01f486c7644b9ef276bfc63112db9fd379f8 - languageName: node - linkType: hard - -"axios@npm:^1.4.0": - version: 1.6.5 - resolution: "axios@npm:1.6.5" - dependencies: - follow-redirects: ^1.15.4 - form-data: ^4.0.0 - proxy-from-env: ^1.1.0 - checksum: e28d67b2d9134cb4608c44d8068b0678cfdccc652742e619006f27264a30c7aba13b2cd19c6f1f52ae195b5232734925928fb192d5c85feea7edd2f273df206d + checksum: 0c17039a9acfe6a566fca8431ba5c1b455c83d30ea6157fec68a6722878fcd30f3bd32d172f6bee0c51fe75ca98e6414ddcd968a87b5606b573731629440bfaf languageName: node linkType: hard @@ -6737,23 +6742,13 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.15.0": - version: 1.15.3 - resolution: "follow-redirects@npm:1.15.3" +"follow-redirects@npm:^1.15.6": + version: 1.15.6 + resolution: "follow-redirects@npm:1.15.6" peerDependenciesMeta: debug: optional: true - checksum: 584da22ec5420c837bd096559ebfb8fe69d82512d5585004e36a3b4a6ef6d5905780e0c74508c7b72f907d1fa2b7bd339e613859e9c304d0dc96af2027fd0231 - languageName: node - linkType: hard - -"follow-redirects@npm:^1.15.4": - version: 1.15.4 - resolution: "follow-redirects@npm:1.15.4" - peerDependenciesMeta: - debug: - optional: true - checksum: e178d1deff8b23d5d24ec3f7a94cde6e47d74d0dc649c35fc9857041267c12ec5d44650a0c5597ef83056ada9ea6ca0c30e7c4f97dbf07d035086be9e6a5b7b6 + checksum: a62c378dfc8c00f60b9c80cab158ba54e99ba0239a5dd7c81245e5a5b39d10f0c35e249c3379eae719ff0285fff88c365dd446fab19dee771f1d76252df1bbf5 languageName: node linkType: hard @@ -7429,6 +7424,7 @@ __metadata: "@trpc/next": ^10.37.1 "@trpc/react-query": ^10.37.1 "@trpc/server": ^10.37.1 + "@types/adm-zip": ^0.5.5 "@types/bcryptjs": ^2.4.2 "@types/better-sqlite3": ^7.6.5 "@types/cookies": ^0.7.7 @@ -7447,6 +7443,7 @@ __metadata: "@vitest/coverage-c8": ^0.33.0 "@vitest/coverage-v8": ^0.34.5 "@vitest/ui": ^0.34.4 + adm-zip: ^0.5.15 axios: ^1.0.0 bcryptjs: ^2.4.3 better-sqlite3: ^8.6.0