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* **/compose*
**/Dockerfile* **/Dockerfile*
**/node_modules **/node_modules
!.next/standalone/node_modules
**/npm-debug.log **/npm-debug.log
**/obj **/obj
**/secrets.dev.yaml **/secrets.dev.yaml
**/values.dev.yaml **/values.dev.yaml
**/.next
README.md README.md
config/ config/
k3d/ k3d/

View File

@ -1,9 +1,4 @@
name: Docker name: Docker CI
# 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.
on: on:
schedule: schedule:
@ -13,7 +8,6 @@ on:
- main - main
- feature/** - feature/**
- dev - dev
# Publish semver tags as releases.
tags: [ 'v*.*.*' ] tags: [ 'v*.*.*' ]
paths-ignore: paths-ignore:
- 'docs/**' - 'docs/**'
@ -26,89 +20,56 @@ on:
merge_group: merge_group:
env: env:
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }} IMAGE_NAME: ${{ github.repository }}
jobs: jobs:
pre-commit: pre-commit:
name: Linting Checks name: Linting Checks
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:
- - name: Checkout repository
name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
-
name: Install python - name: Install python
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
python-version: 3.x python-version: 3.x
-
name: Check files - name: Check files
uses: pre-commit/action@v3.0.1 uses: pre-commit/action@v3.0.1
-
name: Install pnpm - name: Install pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4
with: with:
version: 10 version: 10
run_install: false run_install: false
-
name: Install Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4
with: with:
node-version: 20 node-version: 20
cache: 'pnpm' cache: 'pnpm'
-
name: Install dependencies - name: Install dependencies
run: pnpm install run: pnpm install
-
name: Lint frontend - name: Lint frontend
run: pnpm run lint run: pnpm run lint
build: build:
name: Docker Build & Push name: Docker Build & Push
if: github.repository == 'gethomepage/homepage' if: github.repository == 'gethomepage/homepage'
runs-on: self-hosted runs-on: self-hosted
needs: needs: [ pre-commit ]
- pre-commit
permissions: permissions:
contents: read contents: read
packages: write packages: write
# This is used to complete the identity challenge
# with sigstore/fulcio when running outside of PRs.
id-token: write id-token: write
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 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 - name: Extract Docker metadata
id: meta id: meta
uses: docker/metadata-action@v5 uses: docker/metadata-action@v5
@ -116,11 +77,69 @@ jobs:
images: | images: |
${{ env.IMAGE_NAME }} ${{ env.IMAGE_NAME }}
ghcr.io/${{ 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: | flavor: |
latest=auto latest=auto
# Build and push Docker image with Buildx (don't push on PR) - name: Next.js build cache
# https://github.com/docker/build-push-action 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 - name: Build and push Docker image
id: build-and-push id: build-and-push
uses: docker/build-push-action@v6 uses: docker/build-push-action@v6
@ -130,18 +149,15 @@ jobs:
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
build-args: | build-args: |
CI=true
BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }} BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}
VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }} 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 platforms: linux/amd64,linux/arm64
cache-from: type=local,src=/tmp/.buildx-cache cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max 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 - name: Move cache
run: | run: |
rm -rf /tmp/.buildx-cache rm -rf /tmp/.buildx-cache

View File

@ -55,7 +55,7 @@ jobs:
run: MKINSIDERS=false mkdocs build run: MKINSIDERS=false mkdocs build
deploy: deploy:
name: 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 runs-on: ubuntu-latest
needs: needs:
- pre-commit - pre-commit

View File

@ -9,11 +9,14 @@ repos:
- id: check-yaml - id: check-yaml
exclude: "(^mkdocs\\.yml$)" exclude: "(^mkdocs\\.yml$)"
- id: check-added-large-files - id: check-added-large-files
- repo: https://github.com/pre-commit/mirrors-prettier - repo: https://github.com/rbubley/mirrors-prettier
rev: 'v3.0.3' rev: 'v3.3.3'
hooks: hooks:
- id: prettier - id: prettier
types_or: types_or:
- javascript - javascript
- markdown - markdown
- jsx - 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 # =========================
# Builder Stage
# Install dependencies only when needed # =========================
FROM docker.io/node:22-alpine AS deps FROM node:22-slim AS builder
WORKDIR /app WORKDIR /app
COPY --link package.json pnpm-lock.yaml* ./ # Setup
RUN mkdir config
SHELL ["/bin/ash", "-xeo", "pipefail", "-c"] COPY . .
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
ARG CI
ARG BUILDTIME ARG BUILDTIME
ARG VERSION ARG VERSION
ARG REVISION ARG REVISION
ENV CI=$CI
COPY --link --from=deps /app/node_modules ./node_modules/ # Install and build only outside CI
COPY . . 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 \ # Runtime Stage
&& mkdir config \ # =========================
&& NEXT_PUBLIC_BUILDTIME=$BUILDTIME NEXT_PUBLIC_VERSION=$VERSION NEXT_PUBLIC_REVISION=$REVISION npm run build FROM node:22-alpine AS runner
LABEL org.opencontainers.image.title="Homepage"
# Production image, copy all the files and run next LABEL org.opencontainers.image.description="A self-hosted services landing page, with docker and service integrations."
FROM docker.io/node:22-alpine AS runner
LABEL org.opencontainers.image.title "Homepage"
LABEL org.opencontainers.image.description "A self-hosted services landing page, with docker and service integrations."
LABEL org.opencontainers.image.url="https://github.com/gethomepage/homepage" 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.documentation='https://github.com/gethomepage/homepage/wiki'
LABEL org.opencontainers.image.source='https://github.com/gethomepage/homepage' LABEL org.opencontainers.image.source='https://github.com/gethomepage/homepage'
LABEL org.opencontainers.image.licenses='Apache-2.0' LABEL org.opencontainers.image.licenses='Apache-2.0'
ENV NODE_ENV=production # Setup
WORKDIR /app WORKDIR /app
# Copy files from context (this allows the files to copy before the builder stage is done). # Copy some files from context
COPY --link --chown=1000:1000 package.json next.config.js ./
COPY --link --chown=1000:1000 /public ./public/ 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/ 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 ENV PORT=3000
EXPOSE $PORT EXPOSE $PORT
HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \ 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"] ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["node", "server.js"] CMD ["node", "server.js"]

View File

@ -10,7 +10,7 @@ RUN <<EOF
apk add libc6-compat apk add libc6-compat
apk add --virtual .gyp python3 make g++ apk add --virtual .gyp python3 make g++
npm install -g pnpm npm install -g pnpm
npm install -g next pnpm install -g next
EOF 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" 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 image: ghcr.io/gethomepage/homepage:latest
container_name: homepage container_name: homepage
environment: environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
PUID: 1000 # optional, your user id PUID: 1000 # optional, your user id
PGID: 1000 # optional, your group id PGID: 1000 # optional, your group id
ports: ports:
@ -94,6 +95,7 @@ or docker run:
```bash ```bash
docker run --name homepage \ docker run --name homepage \
-e HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev \
-e PUID=1000 \ -e PUID=1000 \
-e PGID=1000 \ -e PGID=1000 \
-p 3000:3000 \ -p 3000:3000 \
@ -111,7 +113,7 @@ First, clone the repository:
git clone https://github.com/gethomepage/homepage.git 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 ```bash
pnpm install 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. # 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. # 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 # 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 # Drop privileges (when asked to) if root, otherwise run as current user
if [ "$(id -u)" == "0" ] && [ "${PUID}" != "0" ]; then 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: Example settings:
```yaml ```yaml
ingress: true # enable ingress only ingress: true # default, enable ingress only
``` ```
or or
```yaml ```yaml
ingress: true # enable ingress ingress: true # default, enable ingress
traefik: true # enable traefik ingressRoute traefik: true # enable traefik ingressRoute
gateway: true # enable gateway-api 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. 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 ```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 ## Favicon
@ -254,15 +254,29 @@ layout:
columns: 4 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 ```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 ### Collapsible sections
@ -447,7 +461,7 @@ quicklaunch:
suggestionUrl: https://ac.ecosia.org/autocomplete?type=list&q= 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: 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 hideVersion: true
``` ```
You can disable checking for new versions from GitHub (enabled by default) with:
```yaml
disableUpdateCheck: true
```
## Log Path ## 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. 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 - /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations - /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations
environment: 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 ### Running as non-root
@ -38,7 +38,7 @@ services:
- /path/to/config:/app/config # Make sure your local config directory exists - /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods - /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods
environment: environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required when deploying via public URL HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
PUID: $PUID PUID: $PUID
PGID: $PGID PGID: $PGID
``` ```

View File

@ -13,20 +13,28 @@ You have a few options for deploying homepage, depending on your needs. We offer
<br> <br>
<div class="grid cards" style="margin: 0 auto;" markdown> <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 } { .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 } { .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 } { .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 } { .card }
</div> </div>
### `HOMEPAGE_ALLOWED_HOSTS` ### `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 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 ## 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`. 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 - name: homepage
image: "ghcr.io/gethomepage/homepage:latest" image: "ghcr.io/gethomepage/homepage:latest"
imagePullPolicy: Always imagePullPolicy: Always
env:
- name: HOMEPAGE_ALLOWED_HOSTS
value: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
ports: ports:
- name: http - name: http
containerPort: 3000 containerPort: 3000

View File

@ -9,7 +9,13 @@ First, clone the repository:
git clone https://github.com/gethomepage/homepage.git 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 ```bash
pnpm install pnpm install
@ -21,7 +27,9 @@ If this is your first time starting, copy the `src/skeleton` directory to `confi
Finally, run the server: Finally, run the server:
```bash ```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. 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 { .md-tabs__link {
transform: translateZ(0); 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 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. - Check the browser error console, this can also sometimes provide useful information.
- Consider setting the `ENV` variable `LOG_LEVEL` to `debug`. - 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 ## Service Widget Errors
@ -66,3 +67,17 @@ All service widgets work essentially the same, that is, homepage makes a proxied
## Missing custom icons ## 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. 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 requestBody: # optional, can be string or object, see below
display: # optional, default to block, see below display: # optional, default to block, see below
mappings: mappings:
- field: key # needs to be YAML string or object - field: key
label: Field 1 label: Field 1
format: text # optional - defaults to text format: text # optional - defaults to text
- field: # needs to be YAML string or object - field: path.to.key2
path:
to: key2
format: number # optional - defaults to text format: number # optional - defaults to text
label: Field 2 label: Field 2
- field: # needs to be YAML string or object - field: path.to.another.key3
path:
to:
another: key3
label: Field 3 label: Field 3
format: percent # optional - defaults to text format: percent # optional - defaults to text
- field: key # needs to be YAML string or object - field: key
label: Field 4 label: Field 4
format: date # optional - defaults to text format: date # optional - defaults to text
locale: nl # optional locale: nl # optional
dateStyle: long # optional - defaults to "long". Allowed values: `["full", "long", "medium", "short"]`. dateStyle: long # optional - defaults to "long". Allowed values: `["full", "long", "medium", "short"]`.
timeStyle: medium # optional - 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 label: Field 5
format: relativeDate # optional - defaults to text format: relativeDate # optional - defaults to text
locale: nl # optional locale: nl # optional
@ -49,9 +44,7 @@ widget:
label: Field 6 label: Field 6
format: text format: text
additionalField: # optional additionalField: # optional
field: field: hourly.time.key
hourly:
time: other key
color: theme # optional - defaults to "". Allowed values: `["theme", "adaptive", "black", "white"]`. color: theme # optional - defaults to "". Allowed values: `["theme", "adaptive", "black", "white"]`.
format: date # optional format: date # optional
- field: key - field: key
@ -103,9 +96,16 @@ mappings:
label: Name label: Name
- field: status # Alive - field: status # Alive
label: Status label: Status
- field: - field: origin.name # Earth (C-137)
origin: name # Earth (C-137)
label: Origin 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: - field:
locations: locations:
1: name # Citadel of Ricks 1: name # Citadel of Ricks
@ -138,7 +138,15 @@ You can manipulate data with the following tools `remap`, `scale`, `prefix` and
prefix: "$" 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`. 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 - any: true # will map all other values
to: Unknown to: Unknown
additionalField: additionalField:
field: field: hourly.time.key
hourly:
time: key
color: theme color: theme
format: date 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 ## Custom Headers
Pass custom headers using the `headers` option, for example: 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. 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 ```yaml
widget: 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) - [HDHomeRun](hdhomerun.md)
- [Headscale](headscale.md) - [Headscale](headscale.md)
- [Healthchecks](healthchecks.md) - [Healthchecks](healthchecks.md)
- [Karakeep](karakeep.md)
- [Home Assistant](homeassistant.md) - [Home Assistant](homeassistant.md)
- [HomeBox](homebox.md) - [HomeBox](homebox.md)
- [Homebridge](homebridge.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) - [ruTorrent](rutorrent.md)
- [SABnzbd](sabnzbd.md) - [SABnzbd](sabnzbd.md)
- [Scrutiny](scrutiny.md) - [Scrutiny](scrutiny.md)
- [Slskd](slskd.md)
- [Sonarr](sonarr.md) - [Sonarr](sonarr.md)
- [Speedtest Tracker](speedtest-tracker.md) - [Speedtest Tracker](speedtest-tracker.md)
- [Stash](stash.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 url: http://komga.host.or.ip:port
username: username username: username
password: password 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: docker:
settings: settings:
env:
- name: HOMEPAGE_ALLOWED_HOSTS
value: "homepage.k3d.localhost:8080"
serviceAccount: serviceAccount:
create: true create: true
name: homepage name: homepage

View File

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

8767
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,10 @@
{ {
"name": "homepage", "name": "homepage",
"version": "0.10.9", "version": "1.1.1",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "next dev -p 8080", "dev": "next dev -p 8080",
"preinstall": "npx only-allow pnpm",
"build": "next build", "build": "next build",
"start": "next start", "start": "next start",
"lint": "next lint", "lint": "next lint",
@ -18,13 +19,13 @@
"dockerode": "^4.0.4", "dockerode": "^4.0.4",
"follow-redirects": "^1.15.9", "follow-redirects": "^1.15.9",
"gamedig": "^5.2.0", "gamedig": "^5.2.0",
"i18next": "^21.10.0", "i18next": "^24.2.3",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"json-rpc-2.0": "^1.7.0", "json-rpc-2.0": "^1.7.0",
"luxon": "^3.5.0", "luxon": "^3.5.0",
"memory-cache": "^0.2.0", "memory-cache": "^0.2.0",
"minecraftstatuspinger": "^1.2.1", "minecraftstatuspinger": "^1.2.2",
"next": "^15.1.7", "next": "^15.2.4",
"next-i18next": "^12.1.0", "next-i18next": "^12.1.0",
"ping": "^0.4.4", "ping": "^0.4.4",
"pretty-bytes": "^6.1.1", "pretty-bytes": "^6.1.1",
@ -36,7 +37,7 @@
"recharts": "^2.12.6", "recharts": "^2.12.6",
"react-icons": "^5.4.0", "react-icons": "^5.4.0",
"rrule": "^2.8.1", "rrule": "^2.8.1",
"swr": "^1.3.0", "swr": "^2.3.3",
"systeminformation": "^5.25.11", "systeminformation": "^5.25.11",
"tough-cookie": "^5.1.2", "tough-cookie": "^5.1.2",
"urbackup-server-api": "^0.8.9", "urbackup-server-api": "^0.8.9",
@ -47,15 +48,16 @@
"@tailwindcss/forms": "^0.5.10", "@tailwindcss/forms": "^0.5.10",
"@tailwindcss/postcss": "^4.0.9", "@tailwindcss/postcss": "^4.0.9",
"eslint": "^9.21.0", "eslint": "^9.21.0",
"eslint-config-next": "^15.1.7", "eslint-config-next": "^15.2.4",
"eslint-config-prettier": "^10.0.2", "eslint-config-prettier": "^10.1.1",
"eslint-plugin-import": "^2.31.0", "eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-prettier": "^5.2.3", "eslint-plugin-prettier": "^5.2.3",
"eslint-plugin-react": "^7.37.4", "eslint-plugin-react": "^7.37.4",
"eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-react-hooks": "^5.1.0",
"postcss": "^8.5.2", "postcss": "^8.5.3",
"prettier": "^3.5.2", "prettier": "^3.5.2",
"prettier-plugin-organize-imports": "^4.1.0",
"tailwind-scrollbar": "^4.0.1", "tailwind-scrollbar": "^4.0.1",
"tailwindcss": "^4.0.9", "tailwindcss": "^4.0.9",
"typescript": "^5.7.3" "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", "up": "Op",
"received": "Ontvang", "received": "Ontvang",
"sent": "Gestuur", "sent": "Gestuur",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Voorvoegsel"
}, },
"caddy": { "caddy": {
"upstreams": "Stroomop", "upstreams": "Stroomop",
@ -176,7 +178,7 @@
"connectedAp": "Gekoppelde APs", "connectedAp": "Gekoppelde APs",
"activeUser": "Aktiewe toestelle", "activeUser": "Aktiewe toestelle",
"alerts": "Waarskuwings", "alerts": "Waarskuwings",
"connectedGateway": "Gekoppelde poorte", "connectedGateways": "Gekoppelde poorte",
"connectedSwitches": "Gekoppelde skakelaars" "connectedSwitches": "Gekoppelde skakelaars"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Verwerk", "processed": "Verwerk",
"time": "Tyd" "time": "Tyd"
}, },
"firefly": {
"networth": "Netto Waarde",
"budget": "Begroting"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Databronne", "datasources": "Databronne",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Kennisgewings", "notifications": "Kennisgewings",
"issues": "Kwessies", "issues": "Kwessies",
"pulls": "Trek Versoeke" "pulls": "Trek Versoeke",
"repositories": "Bewaarplekke"
}, },
"stash": { "stash": {
"scenes": "Tonele", "scenes": "Tonele",
@ -1010,5 +1017,30 @@
"issues": "Kwessies", "issues": "Kwessies",
"merges": "Saamvleg Versoeke", "merges": "Saamvleg Versoeke",
"projects": "Projekte" "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": "يعمل", "up": "يعمل",
"received": "تم الإستلام", "received": "تم الإستلام",
"sent": "تم الإرسال", "sent": "تم الإرسال",
"externalIPAddress": "IP الخارجي" "externalIPAddress": "IP الخارجي",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "تدفق", "upstreams": "تدفق",
@ -176,7 +178,7 @@
"connectedAp": "المتصلة APs", "connectedAp": "المتصلة APs",
"activeUser": "الأجهزة النشطة", "activeUser": "الأجهزة النشطة",
"alerts": "تنبيهات", "alerts": "تنبيهات",
"connectedGateway": "البوابات المتصلة", "connectedGateways": "Connected gateways",
"connectedSwitches": "مفاتيح التبديل المتصلة" "connectedSwitches": "مفاتيح التبديل المتصلة"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "معالجة", "processed": "معالجة",
"time": "الوقت" "time": "الوقت"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "لوحات المعلومات", "dashboards": "لوحات المعلومات",
"datasources": "مصادر البيانات", "datasources": "مصادر البيانات",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "الإشعارات", "notifications": "الإشعارات",
"issues": "المُشكِلات", "issues": "المُشكِلات",
"pulls": "طلبات السحب" "pulls": "طلبات السحب",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "المشاهد", "scenes": "المشاهد",
@ -1010,5 +1017,30 @@
"issues": "المُشكِلات", "issues": "المُشكِلات",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Actiu",
"received": "Rebuts", "received": "Rebuts",
"sent": "Enviats", "sent": "Enviats",
"externalIPAddress": "IP ext." "externalIPAddress": "IP ext.",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "AP connectats", "connectedAp": "AP connectats",
"activeUser": "Dispositius actius", "activeUser": "Dispositius actius",
"alerts": "Alertes", "alerts": "Alertes",
"connectedGateway": "Pasarel·les connectades", "connectedGateways": "Connected gateways",
"connectedSwitches": "Conmutadors connectats" "connectedSwitches": "Conmutadors connectats"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processat", "processed": "Processat",
"time": "Temps" "time": "Temps"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Taulells", "dashboards": "Taulells",
"datasources": "Orígens de dades", "datasources": "Orígens de dades",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notificacions", "notifications": "Notificacions",
"issues": "Problemes", "issues": "Problemes",
"pulls": "Sol·licitud de Canvis" "pulls": "Sol·licitud de Canvis",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Escenes", "scenes": "Escenes",
@ -1010,5 +1017,30 @@
"issues": "Problemes", "issues": "Problemes",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projectes" "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", "up": "Up",
"received": "Přijaté", "received": "Přijaté",
"sent": "Odeslané", "sent": "Odeslané",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Odesílání dat", "upstreams": "Odesílání dat",
@ -176,7 +178,7 @@
"connectedAp": "Připojené APs", "connectedAp": "Připojené APs",
"activeUser": "Aktivní zařízení", "activeUser": "Aktivní zařízení",
"alerts": "Upozornění", "alerts": "Upozornění",
"connectedGateway": "Připojené brány", "connectedGateways": "Connected gateways",
"connectedSwitches": "Připojené přepínače" "connectedSwitches": "Připojené přepínače"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Zpracováno", "processed": "Zpracováno",
"time": "Čas" "time": "Čas"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Nástěnky", "dashboards": "Nástěnky",
"datasources": "Zdroje dat", "datasources": "Zdroje dat",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Problémy", "issues": "Problémy",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Problémy", "issues": "Problémy",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Op",
"received": "Modtaget", "received": "Modtaget",
"sent": "Sendt", "sent": "Sendt",
"externalIPAddress": "Ekstern IP" "externalIPAddress": "Ekstern IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Forbundne APs", "connectedAp": "Forbundne APs",
"activeUser": "Aktive enheder", "activeUser": "Aktive enheder",
"alerts": "Advarsler", "alerts": "Advarsler",
"connectedGateway": "Forbundne gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Forbundne switches" "connectedSwitches": "Forbundne switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Behandlet", "processed": "Behandlet",
"time": "Tid" "time": "Tid"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Kontrolpanel", "dashboards": "Kontrolpanel",
"datasources": "Data Kilder", "datasources": "Data Kilder",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Problemer", "issues": "Problemer",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Problemer", "issues": "Problemer",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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": { "ping": {
"error": "Fehler", "error": "Fehler",
"ping": "Ping", "ping": "Ping",
"down": "Empfangen", "down": "Offline",
"up": "Senden", "up": "Online",
"not_available": "Nicht verfügbar" "not_available": "Nicht verfügbar"
}, },
"siteMonitor": { "siteMonitor": {
"http_status": "HTTP-Status", "http_status": "HTTP-Status",
"error": "Fehler", "error": "Fehler",
"response": "Antwort", "response": "Antwort",
"down": "Empfangen", "down": "Offline",
"up": "Senden", "up": "Online",
"not_available": "Nicht verfügbar" "not_available": "Nicht verfügbar"
}, },
"emby": { "emby": {
@ -144,11 +144,13 @@
"uptime": "Betriebszeit", "uptime": "Betriebszeit",
"maxDown": "Max. Down", "maxDown": "Max. Down",
"maxUp": "Max. Up", "maxUp": "Max. Up",
"down": "Empfangen", "down": "Offline",
"up": "Senden", "up": "Online",
"received": "Empfangen", "received": "Empfangen",
"sent": "Gesendet", "sent": "Gesendet",
"externalIPAddress": "Externe IP" "externalIPAddress": "Externe IP",
"externalIPv6Address": "Externe IPv6",
"externalIPv6Prefix": "Externer IPv4-Präfix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Verbundene APs", "connectedAp": "Verbundene APs",
"activeUser": "Aktive Geräte", "activeUser": "Aktive Geräte",
"alerts": "Warnungen", "alerts": "Warnungen",
"connectedGateway": "Verbundene Gateways", "connectedGateways": "Verbundene Gateways",
"connectedSwitches": "Verbundene Switche" "connectedSwitches": "Verbundene Switche"
}, },
"nzbget": { "nzbget": {
@ -350,7 +352,7 @@
"queue": "Warteschlange", "queue": "Warteschlange",
"processed": "Verarbeitet", "processed": "Verarbeitet",
"errored": "Fehlgeschlagen", "errored": "Fehlgeschlagen",
"saved": "Gespeichert" "saved": "Eingespart"
}, },
"traefik": { "traefik": {
"routers": "Router", "routers": "Router",
@ -445,7 +447,7 @@
"write": "Schreiben", "write": "Schreiben",
"gpu": "GPU", "gpu": "GPU",
"mem": "RAM", "mem": "RAM",
"swap": "Swap" "swap": "Auslagerung"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Lesezeichen", "bookmark": "Lesezeichen",
@ -521,15 +523,15 @@
"up_to_date": "Aktuell", "up_to_date": "Aktuell",
"child_bridges": "Unter-Bridges", "child_bridges": "Unter-Bridges",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"up": "Senden", "up": "Online",
"pending": "Ausstehend", "pending": "Ausstehend",
"down": "Empfangen" "down": "Offline"
}, },
"healthchecks": { "healthchecks": {
"new": "Neu", "new": "Neu",
"up": "Senden", "up": "Online",
"grace": "In Karenzzeit", "grace": "In Karenzzeit",
"down": "Empfangen", "down": "Offline",
"paused": "Pausiert", "paused": "Pausiert",
"status": "Status", "status": "Status",
"last_ping": "Letzter Ping", "last_ping": "Letzter Ping",
@ -644,8 +646,8 @@
"load": "Durchschnittliche Last", "load": "Durchschnittliche Last",
"memory": "Speichernutzung", "memory": "Speichernutzung",
"wanStatus": "WAN-Status", "wanStatus": "WAN-Status",
"up": "Senden", "up": "Online",
"down": "Empfangen", "down": "Offline",
"temp": "Temperatur", "temp": "Temperatur",
"disk": "Datenträgernutzung", "disk": "Datenträgernutzung",
"wanIP": "WAN-IP" "wanIP": "WAN-IP"
@ -702,6 +704,10 @@
"processed": "Verarbeitet", "processed": "Verarbeitet",
"time": "Zeit" "time": "Zeit"
}, },
"firefly": {
"networth": "Reinvermögen",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Datenquellen", "datasources": "Datenquellen",
@ -826,8 +832,8 @@
"openwrt": { "openwrt": {
"uptime": "Betriebszeit", "uptime": "Betriebszeit",
"cpuLoad": "CPU-Last (5 min-Durchschnitt)", "cpuLoad": "CPU-Last (5 min-Durchschnitt)",
"up": "Senden", "up": "Online",
"down": "Empfangen", "down": "Offline",
"bytesTx": "Übertragen", "bytesTx": "Übertragen",
"bytesRx": "Empfangen" "bytesRx": "Empfangen"
}, },
@ -840,9 +846,9 @@
"sitesDown": "Seiten nicht verfügbar", "sitesDown": "Seiten nicht verfügbar",
"paused": "Pausiert", "paused": "Pausiert",
"notyetchecked": "Noch nicht geprüft", "notyetchecked": "Noch nicht geprüft",
"up": "Senden", "up": "Online",
"seemsdown": "Scheint nicht verfügbar", "seemsdown": "Scheint nicht verfügbar",
"down": "Empfangen", "down": "Offline",
"unknown": "Unbekannt" "unknown": "Unbekannt"
}, },
"calendar": { "calendar": {
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Benachrichtigungen", "notifications": "Benachrichtigungen",
"issues": "Probleme", "issues": "Probleme",
"pulls": "Pull-Requests" "pulls": "Pull-Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Szenen", "scenes": "Szenen",
@ -981,8 +988,8 @@
"beszel": { "beszel": {
"name": "Name", "name": "Name",
"systems": "Systeme", "systems": "Systeme",
"up": "Senden", "up": "Online",
"down": "Empfangen", "down": "Offline",
"paused": "Pausiert", "paused": "Pausiert",
"pending": "Ausstehend", "pending": "Ausstehend",
"status": "Status", "status": "Status",
@ -1010,5 +1017,30 @@
"issues": "Probleme", "issues": "Probleme",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projekte" "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", "up": "Ping up",
"received": "Ληφθέντα", "received": "Ληφθέντα",
"sent": "Απεσταλμένα", "sent": "Απεσταλμένα",
"externalIPAddress": "Εξωτερική IP" "externalIPAddress": "Εξωτερική IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Συνδεδεμένα APs", "connectedAp": "Συνδεδεμένα APs",
"activeUser": "Ενεργές συσκευές", "activeUser": "Ενεργές συσκευές",
"alerts": "Ειδοποιήσεις", "alerts": "Ειδοποιήσεις",
"connectedGateway": "Συνδεδεμένα gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Συνδεδεμένα switches" "connectedSwitches": "Συνδεδεμένα switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Σε επεξεργασία", "processed": "Σε επεξεργασία",
"time": "Ώρα" "time": "Ώρα"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Πίνακας Ελέγχου", "dashboards": "Πίνακας Ελέγχου",
"datasources": "Πηγές Δεδομένων", "datasources": "Πηγές Δεδομένων",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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

@ -910,7 +910,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"blueiris": { "blueiris": {
"serverName": "Server Name", "serverName": "Server Name",
@ -1053,5 +1054,24 @@
"load": "Load", "load": "Load",
"bcharge":"Battery Charge", "bcharge":"Battery Charge",
"timeleft":"Time Left" "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", "up": "Up",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Sent",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateway": "Connected gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Activo",
"received": "Recibido", "received": "Recibido",
"sent": "Enviado", "sent": "Enviado",
"externalIPAddress": "IP ext." "externalIPAddress": "IP ext.",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstream (desarrollo de software)", "upstreams": "Upstream (desarrollo de software)",
@ -176,7 +178,7 @@
"connectedAp": "AP conectados", "connectedAp": "AP conectados",
"activeUser": "Dispositivos activos", "activeUser": "Dispositivos activos",
"alerts": "Alertas", "alerts": "Alertas",
"connectedGateway": "Puertas de enlace conectadas", "connectedGateways": "Connected gateways",
"connectedSwitches": "Conmutadores conectados" "connectedSwitches": "Conmutadores conectados"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Procesado", "processed": "Procesado",
"time": "Tiempo" "time": "Tiempo"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Tableros", "dashboards": "Tableros",
"datasources": "Fuentes de datos", "datasources": "Fuentes de datos",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notificaciones", "notifications": "Notificaciones",
"issues": "Números", "issues": "Números",
"pulls": "Solicitudes de cambios" "pulls": "Solicitudes de cambios",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Escenas", "scenes": "Escenas",
@ -1010,5 +1017,30 @@
"issues": "Números", "issues": "Números",
"merges": "Solicitudes de fusión", "merges": "Solicitudes de fusión",
"projects": "Proyectos" "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": { "ping": {
"error": "Error", "error": "Error",
"ping": "Ping", "ping": "Ping",
"down": "Down", "down": "Behera",
"up": "Up", "up": "Gora",
"not_available": "Not Available" "not_available": "Not Available"
}, },
"siteMonitor": { "siteMonitor": {
"http_status": "HTTP status", "http_status": "HTTP status",
"error": "Error", "error": "Error",
"response": "Response", "response": "Erantzuna",
"down": "Down", "down": "Behera",
"up": "Up", "up": "Gora",
"not_available": "Not Available" "not_available": "Not Available"
}, },
"emby": { "emby": {
@ -102,8 +102,8 @@
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bit-tasa", "bitrate": "Bit-tasa",
"no_active": "No Active Streams", "no_active": "No Active Streams",
"movies": "Movies", "movies": "Filmak",
"series": "Series", "series": "Serieak",
"episodes": "Episodes", "episodes": "Episodes",
"songs": "Abestiak" "songs": "Abestiak"
}, },
@ -115,40 +115,42 @@
"unknown": "Ezezaguna" "unknown": "Ezezaguna"
}, },
"evcc": { "evcc": {
"pv_power": "Production", "pv_power": "Produkzioak",
"battery_soc": "Battery", "battery_soc": "Bateria",
"grid_power": "Grid", "grid_power": "Sarea",
"home_power": "Consumption", "home_power": "Kontsumoa",
"charge_power": "Charger", "charge_power": "Kargagailua",
"kilowatt": "kW" "kilowatt": "kW"
}, },
"flood": { "flood": {
"download": "Download", "download": "Jeitsierak",
"upload": "Upload", "upload": "Kargatu",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"freshrss": { "freshrss": {
"subscriptions": "Subscriptions", "subscriptions": "Harpidetzak",
"unread": "Unread" "unread": "Irakurri gabe"
}, },
"fritzbox": { "fritzbox": {
"connectionStatus": "Status", "connectionStatus": "Status",
"connectionStatusUnconfigured": "Unconfigured", "connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting", "connectionStatusConnecting": "Konektatzen",
"connectionStatusAuthenticating": "Authenticating", "connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect", "connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting", "connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected", "connectionStatusDisconnected": "Deskonektatuta",
"connectionStatusConnected": "Connected", "connectionStatusConnected": "Konektatuta",
"uptime": "Uptime", "uptime": "Uptime",
"maxDown": "Max. Down", "maxDown": "Max. Down",
"maxUp": "Max. Up", "maxUp": "Max. Up",
"down": "Down", "down": "Behera",
"up": "Up", "up": "Gora",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Bidalita",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateway": "Connected gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@ -187,7 +189,7 @@
"plex": { "plex": {
"streams": "Active Streams", "streams": "Active Streams",
"albums": "Albums", "albums": "Albums",
"movies": "Movies", "movies": "Filmak",
"tv": "TV Shows" "tv": "TV Shows"
}, },
"sabnzbd": { "sabnzbd": {
@ -197,18 +199,18 @@
}, },
"rutorrent": { "rutorrent": {
"active": "Active", "active": "Active",
"upload": "Upload", "upload": "Kargatu",
"download": "Download" "download": "Jeitsierak"
}, },
"transmission": { "transmission": {
"download": "Download", "download": "Jeitsierak",
"upload": "Upload", "upload": "Kargatu",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"qbittorrent": { "qbittorrent": {
"download": "Download", "download": "Jeitsierak",
"upload": "Upload", "upload": "Kargatu",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
@ -221,8 +223,8 @@
"invalid": "Invalid" "invalid": "Invalid"
}, },
"deluge": { "deluge": {
"download": "Download", "download": "Jeitsierak",
"upload": "Upload", "upload": "Kargatu",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
@ -231,15 +233,15 @@
"cachemissbytes": "Cache Miss Bytes" "cachemissbytes": "Cache Miss Bytes"
}, },
"downloadstation": { "downloadstation": {
"download": "Download", "download": "Jeitsierak",
"upload": "Upload", "upload": "Kargatu",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"sonarr": { "sonarr": {
"wanted": "Wanted", "wanted": "Wanted",
"queued": "Queued", "queued": "Queued",
"series": "Series", "series": "Serieak",
"queue": "Queue", "queue": "Queue",
"unknown": "Ezezaguna" "unknown": "Ezezaguna"
}, },
@ -247,7 +249,7 @@
"wanted": "Wanted", "wanted": "Wanted",
"missing": "Missing", "missing": "Missing",
"queued": "Queued", "queued": "Queued",
"movies": "Movies", "movies": "Filmak",
"queue": "Queue", "queue": "Queue",
"unknown": "Ezezaguna" "unknown": "Ezezaguna"
}, },
@ -283,7 +285,7 @@
}, },
"netalertx": { "netalertx": {
"total": "Guztira", "total": "Guztira",
"connected": "Connected", "connected": "Konektatuta",
"new_devices": "New Devices", "new_devices": "New Devices",
"down_alerts": "Down Alerts" "down_alerts": "Down Alerts"
}, },
@ -300,8 +302,8 @@
"latency": "Latency" "latency": "Latency"
}, },
"speedtest": { "speedtest": {
"upload": "Upload", "upload": "Kargatu",
"download": "Download", "download": "Jeitsierak",
"ping": "Ping" "ping": "Ping"
}, },
"portainer": { "portainer": {
@ -313,7 +315,7 @@
"download": "Downloaded", "download": "Downloaded",
"nondownload": "Non-Downloaded", "nondownload": "Non-Downloaded",
"read": "Read", "read": "Read",
"unread": "Unread", "unread": "Irakurri gabe",
"downloadedread": "Downloaded & Read", "downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread", "downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read", "nondownloadedread": "Non-Downloaded & Read",
@ -403,7 +405,7 @@
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "Wanted",
"queued": "Queued", "queued": "Queued",
"series": "Series" "series": "Serieak"
}, },
"minecraft": { "minecraft": {
"players": "Jokalariak", "players": "Jokalariak",
@ -414,7 +416,7 @@
}, },
"miniflux": { "miniflux": {
"read": "Read", "read": "Read",
"unread": "Unread" "unread": "Irakurri gabe"
}, },
"authentik": { "authentik": {
"users": "Users", "users": "Users",
@ -521,15 +523,15 @@
"up_to_date": "Up to Date", "up_to_date": "Up to Date",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up", "up": "Gora",
"pending": "Pending", "pending": "Pending",
"down": "Down" "down": "Behera"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "New",
"up": "Up", "up": "Gora",
"grace": "In Grace Period", "grace": "In Grace Period",
"down": "Down", "down": "Behera",
"paused": "Paused", "paused": "Paused",
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
@ -644,8 +646,8 @@
"load": "Load Avg", "load": "Load Avg",
"memory": "Mem Usage", "memory": "Mem Usage",
"wanStatus": "WAN Status", "wanStatus": "WAN Status",
"up": "Up", "up": "Gora",
"down": "Down", "down": "Behera",
"temp": "Temp", "temp": "Temp",
"disk": "Disk Usage", "disk": "Disk Usage",
"wanIP": "WAN IP" "wanIP": "WAN IP"
@ -658,7 +660,7 @@
}, },
"immich": { "immich": {
"users": "Users", "users": "Users",
"photos": "Photos", "photos": "Argazkiak",
"videos": "Videos", "videos": "Videos",
"storage": "Storage" "storage": "Storage"
}, },
@ -670,14 +672,14 @@
"m": "m" "m": "m"
}, },
"atsumeru": { "atsumeru": {
"series": "Series", "series": "Serieak",
"archives": "Archives", "archives": "Archives",
"chapters": "Chapters", "chapters": "Chapters",
"categories": "Categories" "categories": "Categories"
}, },
"komga": { "komga": {
"libraries": "Libraries", "libraries": "Libraries",
"series": "Series", "series": "Serieak",
"books": "Books" "books": "Books"
}, },
"diskstation": { "diskstation": {
@ -686,13 +688,13 @@
"volumeAvailable": "Available" "volumeAvailable": "Available"
}, },
"mylar": { "mylar": {
"series": "Series", "series": "Serieak",
"issues": "Issues", "issues": "Arazoak",
"wanted": "Wanted" "wanted": "Wanted"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Albums",
"photos": "Photos", "photos": "Argazkiak",
"videos": "Videos", "videos": "Videos",
"people": "People" "people": "People"
}, },
@ -702,6 +704,10 @@
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -766,7 +772,7 @@
"books": "Books", "books": "Books",
"authors": "Authors", "authors": "Authors",
"categories": "Categories", "categories": "Categories",
"series": "Series" "series": "Serieak"
}, },
"jdownloader": { "jdownloader": {
"downloadCount": "Queue", "downloadCount": "Queue",
@ -775,7 +781,7 @@
"downloadSpeed": "Speed" "downloadSpeed": "Speed"
}, },
"kavita": { "kavita": {
"seriesCount": "Series", "seriesCount": "Serieak",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azuredevops": { "azuredevops": {
@ -795,8 +801,8 @@
"status": "Status", "status": "Status",
"online": "Online", "online": "Online",
"offline": "Offline", "offline": "Offline",
"name": "Name", "name": "Izena",
"map": "Map", "map": "Mapa",
"currentPlayers": "Current players", "currentPlayers": "Current players",
"players": "Jokalariak", "players": "Jokalariak",
"maxPlayers": "Max players", "maxPlayers": "Max players",
@ -813,10 +819,10 @@
"recipes": "Recipes", "recipes": "Recipes",
"users": "Users", "users": "Users",
"categories": "Categories", "categories": "Categories",
"tags": "Tags" "tags": "Etiketak"
}, },
"openmediavault": { "openmediavault": {
"downloading": "Downloading", "downloading": "Deskargatzen",
"total": "Guztira", "total": "Guztira",
"running": "Running", "running": "Running",
"stopped": "Stopped", "stopped": "Stopped",
@ -826,8 +832,8 @@
"openwrt": { "openwrt": {
"uptime": "Uptime", "uptime": "Uptime",
"cpuLoad": "CPU Load Avg (5m)", "cpuLoad": "CPU Load Avg (5m)",
"up": "Up", "up": "Gora",
"down": "Down", "down": "Behera",
"bytesTx": "Transmitted", "bytesTx": "Transmitted",
"bytesRx": "Received" "bytesRx": "Received"
}, },
@ -840,9 +846,9 @@
"sitesDown": "Sites Down", "sitesDown": "Sites Down",
"paused": "Paused", "paused": "Paused",
"notyetchecked": "Not Yet Checked", "notyetchecked": "Not Yet Checked",
"up": "Up", "up": "Gora",
"seemsdown": "Seems Down", "seemsdown": "Seems Down",
"down": "Down", "down": "Behera",
"unknown": "Ezezaguna" "unknown": "Ezezaguna"
}, },
"calendar": { "calendar": {
@ -850,7 +856,7 @@
"physicalRelease": "Physical release", "physicalRelease": "Physical release",
"digitalRelease": "Digital release", "digitalRelease": "Digital release",
"noEventsToday": "No events for today!", "noEventsToday": "No events for today!",
"noEventsFound": "No events found" "noEventsFound": "Ez da gertaerarik aurkitu."
}, },
"romm": { "romm": {
"platforms": "Platforms", "platforms": "Platforms",
@ -862,7 +868,7 @@
}, },
"mailcow": { "mailcow": {
"domains": "Domains", "domains": "Domains",
"mailboxes": "Mailboxes", "mailboxes": "Gutunontziak",
"mails": "Mails", "mails": "Mails",
"storage": "Storage" "storage": "Storage"
}, },
@ -871,15 +877,16 @@
"criticals": "Criticals" "criticals": "Criticals"
}, },
"plantit": { "plantit": {
"events": "Events", "events": "Ekitaldiak",
"plants": "Plants", "plants": "Landareak",
"photos": "Photos", "photos": "Argazkiak",
"species": "Species" "species": "Species"
}, },
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Jakinarazpenak",
"issues": "Issues", "issues": "Arazoak",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -888,34 +895,34 @@
"playDuration": "Time Watched", "playDuration": "Time Watched",
"sceneSize": "Scenes Size", "sceneSize": "Scenes Size",
"sceneDuration": "Scenes Duration", "sceneDuration": "Scenes Duration",
"images": "Images", "images": "Irudia",
"imageSize": "Images Size", "imageSize": "Irudiaren tamaina",
"galleries": "Galleries", "galleries": "Galleries",
"performers": "Performers", "performers": "Performers",
"studios": "Studios", "studios": "Studios",
"movies": "Movies", "movies": "Filmak",
"tags": "Tags", "tags": "Etiketak",
"oCount": "O Count" "oCount": "O Count"
}, },
"tandoor": { "tandoor": {
"users": "Users", "users": "Users",
"recipes": "Recipes", "recipes": "Recipes",
"keywords": "Keywords" "keywords": "Hitz gakoak"
}, },
"homebox": { "homebox": {
"items": "Items", "items": "Elementuak",
"totalWithWarranty": "With Warranty", "totalWithWarranty": "With Warranty",
"locations": "Locations", "locations": "Locations",
"labels": "Labels", "labels": "Etiketak",
"users": "Users", "users": "Users",
"totalValue": "Total Value" "totalValue": "Guztira"
}, },
"crowdsec": { "crowdsec": {
"alerts": "Alerts", "alerts": "Alerts",
"bans": "Bans" "bans": "Bans"
}, },
"wgeasy": { "wgeasy": {
"connected": "Connected", "connected": "Konektatuta",
"enabled": "Enabled", "enabled": "Enabled",
"disabled": "Disabled", "disabled": "Disabled",
"total": "Guztira" "total": "Guztira"
@ -928,8 +935,8 @@
}, },
"myspeed": { "myspeed": {
"ping": "Ping", "ping": "Ping",
"download": "Download", "download": "Jeitsierak",
"upload": "Upload" "upload": "Kargatu"
}, },
"stocks": { "stocks": {
"stocks": "Stocks", "stocks": "Stocks",
@ -945,23 +952,23 @@
}, },
"linkwarden": { "linkwarden": {
"links": "Links", "links": "Links",
"collections": "Collections", "collections": "Bildumak",
"tags": "Tags" "tags": "Etiketak"
}, },
"zabbix": { "zabbix": {
"unclassified": "Not classified", "unclassified": "Not classified",
"information": "Informazioa", "information": "Informazioa",
"warning": "Warning", "warning": "Abisua",
"average": "Average", "average": "Batez besteko",
"high": "High", "high": "Altua",
"disaster": "Disaster" "disaster": "Disaster"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Vehicle", "vehicle": "Vehicle",
"vehicles": "Vehicles", "vehicles": "Ibilgailuak",
"serviceRecords": "Service Records", "serviceRecords": "Service Records",
"reminders": "Reminders", "reminders": "Oroigarriak",
"nextReminder": "Next Reminder", "nextReminder": "Hurrengo abisua",
"none": "None" "none": "None"
}, },
"vikunja": { "vikunja": {
@ -971,7 +978,7 @@
"tasksInProgress": "Tasks In Progress" "tasksInProgress": "Tasks In Progress"
}, },
"headscale": { "headscale": {
"name": "Name", "name": "Izena",
"address": "Address", "address": "Address",
"last_seen": "Last Seen", "last_seen": "Last Seen",
"status": "Status", "status": "Status",
@ -979,10 +986,10 @@
"offline": "Offline" "offline": "Offline"
}, },
"beszel": { "beszel": {
"name": "Name", "name": "Izena",
"systems": "Systems", "systems": "Systems",
"up": "Up", "up": "Gora",
"down": "Down", "down": "Behera",
"paused": "Paused", "paused": "Paused",
"pending": "Pending", "pending": "Pending",
"status": "Status", "status": "Status",
@ -993,22 +1000,47 @@
"network": "NET" "network": "NET"
}, },
"argocd": { "argocd": {
"apps": "Apps", "apps": "Aplikazioak",
"synced": "Synced", "synced": "Sinkronizatuta",
"outOfSync": "Out Of Sync", "outOfSync": "Out Of Sync",
"healthy": "Osasuntsu", "healthy": "Osasuntsu",
"degraded": "Degraded", "degraded": "Degraded",
"progressing": "Progressing", "progressing": "Progressing",
"missing": "Missing", "missing": "Missing",
"suspended": "Suspended" "suspended": "Etenda"
}, },
"spoolman": { "spoolman": {
"loading": "Loading" "loading": "Loading"
}, },
"gitlab": { "gitlab": {
"groups": "Groups", "groups": "Taldeak",
"issues": "Issues", "issues": "Arazoak",
"merges": "Merge Requests", "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", "up": "Up",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Sent",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateway": "Connected gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "lan": "LAN",
"wlan": "WLAN", "wlan": "WLAN",
"devices": "Équipt.", "devices": "Équipt.",
"lan_devices": "Équipt. LAN", "lan_devices": "Périphériques LAN",
"wlan_devices": "Périphériques WLAN", "wlan_devices": "Périphériques WLAN",
"lan_users": "Utilisateurs LAN", "lan_users": "Utilisateurs LAN",
"wlan_users": "Utilisateurs WLAN", "wlan_users": "Utilisateurs WLAN",
"up": "Up", "up": "Up",
"down": "INACTIF", "down": "INACTIF",
"wait": "Veuillez patienter", "wait": "Veuillez patienter",
"empty_data": "Statut sous-système inconnu" "empty_data": "Statut du sous-système inconnu"
}, },
"docker": { "docker": {
"rx": "Rx", "rx": "Rx",
@ -77,24 +77,24 @@
"unknown": "Inconnu", "unknown": "Inconnu",
"healthy": "Fonctionnel", "healthy": "Fonctionnel",
"starting": "Démarrage", "starting": "Démarrage",
"unhealthy": "Dysfonctionnement", "unhealthy": "Mauvaise santé",
"not_found": "Inconnu", "not_found": "Introuvable",
"exited": "Arrêté", "exited": "Arrêté",
"partial": "Partiel" "partial": "Partiel"
}, },
"ping": { "ping": {
"error": "Erreur", "error": "Erreur",
"ping": "Ping", "ping": "Latence",
"down": "Down", "down": "Bas",
"up": "Up", "up": "Haut",
"not_available": "Non disponible" "not_available": "Non disponible"
}, },
"siteMonitor": { "siteMonitor": {
"http_status": "Statut HTTP", "http_status": "Statut HTTP",
"error": "Erreur", "error": "Erreur",
"response": "Réponse", "response": "Réponse",
"down": "Down", "down": "Bas",
"up": "Up", "up": "Haut",
"not_available": "Non disponible" "not_available": "Non disponible"
}, },
"emby": { "emby": {
@ -105,7 +105,7 @@
"movies": "Films", "movies": "Films",
"series": "Séries TV", "series": "Séries TV",
"episodes": "Épisodes", "episodes": "Épisodes",
"songs": "Musique" "songs": "Chansons"
}, },
"esphome": { "esphome": {
"offline": "Hors ligne", "offline": "Hors ligne",
@ -124,7 +124,7 @@
}, },
"flood": { "flood": {
"download": "Récep.", "download": "Récep.",
"upload": "Envoi", "upload": "Téléverser",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
@ -144,23 +144,25 @@
"uptime": "Démarré depuis", "uptime": "Démarré depuis",
"maxDown": "Max. Bas", "maxDown": "Max. Bas",
"maxUp": "Max. Haut", "maxUp": "Max. Haut",
"down": "Down", "down": "Bas",
"up": "Up", "up": "Haut",
"received": "Reçu", "received": "Reçu",
"sent": "Envoyé", "sent": "Envoyé",
"externalIPAddress": "IP externe" "externalIPAddress": "IP externe",
"externalIPv6Address": "IPv6 externe",
"externalIPv6Prefix": "Préfixe IPv6 externe"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "En amont",
"requests": "Demandes en cours", "requests": "Demandes en cours",
"requests_failed": "Demandes échouées" "requests_failed": "Demandes échouées"
}, },
"changedetectionio": { "changedetectionio": {
"totalObserved": "Total Observé", "totalObserved": "Total Observé",
"diffsDetected": "Diffs détectées" "diffsDetected": "Différences détectées"
}, },
"channelsdvrserver": { "channelsdvrserver": {
"shows": "Affichages", "shows": "Séries",
"recordings": "Enregistrements", "recordings": "Enregistrements",
"scheduled": "Planifié", "scheduled": "Planifié",
"passes": "Passes" "passes": "Passes"
@ -174,10 +176,10 @@
}, },
"omada": { "omada": {
"connectedAp": "AP connectés", "connectedAp": "AP connectés",
"activeUser": "Équipts actifs", "activeUser": "Périphériques actifs",
"alerts": "Alertes", "alerts": "Alertes",
"connectedGateway": "Passerelles connectées", "connectedGateways": "Passerelles connectées",
"connectedSwitches": "Switches connectés" "connectedSwitches": "Switchs connectés"
}, },
"nzbget": { "nzbget": {
"rate": "Débit", "rate": "Débit",
@ -188,7 +190,7 @@
"streams": "Flux actif", "streams": "Flux actif",
"albums": "Albums", "albums": "Albums",
"movies": "Films", "movies": "Films",
"tv": "Séries TV" "tv": "Séries"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Débit", "rate": "Débit",
@ -197,32 +199,32 @@
}, },
"rutorrent": { "rutorrent": {
"active": "Actif", "active": "Actif",
"upload": "Envoi", "upload": "Téléverser",
"download": "Récep." "download": "Récep."
}, },
"transmission": { "transmission": {
"download": "Récep.", "download": "Récep.",
"upload": "Envoi", "upload": "Téléverser",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"qbittorrent": { "qbittorrent": {
"download": "Récep.", "download": "Récep.",
"upload": "Envoi", "upload": "Téléverser",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"qnap": { "qnap": {
"cpuUsage": "Cpu", "cpuUsage": "Processeur utilisé",
"memUsage": "Mém", "memUsage": "Mémoire utilisée",
"systemTempC": "Temp", "systemTempC": "Température système",
"poolUsage": "Pool", "poolUsage": "Utilisation de la pool",
"volumeUsage": "Volume", "volumeUsage": "Utilisation du volume",
"invalid": "Invalide" "invalid": "Invalide"
}, },
"deluge": { "deluge": {
"download": "Récep.", "download": "Récep.",
"upload": "Envoi", "upload": "Téléverser",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
@ -232,33 +234,33 @@
}, },
"downloadstation": { "downloadstation": {
"download": "Récep.", "download": "Récep.",
"upload": "Envoi", "upload": "Téléverser",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"sonarr": { "sonarr": {
"wanted": "Demande", "wanted": "Demandé",
"queued": "Attente", "queued": "En file d'attente",
"series": "Séries TV", "series": "Séries TV",
"queue": "En attente", "queue": "En attente",
"unknown": "Inconnu" "unknown": "Inconnu"
}, },
"radarr": { "radarr": {
"wanted": "Demande", "wanted": "Demandé",
"missing": "Manquant", "missing": "Manquant",
"queued": "Attente", "queued": "En file d'attente",
"movies": "Films", "movies": "Films",
"queue": "En attente", "queue": "En attente",
"unknown": "Inconnu" "unknown": "Inconnu"
}, },
"lidarr": { "lidarr": {
"wanted": "Demande", "wanted": "Demandé",
"queued": "Attente", "queued": "En file d'attente",
"artists": "Artistes" "artists": "Artistes"
}, },
"readarr": { "readarr": {
"wanted": "Demande", "wanted": "Demandé",
"queued": "Attente", "queued": "En file d'attente",
"books": "Livres" "books": "Livres"
}, },
"bazarr": { "bazarr": {
@ -267,18 +269,18 @@
}, },
"ombi": { "ombi": {
"pending": "En attente", "pending": "En attente",
"approved": "Validé", "approved": "Approuvé",
"available": "Disponible" "available": "Disponible"
}, },
"jellyseerr": { "jellyseerr": {
"pending": "En attente", "pending": "En attente",
"approved": "Validé", "approved": "Approuvé",
"available": "Disponible" "available": "Disponible"
}, },
"overseerr": { "overseerr": {
"pending": "En attente", "pending": "En attente",
"processing": "Traitement", "processing": "En cours de traitement",
"approved": "Validé", "approved": "Approuvé",
"available": "Disponible" "available": "Disponible"
}, },
"netalertx": { "netalertx": {
@ -290,7 +292,7 @@
"pihole": { "pihole": {
"queries": "Requêtes", "queries": "Requêtes",
"blocked": "Bloqué", "blocked": "Bloqué",
"blocked_percent": "Bloqué %", "blocked_percent": "% bloqué",
"gravity": "Listes dom. bloqués" "gravity": "Listes dom. bloqués"
}, },
"adguard": { "adguard": {
@ -300,9 +302,9 @@
"latency": "Latence" "latency": "Latence"
}, },
"speedtest": { "speedtest": {
"upload": "Envoi", "upload": "Téléverser",
"download": "Récep.", "download": "Récep.",
"ping": "Ping" "ping": "Latence"
}, },
"portainer": { "portainer": {
"running": "Démarré", "running": "Démarré",
@ -335,7 +337,7 @@
}, },
"technitium": { "technitium": {
"totalQueries": "Requêtes", "totalQueries": "Requêtes",
"totalNoError": "Effectué avec succès", "totalNoError": "Succès",
"totalServerFailure": "Échecs", "totalServerFailure": "Échecs",
"totalNxDomain": "Domaines NX", "totalNxDomain": "Domaines NX",
"totalRefused": "Refusés", "totalRefused": "Refusés",
@ -349,8 +351,8 @@
"tdarr": { "tdarr": {
"queue": "En attente", "queue": "En attente",
"processed": "Traité", "processed": "Traité",
"errored": "En erreur", "errored": "Erroné",
"saved": "Libéré" "saved": "Enregistré"
}, },
"traefik": { "traefik": {
"routers": "Routeurs", "routers": "Routeurs",
@ -374,35 +376,35 @@
"30days": "30 Jours" "30days": "30 Jours"
}, },
"gotify": { "gotify": {
"apps": "Applis", "apps": "Applications",
"clients": "Clients", "clients": "Clients",
"messages": "Msg" "messages": "Messages"
}, },
"prowlarr": { "prowlarr": {
"enableIndexers": "Indexeur", "enableIndexers": "Indexeur",
"numberOfGrabs": "Capture", "numberOfGrabs": "Captures",
"numberOfQueries": "Requêtes", "numberOfQueries": "Requêtes",
"numberOfFailGrabs": "Capt. échouée", "numberOfFailGrabs": "Captures échouées",
"numberOfFailQueries": "Dem. échouée" "numberOfFailQueries": "Demandes échouées"
}, },
"jackett": { "jackett": {
"configured": "Configuré", "configured": "Configuré",
"errored": "En erreur" "errored": "Erroné"
}, },
"strelaysrv": { "strelaysrv": {
"numActiveSessions": "Sessions", "numActiveSessions": "Sessions",
"numConnections": "Cnx", "numConnections": "Connexions",
"dataRelayed": "Relayé", "dataRelayed": "Relayé",
"transferRate": "Débit" "transferRate": "Débit"
}, },
"mastodon": { "mastodon": {
"user_count": "Utilisateurs", "user_count": "Utilisateurs",
"status_count": "Messages", "status_count": "Articles",
"domain_count": "Domaines" "domain_count": "Domaines"
}, },
"medusa": { "medusa": {
"wanted": "Demande", "wanted": "Demandé",
"queued": "Attente", "queued": "En file d'attente",
"series": "Séries TV" "series": "Séries TV"
}, },
"minecraft": { "minecraft": {
@ -418,13 +420,13 @@
}, },
"authentik": { "authentik": {
"users": "Utilisateurs", "users": "Utilisateurs",
"loginsLast24H": "Cnx. (24h)", "loginsLast24H": "Connexions (24 h)",
"failedLoginsLast24H": "Cnx. échouées (24h)" "failedLoginsLast24H": "Connexions échouées (24 h)"
}, },
"proxmox": { "proxmox": {
"mem": "MÉM", "mem": "MÉM",
"cpu": "CPU", "cpu": "CPU",
"lxc": "LxC", "lxc": "LXC",
"vms": "VMs" "vms": "VMs"
}, },
"glances": { "glances": {
@ -432,7 +434,7 @@
"load": "Charge", "load": "Charge",
"wait": "Veuillez patienter", "wait": "Veuillez patienter",
"temp": "Temp", "temp": "Temp",
"_temp": "T°", "_temp": "Température",
"warn": "Alerte", "warn": "Alerte",
"uptime": "Up", "uptime": "Up",
"total": "Total", "total": "Total",
@ -443,12 +445,12 @@
"crit": "Crit.", "crit": "Crit.",
"read": "Lu", "read": "Lu",
"write": "Écrit.", "write": "Écrit.",
"gpu": "GPU", "gpu": "Carte Graphique",
"mem": "Mém.", "mem": "Mém.",
"swap": "Swap" "swap": "Swap"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Signet", "bookmark": "Marque-Page",
"service": "Service", "service": "Service",
"search": "Recherche", "search": "Recherche",
"custom": "Personnalisé", "custom": "Personnalisé",
@ -458,13 +460,13 @@
}, },
"wmo": { "wmo": {
"0-day": "Ensoleillé", "0-day": "Ensoleillé",
"0-night": "Ciel clair", "0-night": "Clair",
"1-day": "Principalement ensoleillé", "1-day": "Principalement ensoleillé",
"1-night": "Principalement clair", "1-night": "Principalement clair",
"2-day": "Partiellement couvert", "2-day": "Partiellement nuageux",
"2-night": "Partiellement couvert", "2-night": "Partiellement nuageux",
"3-day": "Couvert", "3-day": "Nuageux",
"3-night": "Couvert", "3-night": "Nuageux",
"45-day": "Brumeux", "45-day": "Brumeux",
"45-night": "Brumeux", "45-night": "Brumeux",
"48-day": "Brumeux", "48-day": "Brumeux",
@ -483,14 +485,14 @@
"61-night": "Pluie légère", "61-night": "Pluie légère",
"63-day": "Pluie", "63-day": "Pluie",
"63-night": "Pluie", "63-night": "Pluie",
"65-day": "Pluie forte", "65-day": "Forte pluie",
"65-night": "Pluie forte", "65-night": "Forte pluie",
"66-day": "Pluie verglaçante", "66-day": "Pluie verglaçante",
"66-night": "Pluie verglaçante", "66-night": "Pluie verglaçante",
"67-day": "Pluie verglaçante", "67-day": "Pluie verglaçante",
"67-night": "Pluie verglaçante", "67-night": "Pluie verglaçante",
"71-day": "Neige légère", "71-day": "Légères chutes de neige",
"71-night": "Neige légère", "71-night": "Légères chutes de neige",
"73-day": "Neige", "73-day": "Neige",
"73-night": "Neige", "73-night": "Neige",
"75-day": "Neige abondante", "75-day": "Neige abondante",
@ -521,15 +523,15 @@
"up_to_date": "À jour", "up_to_date": "À jour",
"child_bridges": "Child Bridges", "child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"up": "Up", "up": "Haut",
"pending": "En attente", "pending": "En attente",
"down": "Down" "down": "Bas"
}, },
"healthchecks": { "healthchecks": {
"new": "Nouveau", "new": "Nouveau",
"up": "Up", "up": "Haut",
"grace": "En Période de Grâce", "grace": "En Période de Grâce",
"down": "Down", "down": "Bas",
"paused": "En Pause", "paused": "En Pause",
"status": "Statut", "status": "Statut",
"last_ping": "Dernier Ping", "last_ping": "Dernier Ping",
@ -541,7 +543,7 @@
"containers_failed": "Échoué" "containers_failed": "Échoué"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Validé", "approvedPushes": "Approuvé",
"rejectedPushes": "Rejeté", "rejectedPushes": "Rejeté",
"filters": "Filtres", "filters": "Filtres",
"indexers": "Indexeur" "indexers": "Indexeur"
@ -550,7 +552,7 @@
"downloads": "En attente", "downloads": "En attente",
"videos": "Vidéos", "videos": "Vidéos",
"channels": "Chaînes", "channels": "Chaînes",
"playlists": "Playlists" "playlists": "Listes de lecture"
}, },
"truenas": { "truenas": {
"load": "Charge Système", "load": "Charge Système",
@ -590,9 +592,9 @@
"total": "Total" "total": "Total"
}, },
"peanut": { "peanut": {
"battery_charge": "Charge Batterie", "battery_charge": "Charge de la batterie",
"ups_load": "Charge de l'UPS", "ups_load": "Charge de lASI",
"ups_status": "État de l'UPS", "ups_status": "État de lASI",
"online": "En ligne", "online": "En ligne",
"on_battery": "Sur Batterie", "on_battery": "Sur Batterie",
"low_battery": "Batterie Faible" "low_battery": "Batterie Faible"
@ -602,8 +604,8 @@
"no_devices": "Aucune donnée d'appareil reçue" "no_devices": "Aucune donnée d'appareil reçue"
}, },
"mikrotik": { "mikrotik": {
"cpuLoad": "Charge CPU", "cpuLoad": "Charge du processeur",
"memoryUsed": "Mém. Utilisée", "memoryUsed": "Mémoire utilisée",
"uptime": "Démarré depuis", "uptime": "Démarré depuis",
"numberOfLeases": "Baux" "numberOfLeases": "Baux"
}, },
@ -615,25 +617,25 @@
"opendtu": { "opendtu": {
"yieldDay": "Aujourd'hui", "yieldDay": "Aujourd'hui",
"absolutePower": "Puissance", "absolutePower": "Puissance",
"relativePower": "Puissance %", "relativePower": "% de puissance",
"limit": "Limite" "limit": "Limite"
}, },
"opnsense": { "opnsense": {
"cpu": "Charge CPU", "cpu": "Charge du processeur",
"memory": "Mém. utilisée", "memory": "Mémoire utilisée",
"wanUpload": "WAN Envoi", "wanUpload": "WAN Envoi",
"wanDownload": "WAN Récep." "wanDownload": "WAN Récep."
}, },
"moonraker": { "moonraker": {
"printer_state": "État Imprimante", "printer_state": "État de l'imprimante",
"print_status": "Statut Imprimante", "print_status": "Statut de l'imprimante",
"print_progress": "Progression", "print_progress": "Progression",
"layers": "Couches" "layers": "Couches"
}, },
"octoprint": { "octoprint": {
"printer_state": "Statut", "printer_state": "Statut",
"temp_tool": "Tool T°", "temp_tool": "Temp. de l'outil",
"temp_bed": "Bed T°", "temp_bed": "Temp. du lit",
"job_completion": "Achèvement" "job_completion": "Achèvement"
}, },
"cloudflared": { "cloudflared": {
@ -644,9 +646,9 @@
"load": "Charge moy.", "load": "Charge moy.",
"memory": "Util. Mém.", "memory": "Util. Mém.",
"wanStatus": "Statut WAN", "wanStatus": "Statut WAN",
"up": "Up", "up": "Haut",
"down": "Down", "down": "Bas",
"temp": "T°", "temp": "Température",
"disk": "Util. Disque", "disk": "Util. Disque",
"wanIP": "IP WAN" "wanIP": "IP WAN"
}, },
@ -688,7 +690,7 @@
"mylar": { "mylar": {
"series": "Séries TV", "series": "Séries TV",
"issues": "Anomalies", "issues": "Anomalies",
"wanted": "Demande" "wanted": "Demandé"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Albums",
@ -698,10 +700,14 @@
}, },
"fileflows": { "fileflows": {
"queue": "En attente", "queue": "En attente",
"processing": "Traitement", "processing": "En cours de traitement",
"processed": "Traité", "processed": "Traité",
"time": "Temps" "time": "Temps"
}, },
"firefly": {
"networth": "Valeur Nette",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Tableau de bord", "dashboards": "Tableau de bord",
"datasources": "Sources données", "datasources": "Sources données",
@ -754,9 +760,9 @@
"booksDuration": "Durée" "booksDuration": "Durée"
}, },
"homeassistant": { "homeassistant": {
"people_home": "People Home", "people_home": "Personne à la maison",
"lights_on": "Lumières allumées", "lights_on": "Lumières allumées",
"switches_on": "Commutateur On" "switches_on": "Interrupteurs allumés"
}, },
"whatsupdocker": { "whatsupdocker": {
"monitoring": "Conteneurs", "monitoring": "Conteneurs",
@ -789,7 +795,7 @@
"inProgress": "En cours", "inProgress": "En cours",
"totalPrs": "PRs Total", "totalPrs": "PRs Total",
"myPrs": "Mes PRs", "myPrs": "Mes PRs",
"approved": "Validé" "approved": "Approuvé"
}, },
"gamedig": { "gamedig": {
"status": "Statut", "status": "Statut",
@ -800,8 +806,8 @@
"currentPlayers": "Joueurs actuels", "currentPlayers": "Joueurs actuels",
"players": "Joueurs", "players": "Joueurs",
"maxPlayers": "Joueurs max", "maxPlayers": "Joueurs max",
"bots": "Bots", "bots": "Robots",
"ping": "Ping" "ping": "Latence"
}, },
"urbackup": { "urbackup": {
"ok": "Ok", "ok": "Ok",
@ -826,8 +832,8 @@
"openwrt": { "openwrt": {
"uptime": "Démarré depuis", "uptime": "Démarré depuis",
"cpuLoad": "Charge moyenne CPU (5 min)", "cpuLoad": "Charge moyenne CPU (5 min)",
"up": "Up", "up": "Haut",
"down": "Down", "down": "Bas",
"bytesTx": "Transmis", "bytesTx": "Transmis",
"bytesRx": "Reçu" "bytesRx": "Reçu"
}, },
@ -840,9 +846,9 @@
"sitesDown": "Hors ligne", "sitesDown": "Hors ligne",
"paused": "En Pause", "paused": "En Pause",
"notyetchecked": "Non vérifié", "notyetchecked": "Non vérifié",
"up": "Up", "up": "Haut",
"seemsdown": "Semble hors ligne", "seemsdown": "Semble hors ligne",
"down": "Down", "down": "Bas",
"unknown": "Inconnu" "unknown": "Inconnu"
}, },
"calendar": { "calendar": {
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Anomalies", "issues": "Anomalies",
"pulls": "Demandes de tirage" "pulls": "Demandes de tirage",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scènes", "scenes": "Scènes",
@ -912,7 +919,7 @@
}, },
"crowdsec": { "crowdsec": {
"alerts": "Alertes", "alerts": "Alertes",
"bans": "Exclusions" "bans": "Bannissements"
}, },
"wgeasy": { "wgeasy": {
"connected": "Connecté", "connected": "Connecté",
@ -927,12 +934,12 @@
"banned": "Banni" "banned": "Banni"
}, },
"myspeed": { "myspeed": {
"ping": "Ping", "ping": "Latence",
"download": "Récep.", "download": "Récep.",
"upload": "Envoi" "upload": "Téléverser"
}, },
"stocks": { "stocks": {
"stocks": "Actions", "stocks": "Stocks",
"loading": "Chargement", "loading": "Chargement",
"open": "Ouvert - Marché américain", "open": "Ouvert - Marché américain",
"closed": "Fermé - marché américain", "closed": "Fermé - marché américain",
@ -981,8 +988,8 @@
"beszel": { "beszel": {
"name": "Nom", "name": "Nom",
"systems": "Systèmes", "systems": "Systèmes",
"up": "Up", "up": "Haut",
"down": "Down", "down": "Bas",
"paused": "En Pause", "paused": "En Pause",
"pending": "En attente", "pending": "En attente",
"status": "Statut", "status": "Statut",
@ -1010,5 +1017,30 @@
"issues": "Anomalies", "issues": "Anomalies",
"merges": "Demandes de fusion de branches", "merges": "Demandes de fusion de branches",
"projects": "Projets" "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", "up": "Up",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Sent",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateway": "Connected gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Up",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Sent",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateway": "Connected gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Dostupno",
"received": "Primljeno", "received": "Primljeno",
"sent": "Poslano", "sent": "Poslano",
"externalIPAddress": "Eksterna IP adresa" "externalIPAddress": "Eksterna IP adresa",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Glavne grane", "upstreams": "Glavne grane",
@ -176,7 +178,7 @@
"connectedAp": "Povezani AP-ovi", "connectedAp": "Povezani AP-ovi",
"activeUser": "Aktivni uređaji", "activeUser": "Aktivni uređaji",
"alerts": "Upozorenja", "alerts": "Upozorenja",
"connectedGateway": "Povezani pristupi", "connectedGateways": "Connected gateways",
"connectedSwitches": "Povezani prekidači" "connectedSwitches": "Povezani prekidači"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Obrađeno", "processed": "Obrađeno",
"time": "Vrijeme" "time": "Vrijeme"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Pregledne ploče", "dashboards": "Pregledne ploče",
"datasources": "Izvori podataka", "datasources": "Izvori podataka",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Obavijesti", "notifications": "Obavijesti",
"issues": "Problemi", "issues": "Problemi",
"pulls": "Zahtjevi za povlačenje" "pulls": "Zahtjevi za povlačenje",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scene", "scenes": "Scene",
@ -1010,5 +1017,30 @@
"issues": "Problemi", "issues": "Problemi",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Fel",
"received": "Fogadott", "received": "Fogadott",
"sent": "Küldött", "sent": "Küldött",
"externalIPAddress": "Külső IP cím" "externalIPAddress": "Külső IP cím",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreamek", "upstreams": "Upstreamek",
@ -176,7 +178,7 @@
"connectedAp": "Csatlakoztatott AP-k", "connectedAp": "Csatlakoztatott AP-k",
"activeUser": "Aktív eszközök", "activeUser": "Aktív eszközök",
"alerts": "Riasztások", "alerts": "Riasztások",
"connectedGateway": "Csatlakoztatott gateway-ek", "connectedGateways": "Connected gateways",
"connectedSwitches": "Csatlakoztatott switch-ek" "connectedSwitches": "Csatlakoztatott switch-ek"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Feldolgozott", "processed": "Feldolgozott",
"time": "Idő" "time": "Idő"
}, },
"firefly": {
"networth": "Nettó érték",
"budget": "Költségkeret"
},
"grafana": { "grafana": {
"dashboards": "Műszerfalak", "dashboards": "Műszerfalak",
"datasources": "Adatforrások", "datasources": "Adatforrások",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Üzenetek", "notifications": "Üzenetek",
"issues": "Problémák", "issues": "Problémák",
"pulls": "Pull request-ek" "pulls": "Pull request-ek",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Jelenetek", "scenes": "Jelenetek",
@ -1010,5 +1017,30 @@
"issues": "Problémák", "issues": "Problémák",
"merges": "Merge kérések", "merges": "Merge kérések",
"projects": "Projektek" "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}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "duration": "{{value, duration}}",
"months": "bulan", "months": "bln",
"days": "h", "days": "h",
"hours": "j", "hours": "j",
"minutes": "m", "minutes": "m",
@ -140,7 +140,7 @@
"connectionStatusPendingDisconnect": "Menunggu Terputus", "connectionStatusPendingDisconnect": "Menunggu Terputus",
"connectionStatusDisconnecting": "Sedan Memutus", "connectionStatusDisconnecting": "Sedan Memutus",
"connectionStatusDisconnected": "Terputus", "connectionStatusDisconnected": "Terputus",
"connectionStatusConnected": "Connected", "connectionStatusConnected": "Tersambung",
"uptime": "Waktu Aktif", "uptime": "Waktu Aktif",
"maxDown": "Maks Unduh", "maxDown": "Maks Unduh",
"maxUp": "Maks Unggah", "maxUp": "Maks Unggah",
@ -148,7 +148,9 @@
"up": "Hidup", "up": "Hidup",
"received": "Diterima", "received": "Diterima",
"sent": "Terkirim", "sent": "Terkirim",
"externalIPAddress": "IP Eksternal" "externalIPAddress": "IP Eksternal",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Strim Luar", "upstreams": "Strim Luar",
@ -176,7 +178,7 @@
"connectedAp": "AP Tersambung", "connectedAp": "AP Tersambung",
"activeUser": "Perangakat yang Aktif", "activeUser": "Perangakat yang Aktif",
"alerts": "Peringatan", "alerts": "Peringatan",
"connectedGateway": "Gateway Tersambung", "connectedGateways": "Connected gateways",
"connectedSwitches": "Switch Tersambung" "connectedSwitches": "Switch Tersambung"
}, },
"nzbget": { "nzbget": {
@ -283,9 +285,9 @@
}, },
"netalertx": { "netalertx": {
"total": "Total", "total": "Total",
"connected": "Connected", "connected": "Tersambung",
"new_devices": "New Devices", "new_devices": "Perangkat Baru",
"down_alerts": "Down Alerts" "down_alerts": "Peringatan Pemadaman"
}, },
"pihole": { "pihole": {
"queries": "Kueri", "queries": "Kueri",
@ -311,17 +313,17 @@
}, },
"suwayomi": { "suwayomi": {
"download": "Terunduh", "download": "Terunduh",
"nondownload": "Non-Downloaded", "nondownload": "Belum Diunduh",
"read": "Baca", "read": "Baca",
"unread": "Belum Dibaca", "unread": "Belum Dibaca",
"downloadedread": "Downloaded & Read", "downloadedread": "Diunduh & Dibaca",
"downloadedunread": "Downloaded & Unread", "downloadedunread": "Diunduh & Belum Dibaca",
"nondownloadedread": "Non-Downloaded & Read", "nondownloadedread": "Belum Diunduh & Dibaca",
"nondownloadedunread": "Non-Downloaded & Unread" "nondownloadedunread": "Belum Diunduh & Belum Dibaca"
}, },
"tailscale": { "tailscale": {
"address": "Alamat", "address": "Alamat",
"expires": "Kadaluarsa", "expires": "Kedaluwarsa",
"never": "Tidak Pernah", "never": "Tidak Pernah",
"last_seen": "Terakhir terlihat", "last_seen": "Terakhir terlihat",
"now": "Sekarang", "now": "Sekarang",
@ -335,12 +337,12 @@
}, },
"technitium": { "technitium": {
"totalQueries": "Kueri", "totalQueries": "Kueri",
"totalNoError": "Success", "totalNoError": "Berhasil",
"totalServerFailure": "Failures", "totalServerFailure": "Gagal",
"totalNxDomain": "NX Domains", "totalNxDomain": "Domain NX",
"totalRefused": "Refused", "totalRefused": "Ditolak",
"totalAuthoritative": "Authoritative", "totalAuthoritative": "Authoritative",
"totalRecursive": "Recursive", "totalRecursive": "Rekursif",
"totalCached": "Cached", "totalCached": "Cached",
"totalBlocked": "Terblokir", "totalBlocked": "Terblokir",
"totalDropped": "Dropped", "totalDropped": "Dropped",
@ -702,6 +704,10 @@
"processed": "Terproses", "processed": "Terproses",
"time": "Waktu" "time": "Waktu"
}, },
"firefly": {
"networth": "Kekayaan Bersih",
"budget": "Anggaran"
},
"grafana": { "grafana": {
"dashboards": "Dasbor", "dashboards": "Dasbor",
"datasources": "Sumber Data", "datasources": "Sumber Data",
@ -854,16 +860,16 @@
}, },
"romm": { "romm": {
"platforms": "Platform", "platforms": "Platform",
"totalRoms": "Games", "totalRoms": "Permainan",
"saves": "Saves", "saves": "Saves",
"states": "States", "states": "Kondisi",
"screenshots": "Screenshots", "screenshots": "Tangkapan Layar",
"totalfilesize": "Total Size" "totalfilesize": "Total Ukuran"
}, },
"mailcow": { "mailcow": {
"domains": "Jumlah Domain", "domains": "Jumlah Domain",
"mailboxes": "Mailboxes", "mailboxes": "Kotak surat",
"mails": "Mails", "mails": "Surat",
"storage": "Penyimpanan" "storage": "Penyimpanan"
}, },
"netdata": { "netdata": {
@ -879,51 +885,52 @@
"gitea": { "gitea": {
"notifications": "Notifikasi", "notifications": "Notifikasi",
"issues": "Isu", "issues": "Isu",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Adegan",
"scenesPlayed": "Scenes Played", "scenesPlayed": "Adegan Dimainkan",
"playCount": "Total Plays", "playCount": "Total Dimainkan",
"playDuration": "Time Watched", "playDuration": "Waktu Ditonton",
"sceneSize": "Scenes Size", "sceneSize": "Ukuran Adegan",
"sceneDuration": "Scenes Duration", "sceneDuration": "Durasi Adegan",
"images": "Images", "images": "Gambar",
"imageSize": "Images Size", "imageSize": "Ukuran Gambar",
"galleries": "Galleries", "galleries": "Galeri",
"performers": "Performers", "performers": "Pemain",
"studios": "Studios", "studios": "Studio",
"movies": "Film", "movies": "Film",
"tags": "Tag", "tags": "Tag",
"oCount": "O Count" "oCount": "Jumlah O"
}, },
"tandoor": { "tandoor": {
"users": "Pengguna", "users": "Pengguna",
"recipes": "Resep", "recipes": "Resep",
"keywords": "Keywords" "keywords": "Kata Kunci"
}, },
"homebox": { "homebox": {
"items": "Items", "items": "Items",
"totalWithWarranty": "With Warranty", "totalWithWarranty": "Dengan Garansi",
"locations": "Locations", "locations": "Lokasi",
"labels": "Labels", "labels": "Label",
"users": "Pengguna", "users": "Pengguna",
"totalValue": "Total Value" "totalValue": "Total Nilai"
}, },
"crowdsec": { "crowdsec": {
"alerts": "Peringatan", "alerts": "Peringatan",
"bans": "Bans" "bans": "Bans"
}, },
"wgeasy": { "wgeasy": {
"connected": "Connected", "connected": "Tersambung",
"enabled": "Aktif", "enabled": "Aktif",
"disabled": "Nonaktif", "disabled": "Nonaktif",
"total": "Total" "total": "Total"
}, },
"swagdashboard": { "swagdashboard": {
"proxied": "Proxied", "proxied": "Diproksi",
"auth": "With Auth", "auth": "With Auth",
"outdated": "Outdated", "outdated": "Usang",
"banned": "Banned" "banned": "Banned"
}, },
"myspeed": { "myspeed": {
@ -932,43 +939,43 @@
"upload": "Unggah" "upload": "Unggah"
}, },
"stocks": { "stocks": {
"stocks": "Stocks", "stocks": "Saham",
"loading": "Loading", "loading": "Memuat",
"open": "Open - US Market", "open": "Buka - Pasar AS",
"closed": "Closed - US Market", "closed": "Tutup - Pasar AS",
"invalidConfiguration": "Invalid Configuration" "invalidConfiguration": "Konfigurasi Invalid"
}, },
"frigate": { "frigate": {
"cameras": "Cameras", "cameras": "Kamera",
"uptime": "Waktu Aktif", "uptime": "Waktu Aktif",
"version": "Versi" "version": "Versi"
}, },
"linkwarden": { "linkwarden": {
"links": "Links", "links": "Tautan",
"collections": "Collections", "collections": "Koleksi",
"tags": "Tag" "tags": "Tag"
}, },
"zabbix": { "zabbix": {
"unclassified": "Not classified", "unclassified": "Not classified",
"information": "Informasi", "information": "Informasi",
"warning": "Warning", "warning": "Peringatan",
"average": "Average", "average": "Rata-rata",
"high": "High", "high": "Tinggi",
"disaster": "Disaster" "disaster": "Bencana"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Vehicle", "vehicle": "Kendaraan",
"vehicles": "Vehicles", "vehicles": "Kendaraan",
"serviceRecords": "Service Records", "serviceRecords": "Catatan Servis",
"reminders": "Reminders", "reminders": "Pengingat",
"nextReminder": "Next Reminder", "nextReminder": "Pengingat Berikutnya",
"none": "None" "none": "Tidak ada"
}, },
"vikunja": { "vikunja": {
"projects": "Active Projects", "projects": "Proyek Aktif",
"tasks7d": "Tasks Due This Week", "tasks7d": "Tugas Jatuh Tempo Minggu Ini",
"tasksOverdue": "Overdue Tasks", "tasksOverdue": "Tugas Terlewat",
"tasksInProgress": "Tasks In Progress" "tasksInProgress": "Tugas Berlangsung"
}, },
"headscale": { "headscale": {
"name": "Nama", "name": "Nama",
@ -980,7 +987,7 @@
}, },
"beszel": { "beszel": {
"name": "Nama", "name": "Nama",
"systems": "Systems", "systems": "Sistem",
"up": "Hidup", "up": "Hidup",
"down": "Mati", "down": "Mati",
"paused": "Pause", "paused": "Pause",
@ -989,26 +996,51 @@
"updated": "Terbarui", "updated": "Terbarui",
"cpu": "CPU", "cpu": "CPU",
"memory": "MEM", "memory": "MEM",
"disk": "Disk", "disk": "Diska",
"network": "NET" "network": "NET"
}, },
"argocd": { "argocd": {
"apps": "Apps", "apps": "Apl",
"synced": "Synced", "synced": "Tersinkron",
"outOfSync": "Out Of Sync", "outOfSync": "Tidak Sinkron",
"healthy": "Lancar", "healthy": "Lancar",
"degraded": "Degraded", "degraded": "Terdegradasi",
"progressing": "Progressing", "progressing": "Progressing",
"missing": "Tidak Ditemukan", "missing": "Tidak Ditemukan",
"suspended": "Suspended" "suspended": "Ditangguhkan"
}, },
"spoolman": { "spoolman": {
"loading": "Loading" "loading": "Memuat"
}, },
"gitlab": { "gitlab": {
"groups": "Groups", "groups": "Grup",
"issues": "Isu", "issues": "Isu",
"merges": "Merge Requests", "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", "up": "Up",
"received": "Ricevuti", "received": "Ricevuti",
"sent": "Inviati", "sent": "Inviati",
"externalIPAddress": "IP Esterno" "externalIPAddress": "IP Esterno",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstream", "upstreams": "Upstream",
@ -176,7 +178,7 @@
"connectedAp": "AP Connessi", "connectedAp": "AP Connessi",
"activeUser": "Dispositivi attivi", "activeUser": "Dispositivi attivi",
"alerts": "Allarmi", "alerts": "Allarmi",
"connectedGateway": "Gateway connessi", "connectedGateways": "Connected gateways",
"connectedSwitches": "Switch connessi" "connectedSwitches": "Switch connessi"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Elaborati", "processed": "Elaborati",
"time": "Tempo" "time": "Tempo"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboard", "dashboards": "Dashboard",
"datasources": "Origine dei Dati", "datasources": "Origine dei Dati",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifiche", "notifications": "Notifiche",
"issues": "Problemi", "issues": "Problemi",
"pulls": "Richieste di Pull" "pulls": "Richieste di Pull",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scene", "scenes": "Scene",
@ -1010,5 +1017,30 @@
"issues": "Problemi", "issues": "Problemi",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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": "稼働", "up": "稼働",
"received": "受信済み", "received": "受信済み",
"sent": "送信済み", "sent": "送信済み",
"externalIPAddress": "退出ID" "externalIPAddress": "退出ID",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "アップストリーム", "upstreams": "アップストリーム",
@ -176,7 +178,7 @@
"connectedAp": "接続されたAP", "connectedAp": "接続されたAP",
"activeUser": "アクティブデバイス", "activeUser": "アクティブデバイス",
"alerts": "アラート", "alerts": "アラート",
"connectedGateway": "接続されたゲートウェイ", "connectedGateways": "Connected gateways",
"connectedSwitches": "接続スイッチ" "connectedSwitches": "接続スイッチ"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "処理済み", "processed": "処理済み",
"time": "時間" "time": "時間"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "ダッシュ ボード", "dashboards": "ダッシュ ボード",
"datasources": "データソース", "datasources": "データソース",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "通知", "notifications": "通知",
"issues": "課題", "issues": "課題",
"pulls": "プルリクエスト" "pulls": "プルリクエスト",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "シーン", "scenes": "シーン",
@ -1010,5 +1017,30 @@
"issues": "課題", "issues": "課題",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Up",
"received": "수신됨", "received": "수신됨",
"sent": "전송됨", "sent": "전송됨",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "연결된 AP", "connectedAp": "연결된 AP",
"activeUser": "활성 장치", "activeUser": "활성 장치",
"alerts": "경고", "alerts": "경고",
"connectedGateway": "연결된 게이트웨이", "connectedGateways": "Connected gateways",
"connectedSwitches": "연결된 스위치" "connectedSwitches": "연결된 스위치"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "처리됨", "processed": "처리됨",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "대시보드", "dashboards": "대시보드",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "알림", "notifications": "알림",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "장면", "scenes": "장면",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Up",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Sent",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Savienotie piekļuves punkti", "connectedAp": "Savienotie piekļuves punkti",
"activeUser": "Aktīvās ierīces", "activeUser": "Aktīvās ierīces",
"alerts": "Paziņojumi", "alerts": "Paziņojumi",
"connectedGateway": "Savienotās vārtejas", "connectedGateways": "Connected gateways",
"connectedSwitches": "Savienotie komutatori" "connectedSwitches": "Savienotie komutatori"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Hidup",
"received": "Diterima", "received": "Diterima",
"sent": "Telah dihantar", "sent": "Telah dihantar",
"externalIPAddress": "IP Luaran" "externalIPAddress": "IP Luaran",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Peranti aktif", "activeUser": "Peranti aktif",
"alerts": "Perhatian", "alerts": "Perhatian",
"connectedGateway": "Connected gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Sudah diprosess", "processed": "Sudah diprosess",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Adegan", "scenes": "Adegan",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Online",
"received": "Ontvangen", "received": "Ontvangen",
"sent": "Verzonden", "sent": "Verzonden",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Verbonden APs", "connectedAp": "Verbonden APs",
"activeUser": "Actieve apparaten", "activeUser": "Actieve apparaten",
"alerts": "Meldingen", "alerts": "Meldingen",
"connectedGateway": "Verbonden gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Verbonden switches" "connectedSwitches": "Verbonden switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Verwerkt", "processed": "Verwerkt",
"time": "Tijd" "time": "Tijd"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Bronnen", "datasources": "Data Bronnen",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notificaties", "notifications": "Notificaties",
"issues": "Problemen", "issues": "Problemen",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scènes", "scenes": "Scènes",
@ -1010,5 +1017,30 @@
"issues": "Problemen", "issues": "Problemen",
"merges": "Merge Verzoeken", "merges": "Merge Verzoeken",
"projects": "Projecten" "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", "up": "Oppe",
"received": "Mottatt", "received": "Mottatt",
"sent": "Sendt", "sent": "Sendt",
"externalIPAddress": "Ekstern IP" "externalIPAddress": "Ekstern IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Oppstrøms", "upstreams": "Oppstrøms",
@ -176,7 +178,7 @@
"connectedAp": "Tilkoblede AP'er", "connectedAp": "Tilkoblede AP'er",
"activeUser": "Aktive enheter", "activeUser": "Aktive enheter",
"alerts": "Varsler", "alerts": "Varsler",
"connectedGateway": "Tilkoblede gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Tilkoblede switcher" "connectedSwitches": "Tilkoblede switcher"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Behandlet", "processed": "Behandlet",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Varslinger", "notifications": "Varslinger",
"issues": "Issues", "issues": "Issues",
"pulls": "Forespørsel" "pulls": "Forespørsel",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scener", "scenes": "Scener",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Dostępny",
"received": "Odebrane", "received": "Odebrane",
"sent": "Wysłane", "sent": "Wysłane",
"externalIPAddress": "Pub. IP" "externalIPAddress": "Pub. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Połączone punkty dostępowe", "connectedAp": "Połączone punkty dostępowe",
"activeUser": "Aktywne urządzenia", "activeUser": "Aktywne urządzenia",
"alerts": "Alarmy", "alerts": "Alarmy",
"connectedGateway": "Połączone bramy", "connectedGateways": "Connected gateways",
"connectedSwitches": "Połączone przełączniki" "connectedSwitches": "Połączone przełączniki"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Przetworzone", "processed": "Przetworzone",
"time": "Czas" "time": "Czas"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Panel główny", "dashboards": "Panel główny",
"datasources": "Źródła danych", "datasources": "Źródła danych",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Powiadomienia", "notifications": "Powiadomienia",
"issues": "Zgłoszenia", "issues": "Zgłoszenia",
"pulls": "Żądania Pull" "pulls": "Żądania Pull",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Sceny", "scenes": "Sceny",
@ -1010,5 +1017,30 @@
"issues": "Zgłoszenia", "issues": "Zgłoszenia",
"merges": "Żądania scaleń", "merges": "Żądania scaleń",
"projects": "Projekty" "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", "up": "Up",
"received": "Recebido", "received": "Recebido",
"sent": "Enviado", "sent": "Enviado",
"externalIPAddress": "Endereço IP Externo" "externalIPAddress": "Endereço IP Externo",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "APs Ligados", "connectedAp": "APs Ligados",
"activeUser": "Dispositivos activos", "activeUser": "Dispositivos activos",
"alerts": "Alertas", "alerts": "Alertas",
"connectedGateway": "Gateways ligados", "connectedGateways": "Connected gateways",
"connectedSwitches": "Switches ligados" "connectedSwitches": "Switches ligados"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processado", "processed": "Processado",
"time": "Hora" "time": "Hora"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Painéis", "dashboards": "Painéis",
"datasources": "Origem de Dados", "datasources": "Origem de Dados",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notificações", "notifications": "Notificações",
"issues": "Problemas", "issues": "Problemas",
"pulls": "Solicitar pull" "pulls": "Solicitar pull",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Cenas", "scenes": "Cenas",
@ -1010,5 +1017,30 @@
"issues": "Problemas", "issues": "Problemas",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "load": "Carga",
"temp": "TEMP", "temp": "TEMP",
"max": "Máximo", "max": "Máximo",
"uptime": "CIMA" "uptime": "ATIVO"
}, },
"unifi": { "unifi": {
"users": "Usuários", "users": "Usuários",
@ -61,7 +61,7 @@
"wlan_devices": "Dispositivos WLAN", "wlan_devices": "Dispositivos WLAN",
"lan_users": "Usuários de LAN", "lan_users": "Usuários de LAN",
"wlan_users": "Usuários de WLAN", "wlan_users": "Usuários de WLAN",
"up": "CIMA", "up": "ATIVO",
"down": "Desligado", "down": "Desligado",
"wait": "Por favor, aguarde", "wait": "Por favor, aguarde",
"empty_data": "Status do Subsistema desconhecido" "empty_data": "Status do Subsistema desconhecido"
@ -148,7 +148,9 @@
"up": "Ativo", "up": "Ativo",
"received": "Recebido", "received": "Recebido",
"sent": "Enviado", "sent": "Enviado",
"externalIPAddress": "IP Externo" "externalIPAddress": "IP Externo",
"externalIPv6Address": "IPv6 Externo",
"externalIPv6Prefix": "Prefixo IPv6 Externo"
}, },
"caddy": { "caddy": {
"upstreams": "Streams de Envio", "upstreams": "Streams de Envio",
@ -176,7 +178,7 @@
"connectedAp": "APs Ligados", "connectedAp": "APs Ligados",
"activeUser": "Dispositivos ativos", "activeUser": "Dispositivos ativos",
"alerts": "Alertas", "alerts": "Alertas",
"connectedGateway": "Gateways conectados", "connectedGateways": "Gateways conectados",
"connectedSwitches": "Switches conectados" "connectedSwitches": "Switches conectados"
}, },
"nzbget": { "nzbget": {
@ -227,8 +229,8 @@
"seed": "Semente" "seed": "Semente"
}, },
"develancacheui": { "develancacheui": {
"cachehitbytes": "Cache Hit Bytes", "cachehitbytes": "Bytes de Acerto de Cache",
"cachemissbytes": "Cache Miss Bytes" "cachemissbytes": "Bytes de Falha de Cache"
}, },
"downloadstation": { "downloadstation": {
"download": "Descarregar", "download": "Descarregar",
@ -311,13 +313,13 @@
}, },
"suwayomi": { "suwayomi": {
"download": "Baixado", "download": "Baixado",
"nondownload": "Non-Downloaded", "nondownload": "Não Baixado",
"read": "Lido", "read": "Lido",
"unread": "Não lida", "unread": "Não lida",
"downloadedread": "Downloaded & Read", "downloadedread": "Baixado e Lido",
"downloadedunread": "Downloaded & Unread", "downloadedunread": "Baixado e Não Lido",
"nondownloadedread": "Non-Downloaded & Read", "nondownloadedread": "Não Baixado e Lido",
"nondownloadedunread": "Non-Downloaded & Unread" "nondownloadedunread": "Não Baixado e Não Lido"
}, },
"tailscale": { "tailscale": {
"address": "Endereço", "address": "Endereço",
@ -335,15 +337,15 @@
}, },
"technitium": { "technitium": {
"totalQueries": "Consultas", "totalQueries": "Consultas",
"totalNoError": "Success", "totalNoError": "Sucesso",
"totalServerFailure": "Failures", "totalServerFailure": "Falhas",
"totalNxDomain": "NX Domains", "totalNxDomain": "Domínios NX",
"totalRefused": "Refused", "totalRefused": "Recusado",
"totalAuthoritative": "Authoritative", "totalAuthoritative": "Autoritativo",
"totalRecursive": "Recursive", "totalRecursive": "Recursivo",
"totalCached": "Cached", "totalCached": "Em cache",
"totalBlocked": "Bloqueado", "totalBlocked": "Bloqueado",
"totalDropped": "Dropped", "totalDropped": "Perdidos",
"totalClients": "Clientes" "totalClients": "Clientes"
}, },
"tdarr": { "tdarr": {
@ -434,7 +436,7 @@
"temp": "TEMP", "temp": "TEMP",
"_temp": "Temperatura", "_temp": "Temperatura",
"warn": "Aviso", "warn": "Aviso",
"uptime": "CIMA", "uptime": "ATIVO",
"total": "Total", "total": "Total",
"free": "Livre", "free": "Livre",
"used": "Utilizado", "used": "Utilizado",
@ -702,6 +704,10 @@
"processed": "Processado", "processed": "Processado",
"time": "Hora" "time": "Hora"
}, },
"firefly": {
"networth": "Valor Líquido",
"budget": "Orçamento"
},
"grafana": { "grafana": {
"dashboards": "Painéis", "dashboards": "Painéis",
"datasources": "Origem de Dados", "datasources": "Origem de Dados",
@ -854,16 +860,16 @@
}, },
"romm": { "romm": {
"platforms": "Plataformas", "platforms": "Plataformas",
"totalRoms": "Games", "totalRoms": "Jogos",
"saves": "Saves", "saves": "Saves",
"states": "States", "states": "Estados",
"screenshots": "Screenshots", "screenshots": "Capturas de Tela",
"totalfilesize": "Total Size" "totalfilesize": "Tamanho total"
}, },
"mailcow": { "mailcow": {
"domains": "Domínios", "domains": "Domínios",
"mailboxes": "Mailboxes", "mailboxes": "Caixas de e-mail",
"mails": "Mails", "mails": "Mensagens",
"storage": "Armazenamento" "storage": "Armazenamento"
}, },
"netdata": { "netdata": {
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notificações", "notifications": "Notificações",
"issues": "Problemas", "issues": "Problemas",
"pulls": "Solicitações de Envio" "pulls": "Solicitações de Envio",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Cenas", "scenes": "Cenas",
@ -945,30 +952,30 @@
}, },
"linkwarden": { "linkwarden": {
"links": "Links", "links": "Links",
"collections": "Collections", "collections": "Coleções",
"tags": "Marcadores" "tags": "Marcadores"
}, },
"zabbix": { "zabbix": {
"unclassified": "Not classified", "unclassified": "Não classificado",
"information": "Informação", "information": "Informação",
"warning": "Warning", "warning": "Aviso",
"average": "Average", "average": "Médio",
"high": "High", "high": "Alto",
"disaster": "Disaster" "disaster": "Desastre"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Vehicle", "vehicle": "Veículo",
"vehicles": "Vehicles", "vehicles": "Veículos",
"serviceRecords": "Service Records", "serviceRecords": "Registros de Serviço",
"reminders": "Reminders", "reminders": "Lembretes",
"nextReminder": "Next Reminder", "nextReminder": "Próximo Lembrete",
"none": "None" "none": "Nenhum"
}, },
"vikunja": { "vikunja": {
"projects": "Active Projects", "projects": "Projetos Ativos",
"tasks7d": "Tasks Due This Week", "tasks7d": "Tarefas que vencem nesta semana",
"tasksOverdue": "Overdue Tasks", "tasksOverdue": "Tarefas Atrasadas",
"tasksInProgress": "Tasks In Progress" "tasksInProgress": "Tarefas em Andamento"
}, },
"headscale": { "headscale": {
"name": "Nome", "name": "Nome",
@ -980,7 +987,7 @@
}, },
"beszel": { "beszel": {
"name": "Nome", "name": "Nome",
"systems": "Systems", "systems": "Sistemas",
"up": "Ativo", "up": "Ativo",
"down": "Inativo", "down": "Inativo",
"paused": "Pausado", "paused": "Pausado",
@ -989,26 +996,51 @@
"updated": "Atualizado", "updated": "Atualizado",
"cpu": "CPU", "cpu": "CPU",
"memory": "MEM", "memory": "MEM",
"disk": "Disk", "disk": "Disco",
"network": "NET" "network": "Rede"
}, },
"argocd": { "argocd": {
"apps": "Apps", "apps": "Aplicativos",
"synced": "Synced", "synced": "Sincronizado",
"outOfSync": "Out Of Sync", "outOfSync": "Fora de sincronia",
"healthy": "Saudável", "healthy": "Saudável",
"degraded": "Degraded", "degraded": "Degradado",
"progressing": "Progressing", "progressing": "Progredindo",
"missing": "Faltando", "missing": "Faltando",
"suspended": "Suspended" "suspended": "Suspenso"
}, },
"spoolman": { "spoolman": {
"loading": "Carregando" "loading": "Carregando"
}, },
"gitlab": { "gitlab": {
"groups": "Groups", "groups": "Grupos",
"issues": "Problemas", "issues": "Problemas",
"merges": "Merge Requests", "merges": "Solicitações de mesclagem",
"projects": "Projects" "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", "up": "Sus",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Sent",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreamuri", "upstreams": "Upstreamuri",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateway": "Connected gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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": "Онлайн", "up": "Онлайн",
"received": "Получено", "received": "Получено",
"sent": "Отправлено", "sent": "Отправлено",
"externalIPAddress": "Внеш. IP" "externalIPAddress": "Внеш. IP",
"externalIPv6Address": "Внешний IPv6",
"externalIPv6Prefix": "Внешний IPv6 префикс"
}, },
"caddy": { "caddy": {
"upstreams": "Входящие каналы", "upstreams": "Входящие каналы",
@ -176,7 +178,7 @@
"connectedAp": "Подключенные точки доступа", "connectedAp": "Подключенные точки доступа",
"activeUser": "Активные устройства", "activeUser": "Активные устройства",
"alerts": "Предупреждения", "alerts": "Предупреждения",
"connectedGateway": "Подключенные шлюзы", "connectedGateways": "Подключенные шлюзы",
"connectedSwitches": "Подключенные коммутаторы" "connectedSwitches": "Подключенные коммутаторы"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Обработано", "processed": "Обработано",
"time": "Время" "time": "Время"
}, },
"firefly": {
"networth": "Общая средства",
"budget": "Бюджет"
},
"grafana": { "grafana": {
"dashboards": "Панели", "dashboards": "Панели",
"datasources": "Источники данных", "datasources": "Источники данных",
@ -855,7 +861,7 @@
"romm": { "romm": {
"platforms": "Платформы", "platforms": "Платформы",
"totalRoms": "Игры", "totalRoms": "Игры",
"saves": "Сейвы", "saves": "Сохранения",
"states": "Состояния", "states": "Состояния",
"screenshots": "Скриншоты", "screenshots": "Скриншоты",
"totalfilesize": "Общий объем" "totalfilesize": "Общий объем"
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Уведомления", "notifications": "Уведомления",
"issues": "Вопросы", "issues": "Вопросы",
"pulls": "Запросы на слияние (Pull Request)" "pulls": "Запросы на слияние (Pull Request)",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Сцены", "scenes": "Сцены",
@ -921,7 +928,7 @@
"total": "Всего" "total": "Всего"
}, },
"swagdashboard": { "swagdashboard": {
"proxied": "Прокси", "proxied": "Проксировано",
"auth": "С Авторизацией", "auth": "С Авторизацией",
"outdated": "Устаревшие", "outdated": "Устаревшие",
"banned": "Заблокированные" "banned": "Заблокированные"
@ -952,17 +959,17 @@
"unclassified": "Не классифицировано", "unclassified": "Не классифицировано",
"information": "Информация", "information": "Информация",
"warning": "Предупреждение", "warning": "Предупреждение",
"average": "Средняя", "average": "Среднее",
"high": "Высокая", "high": "Высокая",
"disaster": "Чрезвычайная" "disaster": "Чрезвычайное"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Автомобиль", "vehicle": "Транспорт",
"vehicles": "Автомобили", "vehicles": "Транспорты",
"serviceRecords": "Сервисные работы", "serviceRecords": "Сервисные записи",
"reminders": "Напоминания", "reminders": "Напоминания",
"nextReminder": "Следующее напоминание", "nextReminder": "Следующее напоминание",
"none": "Нет" "none": "Отсутствует"
}, },
"vikunja": { "vikunja": {
"projects": "Активные Проекты", "projects": "Активные Проекты",
@ -1010,5 +1017,30 @@
"issues": "Вопросы", "issues": "Вопросы",
"merges": "Мердж-реквесты", "merges": "Мердж-реквесты",
"projects": "Проекты" "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", "up": "Nahrávanie",
"received": "Prijaté", "received": "Prijaté",
"sent": "Odoslané", "sent": "Odoslané",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Odosielanie dát", "upstreams": "Odosielanie dát",
@ -176,7 +178,7 @@
"connectedAp": "Pripojené prístupové body", "connectedAp": "Pripojené prístupové body",
"activeUser": "Aktívne zariadenia", "activeUser": "Aktívne zariadenia",
"alerts": "Upozornenia", "alerts": "Upozornenia",
"connectedGateway": "Pripojené sieťové brány", "connectedGateways": "Connected gateways",
"connectedSwitches": "Pripojené prepínače" "connectedSwitches": "Pripojené prepínače"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Spracované", "processed": "Spracované",
"time": "Čas" "time": "Čas"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Panely", "dashboards": "Panely",
"datasources": "Zdroje dát", "datasources": "Zdroje dát",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Oznámenia", "notifications": "Oznámenia",
"issues": "Problémy", "issues": "Problémy",
"pulls": "Pull requesty" "pulls": "Pull requesty",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scény", "scenes": "Scény",
@ -1010,5 +1017,30 @@
"issues": "Problémy", "issues": "Problémy",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Povezan",
"received": "Prejeto", "received": "Prejeto",
"sent": "Poslano", "sent": "Poslano",
"externalIPAddress": "Zun. IP" "externalIPAddress": "Zun. IP",
"externalIPv6Address": "Eks. IPv6",
"externalIPv6Prefix": "Eks. IPv6-predpona"
}, },
"caddy": { "caddy": {
"upstreams": "Pretok gor", "upstreams": "Pretok gor",
@ -176,7 +178,7 @@
"connectedAp": "Povezanih AP", "connectedAp": "Povezanih AP",
"activeUser": "Aktivne naprave", "activeUser": "Aktivne naprave",
"alerts": "Opozorila", "alerts": "Opozorila",
"connectedGateway": "Povezan prehod", "connectedGateways": "Povezani prehodi",
"connectedSwitches": "Povezana stikala" "connectedSwitches": "Povezana stikala"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Procesiran", "processed": "Procesiran",
"time": "Čas" "time": "Čas"
}, },
"firefly": {
"networth": "Neto vrednost",
"budget": "Proračun"
},
"grafana": { "grafana": {
"dashboards": "Nadzorne plošče", "dashboards": "Nadzorne plošče",
"datasources": "Viri podatkov", "datasources": "Viri podatkov",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Obvestila", "notifications": "Obvestila",
"issues": "Težave", "issues": "Težave",
"pulls": "Zahteve za prenos" "pulls": "Zahteve za prenos",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scene", "scenes": "Scene",
@ -1010,5 +1017,30 @@
"issues": "Težave", "issues": "Težave",
"merges": "Združi zahtevke", "merges": "Združi zahtevke",
"projects": "Projekti" "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", "up": "Up",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Sent",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateway": "Connected gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Up",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Sent",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateway": "Connected gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Up",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Sent",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateway": "Connected gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Up",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Sent",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateway": "Connected gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Yükleme",
"received": "Alınan", "received": "Alınan",
"sent": "Gönderilen", "sent": "Gönderilen",
"externalIPAddress": "Harici IP" "externalIPAddress": "Harici IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Akış", "upstreams": "Akış",
@ -176,7 +178,7 @@
"connectedAp": "Bağlı AP'ler", "connectedAp": "Bağlı AP'ler",
"activeUser": "Aktif cihazlar", "activeUser": "Aktif cihazlar",
"alerts": "Alarmlar", "alerts": "Alarmlar",
"connectedGateway": "Bağlı ağ geçitleri", "connectedGateways": "Connected gateways",
"connectedSwitches": "Bağlı anahtarlar" "connectedSwitches": "Bağlı anahtarlar"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "İşlendi", "processed": "İşlendi",
"time": "Zaman" "time": "Zaman"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Kontrol Paneli", "dashboards": "Kontrol Paneli",
"datasources": "Veri Kaynakları", "datasources": "Veri Kaynakları",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Bildirimler", "notifications": "Bildirimler",
"issues": "Sorunlar", "issues": "Sorunlar",
"pulls": "Değişiklik İstekleri" "pulls": "Değişiklik İstekleri",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Sahneler", "scenes": "Sahneler",
@ -1010,5 +1017,30 @@
"issues": "Sorunlar", "issues": "Sorunlar",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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": "Онлайн", "up": "Онлайн",
"received": "Отримано", "received": "Отримано",
"sent": "Надіслано", "sent": "Надіслано",
"externalIPAddress": "Зовнішній IP" "externalIPAddress": "Зовнішній IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Потоки", "upstreams": "Потоки",
@ -176,7 +178,7 @@
"connectedAp": "Підключені точки доступу", "connectedAp": "Підключені точки доступу",
"activeUser": "Активні пристрої", "activeUser": "Активні пристрої",
"alerts": "Оповіщення", "alerts": "Оповіщення",
"connectedGateway": "Підключені шлюзи", "connectedGateways": "Connected gateways",
"connectedSwitches": "Підключені перемикачі" "connectedSwitches": "Підключені перемикачі"
}, },
"nzbget": { "nzbget": {
@ -285,13 +287,13 @@
"total": "Усього", "total": "Усього",
"connected": "З'єднано", "connected": "З'єднано",
"new_devices": "Нові пристрої", "new_devices": "Нові пристрої",
"down_alerts": "Спов. про падіння" "down_alerts": "Сповіщення про падіння"
}, },
"pihole": { "pihole": {
"queries": "Запити", "queries": "Запити",
"blocked": "Заблоковано", "blocked": "Заблоковано",
"blocked_percent": "Заблоковано %", "blocked_percent": "Заблоковано %",
"gravity": "Гравітація" "gravity": "Доменів в списку"
}, },
"adguard": { "adguard": {
"queries": "Запити", "queries": "Запити",
@ -702,6 +704,10 @@
"processed": "Обробка", "processed": "Обробка",
"time": "Час" "time": "Час"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Інформаційні панелі", "dashboards": "Інформаційні панелі",
"datasources": "Джерела даних", "datasources": "Джерела даних",
@ -856,7 +862,7 @@
"platforms": "Платформи", "platforms": "Платформи",
"totalRoms": "Ігри", "totalRoms": "Ігри",
"saves": "Збереження", "saves": "Збереження",
"states": "Штати", "states": "Стани",
"screenshots": "Знімки екрану", "screenshots": "Знімки екрану",
"totalfilesize": "Загальний обсяг" "totalfilesize": "Загальний обсяг"
}, },
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Сповіщення", "notifications": "Сповіщення",
"issues": "Питання", "issues": "Питання",
"pulls": "Pull-запити" "pulls": "Pull-запити",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Сцени", "scenes": "Сцени",
@ -1010,5 +1017,30 @@
"issues": "Питання", "issues": "Питання",
"merges": "Запити на злиття", "merges": "Запити на злиття",
"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", "up": "Up",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Sent",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@ -176,7 +178,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateway": "Connected gateways", "connectedGateways": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "Processed", "processed": "Processed",
"time": "Time" "time": "Time"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Data Sources", "datasources": "Data Sources",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests" "pulls": "Pull Requests",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@ -1010,5 +1017,30 @@
"issues": "Issues", "issues": "Issues",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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": "在線", "up": "在線",
"received": "已接收", "received": "已接收",
"sent": "已送出", "sent": "已送出",
"externalIPAddress": "外部 IP" "externalIPAddress": "外部 IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "上行", "upstreams": "上行",
@ -176,7 +178,7 @@
"connectedAp": "已連接的存取點", "connectedAp": "已連接的存取點",
"activeUser": "在線裝置", "activeUser": "在線裝置",
"alerts": "警示", "alerts": "警示",
"connectedGateway": "已連接的閘道", "connectedGateways": "Connected gateways",
"connectedSwitches": "已連接的交換器" "connectedSwitches": "已連接的交換器"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "已處理", "processed": "已處理",
"time": "時間" "time": "時間"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "控制面板", "dashboards": "控制面板",
"datasources": "數據來源", "datasources": "數據來源",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "信息", "notifications": "信息",
"issues": "出版", "issues": "出版",
"pulls": "提取請求" "pulls": "提取請求",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "場景", "scenes": "場景",
@ -1010,5 +1017,30 @@
"issues": "出版", "issues": "出版",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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", "up": "Up",
"received": "已接收", "received": "已接收",
"sent": "已发送", "sent": "已发送",
"externalIPAddress": "外部IP" "externalIPAddress": "外部IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "上游", "upstreams": "上游",
@ -176,7 +178,7 @@
"connectedAp": "连接中的AP", "connectedAp": "连接中的AP",
"activeUser": "活跃设备", "activeUser": "活跃设备",
"alerts": "警报", "alerts": "警报",
"connectedGateway": "已连接网关", "connectedGateways": "Connected gateways",
"connectedSwitches": "已连接开关" "connectedSwitches": "已连接开关"
}, },
"nzbget": { "nzbget": {
@ -311,13 +313,13 @@
}, },
"suwayomi": { "suwayomi": {
"download": "下载", "download": "下载",
"nondownload": "Non-Downloaded", "nondownload": "未下载",
"read": "已读", "read": "已读",
"unread": "未读", "unread": "未读",
"downloadedread": "Downloaded & Read", "downloadedread": "已下载 & 已读",
"downloadedunread": "Downloaded & Unread", "downloadedunread": "已下载 & 未读",
"nondownloadedread": "Non-Downloaded & Read", "nondownloadedread": "未下载 & 已读",
"nondownloadedunread": "Non-Downloaded & Unread" "nondownloadedunread": "未下载 & 未读"
}, },
"tailscale": { "tailscale": {
"address": "地址", "address": "地址",
@ -702,6 +704,10 @@
"processed": "已处理", "processed": "已处理",
"time": "时间" "time": "时间"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "控制面板", "dashboards": "控制面板",
"datasources": "数据来源", "datasources": "数据来源",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "通知", "notifications": "通知",
"issues": "问题", "issues": "问题",
"pulls": "PR" "pulls": "PR",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "场景", "scenes": "场景",
@ -980,7 +987,7 @@
}, },
"beszel": { "beszel": {
"name": "Name", "name": "Name",
"systems": "Systems", "systems": "系统",
"up": "Up", "up": "Up",
"down": "Down", "down": "Down",
"paused": "暂停", "paused": "暂停",
@ -989,26 +996,51 @@
"updated": "已升级", "updated": "已升级",
"cpu": "CPU", "cpu": "CPU",
"memory": "内存", "memory": "内存",
"disk": "Disk", "disk": "磁盘",
"network": "NET" "network": "网络"
}, },
"argocd": { "argocd": {
"apps": "应用程序", "apps": "应用程序",
"synced": "Synced", "synced": "已同步",
"outOfSync": "Out Of Sync", "outOfSync": "未同步",
"healthy": "健康", "healthy": "健康",
"degraded": "Degraded", "degraded": "已降级",
"progressing": "Progressing", "progressing": "进行中",
"missing": "丢失", "missing": "丢失",
"suspended": "Suspended" "suspended": "已停用"
}, },
"spoolman": { "spoolman": {
"loading": "正在加载" "loading": "正在加载"
}, },
"gitlab": { "gitlab": {
"groups": "Groups", "groups": "群组",
"issues": "问题", "issues": "问题",
"merges": "Merge Requests", "merges": "合并请求",
"projects": "Projects" "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": "在線", "up": "在線",
"received": "已接收", "received": "已接收",
"sent": "已送出", "sent": "已送出",
"externalIPAddress": "外部 IP" "externalIPAddress": "外部 IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "上行", "upstreams": "上行",
@ -176,7 +178,7 @@
"connectedAp": "已連接的存取點", "connectedAp": "已連接的存取點",
"activeUser": "在線裝置", "activeUser": "在線裝置",
"alerts": "警示", "alerts": "警示",
"connectedGateway": "已連接的閘道", "connectedGateways": "Connected gateways",
"connectedSwitches": "已連接的交換器" "connectedSwitches": "已連接的交換器"
}, },
"nzbget": { "nzbget": {
@ -702,6 +704,10 @@
"processed": "已處理", "processed": "已處理",
"time": "時間" "time": "時間"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "控制面板", "dashboards": "控制面板",
"datasources": "數據來源", "datasources": "數據來源",
@ -879,7 +885,8 @@
"gitea": { "gitea": {
"notifications": "信息", "notifications": "信息",
"issues": "出版", "issues": "出版",
"pulls": "提取請求" "pulls": "提取請求",
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "場景", "scenes": "場景",
@ -1010,5 +1017,30 @@
"issues": "出版", "issues": "出版",
"merges": "Merge Requests", "merges": "Merge Requests",
"projects": "Projects" "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 { Disclosure, Transition } from "@headlessui/react";
import { MdKeyboardArrowDown } from "react-icons/md"; import classNames from "classnames";
import ErrorBoundary from "components/errorboundry";
import List from "components/bookmarks/list"; import List from "components/bookmarks/list";
import ErrorBoundary from "components/errorboundry";
import ResolvedIcon from "components/resolvedicon"; import ResolvedIcon from "components/resolvedicon";
import { useEffect, useRef } from "react";
import { MdKeyboardArrowDown } from "react-icons/md";
export default function BookmarksGroup({ export default function BookmarksGroup({
bookmarks, bookmarks,
@ -12,6 +12,7 @@ export default function BookmarksGroup({
disableCollapse, disableCollapse,
groupsInitiallyCollapsed, groupsInitiallyCollapsed,
bookmarksStyle, bookmarksStyle,
maxGroupColumns,
}) { }) {
const panel = useRef(); const panel = useRef();
@ -25,6 +26,9 @@ export default function BookmarksGroup({
className={classNames( className={classNames(
"bookmark-group flex-1 overflow-hidden", "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" ? "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", layout?.header === false ? "px-1" : "p-1 pb-0",
)} )}
> >

View File

@ -1,7 +1,7 @@
import { useContext } from "react";
import classNames from "classnames"; import classNames from "classnames";
import { SettingsContext } from "utils/contexts/settings";
import ResolvedIcon from "components/resolvedicon"; import ResolvedIcon from "components/resolvedicon";
import { useContext } from "react";
import { SettingsContext } from "utils/contexts/settings";
export default function Item({ bookmark, iconOnly = false }) { export default function Item({ bookmark, iconOnly = false }) {
const description = bookmark.description ?? new URL(bookmark.href).hostname; const description = bookmark.description ?? new URL(bookmark.href).hostname;
@ -22,7 +22,7 @@ export default function Item({ bookmark, iconOnly = false }) {
className={classNames( className={classNames(
settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? "-" : ""}${settings.cardBlur}`, 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", "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 ? ( {iconOnly ? (

View File

@ -1,6 +1,6 @@
/* eslint-disable @next/next/no-img-element */ /* eslint-disable @next/next/no-img-element */
/* eslint-disable jsx-a11y/alt-text */ /* 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 { ColorContext } from "utils/contexts/color";
import themes from "utils/styles/themes"; 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 classNames from "classnames";
import { useTranslation } from "next-i18next";
import { useCallback, useContext, useEffect, useRef, useState } from "react";
import useSWR from "swr"; import useSWR from "swr";
import { SettingsContext } from "utils/contexts/settings"; import { SettingsContext } from "utils/contexts/settings";
@ -53,7 +53,7 @@ export default function QuickLaunch({ servicesAndBookmarks, searchString, setSea
const result = results[currentItemIndex]; const result = results[currentItemIndex];
window.open( window.open(
result.href, result.href,
newWindow ? "_blank" : result.target ?? searchProvider?.target ?? settings.target ?? "_blank", newWindow ? "_blank" : (result.target ?? searchProvider?.target ?? settings.target ?? "_blank"),
"noreferrer", "noreferrer",
); );
} }
@ -204,7 +204,8 @@ export default function QuickLaunch({ servicesAndBookmarks, searchString, setSea
return () => { return () => {
abortController.abort(); 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); const [hidden, setHidden] = useState(true);
useEffect(() => { useEffect(() => {

View File

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

View File

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

View File

@ -1,16 +1,16 @@
import { useRef, useEffect } from "react";
import classNames from "classnames";
import { Disclosure, Transition } from "@headlessui/react"; import { Disclosure, Transition } from "@headlessui/react";
import { MdKeyboardArrowDown } from "react-icons/md"; import classNames from "classnames";
import List from "components/services/list";
import ResolvedIcon from "components/resolvedicon"; 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"; import { columnMap } from "../../utils/layout/columns";
export default function ServicesGroup({ export default function ServicesGroup({
group, group,
layout, layout,
fiveColumns, maxGroupColumns,
disableCollapse, disableCollapse,
useEqualHeights, useEqualHeights,
groupsInitiallyCollapsed, groupsInitiallyCollapsed,
@ -31,7 +31,7 @@ export default function ServicesGroup({
className={classNames( className={classNames(
"services-group flex-1", "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" ? "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, groupPadding,
isSubgroup ? "subgroup" : "", isSubgroup ? "subgroup" : "",
)} )}
@ -97,7 +97,7 @@ export default function ServicesGroup({
key={subgroup.name} key={subgroup.name}
group={subgroup} group={subgroup}
layout={layout?.[subgroup.name]} layout={layout?.[subgroup.name]}
fiveColumns={fiveColumns} maxGroupColumns={maxGroupColumns}
disableCollapse={disableCollapse} disableCollapse={disableCollapse}
useEqualHeights={useEqualHeights} useEqualHeights={useEqualHeights}
groupsInitiallyCollapsed={groupsInitiallyCollapsed} groupsInitiallyCollapsed={groupsInitiallyCollapsed}

View File

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

View File

@ -1,5 +1,5 @@
import useSWR from "swr";
import { t } from "i18next"; import { t } from "i18next";
import useSWR from "swr";
export default function KubernetesStatus({ service, style }) { export default function KubernetesStatus({ service, style }) {
const podSelectorString = service.podSelector !== undefined ? `podSelector=${service.podSelector}` : ""; 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"; import useSWR from "swr";
export default function Ping({ groupName, serviceName, style }) { 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"; import useSWR from "swr";
export default function SiteMonitor({ groupName, serviceName, style }) { 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"; import useSWR from "swr";
export default function Status({ service, style }) { export default function Status({ service, style }) {

View File

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

View File

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

View File

@ -3,6 +3,11 @@ import { SettingsContext } from "utils/contexts/settings";
import Error from "./error"; import Error from "./error";
const ALIASED_WIDGETS = {
pialert: "netalertx",
hoarder: "karakeep",
};
export default function Container({ error = false, children, service }) { export default function Container({ error = false, children, service }) {
const { settings } = useContext(SettingsContext); const { settings } = useContext(SettingsContext);
@ -32,7 +37,17 @@ export default function Container({ error = false, children, service }) {
if (!field.includes(".")) { if (!field.includes(".")) {
fullField = `${type}.${field}`; 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"; import { IoAlertCircle } from "react-icons/io5";
function displayError(error) { function displayError(error) {

View File

@ -1,5 +1,5 @@
import { useContext } from "react";
import classNames from "classnames"; import classNames from "classnames";
import { useContext } from "react";
import { TabContext } from "utils/contexts/tab"; import { TabContext } from "utils/contexts/tab";
function slugify(tabName) { 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 { Popover, Transition } from "@headlessui/react";
import classNames from "classnames"; import classNames from "classnames";
import { Fragment, useContext } from "react";
import { IoColorPalette } from "react-icons/io5";
import { ColorContext } from "utils/contexts/color"; import { ColorContext } from "utils/contexts/color";
const colors = [ const colors = [

View File

@ -1,9 +1,12 @@
import { useTranslation } from "next-i18next";
import useSWR from "swr";
import { compareVersions, validate } from "compare-versions"; import { compareVersions, validate } from "compare-versions";
import cache from "memory-cache";
import { useTranslation } from "next-i18next";
import { MdNewReleases } from "react-icons/md"; 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 { t, i18n } = useTranslation();
const buildTime = process.env.NEXT_PUBLIC_BUILDTIME?.length 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 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 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 // use Intl.DateTimeFormat to format the date
const formatDate = (date) => { const formatDate = (date) => {
const options = { const options = {
@ -24,7 +25,15 @@ export default function Version() {
return new Intl.DateTimeFormat(i18n.language, options).format(new Date(date)); 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 ( return (
<div id="version" className="flex flex-row items-center"> <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 { useTranslation } from "next-i18next";
import { useEffect, useState } from "react";
import Container from "../widget/container"; import Container from "../widget/container";
import Raw from "../widget/raw"; 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 { useContext } from "react";
import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa"; import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa";
import { FiCpu, FiHardDrive } from "react-icons/fi"; import { FiCpu, FiHardDrive } from "react-icons/fi";
import { useTranslation } from "next-i18next"; import useSWR from "swr";
import classNames from "classnames";
import { SettingsContext } from "utils/contexts/settings"; import { SettingsContext } from "utils/contexts/settings";
import Error from "../widget/error"; import Error from "../widget/error";

View File

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

View File

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

View File

@ -1,7 +1,7 @@
import useSWR from "swr"; import useSWR from "swr";
import Error from "../widget/error";
import Container from "../widget/container"; import Container from "../widget/container";
import Error from "../widget/error";
import Raw from "../widget/raw"; import Raw from "../widget/raw";
import Node from "./node"; 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 { 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 Container from "../widget/container";
import ContainerButton from "../widget/container_button"; import ContainerButton from "../widget/container_button";
import WidgetIcon from "../widget/widget_icon"; import Error from "../widget/error";
import PrimaryText from "../widget/primary_text"; import PrimaryText from "../widget/primary_text";
import SecondaryText from "../widget/secondary_text"; import SecondaryText from "../widget/secondary_text";
import mapIcon from "../../../utils/weather/openmeteo-condition-map"; import WidgetIcon from "../widget/widget_icon";
function Widget({ options }) { function Widget({ options }) {
const { t } = useTranslation(); 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 { 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 Container from "../widget/container";
import ContainerButton from "../widget/container_button"; import ContainerButton from "../widget/container_button";
import Error from "../widget/error";
import PrimaryText from "../widget/primary_text"; import PrimaryText from "../widget/primary_text";
import SecondaryText from "../widget/secondary_text"; import SecondaryText from "../widget/secondary_text";
import WidgetIcon from "../widget/widget_icon"; import WidgetIcon from "../widget/widget_icon";
import mapIcon from "../../../utils/weather/owm-condition-map";
function Widget({ options }) { function Widget({ options }) {
const { t, i18n } = useTranslation(); const { t, i18n } = useTranslation();

View File

@ -1,9 +1,9 @@
import useSWR from "swr";
import { FiCpu } from "react-icons/fi";
import { useTranslation } from "next-i18next"; import { useTranslation } from "next-i18next";
import { FiCpu } from "react-icons/fi";
import useSWR from "swr";
import Resource from "../widget/resource";
import Error from "../widget/error"; import Error from "../widget/error";
import Resource from "../widget/resource";
export default function Cpu({ expanded, refresh = 1500 }) { export default function Cpu({ expanded, refresh = 1500 }) {
const { t } = useTranslation(); const { t } = useTranslation();

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