Merge branch 'benphelpsMain' into LocalMain

This commit is contained in:
Karl Hudgell 2025-03-10 12:21:56 +00:00
commit d8513edf56
385 changed files with 11607 additions and 6536 deletions

View File

@ -1,3 +0,0 @@
{
"presets": ["next/babel"]
}

View File

@ -1,5 +1,9 @@
{
"extends": ["airbnb", "next/core-web-vitals", "prettier"],
"extends": [
"next/core-web-vitals",
"prettier",
"plugin:react-hooks/recommended"
],
"plugins": ["prettier"],
"rules": {
"import/no-cycle": [
@ -27,5 +31,12 @@
"paths": ["src"]
}
}
},
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": {
"modules": true
}
}
}

View File

@ -5,7 +5,7 @@ body:
### ⚠️ Before opening a discussion:
- [Check the troubleshooting guide](https://gethomepage.dev/troubleshooting/).
- [Search existing issues](https://github.com/gethomepage/homepage/search?q=&type=issues) [and discussions](https://github.com/gethomepage/homepage/search?q=&type=discussions).
- [Search existing issues](https://github.com/gethomepage/homepage/search?q=&type=issues) [and discussions](https://github.com/gethomepage/homepage/search?q=&type=discussions) (including closed ones!).
- type: textarea
id: description
attributes:
@ -51,6 +51,14 @@ body:
id: troubleshooting
attributes:
label: Troubleshooting
description: Please include output from your [troubleshooting tests](https://gethomepage.dev/more/troubleshooting/#service-widget-errors), if relevant.
description: Please include output from your [troubleshooting steps](https://gethomepage.dev/more/troubleshooting/#service-widget-errors), if relevant.
validations:
required: true
- type: markdown
attributes:
value: |
## ⚠️ STOP ⚠️
Before you submit this support request, please ensure you have entered your configuration files and actually followed the steps from the troubleshooting guide linked above, if relevant. The troubleshooting steps often help to solve the problem.
*Please remember that this project is maintained by regular people **just like you**, so if you don't take the time to fill out the requested information, don't expect a reply back.*

View File

@ -1,11 +1,20 @@
<!--
==== STOP ====================
======== STOP ================
============ STOP ============
================ STOP ========
==================== STOP ====
⚠️ Before opening this pull request please review the guidelines in the checklist below.
If this PR does not meet those guidelines it will not be accepted, and everyone will be sad.
-->
## Proposed change
<!--
Please include a summary of the change. Screenshots and/or videos can also be helpful if appropriate.
*** Please see the development guidelines for new widgets: https://gethomepage.dev/more/development/#service-widget-guidelines
*** If you do not follow these guidelines your PR will likely be closed without review.
New service widgets should include example(s) of relevant API output as well as updates to the docs for the new widget.
-->
@ -19,13 +28,13 @@ What type of change does your PR introduce to Homepage?
- [ ] New service widget
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] New feature or enhancement (non-breaking change which adds functionality)
- [ ] Documentation only
- [ ] Other (please explain)
## Checklist:
- [ ] If applicable, I have added corresponding documentation changes.
- [ ] If applicable, I have reviewed the [feature](https://gethomepage.dev/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/more/development/#service-widget-guidelines).
- [ ] If applicable, I have reviewed the [feature / enhancement](https://gethomepage.dev/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/more/development/#service-widget-guidelines).
- [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/more/development/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/more/development/#code-linting).
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.

View File

@ -26,8 +26,6 @@ on:
merge_group:
env:
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}
@ -48,6 +46,24 @@ jobs:
-
name: Check files
uses: pre-commit/action@v3.0.1
-
name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
run_install: false
-
name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
-
name: Install dependencies
run: pnpm install
-
name: Lint frontend
run: pnpm run lint
build:
name: Docker Build & Push
@ -66,42 +82,30 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
# Install the cosign tool except on PR
# https://github.com/sigstore/cosign-installer
- name: Install cosign
if: github.event_name != 'pull_request'
uses: sigstore/cosign-installer@main
with:
cosign-release: 'v1.13.1' # optional
# Setup QEMU
# https://github.com/marketplace/actions/docker-setup-buildx#with-qemu
- name: Setup QEMU
uses: docker/setup-qemu-action@v3
# Workaround: https://github.com/docker/build-push-action/issues/461
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
# This step is being disabled because the runner is on a self-hosted machine
# where the cache will stick between runs.
# - name: Cache Docker layers
# uses: actions/cache@v3
# with:
# path: /tmp/.buildx-cache
# key: ${{ runner.os }}-buildx-${{ github.sha }}
# restore-keys: |
# ${{ runner.os }}-buildx-
# Login against a Docker registry except on PR
# Login to Docker Registry
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# Setup QEMU
# https://github.com/marketplace/actions/docker-setup-buildx#with-qemu
- name: Setup QEMU
uses: docker/setup-qemu-action@v3.6.0
# Workaround: https://github.com/docker/build-push-action/issues/461
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
@ -109,7 +113,9 @@ jobs:
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
images: |
${{ env.IMAGE_NAME }}
ghcr.io/${{ env.IMAGE_NAME }}
flavor: |
latest=auto
@ -120,7 +126,7 @@ jobs:
uses: docker/build-push-action@v6
with:
context: .
push: ${{ github.event_name != 'pull_request' && !(github.event_name == 'push' && startsWith(github.ref, 'refs/heads/feature')) }}
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
@ -129,23 +135,10 @@ jobs:
REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
# https://github.com/docker/setup-qemu-action#about
# platforms: linux/amd64,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6
platforms: linux/amd64,linux/arm64
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
# Sign the resulting Docker image digest except on PRs.
# This will only write to the public Rekor transparency log when the Docker
# repository is public to avoid leaking data. If you would like to publish
# transparency data even for private images, pass --force to cosign below.
# https://github.com/sigstore/cosign
# - name: Sign the published Docker image
# if: ${{ github.event_name != 'pull_request' }}
# env:
# COSIGN_EXPERIMENTAL: "true"
# # This step uses the identity token to provision an ephemeral certificate
# # against the sigstore community Fulcio instance.
# run: echo "${{ steps.meta.outputs.tags }}" | xargs -I {} cosign sign {}@${{ steps.build-and-push.outputs.digest }}
# Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896

18
.github/workflows/reaction-comments.yml vendored Normal file
View File

@ -0,0 +1,18 @@
name: 'Reaction Comments'
on:
issue_comment:
types: [created, edited]
pull_request_review_comment:
types: [created, edited]
permissions:
actions: write
issues: write
pull-requests: write
jobs:
action:
runs-on: ubuntu-latest
steps:
- uses: dessant/reaction-comments@v4

View File

@ -212,9 +212,9 @@ jobs:
}
const CUTOFF_1_DAYS = 180;
const CUTOFF_1_COUNT = 5;
const CUTOFF_1_COUNT = 10;
const CUTOFF_2_DAYS = 365;
const CUTOFF_2_COUNT = 10;
const CUTOFF_2_COUNT = 20;
const cutoff1Date = new Date();
cutoff1Date.setDate(cutoff1Date.getDate() - CUTOFF_1_DAYS);

View File

@ -63,7 +63,7 @@ The homepage team appreciates all effort and interest from the community in fili
- Issues, pull requests and discussions that are closed will be locked after 30 days of inactivity.
- Discussions with a marked answer will be automatically closed.
- Discussions in the 'General' or 'Support' categories will be closed after 180 days of inactivity.
- Feature requests that do not meet the following thresholds will be closed: 5 "up-votes" after 180 days of inactivity or 10 "up-votes" after 365 days.
- Feature requests that do not meet the following thresholds will be closed: 10 "up-votes" after 180 days of inactivity or 20 "up-votes" after 365 days.
In all cases, threads can be re-opened by project maintainers and, of course, users can always create a new discussion for related concerns.
Finally, remember that all information remains searchable and 'closed' feature requests can still serve as inspiration for new features.

View File

@ -1,7 +1,7 @@
# syntax = docker/dockerfile:latest
# Install dependencies only when needed
FROM docker.io/node:18-alpine AS deps
FROM docker.io/node:22-alpine AS deps
WORKDIR /app
@ -17,7 +17,7 @@ RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm f
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm install -r --offline
# Rebuild the source code only when needed
FROM docker.io/node:18-alpine AS builder
FROM docker.io/node:22-alpine AS builder
WORKDIR /app
ARG BUILDTIME
@ -33,7 +33,7 @@ RUN npm run telemetry \
&& NEXT_PUBLIC_BUILDTIME=$BUILDTIME NEXT_PUBLIC_VERSION=$VERSION NEXT_PUBLIC_REVISION=$REVISION npm run build
# Production image, copy all the files and run next
FROM docker.io/node:18-alpine AS runner
FROM docker.io/node:22-alpine AS runner
LABEL org.opencontainers.image.title "Homepage"
LABEL org.opencontainers.image.description "A self-hosted services landing page, with docker and service integrations."
LABEL org.opencontainers.image.url="https://github.com/gethomepage/homepage"
@ -41,7 +41,7 @@ LABEL org.opencontainers.image.documentation='https://github.com/gethomepage/hom
LABEL org.opencontainers.image.source='https://github.com/gethomepage/homepage'
LABEL org.opencontainers.image.licenses='Apache-2.0'
ENV NODE_ENV production
ENV NODE_ENV=production
WORKDIR /app
@ -56,7 +56,8 @@ COPY --link --chmod=755 docker-entrypoint.sh /usr/local/bin/
RUN apk add --no-cache su-exec
ENV PORT 3000
ENV HOSTNAME=::
ENV PORT=3000
EXPOSE $PORT
HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \

View File

@ -38,7 +38,7 @@ With features like quick search, bookmarks, weather support, a wide range of int
- **Fast** - The site is statically generated at build time for instant load times.
- **Secure** - All API requests to backend services are proxied, keeping your API keys hidden. Constantly reviewed for security by the community.
- **For Everyone** - Images built for AMD64, ARM64, ARMv7, and ARMv6.
- **For Everyone** - Images built for AMD64, ARM64.
- **Full i18n** - Support for over 40 languages.
- **Service & Web Bookmarks** - Add custom links to the homepage.
- **Docker Integration** - Container status and stats. Automatic service discovery via labels.
@ -52,7 +52,7 @@ Homepage has built-in support for Docker, and can automatically discover and add
## Service Widgets
Homepage also has support for over 100 3rd party services, including all popular starr apps, and most popular self-hosted apps. Some examples include: Radarr, Sonarr, Lidarr, Bazarr, Ombi, Tautulli, Plex, Jellyfin, Emby, Transmission, qBittorrent, Deluge, Jackett, NZBGet, SABnzbd, etc. As well as service integrations, Homepage also has a number of information providers, sourcing information from a variety of external 3rd party APIs. See the [Service](https://gethomepage.dev/widgets/) page for more information.
Homepage also has support for hundreds of 3rd-party services, including all popular \*arr apps, and most popular self-hosted apps. Some examples include: Radarr, Sonarr, Lidarr, Bazarr, Ombi, Tautulli, Plex, Jellyfin, Emby, Transmission, qBittorrent, Deluge, Jackett, NZBGet, SABnzbd, etc. As well as service integrations, Homepage also has a number of information providers, sourcing information from a variety of external 3rd-party APIs. See the [Service](https://gethomepage.dev/widgets/) page for more information.
## Information Widgets

View File

@ -153,6 +153,18 @@ labels:
- homepage.widget.fields=["field1","field2"] # optional
```
Multiple widgets can be specified by incrementing the index, e.g.
```yaml
labels: ...
- homepage.widgets[0].type=emby
- homepage.widgets[0].url=http://emby.home
- homepage.widgets[0].key=yourembyapikeyhere
- homepage.widgets[1].type=uptimekuma
- homepage.widgets[1].url=http://uptimekuma.home
- homepage.widgets[1].slug=youreventslughere
```
You can add specify fields for e.g. the [CustomAPI](../widgets/services/customapi.md) widget by using array-style dot notation:
```yaml

View File

@ -0,0 +1,24 @@
---
title: Information Widgets
description: Homepage info widgets.
---
Information widgets are widgets that provide information about your system or environment and are displayed at the top of the homepage. You can find a list of all available info widgets under the [Info Widgets](../widgets/info/index.md) section.
Info widgets are defined in the widgets.yaml
Each widget has its own configuration options, which are detailed in the widget's documentation.
## Layout
Info widgets are displayed in the order they are defined in the `widgets.yaml` file. You can change the order by moving the widgets around in the file. However, some widgets (weather, search and datetime) are aligned to the right side of the screen which can affect the layout of the widgets.
## Adding A Link
You can add a link to an info widget such as the logo or text widgets by adding an `href` option, for example:
```yaml
logo:
href: https://example.com
target: _blank # Optional, can be set in settings
```

View File

@ -8,6 +8,7 @@ The Kubernetes connectivity has the following requirements:
- Kubernetes 1.19+
- Metrics Service
- An Ingress controller
- Optionally: Gateway-API
The Kubernetes connection is configured in the `kubernetes.yaml` file. There are 3 modes to choose from:
@ -19,6 +20,22 @@ The Kubernetes connection is configured in the `kubernetes.yaml` file. There are
mode: default
```
To configure Kubernetes gateway-api, ingress or ingressRoute service discovery, add one or multiple of the following settings.
Example settings:
```yaml
ingress: true # enable ingress only
```
or
```yaml
ingress: true # enable ingress
traefik: true # enable traefik ingressRoute
gateway: true # enable gateway-api
```
## Services
Once the Kubernetes connection is configured, individual services can be configured to pull statistics. Only CPU and Memory are currently supported.
@ -100,6 +117,8 @@ If you are using multiple instances of homepage, an `instance` annotation can be
If you have a single service that needs to be shown on multiple specific instances of homepage (but not on all of them), the service can be annotated by multiple `instance.name` annotations, where `name` can be the names of your specific multiple homepage instances. For example, a service that is annotated with `gethomepage.dev/instance.public: ""` and `gethomepage.dev/instance.internal: ""` will be shown on `public` and `internal` homepage instances.
Use the `gethomepage.dev/pod-selector` selector to specify the pod used for the health check. For example, a service that is annotated with `gethomepage.dev/pod-selector: app.kubernetes.io/name=deployment` would link to a pod with the label `app.kubernetes.io/name: deployment`.
### Traefik IngressRoute support
Homepage can also read ingresses defined using the Traefik IngressRoute custom resource definition. Due to the complex nature of Traefik routing rules, it is required for the `gethomepage.dev/href` annotation to be set:
@ -140,6 +159,10 @@ spec:
If the `href` attribute is not present, Homepage will ignore the specific IngressRoute.
### Gateway API HttpRoute support
Homepage also features automatic service discovery for Gateway API. Service definitions are read by annotating the HttpRoute custom resource definition and are indentical to the Ingress example as defined in [Automatic Service Discovery](#automatic-service-discovery).
## Caveats
Similarly to Docker service discovery, there currently is no rigid ordering to discovered services and discovered services will be displayed above those specified in the `services.yaml`.

View File

@ -1,40 +0,0 @@
---
title: Service Widgets
description: Service Widget Configuration
---
Unless otherwise noted, URLs should not end with a `/` or other API path. Each widget will handle the path on its own.
Each service can have one widget attached to it (often matching the service type, but that's not forced).
In addition to the href of the service, you can also specify the target location in which to open that link. See [Link Target](settings.md#link-target) for more details.
Using Emby as an example, this is how you would attach the Emby service widget.
```yaml
- Emby:
icon: emby.png
href: http://emby.host.or.ip/
description: Movies & TV Shows
widget:
type: emby
url: http://emby.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
```
## Field Visibility
Each widget can optionally provide a list of which fields should be visible via the `fields` widget property. If no fields are specified, then all fields will be displayed. The `fields` property must be a valid YAML array of strings. As an example, here is the entry for Sonarr showing only a couple of fields.
**In all cases a widget will work and display all fields without specifying the `fields` property.**
```yaml
- Sonarr:
icon: sonarr.png
href: http://sonarr.host.or.ip
widget:
type: sonarr
fields: ["wanted", "queued"]
url: http://sonarr.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
```

View File

@ -21,6 +21,23 @@ Groups are defined as top-level array entries.
<img width="1038" alt="Service Groups" src="https://user-images.githubusercontent.com/82196/187040754-28065242-4534-4409-881c-93d1921c6141.png">
### Nested Groups
Groups can be nested by using the same format as the top-level groups.
```yaml
- Group A:
- Service A:
href: http://localhost/
- Group B:
- Service B:
href: http://localhost/
- Service C:
href: http://localhost/
```
## Services
Services are defined as array entries on groups,
@ -43,6 +60,64 @@ Services are defined as array entries on groups,
<img width="1038" alt="Service Services" src="https://user-images.githubusercontent.com/82196/187040763-038023a2-8bee-4d87-b5cc-13447e7365a4.png">
### Service Widgets
Each service can have widgets attached to it (often matching the service type, but that's not forced).
In addition to the href of the service, you can also specify the target location in which to open that link. See [Link Target](settings.md#link-target) for more details.
Using Emby as an example, this is how you would attach the Emby service widget.
```yaml
- Emby:
icon: emby.png
href: http://emby.host.or.ip/
description: Movies & TV Shows
widget:
type: emby
url: http://emby.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
```
#### Multiple Widgets
Each service can have multiple widgets attached to it, for example:
```yaml
- Emby:
icon: emby.png
href: http://emby.host.or.ip/
description: Movies & TV Shows
widgets:
- type: emby
url: http://emby.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
- type: uptimekuma
url: http://uptimekuma.host.or.ip:port
slug: statuspageslug
```
!!! note
Multiple widgets per service are not yet supported with Kubernetes ingress annotations.
#### Field Visibility
Each widget can optionally provide a list of which fields should be visible via the `fields` widget property. If no fields are specified, then all fields will be displayed. The `fields` property must be a valid YAML array of strings. As an example, here is the entry for Sonarr showing only a couple of fields.
**In all cases a widget will work and display all fields without specifying the `fields` property.**
```yaml
- Sonarr:
icon: sonarr.png
href: http://sonarr.host.or.ip
widget:
type: sonarr
fields: ["wanted", "queued"]
url: http://sonarr.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
```
## Descriptions
Services may have descriptions,
@ -63,7 +138,7 @@ Services may have descriptions,
## Icons
Services may have an icon attached to them, you can use icons from [Dashboard Icons](https://github.com/walkxcode/dashboard-icons) automatically, by passing the name of the icon, with, or without `.png` or with `.svg` to use the svg version.
Services may have an icon attached to them, you can use icons from [Dashboard Icons](https://github.com/homarr-labs/dashboard-icons) automatically, by passing the name of the icon, with, or without `.png`, `.webp` or `.svg` to specify the desired version.
You can also specify prefixed icons from:
@ -107,6 +182,10 @@ To use a local icon, first create a Docker mount to `/app/public/icons` and then
Services may have an optional `ping` property that allows you to monitor the availability of an external host. As of v0.8.0, the ping feature attempts to use a true (ICMP) ping command on the underlying host. Currently, only IPv4 is supported.
!!! note
Because ping uses the ping command on the underlying host, in some cases you may need to install e.g. the `iputils-ping` package on the host system.
```yaml
- Group A:
- Sonarr:

View File

@ -13,6 +13,14 @@ You can customize the title of the page if you'd like.
title: My Awesome Homepage
```
## Description
You can customize the description of the page if you'd like.
```yaml
description: A description of my awesome homepage
```
## Start URL
You can customize the start_url as required for installable apps. The default is "/".
@ -118,6 +126,22 @@ As an example, this would produce the following layout:
<img width="1260" alt="Screenshot 2022-09-15 at 8 03 57 PM" src="https://user-images.githubusercontent.com/82196/190466646-8ca94505-0fcf-4964-9687-3a6c7cd3144f.png">
### Icons-Only Layout
You can also specify the an icon-only layout for bookmarks, either like so:
```yaml
layout:
Media:
iconsOnly: true
```
or globally:
```yaml
bookmarksStyle: icons
```
### Sorting
Service groups and bookmark groups can be mixed in order, **but should use different group names**. If you do not specify any bookmark groups they will all show at the bottom of the page.
@ -137,6 +161,27 @@ layout:
columns: 3
```
### Nested Groups
If your services config has nested groups, you can apply settings to these groups by nesting them in the layout block
and using the same settings. For example
```yaml
layout:
Group A:
style: row
columns: 4
Group C:
style: row
columns: 2
Nested Group A:
style: row
columns: 2
Nested Group B:
style: row
columns: 2
```
### Headers
You can hide headers for each section in the layout as well by passing `header` as false, like so:
@ -348,12 +393,12 @@ This can also be set for individual services. Note setting this at the service l
## Providers
The `providers` section allows you to define shared API provider options and secrets. Currently this allows you to define your weather API keys in secret and is also the location of the Longhorn URL and credentials.
The `providers` section allows you to define shared API provider options and secrets.
```yaml
providers:
openweathermap: openweathermapapikey
weatherapi: weatherapiapikey
finnhub: yourfinnhubapikeyhere
longhorn:
url: https://longhorn.example.com
username: admin
@ -363,10 +408,10 @@ providers:
You can then pass `provider` instead of `apiKey` in your widget configuration.
```yaml
- weatherapi:
- openweathermap:
latitude: 50.449684
longitude: 30.525026
provider: weatherapi
provider: openweathermap
```
## Quick Launch

View File

@ -15,6 +15,8 @@ services:
volumes:
- /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations
environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required when deploying via public URL
```
### Running as non-root
@ -36,6 +38,7 @@ services:
- /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods
environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required when deploying via public URL
PUID: $PUID
PGID: $PGID
```
@ -43,7 +46,7 @@ services:
### With Docker Run
```bash
docker run -p 3000:3000 -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/gethomepage/homepage:latest
docker run -p 3000:3000 -e HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/gethomepage/homepage:latest
```
### Using Environment Secrets

View File

@ -4,11 +4,9 @@ description: Docs intro
icon: simple/docker
---
<p>
You have a few options for deploying homepage, depending on your needs. We offer docker images for a majority of platforms. You can also install and run homepage from source if Docker is not your thing. It can even be installed on Kubernetes with Helm.
</p>
!!! warning
!!! info
Please note that when using features such as widgets, Homepage can access personal information (for example from your home automation system) and Homepage currently does not (and is not planned to) include any authentication layer itself. Thus, we recommend homepage be deployed behind a reverse proxy including authentication, SSL etc, and / or behind a VPN.
@ -28,3 +26,7 @@ You have a few options for deploying homepage, depending on your needs. We offer
{ .card }
</div>
### `HOMEPAGE_ALLOWED_HOSTS`
As of v1.0 there is one required environment variable when deploying via a public URL, <code>HOMEPAGE_ALLOWED_HOSTS</code>. This is a comma separated list of allowed hosts that can access your homepage. See the [docker](docker.md) and [source](source.md) installation pages for examples.

View File

@ -175,6 +175,7 @@ data:
expanded: true
cpu: true
memory: true
network: default
- search:
provider: duckduckgo
target: _blank
@ -209,12 +210,20 @@ rules:
- get
- list
- apiGroups:
- traefik.containo.us
- traefik.io
resources:
- ingressroutes
verbs:
- get
- list
- apiGroups:
- gateway.networking.k8s.io
resources:
- httproutes
- gateways
verbs:
- get
- list
- apiGroups:
- metrics.k8s.io
resources:
@ -370,7 +379,7 @@ 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.
```
```yaml
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:

View File

@ -21,5 +21,7 @@ If this is your first time starting, copy the `src/skeleton` directory to `confi
Finally, run the server:
```bash
pnpm start
HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev pnpm start
```
When updating homepage versions you will need to re-build the static files i.e. repeat the process above.

View File

@ -15,11 +15,13 @@ hide:
## Service Widget Errors
All service widgets work essentially the same, that is, homepage makes a proxied call to an API made available by that service. The majority of the time widgets don't work it is a configuration issue. Of course, sometimes things do break. Some basic steps to try:
All service widgets work essentially the same, that is, homepage makes a proxied call to an API made available by that service. The majority of the time widgets don't work it is a configuration issue. Of course, sometimes things do break. Some basic steps to check:
1. Ensure that you follow the rule mentioned on https://gethomepage.dev/configs/service-widgets/. **Unless otherwise noted, URLs should not end with a / or other API path. Each widget will handle the path on its own.**. This is very important as including a trailing slash can result in an error.
1. URLs should not end with a / or other API path. Each widget will handle the path on its own.
2. Verify the homepage installation can connect to the IP address or host you are using for the widget `url`. This is most simply achieved by pinging the server from the homepage machine, in Docker this means _from inside the container_ itself, e.g.:
2. All services with a widget require a unique name.
3. Verify the homepage installation can connect to the IP address or host you are using for the widget `url`. This is most simply achieved by pinging the server from the homepage machine, in Docker this means _from inside the container_ itself, e.g.:
```
docker exec homepage ping SERVICEIPORDOMAIN
@ -27,7 +29,7 @@ All service widgets work essentially the same, that is, homepage makes a proxied
If your homepage install (container) cannot reach the service then you need to figure out why, for example in Docker this can mean putting the two containers on the same network, checking firewall issues, etc.
3. If you have verified that homepage can in fact reach the service then you can also check the API output using e.g. `curl`, which is often helpful if you do need to file a bug report. Again, depending on your networking setup this may need to be run from _inside the container_ as IP / hostname resolution can differ inside vs outside.
4. If you have verified that homepage can in fact reach the service then you can also check the API output using e.g. `curl`, which is often helpful if you do need to file a bug report. Again, depending on your networking setup this may need to be run from _inside the container_ as IP / hostname resolution can differ inside vs outside.
!!! note

View File

@ -46,17 +46,16 @@ See the [pre-commit documentation](https://pre-commit.com/#install) to get start
In general, homepage is meant to be a dashboard for 'self-hosted' services and we believe it is a small way we can help showcase this kind of software. While exceptions are made, mostly when there is no viable
self-hosted / open-source alternative, we ask that any widgets, etc. are developed primarily for a self-hosted tool.
## New Feature Guidelines
## New Feature or Enhancement Guidelines {#new-feature-guidelines}
- New features should be linked to an existing feature request with at least 10 'up-votes'. The purpose of this requirement is to avoid the addition (and maintenance) of features that might only benefit a small number of users.
- If you have ideas for a larger feature, please open a discussion first.
- Please note that though it is a requirement, a discussion with 10 'up-votes' in no way guarantees that a PR will be merged.
- New features or enhancements, **no matter how small**, must be linked to an existing feature request with some comments or 'up-votes' that demonstrate community interest. The purpose of this requirement is to avoid the addition (and maintenance) of features that might only benefit a small number of users.
- If you have ideas for a larger feature you may want to open a discussion first.
## Service Widget Guidelines
To ensure cohesiveness of various widgets, the following should be used as a guide for developing new widgets:
- Please only submit widgets that have been requested and have at least 10 'up-votes'. The purpose of this requirement is to avoid the addition (and maintenance) of service widgets that might only benefit a small number of users.
- Please only submit widgets that target a feature request discussion with at least 20 'up-votes'. The purpose of this requirement is to avoid the addition (and maintenance) of service widgets that might only benefit a small number of users.
- Note that we reserve the right to decline widgets for projects that are very young (eg < ~1y) or those with a small reach (eg low GitHub stars). Again, this is in an effort to keep overall widget maintenance under control.
- Widgets should be only one row of blocks
- Widgets should be no more than 4 blocks wide and generally conform to the styling / design choices of other widgets

View File

@ -50,7 +50,7 @@ You can also pass API keys from the widget configuration to the proxy handler, f
### `credentialedProxyHandler`
A proxy handler that makes authenticated by setting request headers. Credentials are pulled from the widgets configuration.
A proxy handler that makes authenticated requests by setting request headers. Credentials are pulled from the widgets configuration.
By default the key is passed as an `X-API-Key` header. If you need to pass the key as something else, either add a case to the credentialedProxyHandler or create a new proxy handler.

View File

@ -71,7 +71,7 @@ Homepage provides a set of common translations that you can use in your widgets.
| `common.ms` | `1,000 ms` | Format a number in milliseconds. |
| `common.date` | `2024-01-01` | Format a date. |
| `common.relativeDate` | `1 day ago` | Format a relative date. |
| `common.uptime` | `1 day, 1 hour` | Format an uptime. |
| `common.duration` | `1 day, 1 hour` | Format an duration. |
### Text

View File

@ -19,12 +19,17 @@ Service widgets are used to display the status of a service, often a web service
description: Watch movies and TV shows.
server: localhost
container: plex
widget:
type: tautulli
url: http://172.16.1.1:8181
key: aabbccddeeffgghhiijjkkllmmnnoo
widgets:
- type: tautulli
url: http://172.16.1.1:8181
key: aabbccddeeffgghhiijjkkllmmnnoo
- type: uptimekuma
url: http://172.16.1.2:8080
slug: aaaaaaabbbbb
```
More detail on configuring service widgets can be found in the [Service Widgets Config](../configs/services.md) section.
## Info Widgets
Info widgets are used to display information in the header, often about your system or environment. Info widgets are defined your `widgets.yaml` file. Here's an example:
@ -36,3 +41,5 @@ Info widgets are used to display information in the header, often about your sys
longitude: -117.51
cache: 5
```
More detail on configuring info widgets can be found in the [Info Widgets Config](../configs/info-widgets.md) section.

View File

@ -3,7 +3,7 @@ title: Open-Meteo
description: Open-Meteo Information Widget Configuration
---
No registration is required at all! See [https://open-meteo.com/en/docs](https://open-meteo.com/en/docs)
Homepage's recommended weather widget. No registration is required at all! See [https://open-meteo.com/en/docs](https://open-meteo.com/en/docs)
```yaml
- openmeteo:

View File

@ -24,9 +24,10 @@ _Note: unfortunately, the package used for getting CPU temp ([systeminformation]
tempmin: 0 # optional, minimum cpu temp
tempmax: 100 # optional, maximum cpu temp
uptime: true
units: imperial # only used by cpu temp
units: imperial # only used by cpu temp, options: 'imperial' or 'metric'
refresh: 3000 # optional, in ms
diskUnits: bytes # optional, bytes (default) or bbytes. Only applies to disk
network: true # optional, uses 'default' if true or specify a network interface name
```
You can also pass a `label` option, which allows you to group resources under named sections,

View File

@ -5,7 +5,11 @@ description: Unifi Controller Information Widget Configuration
_(Find the Unifi Controller service widget [here](../services/unifi-controller.md))_
You can display general connectivity status from your Unifi (Network) Controller. When authenticating you will want to use a local account that has at least read privileges.
You can display general connectivity status from your Unifi (Network) Controller.
!!! warning
When authenticating you will want to use a local account that has at least read privileges.
An optional 'site' parameter can be supplied, if it is not the widget will use the default site for the controller.
@ -18,9 +22,8 @@ An optional 'site' parameter can be supplied, if it is not the widget will use t
```yaml
- unifi_console:
url: https://unifi.host.or.ip:port
site: Site Name # optional
username: user
password: pass
site: Site Name # optional
key: unifiapikey # required if using API key instead of username/password
```
_Added in v0.4.18, updated in 0.6.7_

View File

@ -1,22 +0,0 @@
---
title: Weather API
description: Weather API Information Widget Configuration
---
**Note: this widget is considered 'deprecated' since there is no longer a free Weather API tier for new members. See the openmeteo or openweathermap widgets for alternatives.**
The free tier is all that's required, you will need to [register](https://www.weatherapi.com/signup.aspx) and grab your API key.
```yaml
- weatherapi:
label: Kyiv # optional
latitude: 50.449684
longitude: 30.525026
units: metric # or imperial
apiKey: yourweatherapikey
cache: 5 # Time in minutes to cache API responses, to stay within limits
format: # optional, Intl.NumberFormat options
maximumFractionDigits: 1
```
You can optionally not pass a `latitude` and `longitude` and the widget will use your current location (requires a secure context, eg. HTTPS).

View File

@ -0,0 +1,16 @@
---
title: APC UPS Monitoring
description: Lightweight monitoring widget for APC UPSs using apcupsd daemon
---
This widget extracts UPS information from an apcupsd daemon.
Only works for [APC/Schneider](https://www.se.com/us/en/product-range/61915-smartups/#products) UPS products.
[!NOTE]
By default apcupsd daemon is bound to 127.0.0.1. Edit `/etc/apcupsd.conf` and change `NISIP` to an IP accessible from your homepage docker (usually your internal LAN interface).
```yaml
widget:
type: apcups
url: tcp://your.acpupsd.host:3551
```

View File

@ -0,0 +1,33 @@
---
title: ArgoCD
description: ArgoCD Widget Configuration
---
Learn more about [ArgoCD](https://argo-cd.readthedocs.io/en/stable/).
Allowed fields (limited to a max of 4): `["apps", "synced", "outOfSync", "healthy", "progressing", "degraded", "suspended", "missing"]`
```yaml
widget:
type: argocd
url: http://argocd.host.or.ip:port
key: argocdapikey
```
You can generate an API key either by creating a bearer token for an existing account, see [Authorization](https://argo-cd.readthedocs.io/en/latest/developer-guide/api-docs/#authorization) (not recommended) or create a new local user account with limited privileges and generate an authentication token for this account. To do this the steps are:
- [Create a new local user](https://argo-cd.readthedocs.io/en/stable/operator-manual/user-management/#create-new-user) and give it the `apiKey` capability
- Setup [RBAC configuration](https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/#rbac-configuration) for your the user and give it readonly access to your ArgoCD resources, e.g. by giving it the `role:readonly` role.
- In your ArgoCD project under _Settings / Accounts_ open the newly created account and in the _Tokens_ section click on _Generate New_ to generate an access token, optionally specifying an expiry date.
If you installed ArgoCD via the official Helm chart, the account creation and rbac config can be achived by overriding these helm values:
```yaml
configs:
cm:
accounts.readonly: apiKey
rbac:
policy.csv: "g, readonly, role:readonly"
```
This creates a new account called `readonly` and attaches the `role:readonly` role to it.

View File

@ -20,6 +20,6 @@ Allowed fields: `["users", "loginsLast24H", "failedLoginsLast24H"]`.
```yaml
widget:
type: authentik
url: http://authentik.host.or.ip:22070
url: http://authentik.host.or.ip:port
key: api_token
```

View File

@ -0,0 +1,30 @@
---
title: Beszel
description: Beszel Widget Configuration
---
Learn more about [Beszel](https://github.com/henrygd/beszel)
The widget has two modes, a single system with detailed info if `systemId` is provided, or an overview of all systems if `systemId` is not provided.
The `systemID` is the `id` field on the collections page of Beszel under the PocketBase admin panel. You can also use the 'nice name' from the Beszel UI.
A "superuser" is currently required to access the data from tbe Beszel API.
Allowed fields for 'overview' mode: `["systems", "up"]`
Allowed fields for a single system: `["name", "status", "updated", "cpu", "memory", "disk", "network"]`
| Beszel Version | Homepage Widget Version |
| -------------- | ----------------------- |
| < 0.9.0 | 1 (default) |
| >= 0.9.0 | 2 |
```yaml
widget:
type: beszel
url: http://beszel.host.or.ip
username: username # email
password: password
systemId: systemId # optional
version: 2 # optional, default is 1
```

View File

@ -62,10 +62,12 @@ widget:
format: size
```
Supported formats for the values are `text`, `number`, `float`, `percent`, `bytes`, `bitrate`, `size`, `date` and `relativeDate`.
Supported formats for the values are `text`, `number`, `float`, `percent`, `duration`, `bytes`, `bitrate`, `size`, `date` and `relativeDate`.
The `dateStyle` and `timeStyle` options of the `date` format are passed directly to [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) and the `style` and `numeric` options of `relativeDate` are passed to [Intl.RelativeTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat).
The `duration` format expects the duration to be specified in seconds. The `scale` transformation tool can be used if a conversion is required.
The `size` format will return the length of the array or string, or the number of keys in an object. This is then formatted as `number`.
## Example

View File

@ -14,4 +14,5 @@ widget:
type: deluge
url: http://deluge.host.or.ip
password: password # webui password
enableLeechProgress: true # optional, defaults to false
```

View File

@ -16,5 +16,6 @@ To group both `offline` and `unknown` devices together, users should use the `of
widget:
type: esphome
url: http://esphome.host.or.ip:port
key: myesphomecookie # only if auth enabled, get the value from a request from the frontend e.g. `authenticated=myesphomecookie`
username: myesphomeuser # only if auth enabled
password: myesphomepass # only if auth enabled
```

View File

@ -3,7 +3,7 @@ title: EVCC
description: EVCC Widget Configuration
---
Learn more about [EVSS](https://github.com/evcc-io/evcc).
Learn more about [EVCC](https://github.com/evcc-io/evcc).
Allowed fields: `["pv_power", "grid_power", "home_power", "charge_power]`.

View File

@ -0,0 +1,17 @@
---
title: Firefly III
description: Firefly III Widget Configuration
---
Learn more about [Firefly III](https://www.firefly-iii.org/).
Find your API key under `Options > Profile > OAuth > Personal Access Tokens`.
Allowed fields: `["networth" ,"budget"]`.
```yaml
widget:
type: firefly
url: https://firefly.host.or.ip
key: personalaccesstoken.personalaccesstoken.personalaccesstoken
```

View File

@ -13,7 +13,7 @@ Home Network > Network > Network Settings > Access Settings in the Home Network
Credentials are not needed and, as such, you may want to consider using `http` instead of `https` as those requests are significantly faster.
Allowed fields (limited to a max of 4): `["connectionStatus", "uptime", "maxDown", "maxUp", "down", "up", "received", "sent", "externalIPAddress"]`.
Allowed fields (limited to a max of 4): `["connectionStatus", "uptime", "maxDown", "maxUp", "down", "up", "received", "sent", "externalIPAddress", "externalIPv6Address", "externalIPv6Prefix"]`.
```yaml
widget:

View File

@ -0,0 +1,20 @@
---
title: Gitlab
description: Gitlab Widget Configuration
---
Learn more about [Gitlab](https://gitlab.com).
API requires a personal access token with either `read_api` or `api` permission. See the [gitlab documentation](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#create-a-personal-access-token) for details on generating one.
Your Gitlab user ID can be found on [your profile page](https://support.circleci.com/hc/en-us/articles/20761157174043-How-to-find-your-GitLab-User-ID).
Allowed fields: `["events", "issues", "merges", "projects"]`.
```yaml
widget:
type: gitlab
url: http://gitlab.host.or.ip:port
key: personal-access-token
user_id: 123456
```

View File

@ -51,6 +51,8 @@ The metric field in the configuration determines the type of system monitoring d
`process`: Top 5 processes based on CPU usage. Gives an overview of which processes are consuming the most resources.
`containers`: Docker or Kubernetes containers list. Shows up to 5 containers running on the system and their resource usage.
`network:<interface_name>`: Network data usage for the specified interface. Replace `<interface_name>` with the name of your network interface, e.g., `network:enp0s25`, as specified in glances.
`sensor:<sensor_id>`: Temperature of the specified sensor, typically used to monitor CPU temperature. Replace `<sensor_id>` with the name of your sensor, e.g., `sensor:Package id 0` as specified in glances.

View File

@ -11,7 +11,7 @@ Learn more about [Gluetun](https://github.com/qdm12/gluetun).
Allowed fields: `["public_ip", "region", "country"]`.
To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication).
To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication). Note that to use the api key method, you must add the route `GET /v1/publicip/ip` to the `routes` array in your Gluetun config.toml.
```yaml
widget:

View File

@ -0,0 +1,20 @@
---
title: Headscale
description: Headscale Widget Configuration
---
Learn more about [Headscale](https://headscale.net/).
You will need to generate an API access token from the [command line](https://headscale.net/ref/remote-cli/#create-an-api-key) using `headscale apikeys create` command.
To find your node ID, you can use `headscale nodes list` command.
Allowed fields: `["name", "address", "last_seen", "status"]`.
```yaml
widget:
type: headscale
url: http://headscale.host.or.ip:port
nodeId: nodeid
key: headscaleapiaccesstoken
```

View File

@ -5,6 +5,11 @@ description: Immich Widget Configuration
Learn more about [Immich](https://github.com/immich-app/immich).
| Immich Version | Homepage Widget Version |
| -------------- | ----------------------- |
| < v1.118 | 1 (default) |
| >= v1.118 | 2 |
Find your API key under `Account Settings > API Keys`.
Allowed fields: `["users" ,"photos", "videos", "storage"]`.
@ -16,4 +21,5 @@ widget:
type: immich
url: http://immich.host.or.ip
key: adminapikeyadminapikeyadminapikey
version: 2 # optional, default is 1
```

View File

@ -8,12 +8,15 @@ search:
You can also find a list of all available service widgets in the sidebar navigation.
- [Adguard Home](adguard-home.md)
- [APC UPS](apcups.md)
- [ArgoCD](argocd.md)
- [Atsumeru](atsumeru.md)
- [Audiobookshelf](audiobookshelf.md)
- [Authentik](authentik.md)
- [Autobrr](autobrr.md)
- [Azure DevOps](azuredevops.md)
- [Bazarr](bazarr.md)
- [Beszel](beszel.md)
- [Caddy](caddy.md)
- [Calendar](calendar.md)
- [Calibre-Web](calibre-web.md)
@ -31,6 +34,7 @@ You can also find a list of all available service widgets in the sidebar navigat
- [ESPHome](esphome.md)
- [EVCC](evcc.md)
- [Fileflows](fileflows.md)
- [Firefly III](firefly.md)
- [Flood](flood.md)
- [FreshRSS](freshrss.md)
- [Frigate](frigate.md)
@ -39,11 +43,13 @@ You can also find a list of all available service widgets in the sidebar navigat
- [Gatus](gatus.md)
- [Ghostfolio](ghostfolio.md)
- [Gitea](gitea.md)
- [Gitlab](gitlab.md)
- [Glances](glances.md)
- [Gluetun](gluetun.md)
- [Gotify](gotify.md)
- [Grafana](grafana.md)
- [HDHomeRun](hdhomerun.md)
- [Headscale](headscale.md)
- [Healthchecks](healthchecks.md)
- [Home Assistant](homeassistant.md)
- [HomeBox](homebox.md)
@ -96,6 +102,7 @@ You can also find a list of all available service widgets in the sidebar navigat
- [Plex](plex.md)
- [Portainer](portainer.md)
- [Prometheus](prometheus.md)
- [Prometheus Metric](prometheusmetric.md)
- [Prowlarr](prowlarr.md)
- [Proxmox](proxmox.md)
- [Proxmox Backup Server](proxmoxbackupserver.md)
@ -128,6 +135,7 @@ You can also find a list of all available service widgets in the sidebar navigat
- [Uptime Kuma](uptime-kuma.md)
- [UptimeRobot](uptimerobot.md)
- [UrBackup](urbackup.md)
- [Vikunja](vikunja.md)
- [Watchtower](watchtower.md)
- [WGEasy](wgeasy.md)
- [WhatsUpDocker](whatsupdocker.md)

View File

@ -15,4 +15,5 @@ widget:
url: http://kavita.host.or.ip:port
username: username
password: password
key: kavitaapikey # Optional, e.g. if not using username and password
```

View File

@ -9,6 +9,11 @@ Uses the same username and password used to login from the web.
Allowed fields: `["libraries", "series", "books"]`.
| Komga API Version | Homepage Widget Version |
| ----------------- | ----------------------- |
| < v2 | 1 (default) |
| >= v2 | 2 |
```yaml
widget:
type: komga

View File

@ -8,7 +8,7 @@ Learn more about [LubeLogger](https://github.com/hargata/lubelog) (v1.3.7 or hig
The widget comes in two 'flavors', one shows data for all vehicles or for just a specific vehicle with the `vehicleID` parameter.
Allowed fields: `["vehicles", "serviceRecords", "reminders"]`.
For the single-vehicle version: `["vehicle", "serviceRecords", "reminders", "nextReminder"]
For the single-vehicle version: `["vehicle", "serviceRecords", "reminders", "nextReminder"]`.
```yaml
widget:

View File

@ -9,8 +9,11 @@ _Note that the project was renamed from PiAlert to NetAlertX._
Allowed fields: `["total", "connected", "new_devices", "down_alerts"]`.
If you have enabled a password on your NetAlertX instance, you will need to provide the `SYNC_api_token` as the `key` in your config.
```yaml
widget:
type: netalertx
url: http://ip:port
key: netalertxsyncapitoken # optional, only if password is enabled
```

View File

@ -8,7 +8,7 @@ Learn more about [OPNSense](https://opnsense.org/).
The API key & secret can be generated via the webui by creating a new user at _System/Access/Users_. Ensure "Generate a scrambled password to prevent local database logins for this user" is checked and then edit the effective privileges selecting **only**:
- Diagnostics: System Activity
- Status: Traffic Graph
- Status: Traffic Graph / Reporting: Traffic (OPNSENSE 24.7.x)
Finally, create a new API key which will download an `apikey.txt` file with your key and secret in it. Use the values as the username and password fields, respectively, in your homepage config.
@ -20,4 +20,5 @@ widget:
url: http://opnsense.host.or.ip
username: key
password: secret
wan: opt1 # optional, defaults to wan
```

View File

@ -20,4 +20,6 @@ widget:
type: peanut
url: http://peanut.host.or.ip:port
key: nameofyourups
username: username # only needed if set
password: password # only needed if set
```

View File

@ -14,5 +14,5 @@ widget:
type: pihole
url: http://pi.hole.or.ip
version: 6 # required if running v6 or higher, defaults to 5
key: yourpiholeapikey # optional
key: yourpiholeapikey # optional, in v6 can be your password or app password
```

View File

@ -0,0 +1,67 @@
---
title: Prometheus Metric
description: Prometheus Metric Widget Configuration
---
Learn more about [Querying Prometheus](https://prometheus.io/docs/prometheus/latest/querying/basics/).
This widget can show metrics for your service defined by PromQL queries which are requested from a running Prometheus instance.
Quries can be defined in the `metrics` array of the widget along with a label to be used to present the metric value. You can optionally specify a global `refreshInterval` in milliseconds and/or define the `refreshInterval` per metric. Inside the optional `format` object of a metric various formatting styles and transformations can be applied (see below).
```yaml
widget:
type: prometheusmetric
url: https://prometheus.host.or.ip
refreshInterval: 10000 # optional - in milliseconds, defaults to 10s
metrics:
- label: Metric 1
query: alertmanager_alerts{state="active"}
- label: Metric 2
query: apiserver_storage_size_bytes{node="mynode"}
format:
type: bytes
- label: Metric 3
query: avg(prometheus_notifications_latency_seconds)
format:
type: number
suffix: s
options:
maximumFractionDigits: 4
- label: Metric 4
query: time()
refreshInterval: 1000 # will override global refreshInterval
format:
type: date
scale: 1000
options:
timeStyle: medium
```
## Formatting
Supported values for `format.type` are `text`, `number`, `percent`, `bytes`, `bits`, `bbytes`, `bbits`, `byterate`, `bibyterate`, `bitrate`, `bibitrate`, `date`, `duration`, `relativeDate`, and `text` which is the default.
The `dateStyle` and `timeStyle` options of the `date` format are passed directly to [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) and the `style` and `numeric` options of `relativeDate` are passed to [Intl.RelativeTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat). For the `number` format, options of [Intl.NumberFormat](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat) can be used, e.g. `maximumFractionDigits` or `minimumFractionDigits`.
### Data Transformation
You can manipulate your metric value with the following tools: `scale`, `prefix` and `suffix`, for example:
```yaml
- query: my_custom_metric{}
label: Metric 1
format:
type: number
scale: 1000 # multiplies value by a number or fraction string e.g. 1/16
- query: my_custom_metric{}
label: Metric 2
format:
type: number
prefix: "$" # prefixes value with given string
- query: my_custom_metric{}
label: Metric 3
format:
type: number
suffix: "€" # suffixes value with given string
```

View File

@ -15,4 +15,5 @@ widget:
url: http://qbittorrent.host.or.ip
username: username
password: password
enableLeechProgress: true # optional, defaults to false
```

View File

@ -10,7 +10,5 @@ If more than (4) fields are provided, only the first (4) will be used.
widget:
type: romm
url: http://romm.host.or.ip
username: username # optional
password: password # optional
fields: ["platforms", "totalRoms", "saves", "states"] # optional - default fields shown
```

View File

@ -8,7 +8,12 @@ Learn more about [Speedtest Tracker](https://github.com/alexjustesen/speedtest-t
No extra configuration is required.
This widget is compatible with both [alexjustesen/speedtest-tracker](https://github.com/alexjustesen/speedtest-tracker) and [henrywhitaker3/Speedtest-Tracker](https://github.com/henrywhitaker3/Speedtest-Tracker).
Version 1 of the widget is compatible with both [alexjustesen/speedtest-tracker](https://github.com/alexjustesen/speedtest-tracker) and [henrywhitaker3/Speedtest-Tracker](https://github.com/henrywhitaker3/Speedtest-Tracker), while version 2 is only compatible with [alexjustesen/speedtest-tracker](https://github.com/alexjustesen/speedtest-tracker).
| Speedtest Version (AJ) | Speedtest Version (HW) | Homepage Widget Version |
| ---------------------- | ---------------------- | ----------------------- |
| < 1.2.1 | 1.12.0 | 1 (default) |
| >= 1.2.1 | N/A | 2 |
Allowed fields: `["download", "upload", "ping"]`.
@ -16,5 +21,7 @@ Allowed fields: `["download", "upload", "ping"]`.
widget:
type: speedtest
url: http://speedtest.host.or.ip
version: 1 # optional, default is 1
key: speedtestapikey # required for version 2
bitratePrecision: 3 # optional, default is 0
```

View File

@ -0,0 +1,15 @@
---
title: Spoolman
description: Spoolman Widget Configuration
---
Learn more about [Spoolman](https://github.com/Donkie/Spoolman).
4 spools are displayed by default. If more than 4 spools are configured in spoolman you can use the spoolIds configuration option to control which are displayed.
```yaml
widget:
type: spoolman
url: http://spoolman.host.or.ip
spoolIds: [1, 2, 3, 4] # optional
```

View File

@ -0,0 +1,20 @@
---
title: Suwayomi
description: Suwayomi Widget Configuration
---
Learn more about [Suwayomi](https://github.com/Suwayomi/Suwayomi-Server).
Allowed fields: ["download", "nondownload", "read", "unread", "downloadedread", "downloadedunread", "nondownloadedread", "nondownloadedunread"]
The widget defaults to the first four above. If more than four fields are provided, only the first 4 are displayed.
Category IDs can be obtained from the url when navigating to it, `?tab={categoryID}`.
```yaml
widget:
type: suwayomi
url: http://suwayomi.host.or.ip
username: username #optional
password: password #optional
category: 0 #optional, defaults to all categories
```

View File

@ -7,7 +7,11 @@ Learn more about [Unifi Controller](https://ui.com/).
_(Find the Unifi Controller information widget [here](../info/unifi_controller.md))_
You can display general connectivity status from your Unifi (Network) Controller. When authenticating you will want to use a local account that has at least read privileges.
You can display general connectivity status from your Unifi (Network) Controller.
!!! warning
When authenticating you will want to use a local account that has at least read privileges.
An optional 'site' parameter can be supplied, if it is not the widget will use the default site for the controller.
@ -15,15 +19,14 @@ Allowed fields: `["uptime", "wan", "lan", "lan_users", "lan_devices", "wlan", "w
!!! hint
If you enter e.g. incorrect credentials and receive an "API Error", you may need to recreate the container to clear the cache.
If you enter e.g. incorrect credentials and receive an "API Error", you may need to recreate the container or restart the service to clear the cache.
```yaml
widget:
type: unifi
url: https://unifi.host.or.ip:port
username: username
password: password
site: Site Name # optional
username: user
password: pass
key: unifiapikey # required if using API key instead of username/password
```
_Added in v0.4.18, updated in 0.6.7_

View File

@ -0,0 +1,18 @@
---
title: Vikunja
description: Vikunja Widget Configuration
---
Learn more about [Vikunja](https://vikunja.io).
Allowed fields: `["projects", "tasks7d", "tasksOverdue", "tasksInProgress"]`.
A list of the next 5 tasks ordered by due date is disabled by default, but can be enabled with the `enableTaskList` option.
```yaml
widget:
type: vikunja
url: http[s]://vikunja.host.or.ip[:port]
key: vikunjaapikey
enableTaskList: true # optional, defaults to false
```

View File

@ -3,7 +3,7 @@ title: Zabbix
description: Zabbix Widget Configuration
---
Learn more about [Zabbix](https://github.com/zabbix/zabbix). The widget supports (at least) Zibbax server version 7.0.
Learn more about [Zabbix](https://github.com/zabbix/zabbix). The widget supports (at least) Zabbix server version 7.0.
---

View File

@ -23,6 +23,12 @@ Set the `mode` in the `kubernetes.yaml` to `cluster`.
mode: default
```
To enable Kubernetes gateway-api compatibility, set `route` to `gateway`.
```yaml
route: gateway
```
## Widgets
The Kubernetes widget can show a high-level overview of the cluster,

View File

@ -21,8 +21,8 @@ nav:
- configs/index.md
- configs/settings.md
- configs/bookmarks.md
- configs/info-widgets.md
- configs/services.md
- configs/service-widgets.md
- configs/kubernetes.md
- configs/docker.md
- configs/custom-css-js.md
@ -31,12 +31,15 @@ nav:
- "Service Widgets":
- widgets/services/index.md
- widgets/services/adguard-home.md
- widgets/services/apcups.md
- widgets/services/argocd.md
- widgets/services/atsumeru.md
- widgets/services/audiobookshelf.md
- widgets/services/authentik.md
- widgets/services/autobrr.md
- widgets/services/azuredevops.md
- widgets/services/bazarr.md
- widgets/services/beszel.md
- widgets/services/caddy.md
- widgets/services/calendar.md
- widgets/services/calibre-web.md
@ -54,6 +57,7 @@ nav:
- widgets/services/esphome.md
- widgets/services/evcc.md
- widgets/services/fileflows.md
- widgets/services/firefly.md
- widgets/services/flood.md
- widgets/services/freshrss.md
- widgets/services/frigate.md
@ -62,11 +66,13 @@ nav:
- widgets/services/gatus.md
- widgets/services/ghostfolio.md
- widgets/services/gitea.md
- widgets/services/gitlab.md
- widgets/services/glances.md
- widgets/services/gluetun.md
- widgets/services/gotify.md
- widgets/services/grafana.md
- widgets/services/hdhomerun.md
- widgets/services/headscale.md
- widgets/services/healthchecks.md
- widgets/services/homeassistant.md
- widgets/services/homebox.md
@ -119,6 +125,7 @@ nav:
- widgets/services/plex.md
- widgets/services/portainer.md
- widgets/services/prometheus.md
- widgets/services/prometheusmetric.md
- widgets/services/prowlarr.md
- widgets/services/proxmox.md
- widgets/services/proxmoxbackupserver.md
@ -134,8 +141,10 @@ nav:
- widgets/services/scrutiny.md
- widgets/services/sonarr.md
- widgets/services/speedtest-tracker.md
- widgets/services/spoolman.md
- widgets/services/stash.md
- widgets/services/stocks.md
- widgets/services/suwayomi.md
- widgets/services/swagdashboard.md
- widgets/services/syncthing-relay-server.md
- widgets/services/tailscale.md
@ -151,6 +160,7 @@ nav:
- widgets/services/uptime-kuma.md
- widgets/services/uptimerobot.md
- widgets/services/urbackup.md
- widgets/services/vikunja.md
- widgets/services/watchtower.md
- widgets/services/wgeasy.md
- widgets/services/whatsupdocker.md
@ -170,7 +180,6 @@ nav:
- widgets/info/search.md
- widgets/info/stocks.md
- widgets/info/unifi_controller.md
- widgets/info/weather.md
- "Learn":
- widgets/authoring/index.md
- "Getting Started": widgets/authoring/getting-started.md

View File

@ -84,12 +84,12 @@ function prettyBytes(number, options) {
return `${prefix + numberString} ${unit}`;
}
function uptime(uptimeInSeconds, i18next) {
const mo = Math.floor(uptimeInSeconds / (3600 * 24 * 31));
const d = Math.floor((uptimeInSeconds % (3600 * 24 * 31)) / (3600 * 24));
const h = Math.floor((uptimeInSeconds % (3600 * 24)) / 3600);
const m = Math.floor((uptimeInSeconds % 3600) / 60);
const s = Math.floor(uptimeInSeconds % 60);
function duration(durationInSeconds, i18next) {
const mo = Math.floor(durationInSeconds / (3600 * 24 * 31));
const d = Math.floor((durationInSeconds % (3600 * 24 * 31)) / (3600 * 24));
const h = Math.floor((durationInSeconds % (3600 * 24)) / 3600);
const m = Math.floor((durationInSeconds % 3600) / 60);
const s = Math.floor(durationInSeconds % 60);
const moDisplay = mo > 0 ? mo + i18next.t("common.months") : "";
const dDisplay = d > 0 ? d + i18next.t("common.days") : "";
@ -156,7 +156,7 @@ module.exports = {
i18next.services.formatter.add("relativeDate", (value, lng, options) =>
relativeDate(new Date(value), new Intl.RelativeTimeFormat(lng, { ...options })),
);
i18next.services.formatter.add("uptime", (value, lng) => uptime(value, i18next));
i18next.services.formatter.add("duration", (value, lng) => duration(value, i18next));
},
type: "3rdParty",
},

5578
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "homepage",
"version": "0.9.6",
"version": "0.10.9",
"private": true,
"scripts": {
"dev": "next dev -p 8080",
@ -10,56 +10,55 @@
"telemetry": "next telemetry disable"
},
"dependencies": {
"@headlessui/react": "^1.7.18",
"@kubernetes/client-node": "^0.17.1",
"@headlessui/react": "^1.7.19",
"@kubernetes/client-node": "^1.0.0",
"cal-parser": "^1.0.2",
"classnames": "^2.5.1",
"compare-versions": "^6.1.0",
"dockerode": "^4.0.2",
"compare-versions": "^6.1.1",
"dockerode": "^4.0.4",
"follow-redirects": "^1.15.9",
"gamedig": "^5.1.2",
"gamedig": "^5.2.0",
"i18next": "^21.10.0",
"js-yaml": "^4.1.0",
"json-rpc-2.0": "^1.7.0",
"luxon": "^3.5.0",
"memory-cache": "^0.2.0",
"minecraft-ping-js": "^1.0.2",
"next": "^12.3.4",
"minecraftstatuspinger": "^1.2.1",
"next": "^15.1.7",
"next-i18next": "^12.1.0",
"ping": "^0.4.4",
"pretty-bytes": "^6.1.1",
"raw-body": "^3.0.0",
"react": "^18.3.1",
"react-dom": "^18.2.0",
"react-dom": "^18.3.1",
"react-i18next": "^11.18.6",
"salted-md5": "^4.0.5",
"react-icons": "^4.12.0",
"recharts": "^2.12.6",
"react-icons": "^5.4.0",
"rrule": "^2.8.1",
"swr": "^1.3.0",
"systeminformation": "^5.23.2",
"tough-cookie": "^4.1.3",
"urbackup-server-api": "^0.52.0",
"winston": "^3.11.0",
"systeminformation": "^5.25.11",
"tough-cookie": "^5.1.2",
"urbackup-server-api": "^0.8.9",
"winston": "^3.17.0",
"xml-js": "^1.6.11"
},
"devDependencies": {
"@tailwindcss/forms": "^0.5.8",
"autoprefixer": "^10.4.20",
"eslint": "^8.57.1",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-next": "^14.2.3",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsx-a11y": "^6.8.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-react": "^7.37.1",
"eslint-plugin-react-hooks": "^4.6.2",
"postcss": "^8.4.47",
"prettier": "^3.2.5",
"tailwind-scrollbar": "^3.0.5",
"tailwindcss": "^3.4.13",
"typescript": "^5.6.2"
"@tailwindcss/forms": "^0.5.10",
"@tailwindcss/postcss": "^4.0.9",
"eslint": "^9.21.0",
"eslint-config-next": "^15.1.7",
"eslint-config-prettier": "^10.0.2",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-prettier": "^5.2.3",
"eslint-plugin-react": "^7.37.4",
"eslint-plugin-react-hooks": "^5.1.0",
"postcss": "^8.5.2",
"prettier": "^3.5.2",
"tailwind-scrollbar": "^4.0.1",
"tailwindcss": "^4.0.9",
"typescript": "^5.7.3"
},
"optionalDependencies": {
"osx-temperature-sensor": "^1.0.8"

4348
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,5 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
"@tailwindcss/postcss": {},
},
};

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "ma",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Rooster",
"home_power": "Verbruik",
"charge_power": "Laaier",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Aflaai",
@ -309,6 +309,16 @@
"stopped": "Gestop",
"total": "Totaal"
},
"suwayomi": {
"download": "Afgelaai",
"nondownload": "Nie-Afgelaai",
"read": "Gelees",
"unread": "Ongelees",
"downloadedread": "Afgelaai & Gelees",
"downloadedunread": "Afgelaai en Ongelees",
"nondownloadedread": "Nie-Afgelaai & Gelees",
"nondownloadedunread": "Nie-Afgelaai & Ongelees"
},
"tailscale": {
"address": "Adres",
"expires": "Verval",
@ -947,11 +957,58 @@
"disaster": "Ramp"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
"vehicle": "Voertuig",
"vehicles": "Voertuie",
"serviceRecords": "Diensrekords",
"reminders": "Herinneringe",
"nextReminder": "Volgende Herinnering",
"none": "Geen"
},
"vikunja": {
"projects": "Aktiewe Projekte",
"tasks7d": "Take Hierdie week",
"tasksOverdue": "Agterstallige Take",
"tasksInProgress": "Take Aan Die Gang"
},
"headscale": {
"name": "Naam",
"address": "Adres",
"last_seen": "Laaste Gesien",
"status": "Status",
"online": "Aanlyn",
"offline": "Vanlyn"
},
"beszel": {
"name": "Naam",
"systems": "Stelsels",
"up": "Op",
"down": "Af",
"paused": "Onderbreek",
"pending": "Afwagtend",
"status": "Status",
"updated": "Opgedateer",
"cpu": "SVE",
"memory": "GEH",
"disk": "Skyf",
"network": "NET"
},
"argocd": {
"apps": "Programme",
"synced": "Gesinkroniseer",
"outOfSync": "Nie Gesinchroniseer Nie",
"healthy": "Gesond",
"degraded": "Gedegradeer",
"progressing": "Vorderend",
"missing": "Vermis",
"suspended": "Geskors"
},
"spoolman": {
"loading": "Laai"
},
"gitlab": {
"groups": "Groepe",
"issues": "Kwessies",
"merges": "Saamvleg Versoeke",
"projects": "Projekte"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "ش",
"days": "ي",
"hours": "س",
@ -120,7 +120,7 @@
"grid_power": "شبكة",
"home_power": "الاستهلاك",
"charge_power": "شاحن",
"watt_hour": "واط ساعة"
"kilowatt": "kW"
},
"flood": {
"download": "التنزيل",
@ -309,6 +309,16 @@
"stopped": "متوقف",
"total": "المجموع"
},
"suwayomi": {
"download": "مُنزل",
"nondownload": "Non-Downloaded",
"read": "قراءة",
"unread": "غير مقروءة",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "عنوان",
"expires": "تنتهي",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "الاسم",
"address": "عنوان",
"last_seen": "آخر ظهور",
"status": "الحالة",
"online": "مُتّصل",
"offline": "غير متصل"
},
"beszel": {
"name": "الاسم",
"systems": "Systems",
"up": "يعمل",
"down": "لا يعمل",
"paused": "متوقف",
"pending": "معلق",
"status": "الحالة",
"updated": "محدث",
"cpu": "المعالج",
"memory": "الذاكرة",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "سليم",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "مفقود",
"suspended": "Suspended"
},
"spoolman": {
"loading": "تحميل"
},
"gitlab": {
"groups": "Groups",
"issues": "المُشكِلات",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "d",
"hours": "ч",
@ -120,7 +120,7 @@
"grid_power": "Grid",
"home_power": "Consumption",
"charge_power": "Charger",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Download",
@ -309,6 +309,16 @@
"stopped": "Спрян",
"total": "Общо"
},
"suwayomi": {
"download": "Изтеглени",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Unread",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Address",
"expires": "Expires",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Address",
"last_seen": "Последно видян",
"status": "Статус",
"online": "Online",
"offline": "Изключен"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "Pending",
"status": "Статус",
"updated": "Updated",
"cpu": "Процесор",
"memory": "Памет",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Healthy",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Липсващи",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mes",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Xarxa",
"home_power": "Consum",
"charge_power": "Carregador",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Descarregar",
@ -227,8 +227,8 @@
"seed": "Llavors"
},
"develancacheui": {
"cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Cache Miss Bytes"
"cachehitbytes": "Bytes trobats a la memòria cau",
"cachemissbytes": "Bytes no trobats a la memòria cau"
},
"downloadstation": {
"download": "Descarregar",
@ -309,6 +309,16 @@
"stopped": "Aturat",
"total": "Total"
},
"suwayomi": {
"download": "Descarregat",
"nondownload": "No descarregat",
"read": "Llegit",
"unread": "Sense llegir",
"downloadedread": "Descarregat i llegit",
"downloadedunread": "Descarregat i per llegir",
"nondownloadedread": "No descarregat i llegit",
"nondownloadedunread": "No descarregat i per llegir"
},
"tailscale": {
"address": "Adreça",
"expires": "Caduca",
@ -325,22 +335,22 @@
},
"technitium": {
"totalQueries": "Consultes",
"totalNoError": "Success",
"totalServerFailure": "Failures",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
"totalAuthoritative": "Authoritative",
"totalRecursive": "Recursive",
"totalCached": "Cached",
"totalNoError": "Èxits",
"totalServerFailure": "Fallades",
"totalNxDomain": "Dominis NX",
"totalRefused": "Rebutjat",
"totalAuthoritative": "Autoritatiu",
"totalRecursive": "Recursiu",
"totalCached": "A la memòria cau",
"totalBlocked": "Bloquejat",
"totalDropped": "Dropped",
"totalDropped": "Abandonat",
"totalClients": "Clients"
},
"tdarr": {
"queue": "Cua",
"processed": "Processat",
"errored": "Error",
"saved": "Desat"
"saved": "Estalviat"
},
"traefik": {
"routers": "Encaminadors",
@ -571,7 +581,7 @@
"clientIP": "Client"
},
"scrutiny": {
"passed": "Aprobat",
"passed": "Aprovat",
"failed": "Error",
"unknown": "Desconegut"
},
@ -810,7 +820,7 @@
"total": "Total",
"running": "En execució",
"stopped": "Aturat",
"passed": "Aprobat",
"passed": "Aprovat",
"failed": "Error"
},
"openwrt": {
@ -844,16 +854,16 @@
},
"romm": {
"platforms": "Plataformes",
"totalRoms": "Games",
"saves": "Saves",
"states": "States",
"screenshots": "Screenshots",
"totalfilesize": "Total Size"
"totalRoms": "Jocs",
"saves": "Partides desades",
"states": "Estats",
"screenshots": "Captures de pantalla",
"totalfilesize": "Tamany total"
},
"mailcow": {
"domains": "Dominis",
"mailboxes": "Mailboxes",
"mails": "Mails",
"mailboxes": "Bústies",
"mails": "Correus",
"storage": "Emmagatzematge"
},
"netdata": {
@ -934,24 +944,71 @@
"version": "Versió"
},
"linkwarden": {
"links": "Links",
"collections": "Collections",
"links": "Enllaços",
"collections": "Col·leccions",
"tags": "Etiquetes"
},
"zabbix": {
"unclassified": "Not classified",
"unclassified": "No classificat",
"information": "Informació",
"warning": "Warning",
"average": "Average",
"high": "High",
"disaster": "Disaster"
"warning": "Avís",
"average": "Mitjana",
"high": "Alt",
"disaster": "Desastre"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
"serviceRecords": "Constàncies de manteniment",
"reminders": "Recordatoris",
"nextReminder": "Proper recordatori",
"none": "Cap"
},
"vikunja": {
"projects": "Projectes actius",
"tasks7d": "Tasques a completar aquesta setmana",
"tasksOverdue": "Tasques vençudes",
"tasksInProgress": "Tasques en marxa"
},
"headscale": {
"name": "Nom",
"address": "Adreça",
"last_seen": "Vist per darrer cop",
"status": "Estat",
"online": "En línia",
"offline": "Fora de línia"
},
"beszel": {
"name": "Nom",
"systems": "Sistemes",
"up": "Actiu",
"down": "Inactiu",
"paused": "En pausa",
"pending": "Pendent",
"status": "Estat",
"updated": "Actualitzat",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disc",
"network": "XARXA"
},
"argocd": {
"apps": "Apps",
"synced": "Sincronitzats",
"outOfSync": "Dessincronitzats",
"healthy": "Saludable",
"degraded": "Degradats",
"progressing": "Progressant",
"missing": "Falten",
"suspended": "Suspesos"
},
"spoolman": {
"loading": "Carregant"
},
"gitlab": {
"groups": "Grups",
"issues": "Problemes",
"merges": "Merge Requests",
"projects": "Projectes"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "měs.",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Mřížka",
"home_power": "Spotřeba",
"charge_power": "Nabíječka",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Stahování",
@ -309,6 +309,16 @@
"stopped": "Zastaveno",
"total": "Celkem"
},
"suwayomi": {
"download": "Staženo",
"nondownload": "Non-Downloaded",
"read": "Přečteno",
"unread": "Nepřečteno",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Adresa",
"expires": "Vyprší",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Adresa",
"last_seen": "Naposledy viděno",
"status": "Stav",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Pozastaveno",
"pending": "Čeká",
"status": "Stav",
"updated": "Aktualizováno",
"cpu": "CPU",
"memory": "RAM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Zdravý",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Chybějící",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Problémy",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mnd",
"days": "d",
"hours": "t",
@ -120,7 +120,7 @@
"grid_power": "Gitter",
"home_power": "Forbrug",
"charge_power": "Oplader",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Download",
@ -309,6 +309,16 @@
"stopped": "Stoppede",
"total": "Total"
},
"suwayomi": {
"download": "Hentet",
"nondownload": "Non-Downloaded",
"read": "Læst",
"unread": "Ulæst",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Adresse",
"expires": "Udløber",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Navn",
"address": "Adresse",
"last_seen": "Sidst Set",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Navn",
"systems": "Systems",
"up": "Op",
"down": "Ned",
"paused": "Pause",
"pending": "Afventer",
"status": "Status",
"updated": "Opdateret",
"cpu": "CPU",
"memory": "RAM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Sund",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Mangler",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Problemer",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "Mo.",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Netz",
"home_power": "verbauch",
"charge_power": "Ladegerät",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Download",
@ -305,10 +305,20 @@
"ping": "Ping"
},
"portainer": {
"running": "Werden ausgeführt",
"running": "Wird ausgeführt",
"stopped": "Gestoppt",
"total": "Gesamt"
},
"suwayomi": {
"download": "Heruntergeladen",
"nondownload": "Nicht heruntergeladen",
"read": "Gelesen",
"unread": "Ungelesen",
"downloadedread": "Heruntergeladen & gelesen",
"downloadedunread": "Heruntergeladen & ungelesen",
"nondownloadedread": "Nicht heruntergeladen & gelesen",
"nondownloadedunread": "Nicht heruntergeladen & ungelesen"
},
"tailscale": {
"address": "Adresse",
"expires": "Läuft ab",
@ -953,5 +963,52 @@
"reminders": "Erinnerungen",
"nextReminder": "Nächste Erinnerung",
"none": "Keine"
},
"vikunja": {
"projects": "Aktive Projekte",
"tasks7d": "Diese Woche fällige Aufgaben",
"tasksOverdue": "Überfällige Aufgaben",
"tasksInProgress": "Aufgaben in Arbeit"
},
"headscale": {
"name": "Name",
"address": "Adresse",
"last_seen": "Zuletzt gesehen",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Name",
"systems": "Systeme",
"up": "Senden",
"down": "Empfangen",
"paused": "Pausiert",
"pending": "Ausstehend",
"status": "Status",
"updated": "Aktualisiert",
"cpu": "CPU",
"memory": "RAM",
"disk": "Festplatte",
"network": "NET"
},
"argocd": {
"apps": "Anwendungen",
"synced": "Synchronisiert",
"outOfSync": "Nicht mehr synchronisiert",
"healthy": "Fehlerfrei",
"degraded": "Beeinträchtigt",
"progressing": "Fortschritt",
"missing": "Fehlend",
"suspended": "Unterbrochen"
},
"spoolman": {
"loading": "Wird geladen"
},
"gitlab": {
"groups": "Gruppen",
"issues": "Probleme",
"merges": "Merge Requests",
"projects": "Projekte"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Πλέγμα",
"home_power": "Κατανάλωση",
"charge_power": "Φορτιστής",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Λήξη",
@ -309,6 +309,16 @@
"stopped": "Σταματημένο",
"total": "Σύνολο"
},
"suwayomi": {
"download": "Κατεβασμένο",
"nondownload": "Non-Downloaded",
"read": "Διαβάστηκε",
"unread": "Μη Διαβασμένο",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Διεύθυνση",
"expires": "Λήγει",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Όνομα",
"address": "Διεύθυνση",
"last_seen": "Τελευταία Σύνδεση",
"status": "Κατάσταση",
"online": "Συνδεδεμένοι",
"offline": "Εκτός σύνδεσης"
},
"beszel": {
"name": "Όνομα",
"systems": "Systems",
"up": "Ping up",
"down": "Ping down",
"paused": "Paused",
"pending": "Σε εκκρεμότητα",
"status": "Κατάσταση",
"updated": "Ενημερώθηκε",
"cpu": "Επεξεργαστής",
"memory": "Μνήμη",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Υγειές",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Απουσιάζει",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Grid",
"home_power": "Consumption",
"charge_power": "Charger",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Download",
@ -148,7 +148,9 @@
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
"externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs",
"activeUser": "Active devices",
"alerts": "Alerts",
"connectedGateway": "Connected gateways",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches"
},
"nzbget": {
@ -309,6 +311,16 @@
"stopped": "Stopped",
"total": "Total"
},
"suwayomi": {
"download": "Downloaded",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Unread",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Address",
"expires": "Expires",
@ -692,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -984,5 +1000,58 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Address",
"last_seen": "Last Seen",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "Pending",
"status": "Status",
"updated": "Updated",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Healthy",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Status",
"load": "Load",
"bcharge":"Battery Charge",
"timeleft":"Time Left"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Grid",
"home_power": "Consumption",
"charge_power": "Charger",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Elŝuti",
@ -309,6 +309,16 @@
"stopped": "Stopped",
"total": "Totalo"
},
"suwayomi": {
"download": "Downloaded",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Unread",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Address",
"expires": "Expires",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Address",
"last_seen": "Last Seen",
"status": "Stato",
"online": "Online",
"offline": "Malkonekta"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "Pending",
"status": "Stato",
"updated": "Updated",
"cpu": "Ĉefprocesoro",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Sana",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "me",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Red",
"home_power": "Consumo",
"charge_power": "Cargador",
"watt_hour": "vatio-hora (Wh)"
"kilowatt": "kW"
},
"flood": {
"download": "Descarga",
@ -309,6 +309,16 @@
"stopped": "Detenido",
"total": "Total"
},
"suwayomi": {
"download": "Descargado",
"nondownload": "No descargado",
"read": "Leer",
"unread": "Sin leer",
"downloadedread": "Descargado y leído",
"downloadedunread": "Descargado y no leído",
"nondownloadedread": "No descargado y leído",
"nondownloadedunread": "No descargado y no leído"
},
"tailscale": {
"address": "Dirección",
"expires": "Caduca en",
@ -953,5 +963,52 @@
"reminders": "Recordatorios",
"nextReminder": "Siguiente recordatorio",
"none": "Nada"
},
"vikunja": {
"projects": "Proyectos activos",
"tasks7d": "Tareas que vencen esta semana",
"tasksOverdue": "Tareas vencidas",
"tasksInProgress": "Tareas en progreso"
},
"headscale": {
"name": "Nombre",
"address": "Dirección",
"last_seen": "Visto por última vez",
"status": "Estado",
"online": "En línea",
"offline": "Desconectado"
},
"beszel": {
"name": "Nombre",
"systems": "Sistemas",
"up": "Activo",
"down": "Inactivo",
"paused": "Pausado",
"pending": "Pendiente",
"status": "Estado",
"updated": "Actualizado",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disco",
"network": "RED"
},
"argocd": {
"apps": "Apps",
"synced": "Sincronizado",
"outOfSync": "Desincronizado",
"healthy": "Saludable",
"degraded": "Degradado",
"progressing": "Progresando",
"missing": "Faltantes",
"suspended": "Suspendido"
},
"spoolman": {
"loading": "Cargando"
},
"gitlab": {
"groups": "Grupos",
"issues": "Números",
"merges": "Solicitudes de fusión",
"projects": "Proyectos"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Grid",
"home_power": "Consumption",
"charge_power": "Charger",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Download",
@ -309,6 +309,16 @@
"stopped": "Stopped",
"total": "Guztira"
},
"suwayomi": {
"download": "Downloaded",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Unread",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Address",
"expires": "Expires",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Address",
"last_seen": "Last Seen",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "Pending",
"status": "Status",
"updated": "Updated",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Osasuntsu",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Grid",
"home_power": "Consumption",
"charge_power": "Charger",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Download",
@ -309,6 +309,16 @@
"stopped": "Pysäytetty",
"total": "Yhteensä"
},
"suwayomi": {
"download": "Ladattu",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Unread",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Address",
"expires": "Expires",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Address",
"last_seen": "Last Seen",
"status": "Tila",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "Vireillä",
"status": "Tila",
"updated": "Updated",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Healthy",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "j",
"hours": "h",
@ -58,7 +58,7 @@
"wlan": "WLAN",
"devices": "Équipt.",
"lan_devices": "Équipt. LAN",
"wlan_devices": "Équipt. WLAN",
"wlan_devices": "Périphériques WLAN",
"lan_users": "Utilisateurs LAN",
"wlan_users": "Utilisateurs WLAN",
"up": "Up",
@ -120,7 +120,7 @@
"grid_power": "Grille",
"home_power": "Consommation",
"charge_power": "Chargeur",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Récep.",
@ -227,8 +227,8 @@
"seed": "Seed"
},
"develancacheui": {
"cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Cache Miss Bytes"
"cachehitbytes": "Octets de la mémoire cache",
"cachemissbytes": "Octets manquants du cache"
},
"downloadstation": {
"download": "Récep.",
@ -309,6 +309,16 @@
"stopped": "Arrêté",
"total": "Total"
},
"suwayomi": {
"download": "Téléchargé",
"nondownload": "Non téléchargé",
"read": "Lu",
"unread": "Non lu",
"downloadedread": "Téléchargé et lu",
"downloadedunread": "Téléchargé et non lu",
"nondownloadedread": "Non téléchargé et lu",
"nondownloadedunread": "Non téléchargé et non lu"
},
"tailscale": {
"address": "Adresse",
"expires": "Expire",
@ -325,15 +335,15 @@
},
"technitium": {
"totalQueries": "Requêtes",
"totalNoError": "Success",
"totalServerFailure": "Failures",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
"totalAuthoritative": "Authoritative",
"totalRecursive": "Recursive",
"totalCached": "Cached",
"totalNoError": "Effectué avec succès",
"totalServerFailure": "Échecs",
"totalNxDomain": "Domaines NX",
"totalRefused": "Refusés",
"totalAuthoritative": "Autoritaire",
"totalRecursive": "Récursif",
"totalCached": "Mis en cache",
"totalBlocked": "Bloqué",
"totalDropped": "Dropped",
"totalDropped": "Abandonné",
"totalClients": "Clients"
},
"tdarr": {
@ -756,7 +766,7 @@
"books": "Livres",
"authors": "Auteurs",
"categories": "Catégories",
"series": "Séries"
"series": "Séries TV"
},
"jdownloader": {
"downloadCount": "En attente",
@ -844,16 +854,16 @@
},
"romm": {
"platforms": "Plateformes",
"totalRoms": "Games",
"saves": "Saves",
"states": "States",
"screenshots": "Screenshots",
"totalfilesize": "Total Size"
"totalRoms": "Jeux",
"saves": "Sauvegardes",
"states": "États",
"screenshots": "Captures d'écran",
"totalfilesize": "Taille totale"
},
"mailcow": {
"domains": "Domaines",
"mailboxes": "Mailboxes",
"mails": "Mails",
"mailboxes": "Boites mail",
"mails": "Courriels",
"storage": "Stockage"
},
"netdata": {
@ -922,36 +932,83 @@
"upload": "Envoi"
},
"stocks": {
"stocks": "Stocks",
"loading": "Loading",
"open": "Open - US Market",
"closed": "Closed - US Market",
"invalidConfiguration": "Invalid Configuration"
"stocks": "Actions",
"loading": "Chargement",
"open": "Ouvert - Marché américain",
"closed": "Fermé - marché américain",
"invalidConfiguration": "Configuration invalide"
},
"frigate": {
"cameras": "Cameras",
"cameras": "Caméras",
"uptime": "Démarré depuis",
"version": "Version"
},
"linkwarden": {
"links": "Links",
"links": "Liens",
"collections": "Collections",
"tags": "Étiquettes"
},
"zabbix": {
"unclassified": "Not classified",
"unclassified": "Non classé",
"information": "Informations",
"warning": "Warning",
"average": "Average",
"high": "High",
"disaster": "Disaster"
"warning": "Attention",
"average": "Moyenne",
"high": "Élevé",
"disaster": ""
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
"vehicle": "Véhicule",
"vehicles": "Véhicules",
"serviceRecords": "Service d'enregistrements",
"reminders": "Rappels",
"nextReminder": "Prochain rappel",
"none": "Aucun"
},
"vikunja": {
"projects": "Projets actifs",
"tasks7d": "Tâches à faire cette semaine",
"tasksOverdue": "Tâches en retard",
"tasksInProgress": "Tâche en cours"
},
"headscale": {
"name": "Nom",
"address": "Adresse",
"last_seen": "Vu pour la dernière fois",
"status": "Statut",
"online": "En ligne",
"offline": "Hors ligne"
},
"beszel": {
"name": "Nom",
"systems": "Systèmes",
"up": "Up",
"down": "Down",
"paused": "En Pause",
"pending": "En attente",
"status": "Statut",
"updated": "Mis à jour",
"cpu": "CPU",
"memory": "MÉM",
"disk": "Disque",
"network": "Réseau"
},
"argocd": {
"apps": "Applications",
"synced": "Synchronisé",
"outOfSync": "Désynchronisé",
"healthy": "Fonctionnel",
"degraded": "Dégradé",
"progressing": "En cours",
"missing": "Manquant",
"suspended": "Suspendu"
},
"spoolman": {
"loading": "Chargement"
},
"gitlab": {
"groups": "Groupes",
"issues": "Anomalies",
"merges": "Demandes de fusion de branches",
"projects": "Projets"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Grid",
"home_power": "Consumption",
"charge_power": "Charger",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Download",
@ -309,6 +309,16 @@
"stopped": "נעצר",
"total": "סה\"כ"
},
"suwayomi": {
"download": "הורד",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Unread",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Address",
"expires": "Expires",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Address",
"last_seen": "Last Seen",
"status": "סטטוס",
"online": "Online",
"offline": "כבוי"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "ממתין",
"status": "סטטוס",
"updated": "Updated",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Healthy",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{value, date}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "माह",
"days": "d",
"hours": "घं.",
@ -120,7 +120,7 @@
"grid_power": "Grid",
"home_power": "Consumption",
"charge_power": "Charger",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Download",
@ -309,6 +309,16 @@
"stopped": "Stopped",
"total": "Total"
},
"suwayomi": {
"download": "Downloaded",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Unread",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Address",
"expires": "Expires",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Address",
"last_seen": "Last Seen",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "Pending",
"status": "Status",
"updated": "Updated",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Healthy",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mj",
"days": "dan(a)",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Raspored",
"home_power": "Potrošnja",
"charge_power": "Punjač",
"watt_hour": "Kilovat-sat"
"kilowatt": "kW"
},
"flood": {
"download": "Preuzimanje",
@ -309,6 +309,16 @@
"stopped": "Prekinuto",
"total": "Ukupno"
},
"suwayomi": {
"download": "Preuzeto",
"nondownload": "Non-Downloaded",
"read": "Pročitano",
"unread": "Nepročitano",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Adresa",
"expires": "Isteče",
@ -844,11 +854,11 @@
},
"romm": {
"platforms": "Platforme",
"totalRoms": "Games",
"totalRoms": "Igre",
"saves": "Saves",
"states": "States",
"screenshots": "Screenshots",
"totalfilesize": "Total Size"
"screenshots": "Snimke ekrana",
"totalfilesize": "Ukupna veličina"
},
"mailcow": {
"domains": "Domene",
@ -929,19 +939,19 @@
"invalidConfiguration": "Invalid Configuration"
},
"frigate": {
"cameras": "Cameras",
"cameras": "Kamere",
"uptime": "Vrijeme rada",
"version": "Verzija"
},
"linkwarden": {
"links": "Links",
"collections": "Collections",
"links": "Poveznice",
"collections": "Zbirke",
"tags": "Oznake"
},
"zabbix": {
"unclassified": "Not classified",
"information": "Informacije",
"warning": "Warning",
"warning": "Upozorenje",
"average": "Average",
"high": "High",
"disaster": "Disaster"
@ -950,8 +960,55 @@
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"reminders": "Podsjetnici",
"nextReminder": "Sljedeći podsjetnik",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Ime",
"address": "Adresa",
"last_seen": "Zadnje viđeno",
"status": "Stanje",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Ime",
"systems": "Systems",
"up": "Dostupno",
"down": "Nedostupno",
"paused": "Zaustavljeno",
"pending": "U tijeku",
"status": "Stanje",
"updated": "Aktualizirano",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Funkcionalno",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Nedostaje",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Problemi",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "hó",
"days": "n",
"hours": "ó",
@ -25,7 +25,7 @@
"api_error": "API Hiba",
"information": "Információ",
"status": "Státusz",
"url": "LINK",
"url": "URL",
"raw_error": "Nyers hiba",
"response_data": "Válaszadatok"
},
@ -120,7 +120,7 @@
"grid_power": "Rács",
"home_power": "Fogyasztás",
"charge_power": "Töltő",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Letöltés",
@ -227,8 +227,8 @@
"seed": "Seed"
},
"develancacheui": {
"cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Cache Miss Bytes"
"cachehitbytes": "Gyorsítótárban Sikeres Bitek",
"cachemissbytes": "Gyorsítótárban Hibás Bitek"
},
"downloadstation": {
"download": "Letöltés",
@ -309,6 +309,16 @@
"stopped": "Megállított",
"total": "Összes"
},
"suwayomi": {
"download": "Letöltött",
"nondownload": "Nem Letöltött",
"read": "Olvasott",
"unread": "Olvasatlan",
"downloadedread": "Letöltött & Olvasott",
"downloadedunread": "Letöltött & Olvasatlan",
"nondownloadedread": "Nem Letöltött & Olvasatlan",
"nondownloadedunread": "Nem Letöltött & Olvasatlan"
},
"tailscale": {
"address": "Cím",
"expires": "Lejár",
@ -325,15 +335,15 @@
},
"technitium": {
"totalQueries": "Lekérdezések",
"totalNoError": "Success",
"totalServerFailure": "Failures",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
"totalAuthoritative": "Authoritative",
"totalRecursive": "Recursive",
"totalCached": "Cached",
"totalNoError": "Sikerek",
"totalServerFailure": "Hibák",
"totalNxDomain": "NX Domainek",
"totalRefused": "Elutasított",
"totalAuthoritative": "Irányadó",
"totalRecursive": "Rekurzív",
"totalCached": "Gyorsítótárazott",
"totalBlocked": "Blokkolt",
"totalDropped": "Dropped",
"totalDropped": "Eldobott",
"totalClients": "Kliensek"
},
"tdarr": {
@ -443,7 +453,7 @@
"search": "Keresés",
"custom": "Egyedi",
"visit": "Megnéz",
"url": "LINK",
"url": "URL",
"searchsuggestion": "Javaslat"
},
"wmo": {
@ -844,16 +854,16 @@
},
"romm": {
"platforms": "Felület",
"totalRoms": "Games",
"saves": "Saves",
"states": "States",
"screenshots": "Screenshots",
"totalfilesize": "Total Size"
"totalRoms": "Játékok",
"saves": "Mentések",
"states": "Állapotok",
"screenshots": "Képernyőképek",
"totalfilesize": "Teljes méret"
},
"mailcow": {
"domains": "Domainek",
"mailboxes": "Mailboxes",
"mails": "Mails",
"mailboxes": "E-mail fiókok",
"mails": "Mailek",
"storage": "Tárhely"
},
"netdata": {
@ -902,7 +912,7 @@
},
"crowdsec": {
"alerts": "Riasztások",
"bans": "Bans"
"bans": "Kitiltások"
},
"wgeasy": {
"connected": "Csatlakozva",
@ -911,10 +921,10 @@
"total": "Összes"
},
"swagdashboard": {
"proxied": "Proxied",
"auth": "With Auth",
"outdated": "Outdated",
"banned": "Banned"
"proxied": "Proxyzott",
"auth": "Hitelesítéssel",
"outdated": "Elavult",
"banned": "Kitiltott"
},
"myspeed": {
"ping": "Ping",
@ -922,29 +932,29 @@
"upload": "Feltöltés"
},
"stocks": {
"stocks": "Stocks",
"loading": "Loading",
"open": "Open - US Market",
"closed": "Closed - US Market",
"invalidConfiguration": "Invalid Configuration"
"stocks": "Tőzsde",
"loading": "Betöltés",
"open": "Nyitva - US Piac",
"closed": "Zárva - US Piac",
"invalidConfiguration": "Érvénytelen konfiguráció"
},
"frigate": {
"cameras": "Cameras",
"cameras": "Kamerák",
"uptime": "Üzemidő",
"version": "Verzió"
},
"linkwarden": {
"links": "Links",
"collections": "Collections",
"links": "Linkek",
"collections": "Gyűjtemény",
"tags": "Címkék"
},
"zabbix": {
"unclassified": "Not classified",
"unclassified": "Nem titkosított",
"information": "Információ",
"warning": "Warning",
"average": "Average",
"high": "High",
"disaster": "Disaster"
"warning": "Figyelmeztetés",
"average": "Átlag",
"high": "Magas",
"disaster": "Katasztrófa"
},
"lubelogger": {
"vehicle": "Jármű",
@ -952,6 +962,53 @@
"serviceRecords": "Szolgáltatások nyílvántartása",
"reminders": "Emlékeztetők",
"nextReminder": "Következő emlékeztető",
"none": "None"
"none": "Semmi"
},
"vikunja": {
"projects": "Aktív Projektek",
"tasks7d": "Hátralévő feladatok a héten",
"tasksOverdue": "Lejárt feladatok",
"tasksInProgress": "Folyamatban levő Feladatok"
},
"headscale": {
"name": "Név",
"address": "Cím",
"last_seen": "Utoljára látott",
"status": "Státusz",
"online": "Csatlakozva",
"offline": "Nem elérhető"
},
"beszel": {
"name": "Név",
"systems": "Rendszerek",
"up": "Fel",
"down": "Le",
"paused": "Szünetel",
"pending": "Függőben",
"status": "Státusz",
"updated": "Frissített",
"cpu": "Processzor",
"memory": "RAM",
"disk": "Lemez",
"network": "Hálózat"
},
"argocd": {
"apps": "Alkalmazások",
"synced": "Szinkronizált",
"outOfSync": "Nincs szinkronban",
"healthy": "Egészséges",
"degraded": "Leépült",
"progressing": "Halad",
"missing": "Hiányzik",
"suspended": "Felfüggesztett"
},
"spoolman": {
"loading": "Betöltés"
},
"gitlab": {
"groups": "Csoportok",
"issues": "Problémák",
"merges": "Merge kérések",
"projects": "Projektek"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "bulan",
"days": "h",
"hours": "j",
@ -120,7 +120,7 @@
"grid_power": "Grid",
"home_power": "Konsumsi",
"charge_power": "Charger",
"watt_hour": "Watt/jam"
"kilowatt": "kW"
},
"flood": {
"download": "Unduh",
@ -309,6 +309,16 @@
"stopped": "Terhenti",
"total": "Total"
},
"suwayomi": {
"download": "Terunduh",
"nondownload": "Non-Downloaded",
"read": "Baca",
"unread": "Belum Dibaca",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Alamat",
"expires": "Kadaluarsa",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Nama",
"address": "Alamat",
"last_seen": "Terakhir terlihat",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Nama",
"systems": "Systems",
"up": "Hidup",
"down": "Mati",
"paused": "Pause",
"pending": "Pending",
"status": "Status",
"updated": "Terbarui",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Lancar",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Tidak Ditemukan",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Isu",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "g",
"hours": "o",
@ -120,7 +120,7 @@
"grid_power": "Griglia",
"home_power": "Consumo",
"charge_power": "Caricatore",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Download",
@ -309,6 +309,16 @@
"stopped": "Fermati",
"total": "Totale"
},
"suwayomi": {
"download": "Scaricato",
"nondownload": "Non-Downloaded",
"read": "Letti",
"unread": "Non letto",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Indirizzo",
"expires": "Scade",
@ -325,7 +335,7 @@
},
"technitium": {
"totalQueries": "Richieste",
"totalNoError": "Success",
"totalNoError": "Successo",
"totalServerFailure": "Failures",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
@ -580,7 +590,7 @@
"total": "Totale"
},
"peanut": {
"battery_charge": "Battery Charge",
"battery_charge": "Carica Batteria",
"ups_load": "Carico UPS",
"ups_status": "Stato UPS",
"online": "Online",
@ -844,7 +854,7 @@
},
"romm": {
"platforms": "Piattaforme",
"totalRoms": "Games",
"totalRoms": "Giochi",
"saves": "Saves",
"states": "States",
"screenshots": "Screenshots",
@ -880,7 +890,7 @@
"sceneDuration": "Durata Delle Scene",
"images": "Immagini",
"imageSize": "Dimensioni immagine",
"galleries": "Galleries",
"galleries": "Gallerie",
"performers": "Esecutori",
"studios": "Studi",
"movies": "Film",
@ -923,7 +933,7 @@
},
"stocks": {
"stocks": "Stocks",
"loading": "Loading",
"loading": "Caricamento",
"open": "Open - US Market",
"closed": "Closed - US Market",
"invalidConfiguration": "Invalid Configuration"
@ -934,8 +944,8 @@
"version": "Versione"
},
"linkwarden": {
"links": "Links",
"collections": "Collections",
"links": "Collegamenti",
"collections": "Raccolte",
"tags": "Tag"
},
"zabbix": {
@ -947,11 +957,58 @@
"disaster": "Disaster"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"vehicle": "Veicolo",
"vehicles": "Veicoli",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
"reminders": "Promemoria",
"nextReminder": "Promemoria Seguente",
"none": "Nessuno"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Nome",
"address": "Indirizzo",
"last_seen": "Ultima visualizzazione",
"status": "Stato",
"online": "Online",
"offline": "Non in linea"
},
"beszel": {
"name": "Nome",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "In Pausa",
"pending": "In attesa",
"status": "Stato",
"updated": "Aggiornato",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Sano",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Mancanti",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Caricamento"
},
"gitlab": {
"groups": "Groups",
"issues": "Problemi",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "月",
"days": "日",
"hours": "時間",
@ -120,7 +120,7 @@
"grid_power": "グリッド",
"home_power": "消費",
"charge_power": "チャージャー",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "ダウンロード",
@ -309,6 +309,16 @@
"stopped": "停止中",
"total": "合計"
},
"suwayomi": {
"download": "ダウンロード",
"nondownload": "Non-Downloaded",
"read": "既読",
"unread": "未読",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "アドレス",
"expires": "失効",
@ -794,7 +804,7 @@
"ping": "Ping"
},
"urbackup": {
"ok": "はい",
"ok": "正常",
"errored": "エラー",
"noRecent": "期限切れ",
"totalUsed": "使用済みストレージ"
@ -947,11 +957,58 @@
"disaster": "災害"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicle": "車両",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "名前",
"address": "アドレス",
"last_seen": "最終日時",
"status": "状態",
"online": "オンライン",
"offline": "オフライン"
},
"beszel": {
"name": "名前",
"systems": "Systems",
"up": "稼働",
"down": "下へ",
"paused": "一時停止中",
"pending": "保留中",
"status": "状態",
"updated": "更新済",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "正常",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "不明",
"suspended": "Suspended"
},
"spoolman": {
"loading": "読み込み中"
},
"gitlab": {
"groups": "Groups",
"issues": "課題",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "눈금",
"home_power": "Consumption",
"charge_power": "Charger",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "다운로드",
@ -309,6 +309,16 @@
"stopped": "중지",
"total": "총합"
},
"suwayomi": {
"download": "다운로드됨",
"nondownload": "Non-Downloaded",
"read": "읽음",
"unread": "미열람",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "주소",
"expires": "만료",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "이름",
"address": "주소",
"last_seen": "마지막 접속",
"status": "상태",
"online": "온라인",
"offline": "중지"
},
"beszel": {
"name": "이름",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "대기 중",
"status": "상태",
"updated": "Updated",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "좋음",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "빠짐",
"suspended": "Suspended"
},
"spoolman": {
"loading": "로드 중"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Grid",
"home_power": "Consumption",
"charge_power": "Charger",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Lejupielāde",
@ -309,6 +309,16 @@
"stopped": "Stopped",
"total": "Kopā"
},
"suwayomi": {
"download": "Lejupielādēts",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Unread",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Address",
"expires": "Expires",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Address",
"last_seen": "Last Seen",
"status": "Statuss",
"online": "Online",
"offline": "Bezsaistē"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "Pending",
"status": "Statuss",
"updated": "Updated",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Healthy",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "bln",
"days": "h",
"hours": "j",
@ -120,7 +120,7 @@
"grid_power": "Grid",
"home_power": "Penggunaan",
"charge_power": "Pengecas",
"watt_hour": "Wj"
"kilowatt": "kW"
},
"flood": {
"download": "Muat turun",
@ -309,6 +309,16 @@
"stopped": "Terhenti",
"total": "Jumlah"
},
"suwayomi": {
"download": "Telah Muat Turun",
"nondownload": "Non-Downloaded",
"read": "Baca",
"unread": "Belum dibaca",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Address",
"expires": "Expires",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Nama",
"address": "Address",
"last_seen": "Last Seen",
"status": "Status",
"online": "Dalam Talian",
"offline": "Luar talian"
},
"beszel": {
"name": "Nama",
"systems": "Systems",
"up": "Hidup",
"down": "Mati",
"paused": "Tangguh",
"pending": "Tertunda",
"status": "Status",
"updated": "Dikemaskini",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Sihat",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Hilang",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mnd",
"days": "d",
"hours": "u",
@ -120,7 +120,7 @@
"grid_power": "Netstroom",
"home_power": "Consumptie",
"charge_power": "Oplader",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Download",
@ -309,6 +309,16 @@
"stopped": "Gestopt",
"total": "Totaal"
},
"suwayomi": {
"download": "Gedownload",
"nondownload": "Niet gedownload",
"read": "Gelezen",
"unread": "Ongelezen",
"downloadedread": "Gedownload & gelezen",
"downloadedunread": "Gedownload & ongelezen",
"nondownloadedread": "Niet-gedownload & gelezen",
"nondownloadedunread": "Niet-gedownload & ongelezen"
},
"tailscale": {
"address": "Adres",
"expires": "Verloopt",
@ -852,7 +862,7 @@
},
"mailcow": {
"domains": "Domeinen",
"mailboxes": "Mailboxes",
"mailboxes": "Mailboxen",
"mails": "Mails",
"storage": "Opslag"
},
@ -947,11 +957,58 @@
"disaster": "Disaster"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
"vehicle": "Voertuig",
"vehicles": "Voertuigen",
"serviceRecords": "Service Historie",
"reminders": "Herinneringen",
"nextReminder": "Volgende Herinnering",
"none": "Geen"
},
"vikunja": {
"projects": "Actieve Projecten",
"tasks7d": "Taken Die Deze Week Af Moeten Zijn",
"tasksOverdue": "Achterstallige Taken",
"tasksInProgress": "Taken In Uitvoering"
},
"headscale": {
"name": "Naam",
"address": "Adres",
"last_seen": "Laatst Gezien",
"status": "Status",
"online": "Bereikbaar",
"offline": "Offline"
},
"beszel": {
"name": "Naam",
"systems": "Systemen",
"up": "Online",
"down": "Offline",
"paused": "Gepauzeerd",
"pending": "In afwachting",
"status": "Status",
"updated": "Bijgewerkt",
"cpu": "CPU",
"memory": "GEH",
"disk": "Schijf",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Gesynchroniseerd",
"outOfSync": "Niet gesynchroniseerd",
"healthy": "Gezond",
"degraded": "Gedegradeerd",
"progressing": "Doorvoeren",
"missing": "Ontbreekt",
"suspended": "Onderbroken"
},
"spoolman": {
"loading": "Laden"
},
"gitlab": {
"groups": "Groepen",
"issues": "Problemen",
"merges": "Merge Verzoeken",
"projects": "Projecten"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mnd",
"days": "d",
"hours": "t",
@ -120,7 +120,7 @@
"grid_power": "Nett",
"home_power": "Forbruk",
"charge_power": "Lader",
"watt_hour": "W/t"
"kilowatt": "kW"
},
"flood": {
"download": "Last ned",
@ -309,6 +309,16 @@
"stopped": "Stoppet",
"total": "Totalt"
},
"suwayomi": {
"download": "Nedlastede",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Ulest",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Adresse",
"expires": "Utgår",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Navn",
"address": "Adresse",
"last_seen": "Sist sett",
"status": "Status",
"online": "På nett",
"offline": "Frakoblet"
},
"beszel": {
"name": "Navn",
"systems": "Systems",
"up": "Oppe",
"down": "Nede",
"paused": "Pauset",
"pending": "Ventende",
"status": "Status",
"updated": "Oppdatert",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Friskt",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Mangler",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mc",
"days": "d",
"hours": "g",
@ -120,7 +120,7 @@
"grid_power": "Siatka",
"home_power": "Zużycie",
"charge_power": "Ładowarka",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Pobieranie",
@ -309,6 +309,16 @@
"stopped": "Zatrzymane",
"total": "Całkowite"
},
"suwayomi": {
"download": "Pobrano",
"nondownload": "Niepobrane",
"read": "Przeczytane",
"unread": "Nieprzeczytane",
"downloadedread": "Pobrane i przeczytane",
"downloadedunread": "Pobrane i nieprzeczytane",
"nondownloadedread": "Niepobrane i przeczytane",
"nondownloadedunread": "Niepobrane i nieprzeczytane"
},
"tailscale": {
"address": "Adres",
"expires": "Wygasa za",
@ -325,15 +335,15 @@
},
"technitium": {
"totalQueries": "Zapytania",
"totalNoError": "Success",
"totalServerFailure": "Failures",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
"totalAuthoritative": "Authoritative",
"totalRecursive": "Recursive",
"totalCached": "Cached",
"totalNoError": "Sukces",
"totalServerFailure": "Porażki",
"totalNxDomain": "Domeny NX",
"totalRefused": "Odrzucone",
"totalAuthoritative": "Autorytatywne",
"totalRecursive": "Rekursywne",
"totalCached": "Zbuforowane",
"totalBlocked": "Zablokowane",
"totalDropped": "Dropped",
"totalDropped": "Upuszczone",
"totalClients": "Klienci"
},
"tdarr": {
@ -844,16 +854,16 @@
},
"romm": {
"platforms": "Platformy",
"totalRoms": "Games",
"saves": "Saves",
"states": "States",
"screenshots": "Screenshots",
"totalfilesize": "Total Size"
"totalRoms": "Gry",
"saves": "Zapisy",
"states": "Stany",
"screenshots": "Screeny",
"totalfilesize": "Rozmiar całkowity"
},
"mailcow": {
"domains": "Domeny",
"mailboxes": "Mailboxes",
"mails": "Mails",
"mailboxes": "Skrzynki",
"mails": "Poczta",
"storage": "Pamięć"
},
"netdata": {
@ -939,19 +949,66 @@
"tags": "Tagi"
},
"zabbix": {
"unclassified": "Not classified",
"unclassified": "Niezaklasyfikowane",
"information": "Informacje",
"warning": "Warning",
"average": "Average",
"high": "High",
"disaster": "Disaster"
"warning": "Ostrzeżenie",
"average": "Średnia",
"high": "Wysokie",
"disaster": "Katastrofa"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
"vehicle": "Pojazd",
"vehicles": "Pojazdy",
"serviceRecords": "Wpisy serwisowe",
"reminders": "Przypomnienia",
"nextReminder": "Następne przypomnienie",
"none": "Brak"
},
"vikunja": {
"projects": "Aktywne Projekty",
"tasks7d": "Zadania w tym tygodniu",
"tasksOverdue": "Zaległe zadania",
"tasksInProgress": "Zadania w toku"
},
"headscale": {
"name": "Nazwa",
"address": "Adres",
"last_seen": "Ostatnio dostępny",
"status": "Stan",
"online": "Dostępny",
"offline": "Nieosiągalny"
},
"beszel": {
"name": "Nazwa",
"systems": "Systemy",
"up": "Dostępny",
"down": "Niedostępny",
"paused": "Zatrzymane",
"pending": "Oczekiwane",
"status": "Stan",
"updated": "Zaktualizowane",
"cpu": "Procesor",
"memory": "RAM",
"disk": "Dysk",
"network": "NET"
},
"argocd": {
"apps": "Aplikacje",
"synced": "Synchronizowane",
"outOfSync": "Bez synchronizacji",
"healthy": "Zdrowy",
"degraded": "Zdegradowane",
"progressing": "Postępujące",
"missing": "Brakujące",
"suspended": "Zawieszone"
},
"spoolman": {
"loading": "Wczytywanie"
},
"gitlab": {
"groups": "Grupy",
"issues": "Zgłoszenia",
"merges": "Żądania scaleń",
"projects": "Projekty"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mês",
"days": "d",
"hours": "h",
@ -30,9 +30,9 @@
"response_data": "Dados da Resposta"
},
"weather": {
"current": "Localização atual",
"current": "Localização actual",
"allow": "Clique para permitir",
"updating": "Atualizando",
"updating": "A actualizar",
"wait": "Por favor aguarde"
},
"search": {
@ -79,7 +79,7 @@
"starting": "A iniciar",
"unhealthy": "Não-saudável",
"not_found": "Não Encontrado",
"exited": "Encerrado",
"exited": "Saiu",
"partial": "Parcial"
},
"ping": {
@ -117,10 +117,10 @@
"evcc": {
"pv_power": "Produção",
"battery_soc": "Bateria",
"grid_power": "Grade",
"grid_power": "Grelha",
"home_power": "Consumo",
"charge_power": "Carregador",
"watt_hour": "Kw"
"kilowatt": "kW"
},
"flood": {
"download": "Descarregar",
@ -129,16 +129,16 @@
"seed": "Semente"
},
"freshrss": {
"subscriptions": "Assinaturas",
"subscriptions": "Subscrições",
"unread": "Não lida"
},
"fritzbox": {
"connectionStatus": "Estado",
"connectionStatusUnconfigured": "Não configurado",
"connectionStatusUnconfigured": "Desconfigurado",
"connectionStatusConnecting": "A conectar",
"connectionStatusAuthenticating": "Autenticando",
"connectionStatusAuthenticating": "A Autenticar",
"connectionStatusPendingDisconnect": "Desconexão pendente",
"connectionStatusDisconnecting": "Desconectando",
"connectionStatusDisconnecting": "A Desconectar",
"connectionStatusDisconnected": "Desconectado",
"connectionStatusConnected": "Conectado",
"uptime": "Ligado",
@ -148,19 +148,19 @@
"up": "Up",
"received": "Recebido",
"sent": "Enviado",
"externalIPAddress": "Endereço IP externo"
"externalIPAddress": "Endereço IP Externo"
},
"caddy": {
"upstreams": "Upstreams",
"requests": "Solicitações atuais",
"requests_failed": "Solicitações com falha"
"requests": "Solicitações actuais",
"requests_failed": "Solicitações falhadas"
},
"changedetectionio": {
"totalObserved": "Total Observado",
"diffsDetected": "Diferenças Detetadas"
"diffsDetected": "Diferenças Detectadas"
},
"channelsdvrserver": {
"shows": "Shows",
"shows": "Séries",
"recordings": "Gravações",
"scheduled": "Agendado",
"passes": "Passes"
@ -170,7 +170,7 @@
"transcoding": "Transcodificação",
"bitrate": "Taxa de bits",
"no_active": "Sem streams ativas",
"plex_connection_error": "Verifique a conexão Plex"
"plex_connection_error": "Verifique a conexão do Plex"
},
"omada": {
"connectedAp": "APs Ligados",
@ -182,10 +182,10 @@
"nzbget": {
"rate": "Taxa",
"remaining": "Restante",
"downloaded": "Baixado"
"downloaded": "Descarregado"
},
"plex": {
"streams": "Streams Ativas",
"streams": "Streams Activas",
"albums": "Álbuns",
"movies": "Filmes",
"tv": "Series de TV"
@ -193,10 +193,10 @@
"sabnzbd": {
"rate": "Taxa",
"queue": "Fila",
"timeleft": "Tempo restante"
"timeleft": "Tempo Restante"
},
"rutorrent": {
"active": "Ativo",
"active": "Activo",
"upload": "Carregar",
"download": "Descarregar"
},
@ -214,8 +214,8 @@
},
"qnap": {
"cpuUsage": "Utilização do CPU",
"memUsage": "Utilização de memória",
"systemTempC": "Temperatura do sistema",
"memUsage": "Utilização de Memória",
"systemTempC": "Temperatura do Sistema",
"poolUsage": "Uso de Banco",
"volumeUsage": "Uso do Volume",
"invalid": "Inválido"
@ -227,8 +227,8 @@
"seed": "Semente"
},
"develancacheui": {
"cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Cache Miss Bytes"
"cachehitbytes": "Bytes de Acerto na Memória transitória",
"cachemissbytes": "Bytes de Falha de Memória transitória"
},
"downloadstation": {
"download": "Descarregar",
@ -237,54 +237,54 @@
"seed": "Semente"
},
"sonarr": {
"wanted": "Desejada",
"queued": "Em fila",
"wanted": "Desejados",
"queued": "Em fila de espera",
"series": "Séries",
"queue": "Fila",
"unknown": "Desconhecido"
},
"radarr": {
"wanted": "Desejada",
"missing": "Faltando",
"queued": "Em fila",
"wanted": "Desejados",
"missing": "Em falta",
"queued": "Em fila de espera",
"movies": "Filmes",
"queue": "Fila",
"unknown": "Desconhecido"
},
"lidarr": {
"wanted": "Desejada",
"queued": "Em fila",
"wanted": "Desejados",
"queued": "Em fila de espera",
"artists": "Artistas"
},
"readarr": {
"wanted": "Desejada",
"queued": "Em fila",
"wanted": "Desejados",
"queued": "Em fila de espera",
"books": "Livros"
},
"bazarr": {
"missingEpisodes": "Episódios Faltantes",
"missingMovies": "Filmes Faltantes"
"missingEpisodes": "Episódios em Falta",
"missingMovies": "Filmes em Falta"
},
"ombi": {
"pending": "Pendente",
"approved": "Aprovada",
"approved": "Aprovado",
"available": "Disponível"
},
"jellyseerr": {
"pending": "Pendente",
"approved": "Aprovada",
"approved": "Aprovado",
"available": "Disponível"
},
"overseerr": {
"pending": "Pendente",
"processing": "Processando",
"approved": "Aprovada",
"processing": "A Processar",
"approved": "Aprovado",
"available": "Disponível"
},
"netalertx": {
"total": "Total",
"connected": "Conectado",
"new_devices": "Novos dispositivos",
"new_devices": "Novos Dispositivos",
"down_alerts": "Alertas de Falha"
},
"pihole": {
@ -309,11 +309,21 @@
"stopped": "Parado",
"total": "Total"
},
"suwayomi": {
"download": "Descarregado",
"nondownload": "Non-Downloaded",
"read": "Lido",
"unread": "Não lida",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Endereço",
"expires": "Expira",
"never": "Nunca",
"last_seen": "Última vez visto",
"last_seen": "Última Vez Visto",
"now": "Agora",
"years": "{{number}}y",
"weeks": "{{number}}w",
@ -325,15 +335,15 @@
},
"technitium": {
"totalQueries": "Consultas",
"totalNoError": "Success",
"totalServerFailure": "Failures",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
"totalAuthoritative": "Authoritative",
"totalRecursive": "Recursive",
"totalCached": "Cached",
"totalNoError": "Sucesso",
"totalServerFailure": "Falhas",
"totalNxDomain": "Domínios NX",
"totalRefused": "Recusado",
"totalAuthoritative": "Autoritário",
"totalRecursive": "Recursivo",
"totalCached": "Em Memória transitória",
"totalBlocked": "Bloqueado",
"totalDropped": "Dropped",
"totalDropped": "Perdidos",
"totalClients": "Clientes"
},
"tdarr": {
@ -345,19 +355,19 @@
"traefik": {
"routers": "Roteadores",
"services": "Serviços",
"middleware": "Software Middleware"
"middleware": "Middleware"
},
"navidrome": {
"nothing_streaming": "Sem streams ativas",
"please_wait": "Por favor aguarde"
"please_wait": "Por Favor, Aguarde"
},
"npm": {
"enabled": "Ativo",
"enabled": "Activo",
"disabled": "Desabilitado",
"total": "Total"
},
"coinmarketcap": {
"configure": "Configurar uma ou mais moedas",
"configure": "Configure uma ou mais criptomoedas para rastrear",
"1hour": "1 Hora",
"1day": "1 Dia",
"7days": "7 Dias",
@ -391,8 +401,8 @@
"domain_count": "Domínios"
},
"medusa": {
"wanted": "Desejada",
"queued": "Em fila",
"wanted": "Desejados",
"queued": "Em fila de espera",
"series": "Séries"
},
"minecraft": {
@ -408,8 +418,8 @@
},
"authentik": {
"users": "Utilizadores",
"loginsLast24H": "Inícios de sessão (24h)",
"failedLoginsLast24H": "Inícios de sessão falhados (24h)"
"loginsLast24H": "Inícios de Sessão (24h)",
"failedLoginsLast24H": "Inícios de Sessão Falhados (24h)"
},
"proxmox": {
"mem": "MEM",
@ -440,7 +450,7 @@
"quicklaunch": {
"bookmark": "Marcador",
"service": "Serviço",
"search": "Busca",
"search": "Pesquisa",
"custom": "Personalizado",
"visit": "Visitar",
"url": "Endereço URL",
@ -449,7 +459,7 @@
"wmo": {
"0-day": "Solarengo",
"0-night": "Limpo",
"1-day": "Maioritariamente ensolarado",
"1-day": "Maioritariamente Solarengo",
"1-night": "Maioritariamente Limpo",
"2-day": "Parcialmente Nublado",
"2-night": "Parcialmente Nublado",
@ -487,16 +497,16 @@
"75-night": "Neve forte",
"77-day": "Grãos de Neve",
"77-night": "Grãos de Neve",
"80-day": "Neve fraca",
"80-night": "Neve fraca",
"80-day": "Chuviscos Leves",
"80-night": "Chuviscos Leves",
"81-day": "Chuviscos",
"81-night": "Chuviscos",
"82-day": "Chuviscos fortes",
"82-night": "Chuviscos fortes",
"85-day": "Precipitação de Neve",
"85-night": "Precipitação de Neve",
"86-day": "Precipitação de Neve",
"86-night": "Precipitação de Neve",
"85-day": "Chuva de Neve",
"85-night": "Chuva de Neve",
"86-day": "Chuva de Neve",
"86-night": "Chuva de Neve",
"95-day": "Trovoada",
"95-night": "Trovoada",
"96-day": "Trovoada com granizo",
@ -506,10 +516,10 @@
},
"homebridge": {
"available_update": "Sistema",
"updates": "Atualizações",
"updates": "Actualizações",
"update_available": "Atualização disponível",
"up_to_date": "Atualizado",
"child_bridges": "Pontes Filhas",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"pending": "Pendente",
@ -518,12 +528,12 @@
"healthchecks": {
"new": "Novo",
"up": "Up",
"grace": "Em Período Gratuito",
"grace": "Em Período de Graça",
"down": "Down",
"paused": "Pausado",
"paused": "Pausa",
"status": "Estado",
"last_ping": "Ultimo Ping",
"never": "Nenhum ping ainda"
"never": "Nenhum Ping ainda"
},
"watchtower": {
"containers_scanned": "Verificado",
@ -531,7 +541,7 @@
"containers_failed": "Falhou"
},
"autobrr": {
"approvedPushes": "Aprovada",
"approvedPushes": "Aprovado",
"rejectedPushes": "Rejeitado",
"filters": "Filtros",
"indexers": "Indexadores"
@ -549,7 +559,7 @@
},
"pyload": {
"speed": "Velocidade",
"active": "Ativo",
"active": "Activo",
"queue": "Fila",
"total": "Total"
},
@ -588,8 +598,8 @@
"low_battery": "Bateria Fraca"
},
"nextdns": {
"wait": "Por favor aguarde",
"no_devices": "Nenhum dado do dispositivo recebido"
"wait": "Por Favor, Aguarde",
"no_devices": "Nenhum Dado do Dispositivo Recebido"
},
"mikrotik": {
"cpuLoad": "Carga do CPU",
@ -599,7 +609,7 @@
},
"xteve": {
"streams_all": "Todos os Streams",
"streams_active": "Streams Ativas",
"streams_active": "Streams Activas",
"streams_xepg": "Canais XEPG"
},
"opendtu": {
@ -637,7 +647,7 @@
"up": "Up",
"down": "Down",
"temp": "Temp",
"disk": "Utilização",
"disk": "Utilização do Disco",
"wanIP": "WAN IP"
},
"proxmoxbackupserver": {
@ -678,17 +688,17 @@
"mylar": {
"series": "Séries",
"issues": "Problemas",
"wanted": "Desejada"
"wanted": "Desejados"
},
"photoprism": {
"albums": "Álbuns",
"photos": "Fotos",
"videos": "Vídeos",
"people": "Pessoa"
"people": "Pessoas"
},
"fileflows": {
"queue": "Fila",
"processing": "Processando",
"processing": "A Processar",
"processed": "Processado",
"time": "Hora"
},
@ -696,13 +706,13 @@
"dashboards": "Painéis",
"datasources": "Origem de Dados",
"totalalerts": "Total Alertas",
"alertstriggered": "Alertas Disparados"
"alertstriggered": "Alertas Desencadeados"
},
"nextcloud": {
"cpuload": "Carga de CPU",
"memoryusage": "Memória Utilizada",
"freespace": "Espaço Livre",
"activeusers": "Utilizadores Ativos",
"activeusers": "Utilizadores Activos",
"numfiles": "Ficheiros",
"numshares": "Itens partilhados"
},
@ -724,7 +734,7 @@
},
"prometheus": {
"targets_up": "Alvo ativo",
"targets_down": "Alvo inativo",
"targets_down": "Alvo Inactivo",
"targets_total": "Total de Alvos"
},
"gatus": {
@ -735,7 +745,7 @@
"ghostfolio": {
"gross_percent_today": "Hoje",
"gross_percent_1y": "Um ano",
"gross_percent_max": "Todo o tempo"
"gross_percent_max": "Desde Sempre"
},
"audiobookshelf": {
"podcasts": "Podcasts",
@ -750,7 +760,7 @@
},
"whatsupdocker": {
"monitoring": "A monitorizar",
"updates": "Atualizações"
"updates": "Actualizações"
},
"calibreweb": {
"books": "Livros",
@ -772,14 +782,14 @@
"result": "Resultado",
"status": "Estado",
"buildId": "ID da compilação",
"succeeded": "Com êxito",
"succeeded": "Bem sucedido",
"notStarted": "Não Iniciado",
"failed": "Falhou",
"canceled": "Cancelado",
"inProgress": "Em progresso",
"totalPrs": "Total de PRs",
"myPrs": "Meus PRs",
"approved": "Aprovada"
"myPrs": "Os Meus PRs",
"approved": "Aprovado"
},
"gamedig": {
"status": "Estado",
@ -787,7 +797,7 @@
"offline": "Desligado",
"name": "Nome",
"map": "Mapa",
"currentPlayers": "Jogadores atuais",
"currentPlayers": "Jogadores actuais",
"players": "Reprodutores",
"maxPlayers": "Máximo de Jogadores",
"bots": "Bots",
@ -796,7 +806,7 @@
"urbackup": {
"ok": "Ok",
"errored": "Erros",
"noRecent": "Desatualizado",
"noRecent": "Desactualizado",
"totalUsed": "Espaço utilizado"
},
"mealie": {
@ -806,7 +816,7 @@
"tags": "Etiquetas"
},
"openmediavault": {
"downloading": "A transferir",
"downloading": "A descarregar",
"total": "Total",
"running": "A correr",
"stopped": "Parado",
@ -824,14 +834,14 @@
"uptimerobot": {
"status": "Estado",
"uptime": "Ligado",
"lastDown": "Última inatividade",
"downDuration": "Duração de inatividade",
"lastDown": "Última Inactividade",
"downDuration": "Duração de Inactividade",
"sitesUp": "Sites no Ar",
"sitesDown": "Sites Fora do Ar",
"paused": "Pausado",
"paused": "Pausa",
"notyetchecked": "Ainda não verificado",
"up": "Up",
"seemsdown": "Parece Baixo",
"seemsdown": "Parece em Baixo",
"down": "Down",
"unknown": "Desconhecido"
},
@ -844,16 +854,16 @@
},
"romm": {
"platforms": "Plataformas",
"totalRoms": "Games",
"totalRoms": "Jogos",
"saves": "Saves",
"states": "States",
"states": "Estados",
"screenshots": "Screenshots",
"totalfilesize": "Total Size"
"totalfilesize": "Tamanho Total"
},
"mailcow": {
"domains": "Domínios",
"mailboxes": "Mailboxes",
"mails": "Mails",
"mailboxes": "Caixas de Correio",
"mails": "E-mails",
"storage": "Armazenamento"
},
"netdata": {
@ -881,7 +891,7 @@
"images": "Imagens",
"imageSize": "Tamanho das imagens",
"galleries": "Galerias",
"performers": "Artistas",
"performers": "Artistas de palco",
"studios": "Estúdios",
"movies": "Filmes",
"tags": "Etiquetas",
@ -906,14 +916,14 @@
},
"wgeasy": {
"connected": "Conectado",
"enabled": "Ativo",
"enabled": "Activo",
"disabled": "Desabilitado",
"total": "Total"
},
"swagdashboard": {
"proxied": "Com proxy",
"auth": "Com Autorização",
"outdated": "Desatualizado",
"outdated": "Desactualizado",
"banned": "Banido"
},
"myspeed": {
@ -922,36 +932,83 @@
"upload": "Carregar"
},
"stocks": {
"stocks": "Ações",
"loading": "Carregando",
"stocks": "Acções",
"loading": "A carregar",
"open": "Aberto - Mercado dos EUA",
"closed": "Fechado - Mercado dos EUA",
"invalidConfiguration": "Configuração inválida"
"invalidConfiguration": "Configuração Inválida"
},
"frigate": {
"cameras": "Câmaras",
"cameras": "Câmeras",
"uptime": "Ligado",
"version": "Versão"
},
"linkwarden": {
"links": "Links",
"collections": "Collections",
"collections": "Colecções",
"tags": "Etiquetas"
},
"zabbix": {
"unclassified": "Not classified",
"unclassified": "Não Classificados",
"information": "Informação",
"warning": "Warning",
"average": "Average",
"high": "High",
"disaster": "Disaster"
"warning": "Avisos",
"average": "Média",
"high": "Elevado",
"disaster": "Desastre"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
"vehicle": "Veículo",
"vehicles": "Veículos",
"serviceRecords": "Registros de Serviço",
"reminders": "Lembretes",
"nextReminder": "Próximo Lembrete",
"none": "Nenhum"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Nome",
"address": "Endereço",
"last_seen": "Última Vez Visto",
"status": "Estado",
"online": "Online",
"offline": "Desligado"
},
"beszel": {
"name": "Nome",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Pausa",
"pending": "Pendente",
"status": "Estado",
"updated": "Atualizado",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Saudável",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Em falta",
"suspended": "Suspended"
},
"spoolman": {
"loading": "A carregar"
},
"gitlab": {
"groups": "Groups",
"issues": "Problemas",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "M",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Grade",
"home_power": "Consumo",
"charge_power": "Carregador",
"watt_hour": "Kw"
"kilowatt": "kW"
},
"flood": {
"download": "Descarregar",
@ -309,6 +309,16 @@
"stopped": "Parado",
"total": "Total"
},
"suwayomi": {
"download": "Baixado",
"nondownload": "Non-Downloaded",
"read": "Lido",
"unread": "Não lida",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Endereço",
"expires": "Expira em",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Nome",
"address": "Endereço",
"last_seen": "Visto por último",
"status": "Status",
"online": "Disponível",
"offline": "Offline"
},
"beszel": {
"name": "Nome",
"systems": "Systems",
"up": "Ativo",
"down": "Inativo",
"paused": "Pausado",
"pending": "Pendente",
"status": "Status",
"updated": "Atualizado",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Saudável",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Faltando",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Carregando"
},
"gitlab": {
"groups": "Groups",
"issues": "Problemas",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Grilă",
"home_power": "Consum",
"charge_power": "Încărcător",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Descarcă",
@ -309,6 +309,16 @@
"stopped": "Oprit",
"total": "Total"
},
"suwayomi": {
"download": "Descărcat",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Necitit",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Address",
"expires": "Expires",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Address",
"last_seen": "Last Seen",
"status": "Stare",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Sus",
"down": "Jos",
"paused": "Paused",
"pending": "În așteptare",
"status": "Stare",
"updated": "Updated",
"cpu": "Procesor",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Sănătos",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "мес",
"days": "дней",
"hours": "час",
@ -120,7 +120,7 @@
"grid_power": "Сетка",
"home_power": "Потребление",
"charge_power": "Зарядка",
"watt_hour": "Вт"
"kilowatt": "кВт"
},
"flood": {
"download": "Скачивание",
@ -227,8 +227,8 @@
"seed": "Сид"
},
"develancacheui": {
"cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Cache Miss Bytes"
"cachehitbytes": "Хит байты кэша",
"cachemissbytes": "Мисс байты кэша"
},
"downloadstation": {
"download": "Скачивание",
@ -284,7 +284,7 @@
"netalertx": {
"total": "Всего",
"connected": "Подключено",
"new_devices": "Новое устройство",
"new_devices": "Новые устройства",
"down_alerts": "Оповещение о недоступности"
},
"pihole": {
@ -309,6 +309,16 @@
"stopped": "Остановлено",
"total": "Всего"
},
"suwayomi": {
"download": "Загружено",
"nondownload": "Незагруженные",
"read": "Прочитано",
"unread": "Не прочитано",
"downloadedread": "Загруженные и прочитанные",
"downloadedunread": "Загруженные и непрочитанные",
"nondownloadedread": "Незагруженные и прочитанные",
"nondownloadedunread": "Незагруженные и непрочитанные"
},
"tailscale": {
"address": "Адрес",
"expires": "Истекает",
@ -325,15 +335,15 @@
},
"technitium": {
"totalQueries": "Запросы",
"totalNoError": "Success",
"totalServerFailure": "Failures",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
"totalAuthoritative": "Authoritative",
"totalRecursive": "Recursive",
"totalCached": "Cached",
"totalNoError": "Успешные",
"totalServerFailure": "Ошибки",
"totalNxDomain": "NX домены",
"totalRefused": "Отказано",
"totalAuthoritative": "Авторитетные",
"totalRecursive": "Рекурсивные",
"totalCached": "Кэш",
"totalBlocked": "Заблокировано",
"totalDropped": "Dropped",
"totalDropped": "Отброшенные",
"totalClients": "Клиенты"
},
"tdarr": {
@ -844,16 +854,16 @@
},
"romm": {
"platforms": "Платформы",
"totalRoms": "Games",
"saves": "Saves",
"states": "States",
"screenshots": "Screenshots",
"totalfilesize": "Total Size"
"totalRoms": "Игры",
"saves": "Сейвы",
"states": "Состояния",
"screenshots": "Скриншоты",
"totalfilesize": "Общий объем"
},
"mailcow": {
"domains": "Домены",
"mailboxes": "Mailboxes",
"mails": "Mails",
"mailboxes": "Почтовые ящики",
"mails": "Письма",
"storage": "Хранилище"
},
"netdata": {
@ -902,7 +912,7 @@
},
"crowdsec": {
"alerts": "Предупреждения",
"bans": "Запреты"
"bans": "Блокировки"
},
"wgeasy": {
"connected": "Подключено",
@ -911,10 +921,10 @@
"total": "Всего"
},
"swagdashboard": {
"proxied": "Proxied",
"auth": "With Auth",
"outdated": "Outdated",
"banned": "Banned"
"proxied": "Прокси",
"auth": "С Авторизацией",
"outdated": "Устаревшие",
"banned": "Заблокированные"
},
"myspeed": {
"ping": "Пинг",
@ -922,36 +932,83 @@
"upload": "Загрузка"
},
"stocks": {
"stocks": "Stocks",
"loading": "Loading",
"open": "Open - US Market",
"closed": "Closed - US Market",
"invalidConfiguration": "Invalid Configuration"
"stocks": "Акции",
"loading": "Загрузка",
"open": "Открыто - Рынок США",
"closed": "Закрыто - рынок США",
"invalidConfiguration": "Неверная конфигурация"
},
"frigate": {
"cameras": "Cameras",
"cameras": "Камеры",
"uptime": "Время работы",
"version": "Версия"
},
"linkwarden": {
"links": "Links",
"collections": "Collections",
"links": "Ссылки",
"collections": "Коллекции",
"tags": "Теги"
},
"zabbix": {
"unclassified": "Not classified",
"unclassified": "Не классифицировано",
"information": "Информация",
"warning": "Warning",
"average": "Average",
"high": "High",
"disaster": "Disaster"
"warning": "Предупреждение",
"average": "Средняя",
"high": "Высокая",
"disaster": "Чрезвычайная"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
"vehicle": "Автомобиль",
"vehicles": "Автомобили",
"serviceRecords": "Сервисные работы",
"reminders": "Напоминания",
"nextReminder": "Следующее напоминание",
"none": "Нет"
},
"vikunja": {
"projects": "Активные Проекты",
"tasks7d": "Задачи на этой неделе",
"tasksOverdue": "Просроченные задачи",
"tasksInProgress": "Задачи в процессе"
},
"headscale": {
"name": "Имя",
"address": "Адрес",
"last_seen": "Последнее посещение",
"status": "Статус",
"online": "В сети",
"offline": "Не в сети"
},
"beszel": {
"name": "Имя",
"systems": "Системы",
"up": "Онлайн",
"down": "Офлайн",
"paused": "Приостановлено",
"pending": "В обработке",
"status": "Статус",
"updated": "Обновленно",
"cpu": "ЦП",
"memory": "ОЗУ",
"disk": "Диск",
"network": "Сеть"
},
"argocd": {
"apps": "Приложения",
"synced": "Синхронизированные",
"outOfSync": "Не синхронизированные",
"healthy": "Здоровый",
"degraded": "Деградированные",
"progressing": "Выполняются",
"missing": "Отсутствует",
"suspended": "Приостановленные"
},
"spoolman": {
"loading": "Загрузка"
},
"gitlab": {
"groups": "Группы",
"issues": "Вопросы",
"merges": "Мердж-реквесты",
"projects": "Проекты"
}
}

View File

@ -13,7 +13,7 @@
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"duration": "{{value, duration}}",
"months": "mes",
"days": "d",
"hours": "h",
@ -120,7 +120,7 @@
"grid_power": "Mriežka",
"home_power": "Spotreba",
"charge_power": "Nabíjačka",
"watt_hour": "Wh"
"kilowatt": "kW"
},
"flood": {
"download": "Sťahovanie",
@ -309,6 +309,16 @@
"stopped": "Zastavené",
"total": "Celkovo"
},
"suwayomi": {
"download": "Stiahnuté",
"nondownload": "Non-Downloaded",
"read": "Prečítané",
"unread": "Neprečítané",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Adresa",
"expires": "Vyprší",
@ -953,5 +963,52 @@
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Meno",
"address": "Adresa",
"last_seen": "Naposledy videné",
"status": "Stav",
"online": "Online",
"offline": "Nedostupný"
},
"beszel": {
"name": "Meno",
"systems": "Systems",
"up": "Nahrávanie",
"down": "Sťahovanie",
"paused": "Pozastavené",
"pending": "Čakajúce",
"status": "Stav",
"updated": "Aktualizované",
"cpu": "CPU",
"memory": "RAM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Zdravý",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Chýbajúce",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Problémy",
"merges": "Merge Requests",
"projects": "Projects"
}
}

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