Merge branch 'LocalMain' of https://github.com/karl0ss/homepage into LocalMain

This commit is contained in:
Karl Hudgell 2023-09-21 09:22:24 +01:00
commit 09b31c74e1
169 changed files with 8556 additions and 1517 deletions

View File

@ -35,7 +35,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v3 uses: actions/checkout@v4
# Install the cosign tool except on PR # Install the cosign tool except on PR
# https://github.com/sigstore/cosign-installer # https://github.com/sigstore/cosign-installer
@ -48,11 +48,11 @@ jobs:
# Setup QEMU # Setup QEMU
# https://github.com/marketplace/actions/docker-setup-buildx#with-qemu # https://github.com/marketplace/actions/docker-setup-buildx#with-qemu
- name: Setup QEMU - name: Setup QEMU
uses: docker/setup-qemu-action@v2 uses: docker/setup-qemu-action@v3
# Workaround: https://github.com/docker/build-push-action/issues/461 # Workaround: https://github.com/docker/build-push-action/issues/461
- name: Setup Docker buildx - name: Setup Docker buildx
uses: docker/setup-buildx-action@v2 uses: docker/setup-buildx-action@v3
# This step is being disabled because the runner is on a self-hosted machine # This step is being disabled because the runner is on a self-hosted machine
# where the cache will stick between runs. # where the cache will stick between runs.
@ -68,7 +68,7 @@ jobs:
# https://github.com/docker/login-action # https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }} - name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'
uses: docker/login-action@v2 uses: docker/login-action@v3
with: with:
registry: ${{ env.REGISTRY }} registry: ${{ env.REGISTRY }}
username: ${{ github.actor }} username: ${{ github.actor }}
@ -78,7 +78,7 @@ jobs:
# https://github.com/docker/metadata-action # https://github.com/docker/metadata-action
- name: Extract Docker metadata - name: Extract Docker metadata
id: meta id: meta
uses: docker/metadata-action@v4 uses: docker/metadata-action@v5
with: with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: | flavor: |
@ -88,7 +88,7 @@ jobs:
# https://github.com/docker/build-push-action # https://github.com/docker/build-push-action
- name: Build and push Docker image - name: Build and push Docker image
id: build-and-push id: build-and-push
uses: docker/build-push-action@v4 uses: docker/build-push-action@v5
with: with:
context: . context: .
push: ${{ github.event_name != 'pull_request' }} push: ${{ github.event_name != 'pull_request' }}

136
README.md
View File

@ -6,71 +6,58 @@
</p> </p>
<p align="center"> <p align="center">
A modern <em>(fully static, fast)</em>, secure <em>(fully proxied)</em>, highly customizable application dashboard with integrations for more than 25 services and translations for over 15 languages. Easily configured via YAML files (or discovery via docker labels). A modern, <em>fully static, fast</em>, secure <em>fully proxied</em>, highly customizable application dashboard with integrations for over 100 services and translations into multiple languages. Easily configured via YAML files or through docker label discovery.
</p> </p>
<p align="center"> <p align="center">
<img src="images/1.png" /> <img src="images/1.png?v=2" />
</p> </p>
<p align="center"> <p align="center">
<img src="images/2.png" width="19%" /> <a href="https://github.com/benphelps/homepage/actions/workflows/docker-publish.yml"><img alt="GitHub Workflow Status (with event)" src="https://img.shields.io/github/actions/workflow/status/benphelps/homepage/docker-publish.yml"></a>
<img src="images/3.png" width="19%" /> &nbsp;
<img src="images/4.png" width="19%" />
<img src="images/5.png" width="19%" />
<img src="images/6.png" width="19%" />
</p>
<p align="center">
<a href="https://discord.gg/k4ruYNrudu"><img src="https://img.shields.io/badge/Discord - Chat-blue?logo=discord&logoColor=white" /></a>
<a href="https://paypal.me/phelpsben" title="Donate"><img src="https://img.shields.io/badge/PayPal - Donate-blue?logo=paypal&logoColor=white" alt="Linkedin - phelpsben"></a>
</p>
<p align="center">
<a href="https://github.com/benphelps/homepage/actions/workflows/docker-publish.yml"><img src="https://github.com/benphelps/homepage/actions/workflows/docker-publish.yml/badge.svg" alt="Docker"></a>
<a href="https://hosted.weblate.org/engage/homepage/"><img src="https://hosted.weblate.org/widgets/homepage/-/homepage/svg-badge.svg" alt="Weblate"></a> <a href="https://hosted.weblate.org/engage/homepage/"><img src="https://hosted.weblate.org/widgets/homepage/-/homepage/svg-badge.svg" alt="Weblate"></a>
&nbsp;
<a href="https://discord.gg/k4ruYNrudu"><img alt="Discord" src="https://img.shields.io/discord/1019316731635834932"></a>
&nbsp;
<a href="https://paypal.me/phelpsben" title="Donate"><img alt="GitHub Sponsors" src="https://img.shields.io/github/sponsors/benphelps"></a>
</p> </p>
## Features # Features
- **Fast!** The entire site is statically generated at build time, so you can expect instant load times With features like quick search, bookmarks, weather support, a wide range of integrations and widgets, an elegant and modern design, and a focus on performance, Homepage is your ideal start to the day and a handy companion throughout it.
- **Secure!** Every API request to backend services goes through a proxy server, so your API keys are never exposed to the frontend client.
- Images built for AMD64 (x86_64), ARM64, ARMv7 and ARMv6
- Supports all Raspberry Pi's, most SBCs & Apple Silicon
- Full i18n support with translations for Catalan, Chinese, Dutch, Finnish, French, German, Hebrew, Hungarian, Malay, Norwegian Bokmål, Polish, Portuguese, Portuguese (Brazil), Romanian, Russian, Spanish, Swedish and Yue
- Want to help translate? [Join the Weblate project](https://hosted.weblate.org/engage/homepage/)
- Service & Web Bookmarks
- Docker Integration
- Container status (Running / Stopped) & statistics (CPU, Memory, Network)
- Automatic service discovery (via labels)
- Service Integration
- Sonarr, Radarr, Readarr, Prowlarr, Bazarr, Lidarr, Emby, Jellyfin, Tautulli, Plex and more
- Ombi, Overseerr, Jellyseerr, Jackett, NZBGet, SABnzbd, ruTorrent, Transmission, qBittorrent and more
- Portainer, Traefik, Speedtest Tracker, PiHole, AdGuard Home, Nginx Proxy Manager, Gotify, Syncthing Relay Server, Authentik, Proxmox and more
- Information Providers
- Coin Market Cap, Mastodon and more
- Information & Utility Widgets
- System Stats (Disk, CPU, Memory)
- Weather via [OpenWeatherMap](https://openweathermap.org/) or [Open-Meteo](https://open-meteo.com/)
- Web Search Bar
- UniFi Console, Glances and more
- Instant "Quick-launch" search
- Customizable
- 21 theme colors with light and dark mode support
- Background image support
- Column and Row layout options
## Support & Suggestions - **Fast** - The site is statically generated at build time for instant load times.
- **Secure** - All API requests to backend services are proxied, keeping your API keys hidden. Constantly reviewed for security by the community.
- **For Everyone** - Images built for AMD64, ARM64, ARMv7, and ARMv6.
- **Full i18n** - Support for over 40 languages.
- **Service & Web Bookmarks** - Add custom links to the homepage.
- **Docker Integration** - Container status and stats. Automatic service discovery via labels.
- **Service Integration** - Over 100 service integrations, including popular starr and self-hosted apps.
- **Information & Utility Widgets** - Weather, time, date, search, and more.
- **And much more...**
If you have any questions, suggestions, or general issues, please start a discussion on the [Discussions](https://github.com/benphelps/homepage/discussions) page. ## Docker Integration
For bug reports, please open an issue on the [Issues](https://github.com/benphelps/homepage/issues) page. Homepage has built-in support for Docker, and can automatically discover and add services to the homepage based on labels. See the [Docker](https://gethomepage.dev/en/installation/docker/) page for more information.
## Getting Started ## Service Widgets
For configuration options, examples and more, [please check out the homepage site](http://gethomepage.dev). Homepage also has support for over 100 3rd party services, including all popular starr apps, and most popular self-hosted apps. Some examples include: Radarr, Sonarr, Lidarr, Bazarr, Ombi, Tautulli, Plex, Jellyfin, Emby, Transmission, qBittorrent, Deluge, Jackett, NZBGet, SABnzbd, etc. As well as service integrations, Homepage also has a number of information providers, sourcing information from a variety of external 3rd party APIs. See the [Service](https://gethomepage.dev/en/configs/service-widgets/) page for more information.
### With Docker ## Information Widgets
Homepage has built-in support for a number of information providers, including weather, time, date, search, glances and more. System and status information presented at the top of the page. See the [Information Providers](https://gethomepage.dev/en/configs/widgets/) page for more information.
## Customization
Homepage is highly customizable, with support for custom themes, custom CSS & JS, custom layouts, formatting, localization and more. See the [Settings](https://gethomepage.dev/en/configs/settings/) page for more information.
# Getting Started
For configuration options, examples and more, [please check out the homepage documentation](http://gethomepage.dev).
## With Docker
Using docker compose: Using docker compose:
@ -80,20 +67,31 @@ services:
homepage: homepage:
image: ghcr.io/benphelps/homepage:latest image: ghcr.io/benphelps/homepage:latest
container_name: homepage container_name: homepage
environment:
PUID: 1000 -- optional, your user id
PGID: 1000 -- optional, your group id
ports: ports:
- 3000:3000 - 3000:3000
volumes: volumes:
- /path/to/config:/app/config # Make sure your local config directory exists - /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock:ro # (optional) For docker integrations - /var/run/docker.sock:/var/run/docker.sock:ro # optional, for docker integrations
restart: unless-stopped
``` ```
or docker run: or docker run:
```bash ```bash
docker run -p 3000:3000 -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/benphelps/homepage:latest docker run --name homepage \
-e PUID=1000 \
-e PGID=1000 \
-p 3000:3000 \
-v /path/to/config:/app/config \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--restart unless-stopped \
ghcr.io/benphelps/homepage:latest
``` ```
### With Node ## With Node
First, clone the repository: First, clone the repository:
@ -110,22 +108,23 @@ pnpm build
If this is your first time starting, copy the `src/skeleton` directory to `config/` to populate initial example config files. If this is your first time starting, copy the `src/skeleton` directory to `config/` to populate initial example config files.
Finally, run the server: Finally, run the server in production mode:
```bash ```bash
pnpm start pnpm start
``` ```
## Configuration or development mode:
Configuration files will be generated and placed on the first request. ```bash
pnpm dev
```
Configuration is done in the /config directory using .yaml files. Refer to each config for # Configuration
the specific configuration options.
You may also check [the homepage site](http://gethomepage.dev) for detailed configuration instructions, examples and more. Please refere to the [homepage documentation](https://gethomepage.dev/) website for more information. Everything you need to know about configuring Homepage is there. Please read everything carefully before asking for help, as most questions are answered there or are simple YAML configuration issues.
## Development # Development
Install NPM packages, this project uses [pnpm](https://pnpm.io/) (and so should you!): Install NPM packages, this project uses [pnpm](https://pnpm.io/) (and so should you!):
@ -141,21 +140,16 @@ pnpm dev
Open [http://localhost:3000](http://localhost:3000) to start. Open [http://localhost:3000](http://localhost:3000) to start.
This is a [Next.js](https://nextjs.org/) application, see their doucmentation for more information: This is a [Next.js](https://nextjs.org/) application, see their documentation for more information:
## Contributors # Support & Suggestions
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> If you have any questions, suggestions, or general issues, please start a discussion on the [Discussions](https://github.com/benphelps/homepage/discussions) page.
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<!-- markdownlint-restore --> For bug reports, please open an issue on the [Issues](https://github.com/benphelps/homepage/issues) page.
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END --> ## Contributing & Contributers
Contributions are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) file for more information.
Thanks to the over 200 contributors who have helped make this project what it is today!
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-13-orange.svg?style=flat-square)](#contributors)
<!-- ALL-CONTRIBUTORS-BADGE:END -->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 KiB

After

Width:  |  Height:  |  Size: 734 KiB

View File

@ -36,8 +36,8 @@ options:
switchCurrentContext: false switchCurrentContext: false
runtime: runtime:
gpuRequest: "" gpuRequest: ""
serversMemory: "1024Mi" serversMemory: "1024MiB"
agentsMemory: "1024Mi" agentsMemory: "1024MiB"
labels: labels:
- label: foo=bar - label: foo=bar
nodeFilters: nodeFilters:

954
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -16,6 +16,7 @@
"compare-versions": "^5.0.1", "compare-versions": "^5.0.1",
"dockerode": "^3.3.4", "dockerode": "^3.3.4",
"follow-redirects": "^1.15.2", "follow-redirects": "^1.15.2",
"gamedig": "^4.1.0",
"i18next": "^21.9.2", "i18next": "^21.9.2",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"json-rpc-2.0": "^1.4.1", "json-rpc-2.0": "^1.4.1",
@ -30,10 +31,12 @@
"react-i18next": "^11.18.6", "react-i18next": "^11.18.6",
"react-icons": "^4.4.0", "react-icons": "^4.4.0",
"salted-md5": "^4.0.5", "salted-md5": "^4.0.5",
"recharts": "^2.7.2",
"shvl": "^3.0.0", "shvl": "^3.0.0",
"swr": "^1.3.0", "swr": "^1.3.0",
"systeminformation": "^5.17.12", "systeminformation": "^5.17.12",
"tough-cookie": "^4.1.2", "tough-cookie": "^4.1.2",
"urbackup-server-api": "^0.8.9",
"winston": "^3.8.2", "winston": "^3.8.2",
"xml-js": "^1.6.11" "xml-js": "^1.6.11"
}, },

693
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -310,7 +310,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "مفضلة", "bookmark": "مفضلة",
@ -656,14 +663,75 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Succeeded", "succeeded": "Succeeded",
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories",
"series": "Series"
},
"calibreweb": {
"categories": "Categories",
"series": "Series",
"books": "Books",
"authors": "Authors"
},
"uptimerobot": {
"seemsdown": "Seems Down",
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -13,7 +13,7 @@
"missing_type": "Липсваща приставка: {{type}}", "missing_type": "Липсваща приставка: {{type}}",
"api_error": "API Грешка", "api_error": "API Грешка",
"status": "Статус", "status": "Статус",
"information": "Information", "information": "Информация",
"url": "URL", "url": "URL",
"raw_error": "Raw Error", "raw_error": "Raw Error",
"response_data": "Response Data" "response_data": "Response Data"
@ -28,7 +28,7 @@
"placeholder": "Търсене…" "placeholder": "Търсене…"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "Процесор",
"total": "Общо", "total": "Общо",
"free": "Свободни", "free": "Свободни",
"used": "Заети", "used": "Заети",
@ -54,9 +54,9 @@
"wait": "Моля изчакайте", "wait": "Моля изчакайте",
"lan": "LAN", "lan": "LAN",
"wlan": "WLAN", "wlan": "WLAN",
"devices": "Devices", "devices": "Устройства",
"lan_devices": "LAN Devices", "lan_devices": "LAN Устройства",
"wlan_devices": "WLAN Devices", "wlan_devices": "WLAN Устройства",
"empty_data": "Subsystem status unknown" "empty_data": "Subsystem status unknown"
}, },
"docker": { "docker": {
@ -64,8 +64,8 @@
"rx": "RX", "rx": "RX",
"tx": "TX", "tx": "TX",
"mem": "MEM", "mem": "MEM",
"cpu": "CPU", "cpu": "Процесор",
"error": "Error", "error": "Грешка",
"unknown": "Unknown", "unknown": "Unknown",
"partial": "Partial", "partial": "Partial",
"running": "Running", "running": "Running",
@ -125,7 +125,7 @@
"radarr": { "radarr": {
"wanted": "Wanted", "wanted": "Wanted",
"queued": "Queued", "queued": "Queued",
"movies": "Movies", "movies": "Филми",
"missing": "Missing", "missing": "Missing",
"queue": "Queue", "queue": "Queue",
"unknown": "Unknown" "unknown": "Unknown"
@ -138,38 +138,38 @@
"readarr": { "readarr": {
"wanted": "Wanted", "wanted": "Wanted",
"queued": "Queued", "queued": "Queued",
"books": "Books" "books": "Книги"
}, },
"bazarr": { "bazarr": {
"missingEpisodes": "Missing Episodes", "missingEpisodes": "Липсващи Епизоди",
"missingMovies": "Missing Movies" "missingMovies": "Липсващи Филми"
}, },
"ombi": { "ombi": {
"pending": "Pending", "pending": "Pending",
"approved": "Approved", "approved": "Одобрен",
"available": "Available" "available": "Наличен"
}, },
"jellyseerr": { "jellyseerr": {
"pending": "Pending", "pending": "Pending",
"approved": "Approved", "approved": "Одобрен",
"available": "Available" "available": "Наличен"
}, },
"overseerr": { "overseerr": {
"pending": "Pending", "pending": "Pending",
"approved": "Approved", "approved": "Одобрен",
"available": "Available", "available": "Наличен",
"processing": "Processing" "processing": "Processing"
}, },
"pihole": { "pihole": {
"queries": "Queries", "queries": "Заявки",
"blocked": "Blocked", "blocked": "Блокирани",
"gravity": "Gravity", "gravity": "Gravity",
"blocked_percent": "Blocked %" "blocked_percent": "Blocked %"
}, },
"adguard": { "adguard": {
"queries": "Queries", "queries": "Queries",
"blocked": "Blocked", "blocked": "Блокирани",
"filtered": "Filtered", "filtered": "Филтрирани",
"latency": "Latency" "latency": "Latency"
}, },
"speedtest": { "speedtest": {
@ -179,7 +179,7 @@
}, },
"portainer": { "portainer": {
"running": "Running", "running": "Running",
"stopped": "Stopped", "stopped": "Спрян",
"total": "Total" "total": "Total"
}, },
"traefik": { "traefik": {
@ -188,15 +188,15 @@
"middleware": "Middleware" "middleware": "Middleware"
}, },
"npm": { "npm": {
"enabled": "Enabled", "enabled": "Активирано",
"disabled": "Disabled", "disabled": "Деактивирано",
"total": "Total" "total": "Total"
}, },
"coinmarketcap": { "coinmarketcap": {
"configure": "Configure one or more crypto currencies to track", "configure": "Configure one or more crypto currencies to track",
"1hour": "1 Hour", "1hour": "1 Час",
"1day": "1 Day", "1day": "1 Ден",
"7days": "7 Days", "7days": "7 Дена",
"30days": "30 Days" "30days": "30 Days"
}, },
"gotify": { "gotify": {
@ -248,22 +248,29 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
"diffsDetected": "Diffs Detected" "diffsDetected": "Diffs Detected"
}, },
"wmo": { "wmo": {
"0-day": "Sunny", "0-day": "Слънчево",
"57-day": "Freezing Drizzle", "57-day": "Freezing Drizzle",
"57-night": "Freezing Drizzle", "57-night": "Freezing Drizzle",
"96-day": "Thunderstorm With Hail", "96-day": "Thunderstorm With Hail",
"96-night": "Thunderstorm With Hail", "96-night": "Thunderstorm With Hail",
"0-night": "Clear", "0-night": "Ясно",
"1-day": "Mainly Sunny", "1-day": "Предимно Слънчево",
"1-night": "Mainly Clear", "1-night": "Предимно Ясно",
"2-day": "Partly Cloudy", "2-day": "Частична Облачност",
"2-night": "Partly Cloudy", "2-night": "Partly Cloudy",
"3-day": "Cloudy", "3-day": "Cloudy",
"3-night": "Cloudy", "3-night": "Cloudy",
@ -356,7 +363,7 @@
}, },
"navidrome": { "navidrome": {
"nothing_streaming": "No Active Streams", "nothing_streaming": "No Active Streams",
"please_wait": "Please Wait" "please_wait": "Моля Изчакайте"
}, },
"pyload": { "pyload": {
"speed": "Speed", "speed": "Speed",
@ -375,7 +382,7 @@
}, },
"ping": { "ping": {
"ping": "Ping", "ping": "Ping",
"error": "Error" "error": "Грешка"
}, },
"scrutiny": { "scrutiny": {
"passed": "Passed", "passed": "Passed",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total d'observats", "totalObserved": "Total d'observats",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"totalUsed": "Used Storage",
"noRecent": "Out of Date"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -322,7 +322,14 @@
"free": "Free", "free": "Free",
"used": "Used", "used": "Used",
"load": "Load", "load": "Load",
"warn": "Warn" "warn": "Warn",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Záložka", "bookmark": "Záložka",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"map": "Map",
"currentPlayers": "Current players",
"name": "Name",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -10,13 +10,13 @@
"movies": "Film", "movies": "Film",
"wanted": "Ønskede", "wanted": "Ønskede",
"missing": "Mangler", "missing": "Mangler",
"queue": "Queue", "queue": "",
"unknown": "Unknown" "unknown": "Ukendt"
}, },
"lidarr": { "lidarr": {
"wanted": "Ønsket", "wanted": "Ønsket",
"queued": "I Kø", "queued": "I Kø",
"artists": "Artists" "artists": "Artister"
}, },
"jellyseerr": { "jellyseerr": {
"available": "Tilgængelig", "available": "Tilgængelig",
@ -27,13 +27,13 @@
"pending": "Afventer", "pending": "Afventer",
"approved": "Godkendt", "approved": "Godkendt",
"available": "Tilgængelig", "available": "Tilgængelig",
"processing": "Processing" "processing": "Behandler"
}, },
"adguard": { "adguard": {
"queries": "Forespørgsler", "queries": "Forespørgsler",
"blocked": "Blokerede", "blocked": "Blokerede",
"filtered": "Filtreret", "filtered": "Filtreret",
"latency": "Latency" "latency": "Latenstid"
}, },
"speedtest": { "speedtest": {
"upload": "Upload", "upload": "Upload",
@ -73,61 +73,68 @@
"wait": "Vent venligst", "wait": "Vent venligst",
"uptime": "UP", "uptime": "UP",
"days": "d", "days": "d",
"hours": "h", "hours": "t",
"temp": "TEMP", "temp": "TEMP",
"load": "Load", "load": "Load",
"warn": "Warn", "warn": "Advar",
"total": "Total", "total": "Total",
"free": "Free", "free": "Ledig",
"used": "Used" "used": "Brugt",
"crit": "Crit",
"read": "Læs",
"write": "Skriv",
"gpu": "GPU",
"mem": "Ram",
"swap": "Swap",
"_temp": "Temp"
}, },
"wmo": { "wmo": {
"1-day": "Hovedsageligt solrigt", "1-day": "Overvejende Solrigt",
"48-day": "Tåget", "48-day": "Tåget",
"48-night": "Tåget", "48-night": "Tåget",
"51-day": "Let støvregn", "51-day": "Let Støvregn",
"51-night": "Let støvregn", "51-night": "Let Støvregn",
"66-night": "Frysende regn", "66-night": "Frysende Regn",
"67-day": "Frysende regn", "67-day": "Frysende Regn",
"67-night": "Frysende regn", "67-night": "Frysende Regn",
"71-day": "Let Sne", "71-day": "Let Sne",
"75-night": "Kraftig Sne", "75-night": "Kraftig Sne",
"86-day": "Snebyger", "86-day": "Snebyger",
"86-night": "Snebyger", "86-night": "Snebyger",
"95-day": "Tordenvejr", "95-day": "Tordenvejr",
"99-day": "Tordenvejr med hagl", "99-day": "Tordenvejr Med Hagl",
"99-night": "Tordenvejr med hagl", "99-night": "Tordenvejr Med Hagl",
"0-day": "Solrig", "0-day": "Solrig",
"0-night": "Klart", "0-night": "Klart",
"1-night": "Hovedsageligt klart", "1-night": "Overvejende Skyfrit",
"2-day": "Delvist skyet", "2-day": "Delvist Overskyet",
"2-night": "Delvist skyet", "2-night": "Delvist Overskyet",
"3-day": "Skyet", "3-day": "Skyet",
"3-night": "Skyet", "3-night": "Skyet",
"45-day": "Tåget", "45-day": "Tåget",
"65-day": "Kraftig regn", "65-day": "Kraftig Regn",
"65-night": "Kraftig regn", "65-night": "Kraftig Regn",
"45-night": "Tåget", "45-night": "Tåget",
"53-day": "Støvregn", "53-day": "Støvregn",
"53-night": "Støvregn", "53-night": "Støvregn",
"55-day": "Kraftig støvregn", "55-day": "Kraftig Støvregn",
"55-night": "Kraftig støvregn", "55-night": "Kraftig Støvregn",
"56-day": "Let frysende støvregn", "56-day": "Let Frysende Støvregn",
"56-night": "Let frysende støvregn", "56-night": "Let Frysende Støvregn",
"57-day": "Frysende støvregn", "57-day": "Frysende Støvregn",
"57-night": "Frysende støvregn", "57-night": "Frysende Støvregn",
"61-day": "Let Regn", "61-day": "Let Regn",
"61-night": "Let Regn", "61-night": "Let Regn",
"63-day": "Regn", "63-day": "Regn",
"63-night": "Regn", "63-night": "Regn",
"66-day": "Frysende regn", "66-day": "Frysende Regn",
"71-night": "Let Sne", "71-night": "Let Sne",
"73-day": "Sne", "73-day": "Sne",
"73-night": "Sne", "73-night": "Sne",
"75-day": "Kraftig Sne", "75-day": "Kraftig Sne",
"77-day": "Snekorn", "77-day": "Snekorn",
"80-day": "Lette byger", "80-day": "Lette Byger",
"80-night": "Lette byger", "80-night": "Lette Byger",
"81-day": "Byger", "81-day": "Byger",
"77-night": "Snekorn", "77-night": "Snekorn",
"81-night": "Byger", "81-night": "Byger",
@ -136,19 +143,19 @@
"85-day": "Snebyger", "85-day": "Snebyger",
"85-night": "Snebyger", "85-night": "Snebyger",
"95-night": "Tordenvejr", "95-night": "Tordenvejr",
"96-day": "Tordenvejr med hagl", "96-day": "Tordenvejr Med Hagl",
"96-night": "Tordenvejr med hagl" "96-night": "Tordenvejr Med Hagl"
}, },
"homebridge": { "homebridge": {
"available_update": "System", "available_update": "System",
"updates": "Opdateringer", "updates": "Opdateringer",
"update_available": "Opdateringer tilgængelige", "update_available": "Opdateringer Tilgængelige",
"up_to_date": "Opdateret", "up_to_date": "Opdateret",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up", "up": "Oppe",
"pending": "Pending", "pending": "Afventer",
"down": "Down" "down": "Nede"
}, },
"widget": { "widget": {
"missing_type": "Manglende Widget Type: {{type}}", "missing_type": "Manglende Widget Type: {{type}}",
@ -156,8 +163,8 @@
"status": "Status", "status": "Status",
"information": "Information", "information": "Information",
"url": "URL", "url": "URL",
"raw_error": "Raw Error", "raw_error": "Rå Fejl",
"response_data": "Response Data" "response_data": "Svardata"
}, },
"weather": { "weather": {
"current": "Nuværende lokation", "current": "Nuværende lokation",
@ -174,13 +181,13 @@
"free": "Fri", "free": "Fri",
"used": "Brugt", "used": "Brugt",
"load": "Belastning", "load": "Belastning",
"mem": "MEM", "mem": "RAM",
"hours": "h", "hours": "t",
"minutes": "m", "minutes": "m",
"temp": "TEMP", "temp": "TEMP",
"max": "Max", "max": "Max",
"uptime": "UP", "uptime": "UP",
"months": "mo", "months": "mdr",
"days": "d" "days": "d"
}, },
"unifi": { "unifi": {
@ -198,7 +205,7 @@
"up": "Oppe", "up": "Oppe",
"down": "NED", "down": "NED",
"wait": "Vent venligst", "wait": "Vent venligst",
"empty_data": "Subsystem status unknown" "empty_data": "Subsystem status ukendt"
}, },
"docker": { "docker": {
"cpu": "CPU", "cpu": "CPU",
@ -207,24 +214,24 @@
"mem": "RAM", "mem": "RAM",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Error",
"unknown": "Unknown", "unknown": "Ukendt",
"running": "Running", "running": "Kører",
"starting": "Starting", "starting": "Starter",
"unhealthy": "Unhealthy", "unhealthy": "Usund",
"not_found": "Not Found", "not_found": "Ikke Fundet",
"exited": "Exited", "exited": "Forladt",
"partial": "Partial", "partial": "Delvis",
"healthy": "Healthy" "healthy": "Sund"
}, },
"emby": { "emby": {
"playing": "Afspiller", "playing": "Afspiller",
"transcoding": "Transcoder", "transcoding": "Transcoder",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Ingen Aktive Streams", "no_active": "Ingen Aktive Streams",
"movies": "Movies", "movies": "Film",
"series": "Series", "series": "Serier",
"episodes": "Episodes", "episodes": "Episoder",
"songs": "Songs" "songs": "Sange"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observeret", "totalObserved": "Total Observeret",
@ -235,7 +242,7 @@
"transcoding": "Transcoder", "transcoding": "Transcoder",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Ingen Aktive Streams", "no_active": "Ingen Aktive Streams",
"plex_connection_error": "Check Plex Connection" "plex_connection_error": "Tjek Plex-forbindelse"
}, },
"nzbget": { "nzbget": {
"rate": "Rate", "rate": "Rate",
@ -268,8 +275,8 @@
"wanted": "Ønsket", "wanted": "Ønsket",
"queued": "I Kø", "queued": "I Kø",
"series": "Serier", "series": "Serier",
"queue": "Queue", "queue": "",
"unknown": "Unknown" "unknown": "Ukendt"
}, },
"readarr": { "readarr": {
"wanted": "Ønskede", "wanted": "Ønskede",
@ -289,7 +296,7 @@
"blocked": "Blokerede", "blocked": "Blokerede",
"gravity": "Gravity", "gravity": "Gravity",
"queries": "Forespørgsler", "queries": "Forespørgsler",
"blocked_percent": "Blocked %" "blocked_percent": "Blokeret %"
}, },
"portainer": { "portainer": {
"running": "Kørende", "running": "Kørende",
@ -310,8 +317,8 @@
"enableIndexers": "Indeksører", "enableIndexers": "Indeksører",
"numberOfGrabs": "Grabs", "numberOfGrabs": "Grabs",
"numberOfQueries": "Forespørgsler", "numberOfQueries": "Forespørgsler",
"numberOfFailGrabs": "Fail Grabs", "numberOfFailGrabs": "Fejl Grabs",
"numberOfFailQueries": "Fejl forespørgsler" "numberOfFailQueries": "Fejl Forespørgsler"
}, },
"jackett": { "jackett": {
"configured": "Konfigureret", "configured": "Konfigureret",
@ -326,9 +333,9 @@
"quicklaunch": { "quicklaunch": {
"bookmark": "Bogmærker", "bookmark": "Bogmærker",
"service": "Service", "service": "Service",
"search": "Search", "search": "Søg",
"custom": "Custom", "custom": "Brugerdefinerede",
"visit": "Visit", "visit": "Besøg",
"url": "URL" "url": "URL"
}, },
"watchtower": { "watchtower": {
@ -365,25 +372,25 @@
"total": "Total" "total": "Total"
}, },
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Offentlig IP",
"region": "Region", "region": "Region",
"country": "Country" "country": "Land"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "Kanaler",
"hd": "HD" "hd": "HD"
}, },
"ping": { "ping": {
"error": "Error", "error": "Fejl",
"ping": "Ping" "ping": "Ping"
}, },
"scrutiny": { "scrutiny": {
"passed": "Passed", "passed": "Bestået",
"failed": "Failed", "failed": "Mislykket",
"unknown": "Unknown" "unknown": "Ukendt"
}, },
"paperlessngx": { "paperlessngx": {
"inbox": "Inbox", "inbox": "Indbakke",
"total": "Total" "total": "Total"
}, },
"deluge": { "deluge": {
@ -399,29 +406,29 @@
"seed": "Seed" "seed": "Seed"
}, },
"tdarr": { "tdarr": {
"queue": "Queue", "queue": "",
"processed": "Processed", "processed": "Behandlet",
"errored": "Errored", "errored": "Fejlet",
"saved": "Saved" "saved": "Gemt"
}, },
"miniflux": { "miniflux": {
"read": "Read", "read": "Læst",
"unread": "Unread" "unread": "Ulæst"
}, },
"nextdns": { "nextdns": {
"wait": "Please Wait", "wait": "Vent Venligst",
"no_devices": "No Device Data Received" "no_devices": "Ingen Enhedsdata Modtaget"
}, },
"common": { "common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}" "bibitrate": "{{value, rate(bits: true; binary: true)}}"
}, },
"omada": { "omada": {
"connectedAp": "Connected APs", "connectedAp": "Forbundne APs",
"activeUser": "Active devices", "activeUser": "Aktive enheder",
"alerts": "Alerts", "alerts": "Advarsler",
"connectedGateway": "Connected gateways", "connectedGateway": "Forbundne gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Forbundne switches"
}, },
"downloadstation": { "downloadstation": {
"download": "Download", "download": "Download",
@ -430,240 +437,301 @@
"seed": "Seed" "seed": "Seed"
}, },
"mikrotik": { "mikrotik": {
"cpuLoad": "CPU Load", "cpuLoad": "CPU Belastning",
"memoryUsed": "Memory Used", "memoryUsed": "Hukommelse Brugt",
"uptime": "Uptime", "uptime": "Oppetid",
"numberOfLeases": "Leases" "numberOfLeases": "Leases"
}, },
"xteve": { "xteve": {
"streams_all": "All Streams", "streams_all": "Alle Streams",
"streams_active": "Active Streams", "streams_active": "Aktive Streams",
"streams_xepg": "XEPG Channels" "streams_xepg": "XEPG Kanaler"
}, },
"opnsense": { "opnsense": {
"cpu": "CPU Load", "cpu": "CPU Belastning",
"memory": "Active Memory", "memory": "Aktiv Hukommelse",
"wanUpload": "WAN Upload", "wanUpload": "WAN Upload",
"wanDownload": "WAN Download" "wanDownload": "WAN Download"
}, },
"moonraker": { "moonraker": {
"printer_state": "Printer State", "printer_state": "Printer Tilstand",
"print_status": "Print Status", "print_status": "Print Status",
"print_progress": "Progress", "print_progress": "Fremskridt",
"layers": "Layers" "layers": "Lag"
}, },
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "Ønskede",
"queued": "Queued", "queued": "I Kø",
"series": "Series" "series": "Serier"
}, },
"octoprint": { "octoprint": {
"printer_state": "Status", "printer_state": "Status",
"temp_tool": "Tool temp", "temp_tool": "Tool temp",
"temp_bed": "Bed temp", "temp_bed": "Bed temp",
"job_completion": "Completion" "job_completion": "Færdiggørelse"
}, },
"cloudflared": { "cloudflared": {
"origin_ip": "Origin IP", "origin_ip": "Oprindelses-IP",
"status": "Status" "status": "Status"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
"datastore_usage": "Datastore", "datastore_usage": "Datalager",
"failed_tasks_24h": "Failed Tasks 24h", "failed_tasks_24h": "Mislykkede Opgaver 24t",
"cpu_usage": "CPU", "cpu_usage": "CPU",
"memory_usage": "Memory" "memory_usage": "Hukommelse"
}, },
"immich": { "immich": {
"users": "Users", "users": "Brugere",
"photos": "Photos", "photos": "Billeder",
"videos": "Videos", "videos": "Videoer",
"storage": "Storage" "storage": "Lager"
}, },
"uptimekuma": { "uptimekuma": {
"up": "Sites Up", "up": "Sider Oppe",
"down": "Sites Down", "down": "Sider Nede",
"uptime": "Uptime", "uptime": "Oppetid",
"incident": "Incident", "incident": "Hændelse",
"m": "m" "m": "m"
}, },
"komga": { "komga": {
"libraries": "Libraries", "libraries": "Biblioteker",
"series": "Series", "series": "Serier",
"books": "Books" "books": "Bøger"
}, },
"mylar": { "mylar": {
"series": "Series", "series": "Serier",
"issues": "Issues", "issues": "Problemer",
"wanted": "Wanted" "wanted": "Ønskede"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Albums",
"photos": "Photos", "photos": "Billeder",
"videos": "Videos", "videos": "Videoer",
"people": "People" "people": "Mennesker"
}, },
"diskstation": { "diskstation": {
"days": "Days", "days": "Dage",
"uptime": "Uptime", "uptime": "Oppetid",
"volumeAvailable": "Available" "volumeAvailable": "Tilgængelig"
}, },
"fileflows": { "fileflows": {
"queue": "Queue", "queue": "",
"processing": "Processing", "processing": "Behandler",
"processed": "Processed", "processed": "Behandlet",
"time": "Time" "time": "Tid"
}, },
"grafana": { "grafana": {
"totalalerts": "Total Alerts", "totalalerts": "Totale Advarsler",
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Kilder",
"alertstriggered": "Alerts Triggered" "alertstriggered": "Advarsler Udløst"
}, },
"nextcloud": { "nextcloud": {
"memoryusage": "Memory Usage", "memoryusage": "Hukommelse Forbrug",
"cpuload": "Cpu Load", "cpuload": "Cpu Belastning",
"freespace": "Free Space", "freespace": "Ledig Plads",
"activeusers": "Active Users", "activeusers": "Aktive Brugere",
"numfiles": "Files", "numfiles": "Filer",
"numshares": "Shared Items" "numshares": "Delte Genstande"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "Status",
"size": "Size", "size": "Størrelse",
"lastrun": "Last Run", "lastrun": "Sidst Kørt",
"nextrun": "Next Run", "nextrun": "Næste Kørsel",
"failed": "Failed" "failed": "Mislykket"
}, },
"unmanic": { "unmanic": {
"active_workers": "Active Workers", "active_workers": "Aktive Arbejdere",
"total_workers": "Total Workers", "total_workers": "Totale Arbejdere",
"records_total": "Queue Length" "records_total": "Kø Længde"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "Ny",
"up": "Online", "up": "Online",
"grace": "In Grace Period", "grace": "In Grace Period",
"down": "Offline", "down": "Offline",
"paused": "Paused", "paused": "Pause",
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Sidste Ping",
"never": "No pings yet" "never": "Ingen Pings Endnu"
}, },
"pterodactyl": { "pterodactyl": {
"servers": "Servers", "servers": "Servere",
"nodes": "Nodes" "nodes": "Noder"
}, },
"prometheus": { "prometheus": {
"targets_up": "Targets Up", "targets_up": "Mål Oppe",
"targets_down": "Targets Down", "targets_down": "Mål Nede",
"targets_total": "Total Targets" "targets_total": "Totale Mål"
}, },
"minecraft": { "minecraft": {
"players": "Players", "players": "Afspillere",
"version": "Version", "version": "Version",
"status": "Status", "status": "Status",
"up": "Online", "up": "Online",
"down": "Offline" "down": "Offline"
}, },
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "I Dag",
"gross_percent_1y": "One year", "gross_percent_1y": "Et År",
"gross_percent_max": "All time" "gross_percent_max": "Altid"
}, },
"audiobookshelf": { "audiobookshelf": {
"booksDuration": "Duration", "booksDuration": "Varighed",
"podcasts": "Podcasts", "podcasts": "Podcasts",
"books": "Books", "books": "Bøger",
"podcastsDuration": "Duration" "podcastsDuration": "Varighed"
}, },
"homeassistant": { "homeassistant": {
"people_home": "People Home", "people_home": "Personer Hjemme",
"lights_on": "Lights On", "lights_on": "Lys Tændt",
"switches_on": "Switches On" "switches_on": "Kontakter Tændt"
}, },
"freshrss": { "freshrss": {
"subscriptions": "Subscriptions", "subscriptions": "Abonnementer",
"unread": "Unread" "unread": "Ulæst"
}, },
"channelsdvrserver": { "channelsdvrserver": {
"shows": "Shows", "shows": "Shows",
"recordings": "Recordings", "recordings": "Optagelser",
"scheduled": "Scheduled", "scheduled": "Planlagt",
"passes": "Passes" "passes": "Passes"
}, },
"whatsupdocker": { "whatsupdocker": {
"monitoring": "Monitoring", "monitoring": "Overvåger",
"updates": "Updates" "updates": "Opdateringer"
}, },
"tailscale": { "tailscale": {
"address": "Address", "address": "Adresse",
"expires": "Expires", "expires": "Udløber",
"now": "Now", "now": "Nu",
"years": "{{number}}y", "years": "{{number}}y",
"weeks": "{{number}}w", "weeks": "{{number}}w",
"days": "{{number}}d", "days": "{{number}}d",
"hours": "{{number}}h", "hours": "{{number}}h",
"minutes": "{{number}}m", "minutes": "{{number}}m",
"seconds": "{{number}}s", "seconds": "{{number}}s",
"never": "Never", "never": "Aldrig",
"last_seen": "Last Seen", "last_seen": "Sidst Set",
"ago": "{{value}} Ago" "ago": "{{value}} Siden"
}, },
"qnap": { "qnap": {
"cpuUsage": "CPU Usage", "cpuUsage": "CPU Forbrug",
"memUsage": "MEM Usage", "memUsage": "MEM Forbrug",
"systemTempC": "System Temp", "systemTempC": "System Temp",
"poolUsage": "Pool Usage", "poolUsage": "Pool Forbrug",
"volumeUsage": "Volume Usage", "volumeUsage": "Volume Forbrug",
"invalid": "Invalid" "invalid": "Ugyldig"
}, },
"pfsense": { "pfsense": {
"load": "Load Avg", "load": "Belastning Gns",
"memory": "Mem Usage", "memory": "Hukommelse Forbrug",
"wanStatus": "WAN Status", "wanStatus": "WAN Status",
"up": "Up", "up": "Op",
"down": "Down", "down": "Ned",
"temp": "Temp", "temp": "Temp",
"disk": "Disk Usage", "disk": "Disk Forbrug",
"wanIP": "WAN IP" "wanIP": "WAN IP"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
"requests": "Current requests", "requests": "Aktuelle anmodninger",
"requests_failed": "Failed requests" "requests_failed": "Mislykkede anmodninger"
}, },
"evcc": { "evcc": {
"pv_power": "Production", "pv_power": "Produktion",
"battery_soc": "Battery", "battery_soc": "Batteri",
"grid_power": "Grid", "grid_power": "Gitter",
"home_power": "Consumption", "home_power": "Forbrug",
"charge_power": "Charger", "charge_power": "Oplader",
"watt_hour": "Wh" "watt_hour": "Wh"
}, },
"pialert": { "pialert": {
"total": "Total", "total": "Total",
"connected": "Connected", "connected": "Forbundet",
"new_devices": "New Devices", "new_devices": "Nye Enheder",
"down_alerts": "Down Alerts" "down_alerts": "Nedadvarsler"
}, },
"jdownloader": { "jdownloader": {
"downloadSpeed": "Download Speed", "downloadSpeed": "Hastighed",
"downloadCount": "Queue Count", "downloadCount": "",
"downloadBytesRemaining": "Remaining", "downloadBytesRemaining": "Tilbage",
"downloadTotalBytes": "Size" "downloadTotalBytes": "Størrelse"
}, },
"kavita": { "kavita": {
"seriesCount": "Series", "seriesCount": "Serier",
"totalFiles": "Files" "totalFiles": "Filer"
}, },
"azurePipelines": { "gamedig": {
"result": "Result", "name": "Navn",
"map": "Kort",
"currentPlayers": "Nuværende Spillere",
"players": "Spillere",
"maxPlayers": "Maks spillere",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Resultat",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Succeeded", "succeeded": "Lykkedes",
"notStarted": "Not Started", "notStarted": "Ikke Startet",
"failed": "Failed", "failed": "Mislykket",
"canceled": "Canceled", "canceled": "Annulleret",
"inProgress": "In Progress" "inProgress": "I Gang",
"totalPrs": "Total PRs",
"myPrs": "Mine PRs",
"approved": "Godkendt"
},
"urbackup": {
"ok": "Ok",
"errored": "Fejl",
"noRecent": "Uddateret",
"totalUsed": "Brugt Lager"
},
"openmediavault": {
"downloading": "Downloader",
"total": "Total",
"running": "Kører",
"stopped": "Stoppet",
"passed": "Gennemført",
"failed": "Mislykket"
},
"mealie": {
"recipes": "Opskrifter",
"users": "Brugere",
"categories": "Kategorier",
"tags": "Tags"
},
"atsumeru": {
"series": "Serier",
"archives": "Arkiver",
"chapters": "Kapitler",
"categories": "Kategorier"
},
"calibreweb": {
"books": "Bøger",
"authors": "Forfattere",
"categories": "Kategorier",
"series": "Serier"
},
"uptimerobot": {
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -5,7 +5,7 @@
"status": "Status", "status": "Status",
"url": "URL", "url": "URL",
"information": "Informationen", "information": "Informationen",
"raw_error": "Roher Fehler", "raw_error": "Raw Fehler",
"response_data": "Empfangene Daten" "response_data": "Empfangene Daten"
}, },
"search": { "search": {
@ -14,7 +14,7 @@
"resources": { "resources": {
"total": "Gesamt", "total": "Gesamt",
"free": "Frei", "free": "Frei",
"used": "In Verwendung", "used": "In Benutzung",
"load": "Last", "load": "Last",
"cpu": "Prozessor", "cpu": "Prozessor",
"mem": "Speicher", "mem": "Speicher",
@ -34,7 +34,7 @@
"offline": "Offline", "offline": "Offline",
"error": "Fehler", "error": "Fehler",
"unknown": "Unbekannt", "unknown": "Unbekannt",
"running": "Laufend", "running": "Wird ausgeführt",
"starting": "Startet", "starting": "Startet",
"unhealthy": "Unhealthy", "unhealthy": "Unhealthy",
"not_found": "Nicht gefunden", "not_found": "Nicht gefunden",
@ -43,8 +43,8 @@
"healthy": "Healthy" "healthy": "Healthy"
}, },
"emby": { "emby": {
"playing": "Aktuelle Wiedergaben", "playing": "Wiedergabe",
"transcoding": "Transkodieren", "transcoding": "Transcodiert",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Keine aktiven Streams", "no_active": "Keine aktiven Streams",
"movies": "Filme", "movies": "Filme",
@ -53,11 +53,11 @@
"songs": "Songs" "songs": "Songs"
}, },
"tautulli": { "tautulli": {
"playing": "Spielen", "playing": "Wiedergabe",
"transcoding": "Transcodierung", "transcoding": "Transcodierung",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Keine aktiven Streams", "no_active": "Keine aktiven Streams",
"plex_connection_error": "Check Plex Connection" "plex_connection_error": "Prüfe Plex Verbindung"
}, },
"rutorrent": { "rutorrent": {
"active": "Aktiv", "active": "Aktiv",
@ -67,17 +67,17 @@
"sonarr": { "sonarr": {
"wanted": "Gesucht", "wanted": "Gesucht",
"queued": "In Warteschlange", "queued": "In Warteschlange",
"series": "Serien", "series": "Serie",
"queue": "Queue", "queue": "Warteschlange",
"unknown": "Unknown" "unknown": "Unbekannt"
}, },
"radarr": { "radarr": {
"wanted": "Gesucht", "wanted": "Gesucht",
"queued": "In Warteschlange", "queued": "In Warteschlange",
"movies": "Filme", "movies": "Filme",
"missing": "Fehlt", "missing": "Fehlt",
"queue": "Queue", "queue": "Warteschlange",
"unknown": "Unknown" "unknown": "Unbekannt"
}, },
"readarr": { "readarr": {
"wanted": "Gesucht", "wanted": "Gesucht",
@ -106,7 +106,7 @@
"ping": "Ping" "ping": "Ping"
}, },
"portainer": { "portainer": {
"running": "Betrieb", "running": "In Betrieb",
"stopped": "Gestoppt", "stopped": "Gestoppt",
"total": "Gesamt" "total": "Gesamt"
}, },
@ -159,10 +159,10 @@
"numberOfGrabs": "Abrufungen", "numberOfGrabs": "Abrufungen",
"numberOfQueries": "Anfragen", "numberOfQueries": "Anfragen",
"numberOfFailGrabs": "Fehlgeschlagene Abrufungen", "numberOfFailGrabs": "Fehlgeschlagene Abrufungen",
"numberOfFailQueries": "Fehlgeschlagene Anfragen" "numberOfFailQueries": "Fehlgeschlagene Abfragen"
}, },
"transmission": { "transmission": {
"download": "Herunterladen", "download": "Download",
"upload": "Hochladen", "upload": "Hochladen",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
@ -178,7 +178,7 @@
"lidarr": { "lidarr": {
"wanted": "Gesucht", "wanted": "Gesucht",
"queued": "In Warteschlange", "queued": "In Warteschlange",
"artists": "Artists" "artists": "Künstler"
}, },
"adguard": { "adguard": {
"queries": "Anfragen", "queries": "Anfragen",
@ -193,7 +193,7 @@
"seed": "Seed" "seed": "Seed"
}, },
"mastodon": { "mastodon": {
"user_count": "Nutzer", "user_count": "Benutzer",
"status_count": "Beiträge", "status_count": "Beiträge",
"domain_count": "Domänen" "domain_count": "Domänen"
}, },
@ -209,14 +209,14 @@
"failedLoginsLast24H": "fehlerhafte Anmeldungen (24h)" "failedLoginsLast24H": "fehlerhafte Anmeldungen (24h)"
}, },
"proxmox": { "proxmox": {
"mem": "RAM", "mem": "Speicher",
"cpu": "CPU", "cpu": "CPU",
"lxc": "LXC", "lxc": "LXC",
"vms": "VMs" "vms": "VMs"
}, },
"unifi": { "unifi": {
"users": "Benutzer", "users": "Benutzer",
"uptime": "System-Betriebszeit", "uptime": "System-Laufzeit",
"days": "Tage", "days": "Tage",
"wan": "WAN", "wan": "WAN",
"lan_users": "LAN Benutzer", "lan_users": "LAN Benutzer",
@ -229,7 +229,7 @@
"devices": "Geräte", "devices": "Geräte",
"lan_devices": "LAN-Geräte", "lan_devices": "LAN-Geräte",
"wlan_devices": "WLAN-Geräte", "wlan_devices": "WLAN-Geräte",
"empty_data": "Subsystem-Status unbekannt" "empty_data": "Subsystem Status unbekannt"
}, },
"plex": { "plex": {
"streams": "Aktive Streams", "streams": "Aktive Streams",
@ -248,43 +248,50 @@
"warn": "Warnung", "warn": "Warnung",
"total": "Gesamt", "total": "Gesamt",
"free": "Frei", "free": "Frei",
"used": "Verwendet" "used": "Verwendet",
"write": "Schreiben",
"gpu": "GPU",
"mem": "Speicher",
"swap": "Swap",
"crit": "Krit",
"read": "Lesen",
"_temp": "Temperatur"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Gesamt beobachtet", "totalObserved": "Gesamt beobachtet",
"diffsDetected": "Erkannte Differenzen" "diffsDetected": "Erkannte Differenzen"
}, },
"wmo": { "wmo": {
"0-day": "Sonnig", "0-day": "sonnig",
"0-night": "Klar", "0-night": "klar",
"1-day": "Überwiegend sonnig", "1-day": "überwiegend sonnig",
"1-night": "Überwiegend klar", "1-night": "überwiegend klar",
"2-day": "Teilweise bewölkt", "2-day": "teilweise bewölkt",
"2-night": "Teilweise bewölkt", "2-night": "teilweise bewölkt",
"3-day": "bewölkt", "3-day": "bewölkt",
"57-day": "Gefrierender Nieselregen", "57-day": "gefrierender Nieselregen",
"61-day": "Leichter Regen", "61-day": "leichter Regen",
"65-night": "Starker Regen", "65-night": "starker Regen",
"66-day": "Gefrierender Regen", "66-day": "Gefrierender Regen",
"66-night": "Gefrierender Regen", "66-night": "Gefrierender Regen",
"3-night": "Bewölkt", "3-night": "bewölkt",
"45-day": "Neblig", "45-day": "neblig",
"45-night": "Neblig", "45-night": "neblig",
"48-day": "Neblig", "48-day": "neblig",
"48-night": "Neblig", "48-night": "neblig",
"51-day": "Leichter Nieselregen", "51-day": "leichter Nieselregen",
"51-night": "Leichter Nieselregen", "51-night": "leichter Nieselregen",
"55-day": "Starker Nieselregen", "55-day": "starker Nieselregen",
"53-day": "Nieselregen", "53-day": "Nieselregen",
"53-night": "Nieselregen", "53-night": "Nieselregen",
"55-night": "Starker Nieselregen", "55-night": "starker Nieselregen",
"56-day": "Leichter gefrierender Nieselregen", "56-day": "leichter gefrierender Nieselregen",
"56-night": "Leichter eisiger Nieselregen", "56-night": "leichter eisiger Nieselregen",
"57-night": "Gefrierender Nieselregen", "57-night": "gefrierender Nieselregen",
"61-night": "Leichter Regen", "61-night": "leichter Regen",
"63-day": "Regen", "63-day": "Regen",
"63-night": "Regen", "63-night": "Regen",
"65-day": "Starker Regen", "65-day": "starker Regen",
"67-day": "Gefrierender Regen", "67-day": "Gefrierender Regen",
"67-night": "Gefrierender Regen", "67-night": "Gefrierender Regen",
"71-day": "Leichter Schneefall", "71-day": "Leichter Schneefall",
@ -355,7 +362,7 @@
"time": "{{value, number(style: unit; unitDisplay: long;)}}" "time": "{{value, number(style: unit; unitDisplay: long;)}}"
}, },
"navidrome": { "navidrome": {
"nothing_streaming": "Keine Aktiven Übertragungen", "nothing_streaming": "Keine aktiven Wiedergaben",
"please_wait": "Bitte warten" "please_wait": "Bitte warten"
}, },
"pyload": { "pyload": {
@ -409,7 +416,7 @@
"read": "Lesen" "read": "Lesen"
}, },
"nextdns": { "nextdns": {
"wait": "Bitte Warten", "wait": "Bitte warten",
"no_devices": "Keine Daten empfangen" "no_devices": "Keine Daten empfangen"
}, },
"common": { "common": {
@ -419,9 +426,9 @@
"omada": { "omada": {
"connectedAp": "Verbundene APs", "connectedAp": "Verbundene APs",
"activeUser": "Aktive Geräte", "activeUser": "Aktive Geräte",
"alerts": "Meldungen", "alerts": "Alarme",
"connectedGateway": "Verbundene Gateways", "connectedGateway": "Verbundene Gateways",
"connectedSwitches": "Verbundene Switches" "connectedSwitches": "Verbundene Switche"
}, },
"downloadstation": { "downloadstation": {
"download": "Download", "download": "Download",
@ -432,7 +439,7 @@
"mikrotik": { "mikrotik": {
"cpuLoad": "CPU Auslastung", "cpuLoad": "CPU Auslastung",
"memoryUsed": "RAM Verbrauch", "memoryUsed": "RAM Verbrauch",
"uptime": "Laufzeit", "uptime": "Betriebszeit",
"numberOfLeases": "Leases" "numberOfLeases": "Leases"
}, },
"xteve": { "xteve": {
@ -482,7 +489,7 @@
"uptimekuma": { "uptimekuma": {
"up": "Seiten verfügbar", "up": "Seiten verfügbar",
"down": "Seiten nicht verfügbar", "down": "Seiten nicht verfügbar",
"uptime": "Laufzeit", "uptime": "Betriebszeit",
"incident": "Vorfall", "incident": "Vorfall",
"m": "m" "m": "m"
}, },
@ -504,7 +511,7 @@
}, },
"diskstation": { "diskstation": {
"days": "Tage", "days": "Tage",
"uptime": "Laufzeit", "uptime": "Betriebszeit",
"volumeAvailable": "Verfügbar" "volumeAvailable": "Verfügbar"
}, },
"fileflows": { "fileflows": {
@ -551,7 +558,7 @@
}, },
"pterodactyl": { "pterodactyl": {
"servers": "Server", "servers": "Server",
"nodes": "Nodes" "nodes": "Knotenpunkte"
}, },
"prometheus": { "prometheus": {
"targets_up": "Ziele Up", "targets_up": "Ziele Up",
@ -614,7 +621,7 @@
"memUsage": "MEM Nutzung", "memUsage": "MEM Nutzung",
"systemTempC": "System Temp", "systemTempC": "System Temp",
"poolUsage": "Pool Nutzung", "poolUsage": "Pool Nutzung",
"volumeUsage": "Volume Usage", "volumeUsage": "Speicher Nutzung",
"invalid": "Ungültig" "invalid": "Ungültig"
}, },
"pfsense": { "pfsense": {
@ -636,8 +643,8 @@
"watt_hour": "Wh", "watt_hour": "Wh",
"pv_power": "Produktion", "pv_power": "Produktion",
"battery_soc": "Batterie", "battery_soc": "Batterie",
"grid_power": "Grid", "grid_power": "Netzstrom",
"home_power": "Verbrauch", "home_power": "verbauch",
"charge_power": "Ladegerät" "charge_power": "Ladegerät"
}, },
"pialert": { "pialert": {
@ -647,23 +654,84 @@
"down_alerts": "Down Alarme" "down_alerts": "Down Alarme"
}, },
"jdownloader": { "jdownloader": {
"downloadCount": "Queue Count", "downloadCount": "Warteschlange",
"downloadSpeed": "Download Speed", "downloadSpeed": "Geschwindigkeit",
"downloadBytesRemaining": "Remaining", "downloadBytesRemaining": "Verbleibend",
"downloadTotalBytes": "Size" "downloadTotalBytes": "Größe"
}, },
"kavita": { "kavita": {
"seriesCount": "Series", "seriesCount": "Serie",
"totalFiles": "Files" "totalFiles": "Dateien"
}, },
"azurePipelines": { "gamedig": {
"result": "Result", "name": "Name",
"map": "Karte",
"currentPlayers": "Aktuelle Spieler",
"players": "Spieler",
"bots": "Bots",
"ping": "Ping",
"maxPlayers": "Max. Spieler",
"status": "Status", "status": "Status",
"buildId": "Build ID", "online": "Online",
"succeeded": "Succeeded", "offline": "Offline"
"notStarted": "Not Started", },
"failed": "Failed", "azuredevops": {
"canceled": "Canceled", "result": "Ergebnis",
"inProgress": "In Progress" "status": "Status",
"buildId": "Build-ID",
"succeeded": "Erfolgreich",
"notStarted": "Nicht gestartet",
"failed": "Fehlgeschlagen",
"canceled": "Abgebrochen",
"totalPrs": "Gesamt PRs",
"myPrs": "Meine PRs",
"approved": "Genehmigt",
"inProgress": "In Bearbeitung"
},
"urbackup": {
"ok": "Ok",
"errored": "Fehler",
"noRecent": "Nicht mehr aktuell",
"totalUsed": "Belegter Speicherplatz"
},
"openmediavault": {
"downloading": "Wird heruntergeladen",
"total": "Gesamt",
"running": "Wird ausgeführt",
"stopped": "Gestoppt",
"passed": "Bestanden",
"failed": "Fehlgeschlagen"
},
"mealie": {
"recipes": "Rezepte",
"users": "Benutzer",
"categories": "Kategorien",
"tags": "Schlagwörter"
},
"atsumeru": {
"series": "Serie",
"archives": "Archive",
"chapters": "Kapitel",
"categories": "Kategorien"
},
"calibreweb": {
"books": "Bücher",
"authors": "Autoren",
"categories": "Kategorien",
"series": "Serie"
},
"uptimerobot": {
"status": "Status",
"uptime": "Betriebszeit",
"lastDown": "Letzte Ausfallzeit",
"downDuration": "Ausfallzeit Dauer",
"sitesUp": "Seiten verfügbar",
"sitesDown": "Seiten nicht verfügbar",
"paused": "Pausiert",
"notyetchecked": "Noch nicht geprüft",
"up": "Up",
"seemsdown": "Scheint nicht verfügbar",
"down": "nicht verfügbar",
"unknown": "Unbekannt"
} }
} }

View File

@ -150,9 +150,9 @@
}, },
"flood": { "flood": {
"download": "Λήξη", "download": "Λήξη",
"upload": "Φόρτωση", "upload": "Μεταφόρτωση",
"leech": "Αφαίμαξη", "leech": "Leech",
"seed": "Σπείρε" "seed": "Seed"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Συνολικά παρατηρηθείσα", "totalObserved": "Συνολικά παρατηρηθείσα",
@ -163,7 +163,7 @@
"transcoding": "Μετακωδικοποίηση", "transcoding": "Μετακωδικοποίηση",
"bitrate": "Ρυθμός bit", "bitrate": "Ρυθμός bit",
"no_active": "Δεν υπάρχουν ενεργές ροές", "no_active": "Δεν υπάρχουν ενεργές ροές",
"plex_connection_error": "Check Plex Connection" "plex_connection_error": "Έλεγχος Σύνδεσης με Plex"
}, },
"nzbget": { "nzbget": {
"rate": "Ρυθμός", "rate": "Ρυθμός",
@ -208,12 +208,12 @@
"series": "Σειρές", "series": "Σειρές",
"wanted": "Επιθυμούντε", "wanted": "Επιθυμούντε",
"queued": "Σε σειρά", "queued": "Σε σειρά",
"queue": "Queue", "queue": "Ούρα",
"unknown": "Unknown" "unknown": "Άγνωστο"
}, },
"downloadstation": { "downloadstation": {
"download": "Μεταφόρτωση", "download": "Λήψη",
"upload": "Φόρτωση", "upload": "Μεταφόρτωση",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
@ -222,13 +222,13 @@
"missing": "Απουσιάζει", "missing": "Απουσιάζει",
"queued": "Σε σειρά", "queued": "Σε σειρά",
"movies": "Ταινίες", "movies": "Ταινίες",
"queue": "Queue", "queue": "Ουρά",
"unknown": "Unknown" "unknown": "Άγνωστο"
}, },
"lidarr": { "lidarr": {
"wanted": "Θέλετε", "wanted": "Θέλετε",
"queued": "Στη σειρά", "queued": "Στη σειρά",
"artists": "Artists" "artists": "Καλλιτέχνες"
}, },
"readarr": { "readarr": {
"wanted": "Θέλετε", "wanted": "Θέλετε",
@ -237,17 +237,17 @@
}, },
"bazarr": { "bazarr": {
"missingEpisodes": "Επεισόδια που λείπουν", "missingEpisodes": "Επεισόδια που λείπουν",
"missingMovies": "Missing Movies" "missingMovies": "Ταινίες που Λείπουν"
}, },
"ombi": { "ombi": {
"pending": "Pending", "pending": "Σε εκκρεμότητα",
"approved": "Approved", "approved": "Εγκρίθηκε",
"available": "Available" "available": "Διαθέσιμο"
}, },
"jellyseerr": { "jellyseerr": {
"pending": "Pending", "pending": "Σε εκκρεμότητα",
"approved": "Approved", "approved": "Εγκρίθηκε",
"available": "Available" "available": "Διαθέσιμο"
}, },
"overseerr": { "overseerr": {
"pending": "Pending", "pending": "Pending",
@ -257,25 +257,25 @@
}, },
"pihole": { "pihole": {
"queries": "Queries", "queries": "Queries",
"blocked": "Blocked", "blocked": "Αποκλεισμένο",
"gravity": "Gravity", "gravity": "Gravity",
"blocked_percent": "Blocked %" "blocked_percent": "Αποκλεισμένο %"
}, },
"adguard": { "adguard": {
"queries": "Queries", "queries": "Αναζητήσεις",
"blocked": "Blocked", "blocked": "Αποκλεισμένο",
"filtered": "Filtered", "filtered": "Φιλτραρισμένα",
"latency": "Latency" "latency": "Καθυστέρηση"
}, },
"speedtest": { "speedtest": {
"upload": "Upload", "upload": "Ανέβασμα",
"download": "Download", "download": "Λήψη",
"ping": "Ping" "ping": "Ping"
}, },
"portainer": { "portainer": {
"running": "Running", "running": "Running",
"stopped": "Stopped", "stopped": "Σταματημένο",
"total": "Total" "total": "Σύνολο"
}, },
"tdarr": { "tdarr": {
"queue": "Queue", "queue": "Queue",
@ -369,7 +369,14 @@
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used", "used": "Used",
"load": "Load" "load": "Load",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@ -425,7 +432,7 @@
}, },
"pyload": { "pyload": {
"speed": "Speed", "speed": "Speed",
"active": "Active", "active": "Ενεργό",
"queue": "Queue", "queue": "Queue",
"total": "Total" "total": "Total"
}, },
@ -557,7 +564,7 @@
"records_total": "Queue Length" "records_total": "Queue Length"
}, },
"pterodactyl": { "pterodactyl": {
"servers": "Servers", "servers": "Διακομιστές",
"nodes": "Nodes" "nodes": "Nodes"
}, },
"prometheus": { "prometheus": {
@ -583,28 +590,28 @@
}, },
"freshrss": { "freshrss": {
"subscriptions": "Συνδρομές", "subscriptions": "Συνδρομές",
"unread": "Αδιάβαστο" "unread": "Μη Διαβασμένο"
}, },
"channelsdvrserver": { "channelsdvrserver": {
"shows": "Εκπομπές", "shows": "Εκπομπές",
"recordings": "Εγγραφές", "recordings": "Εγγραφές",
"scheduled": "Προγραμματισμένα", "scheduled": "Προγραμματισμένα",
"passes": "Passes" "passes": "Περάσματα"
}, },
"whatsupdocker": { "whatsupdocker": {
"monitoring": "Monitoring", "monitoring": "Monitoring",
"updates": "Updates" "updates": "Updates"
}, },
"tailscale": { "tailscale": {
"address": "Address", "address": "Διεύθυνση",
"never": "Never", "never": "Ποτέ",
"years": "{{number}}y", "years": "{{number}}y",
"weeks": "{{number}}w", "weeks": "{{number}}w",
"days": "{{number}}d", "days": "{{number}}d",
"hours": "{{number}}h", "hours": "{{number}}h",
"expires": "Expires", "expires": "Λήγει",
"last_seen": "Last Seen", "last_seen": "Last Seen",
"now": "Now", "now": "Τώρα",
"minutes": "{{number}}m", "minutes": "{{number}}m",
"seconds": "{{number}}s", "seconds": "{{number}}s",
"ago": "{{value}} Ago" "ago": "{{value}} Ago"
@ -615,7 +622,7 @@
"systemTempC": "Θερμοκρασία συστήματος", "systemTempC": "Θερμοκρασία συστήματος",
"poolUsage": "Χρήση πισίνας", "poolUsage": "Χρήση πισίνας",
"volumeUsage": "Volume Usage", "volumeUsage": "Volume Usage",
"invalid": "Invalid" "invalid": "Μη έγκυρο"
}, },
"pfsense": { "pfsense": {
"load": "Load Avg", "load": "Load Avg",
@ -656,7 +663,21 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"myPrs": "My PRs",
"approved": "Approved",
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +685,53 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"up": "Up",
"unknown": "Unknown",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"seemsdown": "Seems Down",
"down": "Down"
} }
} }

View File

@ -365,13 +365,20 @@
"load": "Load", "load": "Load",
"wait": "Please wait", "wait": "Please wait",
"temp": "TEMP", "temp": "TEMP",
"_temp": "Temp",
"warn": "Warn", "warn": "Warn",
"uptime": "UP", "uptime": "UP",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used", "used": "Used",
"days": "d", "days": "d",
"hours": "h" "hours": "h",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@ -573,6 +580,12 @@
"incident": "Incident", "incident": "Incident",
"m": "m" "m": "m"
}, },
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"komga": { "komga": {
"libraries": "Libraries", "libraries": "Libraries",
"series": "Series", "series": "Series",
@ -655,6 +668,12 @@
"monitoring": "Monitoring", "monitoring": "Monitoring",
"updates": "Updates" "updates": "Updates"
}, },
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"jdownloader": { "jdownloader": {
"downloadCount": "Queue", "downloadCount": "Queue",
"downloadBytesRemaining": "Remaining", "downloadBytesRemaining": "Remaining",
@ -677,7 +696,7 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -685,6 +704,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"gamedig": {
"status": "Status",
"online": "Online",
"offline": "Offline",
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping"
},
"urbackup": {
"ok" : "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -266,7 +266,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"categories": "Categories",
"authors": "Authors",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"notyetchecked": "Not Yet Checked",
"downDuration": "Downtime Duration",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -48,7 +48,7 @@
"bitrate": "Tasa de bits", "bitrate": "Tasa de bits",
"no_active": "Sin transmisiones activas", "no_active": "Sin transmisiones activas",
"movies": "Películas", "movies": "Películas",
"series": "Serie", "series": "Series",
"episodes": "Episodios", "episodes": "Episodios",
"songs": "Canciones" "songs": "Canciones"
}, },
@ -248,7 +248,14 @@
"warn": "Advertir", "warn": "Advertir",
"total": "Total", "total": "Total",
"free": "Libre", "free": "Libre",
"used": "Utilizado" "used": "Utilizado",
"crit": "Crít.",
"read": "Leer",
"write": "Escribir",
"gpu": "GPU",
"mem": "Memoria",
"swap": "Intercambiar",
"_temp": "Temperatura"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observados", "totalObserved": "Total Observados",
@ -455,7 +462,7 @@
"medusa": { "medusa": {
"wanted": "Querido", "wanted": "Querido",
"queued": "A la espera", "queued": "A la espera",
"series": "Serie" "series": "Series"
}, },
"octoprint": { "octoprint": {
"temp_bed": "Temperatura de la plataforma", "temp_bed": "Temperatura de la plataforma",
@ -653,17 +660,78 @@
"downloadTotalBytes": "Tamaño" "downloadTotalBytes": "Tamaño"
}, },
"kavita": { "kavita": {
"seriesCount": "Serie", "seriesCount": "Series",
"totalFiles": "Archivos" "totalFiles": "Archivos"
}, },
"azurePipelines": { "gamedig": {
"name": "Nombre",
"map": "Mapa",
"currentPlayers": "Jugadores actuales",
"players": "Jugadores",
"maxPlayers": "Jugadores máximos",
"bots": "Bots",
"ping": "Ping",
"status": "Estado",
"online": "En línea",
"offline": "Sin conexión"
},
"azuredevops": {
"result": "Resultado", "result": "Resultado",
"status": "Estado", "status": "Estado",
"buildId": "ID de la compilación", "buildId": "Identificador de la construcción",
"succeeded": "Con éxito", "succeeded": "Exitoso",
"notStarted": "No iniciado", "notStarted": "Sin empezar",
"failed": "Fallido", "failed": "Fallido",
"canceled": "Cancelado", "canceled": "Cancelado",
"inProgress": "En proceso" "inProgress": "En curso",
"totalPrs": "RP totales",
"myPrs": "Mis logros",
"approved": "Aprobados"
},
"urbackup": {
"ok": "De acuerdo",
"errored": "Errores",
"noRecent": "Caducado",
"totalUsed": "Almacenamiento usado"
},
"openmediavault": {
"running": "Ejecutando",
"downloading": "Descargando",
"total": "Total",
"stopped": "Detenido",
"passed": "Aprobado",
"failed": "Fallido"
},
"mealie": {
"recipes": "Recetas",
"users": "Usuarios",
"categories": "Categorías",
"tags": "Etiquetas"
},
"atsumeru": {
"series": "Series",
"archives": "Archivos",
"chapters": "Capítulos",
"categories": "Categorías"
},
"calibreweb": {
"books": "Libros",
"authors": "Autores",
"categories": "Categorías",
"series": "Series"
},
"uptimerobot": {
"status": "Estado",
"uptime": "Tiempo de actividad",
"lastDown": "Último periodo de inactividad",
"downDuration": "Tiempo de inactividad",
"sitesUp": "Páginas web con conexión",
"sitesDown": "Páginas web caídas",
"paused": "Pausado",
"notyetchecked": "Aún no verificado",
"up": "Arriba",
"seemsdown": "Parece caída",
"down": "Abajo",
"unknown": "Desconocido"
} }
} }

View File

@ -431,7 +431,14 @@
"free": "Free", "free": "Free",
"used": "Used", "used": "Used",
"days": "d", "days": "d",
"hours": "h" "hours": "h",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@ -656,14 +663,75 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"currentPlayers": "Current players",
"name": "Name",
"map": "Map",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"notStarted": "Not Started",
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Succeeded", "succeeded": "Succeeded",
"notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"uptime": "Uptime",
"status": "Status",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories",
"series": "Series"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Alerte", "warn": "Alerte",
"total": "Total", "total": "Total",
"free": "Libre", "free": "Libre",
"used": "Utilisé" "used": "Utilisé",
"crit": "Crit.",
"read": "Lect.",
"write": "Écrit.",
"gpu": "GPU",
"mem": "Mém.",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observé", "totalObserved": "Total Observé",
@ -656,14 +663,75 @@
"seriesCount": "Séries", "seriesCount": "Séries",
"totalFiles": "Fichiers" "totalFiles": "Fichiers"
}, },
"azurePipelines": { "gamedig": {
"name": "Nom",
"map": "Carte",
"currentPlayers": "Joueurs actuels",
"players": "Joueurs",
"maxPlayers": "Joueurs max",
"bots": "Bots",
"ping": "Ping",
"status": "Statut",
"online": "En ligne",
"offline": "Hors ligne"
},
"azuredevops": {
"result": "Résultat", "result": "Résultat",
"status": "Statut", "status": "Statut",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Réussi", "succeeded": "Réussi",
"notStarted": "Non démarré", "notStarted": "Arrêté",
"failed": "Échoué", "failed": "Échoué",
"canceled": "Annulé", "canceled": "Annulé",
"inProgress": "En cours" "inProgress": "En cours",
"totalPrs": "PRs Total",
"myPrs": "Mes PRs",
"approved": "Approuvé"
},
"urbackup": {
"ok": "Ok",
"errored": "Erreur",
"noRecent": "Obsolète",
"totalUsed": "Esp. Utilisé"
},
"openmediavault": {
"downloading": "Téléchargement",
"total": "Total",
"running": "Démarré",
"stopped": "Arrêté",
"passed": "Réussi",
"failed": "Échoué"
},
"mealie": {
"recipes": "Recettes",
"users": "Utilisateurs",
"categories": "Catégories",
"tags": "Étiquettes"
},
"atsumeru": {
"series": "Séries",
"archives": "Archives",
"chapters": "Chapitres",
"categories": "Catégories"
},
"calibreweb": {
"series": "Séries",
"books": "Ebooks",
"authors": "Auteurs",
"categories": "Catégories"
},
"uptimerobot": {
"status": "Statut",
"uptime": "Disponibilité",
"lastDown": "Dernière interruption",
"downDuration": "Durée d'interruption",
"sitesUp": "Sites en ligne",
"sitesDown": "Sites hors ligne",
"paused": "En pause",
"notyetchecked": "Non vérifié",
"up": "En ligne",
"seemsdown": "Semble hors ligne",
"down": "Hors ligne",
"unknown": "Inconnu"
} }
} }

View File

@ -248,7 +248,14 @@
"load": "Load", "load": "Load",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"myPrs": "My PRs",
"totalPrs": "Total PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -256,7 +256,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@ -656,7 +663,20 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"myPrs": "My PRs",
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +684,54 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"chapters": "Chapters",
"categories": "Categories",
"series": "Series",
"archives": "Archives"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -248,7 +248,14 @@
"load": "Opterećenje", "load": "Opterećenje",
"warn": "Upozori", "warn": "Upozori",
"total": "Ukupno", "total": "Ukupno",
"free": "Slobodno" "free": "Slobodno",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Ukupno promatrano", "totalObserved": "Ukupno promatrano",
@ -656,7 +663,19 @@
"seriesCount": "Serije", "seriesCount": "Serije",
"totalFiles": "Datoteke" "totalFiles": "Datoteke"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"noRecent": "Out of Date",
"totalUsed": "Used Storage",
"ok": "Ok",
"errored": "Errors"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"categories": "Categories",
"series": "Series",
"authors": "Authors"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Figyelmeztet", "warn": "Figyelmeztet",
"total": "Összes", "total": "Összes",
"free": "Szabad", "free": "Szabad",
"used": "Felhasznált" "used": "Felhasznált",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Összes Megfigyelt", "totalObserved": "Összes Megfigyelt",
@ -656,14 +663,75 @@
"seriesCount": "Sorozatok", "seriesCount": "Sorozatok",
"totalFiles": "Fájlok" "totalFiles": "Fájlok"
}, },
"azurePipelines": { "gamedig": {
"result": "Eredmény", "ping": "Ping",
"status": "Állapot", "name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"status": "Status",
"myPrs": "My PRs",
"approved": "Approved",
"result": "Result",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Sikeres", "succeeded": "Succeeded",
"notStarted": "Nincs elindítva", "notStarted": "Not Started",
"failed": "Sikertelen", "failed": "Failed",
"canceled": "Megszakítva", "canceled": "Canceled",
"inProgress": "Folyamatban" "inProgress": "In Progress",
"totalPrs": "Total PRs"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"series": "Series",
"categories": "Categories"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -222,7 +222,14 @@
"wait": "Please wait", "wait": "Please wait",
"used": "Used", "used": "Used",
"days": "d", "days": "d",
"hours": "h" "hours": "h",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@ -494,9 +501,9 @@
}, },
"weather": { "weather": {
"wait": "Harap tunggu", "wait": "Harap tunggu",
"current": "Current Location", "current": "Lokasi Saat Ini",
"allow": "Click to allow", "allow": "Klik untuk mengizinkan",
"updating": "Updating" "updating": "Memperbarui"
}, },
"search": { "search": {
"placeholder": "Telusuri…" "placeholder": "Telusuri…"
@ -590,11 +597,11 @@
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "MEM",
"total": "Total", "total": "Total",
"free": "Free", "free": "Luang",
"used": "Used", "used": "Digunakan",
"load": "Load", "load": "Load",
"temp": "TEMP", "temp": "TEMP",
"max": "Max", "max": "Maks",
"uptime": "UP", "uptime": "UP",
"months": "mo", "months": "mo",
"hours": "h", "hours": "h",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -9,11 +9,11 @@
"unknown": "Sconosciuto", "unknown": "Sconosciuto",
"running": "In esecuzione", "running": "In esecuzione",
"starting": "In avvio", "starting": "In avvio",
"unhealthy": "Unhealthy", "unhealthy": "Non sano",
"not_found": "Non trovato", "not_found": "Non trovato",
"exited": "Uscito", "exited": "Uscito",
"partial": "Parziale", "partial": "Parziale",
"healthy": "Healthy" "healthy": "Sano"
}, },
"emby": { "emby": {
"playing": "In riproduzione", "playing": "In riproduzione",
@ -30,7 +30,7 @@
"transcoding": "Transcodifica", "transcoding": "Transcodifica",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "Nessuno Stream Attivo", "no_active": "Nessuno Stream Attivo",
"plex_connection_error": "Check Plex Connection" "plex_connection_error": "Controllo Connessione a Plex"
}, },
"speedtest": { "speedtest": {
"upload": "Upload", "upload": "Upload",
@ -53,7 +53,7 @@
"status": "Stato", "status": "Stato",
"url": "URL", "url": "URL",
"information": "Informazione", "information": "Informazione",
"raw_error": "Raw Error", "raw_error": "Errore non processato",
"response_data": "Dati risposta" "response_data": "Dati risposta"
}, },
"search": { "search": {
@ -116,7 +116,7 @@
"blocked_percent": "Bloccato %" "blocked_percent": "Bloccato %"
}, },
"npm": { "npm": {
"enabled": "Attivi", "enabled": "Abilitato",
"disabled": "Disabilitati", "disabled": "Disabilitati",
"total": "Totali" "total": "Totali"
}, },
@ -156,7 +156,7 @@
}, },
"prowlarr": { "prowlarr": {
"enableIndexers": "Indicizzatori", "enableIndexers": "Indicizzatori",
"numberOfGrabs": "Grabs", "numberOfGrabs": "Grab",
"numberOfQueries": "Interrogazioni", "numberOfQueries": "Interrogazioni",
"numberOfFailGrabs": "Grabs Falliti", "numberOfFailGrabs": "Grabs Falliti",
"numberOfFailQueries": "Queries Fallite" "numberOfFailQueries": "Queries Fallite"
@ -164,12 +164,12 @@
"transmission": { "transmission": {
"download": "Download", "download": "Download",
"upload": "Upload", "upload": "Upload",
"leech": "Leech", "leech": "In scaricamento",
"seed": "Seed" "seed": "Seed"
}, },
"jackett": { "jackett": {
"configured": "Configurato", "configured": "Configurato",
"errored": "Errore" "errored": "In errore"
}, },
"bazarr": { "bazarr": {
"missingEpisodes": "Episodi Mancanti", "missingEpisodes": "Episodi Mancanti",
@ -188,7 +188,7 @@
}, },
"qbittorrent": { "qbittorrent": {
"download": "Download", "download": "Download",
"leech": "Leech", "leech": "In scaricamento",
"upload": "Upload", "upload": "Upload",
"seed": "Seed" "seed": "Seed"
}, },
@ -242,13 +242,20 @@
"wait": "Attendere prego", "wait": "Attendere prego",
"temp": "TEMP", "temp": "TEMP",
"uptime": "UP", "uptime": "UP",
"days": "d", "days": "g",
"hours": "h", "hours": "o",
"load": "Carico", "load": "Carico",
"warn": "Avviso", "warn": "Avviso",
"total": "Totale", "total": "Totale",
"free": "Libero", "free": "Libero",
"used": "Usato" "used": "Usato",
"crit": "Critico",
"read": "Lettura",
"write": "Scrittura",
"gpu": "GPU",
"mem": "Mem.",
"swap": "Swap",
"_temp": "Temp."
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Totale Osservato", "totalObserved": "Totale Osservato",
@ -325,7 +332,7 @@
"updates": "Aggiornamenti", "updates": "Aggiornamenti",
"update_available": "Aggiornamento Disponibile", "update_available": "Aggiornamento Disponibile",
"up_to_date": "Aggiornato", "up_to_date": "Aggiornato",
"child_bridges": "Child Bridges", "child_bridges": "Bridge Figli",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up", "up": "Up",
"pending": "In attesa", "pending": "In attesa",
@ -367,7 +374,7 @@
"gluetun": { "gluetun": {
"public_ip": "IP pubblico", "public_ip": "IP pubblico",
"region": "Località", "region": "Località",
"country": "Stato" "country": "Paese"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Canali", "channels": "Canali",
@ -389,19 +396,19 @@
"deluge": { "deluge": {
"download": "Download", "download": "Download",
"upload": "Upload", "upload": "Upload",
"leech": "Leech", "leech": "In scaricamento",
"seed": "Seed" "seed": "Seed"
}, },
"flood": { "flood": {
"download": "Download", "download": "Download",
"upload": "Upload", "upload": "Upload",
"leech": "Leech", "leech": "In scaricamento",
"seed": "Seed" "seed": "Seed"
}, },
"tdarr": { "tdarr": {
"queue": "In coda", "queue": "In coda",
"processed": "Elaborati", "processed": "Elaborati",
"errored": "Errori", "errored": "In errore",
"saved": "Salvati" "saved": "Salvati"
}, },
"miniflux": { "miniflux": {
@ -426,7 +433,7 @@
"downloadstation": { "downloadstation": {
"download": "Download", "download": "Download",
"upload": "Upload", "upload": "Upload",
"leech": "Leech", "leech": "In scaricamento",
"seed": "Seed" "seed": "Seed"
}, },
"mikrotik": { "mikrotik": {
@ -459,8 +466,8 @@
}, },
"octoprint": { "octoprint": {
"printer_state": "Stato", "printer_state": "Stato",
"temp_tool": "Tool temp", "temp_tool": "Temp. utensile",
"temp_bed": "Bed temp", "temp_bed": "Temp. letto",
"job_completion": "Completamento" "job_completion": "Completamento"
}, },
"cloudflared": { "cloudflared": {
@ -468,7 +475,7 @@
"status": "Stato" "status": "Stato"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
"datastore_usage": "Datastore", "datastore_usage": "Archivio dati",
"failed_tasks_24h": "Attività Non Riuscite 24h", "failed_tasks_24h": "Attività Non Riuscite 24h",
"cpu_usage": "CPU", "cpu_usage": "CPU",
"memory_usage": "Memoria" "memory_usage": "Memoria"
@ -477,12 +484,12 @@
"users": "Utenti", "users": "Utenti",
"photos": "Foto", "photos": "Foto",
"videos": "Video", "videos": "Video",
"storage": "Memoria" "storage": "Archiviazione"
}, },
"uptimekuma": { "uptimekuma": {
"up": "Siti On", "up": "Siti On",
"down": "Siti Down", "down": "Siti Down",
"uptime": "Uptime", "uptime": "Operatività",
"incident": "Incidente", "incident": "Incidente",
"m": "m" "m": "m"
}, },
@ -504,7 +511,7 @@
}, },
"diskstation": { "diskstation": {
"days": "Giorni", "days": "Giorni",
"uptime": "Uptime", "uptime": "Periodo Attività",
"volumeAvailable": "Disponibile" "volumeAvailable": "Disponibile"
}, },
"fileflows": { "fileflows": {
@ -514,7 +521,7 @@
"time": "Tempo" "time": "Tempo"
}, },
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboard",
"datasources": "Origine dei Dati", "datasources": "Origine dei Dati",
"totalalerts": "Avvisi Totali", "totalalerts": "Avvisi Totali",
"alertstriggered": "Avvisi Attivati" "alertstriggered": "Avvisi Attivati"
@ -554,8 +561,8 @@
"nodes": "Nodi" "nodes": "Nodi"
}, },
"prometheus": { "prometheus": {
"targets_up": "Targets Up", "targets_up": "Target Attivi",
"targets_down": "Targets Down", "targets_down": "Target Non Attivi",
"targets_total": "Targets Totali" "targets_total": "Targets Totali"
}, },
"minecraft": { "minecraft": {
@ -656,14 +663,75 @@
"seriesCount": "Serie", "seriesCount": "Serie",
"totalFiles": "File" "totalFiles": "File"
}, },
"azurePipelines": { "gamedig": {
"result": "Result", "name": "Nome",
"status": "Status", "map": "Mappa",
"buildId": "Build ID", "currentPlayers": "Giocatori attuali",
"succeeded": "Succeeded", "players": "Giocatori",
"notStarted": "Not Started", "maxPlayers": "Giocatori max",
"failed": "Failed", "bots": "Bot",
"canceled": "Canceled", "ping": "Ping",
"inProgress": "In Progress" "status": "Stato",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Risultato",
"myPrs": "Miei PR",
"approved": "Approvato",
"status": "Stato",
"buildId": "ID Build",
"succeeded": "Riuscito",
"notStarted": "Non Avviato",
"failed": "Fallito",
"canceled": "Cancellato",
"inProgress": "In corso",
"totalPrs": "PR Totali"
},
"urbackup": {
"ok": "Ok",
"errored": "Errori",
"noRecent": "Obsoleto",
"totalUsed": "Spazio usato"
},
"openmediavault": {
"total": "Totale",
"running": "In funzione",
"downloading": "Download in corso",
"stopped": "Fermati",
"passed": "Riusciti",
"failed": "Falliti"
},
"mealie": {
"recipes": "Ricette",
"users": "Utenti",
"categories": "Categorie",
"tags": "Tag"
},
"atsumeru": {
"series": "Serie",
"archives": "Archivi",
"chapters": "Capitoli",
"categories": "Categorie"
},
"calibreweb": {
"books": "Libri",
"authors": "Autori",
"categories": "Categorie",
"series": "Serie"
},
"uptimerobot": {
"status": "Stato",
"uptime": "Tempo di attività",
"lastDown": "Ultimo periodo di inattività",
"downDuration": "Durata inattività",
"sitesUp": "Siti attivi",
"sitesDown": "Siti non attivi",
"paused": "In pausa",
"notyetchecked": "Non ancora controllati",
"up": "Attivi",
"seemsdown": "Sembrano non attivi",
"down": "Non attivi",
"unknown": "Sconosciuto"
} }
} }

View File

@ -11,7 +11,7 @@
"strelaysrv": { "strelaysrv": {
"numActiveSessions": "セッション", "numActiveSessions": "セッション",
"numConnections": "コネクション", "numConnections": "コネクション",
"dataRelayed": "Relayed", "dataRelayed": "中継",
"transferRate": "レート" "transferRate": "レート"
}, },
"glances": { "glances": {
@ -21,11 +21,18 @@
"uptime": "UP", "uptime": "UP",
"days": "日", "days": "日",
"hours": "時間", "hours": "時間",
"load": "Load", "load": "ロード",
"warn": "Warn", "warn": "警告",
"total": "Total", "total": "トータル",
"free": "Free", "free": "空き",
"used": "Used" "used": "使用中",
"crit": "Crit",
"read": "読み込み",
"write": "書き込み",
"gpu": "GPU",
"mem": "メモリ",
"swap": "スワップ",
"_temp": "Temp"
}, },
"autobrr": { "autobrr": {
"filters": "フィルター", "filters": "フィルター",
@ -125,7 +132,7 @@
"flood": { "flood": {
"download": "ダウンロード", "download": "ダウンロード",
"upload": "アップロード", "upload": "アップロード",
"leech": "Leech", "leech": "リーチ",
"seed": "Seed" "seed": "Seed"
}, },
"changedetectionio": { "changedetectionio": {
@ -137,7 +144,7 @@
"transcoding": "変換中", "transcoding": "変換中",
"bitrate": "ビットレート", "bitrate": "ビットレート",
"no_active": "アクティブストリームなし", "no_active": "アクティブストリームなし",
"plex_connection_error": "Check Plex Connection" "plex_connection_error": "Plex接続の確認"
}, },
"omada": { "omada": {
"connectedAp": "接続されたAP", "connectedAp": "接続されたAP",
@ -170,7 +177,7 @@
"transmission": { "transmission": {
"download": "ダウンロード", "download": "ダウンロード",
"upload": "アップロード", "upload": "アップロード",
"leech": "Leech", "leech": "リーチ",
"seed": "Seed" "seed": "Seed"
}, },
"qbittorrent": { "qbittorrent": {
@ -195,21 +202,21 @@
"wanted": "募集中", "wanted": "募集中",
"queued": "待機中", "queued": "待機中",
"series": "シリーズ", "series": "シリーズ",
"queue": "Queue", "queue": "キュー",
"unknown": "Unknown" "unknown": "不明"
}, },
"radarr": { "radarr": {
"wanted": "募集中", "wanted": "募集中",
"missing": "不明", "missing": "不明",
"queued": "キュー", "queued": "キュー",
"movies": "映画", "movies": "映画",
"queue": "Queue", "queue": "キュー",
"unknown": "Unknown" "unknown": "Unknown"
}, },
"lidarr": { "lidarr": {
"wanted": "募集中", "wanted": "募集中",
"queued": "キュー", "queued": "キュー",
"artists": "Artists" "artists": "アーティスト"
}, },
"readarr": { "readarr": {
"wanted": "募集中", "wanted": "募集中",
@ -218,7 +225,7 @@
}, },
"bazarr": { "bazarr": {
"missingEpisodes": "欠番エピソード", "missingEpisodes": "欠番エピソード",
"missingMovies": "不明・映画" "missingMovies": "行方不明の映画"
}, },
"ombi": { "ombi": {
"pending": "保留中", "pending": "保留中",
@ -286,7 +293,7 @@
"numberOfGrabs": "Grabs", "numberOfGrabs": "Grabs",
"numberOfQueries": "クエリ", "numberOfQueries": "クエリ",
"numberOfFailGrabs": "Fail Grabs", "numberOfFailGrabs": "Fail Grabs",
"numberOfFailQueries": "Fail Queries" "numberOfFailQueries": "失敗クエリー"
}, },
"jackett": { "jackett": {
"configured": "設定済", "configured": "設定済",
@ -298,8 +305,8 @@
"domain_count": "ドメイン" "domain_count": "ドメイン"
}, },
"miniflux": { "miniflux": {
"read": "Read", "read": "既読",
"unread": "Unread" "unread": "未読"
}, },
"authentik": { "authentik": {
"users": "ユーザー", "users": "ユーザー",
@ -455,7 +462,7 @@
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "Wanted",
"queued": "Queued", "queued": "Queued",
"series": "Series" "series": "シリーズ"
}, },
"octoprint": { "octoprint": {
"temp_bed": "ベッド温度", "temp_bed": "ベッド温度",
@ -468,7 +475,7 @@
"status": "状態" "status": "状態"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
"datastore_usage": "Datastore", "datastore_usage": "データストア",
"failed_tasks_24h": "失敗タスク(24h)", "failed_tasks_24h": "失敗タスク(24h)",
"cpu_usage": "CPU", "cpu_usage": "CPU",
"memory_usage": "メモリ" "memory_usage": "メモリ"
@ -493,7 +500,7 @@
}, },
"mylar": { "mylar": {
"series": "シリーズ", "series": "シリーズ",
"issues": "Issues", "issues": "課題",
"wanted": "Wanted" "wanted": "Wanted"
}, },
"photoprism": { "photoprism": {
@ -540,7 +547,7 @@
"records_total": "キューの長さ" "records_total": "キューの長さ"
}, },
"healthchecks": { "healthchecks": {
"never": "まだPingはありません", "never": "Pingしていません",
"new": "New", "new": "New",
"up": "オンライン", "up": "オンライン",
"grace": "猶予期間中", "grace": "猶予期間中",
@ -589,10 +596,10 @@
"shows": "ショー", "shows": "ショー",
"recordings": "レコーディング", "recordings": "レコーディング",
"scheduled": "予定済", "scheduled": "予定済",
"passes": "Passes" "passes": "パス"
}, },
"whatsupdocker": { "whatsupdocker": {
"monitoring": "Monitoring", "monitoring": "モニタリング",
"updates": "アップデート" "updates": "アップデート"
}, },
"tailscale": { "tailscale": {
@ -615,22 +622,22 @@
"systemTempC": "システム温度", "systemTempC": "システム温度",
"poolUsage": "プール使用量", "poolUsage": "プール使用量",
"volumeUsage": "ボリューム使用量", "volumeUsage": "ボリューム使用量",
"invalid": "Invalid" "invalid": "無効"
}, },
"pfsense": { "pfsense": {
"up": "Up", "up": "アップ",
"load": "Load Avg", "load": "読み込み平均",
"memory": "Mem Usage", "memory": "メモリ使用量",
"wanStatus": "WAN Status", "wanStatus": "WANステータス",
"down": "Down", "down": "ダウン",
"temp": "Temp", "temp": "温度",
"disk": "Disk Usage", "disk": "ディスク使用量",
"wanIP": "WAN IP" "wanIP": "WAN IP"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "アップストリーム",
"requests": "Current requests", "requests": "現在のリクエスト",
"requests_failed": "Failed requests" "requests_failed": "失敗したリクエスト"
}, },
"evcc": { "evcc": {
"watt_hour": "Wh", "watt_hour": "Wh",
@ -641,29 +648,90 @@
"charge_power": "チャージャー" "charge_power": "チャージャー"
}, },
"pialert": { "pialert": {
"total": "Total", "total": "トータル",
"connected": "Connected", "connected": "接続済み",
"new_devices": "New Devices", "new_devices": "新しいデバイス",
"down_alerts": "Down Alerts" "down_alerts": "ダウンアラート"
}, },
"jdownloader": { "jdownloader": {
"downloadCount": "Queue Count", "downloadCount": "キュー",
"downloadSpeed": "Download Speed", "downloadSpeed": "スピード",
"downloadBytesRemaining": "Remaining", "downloadBytesRemaining": "残り",
"downloadTotalBytes": "Size" "downloadTotalBytes": "サイズ"
}, },
"kavita": { "kavita": {
"seriesCount": "Series", "seriesCount": "シリーズ",
"totalFiles": "Files" "totalFiles": "ファイル"
}, },
"azurePipelines": { "gamedig": {
"result": "Result", "name": "名前",
"status": "Status", "map": "マップ",
"buildId": "Build ID", "currentPlayers": "現在のプレーヤー",
"succeeded": "Succeeded", "players": "プレーヤー",
"maxPlayers": "最大プレーヤー",
"bots": "ボット",
"ping": "Ping",
"status": "ステータス",
"online": "オンライン",
"offline": "オフライン"
},
"azuredevops": {
"result": "結果",
"status": "ステータス",
"buildId": "ビルドID",
"succeeded": "成功",
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "失敗",
"canceled": "Canceled", "canceled": "キャンセル",
"inProgress": "In Progress" "inProgress": "進行中",
"totalPrs": "合計PR数",
"myPrs": "私のPR",
"approved": "承認"
},
"urbackup": {
"ok": "Ok",
"errored": "エラー",
"noRecent": "期限切れ",
"totalUsed": "使用済みストレージ"
},
"openmediavault": {
"downloading": "ダウンロード中",
"total": "トータル",
"running": "実行中",
"stopped": "停止中",
"passed": "合格",
"failed": "不合格"
},
"mealie": {
"recipes": "レシピ",
"users": "ユーザー",
"categories": "カテゴリー",
"tags": "タグ"
},
"atsumeru": {
"series": "シリーズ",
"archives": "アーカイブ",
"chapters": "チャプター",
"categories": "カテゴリー"
},
"calibreweb": {
"books": "書籍",
"authors": "著者",
"categories": "カテゴリー",
"series": "シリーズ"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -315,7 +315,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"ping": "Ping",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"chapters": "Chapters",
"categories": "Categories",
"series": "Series",
"archives": "Archives"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -304,7 +304,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@ -656,14 +663,75 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"online": "Online",
"status": "Status",
"offline": "Offline"
},
"azuredevops": {
"result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
"canceled": "Canceled",
"inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved",
"succeeded": "Succeeded", "succeeded": "Succeeded",
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed"
"canceled": "Canceled", },
"result": "Result", "urbackup": {
"inProgress": "In Progress" "ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"chapters": "Chapters",
"series": "Series",
"archives": "Archives",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"unknown": "Unknown",
"status": "Status",
"uptime": "Uptime",
"sitesDown": "Sites Down",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down"
} }
} }

View File

@ -75,7 +75,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Tandabuku", "bookmark": "Tandabuku",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"downloading": "Downloading",
"total": "Total",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Filer" "totalFiles": "Filer"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"uptime": "Uptime",
"status": "Status",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -1,37 +1,37 @@
{ {
"widget": { "widget": {
"missing_type": "Missend Widget Type: {{type}}", "missing_type": "Ontbrekende Widget Type: {{type}}",
"api_error": "API Error", "api_error": "API fout",
"status": "Status", "status": "Status",
"information": "Informatie", "information": "Informatie",
"url": "URL", "url": "URL",
"raw_error": "Raw Fout", "raw_error": "Raw Error",
"response_data": "Reactiegegevens" "response_data": "Responsgegevens"
}, },
"resources": { "resources": {
"total": "Totaal", "total": "Totaal",
"free": "Vrij", "free": "Vrij",
"used": "Gebruikt", "used": "Gebruikt",
"load": "Laadt", "load": "Belasting",
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "GEH",
"days": "d", "days": "d",
"hours": "h", "hours": "u",
"temp": "TEMP", "temp": "TEMP",
"max": "Max", "max": "Max",
"uptime": "UP", "uptime": "OP",
"months": "mo", "months": "ma",
"minutes": "m" "minutes": "m"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
"tx": "TX", "tx": "TX",
"mem": "MEM", "mem": "GEH",
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Onbereikbaar",
"error": "Fout", "error": "Fout",
"unknown": "Onbekend", "unknown": "Onbekend",
"running": "Running", "running": "Lopend",
"starting": "Starten", "starting": "Starten",
"unhealthy": "Ongezond", "unhealthy": "Ongezond",
"not_found": "Niet Gevonden", "not_found": "Niet Gevonden",
@ -62,7 +62,7 @@
"playing": "Afspelen", "playing": "Afspelen",
"transcoding": "Transcodering", "transcoding": "Transcodering",
"bitrate": "Bitsnelheid", "bitrate": "Bitsnelheid",
"no_active": "Geen Actieve Steams", "no_active": "Geen Actieve Streams",
"movies": "Films", "movies": "Films",
"series": "Series", "series": "Series",
"episodes": "Afleveringen", "episodes": "Afleveringen",
@ -72,8 +72,8 @@
"playing": "Afspelen", "playing": "Afspelen",
"transcoding": "Transcodering", "transcoding": "Transcodering",
"bitrate": "Bitsnelheid", "bitrate": "Bitsnelheid",
"no_active": "Geen Actieve Streams", "no_active": "Geen actieve streams",
"plex_connection_error": "Check Plex Connection" "plex_connection_error": "Controleer Plex Connectie"
}, },
"rutorrent": { "rutorrent": {
"active": "Actief", "active": "Actief",
@ -84,16 +84,16 @@
"wanted": "Gezocht", "wanted": "Gezocht",
"queued": "In de wachtrij", "queued": "In de wachtrij",
"series": "Series", "series": "Series",
"queue": "Queue", "queue": "Rij",
"unknown": "Unknown" "unknown": "Onbekend"
}, },
"radarr": { "radarr": {
"movies": "Films", "movies": "Films",
"wanted": "Gezocht", "wanted": "Gezocht",
"queued": "In de wachtrij", "queued": "In de wachtrij",
"missing": "Missend", "missing": "Missend",
"queue": "Queue", "queue": "Rij",
"unknown": "Unknown" "unknown": "Onbekend"
}, },
"readarr": { "readarr": {
"wanted": "Gezocht", "wanted": "Gezocht",
@ -111,10 +111,10 @@
"available": "Beschikbaar" "available": "Beschikbaar"
}, },
"pihole": { "pihole": {
"queries": "Queries", "queries": "Zoekvragen",
"blocked": "Geblokkeerd", "blocked": "Geblokkeerd",
"gravity": "Gravity", "gravity": "Gewicht",
"blocked_percent": "Blocked %" "blocked_percent": "Geblokkerde %"
}, },
"traefik": { "traefik": {
"routers": "Routers", "routers": "Routers",
@ -130,20 +130,20 @@
"pending": "In Afwachting", "pending": "In Afwachting",
"approved": "Goedgekeurd", "approved": "Goedgekeurd",
"available": "Beschikbaar", "available": "Beschikbaar",
"processing": "Processing" "processing": "Verwerken"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Rate", "rate": "Snelheid",
"queue": "Wachtrij", "queue": "Wachtrij",
"timeleft": "Time Left" "timeleft": "Tijd Over"
}, },
"nzbget": { "nzbget": {
"rate": "Rate", "rate": "Beoordeling",
"remaining": "Resterend", "remaining": "Resterend",
"downloaded": "Gedownload" "downloaded": "Gedownload"
}, },
"coinmarketcap": { "coinmarketcap": {
"configure": "Configure one or more crypto currencies to track", "configure": "Configureer een of meer crypto eenheiden om bij te houden",
"1hour": "1 Uur", "1hour": "1 Uur",
"7days": "7 Dagen", "7days": "7 Dagen",
"1day": "1 Dag", "1day": "1 Dag",
@ -151,25 +151,25 @@
}, },
"gotify": { "gotify": {
"apps": "Applicaties", "apps": "Applicaties",
"clients": "Clients", "clients": "Cliënten",
"messages": "Berichten" "messages": "Berichten"
}, },
"prowlarr": { "prowlarr": {
"enableIndexers": "Indexers", "enableIndexers": "Indexeerders",
"numberOfGrabs": "Grabs", "numberOfGrabs": "Resultaten",
"numberOfQueries": "Queries", "numberOfQueries": "Zoekvragen",
"numberOfFailGrabs": "Fail Grabs", "numberOfFailGrabs": "Niet gepakt",
"numberOfFailQueries": "Fail Queries" "numberOfFailQueries": "Mislukte zoekvragen"
}, },
"transmission": { "transmission": {
"download": "Download", "download": "Download",
"upload": "Upload", "upload": "Upload",
"leech": "Leech", "leech": "Bloedzuiger",
"seed": "Seed" "seed": "Seed"
}, },
"jackett": { "jackett": {
"configured": "Geconfigureerd", "configured": "Geconfigureerd",
"errored": "Errored" "errored": "Opgetreden fouten"
}, },
"bazarr": { "bazarr": {
"missingEpisodes": "Ontbrekende Afleveringen", "missingEpisodes": "Ontbrekende Afleveringen",
@ -178,58 +178,58 @@
"lidarr": { "lidarr": {
"wanted": "Gezocht", "wanted": "Gezocht",
"queued": "In de wachtrij", "queued": "In de wachtrij",
"artists": "Artists" "artists": "Artiesten"
}, },
"adguard": { "adguard": {
"queries": "Queries", "queries": "Zoekvragen",
"blocked": "Geblokkeerd", "blocked": "Geblokkeerd",
"filtered": "Filtered", "filtered": "Gefilterde",
"latency": "Latency" "latency": "Vertraging"
}, },
"qbittorrent": { "qbittorrent": {
"download": "Download", "download": "Download",
"upload": "Upload", "upload": "Upload",
"leech": "Leech", "leech": "Bloedzuiger",
"seed": "Seed" "seed": "Seed"
}, },
"mastodon": { "mastodon": {
"user_count": "Users", "user_count": "Gebruikers",
"status_count": "Posts", "status_count": "Berichten",
"domain_count": "Domeinen" "domain_count": "Domeinen"
}, },
"strelaysrv": { "strelaysrv": {
"numActiveSessions": "Sessions", "numActiveSessions": "Sessies",
"numConnections": "Connections", "numConnections": "Connecties",
"dataRelayed": "Relayed", "dataRelayed": "Omgeleid",
"transferRate": "Rate" "transferRate": "Snelheid"
}, },
"authentik": { "authentik": {
"users": "Gebruikers", "users": "Gebruikers",
"loginsLast24H": "Logins (24h)", "loginsLast24H": "Logins (24u)",
"failedLoginsLast24H": "Failed Logins (24h)" "failedLoginsLast24H": "Gefaalde Logins (24u)"
}, },
"proxmox": { "proxmox": {
"mem": "MEM", "mem": "GEH",
"cpu": "CPU", "cpu": "CPU",
"lxc": "LXC", "lxc": "LXC",
"vms": "VMs" "vms": "VM's"
}, },
"unifi": { "unifi": {
"users": "Gebruikers", "users": "Gebruikers",
"lan_users": "LAN Gebruikers", "lan_users": "LAN Gebruikers",
"uptime": "Uptime van het systeem", "uptime": "Systeem Uptime",
"days": "Dagen", "days": "Dagen",
"wan": "WAN", "wan": "WAN",
"wlan_users": "WLAN Gebruikers", "wlan_users": "WLAN Gebruikers",
"up": "UP", "up": "OP",
"down": "DOWN", "down": "NEER",
"wait": "Wachten aub", "wait": "Even geduld",
"lan": "LAN", "lan": "LAN",
"wlan": "WLAN", "wlan": "WLAN",
"devices": "Apparaten", "devices": "Apparaten",
"lan_devices": "LAN Apparaten", "lan_devices": "LAN Apparaten",
"wlan_devices": "WLAN Apparaten", "wlan_devices": "WLAN Apparaten",
"empty_data": "Subsystem status unknown" "empty_data": "Subsysteem status onbekend"
}, },
"plex": { "plex": {
"streams": "Actieve Streams", "streams": "Actieve Streams",
@ -239,16 +239,23 @@
}, },
"glances": { "glances": {
"cpu": "CPU", "cpu": "CPU",
"wait": "Please wait", "wait": "Wacht aub",
"temp": "TEMP", "temp": "TEMP",
"uptime": "UP", "uptime": "OP",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
"load": "Load", "load": "Load",
"warn": "Warn", "warn": "Waarschuwing",
"total": "Total", "total": "Totaal",
"free": "Free", "free": "Vrij",
"used": "Used" "used": "Gebruikt",
"crit": "Crit",
"read": "Gelezen",
"write": "Schrijven",
"gpu": "GPU",
"mem": "Geh",
"swap": "Wissel",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Totaal waargenomen", "totalObserved": "Totaal waargenomen",
@ -268,44 +275,44 @@
"45-night": "Mistig", "45-night": "Mistig",
"48-day": "Mistig", "48-day": "Mistig",
"48-night": "Mistig", "48-night": "Mistig",
"51-day": "Light Drizzle", "51-day": "Motregen",
"51-night": "Light Drizzle", "51-night": "Motregen",
"53-day": "Drizzle", "53-day": "Druilerig",
"53-night": "Drizzle", "53-night": "Druilerig",
"55-night": "Heavy Drizzle", "55-night": "Zware motregen",
"55-day": "Heavy Drizzle", "55-day": "Zware motregen",
"56-day": "Light Freezing Drizzle", "56-day": "Lichte opvriezende motregen",
"56-night": "Light Freezing Drizzle", "56-night": "Lichte opvriezende motregen",
"57-day": "Freezing Drizzle", "57-day": "Opvriezende motregen",
"57-night": "Freezing Drizzle", "57-night": "Opvriezende motregen",
"61-day": "Lichte Regen", "61-day": "Lichte Regen",
"61-night": "Lichte Regen", "61-night": "Lichte Regen",
"63-day": "Regen", "63-day": "Regen",
"63-night": "Regen", "63-night": "Regen",
"65-day": "Hevige Regen", "65-day": "Hevige Regen",
"65-night": "Hevige Regen", "65-night": "Hevige Regen",
"66-day": "Freezing Rain", "66-day": "Opvriezende regen",
"66-night": "Freezing Rain", "66-night": "Opvriezende regen",
"67-day": "Freezing Rain", "67-day": "Opvriezende regen",
"67-night": "Freezing Rain", "67-night": "Opvriezende regen",
"71-day": "Lichte Sneeuw", "71-day": "Lichte Sneeuw",
"71-night": "Lichte Sneeuw", "71-night": "Lichte Sneeuw",
"73-day": "Sneeuw", "73-day": "Sneeuw",
"73-night": "Sneeuw", "73-night": "Sneeuw",
"75-day": "Hevige Sneeuw", "75-day": "Hevige Sneeuw",
"75-night": "Hevige Sneeuw", "75-night": "Hevige Sneeuw",
"77-day": "Snow Grains", "77-day": "Sneeuw korrels",
"77-night": "Snow Grains", "77-night": "Sneeuw korrels",
"80-day": "Light Showers", "80-day": "Lichte regenbui",
"80-night": "Light Showers", "80-night": "Lichte regenbui",
"81-day": "Showers", "81-day": "Regenbui",
"81-night": "Showers", "81-night": "Regenbui",
"82-night": "Heavy Showers", "82-night": "Zware Regenbuien",
"85-day": "Snow Showers", "85-day": "Sneeuwbuien",
"82-day": "Heavy Showers", "82-day": "Zware Regenbuien",
"85-night": "Snow Showers", "85-night": "Sneeuwbuien",
"86-day": "Snow Showers", "86-day": "Sneeuwbuien",
"86-night": "Snow Showers", "86-night": "Sneeuwbuien",
"95-day": "Onweersbui", "95-day": "Onweersbui",
"95-night": "Onweersbui", "95-night": "Onweersbui",
"96-day": "Onweersbui Met Hagel", "96-day": "Onweersbui Met Hagel",
@ -316,7 +323,7 @@
"bookmark": "Bladwijzer", "bookmark": "Bladwijzer",
"service": "Service", "service": "Service",
"search": "Zoek", "search": "Zoek",
"custom": "Custom", "custom": "Aangepast",
"visit": "Bezoek", "visit": "Bezoek",
"url": "URL" "url": "URL"
}, },
@ -327,31 +334,31 @@
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up", "up": "Bereikbaar",
"pending": "In afwachting van", "pending": "In afwachting van",
"down": "Down" "down": "Neer"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Goedgekeurd", "approvedPushes": "Goedgekeurd",
"rejectedPushes": "Afgewezen", "rejectedPushes": "Afgewezen",
"filters": "Filters", "filters": "Filters",
"indexers": "Indexers" "indexers": "Indexeerders"
}, },
"watchtower": { "watchtower": {
"containers_scanned": "Gescanned", "containers_scanned": "Gescanned",
"containers_updated": "Updated", "containers_updated": "Bijgewerkt",
"containers_failed": "Gefaald" "containers_failed": "Gefaald"
}, },
"tubearchivist": { "tubearchivist": {
"downloads": "Queue", "downloads": "Wachtrij",
"videos": "Videos", "videos": "Video's",
"channels": "Kanalen", "channels": "Kanalen",
"playlists": "Playlists" "playlists": "Speellijsten"
}, },
"truenas": { "truenas": {
"load": "System Load", "load": "Systeem Load",
"uptime": "Uptime", "uptime": "Bereikbaarheid",
"alerts": "Alerts", "alerts": "Waarschuwingen",
"time": "{{value, number(style: unit; unitDisplay: long;)}}" "time": "{{value, number(style: unit; unitDisplay: long;)}}"
}, },
"navidrome": { "navidrome": {
@ -378,18 +385,18 @@
"ping": "Ping" "ping": "Ping"
}, },
"scrutiny": { "scrutiny": {
"passed": "Passed", "passed": "Gepasseerd",
"failed": "Gefaald", "failed": "Gefaald",
"unknown": "Onbekend" "unknown": "Onbekend"
}, },
"paperlessngx": { "paperlessngx": {
"inbox": "Inbox", "inbox": "Postvak In",
"total": "Totaal" "total": "Totaal"
}, },
"deluge": { "deluge": {
"download": "Download", "download": "Download",
"upload": "Upload", "upload": "Upload",
"leech": "Leech", "leech": "Bloedzuiger",
"seed": "Seed" "seed": "Seed"
}, },
"flood": { "flood": {
@ -400,9 +407,9 @@
}, },
"tdarr": { "tdarr": {
"queue": "Wachtrij", "queue": "Wachtrij",
"processed": "Processed", "processed": "Verwerkt",
"errored": "Errored", "errored": "Fout",
"saved": "Saved" "saved": "Opgeslagen"
}, },
"miniflux": { "miniflux": {
"read": "Gelezen", "read": "Gelezen",
@ -417,28 +424,28 @@
"bibitrate": "{{value, rate(bits: true; binary: true)}}" "bibitrate": "{{value, rate(bits: true; binary: true)}}"
}, },
"omada": { "omada": {
"connectedAp": "Connected APs", "connectedAp": "Verbonden APs",
"activeUser": "Actieve apparaten", "activeUser": "Actieve apparaten",
"alerts": "Meldingen", "alerts": "Meldingen",
"connectedGateway": "Connected gateways", "connectedGateway": "Verbonden gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Verbonden switches"
}, },
"downloadstation": { "downloadstation": {
"download": "Download", "download": "Download",
"upload": "Upload", "upload": "Upload",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Delen"
}, },
"mikrotik": { "mikrotik": {
"cpuLoad": "CPU Belasting", "cpuLoad": "CPU Belasting",
"memoryUsed": "Geheugen Gebruikt", "memoryUsed": "Geheugen Gebruikt",
"uptime": "Uptime", "uptime": "Bereikbaarheid",
"numberOfLeases": "Leases" "numberOfLeases": "Leases"
}, },
"xteve": { "xteve": {
"streams_all": "All Streams", "streams_all": "Alle Streams",
"streams_active": "Active Streams", "streams_active": "Actieve Streams",
"streams_xepg": "XEPG Channels" "streams_xepg": "XEPG Kanalen"
}, },
"opnsense": { "opnsense": {
"cpu": "CPU Belasting", "cpu": "CPU Belasting",
@ -447,42 +454,42 @@
"wanDownload": "WAN Download" "wanDownload": "WAN Download"
}, },
"moonraker": { "moonraker": {
"printer_state": "Printer State", "printer_state": "Printer Status",
"print_status": "Print Status", "print_status": "Print Status",
"print_progress": "Progress", "print_progress": "Voortgang",
"layers": "Layers" "layers": "Lagen"
}, },
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "Gewild",
"queued": "Queued", "queued": "Wachtrij",
"series": "Series" "series": "Series"
}, },
"octoprint": { "octoprint": {
"printer_state": "Status", "printer_state": "Status",
"temp_tool": "Tool temp", "temp_tool": "Tool temp",
"temp_bed": "Bed temp", "temp_bed": "Bed temp",
"job_completion": "Completion" "job_completion": "Voltooiing"
}, },
"cloudflared": { "cloudflared": {
"origin_ip": "Origin IP", "origin_ip": "Oorspronkelijk IP",
"status": "Status" "status": "Status"
}, },
"proxmoxbackupserver": { "proxmoxbackupserver": {
"datastore_usage": "Datastore", "datastore_usage": "Data Opslag",
"failed_tasks_24h": "Failed Tasks 24h", "failed_tasks_24h": "Gefaalde taken 24u",
"cpu_usage": "CPU", "cpu_usage": "CPU",
"memory_usage": "Geheugen" "memory_usage": "Geheugen"
}, },
"immich": { "immich": {
"users": "Gebruikers", "users": "Gebruikers",
"photos": "Foto's", "photos": "Foto's",
"videos": "Videos", "videos": "Video's",
"storage": "Opslag" "storage": "Opslag"
}, },
"uptimekuma": { "uptimekuma": {
"up": "Sites Up", "up": "Sites Bereikbaar",
"down": "Sites Down", "down": "Sites Onbereikbaar",
"uptime": "Uptime", "uptime": "Tijd bereikbaar",
"incident": "Incident", "incident": "Incident",
"m": "m" "m": "m"
}, },
@ -492,14 +499,14 @@
"books": "Boeken" "books": "Boeken"
}, },
"mylar": { "mylar": {
"wanted": "Wanted", "wanted": "Gevraagd",
"series": "Series", "series": "Series",
"issues": "Problemen" "issues": "Problemen"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Albums",
"photos": "Foto's", "photos": "Foto's",
"videos": "Videos", "videos": "Video's",
"people": "Personen" "people": "Personen"
}, },
"diskstation": { "diskstation": {
@ -509,23 +516,23 @@
}, },
"fileflows": { "fileflows": {
"queue": "Wachtrij", "queue": "Wachtrij",
"processing": "Processing", "processing": "Verwerken",
"processed": "Processed", "processed": "Verwerkt",
"time": "Tijd" "time": "Tijd"
}, },
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Bronnen",
"totalalerts": "Total Alerts", "totalalerts": "Totaal Waarschuwingen",
"alertstriggered": "Alerts Triggered" "alertstriggered": "Getriggerde meldingen"
}, },
"nextcloud": { "nextcloud": {
"cpuload": "Cpu Belasting", "cpuload": "Cpu Belasting",
"memoryusage": "Geheugen Gebruik", "memoryusage": "Geheugen Gebruik",
"freespace": "Vrije Ruimte", "freespace": "Vrije Ruimte",
"activeusers": "Actieve Gebruikers", "activeusers": "Actieve Gebruikers",
"numfiles": "Files", "numfiles": "Bestanden",
"numshares": "Shared Items" "numshares": "Gedeelde items"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "Status",
@ -541,9 +548,9 @@
}, },
"healthchecks": { "healthchecks": {
"new": "Nieuw", "new": "Nieuw",
"up": "Online", "up": "Bereikbaar",
"grace": "In Grace Period", "grace": "In de respijt periode",
"down": "Offline", "down": "Onbereikbaar",
"paused": "Gepauzeerd", "paused": "Gepauzeerd",
"status": "Status", "status": "Status",
"last_ping": "Laatste Ping", "last_ping": "Laatste Ping",
@ -554,21 +561,21 @@
"nodes": "Nodes" "nodes": "Nodes"
}, },
"prometheus": { "prometheus": {
"targets_up": "Targets Up", "targets_up": "Doelen bereikbaar",
"targets_down": "Targets Down", "targets_down": "Doelen onbereikbaar",
"targets_total": "Total Targets" "targets_total": "Totaal aantal doelen"
}, },
"minecraft": { "minecraft": {
"players": "Spelers", "players": "Spelers",
"version": "Versie", "version": "Versie",
"status": "Status", "status": "Status",
"up": "Online", "up": "Bereikbaar",
"down": "Offline" "down": "Onbereikbaar"
}, },
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Vandaag", "gross_percent_today": "Vandaag",
"gross_percent_1y": "Een jaar", "gross_percent_1y": "Een jaar",
"gross_percent_max": "All time" "gross_percent_max": "Altijd"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",
@ -577,93 +584,154 @@
"booksDuration": "Duur" "booksDuration": "Duur"
}, },
"homeassistant": { "homeassistant": {
"people_home": "People Home", "people_home": "Mensen thuis",
"lights_on": "Lights On", "lights_on": "Lichten aan",
"switches_on": "Switches On" "switches_on": "Switches aan"
}, },
"freshrss": { "freshrss": {
"subscriptions": "Subscriptions", "subscriptions": "Abonnementen",
"unread": "Unread" "unread": "Ongelezen"
}, },
"channelsdvrserver": { "channelsdvrserver": {
"shows": "Shows", "shows": "Voorstellingen",
"recordings": "Recordings", "recordings": "Opnames",
"scheduled": "Scheduled", "scheduled": "Gepland",
"passes": "Passes" "passes": "Gepasseerd"
}, },
"whatsupdocker": { "whatsupdocker": {
"monitoring": "Monitoring", "monitoring": "Observeren",
"updates": "Updates" "updates": "Updates"
}, },
"tailscale": { "tailscale": {
"address": "Address", "address": "Adres",
"expires": "Expires", "expires": "Verloopt",
"never": "Never", "never": "Nooit",
"last_seen": "Last Seen", "last_seen": "Laatst Gezien",
"now": "Now", "now": "Nu",
"years": "{{number}}y", "years": "{{number}}j",
"weeks": "{{number}}w", "weeks": "{{number}}w",
"days": "{{number}}d", "days": "{{number}}d",
"hours": "{{number}}h", "hours": "{{number}}u",
"minutes": "{{number}}m", "minutes": "{{number}}m",
"seconds": "{{number}}s", "seconds": "{{number}}s",
"ago": "{{value}} Ago" "ago": "{{value}} Geleden"
}, },
"qnap": { "qnap": {
"cpuUsage": "CPU Usage", "cpuUsage": "CPU Verbruik",
"memUsage": "MEM Usage", "memUsage": "MEM Gebruik",
"systemTempC": "System Temp", "systemTempC": "Systeem Temperatuur",
"poolUsage": "Pool Usage", "poolUsage": "Pool Gebruik",
"volumeUsage": "Volume Usage", "volumeUsage": "Volume Usage",
"invalid": "Invalid" "invalid": "ongeldig"
}, },
"pfsense": { "pfsense": {
"load": "Load Avg", "load": "Load Gem",
"memory": "Mem Usage", "memory": "Geh Gebruik",
"wanStatus": "WAN Status", "wanStatus": "WAN Status",
"up": "Up", "up": "Bereikbaar",
"down": "Down", "down": "Neer",
"temp": "Temp", "temp": "Temp",
"disk": "Disk Usage", "disk": "Schijf Gebruik",
"wanIP": "WAN IP" "wanIP": "WAN IP"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
"requests": "Current requests", "requests": "Huidige verzoeken",
"requests_failed": "Failed requests" "requests_failed": "Gefaalde verzoeken"
}, },
"evcc": { "evcc": {
"pv_power": "Production", "pv_power": "Productie",
"battery_soc": "Battery", "battery_soc": "Batterij",
"grid_power": "Grid", "grid_power": "Rooster",
"home_power": "Consumption", "home_power": "Consumptie",
"charge_power": "Charger", "charge_power": "Oplader",
"watt_hour": "Wh" "watt_hour": "Wu"
}, },
"pialert": { "pialert": {
"total": "Total", "total": "Totaal",
"connected": "Connected", "connected": "Verbonden",
"new_devices": "New Devices", "new_devices": "Nieuwe Apparaten",
"down_alerts": "Down Alerts" "down_alerts": "Geen verbinding"
}, },
"jdownloader": { "jdownloader": {
"downloadCount": "Queue Count", "downloadCount": "Wachtrij",
"downloadSpeed": "Download Speed", "downloadSpeed": "Snelheid",
"downloadBytesRemaining": "Remaining", "downloadBytesRemaining": "Overig",
"downloadTotalBytes": "Size" "downloadTotalBytes": "Omvang"
}, },
"kavita": { "kavita": {
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Bestanden"
}, },
"azurePipelines": { "gamedig": {
"result": "Result", "name": "Naam",
"map": "Map",
"currentPlayers": "Huidige spelers",
"players": "Spelers",
"maxPlayers": "Max spelers",
"bots": "Bots",
"ping": "Ping",
"online": "Bereikbaar",
"status": "Status",
"offline": "Onbereikbaar"
},
"azuredevops": {
"result": "Resultaat",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Succeeded", "succeeded": "Geslaagd",
"notStarted": "Not Started", "notStarted": "Niet gestart",
"failed": "Failed", "failed": "Mislukt",
"canceled": "Canceled", "canceled": "Afgebroken",
"inProgress": "In Progress" "inProgress": "Voortgaand",
"totalPrs": "Totaal PRs",
"myPrs": "Mijn PR's",
"approved": "Goedgekeurd"
},
"urbackup": {
"ok": "Ok",
"errored": "Fouten",
"noRecent": "Verouderd",
"totalUsed": "Gebruikte opslag"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Totaal",
"running": "Lopend",
"stopped": "Gestopt",
"passed": "Geslaagd",
"failed": "Mislukt"
},
"mealie": {
"recipes": "Recepten",
"users": "Gebruikers",
"categories": "Categorieën",
"tags": "Label"
},
"atsumeru": {
"series": "Series",
"archives": "Archieven",
"chapters": "Hoofdstukken",
"categories": "Categorieën"
},
"calibreweb": {
"books": "Boeken",
"authors": "Auteurs",
"categories": "Categorieën",
"series": "Series"
},
"uptimerobot": {
"uptime": "Uptime",
"status": "Status",
"up": "Up",
"lastDown": "Laatste Downtime",
"downDuration": "Duur Downtime",
"sitesUp": "Sites Bereikbaar",
"sitesDown": "Sites Onbereikbaar",
"paused": "Gepauzeerd",
"notyetchecked": "Nog niet gecontroleerd",
"seemsdown": "Lijkt onbereikbaar",
"down": "Neer",
"unknown": "Onbekend"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"diffsDetected": "Wykryto różnic", "diffsDetected": "Wykryto różnic",
@ -656,14 +663,75 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"result": "Result", "name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Succeeded", "succeeded": "Succeeded",
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"myPrs": "My PRs",
"approved": "Approved",
"result": "Result",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -91,7 +91,7 @@
"transcoding": "Transcodificando", "transcoding": "Transcodificando",
"bitrate": "Taxa de bits", "bitrate": "Taxa de bits",
"no_active": "Sem transmissões ativas", "no_active": "Sem transmissões ativas",
"plex_connection_error": "Check Plex Connection" "plex_connection_error": "Verifique a conexão do Plex"
}, },
"nzbget": { "nzbget": {
"rate": "Taxa", "rate": "Taxa",
@ -114,21 +114,21 @@
"wanted": "Desejado", "wanted": "Desejado",
"queued": "Na fila", "queued": "Na fila",
"series": "Séries", "series": "Séries",
"queue": "Queue", "queue": "Fila",
"unknown": "Unknown" "unknown": "Desconhecido"
}, },
"radarr": { "radarr": {
"wanted": "Desejado", "wanted": "Desejado",
"queued": "Na fila", "queued": "Na fila",
"movies": "Filmes", "movies": "Filmes",
"missing": "Faltando", "missing": "Faltando",
"queue": "Queue", "queue": "Fila",
"unknown": "Unknown" "unknown": "Desconhecido"
}, },
"lidarr": { "lidarr": {
"wanted": "Desejado", "wanted": "Desejado",
"queued": "Na fila", "queued": "Na fila",
"artists": "Artists" "artists": "Artistas"
}, },
"readarr": { "readarr": {
"wanted": "Desejado", "wanted": "Desejado",
@ -159,7 +159,7 @@
"queries": "Consultas", "queries": "Consultas",
"blocked": "Bloqueados", "blocked": "Bloqueados",
"gravity": "Gravidade", "gravity": "Gravidade",
"blocked_percent": "Blocked %" "blocked_percent": "Bloqueado %"
}, },
"adguard": { "adguard": {
"queries": "Consultas", "queries": "Consultas",
@ -244,11 +244,18 @@
"uptime": "LIGADO", "uptime": "LIGADO",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
"load": "Load", "load": "Carga",
"warn": "Warn", "warn": "Aviso",
"total": "Total", "total": "Total",
"free": "Free", "free": "Livre",
"used": "Used" "used": "Usado",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Observados", "totalObserved": "Observados",
@ -524,8 +531,8 @@
"memoryusage": "Memória Utilizada", "memoryusage": "Memória Utilizada",
"freespace": "Espaço Livre", "freespace": "Espaço Livre",
"activeusers": "Usuários Ativos", "activeusers": "Usuários Ativos",
"numfiles": "Files", "numfiles": "Arquivos",
"numshares": "Shared Items" "numshares": "Itens Compartilhados"
}, },
"kopia": { "kopia": {
"status": "Status", "status": "Status",
@ -582,81 +589,93 @@
"switches_on": "Interruptores Ligados" "switches_on": "Interruptores Ligados"
}, },
"freshrss": { "freshrss": {
"subscriptions": "Subscriptions", "subscriptions": "Assinaturas",
"unread": "Unread" "unread": "Não lida"
}, },
"channelsdvrserver": { "channelsdvrserver": {
"shows": "Shows", "shows": "Shows",
"recordings": "Recordings", "recordings": "Gravações",
"scheduled": "Scheduled", "scheduled": "Agendado",
"passes": "Passes" "passes": "Passes"
}, },
"whatsupdocker": { "whatsupdocker": {
"monitoring": "Monitoring", "monitoring": "Monitorando",
"updates": "Updates" "updates": "Atualizações"
}, },
"tailscale": { "tailscale": {
"address": "Address", "address": "Endereço",
"expires": "Expires", "expires": "Expira",
"never": "Never", "never": "Nunca",
"last_seen": "Last Seen", "last_seen": "Visto pela última vez",
"now": "Now", "now": "Agora",
"years": "{{number}}y", "years": "{{number}}a",
"weeks": "{{number}}w", "weeks": "{{number}}s",
"hours": "{{number}}h", "hours": "{{number}}h",
"days": "{{number}}d", "days": "{{number}}d",
"minutes": "{{number}}m", "minutes": "{{number}}m",
"seconds": "{{number}}s", "seconds": "{{number}}s",
"ago": "{{value}} Ago" "ago": "{{value}} Atrás"
}, },
"qnap": { "qnap": {
"systemTempC": "System Temp", "systemTempC": "Temp Sistema",
"cpuUsage": "CPU Usage", "cpuUsage": "Uso CPU",
"memUsage": "MEM Usage", "memUsage": "Uso MEM",
"poolUsage": "Pool Usage", "poolUsage": "Pool Usage",
"volumeUsage": "Volume Usage", "volumeUsage": "Uso Volume",
"invalid": "Invalid" "invalid": "Invalido"
}, },
"pfsense": { "pfsense": {
"load": "Load Avg", "load": "Média de carga",
"memory": "Mem Usage", "memory": "Uso Mem",
"wanStatus": "WAN Status", "wanStatus": "WAN Status",
"up": "Up", "up": "Up",
"down": "Down", "down": "Down",
"temp": "Temp", "temp": "Temp",
"disk": "Disk Usage", "disk": "Uso de disco",
"wanIP": "WAN IP" "wanIP": "WAN IP"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
"requests": "Current requests", "requests": "Solicitações atuais",
"requests_failed": "Failed requests" "requests_failed": "Solicitações com falha"
}, },
"evcc": { "evcc": {
"pv_power": "Production", "pv_power": "Produção",
"battery_soc": "Battery", "battery_soc": "Bateria",
"grid_power": "Grid", "grid_power": "Grade",
"home_power": "Consumption", "home_power": "Consumo",
"charge_power": "Charger", "charge_power": "Carregador",
"watt_hour": "Wh" "watt_hour": "Wh"
}, },
"pialert": { "pialert": {
"total": "Total", "total": "Total",
"connected": "Connected", "connected": "Conectado",
"new_devices": "New Devices", "new_devices": "Novos dispositivos",
"down_alerts": "Down Alerts" "down_alerts": "Alertas de Quedas"
}, },
"jdownloader": { "jdownloader": {
"downloadCount": "Queue Count", "downloadCount": "Fila",
"downloadSpeed": "Download Speed", "downloadSpeed": "Velocidade de download",
"downloadBytesRemaining": "Remaining", "downloadBytesRemaining": "Restante",
"downloadTotalBytes": "Size" "downloadTotalBytes": "Tamanho"
}, },
"kavita": { "kavita": {
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Arquivos"
}, },
"azurePipelines": { "gamedig": {
"name": "Nome",
"map": "Mapa",
"currentPlayers": "Jogadores atuais",
"players": "Jogadores",
"maxPlayers": "Jogadores Max",
"bots": "Robos",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -261,7 +261,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observado", "totalObserved": "Total Observado",
@ -665,14 +672,75 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"approved": "Approved",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Succeeded", "succeeded": "Succeeded",
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown",
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up"
} }
} }

View File

@ -20,12 +20,12 @@
"mem": "MEM", "mem": "MEM",
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Eroare",
"unknown": "Unknown", "unknown": "Necunoscut",
"running": "Running", "running": "Rulează",
"starting": "Starting", "starting": "Începe",
"unhealthy": "Unhealthy", "unhealthy": "Unhealthy",
"not_found": "Not Found", "not_found": "Negăsit",
"exited": "Exited", "exited": "Exited",
"partial": "Partial", "partial": "Partial",
"healthy": "Healthy" "healthy": "Healthy"
@ -248,7 +248,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@ -656,14 +663,75 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"canceled": "Canceled",
"inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved",
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Succeeded", "succeeded": "Succeeded",
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed"
"canceled": "Canceled", },
"inProgress": "In Progress" "urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"sitesDown": "Sites Down",
"paused": "Paused",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -16,11 +16,11 @@
"free": "Свободно", "free": "Свободно",
"used": "Использовано", "used": "Использовано",
"load": "Загрузка", "load": "Загрузка",
"cpu": "Процессор", "cpu": "ЦП",
"mem": "Память", "mem": "ОЗУ",
"temp": "Температура", "temp": "Температура",
"max": "Макс.", "max": "Макс.",
"uptime": "UP", "uptime": "Работает",
"months": "мес", "months": "мес",
"days": "д", "days": "д",
"hours": "ч", "hours": "ч",
@ -248,7 +248,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Всего наблюдаемых", "totalObserved": "Всего наблюдаемых",
@ -656,14 +663,75 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"inProgress": "In Progress", "name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Succeeded", "succeeded": "Succeeded",
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled" "canceled": "Canceled",
"inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"passed": "Passed",
"failed": "Failed",
"running": "Running",
"stopped": "Stopped"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Серии",
"archives": "Архивы",
"chapters": "Главы",
"categories": "Категории"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -2,18 +2,18 @@
"docker": { "docker": {
"rx": "RX", "rx": "RX",
"tx": "TX", "tx": "TX",
"mem": "MEM", "mem": "RAM",
"cpu": "CPU", "cpu": "CPU",
"offline": "Offline", "offline": "Offline",
"error": "Error", "error": "Chyba",
"unknown": "Unknown", "unknown": "Neznáme",
"running": "Running", "running": "Beží",
"starting": "Starting", "starting": "Spúšťa sa",
"unhealthy": "Unhealthy", "unhealthy": "Nezdravý",
"not_found": "Not Found", "not_found": "Nenájdené",
"exited": "Exited", "exited": "Ukončené",
"partial": "Partial", "partial": "Čiastočný",
"healthy": "Healthy" "healthy": "Zdravý"
}, },
"rutorrent": { "rutorrent": {
"active": "Active", "active": "Active",
@ -21,10 +21,10 @@
"download": "Download" "download": "Download"
}, },
"tdarr": { "tdarr": {
"queue": "Queue", "queue": "Fronta",
"processed": "Processed", "processed": "Spracované",
"errored": "Errored", "errored": "Chybné",
"saved": "Saved" "saved": "Uložené"
}, },
"strelaysrv": { "strelaysrv": {
"numActiveSessions": "Sessions", "numActiveSessions": "Sessions",
@ -144,74 +144,74 @@
"bibitrate": "{{value, rate(bits: true; binary: true)}}" "bibitrate": "{{value, rate(bits: true; binary: true)}}"
}, },
"widget": { "widget": {
"api_error": "API Error", "api_error": "Chyba API",
"missing_type": "Missing Widget Type: {{type}}", "missing_type": "Chýba typ widgetu: {{type}}",
"information": "Information", "information": "Informácia",
"status": "Status", "status": "Stav",
"url": "URL", "url": "URL",
"raw_error": "Raw Error", "raw_error": "Nevyriešená chyba",
"response_data": "Response Data" "response_data": "Dáta odpovede"
}, },
"weather": { "weather": {
"current": "Current Location", "current": "Aktuálna poloha",
"allow": "Click to allow", "allow": "Klikni pre povolenie",
"updating": "Updating", "updating": "Prebieha aktualizácia",
"wait": "Please wait" "wait": "Počkajte prosím"
}, },
"search": { "search": {
"placeholder": "Search…" "placeholder": "Hľadať…"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
"mem": "MEM", "mem": "RAM",
"total": "Total", "total": "Celkovo",
"free": "Free", "free": "Voľné",
"used": "Used", "used": "Využité",
"load": "Load", "load": "Záťaž",
"temp": "TEMP", "temp": "TEPLOTA",
"max": "Max", "max": "Max.",
"uptime": "UP", "uptime": "BEŽÍ",
"months": "mo", "months": "mes.",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
"minutes": "m" "minutes": "m"
}, },
"unifi": { "unifi": {
"users": "Users", "users": "Používatelia",
"uptime": "System Uptime", "uptime": "Doba prevádzky",
"days": "Days", "days": "D",
"wan": "WAN", "wan": "WAN",
"lan": "LAN", "lan": "LAN",
"wlan": "WLAN", "wlan": "WLAN",
"devices": "Devices", "devices": "Zariadenia",
"lan_devices": "LAN Devices", "lan_devices": "Zariadenia LAN",
"wlan_devices": "WLAN Devices", "wlan_devices": "Zariadenia WLAN",
"lan_users": "LAN Users", "lan_users": "Používatelia LAN",
"wlan_users": "WLAN Users", "wlan_users": "Používatelia WLAN",
"up": "UP", "up": "BEŽÍ",
"down": "DOWN", "down": "NEBEŽÍ",
"wait": "Please wait", "wait": "Počkajte prosím",
"empty_data": "Subsystem status unknown" "empty_data": "Stav podsystému neznámy"
}, },
"ping": { "ping": {
"error": "Error", "error": "Chyba",
"ping": "Ping" "ping": "Odozva"
}, },
"emby": { "emby": {
"playing": "Playing", "playing": "Prehrávané",
"transcoding": "Transcoding", "transcoding": "Prekódovávané",
"bitrate": "Bitrate", "bitrate": "Prenosová rýchlosť",
"no_active": "No Active Streams", "no_active": "Žiadny aktívny stream",
"movies": "Movies", "movies": "Filmy",
"series": "Series", "series": "Seriály",
"episodes": "Episodes", "episodes": "Epizódy",
"songs": "Songs" "songs": "Skladby"
}, },
"flood": { "flood": {
"download": "Download", "download": "Sťahovanie",
"upload": "Upload", "upload": "Odosielanie",
"leech": "Leech", "leech": "Leechovanie",
"seed": "Seed" "seed": "Seedovanie"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@ -276,70 +276,70 @@
"queued": "Queued", "queued": "Queued",
"series": "Series", "series": "Series",
"queue": "Queue", "queue": "Queue",
"unknown": "Unknown" "unknown": "Neznáme"
}, },
"radarr": { "radarr": {
"wanted": "Wanted", "wanted": "Chcené",
"missing": "Missing", "missing": "Chýbajúce",
"queued": "Queued", "queued": "Vo fronte",
"movies": "Movies", "movies": "Filmy",
"queue": "Queue", "queue": "Fronta",
"unknown": "Unknown" "unknown": "Neznáme"
}, },
"lidarr": { "lidarr": {
"wanted": "Wanted", "wanted": "Chcené",
"queued": "Queued", "queued": "Vo fronte",
"artists": "Artists" "artists": "Interpreti"
}, },
"readarr": { "readarr": {
"wanted": "Wanted", "wanted": "Chcené",
"queued": "Queued", "queued": "Vo fronte",
"books": "Books" "books": "Knihy"
}, },
"bazarr": { "bazarr": {
"missingEpisodes": "Missing Episodes", "missingEpisodes": "Chýbajúce epizódy",
"missingMovies": "Missing Movies" "missingMovies": "Chýbajúce filmy"
}, },
"ombi": { "ombi": {
"pending": "Pending", "pending": "Čakajúce",
"approved": "Approved", "approved": "Schválené",
"available": "Available" "available": "Dostupné"
}, },
"jellyseerr": { "jellyseerr": {
"pending": "Pending", "pending": "Čakajúce",
"approved": "Approved", "approved": "Schválené",
"available": "Available" "available": "Dostupné"
}, },
"overseerr": { "overseerr": {
"pending": "Pending", "pending": "Čakajúce",
"processing": "Processing", "processing": "Spracovávané",
"approved": "Approved", "approved": "Schválené",
"available": "Available" "available": "Dostupné"
}, },
"pihole": { "pihole": {
"queries": "Queries", "queries": "Dopyty",
"blocked": "Blocked", "blocked": "Zablokované",
"gravity": "Gravity", "gravity": "Gravitácia",
"blocked_percent": "Blocked %" "blocked_percent": "Blokované %"
}, },
"adguard": { "adguard": {
"queries": "Queries", "queries": "Dopyty",
"blocked": "Blocked", "blocked": "Blokované",
"filtered": "Filtered", "filtered": "Filtrované",
"latency": "Latency" "latency": "Odozva"
}, },
"speedtest": { "speedtest": {
"upload": "Upload", "upload": "Odosielanie",
"download": "Download", "download": "Sťahovanie",
"ping": "Ping" "ping": "Ping"
}, },
"portainer": { "portainer": {
"running": "Running", "running": "Spustené",
"stopped": "Stopped", "stopped": "Zastavené",
"total": "Total" "total": "Celkovo"
}, },
"traefik": { "traefik": {
"routers": "Routers", "routers": "Routery",
"services": "Services", "services": "Services",
"middleware": "Middleware" "middleware": "Middleware"
}, },
@ -412,7 +412,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@ -582,8 +589,8 @@
"switches_on": "Switches On" "switches_on": "Switches On"
}, },
"freshrss": { "freshrss": {
"subscriptions": "Subscriptions", "subscriptions": "Odbery",
"unread": "Unread" "unread": "Neprečítané"
}, },
"channelsdvrserver": { "channelsdvrserver": {
"shows": "Shows", "shows": "Shows",
@ -596,18 +603,18 @@
"updates": "Updates" "updates": "Updates"
}, },
"tailscale": { "tailscale": {
"address": "Address", "address": "Adresa",
"years": "{{number}}y", "years": "{{number}}r",
"expires": "Expires", "expires": "Vyprší",
"never": "Never", "never": "Nikdy",
"last_seen": "Last Seen", "last_seen": "Naposledy videné",
"now": "Now", "now": "Teraz",
"weeks": "{{number}}w", "weeks": "{{number}}t",
"days": "{{number}}d", "days": "{{number}}d",
"hours": "{{number}}h", "hours": "{{number}}h",
"minutes": "{{number}}m", "minutes": "{{number}}m",
"seconds": "{{number}}s", "seconds": "{{number}}s",
"ago": "{{value}} Ago" "ago": "Pred {{value}}"
}, },
"qnap": { "qnap": {
"cpuUsage": "CPU Usage", "cpuUsage": "CPU Usage",
@ -628,23 +635,23 @@
"wanIP": "WAN IP" "wanIP": "WAN IP"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Odosielanie dát",
"requests": "Current requests", "requests": "Current requests",
"requests_failed": "Failed requests" "requests_failed": "Failed requests"
}, },
"evcc": { "evcc": {
"pv_power": "Production", "pv_power": "Produkcia",
"battery_soc": "Battery", "battery_soc": "Batéria",
"grid_power": "Grid", "grid_power": "Mriežka",
"home_power": "Consumption", "home_power": "Spotreba",
"charge_power": "Charger", "charge_power": "Nabíjačka",
"watt_hour": "Wh" "watt_hour": "Wh"
}, },
"pialert": { "pialert": {
"total": "Total", "total": "Celkovo",
"connected": "Connected", "connected": "Pripojené",
"new_devices": "New Devices", "new_devices": "Nové zariadenia",
"down_alerts": "Down Alerts" "down_alerts": "Upozornenia o výpadkoch"
}, },
"jdownloader": { "jdownloader": {
"downloadCount": "Queue Count", "downloadCount": "Queue Count",
@ -656,14 +663,75 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"succeeded": "Succeeded",
"notStarted": "Not Started",
"inProgress": "In Progress",
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Succeeded",
"notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"total": "Total",
"downloading": "Downloading",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -169,7 +169,7 @@
"bitrate": "Pasovna širina", "bitrate": "Pasovna širina",
"playing": "Predvaja", "playing": "Predvaja",
"no_active": "Ni aktivne vsebine", "no_active": "Ni aktivne vsebine",
"plex_connection_error": "Check Plex Connection" "plex_connection_error": "Preveri Plex povezavo"
}, },
"flood": { "flood": {
"download": "Prenos", "download": "Prenos",
@ -364,7 +364,14 @@
"load": "Obremenitev", "load": "Obremenitev",
"warn": "Opoz.", "warn": "Opoz.",
"total": "Skupaj", "total": "Skupaj",
"used": "V uporabi" "used": "V uporabi",
"crit": "Krit.",
"read": "Prebrano",
"write": "Zapisano",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"authentik": { "authentik": {
"users": "Uporabniki", "users": "Uporabniki",
@ -656,14 +663,75 @@
"seriesCount": "Serije", "seriesCount": "Serije",
"totalFiles": "Datoteke" "totalFiles": "Datoteke"
}, },
"azurePipelines": { "gamedig": {
"result": "Result", "name": "Naziv",
"map": "Zemljevid",
"currentPlayers": "Igralcev",
"players": "Igralci",
"maxPlayers": "Maks igralcev",
"bots": "Boti",
"ping": "Ping",
"status": "Status", "status": "Status",
"buildId": "Build ID", "online": "Na spletu",
"succeeded": "Succeeded", "offline": "Nepovezano"
"notStarted": "Not Started", },
"failed": "Failed", "azuredevops": {
"canceled": "Canceled", "result": "Rezultati",
"inProgress": "In Progress" "status": "Status",
"buildId": "ID gradnje",
"succeeded": "Uspešnih",
"notStarted": "Ni zagnano",
"failed": "Neuspešno",
"canceled": "Preklicano",
"inProgress": "V delu",
"totalPrs": "Skupaj PR",
"myPrs": "Moji PR",
"approved": "Odobreno"
},
"urbackup": {
"ok": "V redu",
"errored": "Napake",
"noRecent": "Zastarano",
"totalUsed": "Shramba v uporabi"
},
"openmediavault": {
"downloading": "Prenašanje",
"total": "Skupaj",
"running": "V teku",
"stopped": "Ustavljeno",
"passed": "Opravljeno",
"failed": "Neuspešno"
},
"mealie": {
"recipes": "Recepti",
"users": "Uporabniki",
"categories": "Kategorije",
"tags": "Značke"
},
"atsumeru": {
"series": "Serije",
"archives": "Arhivi",
"chapters": "Poglavja",
"categories": "Kategorije"
},
"calibreweb": {
"books": "Knjige",
"authors": "Avtorji",
"categories": "Kategorije",
"series": "Serije"
},
"uptimerobot": {
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"unknown": "Unknown",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"seemsdown": "Seems Down",
"down": "Down"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed",
"downloading": "Downloading"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@ -656,7 +663,20 @@
"totalFiles": "Files", "totalFiles": "Files",
"seriesCount": "Series" "seriesCount": "Series"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"approved": "Approved",
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +684,54 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"paused": "Paused",
"sitesDown": "Sites Down",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "మొత్తం గమనించబడింది", "totalObserved": "మొత్తం గమనించబడింది",
@ -656,14 +663,75 @@
"totalFiles": "Files", "totalFiles": "Files",
"seriesCount": "Series" "seriesCount": "Series"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"myPrs": "My PRs",
"approved": "Approved",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Succeeded", "succeeded": "Succeeded",
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"failed": "Failed",
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -324,7 +324,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Bookmark", "bookmark": "Bookmark",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Uyarı", "warn": "Uyarı",
"total": "Toplam", "total": "Toplam",
"free": "Boş", "free": "Boş",
"used": "Kullanım" "used": "Kullanım",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Toplam Gözlenen", "totalObserved": "Toplam Gözlenen",
@ -656,14 +663,75 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"canceled": "Canceled",
"inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Succeeded", "succeeded": "Succeeded",
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed"
"canceled": "Canceled", },
"inProgress": "In Progress" "urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -372,7 +372,14 @@
"warn": "Увага", "warn": "Увага",
"total": "Всього", "total": "Всього",
"free": "Вільний", "free": "Вільний",
"used": "Використовується" "used": "Використовується",
"crit": "Crit",
"read": "Прочитати",
"write": "Написати",
"gpu": "GPU",
"mem": "Пам'ять",
"swap": "Обмін",
"_temp": "Temp"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Закладка", "bookmark": "Закладка",
@ -656,14 +663,75 @@
"seriesCount": "Серій", "seriesCount": "Серій",
"totalFiles": "Файлів" "totalFiles": "Файлів"
}, },
"azurePipelines": { "gamedig": {
"failed": "Невдача", "name": "Назва",
"map": "Мапа",
"currentPlayers": "Поточні гравці",
"players": "Гравці",
"maxPlayers": "Максимум гравців",
"bots": "Ботів",
"ping": "Пінг",
"status": "Статус",
"online": "В мережі",
"offline": "Не в мережі"
},
"azuredevops": {
"result": "Результат", "result": "Результат",
"status": "Стан", "status": "Статус",
"buildId": "ID збірки", "buildId": "ID збірки",
"succeeded": "Успішно", "succeeded": "Успішно",
"notStarted": "Не розпочато", "notStarted": "Не розпочато",
"failed": "Невдача",
"canceled": "Скасовано", "canceled": "Скасовано",
"inProgress": "В процесі" "inProgress": "В процесі",
"totalPrs": "Всього PR",
"myPrs": "Мій PR",
"approved": "Затверджено"
},
"urbackup": {
"ok": "Добре",
"errored": "Помилки",
"noRecent": "Застарілий",
"totalUsed": "Використовувана пам'ять"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Серії",
"archives": "Архіви",
"chapters": "Глави",
"categories": "Категорії"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"up": "Up",
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observed", "totalObserved": "Total Observed",
@ -656,7 +663,19 @@
"seriesCount": "Series", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
@ -664,6 +683,55 @@
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "canceled": "Canceled",
"inProgress": "In Progress" "inProgress": "In Progress",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -248,7 +248,14 @@
"warn": "Warn", "warn": "Warn",
"total": "Total", "total": "Total",
"free": "Free", "free": "Free",
"used": "Used" "used": "Used",
"crit": "Crit",
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "观察到的总数", "totalObserved": "观察到的总数",
@ -653,17 +660,78 @@
"downloadTotalBytes": "Size" "downloadTotalBytes": "Size"
}, },
"kavita": { "kavita": {
"seriesCount": "Series", "seriesCount": "系列",
"totalFiles": "Files" "totalFiles": "文件"
}, },
"azurePipelines": { "gamedig": {
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"azuredevops": {
"canceled": "Canceled",
"inProgress": "In Progress",
"result": "Result", "result": "Result",
"status": "Status", "status": "Status",
"buildId": "Build ID", "buildId": "Build ID",
"succeeded": "Succeeded", "succeeded": "Succeeded",
"notStarted": "Not Started", "notStarted": "Not Started",
"failed": "Failed", "failed": "Failed",
"canceled": "Canceled", "totalPrs": "Total PRs",
"inProgress": "In Progress" "myPrs": "My PRs",
"approved": "Approved"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "书籍",
"authors": "作者",
"categories": "分类",
"series": "丛书"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -45,7 +45,7 @@
"transcoding": "轉碼", "transcoding": "轉碼",
"bitrate": "位元率", "bitrate": "位元率",
"no_active": "無播放活動", "no_active": "無播放活動",
"plex_connection_error": "Check Plex Connection" "plex_connection_error": "檢查Plex的連接狀態"
}, },
"jellyseerr": { "jellyseerr": {
"pending": "待下載", "pending": "待下載",
@ -90,15 +90,15 @@
"wanted": "關注中", "wanted": "關注中",
"queued": "已加入佇列", "queued": "已加入佇列",
"missing": "缺少", "missing": "缺少",
"queue": "Queue", "queue": "佇列",
"unknown": "Unknown" "unknown": "未知的"
}, },
"sonarr": { "sonarr": {
"wanted": "關注中", "wanted": "關注中",
"queued": "已加入佇列", "queued": "已加入佇列",
"series": "影集", "series": "影集",
"queue": "Queue", "queue": "佇列",
"unknown": "Unknown" "unknown": "未知的"
}, },
"readarr": { "readarr": {
"wanted": "關注中", "wanted": "關注中",
@ -178,7 +178,7 @@
"lidarr": { "lidarr": {
"wanted": "關注中", "wanted": "關注中",
"queued": "已加入佇列", "queued": "已加入佇列",
"artists": "Artists" "artists": "創作者"
}, },
"adguard": { "adguard": {
"queries": "查詢", "queries": "查詢",
@ -248,7 +248,14 @@
"used": "已使用", "used": "已使用",
"load": "負載量", "load": "負載量",
"warn": "警告", "warn": "警告",
"total": "總共" "total": "總共",
"crit": "Crit",
"read": "讀取",
"write": "寫入",
"gpu": "GPU",
"mem": "記憶體",
"swap": "Swap",
"_temp": "Temp"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "總監測數", "totalObserved": "總監測數",
@ -647,23 +654,84 @@
"down_alerts": "離線警告" "down_alerts": "離線警告"
}, },
"jdownloader": { "jdownloader": {
"downloadCount": "Queue Count", "downloadCount": "下載佇列",
"downloadSpeed": "Download Speed", "downloadSpeed": "下載速率",
"downloadBytesRemaining": "Remaining", "downloadBytesRemaining": "剩餘",
"downloadTotalBytes": "Size" "downloadTotalBytes": "總下載量"
}, },
"kavita": { "kavita": {
"seriesCount": "Series", "seriesCount": "叢刊",
"totalFiles": "Files" "totalFiles": "檔案"
}, },
"azurePipelines": { "gamedig": {
"result": "Result", "name": "名稱",
"map": "地圖",
"currentPlayers": "當前玩家數",
"players": "玩家",
"maxPlayers": "玩家數上限",
"bots": "機器人",
"ping": "Ping",
"status": "Status", "status": "Status",
"buildId": "Build ID", "online": "Online",
"succeeded": "Succeeded", "offline": "Offline"
"notStarted": "Not Started", },
"failed": "Failed", "azuredevops": {
"canceled": "Canceled", "result": "結果",
"inProgress": "In Progress" "status": "狀態",
"buildId": "組建編號",
"succeeded": "成功",
"notStarted": "尚未啟用",
"failed": "失敗",
"canceled": "取消",
"inProgress": "執行中",
"totalPrs": "總提取要求",
"myPrs": "我的提取要求",
"approved": "已核准"
},
"urbackup": {
"ok": "Ok",
"errored": "錯誤",
"noRecent": "已過時",
"totalUsed": "已使用空間"
},
"openmediavault": {
"downloading": "Downloading",
"total": "Total",
"running": "Running",
"stopped": "Stopped",
"passed": "Passed",
"failed": "Failed"
},
"mealie": {
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
},
"atsumeru": {
"series": "Series",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"calibreweb": {
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
},
"uptimerobot": {
"status": "Status",
"uptime": "Uptime",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
} }
} }

View File

@ -5,38 +5,59 @@ import { MdKeyboardArrowDown } from "react-icons/md";
import ErrorBoundary from "components/errorboundry"; import ErrorBoundary from "components/errorboundry";
import List from "components/bookmarks/list"; import List from "components/bookmarks/list";
import ResolvedIcon from "components/resolvedicon";
export default function BookmarksGroup({ group, disableCollapse }) { export default function BookmarksGroup({ bookmarks, layout, disableCollapse }) {
const panel = useRef(); const panel = useRef();
return ( return (
<div key={group.name} className="flex-1"> <div
key={bookmarks.name}
className={classNames(
"bookmark-group",
layout?.style === "row" ? "basis-full" : "basis-full md:basis-1/4 lg:basis-1/5 xl:basis-1/6",
layout?.header === false ? "flex-1 px-1 -my-1" : "flex-1 p-1"
)}
>
<Disclosure defaultOpen> <Disclosure defaultOpen>
{({ open }) => ( {({ open }) => (
<> <>
{layout?.header !== false && (
<Disclosure.Button disabled={disableCollapse} className="flex w-full select-none items-center group"> <Disclosure.Button disabled={disableCollapse} className="flex w-full select-none items-center group">
<h2 className="text-theme-800 dark:text-theme-300 text-xl font-medium">{group.name}</h2> {layout?.icon && (
<MdKeyboardArrowDown className={classNames( <div className="flex-shrink-0 mr-2 w-7 h-7 bookmark-group-icon">
disableCollapse ? 'hidden' : '', <ResolvedIcon icon={layout.icon} />
'transition-all opacity-0 group-hover:opacity-100 ml-auto text-theme-800 dark:text-theme-300 text-xl', </div>
open ? '' : 'rotate-90' )}
)} /> <h2 className="text-theme-800 dark:text-theme-300 text-xl font-medium bookmark-group-name">{bookmarks.name}</h2>
<MdKeyboardArrowDown
className={classNames(
disableCollapse ? "hidden" : "",
"transition-all opacity-0 group-hover:opacity-100 ml-auto text-theme-800 dark:text-theme-300 text-xl",
open ? "" : "rotate-180"
)}
/>
</Disclosure.Button> </Disclosure.Button>
)}
<Transition <Transition
// Otherwise the transition group does display: none and cancels animation // Otherwise the transition group does display: none and cancels animation
className="!block" className="!block"
unmount={false} unmount={false}
beforeLeave={() => { beforeLeave={() => {
panel.current.style.height = `${panel.current.scrollHeight}px`; panel.current.style.height = `${panel.current.scrollHeight}px`;
setTimeout(() => {panel.current.style.height = `0`}, 1); setTimeout(() => {
panel.current.style.height = `0`;
}, 1);
}} }}
beforeEnter={() => { beforeEnter={() => {
panel.current.style.height = `0px`; panel.current.style.height = `0px`;
setTimeout(() => {panel.current.style.height = `${panel.current.scrollHeight}px`}, 1); setTimeout(() => {
panel.current.style.height = `${panel.current.scrollHeight}px`;
}, 1);
}} }}
> >
<Disclosure.Panel className="transition-all overflow-hidden duration-300 ease-out" ref={panel} static> <Disclosure.Panel className="transition-all overflow-hidden duration-300 ease-out" ref={panel} static>
<ErrorBoundary> <ErrorBoundary>
<List bookmarks={group.bookmarks} /> <List bookmarks={bookmarks.bookmarks} layout={layout} />
</ErrorBoundary> </ErrorBoundary>
</Disclosure.Panel> </Disclosure.Panel>
</Transition> </Transition>

View File

@ -1,22 +1,26 @@
import { useContext } from "react"; import { useContext } from "react";
import classNames from "classnames";
import { SettingsContext } from "utils/contexts/settings"; import { SettingsContext } from "utils/contexts/settings";
import ResolvedIcon from "components/resolvedicon"; import ResolvedIcon from "components/resolvedicon";
export default function Item({ bookmark }) { export default function Item({ bookmark }) {
const { hostname } = new URL(bookmark.href); const description = bookmark.description ?? new URL(bookmark.href).hostname;
const { settings } = useContext(SettingsContext); const { settings } = useContext(SettingsContext);
return ( return (
<li key={bookmark.name}> <li key={bookmark.name} id={bookmark.id} className="bookmark" data-name={bookmark.name}>
<a <a
href={bookmark.href} href={bookmark.href}
title={bookmark.name} title={bookmark.name}
target={bookmark.target ?? settings.target ?? "_blank"} target={bookmark.target ?? settings.target ?? "_blank"}
className="block w-full text-left cursor-pointer transition-all h-15 mb-3 rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10" className={classNames(
settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? '-' : ""}${settings.cardBlur}`,
"block w-full text-left cursor-pointer transition-all h-15 mb-3 rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10"
)}
> >
<div className="flex"> <div className="flex">
<div className="flex-shrink-0 flex items-center justify-center w-11 bg-theme-500/10 dark:bg-theme-900/50 text-theme-700 hover:text-theme-700 dark:text-theme-200 text-sm font-medium rounded-l-md"> <div className="flex-shrink-0 flex items-center justify-center w-11 bg-theme-500/10 dark:bg-theme-900/50 text-theme-700 hover:text-theme-700 dark:text-theme-200 text-sm font-medium rounded-l-md bookmark-icon">
{bookmark.icon && {bookmark.icon &&
<div className="flex-shrink-0 w-5 h-5"> <div className="flex-shrink-0 w-5 h-5">
<ResolvedIcon icon={bookmark.icon} alt={bookmark.abbr} /> <ResolvedIcon icon={bookmark.icon} alt={bookmark.abbr} />
@ -24,9 +28,9 @@ export default function Item({ bookmark }) {
} }
{!bookmark.icon && bookmark.abbr} {!bookmark.icon && bookmark.abbr}
</div> </div>
<div className="flex-1 flex items-center justify-between rounded-r-md "> <div className="flex-1 flex items-center justify-between rounded-r-md bookmark-text">
<div className="flex-1 grow pl-3 py-2 text-xs">{bookmark.name}</div> <div className="flex-1 grow pl-3 py-2 text-xs bookmark-name">{bookmark.name}</div>
<div className="px-2 py-2 truncate text-theme-500 dark:text-theme-300 text-xs">{hostname}</div> <div className="px-2 py-2 truncate text-theme-500 dark:text-theme-300 text-xs bookmark-description">{description}</div>
</div> </div>
</div> </div>
</a> </a>

View File

@ -1,8 +1,17 @@
import classNames from "classnames";
import { columnMap } from "../../utils/layout/columns";
import Item from "components/bookmarks/item"; import Item from "components/bookmarks/item";
export default function List({ bookmarks }) { export default function List({ bookmarks, layout }) {
return ( return (
<ul className="mt-3 flex flex-col"> <ul
className={classNames(
layout?.style === "row" ? `grid ${columnMap[layout?.columns]} gap-x-2` : "flex flex-col",
"mt-3 bookmark-list"
)}
>
{bookmarks.map((bookmark) => ( {bookmarks.map((bookmark) => (
<Item key={`${bookmark.name}-${bookmark.href}`} bookmark={bookmark} /> <Item key={`${bookmark.name}-${bookmark.href}`} bookmark={bookmark} />
))} ))}

View File

@ -0,0 +1,10 @@
import useSWR from "swr"
export default function FileContent({ path, loadingValue, errorValue, emptyValue = '' }) {
const fetcher = (url) => fetch(url).then((res) => res.text())
const { data, error, isLoading } = useSWR(`/api/config/${ path }`, fetcher)
if (error) return (errorValue)
if (isLoading) return (loadingValue)
return (data || emptyValue)
}

View File

@ -61,7 +61,6 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
} }
} }
function handleItemHover(event) { function handleItemHover(event) {
setCurrentItemIndex(parseInt(event.target?.dataset?.index, 10)); setCurrentItemIndex(parseInt(event.target?.dataset?.index, 10));
} }
@ -71,6 +70,16 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
openCurrentItem(event.metaKey); openCurrentItem(event.metaKey);
} }
function handleItemKeyDown(event) {
if (!isOpen) return;
// native button handles other keys
if (event.key === "Escape") {
closeAndReset();
event.preventDefault();
}
}
useEffect(() => { useEffect(() => {
if (searchString.length === 0) setResults([]); if (searchString.length === 0) setResults([]);
else { else {
@ -145,7 +154,7 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
return ( return (
<div className={classNames( <div className={classNames(
"relative z-20 ease-in-out duration-300 transition-opacity", "relative z-40 ease-in-out duration-300 transition-opacity",
hidden && !isOpen && "hidden", hidden && !isOpen && "hidden",
!hidden && isOpen && "opacity-100", !hidden && isOpen && "opacity-100",
!isOpen && "opacity-0", !isOpen && "opacity-0",
@ -162,10 +171,10 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
{results.length > 0 && <ul className="max-h-[60vh] overflow-y-auto m-2"> {results.length > 0 && <ul className="max-h-[60vh] overflow-y-auto m-2">
{results.map((r, i) => ( {results.map((r, i) => (
<li key={r.container ?? r.app ?? `${r.name}-${r.href}`}> <li key={r.container ?? r.app ?? `${r.name}-${r.href}`}>
<button type="button" data-index={i} onMouseEnter={handleItemHover} className={classNames( <button type="button" data-index={i} onMouseEnter={handleItemHover} onClick={handleItemClick} onKeyDown={handleItemKeyDown} className={classNames(
"flex flex-row w-full items-center justify-between rounded-md text-sm md:text-xl py-2 px-4 cursor-pointer text-theme-700 dark:text-theme-200", "flex flex-row w-full items-center justify-between rounded-md text-sm md:text-xl py-2 px-4 cursor-pointer text-theme-700 dark:text-theme-200",
i === currentItemIndex && "bg-theme-300/50 dark:bg-theme-700/50", i === currentItemIndex && "bg-theme-300/50 dark:bg-theme-700/50",
)} onClick={handleItemClick}> )}>
<div className="flex flex-row items-center mr-4 pointer-events-none"> <div className="flex flex-row items-center mr-4 pointer-events-none">
{(r.icon || r.abbr) && <div className="w-5 text-xs mr-4"> {(r.icon || r.abbr) && <div className="w-5 text-xs mr-4">
{r.icon && <ResolvedIcon icon={r.icon} />} {r.icon && <ResolvedIcon icon={r.icon} />}

View File

@ -33,11 +33,22 @@ export default function ResolvedIcon({ icon, width = 32, height = 32, alt = "log
} }
// check mdi- or si- prefixed icons // check mdi- or si- prefixed icons
const prefix = icon.split("-")[0] const prefix = icon.split("-")[0];
if (prefix in iconSetURLs) { if (prefix in iconSetURLs) {
// get icon source // default to theme setting
const iconName = icon.replace(`${prefix}-`, "").replace(".svg", ""); let iconName = icon.replace(`${prefix}-`, "").replace(".svg", "");
let iconColor = settings.iconStyle === "theme" ?
`rgb(var(--color-${ theme === "dark" ? 300 : 900 }) / var(--tw-text-opacity, 1))` :
"linear-gradient(180deg, rgb(var(--color-logo-start)), rgb(var(--color-logo-stop)))";
// use custom hex color if provided
const colorMatches = icon.match(/[#][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]$/i)
if (colorMatches?.length) {
iconName = icon.replace(`${prefix}-`, "").replace(".svg", "").replace(`-${colorMatches[0]}`, "");
iconColor = `${colorMatches[0]}`;
}
const iconSource = `${iconSetURLs[prefix]}${iconName}.svg`; const iconSource = `${iconSetURLs[prefix]}${iconName}.svg`;
return ( return (
@ -47,9 +58,7 @@ export default function ResolvedIcon({ icon, width = 32, height = 32, alt = "log
height, height,
maxWidth: '100%', maxWidth: '100%',
maxHeight: '100%', maxHeight: '100%',
background: settings.iconStyle === "theme" ? background: `${iconColor}`,
`rgb(var(--color-${ theme === "dark" ? 300 : 900 }) / var(--tw-text-opacity, 1))` :
"linear-gradient(180deg, rgb(var(--color-logo-start)), rgb(var(--color-logo-stop)))",
mask: `url(${iconSource}) no-repeat center / contain`, mask: `url(${iconSource}) no-repeat center / contain`,
WebkitMask: `url(${iconSource}) no-repeat center / contain`, WebkitMask: `url(${iconSource}) no-repeat center / contain`,
}} }}
@ -57,7 +66,6 @@ export default function ResolvedIcon({ icon, width = 32, height = 32, alt = "log
); );
} }
// fallback to dashboard-icons // fallback to dashboard-icons
if (icon.endsWith(".svg")) { if (icon.endsWith(".svg")) {
const iconName = icon.replace(".svg", ""); const iconName = icon.replace(".svg", "");

View File

@ -14,27 +14,30 @@ export default function ServicesGroup({ group, services, layout, fiveColumns, di
<div <div
key={services.name} key={services.name}
className={classNames( className={classNames(
"services-group",
layout?.style === "row" ? "basis-full" : "basis-full md:basis-1/2 lg:basis-1/3 xl:basis-1/4", layout?.style === "row" ? "basis-full" : "basis-full md:basis-1/2 lg:basis-1/3 xl:basis-1/4",
layout?.style !== "row" && fiveColumns ? "3xl:basis-1/5" : "", layout?.style !== "row" && fiveColumns ? "3xl:basis-1/5" : "",
"flex-1 p-1" layout?.header === false ? "flex-1 px-1 -my-1" : "flex-1 p-1",
)} )}
> >
<Disclosure defaultOpen> <Disclosure defaultOpen>
{({ open }) => ( {({ open }) => (
<> <>
{ layout?.header !== false &&
<Disclosure.Button disabled={disableCollapse} className="flex w-full select-none items-center group"> <Disclosure.Button disabled={disableCollapse} className="flex w-full select-none items-center group">
{layout?.icon && {layout?.icon &&
<div className="flex-shrink-0 mr-2 w-7 h-7"> <div className="flex-shrink-0 mr-2 w-7 h-7 service-group-icon">
<ResolvedIcon icon={layout.icon} /> <ResolvedIcon icon={layout.icon} />
</div> </div>
} }
<h2 className="flex text-theme-800 dark:text-theme-300 text-xl font-medium">{services.name}</h2> <h2 className="flex text-theme-800 dark:text-theme-300 text-xl font-medium service-group-name">{services.name}</h2>
<MdKeyboardArrowDown className={classNames( <MdKeyboardArrowDown className={classNames(
disableCollapse ? 'hidden' : '', disableCollapse ? 'hidden' : '',
'transition-all opacity-0 group-hover:opacity-100 ml-auto text-theme-800 dark:text-theme-300 text-xl', 'transition-all opacity-0 group-hover:opacity-100 ml-auto text-theme-800 dark:text-theme-300 text-xl',
open ? '' : 'rotate-90' open ? '' : 'rotate-180'
)} /> )} />
</Disclosure.Button> </Disclosure.Button>
}
<Transition <Transition
// Otherwise the transition group does display: none and cancels animation // Otherwise the transition group does display: none and cancels animation
className="!block" className="!block"

View File

@ -29,26 +29,30 @@ export default function Item({ service, group }) {
} }
}; };
return ( return (
<li key={service.name}> <li key={service.name} id={service.id} className="service" data-name={service.name || ""}>
<div <div
className={`${ className={classNames(
hasLink ? "cursor-pointer " : " " settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? '-' : ""}${settings.cardBlur}`,
}transition-all h-15 mb-2 p-1 rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10 relative`} hasLink && "cursor-pointer",
"transition-all h-15 mb-2 p-1 rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10 relative overflow-clip service-card"
)}
> >
<div className="flex select-none"> <div className="flex select-none z-0 service-title">
{service.icon && {service.icon &&
(hasLink ? ( (hasLink ? (
<a <a
href={service.href} href={service.href}
target={service.target ?? settings.target ?? "_blank"} target={service.target ?? settings.target ?? "_blank"}
rel="noreferrer" rel="noreferrer"
className="flex-shrink-0 flex items-center justify-center w-12 " className="flex-shrink-0 flex items-center justify-center w-12 service-icon"
> >
<ResolvedIcon icon={service.icon} /> <ResolvedIcon icon={service.icon} />
</a> </a>
) : ( ) : (
<div className="flex-shrink-0 flex items-center justify-center w-12 "> <div className="flex-shrink-0 flex items-center justify-center w-12 service-icon">
<ResolvedIcon icon={service.icon} /> <ResolvedIcon icon={service.icon} />
</div> </div>
))} ))}
@ -58,25 +62,25 @@ export default function Item({ service, group }) {
href={service.href} href={service.href}
target={service.target ?? settings.target ?? "_blank"} target={service.target ?? settings.target ?? "_blank"}
rel="noreferrer" rel="noreferrer"
className="flex-1 flex items-center justify-between rounded-r-md " className="flex-1 flex items-center justify-between rounded-r-md service-title-text"
> >
<div className="flex-1 px-2 py-2 text-sm text-left"> <div className="flex-1 px-2 py-2 text-sm text-left z-10 service-name">
{service.name} {service.name}
<p className="text-theme-500 dark:text-theme-300 text-xs font-light">{service.description}</p> <p className="text-theme-500 dark:text-theme-300 text-xs font-light service-description">{service.description}</p>
</div> </div>
</a> </a>
) : ( ) : (
<div className="flex-1 flex items-center justify-between rounded-r-md "> <div className="flex-1 flex items-center justify-between rounded-r-md service-title-text">
<div className="flex-1 px-2 py-2 text-sm text-left"> <div className="flex-1 px-2 py-2 text-sm text-left z-10 service-name">
{service.name} {service.name}
<p className="text-theme-500 dark:text-theme-300 text-xs font-light">{service.description}</p> <p className="text-theme-500 dark:text-theme-300 text-xs font-light service-description">{service.description}</p>
</div> </div>
</div> </div>
)} )}
<div className="absolute top-0 right-0 w-1/2 flex flex-row justify-end gap-2 mr-2"> <div className="absolute top-0 right-0 flex flex-row justify-end gap-2 mr-2 z-30 service-tags">
{service.ping && ( {service.ping && (
<div className="flex-shrink-0 flex items-center justify-center cursor-pointer"> <div className="flex-shrink-0 flex items-center justify-center service-tag service-ping">
<Ping group={group} service={service.name} /> <Ping group={group} service={service.name} />
<span className="sr-only">Ping status</span> <span className="sr-only">Ping status</span>
</div> </div>
@ -86,7 +90,7 @@ export default function Item({ service, group }) {
<button <button
type="button" type="button"
onClick={() => (statsOpen ? closeStats() : setStatsOpen(true))} onClick={() => (statsOpen ? closeStats() : setStatsOpen(true))}
className="flex-shrink-0 flex items-center justify-center cursor-pointer" className="flex-shrink-0 flex items-center justify-center cursor-pointer service-tag service-container-stats"
> >
<Status service={service} /> <Status service={service} />
<span className="sr-only">View container stats</span> <span className="sr-only">View container stats</span>
@ -96,7 +100,7 @@ export default function Item({ service, group }) {
<button <button
type="button" type="button"
onClick={() => (statsOpen ? closeStats() : setStatsOpen(true))} onClick={() => (statsOpen ? closeStats() : setStatsOpen(true))}
className="flex-shrink-0 flex items-center justify-center cursor-pointer" className="flex-shrink-0 flex items-center justify-center cursor-pointer service-tag service-app"
> >
<KubernetesStatus service={service} /> <KubernetesStatus service={service} />
<span className="sr-only">View container stats</span> <span className="sr-only">View container stats</span>
@ -109,7 +113,7 @@ export default function Item({ service, group }) {
<div <div
className={classNames( className={classNames(
showStats || (statsOpen && !statsClosing) ? "max-h-[110px] opacity-100" : " max-h-[0] opacity-0", showStats || (statsOpen && !statsClosing) ? "max-h-[110px] opacity-100" : " max-h-[0] opacity-0",
"w-full overflow-hidden transition-all duration-300 ease-in-out" "w-full overflow-hidden transition-all duration-300 ease-in-out service-stats"
)} )}
> >
{(showStats || statsOpen) && <Docker service={{ widget: { container: service.container, server: service.server } }} />} {(showStats || statsOpen) && <Docker service={{ widget: { container: service.container, server: service.server } }} />}
@ -119,7 +123,7 @@ export default function Item({ service, group }) {
<div <div
className={classNames( className={classNames(
showStats || (statsOpen && !statsClosing) ? "max-h-[55px] opacity-100" : " max-h-[0] opacity-0", showStats || (statsOpen && !statsClosing) ? "max-h-[55px] opacity-100" : " max-h-[0] opacity-0",
"w-full overflow-hidden transition-all duration-300 ease-in-out" "w-full overflow-hidden transition-all duration-300 ease-in-out service-stats"
)} )}
> >
{(showStats || statsOpen) && <Kubernetes service={{ widget: { namespace: service.namespace, app: service.app, podSelector: service.podSelector } }} />} {(showStats || statsOpen) && <Kubernetes service={{ widget: { namespace: service.namespace, app: service.app, podSelector: service.podSelector } }} />}

View File

@ -6,14 +6,14 @@ export default function KubernetesStatus({ service }) {
const { data, error } = useSWR(`/api/kubernetes/status/${service.namespace}/${service.app}?${podSelectorString}`); const { data, error } = useSWR(`/api/kubernetes/status/${service.namespace}/${service.app}?${podSelectorString}`);
if (error) { if (error) {
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={t("docker.error")}> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden k8s-status-error" title={t("docker.error")}>
<div className="text-[8px] font-bold text-rose-500/80 uppercase">{t("docker.error")}</div> <div className="text-[8px] font-bold text-rose-500/80 uppercase">{t("docker.error")}</div>
</div> </div>
} }
if (data && data.status === "running") { if (data && data.status === "running") {
return ( return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={data.health ?? data.status}> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden k8s-status" title={data.health ?? data.status}>
<div className="text-[8px] font-bold text-emerald-500/80 uppercase">{data.health ?? data.status}</div> <div className="text-[8px] font-bold text-emerald-500/80 uppercase">{data.health ?? data.status}</div>
</div> </div>
); );
@ -21,14 +21,14 @@ export default function KubernetesStatus({ service }) {
if (data && (data.status === "not found" || data.status === "down" || data.status === "partial")) { if (data && (data.status === "not found" || data.status === "down" || data.status === "partial")) {
return ( return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={data.status}> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden k8s-status-warning" title={data.status}>
<div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{data.status}</div> <div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{data.status}</div>
</div> </div>
); );
} }
return ( return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden"> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden k8s-status-unknown">
<div className="text-[8px] font-bold text-black/20 dark:text-white/40 uppercase">{t("docker.unknown")}</div> <div className="text-[8px] font-bold text-black/20 dark:text-white/40 uppercase">{t("docker.unknown")}</div>
</div> </div>
); );

View File

@ -1,25 +1,15 @@
import classNames from "classnames"; import classNames from "classnames";
import Item from "components/services/item"; import { columnMap } from "../../utils/layout/columns";
const columnMap = [ import Item from "components/services/item";
"grid-cols-1 md:grid-cols-1 lg:grid-cols-1",
"grid-cols-1 md:grid-cols-1 lg:grid-cols-1",
"grid-cols-1 md:grid-cols-2 lg:grid-cols-2",
"grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
"grid-cols-1 md:grid-cols-2 lg:grid-cols-4",
"grid-cols-1 md:grid-cols-2 lg:grid-cols-5",
"grid-cols-1 md:grid-cols-2 lg:grid-cols-6",
"grid-cols-1 md:grid-cols-2 lg:grid-cols-7",
"grid-cols-1 md:grid-cols-2 lg:grid-cols-8",
];
export default function List({ group, services, layout }) { export default function List({ group, services, layout }) {
return ( return (
<ul <ul
className={classNames( className={classNames(
layout?.style === "row" ? `grid ${columnMap[layout?.columns]} gap-x-2` : "flex flex-col", layout?.style === "row" ? `grid ${columnMap[layout?.columns]} gap-x-2` : "flex flex-col",
"mt-3" "mt-3 services-list"
)} )}
> >
{services.map((service) => ( {services.map((service) => (

View File

@ -9,7 +9,7 @@ export default function Ping({ group, service }) {
if (error) { if (error) {
return ( return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden"> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden ping-error">
<div className="text-[8px] font-bold text-rose-500 uppercase">{t("ping.error")}</div> <div className="text-[8px] font-bold text-rose-500 uppercase">{t("ping.error")}</div>
</div> </div>
); );
@ -17,7 +17,7 @@ export default function Ping({ group, service }) {
if (!data) { if (!data) {
return ( return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden"> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden ping-ping">
<div className="text-[8px] font-bold text-black/20 dark:text-white/40 uppercase">{t("ping.ping")}</div> <div className="text-[8px] font-bold text-black/20 dark:text-white/40 uppercase">{t("ping.ping")}</div>
</div> </div>
); );
@ -27,14 +27,14 @@ export default function Ping({ group, service }) {
if (data.status > 403) { if (data.status > 403) {
return ( return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={statusText}> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden ping-status-invalid" title={statusText}>
<div className="text-[8px] font-bold text-rose-500/80">{data.status}</div> <div className="text-[8px] font-bold text-rose-500/80">{data.status}</div>
</div> </div>
); );
} }
return ( return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={statusText}> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden ping-status-valid" title={statusText}>
<div className="text-[8px] font-bold text-emerald-500/80">{t("common.ms", { value: data.latency, style: "unit", unit: "millisecond", maximumFractionDigits: 0 })}</div> <div className="text-[8px] font-bold text-emerald-500/80">{t("common.ms", { value: data.latency, style: "unit", unit: "millisecond", maximumFractionDigits: 0 })}</div>
</div> </div>
); );

View File

@ -7,7 +7,7 @@ export default function Status({ service }) {
const { data, error } = useSWR(`/api/docker/status/${service.container}/${service.server || ""}`); const { data, error } = useSWR(`/api/docker/status/${service.container}/${service.server || ""}`);
if (error) { if (error) {
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={t("docker.error")}> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden docker-error" title={t("docker.error")}>
<div className="text-[8px] font-bold text-rose-500/80 uppercase">{t("docker.error")}</div> <div className="text-[8px] font-bold text-rose-500/80 uppercase">{t("docker.error")}</div>
</div> </div>
} }
@ -18,7 +18,7 @@ export default function Status({ service }) {
if (data.status?.includes("running")) { if (data.status?.includes("running")) {
if (data.health === "starting") { if (data.health === "starting") {
return ( return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={t("docker.starting")}> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden docker-starting" title={t("docker.starting")}>
<div className="text-[8px] font-bold text-blue-500/80 uppercase">{t("docker.starting")}</div> <div className="text-[8px] font-bold text-blue-500/80 uppercase">{t("docker.starting")}</div>
</div> </div>
); );
@ -26,7 +26,7 @@ export default function Status({ service }) {
if (data.health === "unhealthy") { if (data.health === "unhealthy") {
return ( return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={t("docker.unhealthy")}> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden docker-unhealthy" title={t("docker.unhealthy")}>
<div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{t("docker.unhealthy")}</div> <div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{t("docker.unhealthy")}</div>
</div> </div>
); );
@ -39,7 +39,7 @@ export default function Status({ service }) {
} }
return ( return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={statusLabel}> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden docker-status" title={statusLabel}>
<div className="text-[8px] font-bold text-emerald-500/80 uppercase">{statusLabel}</div> <div className="text-[8px] font-bold text-emerald-500/80 uppercase">{statusLabel}</div>
</div> </div>
); );
@ -50,7 +50,7 @@ export default function Status({ service }) {
else if (data.status === "exited") statusLabel = t("docker.exited") else if (data.status === "exited") statusLabel = t("docker.exited")
else statusLabel = data.status.replace("partial", t("docker.partial")) else statusLabel = data.status.replace("partial", t("docker.partial"))
return ( return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={statusLabel}> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden docker-status-warning" title={statusLabel}>
<div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{statusLabel}</div> <div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{statusLabel}</div>
</div> </div>
); );
@ -58,7 +58,7 @@ export default function Status({ service }) {
} }
return ( return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden"> <div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden docker-status-unknown">
<div className="text-[8px] font-bold text-black/20 dark:text-white/40 uppercase">{t("docker.unknown")}</div> <div className="text-[8px] font-bold text-black/20 dark:text-white/40 uppercase">{t("docker.unknown")}</div>
</div> </div>
); );

View File

@ -17,7 +17,7 @@ export default function Widget({ service }) {
} }
return ( return (
<div className="bg-theme-200/50 dark:bg-theme-900/20 rounded m-1 flex-1 flex flex-col items-center justify-center p-1"> <div className="bg-theme-200/50 dark:bg-theme-900/20 rounded m-1 flex-1 flex flex-col items-center justify-center p-1 service-missing">
<div className="font-thin text-sm">{t("widget.missing_type", { type: service.widget.type })}</div> <div className="font-thin text-sm">{t("widget.missing_type", { type: service.widget.type })}</div>
</div> </div>
); );

View File

@ -8,7 +8,8 @@ export default function Block({ value, label }) {
<div <div
className={classNames( className={classNames(
"bg-theme-200/50 dark:bg-theme-900/20 rounded m-1 flex-1 flex flex-col items-center justify-center text-center p-1", "bg-theme-200/50 dark:bg-theme-900/20 rounded m-1 flex-1 flex flex-col items-center justify-center text-center p-1",
value === undefined ? "animate-pulse" : "" value === undefined ? "animate-pulse" : "",
"service-block"
)} )}
> >
<div className="font-thin text-sm">{value === undefined || value === null ? "-" : value}</div> <div className="font-thin text-sm">{value === undefined || value === null ? "-" : value}</div>

View File

@ -19,7 +19,7 @@ export default function Container({ error = false, children, service }) {
let visibleChildren = childrenArray; let visibleChildren = childrenArray;
let fields = service?.widget?.fields; let fields = service?.widget?.fields;
if (typeof service.widget.fields === 'string') fields = JSON.parse(service.widget.fields); if (typeof fields === 'string') fields = JSON.parse(service.widget.fields);
const type = service?.widget?.type; const type = service?.widget?.type;
if (fields && type) { if (fields && type) {
// if the field contains a "." then it most likely contains a common loc value // if the field contains a "." then it most likely contains a common loc value
@ -36,5 +36,5 @@ export default function Container({ error = false, children, service }) {
})); }));
} }
return <div className="relative flex flex-row w-full">{visibleChildren}</div>; return <div className="relative flex flex-row w-full service-container">{visibleChildren}</div>;
} }

31
src/components/tab.jsx Normal file
View File

@ -0,0 +1,31 @@
import { useContext } from "react";
import classNames from "classnames";
import { TabContext } from "utils/contexts/tab";
export function slugify(tabName) {
return tabName !== undefined ? encodeURIComponent(tabName.toString().replace(/\s+/g, '-').toLowerCase()) : ''
}
export default function Tab({ tab }) {
const { activeTab, setActiveTab } = useContext(TabContext);
return (
<li key={tab} role="presentation"
className={classNames(
"text-theme-700 dark:text-theme-200 relative h-8 w-full rounded-md flex m-1",
)}>
<button id={`${tab}-tab`} type="button" role="tab"
aria-controls={`#${tab}`} aria-selected={activeTab === slugify(tab) ? "true" : "false"}
className={classNames(
"h-full w-full rounded-md",
activeTab === slugify(tab) ? "bg-theme-300/20 dark:bg-white/10" : "hover:bg-theme-100/20 dark:hover:bg-white/5",
)}
onClick={() => {
setActiveTab(slugify(tab));
window.location.hash = `#${slugify(tab)}`;
}}
>{tab}</button>
</li>
);
}

View File

@ -38,7 +38,7 @@ export default function ColorToggle() {
} }
return ( return (
<div className="w-full self-center"> <div id="color" className="w-full self-center">
<Popover className="relative flex items-center"> <Popover className="relative flex items-center">
<Popover.Button className="outline-none"> <Popover.Button className="outline-none">
<IoColorPalette <IoColorPalette

View File

@ -10,7 +10,7 @@ export default function Revalidate() {
}; };
return ( return (
<div className="rounded-full flex align-middle self-center mr-3"> <div id="revalidate" className="rounded-full flex align-middle self-center mr-3">
<MdRefresh onClick={() => revalidate()} className="text-theme-800 dark:text-theme-200 w-6 h-6 cursor-pointer" /> <MdRefresh onClick={() => revalidate()} className="text-theme-800 dark:text-theme-200 w-6 h-6 cursor-pointer" />
</div> </div>
); );

View File

@ -11,7 +11,7 @@ export default function ThemeToggle() {
} }
return ( return (
<div className="rounded-full flex self-end"> <div id="theme" className="rounded-full flex self-end">
<MdLightMode className="text-theme-800 dark:text-theme-200 w-5 h-5 m-1.5" /> <MdLightMode className="text-theme-800 dark:text-theme-200 w-5 h-5 m-1.5" />
{theme === "dark" ? ( {theme === "dark" ? (
<MdToggleOn <MdToggleOn

View File

@ -25,7 +25,7 @@ export default function Version() {
const latestRelease = releaseData?.[0]; const latestRelease = releaseData?.[0];
return ( return (
<div className="flex flex-row items-center"> <div id="version" className="flex flex-row items-center">
<span className="text-xs text-theme-500 dark:text-theme-400"> <span className="text-xs text-theme-500 dark:text-theme-400">
{version === "main" || version === "dev" || version === "nightly" ? ( {version === "main" || version === "dev" || version === "nightly" ? (
<> <>

View File

@ -30,7 +30,7 @@ export default function DateTime({ options }) {
}, [date, setDate, dateLocale, format]); }, [date, setDate, dateLocale, format]);
return ( return (
<Container options={options}> <Container options={options} additionalClassNames="information-widget-datetime">
<Raw> <Raw>
<div className="flex flex-row items-center grow justify-end"> <div className="flex flex-row items-center grow justify-end">
<span className={`text-theme-800 dark:text-theme-200 tabular-nums ${textSizes[textSize || "lg"]}`}> <span className={`text-theme-800 dark:text-theme-200 tabular-nums ${textSizes[textSize || "lg"]}`}>

View File

@ -3,6 +3,7 @@ import { useContext } from "react";
import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa"; import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa";
import { FiCpu, FiHardDrive } from "react-icons/fi"; import { FiCpu, FiHardDrive } from "react-icons/fi";
import { useTranslation } from "next-i18next"; import { useTranslation } from "next-i18next";
import classNames from "classnames";
import Error from "../widget/error"; import Error from "../widget/error";
import Resource from "../widget/resource"; import Resource from "../widget/resource";
@ -32,12 +33,12 @@ export default function Widget({ options }) {
} }
if (!data) { if (!data) {
return <Resources options={options}> return <Resources options={options} additionalClassNames="information-widget-glances">
<Resource icon={FiCpu} label={t("glances.wait")} percentage="0" /> { options.cpu !== false && <Resource icon={FiCpu} label={t("glances.wait")} percentage="0" /> }
<Resource icon={FaMemory} label={t("glances.wait")} percentage="0" /> { options.mem !== false && <Resource icon={FaMemory} label={t("glances.wait")} percentage="0" /> }
{ options.cputemp && <Resource icon={FaThermometerHalf} label={t("glances.wait")} percentage="0" /> } { options.cputemp && <Resource icon={FaThermometerHalf} label={t("glances.wait")} percentage="0" /> }
{ options.disk && !Array.isArray(options.disk) && <Resource key={options.disk} icon={FiHardDrive} label={t("glances.wait")} percentage="0" /> } { options.disk && !Array.isArray(options.disk) && <Resource key={options.disk} icon={FiHardDrive} label={t("glances.wait")} percentage="0" /> }
{ options.disk && Array.isArray(options.disk) && options.disk.map((disk) => <Resource key={`disk_${disk.mnt_point}`} icon={FiHardDrive} label={t("glances.wait")} percentage="0" /> ) } { options.disk && Array.isArray(options.disk) && options.disk.map((disk) => <Resource key={`disk_${disk}`} icon={FiHardDrive} label={t("glances.wait")} percentage="0" /> ) }
{ options.uptime && <Resource icon={FaRegClock} label={t("glances.wait")} percentage="0" /> } { options.uptime && <Resource icon={FaRegClock} label={t("glances.wait")} percentage="0" /> }
{ options.label && <WidgetLabel label={options.label} /> } { options.label && <WidgetLabel label={options.label} /> }
</Resources>; </Resources>;
@ -69,9 +70,11 @@ export default function Widget({ options }) {
: [data.fs.find((d) => d.mnt_point === options.disk)].filter((d) => d); : [data.fs.find((d) => d.mnt_point === options.disk)].filter((d) => d);
} }
const addedClasses = classNames('information-widget-glances', { 'expanded': options.expanded })
return ( return (
<Resources options={options} target={settings.target ?? "_blank"}> <Resources options={options} target={settings.target ?? "_blank"} additionalClassNames={addedClasses}>
<Resource {options.cpu !== false && <Resource
icon={FiCpu} icon={FiCpu}
value={t("common.number", { value={t("common.number", {
value: data.cpu.total, value: data.cpu.total,
@ -89,8 +92,8 @@ export default function Widget({ options }) {
expandedLabel={t("glances.load")} expandedLabel={t("glances.load")}
percentage={data.cpu.total} percentage={data.cpu.total}
expanded={options.expanded} expanded={options.expanded}
/> />}
<Resource {options.mem !== false && <Resource
icon={FaMemory} icon={FaMemory}
value={t("common.bytes", { value={t("common.bytes", {
value: data.mem.free, value: data.mem.free,
@ -106,9 +109,9 @@ export default function Widget({ options }) {
expandedLabel={t("glances.total")} expandedLabel={t("glances.total")}
percentage={data.mem.percent} percentage={data.mem.percent}
expanded={options.expanded} expanded={options.expanded}
/> />}
{disks.map((disk) => ( {disks.map((disk) => (
<Resource key={`disk_${disk.mnt_point}`} <Resource key={`disk_${disk.mnt_point ?? disk.device_name}`}
icon={FiHardDrive} icon={FiHardDrive}
value={t("common.bytes", { value: disk.free })} value={t("common.bytes", { value: disk.free })}
label={t("glances.free")} label={t("glances.free")}

View File

@ -14,7 +14,7 @@ const textSizes = {
export default function Greeting({ options }) { export default function Greeting({ options }) {
if (options.text) { if (options.text) {
return <Container options={options}> return <Container options={options} additionalClassNames="information-widget-greeting">
<Raw> <Raw>
<span className={`text-theme-800 dark:text-theme-200 mr-3 ${textSizes[options.text_size || "xl"]}`}> <span className={`text-theme-800 dark:text-theme-200 mr-3 ${textSizes[options.text_size || "xl"]}`}>
{options.text} {options.text}

View File

@ -36,7 +36,7 @@ export default function Widget({ options }) {
} }
if (!data) { if (!data) {
return <Container options={options}> return <Container options={options} additionalClassNames="information-widget-kubernetes">
<Raw> <Raw>
<div className="flex flex-row self-center flex-wrap justify-between"> <div className="flex flex-row self-center flex-wrap justify-between">
{cluster.show && {cluster.show &&
@ -50,7 +50,7 @@ export default function Widget({ options }) {
</Container>; </Container>;
} }
return <Container options={options}> return <Container options={options} additionalClassNames="information-widget-kubernetes">
<Raw> <Raw>
<div className="flex flex-row self-center flex-wrap justify-between"> <div className="flex flex-row self-center flex-wrap justify-between">
{cluster.show && {cluster.show &&

View File

@ -5,12 +5,14 @@ import ResolvedIcon from "components/resolvedicon"
export default function Logo({ options }) { export default function Logo({ options }) {
return ( return (
<Container options={options}> <Container options={options} additionalClassNames={`information-widget-logo ${ options.icon ? 'resolved' : 'fallback'}`}>
<Raw> <Raw>
{options.icon ? {options.icon ?
<ResolvedIcon icon={options.icon} width={48} height={48} /> : <div className="resolved mr-3">
<ResolvedIcon icon={options.icon} width={48} height={48} />
</div> :
// fallback to homepage logo // fallback to homepage logo
<div className="w-12 h-12"> <div className="fallback w-12 h-12">
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 1024 1024" viewBox="0 0 1024 1024"

View File

@ -17,14 +17,14 @@ export default function Longhorn({ options }) {
} }
if (!data) { if (!data) {
return <Container options={options}> return <Container options={options} additionalClassNames="infomation-widget-longhorn">
<Raw> <Raw>
<div className="flex flex-row self-center flex-wrap justify-between" /> <div className="flex flex-row self-center flex-wrap justify-between" />
</Raw> </Raw>
</Container>; </Container>;
} }
return <Container options={options}> return <Container options={options} additionalClassNames="infomation-widget-longhorn">
<Raw> <Raw>
<div className="flex flex-row self-center flex-wrap justify-between"> <div className="flex flex-row self-center flex-wrap justify-between">
{data.nodes {data.nodes

View File

@ -8,6 +8,7 @@ export default function Node({ data, expanded, labels }) {
const { t } = useTranslation(); const { t } = useTranslation();
return <Resource return <Resource
additionalClassNames="information-widget-longhorn-node"
icon={FaThermometerHalf} icon={FaThermometerHalf}
value={t("common.bytes", { value: data.node.available })} value={t("common.bytes", { value: data.node.available })}
label={t("resources.free")} label={t("resources.free")}

View File

@ -24,7 +24,7 @@ function Widget({ options }) {
} }
if (!data) { if (!data) {
return <Container options={options}> return <Container options={options} additionalClassNames="information-widget-openmeteo">
<PrimaryText>{t("weather.updating")}</PrimaryText> <PrimaryText>{t("weather.updating")}</PrimaryText>
<SecondaryText>{t("weather.wait")}</SecondaryText> <SecondaryText>{t("weather.wait")}</SecondaryText>
<WidgetIcon icon={WiCloudDown} size="l" /> <WidgetIcon icon={WiCloudDown} size="l" />
@ -35,7 +35,7 @@ function Widget({ options }) {
const condition = data.current_weather.weathercode; const condition = data.current_weather.weathercode;
const timeOfDay = data.current_weather.time > data.daily.sunrise[0] && data.current_weather.time < data.daily.sunset[0] ? "day" : "night"; const timeOfDay = data.current_weather.time > data.daily.sunrise[0] && data.current_weather.time < data.daily.sunset[0] ? "day" : "night";
return <Container options={options}> return <Container options={options} additionalClassNames="information-widget-openmeteo">
<PrimaryText> <PrimaryText>
{options.label && `${options.label}, `} {options.label && `${options.label}, `}
{t("common.number", { {t("common.number", {
@ -81,7 +81,7 @@ export default function OpenMeteo({ options }) {
// if (!requesting && !location) requestLocation(); // if (!requesting && !location) requestLocation();
if (!location) { if (!location) {
return <ContainerButton options={options} callback={requestLocation} > return <ContainerButton options={options} callback={requestLocation} additionalClassNames="information-widget-openmeteo-location-button">
<PrimaryText>{t("weather.current")}</PrimaryText> <PrimaryText>{t("weather.current")}</PrimaryText>
<SecondaryText>{t("weather.allow")}</SecondaryText> <SecondaryText>{t("weather.allow")}</SecondaryText>
<WidgetIcon icon={ requesting ? MdLocationSearching : MdLocationDisabled} size="m" pulse /> <WidgetIcon icon={ requesting ? MdLocationSearching : MdLocationDisabled} size="m" pulse />

View File

@ -24,7 +24,7 @@ function Widget({ options }) {
} }
if (!data) { if (!data) {
return <Container options={options}> return <Container options={options} additionalClassNames="information-widget-openweathermap">
<PrimaryText>{t("weather.updating")}</PrimaryText> <PrimaryText>{t("weather.updating")}</PrimaryText>
<SecondaryText>{t("weather.wait")}</SecondaryText> <SecondaryText>{t("weather.wait")}</SecondaryText>
<WidgetIcon icon={WiCloudDown} size="l" /> <WidgetIcon icon={WiCloudDown} size="l" />
@ -36,7 +36,7 @@ function Widget({ options }) {
const condition = data.weather[0].id; const condition = data.weather[0].id;
const timeOfDay = data.dt > data.sys.sunrise && data.dt < data.sys.sunset ? "day" : "night"; const timeOfDay = data.dt > data.sys.sunrise && data.dt < data.sys.sunset ? "day" : "night";
return <Container options={options}> return <Container options={options} additionalClassNames="information-widget-openweathermap">
<PrimaryText>{options.label && `${options.label}, ` }{t("common.number", { value: data.main.temp, style: "unit", unit })}</PrimaryText> <PrimaryText>{options.label && `${options.label}, ` }{t("common.number", { value: data.main.temp, style: "unit", unit })}</PrimaryText>
<SecondaryText>{data.weather[0].description}</SecondaryText> <SecondaryText>{data.weather[0].description}</SecondaryText>
<WidgetIcon icon={mapIcon(condition, timeOfDay)} size="xl" /> <WidgetIcon icon={mapIcon(condition, timeOfDay)} size="xl" />

View File

@ -5,11 +5,11 @@ import { useTranslation } from "next-i18next";
import Resource from "../widget/resource"; import Resource from "../widget/resource";
import Error from "../widget/error"; import Error from "../widget/error";
export default function Cpu({ expanded }) { export default function Cpu({ expanded, refresh = 1500 }) {
const { t } = useTranslation(); const { t } = useTranslation();
const { data, error } = useSWR(`/api/widgets/resources?type=cpu`, { const { data, error } = useSWR(`/api/widgets/resources?type=cpu`, {
refreshInterval: 1500, refreshInterval: refresh,
}); });
if (error || data?.error) { if (error || data?.error) {

View File

@ -9,11 +9,11 @@ function convertToFahrenheit(t) {
return t * 9/5 + 32 return t * 9/5 + 32
} }
export default function CpuTemp({ expanded, units }) { export default function CpuTemp({ expanded, units, refresh = 1500 }) {
const { t } = useTranslation(); const { t } = useTranslation();
const { data, error } = useSWR(`/api/widgets/resources?type=cputemp`, { const { data, error } = useSWR(`/api/widgets/resources?type=cputemp`, {
refreshInterval: 1500, refreshInterval: refresh,
}); });
if (error || data?.error) { if (error || data?.error) {

View File

@ -5,11 +5,11 @@ import { useTranslation } from "next-i18next";
import Resource from "../widget/resource"; import Resource from "../widget/resource";
import Error from "../widget/error"; import Error from "../widget/error";
export default function Disk({ options, expanded }) { export default function Disk({ options, expanded, refresh = 1500 }) {
const { t } = useTranslation(); const { t } = useTranslation();
const { data, error } = useSWR(`/api/widgets/resources?type=disk&target=${options.disk}`, { const { data, error } = useSWR(`/api/widgets/resources?type=disk&target=${options.disk}`, {
refreshInterval: 1500, refreshInterval: refresh,
}); });
if (error || data?.error) { if (error || data?.error) {

View File

@ -5,11 +5,11 @@ import { useTranslation } from "next-i18next";
import Resource from "../widget/resource"; import Resource from "../widget/resource";
import Error from "../widget/error"; import Error from "../widget/error";
export default function Memory({ expanded }) { export default function Memory({ expanded, refresh = 1500 }) {
const { t } = useTranslation(); const { t } = useTranslation();
const { data, error } = useSWR(`/api/widgets/resources?type=memory`, { const { data, error } = useSWR(`/api/widgets/resources?type=memory`, {
refreshInterval: 1500, refreshInterval: refresh,
}); });
if (error || data?.error) { if (error || data?.error) {

View File

@ -9,16 +9,19 @@ import Uptime from "./uptime";
export default function Resources({ options }) { export default function Resources({ options }) {
const { expanded, units } = options; const { expanded, units } = options;
let { refresh } = options;
if (!refresh) refresh = 1500;
refresh = Math.max(refresh, 1000);
return <Container options={options}> return <Container options={options}>
<Raw> <Raw>
<div className="flex flex-row self-center flex-wrap justify-between"> <div className="flex flex-row self-center flex-wrap justify-between">
{options.cpu && <Cpu expanded={expanded} />} {options.cpu && <Cpu expanded={expanded} refresh={refresh} />}
{options.memory && <Memory expanded={expanded} />} {options.memory && <Memory expanded={expanded} refresh={refresh} />}
{Array.isArray(options.disk) {Array.isArray(options.disk)
? options.disk.map((disk) => <Disk key={disk} options={{ disk }} expanded={expanded} />) ? options.disk.map((disk) => <Disk key={disk} options={{ disk }} expanded={expanded} refresh={refresh} />)
: options.disk && <Disk options={options} expanded={expanded} />} : options.disk && <Disk options={options} expanded={expanded} refresh={refresh} />}
{options.cputemp && <CpuTemp expanded={expanded} units={units} />} {options.cputemp && <CpuTemp expanded={expanded} units={units} refresh={refresh} />}
{options.uptime && <Uptime />} {options.uptime && <Uptime refresh={refresh} />}
</div> </div>
{options.label && ( {options.label && (
<div className="ml-6 pt-1 text-center text-theme-800 dark:text-theme-200 text-xs">{options.label}</div> <div className="ml-6 pt-1 text-center text-theme-800 dark:text-theme-200 text-xs">{options.label}</div>

View File

@ -5,11 +5,11 @@ import { useTranslation } from "next-i18next";
import Resource from "../widget/resource"; import Resource from "../widget/resource";
import Error from "../widget/error"; import Error from "../widget/error";
export default function Uptime() { export default function Uptime({ refresh = 1500 }) {
const { t } = useTranslation(); const { t } = useTranslation();
const { data, error } = useSWR(`/api/widgets/resources?type=uptime`, { const { data, error } = useSWR(`/api/widgets/resources?type=uptime`, {
refreshInterval: 1500, refreshInterval: refresh,
}); });
if (error || data?.error) { if (error || data?.error) {

View File

@ -1,6 +1,6 @@
export default function UsageBar({ percent }) { export default function UsageBar({ percent, additionalClassNames='' }) {
return ( return (
<div className="mt-0.5 w-full bg-theme-800/30 rounded-full h-1 dark:bg-theme-200/20"> <div className={`mt-0.5 w-full bg-theme-800/30 rounded-full h-1 dark:bg-theme-200/20 ${additionalClassNames}`}>
<div <div
className="bg-theme-800/70 h-1 rounded-full dark:bg-theme-200/50 transition-all duration-1000" className="bg-theme-800/70 h-1 rounded-full dark:bg-theme-200/50 transition-all duration-1000"
style={{ style={{

View File

@ -103,7 +103,7 @@ export default function Search({ options }) {
localStorage.setItem(localStorageKey, provider.name); localStorage.setItem(localStorageKey, provider.name);
} }
return <ContainerForm options={options} callback={submitCallback} additionalClassNames="grow" > return <ContainerForm options={options} callback={submitCallback} additionalClassNames="grow information-widget-search" >
<Raw> <Raw>
<div className="flex-col relative h-8 my-4 min-w-fit"> <div className="flex-col relative h-8 my-4 min-w-fit">
<div className="flex absolute inset-y-0 left-0 items-center pl-3 pointer-events-none w-full text-theme-800 dark:text-white" /> <div className="flex absolute inset-y-0 left-0 items-center pl-3 pointer-events-none w-full text-theme-800 dark:text-white" />

View File

@ -25,7 +25,7 @@ export default function Widget({ options }) {
const defaultSite = options.site ? statsData?.data.find(s => s.desc === options.site) : statsData?.data?.find(s => s.name === "default"); const defaultSite = options.site ? statsData?.data.find(s => s.desc === options.site) : statsData?.data?.find(s => s.name === "default");
if (!defaultSite) { if (!defaultSite) {
return <Container options={options}> return <Container options={options} additionalClassNames="information-widget-unifi-console">
<PrimaryText>{t("unifi.wait")}</PrimaryText> <PrimaryText>{t("unifi.wait")}</PrimaryText>
<WidgetIcon icon={SiUbiquiti} /> <WidgetIcon icon={SiUbiquiti} />
</Container>; </Container>;
@ -43,7 +43,7 @@ export default function Widget({ options }) {
const dataEmpty = !(wan.show || lan.show || wlan.show || uptime); const dataEmpty = !(wan.show || lan.show || wlan.show || uptime);
return <Container options={options}> return <Container options={options} additionalClassNames="information-widget-unifi-console">
<Raw> <Raw>
<div className="flex-none flex flex-row items-center mr-3 py-1.5"> <div className="flex-none flex flex-row items-center mr-3 py-1.5">
<div className="flex flex-col"> <div className="flex flex-col">

View File

@ -24,7 +24,7 @@ function Widget({ options }) {
} }
if (!data) { if (!data) {
return <Container options={options}> return <Container options={options} additionalClassNames="information-widget-weather">
<PrimaryText>{t("weather.updating")}</PrimaryText> <PrimaryText>{t("weather.updating")}</PrimaryText>
<SecondaryText>{t("weather.wait")}</SecondaryText> <SecondaryText>{t("weather.wait")}</SecondaryText>
<WidgetIcon icon={WiCloudDown} size="l" /> <WidgetIcon icon={WiCloudDown} size="l" />
@ -35,7 +35,7 @@ function Widget({ options }) {
const condition = data.current.condition.code; const condition = data.current.condition.code;
const timeOfDay = data.current.is_day ? "day" : "night"; const timeOfDay = data.current.is_day ? "day" : "night";
return <Container options={options}> return <Container options={options} additionalClassNames="information-widget-weather">
<PrimaryText> <PrimaryText>
{options.label && `${options.label}, `} {options.label && `${options.label}, `}
{t("common.number", { {t("common.number", {

View File

@ -7,8 +7,16 @@ import Raw from "./raw";
export function getAllClasses(options, additionalClassNames = '') { export function getAllClasses(options, additionalClassNames = '') {
if (options?.style?.header === "boxedWidgets") { if (options?.style?.header === "boxedWidgets") {
if (options?.style?.cardBlur !== undefined) {
// eslint-disable-next-line no-param-reassign
additionalClassNames = [
additionalClassNames,
`backdrop-blur${options.style.cardBlur.length ? '-' : ""}${options.style.cardBlur}`
].join(' ')
}
return classNames( return classNames(
"flex flex-col justify-center first:ml-0 ml-2 mr-2", "flex flex-col justify-center ml-2 mr-2",
"mt-2 m:mb-0 rounded-md shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 dark:bg-white/5 p-2 pl-3 pr-3", "mt-2 m:mb-0 rounded-md shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 dark:bg-white/5 p-2 pl-3 pr-3",
additionalClassNames additionalClassNames
); );
@ -27,9 +35,9 @@ export function getAllClasses(options, additionalClassNames = '') {
export function getInnerBlock(children) { export function getInnerBlock(children) {
// children won't be an array if it's Raw component // children won't be an array if it's Raw component
return Array.isArray(children) && <div className="flex flex-row items-center justify-end"> return Array.isArray(children) && <div className="flex flex-row items-center justify-end widget-inner">
<div className="flex flex-col items-center">{children.find(child => child.type === WidgetIcon)}</div> <div className="flex flex-col items-center widget-inner-icon">{children.find(child => child.type === WidgetIcon)}</div>
<div className="flex flex-col ml-3 text-left"> <div className="flex flex-col ml-3 text-left widget-inner-text">
{children.find(child => child.type === PrimaryText)} {children.find(child => child.type === PrimaryText)}
{children.find(child => child.type === SecondaryText)} {children.find(child => child.type === SecondaryText)}
</div> </div>
@ -46,7 +54,7 @@ export function getBottomBlock(children) {
export default function Container({ children = [], options, additionalClassNames = '' }) { export default function Container({ children = [], options, additionalClassNames = '' }) {
return ( return (
<div className={getAllClasses(options, additionalClassNames)}> <div className={getAllClasses(options, `${ additionalClassNames } widget-container`)}>
{getInnerBlock(children)} {getInnerBlock(children)}
{getBottomBlock(children)} {getBottomBlock(children)}
</div> </div>

View File

@ -2,7 +2,7 @@ import { getAllClasses, getInnerBlock, getBottomBlock } from "./container";
export default function ContainerButton ({ children = [], options, additionalClassNames = '', callback }) { export default function ContainerButton ({ children = [], options, additionalClassNames = '', callback }) {
return ( return (
<button type="button" onClick={callback} className={getAllClasses(options, additionalClassNames)}> <button type="button" onClick={callback} className={`${ getAllClasses(options, additionalClassNames) } information-widget-container-button`}>
{getInnerBlock(children)} {getInnerBlock(children)}
{getBottomBlock(children)} {getBottomBlock(children)}
</button> </button>

View File

@ -2,7 +2,7 @@ import { getAllClasses, getInnerBlock, getBottomBlock } from "./container";
export default function ContainerForm ({ children = [], options, additionalClassNames = '', callback }) { export default function ContainerForm ({ children = [], options, additionalClassNames = '', callback }) {
return ( return (
<form type="button" onSubmit={callback} className={getAllClasses(options, additionalClassNames)}> <form type="button" onSubmit={callback} className={`${ getAllClasses(options, additionalClassNames) } information-widget-form`}>
{getInnerBlock(children)} {getInnerBlock(children)}
{getBottomBlock(children)} {getBottomBlock(children)}
</form> </form>

View File

@ -2,7 +2,7 @@ import { getAllClasses, getInnerBlock, getBottomBlock } from "./container";
export default function ContainerLink ({ children = [], options, additionalClassNames = '', target }) { export default function ContainerLink ({ children = [], options, additionalClassNames = '', target }) {
return ( return (
<a href={options.url} target={target} className={getAllClasses(options, additionalClassNames)}> <a href={options.url} target={target} className={`${ getAllClasses(options, additionalClassNames) } information-widget-link`}>
{getInnerBlock(children)} {getInnerBlock(children)}
{getBottomBlock(children)} {getBottomBlock(children)}
</a> </a>

View File

@ -8,7 +8,7 @@ import WidgetIcon from "./widget_icon";
export default function Error({ options }) { export default function Error({ options }) {
const { t } = useTranslation(); const { t } = useTranslation();
return <Container options={options}> return <Container options={options} additionalClassNames="information-widget-error">
<PrimaryText>{t("widget.api_error")}</PrimaryText> <PrimaryText>{t("widget.api_error")}</PrimaryText>
<WidgetIcon icon={BiError} size="l" /> <WidgetIcon icon={BiError} size="l" />
</Container>; </Container>;

View File

@ -1,5 +1,5 @@
export default function PrimaryText({ children }) { export default function PrimaryText({ children }) {
return ( return (
<span className="text-theme-800 dark:text-theme-200 text-sm">{children}</span> <span className="primary-text text-theme-800 dark:text-theme-200 text-sm">{children}</span>
); );
} }

View File

@ -1,11 +1,11 @@
import UsageBar from "../resources/usage-bar"; import UsageBar from "../resources/usage-bar";
export default function Resource({ children, icon, value, label, expandedValue = "", expandedLabel = "", percentage, expanded = false }) { export default function Resource({ children, icon, value, label, expandedValue = "", expandedLabel = "", percentage, expanded = false, additionalClassNames='' }) {
const Icon = icon; const Icon = icon;
return <div className="flex-none flex flex-row items-center mr-3 py-1.5"> return <div className={`flex-none flex flex-row items-center mr-3 py-1.5 information-widget-resource ${ additionalClassNames }`}>
<Icon className="text-theme-800 dark:text-theme-200 w-5 h-5"/> <Icon className="text-theme-800 dark:text-theme-200 w-5 h-5 resource-icon"/>
<div className="flex flex-col ml-3 text-left min-w-[85px]"> <div className={ `flex flex-col ml-3 text-left min-w-[85px] ${ expanded ? ' expanded' : ''}`}>
<div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between"> <div className="text-theme-800 dark:text-theme-200 text-xs flex flex-row justify-between">
<div className="pl-0.5">{value}</div> <div className="pl-0.5">{value}</div>
<div className="pr-1">{label}</div> <div className="pr-1">{label}</div>
@ -15,7 +15,7 @@ export default function Resource({ children, icon, value, label, expandedValue =
<div className="pr-1">{expandedLabel}</div> <div className="pr-1">{expandedLabel}</div>
</div> </div>
} }
{ percentage && <UsageBar percent={percentage} /> } { percentage >= 0 && <UsageBar percent={percentage} additionalClassNames="resource-usage" /> }
{ children } { children }
</div> </div>
</div>; </div>;

View File

@ -1,12 +1,15 @@
import classNames from "classnames";
import ContainerLink from "./container_link"; import ContainerLink from "./container_link";
import Resource from "./resource"; import Resource from "./resource";
import Raw from "./raw"; import Raw from "./raw";
import WidgetLabel from "./widget_label"; import WidgetLabel from "./widget_label";
export default function Resources({ options, children, target }) { export default function Resources({ options, children, target, additionalClassNames }) {
const widgetParts = [].concat(...children); const widgetParts = [].concat(...children);
const addedClassNames = classNames('information-widget-resources', additionalClassNames);
return <ContainerLink options={options} target={target}> return <ContainerLink options={options} target={target} additionalClassNames={ addedClassNames }>
<Raw> <Raw>
<div className="flex flex-row self-center flex-wrap justify-between"> <div className="flex flex-row self-center flex-wrap justify-between">
{ widgetParts.filter(child => child && child.type === Resource) } { widgetParts.filter(child => child && child.type === Resource) }

View File

@ -1,5 +1,5 @@
export default function SecondaryText({ children }) { export default function SecondaryText({ children }) {
return ( return (
<span className="text-theme-800 dark:text-theme-200 text-xs">{children}</span> <span className="secondary-text text-theme-800 dark:text-theme-200 text-xs">{children}</span>
); );
} }

View File

@ -1,6 +1,6 @@
export default function WidgetIcon({ icon, size = "s", pulse = false }) { export default function WidgetIcon({ icon, size = "s", pulse = false }) {
const Icon = icon; const Icon = icon;
let additionalClasses = "text-theme-800 dark:text-theme-200 "; let additionalClasses = "information-widget-icon text-theme-800 dark:text-theme-200 ";
switch (size) { switch (size) {
case "m": additionalClasses += "w-6 h-6 "; break; case "m": additionalClasses += "w-6 h-6 "; break;

View File

@ -1,3 +1,3 @@
export default function WidgetLabel({ label = "" }) { export default function WidgetLabel({ label = "" }) {
return <div className="pt-1 text-center text-theme-800 dark:text-theme-200 text-xs">{label}</div> return <div className="information-widget-label pt-1 text-center text-theme-800 dark:text-theme-200 text-xs">{label}</div>
} }

View File

@ -11,6 +11,7 @@ import nextI18nextConfig from "../../next-i18next.config";
import { ColorProvider } from "utils/contexts/color"; import { ColorProvider } from "utils/contexts/color";
import { ThemeProvider } from "utils/contexts/theme"; import { ThemeProvider } from "utils/contexts/theme";
import { SettingsProvider } from "utils/contexts/settings"; import { SettingsProvider } from "utils/contexts/settings";
import { TabProvider } from "utils/contexts/tab";
function MyApp({ Component, pageProps }) { function MyApp({ Component, pageProps }) {
return ( return (
@ -26,7 +27,9 @@ function MyApp({ Component, pageProps }) {
<ColorProvider> <ColorProvider>
<ThemeProvider> <ThemeProvider>
<SettingsProvider> <SettingsProvider>
<TabProvider>
<Component {...pageProps} /> <Component {...pageProps} />
</TabProvider>
</SettingsProvider> </SettingsProvider>
</ThemeProvider> </ThemeProvider>
</ColorProvider> </ColorProvider>

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