Compare commits

..

1 Commits

Author SHA1 Message Date
Crowdin Bot
9ec2b1a669 New Crowdin translations by GitHub Action 2025-12-04 12:15:42 +00:00
49 changed files with 184 additions and 173 deletions

View File

@@ -159,19 +159,6 @@ Widgets can tint their metric block text automatically based on rules defined al
Supported numeric operators for the `when` property are `gt`, `gte`, `lt`, `lte`, `eq`, `ne`, `between`, and `outside`. String rules support `equals`, `includes`, `startsWith`, `endsWith`, and `regex`. Each rule can be inverted with `negate: true`, and string rules may pass `caseSensitive: true` or custom regex `flags`. The highlight engine does its best to coerce formatted values, but you will get the most reliable results when you pass plain numbers or strings into `<Block>`. Supported numeric operators for the `when` property are `gt`, `gte`, `lt`, `lte`, `eq`, `ne`, `between`, and `outside`. String rules support `equals`, `includes`, `startsWith`, `endsWith`, and `regex`. Each rule can be inverted with `negate: true`, and string rules may pass `caseSensitive: true` or custom regex `flags`. The highlight engine does its best to coerce formatted values, but you will get the most reliable results when you pass plain numbers or strings into `<Block>`.
#### Value Only Highlighting
You can optionally apply highlighting only to the value portion of a block (not the label) by setting `valueOnly: true` on the field configuration. This keeps the label visible while highlighting only the metric value itself.
```yaml
- Sonarr:
...
highlight:
queued:
valueOnly: true
...
```
## Descriptions ## Descriptions
Services may have descriptions, Services may have descriptions,

View File

@@ -14,7 +14,7 @@ services:
- 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 # (optional) For docker integrations
environment: environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
``` ```
@@ -36,7 +36,7 @@ services:
- 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, see alternative methods - /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods
environment: environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
PUID: $PUID PUID: $PUID

View File

@@ -68,19 +68,7 @@ All service widgets work essentially the same, that is, homepage makes a proxied
If, after correctly adding and mapping your custom icons via the [Icons](../configs/services.md#icons) instructions, you are still unable to see your icons please try recreating your container. If, after correctly adding and mapping your custom icons via the [Icons](../configs/services.md#icons) instructions, you are still unable to see your icons please try recreating your container.
## Enabling IPv6 for the homepage container ## Disabling IPv6
To enable IPv6 support for the homepage container, you can set the `HOSTNAME` environment variable, for example:
```yaml
services:
homepage:
...
environment:
- HOSTNAME=::
```
## Disabling IPv6 for http requests {#disabling-ipv6}
If you are having issues with certain widgets that are unable to reach public APIs (e.g. weather), in certain setups you may need to disable IPv6. You can set the environment variable `HOMEPAGE_PROXY_DISABLE_IPV6` to `true` to disable IPv6 for the homepage proxy. If you are having issues with certain widgets that are unable to reach public APIs (e.g. weather), in certain setups you may need to disable IPv6. You can set the environment variable `HOMEPAGE_PROXY_DISABLE_IPV6` to `true` to disable IPv6 for the homepage proxy.

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Vandag", "gross_percent_today": "Vandag",
"gross_percent_1y": "Een jaar", "gross_percent_1y": "Een jaar",
"gross_percent_max": "Alle tyd" "gross_percent_max": "Alle tyd",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podsendinge", "podcasts": "Podsendinge",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "سنة", "gross_percent_1y": "سنة",
"gross_percent_max": "كل الوقت" "gross_percent_max": "كل الوقت",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "بودكاست", "podcasts": "بودكاست",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Една година", "gross_percent_1y": "Една година",
"gross_percent_max": "All time" "gross_percent_max": "All time",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Подкасти", "podcasts": "Подкасти",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Un any", "gross_percent_1y": "Un any",
"gross_percent_max": "Sempre" "gross_percent_max": "Sempre",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Pòdcasts", "podcasts": "Pòdcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Jeden rok", "gross_percent_1y": "Jeden rok",
"gross_percent_max": "Za celou dobu" "gross_percent_max": "Za celou dobu",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasty", "podcasts": "Podcasty",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Et År", "gross_percent_1y": "Et År",
"gross_percent_max": "Altid" "gross_percent_max": "Altid",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Heute", "gross_percent_today": "Heute",
"gross_percent_1y": "Ein Jahr", "gross_percent_1y": "Ein Jahr",
"gross_percent_max": "Gesamt" "gross_percent_max": "Gesamt",
"net_worth": ""
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Ένας χρόνος", "gross_percent_1y": "Ένας χρόνος",
"gross_percent_max": "Διαχρονικά" "gross_percent_max": "Διαχρονικά",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "One year", "gross_percent_1y": "One year",
"gross_percent_max": "All time" "gross_percent_max": "All time",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Hoy", "gross_percent_today": "Hoy",
"gross_percent_1y": "Un año", "gross_percent_1y": "Un año",
"gross_percent_max": "Todo el tiempo" "gross_percent_max": "Todo el tiempo",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "One year", "gross_percent_1y": "One year",
"gross_percent_max": "All time" "gross_percent_max": "All time",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "One year", "gross_percent_1y": "One year",
"gross_percent_max": "All time" "gross_percent_max": "All time",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -142,8 +142,8 @@
"connectionStatusDisconnected": "Déconnecté", "connectionStatusDisconnected": "Déconnecté",
"connectionStatusConnected": "Connecté", "connectionStatusConnected": "Connecté",
"uptime": "Démarré depuis", "uptime": "Démarré depuis",
"maxDown": "Réception max.", "maxDown": "Réception max",
"maxUp": "Envoi max.", "maxUp": "Envoi max",
"down": "Réception", "down": "Réception",
"up": "Envoi", "up": "Envoi",
"received": "Reçu", "received": "Reçu",
@@ -229,7 +229,7 @@
"seed": "En partage" "seed": "En partage"
}, },
"develancacheui": { "develancacheui": {
"cachehitbytes": "Cache Hit (B)", "cachehitbytes": "Octets acquis du cache",
"cachemissbytes": "Cache Miss (B)" "cachemissbytes": "Cache Miss (B)"
}, },
"downloadstation": { "downloadstation": {
@@ -294,7 +294,7 @@
"queries": "Requêtes", "queries": "Requêtes",
"blocked": "Bloqué", "blocked": "Bloqué",
"blocked_percent": "% bloqué", "blocked_percent": "% bloqué",
"gravity": "Listes dom. bloqués" "gravity": "Listes dom. Bloqués"
}, },
"adguard": { "adguard": {
"queries": "Requêtes", "queries": "Requêtes",
@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Aujourd'hui", "gross_percent_today": "Aujourd'hui",
"gross_percent_1y": "Un an", "gross_percent_1y": "Un an",
"gross_percent_max": "Depuis le début" "gross_percent_max": "Depuis le début",
"net_worth": "Patrimoine net"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",
@@ -1091,7 +1092,7 @@
"NEW_ARRAY": "Nouveau tableau", "NEW_ARRAY": "Nouveau tableau",
"RECON_DISK": "Reconstruction du disque", "RECON_DISK": "Reconstruction du disque",
"DISABLE_DISK": "Disque désactivé", "DISABLE_DISK": "Disque désactivé",
"SWAP_DSBL": "Swap Disable", "SWAP_DSBL": "Désactiver le swap",
"INVALID_EXPANSION": "Extension invalide", "INVALID_EXPANSION": "Extension invalide",
"PARITY_NOT_BIGGEST": "La parité n'est pas la plus grande", "PARITY_NOT_BIGGEST": "La parité n'est pas la plus grande",
"TOO_MANY_MISSING_DISKS": "Trop de disques manquants", "TOO_MANY_MISSING_DISKS": "Trop de disques manquants",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "היום", "gross_percent_today": "היום",
"gross_percent_1y": "שנה", "gross_percent_1y": "שנה",
"gross_percent_max": "כל הזמן" "gross_percent_max": "כל הזמן",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "פודקאסטים", "podcasts": "פודקאסטים",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "One year", "gross_percent_1y": "One year",
"gross_percent_max": "All time" "gross_percent_max": "All time",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Danas", "gross_percent_today": "Danas",
"gross_percent_1y": "Jedna godina", "gross_percent_1y": "Jedna godina",
"gross_percent_max": "Svo vrijeme" "gross_percent_max": "Svo vrijeme",
"net_worth": "Neto vrijednost"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasti", "podcasts": "Podcasti",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Egy év", "gross_percent_1y": "Egy év",
"gross_percent_max": "Mindig" "gross_percent_max": "Mindig",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcast", "podcasts": "Podcast",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Satu Tahun", "gross_percent_1y": "Satu Tahun",
"gross_percent_max": "Sepanjang Masa" "gross_percent_max": "Sepanjang Masa",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcast", "podcasts": "Podcast",

View File

@@ -168,7 +168,7 @@
"passes": "Tessere" "passes": "Tessere"
}, },
"tautulli": { "tautulli": {
"playing": "Playing", "playing": "In riproduzione",
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams", "no_active": "No Active Streams",
@@ -313,7 +313,7 @@
"total": "Total" "total": "Total"
}, },
"suwayomi": { "suwayomi": {
"download": "Downloaded", "download": "Scaricati",
"nondownload": "Non Scaricato", "nondownload": "Non Scaricato",
"read": "Read", "read": "Read",
"unread": "Unread", "unread": "Unread",
@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Un anno", "gross_percent_1y": "Un anno",
"gross_percent_max": "Sempre" "gross_percent_max": "Sempre",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcast", "podcasts": "Podcast",

View File

@@ -69,7 +69,7 @@
"docker": { "docker": {
"rx": "受信済み", "rx": "受信済み",
"tx": "送信済み", "tx": "送信済み",
"mem": "MEM", "mem": "メモリ",
"cpu": "CPU", "cpu": "CPU",
"running": "起動中", "running": "起動中",
"offline": "オフライン", "offline": "オフライン",
@@ -83,7 +83,7 @@
"partial": "部分的" "partial": "部分的"
}, },
"ping": { "ping": {
"error": "Error", "error": "エラー",
"ping": "Ping", "ping": "Ping",
"down": "下へ", "down": "下へ",
"up": "稼働", "up": "稼働",
@@ -112,7 +112,7 @@
"offline_alt": "オフライン", "offline_alt": "オフライン",
"online": "オンライン", "online": "オンライン",
"total": "Total", "total": "Total",
"unknown": "Unknown" "unknown": "不明"
}, },
"evcc": { "evcc": {
"pv_power": "発電量", "pv_power": "発電量",
@@ -223,8 +223,8 @@
"invalid": "無効" "invalid": "無効"
}, },
"deluge": { "deluge": {
"download": "Download", "download": "ダウンロード",
"upload": "Upload", "upload": "アップロード",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
@@ -233,8 +233,8 @@
"cachemissbytes": "キャッシュミスバイト" "cachemissbytes": "キャッシュミスバイト"
}, },
"downloadstation": { "downloadstation": {
"download": "Download", "download": "ダウンロード",
"upload": "Upload", "upload": "アップロード",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
@@ -251,7 +251,7 @@
"queued": "Queued", "queued": "Queued",
"movies": "Movies", "movies": "Movies",
"queue": "Queue", "queue": "Queue",
"unknown": "Unknown" "unknown": "不明"
}, },
"lidarr": { "lidarr": {
"wanted": "Wanted", "wanted": "Wanted",
@@ -692,8 +692,8 @@
}, },
"diskstation": { "diskstation": {
"days": "Days", "days": "Days",
"uptime": "Uptime", "uptime": "稼働時間",
"volumeAvailable": "Available" "volumeAvailable": "利用可能"
}, },
"mylar": { "mylar": {
"series": "Series", "series": "Series",
@@ -754,12 +754,13 @@
"gatus": { "gatus": {
"up": "Sites Up", "up": "Sites Up",
"down": "Sites Down", "down": "Sites Down",
"uptime": "Uptime" "uptime": "稼働時間"
}, },
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "1年", "gross_percent_1y": "1年",
"gross_percent_max": "全期間" "gross_percent_max": "全期間",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "ポッドキャスト", "podcasts": "ポッドキャスト",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "오늘", "gross_percent_today": "오늘",
"gross_percent_1y": "1년", "gross_percent_1y": "1년",
"gross_percent_max": "전체 기간" "gross_percent_max": "전체 기간",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "팟캐스트", "podcasts": "팟캐스트",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "One year", "gross_percent_1y": "One year",
"gross_percent_max": "All time" "gross_percent_max": "All time",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Satu tahun", "gross_percent_1y": "Satu tahun",
"gross_percent_max": "Sepanjang masa" "gross_percent_max": "Sepanjang masa",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podkas", "podcasts": "Podkas",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Vandaag", "gross_percent_today": "Vandaag",
"gross_percent_1y": "Een jaar", "gross_percent_1y": "Een jaar",
"gross_percent_max": "Altijd" "gross_percent_max": "Altijd",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Ett år", "gross_percent_1y": "Ett år",
"gross_percent_max": "Gjennom tidene" "gross_percent_max": "Gjennom tidene",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podkaster", "podcasts": "Podkaster",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Dzisiaj", "gross_percent_today": "Dzisiaj",
"gross_percent_1y": "Rok", "gross_percent_1y": "Rok",
"gross_percent_max": "Od początku" "gross_percent_max": "Od początku",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasty", "podcasts": "Podcasty",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Um ano", "gross_percent_1y": "Um ano",
"gross_percent_max": "Desde Sempre" "gross_percent_max": "Desde Sempre",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Hoje", "gross_percent_today": "Hoje",
"gross_percent_1y": "Um ano", "gross_percent_1y": "Um ano",
"gross_percent_max": "Todo o tempo" "gross_percent_max": "Todo o tempo",
"net_worth": "Patrimônio Líquido"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Un an", "gross_percent_1y": "Un an",
"gross_percent_max": "Tot timpul" "gross_percent_max": "Tot timpul",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasturi", "podcasts": "Podcasturi",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Сегодня", "gross_percent_today": "Сегодня",
"gross_percent_1y": "Один год", "gross_percent_1y": "Один год",
"gross_percent_max": "Все время" "gross_percent_max": "Все время",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Подкасты", "podcasts": "Подкасты",

View File

@@ -362,8 +362,8 @@
}, },
"trilium": { "trilium": {
"version": "Verzia", "version": "Verzia",
"notesCount": "Notes", "notesCount": "Poznámky",
"dbSize": "Database Size", "dbSize": "Veľkosť databázy",
"unknown": "Neznáme" "unknown": "Neznáme"
}, },
"navidrome": { "navidrome": {
@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Dnes", "gross_percent_today": "Dnes",
"gross_percent_1y": "Jeden rok", "gross_percent_1y": "Jeden rok",
"gross_percent_max": "Za celý čas" "gross_percent_max": "Za celý čas",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasty", "podcasts": "Podcasty",
@@ -786,7 +787,7 @@
"downloadCount": "Poradie", "downloadCount": "Poradie",
"downloadBytesRemaining": "Zostávajúce", "downloadBytesRemaining": "Zostávajúce",
"downloadTotalBytes": "Veľkosť", "downloadTotalBytes": "Veľkosť",
"downloadSpeed": "Speed" "downloadSpeed": "Rýchlosť"
}, },
"kavita": { "kavita": {
"seriesCount": "Series", "seriesCount": "Series",
@@ -952,7 +953,7 @@
"loading": "Načítava sa", "loading": "Načítava sa",
"open": "Open - US Market", "open": "Open - US Market",
"closed": "Closed - US Market", "closed": "Closed - US Market",
"invalidConfiguration": "Invalid Configuration" "invalidConfiguration": "Neplatná konfigurácia"
}, },
"frigate": { "frigate": {
"cameras": "Kamery", "cameras": "Kamery",
@@ -1022,10 +1023,10 @@
"loading": "Načítava sa" "loading": "Načítava sa"
}, },
"gitlab": { "gitlab": {
"groups": "Groups", "groups": "Skupiny",
"issues": "Issues", "issues": "Problémy",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "projects": "Projekty"
}, },
"apcups": { "apcups": {
"status": "Stav", "status": "Stav",
@@ -1035,7 +1036,7 @@
}, },
"karakeep": { "karakeep": {
"bookmarks": "Bookmarks", "bookmarks": "Bookmarks",
"favorites": "Favorites", "favorites": "Obľúbené",
"archived": "Archived", "archived": "Archived",
"highlights": "Highlights", "highlights": "Highlights",
"lists": "Zoznamy", "lists": "Zoznamy",
@@ -1065,13 +1066,13 @@
"komodo": { "komodo": {
"total": "Celkom", "total": "Celkom",
"running": "Beží", "running": "Beží",
"stopped": "Stopped", "stopped": "Zastavené",
"down": "Down", "down": "Down",
"unhealthy": "Nezdravý", "unhealthy": "Nezdravý",
"unknown": "Neznáme", "unknown": "Neznáme",
"servers": "Servers", "servers": "Servery",
"stacks": "Stacks", "stacks": "Stacks",
"containers": "Containers" "containers": "Kontajnery"
}, },
"filebrowser": { "filebrowser": {
"available": "Dostupné", "available": "Dostupné",
@@ -1080,8 +1081,8 @@
}, },
"wallos": { "wallos": {
"activeSubscriptions": "Subscriptions", "activeSubscriptions": "Subscriptions",
"thisMonthlyCost": "This Month", "thisMonthlyCost": "Tento mesiac",
"nextMonthlyCost": "Next Month", "nextMonthlyCost": "Ďalší mesiac",
"previousMonthlyCost": "Prev. Month", "previousMonthlyCost": "Prev. Month",
"nextRenewingSubscription": "Next Payment" "nextRenewingSubscription": "Next Payment"
}, },

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Eno leto", "gross_percent_1y": "Eno leto",
"gross_percent_max": "Celoten čas" "gross_percent_max": "Celoten čas",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasti", "podcasts": "Podcasti",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Данас", "gross_percent_today": "Данас",
"gross_percent_1y": "Једна година", "gross_percent_1y": "Једна година",
"gross_percent_max": "Све време" "gross_percent_max": "Све време",
"net_worth": "Нето вредност"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Подкасти", "podcasts": "Подкасти",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "One year", "gross_percent_1y": "One year",
"gross_percent_max": "All time" "gross_percent_max": "All time",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "One year", "gross_percent_1y": "One year",
"gross_percent_max": "All time" "gross_percent_max": "All time",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "One year", "gross_percent_1y": "One year",
"gross_percent_max": "All time" "gross_percent_max": "All time",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Bugün", "gross_percent_today": "Bugün",
"gross_percent_1y": "Bir yıl", "gross_percent_1y": "Bir yıl",
"gross_percent_max": "Tüm zaman" "gross_percent_max": "Tüm zaman",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcast", "podcasts": "Podcast",

View File

@@ -63,14 +63,14 @@
"wlan_users": "WLAN користувачі", "wlan_users": "WLAN користувачі",
"up": "UP", "up": "UP",
"down": "Завантаження", "down": "Завантаження",
"wait": "Please wait", "wait": "Будь ласка, зачекайте",
"empty_data": "Статус підсистеми невідомий" "empty_data": "Статус підсистеми невідомий"
}, },
"docker": { "docker": {
"rx": "RX", "rx": "RX",
"tx": "TX", "tx": "TX",
"mem": "MEM", "mem": "Пам'ять",
"cpu": "CPU", "cpu": "Процесор",
"running": "Запущено", "running": "Запущено",
"offline": "Офлайн", "offline": "Офлайн",
"error": "Помилка", "error": "Помилка",
@@ -83,7 +83,7 @@
"partial": "Частковий" "partial": "Частковий"
}, },
"ping": { "ping": {
"error": "Error", "error": "Помилка",
"ping": "Пінг", "ping": "Пінг",
"down": "Офлайн", "down": "Офлайн",
"up": "Онлайн", "up": "Онлайн",
@@ -91,11 +91,11 @@
}, },
"siteMonitor": { "siteMonitor": {
"http_status": "HTTP статус", "http_status": "HTTP статус",
"error": "Error", "error": "Помилка",
"response": "Відповідь", "response": "Відповідь",
"down": "Down", "down": "Офлайн",
"up": "Up", "up": "Онлайн",
"not_available": "Not Available" "not_available": "Не доступний"
}, },
"emby": { "emby": {
"playing": "Відтворення", "playing": "Відтворення",
@@ -108,10 +108,10 @@
"songs": "Пісні" "songs": "Пісні"
}, },
"esphome": { "esphome": {
"offline": "Offline", "offline": "Офлайн",
"offline_alt": "Offline", "offline_alt": "Офлайн",
"online": "Онлайн", "online": "Онлайн",
"total": "Total", "total": "Усього",
"unknown": "Невідомо" "unknown": "Невідомо"
}, },
"evcc": { "evcc": {
@@ -133,7 +133,7 @@
"unread": "Не прочитано" "unread": "Не прочитано"
}, },
"fritzbox": { "fritzbox": {
"connectionStatus": "Status", "connectionStatus": "Стан",
"connectionStatusUnconfigured": "Не налаштовано", "connectionStatusUnconfigured": "Не налаштовано",
"connectionStatusConnecting": "Підключення", "connectionStatusConnecting": "Підключення",
"connectionStatusAuthenticating": "Автентифікація", "connectionStatusAuthenticating": "Автентифікація",
@@ -141,11 +141,11 @@
"connectionStatusDisconnecting": "Відключення", "connectionStatusDisconnecting": "Відключення",
"connectionStatusDisconnected": "Відключено", "connectionStatusDisconnected": "Відключено",
"connectionStatusConnected": "З'єднано", "connectionStatusConnected": "З'єднано",
"uptime": "Uptime", "uptime": "Час роботи",
"maxDown": "Макс. завантаження", "maxDown": "Макс. завантаження",
"maxUp": "Макс. віддача", "maxUp": "Макс. віддача",
"down": "Down", "down": "Офлайн",
"up": "Up", "up": "Онлайн",
"received": "Отримано", "received": "Отримано",
"sent": "Надіслано", "sent": "Надіслано",
"externalIPAddress": "Зовнішній IP", "externalIPAddress": "Зовнішній IP",
@@ -168,10 +168,10 @@
"passes": "Пропуски" "passes": "Пропуски"
}, },
"tautulli": { "tautulli": {
"playing": "Playing", "playing": "Грає",
"transcoding": "Transcoding", "transcoding": "Транскодування",
"bitrate": "Bitrate", "bitrate": "Бітрейт",
"no_active": "No Active Streams", "no_active": "Немає активних потоків",
"plex_connection_error": "Перевірте з'єднання Plex" "plex_connection_error": "Перевірте з'єднання Plex"
}, },
"omada": { "omada": {
@@ -189,30 +189,30 @@
"plex": { "plex": {
"streams": "Активні потоки", "streams": "Активні потоки",
"albums": "Альбоми", "albums": "Альбоми",
"movies": "Movies", "movies": "Фільми",
"tv": "TБ шоу" "tv": "TБ шоу"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Rate", "rate": "Швидкість",
"queue": "Черга", "queue": "Черга",
"timeleft": "Залишилось" "timeleft": "Залишилось"
}, },
"rutorrent": { "rutorrent": {
"active": "Активний", "active": "Активний",
"upload": "Upload", "upload": "Вивантаж.",
"download": "Download" "download": "Завантажено"
}, },
"transmission": { "transmission": {
"download": "Download", "download": "Завантажено",
"upload": "Upload", "upload": "Вивантаж.",
"leech": "Leech", "leech": "Ліч",
"seed": "Seed" "seed": "Сід"
}, },
"qbittorrent": { "qbittorrent": {
"download": "Download", "download": "Завантажити",
"upload": "Upload", "upload": "Вивантаж.",
"leech": "Leech", "leech": "Ліч",
"seed": "Seed" "seed": "Сід"
}, },
"qnap": { "qnap": {
"cpuUsage": "Використання CPU", "cpuUsage": "Використання CPU",
@@ -225,8 +225,8 @@
"deluge": { "deluge": {
"download": "Download", "download": "Download",
"upload": "Upload", "upload": "Upload",
"leech": "Leech", "leech": "Ліч",
"seed": "Seed" "seed": "Сід"
}, },
"develancacheui": { "develancacheui": {
"cachehitbytes": "Кеш-хіт байт", "cachehitbytes": "Кеш-хіт байт",
@@ -234,33 +234,33 @@
}, },
"downloadstation": { "downloadstation": {
"download": "Download", "download": "Download",
"upload": "Upload", "upload": "Вивантаж.",
"leech": "Leech", "leech": "Ліч",
"seed": "Seed" "seed": "Сід"
}, },
"sonarr": { "sonarr": {
"wanted": "Розшукується", "wanted": "Розшукується",
"queued": "У черзі", "queued": "У черзі",
"series": "Series", "series": "Серіали",
"queue": "Queue", "queue": "Черга",
"unknown": "Unknown" "unknown": "Невідомо"
}, },
"radarr": { "radarr": {
"wanted": "Wanted", "wanted": "У бажаних",
"missing": "Відсутній", "missing": "Відсутній",
"queued": "Queued", "queued": "У черзі",
"movies": "Movies", "movies": "Фільми",
"queue": "Queue", "queue": "Черга",
"unknown": "Unknown" "unknown": "Невідомо"
}, },
"lidarr": { "lidarr": {
"wanted": "Wanted", "wanted": "У бажаних",
"queued": "Queued", "queued": "У черзі",
"artists": "Виконавці" "artists": "Виконавці"
}, },
"readarr": { "readarr": {
"wanted": "Wanted", "wanted": "У бажаних",
"queued": "Queued", "queued": "У черзі",
"books": "Книжки" "books": "Книжки"
}, },
"bazarr": { "bazarr": {
@@ -273,20 +273,20 @@
"available": "Доступно" "available": "Доступно"
}, },
"jellyseerr": { "jellyseerr": {
"pending": "Pending", "pending": "Очікує",
"approved": "Approved", "approved": "Схвалено",
"available": "Available", "available": "Доступно",
"issues": "Open Issues" "issues": "Проблеми до усунення"
}, },
"overseerr": { "overseerr": {
"pending": "Pending", "pending": "Очікує",
"processing": "Обробка", "processing": "Обробка",
"approved": "Approved", "approved": "Схвалено",
"available": "Available" "available": "Доступно"
}, },
"netalertx": { "netalertx": {
"total": "Total", "total": "Усього",
"connected": "Connected", "connected": "З'єднано",
"new_devices": "Нові пристрої", "new_devices": "Нові пристрої",
"down_alerts": "Сповіщення про падіння" "down_alerts": "Сповіщення про падіння"
}, },
@@ -297,13 +297,13 @@
"gravity": "Доменів в списку" "gravity": "Доменів в списку"
}, },
"adguard": { "adguard": {
"queries": "Queries", "queries": "Запити",
"blocked": "Blocked", "blocked": "Заблоковано",
"filtered": "Відфільтровано", "filtered": "Відфільтровано",
"latency": "Затримка" "latency": "Затримка"
}, },
"speedtest": { "speedtest": {
"upload": "Upload", "upload": "Вивантаж.",
"download": "Download", "download": "Download",
"ping": "Ping" "ping": "Ping"
}, },
@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "Один рік", "gross_percent_1y": "Один рік",
"gross_percent_max": "Весь час" "gross_percent_max": "Весь час",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Подкасти", "podcasts": "Подкасти",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "One year", "gross_percent_1y": "One year",
"gross_percent_max": "All time" "gross_percent_max": "All time",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "一年", "gross_percent_1y": "一年",
"gross_percent_max": "所有時間" "gross_percent_max": "所有時間",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "播客", "podcasts": "播客",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "一年", "gross_percent_1y": "一年",
"gross_percent_max": "所有时间" "gross_percent_max": "所有时间",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "播客", "podcasts": "播客",

View File

@@ -759,7 +759,8 @@
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Today", "gross_percent_today": "Today",
"gross_percent_1y": "一年", "gross_percent_1y": "一年",
"gross_percent_max": "所有時間" "gross_percent_max": "所有時間",
"net_worth": "Net Worth"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",

View File

@@ -32,8 +32,6 @@ export default function Block({ value, label, field }) {
return getHighlightClass(highlight.level, highlightConfig); return getHighlightClass(highlight.level, highlightConfig);
}, [highlight, highlightConfig]); }, [highlight, highlightConfig]);
const applyToValueOnly = highlight?.valueOnly === true;
return ( return (
<div <div
className={classNames( className={classNames(
@@ -46,11 +44,7 @@ export default function Block({ value, label, field }) {
data-highlight-source={highlight?.source} data-highlight-source={highlight?.source}
> >
<div className="font-thin text-sm">{value === undefined || value === null ? "-" : value}</div> <div className="font-thin text-sm">{value === undefined || value === null ? "-" : value}</div>
<div <div className="font-bold text-xs uppercase">{t(label)}</div>
className={classNames("font-bold text-xs uppercase", applyToValueOnly && "text-theme-700 dark:text-theme-200")}
>
{t(label)}
</div>
</div> </div>
); );
} }

View File

@@ -111,7 +111,7 @@ export async function servicesFromDocker() {
}; };
} }
let substitutedVal = substituteEnvironmentVars(containerLabels[label]); let substitutedVal = substituteEnvironmentVars(containerLabels[label]);
if (value === "widget.version" || /^widgets\[\d+\]\.version$/.test(value)) { if (value === "widget.version") {
substitutedVal = parseInt(substitutedVal, 10); substitutedVal = parseInt(substitutedVal, 10);
} }
shvl.set(constructedService, value, substitutedVal); shvl.set(constructedService, value, substitutedVal);

View File

@@ -200,7 +200,7 @@ const ensureArray = (value) => {
}; };
const findHighlightLevel = (ruleSet, numericValue, stringValue) => { const findHighlightLevel = (ruleSet, numericValue, stringValue) => {
const { numeric, string, valueOnly } = ruleSet; const { numeric, string } = ruleSet;
if (numeric && numericValue !== undefined) { if (numeric && numericValue !== undefined) {
const numericRules = ensureArray(numeric); const numericRules = ensureArray(numeric);
@@ -208,7 +208,7 @@ const findHighlightLevel = (ruleSet, numericValue, stringValue) => {
for (const candidate of numericCandidates) { for (const candidate of numericCandidates) {
for (const rule of numericRules) { for (const rule of numericRules) {
if (rule?.level && evaluateNumericRule(candidate, rule)) { if (rule?.level && evaluateNumericRule(candidate, rule)) {
return { level: rule.level, source: "numeric", rule, valueOnly }; return { level: rule.level, source: "numeric", rule };
} }
} }
} }
@@ -218,7 +218,7 @@ const findHighlightLevel = (ruleSet, numericValue, stringValue) => {
const stringRules = ensureArray(string); const stringRules = ensureArray(string);
for (const rule of stringRules) { for (const rule of stringRules) {
if (rule?.level && evaluateStringRule(stringValue, rule)) { if (rule?.level && evaluateStringRule(stringValue, rule)) {
return { level: rule.level, source: "string", rule, valueOnly }; return { level: rule.level, source: "string", rule };
} }
} }
} }

View File

@@ -111,7 +111,7 @@ export async function cachedRequest(url, duration = 5, ua = "homepage") {
export async function httpProxy(url, params = {}) { export async function httpProxy(url, params = {}) {
const constructedUrl = new URL(url); const constructedUrl = new URL(url);
const disableIpv6 = process.env.HOMEPAGE_PROXY_DISABLE_IPV6 === "true"; const disableIpv6 = process.env.HOMEPAGE_PROXY_DISABLE_IPV6 === "true";
const agentOptions = disableIpv6 ? { family: 4, autoSelectFamily: false } : { autoSelectFamilyAttemptTimeout: 500 }; const agentOptions = disableIpv6 ? { family: 4, autoSelectFamily: false } : {};
let request = null; let request = null;
if (constructedUrl.protocol === "https:") { if (constructedUrl.protocol === "https:") {