Compare commits

..

21 Commits

Author SHA1 Message Date
github-actions[bot]
44b7de794b New Crowdin translations by GitHub Action (#2423)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2023-12-09 22:00:27 -08:00
shamoon
d855e2b396 Fix: Increase kubernetes cpu/mem usage scale (#2453) 2023-12-09 21:27:02 -08:00
shamoon
49281b30c2 Fix block label translation in strelaysrv widget 2023-12-06 20:54:32 -08:00
Lawton Manning
914cd71c76 Fix: remove translation on block labels in healthchecks widget (#2440) 2023-12-06 20:53:13 -08:00
José Marques
5e01eb4a8d Feature: setting for equal height cards (#2432) 2023-12-06 14:52:02 -08:00
dependabot[bot]
7edcf6b047 Bump actions/setup-python from 4 to 5 (#2435)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-06 09:15:14 -08:00
Thorben
0f3fc77ddf Enhancement: improve fritzbox proxy perfomance (#2429)
---------

Co-authored-by: Thorben Grove <thorben.grove@tui.de>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-12-05 00:44:13 -08:00
Ashley Buckingham
77ed445da1 Documentation: correct doc link in skeleton yaml (#2428) 2023-12-04 16:03:58 -08:00
shamoon
708e6fa789 Update crowdin.yml 2023-12-03 07:34:52 -08:00
shamoon
9afa40a6b7 Chore: migrate crowdin to GHA (#2421) 2023-12-03 07:33:43 -08:00
Kamil Markowicz
04ae39e144 Documentation: Update minimum calibre-web version reference (#2412)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-12-01 19:38:31 -08:00
Sean Kelly
a3e00e96c9 Change: changedetection.io widget dont count diff if viewed (#2401) 2023-11-29 13:06:06 -08:00
SOOROS
251881a051 Documentation: add semicolons to iframe example allow option (#2400) 2023-11-29 11:56:18 -08:00
shamoon
9112030275 Fix: quote background image URL
See #2396
2023-11-27 20:06:39 -08:00
shamoon
2f89b12f0d Revert "Fix: revert to using initialSettings in head"
This reverts commit e28faf6b98.
2023-11-27 19:04:50 -08:00
shamoon
b2a914eb2a Update guidelines 2023-11-27 08:19:13 -08:00
Thorben
4c45c6453f Feature: Fritz!Box Widget (#2387)
* Feature: Fritz!Box Widget

* Use i18n

* code style & formatting

---------

Co-authored-by: Thorben Grove <thorben.grove@tui.de>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-11-26 20:48:54 -08:00
shamoon
b3414fc35f Documentation: Fix services yaml file name 2023-11-26 13:24:03 -08:00
COxDE
259f0f8ce9 Documentation: fix typo in widgets file name (#2393) 2023-11-26 13:21:59 -08:00
shamoon
97218e9cea Update PULL_REQUEST_TEMPLATE.md 2023-11-26 10:03:35 -08:00
Nick
3e0054069d Change Unifi Widget "System Uptime" to "Uptime" (#2389)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-11-26 07:20:13 -08:00
69 changed files with 1391 additions and 311 deletions

View File

@@ -25,7 +25,7 @@ What type of change does your PR introduce to Homepage?
## Checklist:
- [ ] If adding a service widget or a change that requires it, I have added corresponding documentation changes.
- [ ] If adding a new widget I have reviewed the [guidelines](https://gethomepage.dev/latest/more/development/#service-widget-guidelines).
- [ ] I have checked that all code style checks pass using pre-commit hooks and linting checks with `pnpm lint` (see development guidelines).
- [ ] If applicable, I have added corresponding documentation changes.
- [ ] If applicable, I have reviewed the [feature](https://gethomepage.dev/latest/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/latest/more/development/#service-widget-guidelines).
- [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/latest/more/development/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/latest/more/development/#code-linting).
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.

31
.github/workflows/crowdin.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
name: Crowdin Action
on:
workflow_dispatch:
schedule:
- cron: '2 */12 * * *'
push:
paths: [
'/public/locales/en/**',
]
branches: [ main ]
jobs:
synchronize-with-crowdin:
name: Crowdin Sync
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: crowdin action
uses: crowdin/github-action@v1
with:
upload_translations: false
download_translations: true
crowdin_branch_name: main
localization_branch_name: l10n_main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

View File

@@ -41,7 +41,7 @@ jobs:
uses: actions/checkout@v4
-
name: Install python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: 3.x
-

View File

@@ -27,7 +27,7 @@ jobs:
uses: actions/checkout@v4
-
name: Install python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: 3.x
-
@@ -42,7 +42,7 @@ jobs:
- pre-commit
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
@@ -67,7 +67,7 @@ jobs:
- uses: actions/checkout@v4
with:
ref: main
- uses: actions/setup-python@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV

View File

@@ -1,3 +1,6 @@
project_id_env: CROWDIN_PROJECT_ID
api_token_env: CROWDIN_PERSONAL_TOKEN
preserve_hierarchy: true
files:
- source: /public/locales/en/*.json
translation: /public/locales/%osx_locale%/%original_file_name%

View File

@@ -229,6 +229,28 @@ disableCollapse: true
By default the feature is enabled.
### Use Equal Height Cards
You can enable equal height cards for groups of services, this will make all cards in a row the same height.
Global setting in `settings.yaml`:
```yaml
useEqualHeights: true
```
Per layout group in `settings.yaml`:
```yaml
useEqualHeights: false
layout:
...
Group Name:
useEqualHeights: true # overrides global setting
```
By default the feature is disabled
## Header Style
There are currently 4 options for header styles, you can see each one below.

View File

@@ -39,11 +39,16 @@ Once installed, hooks will run when you commit. If the formatting isn't quite ri
See the [pre-commit documentation](https://pre-commit.com/#install) to get started.
## New Feature Guidelines
- New features should be linked to an existing feature request with at least 5 'up-votes'. The purpose of this requirement is to avoid the addition (and maintenance) of features that might only benefit a small number of users.
- If you have ideas for a larger feature, please open a discussion first.
## Service Widget Guidelines
To ensure cohesiveness of various widgets, the following should be used as a guide for developing new widgets:
- Please only submit widgets that have been requested and have at least 5 'up-votes'
- Please only submit widgets that have been requested and have at least 5 'up-votes'. The purpose of this requirement is to avoid the addition (and maintenance) of service widgets that might only benefit a small number of users.
- Widgets should be only one row of blocks
- Widgets should be no more than 4 blocks wide
- Minimize the number of API calls

View File

@@ -7,7 +7,7 @@ Homepage has two types of widgets: info and service. Below we'll cover each type
## Service Widgets
Service widgets are used to display the status of a service, often a web service or API. Services (and their widgets) are defined in your `services.yml` file. Here's an example:
Service widgets are used to display the status of a service, often a web service or API. Services (and their widgets) are defined in your `services.yaml` file. Here's an example:
```yaml
- Plex:
@@ -24,7 +24,7 @@ Service widgets are used to display the status of a service, often a web service
## Info Widgets
Info widgets are used to display information in the header, often about your system or environment. Info widgets are defined your `widgets.yml` file. Here's an example:
Info widgets are used to display information in the header, often about your system or environment. Info widgets are defined your `widgets.yaml` file. Here's an example:
```yaml
- openmeteo:

View File

@@ -3,7 +3,7 @@ title: Calibre-web
description: Calibre-web Widget Configuration
---
**Note: this widget requires a feature of calibre-web that has not yet been distributed in versioned release. The code is contained in ["nightly" lsio builds after 25/8/23](https://hub.docker.com/layers/linuxserver/calibre-web/nightly/images/sha256-b27cbe5d17503de38135d925e226eb3e5ba04c558dbc865dc85d77824d35d7e2) or running the calibre-web source code including commit [0499e57](https://github.com/janeczku/calibre-web/commit/0499e578cdd45db656da34cd2d7152c8d88ceb23).**
**Note: widget requires calibre-web ≥ v0.6.21.**
Allowed fields: `["books", "authors", "categories", "series"]`.

View File

@@ -0,0 +1,22 @@
---
title: FRITZ!Box
description: FRITZ!Box Widget Configuration
---
Application access & UPnP must be activated on your device:
```
Home Network > Network > Network Settings > Access Settings in the Home Network
[x] Allow access for applications
[x] Transmit status information over UPnP
```
Credentials are not needed and, as such, you may want to consider using `http` instead of `https` as those requests are significantly faster.
Allowed fields (limited to a max of 4): `["connectionStatus", "upTime", "maxDown", "maxUp", "down", "up", "received", "sent", "externalIPAddress"]`.
```yaml
widget:
type: fritzbox
url: http://192.168.178.1
```

View File

@@ -27,7 +27,7 @@ widget:
src: http://example.com
classes: h-60 sm:h-60 md:h-60 lg:h-60 xl:h-60 2xl:h-72 # optional, use tailwind height classes, see https://tailwindcss.com/docs/height
referrerPolicy: same-origin # optional, no default
allowPolicy: autoplay fullscreen gamepad # optional, no default
allowPolicy: autoplay; fullscreen; gamepad # optional, no default
allowFullscreen: false # optional, default: true
loadingStrategy: eager # optional, default: eager
allowScrolling: no # optional, default: yes

View File

@@ -53,6 +53,7 @@ nav:
- widgets/services/fileflows.md
- widgets/services/flood.md
- widgets/services/freshrss.md
- widgets/services/fritzbox.md
- widgets/services/gamedig.md
- widgets/services/ghostfolio.md
- widgets/services/glances.md

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Gebruikers",
"uptime": "Stelsel Bedryfstyd",
"uptime": "Optyd",
"days": "Daë",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Intekenings",
"unread": "Ongelees"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Ongekonfigureer",
"connectionStatusConnecting": "Verbind",
"connectionStatusAuthenticating": "Stel geldigheid vas",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Ontkoppel",
"connectionStatusDisconnected": "Ontkoppel",
"connectionStatusConnected": "Gekoppel",
"uptime": "Optyd",
"maxDown": "Maks. Af",
"maxUp": "Maks. Op",
"down": "Af",
"up": "Op",
"received": "Ontvang",
"sent": "Gestuur",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Stroomop",
"requests": "Huidige versoeke",
@@ -765,6 +783,7 @@
"inCinemas": "In fliekteaters",
"physicalRelease": "Fisiese Vrylating",
"digitalRelease": "Digitale Vrylating",
"noEventsToday": "Geen gebeure vir vandag nie!"
"noEventsToday": "Geen gebeure vir vandag nie!",
"noEventsFound": "Geen gebeure gevind nie"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "المستخدمون",
"uptime": "مدة تشغيل النظام",
"uptime": "مدة التشغيل",
"days": "أيام",
"wan": "الشبكة الواسعة",
"lan": "الشبكة المحلية",
@@ -122,6 +122,24 @@
"subscriptions": "الاشتراكات",
"unread": "غير مقروءة"
},
"fritzbox": {
"connectionStatus": "الحالة",
"connectionStatusUnconfigured": "لم تتم تهيئته",
"connectionStatusConnecting": "جاري الاتصال",
"connectionStatusAuthenticating": "جار المصادقة",
"connectionStatusPendingDisconnect": "في انتظار قطع الاتصال",
"connectionStatusDisconnecting": "جار قطع الاتصال",
"connectionStatusDisconnected": "غير متصل",
"connectionStatusConnected": "متصل",
"uptime": "مدة التشغيل",
"maxDown": "أقصى حد للتنزيل",
"maxUp": "أقصى حد للتحميل",
"down": "لا يعمل",
"up": "يعمل",
"received": "تم الإستلام",
"sent": "تم الإرسال",
"externalIPAddress": "IP الخارجي"
},
"caddy": {
"upstreams": "تدفق",
"requests": "طلبات الحالية",
@@ -765,6 +783,7 @@
"inCinemas": "في دور السينما",
"physicalRelease": "الإصدار المادي",
"digitalRelease": "الإصدار الرقمي",
"noEventsToday": "لا توجد أحداث اليوم!"
"noEventsToday": "لا توجد أحداث اليوم!",
"noEventsFound": "لم يتم العثور على أحداث"
}
}

View File

@@ -33,22 +33,22 @@
},
"resources": {
"cpu": "Процесор",
"mem": "MEM",
"mem": "Памет",
"total": "Общо",
"free": "Свободни",
"used": "Заети",
"load": "Натоварване",
"temp": "TEMP",
"max": "Max",
"uptime": "UP",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m"
"temp": "Температура",
"max": "Макс.",
"uptime": "Онлайн",
"months": "мес",
"days": "д",
"hours": "ч",
"minutes": "мин"
},
"unifi": {
"users": "Потребители",
"uptime": "Активен от",
"uptime": "Uptime",
"days": "Дни",
"wan": "WAN",
"lan": "LAN",
@@ -58,7 +58,7 @@
"wlan_devices": "WLAN Устройства",
"lan_users": "LAN Потребители",
"wlan_users": "WLAN Потребители",
"up": "UP",
"up": "Онлайн",
"down": "DOWN",
"wait": "Моля изчакайте",
"empty_data": "Subsystem status unknown"
@@ -66,12 +66,12 @@
"docker": {
"rx": "RX",
"tx": "TX",
"mem": "MEM",
"mem": "Памет",
"cpu": "Процесор",
"running": "Running",
"offline": "Изключен",
"error": "Грешка",
"unknown": "Unknown",
"unknown": "Неизв.",
"healthy": "Healthy",
"starting": "Starting",
"unhealthy": "Unhealthy",
@@ -99,7 +99,7 @@
"transcoding": "Конвертира",
"bitrate": "Bitrate",
"no_active": "Няма активни потоци",
"movies": "Movies",
"movies": "Филми",
"series": "Series",
"episodes": "Episodes",
"songs": "Songs"
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Статус",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Свързано",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -133,8 +151,8 @@
},
"channelsdvrserver": {
"shows": "Shows",
"recordings": "Recordings",
"scheduled": "Scheduled",
"recordings": "Записи",
"scheduled": "Планирано",
"passes": "Passes"
},
"tautulli": {
@@ -142,12 +160,12 @@
"transcoding": "Конвертира",
"bitrate": "Bitrate",
"no_active": "Няма активни потоци",
"plex_connection_error": "Check Plex Connection"
"plex_connection_error": "Провери връзка с Plex"
},
"omada": {
"connectedAp": "Connected APs",
"activeUser": "Active devices",
"alerts": "Alerts",
"activeUser": "Активни устройства",
"alerts": "Предупреждения",
"connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches"
},
@@ -158,8 +176,8 @@
},
"plex": {
"streams": "Активни Потоци",
"albums": "Albums",
"movies": "Movies",
"albums": "Албуми",
"movies": "Филми",
"tv": "Сериали"
},
"sabnzbd": {
@@ -190,7 +208,7 @@
"systemTempC": "System Temp",
"poolUsage": "Pool Usage",
"volumeUsage": "Volume Usage",
"invalid": "Invalid"
"invalid": "Невалидни"
},
"deluge": {
"download": "Download",
@@ -205,28 +223,28 @@
"seed": "Seed"
},
"sonarr": {
"wanted": "Wanted",
"queued": "Queued",
"wanted": "Търсени",
"queued": "В изчакване",
"series": "Series",
"queue": "Опашка",
"unknown": "Unknown"
"unknown": "Неизв."
},
"radarr": {
"wanted": "Wanted",
"missing": "Missing",
"queued": "Queued",
"movies": "Movies",
"wanted": "Търсени",
"missing": "Липсващи",
"queued": "В изчакване",
"movies": "Филми",
"queue": "Опашка",
"unknown": "Unknown"
"unknown": "Неизв."
},
"lidarr": {
"wanted": "Wanted",
"queued": "Queued",
"artists": "Artists"
"wanted": "Търсени",
"queued": "В изчакване",
"artists": "Изпълнители"
},
"readarr": {
"wanted": "Wanted",
"queued": "Queued",
"wanted": "Търсени",
"queued": "В изчакване",
"books": "Книги"
},
"bazarr": {
@@ -251,8 +269,8 @@
},
"pialert": {
"total": "Общо",
"connected": "Connected",
"new_devices": "New Devices",
"connected": "Свързано",
"new_devices": "Нови устройства",
"down_alerts": "Down Alerts"
},
"pihole": {
@@ -280,16 +298,16 @@
"tailscale": {
"address": "Address",
"expires": "Expires",
"never": "Never",
"last_seen": "Last Seen",
"now": "Now",
"years": "{{number}}y",
"weeks": "{{number}}w",
"days": "{{number}}d",
"hours": "{{number}}h",
"minutes": "{{number}}m",
"seconds": "{{number}}s",
"ago": "{{value}} Ago"
"never": "Никога",
"last_seen": "Последно видян",
"now": "Сега",
"years": "{{number}}г",
"weeks": "{{number}}с",
"days": "{{number}}д",
"hours": "{{number}}ч",
"minutes": "{{number}}м",
"seconds": "{{number}}сек",
"ago": "преди {{value}}"
},
"tdarr": {
"queue": "Опашка",
@@ -346,12 +364,12 @@
"domain_count": "Domains"
},
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"wanted": "Търсени",
"queued": "В изчакване",
"series": "Series"
},
"minecraft": {
"players": "Players",
"players": "Играчи",
"version": "Version",
"status": "Статус",
"up": "Online",
@@ -367,7 +385,7 @@
"failedLoginsLast24H": "Failed Logins (24h)"
},
"proxmox": {
"mem": "MEM",
"mem": "Памет",
"cpu": "Процесор",
"lxc": "LXC",
"vms": "VMs"
@@ -376,15 +394,15 @@
"cpu": "Процесор",
"load": "Натоварване",
"wait": "Моля изчакайте",
"temp": "TEMP",
"_temp": "Temp",
"warn": "Warn",
"uptime": "UP",
"temp": "Температура",
"_temp": "Температура",
"warn": "Предупреждение",
"uptime": "Онлайн",
"total": "Общо",
"free": "Свободни",
"used": "Заети",
"days": "d",
"hours": "h",
"days": "д",
"hours": "ч",
"crit": "Crit",
"read": "Read",
"write": "Write",
@@ -395,7 +413,7 @@
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"search": "Търсене",
"custom": "Custom",
"visit": "Visit",
"url": "URL"
@@ -470,9 +488,9 @@
"down": "Down"
},
"healthchecks": {
"new": "New",
"new": "Нови",
"up": "Online",
"grace": "In Grace Period",
"grace": "Гратисен период",
"down": "Изключен",
"paused": "Paused",
"status": "Статус",
@@ -487,19 +505,19 @@
"autobrr": {
"approvedPushes": "Одобрен",
"rejectedPushes": "Rejected",
"filters": "Filters",
"filters": "Филтри",
"indexers": "Indexers"
},
"tubearchivist": {
"downloads": "Опашка",
"videos": "Videos",
"channels": "Channels",
"videos": "Видео",
"channels": "Канали",
"playlists": "Playlists"
},
"truenas": {
"load": "System Load",
"uptime": "Uptime",
"alerts": "Alerts",
"alerts": "Предупреждения",
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
},
"pyload": {
@@ -510,17 +528,17 @@
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
"region": "Регион",
"country": "Страна"
},
"hdhomerun": {
"channels": "Channels",
"channels": "Канали",
"hd": "HD"
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
"unknown": "Неизв."
},
"paperlessngx": {
"inbox": "Inbox",
@@ -575,7 +593,7 @@
"wanStatus": "WAN Status",
"up": "Up",
"down": "Down",
"temp": "Temp",
"temp": "Температура",
"disk": "Disk Usage",
"wanIP": "WAN IP"
},
@@ -588,7 +606,7 @@
"immich": {
"users": "Потребители",
"photos": "Photos",
"videos": "Videos",
"videos": "Видео",
"storage": "Storage"
},
"uptimekuma": {
@@ -596,7 +614,7 @@
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
"m": "мин"
},
"atsumeru": {
"series": "Series",
@@ -617,12 +635,12 @@
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
"wanted": "Търсени"
},
"photoprism": {
"albums": "Albums",
"albums": "Албуми",
"photos": "Photos",
"videos": "Videos",
"videos": "Видео",
"people": "People"
},
"fileflows": {
@@ -641,13 +659,13 @@
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users",
"numfiles": "Files",
"numshares": "Shared Items"
"activeusers": "Активни потребители",
"numfiles": "Файлове",
"numshares": "Споделени записи"
},
"kopia": {
"status": "Статус",
"size": "Size",
"size": "Размер",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
@@ -674,8 +692,8 @@
"audiobookshelf": {
"podcasts": "Podcasts",
"books": "Книги",
"podcastsDuration": "Duration",
"booksDuration": "Duration"
"podcastsDuration": "Продължителност",
"booksDuration": "Продължителност"
},
"homeassistant": {
"people_home": "People Home",
@@ -695,12 +713,12 @@
"jdownloader": {
"downloadCount": "Опашка",
"downloadBytesRemaining": "Остава",
"downloadTotalBytes": "Size",
"downloadTotalBytes": "Размер",
"downloadSpeed": "Speed"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
"totalFiles": "Файлове"
},
"azuredevops": {
"result": "Result",
@@ -720,24 +738,24 @@
"online": "Online",
"offline": "Изключен",
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"maxPlayers": "Max players",
"bots": "Bots",
"map": "Карта",
"currentPlayers": "Текущи играчи",
"players": "Играчи",
"maxPlayers": "Максимален брой играчи",
"bots": "Ботове",
"ping": "Ping"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"ok": "ОК",
"errored": "Грешки",
"noRecent": "Out of Date",
"totalUsed": "Used Storage"
},
"mealie": {
"recipes": "Recipes",
"recipes": "Рецепти",
"users": "Потребители",
"categories": "Categories",
"tags": "Tags"
"tags": "Тагове"
},
"openmediavault": {
"downloading": "Downloading",
@@ -759,12 +777,13 @@
"up": "Up",
"seemsdown": "Seems Down",
"down": "Down",
"unknown": "Unknown"
"unknown": "Неизв."
},
"calendar": {
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "Няма събития за днес!",
"noEventsFound": "Няма намерени събития"
}
}

View File

@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Estat",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Temps actiu",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Uživatelé",
"uptime": "Doba provozu",
"uptime": "Doba spuštění",
"days": "dní",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Odběry",
"unread": "Nepřečteno"
},
"fritzbox": {
"connectionStatus": "Stav",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Doba spuštění",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Odesílání dat",
"requests": "Aktuální požadavky",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Brugere",
"uptime": "System Oppetid",
"uptime": "Oppetid",
"days": "Dage",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Abonnementer",
"unread": "Ulæst"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Forbundet",
"uptime": "Oppetid",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Ned",
"up": "Op",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Aktuelle anmodninger",
@@ -765,6 +783,7 @@
"inCinemas": "I biografen",
"physicalRelease": "Fysisk udgivelse",
"digitalRelease": "Digitale udgivelser",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Benutzer",
"uptime": "System-Laufzeit",
"uptime": "Betriebszeit",
"days": "Tage",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Abonnements",
"unread": "Ungelesen"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Unkonfiguriert",
"connectionStatusConnecting": "Verbinde",
"connectionStatusAuthenticating": "Authentifiziere",
"connectionStatusPendingDisconnect": "Ausstehende Trennung",
"connectionStatusDisconnecting": "Trenne",
"connectionStatusDisconnected": "Getrennt",
"connectionStatusConnected": "Verbunden",
"uptime": "Betriebszeit",
"maxDown": "Max. Empfang",
"maxUp": "Max. Senden",
"down": "Empfangen",
"up": "Senden",
"received": "Empfangen",
"sent": "Gesendet",
"externalIPAddress": "Externe IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Aktuelle Anfragen",
@@ -152,7 +170,7 @@
"connectedSwitches": "Verbundene Switches"
},
"nzbget": {
"rate": "Geschwindigkeit",
"rate": "Datenrate",
"remaining": "Verbleibend",
"downloaded": "Heruntergeladen"
},
@@ -163,7 +181,7 @@
"tv": "TV-Serien"
},
"sabnzbd": {
"rate": "Geschwindigkeit",
"rate": "Datenrate",
"queue": "Warteschlange",
"timeleft": "Verbleibende Zeit"
},
@@ -338,7 +356,7 @@
"numActiveSessions": "Sitzungen",
"numConnections": "Verbindungen",
"dataRelayed": "Weitergeleitet",
"transferRate": "Geschwindigkeit"
"transferRate": "Datenrate"
},
"mastodon": {
"user_count": "Benutzer",
@@ -503,7 +521,7 @@
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
},
"pyload": {
"speed": "Geschwindigkeit",
"speed": "Datenrate",
"active": "Aktiv",
"queue": "Warteschlange",
"total": "Gesamt"
@@ -696,7 +714,7 @@
"downloadCount": "Warteschlange",
"downloadBytesRemaining": "Verbleibend",
"downloadTotalBytes": "Größe",
"downloadSpeed": "Geschwindigkeit"
"downloadSpeed": "Datenrate"
},
"kavita": {
"seriesCount": "Serien",
@@ -765,6 +783,7 @@
"inCinemas": "Im Kino",
"physicalRelease": "Physische Version",
"digitalRelease": "Digitale Version",
"noEventsToday": "Heute keine Ereignisse!"
"noEventsToday": "Heute keine Ereignisse!",
"noEventsFound": "Keine Termine gefunden"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Χρήστες",
"uptime": "Χρόνος λειτουργίας συστήματος",
"uptime": "Uptime",
"days": "Ημέρες",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Συνδρομές",
"unread": "Μη Διαβασμένο"
},
"fritzbox": {
"connectionStatus": "Κατάσταση",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Τρέχοντα αιτήματα",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Users",
"uptime": "System Uptime",
"uptime": "Uptime",
"days": "Days",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Uzantoj",
"uptime": "Uptempo de la Sistemo",
"uptime": "Uptime",
"days": "Tagoj",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Stato",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Usuarios",
"uptime": "Tiempo de actividad",
"uptime": "Tiempo de la actividad",
"days": "Días",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Suscripciones",
"unread": "Sin leer"
},
"fritzbox": {
"connectionStatus": "Estado",
"connectionStatusUnconfigured": "Sin configurar",
"connectionStatusConnecting": "Conectando",
"connectionStatusAuthenticating": "Autenticando",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Desconectando",
"connectionStatusDisconnected": "Desconectado",
"connectionStatusConnected": "Conectado",
"uptime": "Tiempo de la actividad",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Abajo",
"up": "Arriba",
"received": "Recibido",
"sent": "Enviado",
"externalIPAddress": "IP pública"
},
"caddy": {
"upstreams": "Upstream (desarrollo de software)",
"requests": "Peticiones actuales",
@@ -765,6 +783,7 @@
"inCinemas": "En cine",
"physicalRelease": "Lanzamiento en físico",
"digitalRelease": "Lanzamiento en digital",
"noEventsToday": "Sin eventos para hoy"
"noEventsToday": "Sin eventos para hoy",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Users",
"uptime": "System Uptime",
"uptime": "Uptime",
"days": "Egun",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Users",
"uptime": "System Uptime",
"uptime": "Uptime",
"days": "Days",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Tila",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Utilisateurs",
"uptime": "Disponibilité du système",
"uptime": "Démarré depuis",
"days": "Jours",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Abonnements",
"unread": "Non lu"
},
"fritzbox": {
"connectionStatus": "Statut",
"connectionStatusUnconfigured": "Non-configuré",
"connectionStatusConnecting": "Connexion en cours",
"connectionStatusAuthenticating": "Authentification en cours",
"connectionStatusPendingDisconnect": "Déconnexion en attente",
"connectionStatusDisconnecting": "Déconnexion en cours",
"connectionStatusDisconnected": "Déconnecté",
"connectionStatusConnected": "Connecté",
"uptime": "Démarré depuis",
"maxDown": "Max. Bas",
"maxUp": "Max. Haut",
"down": "Down",
"up": "Up",
"received": "Reçu",
"sent": "Envoyé",
"externalIPAddress": "IP externe"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Demandes en cours",
@@ -690,7 +708,7 @@
"books": "Livres",
"authors": "Auteurs",
"categories": "Catégories",
"series": "Séries TV"
"series": "Séries"
},
"jdownloader": {
"downloadCount": "En attente",
@@ -765,6 +783,7 @@
"inCinemas": "En salle",
"physicalRelease": "Sortie physique",
"digitalRelease": "Sortie numérique",
"noEventsToday": "Rien pour aujourd'hui !"
"noEventsToday": "Rien pour aujourd'hui !",
"noEventsFound": "Aucun événement trouvé"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Users",
"uptime": "System Uptime",
"uptime": "Uptime",
"days": "Days",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "סטטוס",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Users",
"uptime": "System Uptime",
"uptime": "Uptime",
"days": "Days",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Korisnici",
"uptime": "Radno vrijeme sustava",
"uptime": "Radno vrijeme",
"days": "Dani",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Pretplate",
"unread": "Nepročitano"
},
"fritzbox": {
"connectionStatus": "Stanje",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Povezano",
"uptime": "Radno vrijeme",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Glavne grane",
"requests": "Aktualni zahtjevi",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Felhasználók",
"uptime": "Rendszer üzemidő",
"uptime": "Üzemidő",
"days": "Napok",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Előfizetések",
"unread": "Olvasatlan"
},
"fritzbox": {
"connectionStatus": "Státusz",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Csatlakoztatott",
"uptime": "Üzemidő",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreamek",
"requests": "Jelenlegi kérelmek",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Users",
"uptime": "System Uptime",
"uptime": "Uptime",
"days": "Days",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Utenti",
"uptime": "Uptime di Sistema",
"uptime": "Tempo di attività",
"days": "Giorni",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Iscrizioni",
"unread": "Non letto"
},
"fritzbox": {
"connectionStatus": "Stato",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connesso",
"uptime": "Tempo di attività",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstream",
"requests": "Richieste correnti",
@@ -765,6 +783,7 @@
"inCinemas": "Al cinema",
"physicalRelease": "Release fisici",
"digitalRelease": "Versione digitale",
"noEventsToday": "Nessun evento per oggi!"
"noEventsToday": "Nessun evento per oggi!",
"noEventsFound": "Nessun evento trovato"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "ユーザ",
"uptime": "システム・アップタイム",
"uptime": "稼働時間",
"days": "日",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "購読",
"unread": "未読"
},
"fritzbox": {
"connectionStatus": "状態",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "接続済み",
"uptime": "稼働時間",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "下へ",
"up": "上へ",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "アップストリーム",
"requests": "現在のリクエスト",
@@ -765,6 +783,7 @@
"inCinemas": "映画館内",
"physicalRelease": "物理的なリリース",
"digitalRelease": "デジタル・リリース",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "사용자",
"uptime": "시스템 업타임",
"uptime": "Uptime",
"days": "일",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "상태",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Lietotāji",
"uptime": "Sistēmas darbības laiks",
"uptime": "Uptime",
"days": "Dienas",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Statuss",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Pengguna",
"uptime": "Masa Operasi Sistem",
"uptime": "Masa Hidup",
"days": "Hari",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Masa Hidup",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Gebruikers",
"uptime": "Systeem Uptime",
"uptime": "Online",
"days": "Dagen",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Abonnementen",
"unread": "Ongelezen"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Niet-geconfigureerd",
"connectionStatusConnecting": "Bezig met verbinden",
"connectionStatusAuthenticating": "Verificatie",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Verbinding verbreken...",
"connectionStatusDisconnected": "Verbinding verbroken",
"connectionStatusConnected": "Verbonden",
"uptime": "Online",
"maxDown": "Max. Omlaag",
"maxUp": "Max. omhoog",
"down": "Offline",
"up": "Online",
"received": "Ontvangen",
"sent": "Verzonden",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Huidige verzoeken",
@@ -765,6 +783,7 @@
"inCinemas": "In bioscopen",
"physicalRelease": "Fysieke versie",
"digitalRelease": "Digitale versie",
"noEventsToday": "Geen gebeurtenissen voor vandaag!"
"noEventsToday": "Geen gebeurtenissen voor vandaag!",
"noEventsFound": "Geen gebeurtenissen gevonden"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Users",
"uptime": "System Uptime",
"uptime": "Uptime",
"days": "Days",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Użytkownicy",
"uptime": "Czas pracy systemu",
"uptime": "Czas działania",
"days": "Dni",
"wan": "Sieć WAN",
"lan": "Sieć LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subskrypcje",
"unread": "Nieprzeczytane"
},
"fritzbox": {
"connectionStatus": "Stan",
"connectionStatusUnconfigured": "Nieskonfigurowane",
"connectionStatusConnecting": "Łączenie",
"connectionStatusAuthenticating": "Uwierzytelnianie",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Rozłączanie",
"connectionStatusDisconnected": "Rozłączono",
"connectionStatusConnected": "Połączony",
"uptime": "Czas działania",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Niedostępny",
"up": "Dostępny",
"received": "Odebrane",
"sent": "Wysłane",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Aktualne zapytania",
@@ -476,7 +494,7 @@
"down": "Nieosiągalny",
"paused": "Zatrzymane",
"status": "Stan",
"last_ping": "Last Ping",
"last_ping": "Ostatni ping",
"never": "No pings yet"
},
"watchtower": {
@@ -571,12 +589,12 @@
},
"pfsense": {
"load": "Load Avg",
"memory": "Mem Usage",
"wanStatus": "WAN Status",
"memory": "Użycie pamięci",
"wanStatus": "Status WAN",
"up": "Dostępny",
"down": "Niedostępny",
"temp": "Temperatura",
"disk": "Disk Usage",
"disk": "Użycie dysku",
"wanIP": "WAN IP"
},
"proxmoxbackupserver": {
@@ -600,9 +618,9 @@
},
"atsumeru": {
"series": "Seriale",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
"archives": "Archiwa",
"chapters": "Rozdziały",
"categories": "Kategorie"
},
"komga": {
"libraries": "Biblioteki",
@@ -632,7 +650,7 @@
"time": "Czas"
},
"grafana": {
"dashboards": "Dashboards",
"dashboards": "Panel główny",
"datasources": "Źródła danych",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
@@ -649,7 +667,7 @@
"status": "Stan",
"size": "Rozmiar",
"lastrun": "Ostatnie uruchomienie",
"nextrun": "Next Run",
"nextrun": "Następne uruchomienie",
"failed": "Niepowodzenie"
},
"unmanic": {
@@ -659,7 +677,7 @@
},
"pterodactyl": {
"servers": "Serwery",
"nodes": "Nodes"
"nodes": "Węzły"
},
"prometheus": {
"targets_up": "Targets Up",
@@ -669,7 +687,7 @@
"ghostfolio": {
"gross_percent_today": "Dzisiaj",
"gross_percent_1y": "Rok",
"gross_percent_max": "All time"
"gross_percent_max": "Od początku"
},
"audiobookshelf": {
"podcasts": "Podcasty",
@@ -688,8 +706,8 @@
},
"calibreweb": {
"books": "Książki",
"authors": "Authors",
"categories": "Categories",
"authors": "Autorzy",
"categories": "Kategorie",
"series": "Seriale"
},
"jdownloader": {
@@ -703,14 +721,14 @@
"totalFiles": "Pliki"
},
"azuredevops": {
"result": "Result",
"result": "Wynik",
"status": "Stan",
"buildId": "Build ID",
"succeeded": "Succeeded",
"buildId": "ID kompilacji",
"succeeded": "Ukończono",
"notStarted": "Not Started",
"failed": "Niepowodzenie",
"canceled": "Canceled",
"inProgress": "In Progress",
"canceled": "Anulowano",
"inProgress": "W trakcie",
"totalPrs": "Total PRs",
"myPrs": "My PRs",
"approved": "Zaakceptowane"
@@ -723,24 +741,24 @@
"map": "Mapa",
"currentPlayers": "Current players",
"players": "Gracze",
"maxPlayers": "Max players",
"maxPlayers": "Maksymalna ilość graczy",
"bots": "Boty",
"ping": "Ping"
},
"urbackup": {
"ok": "Ok",
"errored": "Errors",
"noRecent": "Out of Date",
"errored": "Błędy",
"noRecent": "Nieaktualne",
"totalUsed": "Used Storage"
},
"mealie": {
"recipes": "Recipes",
"users": "Użytkownicy",
"categories": "Categories",
"categories": "Kategorie",
"tags": "Tagi"
},
"openmediavault": {
"downloading": "Downloading",
"downloading": "Pobieranie",
"total": "Całkowite",
"running": "Działa",
"stopped": "Zatrzymane",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Utilizadores",
"uptime": "Sistema Ativo",
"uptime": "Ligado",
"days": "Dias",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Assinaturas",
"unread": "Não lida"
},
"fritzbox": {
"connectionStatus": "Estado",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Conectado",
"uptime": "Ligado",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Solicitações atuais",
@@ -765,6 +783,7 @@
"inCinemas": "Em cinemas",
"physicalRelease": "Lançamento físico",
"digitalRelease": "Lançamento digital",
"noEventsToday": "Não existem eventos hoje!"
"noEventsToday": "Não existem eventos hoje!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Utilizadores",
"uptime": "Sistema Ativo",
"uptime": "Ligado",
"days": "Dias",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Assinaturas",
"unread": "Não lida"
},
"fritzbox": {
"connectionStatus": "Estado",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Ligado",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Solicitações atuais",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Utilizatori",
"uptime": "Timp de funcționare a sistemului",
"uptime": "Uptime",
"days": "Zile",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Abonări",
"unread": "Necitit"
},
"fritzbox": {
"connectionStatus": "Stare",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Jos",
"up": "Sus",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreamuri",
"requests": "Solicitări curente",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Пользователи",
"uptime": "Время работы системы",
"uptime": "Время работы",
"days": "Дней",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Подписки",
"unread": "Не прочитано"
},
"fritzbox": {
"connectionStatus": "Статус",
"connectionStatusUnconfigured": "Не настроено",
"connectionStatusConnecting": "Подключение",
"connectionStatusAuthenticating": "Авторизация",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Отключение",
"connectionStatusDisconnected": "Отключено",
"connectionStatusConnected": "Подключено",
"uptime": "Время работы",
"maxDown": "Макс. Загрузка",
"maxUp": "Макс. Отдача",
"down": "Офлайн",
"up": "Онлайн",
"received": "Получено",
"sent": "Отправлено",
"externalIPAddress": "Внеш. IP"
},
"caddy": {
"upstreams": "Входящие каналы",
"requests": "Текущие запросы",
@@ -765,6 +783,7 @@
"inCinemas": "В кинотеатрах",
"physicalRelease": "Физический релиз",
"digitalRelease": "Цифровой релиз",
"noEventsToday": "Нет событий на сегодня!"
"noEventsToday": "Нет событий на сегодня!",
"noEventsFound": "Событий не найдено"
}
}

View File

@@ -122,6 +122,24 @@
"subscriptions": "Odbery",
"unread": "Neprečítané"
},
"fritzbox": {
"connectionStatus": "Stav",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Pripojené",
"uptime": "Doba prevádzky",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Sťahovanie",
"up": "Nahrávanie",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Odosielanie dát",
"requests": "Aktuálne požiadavky",
@@ -765,6 +783,7 @@
"inCinemas": "V kinách",
"physicalRelease": "Fyzické vydanie",
"digitalRelease": "Digitálne vydanie",
"noEventsToday": "Žiadne udalosti na dnešný deň!"
"noEventsToday": "Žiadne udalosti na dnešný deň!",
"noEventsFound": "No events found"
}
}

View File

@@ -122,6 +122,24 @@
"subscriptions": "Naročnine",
"unread": "Neprebrano"
},
"fritzbox": {
"connectionStatus": "Stanje",
"connectionStatusUnconfigured": "Nenastavljeno",
"connectionStatusConnecting": "Se povezuje",
"connectionStatusAuthenticating": "Avtentikacija",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Prekinitev",
"connectionStatusDisconnected": "Prekinjeno",
"connectionStatusConnected": "Povezanih",
"uptime": "Čas delovanja",
"maxDown": "Maks. dol",
"maxUp": "Maks. gor",
"down": "Nepovezan",
"up": "Povezan",
"received": "Prejeto",
"sent": "Poslano",
"externalIPAddress": "Zun. IP"
},
"caddy": {
"upstreams": "Pretok gor",
"requests": "Trenutnih zahtev",
@@ -765,6 +783,7 @@
"inCinemas": "V kinu",
"physicalRelease": "Fizična izdaja",
"digitalRelease": "Digitalna izdaja",
"noEventsToday": "Za danes ni dogodkov!"
"noEventsToday": "Za danes ni dogodkov!",
"noEventsFound": "Ni dogodkov"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Users",
"uptime": "System Uptime",
"uptime": "Uptime",
"days": "Days",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Användare",
"uptime": "Upptid",
"uptime": "Uptime",
"days": "Dagar",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "వినియోగదారులు",
"uptime": "సిస్టమ్ సమయము",
"uptime": "Uptime",
"days": "రోజులు",
"wan": "WAN",
"lan": "లాన్",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "హోదా",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "ผู้ใช้",
"uptime": "เวลาทำงานของระบบ",
"uptime": "Uptime",
"days": "วัน",
"wan": "WAN",
"lan": "แลน",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "สถานะ",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -122,6 +122,24 @@
"subscriptions": "Abonelikler",
"unread": "Okunmamış"
},
"fritzbox": {
"connectionStatus": "Durum",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Bağlandı",
"uptime": "Çalışma Süresi",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Akış",
"requests": "Anlık İstekler",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -18,7 +18,7 @@
"api_error": "Помилка API",
"information": "Інформація",
"status": "Стан",
"url": "URL",
"url": "URL-адреса",
"raw_error": "Помилка Raw",
"response_data": "Дані відповіді"
},
@@ -32,14 +32,14 @@
"placeholder": "Пошук…"
},
"resources": {
"cpu": "CPU",
"mem": ам'ять",
"total": "Всього",
"cpu": "ЦП",
"mem": "ОЗП",
"total": "Усього",
"free": "Вільно",
"used": "Використано",
"load": "Завантаження",
"temp": "TEMP",
"max": "Max",
"temp": "Температура",
"max": "Макс.",
"uptime": "Відправка",
"months": "міс",
"days": "д",
@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Користувачі",
"uptime": "Час роботи системи",
"uptime": "Час роботи",
"days": "Днів",
"wan": "WAN",
"lan": "LAN",
@@ -66,8 +66,8 @@
"docker": {
"rx": "RX",
"tx": "TX",
"mem": ам'ять",
"cpu": "CPU",
"mem": "ОЗП",
"cpu": "ЦП",
"running": "Запущено",
"offline": "Офлайн",
"error": "Помилка",
@@ -122,6 +122,24 @@
"subscriptions": "Передплата",
"unread": "Не прочитано"
},
"fritzbox": {
"connectionStatus": "Стан",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Підключено",
"uptime": "Час роботи",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Потоки",
"requests": "Поточні запити",
@@ -250,7 +268,7 @@
"available": "Доступно"
},
"pialert": {
"total": "Всього",
"total": "Усього",
"connected": "Підключено",
"new_devices": "Нові пристрої",
"down_alerts": "Сповіщення про збій"
@@ -275,7 +293,7 @@
"portainer": {
"running": "Запущено",
"stopped": "Зупинено",
"total": "Всього"
"total": "Усього"
},
"tailscale": {
"address": "Адреса",
@@ -309,7 +327,7 @@
"npm": {
"enabled": "Увімкнено",
"disabled": "Вимкнено",
"total": "Всього"
"total": "Усього"
},
"coinmarketcap": {
"configure": "Налаштуйте одну або кілька криптовалют для відстеження",
@@ -367,20 +385,20 @@
"failedLoginsLast24H": "Невдалі входи (24 години)"
},
"proxmox": {
"mem": ам'ять",
"cpu": "CPU",
"mem": "ОЗП",
"cpu": "ЦП",
"lxc": "Контейнери Linux",
"vms": "Віртуальні машини"
},
"glances": {
"cpu": "CPU",
"cpu": "ЦП",
"load": "Завантаження",
"wait": "Будь ласка, зачекайте",
"temp": "TEMP",
"temp": "Температура",
"_temp": "Temp",
"warn": "Увага",
"uptime": "Відправка",
"total": "Всього",
"total": "Усього",
"free": "Вільно",
"used": "Використано",
"days": "д",
@@ -398,7 +416,7 @@
"search": "Пошук",
"custom": "Користувацький",
"visit": "Відвідайте",
"url": "URL"
"url": "URL-адреса"
},
"wmo": {
"0-day": "Сонячно",
@@ -506,7 +524,7 @@
"speed": "Швидкість",
"active": "Активний",
"queue": "Черга",
"total": "Всього"
"total": "Усього"
},
"gluetun": {
"public_ip": "Публічний IP",
@@ -524,7 +542,7 @@
},
"paperlessngx": {
"inbox": "Вхідні",
"total": "Всього"
"total": "Усього"
},
"nextdns": {
"wait": "Будь ласка, зачекайте",
@@ -582,7 +600,7 @@
"proxmoxbackupserver": {
"datastore_usage": "Сховище даних",
"failed_tasks_24h": "Невиконані завдання 24 години",
"cpu_usage": "CPU",
"cpu_usage": "ЦП",
"memory_usage": "Пам'ять"
},
"immich": {
@@ -741,7 +759,7 @@
},
"openmediavault": {
"downloading": "Downloading",
"total": "Всього",
"total": "Усього",
"running": "Запущено",
"stopped": "Зупинено",
"passed": "Пройшов",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "Users",
"uptime": "System Uptime",
"uptime": "Uptime",
"days": "Days",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "Subscriptions",
"unread": "Unread"
},
"fritzbox": {
"connectionStatus": "Trạng thái",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Current requests",
@@ -765,6 +783,7 @@
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
}
}

View File

@@ -48,11 +48,11 @@
},
"unifi": {
"users": "使用者",
"uptime": "系統運作時間",
"uptime": "運行時間",
"days": "天",
"wan": "WAN",
"lan": "LAN",
"wlan": "WLAN",
"lan": "區域網路",
"wlan": "無線區域網路",
"devices": "設備",
"lan_devices": "有線設備",
"wlan_devices": "無線設備",
@@ -81,18 +81,18 @@
},
"ping": {
"error": "錯誤",
"ping": "Ping",
"down": "Down",
"up": "Up",
"not_available": "Not Available"
"ping": "延遲",
"down": "離線",
"up": "在線",
"not_available": "不可用"
},
"siteMonitor": {
"http_status": "HTTP status",
"http_status": "HTTP 狀態",
"error": "錯誤",
"response": "Response",
"down": "Down",
"up": "Up",
"not_available": "Not Available"
"response": "回應",
"down": "離線",
"up": "在線",
"not_available": "不可用"
},
"emby": {
"playing": "播放緊",
@@ -122,6 +122,24 @@
"subscriptions": "訂閱",
"unread": "未讀"
},
"fritzbox": {
"connectionStatus": "狀況",
"connectionStatusUnconfigured": "未設置",
"connectionStatusConnecting": "連線中",
"connectionStatusAuthenticating": "驗證中",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "正在中斷連線",
"connectionStatusDisconnected": "連接已中斷",
"connectionStatusConnected": "已連線",
"uptime": "運行時間",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "離線",
"up": "在線",
"received": "已接收",
"sent": "已送出",
"externalIPAddress": "外部 IP"
},
"caddy": {
"upstreams": "上行",
"requests": "目前請求數",
@@ -270,7 +288,7 @@
"speedtest": {
"upload": "上傳速率",
"download": "下載速率",
"ping": "Ping"
"ping": "延遲"
},
"portainer": {
"running": "執行中",
@@ -369,8 +387,8 @@
"proxmox": {
"mem": "記憶體",
"cpu": "CPU",
"lxc": "LXC",
"vms": "VMs"
"lxc": "Linux 容器",
"vms": "虛擬機"
},
"glances": {
"cpu": "CPU",
@@ -390,7 +408,7 @@
"write": "寫入",
"gpu": "GPU",
"mem": "記憶體",
"swap": "Swap"
"swap": "交換空間"
},
"quicklaunch": {
"bookmark": "書籤",
@@ -463,11 +481,11 @@
"updates": "更新",
"update_available": "有可用的更新",
"up_to_date": "已更新至最新",
"child_bridges": "Child Bridges",
"child_bridges": "子網橋",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"up": "在線",
"pending": "待定",
"down": "Down"
"down": "離線"
},
"healthchecks": {
"new": "新建立",
@@ -542,10 +560,10 @@
"streams_xepg": "XEPG頻道"
},
"opendtu": {
"yieldDay": "Today",
"absolutePower": "Power",
"relativePower": "Power %",
"limit": "Limit"
"yieldDay": "今日",
"absolutePower": "功率",
"relativePower": "功率百分比",
"limit": "上限"
},
"opnsense": {
"cpu": "CPU負載",
@@ -573,8 +591,8 @@
"load": "平均負載量",
"memory": "記憶體使用率",
"wanStatus": "網際網路狀態",
"up": "Up",
"down": "Down",
"up": "在線",
"down": "離線",
"temp": "溫度",
"disk": "硬碟使用率",
"wanIP": "網際網路 IP"
@@ -667,7 +685,7 @@
"targets_total": "目標總數"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_today": "今日",
"gross_percent_1y": "一年",
"gross_percent_max": "所有時間"
},
@@ -725,10 +743,10 @@
"players": "玩家",
"maxPlayers": "玩家數上限",
"bots": "機器人",
"ping": "Ping"
"ping": "延遲"
},
"urbackup": {
"ok": "Ok",
"ok": "確定",
"errored": "錯誤",
"noRecent": "已過時",
"totalUsed": "已使用空間"
@@ -756,15 +774,16 @@
"sitesDown": "離線網站",
"paused": "擱置中",
"notyetchecked": "尚未檢查",
"up": "Up",
"up": "在線",
"seemsdown": "似乎離線",
"down": "Down",
"down": "離線",
"unknown": "未知"
},
"calendar": {
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!"
"inCinemas": "上映中",
"physicalRelease": "實體發行",
"digitalRelease": "數位發行",
"noEventsToday": "今日無事件",
"noEventsFound": "未找到事件"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "用户数",
"uptime": "系统运行时间",
"uptime": "运行时间",
"days": "天",
"wan": "WAN",
"lan": "LAN",
@@ -122,6 +122,24 @@
"subscriptions": "订阅",
"unread": "未读"
},
"fritzbox": {
"connectionStatus": "状态",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "已连接",
"uptime": "运行时间",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "离线",
"up": "在线",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
},
"caddy": {
"upstreams": "上行",
"requests": "当前请求",
@@ -765,6 +783,7 @@
"inCinemas": "上映中",
"physicalRelease": "实体发行",
"digitalRelease": "数字发行",
"noEventsToday": "今天没有活动!"
"noEventsToday": "今天没有活动!",
"noEventsFound": "未找到事件"
}
}

View File

@@ -48,7 +48,7 @@
},
"unifi": {
"users": "使用者",
"uptime": "系統運作時間",
"uptime": "運行時間",
"days": "天",
"wan": "WAN",
"lan": "區域網路",
@@ -82,16 +82,16 @@
"ping": {
"error": "錯誤",
"ping": "延遲",
"down": "Down",
"up": "Up",
"down": "離線",
"up": "在線",
"not_available": "不可用"
},
"siteMonitor": {
"http_status": "HTTP 狀態",
"error": "錯誤",
"response": "回應",
"down": "Down",
"up": "Up",
"down": "離線",
"up": "在線",
"not_available": "不可用"
},
"emby": {
@@ -122,6 +122,24 @@
"subscriptions": "訂閱",
"unread": "未讀"
},
"fritzbox": {
"connectionStatus": "狀態",
"connectionStatusUnconfigured": "未設置",
"connectionStatusConnecting": "連線中",
"connectionStatusAuthenticating": "驗證中",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "正在中斷連線",
"connectionStatusDisconnected": "連接已中斷",
"connectionStatusConnected": "已連線",
"uptime": "運行時間",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "離線",
"up": "在線",
"received": "已接收",
"sent": "已送出",
"externalIPAddress": "外部 IP"
},
"caddy": {
"upstreams": "上行",
"requests": "目前請求數",
@@ -369,8 +387,8 @@
"proxmox": {
"mem": "記憶體",
"cpu": "CPU",
"lxc": "LXC",
"vms": "VMs"
"lxc": "Linux 容器",
"vms": "虛擬機"
},
"glances": {
"cpu": "CPU",
@@ -390,7 +408,7 @@
"write": "寫入",
"gpu": "GPU",
"mem": "記憶體",
"swap": "Swap"
"swap": "交換空間"
},
"quicklaunch": {
"bookmark": "書籤",
@@ -463,11 +481,11 @@
"updates": "更新",
"update_available": "有可用的更新",
"up_to_date": "已更新至最新",
"child_bridges": "Child Bridges",
"child_bridges": "子網橋",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"up": "在線",
"pending": "待下載",
"down": "Down"
"down": "離線"
},
"healthchecks": {
"new": "新建立",
@@ -543,9 +561,9 @@
},
"opendtu": {
"yieldDay": "今日",
"absolutePower": "Power",
"relativePower": "Power %",
"limit": "Limit"
"absolutePower": "功率",
"relativePower": "功率百分比",
"limit": "上限"
},
"opnsense": {
"cpu": "CPU負載",
@@ -573,8 +591,8 @@
"load": "平均負載量",
"memory": "記憶體使用率",
"wanStatus": "網際網路狀態",
"up": "Up",
"down": "Down",
"up": "在線",
"down": "離線",
"temp": "溫度",
"disk": "硬碟使用率",
"wanIP": "網際網路 IP"
@@ -756,15 +774,16 @@
"sitesDown": "離線網站",
"paused": "擱置中",
"notyetchecked": "尚未檢查",
"up": "Up",
"up": "在線",
"seemsdown": "似乎離線",
"down": "Down",
"down": "離線",
"unknown": "未知"
},
"calendar": {
"inCinemas": "In cinemas",
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "今日無事件"
"inCinemas": "上映中",
"physicalRelease": "實體發行",
"digitalRelease": "數位發行",
"noEventsToday": "今日無事件",
"noEventsFound": "未找到事件"
}
}

View File

@@ -6,7 +6,7 @@ import { MdKeyboardArrowDown } from "react-icons/md";
import List from "components/services/list";
import ResolvedIcon from "components/resolvedicon";
export default function ServicesGroup({ group, services, layout, fiveColumns, disableCollapse }) {
export default function ServicesGroup({ group, services, layout, fiveColumns, disableCollapse, useEqualHeights }) {
const panel = useRef();
return (
@@ -62,7 +62,7 @@ export default function ServicesGroup({ group, services, layout, fiveColumns, di
}}
>
<Disclosure.Panel className="transition-all overflow-hidden duration-300 ease-out" ref={panel} static>
<List group={group} services={services.services} layout={layout} />
<List group={group} services={services.services} layout={layout} useEqualHeights={useEqualHeights} />
</Disclosure.Panel>
</Transition>
</>

View File

@@ -12,7 +12,7 @@ import Kubernetes from "widgets/kubernetes/component";
import { SettingsContext } from "utils/contexts/settings";
import ResolvedIcon from "components/resolvedicon";
export default function Item({ service, group }) {
export default function Item({ service, group, useEqualHeights }) {
const hasLink = service.href && service.href !== "#";
const { settings } = useContext(SettingsContext);
const showStats = service.showStats === false ? false : settings.showStats;
@@ -37,7 +37,8 @@ export default function Item({ service, group }) {
className={classNames(
settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? "-" : ""}${settings.cardBlur}`,
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",
useEqualHeights && "h-[calc(100%-0.5rem)]",
"transition-all 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 z-0 service-title">

View File

@@ -4,7 +4,7 @@ import { columnMap } from "../../utils/layout/columns";
import Item from "components/services/item";
export default function List({ group, services, layout }) {
export default function List({ group, services, layout, useEqualHeights }) {
return (
<ul
className={classNames(
@@ -13,7 +13,12 @@ export default function List({ group, services, layout }) {
)}
>
{services.map((service) => (
<Item key={service.container ?? service.app ?? service.name} service={service} group={group} />
<Item
key={service.container ?? service.app ?? service.name}
service={service}
group={group}
useEqualHeights={layout?.useEqualHeights ?? useEqualHeights}
/>
))}
</ul>
);

View File

@@ -100,8 +100,8 @@ export default async function handler(req, res) {
});
stats.cpuLimit = cpuLimit;
stats.memLimit = memLimit;
stats.cpuUsage = cpuLimit ? stats.cpu / cpuLimit : 0;
stats.memUsage = memLimit ? stats.mem / memLimit : 0;
stats.cpuUsage = cpuLimit ? 100 * (stats.cpu / cpuLimit) : 0;
stats.memUsage = memLimit ? 100 * (stats.mem / memLimit) : 0;
res.status(200).json({
stats,
});

View File

@@ -307,6 +307,7 @@ function Home({ initialSettings }) {
layout={settings.layout?.[group.name]}
fiveColumns={settings.fiveColumns}
disableCollapse={settings.disableCollapse}
useEqualHeights={settings.useEqualHeights}
/>
) : (
<BookmarksGroup
@@ -355,6 +356,7 @@ function Home({ initialSettings }) {
settings.layout,
settings.fiveColumns,
settings.disableCollapse,
settings.useEqualHeights,
settings.cardBlur,
initialSettings.layout,
]);
@@ -362,12 +364,12 @@ function Home({ initialSettings }) {
return (
<>
<Head>
<title>{initialSettings.title || "Homepage"}</title>
{initialSettings.base && <base href={initialSettings.base} />}
{initialSettings.favicon ? (
<title>{settings.title || "Homepage"}</title>
{settings.base && <base href={settings.base} />}
{settings.favicon ? (
<>
<link rel="icon" href={initialSettings.favicon} />
<link rel="apple-touch-icon" sizes="180x180" href={initialSettings.favicon} />
<link rel="icon" href={settings.favicon} />
<link rel="apple-touch-icon" sizes="180x180" href={settings.favicon} />
</>
) : (
<>
@@ -378,11 +380,8 @@ function Home({ initialSettings }) {
<link rel="mask-icon" href="/safari-pinned-tab.svg?v=4" color="#1e9cd7" />
</>
)}
<meta
name="msapplication-TileColor"
content={themes[initialSettings.color || "slate"][initialSettings.theme || "dark"]}
/>
<meta name="theme-color" content={themes[initialSettings.color || "slate"][initialSettings.theme || "dark"]} />
<meta name="msapplication-TileColor" content={themes[settings.color || "slate"][settings.theme || "dark"]} />
<meta name="theme-color" content={themes[settings.color || "slate"][settings.theme || "dark"]} />
</Head>
<link rel="preload" href="/api/config/custom.css" as="fetch" crossOrigin="anonymous" />
@@ -494,7 +493,7 @@ export default function Wrapper({ initialSettings, fallback }) {
rgb(var(--bg-color) / ${opacityValue}),
rgb(var(--bg-color) / ${opacityValue})
),
url(${backgroundImage})`;
url('${backgroundImage}')`;
wrappedStyle.backgroundPosition = "center";
wrappedStyle.backgroundSize = "cover";
}

View File

@@ -1,6 +1,6 @@
---
# For configuration options and examples, please see:
# https://gethomepage.dev/latest/configs/widgets
# https://gethomepage.dev/latest/configs/service-widgets
- resources:
cpu: true

View File

@@ -28,7 +28,7 @@ export default function Component({ service }) {
let diffsDetected = 0;
Object.keys(data).forEach((key) => {
if (data[key].last_changed > 0 && data[key].last_checked === data[key].last_changed) {
if (data[key].last_changed > 0 && data[key].last_checked === data[key].last_changed && !data[key].viewed) {
diffsDetected += 1;
}
});

View File

@@ -27,6 +27,7 @@ const components = {
fileflows: dynamic(() => import("./fileflows/component")),
flood: dynamic(() => import("./flood/component")),
freshrss: dynamic(() => import("./freshrss/component")),
fritzbox: dynamic(() => import("./fritzbox/component")),
gamedig: dynamic(() => import("./gamedig/component")),
ghostfolio: dynamic(() => import("./ghostfolio/component")),
glances: dynamic(() => import("./glances/component")),

View File

@@ -0,0 +1,69 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export const fritzboxDefaultFields = ["connectionStatus", "uptime", "maxDown", "maxUp"];
const formatUptime = (timestamp) => {
const hours = Math.floor(timestamp / 3600);
const minutes = Math.floor((timestamp % 3600) / 60);
const seconds = timestamp % 60;
const hourDuration = hours > 0 ? `${hours}h` : "00h";
const minDuration = minutes > 0 ? `${minutes}m` : "00m";
const secDuration = seconds > 0 ? `${seconds}s` : "00s";
return hourDuration + minDuration + secDuration;
};
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: fritzboxData, error: fritzboxError } = useWidgetAPI(widget, "status");
if (fritzboxError) {
return <Container service={service} error={fritzboxError} />;
}
// Default fields
if (!widget.fields?.length > 0) {
widget.fields = fritzboxDefaultFields;
}
const MAX_ALLOWED_FIELDS = 4;
// Limits max number of displayed fields
if (widget.fields?.length > MAX_ALLOWED_FIELDS) {
widget.fields = widget.fields.slice(0, MAX_ALLOWED_FIELDS);
}
if (!fritzboxData) {
return (
<Container service={service}>
<Block label="fritzbox.connectionStatus" />
<Block label="fritzbox.uptime" />
<Block label="fritzbox.maxDown" />
<Block label="fritzbox.maxUp" />
<Block label="fritzbox.down" />
<Block label="fritzbox.up" />
<Block label="fritzbox.received" />
<Block label="fritzbox.sent" />
<Block label="fritzbox.externalIPAddress" />
</Container>
);
}
return (
<Container service={service}>
<Block label="fritzbox.connectionStatus" value={t(`fritzbox.connectionStatus${fritzboxData.connectionStatus}`)} />
<Block label="fritzbox.uptime" value={formatUptime(fritzboxData.uptime)} />
<Block label="fritzbox.maxDown" value={t("common.byterate", { value: fritzboxData.maxDown / 8, decimals: 1 })} />
<Block label="fritzbox.maxUp" value={t("common.byterate", { value: fritzboxData.maxUp / 8, decimals: 1 })} />
<Block label="fritzbox.down" value={t("common.byterate", { value: fritzboxData.down, decimals: 1 })} />
<Block label="fritzbox.up" value={t("common.byterate", { value: fritzboxData.up, decimals: 1 })} />
<Block label="fritzbox.received" value={t("common.bytes", { value: fritzboxData.received })} />
<Block label="fritzbox.sent" value={t("common.bytes", { value: fritzboxData.sent })} />
<Block label="fritzbox.externalIPAddress" value={fritzboxData.externalIPAddress} />
</Container>
);
}

View File

@@ -0,0 +1,96 @@
import { xml2json } from "xml-js";
import { fritzboxDefaultFields } from "./component";
import { httpProxy } from "utils/proxy/http";
import getServiceWidget from "utils/config/service-helpers";
import createLogger from "utils/logger";
const logger = createLogger("fritzboxProxyHandler");
async function requestEndpoint(apiBaseUrl, service, action) {
const servicePath = service === "WANIPConnection" ? "WANIPConn1" : "WANCommonIFC1";
const params = {
method: "POST",
headers: {
"Content-Type": "text/xml; charset='utf-8'",
SoapAction: `urn:schemas-upnp-org:service:${service}:1#${action}`,
},
body:
"<?xml version='1.0' encoding='utf-8'?>" +
"<s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>" +
"<s:Body>" +
`<u:${action} xmlns:u='urn:schemas-upnp-org:service:${service}:1' />` +
"</s:Body>" +
"</s:Envelope>",
};
const apiUrl = `${apiBaseUrl}/igdupnp/control/${servicePath}`;
const [status, , data] = await httpProxy(apiUrl, params);
if (status !== 200) {
logger.debug(`HTTP ${status} performing SoapRequest for ${service}->${action}`, data);
throw new Error(`Failed fetching '${action}'`);
}
const response = {};
try {
const jsonData = JSON.parse(xml2json(data));
const responseElements = jsonData?.elements[0]?.elements[0]?.elements[0]?.elements || [];
responseElements.forEach((element) => {
response[element.name] = element.elements[0]?.text || "";
});
} catch (e) {
logger.debug(`Failed parsing ${service}->${action} response:`, data);
throw new Error(`Failed parsing '${action}' response`);
}
return response;
}
export default async function fritzboxProxyHandler(req, res) {
const { group, service } = req.query;
const serviceWidget = await getServiceWidget(group, service);
if (!serviceWidget) {
res.status(500).json({ error: "Service widget not found" });
return;
}
if (!serviceWidget.url) {
res.status(500).json({ error: "Service widget url not configured" });
return;
}
const serviceWidgetUrl = new URL(serviceWidget.url);
const port = serviceWidgetUrl.protocol === "https:" ? 49443 : 49000;
const apiBaseUrl = `${serviceWidgetUrl.protocol}//${serviceWidgetUrl.hostname}:${port}`;
if (!serviceWidget.fields?.length > 0) {
serviceWidget.fields = fritzboxDefaultFields;
}
const requestStatusInfo = ["connectionStatus", "uptime"].some((field) => serviceWidget.fields.includes(field));
const requestLinkProperties = ["maxDown", "maxUp"].some((field) => serviceWidget.fields.includes(field));
const requestAddonInfos = ["down", "up", "received", "sent"].some((field) => serviceWidget.fields.includes(field));
const requestExternalIPAddress = ["externalIPAddress"].some((field) => serviceWidget.fields.includes(field));
await Promise.all([
requestStatusInfo ? requestEndpoint(apiBaseUrl, "WANIPConnection", "GetStatusInfo") : null,
requestLinkProperties ? requestEndpoint(apiBaseUrl, "WANCommonInterfaceConfig", "GetCommonLinkProperties") : null,
requestAddonInfos ? requestEndpoint(apiBaseUrl, "WANCommonInterfaceConfig", "GetAddonInfos") : null,
requestExternalIPAddress ? requestEndpoint(apiBaseUrl, "WANIPConnection", "GetExternalIPAddress") : null,
])
.then(([statusInfo, linkProperties, addonInfos, externalIPAddress]) => {
res.status(200).json({
connectionStatus: statusInfo?.NewConnectionStatus || "Unconfigured",
uptime: statusInfo?.NewUptime || 0,
maxDown: linkProperties?.NewLayer1DownstreamMaxBitRate || 0,
maxUp: linkProperties?.NewLayer1UpstreamMaxBitRate || 0,
down: addonInfos?.NewByteReceiveRate || 0,
up: addonInfos?.NewByteSendRate || 0,
received: addonInfos?.NewX_AVM_DE_TotalBytesReceived64 || 0,
sent: addonInfos?.NewX_AVM_DE_TotalBytesSent64 || 0,
externalIPAddress: externalIPAddress?.NewExternalIPAddress || null,
});
})
.catch((error) => {
res.status(500).json({ error: error.message });
});
}

View File

@@ -0,0 +1,7 @@
import fritzboxProxyHandler from "./proxy";
const widget = {
proxyHandler: fritzboxProxyHandler,
};
export default widget;

View File

@@ -40,17 +40,17 @@ export default function Component({ service }) {
if (!data) {
return (
<Container service={service}>
<Block label={t("healthchecks.status")} />
<Block label={t("healthchecks.last_ping")} />
<Block label="healthchecks.status" />
<Block label="healthchecks.last_ping" />
</Container>
);
}
return (
<Container service={service}>
<Block label={t("healthchecks.status")} value={t(`healthchecks.${data.status}`)} />
<Block label="healthchecks.status" value={t(`healthchecks.${data.status}`)} />
<Block
label={t("healthchecks.last_ping")}
label="healthchecks.last_ping"
value={data.last_ping ? formatDate(data.last_ping) : t("healthchecks.never")}
/>
</Container>

View File

@@ -29,7 +29,7 @@ export default function Component({ service }) {
<Container service={service}>
<Block label="strelaysrv.numActiveSessions" value={t("common.number", { value: statsData.numActiveSessions })} />
<Block label="strelaysrv.numConnections" value={t("common.number", { value: statsData.numConnections })} />
<Block label={t("strelaysrv.dataRelayed")} value={t("common.bytes", { value: statsData.bytesProxied })} />
<Block label="strelaysrv.dataRelayed" value={t("common.bytes", { value: statsData.bytesProxied })} />
<Block
label="strelaysrv.transferRate"
value={t("common.bitrate", { value: statsData.kbps10s1m5m15m30m60m[5] })}

View File

@@ -21,6 +21,7 @@ import evcc from "./evcc/widget";
import fileflows from "./fileflows/widget";
import flood from "./flood/widget";
import freshrss from "./freshrss/widget";
import fritzbox from "./fritzbox/widget";
import gamedig from "./gamedig/widget";
import ghostfolio from "./ghostfolio/widget";
import glances from "./glances/widget";
@@ -122,6 +123,7 @@ const widgets = {
fileflows,
flood,
freshrss,
fritzbox,
gamedig,
ghostfolio,
glances,