Merge remote-tracking branch 'origin/benphelpsMain' into LocalMain

This commit is contained in:
Karl Hudgell 2025-04-14 13:12:57 +01:00
commit 3b1c4a2425
370 changed files with 4110 additions and 10776 deletions

View File

@ -16,11 +16,11 @@
**/compose*
**/Dockerfile*
**/node_modules
!.next/standalone/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
**/.next
README.md
config/
k3d/

View File

@ -1,9 +1,4 @@
name: Docker
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Docker CI
on:
schedule:
@ -13,7 +8,6 @@ on:
- main
- feature/**
- dev
# Publish semver tags as releases.
tags: [ 'v*.*.*' ]
paths-ignore:
- 'docs/**'
@ -26,89 +20,56 @@ on:
merge_group:
env:
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}
jobs:
pre-commit:
name: Linting Checks
runs-on: ubuntu-22.04
steps:
-
name: Checkout repository
- name: Checkout repository
uses: actions/checkout@v4
-
name: Install python
- name: Install python
uses: actions/setup-python@v5
with:
python-version: 3.x
-
name: Check files
- name: Check files
uses: pre-commit/action@v3.0.1
-
name: Install pnpm
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
run_install: false
-
name: Install Node.js
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
-
name: Install dependencies
- name: Install dependencies
run: pnpm install
-
name: Lint frontend
- name: Lint frontend
run: pnpm run lint
build:
name: Docker Build & Push
if: github.repository == 'gethomepage/homepage'
if: github.repository == 'gethomepage/homepage'
runs-on: self-hosted
needs:
- pre-commit
needs: [ pre-commit ]
permissions:
contents: read
packages: write
# This is used to complete the identity challenge
# with sigstore/fulcio when running outside of PRs.
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
# 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: 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
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
@ -116,11 +77,69 @@ jobs:
images: |
${{ env.IMAGE_NAME }}
ghcr.io/${{ env.IMAGE_NAME }}
tags: |
# Default tags
type=schedule,pattern=nightly
type=ref,event=branch
type=ref,event=tag
# Versioning tags
type=semver,pattern=v{{version}}
type=semver,pattern=v{{major}}.{{minor}}
type=semver,pattern=v{{major}}
flavor: |
latest=auto
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Next.js build cache
uses: actions/cache@v4
with:
path: .next/cache
key: nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('**/*.js', '**/*.jsx') }}
restore-keys: |
nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
run_install: false
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Build app
run: |
NEXT_PUBLIC_BUILDTIME="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}" \
NEXT_PUBLIC_VERSION="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}" \
NEXT_PUBLIC_REVISION="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}" \
pnpm run build
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
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 }}
- name: Setup QEMU
uses: docker/setup-qemu-action@v3.6.0
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v6
@ -130,18 +149,15 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
CI=true
BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}
VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
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
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
# Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
# https://github.com/docker/build-push-action/issues/252 / https://github.com/moby/buildkit/issues/1896
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache

View File

@ -55,7 +55,7 @@ jobs:
run: MKINSIDERS=false mkdocs build
deploy:
name: Build & Deploy
if: github.repository == 'gethomepage/homepage' && github.event_name != 'pull_request'
if: github.repository == 'gethomepage/homepage' && github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs:
- pre-commit

View File

@ -9,11 +9,14 @@ repos:
- id: check-yaml
exclude: "(^mkdocs\\.yml$)"
- id: check-added-large-files
- repo: https://github.com/pre-commit/mirrors-prettier
rev: 'v3.0.3'
- repo: https://github.com/rbubley/mirrors-prettier
rev: 'v3.3.3'
hooks:
- id: prettier
types_or:
- javascript
- markdown
- jsx
additional_dependencies:
- prettier@3.3.3
- 'prettier-plugin-organize-imports@4.1.0'

View File

@ -1 +0,0 @@
{}

5
.prettierrc.js Normal file
View File

@ -0,0 +1,5 @@
const config = {
plugins: [require("prettier-plugin-organize-imports")],
};
module.exports = config;

View File

@ -1,67 +1,63 @@
# syntax = docker/dockerfile:latest
# Install dependencies only when needed
FROM docker.io/node:22-alpine AS deps
# =========================
# Builder Stage
# =========================
FROM node:22-slim AS builder
WORKDIR /app
COPY --link package.json pnpm-lock.yaml* ./
SHELL ["/bin/ash", "-xeo", "pipefail", "-c"]
RUN apk add --no-cache libc6-compat \
&& apk add --no-cache --virtual .gyp python3 make g++ \
&& npm install -g pnpm
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm fetch | grep -v "cross-device link not permitted\|Falling back to copying packages from store"
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:22-alpine AS builder
WORKDIR /app
# Setup
RUN mkdir config
COPY . .
ARG CI
ARG BUILDTIME
ARG VERSION
ARG REVISION
ENV CI=$CI
COPY --link --from=deps /app/node_modules ./node_modules/
COPY . .
# Install and build only outside CI
RUN if [ "$CI" != "true" ]; then \
corepack enable && corepack prepare pnpm@latest --activate && \
pnpm install --frozen-lockfile --prefer-offline && \
NEXT_TELEMETRY_DISABLED=1 \
NEXT_PUBLIC_BUILDTIME=$BUILDTIME \
NEXT_PUBLIC_VERSION=$VERSION \
NEXT_PUBLIC_REVISION=$REVISION \
pnpm run build; \
else \
echo "✅ Using prebuilt app from CI context"; \
fi
SHELL ["/bin/ash", "-xeo", "pipefail", "-c"]
RUN npm run telemetry \
&& mkdir config \
&& 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: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."
# =========================
# Runtime Stage
# =========================
FROM 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"
LABEL org.opencontainers.image.documentation='https://github.com/gethomepage/homepage/wiki'
LABEL org.opencontainers.image.source='https://github.com/gethomepage/homepage'
LABEL org.opencontainers.image.licenses='Apache-2.0'
ENV NODE_ENV=production
# Setup
WORKDIR /app
# Copy files from context (this allows the files to copy before the builder stage is done).
COPY --link --chown=1000:1000 package.json next.config.js ./
# Copy some files from context
COPY --link --chown=1000:1000 /public ./public/
# Copy files from builder
COPY --link --from=builder --chown=1000:1000 /app/.next/standalone ./
COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static/
COPY --link --chmod=755 docker-entrypoint.sh /usr/local/bin/
RUN apk add --no-cache su-exec
# Copy only necessary files from the build stage
COPY --link --from=builder --chown=1000:1000 /app/.next/standalone/ ./
COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static
ENV HOSTNAME=::
RUN apk add --no-cache su-exec iputils-ping
ENV NODE_ENV=production
ENV HOSTNAME=0.0.0.0
ENV PORT=3000
EXPOSE $PORT
HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \
CMD wget --no-verbose --tries=1 --spider --no-check-certificate http://localhost:$PORT/api/healthcheck || exit 1
CMD wget --no-verbose --tries=1 --spider http://127.0.0.1:$PORT/api/healthcheck || exit 1
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["node", "server.js"]

View File

@ -10,7 +10,7 @@ RUN <<EOF
apk add libc6-compat
apk add --virtual .gyp python3 make g++
npm install -g pnpm
npm install -g next
pnpm install -g next
EOF
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm fetch | grep -v "cross-device link not permitted\|Falling back to copying packages from store"

View File

@ -80,6 +80,7 @@ services:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
PUID: 1000 # optional, your user id
PGID: 1000 # optional, your group id
ports:
@ -94,6 +95,7 @@ or docker run:
```bash
docker run --name homepage \
-e HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev \
-e PUID=1000 \
-e PGID=1000 \
-p 3000:3000 \
@ -111,7 +113,7 @@ First, clone the repository:
git clone https://github.com/gethomepage/homepage.git
```
Then install dependencies and build the production bundle (I'm using pnpm here, you can use npm or yarn if you like):
Then install dependencies and build the production bundle:
```bash
pnpm install

View File

@ -15,7 +15,7 @@ export HOMEPAGE_BUILDTIME=$(date +%s)
# Set privileges for /app but only if pid 1 user is root and we are dropping privileges.
# If container is run as an unprivileged user, it means owner already handled ownership setup on their own.
# Running chown in that case (as non-root) will cause error
[ "$(id -u)" == "0" ] && [ "${PUID}" != "0" ] && chown -R ${PUID}:${PGID} /app
[ "$(id -u)" == "0" ] && [ "${PUID}" != "0" ] && chown -R ${PUID}:${PGID} /app/config /app/public
# Drop privileges (when asked to) if root, otherwise run as current user
if [ "$(id -u)" == "0" ] && [ "${PUID}" != "0" ]; then

View File

@ -1,3 +0,0 @@
.md-typeset[data-page-id="landing"] .md-header-anchor {
display: none;
}

View File

@ -25,13 +25,13 @@ To configure Kubernetes gateway-api, ingress or ingressRoute service discovery,
Example settings:
```yaml
ingress: true # enable ingress only
ingress: true # default, enable ingress only
```
or
```yaml
ingress: true # enable ingress
ingress: true # default, enable ingress
traefik: true # enable traefik ingressRoute
gateway: true # enable gateway-api
```

View File

@ -78,7 +78,7 @@ background:
You can apply a blur filter to the service & bookmark cards. Note this option is incompatible with the background blur, saturate and brightness filters.
```yaml
cardBlur: sm # sm, "", md, etc... see https://tailwindcss.com/docs/backdrop-blur
cardBlur: xs # xs, md, etc... see https://tailwindcss.com/docs/backdrop-blur
```
## Favicon
@ -254,15 +254,29 @@ layout:
columns: 4
```
### Five Columns
### Full Width
You can add a fifth column to services (when `style: columns` which is default) by adding:
You can make homepage take up the entire window width by adding:
```yaml
fiveColumns: true
fullWidth: true
```
By default homepage will max out at 4 columns for services with `columns` style
### Maximum Group Columns
You can set the maximum number of columns of groups on larger screen sizes (note this is only for groups with the default `style: columns`, not groups with `stle: row`) by adding:
```yaml
maxGroupColumns: 8 # default is 4 for services, 6 for bookmarks, max 8
```
By default homepage will max out at 4 columns for services and 6 for bookmarks, thus the minimum for this setting is _5_. Of course, if you're setting this to higher numbers, you may want to consider enabling the [fullWidth](#full-width) option as well.
If you want to set the maximum columns for bookmark groups separately, you can do so by adding:
```yaml
maxBookmarkGroupColumns: 6 # default is 6, max 8
```
### Collapsible sections
@ -447,7 +461,7 @@ quicklaunch:
suggestionUrl: https://ac.ecosia.org/autocomplete?type=list&q=
```
## Homepage Version
## Homepage Version & Update Checking
By default the release version is displayed at the bottom of the page. To hide this, use the `hideVersion` setting, like so:
@ -455,6 +469,12 @@ By default the release version is displayed at the bottom of the page. To hide t
hideVersion: true
```
You can disable checking for new versions from GitHub (enabled by default) with:
```yaml
disableUpdateCheck: true
```
## Log Path
By default the homepage logfile is written to the a `logs` subdirectory of the `config` folder. In order to customize this path, you can set the `logpath` setting. A `logs` folder will be created in that location where the logfile will be written.

View File

@ -16,7 +16,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
environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required when deploying via public URL
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
```
### Running as non-root
@ -38,7 +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
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
PUID: $PUID
PGID: $PGID
```

View File

@ -13,20 +13,28 @@ You have a few options for deploying homepage, depending on your needs. We offer
<br>
<div class="grid cards" style="margin: 0 auto;" markdown>
:simple-docker: [&nbsp; Install on Docker :octicons-arrow-right-24:](docker.md)
[:simple-docker: &nbsp; Install on Docker :octicons-arrow-right-24:](docker.md)
{ .card }
:simple-kubernetes: [&nbsp; Install on Kubernetes :octicons-arrow-right-24:](k8s.md)
[:simple-kubernetes: &nbsp; Install on Kubernetes :octicons-arrow-right-24:](k8s.md)
{ .card }
:simple-unraid: [&nbsp; Install on UNRAID :octicons-arrow-right-24:](unraid.md)
[:simple-unraid: &nbsp; Install on UNRAID :octicons-arrow-right-24:](unraid.md)
{ .card }
:simple-nextdotjs: [&nbsp; Building from source :octicons-arrow-right-24:](source.md)
[:simple-nextdotjs: &nbsp; Building from source :octicons-arrow-right-24:](source.md)
{ .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.
As of v1.0 there is one required environment variable to access homepage via a URL other than `localhost`, <code>HOMEPAGE_ALLOWED_HOSTS</code>. The setting helps prevent certain kinds of attacks when retrieving data from the homepage API proxy.
The value is a comma-separated (no spaces) list of allowed hosts (sometimes with the port) that can host your homepage install. See the [docker](docker.md), [kubernetes](k8s.md) and [source](source.md) installation pages for more information about where / how to set the variable.
`localhost:3000` and `127.0.0.1:3000` are always included, but you can add a domain or IP address to this list to allow that host such as `HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev,192.168.1.2:1234`, etc.
If you are seeing errors about host validation, check the homepage logs and ensure that the host exactly as output in the logs is in the `HOMEPAGE_ALLOWED_HOSTS` list.
This can be disabled by setting `HOMEPAGE_ALLOWED_HOSTS` to `*` but this is not recommended.

View File

@ -3,85 +3,6 @@ title: Kubernetes Installation
description: Install on Kubernetes
---
## Install with Helm
There is an [unofficial helm chart](https://github.com/jameswynn/helm-charts/tree/main/charts/homepage) that creates all the necessary manifests, including the service account and RBAC entities necessary for service discovery.
```sh
helm repo add jameswynn https://jameswynn.github.io/helm-charts
helm install homepage jameswynn/homepage -f values.yaml
```
The helm chart allows for all the configurations to be inlined directly in your `values.yaml`:
```yaml
config:
bookmarks:
- Developer:
- Github:
- abbr: GH
href: https://github.com/
services:
- My First Group:
- My First Service:
href: http://localhost/
description: Homepage is awesome
- My Second Group:
- My Second Service:
href: http://localhost/
description: Homepage is the best
- My Third Group:
- My Third Service:
href: http://localhost/
description: Homepage is 😎
widgets:
# show the kubernetes widget, with the cluster summary and individual nodes
- kubernetes:
cluster:
show: true
cpu: true
memory: true
showLabel: true
label: "cluster"
nodes:
show: true
cpu: true
memory: true
showLabel: true
- search:
provider: duckduckgo
target: _blank
kubernetes:
mode: cluster
settings:
# The service account is necessary to allow discovery of other services
serviceAccount:
create: true
name: homepage
# This enables the service account to access the necessary resources
enableRbac: true
ingress:
main:
enabled: true
annotations:
# Example annotations to add Homepage to your Homepage!
gethomepage.dev/enabled: "true"
gethomepage.dev/name: "Homepage"
gethomepage.dev/description: "Dynamically Detected Homepage"
gethomepage.dev/group: "Dynamic"
gethomepage.dev/icon: "homepage.png"
hosts:
- host: homepage.example.com
paths:
- path: /
pathType: Prefix
```
## Install with Kubernetes Manifests
If you don't want to use the unofficial Helm chart, you can also create your own Kubernetes manifest(s) and apply them with `kubectl apply -f filename.yaml`.
@ -302,6 +223,9 @@ spec:
- name: homepage
image: "ghcr.io/gethomepage/homepage:latest"
imagePullPolicy: Always
env:
- name: HOMEPAGE_ALLOWED_HOSTS
value: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
ports:
- name: http
containerPort: 3000

View File

@ -9,7 +9,13 @@ First, clone the repository:
git clone https://github.com/gethomepage/homepage.git
```
Then install dependencies and build the production bundle (I'm using pnpm here, you can use npm or yarn if you like):
If `pnpm` is not installed, install it:
```bash
npm install -g pnpm
```
Then install dependencies and build the production bundle:
```bash
pnpm install
@ -21,7 +27,9 @@ If this is your first time starting, copy the `src/skeleton` directory to `confi
Finally, run the server:
```bash
HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev pnpm start
HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev:1234 pnpm start
```
When updating homepage versions you will need to re-build the static files i.e. repeat the process above.
See [HOMEPAGE_ALLOWED_HOSTS](index.md#homepage_allowed_hosts) for more information on this environment variable.

View File

@ -286,3 +286,13 @@ body[data-md-color-scheme="default"] {
.md-tabs__link {
transform: translateZ(0);
}
.grid.cards .card {
padding: 0;
}
.grid.cards .card a {
display: block;
padding: 0.8rem;
text-decoration: none;
}

View File

@ -12,6 +12,7 @@ hide:
- Check config/logs/homepage.log, on docker simply e.g. `docker logs homepage`. This may provide some insight into the reason for an error.
- Check the browser error console, this can also sometimes provide useful information.
- Consider setting the `ENV` variable `LOG_LEVEL` to `debug`.
- If certain widgets are failing when connecting to public APIs, consider [disabling IPv6](#disabling-ipv6).
## Service Widget Errors
@ -66,3 +67,17 @@ All service widgets work essentially the same, that is, homepage makes a proxied
## Missing custom icons
If, after correctly adding and mapping your custom icons via the [Icons](../configs/services.md#icons) instructions, you are still unable to see your icons please try recreating your container.
## Disabling IPv6
If you are having issues with certain widgets that are unable to reach public APIs (e.g. weather), in certain setups you may need to disable IPv6. You can set the environment variable `HOMEPAGE_PROXY_DISABLE_IPV6` to `true` to disable IPv6 for the homepage proxy.
Alternatively, you can use the `sysctls` option in your docker-compose file to disable IPv6 for the homepage container completely:
```yaml
services:
homepage:
...
sysctls:
- net.ipv6.conf.all.disable_ipv6=1
```

View File

@ -19,27 +19,22 @@ widget:
requestBody: # optional, can be string or object, see below
display: # optional, default to block, see below
mappings:
- field: key # needs to be YAML string or object
- field: key
label: Field 1
format: text # optional - defaults to text
- field: # needs to be YAML string or object
path:
to: key2
- field: path.to.key2
format: number # optional - defaults to text
label: Field 2
- field: # needs to be YAML string or object
path:
to:
another: key3
- field: path.to.another.key3
label: Field 3
format: percent # optional - defaults to text
- field: key # needs to be YAML string or object
- field: key
label: Field 4
format: date # optional - defaults to text
locale: nl # optional
dateStyle: long # optional - defaults to "long". Allowed values: `["full", "long", "medium", "short"]`.
timeStyle: medium # optional - Allowed values: `["full", "long", "medium", "short"]`.
- field: key # needs to be YAML string or object
- field: key
label: Field 5
format: relativeDate # optional - defaults to text
locale: nl # optional
@ -49,9 +44,7 @@ widget:
label: Field 6
format: text
additionalField: # optional
field:
hourly:
time: other key
field: hourly.time.key
color: theme # optional - defaults to "". Allowed values: `["theme", "adaptive", "black", "white"]`.
format: date # optional
- field: key
@ -103,9 +96,16 @@ mappings:
label: Name
- field: status # Alive
label: Status
- field:
origin: name # Earth (C-137)
- field: origin.name # Earth (C-137)
label: Origin
- field: locations.1.name # Citadel of Ricks
label: Location
```
Note that older versions of the widget accepted fields as a yaml object, which is still supported. E.g.:
```yaml
mappings:
- field:
locations:
1: name # Citadel of Ricks
@ -138,7 +138,15 @@ You can manipulate data with the following tools `remap`, `scale`, `prefix` and
prefix: "$"
```
## List View
## Display Options
The widget supports different display modes that can be set using the `display` property.
### Block View (Default)
The default display mode is `block`, which shows fields in a block format.
### List View
You can change the default block view to a list view by setting the `display` option to `list`.
@ -162,13 +170,53 @@ The list view can optionally display an additional field next to the primary fie
- any: true # will map all other values
to: Unknown
additionalField:
field:
hourly:
time: key
field: hourly.time.key
color: theme
format: date
```
### Dynamic List View
To display a list of items from an array in the API response, set the `display` property to `dynamic-list` and configure the `mappings` object with the following properties:
```yaml
widget:
type: customapi
url: https://example.com/api/servers
display: dynamic-list
mappings:
items: data # optional, the path to the array in the API response. Omit this option if the array is at the root level
name: id # required, field in each item to use as the item name (left side)
label: ip_address # required, field in each item to use as the item label (right side)
limit: 5 # optional, limit the number of items to display
target: https://example.com/server/{id} # optional, makes items clickable with template support
```
This configuration would work with an API that returns a response like:
```json
{
"data": [
{ "id": "server1", "name": "Server 1", "ip_address": "192.168.0.1" },
{ "id": "server2", "name": "Server 2", "ip_address": "192.168.0.2" }
]
}
```
The widget would display a list with two items:
- "Server 1" on the left and "192.168.0.1" on the right, clickable to "https://example.com/server/server1"
- "Server 2" on the left and "192.168.0.2" on the right, clickable to "https://example.com/server/server2"
For nested fields in the items, you can use dot notation:
```yaml
mappings:
items: data.results.servers
name: details.id
label: details.name
```
## Custom Headers
Pass custom headers using the `headers` option, for example:

View File

@ -7,7 +7,7 @@ Learn more about [Gitea](https://gitea.com).
API token requires `notifications`, `repository` and `issue` permissions. See the [gitea documentation](https://docs.gitea.com/development/api-usage#generating-and-listing-api-tokens) for details on generating tokens.
Allowed fields: `["notifications", "issues", "pulls"]`.
Allowed fields: `["repositories", "notifications", "issues", "pulls"]`.
```yaml
widget:

View File

@ -51,6 +51,7 @@ You can also find a list of all available service widgets in the sidebar navigat
- [HDHomeRun](hdhomerun.md)
- [Headscale](headscale.md)
- [Healthchecks](healthchecks.md)
- [Karakeep](karakeep.md)
- [Home Assistant](homeassistant.md)
- [HomeBox](homebox.md)
- [Homebridge](homebridge.md)
@ -116,6 +117,7 @@ You can also find a list of all available service widgets in the sidebar navigat
- [ruTorrent](rutorrent.md)
- [SABnzbd](sabnzbd.md)
- [Scrutiny](scrutiny.md)
- [Slskd](slskd.md)
- [Sonarr](sonarr.md)
- [Speedtest Tracker](speedtest-tracker.md)
- [Stash](stash.md)

View File

@ -0,0 +1,17 @@
---
title: Karakeep
description: Karakeep Widget Configuration
---
Learn more about [Karakeep](https://karakeep.app) (formerly known as Hoarder).
Generate an API key for your user at `User Settings > API Keys`.
Allowed fields: `["bookmarks", "favorites", "archived", "highlights", "lists", "tags"]` (maximum of 4).
```yaml
widget:
type: karakeep
url: http[s]://karakeep.host.or.ip[:port]
key: karakeep_api_key
```

View File

@ -20,4 +20,5 @@ widget:
url: http://komga.host.or.ip:port
username: username
password: password
key: komgaapikey # optional
```

View File

@ -0,0 +1,25 @@
---
title: Slskd
description: Slskd Widget Configuration
---
Learn more about [Slskd](https://github.com/slskd/slskd).
Generate an API key for slskd with `openssl rand -base64 48`.
Add it to your `path/to/config/slskd.yml` in `web > authentication > api_keys`:
```yaml
homepage_widget:
key: <generated key>
role: readonly
cidr: <homepage subnet>
```
Allowed fields: `["slskStatus", "updateStatus", "downloads", "uploads", "sharedFiles"]` (maximum of 4).
```yaml
widget:
type: slskd
url: http[s]://slskd.host.or.ip[:5030]
key: generatedapikey
```

View File

@ -46,6 +46,10 @@ config:
docker:
settings:
env:
- name: HOMEPAGE_ALLOWED_HOSTS
value: "homepage.k3d.localhost:8080"
serviceAccount:
create: true
name: homepage

View File

@ -74,6 +74,7 @@ nav:
- widgets/services/hdhomerun.md
- widgets/services/headscale.md
- widgets/services/healthchecks.md
- widgets/services/karakeep.md
- widgets/services/homeassistant.md
- widgets/services/homebox.md
- widgets/services/homebridge.md

View File

@ -131,8 +131,8 @@ module.exports = {
? BIBIT_UNITS
: BIT_UNITS
: options.binary
? BIBYTE_UNITS
: BYTE_UNITS;
? BIBYTE_UNITS
: BYTE_UNITS;
if (value === 0) return `0 ${sizes[0]}/s`;

8767
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,10 @@
{
"name": "homepage",
"version": "0.10.9",
"version": "1.1.1",
"private": true,
"scripts": {
"dev": "next dev -p 8080",
"preinstall": "npx only-allow pnpm",
"build": "next build",
"start": "next start",
"lint": "next lint",
@ -18,13 +19,13 @@
"dockerode": "^4.0.4",
"follow-redirects": "^1.15.9",
"gamedig": "^5.2.0",
"i18next": "^21.10.0",
"i18next": "^24.2.3",
"js-yaml": "^4.1.0",
"json-rpc-2.0": "^1.7.0",
"luxon": "^3.5.0",
"memory-cache": "^0.2.0",
"minecraftstatuspinger": "^1.2.1",
"next": "^15.1.7",
"minecraftstatuspinger": "^1.2.2",
"next": "^15.2.4",
"next-i18next": "^12.1.0",
"ping": "^0.4.4",
"pretty-bytes": "^6.1.1",
@ -36,7 +37,7 @@
"recharts": "^2.12.6",
"react-icons": "^5.4.0",
"rrule": "^2.8.1",
"swr": "^1.3.0",
"swr": "^2.3.3",
"systeminformation": "^5.25.11",
"tough-cookie": "^5.1.2",
"urbackup-server-api": "^0.8.9",
@ -47,15 +48,16 @@
"@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-config-next": "^15.2.4",
"eslint-config-prettier": "^10.1.1",
"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",
"postcss": "^8.5.3",
"prettier": "^3.5.2",
"prettier-plugin-organize-imports": "^4.1.0",
"tailwind-scrollbar": "^4.0.1",
"tailwindcss": "^4.0.9",
"typescript": "^5.7.3"

641
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -148,7 +148,9 @@
"up": "Op",
"received": "Ontvang",
"sent": "Gestuur",
"externalIPAddress": "Ext. IP"
"externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Voorvoegsel"
},
"caddy": {
"upstreams": "Stroomop",
@ -176,7 +178,7 @@
"connectedAp": "Gekoppelde APs",
"activeUser": "Aktiewe toestelle",
"alerts": "Waarskuwings",
"connectedGateway": "Gekoppelde poorte",
"connectedGateways": "Gekoppelde poorte",
"connectedSwitches": "Gekoppelde skakelaars"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Verwerk",
"time": "Tyd"
},
"firefly": {
"networth": "Netto Waarde",
"budget": "Begroting"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Databronne",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Kennisgewings",
"issues": "Kwessies",
"pulls": "Trek Versoeke"
"pulls": "Trek Versoeke",
"repositories": "Bewaarplekke"
},
"stash": {
"scenes": "Tonele",
@ -1010,5 +1017,30 @@
"issues": "Kwessies",
"merges": "Saamvleg Versoeke",
"projects": "Projekte"
},
"apcups": {
"status": "Status",
"load": "Las",
"bcharge": "Batterylading",
"timeleft": "Oorblywende Tyd"
},
"hoarder": {
"bookmarks": "Boekmerke",
"favorites": "Gunstelinge",
"archived": "Geargiveer",
"highlights": "Hoogtepunte",
"lists": "Lyste",
"tags": "Merkers"
},
"slskd": {
"slskStatus": "Netwerk",
"connected": "Gekoppel",
"disconnected": "Ontkoppel",
"updateStatus": "Opdateer",
"update_yes": "Beskikbaar",
"update_no": "Op Datum",
"downloads": "Aflaaie",
"uploads": "Oplaaie",
"sharedFiles": "Lêers"
}
}

View File

@ -148,7 +148,9 @@
"up": "يعمل",
"received": "تم الإستلام",
"sent": "تم الإرسال",
"externalIPAddress": "IP الخارجي"
"externalIPAddress": "IP الخارجي",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "تدفق",
@ -176,7 +178,7 @@
"connectedAp": "المتصلة APs",
"activeUser": "الأجهزة النشطة",
"alerts": "تنبيهات",
"connectedGateway": "البوابات المتصلة",
"connectedGateways": "Connected gateways",
"connectedSwitches": "مفاتيح التبديل المتصلة"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "معالجة",
"time": "الوقت"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "لوحات المعلومات",
"datasources": "مصادر البيانات",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "الإشعارات",
"issues": "المُشكِلات",
"pulls": "طلبات السحب"
"pulls": "طلبات السحب",
"repositories": "Repositories"
},
"stash": {
"scenes": "المشاهد",
@ -1010,5 +1017,30 @@
"issues": "المُشكِلات",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "الحالة",
"load": "الضغط",
"bcharge": "شحن البطارية",
"timeleft": "الوقت المتبقي"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "التصنيفات"
},
"slskd": {
"slskStatus": "الشبكة",
"connected": "متصل",
"disconnected": "غير متصل",
"updateStatus": "Update",
"update_yes": "متاح",
"update_no": "حتى الآن",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "ملفات"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -148,7 +148,9 @@
"up": "Actiu",
"received": "Rebuts",
"sent": "Enviats",
"externalIPAddress": "IP ext."
"externalIPAddress": "IP ext.",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "AP connectats",
"activeUser": "Dispositius actius",
"alerts": "Alertes",
"connectedGateway": "Pasarel·les connectades",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Conmutadors connectats"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Processat",
"time": "Temps"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Taulells",
"datasources": "Orígens de dades",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notificacions",
"issues": "Problemes",
"pulls": "Sol·licitud de Canvis"
"pulls": "Sol·licitud de Canvis",
"repositories": "Repositories"
},
"stash": {
"scenes": "Escenes",
@ -1010,5 +1017,30 @@
"issues": "Problemes",
"merges": "Merge Requests",
"projects": "Projectes"
},
"apcups": {
"status": "Estat",
"load": "Càrrega",
"bcharge": "Càrrega de la bateria",
"timeleft": "Temps restant"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Etiquetes"
},
"slskd": {
"slskStatus": "Xarxa",
"connected": "Connectat",
"disconnected": "Desconnectat",
"updateStatus": "Update",
"update_yes": "Disponible",
"update_no": "Actualitzat",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Fitxers"
}
}

View File

@ -148,7 +148,9 @@
"up": "Up",
"received": "Přijaté",
"sent": "Odeslané",
"externalIPAddress": "Ext. IP"
"externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Odesílání dat",
@ -176,7 +178,7 @@
"connectedAp": "Připojené APs",
"activeUser": "Aktivní zařízení",
"alerts": "Upozornění",
"connectedGateway": "Připojené brány",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Připojené přepínače"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Zpracováno",
"time": "Čas"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Nástěnky",
"datasources": "Zdroje dat",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Problémy",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Problémy",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Stav",
"load": "Zatížení",
"bcharge": "Battery Charge",
"timeleft": "Zbývající čas"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "",
"disconnected": "Odpojeno",
"updateStatus": "Update",
"update_yes": "Dostupné",
"update_no": "Žádné",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Soubory"
}
}

View File

@ -148,7 +148,9 @@
"up": "Op",
"received": "Modtaget",
"sent": "Sendt",
"externalIPAddress": "Ekstern IP"
"externalIPAddress": "Ekstern IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Forbundne APs",
"activeUser": "Aktive enheder",
"alerts": "Advarsler",
"connectedGateway": "Forbundne gateways",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Forbundne switches"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Behandlet",
"time": "Tid"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Kontrolpanel",
"datasources": "Data Kilder",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Problemer",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Problemer",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Status",
"load": "Belastning",
"bcharge": "Batteriniveau",
"timeleft": "Resterende tid"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Tilgængelig",
"update_no": "Opdateret",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Filer"
}
}

View File

@ -85,16 +85,16 @@
"ping": {
"error": "Fehler",
"ping": "Ping",
"down": "Empfangen",
"up": "Senden",
"down": "Offline",
"up": "Online",
"not_available": "Nicht verfügbar"
},
"siteMonitor": {
"http_status": "HTTP-Status",
"error": "Fehler",
"response": "Antwort",
"down": "Empfangen",
"up": "Senden",
"down": "Offline",
"up": "Online",
"not_available": "Nicht verfügbar"
},
"emby": {
@ -144,11 +144,13 @@
"uptime": "Betriebszeit",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Empfangen",
"up": "Senden",
"down": "Offline",
"up": "Online",
"received": "Empfangen",
"sent": "Gesendet",
"externalIPAddress": "Externe IP"
"externalIPAddress": "Externe IP",
"externalIPv6Address": "Externe IPv6",
"externalIPv6Prefix": "Externer IPv4-Präfix"
},
"caddy": {
"upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Verbundene APs",
"activeUser": "Aktive Geräte",
"alerts": "Warnungen",
"connectedGateway": "Verbundene Gateways",
"connectedGateways": "Verbundene Gateways",
"connectedSwitches": "Verbundene Switche"
},
"nzbget": {
@ -350,7 +352,7 @@
"queue": "Warteschlange",
"processed": "Verarbeitet",
"errored": "Fehlgeschlagen",
"saved": "Gespeichert"
"saved": "Eingespart"
},
"traefik": {
"routers": "Router",
@ -445,7 +447,7 @@
"write": "Schreiben",
"gpu": "GPU",
"mem": "RAM",
"swap": "Swap"
"swap": "Auslagerung"
},
"quicklaunch": {
"bookmark": "Lesezeichen",
@ -521,15 +523,15 @@
"up_to_date": "Aktuell",
"child_bridges": "Unter-Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Senden",
"up": "Online",
"pending": "Ausstehend",
"down": "Empfangen"
"down": "Offline"
},
"healthchecks": {
"new": "Neu",
"up": "Senden",
"up": "Online",
"grace": "In Karenzzeit",
"down": "Empfangen",
"down": "Offline",
"paused": "Pausiert",
"status": "Status",
"last_ping": "Letzter Ping",
@ -644,8 +646,8 @@
"load": "Durchschnittliche Last",
"memory": "Speichernutzung",
"wanStatus": "WAN-Status",
"up": "Senden",
"down": "Empfangen",
"up": "Online",
"down": "Offline",
"temp": "Temperatur",
"disk": "Datenträgernutzung",
"wanIP": "WAN-IP"
@ -702,6 +704,10 @@
"processed": "Verarbeitet",
"time": "Zeit"
},
"firefly": {
"networth": "Reinvermögen",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Datenquellen",
@ -826,8 +832,8 @@
"openwrt": {
"uptime": "Betriebszeit",
"cpuLoad": "CPU-Last (5 min-Durchschnitt)",
"up": "Senden",
"down": "Empfangen",
"up": "Online",
"down": "Offline",
"bytesTx": "Übertragen",
"bytesRx": "Empfangen"
},
@ -840,9 +846,9 @@
"sitesDown": "Seiten nicht verfügbar",
"paused": "Pausiert",
"notyetchecked": "Noch nicht geprüft",
"up": "Senden",
"up": "Online",
"seemsdown": "Scheint nicht verfügbar",
"down": "Empfangen",
"down": "Offline",
"unknown": "Unbekannt"
},
"calendar": {
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Benachrichtigungen",
"issues": "Probleme",
"pulls": "Pull-Requests"
"pulls": "Pull-Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Szenen",
@ -981,8 +988,8 @@
"beszel": {
"name": "Name",
"systems": "Systeme",
"up": "Senden",
"down": "Empfangen",
"up": "Online",
"down": "Offline",
"paused": "Pausiert",
"pending": "Ausstehend",
"status": "Status",
@ -1010,5 +1017,30 @@
"issues": "Probleme",
"merges": "Merge Requests",
"projects": "Projekte"
},
"apcups": {
"status": "Status",
"load": "Last",
"bcharge": "Akkuladung",
"timeleft": "Verbleibende Zeit"
},
"hoarder": {
"bookmarks": "Lesezeichen",
"favorites": "Favoriten",
"archived": "Archiviert",
"highlights": "Highlights",
"lists": "Listen",
"tags": "Schlagwörter"
},
"slskd": {
"slskStatus": "Netzwerk",
"connected": "Verbunden",
"disconnected": "Getrennt",
"updateStatus": "Update",
"update_yes": "Verfügbar",
"update_no": "Aktuell",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Dateien"
}
}

View File

@ -148,7 +148,9 @@
"up": "Ping up",
"received": "Ληφθέντα",
"sent": "Απεσταλμένα",
"externalIPAddress": "Εξωτερική IP"
"externalIPAddress": "Εξωτερική IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Συνδεδεμένα APs",
"activeUser": "Ενεργές συσκευές",
"alerts": "Ειδοποιήσεις",
"connectedGateway": "Συνδεδεμένα gateways",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Συνδεδεμένα switches"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Σε επεξεργασία",
"time": "Ώρα"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Πίνακας Ελέγχου",
"datasources": "Πηγές Δεδομένων",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Κατάσταση",
"load": "Φόρτωση",
"bcharge": "Battery Charge",
"timeleft": "Χρόνος που απομένει"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Ετικέτες"
},
"slskd": {
"slskStatus": "Δίκτυο",
"connected": "Συνδέθηκε",
"disconnected": "Αποσυνδέθηκε",
"updateStatus": "Update",
"update_yes": "Διαθέσιμο",
"update_no": "Ενημερωμένο",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Αρχεία"
}
}

View File

@ -908,9 +908,10 @@
"species": "Species"
},
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"blueiris": {
"serverName": "Server Name",
@ -1053,5 +1054,24 @@
"load": "Load",
"bcharge":"Battery Charge",
"timeleft":"Time Left"
},
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -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": {
@ -702,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Stato",
"load": "Ŝarĝo",
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Havebla",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -148,7 +148,9 @@
"up": "Activo",
"received": "Recibido",
"sent": "Enviado",
"externalIPAddress": "IP ext."
"externalIPAddress": "IP ext.",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstream (desarrollo de software)",
@ -176,7 +178,7 @@
"connectedAp": "AP conectados",
"activeUser": "Dispositivos activos",
"alerts": "Alertas",
"connectedGateway": "Puertas de enlace conectadas",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Conmutadores conectados"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Procesado",
"time": "Tiempo"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Tableros",
"datasources": "Fuentes de datos",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notificaciones",
"issues": "Números",
"pulls": "Solicitudes de cambios"
"pulls": "Solicitudes de cambios",
"repositories": "Repositories"
},
"stash": {
"scenes": "Escenas",
@ -1010,5 +1017,30 @@
"issues": "Números",
"merges": "Solicitudes de fusión",
"projects": "Proyectos"
},
"apcups": {
"status": "Estado",
"load": "Carga",
"bcharge": "Carga de la batería",
"timeleft": "Tiempo restante"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Etiquetas"
},
"slskd": {
"slskStatus": "Red",
"connected": "Conectado",
"disconnected": "Desconectado",
"updateStatus": "Update",
"update_yes": "Disponible",
"update_no": "Actualizado",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Archivos"
}
}

View File

@ -85,16 +85,16 @@
"ping": {
"error": "Error",
"ping": "Ping",
"down": "Down",
"up": "Up",
"down": "Behera",
"up": "Gora",
"not_available": "Not Available"
},
"siteMonitor": {
"http_status": "HTTP status",
"error": "Error",
"response": "Response",
"down": "Down",
"up": "Up",
"response": "Erantzuna",
"down": "Behera",
"up": "Gora",
"not_available": "Not Available"
},
"emby": {
@ -102,8 +102,8 @@
"transcoding": "Transcoding",
"bitrate": "Bit-tasa",
"no_active": "No Active Streams",
"movies": "Movies",
"series": "Series",
"movies": "Filmak",
"series": "Serieak",
"episodes": "Episodes",
"songs": "Abestiak"
},
@ -115,40 +115,42 @@
"unknown": "Ezezaguna"
},
"evcc": {
"pv_power": "Production",
"battery_soc": "Battery",
"grid_power": "Grid",
"home_power": "Consumption",
"charge_power": "Charger",
"pv_power": "Produkzioak",
"battery_soc": "Bateria",
"grid_power": "Sarea",
"home_power": "Kontsumoa",
"charge_power": "Kargagailua",
"kilowatt": "kW"
},
"flood": {
"download": "Download",
"upload": "Upload",
"download": "Jeitsierak",
"upload": "Kargatu",
"leech": "Leech",
"seed": "Seed"
},
"freshrss": {
"subscriptions": "Subscriptions",
"unread": "Unread"
"subscriptions": "Harpidetzak",
"unread": "Irakurri gabe"
},
"fritzbox": {
"connectionStatus": "Status",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusConnecting": "Konektatzen",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"connectionStatusDisconnected": "Deskonektatuta",
"connectionStatusConnected": "Konektatuta",
"uptime": "Uptime",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"down": "Behera",
"up": "Gora",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
"sent": "Bidalita",
"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": {
@ -187,7 +189,7 @@
"plex": {
"streams": "Active Streams",
"albums": "Albums",
"movies": "Movies",
"movies": "Filmak",
"tv": "TV Shows"
},
"sabnzbd": {
@ -197,18 +199,18 @@
},
"rutorrent": {
"active": "Active",
"upload": "Upload",
"download": "Download"
"upload": "Kargatu",
"download": "Jeitsierak"
},
"transmission": {
"download": "Download",
"upload": "Upload",
"download": "Jeitsierak",
"upload": "Kargatu",
"leech": "Leech",
"seed": "Seed"
},
"qbittorrent": {
"download": "Download",
"upload": "Upload",
"download": "Jeitsierak",
"upload": "Kargatu",
"leech": "Leech",
"seed": "Seed"
},
@ -221,8 +223,8 @@
"invalid": "Invalid"
},
"deluge": {
"download": "Download",
"upload": "Upload",
"download": "Jeitsierak",
"upload": "Kargatu",
"leech": "Leech",
"seed": "Seed"
},
@ -231,15 +233,15 @@
"cachemissbytes": "Cache Miss Bytes"
},
"downloadstation": {
"download": "Download",
"upload": "Upload",
"download": "Jeitsierak",
"upload": "Kargatu",
"leech": "Leech",
"seed": "Seed"
},
"sonarr": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series",
"series": "Serieak",
"queue": "Queue",
"unknown": "Ezezaguna"
},
@ -247,7 +249,7 @@
"wanted": "Wanted",
"missing": "Missing",
"queued": "Queued",
"movies": "Movies",
"movies": "Filmak",
"queue": "Queue",
"unknown": "Ezezaguna"
},
@ -283,7 +285,7 @@
},
"netalertx": {
"total": "Guztira",
"connected": "Connected",
"connected": "Konektatuta",
"new_devices": "New Devices",
"down_alerts": "Down Alerts"
},
@ -300,8 +302,8 @@
"latency": "Latency"
},
"speedtest": {
"upload": "Upload",
"download": "Download",
"upload": "Kargatu",
"download": "Jeitsierak",
"ping": "Ping"
},
"portainer": {
@ -313,7 +315,7 @@
"download": "Downloaded",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Unread",
"unread": "Irakurri gabe",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
@ -403,7 +405,7 @@
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
"series": "Serieak"
},
"minecraft": {
"players": "Jokalariak",
@ -414,7 +416,7 @@
},
"miniflux": {
"read": "Read",
"unread": "Unread"
"unread": "Irakurri gabe"
},
"authentik": {
"users": "Users",
@ -521,15 +523,15 @@
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"up": "Gora",
"pending": "Pending",
"down": "Down"
"down": "Behera"
},
"healthchecks": {
"new": "New",
"up": "Up",
"up": "Gora",
"grace": "In Grace Period",
"down": "Down",
"down": "Behera",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
@ -644,8 +646,8 @@
"load": "Load Avg",
"memory": "Mem Usage",
"wanStatus": "WAN Status",
"up": "Up",
"down": "Down",
"up": "Gora",
"down": "Behera",
"temp": "Temp",
"disk": "Disk Usage",
"wanIP": "WAN IP"
@ -658,7 +660,7 @@
},
"immich": {
"users": "Users",
"photos": "Photos",
"photos": "Argazkiak",
"videos": "Videos",
"storage": "Storage"
},
@ -670,14 +672,14 @@
"m": "m"
},
"atsumeru": {
"series": "Series",
"series": "Serieak",
"archives": "Archives",
"chapters": "Chapters",
"categories": "Categories"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"series": "Serieak",
"books": "Books"
},
"diskstation": {
@ -686,13 +688,13 @@
"volumeAvailable": "Available"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"series": "Serieak",
"issues": "Arazoak",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"photos": "Argazkiak",
"videos": "Videos",
"people": "People"
},
@ -702,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -766,7 +772,7 @@
"books": "Books",
"authors": "Authors",
"categories": "Categories",
"series": "Series"
"series": "Serieak"
},
"jdownloader": {
"downloadCount": "Queue",
@ -775,7 +781,7 @@
"downloadSpeed": "Speed"
},
"kavita": {
"seriesCount": "Series",
"seriesCount": "Serieak",
"totalFiles": "Files"
},
"azuredevops": {
@ -795,8 +801,8 @@
"status": "Status",
"online": "Online",
"offline": "Offline",
"name": "Name",
"map": "Map",
"name": "Izena",
"map": "Mapa",
"currentPlayers": "Current players",
"players": "Jokalariak",
"maxPlayers": "Max players",
@ -813,10 +819,10 @@
"recipes": "Recipes",
"users": "Users",
"categories": "Categories",
"tags": "Tags"
"tags": "Etiketak"
},
"openmediavault": {
"downloading": "Downloading",
"downloading": "Deskargatzen",
"total": "Guztira",
"running": "Running",
"stopped": "Stopped",
@ -826,8 +832,8 @@
"openwrt": {
"uptime": "Uptime",
"cpuLoad": "CPU Load Avg (5m)",
"up": "Up",
"down": "Down",
"up": "Gora",
"down": "Behera",
"bytesTx": "Transmitted",
"bytesRx": "Received"
},
@ -840,9 +846,9 @@
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"up": "Gora",
"seemsdown": "Seems Down",
"down": "Down",
"down": "Behera",
"unknown": "Ezezaguna"
},
"calendar": {
@ -850,7 +856,7 @@
"physicalRelease": "Physical release",
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
"noEventsFound": "Ez da gertaerarik aurkitu."
},
"romm": {
"platforms": "Platforms",
@ -862,7 +868,7 @@
},
"mailcow": {
"domains": "Domains",
"mailboxes": "Mailboxes",
"mailboxes": "Gutunontziak",
"mails": "Mails",
"storage": "Storage"
},
@ -871,15 +877,16 @@
"criticals": "Criticals"
},
"plantit": {
"events": "Events",
"plants": "Plants",
"photos": "Photos",
"events": "Ekitaldiak",
"plants": "Landareak",
"photos": "Argazkiak",
"species": "Species"
},
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"notifications": "Jakinarazpenak",
"issues": "Arazoak",
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -888,34 +895,34 @@
"playDuration": "Time Watched",
"sceneSize": "Scenes Size",
"sceneDuration": "Scenes Duration",
"images": "Images",
"imageSize": "Images Size",
"images": "Irudia",
"imageSize": "Irudiaren tamaina",
"galleries": "Galleries",
"performers": "Performers",
"studios": "Studios",
"movies": "Movies",
"tags": "Tags",
"movies": "Filmak",
"tags": "Etiketak",
"oCount": "O Count"
},
"tandoor": {
"users": "Users",
"recipes": "Recipes",
"keywords": "Keywords"
"keywords": "Hitz gakoak"
},
"homebox": {
"items": "Items",
"items": "Elementuak",
"totalWithWarranty": "With Warranty",
"locations": "Locations",
"labels": "Labels",
"labels": "Etiketak",
"users": "Users",
"totalValue": "Total Value"
"totalValue": "Guztira"
},
"crowdsec": {
"alerts": "Alerts",
"bans": "Bans"
},
"wgeasy": {
"connected": "Connected",
"connected": "Konektatuta",
"enabled": "Enabled",
"disabled": "Disabled",
"total": "Guztira"
@ -928,8 +935,8 @@
},
"myspeed": {
"ping": "Ping",
"download": "Download",
"upload": "Upload"
"download": "Jeitsierak",
"upload": "Kargatu"
},
"stocks": {
"stocks": "Stocks",
@ -945,23 +952,23 @@
},
"linkwarden": {
"links": "Links",
"collections": "Collections",
"tags": "Tags"
"collections": "Bildumak",
"tags": "Etiketak"
},
"zabbix": {
"unclassified": "Not classified",
"information": "Informazioa",
"warning": "Warning",
"average": "Average",
"high": "High",
"warning": "Abisua",
"average": "Batez besteko",
"high": "Altua",
"disaster": "Disaster"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"vehicles": "Ibilgailuak",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"reminders": "Oroigarriak",
"nextReminder": "Hurrengo abisua",
"none": "None"
},
"vikunja": {
@ -971,7 +978,7 @@
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"name": "Izena",
"address": "Address",
"last_seen": "Last Seen",
"status": "Status",
@ -979,10 +986,10 @@
"offline": "Offline"
},
"beszel": {
"name": "Name",
"name": "Izena",
"systems": "Systems",
"up": "Up",
"down": "Down",
"up": "Gora",
"down": "Behera",
"paused": "Paused",
"pending": "Pending",
"status": "Status",
@ -993,22 +1000,47 @@
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"apps": "Aplikazioak",
"synced": "Sinkronizatuta",
"outOfSync": "Out Of Sync",
"healthy": "Osasuntsu",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
"suspended": "Etenda"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"groups": "Taldeak",
"issues": "Arazoak",
"merges": "Merge Requests",
"projects": "Projects"
"projects": "Proiektuak"
},
"apcups": {
"status": "Status",
"load": "Load",
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"hoarder": {
"bookmarks": "Laster-markak",
"favorites": "Gogokoak",
"archived": "Artxibatuta",
"highlights": "Highlights",
"lists": "Zerrendak",
"tags": "Etiketak"
},
"slskd": {
"slskStatus": "Network",
"connected": "Konektatuta",
"disconnected": "Deskonektatuta",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -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": {
@ -702,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Tila",
"load": "Kuorma",
"bcharge": "Battery Charge",
"timeleft": "Aikaa jäljellä"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Saatavilla",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -57,14 +57,14 @@
"lan": "LAN",
"wlan": "WLAN",
"devices": "Équipt.",
"lan_devices": "Équipt. LAN",
"lan_devices": "Périphériques LAN",
"wlan_devices": "Périphériques WLAN",
"lan_users": "Utilisateurs LAN",
"wlan_users": "Utilisateurs WLAN",
"up": "Up",
"down": "INACTIF",
"wait": "Veuillez patienter",
"empty_data": "Statut sous-système inconnu"
"empty_data": "Statut du sous-système inconnu"
},
"docker": {
"rx": "Rx",
@ -77,24 +77,24 @@
"unknown": "Inconnu",
"healthy": "Fonctionnel",
"starting": "Démarrage",
"unhealthy": "Dysfonctionnement",
"not_found": "Inconnu",
"unhealthy": "Mauvaise santé",
"not_found": "Introuvable",
"exited": "Arrêté",
"partial": "Partiel"
},
"ping": {
"error": "Erreur",
"ping": "Ping",
"down": "Down",
"up": "Up",
"ping": "Latence",
"down": "Bas",
"up": "Haut",
"not_available": "Non disponible"
},
"siteMonitor": {
"http_status": "Statut HTTP",
"error": "Erreur",
"response": "Réponse",
"down": "Down",
"up": "Up",
"down": "Bas",
"up": "Haut",
"not_available": "Non disponible"
},
"emby": {
@ -105,7 +105,7 @@
"movies": "Films",
"series": "Séries TV",
"episodes": "Épisodes",
"songs": "Musique"
"songs": "Chansons"
},
"esphome": {
"offline": "Hors ligne",
@ -124,7 +124,7 @@
},
"flood": {
"download": "Récep.",
"upload": "Envoi",
"upload": "Téléverser",
"leech": "Leech",
"seed": "Seed"
},
@ -144,23 +144,25 @@
"uptime": "Démarré depuis",
"maxDown": "Max. Bas",
"maxUp": "Max. Haut",
"down": "Down",
"up": "Up",
"down": "Bas",
"up": "Haut",
"received": "Reçu",
"sent": "Envoyé",
"externalIPAddress": "IP externe"
"externalIPAddress": "IP externe",
"externalIPv6Address": "IPv6 externe",
"externalIPv6Prefix": "Préfixe IPv6 externe"
},
"caddy": {
"upstreams": "Upstreams",
"upstreams": "En amont",
"requests": "Demandes en cours",
"requests_failed": "Demandes échouées"
},
"changedetectionio": {
"totalObserved": "Total Observé",
"diffsDetected": "Diffs détectées"
"diffsDetected": "Différences détectées"
},
"channelsdvrserver": {
"shows": "Affichages",
"shows": "Séries",
"recordings": "Enregistrements",
"scheduled": "Planifié",
"passes": "Passes"
@ -174,10 +176,10 @@
},
"omada": {
"connectedAp": "AP connectés",
"activeUser": "Équipts actifs",
"activeUser": "Périphériques actifs",
"alerts": "Alertes",
"connectedGateway": "Passerelles connectées",
"connectedSwitches": "Switches connectés"
"connectedGateways": "Passerelles connectées",
"connectedSwitches": "Switchs connectés"
},
"nzbget": {
"rate": "Débit",
@ -188,7 +190,7 @@
"streams": "Flux actif",
"albums": "Albums",
"movies": "Films",
"tv": "Séries TV"
"tv": "Séries"
},
"sabnzbd": {
"rate": "Débit",
@ -197,32 +199,32 @@
},
"rutorrent": {
"active": "Actif",
"upload": "Envoi",
"upload": "Téléverser",
"download": "Récep."
},
"transmission": {
"download": "Récep.",
"upload": "Envoi",
"upload": "Téléverser",
"leech": "Leech",
"seed": "Seed"
},
"qbittorrent": {
"download": "Récep.",
"upload": "Envoi",
"upload": "Téléverser",
"leech": "Leech",
"seed": "Seed"
},
"qnap": {
"cpuUsage": "Cpu",
"memUsage": "Mém",
"systemTempC": "Temp",
"poolUsage": "Pool",
"volumeUsage": "Volume",
"cpuUsage": "Processeur utilisé",
"memUsage": "Mémoire utilisée",
"systemTempC": "Température système",
"poolUsage": "Utilisation de la pool",
"volumeUsage": "Utilisation du volume",
"invalid": "Invalide"
},
"deluge": {
"download": "Récep.",
"upload": "Envoi",
"upload": "Téléverser",
"leech": "Leech",
"seed": "Seed"
},
@ -232,33 +234,33 @@
},
"downloadstation": {
"download": "Récep.",
"upload": "Envoi",
"upload": "Téléverser",
"leech": "Leech",
"seed": "Seed"
},
"sonarr": {
"wanted": "Demande",
"queued": "Attente",
"wanted": "Demandé",
"queued": "En file d'attente",
"series": "Séries TV",
"queue": "En attente",
"unknown": "Inconnu"
},
"radarr": {
"wanted": "Demande",
"wanted": "Demandé",
"missing": "Manquant",
"queued": "Attente",
"queued": "En file d'attente",
"movies": "Films",
"queue": "En attente",
"unknown": "Inconnu"
},
"lidarr": {
"wanted": "Demande",
"queued": "Attente",
"wanted": "Demandé",
"queued": "En file d'attente",
"artists": "Artistes"
},
"readarr": {
"wanted": "Demande",
"queued": "Attente",
"wanted": "Demandé",
"queued": "En file d'attente",
"books": "Livres"
},
"bazarr": {
@ -267,18 +269,18 @@
},
"ombi": {
"pending": "En attente",
"approved": "Validé",
"approved": "Approuvé",
"available": "Disponible"
},
"jellyseerr": {
"pending": "En attente",
"approved": "Validé",
"approved": "Approuvé",
"available": "Disponible"
},
"overseerr": {
"pending": "En attente",
"processing": "Traitement",
"approved": "Validé",
"processing": "En cours de traitement",
"approved": "Approuvé",
"available": "Disponible"
},
"netalertx": {
@ -290,7 +292,7 @@
"pihole": {
"queries": "Requêtes",
"blocked": "Bloqué",
"blocked_percent": "Bloqué %",
"blocked_percent": "% bloqué",
"gravity": "Listes dom. bloqués"
},
"adguard": {
@ -300,9 +302,9 @@
"latency": "Latence"
},
"speedtest": {
"upload": "Envoi",
"upload": "Téléverser",
"download": "Récep.",
"ping": "Ping"
"ping": "Latence"
},
"portainer": {
"running": "Démarré",
@ -335,7 +337,7 @@
},
"technitium": {
"totalQueries": "Requêtes",
"totalNoError": "Effectué avec succès",
"totalNoError": "Succès",
"totalServerFailure": "Échecs",
"totalNxDomain": "Domaines NX",
"totalRefused": "Refusés",
@ -349,8 +351,8 @@
"tdarr": {
"queue": "En attente",
"processed": "Traité",
"errored": "En erreur",
"saved": "Libéré"
"errored": "Erroné",
"saved": "Enregistré"
},
"traefik": {
"routers": "Routeurs",
@ -374,35 +376,35 @@
"30days": "30 Jours"
},
"gotify": {
"apps": "Applis",
"apps": "Applications",
"clients": "Clients",
"messages": "Msg"
"messages": "Messages"
},
"prowlarr": {
"enableIndexers": "Indexeur",
"numberOfGrabs": "Capture",
"numberOfGrabs": "Captures",
"numberOfQueries": "Requêtes",
"numberOfFailGrabs": "Capt. échouée",
"numberOfFailQueries": "Dem. échouée"
"numberOfFailGrabs": "Captures échouées",
"numberOfFailQueries": "Demandes échouées"
},
"jackett": {
"configured": "Configuré",
"errored": "En erreur"
"errored": "Erroné"
},
"strelaysrv": {
"numActiveSessions": "Sessions",
"numConnections": "Cnx",
"numConnections": "Connexions",
"dataRelayed": "Relayé",
"transferRate": "Débit"
},
"mastodon": {
"user_count": "Utilisateurs",
"status_count": "Messages",
"status_count": "Articles",
"domain_count": "Domaines"
},
"medusa": {
"wanted": "Demande",
"queued": "Attente",
"wanted": "Demandé",
"queued": "En file d'attente",
"series": "Séries TV"
},
"minecraft": {
@ -418,13 +420,13 @@
},
"authentik": {
"users": "Utilisateurs",
"loginsLast24H": "Cnx. (24h)",
"failedLoginsLast24H": "Cnx. échouées (24h)"
"loginsLast24H": "Connexions (24 h)",
"failedLoginsLast24H": "Connexions échouées (24 h)"
},
"proxmox": {
"mem": "MÉM",
"cpu": "CPU",
"lxc": "LxC",
"lxc": "LXC",
"vms": "VMs"
},
"glances": {
@ -432,7 +434,7 @@
"load": "Charge",
"wait": "Veuillez patienter",
"temp": "Temp",
"_temp": "T°",
"_temp": "Température",
"warn": "Alerte",
"uptime": "Up",
"total": "Total",
@ -443,12 +445,12 @@
"crit": "Crit.",
"read": "Lu",
"write": "Écrit.",
"gpu": "GPU",
"gpu": "Carte Graphique",
"mem": "Mém.",
"swap": "Swap"
},
"quicklaunch": {
"bookmark": "Signet",
"bookmark": "Marque-Page",
"service": "Service",
"search": "Recherche",
"custom": "Personnalisé",
@ -458,13 +460,13 @@
},
"wmo": {
"0-day": "Ensoleillé",
"0-night": "Ciel clair",
"0-night": "Clair",
"1-day": "Principalement ensoleillé",
"1-night": "Principalement clair",
"2-day": "Partiellement couvert",
"2-night": "Partiellement couvert",
"3-day": "Couvert",
"3-night": "Couvert",
"2-day": "Partiellement nuageux",
"2-night": "Partiellement nuageux",
"3-day": "Nuageux",
"3-night": "Nuageux",
"45-day": "Brumeux",
"45-night": "Brumeux",
"48-day": "Brumeux",
@ -483,14 +485,14 @@
"61-night": "Pluie légère",
"63-day": "Pluie",
"63-night": "Pluie",
"65-day": "Pluie forte",
"65-night": "Pluie forte",
"65-day": "Forte pluie",
"65-night": "Forte pluie",
"66-day": "Pluie verglaçante",
"66-night": "Pluie verglaçante",
"67-day": "Pluie verglaçante",
"67-night": "Pluie verglaçante",
"71-day": "Neige légère",
"71-night": "Neige légère",
"71-day": "Légères chutes de neige",
"71-night": "Légères chutes de neige",
"73-day": "Neige",
"73-night": "Neige",
"75-day": "Neige abondante",
@ -521,15 +523,15 @@
"up_to_date": "À jour",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"up": "Haut",
"pending": "En attente",
"down": "Down"
"down": "Bas"
},
"healthchecks": {
"new": "Nouveau",
"up": "Up",
"up": "Haut",
"grace": "En Période de Grâce",
"down": "Down",
"down": "Bas",
"paused": "En Pause",
"status": "Statut",
"last_ping": "Dernier Ping",
@ -541,7 +543,7 @@
"containers_failed": "Échoué"
},
"autobrr": {
"approvedPushes": "Validé",
"approvedPushes": "Approuvé",
"rejectedPushes": "Rejeté",
"filters": "Filtres",
"indexers": "Indexeur"
@ -550,7 +552,7 @@
"downloads": "En attente",
"videos": "Vidéos",
"channels": "Chaînes",
"playlists": "Playlists"
"playlists": "Listes de lecture"
},
"truenas": {
"load": "Charge Système",
@ -590,9 +592,9 @@
"total": "Total"
},
"peanut": {
"battery_charge": "Charge Batterie",
"ups_load": "Charge de l'UPS",
"ups_status": "État de l'UPS",
"battery_charge": "Charge de la batterie",
"ups_load": "Charge de lASI",
"ups_status": "État de lASI",
"online": "En ligne",
"on_battery": "Sur Batterie",
"low_battery": "Batterie Faible"
@ -602,8 +604,8 @@
"no_devices": "Aucune donnée d'appareil reçue"
},
"mikrotik": {
"cpuLoad": "Charge CPU",
"memoryUsed": "Mém. Utilisée",
"cpuLoad": "Charge du processeur",
"memoryUsed": "Mémoire utilisée",
"uptime": "Démarré depuis",
"numberOfLeases": "Baux"
},
@ -615,25 +617,25 @@
"opendtu": {
"yieldDay": "Aujourd'hui",
"absolutePower": "Puissance",
"relativePower": "Puissance %",
"relativePower": "% de puissance",
"limit": "Limite"
},
"opnsense": {
"cpu": "Charge CPU",
"memory": "Mém. utilisée",
"cpu": "Charge du processeur",
"memory": "Mémoire utilisée",
"wanUpload": "WAN Envoi",
"wanDownload": "WAN Récep."
},
"moonraker": {
"printer_state": "État Imprimante",
"print_status": "Statut Imprimante",
"printer_state": "État de l'imprimante",
"print_status": "Statut de l'imprimante",
"print_progress": "Progression",
"layers": "Couches"
},
"octoprint": {
"printer_state": "Statut",
"temp_tool": "Tool T°",
"temp_bed": "Bed T°",
"temp_tool": "Temp. de l'outil",
"temp_bed": "Temp. du lit",
"job_completion": "Achèvement"
},
"cloudflared": {
@ -644,9 +646,9 @@
"load": "Charge moy.",
"memory": "Util. Mém.",
"wanStatus": "Statut WAN",
"up": "Up",
"down": "Down",
"temp": "T°",
"up": "Haut",
"down": "Bas",
"temp": "Température",
"disk": "Util. Disque",
"wanIP": "IP WAN"
},
@ -688,7 +690,7 @@
"mylar": {
"series": "Séries TV",
"issues": "Anomalies",
"wanted": "Demande"
"wanted": "Demandé"
},
"photoprism": {
"albums": "Albums",
@ -698,10 +700,14 @@
},
"fileflows": {
"queue": "En attente",
"processing": "Traitement",
"processing": "En cours de traitement",
"processed": "Traité",
"time": "Temps"
},
"firefly": {
"networth": "Valeur Nette",
"budget": "Budget"
},
"grafana": {
"dashboards": "Tableau de bord",
"datasources": "Sources données",
@ -754,9 +760,9 @@
"booksDuration": "Durée"
},
"homeassistant": {
"people_home": "People Home",
"people_home": "Personne à la maison",
"lights_on": "Lumières allumées",
"switches_on": "Commutateur On"
"switches_on": "Interrupteurs allumés"
},
"whatsupdocker": {
"monitoring": "Conteneurs",
@ -789,7 +795,7 @@
"inProgress": "En cours",
"totalPrs": "PRs Total",
"myPrs": "Mes PRs",
"approved": "Validé"
"approved": "Approuvé"
},
"gamedig": {
"status": "Statut",
@ -800,8 +806,8 @@
"currentPlayers": "Joueurs actuels",
"players": "Joueurs",
"maxPlayers": "Joueurs max",
"bots": "Bots",
"ping": "Ping"
"bots": "Robots",
"ping": "Latence"
},
"urbackup": {
"ok": "Ok",
@ -826,8 +832,8 @@
"openwrt": {
"uptime": "Démarré depuis",
"cpuLoad": "Charge moyenne CPU (5 min)",
"up": "Up",
"down": "Down",
"up": "Haut",
"down": "Bas",
"bytesTx": "Transmis",
"bytesRx": "Reçu"
},
@ -840,9 +846,9 @@
"sitesDown": "Hors ligne",
"paused": "En Pause",
"notyetchecked": "Non vérifié",
"up": "Up",
"up": "Haut",
"seemsdown": "Semble hors ligne",
"down": "Down",
"down": "Bas",
"unknown": "Inconnu"
},
"calendar": {
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Anomalies",
"pulls": "Demandes de tirage"
"pulls": "Demandes de tirage",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scènes",
@ -912,7 +919,7 @@
},
"crowdsec": {
"alerts": "Alertes",
"bans": "Exclusions"
"bans": "Bannissements"
},
"wgeasy": {
"connected": "Connecté",
@ -927,12 +934,12 @@
"banned": "Banni"
},
"myspeed": {
"ping": "Ping",
"ping": "Latence",
"download": "Récep.",
"upload": "Envoi"
"upload": "Téléverser"
},
"stocks": {
"stocks": "Actions",
"stocks": "Stocks",
"loading": "Chargement",
"open": "Ouvert - Marché américain",
"closed": "Fermé - marché américain",
@ -981,8 +988,8 @@
"beszel": {
"name": "Nom",
"systems": "Systèmes",
"up": "Up",
"down": "Down",
"up": "Haut",
"down": "Bas",
"paused": "En Pause",
"pending": "En attente",
"status": "Statut",
@ -1010,5 +1017,30 @@
"issues": "Anomalies",
"merges": "Demandes de fusion de branches",
"projects": "Projets"
},
"apcups": {
"status": "Statut",
"load": "Charge",
"bcharge": "Charge de la batterie",
"timeleft": "Temps restant"
},
"hoarder": {
"bookmarks": "Marque-pages",
"favorites": "Favoris",
"archived": "Archivé",
"highlights": "Highlights",
"lists": "Listes",
"tags": "Étiquettes"
},
"slskd": {
"slskStatus": "Réseau",
"connected": "Connecté",
"disconnected": "Déconnecté",
"updateStatus": "Mise à jour",
"update_yes": "Disponible",
"update_no": "À jour",
"downloads": "Téléchargements",
"uploads": "Téléversements",
"sharedFiles": "Fichiers"
}
}

View File

@ -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": {
@ -702,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "סטטוס",
"load": "עומס",
"bcharge": "Battery Charge",
"timeleft": "זמן שנותר"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "זמין",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -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": {
@ -702,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Status",
"load": "Load",
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -148,7 +148,9 @@
"up": "Dostupno",
"received": "Primljeno",
"sent": "Poslano",
"externalIPAddress": "Eksterna IP adresa"
"externalIPAddress": "Eksterna IP adresa",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Glavne grane",
@ -176,7 +178,7 @@
"connectedAp": "Povezani AP-ovi",
"activeUser": "Aktivni uređaji",
"alerts": "Upozorenja",
"connectedGateway": "Povezani pristupi",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Povezani prekidači"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Obrađeno",
"time": "Vrijeme"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Pregledne ploče",
"datasources": "Izvori podataka",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Obavijesti",
"issues": "Problemi",
"pulls": "Zahtjevi za povlačenje"
"pulls": "Zahtjevi za povlačenje",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scene",
@ -1010,5 +1017,30 @@
"issues": "Problemi",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Stanje",
"load": "Opterećenje",
"bcharge": "Napunjenost baterije",
"timeleft": "Preostalo vrijeme"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Oznake"
},
"slskd": {
"slskStatus": "Mreža",
"connected": "Povezano",
"disconnected": "Odspojeno",
"updateStatus": "Update",
"update_yes": "Dostupno",
"update_no": "Aktualno",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Datoteke"
}
}

View File

@ -148,7 +148,9 @@
"up": "Fel",
"received": "Fogadott",
"sent": "Küldött",
"externalIPAddress": "Külső IP cím"
"externalIPAddress": "Külső IP cím",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstreamek",
@ -176,7 +178,7 @@
"connectedAp": "Csatlakoztatott AP-k",
"activeUser": "Aktív eszközök",
"alerts": "Riasztások",
"connectedGateway": "Csatlakoztatott gateway-ek",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Csatlakoztatott switch-ek"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Feldolgozott",
"time": "Idő"
},
"firefly": {
"networth": "Nettó érték",
"budget": "Költségkeret"
},
"grafana": {
"dashboards": "Műszerfalak",
"datasources": "Adatforrások",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Üzenetek",
"issues": "Problémák",
"pulls": "Pull request-ek"
"pulls": "Pull request-ek",
"repositories": "Repositories"
},
"stash": {
"scenes": "Jelenetek",
@ -1010,5 +1017,30 @@
"issues": "Problémák",
"merges": "Merge kérések",
"projects": "Projektek"
},
"apcups": {
"status": "Státusz",
"load": "Terhelés",
"bcharge": "Akku töltöttsége",
"timeleft": "Hátralévő idő"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Címkék"
},
"slskd": {
"slskStatus": "Hálózat",
"connected": "Csatlakozva",
"disconnected": "Kapcsolat bontva",
"updateStatus": "Update",
"update_yes": "Elérhető",
"update_no": "Naprakész",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Fájlok"
}
}

View File

@ -14,7 +14,7 @@
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}",
"months": "bulan",
"months": "bln",
"days": "h",
"hours": "j",
"minutes": "m",
@ -140,7 +140,7 @@
"connectionStatusPendingDisconnect": "Menunggu Terputus",
"connectionStatusDisconnecting": "Sedan Memutus",
"connectionStatusDisconnected": "Terputus",
"connectionStatusConnected": "Connected",
"connectionStatusConnected": "Tersambung",
"uptime": "Waktu Aktif",
"maxDown": "Maks Unduh",
"maxUp": "Maks Unggah",
@ -148,7 +148,9 @@
"up": "Hidup",
"received": "Diterima",
"sent": "Terkirim",
"externalIPAddress": "IP Eksternal"
"externalIPAddress": "IP Eksternal",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Strim Luar",
@ -176,7 +178,7 @@
"connectedAp": "AP Tersambung",
"activeUser": "Perangakat yang Aktif",
"alerts": "Peringatan",
"connectedGateway": "Gateway Tersambung",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Switch Tersambung"
},
"nzbget": {
@ -283,9 +285,9 @@
},
"netalertx": {
"total": "Total",
"connected": "Connected",
"new_devices": "New Devices",
"down_alerts": "Down Alerts"
"connected": "Tersambung",
"new_devices": "Perangkat Baru",
"down_alerts": "Peringatan Pemadaman"
},
"pihole": {
"queries": "Kueri",
@ -311,17 +313,17 @@
},
"suwayomi": {
"download": "Terunduh",
"nondownload": "Non-Downloaded",
"nondownload": "Belum Diunduh",
"read": "Baca",
"unread": "Belum Dibaca",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
"downloadedread": "Diunduh & Dibaca",
"downloadedunread": "Diunduh & Belum Dibaca",
"nondownloadedread": "Belum Diunduh & Dibaca",
"nondownloadedunread": "Belum Diunduh & Belum Dibaca"
},
"tailscale": {
"address": "Alamat",
"expires": "Kadaluarsa",
"expires": "Kedaluwarsa",
"never": "Tidak Pernah",
"last_seen": "Terakhir terlihat",
"now": "Sekarang",
@ -335,12 +337,12 @@
},
"technitium": {
"totalQueries": "Kueri",
"totalNoError": "Success",
"totalServerFailure": "Failures",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
"totalNoError": "Berhasil",
"totalServerFailure": "Gagal",
"totalNxDomain": "Domain NX",
"totalRefused": "Ditolak",
"totalAuthoritative": "Authoritative",
"totalRecursive": "Recursive",
"totalRecursive": "Rekursif",
"totalCached": "Cached",
"totalBlocked": "Terblokir",
"totalDropped": "Dropped",
@ -702,6 +704,10 @@
"processed": "Terproses",
"time": "Waktu"
},
"firefly": {
"networth": "Kekayaan Bersih",
"budget": "Anggaran"
},
"grafana": {
"dashboards": "Dasbor",
"datasources": "Sumber Data",
@ -854,16 +860,16 @@
},
"romm": {
"platforms": "Platform",
"totalRoms": "Games",
"totalRoms": "Permainan",
"saves": "Saves",
"states": "States",
"screenshots": "Screenshots",
"totalfilesize": "Total Size"
"states": "Kondisi",
"screenshots": "Tangkapan Layar",
"totalfilesize": "Total Ukuran"
},
"mailcow": {
"domains": "Jumlah Domain",
"mailboxes": "Mailboxes",
"mails": "Mails",
"mailboxes": "Kotak surat",
"mails": "Surat",
"storage": "Penyimpanan"
},
"netdata": {
@ -879,51 +885,52 @@
"gitea": {
"notifications": "Notifikasi",
"issues": "Isu",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
"scenesPlayed": "Scenes Played",
"playCount": "Total Plays",
"playDuration": "Time Watched",
"sceneSize": "Scenes Size",
"sceneDuration": "Scenes Duration",
"images": "Images",
"imageSize": "Images Size",
"galleries": "Galleries",
"performers": "Performers",
"studios": "Studios",
"scenes": "Adegan",
"scenesPlayed": "Adegan Dimainkan",
"playCount": "Total Dimainkan",
"playDuration": "Waktu Ditonton",
"sceneSize": "Ukuran Adegan",
"sceneDuration": "Durasi Adegan",
"images": "Gambar",
"imageSize": "Ukuran Gambar",
"galleries": "Galeri",
"performers": "Pemain",
"studios": "Studio",
"movies": "Film",
"tags": "Tag",
"oCount": "O Count"
"oCount": "Jumlah O"
},
"tandoor": {
"users": "Pengguna",
"recipes": "Resep",
"keywords": "Keywords"
"keywords": "Kata Kunci"
},
"homebox": {
"items": "Items",
"totalWithWarranty": "With Warranty",
"locations": "Locations",
"labels": "Labels",
"totalWithWarranty": "Dengan Garansi",
"locations": "Lokasi",
"labels": "Label",
"users": "Pengguna",
"totalValue": "Total Value"
"totalValue": "Total Nilai"
},
"crowdsec": {
"alerts": "Peringatan",
"bans": "Bans"
},
"wgeasy": {
"connected": "Connected",
"connected": "Tersambung",
"enabled": "Aktif",
"disabled": "Nonaktif",
"total": "Total"
},
"swagdashboard": {
"proxied": "Proxied",
"proxied": "Diproksi",
"auth": "With Auth",
"outdated": "Outdated",
"outdated": "Usang",
"banned": "Banned"
},
"myspeed": {
@ -932,43 +939,43 @@
"upload": "Unggah"
},
"stocks": {
"stocks": "Stocks",
"loading": "Loading",
"open": "Open - US Market",
"closed": "Closed - US Market",
"invalidConfiguration": "Invalid Configuration"
"stocks": "Saham",
"loading": "Memuat",
"open": "Buka - Pasar AS",
"closed": "Tutup - Pasar AS",
"invalidConfiguration": "Konfigurasi Invalid"
},
"frigate": {
"cameras": "Cameras",
"cameras": "Kamera",
"uptime": "Waktu Aktif",
"version": "Versi"
},
"linkwarden": {
"links": "Links",
"collections": "Collections",
"links": "Tautan",
"collections": "Koleksi",
"tags": "Tag"
},
"zabbix": {
"unclassified": "Not classified",
"information": "Informasi",
"warning": "Warning",
"average": "Average",
"high": "High",
"disaster": "Disaster"
"warning": "Peringatan",
"average": "Rata-rata",
"high": "Tinggi",
"disaster": "Bencana"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
"vehicle": "Kendaraan",
"vehicles": "Kendaraan",
"serviceRecords": "Catatan Servis",
"reminders": "Pengingat",
"nextReminder": "Pengingat Berikutnya",
"none": "Tidak ada"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
"projects": "Proyek Aktif",
"tasks7d": "Tugas Jatuh Tempo Minggu Ini",
"tasksOverdue": "Tugas Terlewat",
"tasksInProgress": "Tugas Berlangsung"
},
"headscale": {
"name": "Nama",
@ -980,7 +987,7 @@
},
"beszel": {
"name": "Nama",
"systems": "Systems",
"systems": "Sistem",
"up": "Hidup",
"down": "Mati",
"paused": "Pause",
@ -989,26 +996,51 @@
"updated": "Terbarui",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"disk": "Diska",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"apps": "Apl",
"synced": "Tersinkron",
"outOfSync": "Tidak Sinkron",
"healthy": "Lancar",
"degraded": "Degraded",
"degraded": "Terdegradasi",
"progressing": "Progressing",
"missing": "Tidak Ditemukan",
"suspended": "Suspended"
"suspended": "Ditangguhkan"
},
"spoolman": {
"loading": "Loading"
"loading": "Memuat"
},
"gitlab": {
"groups": "Groups",
"groups": "Grup",
"issues": "Isu",
"merges": "Merge Requests",
"projects": "Projects"
"projects": "Proyek"
},
"apcups": {
"status": "Status",
"load": "Beban",
"bcharge": "Sisa Baterai",
"timeleft": "Sisa Waktu"
},
"hoarder": {
"bookmarks": "Markah",
"favorites": "Favorit",
"archived": "Diarsipkan",
"highlights": "Sorotan",
"lists": "Daftar",
"tags": "Tag"
},
"slskd": {
"slskStatus": "Jaringan",
"connected": "Tersambung",
"disconnected": "Terputus",
"updateStatus": "Update",
"update_yes": "Tersedia",
"update_no": "Terbaru",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "File"
}
}

View File

@ -148,7 +148,9 @@
"up": "Up",
"received": "Ricevuti",
"sent": "Inviati",
"externalIPAddress": "IP Esterno"
"externalIPAddress": "IP Esterno",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstream",
@ -176,7 +178,7 @@
"connectedAp": "AP Connessi",
"activeUser": "Dispositivi attivi",
"alerts": "Allarmi",
"connectedGateway": "Gateway connessi",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Switch connessi"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Elaborati",
"time": "Tempo"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboard",
"datasources": "Origine dei Dati",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifiche",
"issues": "Problemi",
"pulls": "Richieste di Pull"
"pulls": "Richieste di Pull",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scene",
@ -1010,5 +1017,30 @@
"issues": "Problemi",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Stato",
"load": "Carico",
"bcharge": "Carica Batteria",
"timeleft": "Tempo Rimanente"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tag"
},
"slskd": {
"slskStatus": "Rete",
"connected": "Connesso",
"disconnected": "Disconnesso",
"updateStatus": "Update",
"update_yes": "Disponibili",
"update_no": "Aggiornato",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "File"
}
}

View File

@ -148,7 +148,9 @@
"up": "稼働",
"received": "受信済み",
"sent": "送信済み",
"externalIPAddress": "退出ID"
"externalIPAddress": "退出ID",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "アップストリーム",
@ -176,7 +178,7 @@
"connectedAp": "接続されたAP",
"activeUser": "アクティブデバイス",
"alerts": "アラート",
"connectedGateway": "接続されたゲートウェイ",
"connectedGateways": "Connected gateways",
"connectedSwitches": "接続スイッチ"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "処理済み",
"time": "時間"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "ダッシュ ボード",
"datasources": "データソース",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "通知",
"issues": "課題",
"pulls": "プルリクエスト"
"pulls": "プルリクエスト",
"repositories": "Repositories"
},
"stash": {
"scenes": "シーン",
@ -1010,5 +1017,30 @@
"issues": "課題",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "状態",
"load": "ロード",
"bcharge": "バッテリー充電",
"timeleft": "残り時間"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "タグ"
},
"slskd": {
"slskStatus": "ネットワーク",
"connected": "接続済",
"disconnected": "切断されました",
"updateStatus": "Update",
"update_yes": "利用可",
"update_no": "最新",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "ファイル"
}
}

View File

@ -148,7 +148,9 @@
"up": "Up",
"received": "수신됨",
"sent": "전송됨",
"externalIPAddress": "Ext. IP"
"externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "연결된 AP",
"activeUser": "활성 장치",
"alerts": "경고",
"connectedGateway": "연결된 게이트웨이",
"connectedGateways": "Connected gateways",
"connectedSwitches": "연결된 스위치"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "처리됨",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "대시보드",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "알림",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "장면",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "상태",
"load": "부하",
"bcharge": "배터리 충전 중",
"timeleft": "남은 시간"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "태그"
},
"slskd": {
"slskStatus": "네트워크",
"connected": "연결됨",
"disconnected": "연결 끊김",
"updateStatus": "Update",
"update_yes": "이용 가능",
"update_no": "최신 상태",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "파일"
}
}

View File

@ -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": "Savienotie piekļuves punkti",
"activeUser": "Aktīvās ierīces",
"alerts": "Paziņojumi",
"connectedGateway": "Savienotās vārtejas",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Savienotie komutatori"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Statuss",
"load": "Ielādē",
"bcharge": "Battery Charge",
"timeleft": "Atlikušais laiks"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -148,7 +148,9 @@
"up": "Hidup",
"received": "Diterima",
"sent": "Telah dihantar",
"externalIPAddress": "IP Luaran"
"externalIPAddress": "IP Luaran",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs",
"activeUser": "Peranti aktif",
"alerts": "Perhatian",
"connectedGateway": "Connected gateways",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Sudah diprosess",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Adegan",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Status",
"load": "Beban",
"bcharge": "Bateri dicas",
"timeleft": "Masa Tinggal"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tanda nama"
},
"slskd": {
"slskStatus": "Rangkaian",
"connected": "Connected",
"disconnected": "Sambungan Terputus",
"updateStatus": "Update",
"update_yes": "Sudah Ada",
"update_no": "Terkemaskini",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -148,7 +148,9 @@
"up": "Online",
"received": "Ontvangen",
"sent": "Verzonden",
"externalIPAddress": "Ext. IP"
"externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Verbonden APs",
"activeUser": "Actieve apparaten",
"alerts": "Meldingen",
"connectedGateway": "Verbonden gateways",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Verbonden switches"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Verwerkt",
"time": "Tijd"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Bronnen",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notificaties",
"issues": "Problemen",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scènes",
@ -1010,5 +1017,30 @@
"issues": "Problemen",
"merges": "Merge Verzoeken",
"projects": "Projecten"
},
"apcups": {
"status": "Status",
"load": "Belasting",
"bcharge": "Batterij opladen",
"timeleft": "Resterende Tijd"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Label"
},
"slskd": {
"slskStatus": "Netwerk",
"connected": "Verbonden",
"disconnected": "Verbinding verbroken",
"updateStatus": "Update",
"update_yes": "Beschikbaar",
"update_no": "Bijgewerkt",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Bestanden"
}
}

View File

@ -148,7 +148,9 @@
"up": "Oppe",
"received": "Mottatt",
"sent": "Sendt",
"externalIPAddress": "Ekstern IP"
"externalIPAddress": "Ekstern IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Oppstrøms",
@ -176,7 +178,7 @@
"connectedAp": "Tilkoblede AP'er",
"activeUser": "Aktive enheter",
"alerts": "Varsler",
"connectedGateway": "Tilkoblede gateways",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Tilkoblede switcher"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Behandlet",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Varslinger",
"issues": "Issues",
"pulls": "Forespørsel"
"pulls": "Forespørsel",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scener",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Status",
"load": "Last",
"bcharge": "Batteriladning",
"timeleft": "Gjenstående tid"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Stikkord"
},
"slskd": {
"slskStatus": "Nettverk",
"connected": "Tilkoblet",
"disconnected": "Frakoblet",
"updateStatus": "Update",
"update_yes": "Tilgjengelig",
"update_no": "Oppdatert",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -148,7 +148,9 @@
"up": "Dostępny",
"received": "Odebrane",
"sent": "Wysłane",
"externalIPAddress": "Pub. IP"
"externalIPAddress": "Pub. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Połączone punkty dostępowe",
"activeUser": "Aktywne urządzenia",
"alerts": "Alarmy",
"connectedGateway": "Połączone bramy",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Połączone przełączniki"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Przetworzone",
"time": "Czas"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Panel główny",
"datasources": "Źródła danych",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Powiadomienia",
"issues": "Zgłoszenia",
"pulls": "Żądania Pull"
"pulls": "Żądania Pull",
"repositories": "Repositories"
},
"stash": {
"scenes": "Sceny",
@ -1010,5 +1017,30 @@
"issues": "Zgłoszenia",
"merges": "Żądania scaleń",
"projects": "Projekty"
},
"apcups": {
"status": "Stan",
"load": "Obciążenie",
"bcharge": "Stan baterii",
"timeleft": "Pozostało"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tagi"
},
"slskd": {
"slskStatus": "Sieć",
"connected": "Połączono",
"disconnected": "Rozłączono",
"updateStatus": "Update",
"update_yes": "Dostępne",
"update_no": "Aktualny",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Pliki"
}
}

View File

@ -148,7 +148,9 @@
"up": "Up",
"received": "Recebido",
"sent": "Enviado",
"externalIPAddress": "Endereço IP Externo"
"externalIPAddress": "Endereço IP Externo",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "APs Ligados",
"activeUser": "Dispositivos activos",
"alerts": "Alertas",
"connectedGateway": "Gateways ligados",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Switches ligados"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Processado",
"time": "Hora"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Painéis",
"datasources": "Origem de Dados",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notificações",
"issues": "Problemas",
"pulls": "Solicitar pull"
"pulls": "Solicitar pull",
"repositories": "Repositories"
},
"stash": {
"scenes": "Cenas",
@ -1010,5 +1017,30 @@
"issues": "Problemas",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Estado",
"load": "Carga",
"bcharge": "Carga da bateria",
"timeleft": "Tempo Restante"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Etiquetas"
},
"slskd": {
"slskStatus": "Rede",
"connected": "Conectado",
"disconnected": "Desconectado",
"updateStatus": "Update",
"update_yes": "Disponível",
"update_no": "Atualizado",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Ficheiros"
}
}

View File

@ -47,7 +47,7 @@
"load": "Carga",
"temp": "TEMP",
"max": "Máximo",
"uptime": "CIMA"
"uptime": "ATIVO"
},
"unifi": {
"users": "Usuários",
@ -61,7 +61,7 @@
"wlan_devices": "Dispositivos WLAN",
"lan_users": "Usuários de LAN",
"wlan_users": "Usuários de WLAN",
"up": "CIMA",
"up": "ATIVO",
"down": "Desligado",
"wait": "Por favor, aguarde",
"empty_data": "Status do Subsistema desconhecido"
@ -148,7 +148,9 @@
"up": "Ativo",
"received": "Recebido",
"sent": "Enviado",
"externalIPAddress": "IP Externo"
"externalIPAddress": "IP Externo",
"externalIPv6Address": "IPv6 Externo",
"externalIPv6Prefix": "Prefixo IPv6 Externo"
},
"caddy": {
"upstreams": "Streams de Envio",
@ -176,7 +178,7 @@
"connectedAp": "APs Ligados",
"activeUser": "Dispositivos ativos",
"alerts": "Alertas",
"connectedGateway": "Gateways conectados",
"connectedGateways": "Gateways conectados",
"connectedSwitches": "Switches conectados"
},
"nzbget": {
@ -227,8 +229,8 @@
"seed": "Semente"
},
"develancacheui": {
"cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Cache Miss Bytes"
"cachehitbytes": "Bytes de Acerto de Cache",
"cachemissbytes": "Bytes de Falha de Cache"
},
"downloadstation": {
"download": "Descarregar",
@ -311,13 +313,13 @@
},
"suwayomi": {
"download": "Baixado",
"nondownload": "Non-Downloaded",
"nondownload": "Não Baixado",
"read": "Lido",
"unread": "Não lida",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
"downloadedread": "Baixado e Lido",
"downloadedunread": "Baixado e Não Lido",
"nondownloadedread": "Não Baixado e Lido",
"nondownloadedunread": "Não Baixado e Não Lido"
},
"tailscale": {
"address": "Endereço",
@ -335,15 +337,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": "Autoritativo",
"totalRecursive": "Recursivo",
"totalCached": "Em cache",
"totalBlocked": "Bloqueado",
"totalDropped": "Dropped",
"totalDropped": "Perdidos",
"totalClients": "Clientes"
},
"tdarr": {
@ -434,7 +436,7 @@
"temp": "TEMP",
"_temp": "Temperatura",
"warn": "Aviso",
"uptime": "CIMA",
"uptime": "ATIVO",
"total": "Total",
"free": "Livre",
"used": "Utilizado",
@ -702,6 +704,10 @@
"processed": "Processado",
"time": "Hora"
},
"firefly": {
"networth": "Valor Líquido",
"budget": "Orçamento"
},
"grafana": {
"dashboards": "Painéis",
"datasources": "Origem de Dados",
@ -854,16 +860,16 @@
},
"romm": {
"platforms": "Plataformas",
"totalRoms": "Games",
"totalRoms": "Jogos",
"saves": "Saves",
"states": "States",
"screenshots": "Screenshots",
"totalfilesize": "Total Size"
"states": "Estados",
"screenshots": "Capturas de Tela",
"totalfilesize": "Tamanho total"
},
"mailcow": {
"domains": "Domínios",
"mailboxes": "Mailboxes",
"mails": "Mails",
"mailboxes": "Caixas de e-mail",
"mails": "Mensagens",
"storage": "Armazenamento"
},
"netdata": {
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notificações",
"issues": "Problemas",
"pulls": "Solicitações de Envio"
"pulls": "Solicitações de Envio",
"repositories": "Repositories"
},
"stash": {
"scenes": "Cenas",
@ -945,30 +952,30 @@
},
"linkwarden": {
"links": "Links",
"collections": "Collections",
"collections": "Coleções",
"tags": "Marcadores"
},
"zabbix": {
"unclassified": "Not classified",
"unclassified": "Não classificado",
"information": "Informação",
"warning": "Warning",
"average": "Average",
"high": "High",
"disaster": "Disaster"
"warning": "Aviso",
"average": "Médio",
"high": "Alto",
"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"
"projects": "Projetos Ativos",
"tasks7d": "Tarefas que vencem nesta semana",
"tasksOverdue": "Tarefas Atrasadas",
"tasksInProgress": "Tarefas em Andamento"
},
"headscale": {
"name": "Nome",
@ -980,7 +987,7 @@
},
"beszel": {
"name": "Nome",
"systems": "Systems",
"systems": "Sistemas",
"up": "Ativo",
"down": "Inativo",
"paused": "Pausado",
@ -989,26 +996,51 @@
"updated": "Atualizado",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
"disk": "Disco",
"network": "Rede"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"apps": "Aplicativos",
"synced": "Sincronizado",
"outOfSync": "Fora de sincronia",
"healthy": "Saudável",
"degraded": "Degraded",
"progressing": "Progressing",
"degraded": "Degradado",
"progressing": "Progredindo",
"missing": "Faltando",
"suspended": "Suspended"
"suspended": "Suspenso"
},
"spoolman": {
"loading": "Carregando"
},
"gitlab": {
"groups": "Groups",
"groups": "Grupos",
"issues": "Problemas",
"merges": "Merge Requests",
"projects": "Projects"
"merges": "Solicitações de mesclagem",
"projects": "Projetos"
},
"apcups": {
"status": "Status",
"load": "Carga",
"bcharge": "Carga da bateria",
"timeleft": "Tempo restante"
},
"hoarder": {
"bookmarks": "Favoritos",
"favorites": "Favoritos",
"archived": "Arquivados",
"highlights": "Destaques",
"lists": "Listas",
"tags": "Marcadores"
},
"slskd": {
"slskStatus": "Rede",
"connected": "Conectado",
"disconnected": "Desconectado",
"updateStatus": "Update",
"update_yes": "Disponível",
"update_no": "Atualizado",
"downloads": "Transferências",
"uploads": "Envios",
"sharedFiles": "Arquivos"
}
}

View File

@ -148,7 +148,9 @@
"up": "Sus",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
"externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstreamuri",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs",
"activeUser": "Active devices",
"alerts": "Alerts",
"connectedGateway": "Connected gateways",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Stare",
"load": "Sarcină",
"bcharge": "Battery Charge",
"timeleft": "Timp rămas"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Disponibile",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -148,7 +148,9 @@
"up": "Онлайн",
"received": "Получено",
"sent": "Отправлено",
"externalIPAddress": "Внеш. IP"
"externalIPAddress": "Внеш. IP",
"externalIPv6Address": "Внешний IPv6",
"externalIPv6Prefix": "Внешний IPv6 префикс"
},
"caddy": {
"upstreams": "Входящие каналы",
@ -176,7 +178,7 @@
"connectedAp": "Подключенные точки доступа",
"activeUser": "Активные устройства",
"alerts": "Предупреждения",
"connectedGateway": "Подключенные шлюзы",
"connectedGateways": "Подключенные шлюзы",
"connectedSwitches": "Подключенные коммутаторы"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Обработано",
"time": "Время"
},
"firefly": {
"networth": "Общая средства",
"budget": "Бюджет"
},
"grafana": {
"dashboards": "Панели",
"datasources": "Источники данных",
@ -855,7 +861,7 @@
"romm": {
"platforms": "Платформы",
"totalRoms": "Игры",
"saves": "Сейвы",
"saves": "Сохранения",
"states": "Состояния",
"screenshots": "Скриншоты",
"totalfilesize": "Общий объем"
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Уведомления",
"issues": "Вопросы",
"pulls": "Запросы на слияние (Pull Request)"
"pulls": "Запросы на слияние (Pull Request)",
"repositories": "Repositories"
},
"stash": {
"scenes": "Сцены",
@ -921,7 +928,7 @@
"total": "Всего"
},
"swagdashboard": {
"proxied": "Прокси",
"proxied": "Проксировано",
"auth": "С Авторизацией",
"outdated": "Устаревшие",
"banned": "Заблокированные"
@ -952,17 +959,17 @@
"unclassified": "Не классифицировано",
"information": "Информация",
"warning": "Предупреждение",
"average": "Средняя",
"average": "Среднее",
"high": "Высокая",
"disaster": "Чрезвычайная"
"disaster": "Чрезвычайное"
},
"lubelogger": {
"vehicle": "Автомобиль",
"vehicles": "Автомобили",
"serviceRecords": "Сервисные работы",
"vehicle": "Транспорт",
"vehicles": "Транспорты",
"serviceRecords": "Сервисные записи",
"reminders": "Напоминания",
"nextReminder": "Следующее напоминание",
"none": "Нет"
"none": "Отсутствует"
},
"vikunja": {
"projects": "Активные Проекты",
@ -1010,5 +1017,30 @@
"issues": "Вопросы",
"merges": "Мердж-реквесты",
"projects": "Проекты"
},
"apcups": {
"status": "Статус",
"load": "Загрузка",
"bcharge": "Заряд батареи",
"timeleft": "Осталось"
},
"hoarder": {
"bookmarks": "Закладки",
"favorites": "Избранное",
"archived": "Архивированное",
"highlights": "События",
"lists": "Список",
"tags": "Теги"
},
"slskd": {
"slskStatus": "Сеть",
"connected": "Подключено",
"disconnected": "Отключено",
"updateStatus": "Обновление",
"update_yes": "Доступно",
"update_no": "Последняя версия",
"downloads": "Скачивания",
"uploads": "Загрузки",
"sharedFiles": "Файлов"
}
}

View File

@ -148,7 +148,9 @@
"up": "Nahrávanie",
"received": "Prijaté",
"sent": "Odoslané",
"externalIPAddress": "Ext. IP"
"externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Odosielanie dát",
@ -176,7 +178,7 @@
"connectedAp": "Pripojené prístupové body",
"activeUser": "Aktívne zariadenia",
"alerts": "Upozornenia",
"connectedGateway": "Pripojené sieťové brány",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Pripojené prepínače"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Spracované",
"time": "Čas"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Panely",
"datasources": "Zdroje dát",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Oznámenia",
"issues": "Problémy",
"pulls": "Pull requesty"
"pulls": "Pull requesty",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scény",
@ -1010,5 +1017,30 @@
"issues": "Problémy",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Stav",
"load": "Záťaž",
"bcharge": "Nabitie batérie",
"timeleft": "Zostávajúci čas"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Štítky"
},
"slskd": {
"slskStatus": "Sieť",
"connected": "Pripojené",
"disconnected": "Odpojené",
"updateStatus": "Update",
"update_yes": "Dostupné",
"update_no": "Aktuálny",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Súborov"
}
}

View File

@ -148,7 +148,9 @@
"up": "Povezan",
"received": "Prejeto",
"sent": "Poslano",
"externalIPAddress": "Zun. IP"
"externalIPAddress": "Zun. IP",
"externalIPv6Address": "Eks. IPv6",
"externalIPv6Prefix": "Eks. IPv6-predpona"
},
"caddy": {
"upstreams": "Pretok gor",
@ -176,7 +178,7 @@
"connectedAp": "Povezanih AP",
"activeUser": "Aktivne naprave",
"alerts": "Opozorila",
"connectedGateway": "Povezan prehod",
"connectedGateways": "Povezani prehodi",
"connectedSwitches": "Povezana stikala"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "Procesiran",
"time": "Čas"
},
"firefly": {
"networth": "Neto vrednost",
"budget": "Proračun"
},
"grafana": {
"dashboards": "Nadzorne plošče",
"datasources": "Viri podatkov",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Obvestila",
"issues": "Težave",
"pulls": "Zahteve za prenos"
"pulls": "Zahteve za prenos",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scene",
@ -1010,5 +1017,30 @@
"issues": "Težave",
"merges": "Združi zahtevke",
"projects": "Projekti"
},
"apcups": {
"status": "Stanje",
"load": "Bremenitev",
"bcharge": "Napolnjenost baterije",
"timeleft": "Preostali čas"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Značke"
},
"slskd": {
"slskStatus": "Omrežje",
"connected": "Povezan",
"disconnected": "Prekinjeno",
"updateStatus": "Update",
"update_yes": "Na voljo",
"update_no": "Posodobljeno",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Datotek"
}
}

View File

@ -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": {
@ -702,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Status",
"load": "Load",
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -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": {
@ -702,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Status",
"load": "Laddar",
"bcharge": "Battery Charge",
"timeleft": "Tid kvar"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Tillgänglig",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -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": {
@ -702,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "హోదా",
"load": "లోడ్",
"bcharge": "Battery Charge",
"timeleft": "మిగిలి వున్న సమయం"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "అందుబాటులో వున్నవి",
"update_no": "తాజాగా",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -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": {
@ -702,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "สถานะ",
"load": "โหลด",
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -148,7 +148,9 @@
"up": "Yükleme",
"received": "Alınan",
"sent": "Gönderilen",
"externalIPAddress": "Harici IP"
"externalIPAddress": "Harici IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Akış",
@ -176,7 +178,7 @@
"connectedAp": "Bağlı AP'ler",
"activeUser": "Aktif cihazlar",
"alerts": "Alarmlar",
"connectedGateway": "Bağlı ağ geçitleri",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Bağlı anahtarlar"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "İşlendi",
"time": "Zaman"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Kontrol Paneli",
"datasources": "Veri Kaynakları",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Bildirimler",
"issues": "Sorunlar",
"pulls": "Değişiklik İstekleri"
"pulls": "Değişiklik İstekleri",
"repositories": "Repositories"
},
"stash": {
"scenes": "Sahneler",
@ -1010,5 +1017,30 @@
"issues": "Sorunlar",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Durum",
"load": "Yük",
"bcharge": "Pil Yüzdesi",
"timeleft": "Kalan Zaman"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Etiketler"
},
"slskd": {
"slskStatus": "Ağ",
"connected": "Bağlandı",
"disconnected": "Bağlantı kesildi",
"updateStatus": "Update",
"update_yes": "Kullanılabilir",
"update_no": "Güncel",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Dosyalar"
}
}

View File

@ -148,7 +148,9 @@
"up": "Онлайн",
"received": "Отримано",
"sent": "Надіслано",
"externalIPAddress": "Зовнішній IP"
"externalIPAddress": "Зовнішній IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Потоки",
@ -176,7 +178,7 @@
"connectedAp": "Підключені точки доступу",
"activeUser": "Активні пристрої",
"alerts": "Оповіщення",
"connectedGateway": "Підключені шлюзи",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Підключені перемикачі"
},
"nzbget": {
@ -285,13 +287,13 @@
"total": "Усього",
"connected": "З'єднано",
"new_devices": "Нові пристрої",
"down_alerts": "Спов. про падіння"
"down_alerts": "Сповіщення про падіння"
},
"pihole": {
"queries": "Запити",
"blocked": "Заблоковано",
"blocked_percent": "Заблоковано %",
"gravity": "Гравітація"
"gravity": "Доменів в списку"
},
"adguard": {
"queries": "Запити",
@ -702,6 +704,10 @@
"processed": "Обробка",
"time": "Час"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Інформаційні панелі",
"datasources": "Джерела даних",
@ -856,7 +862,7 @@
"platforms": "Платформи",
"totalRoms": "Ігри",
"saves": "Збереження",
"states": "Штати",
"states": "Стани",
"screenshots": "Знімки екрану",
"totalfilesize": "Загальний обсяг"
},
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Сповіщення",
"issues": "Питання",
"pulls": "Pull-запити"
"pulls": "Pull-запити",
"repositories": "Repositories"
},
"stash": {
"scenes": "Сцени",
@ -1010,5 +1017,30 @@
"issues": "Питання",
"merges": "Запити на злиття",
"projects": "Проєкти"
},
"apcups": {
"status": "Стан",
"load": "Завантаження",
"bcharge": "Заряд батареї",
"timeleft": "Залишилось"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Теги"
},
"slskd": {
"slskStatus": "Мережа",
"connected": "З'єднано",
"disconnected": "Відключено",
"updateStatus": "Update",
"update_yes": "Доступно",
"update_no": "Актуально",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Файли"
}
}

View File

@ -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": {
@ -702,6 +704,10 @@
"processed": "Processed",
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests"
"pulls": "Pull Requests",
"repositories": "Repositories"
},
"stash": {
"scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Trạng thái",
"load": "Load",
"bcharge": "Battery Charge",
"timeleft": "Thời gian còn lại"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -148,7 +148,9 @@
"up": "在線",
"received": "已接收",
"sent": "已送出",
"externalIPAddress": "外部 IP"
"externalIPAddress": "外部 IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "上行",
@ -176,7 +178,7 @@
"connectedAp": "已連接的存取點",
"activeUser": "在線裝置",
"alerts": "警示",
"connectedGateway": "已連接的閘道",
"connectedGateways": "Connected gateways",
"connectedSwitches": "已連接的交換器"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "已處理",
"time": "時間"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "控制面板",
"datasources": "數據來源",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "信息",
"issues": "出版",
"pulls": "提取請求"
"pulls": "提取請求",
"repositories": "Repositories"
},
"stash": {
"scenes": "場景",
@ -1010,5 +1017,30 @@
"issues": "出版",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "狀況",
"load": "負荷",
"bcharge": "充電",
"timeleft": "用時"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "標籤"
},
"slskd": {
"slskStatus": "網絡",
"connected": "Connected",
"disconnected": "連接已中斷",
"updateStatus": "Update",
"update_yes": "可用",
"update_no": "已更新至最新",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "檔案"
}
}

View File

@ -148,7 +148,9 @@
"up": "Up",
"received": "已接收",
"sent": "已发送",
"externalIPAddress": "外部IP"
"externalIPAddress": "外部IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "上游",
@ -176,7 +178,7 @@
"connectedAp": "连接中的AP",
"activeUser": "活跃设备",
"alerts": "警报",
"connectedGateway": "已连接网关",
"connectedGateways": "Connected gateways",
"connectedSwitches": "已连接开关"
},
"nzbget": {
@ -311,13 +313,13 @@
},
"suwayomi": {
"download": "下载",
"nondownload": "Non-Downloaded",
"nondownload": "未下载",
"read": "已读",
"unread": "未读",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
"downloadedread": "已下载 & 已读",
"downloadedunread": "已下载 & 未读",
"nondownloadedread": "未下载 & 已读",
"nondownloadedunread": "未下载 & 未读"
},
"tailscale": {
"address": "地址",
@ -702,6 +704,10 @@
"processed": "已处理",
"time": "时间"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "控制面板",
"datasources": "数据来源",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "通知",
"issues": "问题",
"pulls": "PR"
"pulls": "PR",
"repositories": "Repositories"
},
"stash": {
"scenes": "场景",
@ -980,7 +987,7 @@
},
"beszel": {
"name": "Name",
"systems": "Systems",
"systems": "系统",
"up": "Up",
"down": "Down",
"paused": "暂停",
@ -989,26 +996,51 @@
"updated": "已升级",
"cpu": "CPU",
"memory": "内存",
"disk": "Disk",
"network": "NET"
"disk": "磁盘",
"network": "网络"
},
"argocd": {
"apps": "应用程序",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"synced": "已同步",
"outOfSync": "未同步",
"healthy": "健康",
"degraded": "Degraded",
"progressing": "Progressing",
"degraded": "已降级",
"progressing": "进行中",
"missing": "丢失",
"suspended": "Suspended"
"suspended": "已停用"
},
"spoolman": {
"loading": "正在加载"
},
"gitlab": {
"groups": "Groups",
"groups": "群组",
"issues": "问题",
"merges": "Merge Requests",
"projects": "Projects"
"merges": "合并请求",
"projects": "项目"
},
"apcups": {
"status": "状态",
"load": "负载",
"bcharge": "充电中",
"timeleft": "剩余时间"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "网络",
"connected": "已连接",
"disconnected": "未连接",
"updateStatus": "Update",
"update_yes": "可用",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View File

@ -148,7 +148,9 @@
"up": "在線",
"received": "已接收",
"sent": "已送出",
"externalIPAddress": "外部 IP"
"externalIPAddress": "外部 IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "上行",
@ -176,7 +178,7 @@
"connectedAp": "已連接的存取點",
"activeUser": "在線裝置",
"alerts": "警示",
"connectedGateway": "已連接的閘道",
"connectedGateways": "Connected gateways",
"connectedSwitches": "已連接的交換器"
},
"nzbget": {
@ -702,6 +704,10 @@
"processed": "已處理",
"time": "時間"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "控制面板",
"datasources": "數據來源",
@ -879,7 +885,8 @@
"gitea": {
"notifications": "信息",
"issues": "出版",
"pulls": "提取請求"
"pulls": "提取請求",
"repositories": "Repositories"
},
"stash": {
"scenes": "場景",
@ -1010,5 +1017,30 @@
"issues": "出版",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "狀態",
"load": "負載",
"bcharge": "充電",
"timeleft": "剩餘時間"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "標籤"
},
"slskd": {
"slskStatus": "網絡",
"connected": "Connected",
"disconnected": "連接已中斷",
"updateStatus": "Update",
"update_yes": "可觀看",
"update_no": "已更新至最新",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "檔案"
}
}

View File

@ -1,10 +1,10 @@
import { useRef, useEffect } from "react";
import classNames from "classnames";
import { Disclosure, Transition } from "@headlessui/react";
import { MdKeyboardArrowDown } from "react-icons/md";
import ErrorBoundary from "components/errorboundry";
import classNames from "classnames";
import List from "components/bookmarks/list";
import ErrorBoundary from "components/errorboundry";
import ResolvedIcon from "components/resolvedicon";
import { useEffect, useRef } from "react";
import { MdKeyboardArrowDown } from "react-icons/md";
export default function BookmarksGroup({
bookmarks,
@ -12,6 +12,7 @@ export default function BookmarksGroup({
disableCollapse,
groupsInitiallyCollapsed,
bookmarksStyle,
maxGroupColumns,
}) {
const panel = useRef();
@ -25,6 +26,9 @@ export default function BookmarksGroup({
className={classNames(
"bookmark-group flex-1 overflow-hidden",
layout?.style === "row" ? "basis-full" : "basis-full md:basis-1/4 lg:basis-1/5 xl:basis-1/6",
layout?.style !== "row" && maxGroupColumns && parseInt(maxGroupColumns, 10) > 6
? `3xl:basis-1/${maxGroupColumns}`
: "",
layout?.header === false ? "px-1" : "p-1 pb-0",
)}
>

View File

@ -1,7 +1,7 @@
import { useContext } from "react";
import classNames from "classnames";
import { SettingsContext } from "utils/contexts/settings";
import ResolvedIcon from "components/resolvedicon";
import { useContext } from "react";
import { SettingsContext } from "utils/contexts/settings";
export default function Item({ bookmark, iconOnly = false }) {
const description = bookmark.description ?? new URL(bookmark.href).hostname;
@ -22,7 +22,7 @@ export default function Item({ bookmark, iconOnly = false }) {
className={classNames(
settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? "-" : ""}${settings.cardBlur}`,
"text-left cursor-pointer transition-all rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10",
iconOnly ? "h-[60px] w-[60px] grid" : "block w-full h-8 mb-3",
iconOnly ? "h-[60px] w-[60px] grid" : "block w-full mb-3",
)}
>
{iconOnly ? (

View File

@ -1,6 +1,6 @@
/* eslint-disable @next/next/no-img-element */
/* eslint-disable jsx-a11y/alt-text */
import { useRef, useEffect, useContext } from "react";
import { useContext, useEffect, useRef } from "react";
import { ColorContext } from "utils/contexts/color";
import themes from "utils/styles/themes";

View File

@ -1,6 +1,6 @@
import { useTranslation } from "react-i18next";
import { useEffect, useState, useRef, useCallback, useContext } from "react";
import classNames from "classnames";
import { useTranslation } from "next-i18next";
import { useCallback, useContext, useEffect, useRef, useState } from "react";
import useSWR from "swr";
import { SettingsContext } from "utils/contexts/settings";
@ -53,7 +53,7 @@ export default function QuickLaunch({ servicesAndBookmarks, searchString, setSea
const result = results[currentItemIndex];
window.open(
result.href,
newWindow ? "_blank" : result.target ?? searchProvider?.target ?? settings.target ?? "_blank",
newWindow ? "_blank" : (result.target ?? searchProvider?.target ?? settings.target ?? "_blank"),
"noreferrer",
);
}
@ -204,7 +204,8 @@ export default function QuickLaunch({ servicesAndBookmarks, searchString, setSea
return () => {
abortController.abort();
};
}, [searchString, servicesAndBookmarks, searchDescriptions, hideVisitURL, searchSuggestions, searchProvider, url, t]);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [searchString, servicesAndBookmarks, searchDescriptions, hideVisitURL, searchSuggestions, searchProvider, url]);
const [hidden, setHidden] = useState(true);
useEffect(() => {

View File

@ -1,5 +1,5 @@
import { useContext } from "react";
import Image from "next/image";
import { useContext } from "react";
import { SettingsContext } from "utils/contexts/settings";
import { ThemeContext } from "utils/contexts/theme";

View File

@ -1,7 +1,7 @@
import { Fragment } from "react";
import { Menu, Transition } from "@headlessui/react";
import { BiCog } from "react-icons/bi";
import classNames from "classnames";
import { Fragment } from "react";
import { BiCog } from "react-icons/bi";
export default function Dropdown({ options, value, setValue }) {
return (

View File

@ -1,16 +1,16 @@
import { useRef, useEffect } from "react";
import classNames from "classnames";
import { Disclosure, Transition } from "@headlessui/react";
import { MdKeyboardArrowDown } from "react-icons/md";
import List from "components/services/list";
import classNames from "classnames";
import ResolvedIcon from "components/resolvedicon";
import List from "components/services/list";
import { useEffect, useRef } from "react";
import { MdKeyboardArrowDown } from "react-icons/md";
import { columnMap } from "../../utils/layout/columns";
export default function ServicesGroup({
group,
layout,
fiveColumns,
maxGroupColumns,
disableCollapse,
useEqualHeights,
groupsInitiallyCollapsed,
@ -31,7 +31,7 @@ export default function ServicesGroup({
className={classNames(
"services-group flex-1",
layout?.style === "row" ? "basis-full" : "basis-full md:basis-1/2 lg:basis-1/3 xl:basis-1/4",
layout?.style !== "row" && fiveColumns ? "3xl:basis-1/5" : "",
layout?.style !== "row" && maxGroupColumns ? `3xl:basis-1/${maxGroupColumns}` : "",
groupPadding,
isSubgroup ? "subgroup" : "",
)}
@ -97,7 +97,7 @@ export default function ServicesGroup({
key={subgroup.name}
group={subgroup}
layout={layout?.[subgroup.name]}
fiveColumns={fiveColumns}
maxGroupColumns={maxGroupColumns}
disableCollapse={disableCollapse}
useEqualHeights={useEqualHeights}
groupsInitiallyCollapsed={groupsInitiallyCollapsed}

View File

@ -1,15 +1,15 @@
import classNames from "classnames";
import ResolvedIcon from "components/resolvedicon";
import { useContext, useState } from "react";
import { SettingsContext } from "utils/contexts/settings";
import Docker from "widgets/docker/component";
import Kubernetes from "widgets/kubernetes/component";
import { SettingsContext } from "utils/contexts/settings";
import ResolvedIcon from "components/resolvedicon";
import Status from "./status";
import Widget from "./widget";
import KubernetesStatus from "./kubernetes-status";
import Ping from "./ping";
import SiteMonitor from "./site-monitor";
import KubernetesStatus from "./kubernetes-status";
import Status from "./status";
import Widget from "./widget";
export default function Item({ service, groupName, useEqualHeights }) {
const hasLink = service.href && service.href !== "#";

View File

@ -1,5 +1,5 @@
import useSWR from "swr";
import { t } from "i18next";
import useSWR from "swr";
export default function KubernetesStatus({ service, style }) {
const podSelectorString = service.podSelector !== undefined ? `podSelector=${service.podSelector}` : "";

View File

@ -1,4 +1,4 @@
import { useTranslation } from "react-i18next";
import { useTranslation } from "next-i18next";
import useSWR from "swr";
export default function Ping({ groupName, serviceName, style }) {

View File

@ -1,4 +1,4 @@
import { useTranslation } from "react-i18next";
import { useTranslation } from "next-i18next";
import useSWR from "swr";
export default function SiteMonitor({ groupName, serviceName, style }) {

View File

@ -1,4 +1,4 @@
import { useTranslation } from "react-i18next";
import { useTranslation } from "next-i18next";
import useSWR from "swr";
export default function Status({ service, style }) {

View File

@ -1,5 +1,5 @@
import { useTranslation } from "next-i18next";
import ErrorBoundary from "components/errorboundry";
import { useTranslation } from "next-i18next";
import components from "widgets/components";

View File

@ -1,5 +1,5 @@
import { useTranslation } from "next-i18next";
import classNames from "classnames";
import { useTranslation } from "next-i18next";
export default function Block({ value, label }) {
const { t } = useTranslation();

View File

@ -3,6 +3,11 @@ import { SettingsContext } from "utils/contexts/settings";
import Error from "./error";
const ALIASED_WIDGETS = {
pialert: "netalertx",
hoarder: "karakeep",
};
export default function Container({ error = false, children, service }) {
const { settings } = useContext(SettingsContext);
@ -32,7 +37,17 @@ export default function Container({ error = false, children, service }) {
if (!field.includes(".")) {
fullField = `${type}.${field}`;
}
return fullField === child?.props?.label;
let matches = fullField === child?.props?.label;
// check if the field is an 'alias'
if (matches) {
return true;
} else if (ALIASED_WIDGETS[type]) {
matches = fullField.replace(type, ALIASED_WIDGETS[type]) === child?.props?.label;
return matches;
}
// no match
return false;
}),
);
}

View File

@ -1,4 +1,4 @@
import { useTranslation } from "react-i18next";
import { useTranslation } from "next-i18next";
import { IoAlertCircle } from "react-icons/io5";
function displayError(error) {

View File

@ -1,5 +1,5 @@
import { useContext } from "react";
import classNames from "classnames";
import { useContext } from "react";
import { TabContext } from "utils/contexts/tab";
function slugify(tabName) {

View File

@ -1,7 +1,7 @@
import { useContext, Fragment } from "react";
import { IoColorPalette } from "react-icons/io5";
import { Popover, Transition } from "@headlessui/react";
import classNames from "classnames";
import { Fragment, useContext } from "react";
import { IoColorPalette } from "react-icons/io5";
import { ColorContext } from "utils/contexts/color";
const colors = [

View File

@ -1,9 +1,12 @@
import { useTranslation } from "next-i18next";
import useSWR from "swr";
import { compareVersions, validate } from "compare-versions";
import cache from "memory-cache";
import { useTranslation } from "next-i18next";
import { MdNewReleases } from "react-icons/md";
import useSWR from "swr";
export default function Version() {
const LATEST_RELEASE_CACHE_KEY = "latestRelease";
export default function Version({ disableUpdateCheck = false }) {
const { t, i18n } = useTranslation();
const buildTime = process.env.NEXT_PUBLIC_BUILDTIME?.length
@ -12,8 +15,6 @@ export default function Version() {
const revision = process.env.NEXT_PUBLIC_REVISION?.length ? process.env.NEXT_PUBLIC_REVISION : "dev";
const version = process.env.NEXT_PUBLIC_VERSION?.length ? process.env.NEXT_PUBLIC_VERSION : "dev";
const { data: releaseData } = useSWR("/api/releases");
// use Intl.DateTimeFormat to format the date
const formatDate = (date) => {
const options = {
@ -24,7 +25,15 @@ export default function Version() {
return new Intl.DateTimeFormat(i18n.language, options).format(new Date(date));
};
const latestRelease = releaseData?.[0];
let latestRelease = cache.get(LATEST_RELEASE_CACHE_KEY);
const { data: releaseData } = useSWR(latestRelease || disableUpdateCheck ? null : "/api/releases");
if (releaseData) {
latestRelease = releaseData?.[0];
// cache the latest release for 1h
cache.put(LATEST_RELEASE_CACHE_KEY, latestRelease, 3600000);
}
return (
<div id="version" className="flex flex-row items-center">

View File

@ -1,5 +1,5 @@
import { useState, useEffect } from "react";
import { useTranslation } from "next-i18next";
import { useEffect, useState } from "react";
import Container from "../widget/container";
import Raw from "../widget/raw";

View File

@ -1,9 +1,9 @@
import useSWR from "swr";
import classNames from "classnames";
import { useTranslation } from "next-i18next";
import { useContext } from "react";
import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa";
import { FiCpu, FiHardDrive } from "react-icons/fi";
import { useTranslation } from "next-i18next";
import classNames from "classnames";
import useSWR from "swr";
import { SettingsContext } from "utils/contexts/settings";
import Error from "../widget/error";

View File

@ -1,8 +1,8 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import useSWR from "swr";
import Error from "../widget/error";
import Container from "../widget/container";
import Error from "../widget/error";
import Raw from "../widget/raw";
import Node from "./node";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "next-i18next";
import { FaMemory } from "react-icons/fa";
import { FiAlertTriangle, FiCpu, FiServer } from "react-icons/fi";
import { SiKubernetes } from "react-icons/si";
import { useTranslation } from "next-i18next";
import UsageBar from "../resources/usage-bar";

View File

@ -1,7 +1,7 @@
import useSWR from "swr";
import Error from "../widget/error";
import Container from "../widget/container";
import Error from "../widget/error";
import Raw from "../widget/raw";
import Node from "./node";

View File

@ -1,16 +1,16 @@
import useSWR from "swr";
import { useState } from "react";
import { WiCloudDown } from "react-icons/wi";
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
import { useTranslation } from "next-i18next";
import { useState } from "react";
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
import { WiCloudDown } from "react-icons/wi";
import useSWR from "swr";
import Error from "../widget/error";
import mapIcon from "../../../utils/weather/openmeteo-condition-map";
import Container from "../widget/container";
import ContainerButton from "../widget/container_button";
import WidgetIcon from "../widget/widget_icon";
import Error from "../widget/error";
import PrimaryText from "../widget/primary_text";
import SecondaryText from "../widget/secondary_text";
import mapIcon from "../../../utils/weather/openmeteo-condition-map";
import WidgetIcon from "../widget/widget_icon";
function Widget({ options }) {
const { t } = useTranslation();

View File

@ -1,16 +1,16 @@
import useSWR from "swr";
import { useState } from "react";
import { WiCloudDown } from "react-icons/wi";
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
import { useTranslation } from "next-i18next";
import { useState } from "react";
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
import { WiCloudDown } from "react-icons/wi";
import useSWR from "swr";
import Error from "../widget/error";
import mapIcon from "../../../utils/weather/owm-condition-map";
import Container from "../widget/container";
import ContainerButton from "../widget/container_button";
import Error from "../widget/error";
import PrimaryText from "../widget/primary_text";
import SecondaryText from "../widget/secondary_text";
import WidgetIcon from "../widget/widget_icon";
import mapIcon from "../../../utils/weather/owm-condition-map";
function Widget({ options }) {
const { t, i18n } = useTranslation();

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