mirror of
https://github.com/gethomepage/homepage.git
synced 2025-12-30 18:42:12 +08:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0af975b3d9 | ||
|
|
01a2495e47 | ||
|
|
e4b4eba445 | ||
|
|
885b2624a8 | ||
|
|
f06214a295 | ||
|
|
7627f9c5a7 | ||
|
|
556450c8de | ||
|
|
edc38c93e2 | ||
|
|
b9e1a514cb | ||
|
|
7e0fbed06b | ||
|
|
358633638f | ||
|
|
fa1d343f2a | ||
|
|
247f73f0db | ||
|
|
54db9ac551 |
@@ -85,7 +85,7 @@ Or you may pass the path to a local image relative to the `/app/public` director
|
||||
|
||||
## Theme
|
||||
|
||||
You can configure a fixed them (and disable the theme switcher) by passing the `theme` option, like so:
|
||||
You can configure a fixed theme (and disable the theme switcher) by passing the `theme` option, like so:
|
||||
|
||||
```yaml
|
||||
theme: dark # or light
|
||||
@@ -211,13 +211,13 @@ layout:
|
||||
|
||||
### Five Columns
|
||||
|
||||
You can add a fifth column (when `style: columns` which is default) by adding:
|
||||
You can add a fifth column to services (when `style: columns` which is default) by adding:
|
||||
|
||||
```yaml
|
||||
fiveColumns: true
|
||||
```
|
||||
|
||||
By default homepage will max out at 4 columns for column style
|
||||
By default homepage will max out at 4 columns for services with `columns` style
|
||||
|
||||
### Collapsible sections
|
||||
|
||||
|
||||
@@ -361,3 +361,33 @@ spec:
|
||||
port:
|
||||
number: 3000
|
||||
```
|
||||
|
||||
### Multiple Replicas
|
||||
|
||||
If you plan to deploy homepage with a replica count greater than 1, you may
|
||||
want to consider enabling sticky sessions on the homepage route. This will
|
||||
prevent unnecessary re-renders on page loads and window / tab focusing. The
|
||||
procedure for enabling sticky sessions depends on your Ingress controller. Below
|
||||
is an example using Traefik as the Ingress controller.
|
||||
|
||||
```
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: homepage.example.com
|
||||
spec:
|
||||
entryPoints:
|
||||
- websecure
|
||||
routes:
|
||||
- kind: Rule
|
||||
match: Host(`homepage.example.com`)
|
||||
services:
|
||||
- kind: Service
|
||||
name: homepage
|
||||
port: 3000
|
||||
sticky:
|
||||
cookie:
|
||||
httpOnly: true
|
||||
secure: true
|
||||
sameSite: none
|
||||
```
|
||||
|
||||
@@ -7,7 +7,10 @@ Learn more about [ESPHome](https://esphome.io/).
|
||||
|
||||
Show the number of ESPHome devices based on their state.
|
||||
|
||||
Allowed fields: `["total", "online", "offline", "unknown"]`.
|
||||
Allowed fields: `["total", "online", "offline", "offline_alt", "unknown"]` (maximum of 4).
|
||||
|
||||
By default ESPHome will only mark devices as `offline` if their address cannot be pinged. If it has an invalid config or its name cannot be resolved (by DNS) its status will be marked as `unknown`.
|
||||
To group both `offline` and `unknown` devices together, users should use the `offline_alt` field instead. This sums all devices that are _not_ online together.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
|
||||
@@ -5,7 +5,7 @@ description: Gitea Widget Configuration
|
||||
|
||||
Learn more about [Gitea](https://gitea.com).
|
||||
|
||||
API token requires `notifications` and `repository` permissions. See the [gitea documentation](https://docs.gitea.com/development/api-usage#generating-and-listing-api-tokens) for details on generating tokens.
|
||||
API token requires `notifications`, `repository` and `issue` permissions. See the [gitea documentation](https://docs.gitea.com/development/api-usage#generating-and-listing-api-tokens) for details on generating tokens.
|
||||
|
||||
Allowed fields: ["notifications", "issues", "pulls"]
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@ widget:
|
||||
password: pass # optional if auth enabled in Glances
|
||||
metric: cpu
|
||||
diskUnits: bytes # optional, bytes (default) or bbytes. Only applies to disk
|
||||
refreshInterval: 5000 # optional - in milliseconds, defaults to 1000 or more, depending on the metric
|
||||
pointsLimit: 15 # optional, defaults to 15
|
||||
```
|
||||
|
||||
_Please note, this widget does not need an `href`, `icon` or `description` on its parent service. To achieve the same effect as the examples above, see as an example:_
|
||||
|
||||
@@ -5,7 +5,7 @@ description: Jackett Widget Configuration
|
||||
|
||||
Learn more about [Jackett](https://github.com/Jackett/Jackett).
|
||||
|
||||
Jackett must not have any authentication for the widget to work.
|
||||
If Jackett has an admin password set, you must set the `password` field for the widget to work.
|
||||
|
||||
Allowed fields: `["configured", "errored"]`.
|
||||
|
||||
@@ -13,5 +13,5 @@ Allowed fields: `["configured", "errored"]`.
|
||||
widget:
|
||||
type: jackett
|
||||
url: http://jackett.host.or.ip
|
||||
key: jackettapikey
|
||||
password: jackettadminpassword # optional
|
||||
```
|
||||
|
||||
@@ -9,9 +9,9 @@ This widget requires the installation of the [pfsense-api](https://github.com/ja
|
||||
|
||||
Once pfSense API is installed, you can set the API to be read-only in System > API > Settings.
|
||||
|
||||
Currently the only supported authentication mode is 'Local Database'.
|
||||
There are two currently supported authentication modes: 'Local Database' and 'API Token'. For 'Local Database', use `username` and `password` with the credentials of an admin user. For 'API Token', utilize the `headers` parameter with `client_token` and `client_id` obtained from pfSense as shown below. Do not use both headers and username / password.
|
||||
|
||||
WAN interface to monitor can be defined by updating the `wan` param.
|
||||
The interface to monitor is defined by updating the `wan` parameter. It should be referenced as it is shown under Interfaces > Assignments in pfSense.
|
||||
|
||||
Load is returned instead of cpu utilization. This is a limitation in the pfSense API due to the complexity of this calculation. This may become available in future versions.
|
||||
|
||||
@@ -21,7 +21,10 @@ Allowed fields: `["load", "memory", "temp", "wanStatus", "wanIP", "disk"]` (maxi
|
||||
widget:
|
||||
type: pfsense
|
||||
url: http://pfsense.host.or.ip:port
|
||||
username: user
|
||||
password: pass
|
||||
username: user # optional, or API token
|
||||
password: pass # optional, or API token
|
||||
headers: # optional, or username/password
|
||||
Authorization: client_id client_token
|
||||
wan: igb0
|
||||
fields: ["load", "memory", "temp", "wanStatus"] # optional
|
||||
```
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
---
|
||||
title: Whats Up Docker
|
||||
description: WhatsUpDocker Widget Configuration
|
||||
title: What's Up Docker
|
||||
description: What's Up Docker Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [Whats Up Docker](https://github.com/fmartinou/whats-up-docker).
|
||||
|
||||
Currently requires unauthenticated whatsupdocker instance.
|
||||
Learn more about [What's Up Docker](https://github.com/fmartinou/whats-up-docker).
|
||||
|
||||
Allowed fields: `["monitoring", "updates"]`.
|
||||
|
||||
@@ -13,4 +11,6 @@ Allowed fields: `["monitoring", "updates"]`.
|
||||
widget:
|
||||
type: whatsupdocker
|
||||
url: http://whatsupdocker:port
|
||||
username: username # optional
|
||||
password: password # optional
|
||||
```
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Vanlyn",
|
||||
"offline_alt": "Vanlyn",
|
||||
"online": "Aanlyn",
|
||||
"total": "Totaal",
|
||||
"unknown": "Onbekend"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Gebruikers",
|
||||
"recipes": "Resepte",
|
||||
"keywords": "Sleutelwoorde"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "Met Waarborg",
|
||||
"locations": "Plekke",
|
||||
"labels": "Etikette",
|
||||
"users": "Gebruikers",
|
||||
"totalValue": "Totale Waarde"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "غير متصل",
|
||||
"offline_alt": "غير متصل",
|
||||
"online": "مُتّصل",
|
||||
"total": "المجموع",
|
||||
"unknown": "مجهول"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "المستخدمون",
|
||||
"recipes": "وصفات",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "المستخدمون",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Изключен",
|
||||
"offline_alt": "Изключен",
|
||||
"online": "Online",
|
||||
"total": "Общо",
|
||||
"unknown": "Неизв."
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Потребители",
|
||||
"recipes": "Рецепти",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Потребители",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Fora de línia",
|
||||
"offline_alt": "Fora de línia",
|
||||
"online": "Online",
|
||||
"total": "Total",
|
||||
"unknown": "Desconegut"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Usuaris",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Usuaris",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Celkem",
|
||||
"unknown": "Neznámý"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Uživatelé",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Uživatelé",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Total",
|
||||
"unknown": "Ukendt"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Brugere",
|
||||
"recipes": "Opskrifter",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Brugere",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Gesamt",
|
||||
"unknown": "Unbekannt"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Benutzer",
|
||||
"recipes": "Rezepte",
|
||||
"keywords": "Schlagwörter"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Objekte",
|
||||
"totalWithWarranty": "Mit Garantie",
|
||||
"locations": "Orte",
|
||||
"labels": "Labels",
|
||||
"users": "Benutzer",
|
||||
"totalValue": "Gesamtwert"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Εκτός σύνδεσης",
|
||||
"offline_alt": "Εκτός σύνδεσης",
|
||||
"online": "Συνδεδεμένοι",
|
||||
"total": "Σύνολο",
|
||||
"unknown": "Άγνωστο"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Χρήστες",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Χρήστες",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Total",
|
||||
"unknown": "Unknown"
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Malkonekta",
|
||||
"offline_alt": "Malkonekta",
|
||||
"online": "Online",
|
||||
"total": "Totalo",
|
||||
"unknown": "Nekonata"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Uzantoj",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Uzantoj",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Desconectado",
|
||||
"offline_alt": "Desconectado",
|
||||
"online": "En línea",
|
||||
"total": "Total",
|
||||
"unknown": "Desconocido"
|
||||
@@ -544,7 +545,7 @@
|
||||
"channels": "Canales",
|
||||
"hd": "Alta definición",
|
||||
"tunerCount": "Tuners",
|
||||
"channelNumber": "Channel",
|
||||
"channelNumber": "Canal",
|
||||
"channelNetwork": "Network",
|
||||
"signalStrength": "Strength",
|
||||
"signalQuality": "Quality",
|
||||
@@ -850,9 +851,9 @@
|
||||
"playDuration": "Time Watched",
|
||||
"sceneSize": "Scenes Size",
|
||||
"sceneDuration": "Scenes Duration",
|
||||
"images": "Images",
|
||||
"images": "Imágenes",
|
||||
"imageSize": "Images Size",
|
||||
"galleries": "Galleries",
|
||||
"galleries": "Galerías",
|
||||
"performers": "Performers",
|
||||
"studios": "Studios",
|
||||
"movies": "Películas",
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Usuarios",
|
||||
"recipes": "Recetas",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "Con Garantía",
|
||||
"locations": "Ubicaciones",
|
||||
"labels": "Labels",
|
||||
"users": "Usuarios",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Guztira",
|
||||
"unknown": "Ezezaguna"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Users",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Users",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Yhteensä",
|
||||
"unknown": "Unknown"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Users",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Users",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Hors ligne",
|
||||
"offline_alt": "Hors ligne",
|
||||
"online": "En ligne",
|
||||
"total": "Total",
|
||||
"unknown": "Inconnu"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Utilisateurs",
|
||||
"recipes": "Recettes",
|
||||
"keywords": "Mots-clés"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Objets",
|
||||
"totalWithWarranty": "Avec garantie",
|
||||
"locations": "Emplacements",
|
||||
"labels": "Étiquettes",
|
||||
"users": "Utilisateurs",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "כבוי",
|
||||
"offline_alt": "כבוי",
|
||||
"online": "Online",
|
||||
"total": "סה\"כ",
|
||||
"unknown": "Unknown"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Users",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Users",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
"percent": "{{value, percent}}",
|
||||
"number": "{{value, number}}",
|
||||
"ms": "{{value, number}}",
|
||||
"date": "{{value, date}}",
|
||||
"date": "{value, date}",
|
||||
"relativeDate": "{{value, relativeDate}}",
|
||||
"uptime": "{{value, uptime}}",
|
||||
"months": "mo",
|
||||
"months": "माह",
|
||||
"days": "d",
|
||||
"hours": "h",
|
||||
"hours": "घं.",
|
||||
"minutes": "m",
|
||||
"seconds": "s"
|
||||
"seconds": "पल"
|
||||
},
|
||||
"widget": {
|
||||
"missing_type": "Missing Widget Type: {{type}}",
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Total",
|
||||
"unknown": "Unknown"
|
||||
@@ -411,7 +412,7 @@
|
||||
"free": "Free",
|
||||
"used": "Used",
|
||||
"days": "d",
|
||||
"hours": "h",
|
||||
"hours": "घं.",
|
||||
"crit": "Crit",
|
||||
"read": "Read",
|
||||
"write": "Write",
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Users",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Users",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Ukupno",
|
||||
"unknown": "Nepoznato"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Korisnici",
|
||||
"recipes": "Recepti",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Korisnici",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Nem elérhető",
|
||||
"offline_alt": "Nem elérhető",
|
||||
"online": "Csatlakozva",
|
||||
"total": "Összes",
|
||||
"unknown": "Ismeretlen"
|
||||
@@ -124,8 +125,8 @@
|
||||
"flood": {
|
||||
"download": "Letöltés",
|
||||
"upload": "Feltöltés",
|
||||
"leech": "Letöltés",
|
||||
"seed": "Feltöltés"
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Előfizetések",
|
||||
@@ -202,14 +203,14 @@
|
||||
"transmission": {
|
||||
"download": "Letöltés",
|
||||
"upload": "Feltöltés",
|
||||
"leech": "Letöltés",
|
||||
"seed": "Feltöltés"
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
"qbittorrent": {
|
||||
"download": "Letöltés",
|
||||
"upload": "Feltöltés",
|
||||
"leech": "Letöltés",
|
||||
"seed": "Feltöltés"
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
"qnap": {
|
||||
"cpuUsage": "Processzor Használat",
|
||||
@@ -222,14 +223,14 @@
|
||||
"deluge": {
|
||||
"download": "Letöltés",
|
||||
"upload": "Feltöltés",
|
||||
"leech": "Letöltés",
|
||||
"seed": "Feltöltés"
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
"downloadstation": {
|
||||
"download": "Letöltés",
|
||||
"upload": "Feltöltés",
|
||||
"leech": "Letöltés",
|
||||
"seed": "Feltöltés"
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
"sonarr": {
|
||||
"wanted": "Keresett",
|
||||
@@ -396,7 +397,7 @@
|
||||
"proxmox": {
|
||||
"mem": "RAM",
|
||||
"cpu": "Processzor",
|
||||
"lxc": "LXC",
|
||||
"lxc": "LXC-k",
|
||||
"vms": "VM-ek"
|
||||
},
|
||||
"glances": {
|
||||
@@ -525,7 +526,7 @@
|
||||
"playlists": "Lejátszási listák"
|
||||
},
|
||||
"truenas": {
|
||||
"load": "Rendszerterheltség",
|
||||
"load": "Rendszerterhelés",
|
||||
"uptime": "Üzemidő",
|
||||
"alerts": "Riasztások"
|
||||
},
|
||||
@@ -543,14 +544,14 @@
|
||||
"hdhomerun": {
|
||||
"channels": "Csatornák",
|
||||
"hd": "HD",
|
||||
"tunerCount": "Tuners",
|
||||
"channelNumber": "Channel",
|
||||
"channelNetwork": "Network",
|
||||
"signalStrength": "Strength",
|
||||
"signalQuality": "Quality",
|
||||
"symbolQuality": "Quality",
|
||||
"tunerCount": "Tuner-ek",
|
||||
"channelNumber": "Csatorna",
|
||||
"channelNetwork": "Hálózat",
|
||||
"signalStrength": "Erősség",
|
||||
"signalQuality": "Minőség",
|
||||
"symbolQuality": "Minőség",
|
||||
"networkRate": "Bitráta",
|
||||
"clientIP": "Client"
|
||||
"clientIP": "Kliens"
|
||||
},
|
||||
"scrutiny": {
|
||||
"passed": "Megfelelt",
|
||||
@@ -797,10 +798,10 @@
|
||||
},
|
||||
"openwrt": {
|
||||
"uptime": "Üzemidő",
|
||||
"cpuLoad": "CPU Load Avg (5m)",
|
||||
"cpuLoad": "Átlag CPU terhelés (5p)",
|
||||
"up": "Fel",
|
||||
"down": "Le",
|
||||
"bytesTx": "Transmitted",
|
||||
"bytesTx": "Továbbított",
|
||||
"bytesRx": "Fogadott"
|
||||
},
|
||||
"uptimerobot": {
|
||||
@@ -833,35 +834,43 @@
|
||||
"criticals": "Kritikusok"
|
||||
},
|
||||
"plantit": {
|
||||
"events": "Events",
|
||||
"plants": "Plants",
|
||||
"events": "Események",
|
||||
"plants": "Növények",
|
||||
"photos": "Fényképek",
|
||||
"species": "Species"
|
||||
"species": "Fajok"
|
||||
},
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"notifications": "Üzenetek",
|
||||
"issues": "Problémák",
|
||||
"pulls": "Pull Requests"
|
||||
"pulls": "Pull request-ek"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
"scenesPlayed": "Scenes Played",
|
||||
"playCount": "Total Plays",
|
||||
"playDuration": "Time Watched",
|
||||
"sceneSize": "Scenes Size",
|
||||
"sceneDuration": "Scenes Duration",
|
||||
"images": "Images",
|
||||
"imageSize": "Images Size",
|
||||
"galleries": "Galleries",
|
||||
"performers": "Performers",
|
||||
"studios": "Studios",
|
||||
"scenes": "Jelenetek",
|
||||
"scenesPlayed": "Lejátszott jelenetek",
|
||||
"playCount": "Összes leátszás",
|
||||
"playDuration": "Nézett idő",
|
||||
"sceneSize": "Jelenetek mérete",
|
||||
"sceneDuration": "Jelenetek hossza",
|
||||
"images": "Képek",
|
||||
"imageSize": "Képek mérete",
|
||||
"galleries": "Galériák",
|
||||
"performers": "Előadók",
|
||||
"studios": "Stúdiók",
|
||||
"movies": "Film",
|
||||
"tags": "Címkék",
|
||||
"oCount": "O Count"
|
||||
"oCount": "O szám"
|
||||
},
|
||||
"tandoor": {
|
||||
"users": "Felhasználók",
|
||||
"recipes": "Receptek",
|
||||
"keywords": "Keywords"
|
||||
"keywords": "Kulcsszavak"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Tárgyak",
|
||||
"totalWithWarranty": "Garanciával",
|
||||
"locations": "Helyek",
|
||||
"labels": "Címkék",
|
||||
"users": "Felhasználók",
|
||||
"totalValue": "Teljes érték"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Total",
|
||||
"unknown": "Tidak Diketahui"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Pengguna",
|
||||
"recipes": "Resep",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Pengguna",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Non in linea",
|
||||
"offline_alt": "Non in linea",
|
||||
"online": "Online",
|
||||
"total": "Totale",
|
||||
"unknown": "Sconosciuto"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Utenti",
|
||||
"recipes": "Ricette",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Utenti",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"date": "{{value, date}}",
|
||||
"relativeDate": "{{value, relativeDate}}",
|
||||
"uptime": "{{value, uptime}}",
|
||||
"months": "mo",
|
||||
"months": "月",
|
||||
"days": "日",
|
||||
"hours": "時間",
|
||||
"minutes": "分",
|
||||
@@ -92,7 +92,7 @@
|
||||
"siteMonitor": {
|
||||
"http_status": "HTTP ステータス",
|
||||
"error": "エラー",
|
||||
"response": "Response",
|
||||
"response": "応答",
|
||||
"down": "下へ",
|
||||
"up": "上へ",
|
||||
"not_available": "利用できません。"
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "オフライン",
|
||||
"offline_alt": "オフライン",
|
||||
"online": "オンライン",
|
||||
"total": "合計",
|
||||
"unknown": "不明"
|
||||
@@ -133,21 +134,21 @@
|
||||
},
|
||||
"fritzbox": {
|
||||
"connectionStatus": "状態",
|
||||
"connectionStatusUnconfigured": "Unconfigured",
|
||||
"connectionStatusConnecting": "Connecting",
|
||||
"connectionStatusAuthenticating": "Authenticating",
|
||||
"connectionStatusPendingDisconnect": "Pending Disconnect",
|
||||
"connectionStatusDisconnecting": "Disconnecting",
|
||||
"connectionStatusDisconnected": "Disconnected",
|
||||
"connectionStatusUnconfigured": "未設定",
|
||||
"connectionStatusConnecting": "接続中",
|
||||
"connectionStatusAuthenticating": "認証中",
|
||||
"connectionStatusPendingDisconnect": "接続を切断する",
|
||||
"connectionStatusDisconnecting": "接続を切断中",
|
||||
"connectionStatusDisconnected": "切断されました",
|
||||
"connectionStatusConnected": "接続済み",
|
||||
"uptime": "稼働時間",
|
||||
"maxDown": "Max. Down",
|
||||
"maxUp": "Max. Up",
|
||||
"maxDown": "最大ダウン",
|
||||
"maxUp": "最大アップ",
|
||||
"down": "下へ",
|
||||
"up": "上へ",
|
||||
"received": "受信済み",
|
||||
"sent": "送信済み",
|
||||
"externalIPAddress": "Ext. IP"
|
||||
"externalIPAddress": "退出ID"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "アップストリーム",
|
||||
@@ -543,7 +544,7 @@
|
||||
"hdhomerun": {
|
||||
"channels": "チャンネル",
|
||||
"hd": "HD",
|
||||
"tunerCount": "Tuners",
|
||||
"tunerCount": "チューナー",
|
||||
"channelNumber": "チャンネル",
|
||||
"channelNetwork": "ネットワーク",
|
||||
"signalStrength": "強さ",
|
||||
@@ -562,7 +563,7 @@
|
||||
"total": "合計"
|
||||
},
|
||||
"peanut": {
|
||||
"battery_charge": "Battery Charge",
|
||||
"battery_charge": "バッテリー充電",
|
||||
"ups_load": "UPS 負荷",
|
||||
"ups_status": "UPS 状態",
|
||||
"online": "オンライン",
|
||||
@@ -825,43 +826,51 @@
|
||||
"noEventsFound": "予定が見つかりません"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Platforms",
|
||||
"totalRoms": "Total ROMs"
|
||||
"platforms": "プラットフォーム",
|
||||
"totalRoms": "ROMの合計"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "警告",
|
||||
"criticals": "重大"
|
||||
},
|
||||
"plantit": {
|
||||
"events": "Events",
|
||||
"plants": "Plants",
|
||||
"events": "イベント",
|
||||
"plants": "植物",
|
||||
"photos": "写真",
|
||||
"species": "Species"
|
||||
"species": "種"
|
||||
},
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"notifications": "通知",
|
||||
"issues": "課題",
|
||||
"pulls": "Pull Requests"
|
||||
"pulls": "プルリクエスト"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
"scenesPlayed": "Scenes Played",
|
||||
"playCount": "Total Plays",
|
||||
"playDuration": "Time Watched",
|
||||
"sceneSize": "Scenes Size",
|
||||
"sceneDuration": "Scenes Duration",
|
||||
"images": "Images",
|
||||
"imageSize": "Images Size",
|
||||
"galleries": "Galleries",
|
||||
"performers": "Performers",
|
||||
"studios": "Studios",
|
||||
"scenes": "シーン",
|
||||
"scenesPlayed": "再生されたシーン",
|
||||
"playCount": "合計再生数",
|
||||
"playDuration": "視聴時間",
|
||||
"sceneSize": "シーンサイズ",
|
||||
"sceneDuration": "シーンの長さ",
|
||||
"images": "画像",
|
||||
"imageSize": "画像サイズ",
|
||||
"galleries": "ギャラリー",
|
||||
"performers": "出演者",
|
||||
"studios": "スタジオ",
|
||||
"movies": "映画",
|
||||
"tags": "タグ",
|
||||
"oCount": "O Count"
|
||||
"oCount": "O カウント"
|
||||
},
|
||||
"tandoor": {
|
||||
"users": "ユーザ",
|
||||
"recipes": "レシピ",
|
||||
"keywords": "Keywords"
|
||||
"keywords": "キーワード"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "アイテム",
|
||||
"totalWithWarranty": "保証付き",
|
||||
"locations": "場所",
|
||||
"labels": "ラベル",
|
||||
"users": "ユーザ",
|
||||
"totalValue": "合計値"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "중지",
|
||||
"offline_alt": "중지",
|
||||
"online": "Online",
|
||||
"total": "총합",
|
||||
"unknown": "알 수 없음"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "사용자",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "사용자",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Bezsaistē",
|
||||
"offline_alt": "Bezsaistē",
|
||||
"online": "Online",
|
||||
"total": "Kopā",
|
||||
"unknown": "Nezināms"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Lietotāji",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Lietotāji",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Luar talian",
|
||||
"offline_alt": "Luar talian",
|
||||
"online": "Dalam Talian",
|
||||
"total": "Jumlah",
|
||||
"unknown": "Tidak Diketahui"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Pengguna",
|
||||
"recipes": "Resipi",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Pengguna",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Onbereikbaar",
|
||||
"offline_alt": "Onbereikbaar",
|
||||
"online": "Bereikbaar",
|
||||
"total": "Totaal",
|
||||
"unknown": "Onbekend"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Gebruikers",
|
||||
"recipes": "Recepten",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "Met garantie",
|
||||
"locations": "Locaties",
|
||||
"labels": "Labels",
|
||||
"users": "Gebruikers",
|
||||
"totalValue": "Totale waarde"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Total",
|
||||
"unknown": "Unknown"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Users",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Users",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Nieosiągalny",
|
||||
"offline_alt": "Nieosiągalny",
|
||||
"online": "Dostępny",
|
||||
"total": "Całkowite",
|
||||
"unknown": "Nieznany"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Użytkownicy",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Użytkownicy",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Desligado",
|
||||
"offline_alt": "Desligado",
|
||||
"online": "Online",
|
||||
"total": "Total",
|
||||
"unknown": "Desconhecido"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Utilizadores",
|
||||
"recipes": "Receitas",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Utilizadores",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Desligado",
|
||||
"offline_alt": "Desligado",
|
||||
"online": "Online",
|
||||
"total": "Total",
|
||||
"unknown": "Desconhecido"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Utilizadores",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Utilizadores",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Total",
|
||||
"unknown": "Necunoscut"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Utilizatori",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Utilizatori",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Не в сети",
|
||||
"offline_alt": "Не в сети",
|
||||
"online": "В сети",
|
||||
"total": "Всего",
|
||||
"unknown": "Неизвестен"
|
||||
@@ -830,38 +831,46 @@
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Предупреждения",
|
||||
"criticals": "Криты"
|
||||
"criticals": "Критические"
|
||||
},
|
||||
"plantit": {
|
||||
"events": "Events",
|
||||
"plants": "Plants",
|
||||
"events": "События",
|
||||
"plants": "Растения",
|
||||
"photos": "Фото",
|
||||
"species": "Species"
|
||||
"species": "Виды"
|
||||
},
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"notifications": "Уведомления",
|
||||
"issues": "Вопросы",
|
||||
"pulls": "Pull Requests"
|
||||
"pulls": "Запросы на слияние (Pull Request)"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
"scenesPlayed": "Scenes Played",
|
||||
"playCount": "Total Plays",
|
||||
"playDuration": "Time Watched",
|
||||
"sceneSize": "Scenes Size",
|
||||
"sceneDuration": "Scenes Duration",
|
||||
"images": "Images",
|
||||
"imageSize": "Images Size",
|
||||
"galleries": "Galleries",
|
||||
"performers": "Performers",
|
||||
"studios": "Studios",
|
||||
"scenes": "Сцены",
|
||||
"scenesPlayed": "Проигранных сцен",
|
||||
"playCount": "Всего проиграно",
|
||||
"playDuration": "Просмотрено времени",
|
||||
"sceneSize": "Размер сцены",
|
||||
"sceneDuration": "Длительность сцен",
|
||||
"images": "Изображения",
|
||||
"imageSize": "Размер изображений",
|
||||
"galleries": "Галереи",
|
||||
"performers": "Исполнители",
|
||||
"studios": "Студии",
|
||||
"movies": "Фильмы",
|
||||
"tags": "Теги",
|
||||
"oCount": "O Count"
|
||||
"oCount": "0"
|
||||
},
|
||||
"tandoor": {
|
||||
"users": "Пользователи",
|
||||
"recipes": "Рецепты",
|
||||
"keywords": "Keywords"
|
||||
"keywords": "Ключевые слова"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Элементы",
|
||||
"totalWithWarranty": "С гарантией",
|
||||
"locations": "Местоположения",
|
||||
"labels": "Ярлыки",
|
||||
"users": "Пользователи",
|
||||
"totalValue": "Общая стоимость"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Nedostupný",
|
||||
"offline_alt": "Nedostupný",
|
||||
"online": "Online",
|
||||
"total": "Celkovo",
|
||||
"unknown": "Neznáme"
|
||||
@@ -833,28 +834,28 @@
|
||||
"criticals": "Kritické"
|
||||
},
|
||||
"plantit": {
|
||||
"events": "Events",
|
||||
"plants": "Plants",
|
||||
"events": "Udalosti",
|
||||
"plants": "Rastliny",
|
||||
"photos": "Fotografie",
|
||||
"species": "Species"
|
||||
"species": "Druhy"
|
||||
},
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"notifications": "Oznámenia",
|
||||
"issues": "Problémy",
|
||||
"pulls": "Pull Requests"
|
||||
"pulls": "Pull requesty"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
"scenes": "Scény",
|
||||
"scenesPlayed": "Scenes Played",
|
||||
"playCount": "Total Plays",
|
||||
"playDuration": "Time Watched",
|
||||
"sceneSize": "Scenes Size",
|
||||
"sceneDuration": "Scenes Duration",
|
||||
"images": "Images",
|
||||
"imageSize": "Images Size",
|
||||
"galleries": "Galleries",
|
||||
"performers": "Performers",
|
||||
"studios": "Studios",
|
||||
"playCount": "Celkovo prehraní",
|
||||
"playDuration": "Pozeraný čas",
|
||||
"sceneSize": "Veľkosť obrazovky",
|
||||
"sceneDuration": "Dĺžka scény",
|
||||
"images": "Obrázky",
|
||||
"imageSize": "Veľkosť obrázkov",
|
||||
"galleries": "Galérie",
|
||||
"performers": "Herci",
|
||||
"studios": "Štúdiá",
|
||||
"movies": "Filmy",
|
||||
"tags": "Štítky",
|
||||
"oCount": "O Count"
|
||||
@@ -862,6 +863,14 @@
|
||||
"tandoor": {
|
||||
"users": "Používatelia",
|
||||
"recipes": "Recepty",
|
||||
"keywords": "Keywords"
|
||||
"keywords": "Kľúčové slová"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Položky",
|
||||
"totalWithWarranty": "So zárukou",
|
||||
"locations": "Umiestnenia",
|
||||
"labels": "Labels",
|
||||
"users": "Používatelia",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Ni povezan",
|
||||
"offline_alt": "Ni povezan",
|
||||
"online": "Na spletu",
|
||||
"total": "Skupaj",
|
||||
"unknown": "Neznano"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Uporabniki",
|
||||
"recipes": "Recepti",
|
||||
"keywords": "Ključne besede"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Predmeti",
|
||||
"totalWithWarranty": "Z garancijo",
|
||||
"locations": "Lokacije",
|
||||
"labels": "Oznake",
|
||||
"users": "Uporabniki",
|
||||
"totalValue": "Skupna vrednost"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Total",
|
||||
"unknown": "Unknown"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Users",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Users",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Total",
|
||||
"unknown": "Unknown"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Användare",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Användare",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "ఆఫ్లైన్",
|
||||
"offline_alt": "ఆఫ్లైన్",
|
||||
"online": "Online",
|
||||
"total": "మొత్తం",
|
||||
"unknown": "Unknown"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "వినియోగదారులు",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "వినియోగదారులు",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "ออฟไลน์",
|
||||
"offline_alt": "ออฟไลน์",
|
||||
"online": "Online",
|
||||
"total": "ทั้งหมด",
|
||||
"unknown": "ไม่ทราบ"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "ผู้ใช้",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "ผู้ใช้",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Çevrimdışı",
|
||||
"offline_alt": "Çevrimdışı",
|
||||
"online": "Çevrimiçi",
|
||||
"total": "Toplam",
|
||||
"unknown": "Bilinmiyor"
|
||||
@@ -136,18 +137,18 @@
|
||||
"connectionStatusUnconfigured": "Yapılandırılmamış",
|
||||
"connectionStatusConnecting": "Bağlanıyor",
|
||||
"connectionStatusAuthenticating": "Kimlik doğrulanıyor",
|
||||
"connectionStatusPendingDisconnect": "Pending Disconnect",
|
||||
"connectionStatusPendingDisconnect": "Bağlantının Kesilmesi Bekleniyor",
|
||||
"connectionStatusDisconnecting": "Bağlantı kesiliyor...",
|
||||
"connectionStatusDisconnected": "Bağlantı kesildi",
|
||||
"connectionStatusConnected": "Bağlandı",
|
||||
"uptime": "Çalışma Süresi",
|
||||
"maxDown": "Max. Down",
|
||||
"maxUp": "Max. Up",
|
||||
"maxDown": "Max. Indirme",
|
||||
"maxUp": "Max. Gönderme",
|
||||
"down": "İndirme",
|
||||
"up": "Yükleme",
|
||||
"received": "Alınan",
|
||||
"sent": "Gönderilen",
|
||||
"externalIPAddress": "Ext. IP"
|
||||
"externalIPAddress": "Harici IP"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "Akış",
|
||||
@@ -169,7 +170,7 @@
|
||||
"transcoding": "Dönüştürülüyor",
|
||||
"bitrate": "Bit Oranı",
|
||||
"no_active": "Aktif akış yok",
|
||||
"plex_connection_error": "Check Plex Connection"
|
||||
"plex_connection_error": "Plex Bağlantısı Kontrol Ediliyor"
|
||||
},
|
||||
"omada": {
|
||||
"connectedAp": "Bağlı AP'ler",
|
||||
@@ -426,7 +427,7 @@
|
||||
"custom": "Özel",
|
||||
"visit": "Ziyaret",
|
||||
"url": "URL",
|
||||
"searchsuggestion": "Suggestion"
|
||||
"searchsuggestion": "Öneri"
|
||||
},
|
||||
"wmo": {
|
||||
"0-day": "Güneşli",
|
||||
@@ -498,14 +499,14 @@
|
||||
"down": "İndirme"
|
||||
},
|
||||
"healthchecks": {
|
||||
"new": "New",
|
||||
"new": "Yeni",
|
||||
"up": "Yükleme",
|
||||
"grace": "In Grace Period",
|
||||
"grace": "Tolerans Döneminde",
|
||||
"down": "İndirme",
|
||||
"paused": "Paused",
|
||||
"paused": "Durduruldu",
|
||||
"status": "Durum",
|
||||
"last_ping": "Son Ping",
|
||||
"never": "No pings yet"
|
||||
"never": "Henüz ping yok"
|
||||
},
|
||||
"watchtower": {
|
||||
"containers_scanned": "Tarandı",
|
||||
@@ -543,14 +544,14 @@
|
||||
"hdhomerun": {
|
||||
"channels": "Kanallar",
|
||||
"hd": "HD",
|
||||
"tunerCount": "Tuners",
|
||||
"channelNumber": "Channel",
|
||||
"channelNetwork": "Network",
|
||||
"signalStrength": "Strength",
|
||||
"signalQuality": "Quality",
|
||||
"symbolQuality": "Quality",
|
||||
"tunerCount": "Ayarlayıcılar",
|
||||
"channelNumber": "Kanal",
|
||||
"channelNetwork": "Ağ",
|
||||
"signalStrength": "Sağlamlık",
|
||||
"signalQuality": "Kalite",
|
||||
"symbolQuality": "Kalite",
|
||||
"networkRate": "Bit Oranı",
|
||||
"clientIP": "Client"
|
||||
"clientIP": "Alıcı"
|
||||
},
|
||||
"scrutiny": {
|
||||
"passed": "Geçti",
|
||||
@@ -563,11 +564,11 @@
|
||||
},
|
||||
"peanut": {
|
||||
"battery_charge": "Pil Yüzdesi",
|
||||
"ups_load": "UPS Load",
|
||||
"ups_status": "UPS Status",
|
||||
"ups_load": "UPS Yükü",
|
||||
"ups_status": "UPS Durumu",
|
||||
"online": "Çevrimiçi",
|
||||
"on_battery": "Pilde",
|
||||
"low_battery": "Low Battery"
|
||||
"low_battery": "Düşük Pil"
|
||||
},
|
||||
"nextdns": {
|
||||
"wait": "Lütfen Bekleyin",
|
||||
@@ -577,7 +578,7 @@
|
||||
"cpuLoad": "CPU Yükü",
|
||||
"memoryUsed": "Bellek Kullanımı",
|
||||
"uptime": "Çalışma Süresi",
|
||||
"numberOfLeases": "Leases"
|
||||
"numberOfLeases": "Kiralama"
|
||||
},
|
||||
"xteve": {
|
||||
"streams_all": "Tüm Akışlar",
|
||||
@@ -585,9 +586,9 @@
|
||||
"streams_xepg": "XEPG Kanalları"
|
||||
},
|
||||
"opendtu": {
|
||||
"yieldDay": "Today",
|
||||
"absolutePower": "Power",
|
||||
"relativePower": "Power %",
|
||||
"yieldDay": "Bugün",
|
||||
"absolutePower": "Güç",
|
||||
"relativePower": "Güç %",
|
||||
"limit": "Limit"
|
||||
},
|
||||
"opnsense": {
|
||||
@@ -606,25 +607,25 @@
|
||||
"printer_state": "Durum",
|
||||
"temp_tool": "Araç sıcaklığı",
|
||||
"temp_bed": "Yatak sıcaklığı",
|
||||
"job_completion": "Completion"
|
||||
"job_completion": "Tamamlanma"
|
||||
},
|
||||
"cloudflared": {
|
||||
"origin_ip": "Origin IP",
|
||||
"origin_ip": "Gerçek IP",
|
||||
"status": "Durum"
|
||||
},
|
||||
"pfsense": {
|
||||
"load": "Load Avg",
|
||||
"memory": "Mem Usage",
|
||||
"wanStatus": "WAN Status",
|
||||
"load": "Ort. Yükleme",
|
||||
"memory": "Bellek Kullanımı",
|
||||
"wanStatus": "WAN Durumu",
|
||||
"up": "Yükleme",
|
||||
"down": "İndirme",
|
||||
"temp": "Sıcaklık",
|
||||
"disk": "Disk Usage",
|
||||
"disk": "Disk Kullanımı",
|
||||
"wanIP": "WAN IP"
|
||||
},
|
||||
"proxmoxbackupserver": {
|
||||
"datastore_usage": "Datastore",
|
||||
"failed_tasks_24h": "Failed Tasks 24h",
|
||||
"datastore_usage": "Veri deposu",
|
||||
"failed_tasks_24h": "Başarısız Görevler 24h",
|
||||
"cpu_usage": "CPU",
|
||||
"memory_usage": "Bellek"
|
||||
},
|
||||
@@ -638,14 +639,14 @@
|
||||
"up": "Sites Up",
|
||||
"down": "Sites Down",
|
||||
"uptime": "Çalışma Süresi",
|
||||
"incident": "Incident",
|
||||
"incident": "Olay",
|
||||
"m": "dk"
|
||||
},
|
||||
"atsumeru": {
|
||||
"series": "Diziler",
|
||||
"archives": "Archives",
|
||||
"chapters": "Chapters",
|
||||
"categories": "Categories"
|
||||
"archives": "Arşivler",
|
||||
"chapters": "Bölümler",
|
||||
"categories": "Kategoriler"
|
||||
},
|
||||
"komga": {
|
||||
"libraries": "Kütüphane",
|
||||
@@ -672,42 +673,42 @@
|
||||
"queue": "Kuyruk",
|
||||
"processing": "İşleniyor",
|
||||
"processed": "İşlendi",
|
||||
"time": "Time"
|
||||
"time": "Zaman"
|
||||
},
|
||||
"grafana": {
|
||||
"dashboards": "Dashboards",
|
||||
"datasources": "Data Sources",
|
||||
"totalalerts": "Total Alerts",
|
||||
"alertstriggered": "Alerts Triggered"
|
||||
"dashboards": "Kontrol Paneli",
|
||||
"datasources": "Veri Kaynakları",
|
||||
"totalalerts": "Toplam Uyarılar",
|
||||
"alertstriggered": "Uyarılar Tetiklendi"
|
||||
},
|
||||
"nextcloud": {
|
||||
"cpuload": "Cpu Load",
|
||||
"memoryusage": "Memory Usage",
|
||||
"freespace": "Free Space",
|
||||
"activeusers": "Active Users",
|
||||
"numfiles": "Files",
|
||||
"numshares": "Shared Items"
|
||||
"cpuload": "Cpu Yükü",
|
||||
"memoryusage": "Bellek Kullanımı",
|
||||
"freespace": "Boş Alan",
|
||||
"activeusers": "Aktif Kullanıcılar",
|
||||
"numfiles": "Dosyalar",
|
||||
"numshares": "Paylaşılan Öğeler"
|
||||
},
|
||||
"kopia": {
|
||||
"status": "Durum",
|
||||
"size": "Size",
|
||||
"lastrun": "Last Run",
|
||||
"nextrun": "Next Run",
|
||||
"size": "Boyut",
|
||||
"lastrun": "Son Çalışma",
|
||||
"nextrun": "Sonraki Çalışma",
|
||||
"failed": "Başarısız"
|
||||
},
|
||||
"unmanic": {
|
||||
"active_workers": "Active Workers",
|
||||
"total_workers": "Total Workers",
|
||||
"records_total": "Queue Length"
|
||||
"active_workers": "Aktif Kullanıcılar",
|
||||
"total_workers": "Toplam Kullanıcılar",
|
||||
"records_total": "Sıra Uzunluğu"
|
||||
},
|
||||
"pterodactyl": {
|
||||
"servers": "Servers",
|
||||
"nodes": "Nodes"
|
||||
"servers": "Sunucular",
|
||||
"nodes": "Düğümler"
|
||||
},
|
||||
"prometheus": {
|
||||
"targets_up": "Targets Up",
|
||||
"targets_down": "Targets Down",
|
||||
"targets_total": "Total Targets"
|
||||
"targets_total": "Toplam Hedef"
|
||||
},
|
||||
"gatus": {
|
||||
"up": "Sites Up",
|
||||
@@ -715,50 +716,50 @@
|
||||
"uptime": "Çalışma Süresi"
|
||||
},
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "One year",
|
||||
"gross_percent_max": "All time"
|
||||
"gross_percent_today": "Bugün",
|
||||
"gross_percent_1y": "Bir yıl",
|
||||
"gross_percent_max": "Tüm zaman"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
"podcasts": "Podcast",
|
||||
"books": "Kitaplar",
|
||||
"podcastsDuration": "Duration",
|
||||
"booksDuration": "Duration"
|
||||
"podcastsDuration": "Süre",
|
||||
"booksDuration": "Süre"
|
||||
},
|
||||
"homeassistant": {
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
"lights_on": "Işıklar Açık",
|
||||
"switches_on": "Aç"
|
||||
},
|
||||
"whatsupdocker": {
|
||||
"monitoring": "Monitoring",
|
||||
"monitoring": "İzleme",
|
||||
"updates": "Güncellemeler"
|
||||
},
|
||||
"calibreweb": {
|
||||
"books": "Kitaplar",
|
||||
"authors": "Authors",
|
||||
"categories": "Categories",
|
||||
"authors": "Yazarlar",
|
||||
"categories": "Kategoriler",
|
||||
"series": "Diziler"
|
||||
},
|
||||
"jdownloader": {
|
||||
"downloadCount": "Kuyruk",
|
||||
"downloadBytesRemaining": "Kalan",
|
||||
"downloadTotalBytes": "Size",
|
||||
"downloadTotalBytes": "Boyut",
|
||||
"downloadSpeed": "Hız"
|
||||
},
|
||||
"kavita": {
|
||||
"seriesCount": "Diziler",
|
||||
"totalFiles": "Files"
|
||||
"totalFiles": "Dosyalar"
|
||||
},
|
||||
"azuredevops": {
|
||||
"result": "Result",
|
||||
"result": "Sonuç",
|
||||
"status": "Durum",
|
||||
"buildId": "Build ID",
|
||||
"succeeded": "Succeeded",
|
||||
"notStarted": "Not Started",
|
||||
"succeeded": "Başarılı",
|
||||
"notStarted": "Henüz Başlamadı",
|
||||
"failed": "Başarısız",
|
||||
"canceled": "Canceled",
|
||||
"inProgress": "In Progress",
|
||||
"canceled": "İptal edildi",
|
||||
"inProgress": "Sürüyor",
|
||||
"totalPrs": "Total PRs",
|
||||
"myPrs": "My PRs",
|
||||
"approved": "Onaylı"
|
||||
@@ -767,28 +768,28 @@
|
||||
"status": "Durum",
|
||||
"online": "Çevrimiçi",
|
||||
"offline": "Çevrimdışı",
|
||||
"name": "Name",
|
||||
"map": "Map",
|
||||
"currentPlayers": "Current players",
|
||||
"name": "İsim",
|
||||
"map": "Harita",
|
||||
"currentPlayers": "Mevcut oyuncular",
|
||||
"players": "Oyuncular",
|
||||
"maxPlayers": "Max players",
|
||||
"bots": "Bots",
|
||||
"maxPlayers": "Maks. oyuncu",
|
||||
"bots": "Botlar",
|
||||
"ping": "Gecikme"
|
||||
},
|
||||
"urbackup": {
|
||||
"ok": "Ok",
|
||||
"errored": "Errors",
|
||||
"noRecent": "Out of Date",
|
||||
"totalUsed": "Used Storage"
|
||||
"ok": "Tamam",
|
||||
"errored": "Hatalar",
|
||||
"noRecent": "Tarihi geçmiş",
|
||||
"totalUsed": "Kullanılan depolama alanı"
|
||||
},
|
||||
"mealie": {
|
||||
"recipes": "Recipes",
|
||||
"recipes": "Tarifler",
|
||||
"users": "Kullanıcılar",
|
||||
"categories": "Categories",
|
||||
"tags": "Tags"
|
||||
"categories": "Kategoriler",
|
||||
"tags": "Etiketler"
|
||||
},
|
||||
"openmediavault": {
|
||||
"downloading": "Downloading",
|
||||
"downloading": "İndiriliyor",
|
||||
"total": "Toplam",
|
||||
"running": "Çalışan",
|
||||
"stopped": "Durduruldu",
|
||||
@@ -797,71 +798,79 @@
|
||||
},
|
||||
"openwrt": {
|
||||
"uptime": "Çalışma Süresi",
|
||||
"cpuLoad": "CPU Load Avg (5m)",
|
||||
"cpuLoad": "CPU Yükü Ortalaması (5dk)",
|
||||
"up": "Yükleme",
|
||||
"down": "İndirme",
|
||||
"bytesTx": "Transmitted",
|
||||
"bytesTx": "İletilen",
|
||||
"bytesRx": "Alınan"
|
||||
},
|
||||
"uptimerobot": {
|
||||
"status": "Durum",
|
||||
"uptime": "Çalışma Süresi",
|
||||
"lastDown": "Last Downtime",
|
||||
"downDuration": "Downtime Duration",
|
||||
"lastDown": "Son Kesinti",
|
||||
"downDuration": "Kesinti Süresi",
|
||||
"sitesUp": "Sites Up",
|
||||
"sitesDown": "Sites Down",
|
||||
"paused": "Paused",
|
||||
"notyetchecked": "Not Yet Checked",
|
||||
"paused": "Durduruldu",
|
||||
"notyetchecked": "Henüz Kontrol Edilmedi",
|
||||
"up": "Yükleme",
|
||||
"seemsdown": "Seems Down",
|
||||
"seemsdown": "Kapalı görünüyor",
|
||||
"down": "İndirme",
|
||||
"unknown": "Bilinmiyor"
|
||||
},
|
||||
"calendar": {
|
||||
"inCinemas": "In cinemas",
|
||||
"physicalRelease": "Physical release",
|
||||
"digitalRelease": "Digital release",
|
||||
"noEventsToday": "No events for today!",
|
||||
"noEventsFound": "No events found"
|
||||
"inCinemas": "Sinemalarda",
|
||||
"physicalRelease": "Fiziksel Yayınlanan",
|
||||
"digitalRelease": "Dijital Yayınlanan",
|
||||
"noEventsToday": "Bugün için etkinlik yok!",
|
||||
"noEventsFound": "Etkinlik bulunamadı"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Platforms",
|
||||
"totalRoms": "Total ROMs"
|
||||
"platforms": "Platformlar",
|
||||
"totalRoms": "Toplam ROM'lar"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
"warnings": "Uyarılar",
|
||||
"criticals": "Kritik"
|
||||
},
|
||||
"plantit": {
|
||||
"events": "Events",
|
||||
"events": "Etkinlikler",
|
||||
"plants": "Plants",
|
||||
"photos": "Fotoğraflar",
|
||||
"species": "Species"
|
||||
"species": "Türler"
|
||||
},
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"notifications": "Bildirimler",
|
||||
"issues": "Sorunlar",
|
||||
"pulls": "Pull Requests"
|
||||
"pulls": "Değişiklik İstekleri"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
"scenesPlayed": "Scenes Played",
|
||||
"playCount": "Total Plays",
|
||||
"playDuration": "Time Watched",
|
||||
"sceneSize": "Scenes Size",
|
||||
"sceneDuration": "Scenes Duration",
|
||||
"images": "Images",
|
||||
"imageSize": "Images Size",
|
||||
"galleries": "Galleries",
|
||||
"scenes": "Sahneler",
|
||||
"scenesPlayed": "Oynanan Sahneler",
|
||||
"playCount": "Toplam Oynatma",
|
||||
"playDuration": "İzlenen Süre",
|
||||
"sceneSize": "Sahne Boyutu",
|
||||
"sceneDuration": "Sahne Süresi",
|
||||
"images": "Görseller",
|
||||
"imageSize": "Görsel Boyutu",
|
||||
"galleries": "Galeriler",
|
||||
"performers": "Performers",
|
||||
"studios": "Studios",
|
||||
"studios": "Stüdyolar",
|
||||
"movies": "Filmler",
|
||||
"tags": "Tags",
|
||||
"tags": "Etiketler",
|
||||
"oCount": "O Count"
|
||||
},
|
||||
"tandoor": {
|
||||
"users": "Kullanıcılar",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
"recipes": "Tarifler",
|
||||
"keywords": "Anahtar Sözcükler"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Ögeler",
|
||||
"totalWithWarranty": "Garantili",
|
||||
"locations": "Konum",
|
||||
"labels": "Etiketler",
|
||||
"users": "Kullanıcılar",
|
||||
"totalValue": "Toplam Değer"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Офлайн",
|
||||
"offline_alt": "Офлайн",
|
||||
"online": "Онлайн",
|
||||
"total": "Усього",
|
||||
"unknown": "Невідомий"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Користувачі",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Користувачі",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Ngoại tuyến",
|
||||
"offline_alt": "Ngoại tuyến",
|
||||
"online": "Online",
|
||||
"total": "Tổng",
|
||||
"unknown": "Unknown"
|
||||
@@ -863,5 +864,13 @@
|
||||
"users": "Users",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Users",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "離線",
|
||||
"offline_alt": "離線",
|
||||
"online": "在線",
|
||||
"total": "全部",
|
||||
"unknown": "未知"
|
||||
@@ -862,6 +863,14 @@
|
||||
"tandoor": {
|
||||
"users": "使用者",
|
||||
"recipes": "食譜",
|
||||
"keywords": "Keywords"
|
||||
"keywords": "關鍵字"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "項目",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "位置",
|
||||
"labels": "標籤",
|
||||
"users": "使用者",
|
||||
"totalValue": "總共"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "离线",
|
||||
"offline_alt": "离线",
|
||||
"online": "在线",
|
||||
"total": "总计",
|
||||
"unknown": "未知"
|
||||
@@ -141,13 +142,13 @@
|
||||
"connectionStatusDisconnected": "未连接",
|
||||
"connectionStatusConnected": "已连接",
|
||||
"uptime": "运行时间",
|
||||
"maxDown": "",
|
||||
"maxDown": "最大下载速度",
|
||||
"maxUp": "",
|
||||
"down": "离线",
|
||||
"up": "在线",
|
||||
"received": "已接收",
|
||||
"received": "最大上传数",
|
||||
"sent": "已发送",
|
||||
"externalIPAddress": "Ext. IP"
|
||||
"externalIPAddress": "外部IP"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "上行",
|
||||
@@ -543,8 +544,8 @@
|
||||
"hdhomerun": {
|
||||
"channels": "频道",
|
||||
"hd": "HD",
|
||||
"tunerCount": "Tuners",
|
||||
"channelNumber": "Channel",
|
||||
"tunerCount": "电台数",
|
||||
"channelNumber": "频道数",
|
||||
"channelNetwork": "网络",
|
||||
"signalStrength": "强度",
|
||||
"signalQuality": "质量",
|
||||
@@ -801,7 +802,7 @@
|
||||
"up": "在线",
|
||||
"down": "离线",
|
||||
"bytesTx": "已传输",
|
||||
"bytesRx": "已接收"
|
||||
"bytesRx": "最大上传数"
|
||||
},
|
||||
"uptimerobot": {
|
||||
"status": "状态",
|
||||
@@ -833,28 +834,28 @@
|
||||
"criticals": "严重"
|
||||
},
|
||||
"plantit": {
|
||||
"events": "Events",
|
||||
"plants": "Plants",
|
||||
"events": "事件",
|
||||
"plants": "植物",
|
||||
"photos": "照片",
|
||||
"species": "Species"
|
||||
"species": "物种"
|
||||
},
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"notifications": "通知",
|
||||
"issues": "出版",
|
||||
"pulls": "Pull Requests"
|
||||
"pulls": "PR"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
"scenesPlayed": "Scenes Played",
|
||||
"playCount": "Total Plays",
|
||||
"playDuration": "Time Watched",
|
||||
"sceneSize": "Scenes Size",
|
||||
"sceneDuration": "Scenes Duration",
|
||||
"images": "Images",
|
||||
"imageSize": "Images Size",
|
||||
"galleries": "Galleries",
|
||||
"performers": "Performers",
|
||||
"studios": "Studios",
|
||||
"scenes": "场景",
|
||||
"scenesPlayed": "已播放场景",
|
||||
"playCount": "播放总数",
|
||||
"playDuration": "播放时间",
|
||||
"sceneSize": "场景大小",
|
||||
"sceneDuration": "场景时长",
|
||||
"images": "图片",
|
||||
"imageSize": "图像大小",
|
||||
"galleries": "图库",
|
||||
"performers": "演员",
|
||||
"studios": "工作室",
|
||||
"movies": "电影",
|
||||
"tags": "标签",
|
||||
"oCount": "O Count"
|
||||
@@ -862,6 +863,14 @@
|
||||
"tandoor": {
|
||||
"users": "用户数",
|
||||
"recipes": "食谱",
|
||||
"keywords": "Keywords"
|
||||
"keywords": "关键词"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "用户数",
|
||||
"totalValue": "Total Value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
"uptime": "運作時間"
|
||||
},
|
||||
"unifi": {
|
||||
"users": "使用者",
|
||||
"users": "用戶",
|
||||
"uptime": "運行時間",
|
||||
"days": "天",
|
||||
"wan": "WAN",
|
||||
@@ -109,6 +109,7 @@
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "離線",
|
||||
"offline_alt": "離線",
|
||||
"online": "在線",
|
||||
"total": "全部",
|
||||
"unknown": "未知"
|
||||
@@ -368,7 +369,7 @@
|
||||
"transferRate": "速率"
|
||||
},
|
||||
"mastodon": {
|
||||
"user_count": "使用者",
|
||||
"user_count": "用戶",
|
||||
"status_count": "文章",
|
||||
"domain_count": "網域"
|
||||
},
|
||||
@@ -389,7 +390,7 @@
|
||||
"unread": "未讀"
|
||||
},
|
||||
"authentik": {
|
||||
"users": "使用者",
|
||||
"users": "用戶",
|
||||
"loginsLast24H": "登入 (過去 24 小時)",
|
||||
"failedLoginsLast24H": "登入失敗 (過去 24 小時)"
|
||||
},
|
||||
@@ -629,7 +630,7 @@
|
||||
"memory_usage": "記憶體"
|
||||
},
|
||||
"immich": {
|
||||
"users": "使用者",
|
||||
"users": "用戶",
|
||||
"photos": "照片",
|
||||
"videos": "影片",
|
||||
"storage": "儲存空間"
|
||||
@@ -783,7 +784,7 @@
|
||||
},
|
||||
"mealie": {
|
||||
"recipes": "食譜",
|
||||
"users": "使用者",
|
||||
"users": "用戶",
|
||||
"categories": "類別",
|
||||
"tags": "標籤"
|
||||
},
|
||||
@@ -860,8 +861,16 @@
|
||||
"oCount": "O Count"
|
||||
},
|
||||
"tandoor": {
|
||||
"users": "使用者",
|
||||
"users": "用戶",
|
||||
"recipes": "食譜",
|
||||
"keywords": "Keywords"
|
||||
"keywords": "關鍵字"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "項目",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "位置",
|
||||
"labels": "標籤",
|
||||
"users": "用戶",
|
||||
"totalValue": "總共"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,13 +3,19 @@ import classNames from "classnames";
|
||||
|
||||
import { TabContext } from "utils/contexts/tab";
|
||||
|
||||
export function slugify(tabName) {
|
||||
return tabName !== undefined ? encodeURIComponent(tabName.toString().replace(/\s+/g, "-").toLowerCase()) : "";
|
||||
function slugify(tabName) {
|
||||
return tabName.toString().replace(/\s+/g, "-").toLowerCase();
|
||||
}
|
||||
|
||||
export function slugifyAndEncode(tabName) {
|
||||
return tabName !== undefined ? encodeURIComponent(slugify(tabName)) : "";
|
||||
}
|
||||
|
||||
export default function Tab({ tab }) {
|
||||
const { activeTab, setActiveTab } = useContext(TabContext);
|
||||
|
||||
const matchesTab = decodeURI(activeTab) === slugify(tab);
|
||||
|
||||
return (
|
||||
<li
|
||||
key={tab}
|
||||
@@ -21,16 +27,14 @@ export default function Tab({ tab }) {
|
||||
type="button"
|
||||
role="tab"
|
||||
aria-controls={`#${tab}`}
|
||||
aria-selected={activeTab === slugify(tab) ? "true" : "false"}
|
||||
aria-selected={matchesTab ? "true" : "false"}
|
||||
className={classNames(
|
||||
"w-full rounded-md m-1",
|
||||
activeTab === slugify(tab)
|
||||
? "bg-theme-300/20 dark:bg-white/10"
|
||||
: "hover:bg-theme-100/20 dark:hover:bg-white/5",
|
||||
matchesTab ? "bg-theme-300/20 dark:bg-white/10" : "hover:bg-theme-100/20 dark:hover:bg-white/5",
|
||||
)}
|
||||
onClick={() => {
|
||||
setActiveTab(slugify(tab));
|
||||
window.location.hash = `#${slugify(tab)}`;
|
||||
setActiveTab(slugifyAndEncode(tab));
|
||||
window.location.hash = `#${slugifyAndEncode(tab)}`;
|
||||
}}
|
||||
>
|
||||
{tab}
|
||||
|
||||
@@ -84,8 +84,6 @@ export default function OpenMeteo({ options }) {
|
||||
}
|
||||
};
|
||||
|
||||
// if (!requesting && !location) requestLocation();
|
||||
|
||||
if (!location) {
|
||||
return (
|
||||
<ContainerButton
|
||||
|
||||
@@ -10,7 +10,7 @@ import { BiError } from "react-icons/bi";
|
||||
import { serverSideTranslations } from "next-i18next/serverSideTranslations";
|
||||
import { useRouter } from "next/router";
|
||||
|
||||
import Tab, { slugify } from "components/tab";
|
||||
import Tab, { slugifyAndEncode } from "components/tab";
|
||||
import ServicesGroup from "components/services/group";
|
||||
import BookmarksGroup from "components/bookmarks/group";
|
||||
import Widget from "components/widgets/widget";
|
||||
@@ -258,13 +258,13 @@ function Home({ initialSettings }) {
|
||||
|
||||
useEffect(() => {
|
||||
if (!activeTab) {
|
||||
const initialTab = decodeURI(asPath.substring(asPath.indexOf("#") + 1));
|
||||
setActiveTab(initialTab === "/" ? slugify(tabs["0"]) : initialTab);
|
||||
const initialTab = asPath.substring(asPath.indexOf("#") + 1);
|
||||
setActiveTab(initialTab === "/" ? slugifyAndEncode(tabs["0"]) : initialTab);
|
||||
}
|
||||
});
|
||||
|
||||
const servicesAndBookmarksGroups = useMemo(() => {
|
||||
const tabGroupFilter = (g) => g && [activeTab, ""].includes(slugify(settings.layout?.[g.name]?.tab));
|
||||
const tabGroupFilter = (g) => g && [activeTab, ""].includes(slugifyAndEncode(settings.layout?.[g.name]?.tab));
|
||||
const undefinedGroupFilter = (g) => settings.layout?.[g.name] === undefined;
|
||||
|
||||
const layoutGroups = Object.keys(settings.layout ?? {})
|
||||
|
||||
@@ -117,6 +117,8 @@ export async function servicesFromDocker() {
|
||||
|
||||
return { server: serverName, services: discovered.filter((filteredService) => filteredService) };
|
||||
} catch (e) {
|
||||
logger.error("Error getting services from Docker server '%s': %s", serverName, e);
|
||||
|
||||
// a server failed, but others may succeed
|
||||
return { server: serverName, services: [] };
|
||||
}
|
||||
@@ -453,7 +455,7 @@ export function cleanServiceGroups(groups) {
|
||||
let fieldsList = fields;
|
||||
if (typeof fields === "string") {
|
||||
try {
|
||||
JSON.parse(fields);
|
||||
fieldsList = JSON.parse(fields);
|
||||
} catch (e) {
|
||||
logger.error("Invalid fields list detected in config for service '%s'", service.name);
|
||||
fieldsList = null;
|
||||
|
||||
@@ -103,7 +103,7 @@ export async function httpProxy(url, params = {}) {
|
||||
|
||||
try {
|
||||
const [status, contentType, data, responseHeaders] = await request;
|
||||
return [status, contentType, data, responseHeaders];
|
||||
return [status, contentType, data, responseHeaders, params];
|
||||
} catch (err) {
|
||||
logger.error(
|
||||
"Error calling %s//%s%s%s...",
|
||||
|
||||
@@ -19,6 +19,7 @@ export default function Component({ service }) {
|
||||
<Container service={service}>
|
||||
<Block label="esphome.online" />
|
||||
<Block label="esphome.offline" />
|
||||
<Block label="esphome.offline_alt" />
|
||||
<Block label="esphome.unknown" />
|
||||
<Block label="esphome.total" />
|
||||
</Container>
|
||||
@@ -27,6 +28,7 @@ export default function Component({ service }) {
|
||||
|
||||
const total = Object.keys(resultData).length;
|
||||
const online = Object.entries(resultData).filter(([, v]) => v === true).length;
|
||||
const notOnline = Object.entries(resultData).filter(([, v]) => v !== true).length;
|
||||
const offline = Object.entries(resultData).filter(([, v]) => v === false).length;
|
||||
const unknown = Object.entries(resultData).filter(([, v]) => v === null).length;
|
||||
|
||||
@@ -34,6 +36,7 @@ export default function Component({ service }) {
|
||||
<Container service={service}>
|
||||
<Block label="esphome.online" value={t("common.number", { value: online })} />
|
||||
<Block label="esphome.offline" value={t("common.number", { value: offline })} />
|
||||
<Block label="esphome.offline_alt" value={t("common.number", { value: notOnline })} />
|
||||
<Block label="esphome.unknown" value={t("common.number", { value: unknown })} />
|
||||
<Block label="esphome.total" value={t("common.number", { value: total })} />
|
||||
</Container>
|
||||
|
||||
@@ -24,7 +24,7 @@ export default function Component({ service }) {
|
||||
refreshInterval: Math.max(defaultInterval, refreshInterval),
|
||||
});
|
||||
|
||||
const { data: systemData, error: systemError } = useWidgetAPI(service.widget, "system");
|
||||
const { data: quicklookData, error: quicklookError } = useWidgetAPI(service.widget, "quicklook");
|
||||
|
||||
useEffect(() => {
|
||||
if (data) {
|
||||
@@ -71,22 +71,15 @@ export default function Component({ service }) {
|
||||
/>
|
||||
)}
|
||||
|
||||
{!chart && systemData && !systemError && (
|
||||
{!chart && quicklookData && !quicklookError && (
|
||||
<Block position="top-3 right-3">
|
||||
<div className="text-xs opacity-50">
|
||||
{systemData.linux_distro && `${systemData.linux_distro} - `}
|
||||
{systemData.os_version && systemData.os_version}
|
||||
</div>
|
||||
<div className="text-[0.6rem] opacity-50">{quicklookData.cpu_name && quicklookData.cpu_name}</div>
|
||||
</Block>
|
||||
)}
|
||||
|
||||
{systemData && !systemError && (
|
||||
{quicklookData && !quicklookError && (
|
||||
<Block position="bottom-3 left-3">
|
||||
{systemData.linux_distro && chart && <div className="text-xs opacity-50">{systemData.linux_distro}</div>}
|
||||
|
||||
{systemData.os_version && chart && <div className="text-xs opacity-50">{systemData.os_version}</div>}
|
||||
|
||||
{systemData.hostname && <div className="text-xs opacity-50">{systemData.hostname}</div>}
|
||||
{quicklookData.cpu_name && chart && <div className="text-xs opacity-50">{quicklookData.cpu_name}</div>}
|
||||
</Block>
|
||||
)}
|
||||
|
||||
|
||||
@@ -122,7 +122,10 @@ export default function Component({ service }) {
|
||||
)}
|
||||
|
||||
{!chart && quicklookData?.swap === 0 && (
|
||||
<div className="text-[0.6rem] opacity-50">{quicklookData.cpu_name}</div>
|
||||
<div className="text-[0.6rem] opacity-50">
|
||||
{systemData && systemData.linux_distro && `${systemData.linux_distro} - `}
|
||||
{systemData && systemData.os_version}
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="w-[4rem]">{!chart && <Swap quicklookData={quicklookData} className="opacity-25" />}</div>
|
||||
@@ -137,7 +140,7 @@ export default function Component({ service }) {
|
||||
)}
|
||||
|
||||
{!chart && (
|
||||
<Block position="bottom-3 left-3 w-[3rem]">
|
||||
<Block position="bottom-3 left-3 w-[4rem]">
|
||||
<CPU quicklookData={quicklookData} className="opacity-75" />
|
||||
</Block>
|
||||
)}
|
||||
|
||||
68
src/widgets/jackett/proxy.js
Normal file
68
src/widgets/jackett/proxy.js
Normal file
@@ -0,0 +1,68 @@
|
||||
import { httpProxy } from "utils/proxy/http";
|
||||
import { formatApiCall } from "utils/proxy/api-helpers";
|
||||
import getServiceWidget from "utils/config/service-helpers";
|
||||
import createLogger from "utils/logger";
|
||||
import widgets from "widgets/widgets";
|
||||
|
||||
const logger = createLogger("jackettProxyHandler");
|
||||
|
||||
async function fetchJackettCookie(widget, loginURL) {
|
||||
const url = new URL(formatApiCall(loginURL, widget));
|
||||
const loginData = `password=${encodeURIComponent(widget.password)}`;
|
||||
const [status, , , , params] = await httpProxy(url, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
},
|
||||
body: loginData,
|
||||
});
|
||||
|
||||
if (!(status === 200) || !params?.headers?.Cookie) {
|
||||
logger.error("Failed to fetch Jackett cookie, status: %d", status);
|
||||
return null;
|
||||
}
|
||||
return params.headers.Cookie;
|
||||
}
|
||||
|
||||
export default async function jackettProxyHandler(req, res) {
|
||||
const { group, service, endpoint } = req.query;
|
||||
|
||||
if (!group || !service) {
|
||||
logger.error("Invalid or missing service '%s' or group '%s'", service, group);
|
||||
return res.status(400).json({ error: "Invalid proxy service type" });
|
||||
}
|
||||
|
||||
const widget = await getServiceWidget(group, service);
|
||||
if (!widget || !widgets[widget.type].api) {
|
||||
logger.error("Invalid or missing widget for service '%s' in group '%s'", service, group);
|
||||
return res.status(400).json({ error: "Invalid widget configuration" });
|
||||
}
|
||||
|
||||
if (widget.password) {
|
||||
const jackettCookie = await fetchJackettCookie(widget, widgets[widget.type].loginURL);
|
||||
if (!jackettCookie) {
|
||||
return res.status(500).json({ error: "Failed to authenticate with Jackett" });
|
||||
}
|
||||
// Add the cookie to the widget for use in subsequent requests
|
||||
widget.headers = { ...widget.headers, Cookie: jackettCookie };
|
||||
}
|
||||
|
||||
const url = new URL(formatApiCall(widgets[widget.type].api, { endpoint, ...widget }));
|
||||
|
||||
try {
|
||||
const [status, , data] = await httpProxy(url, {
|
||||
method: "GET",
|
||||
headers: widget.headers,
|
||||
});
|
||||
|
||||
if (status !== 200) {
|
||||
logger.error("Error calling Jackett API: %d. Data: %s", status, data);
|
||||
return res.status(status).json({ error: "Failed to call Jackett API", data });
|
||||
}
|
||||
|
||||
return res.status(status).send(data);
|
||||
} catch (error) {
|
||||
logger.error("Exception calling Jackett API: %s", error.message);
|
||||
return res.status(500).json({ error: "Server error", message: error.message });
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
import genericProxyHandler from "utils/proxy/handlers/generic";
|
||||
import jackettProxyHandler from "./proxy";
|
||||
|
||||
const widget = {
|
||||
api: "{url}/api/v2.0/{endpoint}?apikey={key}&configured=true",
|
||||
proxyHandler: genericProxyHandler,
|
||||
proxyHandler: jackettProxyHandler,
|
||||
loginURL: "{url}/UI/Dashboard",
|
||||
|
||||
mappings: {
|
||||
indexers: {
|
||||
|
||||
Reference in New Issue
Block a user