Compare commits

..

22 Commits

Author SHA1 Message Date
djeinstine
af75f33e62 update kubernetes.md with gateway-api configuration. 2024-11-13 10:35:07 +00:00
djeinstine
c32f1f1d59 Merge branch 'gethomepage:dev' into integration 2024-11-13 10:33:10 +01:00
djeinstine
11c6f587ab Fix lint issues 2024-11-13 09:11:05 +00:00
djeinstine
a44e6a8f4b Fix null config issue 2024-11-13 09:08:27 +00:00
djeinstine
9b06761964 Fix linting issues 2024-11-13 09:03:39 +00:00
djeinstine
01e30f2ecb Fix linting issues 2024-11-13 08:17:41 +00:00
djeinstine
9326155ab8 Merge branch 'gethomepage:dev' into integration 2024-11-12 20:07:41 +01:00
djeinstine
11c3127aad Merge branch 'gethomepage:dev' into integration 2024-11-11 10:48:31 +01:00
djeinstine
94a934ec65 Applied pnpm prettier rules to code. 2024-11-11 09:31:18 +00:00
djeinstine
ac997ea841 Applied ESLint rules to code. Plus minor rewrite. 2024-11-11 09:29:47 +00:00
djeinstine
60eee26ac4 Add gateway api to docs. And ESLint rules. 2024-11-10 20:21:00 +00:00
djeinstine
c584d5d020 revert docker publish 2024-11-09 20:04:16 +00:00
djeinstine
3d462e5958 trigger docker action 2024-11-09 19:34:45 +00:00
djeinstine
bd1c11a716 trigger docker publish 2024-11-09 19:33:02 +00:00
djeinstine
bbb1ef5a55 Applied prettier to code 2024-11-09 19:30:09 +00:00
djeinstine
cb2c7b9147 fix linter error 2024-11-08 15:13:06 +00:00
djeinstine
d65cb638be Moved crd checker to kubernetes-routes 2024-11-08 15:08:01 +00:00
djeinstine
9367fd761b getUrlSchema now uses async call 2024-11-08 14:23:57 +00:00
djeinstine
29993dad3a Cleaned comments. 2024-11-07 19:52:39 +00:00
djeinstine
a15b5bd692 First step of integrating gateway-api with homepage. 2024-11-06 11:15:52 +00:00
djeinstine
f7810cb67a Merge remote-tracking branch 'origin/dev' into integration 2024-11-06 09:37:33 +00:00
djeinstine
02e1104452 replaced getKubeConfig with getKubeArguments to be in line with getDockerArguments 2024-10-17 13:56:35 +00:00
457 changed files with 16006 additions and 14121 deletions

3
.babelrc Normal file
View File

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

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

View File

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

View File

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

View File

@@ -1,4 +1,9 @@
name: Docker CI name: Docker
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
on: on:
schedule: schedule:
@@ -8,151 +13,142 @@ on:
- main - main
- feature/** - feature/**
- dev - dev
# Publish semver tags as releases.
tags: [ 'v*.*.*' ] tags: [ 'v*.*.*' ]
paths-ignore:
- 'docs/**'
- 'mkdocs.yml'
pull_request: pull_request:
branches: [ "dev" ] branches: [ "dev" ]
paths-ignore:
- 'docs/**'
- 'mkdocs.yml'
merge_group: merge_group:
env: env:
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# 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
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: Lint frontend
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: [ pre-commit ] needs:
- 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
- name: Extract Docker metadata # Install the cosign tool except on PR
id: meta # https://github.com/sigstore/cosign-installer
uses: docker/metadata-action@v5 - name: Install cosign
if: github.event_name != 'pull_request'
uses: sigstore/cosign-installer@main
with: with:
images: | cosign-release: 'v1.13.1' # optional
${{ env.IMAGE_NAME }}
ghcr.io/${{ env.IMAGE_NAME }}
tags: |
# Default tags
type=schedule,pattern=nightly
type=ref,event=branch
type=ref,event=tag
# Versioning tags
type=semver,pattern=v{{version}}
type=semver,pattern=v{{major}}.{{minor}}
type=semver,pattern=v{{major}}
flavor: |
latest=auto
- name: Next.js build cache # Setup QEMU
uses: actions/cache@v4 # https://github.com/marketplace/actions/docker-setup-buildx#with-qemu
with: - name: Setup QEMU
path: .next/cache uses: docker/setup-qemu-action@v3
key: nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('**/*.js', '**/*.jsx') }}
restore-keys: |
nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install pnpm # Workaround: https://github.com/docker/build-push-action/issues/461
uses: pnpm/action-setup@v4 - name: Setup Docker buildx
with: uses: docker/setup-buildx-action@v3
version: 10
run_install: false
- name: Setup Node.js # This step is being disabled because the runner is on a self-hosted machine
uses: actions/setup-node@v4 # where the cache will stick between runs.
with: # - name: Cache Docker layers
node-version: 20 # uses: actions/cache@v3
cache: 'pnpm' # with:
# path: /tmp/.buildx-cache
- name: Install dependencies # key: ${{ runner.os }}-buildx-${{ github.sha }}
run: pnpm install # restore-keys: |
# ${{ runner.os }}-buildx-
- 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
# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }} - name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
registry: ghcr.io registry: ${{ env.REGISTRY }}
username: ${{ github.actor }} username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub # Extract metadata (tags, labels) for Docker
if: github.event_name != 'pull_request' # https://github.com/docker/metadata-action
uses: docker/login-action@v3 - name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }} flavor: |
latest=auto
- name: Setup QEMU
uses: docker/setup-qemu-action@v3.6.0
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- 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
with: with:
context: . context: .
push: ${{ github.event_name != 'pull_request' }} push: ${{ github.event_name != 'pull_request' && !(github.event_name == 'push' && startsWith(github.ref, 'refs/heads/feature')) }}
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'] }}
platforms: linux/amd64,linux/arm64 # https://github.com/docker/setup-qemu-action#about
provenance: false # platforms: linux/amd64,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6
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
# https://github.com/docker/build-push-action/issues/252 / https://github.com/moby/buildkit/issues/1896 # Sign the resulting Docker image digest except on PRs.
# This will only write to the public Rekor transparency log when the Docker
# repository is public to avoid leaking data. If you would like to publish
# transparency data even for private images, pass --force to cosign below.
# https://github.com/sigstore/cosign
# - name: Sign the published Docker image
# if: ${{ github.event_name != 'pull_request' }}
# env:
# COSIGN_EXPERIMENTAL: "true"
# # This step uses the identity token to provision an ephemeral certificate
# # against the sigstore community Fulcio instance.
# run: echo "${{ steps.meta.outputs.tags }}" | xargs -I {} cosign sign {}@${{ steps.build-and-push.outputs.digest }}
# Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
- name: Move cache - name: Move cache
run: | run: |
rm -rf /tmp/.buildx-cache rm -rf /tmp/.buildx-cache

View File

@@ -4,7 +4,13 @@ on:
push: push:
tags: ["v*.*.*"] tags: ["v*.*.*"]
branches: ["main"] branches: ["main"]
paths:
- "docs/**"
- "mkdocs.yml"
pull_request: pull_request:
paths:
- "docs/**"
- "mkdocs.yml"
merge_group: merge_group:
workflow_dispatch: workflow_dispatch:
@@ -26,7 +32,7 @@ jobs:
uses: pre-commit/action@v3.0.1 uses: pre-commit/action@v3.0.1
test: test:
name: Test Build Docs name: Test Build
if: github.repository == 'gethomepage/homepage' && github.event_name == 'pull_request' if: github.repository == 'gethomepage/homepage' && github.event_name == 'pull_request'
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: needs:
@@ -48,8 +54,8 @@ jobs:
- name: Test Docs Build - name: Test Docs Build
run: MKINSIDERS=false mkdocs build run: MKINSIDERS=false mkdocs build
deploy: deploy:
name: Build & Deploy Docs name: Build & Deploy
if: github.repository == 'gethomepage/homepage' && github.event_name != 'pull_request' && github.ref == 'refs/heads/main' if: github.repository == 'gethomepage/homepage' && github.event_name != 'pull_request'
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: needs:
- pre-commit - pre-commit

View File

@@ -5,6 +5,8 @@ on:
types: [created, edited] types: [created, edited]
pull_request_review_comment: pull_request_review_comment:
types: [created, edited] types: [created, edited]
schedule:
- cron: '0 0 * * *'
permissions: permissions:
actions: write actions: write

View File

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

View File

@@ -9,14 +9,11 @@ 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/rbubley/mirrors-prettier - repo: https://github.com/pre-commit/mirrors-prettier
rev: 'v3.3.3' rev: 'v3.0.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'

1
.prettierrc Normal file
View File

@@ -0,0 +1 @@
{}

View File

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

View File

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

View File

@@ -1,63 +1,66 @@
# ========================= # syntax = docker/dockerfile:latest
# Builder Stage
# ========================= # Install dependencies only when needed
FROM node:22-slim AS builder FROM docker.io/node:18-alpine AS deps
WORKDIR /app WORKDIR /app
# Setup COPY --link package.json pnpm-lock.yaml* ./
RUN mkdir config
COPY . . SHELL ["/bin/ash", "-xeo", "pipefail", "-c"]
RUN apk add --no-cache libc6-compat \
&& apk add --no-cache --virtual .gyp python3 make g++ \
&& npm install -g pnpm
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm fetch | grep -v "cross-device link not permitted\|Falling back to copying packages from store"
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm install -r --offline
# Rebuild the source code only when needed
FROM docker.io/node:18-alpine AS builder
WORKDIR /app
ARG CI
ARG BUILDTIME ARG BUILDTIME
ARG VERSION ARG VERSION
ARG REVISION ARG REVISION
ENV CI=$CI
# Install and build only outside CI COPY --link --from=deps /app/node_modules ./node_modules/
RUN if [ "$CI" != "true" ]; then \ COPY . .
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"]
# Runtime Stage RUN npm run telemetry \
# ========================= && mkdir config \
FROM node:22-alpine AS runner && NEXT_PUBLIC_BUILDTIME=$BUILDTIME NEXT_PUBLIC_VERSION=$VERSION NEXT_PUBLIC_REVISION=$REVISION npm run build
LABEL org.opencontainers.image.title="Homepage"
LABEL org.opencontainers.image.description="A self-hosted services landing page, with docker and service integrations." # Production image, copy all the files and run next
FROM docker.io/node:18-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'
# Setup ENV NODE_ENV production
WORKDIR /app WORKDIR /app
# Copy some files from context # Copy files from context (this allows the files to copy before the builder stage is done).
COPY --link --chown=1000:1000 package.json next.config.js ./
COPY --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/
# Copy only necessary files from the build stage RUN apk add --no-cache su-exec
COPY --link --from=builder --chown=1000:1000 /app/.next/standalone/ ./
COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static
RUN apk add --no-cache su-exec iputils-ping shadow ENV PORT 3000
ENV NODE_ENV=production
ENV HOSTNAME=0.0.0.0
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 http://127.0.0.1:$PORT/api/healthcheck || exit 1 CMD wget --no-verbose --tries=1 --spider --no-check-certificate http://localhost:$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
pnpm install -g next npm 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

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

View File

@@ -12,43 +12,10 @@ export PGID=${PGID:-0}
export HOMEPAGE_BUILDTIME=$(date +%s) export HOMEPAGE_BUILDTIME=$(date +%s)
# Check ownership before chown # Set privileges for /app but only if pid 1 user is root and we are dropping privileges.
if [ -e /app/config ]; then # If container is run as an unprivileged user, it means owner already handled ownership setup on their own.
CURRENT_UID=$(stat -c %u /app/config) # Running chown in that case (as non-root) will cause error
CURRENT_GID=$(stat -c %g /app/config) [ "$(id -u)" == "0" ] && [ "${PUID}" != "0" ] && chown -R ${PUID}:${PGID} /app
if [ "$CURRENT_UID" -ne "$PUID" ] || [ "$CURRENT_GID" -ne "$PGID" ]; then
echo "Fixing ownership of /app/config"
if ! chown -R "$PUID:$PGID" /app/config 2>/dev/null; then
echo "Warning: Could not chown /app/config; continuing anyway"
fi
else
echo "/app/config already owned by correct UID/GID, skipping chown"
fi
else
echo "/app/config does not exist; skipping ownership check"
fi
# Ensure /app/config/logs exists and is owned
if [ -n "$PUID" ] && [ -n "$PGID" ]; then
mkdir -p /app/config/logs 2>/dev/null || true
if [ -d /app/config/logs ]; then
LOG_UID=$(stat -c %u /app/config/logs)
LOG_GID=$(stat -c %g /app/config/logs)
if [ "$LOG_UID" -ne "$PUID" ] || [ "$LOG_GID" -ne "$PGID" ]; then
echo "Fixing ownership of /app/config/logs"
chown -R "$PUID:$PGID" /app/config/logs 2>/dev/null || echo "Warning: Could not chown /app/config/logs"
fi
fi
fi
if [ -d /app/.next ]; then
CURRENT_UID=$(stat -c %u /app/.next)
if [ "$CURRENT_UID" -ne "$PUID" ]; then
echo "Fixing ownership of /app/.next"
chown -R "$PUID:$PGID" /app/.next || echo "Warning: Could not chown /app/.next"
fi
fi
# 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

3
docs/assets/custom.css Normal file
View File

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

View File

@@ -20,7 +20,7 @@ Since Docker supports connecting with TLS and client certificate authentication,
```yaml ```yaml
my-remote-docker: my-remote-docker:
host: 192.168.0.101 host: 192.168.0.101
port: 2375 port: 275
tls: tls:
keyFile: tls/key.pem keyFile: tls/key.pem
caFile: tls/ca.pem caFile: tls/ca.pem
@@ -66,30 +66,6 @@ my-docker:
port: 2375 port: 2375
``` ```
Use `protocol: https` if youre connecting through a reverse proxy (e.g., Traefik) that serves the Docker API over HTTPS:
```yaml
my-docker:
host: dockerproxy
port: 443
protocol: https
```
!!! note
Note: This does not require TLS certificates if the proxy handles encryption. Do not use `protocol: https` unless youre sure the target host supports HTTPS.
You can also include `headers` for the connection, for example, if you are using a reverse proxy that requires authentication:
```yaml
my-docker:
host: dockerproxy
port: 443
protocol: https
headers:
Authorization: Basic <base64-encoded-credentials>
```
## Using Socket Directly ## Using Socket Directly
If you'd rather use the socket directly, first make sure that you're passing the local socket into the Docker container. If you'd rather use the socket directly, first make sure that you're passing the local socket into the Docker container.
@@ -177,18 +153,6 @@ labels:
- homepage.widget.fields=["field1","field2"] # optional - homepage.widget.fields=["field1","field2"] # optional
``` ```
Multiple widgets can be specified by incrementing the index, e.g.
```yaml
labels: ...
- homepage.widgets[0].type=emby
- homepage.widgets[0].url=http://emby.home
- homepage.widgets[0].key=yourembyapikeyhere
- homepage.widgets[1].type=uptimekuma
- homepage.widgets[1].url=http://uptimekuma.home
- homepage.widgets[1].slug=youreventslughere
```
You can add specify fields for e.g. the [CustomAPI](../widgets/services/customapi.md) widget by using array-style dot notation: You can add specify fields for e.g. the [CustomAPI](../widgets/services/customapi.md) widget by using array-style dot notation:
```yaml ```yaml

View File

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

View File

@@ -20,20 +20,10 @@ The Kubernetes connection is configured in the `kubernetes.yaml` file. There are
mode: default mode: default
``` ```
To configure Kubernetes gateway-api, ingress or ingressRoute service discovery, add one or multiple of the following settings. To enable Kubernetes gateway-api compatibility, add the following setting:
Example settings:
```yaml ```yaml
ingress: true # default, enable ingress only route: gateway
```
or
```yaml
ingress: true # default, enable ingress
traefik: true # enable traefik ingressRoute
gateway: true # enable gateway-api
``` ```
## Services ## Services
@@ -117,8 +107,6 @@ If you are using multiple instances of homepage, an `instance` annotation can be
If you have a single service that needs to be shown on multiple specific instances of homepage (but not on all of them), the service can be annotated by multiple `instance.name` annotations, where `name` can be the names of your specific multiple homepage instances. For example, a service that is annotated with `gethomepage.dev/instance.public: ""` and `gethomepage.dev/instance.internal: ""` will be shown on `public` and `internal` homepage instances. If you have a single service that needs to be shown on multiple specific instances of homepage (but not on all of them), the service can be annotated by multiple `instance.name` annotations, where `name` can be the names of your specific multiple homepage instances. For example, a service that is annotated with `gethomepage.dev/instance.public: ""` and `gethomepage.dev/instance.internal: ""` will be shown on `public` and `internal` homepage instances.
Use the `gethomepage.dev/pod-selector` selector to specify the pod used for the health check. For example, a service that is annotated with `gethomepage.dev/pod-selector: app.kubernetes.io/name=deployment` would link to a pod with the label `app.kubernetes.io/name: deployment`.
### Traefik IngressRoute support ### Traefik IngressRoute support
Homepage can also read ingresses defined using the Traefik IngressRoute custom resource definition. Due to the complex nature of Traefik routing rules, it is required for the `gethomepage.dev/href` annotation to be set: Homepage can also read ingresses defined using the Traefik IngressRoute custom resource definition. Due to the complex nature of Traefik routing rules, it is required for the `gethomepage.dev/href` annotation to be set:
@@ -161,19 +149,7 @@ If the `href` attribute is not present, Homepage will ignore the specific Ingres
### Gateway API HttpRoute support ### Gateway API HttpRoute support
Homepage also features automatic service discovery for Gateway API. Service definitions are read by annotating the HttpRoute custom resource definition and are indentical to the Ingress example as defined in [Automatic Service Discovery](#automatic-service-discovery). Homepage also features automatic service discovery for gateway-api. Service definitions are read by annotating the HttpRoute custom resource definition and are indentical to the Ingress example as defined in [Automatic Service Discovery](#automatic-service-discovery).
To enable Gateway API HttpRoute update `kubernetes.yaml` to include:
```
gateway: true # enable gateway-api
```
#### Using the unoffocial helm chart?
If you are using the unofficial helm chart ensure that the `ClusterRole` has required permissions for `gateway.networking.k8s.io`.
See [ClusterRole and ClusterRoleBinding](../installation/k8s.md#clusterrole-and-clusterrolebinding)
## Caveats ## Caveats

View File

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

View File

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

View File

@@ -13,14 +13,6 @@ You can customize the title of the page if you'd like.
title: My Awesome Homepage title: My Awesome Homepage
``` ```
## Description
You can customize the description of the page if you'd like.
```yaml
description: A description of my awesome homepage
```
## Start URL ## Start URL
You can customize the start_url as required for installable apps. The default is "/". You can customize the start_url as required for installable apps. The default is "/".
@@ -78,7 +70,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: xs # xs, md, etc... see https://tailwindcss.com/docs/backdrop-blur cardBlur: sm # sm, "", md, etc... see https://tailwindcss.com/docs/backdrop-blur
``` ```
## Favicon ## Favicon
@@ -101,7 +93,7 @@ theme: dark # or light
## Color Palette ## Color Palette
You can configure a fixed color palette (and disable the palette switcher) by passing the `color` option, like so: You can configured a fixed color palette (and disable the palette switcher) by passing the `color` option, like so:
```yaml ```yaml
color: slate color: slate
@@ -126,22 +118,6 @@ As an example, this would produce the following layout:
<img width="1260" alt="Screenshot 2022-09-15 at 8 03 57 PM" src="https://user-images.githubusercontent.com/82196/190466646-8ca94505-0fcf-4964-9687-3a6c7cd3144f.png"> <img width="1260" alt="Screenshot 2022-09-15 at 8 03 57 PM" src="https://user-images.githubusercontent.com/82196/190466646-8ca94505-0fcf-4964-9687-3a6c7cd3144f.png">
### Icons-Only Layout
You can also specify the an icon-only layout for bookmarks, either like so:
```yaml
layout:
Media:
iconsOnly: true
```
or globally:
```yaml
bookmarksStyle: icons
```
### Sorting ### Sorting
Service groups and bookmark groups can be mixed in order, **but should use different group names**. If you do not specify any bookmark groups they will all show at the bottom of the page. Service groups and bookmark groups can be mixed in order, **but should use different group names**. If you do not specify any bookmark groups they will all show at the bottom of the page.
@@ -161,27 +137,6 @@ layout:
columns: 3 columns: 3
``` ```
### Nested Groups
If your services config has nested groups, you can apply settings to these groups by nesting them in the layout block
and using the same settings. For example
```yaml
layout:
Group A:
style: row
columns: 4
Group C:
style: row
columns: 2
Nested Group A:
style: row
columns: 2
Nested Group B:
style: row
columns: 2
```
### Headers ### Headers
You can hide headers for each section in the layout as well by passing `header` as false, like so: You can hide headers for each section in the layout as well by passing `header` as false, like so:
@@ -254,29 +209,15 @@ layout:
columns: 4 columns: 4
``` ```
### Full Width ### Five Columns
You can make homepage take up the entire window width by adding: You can add a fifth column to services (when `style: columns` which is default) by adding:
```yaml ```yaml
fullWidth: true fiveColumns: true
``` ```
### Maximum Group Columns By default homepage will max out at 4 columns for services with `columns` style
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
@@ -407,12 +348,12 @@ This can also be set for individual services. Note setting this at the service l
## Providers ## Providers
The `providers` section allows you to define shared API provider options and secrets. The `providers` section allows you to define shared API provider options and secrets. Currently this allows you to define your weather API keys in secret and is also the location of the Longhorn URL and credentials.
```yaml ```yaml
providers: providers:
openweathermap: openweathermapapikey openweathermap: openweathermapapikey
finnhub: yourfinnhubapikeyhere weatherapi: weatherapiapikey
longhorn: longhorn:
url: https://longhorn.example.com url: https://longhorn.example.com
username: admin username: admin
@@ -422,10 +363,10 @@ providers:
You can then pass `provider` instead of `apiKey` in your widget configuration. You can then pass `provider` instead of `apiKey` in your widget configuration.
```yaml ```yaml
- openweathermap: - weatherapi:
latitude: 50.449684 latitude: 50.449684
longitude: 30.525026 longitude: 30.525026
provider: openweathermap provider: weatherapi
``` ```
## Quick Launch ## Quick Launch
@@ -461,7 +402,7 @@ quicklaunch:
suggestionUrl: https://ac.ecosia.org/autocomplete?type=list&q= suggestionUrl: https://ac.ecosia.org/autocomplete?type=list&q=
``` ```
## Homepage Version & Update Checking ## Homepage Version
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:
@@ -469,12 +410,6 @@ 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

@@ -15,8 +15,6 @@ services:
volumes: volumes:
- /path/to/config:/app/config # Make sure your local config directory exists - /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations - /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations
environment:
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 +36,6 @@ 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, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
PUID: $PUID PUID: $PUID
PGID: $PGID PGID: $PGID
``` ```
@@ -46,7 +43,7 @@ services:
### With Docker Run ### With Docker Run
```bash ```bash
docker run -p 3000:3000 -e HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/gethomepage/homepage:latest docker run -p 3000:3000 -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/gethomepage/homepage:latest
``` ```
### Using Environment Secrets ### Using Environment Secrets

View File

@@ -4,37 +4,27 @@ description: Docs intro
icon: simple/docker icon: simple/docker
--- ---
<p>
You have a few options for deploying homepage, depending on your needs. We offer docker images for a majority of platforms. You can also install and run homepage from source if Docker is not your thing. It can even be installed on Kubernetes with Helm. You have a few options for deploying homepage, depending on your needs. We offer docker images for a majority of platforms. You can also install and run homepage from source if Docker is not your thing. It can even be installed on Kubernetes with Helm.
</p>
!!! info !!! warning
Please note that when using features such as widgets, Homepage can access personal information (for example from your home automation system) and Homepage currently does not (and is not planned to) include any authentication layer itself. Thus, we recommend homepage be deployed behind a reverse proxy including authentication, SSL etc, and / or behind a VPN. Please note that when using features such as widgets, Homepage can access personal information (for example from your home automation system) and Homepage currently does not (and is not planned to) include any authentication layer itself. Thus, we recommend homepage be deployed behind a reverse proxy including authentication, SSL etc, and / or behind a VPN.
<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`
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,6 +3,85 @@ 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`.
@@ -96,7 +175,6 @@ data:
expanded: true expanded: true
cpu: true cpu: true
memory: true memory: true
network: default
- search: - search:
provider: duckduckgo provider: duckduckgo
target: _blank target: _blank
@@ -131,20 +209,21 @@ rules:
- get - get
- list - list
- apiGroups: - apiGroups:
- traefik.io - traefik.containo.us
resources: resources:
- ingressroutes - ingressroutes
verbs: verbs:
- get - get
- list - list
- apiGroups: # if using gateway api add the following:
- gateway.networking.k8s.io # - apiGroups:
resources: # - gateway.networking.k8s.io
- httproutes # resources:
- gateways # - httproutes
verbs: # - gateways
- get # verbs:
- list # - get
# - list
- apiGroups: - apiGroups:
- metrics.k8s.io - metrics.k8s.io
resources: resources:
@@ -223,9 +302,6 @@ 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
@@ -303,7 +379,7 @@ prevent unnecessary re-renders on page loads and window / tab focusing. The
procedure for enabling sticky sessions depends on your Ingress controller. Below procedure for enabling sticky sessions depends on your Ingress controller. Below
is an example using Traefik as the Ingress controller. is an example using Traefik as the Ingress controller.
```yaml ```
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:

View File

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

View File

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

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

View File

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

View File

@@ -34,7 +34,7 @@ Homepage uses the [next-i18next](https://github.com/i18next/next-i18next) librar
Homepage uses translated and localized strings for **all text and numerical content** in widgets. English is the default language, and other languages can be added via [Crowdin](https://crowdin.com/project/gethomepage). To add the English translations for your widget, follow these steps: Homepage uses translated and localized strings for **all text and numerical content** in widgets. English is the default language, and other languages can be added via [Crowdin](https://crowdin.com/project/gethomepage). To add the English translations for your widget, follow these steps:
Open the `public/locales/en/common.json` file. Open the `public/locales/en/common.js` file.
Add a new object for your widget to the bottom of the list, like this: Add a new object for your widget to the bottom of the list, like this:

View File

@@ -150,7 +150,7 @@ This will render the widget with placeholders for the data, i.e., a skeleton vie
!!! tip "Translation Tips" !!! tip "Translation Tips"
The `label` prop in the `Block` component corresponds to the translation key we defined earlier in the `common.json` file. All text and numerical content should be translated. The `label` prop in the `Block` component corresponds to the translation key we defined earlier in the `common.js` file. All text and numerical content should be translated.
--- ---

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,17 +0,0 @@
---
title: Checkmk
description: Checkmk Widget Configuration
---
Learn more about [Checkmk](https://github.com/Checkmk/checkmk).
To setup authentication, follow the official [Checkmk API](https://docs.checkmk.com/latest/en/rest_api.html?lquery=api#bearerauth) documentation.
```yaml
widget:
type: checkmk
url: http://checkmk.host.or.ip:port
site: your-site-name-cla-by-default
username: username
password: password
```

View File

@@ -19,22 +19,27 @@ 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 - field: key # needs to be YAML string or object
label: Field 1 label: Field 1
format: text # optional - defaults to text format: text # optional - defaults to text
- field: path.to.key2 - field: # needs to be YAML string or object
path:
to: key2
format: number # optional - defaults to text format: number # optional - defaults to text
label: Field 2 label: Field 2
- field: path.to.another.key3 - field: # needs to be YAML string or object
path:
to:
another: key3
label: Field 3 label: Field 3
format: percent # optional - defaults to text format: percent # optional - defaults to text
- field: key - field: key # needs to be YAML string or object
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 - field: key # needs to be YAML string or object
label: Field 5 label: Field 5
format: relativeDate # optional - defaults to text format: relativeDate # optional - defaults to text
locale: nl # optional locale: nl # optional
@@ -44,7 +49,9 @@ widget:
label: Field 6 label: Field 6
format: text format: text
additionalField: # optional additionalField: # optional
field: hourly.time.key field:
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
@@ -55,12 +62,10 @@ widget:
format: size format: size
``` ```
Supported formats for the values are `text`, `number`, `float`, `percent`, `duration`, `bytes`, `bitrate`, `size`, `date` and `relativeDate`. Supported formats for the values are `text`, `number`, `float`, `percent`, `bytes`, `bitrate`, `size`, `date` and `relativeDate`.
The `dateStyle` and `timeStyle` options of the `date` format are passed directly to [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) and the `style` and `numeric` options of `relativeDate` are passed to [Intl.RelativeTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat). The `dateStyle` and `timeStyle` options of the `date` format are passed directly to [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) and the `style` and `numeric` options of `relativeDate` are passed to [Intl.RelativeTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat).
The `duration` format expects the duration to be specified in seconds. The `scale` transformation tool can be used if a conversion is required.
The `size` format will return the length of the array or string, or the number of keys in an object. This is then formatted as `number`. The `size` format will return the length of the array or string, or the number of keys in an object. This is then formatted as `number`.
## Example ## Example
@@ -96,16 +101,9 @@ mappings:
label: Name label: Name
- field: status # Alive - field: status # Alive
label: Status label: Status
- field: origin.name # Earth (C-137) - field:
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,15 +136,7 @@ You can manipulate data with the following tools `remap`, `scale`, `prefix` and
prefix: "$" prefix: "$"
``` ```
## Display Options ## List View
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`.
@@ -170,54 +160,13 @@ 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: hourly.time.key field:
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
format: text # optional - format of the label field
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

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -14,5 +14,4 @@ widget:
type: gamedig type: gamedig
serverType: csgo # see https://github.com/gamedig/node-gamedig#games-list serverType: csgo # see https://github.com/gamedig/node-gamedig#games-list
url: udp://server.host.or.ip:port url: udp://server.host.or.ip:port
gameToken: # optional, a token used by gamedig with certain games
``` ```

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: `["repositories", "notifications", "issues", "pulls"]`. Allowed fields: `["notifications", "issues", "pulls"]`.
```yaml ```yaml
widget: widget:

View File

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

View File

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

View File

@@ -9,10 +9,9 @@ Learn more about [Gluetun](https://github.com/qdm12/gluetun).
Requires [HTTP control server options](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md) to be enabled. By default this runs on port `8000`. Requires [HTTP control server options](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md) to be enabled. By default this runs on port `8000`.
Allowed fields: `["public_ip", "region", "country", "port_forwarded"]`. Allowed fields: `["public_ip", "region", "country"]`.
Default fields: `["public_ip", "region", "country"]`.
To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication). Note that to use the api key method, you must add the route `GET /v1/publicip/ip` to the `routes` array in your Gluetun config.toml. Similarly, if you want to include the `port_forwarded` field, you must add the route `GET /v1/openvpn/portforwarded` to your Gluetun config.toml. To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication).
```yaml ```yaml
widget: widget:

View File

@@ -14,7 +14,6 @@ Allowed fields: `["name", "address", "last_seen", "status"]`.
```yaml ```yaml
widget: widget:
type: headscale type: headscale
url: http://headscale.host.or.ip:port
nodeId: nodeid nodeId: nodeid
key: headscaleapiaccesstoken key: headscaleapiaccesstoken
``` ```

View File

@@ -8,8 +8,6 @@ search:
You can also find a list of all available service widgets in the sidebar navigation. You can also find a list of all available service widgets in the sidebar navigation.
- [Adguard Home](adguard-home.md) - [Adguard Home](adguard-home.md)
- [APC UPS](apcups.md)
- [ArgoCD](argocd.md)
- [Atsumeru](atsumeru.md) - [Atsumeru](atsumeru.md)
- [Audiobookshelf](audiobookshelf.md) - [Audiobookshelf](audiobookshelf.md)
- [Authentik](authentik.md) - [Authentik](authentik.md)
@@ -34,7 +32,6 @@ You can also find a list of all available service widgets in the sidebar navigat
- [ESPHome](esphome.md) - [ESPHome](esphome.md)
- [EVCC](evcc.md) - [EVCC](evcc.md)
- [Fileflows](fileflows.md) - [Fileflows](fileflows.md)
- [Firefly III](firefly.md)
- [Flood](flood.md) - [Flood](flood.md)
- [FreshRSS](freshrss.md) - [FreshRSS](freshrss.md)
- [Frigate](frigate.md) - [Frigate](frigate.md)
@@ -43,7 +40,6 @@ You can also find a list of all available service widgets in the sidebar navigat
- [Gatus](gatus.md) - [Gatus](gatus.md)
- [Ghostfolio](ghostfolio.md) - [Ghostfolio](ghostfolio.md)
- [Gitea](gitea.md) - [Gitea](gitea.md)
- [Gitlab](gitlab.md)
- [Glances](glances.md) - [Glances](glances.md)
- [Gluetun](gluetun.md) - [Gluetun](gluetun.md)
- [Gotify](gotify.md) - [Gotify](gotify.md)
@@ -51,7 +47,6 @@ 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)
@@ -117,7 +112,6 @@ 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

@@ -1,6 +1,6 @@
--- ---
title: JDownloader title: JDownloader
description: JDownloader Widget Configuration description: NextPVR Widget Configuration
--- ---
Learn more about [JDownloader](https://jdownloader.org/). Learn more about [JDownloader](https://jdownloader.org/).

View File

@@ -1,18 +0,0 @@
---
title: Jellystat
description: Jellystat Widget Configuration
---
Learn more about [Jellystat](https://github.com/CyferShepard/Jellystat). The widget supports (at least) Jellystat version 1.1.6
You can create an API key from inside Jellystat at `Settings > API Key`.
Allowed fields: `["songs", "movies", "episodes", "other"]`.
```yaml
widget:
type: jellystat
url: http://jellystat.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
days: 30 # optional, defaults to 30
```

View File

@@ -1,17 +0,0 @@
---
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

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

View File

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

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

View File

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

View File

@@ -5,8 +5,6 @@ description: Proxmox Backup Server Widget Configuration
Learn more about [Proxmox Backup Server](https://www.proxmox.com/en/proxmox-backup-server/overview). Learn more about [Proxmox Backup Server](https://www.proxmox.com/en/proxmox-backup-server/overview).
Create a user and an API token similar to the [Proxmox VE description](proxmox.md). The "Audit" role is required for both the user and token (not group).
Allowed fields: `["datastore_usage", "failed_tasks_24h", "cpu_usage", "memory_usage"]`. Allowed fields: `["datastore_usage", "failed_tasks_24h", "cpu_usage", "memory_usage"]`.
```yaml ```yaml
@@ -15,5 +13,4 @@ widget:
url: https://proxmoxbackupserver.host:port url: https://proxmoxbackupserver.host:port
username: api_token_id username: api_token_id
password: api_token_secret password: api_token_secret
datastore: datastore_name #optional; if ommitted, will display a combination of all datastores used / total
``` ```

View File

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

View File

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

View File

@@ -1,25 +0,0 @@
---
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

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

View File

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

View File

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

View File

@@ -11,17 +11,10 @@ Note: by default `["connected", "enabled", "total"]` are displayed.
To detect if a device is connected the time since the last handshake is queried. `threshold` is the time to wait in minutes since the last handshake to consider a device connected. Default is 2 minutes. To detect if a device is connected the time since the last handshake is queried. `threshold` is the time to wait in minutes since the last handshake to consider a device connected. Default is 2 minutes.
| Wg-Easy API Version | Homepage Widget Version |
| ------------------- | ----------------------- |
| < v15 | 1 (default) |
| >= v15 | 2 |
```yaml ```yaml
widget: widget:
type: wgeasy type: wgeasy
url: http://wg.easy.or.ip url: http://wg.easy.or.ip
version: 2 # optional, default is 1
username: yourwgusername # required for v15 and above
password: yourwgeasypassword password: yourwgeasypassword
threshold: 2 # optional threshold: 2 # optional
``` ```

View File

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

View File

@@ -46,10 +46,6 @@ 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

@@ -21,8 +21,8 @@ nav:
- configs/index.md - configs/index.md
- configs/settings.md - configs/settings.md
- configs/bookmarks.md - configs/bookmarks.md
- configs/info-widgets.md
- configs/services.md - configs/services.md
- configs/service-widgets.md
- configs/kubernetes.md - configs/kubernetes.md
- configs/docker.md - configs/docker.md
- configs/custom-css-js.md - configs/custom-css-js.md
@@ -31,8 +31,6 @@ nav:
- "Service Widgets": - "Service Widgets":
- widgets/services/index.md - widgets/services/index.md
- widgets/services/adguard-home.md - widgets/services/adguard-home.md
- widgets/services/apcups.md
- widgets/services/argocd.md
- widgets/services/atsumeru.md - widgets/services/atsumeru.md
- widgets/services/audiobookshelf.md - widgets/services/audiobookshelf.md
- widgets/services/authentik.md - widgets/services/authentik.md
@@ -57,7 +55,6 @@ nav:
- widgets/services/esphome.md - widgets/services/esphome.md
- widgets/services/evcc.md - widgets/services/evcc.md
- widgets/services/fileflows.md - widgets/services/fileflows.md
- widgets/services/firefly.md
- widgets/services/flood.md - widgets/services/flood.md
- widgets/services/freshrss.md - widgets/services/freshrss.md
- widgets/services/frigate.md - widgets/services/frigate.md
@@ -66,7 +63,6 @@ nav:
- widgets/services/gatus.md - widgets/services/gatus.md
- widgets/services/ghostfolio.md - widgets/services/ghostfolio.md
- widgets/services/gitea.md - widgets/services/gitea.md
- widgets/services/gitlab.md
- widgets/services/glances.md - widgets/services/glances.md
- widgets/services/gluetun.md - widgets/services/gluetun.md
- widgets/services/gotify.md - widgets/services/gotify.md
@@ -74,7 +70,6 @@ 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
@@ -142,10 +137,8 @@ nav:
- widgets/services/scrutiny.md - widgets/services/scrutiny.md
- widgets/services/sonarr.md - widgets/services/sonarr.md
- widgets/services/speedtest-tracker.md - widgets/services/speedtest-tracker.md
- widgets/services/spoolman.md
- widgets/services/stash.md - widgets/services/stash.md
- widgets/services/stocks.md - widgets/services/stocks.md
- widgets/services/suwayomi.md
- widgets/services/swagdashboard.md - widgets/services/swagdashboard.md
- widgets/services/syncthing-relay-server.md - widgets/services/syncthing-relay-server.md
- widgets/services/tailscale.md - widgets/services/tailscale.md
@@ -181,6 +174,7 @@ nav:
- widgets/info/search.md - widgets/info/search.md
- widgets/info/stocks.md - widgets/info/stocks.md
- widgets/info/unifi_controller.md - widgets/info/unifi_controller.md
- widgets/info/weather.md
- "Learn": - "Learn":
- widgets/authoring/index.md - widgets/authoring/index.md
- "Getting Started": widgets/authoring/getting-started.md - "Getting Started": widgets/authoring/getting-started.md

View File

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

8653
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,8 @@
{ {
"name": "homepage", "name": "homepage",
"version": "1.3.2", "version": "0.9.6",
"private": true, "private": true,
"scripts": { "scripts": {
"preinstall": "npx only-allow pnpm",
"dev": "next dev", "dev": "next dev",
"build": "next build", "build": "next build",
"start": "next start", "start": "next start",
@@ -11,61 +10,57 @@
"telemetry": "next telemetry disable" "telemetry": "next telemetry disable"
}, },
"dependencies": { "dependencies": {
"@headlessui/react": "^1.7.19", "@headlessui/react": "^1.7.18",
"@kubernetes/client-node": "^1.0.0", "@kubernetes/client-node": "^0.17.1",
"cal-parser": "^1.0.2",
"classnames": "^2.5.1", "classnames": "^2.5.1",
"compare-versions": "^6.1.1", "compare-versions": "^6.1.0",
"dockerode": "^4.0.4", "dockerode": "^4.0.2",
"follow-redirects": "^1.15.9", "follow-redirects": "^1.15.9",
"gamedig": "^5.2.0", "gamedig": "^5.1.2",
"i18next": "^24.2.3", "i18next": "^21.10.0",
"ical.js": "^2.1.0",
"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.2", "minecraft-ping-js": "^1.0.2",
"next": "^15.3.1", "next": "^12.3.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",
"raw-body": "^3.0.0", "raw-body": "^3.0.0",
"react": "^18.3.1", "react": "^18.3.1",
"react-dom": "^18.3.1", "react-dom": "^18.2.0",
"react-i18next": "^11.18.6", "react-i18next": "^11.18.6",
"react-icons": "^5.4.0", "react-icons": "^4.12.0",
"recharts": "^2.15.3", "recharts": "^2.12.6",
"swr": "^2.3.3", "rrule": "^2.8.1",
"systeminformation": "^5.25.11", "swr": "^1.3.0",
"tough-cookie": "^5.1.2", "systeminformation": "^5.23.2",
"urbackup-server-api": "^0.8.9", "tough-cookie": "^4.1.3",
"winston": "^3.17.0", "urbackup-server-api": "^0.52.1",
"winston": "^3.11.0",
"xml-js": "^1.6.11" "xml-js": "^1.6.11"
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/forms": "^0.5.10", "@tailwindcss/forms": "^0.5.8",
"@tailwindcss/postcss": "^4.0.9", "autoprefixer": "^10.4.20",
"eslint": "^9.25.1", "eslint": "^8.57.1",
"eslint-config-next": "^15.2.4", "eslint-config-airbnb": "^19.0.4",
"eslint-config-prettier": "^10.1.1", "eslint-config-next": "^14.2.3",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import": "^2.31.0", "eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-jsx-a11y": "^6.8.0",
"eslint-plugin-prettier": "^5.2.6", "eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-react": "^7.37.4", "eslint-plugin-react": "^7.37.1",
"eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-react-hooks": "^4.6.2",
"postcss": "^8.5.3", "postcss": "^8.4.47",
"prettier": "^3.5.2", "prettier": "^3.2.5",
"prettier-plugin-organize-imports": "^4.1.0", "tailwind-scrollbar": "^3.0.5",
"tailwind-scrollbar": "^4.0.1", "tailwindcss": "^3.4.14",
"tailwindcss": "^4.0.9", "typescript": "^5.6.3"
"typescript": "^5.7.3"
}, },
"optionalDependencies": { "optionalDependencies": {
"osx-temperature-sensor": "^1.0.8" "osx-temperature-sensor": "^1.0.8"
},
"pnpm": {
"onlyBuiltDependencies": [
"sharp"
]
} }
} }

4680
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "ma", "months": "ma",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
@@ -120,7 +120,7 @@
"grid_power": "Rooster", "grid_power": "Rooster",
"home_power": "Verbruik", "home_power": "Verbruik",
"charge_power": "Laaier", "charge_power": "Laaier",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Aflaai", "download": "Aflaai",
@@ -148,9 +148,7 @@
"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",
@@ -178,7 +176,7 @@
"connectedAp": "Gekoppelde APs", "connectedAp": "Gekoppelde APs",
"activeUser": "Aktiewe toestelle", "activeUser": "Aktiewe toestelle",
"alerts": "Waarskuwings", "alerts": "Waarskuwings",
"connectedGateways": "Gekoppelde poorte", "connectedGateway": "Gekoppelde poorte",
"connectedSwitches": "Gekoppelde skakelaars" "connectedSwitches": "Gekoppelde skakelaars"
}, },
"nzbget": { "nzbget": {
@@ -311,16 +309,6 @@
"stopped": "Gestop", "stopped": "Gestop",
"total": "Totaal" "total": "Totaal"
}, },
"suwayomi": {
"download": "Afgelaai",
"nondownload": "Nie-Afgelaai",
"read": "Gelees",
"unread": "Ongelees",
"downloadedread": "Afgelaai & Gelees",
"downloadedunread": "Afgelaai en Ongelees",
"nondownloadedread": "Nie-Afgelaai & Gelees",
"nondownloadedunread": "Nie-Afgelaai & Ongelees"
},
"tailscale": { "tailscale": {
"address": "Adres", "address": "Adres",
"expires": "Verval", "expires": "Verval",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "Publieke IP", "public_ip": "Publieke IP",
"region": "Streek", "region": "Streek",
"country": "Land", "country": "Land"
"port_forwarded": "Poort Aangestuur"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Kanale", "channels": "Kanale",
@@ -705,10 +692,6 @@
"processed": "Verwerk", "processed": "Verwerk",
"time": "Tyd" "time": "Tyd"
}, },
"firefly": {
"networth": "Netto Waarde",
"budget": "Begroting"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Databronne", "datasources": "Databronne",
@@ -857,8 +840,7 @@
"physicalRelease": "Fisiese Vrylating", "physicalRelease": "Fisiese Vrylating",
"digitalRelease": "Digitale Vrylating", "digitalRelease": "Digitale Vrylating",
"noEventsToday": "Geen gebeure vir vandag nie!", "noEventsToday": "Geen gebeure vir vandag nie!",
"noEventsFound": "Geen gebeure gevind nie", "noEventsFound": "Geen gebeure gevind nie"
"errorWhenLoadingData": "Fout tydens laai van kalenderdata"
}, },
"romm": { "romm": {
"platforms": "Platform", "platforms": "Platform",
@@ -887,8 +869,7 @@
"gitea": { "gitea": {
"notifications": "Kennisgewings", "notifications": "Kennisgewings",
"issues": "Kwessies", "issues": "Kwessies",
"pulls": "Trek Versoeke", "pulls": "Trek Versoeke"
"repositories": "Bewaarplekke"
}, },
"stash": { "stash": {
"scenes": "Tonele", "scenes": "Tonele",
@@ -966,93 +947,11 @@
"disaster": "Ramp" "disaster": "Ramp"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Voertuig", "vehicle": "Vehicle",
"vehicles": "Voertuie", "vehicles": "Vehicles",
"serviceRecords": "Diensrekords", "serviceRecords": "Service Records",
"reminders": "Herinneringe", "reminders": "Reminders",
"nextReminder": "Volgende Herinnering", "nextReminder": "Next Reminder",
"none": "Geen" "none": "None"
},
"vikunja": {
"projects": "Aktiewe Projekte",
"tasks7d": "Take Hierdie week",
"tasksOverdue": "Agterstallige Take",
"tasksInProgress": "Take Aan Die Gang"
},
"headscale": {
"name": "Naam",
"address": "Adres",
"last_seen": "Laaste Gesien",
"status": "Status",
"online": "Aanlyn",
"offline": "Vanlyn"
},
"beszel": {
"name": "Naam",
"systems": "Stelsels",
"up": "Op",
"down": "Af",
"paused": "Onderbreek",
"pending": "Afwagtend",
"status": "Status",
"updated": "Opgedateer",
"cpu": "SVE",
"memory": "GEH",
"disk": "Skyf",
"network": "NET"
},
"argocd": {
"apps": "Programme",
"synced": "Gesinkroniseer",
"outOfSync": "Nie Gesinchroniseer Nie",
"healthy": "Gesond",
"degraded": "Gedegradeer",
"progressing": "Vorderend",
"missing": "Vermis",
"suspended": "Geskors"
},
"spoolman": {
"loading": "Laai"
},
"gitlab": {
"groups": "Groepe",
"issues": "Kwessies",
"merges": "Saamvleg Versoeke",
"projects": "Projekte"
},
"apcups": {
"status": "Status",
"load": "Las",
"bcharge": "Batterylading",
"timeleft": "Oorblywende Tyd"
},
"karakeep": {
"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"
},
"jellystat": {
"songs": "Liedjies",
"movies": "Flieks",
"episodes": "Episodes",
"other": "Ander"
},
"checkmk": {
"serviceErrors": "Diensprobleme",
"hostErrors": "Gasheerprobleme"
} }
} }

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "ش", "months": "ش",
"days": "ي", "days": "ي",
"hours": "س", "hours": "س",
@@ -120,7 +120,7 @@
"grid_power": "شبكة", "grid_power": "شبكة",
"home_power": "الاستهلاك", "home_power": "الاستهلاك",
"charge_power": "شاحن", "charge_power": "شاحن",
"kilowatt": "kW" "watt_hour": "واط ساعة"
}, },
"flood": { "flood": {
"download": "التنزيل", "download": "التنزيل",
@@ -148,9 +148,7 @@
"up": "يعمل", "up": "يعمل",
"received": "تم الإستلام", "received": "تم الإستلام",
"sent": "تم الإرسال", "sent": "تم الإرسال",
"externalIPAddress": "IP الخارجي", "externalIPAddress": "IP الخارجي"
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "تدفق", "upstreams": "تدفق",
@@ -178,7 +176,7 @@
"connectedAp": "المتصلة APs", "connectedAp": "المتصلة APs",
"activeUser": "الأجهزة النشطة", "activeUser": "الأجهزة النشطة",
"alerts": "تنبيهات", "alerts": "تنبيهات",
"connectedGateways": "Connected gateways", "connectedGateway": "البوابات المتصلة",
"connectedSwitches": "مفاتيح التبديل المتصلة" "connectedSwitches": "مفاتيح التبديل المتصلة"
}, },
"nzbget": { "nzbget": {
@@ -311,16 +309,6 @@
"stopped": "متوقف", "stopped": "متوقف",
"total": "المجموع" "total": "المجموع"
}, },
"suwayomi": {
"download": "مُنزل",
"nondownload": "Non-Downloaded",
"read": "قراءة",
"unread": "غير مقروءة",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": { "tailscale": {
"address": "عنوان", "address": "عنوان",
"expires": "تنتهي", "expires": "تنتهي",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "العام IP", "public_ip": "العام IP",
"region": "منطقة", "region": "منطقة",
"country": "الدولة", "country": "الدولة"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "القنوات", "channels": "القنوات",
@@ -705,10 +692,6 @@
"processed": "معالجة", "processed": "معالجة",
"time": "الوقت" "time": "الوقت"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "لوحات المعلومات", "dashboards": "لوحات المعلومات",
"datasources": "مصادر البيانات", "datasources": "مصادر البيانات",
@@ -857,8 +840,7 @@
"physicalRelease": "الإصدار المادي", "physicalRelease": "الإصدار المادي",
"digitalRelease": "الإصدار الرقمي", "digitalRelease": "الإصدار الرقمي",
"noEventsToday": "لا توجد أحداث اليوم!", "noEventsToday": "لا توجد أحداث اليوم!",
"noEventsFound": "لم يتم العثور على أحداث", "noEventsFound": "لم يتم العثور على أحداث"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "المِنصات", "platforms": "المِنصات",
@@ -887,8 +869,7 @@
"gitea": { "gitea": {
"notifications": "الإشعارات", "notifications": "الإشعارات",
"issues": "المُشكِلات", "issues": "المُشكِلات",
"pulls": "طلبات السحب", "pulls": "طلبات السحب"
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "المشاهد", "scenes": "المشاهد",
@@ -972,87 +953,5 @@
"reminders": "Reminders", "reminders": "Reminders",
"nextReminder": "Next Reminder", "nextReminder": "Next Reminder",
"none": "None" "none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "الاسم",
"address": "عنوان",
"last_seen": "آخر ظهور",
"status": "الحالة",
"online": "مُتّصل",
"offline": "غير متصل"
},
"beszel": {
"name": "الاسم",
"systems": "Systems",
"up": "يعمل",
"down": "لا يعمل",
"paused": "متوقف",
"pending": "معلق",
"status": "الحالة",
"updated": "محدث",
"cpu": "المعالج",
"memory": "الذاكرة",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "سليم",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "مفقود",
"suspended": "Suspended"
},
"spoolman": {
"loading": "تحميل"
},
"gitlab": {
"groups": "Groups",
"issues": "المُشكِلات",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "الحالة",
"load": "الضغط",
"bcharge": "شحن البطارية",
"timeleft": "الوقت المتبقي"
},
"karakeep": {
"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": "ملفات"
},
"jellystat": {
"songs": "أغاني",
"movies": "أفلام",
"episodes": "حلقات",
"other": "Other"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "mes", "months": "mes",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
@@ -120,7 +120,7 @@
"grid_power": "Xarxa", "grid_power": "Xarxa",
"home_power": "Consum", "home_power": "Consum",
"charge_power": "Carregador", "charge_power": "Carregador",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Descarregar", "download": "Descarregar",
@@ -148,9 +148,7 @@
"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",
@@ -178,7 +176,7 @@
"connectedAp": "AP connectats", "connectedAp": "AP connectats",
"activeUser": "Dispositius actius", "activeUser": "Dispositius actius",
"alerts": "Alertes", "alerts": "Alertes",
"connectedGateways": "Connected gateways", "connectedGateway": "Pasarel·les connectades",
"connectedSwitches": "Conmutadors connectats" "connectedSwitches": "Conmutadors connectats"
}, },
"nzbget": { "nzbget": {
@@ -229,8 +227,8 @@
"seed": "Llavors" "seed": "Llavors"
}, },
"develancacheui": { "develancacheui": {
"cachehitbytes": "Bytes trobats a la memòria cau", "cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Bytes no trobats a la memòria cau" "cachemissbytes": "Cache Miss Bytes"
}, },
"downloadstation": { "downloadstation": {
"download": "Descarregar", "download": "Descarregar",
@@ -311,16 +309,6 @@
"stopped": "Aturat", "stopped": "Aturat",
"total": "Total" "total": "Total"
}, },
"suwayomi": {
"download": "Descarregat",
"nondownload": "No descarregat",
"read": "Llegit",
"unread": "Sense llegir",
"downloadedread": "Descarregat i llegit",
"downloadedunread": "Descarregat i per llegir",
"nondownloadedread": "No descarregat i llegit",
"nondownloadedunread": "No descarregat i per llegir"
},
"tailscale": { "tailscale": {
"address": "Adreça", "address": "Adreça",
"expires": "Caduca", "expires": "Caduca",
@@ -337,22 +325,22 @@
}, },
"technitium": { "technitium": {
"totalQueries": "Consultes", "totalQueries": "Consultes",
"totalNoError": "Èxits", "totalNoError": "Success",
"totalServerFailure": "Fallades", "totalServerFailure": "Failures",
"totalNxDomain": "Dominis NX", "totalNxDomain": "NX Domains",
"totalRefused": "Rebutjat", "totalRefused": "Refused",
"totalAuthoritative": "Autoritatiu", "totalAuthoritative": "Authoritative",
"totalRecursive": "Recursiu", "totalRecursive": "Recursive",
"totalCached": "A la memòria cau", "totalCached": "Cached",
"totalBlocked": "Bloquejat", "totalBlocked": "Bloquejat",
"totalDropped": "Abandonat", "totalDropped": "Dropped",
"totalClients": "Clients" "totalClients": "Clients"
}, },
"tdarr": { "tdarr": {
"queue": "Cua", "queue": "Cua",
"processed": "Processat", "processed": "Processat",
"errored": "Error", "errored": "Error",
"saved": "Estalviat" "saved": "Desat"
}, },
"traefik": { "traefik": {
"routers": "Encaminadors", "routers": "Encaminadors",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "IP Pública", "public_ip": "IP Pública",
"region": "Regió", "region": "Regió",
"country": "País", "country": "País"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Canals", "channels": "Canals",
@@ -584,7 +571,7 @@
"clientIP": "Client" "clientIP": "Client"
}, },
"scrutiny": { "scrutiny": {
"passed": "Aprovat", "passed": "Aprobat",
"failed": "Error", "failed": "Error",
"unknown": "Desconegut" "unknown": "Desconegut"
}, },
@@ -705,10 +692,6 @@
"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",
@@ -827,7 +810,7 @@
"total": "Total", "total": "Total",
"running": "En execució", "running": "En execució",
"stopped": "Aturat", "stopped": "Aturat",
"passed": "Aprovat", "passed": "Aprobat",
"failed": "Error" "failed": "Error"
}, },
"openwrt": { "openwrt": {
@@ -857,21 +840,20 @@
"physicalRelease": "Estrena física", "physicalRelease": "Estrena física",
"digitalRelease": "Estrena digital", "digitalRelease": "Estrena digital",
"noEventsToday": "Cap esdeveniment per avui!", "noEventsToday": "Cap esdeveniment per avui!",
"noEventsFound": "No s'han trobat esdeveniments", "noEventsFound": "No s'han trobat esdeveniments"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Plataformes", "platforms": "Plataformes",
"totalRoms": "Jocs", "totalRoms": "Games",
"saves": "Partides desades", "saves": "Saves",
"states": "Estats", "states": "States",
"screenshots": "Captures de pantalla", "screenshots": "Screenshots",
"totalfilesize": "Tamany total" "totalfilesize": "Total Size"
}, },
"mailcow": { "mailcow": {
"domains": "Dominis", "domains": "Dominis",
"mailboxes": "Bústies", "mailboxes": "Mailboxes",
"mails": "Correus", "mails": "Mails",
"storage": "Emmagatzematge" "storage": "Emmagatzematge"
}, },
"netdata": { "netdata": {
@@ -887,8 +869,7 @@
"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",
@@ -953,106 +934,24 @@
"version": "Versió" "version": "Versió"
}, },
"linkwarden": { "linkwarden": {
"links": "Enllaços", "links": "Links",
"collections": "Col·leccions", "collections": "Collections",
"tags": "Etiquetes" "tags": "Etiquetes"
}, },
"zabbix": { "zabbix": {
"unclassified": "No classificat", "unclassified": "Not classified",
"information": "Informació", "information": "Informació",
"warning": "Avís", "warning": "Warning",
"average": "Mitjana", "average": "Average",
"high": "Alt", "high": "High",
"disaster": "Desastre" "disaster": "Disaster"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Vehicle", "vehicle": "Vehicle",
"vehicles": "Vehicles", "vehicles": "Vehicles",
"serviceRecords": "Constàncies de manteniment", "serviceRecords": "Service Records",
"reminders": "Recordatoris", "reminders": "Reminders",
"nextReminder": "Proper recordatori", "nextReminder": "Next Reminder",
"none": "Cap" "none": "None"
},
"vikunja": {
"projects": "Projectes actius",
"tasks7d": "Tasques a completar aquesta setmana",
"tasksOverdue": "Tasques vençudes",
"tasksInProgress": "Tasques en marxa"
},
"headscale": {
"name": "Nom",
"address": "Adreça",
"last_seen": "Vist per darrer cop",
"status": "Estat",
"online": "En línia",
"offline": "Fora de línia"
},
"beszel": {
"name": "Nom",
"systems": "Sistemes",
"up": "Actiu",
"down": "Inactiu",
"paused": "En pausa",
"pending": "Pendent",
"status": "Estat",
"updated": "Actualitzat",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disc",
"network": "XARXA"
},
"argocd": {
"apps": "Apps",
"synced": "Sincronitzats",
"outOfSync": "Dessincronitzats",
"healthy": "Saludable",
"degraded": "Degradats",
"progressing": "Progressant",
"missing": "Falten",
"suspended": "Suspesos"
},
"spoolman": {
"loading": "Carregant"
},
"gitlab": {
"groups": "Grups",
"issues": "Problemes",
"merges": "Merge Requests",
"projects": "Projectes"
},
"apcups": {
"status": "Estat",
"load": "Càrrega",
"bcharge": "Càrrega de la bateria",
"timeleft": "Temps restant"
},
"karakeep": {
"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"
},
"jellystat": {
"songs": "Cançons",
"movies": "Pel·lícules",
"episodes": "Episodis",
"other": "Other"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "měs.", "months": "měs.",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
@@ -85,16 +85,16 @@
"ping": { "ping": {
"error": "Chyba", "error": "Chyba",
"ping": "Odezva", "ping": "Odezva",
"down": "Výpadek", "down": "Down",
"up": "Běží", "up": "Up",
"not_available": "Není k dispozici" "not_available": "Není k dispozici"
}, },
"siteMonitor": { "siteMonitor": {
"http_status": "Stav HTTP", "http_status": "Stav HTTP",
"error": "Chyba", "error": "Chyba",
"response": "Odpověď", "response": "Odpověď",
"down": "Výpadek", "down": "Down",
"up": "Běží", "up": "Up",
"not_available": "Není k dispozici" "not_available": "Není k dispozici"
}, },
"emby": { "emby": {
@@ -120,7 +120,7 @@
"grid_power": "Mřížka", "grid_power": "Mřížka",
"home_power": "Spotřeba", "home_power": "Spotřeba",
"charge_power": "Nabíječka", "charge_power": "Nabíječka",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Stahování", "download": "Stahování",
@@ -144,13 +144,11 @@
"uptime": "Doba spuštění", "uptime": "Doba spuštění",
"maxDown": "Max. Down", "maxDown": "Max. Down",
"maxUp": "Max. Up", "maxUp": "Max. Up",
"down": "Výpadek", "down": "Down",
"up": "Běží", "up": "Up",
"received": "Přijaté", "received": "Přijaté",
"sent": "Odeslané", "sent": "Odeslané",
"externalIPAddress": "Ext. IP", "externalIPAddress": "Ext. IP"
"externalIPv6Address": "Veřejná IPv6",
"externalIPv6Prefix": "Věřejná IPv6 prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Odesílání dat", "upstreams": "Odesílání dat",
@@ -178,7 +176,7 @@
"connectedAp": "Připojené APs", "connectedAp": "Připojené APs",
"activeUser": "Aktivní zařízení", "activeUser": "Aktivní zařízení",
"alerts": "Upozornění", "alerts": "Upozornění",
"connectedGateways": "Připojené brány", "connectedGateway": "Připojené brány",
"connectedSwitches": "Připojené přepínače" "connectedSwitches": "Připojené přepínače"
}, },
"nzbget": { "nzbget": {
@@ -229,8 +227,8 @@
"seed": "Seedované" "seed": "Seedované"
}, },
"develancacheui": { "develancacheui": {
"cachehitbytes": "Byty nalezené v mezipaměti", "cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Byty nenalezené v mezipaměti" "cachemissbytes": "Cache Miss Bytes"
}, },
"downloadstation": { "downloadstation": {
"download": "Stahování", "download": "Stahování",
@@ -287,7 +285,7 @@
"total": "Celkem", "total": "Celkem",
"connected": "", "connected": "",
"new_devices": "", "new_devices": "",
"down_alerts": "Upozornění na výpadek" "down_alerts": "Down Alerts"
}, },
"pihole": { "pihole": {
"queries": "Dotazy", "queries": "Dotazy",
@@ -311,16 +309,6 @@
"stopped": "Zastaveno", "stopped": "Zastaveno",
"total": "Celkem" "total": "Celkem"
}, },
"suwayomi": {
"download": "Staženo",
"nondownload": "Nestaženo",
"read": "Přečteno",
"unread": "Nepřečteno",
"downloadedread": "Staženo a přečteno",
"downloadedunread": "Staženo a nepřečteno",
"nondownloadedread": "Nestaženo a přečteno",
"nondownloadedunread": "Nestaženo a nepřečteno"
},
"tailscale": { "tailscale": {
"address": "Adresa", "address": "Adresa",
"expires": "Vyprší", "expires": "Vyprší",
@@ -337,15 +325,15 @@
}, },
"technitium": { "technitium": {
"totalQueries": "Dotazy", "totalQueries": "Dotazy",
"totalNoError": "Úspěšně", "totalNoError": "Success",
"totalServerFailure": "Chyby", "totalServerFailure": "Failures",
"totalNxDomain": "NX domény", "totalNxDomain": "NX Domains",
"totalRefused": "Odmítnuto", "totalRefused": "Refused",
"totalAuthoritative": "Autoritativ", "totalAuthoritative": "Authoritative",
"totalRecursive": "Rekurziv", "totalRecursive": "Recursive",
"totalCached": "V mezipaměti", "totalCached": "Cached",
"totalBlocked": "Blokováno", "totalBlocked": "Blokováno",
"totalDropped": "Vynecháno", "totalDropped": "Dropped",
"totalClients": "Klienti" "totalClients": "Klienti"
}, },
"tdarr": { "tdarr": {
@@ -434,7 +422,7 @@
"load": "Zatížení", "load": "Zatížení",
"wait": "Počkejte prosím", "wait": "Počkejte prosím",
"temp": "TEPLOTA", "temp": "TEPLOTA",
"_temp": "Teplota", "_temp": "Temp",
"warn": "Varováni", "warn": "Varováni",
"uptime": "BĚŽÍ", "uptime": "BĚŽÍ",
"total": "Celkem", "total": "Celkem",
@@ -442,12 +430,12 @@
"used": "Využité", "used": "Využité",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
"crit": "Kritické", "crit": "Crit",
"read": "Přečteno", "read": "Přečteno",
"write": "Zápis", "write": "Write",
"gpu": "Grafická karta", "gpu": "GPU",
"mem": "Pamět RAM", "mem": "Mem",
"swap": "Swap RAM" "swap": "Swap"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Záložka", "bookmark": "Záložka",
@@ -456,7 +444,7 @@
"custom": "Vlastní", "custom": "Vlastní",
"visit": "Navštivte", "visit": "Navštivte",
"url": "Odkaz", "url": "Odkaz",
"searchsuggestion": "Doporučení" "searchsuggestion": "Suggestion"
}, },
"wmo": { "wmo": {
"0-day": "Slunečno", "0-day": "Slunečno",
@@ -523,15 +511,15 @@
"up_to_date": "Žádné", "up_to_date": "Žádné",
"child_bridges": "Podřízené můstky", "child_bridges": "Podřízené můstky",
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"up": "Běží", "up": "Up",
"pending": "Čeká", "pending": "Čeká",
"down": "Výpadek" "down": "Down"
}, },
"healthchecks": { "healthchecks": {
"new": "Nové", "new": "Nové",
"up": "Běží", "up": "Up",
"grace": "V období odkladu", "grace": "V období odkladu",
"down": "Výpadek", "down": "Down",
"paused": "Pozastaveno", "paused": "Pozastaveno",
"status": "Stav", "status": "Stav",
"last_ping": "Poslední ping", "last_ping": "Poslední ping",
@@ -568,20 +556,19 @@
"gluetun": { "gluetun": {
"public_ip": "Veřejná IP", "public_ip": "Veřejná IP",
"region": "Oblast", "region": "Oblast",
"country": "Stát", "country": "Stát"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Kanály", "channels": "Kanály",
"hd": "HD", "hd": "HD",
"tunerCount": "Tuner", "tunerCount": "Tuners",
"channelNumber": "Kanál", "channelNumber": "Channel",
"channelNetwork": "Síť", "channelNetwork": "Network",
"signalStrength": "Síla", "signalStrength": "Strength",
"signalQuality": "Kvalita", "signalQuality": "Quality",
"symbolQuality": "Kvalita", "symbolQuality": "Quality",
"networkRate": "Přenosová rychlost", "networkRate": "Přenosová rychlost",
"clientIP": "Klient" "clientIP": "Client"
}, },
"scrutiny": { "scrutiny": {
"passed": "Úspěšné", "passed": "Úspěšné",
@@ -593,12 +580,12 @@
"total": "Celkem" "total": "Celkem"
}, },
"peanut": { "peanut": {
"battery_charge": "Úroveň baterie", "battery_charge": "Battery Charge",
"ups_load": "Zítěž UPS", "ups_load": "UPS Load",
"ups_status": "Stav UPS", "ups_status": "UPS Status",
"online": "Online", "online": "Online",
"on_battery": "Na baterii", "on_battery": "On Battery",
"low_battery": "Nízký stav baterie" "low_battery": "Low Battery"
}, },
"nextdns": { "nextdns": {
"wait": "Čekejte prosím", "wait": "Čekejte prosím",
@@ -616,9 +603,9 @@
"streams_xepg": "Kanály XEPG" "streams_xepg": "Kanály XEPG"
}, },
"opendtu": { "opendtu": {
"yieldDay": "Dnes", "yieldDay": "Today",
"absolutePower": "Výkon", "absolutePower": "Power",
"relativePower": "Výkon %", "relativePower": "Power %",
"limit": "Limit" "limit": "Limit"
}, },
"opnsense": { "opnsense": {
@@ -647,9 +634,9 @@
"load": "Prům. zatížení", "load": "Prům. zatížení",
"memory": "Využití paměti", "memory": "Využití paměti",
"wanStatus": "Stav WAN", "wanStatus": "Stav WAN",
"up": "Běží", "up": "Up",
"down": "Výpadek", "down": "Down",
"temp": "Teplota", "temp": "Temp",
"disk": "Využití disku", "disk": "Využití disku",
"wanIP": "IP WAN" "wanIP": "IP WAN"
}, },
@@ -669,14 +656,14 @@
"up": "Stránky Up", "up": "Stránky Up",
"down": "Stránky Down", "down": "Stránky Down",
"uptime": "Doba spuštění", "uptime": "Doba spuštění",
"incident": "Událost", "incident": "Incident",
"m": "m" "m": "m"
}, },
"atsumeru": { "atsumeru": {
"series": "Seriály", "series": "Seriály",
"archives": "Archivy", "archives": "Archives",
"chapters": "Kapitoly", "chapters": "Chapters",
"categories": "Kategorie" "categories": "Categories"
}, },
"komga": { "komga": {
"libraries": "Knihovny", "libraries": "Knihovny",
@@ -705,14 +692,10 @@
"processed": "Zpracováno", "processed": "Zpracováno",
"time": "Čas" "time": "Čas"
}, },
"firefly": {
"networth": "Čisté jmění",
"budget": "Rozpočet"
},
"grafana": { "grafana": {
"dashboards": "Nástěnky", "dashboards": "Nástěnky",
"datasources": "Zdroje dat", "datasources": "Zdroje dat",
"totalalerts": "Celkový počet upozornění2", "totalalerts": "Celkový počet upozornění",
"alertstriggered": "Spuštěné výstrahy" "alertstriggered": "Spuštěné výstrahy"
}, },
"nextcloud": { "nextcloud": {
@@ -750,7 +733,7 @@
"uptime": "Doba spuštění" "uptime": "Doba spuštění"
}, },
"ghostfolio": { "ghostfolio": {
"gross_percent_today": "Dnes", "gross_percent_today": "Today",
"gross_percent_1y": "Jeden rok", "gross_percent_1y": "Jeden rok",
"gross_percent_max": "Za celou dobu" "gross_percent_max": "Za celou dobu"
}, },
@@ -771,8 +754,8 @@
}, },
"calibreweb": { "calibreweb": {
"books": "Knihy", "books": "Knihy",
"authors": "Autoři", "authors": "Authors",
"categories": "Kategorie", "categories": "Categories",
"series": "Seriály" "series": "Seriály"
}, },
"jdownloader": { "jdownloader": {
@@ -786,44 +769,44 @@
"totalFiles": "Soubory" "totalFiles": "Soubory"
}, },
"azuredevops": { "azuredevops": {
"result": "Výsledek", "result": "Result",
"status": "Stav", "status": "Stav",
"buildId": "ID sestavení", "buildId": "Build ID",
"succeeded": "Úspěšně", "succeeded": "Succeeded",
"notStarted": "Nezahájeno", "notStarted": "Not Started",
"failed": "Selhalo", "failed": "Selhalo",
"canceled": "Zrušeno", "canceled": "Canceled",
"inProgress": "Probíhá", "inProgress": "In Progress",
"totalPrs": "Celkem PR", "totalPrs": "Total PRs",
"myPrs": "Moje PR", "myPrs": "My PRs",
"approved": "Schváleno" "approved": "Schváleno"
}, },
"gamedig": { "gamedig": {
"status": "Stav", "status": "Stav",
"online": "Online", "online": "Online",
"offline": "Offline", "offline": "Offline",
"name": "Jméno", "name": "Name",
"map": "Mapa", "map": "Map",
"currentPlayers": "Počet hráčů", "currentPlayers": "Current players",
"players": "Hráči", "players": "Hráči",
"maxPlayers": "Maximální počet hráčů", "maxPlayers": "Max players",
"bots": "Boti", "bots": "Bots",
"ping": "Odezva" "ping": "Odezva"
}, },
"urbackup": { "urbackup": {
"ok": "Ok", "ok": "Ok",
"errored": "Chyby", "errored": "Errors",
"noRecent": "Zastaralý", "noRecent": "Out of Date",
"totalUsed": "Využití úložiště" "totalUsed": "Used Storage"
}, },
"mealie": { "mealie": {
"recipes": "Recepty", "recipes": "Recipes",
"users": "Uživatelé", "users": "Uživatelé",
"categories": "Kategorie", "categories": "Categories",
"tags": "Štítky" "tags": "Tags"
}, },
"openmediavault": { "openmediavault": {
"downloading": "Stahování", "downloading": "Downloading",
"total": "Celkem", "total": "Celkem",
"running": "Běží", "running": "Běží",
"stopped": "Zastaveno", "stopped": "Zastaveno",
@@ -832,96 +815,94 @@
}, },
"openwrt": { "openwrt": {
"uptime": "Doba spuštění", "uptime": "Doba spuštění",
"cpuLoad": "Prům. zatížení procesoru (5m)", "cpuLoad": "CPU Load Avg (5m)",
"up": "Běží", "up": "Up",
"down": "Výpadek", "down": "Down",
"bytesTx": "Přeneseno", "bytesTx": "Transmitted",
"bytesRx": "Přijaté" "bytesRx": "Přijaté"
}, },
"uptimerobot": { "uptimerobot": {
"status": "Stav", "status": "Stav",
"uptime": "Doba spuštění", "uptime": "Doba spuštění",
"lastDown": "Poslední výpadek", "lastDown": "Last Downtime",
"downDuration": "Trvání výpadku", "downDuration": "Downtime Duration",
"sitesUp": "Stránky Up", "sitesUp": "Stránky Up",
"sitesDown": "Stránky Down", "sitesDown": "Stránky Down",
"paused": "Pozastaveno", "paused": "Pozastaveno",
"notyetchecked": "Zatím nezkontrolováno", "notyetchecked": "Not Yet Checked",
"up": "Běží", "up": "Up",
"seemsdown": "Zdá se nedostupný", "seemsdown": "Seems Down",
"down": "Výpadek", "down": "Down",
"unknown": "Neznámý" "unknown": "Neznámý"
}, },
"calendar": { "calendar": {
"inCinemas": "V kinech", "inCinemas": "In cinemas",
"physicalRelease": "Fyzické vydání", "physicalRelease": "Physical release",
"digitalRelease": "Digitální vydání", "digitalRelease": "Digital release",
"noEventsToday": "Pro dnešek žádné události!", "noEventsToday": "No events for today!",
"noEventsFound": "Nemáte žádné události", "noEventsFound": "No events found"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Platformy", "platforms": "Platforms",
"totalRoms": "Hry", "totalRoms": "Games",
"saves": "Uložené", "saves": "Saves",
"states": "Stavy", "states": "States",
"screenshots": "Snímky obrazovky", "screenshots": "Screenshots",
"totalfilesize": "Celková velikost" "totalfilesize": "Total Size"
}, },
"mailcow": { "mailcow": {
"domains": "Domény", "domains": "Domény",
"mailboxes": "E-mailové schránky", "mailboxes": "Mailboxes",
"mails": "Maily", "mails": "Mails",
"storage": "Úložiště" "storage": "Úložiště"
}, },
"netdata": { "netdata": {
"warnings": "Upozornění", "warnings": "Warnings",
"criticals": "Kritic" "criticals": "Criticals"
}, },
"plantit": { "plantit": {
"events": "Události", "events": "Events",
"plants": "Rostliny", "plants": "Plants",
"photos": "Fotografie", "photos": "Fotografie",
"species": "Druhy" "species": "Species"
}, },
"gitea": { "gitea": {
"notifications": "Oznámení", "notifications": "Notifications",
"issues": "Problémy", "issues": "Problémy",
"pulls": "Pull Requests", "pulls": "Pull Requests"
"repositories": "Repozitáře"
}, },
"stash": { "stash": {
"scenes": "Scény", "scenes": "Scenes",
"scenesPlayed": "Přehrané scény", "scenesPlayed": "Scenes Played",
"playCount": "Celkový počet přehrání", "playCount": "Total Plays",
"playDuration": "Čas sledování", "playDuration": "Time Watched",
"sceneSize": "Velikost scén", "sceneSize": "Scenes Size",
"sceneDuration": "Délka scény", "sceneDuration": "Scenes Duration",
"images": "Obrázky", "images": "Images",
"imageSize": "Velikost obrázků", "imageSize": "Images Size",
"galleries": "Galerie", "galleries": "Galleries",
"performers": "Herci", "performers": "Performers",
"studios": "Studia", "studios": "Studios",
"movies": "Filmy", "movies": "Filmy",
"tags": "Štítky", "tags": "Tags",
"oCount": "Počet O" "oCount": "O Count"
}, },
"tandoor": { "tandoor": {
"users": "Uživatelé", "users": "Uživatelé",
"recipes": "Recepty", "recipes": "Recipes",
"keywords": "Klíčová slova" "keywords": "Keywords"
}, },
"homebox": { "homebox": {
"items": "Položky", "items": "Items",
"totalWithWarranty": "Se zárukou", "totalWithWarranty": "With Warranty",
"locations": "Lokality", "locations": "Locations",
"labels": "Štítky", "labels": "Labels",
"users": "Uživatelé", "users": "Uživatelé",
"totalValue": "Celková hodnota" "totalValue": "Total Value"
}, },
"crowdsec": { "crowdsec": {
"alerts": "Upozornění", "alerts": "Upozornění",
"bans": "Bany" "bans": "Bans"
}, },
"wgeasy": { "wgeasy": {
"connected": "", "connected": "",
@@ -930,10 +911,10 @@
"total": "Celkem" "total": "Celkem"
}, },
"swagdashboard": { "swagdashboard": {
"proxied": "Přes proxy", "proxied": "Proxied",
"auth": "S ověřením", "auth": "With Auth",
"outdated": "Zastaralé", "outdated": "Outdated",
"banned": "Zabanován" "banned": "Banned"
}, },
"myspeed": { "myspeed": {
"ping": "Odezva", "ping": "Odezva",
@@ -941,118 +922,36 @@
"upload": "Nahrávání" "upload": "Nahrávání"
}, },
"stocks": { "stocks": {
"stocks": "Akcie", "stocks": "Stocks",
"loading": "Načítání", "loading": "Loading",
"open": "Otevřeno - US trh", "open": "Open - US Market",
"closed": "Uzavřeno - US trh", "closed": "Closed - US Market",
"invalidConfiguration": "Neplatná konfigurace" "invalidConfiguration": "Invalid Configuration"
}, },
"frigate": { "frigate": {
"cameras": "Kamery", "cameras": "Cameras",
"uptime": "Doba spuštění", "uptime": "Doba spuštění",
"version": "Verze" "version": "Verze"
}, },
"linkwarden": { "linkwarden": {
"links": "Linky", "links": "Links",
"collections": "Sbírky", "collections": "Collections",
"tags": "Štítky" "tags": "Tags"
}, },
"zabbix": { "zabbix": {
"unclassified": "Neklasifikováno", "unclassified": "Not classified",
"information": "Informace", "information": "Informace",
"warning": "Upozornění", "warning": "Warning",
"average": "Průměr", "average": "Average",
"high": "Vysoký", "high": "High",
"disaster": "Katastrofa" "disaster": "Disaster"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Vozidlo", "vehicle": "Vehicle",
"vehicles": "Vozidla", "vehicles": "Vehicles",
"serviceRecords": "Servisní záznamy", "serviceRecords": "Service Records",
"reminders": "Připomenutí", "reminders": "Reminders",
"nextReminder": "Další připomenutí", "nextReminder": "Next Reminder",
"none": "Žádné" "none": "None"
},
"vikunja": {
"projects": "Aktivní projekty",
"tasks7d": "Úkoly k dokončení tento týden",
"tasksOverdue": "Zpožděné úkoly",
"tasksInProgress": "Probíhají úkoly"
},
"headscale": {
"name": "Jméno",
"address": "Adresa",
"last_seen": "Naposledy viděno",
"status": "Stav",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Jméno",
"systems": "Systém",
"up": "Běží",
"down": "Výpadek",
"paused": "Pozastaveno",
"pending": "Čeká",
"status": "Stav",
"updated": "Aktualizováno",
"cpu": "CPU",
"memory": "RAM",
"disk": "Disk",
"network": "Síť"
},
"argocd": {
"apps": "Aplikace",
"synced": "Synchronizováno",
"outOfSync": "Nesynchronizováno",
"healthy": "Zdravý",
"degraded": "Degradováno",
"progressing": "Probíhá",
"missing": "Chybějící",
"suspended": "Pozastaveno"
},
"spoolman": {
"loading": "Načítání"
},
"gitlab": {
"groups": "Skupiny",
"issues": "Problémy",
"merges": "Žádosti o sloučení",
"projects": "Projekty"
},
"apcups": {
"status": "Stav",
"load": "Zatížení",
"bcharge": "Úroveň baterie",
"timeleft": "Zbývající čas"
},
"karakeep": {
"bookmarks": "Záložky",
"favorites": "Oblíbené",
"archived": "Archivováno",
"highlights": "Zvýraznění",
"lists": "Seznamy",
"tags": "Štítky"
},
"slskd": {
"slskStatus": "Síť",
"connected": "",
"disconnected": "Odpojeno",
"updateStatus": "Aktualizace",
"update_yes": "Dostupné",
"update_no": "Žádné",
"downloads": "Stažení",
"uploads": "Nahrávání",
"sharedFiles": "Soubory"
},
"jellystat": {
"songs": "Skladby",
"movies": "Filmy",
"episodes": "Epizody",
"other": "Other"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "mnd", "months": "mnd",
"days": "d", "days": "d",
"hours": "t", "hours": "t",
@@ -120,7 +120,7 @@
"grid_power": "Gitter", "grid_power": "Gitter",
"home_power": "Forbrug", "home_power": "Forbrug",
"charge_power": "Oplader", "charge_power": "Oplader",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Download", "download": "Download",
@@ -148,9 +148,7 @@
"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",
@@ -178,7 +176,7 @@
"connectedAp": "Forbundne APs", "connectedAp": "Forbundne APs",
"activeUser": "Aktive enheder", "activeUser": "Aktive enheder",
"alerts": "Advarsler", "alerts": "Advarsler",
"connectedGateways": "Connected gateways", "connectedGateway": "Forbundne gateways",
"connectedSwitches": "Forbundne switches" "connectedSwitches": "Forbundne switches"
}, },
"nzbget": { "nzbget": {
@@ -311,16 +309,6 @@
"stopped": "Stoppede", "stopped": "Stoppede",
"total": "Total" "total": "Total"
}, },
"suwayomi": {
"download": "Hentet",
"nondownload": "Non-Downloaded",
"read": "Læst",
"unread": "Ulæst",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": { "tailscale": {
"address": "Adresse", "address": "Adresse",
"expires": "Udløber", "expires": "Udløber",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "Offentlig IP", "public_ip": "Offentlig IP",
"region": "Område", "region": "Område",
"country": "Land", "country": "Land"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Kanaler", "channels": "Kanaler",
@@ -705,10 +692,6 @@
"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",
@@ -857,8 +840,7 @@
"physicalRelease": "Fysisk udgivelse", "physicalRelease": "Fysisk udgivelse",
"digitalRelease": "Digitale udgivelser", "digitalRelease": "Digitale udgivelser",
"noEventsToday": "No events for today!", "noEventsToday": "No events for today!",
"noEventsFound": "No events found", "noEventsFound": "No events found"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Platforme", "platforms": "Platforme",
@@ -887,8 +869,7 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Problemer", "issues": "Problemer",
"pulls": "Pull Requests", "pulls": "Pull Requests"
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@@ -972,87 +953,5 @@
"reminders": "Reminders", "reminders": "Reminders",
"nextReminder": "Next Reminder", "nextReminder": "Next Reminder",
"none": "None" "none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Navn",
"address": "Adresse",
"last_seen": "Sidst Set",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Navn",
"systems": "Systems",
"up": "Op",
"down": "Ned",
"paused": "Pause",
"pending": "Afventer",
"status": "Status",
"updated": "Opdateret",
"cpu": "CPU",
"memory": "RAM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Sund",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Mangler",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Problemer",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Status",
"load": "Belastning",
"bcharge": "Batteriniveau",
"timeleft": "Resterende tid"
},
"karakeep": {
"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"
},
"jellystat": {
"songs": "Sange",
"movies": "Film",
"episodes": "Episoder",
"other": "Other"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "Mo.", "months": "Mo.",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
@@ -47,7 +47,7 @@
"load": "Last", "load": "Last",
"temp": "TEMP", "temp": "TEMP",
"max": "Max", "max": "Max",
"uptime": "BETRIEBSZEIT" "uptime": "UP"
}, },
"unifi": { "unifi": {
"users": "Benutzer", "users": "Benutzer",
@@ -61,7 +61,7 @@
"wlan_devices": "WLAN-Geräte", "wlan_devices": "WLAN-Geräte",
"lan_users": "LAN-Benutzer", "lan_users": "LAN-Benutzer",
"wlan_users": "WLAN-Benutzer", "wlan_users": "WLAN-Benutzer",
"up": "BETRIEBSZEIT", "up": "UP",
"down": "EMPFANGEN", "down": "EMPFANGEN",
"wait": "Bitte warten", "wait": "Bitte warten",
"empty_data": "Subsystem-Status unbekannt" "empty_data": "Subsystem-Status unbekannt"
@@ -85,16 +85,16 @@
"ping": { "ping": {
"error": "Fehler", "error": "Fehler",
"ping": "Ping", "ping": "Ping",
"down": "Offline", "down": "Empfangen",
"up": "Online", "up": "Senden",
"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": "Offline", "down": "Empfangen",
"up": "Online", "up": "Senden",
"not_available": "Nicht verfügbar" "not_available": "Nicht verfügbar"
}, },
"emby": { "emby": {
@@ -120,7 +120,7 @@
"grid_power": "Netz", "grid_power": "Netz",
"home_power": "verbauch", "home_power": "verbauch",
"charge_power": "Ladegerät", "charge_power": "Ladegerät",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Download", "download": "Download",
@@ -144,13 +144,11 @@
"uptime": "Betriebszeit", "uptime": "Betriebszeit",
"maxDown": "Max. Down", "maxDown": "Max. Down",
"maxUp": "Max. Up", "maxUp": "Max. Up",
"down": "Offline", "down": "Empfangen",
"up": "Online", "up": "Senden",
"received": "Empfangen", "received": "Empfangen",
"sent": "Gesendet", "sent": "Gesendet",
"externalIPAddress": "Externe IP", "externalIPAddress": "Externe IP"
"externalIPv6Address": "Externe IPv6",
"externalIPv6Prefix": "Externes IPv6-Präfix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@@ -178,7 +176,7 @@
"connectedAp": "Verbundene APs", "connectedAp": "Verbundene APs",
"activeUser": "Aktive Geräte", "activeUser": "Aktive Geräte",
"alerts": "Warnungen", "alerts": "Warnungen",
"connectedGateways": "Verbundene Gateways", "connectedGateway": "Verbundene Gateways",
"connectedSwitches": "Verbundene Switche" "connectedSwitches": "Verbundene Switche"
}, },
"nzbget": { "nzbget": {
@@ -307,20 +305,10 @@
"ping": "Ping" "ping": "Ping"
}, },
"portainer": { "portainer": {
"running": "Wird ausgeführt", "running": "Werden ausgeführt",
"stopped": "Gestoppt", "stopped": "Gestoppt",
"total": "Gesamt" "total": "Gesamt"
}, },
"suwayomi": {
"download": "Heruntergeladen",
"nondownload": "Nicht heruntergeladen",
"read": "Gelesen",
"unread": "Ungelesen",
"downloadedread": "Heruntergeladen & gelesen",
"downloadedunread": "Heruntergeladen & ungelesen",
"nondownloadedread": "Nicht heruntergeladen & gelesen",
"nondownloadedunread": "Nicht heruntergeladen & ungelesen"
},
"tailscale": { "tailscale": {
"address": "Adresse", "address": "Adresse",
"expires": "Läuft ab", "expires": "Läuft ab",
@@ -352,7 +340,7 @@
"queue": "Warteschlange", "queue": "Warteschlange",
"processed": "Verarbeitet", "processed": "Verarbeitet",
"errored": "Fehlgeschlagen", "errored": "Fehlgeschlagen",
"saved": "Eingespart" "saved": "Gespeichert"
}, },
"traefik": { "traefik": {
"routers": "Router", "routers": "Router",
@@ -436,7 +424,7 @@
"temp": "TEMP", "temp": "TEMP",
"_temp": "Temperatur", "_temp": "Temperatur",
"warn": "Warnung", "warn": "Warnung",
"uptime": "BETRIEBSZEIT", "uptime": "UP",
"total": "Gesamt", "total": "Gesamt",
"free": "Frei", "free": "Frei",
"used": "In Benutzung", "used": "In Benutzung",
@@ -447,7 +435,7 @@
"write": "Schreiben", "write": "Schreiben",
"gpu": "GPU", "gpu": "GPU",
"mem": "RAM", "mem": "RAM",
"swap": "Auslagerung" "swap": "Swap"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Lesezeichen", "bookmark": "Lesezeichen",
@@ -523,15 +511,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": "Online", "up": "Senden",
"pending": "Ausstehend", "pending": "Ausstehend",
"down": "Offline" "down": "Empfangen"
}, },
"healthchecks": { "healthchecks": {
"new": "Neu", "new": "Neu",
"up": "Online", "up": "Senden",
"grace": "In Karenzzeit", "grace": "In Karenzzeit",
"down": "Offline", "down": "Empfangen",
"paused": "Pausiert", "paused": "Pausiert",
"status": "Status", "status": "Status",
"last_ping": "Letzter Ping", "last_ping": "Letzter Ping",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "Öffentliche IP", "public_ip": "Öffentliche IP",
"region": "Region", "region": "Region",
"country": "Land", "country": "Land"
"port_forwarded": "Port weitergeleitet"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Kanäle", "channels": "Kanäle",
@@ -647,8 +634,8 @@
"load": "Durchschnittliche Last", "load": "Durchschnittliche Last",
"memory": "Speichernutzung", "memory": "Speichernutzung",
"wanStatus": "WAN-Status", "wanStatus": "WAN-Status",
"up": "Online", "up": "Senden",
"down": "Offline", "down": "Empfangen",
"temp": "Temperatur", "temp": "Temperatur",
"disk": "Datenträgernutzung", "disk": "Datenträgernutzung",
"wanIP": "WAN-IP" "wanIP": "WAN-IP"
@@ -666,8 +653,8 @@
"storage": "Speicher" "storage": "Speicher"
}, },
"uptimekuma": { "uptimekuma": {
"up": "Up", "up": "Seiten verfügbar",
"down": "Down", "down": "Seiten nicht verfügbar",
"uptime": "Betriebszeit", "uptime": "Betriebszeit",
"incident": "Vorfall", "incident": "Vorfall",
"m": "min" "m": "min"
@@ -705,10 +692,6 @@
"processed": "Verarbeitet", "processed": "Verarbeitet",
"time": "Zeit" "time": "Zeit"
}, },
"firefly": {
"networth": "Reinvermögen",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboards", "dashboards": "Dashboards",
"datasources": "Datenquellen", "datasources": "Datenquellen",
@@ -745,8 +728,8 @@
"targets_total": "Alle Ziele" "targets_total": "Alle Ziele"
}, },
"gatus": { "gatus": {
"up": "Up", "up": "Seiten verfügbar",
"down": "Down", "down": "Seiten nicht verfügbar",
"uptime": "Betriebszeit" "uptime": "Betriebszeit"
}, },
"ghostfolio": { "ghostfolio": {
@@ -833,8 +816,8 @@
"openwrt": { "openwrt": {
"uptime": "Betriebszeit", "uptime": "Betriebszeit",
"cpuLoad": "CPU-Last (5 min-Durchschnitt)", "cpuLoad": "CPU-Last (5 min-Durchschnitt)",
"up": "Online", "up": "Senden",
"down": "Offline", "down": "Empfangen",
"bytesTx": "Übertragen", "bytesTx": "Übertragen",
"bytesRx": "Empfangen" "bytesRx": "Empfangen"
}, },
@@ -843,13 +826,13 @@
"uptime": "Betriebszeit", "uptime": "Betriebszeit",
"lastDown": "Letzter Ausfall", "lastDown": "Letzter Ausfall",
"downDuration": "Ausfalldauer", "downDuration": "Ausfalldauer",
"sitesUp": "Up", "sitesUp": "Seiten verfügbar",
"sitesDown": "Down", "sitesDown": "Seiten nicht verfügbar",
"paused": "Pausiert", "paused": "Pausiert",
"notyetchecked": "Noch nicht geprüft", "notyetchecked": "Noch nicht geprüft",
"up": "Online", "up": "Senden",
"seemsdown": "Scheint nicht verfügbar", "seemsdown": "Scheint nicht verfügbar",
"down": "Offline", "down": "Empfangen",
"unknown": "Unbekannt" "unknown": "Unbekannt"
}, },
"calendar": { "calendar": {
@@ -857,8 +840,7 @@
"physicalRelease": "Physische Version", "physicalRelease": "Physische Version",
"digitalRelease": "Digitale Version", "digitalRelease": "Digitale Version",
"noEventsToday": "Heute keine Ereignisse!", "noEventsToday": "Heute keine Ereignisse!",
"noEventsFound": "Keine Termine gefunden", "noEventsFound": "Keine Termine gefunden"
"errorWhenLoadingData": "Fehler beim Laden der Kalenderdaten"
}, },
"romm": { "romm": {
"platforms": "Plattformen", "platforms": "Plattformen",
@@ -887,8 +869,7 @@
"gitea": { "gitea": {
"notifications": "Benachrichtigungen", "notifications": "Benachrichtigungen",
"issues": "Probleme", "issues": "Probleme",
"pulls": "Pull-Requests", "pulls": "Pull-Requests"
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Szenen", "scenes": "Szenen",
@@ -972,87 +953,5 @@
"reminders": "Erinnerungen", "reminders": "Erinnerungen",
"nextReminder": "Nächste Erinnerung", "nextReminder": "Nächste Erinnerung",
"none": "Keine" "none": "Keine"
},
"vikunja": {
"projects": "Aktive Projekte",
"tasks7d": "Diese Woche fällige Aufgaben",
"tasksOverdue": "Überfällige Aufgaben",
"tasksInProgress": "Aufgaben in Arbeit"
},
"headscale": {
"name": "Name",
"address": "Adresse",
"last_seen": "Zuletzt gesehen",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Name",
"systems": "Systeme",
"up": "Online",
"down": "Offline",
"paused": "Pausiert",
"pending": "Ausstehend",
"status": "Status",
"updated": "Aktualisiert",
"cpu": "CPU",
"memory": "RAM",
"disk": "Festplatte",
"network": "NET"
},
"argocd": {
"apps": "Anwendungen",
"synced": "Synchronisiert",
"outOfSync": "Nicht mehr synchronisiert",
"healthy": "Fehlerfrei",
"degraded": "Beeinträchtigt",
"progressing": "Fortschritt",
"missing": "Fehlend",
"suspended": "Unterbrochen"
},
"spoolman": {
"loading": "Wird geladen"
},
"gitlab": {
"groups": "Gruppen",
"issues": "Probleme",
"merges": "Merge Requests",
"projects": "Projekte"
},
"apcups": {
"status": "Status",
"load": "Last",
"bcharge": "Akkuladung",
"timeleft": "Verbleibende Zeit"
},
"karakeep": {
"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"
},
"jellystat": {
"songs": "Songs",
"movies": "Filme",
"episodes": "Episoden",
"other": "Andere"
},
"checkmk": {
"serviceErrors": "Dienstprobleme",
"hostErrors": "Hostprobleme"
} }
} }

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "mo", "months": "mo",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
@@ -120,7 +120,7 @@
"grid_power": "Πλέγμα", "grid_power": "Πλέγμα",
"home_power": "Κατανάλωση", "home_power": "Κατανάλωση",
"charge_power": "Φορτιστής", "charge_power": "Φορτιστής",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Λήξη", "download": "Λήξη",
@@ -148,9 +148,7 @@
"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",
@@ -178,7 +176,7 @@
"connectedAp": "Συνδεδεμένα APs", "connectedAp": "Συνδεδεμένα APs",
"activeUser": "Ενεργές συσκευές", "activeUser": "Ενεργές συσκευές",
"alerts": "Ειδοποιήσεις", "alerts": "Ειδοποιήσεις",
"connectedGateways": "Connected gateways", "connectedGateway": "Συνδεδεμένα gateways",
"connectedSwitches": "Συνδεδεμένα switches" "connectedSwitches": "Συνδεδεμένα switches"
}, },
"nzbget": { "nzbget": {
@@ -311,16 +309,6 @@
"stopped": "Σταματημένο", "stopped": "Σταματημένο",
"total": "Σύνολο" "total": "Σύνολο"
}, },
"suwayomi": {
"download": "Κατεβασμένο",
"nondownload": "Non-Downloaded",
"read": "Διαβάστηκε",
"unread": "Μη Διαβασμένο",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": { "tailscale": {
"address": "Διεύθυνση", "address": "Διεύθυνση",
"expires": "Λήγει", "expires": "Λήγει",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "Δημόσια ΙΡ", "public_ip": "Δημόσια ΙΡ",
"region": "Περιοχή", "region": "Περιοχή",
"country": "Χώρα", "country": "Χώρα"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Κανάλια", "channels": "Κανάλια",
@@ -705,10 +692,6 @@
"processed": "Σε επεξεργασία", "processed": "Σε επεξεργασία",
"time": "Ώρα" "time": "Ώρα"
}, },
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Πίνακας Ελέγχου", "dashboards": "Πίνακας Ελέγχου",
"datasources": "Πηγές Δεδομένων", "datasources": "Πηγές Δεδομένων",
@@ -857,8 +840,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": "No events found"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Platforms", "platforms": "Platforms",
@@ -887,8 +869,7 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests", "pulls": "Pull Requests"
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@@ -972,87 +953,5 @@
"reminders": "Reminders", "reminders": "Reminders",
"nextReminder": "Next Reminder", "nextReminder": "Next Reminder",
"none": "None" "none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Όνομα",
"address": "Διεύθυνση",
"last_seen": "Τελευταία Σύνδεση",
"status": "Κατάσταση",
"online": "Συνδεδεμένοι",
"offline": "Εκτός σύνδεσης"
},
"beszel": {
"name": "Όνομα",
"systems": "Systems",
"up": "Ping up",
"down": "Ping down",
"paused": "Paused",
"pending": "Σε εκκρεμότητα",
"status": "Κατάσταση",
"updated": "Ενημερώθηκε",
"cpu": "Επεξεργαστής",
"memory": "Μνήμη",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Υγειές",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Απουσιάζει",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Κατάσταση",
"load": "Φόρτωση",
"bcharge": "Battery Charge",
"timeleft": "Χρόνος που απομένει"
},
"karakeep": {
"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": "Αρχεία"
},
"jellystat": {
"songs": "Τραγούδια",
"movies": "Ταινίες",
"episodes": "Επεισόδια",
"other": "Other"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -120,7 +120,7 @@
"grid_power": "Grid", "grid_power": "Grid",
"home_power": "Consumption", "home_power": "Consumption",
"charge_power": "Charger", "charge_power": "Charger",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Download", "download": "Download",
@@ -148,9 +148,7 @@
"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",
@@ -178,7 +176,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateways": "Connected gateways", "connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@@ -568,8 +566,7 @@
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Public IP",
"region": "Region", "region": "Region",
"country": "Country", "country": "Country"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "Channels",
@@ -705,10 +702,6 @@
"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",
@@ -857,8 +850,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": "No events found"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Platforms", "platforms": "Platforms",
@@ -885,10 +877,9 @@
"species": "Species" "species": "Species"
}, },
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests", "pulls": "Pull Requests"
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@@ -991,68 +982,11 @@
"name": "Name", "name": "Name",
"systems": "Systems", "systems": "Systems",
"up": "Up", "up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "Pending",
"status": "Status", "status": "Status",
"updated": "Updated", "updated": "Updated",
"cpu": "CPU", "cpu": "CPU",
"memory": "MEM", "memory": "MEM",
"disk": "Disk", "disk": "Disk",
"network": "NET" "network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Healthy",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Status",
"load": "Load",
"bcharge":"Battery Charge",
"timeleft":"Time Left"
},
"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"
},
"jellystat": {
"songs": "Songs",
"movies": "Movies",
"episodes": "Episodes",
"other": "Other"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "mo", "months": "mo",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
@@ -120,7 +120,7 @@
"grid_power": "Grid", "grid_power": "Grid",
"home_power": "Consumption", "home_power": "Consumption",
"charge_power": "Charger", "charge_power": "Charger",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Elŝuti", "download": "Elŝuti",
@@ -148,9 +148,7 @@
"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",
@@ -178,7 +176,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateways": "Connected gateways", "connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@@ -311,16 +309,6 @@
"stopped": "Stopped", "stopped": "Stopped",
"total": "Totalo" "total": "Totalo"
}, },
"suwayomi": {
"download": "Downloaded",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Unread",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": { "tailscale": {
"address": "Address", "address": "Address",
"expires": "Expires", "expires": "Expires",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Public IP",
"region": "Regiono", "region": "Regiono",
"country": "Lando", "country": "Lando"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Kanaloj", "channels": "Kanaloj",
@@ -705,10 +692,6 @@
"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",
@@ -857,8 +840,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": "No events found"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Platforms", "platforms": "Platforms",
@@ -887,8 +869,7 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests", "pulls": "Pull Requests"
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@@ -972,87 +953,5 @@
"reminders": "Reminders", "reminders": "Reminders",
"nextReminder": "Next Reminder", "nextReminder": "Next Reminder",
"none": "None" "none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Address",
"last_seen": "Last Seen",
"status": "Stato",
"online": "Online",
"offline": "Malkonekta"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "Pending",
"status": "Stato",
"updated": "Updated",
"cpu": "Ĉefprocesoro",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Sana",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Stato",
"load": "Ŝarĝo",
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Havebla",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
},
"jellystat": {
"songs": "Kantoj",
"movies": "Filmoj",
"episodes": "Epizodoj",
"other": "Other"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "me", "months": "me",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
@@ -120,7 +120,7 @@
"grid_power": "Red", "grid_power": "Red",
"home_power": "Consumo", "home_power": "Consumo",
"charge_power": "Cargador", "charge_power": "Cargador",
"kilowatt": "kW" "watt_hour": "vatio-hora (Wh)"
}, },
"flood": { "flood": {
"download": "Descarga", "download": "Descarga",
@@ -148,9 +148,7 @@
"up": "Activo", "up": "Activo",
"received": "Recibido", "received": "Recibido",
"sent": "Enviado", "sent": "Enviado",
"externalIPAddress": "IP ext.", "externalIPAddress": "IP ext."
"externalIPv6Address": "IPv6 ext.",
"externalIPv6Prefix": "Prefijo IPv6 ext."
}, },
"caddy": { "caddy": {
"upstreams": "Upstream (desarrollo de software)", "upstreams": "Upstream (desarrollo de software)",
@@ -178,7 +176,7 @@
"connectedAp": "AP conectados", "connectedAp": "AP conectados",
"activeUser": "Dispositivos activos", "activeUser": "Dispositivos activos",
"alerts": "Alertas", "alerts": "Alertas",
"connectedGateways": "Puertas de enlace conectadas", "connectedGateway": "Puertas de enlace conectadas",
"connectedSwitches": "Conmutadores conectados" "connectedSwitches": "Conmutadores conectados"
}, },
"nzbget": { "nzbget": {
@@ -311,16 +309,6 @@
"stopped": "Detenido", "stopped": "Detenido",
"total": "Total" "total": "Total"
}, },
"suwayomi": {
"download": "Descargado",
"nondownload": "No descargado",
"read": "Leer",
"unread": "Sin leer",
"downloadedread": "Descargado y leído",
"downloadedunread": "Descargado y no leído",
"nondownloadedread": "No descargado y leído",
"nondownloadedunread": "No descargado y no leído"
},
"tailscale": { "tailscale": {
"address": "Dirección", "address": "Dirección",
"expires": "Caduca en", "expires": "Caduca en",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "IP pública", "public_ip": "IP pública",
"region": "Región", "region": "Región",
"country": "País", "country": "País"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Canales", "channels": "Canales",
@@ -705,10 +692,6 @@
"processed": "Procesado", "processed": "Procesado",
"time": "Tiempo" "time": "Tiempo"
}, },
"firefly": {
"networth": "Patrimonio neto",
"budget": "Presupuesto"
},
"grafana": { "grafana": {
"dashboards": "Tableros", "dashboards": "Tableros",
"datasources": "Fuentes de datos", "datasources": "Fuentes de datos",
@@ -857,8 +840,7 @@
"physicalRelease": "Lanzamiento en físico", "physicalRelease": "Lanzamiento en físico",
"digitalRelease": "Lanzamiento en digital", "digitalRelease": "Lanzamiento en digital",
"noEventsToday": "¡Sin eventos para hoy!", "noEventsToday": "¡Sin eventos para hoy!",
"noEventsFound": "No se encontraron eventos", "noEventsFound": "No se encontraron eventos"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Plataformas", "platforms": "Plataformas",
@@ -887,8 +869,7 @@
"gitea": { "gitea": {
"notifications": "Notificaciones", "notifications": "Notificaciones",
"issues": "Números", "issues": "Números",
"pulls": "Solicitudes de cambios", "pulls": "Solicitudes de cambios"
"repositories": "Repositorios"
}, },
"stash": { "stash": {
"scenes": "Escenas", "scenes": "Escenas",
@@ -972,87 +953,5 @@
"reminders": "Recordatorios", "reminders": "Recordatorios",
"nextReminder": "Siguiente recordatorio", "nextReminder": "Siguiente recordatorio",
"none": "Nada" "none": "Nada"
},
"vikunja": {
"projects": "Proyectos activos",
"tasks7d": "Tareas que vencen esta semana",
"tasksOverdue": "Tareas vencidas",
"tasksInProgress": "Tareas en progreso"
},
"headscale": {
"name": "Nombre",
"address": "Dirección",
"last_seen": "Visto por última vez",
"status": "Estado",
"online": "En línea",
"offline": "Desconectado"
},
"beszel": {
"name": "Nombre",
"systems": "Sistemas",
"up": "Activo",
"down": "Inactivo",
"paused": "Pausado",
"pending": "Pendiente",
"status": "Estado",
"updated": "Actualizado",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disco",
"network": "RED"
},
"argocd": {
"apps": "Apps",
"synced": "Sincronizado",
"outOfSync": "Desincronizado",
"healthy": "Saludable",
"degraded": "Degradado",
"progressing": "Progresando",
"missing": "Faltantes",
"suspended": "Suspendido"
},
"spoolman": {
"loading": "Cargando"
},
"gitlab": {
"groups": "Grupos",
"issues": "Números",
"merges": "Solicitudes de fusión",
"projects": "Proyectos"
},
"apcups": {
"status": "Estado",
"load": "Carga",
"bcharge": "Carga de la batería",
"timeleft": "Tiempo restante"
},
"karakeep": {
"bookmarks": "Marcadores",
"favorites": "Favoritos",
"archived": "Archivado",
"highlights": "Destacados",
"lists": "Listas",
"tags": "Etiquetas"
},
"slskd": {
"slskStatus": "Red",
"connected": "Conectado",
"disconnected": "Desconectado",
"updateStatus": "Actualización",
"update_yes": "Disponible",
"update_no": "Actualizado",
"downloads": "Descargas",
"uploads": "Subidas",
"sharedFiles": "Archivos"
},
"jellystat": {
"songs": "Canciones",
"movies": "Películas",
"episodes": "Episodios",
"other": "Otros"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "mo", "months": "mo",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
@@ -85,16 +85,16 @@
"ping": { "ping": {
"error": "Error", "error": "Error",
"ping": "Ping", "ping": "Ping",
"down": "Behera", "down": "Down",
"up": "Gora", "up": "Up",
"not_available": "Not Available" "not_available": "Not Available"
}, },
"siteMonitor": { "siteMonitor": {
"http_status": "HTTP status", "http_status": "HTTP status",
"error": "Error", "error": "Error",
"response": "Erantzuna", "response": "Response",
"down": "Behera", "down": "Down",
"up": "Gora", "up": "Up",
"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": "Filmak", "movies": "Movies",
"series": "Serieak", "series": "Series",
"episodes": "Episodes", "episodes": "Episodes",
"songs": "Abestiak" "songs": "Abestiak"
}, },
@@ -115,42 +115,40 @@
"unknown": "Ezezaguna" "unknown": "Ezezaguna"
}, },
"evcc": { "evcc": {
"pv_power": "Produkzioak", "pv_power": "Production",
"battery_soc": "Bateria", "battery_soc": "Battery",
"grid_power": "Sarea", "grid_power": "Grid",
"home_power": "Kontsumoa", "home_power": "Consumption",
"charge_power": "Kargagailua", "charge_power": "Charger",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Jeitsierak", "download": "Download",
"upload": "Kargatu", "upload": "Upload",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"freshrss": { "freshrss": {
"subscriptions": "Harpidetzak", "subscriptions": "Subscriptions",
"unread": "Irakurri gabe" "unread": "Unread"
}, },
"fritzbox": { "fritzbox": {
"connectionStatus": "Status", "connectionStatus": "Status",
"connectionStatusUnconfigured": "Unconfigured", "connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Konektatzen", "connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating", "connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect", "connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting", "connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Deskonektatuta", "connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Konektatuta", "connectionStatusConnected": "Connected",
"uptime": "Uptime", "uptime": "Uptime",
"maxDown": "Max. Down", "maxDown": "Max. Down",
"maxUp": "Max. Up", "maxUp": "Max. Up",
"down": "Behera", "down": "Down",
"up": "Gora", "up": "Up",
"received": "Received", "received": "Received",
"sent": "Bidalita", "sent": "Sent",
"externalIPAddress": "Ext. IP", "externalIPAddress": "Ext. IP"
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",
@@ -178,7 +176,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateways": "Connected gateways", "connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@@ -189,7 +187,7 @@
"plex": { "plex": {
"streams": "Active Streams", "streams": "Active Streams",
"albums": "Albums", "albums": "Albums",
"movies": "Filmak", "movies": "Movies",
"tv": "TV Shows" "tv": "TV Shows"
}, },
"sabnzbd": { "sabnzbd": {
@@ -199,18 +197,18 @@
}, },
"rutorrent": { "rutorrent": {
"active": "Active", "active": "Active",
"upload": "Kargatu", "upload": "Upload",
"download": "Jeitsierak" "download": "Download"
}, },
"transmission": { "transmission": {
"download": "Jeitsierak", "download": "Download",
"upload": "Kargatu", "upload": "Upload",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"qbittorrent": { "qbittorrent": {
"download": "Jeitsierak", "download": "Download",
"upload": "Kargatu", "upload": "Upload",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
@@ -223,8 +221,8 @@
"invalid": "Invalid" "invalid": "Invalid"
}, },
"deluge": { "deluge": {
"download": "Jeitsierak", "download": "Download",
"upload": "Kargatu", "upload": "Upload",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
@@ -233,15 +231,15 @@
"cachemissbytes": "Cache Miss Bytes" "cachemissbytes": "Cache Miss Bytes"
}, },
"downloadstation": { "downloadstation": {
"download": "Jeitsierak", "download": "Download",
"upload": "Kargatu", "upload": "Upload",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"sonarr": { "sonarr": {
"wanted": "Wanted", "wanted": "Wanted",
"queued": "Queued", "queued": "Queued",
"series": "Serieak", "series": "Series",
"queue": "Queue", "queue": "Queue",
"unknown": "Ezezaguna" "unknown": "Ezezaguna"
}, },
@@ -249,7 +247,7 @@
"wanted": "Wanted", "wanted": "Wanted",
"missing": "Missing", "missing": "Missing",
"queued": "Queued", "queued": "Queued",
"movies": "Filmak", "movies": "Movies",
"queue": "Queue", "queue": "Queue",
"unknown": "Ezezaguna" "unknown": "Ezezaguna"
}, },
@@ -285,7 +283,7 @@
}, },
"netalertx": { "netalertx": {
"total": "Guztira", "total": "Guztira",
"connected": "Konektatuta", "connected": "Connected",
"new_devices": "New Devices", "new_devices": "New Devices",
"down_alerts": "Down Alerts" "down_alerts": "Down Alerts"
}, },
@@ -302,8 +300,8 @@
"latency": "Latency" "latency": "Latency"
}, },
"speedtest": { "speedtest": {
"upload": "Kargatu", "upload": "Upload",
"download": "Jeitsierak", "download": "Download",
"ping": "Ping" "ping": "Ping"
}, },
"portainer": { "portainer": {
@@ -311,16 +309,6 @@
"stopped": "Stopped", "stopped": "Stopped",
"total": "Guztira" "total": "Guztira"
}, },
"suwayomi": {
"download": "Downloaded",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Irakurri gabe",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": { "tailscale": {
"address": "Address", "address": "Address",
"expires": "Expires", "expires": "Expires",
@@ -405,7 +393,7 @@
"medusa": { "medusa": {
"wanted": "Wanted", "wanted": "Wanted",
"queued": "Queued", "queued": "Queued",
"series": "Serieak" "series": "Series"
}, },
"minecraft": { "minecraft": {
"players": "Jokalariak", "players": "Jokalariak",
@@ -416,7 +404,7 @@
}, },
"miniflux": { "miniflux": {
"read": "Read", "read": "Read",
"unread": "Irakurri gabe" "unread": "Unread"
}, },
"authentik": { "authentik": {
"users": "Users", "users": "Users",
@@ -523,15 +511,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": "Gora", "up": "Up",
"pending": "Pending", "pending": "Pending",
"down": "Behera" "down": "Down"
}, },
"healthchecks": { "healthchecks": {
"new": "New", "new": "New",
"up": "Gora", "up": "Up",
"grace": "In Grace Period", "grace": "In Grace Period",
"down": "Behera", "down": "Down",
"paused": "Paused", "paused": "Paused",
"status": "Status", "status": "Status",
"last_ping": "Last Ping", "last_ping": "Last Ping",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Public IP",
"region": "Region", "region": "Region",
"country": "Country", "country": "Country"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "Channels",
@@ -647,8 +634,8 @@
"load": "Load Avg", "load": "Load Avg",
"memory": "Mem Usage", "memory": "Mem Usage",
"wanStatus": "WAN Status", "wanStatus": "WAN Status",
"up": "Gora", "up": "Up",
"down": "Behera", "down": "Down",
"temp": "Temp", "temp": "Temp",
"disk": "Disk Usage", "disk": "Disk Usage",
"wanIP": "WAN IP" "wanIP": "WAN IP"
@@ -661,7 +648,7 @@
}, },
"immich": { "immich": {
"users": "Users", "users": "Users",
"photos": "Argazkiak", "photos": "Photos",
"videos": "Videos", "videos": "Videos",
"storage": "Storage" "storage": "Storage"
}, },
@@ -673,14 +660,14 @@
"m": "m" "m": "m"
}, },
"atsumeru": { "atsumeru": {
"series": "Serieak", "series": "Series",
"archives": "Archives", "archives": "Archives",
"chapters": "Chapters", "chapters": "Chapters",
"categories": "Categories" "categories": "Categories"
}, },
"komga": { "komga": {
"libraries": "Libraries", "libraries": "Libraries",
"series": "Serieak", "series": "Series",
"books": "Books" "books": "Books"
}, },
"diskstation": { "diskstation": {
@@ -689,13 +676,13 @@
"volumeAvailable": "Available" "volumeAvailable": "Available"
}, },
"mylar": { "mylar": {
"series": "Serieak", "series": "Series",
"issues": "Arazoak", "issues": "Issues",
"wanted": "Wanted" "wanted": "Wanted"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Albums",
"photos": "Argazkiak", "photos": "Photos",
"videos": "Videos", "videos": "Videos",
"people": "People" "people": "People"
}, },
@@ -705,10 +692,6 @@
"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",
@@ -773,7 +756,7 @@
"books": "Books", "books": "Books",
"authors": "Authors", "authors": "Authors",
"categories": "Categories", "categories": "Categories",
"series": "Serieak" "series": "Series"
}, },
"jdownloader": { "jdownloader": {
"downloadCount": "Queue", "downloadCount": "Queue",
@@ -782,7 +765,7 @@
"downloadSpeed": "Speed" "downloadSpeed": "Speed"
}, },
"kavita": { "kavita": {
"seriesCount": "Serieak", "seriesCount": "Series",
"totalFiles": "Files" "totalFiles": "Files"
}, },
"azuredevops": { "azuredevops": {
@@ -802,8 +785,8 @@
"status": "Status", "status": "Status",
"online": "Online", "online": "Online",
"offline": "Offline", "offline": "Offline",
"name": "Izena", "name": "Name",
"map": "Mapa", "map": "Map",
"currentPlayers": "Current players", "currentPlayers": "Current players",
"players": "Jokalariak", "players": "Jokalariak",
"maxPlayers": "Max players", "maxPlayers": "Max players",
@@ -820,10 +803,10 @@
"recipes": "Recipes", "recipes": "Recipes",
"users": "Users", "users": "Users",
"categories": "Categories", "categories": "Categories",
"tags": "Etiketak" "tags": "Tags"
}, },
"openmediavault": { "openmediavault": {
"downloading": "Deskargatzen", "downloading": "Downloading",
"total": "Guztira", "total": "Guztira",
"running": "Running", "running": "Running",
"stopped": "Stopped", "stopped": "Stopped",
@@ -833,8 +816,8 @@
"openwrt": { "openwrt": {
"uptime": "Uptime", "uptime": "Uptime",
"cpuLoad": "CPU Load Avg (5m)", "cpuLoad": "CPU Load Avg (5m)",
"up": "Gora", "up": "Up",
"down": "Behera", "down": "Down",
"bytesTx": "Transmitted", "bytesTx": "Transmitted",
"bytesRx": "Received" "bytesRx": "Received"
}, },
@@ -847,9 +830,9 @@
"sitesDown": "Sites Down", "sitesDown": "Sites Down",
"paused": "Paused", "paused": "Paused",
"notyetchecked": "Not Yet Checked", "notyetchecked": "Not Yet Checked",
"up": "Gora", "up": "Up",
"seemsdown": "Seems Down", "seemsdown": "Seems Down",
"down": "Behera", "down": "Down",
"unknown": "Ezezaguna" "unknown": "Ezezaguna"
}, },
"calendar": { "calendar": {
@@ -857,8 +840,7 @@
"physicalRelease": "Physical release", "physicalRelease": "Physical release",
"digitalRelease": "Digital release", "digitalRelease": "Digital release",
"noEventsToday": "No events for today!", "noEventsToday": "No events for today!",
"noEventsFound": "Ez da gertaerarik aurkitu.", "noEventsFound": "No events found"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Platforms", "platforms": "Platforms",
@@ -870,7 +852,7 @@
}, },
"mailcow": { "mailcow": {
"domains": "Domains", "domains": "Domains",
"mailboxes": "Gutunontziak", "mailboxes": "Mailboxes",
"mails": "Mails", "mails": "Mails",
"storage": "Storage" "storage": "Storage"
}, },
@@ -879,16 +861,15 @@
"criticals": "Criticals" "criticals": "Criticals"
}, },
"plantit": { "plantit": {
"events": "Ekitaldiak", "events": "Events",
"plants": "Landareak", "plants": "Plants",
"photos": "Argazkiak", "photos": "Photos",
"species": "Species" "species": "Species"
}, },
"gitea": { "gitea": {
"notifications": "Jakinarazpenak", "notifications": "Notifications",
"issues": "Arazoak", "issues": "Issues",
"pulls": "Pull Requests", "pulls": "Pull Requests"
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@@ -897,34 +878,34 @@
"playDuration": "Time Watched", "playDuration": "Time Watched",
"sceneSize": "Scenes Size", "sceneSize": "Scenes Size",
"sceneDuration": "Scenes Duration", "sceneDuration": "Scenes Duration",
"images": "Irudia", "images": "Images",
"imageSize": "Irudiaren tamaina", "imageSize": "Images Size",
"galleries": "Galleries", "galleries": "Galleries",
"performers": "Performers", "performers": "Performers",
"studios": "Studios", "studios": "Studios",
"movies": "Filmak", "movies": "Movies",
"tags": "Etiketak", "tags": "Tags",
"oCount": "O Count" "oCount": "O Count"
}, },
"tandoor": { "tandoor": {
"users": "Users", "users": "Users",
"recipes": "Recipes", "recipes": "Recipes",
"keywords": "Hitz gakoak" "keywords": "Keywords"
}, },
"homebox": { "homebox": {
"items": "Elementuak", "items": "Items",
"totalWithWarranty": "With Warranty", "totalWithWarranty": "With Warranty",
"locations": "Locations", "locations": "Locations",
"labels": "Etiketak", "labels": "Labels",
"users": "Users", "users": "Users",
"totalValue": "Guztira" "totalValue": "Total Value"
}, },
"crowdsec": { "crowdsec": {
"alerts": "Alerts", "alerts": "Alerts",
"bans": "Bans" "bans": "Bans"
}, },
"wgeasy": { "wgeasy": {
"connected": "Konektatuta", "connected": "Connected",
"enabled": "Enabled", "enabled": "Enabled",
"disabled": "Disabled", "disabled": "Disabled",
"total": "Guztira" "total": "Guztira"
@@ -937,8 +918,8 @@
}, },
"myspeed": { "myspeed": {
"ping": "Ping", "ping": "Ping",
"download": "Jeitsierak", "download": "Download",
"upload": "Kargatu" "upload": "Upload"
}, },
"stocks": { "stocks": {
"stocks": "Stocks", "stocks": "Stocks",
@@ -954,105 +935,23 @@
}, },
"linkwarden": { "linkwarden": {
"links": "Links", "links": "Links",
"collections": "Bildumak", "collections": "Collections",
"tags": "Etiketak" "tags": "Tags"
}, },
"zabbix": { "zabbix": {
"unclassified": "Not classified", "unclassified": "Not classified",
"information": "Informazioa", "information": "Informazioa",
"warning": "Abisua", "warning": "Warning",
"average": "Batez besteko", "average": "Average",
"high": "Altua", "high": "High",
"disaster": "Disaster" "disaster": "Disaster"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Vehicle", "vehicle": "Vehicle",
"vehicles": "Ibilgailuak", "vehicles": "Vehicles",
"serviceRecords": "Service Records", "serviceRecords": "Service Records",
"reminders": "Oroigarriak", "reminders": "Reminders",
"nextReminder": "Hurrengo abisua", "nextReminder": "Next Reminder",
"none": "None" "none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Izena",
"address": "Address",
"last_seen": "Last Seen",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Izena",
"systems": "Systems",
"up": "Gora",
"down": "Behera",
"paused": "Paused",
"pending": "Pending",
"status": "Status",
"updated": "Updated",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Aplikazioak",
"synced": "Sinkronizatuta",
"outOfSync": "Out Of Sync",
"healthy": "Osasuntsu",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Etenda"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Taldeak",
"issues": "Arazoak",
"merges": "Merge Requests",
"projects": "Proiektuak"
},
"apcups": {
"status": "Status",
"load": "Load",
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"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"
},
"jellystat": {
"songs": "Abestiak",
"movies": "Filmak",
"episodes": "Episodes",
"other": "Other"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "mo", "months": "mo",
"days": "d", "days": "d",
"hours": "h", "hours": "h",
@@ -120,7 +120,7 @@
"grid_power": "Grid", "grid_power": "Grid",
"home_power": "Consumption", "home_power": "Consumption",
"charge_power": "Charger", "charge_power": "Charger",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Download", "download": "Download",
@@ -148,9 +148,7 @@
"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",
@@ -178,7 +176,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateways": "Connected gateways", "connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@@ -311,16 +309,6 @@
"stopped": "Pysäytetty", "stopped": "Pysäytetty",
"total": "Yhteensä" "total": "Yhteensä"
}, },
"suwayomi": {
"download": "Ladattu",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Unread",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": { "tailscale": {
"address": "Address", "address": "Address",
"expires": "Expires", "expires": "Expires",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Public IP",
"region": "Region", "region": "Region",
"country": "Country", "country": "Country"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "Channels",
@@ -705,10 +692,6 @@
"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",
@@ -857,8 +840,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": "No events found"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Platforms", "platforms": "Platforms",
@@ -887,8 +869,7 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests", "pulls": "Pull Requests"
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@@ -972,87 +953,5 @@
"reminders": "Reminders", "reminders": "Reminders",
"nextReminder": "Next Reminder", "nextReminder": "Next Reminder",
"none": "None" "none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Address",
"last_seen": "Last Seen",
"status": "Tila",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "Vireillä",
"status": "Tila",
"updated": "Updated",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Healthy",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Tila",
"load": "Kuorma",
"bcharge": "Battery Charge",
"timeleft": "Aikaa jäljellä"
},
"karakeep": {
"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"
},
"jellystat": {
"songs": "Songs",
"movies": "Movies",
"episodes": "Episodes",
"other": "Other"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "mo", "months": "mo",
"days": "j", "days": "j",
"hours": "h", "hours": "h",
@@ -57,14 +57,14 @@
"lan": "LAN", "lan": "LAN",
"wlan": "WLAN", "wlan": "WLAN",
"devices": "Équipt.", "devices": "Équipt.",
"lan_devices": "Périphériques LAN", "lan_devices": "Équipt. LAN",
"wlan_devices": "Périphériques WLAN", "wlan_devices": "Équipt. 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 du sous-système inconnu" "empty_data": "Statut sous-système inconnu"
}, },
"docker": { "docker": {
"rx": "Rx", "rx": "Rx",
@@ -77,14 +77,14 @@
"unknown": "Inconnu", "unknown": "Inconnu",
"healthy": "Fonctionnel", "healthy": "Fonctionnel",
"starting": "Démarrage", "starting": "Démarrage",
"unhealthy": "Mauvaise santé", "unhealthy": "Dysfonctionnement",
"not_found": "Introuvable", "not_found": "Inconnu",
"exited": "Arrêté", "exited": "Arrêté",
"partial": "Partiel" "partial": "Partiel"
}, },
"ping": { "ping": {
"error": "Erreur", "error": "Erreur",
"ping": "Latence", "ping": "Ping",
"down": "Down", "down": "Down",
"up": "Up", "up": "Up",
"not_available": "Non disponible" "not_available": "Non disponible"
@@ -103,9 +103,9 @@
"bitrate": "Débit", "bitrate": "Débit",
"no_active": "Aucun flux actif", "no_active": "Aucun flux actif",
"movies": "Films", "movies": "Films",
"series": "Séries", "series": "Séries TV",
"episodes": "Épisodes", "episodes": "Épisodes",
"songs": "Chansons" "songs": "Musique"
}, },
"esphome": { "esphome": {
"offline": "Hors ligne", "offline": "Hors ligne",
@@ -120,11 +120,11 @@
"grid_power": "Grille", "grid_power": "Grille",
"home_power": "Consommation", "home_power": "Consommation",
"charge_power": "Chargeur", "charge_power": "Chargeur",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Récep.", "download": "Récep.",
"upload": "Téléverser", "upload": "Envoi",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
@@ -142,27 +142,25 @@
"connectionStatusDisconnected": "Déconnecté", "connectionStatusDisconnected": "Déconnecté",
"connectionStatusConnected": "Connecté", "connectionStatusConnected": "Connecté",
"uptime": "Démarré depuis", "uptime": "Démarré depuis",
"maxDown": "Max. Down", "maxDown": "Max. Bas",
"maxUp": "Max. Up", "maxUp": "Max. Haut",
"down": "Down", "down": "Down",
"up": "Up", "up": "Up",
"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": "En amont", "upstreams": "Upstreams",
"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": "Différences détectées" "diffsDetected": "Diffs détectées"
}, },
"channelsdvrserver": { "channelsdvrserver": {
"shows": "Séries", "shows": "Affichages",
"recordings": "Enregistrements", "recordings": "Enregistrements",
"scheduled": "Planifié", "scheduled": "Planifié",
"passes": "Passes" "passes": "Passes"
@@ -176,10 +174,10 @@
}, },
"omada": { "omada": {
"connectedAp": "AP connectés", "connectedAp": "AP connectés",
"activeUser": "Périphériques actifs", "activeUser": "Équipts actifs",
"alerts": "Alertes", "alerts": "Alertes",
"connectedGateways": "Passerelles connectées", "connectedGateway": "Passerelles connectées",
"connectedSwitches": "Switchs connectés" "connectedSwitches": "Switches connectés"
}, },
"nzbget": { "nzbget": {
"rate": "Débit", "rate": "Débit",
@@ -190,7 +188,7 @@
"streams": "Flux actif", "streams": "Flux actif",
"albums": "Albums", "albums": "Albums",
"movies": "Films", "movies": "Films",
"tv": "Séries" "tv": "Séries TV"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Débit", "rate": "Débit",
@@ -199,68 +197,68 @@
}, },
"rutorrent": { "rutorrent": {
"active": "Actif", "active": "Actif",
"upload": "Téléverser", "upload": "Envoi",
"download": "Récep." "download": "Récep."
}, },
"transmission": { "transmission": {
"download": "Récep.", "download": "Récep.",
"upload": "Téléverser", "upload": "Envoi",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"qbittorrent": { "qbittorrent": {
"download": "Récep.", "download": "Récep.",
"upload": "Téléverser", "upload": "Envoi",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"qnap": { "qnap": {
"cpuUsage": "Processeur utilisé", "cpuUsage": "Cpu",
"memUsage": "Mémoire utilisée", "memUsage": "Mém",
"systemTempC": "Température système", "systemTempC": "Temp",
"poolUsage": "Utilisation de la pool", "poolUsage": "Pool",
"volumeUsage": "Utilisation du volume", "volumeUsage": "Volume",
"invalid": "Invalide" "invalid": "Invalide"
}, },
"deluge": { "deluge": {
"download": "Récep.", "download": "Récep.",
"upload": "Téléverser", "upload": "Envoi",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"develancacheui": { "develancacheui": {
"cachehitbytes": "Octets de la mémoire cache", "cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Octets manquants du cache" "cachemissbytes": "Cache Miss Bytes"
}, },
"downloadstation": { "downloadstation": {
"download": "Récep.", "download": "Récep.",
"upload": "Téléverser", "upload": "Envoi",
"leech": "Leech", "leech": "Leech",
"seed": "Seed" "seed": "Seed"
}, },
"sonarr": { "sonarr": {
"wanted": "Demandé", "wanted": "Demande",
"queued": "En file d'attente", "queued": "Attente",
"series": "Séries", "series": "Séries TV",
"queue": "En attente", "queue": "En attente",
"unknown": "Inconnu" "unknown": "Inconnu"
}, },
"radarr": { "radarr": {
"wanted": "Demandé", "wanted": "Demande",
"missing": "Manquant", "missing": "Manquant",
"queued": "En file d'attente", "queued": "Attente",
"movies": "Films", "movies": "Films",
"queue": "En attente", "queue": "En attente",
"unknown": "Inconnu" "unknown": "Inconnu"
}, },
"lidarr": { "lidarr": {
"wanted": "Demandé", "wanted": "Demande",
"queued": "En file d'attente", "queued": "Attente",
"artists": "Artistes" "artists": "Artistes"
}, },
"readarr": { "readarr": {
"wanted": "Demandé", "wanted": "Demande",
"queued": "En file d'attente", "queued": "Attente",
"books": "Livres" "books": "Livres"
}, },
"bazarr": { "bazarr": {
@@ -269,18 +267,18 @@
}, },
"ombi": { "ombi": {
"pending": "En attente", "pending": "En attente",
"approved": "Approuvé", "approved": "Validé",
"available": "Disponible" "available": "Disponible"
}, },
"jellyseerr": { "jellyseerr": {
"pending": "En attente", "pending": "En attente",
"approved": "Approuvé", "approved": "Validé",
"available": "Disponible" "available": "Disponible"
}, },
"overseerr": { "overseerr": {
"pending": "En attente", "pending": "En attente",
"processing": "En cours de traitement", "processing": "Traitement",
"approved": "Approuvé", "approved": "Validé",
"available": "Disponible" "available": "Disponible"
}, },
"netalertx": { "netalertx": {
@@ -292,7 +290,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": {
@@ -302,25 +300,15 @@
"latency": "Latence" "latency": "Latence"
}, },
"speedtest": { "speedtest": {
"upload": "Téléverser", "upload": "Envoi",
"download": "Récep.", "download": "Récep.",
"ping": "Latence" "ping": "Ping"
}, },
"portainer": { "portainer": {
"running": "Démarré", "running": "Démarré",
"stopped": "Arrêté", "stopped": "Arrêté",
"total": "Total" "total": "Total"
}, },
"suwayomi": {
"download": "Téléchargé",
"nondownload": "Non téléchargé",
"read": "Lu",
"unread": "Non lu",
"downloadedread": "Téléchargé et lu",
"downloadedunread": "Téléchargé et non lu",
"nondownloadedread": "Non téléchargé et lu",
"nondownloadedunread": "Non téléchargé et non lu"
},
"tailscale": { "tailscale": {
"address": "Adresse", "address": "Adresse",
"expires": "Expire", "expires": "Expire",
@@ -337,22 +325,22 @@
}, },
"technitium": { "technitium": {
"totalQueries": "Requêtes", "totalQueries": "Requêtes",
"totalNoError": "Succès", "totalNoError": "Success",
"totalServerFailure": "Échecs", "totalServerFailure": "Failures",
"totalNxDomain": "Domaines NX", "totalNxDomain": "NX Domains",
"totalRefused": "Refusés", "totalRefused": "Refused",
"totalAuthoritative": "Autoritaire", "totalAuthoritative": "Authoritative",
"totalRecursive": "Récursif", "totalRecursive": "Recursive",
"totalCached": "Mis en cache", "totalCached": "Cached",
"totalBlocked": "Bloqué", "totalBlocked": "Bloqué",
"totalDropped": "Abandonné", "totalDropped": "Dropped",
"totalClients": "Clients" "totalClients": "Clients"
}, },
"tdarr": { "tdarr": {
"queue": "En attente", "queue": "En attente",
"processed": "Traité", "processed": "Traité",
"errored": "Erroné", "errored": "En erreur",
"saved": "Enregistré" "saved": "Libéré"
}, },
"traefik": { "traefik": {
"routers": "Routeurs", "routers": "Routeurs",
@@ -376,36 +364,36 @@
"30days": "30 Jours" "30days": "30 Jours"
}, },
"gotify": { "gotify": {
"apps": "Applications", "apps": "Applis",
"clients": "Clients", "clients": "Clients",
"messages": "Messages" "messages": "Msg"
}, },
"prowlarr": { "prowlarr": {
"enableIndexers": "Indexeur", "enableIndexers": "Indexeur",
"numberOfGrabs": "Captures", "numberOfGrabs": "Capture",
"numberOfQueries": "Requêtes", "numberOfQueries": "Requêtes",
"numberOfFailGrabs": "Captures échouées", "numberOfFailGrabs": "Capt. échouée",
"numberOfFailQueries": "Demandes échouées" "numberOfFailQueries": "Dem. échouée"
}, },
"jackett": { "jackett": {
"configured": "Configuré", "configured": "Configuré",
"errored": "Erroné" "errored": "En erreur"
}, },
"strelaysrv": { "strelaysrv": {
"numActiveSessions": "Sessions", "numActiveSessions": "Sessions",
"numConnections": "Connexions", "numConnections": "Cnx",
"dataRelayed": "Relayé", "dataRelayed": "Relayé",
"transferRate": "Débit" "transferRate": "Débit"
}, },
"mastodon": { "mastodon": {
"user_count": "Utilisateurs", "user_count": "Utilisateurs",
"status_count": "Articles", "status_count": "Messages",
"domain_count": "Domaines" "domain_count": "Domaines"
}, },
"medusa": { "medusa": {
"wanted": "Demandé", "wanted": "Demande",
"queued": "En file d'attente", "queued": "Attente",
"series": "Séries" "series": "Séries TV"
}, },
"minecraft": { "minecraft": {
"players": "Joueurs", "players": "Joueurs",
@@ -420,13 +408,13 @@
}, },
"authentik": { "authentik": {
"users": "Utilisateurs", "users": "Utilisateurs",
"loginsLast24H": "Connexions (24 h)", "loginsLast24H": "Cnx. (24h)",
"failedLoginsLast24H": "Connexions échouées (24 h)" "failedLoginsLast24H": "Cnx. échouées (24h)"
}, },
"proxmox": { "proxmox": {
"mem": "MÉM", "mem": "MÉM",
"cpu": "CPU", "cpu": "CPU",
"lxc": "LXC", "lxc": "LxC",
"vms": "VMs" "vms": "VMs"
}, },
"glances": { "glances": {
@@ -434,7 +422,7 @@
"load": "Charge", "load": "Charge",
"wait": "Veuillez patienter", "wait": "Veuillez patienter",
"temp": "Temp", "temp": "Temp",
"_temp": "Température", "_temp": "T°",
"warn": "Alerte", "warn": "Alerte",
"uptime": "Up", "uptime": "Up",
"total": "Total", "total": "Total",
@@ -445,12 +433,12 @@
"crit": "Crit.", "crit": "Crit.",
"read": "Lu", "read": "Lu",
"write": "Écrit.", "write": "Écrit.",
"gpu": "Carte Graphique", "gpu": "GPU",
"mem": "Mém.", "mem": "Mém.",
"swap": "Swap" "swap": "Swap"
}, },
"quicklaunch": { "quicklaunch": {
"bookmark": "Marque-Page", "bookmark": "Signet",
"service": "Service", "service": "Service",
"search": "Recherche", "search": "Recherche",
"custom": "Personnalisé", "custom": "Personnalisé",
@@ -460,13 +448,13 @@
}, },
"wmo": { "wmo": {
"0-day": "Ensoleillé", "0-day": "Ensoleillé",
"0-night": "Clair", "0-night": "Ciel clair",
"1-day": "Principalement ensoleillé", "1-day": "Principalement ensoleillé",
"1-night": "Principalement clair", "1-night": "Principalement clair",
"2-day": "Partiellement nuageux", "2-day": "Partiellement couvert",
"2-night": "Partiellement nuageux", "2-night": "Partiellement couvert",
"3-day": "Nuageux", "3-day": "Couvert",
"3-night": "Nuageux", "3-night": "Couvert",
"45-day": "Brumeux", "45-day": "Brumeux",
"45-night": "Brumeux", "45-night": "Brumeux",
"48-day": "Brumeux", "48-day": "Brumeux",
@@ -485,14 +473,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": "Forte pluie", "65-day": "Pluie forte",
"65-night": "Forte pluie", "65-night": "Pluie forte",
"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": "Légères chutes de neige", "71-day": "Neige légère",
"71-night": "Légères chutes de neige", "71-night": "Neige légère",
"73-day": "Neige", "73-day": "Neige",
"73-night": "Neige", "73-night": "Neige",
"75-day": "Neige abondante", "75-day": "Neige abondante",
@@ -543,7 +531,7 @@
"containers_failed": "Échoué" "containers_failed": "Échoué"
}, },
"autobrr": { "autobrr": {
"approvedPushes": "Approuvé", "approvedPushes": "Validé",
"rejectedPushes": "Rejeté", "rejectedPushes": "Rejeté",
"filters": "Filtres", "filters": "Filtres",
"indexers": "Indexeur" "indexers": "Indexeur"
@@ -552,7 +540,7 @@
"downloads": "En attente", "downloads": "En attente",
"videos": "Vidéos", "videos": "Vidéos",
"channels": "Chaînes", "channels": "Chaînes",
"playlists": "Listes de lecture" "playlists": "Playlists"
}, },
"truenas": { "truenas": {
"load": "Charge Système", "load": "Charge Système",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "IP publique", "public_ip": "IP publique",
"region": "Région", "region": "Région",
"country": "Pays", "country": "Pays"
"port_forwarded": "Port Transféré"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Chaînes", "channels": "Chaînes",
@@ -593,9 +580,9 @@
"total": "Total" "total": "Total"
}, },
"peanut": { "peanut": {
"battery_charge": "Charge de la batterie", "battery_charge": "Charge Batterie",
"ups_load": "Charge de lASI", "ups_load": "Charge de l'UPS",
"ups_status": "État de lASI", "ups_status": "État de l'UPS",
"online": "En ligne", "online": "En ligne",
"on_battery": "Sur Batterie", "on_battery": "Sur Batterie",
"low_battery": "Batterie Faible" "low_battery": "Batterie Faible"
@@ -605,8 +592,8 @@
"no_devices": "Aucune donnée d'appareil reçue" "no_devices": "Aucune donnée d'appareil reçue"
}, },
"mikrotik": { "mikrotik": {
"cpuLoad": "Charge du processeur", "cpuLoad": "Charge CPU",
"memoryUsed": "Mémoire utilisée", "memoryUsed": "Mém. Utilisée",
"uptime": "Démarré depuis", "uptime": "Démarré depuis",
"numberOfLeases": "Baux" "numberOfLeases": "Baux"
}, },
@@ -618,25 +605,25 @@
"opendtu": { "opendtu": {
"yieldDay": "Aujourd'hui", "yieldDay": "Aujourd'hui",
"absolutePower": "Puissance", "absolutePower": "Puissance",
"relativePower": "% de puissance", "relativePower": "Puissance %",
"limit": "Limite" "limit": "Limite"
}, },
"opnsense": { "opnsense": {
"cpu": "Charge du processeur", "cpu": "Charge CPU",
"memory": "Mémoire utilisée", "memory": "Mém. utilisée",
"wanUpload": "WAN Envoi", "wanUpload": "WAN Envoi",
"wanDownload": "WAN Récep." "wanDownload": "WAN Récep."
}, },
"moonraker": { "moonraker": {
"printer_state": "État de l'imprimante", "printer_state": "État Imprimante",
"print_status": "Statut de l'imprimante", "print_status": "Statut Imprimante",
"print_progress": "Progression", "print_progress": "Progression",
"layers": "Couches" "layers": "Couches"
}, },
"octoprint": { "octoprint": {
"printer_state": "Statut", "printer_state": "Statut",
"temp_tool": "Temp. de l'outil", "temp_tool": "Tool T°",
"temp_bed": "Temp. du lit", "temp_bed": "Bed T°",
"job_completion": "Achèvement" "job_completion": "Achèvement"
}, },
"cloudflared": { "cloudflared": {
@@ -649,7 +636,7 @@
"wanStatus": "Statut WAN", "wanStatus": "Statut WAN",
"up": "Up", "up": "Up",
"down": "Down", "down": "Down",
"temp": "Température", "temp": "T°",
"disk": "Util. Disque", "disk": "Util. Disque",
"wanIP": "IP WAN" "wanIP": "IP WAN"
}, },
@@ -673,14 +660,14 @@
"m": "m" "m": "m"
}, },
"atsumeru": { "atsumeru": {
"series": "Séries", "series": "Séries TV",
"archives": "Archives", "archives": "Archives",
"chapters": "Chapitres", "chapters": "Chapitres",
"categories": "Catégories" "categories": "Catégories"
}, },
"komga": { "komga": {
"libraries": "Bibliothèques", "libraries": "Bibliothèques",
"series": "Séries", "series": "Séries TV",
"books": "Livres" "books": "Livres"
}, },
"diskstation": { "diskstation": {
@@ -689,9 +676,9 @@
"volumeAvailable": "Disponible" "volumeAvailable": "Disponible"
}, },
"mylar": { "mylar": {
"series": "Séries", "series": "Séries TV",
"issues": "Anomalies", "issues": "Anomalies",
"wanted": "Demandé" "wanted": "Demande"
}, },
"photoprism": { "photoprism": {
"albums": "Albums", "albums": "Albums",
@@ -701,14 +688,10 @@
}, },
"fileflows": { "fileflows": {
"queue": "En attente", "queue": "En attente",
"processing": "En cours de traitement", "processing": "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",
@@ -761,9 +744,9 @@
"booksDuration": "Durée" "booksDuration": "Durée"
}, },
"homeassistant": { "homeassistant": {
"people_home": "Personne à la maison", "people_home": "People Home",
"lights_on": "Lumières allumées", "lights_on": "Lumières allumées",
"switches_on": "Interrupteurs allumés" "switches_on": "Commutateur On"
}, },
"whatsupdocker": { "whatsupdocker": {
"monitoring": "Conteneurs", "monitoring": "Conteneurs",
@@ -782,7 +765,7 @@
"downloadSpeed": "Débit" "downloadSpeed": "Débit"
}, },
"kavita": { "kavita": {
"seriesCount": "Séries", "seriesCount": "Séries TV",
"totalFiles": "Fichiers" "totalFiles": "Fichiers"
}, },
"azuredevops": { "azuredevops": {
@@ -796,7 +779,7 @@
"inProgress": "En cours", "inProgress": "En cours",
"totalPrs": "PRs Total", "totalPrs": "PRs Total",
"myPrs": "Mes PRs", "myPrs": "Mes PRs",
"approved": "Approuvé" "approved": "Validé"
}, },
"gamedig": { "gamedig": {
"status": "Statut", "status": "Statut",
@@ -807,8 +790,8 @@
"currentPlayers": "Joueurs actuels", "currentPlayers": "Joueurs actuels",
"players": "Joueurs", "players": "Joueurs",
"maxPlayers": "Joueurs max", "maxPlayers": "Joueurs max",
"bots": "Robots", "bots": "Bots",
"ping": "Latence" "ping": "Ping"
}, },
"urbackup": { "urbackup": {
"ok": "Ok", "ok": "Ok",
@@ -857,21 +840,20 @@
"physicalRelease": "Sortie physique", "physicalRelease": "Sortie physique",
"digitalRelease": "Sortie numérique", "digitalRelease": "Sortie numérique",
"noEventsToday": "Rien pour aujourd'hui !", "noEventsToday": "Rien pour aujourd'hui !",
"noEventsFound": "Aucun événement trouvé", "noEventsFound": "Aucun événement trouvé"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Plateformes", "platforms": "Plateformes",
"totalRoms": "Jeux", "totalRoms": "Games",
"saves": "Sauvegardes", "saves": "Saves",
"states": "États", "states": "States",
"screenshots": "Captures d'écran", "screenshots": "Screenshots",
"totalfilesize": "Taille totale" "totalfilesize": "Total Size"
}, },
"mailcow": { "mailcow": {
"domains": "Domaines", "domains": "Domaines",
"mailboxes": "Boites mail", "mailboxes": "Mailboxes",
"mails": "Courriels", "mails": "Mails",
"storage": "Stockage" "storage": "Stockage"
}, },
"netdata": { "netdata": {
@@ -887,8 +869,7 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Anomalies", "issues": "Anomalies",
"pulls": "Demandes de tirage", "pulls": "Demandes de tirage"
"repositories": "Dépôts"
}, },
"stash": { "stash": {
"scenes": "Scènes", "scenes": "Scènes",
@@ -921,7 +902,7 @@
}, },
"crowdsec": { "crowdsec": {
"alerts": "Alertes", "alerts": "Alertes",
"bans": "Bannissements" "bans": "Exclusions"
}, },
"wgeasy": { "wgeasy": {
"connected": "Connecté", "connected": "Connecté",
@@ -936,123 +917,41 @@
"banned": "Banni" "banned": "Banni"
}, },
"myspeed": { "myspeed": {
"ping": "Latence", "ping": "Ping",
"download": "Récep.", "download": "Récep.",
"upload": "Téléverser" "upload": "Envoi"
}, },
"stocks": { "stocks": {
"stocks": "Stocks", "stocks": "Stocks",
"loading": "Chargement", "loading": "Loading",
"open": "Ouvert - Marché américain", "open": "Open - US Market",
"closed": "Fermé - marché américain", "closed": "Closed - US Market",
"invalidConfiguration": "Configuration invalide" "invalidConfiguration": "Invalid Configuration"
}, },
"frigate": { "frigate": {
"cameras": "Caméras", "cameras": "Cameras",
"uptime": "Démarré depuis", "uptime": "Démarré depuis",
"version": "Version" "version": "Version"
}, },
"linkwarden": { "linkwarden": {
"links": "Liens", "links": "Links",
"collections": "Collections", "collections": "Collections",
"tags": "Étiquettes" "tags": "Étiquettes"
}, },
"zabbix": { "zabbix": {
"unclassified": "Non classé", "unclassified": "Not classified",
"information": "Informations", "information": "Informations",
"warning": "Attention", "warning": "Warning",
"average": "Moyenne", "average": "Average",
"high": "Élevé", "high": "High",
"disaster": "" "disaster": "Disaster"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Véhicule", "vehicle": "Vehicle",
"vehicles": "Véhicules", "vehicles": "Vehicles",
"serviceRecords": "Service d'enregistrements", "serviceRecords": "Service Records",
"reminders": "Rappels", "reminders": "Reminders",
"nextReminder": "Prochain rappel", "nextReminder": "Next Reminder",
"none": "Aucun" "none": "None"
},
"vikunja": {
"projects": "Projets actifs",
"tasks7d": "Tâches à faire cette semaine",
"tasksOverdue": "Tâches en retard",
"tasksInProgress": "Tâche en cours"
},
"headscale": {
"name": "Nom",
"address": "Adresse",
"last_seen": "Vu pour la dernière fois",
"status": "Statut",
"online": "En ligne",
"offline": "Hors ligne"
},
"beszel": {
"name": "Nom",
"systems": "Systèmes",
"up": "Up",
"down": "Down",
"paused": "En Pause",
"pending": "En attente",
"status": "Statut",
"updated": "Mis à jour",
"cpu": "CPU",
"memory": "MÉM",
"disk": "Disque",
"network": "Réseau"
},
"argocd": {
"apps": "Applications",
"synced": "Synchronisé",
"outOfSync": "Désynchronisé",
"healthy": "Fonctionnel",
"degraded": "Dégradé",
"progressing": "En cours",
"missing": "Manquant",
"suspended": "Suspendu"
},
"spoolman": {
"loading": "Chargement"
},
"gitlab": {
"groups": "Groupes",
"issues": "Anomalies",
"merges": "Demandes de fusion de branches",
"projects": "Projets"
},
"apcups": {
"status": "Statut",
"load": "Charge",
"bcharge": "Charge de la batterie",
"timeleft": "Temps restant"
},
"karakeep": {
"bookmarks": "Marque-pages",
"favorites": "Favoris",
"archived": "Archivé",
"highlights": "À la une",
"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"
},
"jellystat": {
"songs": "Chansons",
"movies": "Films",
"episodes": "Épisodes",
"other": "Autres"
},
"checkmk": {
"serviceErrors": "Problèmes de service",
"hostErrors": "Problèmes d'hôte"
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{value, date}", "date": "{value, date}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "माह", "months": "माह",
"days": "d", "days": "d",
"hours": "घं.", "hours": "घं.",
@@ -120,7 +120,7 @@
"grid_power": "Grid", "grid_power": "Grid",
"home_power": "Consumption", "home_power": "Consumption",
"charge_power": "Charger", "charge_power": "Charger",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Download", "download": "Download",
@@ -148,9 +148,7 @@
"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",
@@ -178,7 +176,7 @@
"connectedAp": "Connected APs", "connectedAp": "Connected APs",
"activeUser": "Active devices", "activeUser": "Active devices",
"alerts": "Alerts", "alerts": "Alerts",
"connectedGateways": "Connected gateways", "connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches" "connectedSwitches": "Connected switches"
}, },
"nzbget": { "nzbget": {
@@ -311,16 +309,6 @@
"stopped": "Stopped", "stopped": "Stopped",
"total": "Total" "total": "Total"
}, },
"suwayomi": {
"download": "Downloaded",
"nondownload": "Non-Downloaded",
"read": "Read",
"unread": "Unread",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": { "tailscale": {
"address": "Address", "address": "Address",
"expires": "Expires", "expires": "Expires",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "Public IP", "public_ip": "Public IP",
"region": "Region", "region": "Region",
"country": "Country", "country": "Country"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channels", "channels": "Channels",
@@ -705,10 +692,6 @@
"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",
@@ -857,8 +840,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": "No events found"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Platforms", "platforms": "Platforms",
@@ -887,8 +869,7 @@
"gitea": { "gitea": {
"notifications": "Notifications", "notifications": "Notifications",
"issues": "Issues", "issues": "Issues",
"pulls": "Pull Requests", "pulls": "Pull Requests"
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",
@@ -972,87 +953,5 @@
"reminders": "Reminders", "reminders": "Reminders",
"nextReminder": "Next Reminder", "nextReminder": "Next Reminder",
"none": "None" "none": "None"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Name",
"address": "Address",
"last_seen": "Last Seen",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Name",
"systems": "Systems",
"up": "Up",
"down": "Down",
"paused": "Paused",
"pending": "Pending",
"status": "Status",
"updated": "Updated",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Healthy",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Missing",
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
},
"gitlab": {
"groups": "Groups",
"issues": "Issues",
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Status",
"load": "Load",
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"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"
},
"jellystat": {
"songs": "Songs",
"movies": "Movies",
"episodes": "Episodes",
"other": "Other"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "mj", "months": "mj",
"days": "dan(a)", "days": "dan(a)",
"hours": "h", "hours": "h",
@@ -120,7 +120,7 @@
"grid_power": "Raspored", "grid_power": "Raspored",
"home_power": "Potrošnja", "home_power": "Potrošnja",
"charge_power": "Punjač", "charge_power": "Punjač",
"kilowatt": "kW" "watt_hour": "Kilovat-sat"
}, },
"flood": { "flood": {
"download": "Preuzimanje", "download": "Preuzimanje",
@@ -148,9 +148,7 @@
"up": "Dostupno", "up": "Dostupno",
"received": "Primljeno", "received": "Primljeno",
"sent": "Poslano", "sent": "Poslano",
"externalIPAddress": "Eksterna IP adresa", "externalIPAddress": "Eksterna IP adresa"
"externalIPv6Address": "Vanjs. IPv6",
"externalIPv6Prefix": "Vanjs. IPv6 prefiks"
}, },
"caddy": { "caddy": {
"upstreams": "Glavne grane", "upstreams": "Glavne grane",
@@ -178,7 +176,7 @@
"connectedAp": "Povezani AP-ovi", "connectedAp": "Povezani AP-ovi",
"activeUser": "Aktivni uređaji", "activeUser": "Aktivni uređaji",
"alerts": "Upozorenja", "alerts": "Upozorenja",
"connectedGateways": "Povezani pristupnici", "connectedGateway": "Povezani pristupi",
"connectedSwitches": "Povezani prekidači" "connectedSwitches": "Povezani prekidači"
}, },
"nzbget": { "nzbget": {
@@ -229,8 +227,8 @@
"seed": "Prenošenje preuzetog sadržaja" "seed": "Prenošenje preuzetog sadržaja"
}, },
"develancacheui": { "develancacheui": {
"cachehitbytes": "Bajtovi pogodaka predmemorije", "cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Bajtovi promašaja predmemorije" "cachemissbytes": "Cache Miss Bytes"
}, },
"downloadstation": { "downloadstation": {
"download": "Preuzimanje", "download": "Preuzimanje",
@@ -311,16 +309,6 @@
"stopped": "Prekinuto", "stopped": "Prekinuto",
"total": "Ukupno" "total": "Ukupno"
}, },
"suwayomi": {
"download": "Preuzeto",
"nondownload": "Nepreuzeto",
"read": "Pročitano",
"unread": "Nepročitano",
"downloadedread": "Preuzeto i pročitano",
"downloadedunread": "Preuzeto i nepročitano",
"nondownloadedread": "Nepreuzeto i pročitano",
"nondownloadedunread": "Nepreuzeto i nepročitano"
},
"tailscale": { "tailscale": {
"address": "Adresa", "address": "Adresa",
"expires": "Isteče", "expires": "Isteče",
@@ -337,15 +325,15 @@
}, },
"technitium": { "technitium": {
"totalQueries": "Upiti", "totalQueries": "Upiti",
"totalNoError": "Uspješno", "totalNoError": "Success",
"totalServerFailure": "Neuspješno", "totalServerFailure": "Failures",
"totalNxDomain": "NX domene", "totalNxDomain": "NX Domains",
"totalRefused": "Odbijeno", "totalRefused": "Refused",
"totalAuthoritative": "Autoritativan", "totalAuthoritative": "Authoritative",
"totalRecursive": "Rekurzivno", "totalRecursive": "Recursive",
"totalCached": "Predmemorirano", "totalCached": "Cached",
"totalBlocked": "Blokirano", "totalBlocked": "Blokirano",
"totalDropped": "Odbačeno", "totalDropped": "Dropped",
"totalClients": "Klijenti" "totalClients": "Klijenti"
}, },
"tdarr": { "tdarr": {
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "Javni IP", "public_ip": "Javni IP",
"region": "Regija", "region": "Regija",
"country": "Zemlja", "country": "Zemlja"
"port_forwarded": "Port proslijeđen"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Kanali", "channels": "Kanali",
@@ -705,10 +692,6 @@
"processed": "Obrađeno", "processed": "Obrađeno",
"time": "Vrijeme" "time": "Vrijeme"
}, },
"firefly": {
"networth": "Neto vrijednost",
"budget": "Budžet"
},
"grafana": { "grafana": {
"dashboards": "Pregledne ploče", "dashboards": "Pregledne ploče",
"datasources": "Izvori podataka", "datasources": "Izvori podataka",
@@ -857,21 +840,20 @@
"physicalRelease": "Fizičko izdanje", "physicalRelease": "Fizičko izdanje",
"digitalRelease": "Digitalno izdanje", "digitalRelease": "Digitalno izdanje",
"noEventsToday": "Danas nema događaja!", "noEventsToday": "Danas nema događaja!",
"noEventsFound": "Nema događaja", "noEventsFound": "Nema događaja"
"errorWhenLoadingData": "Pogreška prilikom učitavanja podataka kalendara"
}, },
"romm": { "romm": {
"platforms": "Platforme", "platforms": "Platforme",
"totalRoms": "Igre", "totalRoms": "Games",
"saves": "Spremljeno", "saves": "Saves",
"states": "Stanja", "states": "States",
"screenshots": "Snimke ekrana", "screenshots": "Screenshots",
"totalfilesize": "Ukupna veličina" "totalfilesize": "Total Size"
}, },
"mailcow": { "mailcow": {
"domains": "Domene", "domains": "Domene",
"mailboxes": "Poštanski sandučići", "mailboxes": "Mailboxes",
"mails": "Pošta", "mails": "Mails",
"storage": "Spremište" "storage": "Spremište"
}, },
"netdata": { "netdata": {
@@ -887,8 +869,7 @@
"gitea": { "gitea": {
"notifications": "Obavijesti", "notifications": "Obavijesti",
"issues": "Problemi", "issues": "Problemi",
"pulls": "Zahtjevi za povlačenje", "pulls": "Zahtjevi za povlačenje"
"repositories": "Repozitoriji"
}, },
"stash": { "stash": {
"scenes": "Scene", "scenes": "Scene",
@@ -941,118 +922,36 @@
"upload": "Prijenos" "upload": "Prijenos"
}, },
"stocks": { "stocks": {
"stocks": "Dionice", "stocks": "Stocks",
"loading": "Učitavanje", "loading": "Loading",
"open": "Otvoreno - američko tržište", "open": "Open - US Market",
"closed": "Zatvoreno - američko tržište", "closed": "Closed - US Market",
"invalidConfiguration": "Nepravilna konfiguracija" "invalidConfiguration": "Invalid Configuration"
}, },
"frigate": { "frigate": {
"cameras": "Kamere", "cameras": "Cameras",
"uptime": "Vrijeme rada", "uptime": "Vrijeme rada",
"version": "Verzija" "version": "Verzija"
}, },
"linkwarden": { "linkwarden": {
"links": "Poveznice", "links": "Links",
"collections": "Zbirke", "collections": "Collections",
"tags": "Oznake" "tags": "Oznake"
}, },
"zabbix": { "zabbix": {
"unclassified": "Nije klasificirano", "unclassified": "Not classified",
"information": "Informacije", "information": "Informacije",
"warning": "Upozorenje", "warning": "Warning",
"average": "Prosjek", "average": "Average",
"high": "Visoko", "high": "High",
"disaster": "Katastrofa" "disaster": "Disaster"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Vozilo", "vehicle": "Vehicle",
"vehicles": "Vozila", "vehicles": "Vehicles",
"serviceRecords": "Servisni zapisi", "serviceRecords": "Service Records",
"reminders": "Podsjetnici", "reminders": "Reminders",
"nextReminder": "Sljedeći podsjetnik", "nextReminder": "Next Reminder",
"none": "Ništa" "none": "None"
},
"vikunja": {
"projects": "Aktivni projekti",
"tasks7d": "Zadaci dospijeća ovog tjedna",
"tasksOverdue": "Zakašnjeli zadaci",
"tasksInProgress": "Zadaci u tijeku"
},
"headscale": {
"name": "Ime",
"address": "Adresa",
"last_seen": "Zadnje viđeno",
"status": "Stanje",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Ime",
"systems": "Sustavi",
"up": "Dostupno",
"down": "Nedostupno",
"paused": "Zaustavljeno",
"pending": "U tijeku",
"status": "Stanje",
"updated": "Aktualizirano",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"network": "Mreža"
},
"argocd": {
"apps": "Aplikacije",
"synced": "Sinkronizirano",
"outOfSync": "Izvan sinkronizacije",
"healthy": "Funkcionalno",
"degraded": "Degradirano",
"progressing": "Napredovanje",
"missing": "Nedostaje",
"suspended": "Suspendiran"
},
"spoolman": {
"loading": "Učitavanje"
},
"gitlab": {
"groups": "Grupe",
"issues": "Problemi",
"merges": "Zahtjevi za sjedinjenjem",
"projects": "Projekti"
},
"apcups": {
"status": "Stanje",
"load": "Opterećenje",
"bcharge": "Napunjenost baterije",
"timeleft": "Preostalo vrijeme"
},
"karakeep": {
"bookmarks": "Oznake",
"favorites": "Favoriti",
"archived": "Arhivirano",
"highlights": "Izdvajamo",
"lists": "Liste",
"tags": "Oznake"
},
"slskd": {
"slskStatus": "Mreža",
"connected": "Povezano",
"disconnected": "Odspojeno",
"updateStatus": "Ažuriraj",
"update_yes": "Dostupno",
"update_no": "Aktualno",
"downloads": "Preuzimanje",
"uploads": "Prijenos",
"sharedFiles": "Datoteke"
},
"jellystat": {
"songs": "Pjesme",
"movies": "Filmovi",
"episodes": "Epizode",
"other": "Ostalo"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -13,7 +13,7 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "hó", "months": "hó",
"days": "n", "days": "n",
"hours": "ó", "hours": "ó",
@@ -25,7 +25,7 @@
"api_error": "API Hiba", "api_error": "API Hiba",
"information": "Információ", "information": "Információ",
"status": "Státusz", "status": "Státusz",
"url": "URL", "url": "LINK",
"raw_error": "Nyers hiba", "raw_error": "Nyers hiba",
"response_data": "Válaszadatok" "response_data": "Válaszadatok"
}, },
@@ -120,7 +120,7 @@
"grid_power": "Rács", "grid_power": "Rács",
"home_power": "Fogyasztás", "home_power": "Fogyasztás",
"charge_power": "Töltő", "charge_power": "Töltő",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Letöltés", "download": "Letöltés",
@@ -148,9 +148,7 @@
"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",
@@ -178,7 +176,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",
"connectedGateways": "Connected gateways", "connectedGateway": "Csatlakoztatott gateway-ek",
"connectedSwitches": "Csatlakoztatott switch-ek" "connectedSwitches": "Csatlakoztatott switch-ek"
}, },
"nzbget": { "nzbget": {
@@ -229,8 +227,8 @@
"seed": "Seed" "seed": "Seed"
}, },
"develancacheui": { "develancacheui": {
"cachehitbytes": "Gyorsítótárban Sikeres Bitek", "cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Gyorsítótárban Hibás Bitek" "cachemissbytes": "Cache Miss Bytes"
}, },
"downloadstation": { "downloadstation": {
"download": "Letöltés", "download": "Letöltés",
@@ -311,16 +309,6 @@
"stopped": "Megállított", "stopped": "Megállított",
"total": "Összes" "total": "Összes"
}, },
"suwayomi": {
"download": "Letöltött",
"nondownload": "Nem Letöltött",
"read": "Olvasott",
"unread": "Olvasatlan",
"downloadedread": "Letöltött & Olvasott",
"downloadedunread": "Letöltött & Olvasatlan",
"nondownloadedread": "Nem Letöltött & Olvasatlan",
"nondownloadedunread": "Nem Letöltött & Olvasatlan"
},
"tailscale": { "tailscale": {
"address": "Cím", "address": "Cím",
"expires": "Lejár", "expires": "Lejár",
@@ -337,15 +325,15 @@
}, },
"technitium": { "technitium": {
"totalQueries": "Lekérdezések", "totalQueries": "Lekérdezések",
"totalNoError": "Sikerek", "totalNoError": "Success",
"totalServerFailure": "Hibák", "totalServerFailure": "Failures",
"totalNxDomain": "NX Domainek", "totalNxDomain": "NX Domains",
"totalRefused": "Elutasított", "totalRefused": "Refused",
"totalAuthoritative": "Irányadó", "totalAuthoritative": "Authoritative",
"totalRecursive": "Rekurzív", "totalRecursive": "Recursive",
"totalCached": "Gyorsítótárazott", "totalCached": "Cached",
"totalBlocked": "Blokkolt", "totalBlocked": "Blokkolt",
"totalDropped": "Eldobott", "totalDropped": "Dropped",
"totalClients": "Kliensek" "totalClients": "Kliensek"
}, },
"tdarr": { "tdarr": {
@@ -455,7 +443,7 @@
"search": "Keresés", "search": "Keresés",
"custom": "Egyedi", "custom": "Egyedi",
"visit": "Megnéz", "visit": "Megnéz",
"url": "URL", "url": "LINK",
"searchsuggestion": "Javaslat" "searchsuggestion": "Javaslat"
}, },
"wmo": { "wmo": {
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "Nyilvános IP-cím", "public_ip": "Nyilvános IP-cím",
"region": "Régió", "region": "Régió",
"country": "Ország", "country": "Ország"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Csatornák", "channels": "Csatornák",
@@ -705,10 +692,6 @@
"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",
@@ -857,21 +840,20 @@
"physicalRelease": "Fizikai kiadás", "physicalRelease": "Fizikai kiadás",
"digitalRelease": "Digitális kiadás", "digitalRelease": "Digitális kiadás",
"noEventsToday": "Ezen a napon nincsenek események!", "noEventsToday": "Ezen a napon nincsenek események!",
"noEventsFound": "Nem található esemény", "noEventsFound": "Nem található esemény"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Felület", "platforms": "Felület",
"totalRoms": "Játékok", "totalRoms": "Games",
"saves": "Mentések", "saves": "Saves",
"states": "Állapotok", "states": "States",
"screenshots": "Képernyőképek", "screenshots": "Screenshots",
"totalfilesize": "Teljes méret" "totalfilesize": "Total Size"
}, },
"mailcow": { "mailcow": {
"domains": "Domainek", "domains": "Domainek",
"mailboxes": "E-mail fiókok", "mailboxes": "Mailboxes",
"mails": "Mailek", "mails": "Mails",
"storage": "Tárhely" "storage": "Tárhely"
}, },
"netdata": { "netdata": {
@@ -887,8 +869,7 @@
"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",
@@ -921,7 +902,7 @@
}, },
"crowdsec": { "crowdsec": {
"alerts": "Riasztások", "alerts": "Riasztások",
"bans": "Kitiltások" "bans": "Bans"
}, },
"wgeasy": { "wgeasy": {
"connected": "Csatlakozva", "connected": "Csatlakozva",
@@ -930,10 +911,10 @@
"total": "Összes" "total": "Összes"
}, },
"swagdashboard": { "swagdashboard": {
"proxied": "Proxyzott", "proxied": "Proxied",
"auth": "Hitelesítéssel", "auth": "With Auth",
"outdated": "Elavult", "outdated": "Outdated",
"banned": "Kitiltott" "banned": "Banned"
}, },
"myspeed": { "myspeed": {
"ping": "Ping", "ping": "Ping",
@@ -941,29 +922,29 @@
"upload": "Feltöltés" "upload": "Feltöltés"
}, },
"stocks": { "stocks": {
"stocks": "Tőzsde", "stocks": "Stocks",
"loading": "Betöltés", "loading": "Loading",
"open": "Nyitva - US Piac", "open": "Open - US Market",
"closed": "Zárva - US Piac", "closed": "Closed - US Market",
"invalidConfiguration": "Érvénytelen konfiguráció" "invalidConfiguration": "Invalid Configuration"
}, },
"frigate": { "frigate": {
"cameras": "Kamerák", "cameras": "Cameras",
"uptime": "Üzemidő", "uptime": "Üzemidő",
"version": "Verzió" "version": "Verzió"
}, },
"linkwarden": { "linkwarden": {
"links": "Linkek", "links": "Links",
"collections": "Gyűjtemény", "collections": "Collections",
"tags": "Címkék" "tags": "Címkék"
}, },
"zabbix": { "zabbix": {
"unclassified": "Nem titkosított", "unclassified": "Not classified",
"information": "Információ", "information": "Információ",
"warning": "Figyelmeztetés", "warning": "Warning",
"average": "Átlag", "average": "Average",
"high": "Magas", "high": "High",
"disaster": "Katasztrófa" "disaster": "Disaster"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Jármű", "vehicle": "Jármű",
@@ -971,88 +952,6 @@
"serviceRecords": "Szolgáltatások nyílvántartása", "serviceRecords": "Szolgáltatások nyílvántartása",
"reminders": "Emlékeztetők", "reminders": "Emlékeztetők",
"nextReminder": "Következő emlékeztető", "nextReminder": "Következő emlékeztető",
"none": "Semmi" "none": "None"
},
"vikunja": {
"projects": "Aktív Projektek",
"tasks7d": "Hátralévő feladatok a héten",
"tasksOverdue": "Lejárt feladatok",
"tasksInProgress": "Folyamatban levő Feladatok"
},
"headscale": {
"name": "Név",
"address": "Cím",
"last_seen": "Utoljára látott",
"status": "Státusz",
"online": "Csatlakozva",
"offline": "Nem elérhető"
},
"beszel": {
"name": "Név",
"systems": "Rendszerek",
"up": "Fel",
"down": "Le",
"paused": "Szünetel",
"pending": "Függőben",
"status": "Státusz",
"updated": "Frissített",
"cpu": "Processzor",
"memory": "RAM",
"disk": "Lemez",
"network": "Hálózat"
},
"argocd": {
"apps": "Alkalmazások",
"synced": "Szinkronizált",
"outOfSync": "Nincs szinkronban",
"healthy": "Egészséges",
"degraded": "Leépült",
"progressing": "Halad",
"missing": "Hiányzik",
"suspended": "Felfüggesztett"
},
"spoolman": {
"loading": "Betöltés"
},
"gitlab": {
"groups": "Csoportok",
"issues": "Problémák",
"merges": "Merge kérések",
"projects": "Projektek"
},
"apcups": {
"status": "Státusz",
"load": "Terhelés",
"bcharge": "Akku töltöttsége",
"timeleft": "Hátralévő idő"
},
"karakeep": {
"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"
},
"jellystat": {
"songs": "Zeneszám",
"movies": "Film",
"episodes": "Epizód",
"other": "Other"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -13,8 +13,8 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "bln", "months": "bulan",
"days": "h", "days": "h",
"hours": "j", "hours": "j",
"minutes": "m", "minutes": "m",
@@ -120,7 +120,7 @@
"grid_power": "Grid", "grid_power": "Grid",
"home_power": "Konsumsi", "home_power": "Konsumsi",
"charge_power": "Charger", "charge_power": "Charger",
"kilowatt": "kW" "watt_hour": "Watt/jam"
}, },
"flood": { "flood": {
"download": "Unduh", "download": "Unduh",
@@ -140,7 +140,7 @@
"connectionStatusPendingDisconnect": "Menunggu Terputus", "connectionStatusPendingDisconnect": "Menunggu Terputus",
"connectionStatusDisconnecting": "Sedan Memutus", "connectionStatusDisconnecting": "Sedan Memutus",
"connectionStatusDisconnected": "Terputus", "connectionStatusDisconnected": "Terputus",
"connectionStatusConnected": "Tersambung", "connectionStatusConnected": "Connected",
"uptime": "Waktu Aktif", "uptime": "Waktu Aktif",
"maxDown": "Maks Unduh", "maxDown": "Maks Unduh",
"maxUp": "Maks Unggah", "maxUp": "Maks Unggah",
@@ -148,9 +148,7 @@
"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",
@@ -178,7 +176,7 @@
"connectedAp": "AP Tersambung", "connectedAp": "AP Tersambung",
"activeUser": "Perangakat yang Aktif", "activeUser": "Perangakat yang Aktif",
"alerts": "Peringatan", "alerts": "Peringatan",
"connectedGateways": "Connected gateways", "connectedGateway": "Gateway Tersambung",
"connectedSwitches": "Switch Tersambung" "connectedSwitches": "Switch Tersambung"
}, },
"nzbget": { "nzbget": {
@@ -285,9 +283,9 @@
}, },
"netalertx": { "netalertx": {
"total": "Total", "total": "Total",
"connected": "Tersambung", "connected": "Connected",
"new_devices": "Perangkat Baru", "new_devices": "New Devices",
"down_alerts": "Peringatan Pemadaman" "down_alerts": "Down Alerts"
}, },
"pihole": { "pihole": {
"queries": "Kueri", "queries": "Kueri",
@@ -311,19 +309,9 @@
"stopped": "Terhenti", "stopped": "Terhenti",
"total": "Total" "total": "Total"
}, },
"suwayomi": {
"download": "Terunduh",
"nondownload": "Belum Diunduh",
"read": "Baca",
"unread": "Belum Dibaca",
"downloadedread": "Diunduh & Dibaca",
"downloadedunread": "Diunduh & Belum Dibaca",
"nondownloadedread": "Belum Diunduh & Dibaca",
"nondownloadedunread": "Belum Diunduh & Belum Dibaca"
},
"tailscale": { "tailscale": {
"address": "Alamat", "address": "Alamat",
"expires": "Kedaluwarsa", "expires": "Kadaluarsa",
"never": "Tidak Pernah", "never": "Tidak Pernah",
"last_seen": "Terakhir terlihat", "last_seen": "Terakhir terlihat",
"now": "Sekarang", "now": "Sekarang",
@@ -337,12 +325,12 @@
}, },
"technitium": { "technitium": {
"totalQueries": "Kueri", "totalQueries": "Kueri",
"totalNoError": "Berhasil", "totalNoError": "Success",
"totalServerFailure": "Gagal", "totalServerFailure": "Failures",
"totalNxDomain": "Domain NX", "totalNxDomain": "NX Domains",
"totalRefused": "Ditolak", "totalRefused": "Refused",
"totalAuthoritative": "Authoritative", "totalAuthoritative": "Authoritative",
"totalRecursive": "Rekursif", "totalRecursive": "Recursive",
"totalCached": "Cached", "totalCached": "Cached",
"totalBlocked": "Terblokir", "totalBlocked": "Terblokir",
"totalDropped": "Dropped", "totalDropped": "Dropped",
@@ -568,8 +556,7 @@
"gluetun": { "gluetun": {
"public_ip": "IP Publik", "public_ip": "IP Publik",
"region": "Region", "region": "Region",
"country": "Negara", "country": "Negara"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Channel", "channels": "Channel",
@@ -705,10 +692,6 @@
"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",
@@ -857,21 +840,20 @@
"physicalRelease": "Rilis Fisik", "physicalRelease": "Rilis Fisik",
"digitalRelease": "Rilis Digital", "digitalRelease": "Rilis Digital",
"noEventsToday": "Tidak ada acara untuk hari ini!", "noEventsToday": "Tidak ada acara untuk hari ini!",
"noEventsFound": "Tidak ada acara yang ditemukan", "noEventsFound": "Tidak ada acara yang ditemukan"
"errorWhenLoadingData": "Error when loading calendar data"
}, },
"romm": { "romm": {
"platforms": "Platform", "platforms": "Platform",
"totalRoms": "Permainan", "totalRoms": "Games",
"saves": "Saves", "saves": "Saves",
"states": "Kondisi", "states": "States",
"screenshots": "Tangkapan Layar", "screenshots": "Screenshots",
"totalfilesize": "Total Ukuran" "totalfilesize": "Total Size"
}, },
"mailcow": { "mailcow": {
"domains": "Jumlah Domain", "domains": "Jumlah Domain",
"mailboxes": "Kotak surat", "mailboxes": "Mailboxes",
"mails": "Surat", "mails": "Mails",
"storage": "Penyimpanan" "storage": "Penyimpanan"
}, },
"netdata": { "netdata": {
@@ -887,52 +869,51 @@
"gitea": { "gitea": {
"notifications": "Notifikasi", "notifications": "Notifikasi",
"issues": "Isu", "issues": "Isu",
"pulls": "Pull Requests", "pulls": "Pull Requests"
"repositories": "Repositories"
}, },
"stash": { "stash": {
"scenes": "Adegan", "scenes": "Scenes",
"scenesPlayed": "Adegan Dimainkan", "scenesPlayed": "Scenes Played",
"playCount": "Total Dimainkan", "playCount": "Total Plays",
"playDuration": "Waktu Ditonton", "playDuration": "Time Watched",
"sceneSize": "Ukuran Adegan", "sceneSize": "Scenes Size",
"sceneDuration": "Durasi Adegan", "sceneDuration": "Scenes Duration",
"images": "Gambar", "images": "Images",
"imageSize": "Ukuran Gambar", "imageSize": "Images Size",
"galleries": "Galeri", "galleries": "Galleries",
"performers": "Pemain", "performers": "Performers",
"studios": "Studio", "studios": "Studios",
"movies": "Film", "movies": "Film",
"tags": "Tag", "tags": "Tag",
"oCount": "Jumlah O" "oCount": "O Count"
}, },
"tandoor": { "tandoor": {
"users": "Pengguna", "users": "Pengguna",
"recipes": "Resep", "recipes": "Resep",
"keywords": "Kata Kunci" "keywords": "Keywords"
}, },
"homebox": { "homebox": {
"items": "Items", "items": "Items",
"totalWithWarranty": "Dengan Garansi", "totalWithWarranty": "With Warranty",
"locations": "Lokasi", "locations": "Locations",
"labels": "Label", "labels": "Labels",
"users": "Pengguna", "users": "Pengguna",
"totalValue": "Total Nilai" "totalValue": "Total Value"
}, },
"crowdsec": { "crowdsec": {
"alerts": "Peringatan", "alerts": "Peringatan",
"bans": "Bans" "bans": "Bans"
}, },
"wgeasy": { "wgeasy": {
"connected": "Tersambung", "connected": "Connected",
"enabled": "Aktif", "enabled": "Aktif",
"disabled": "Nonaktif", "disabled": "Nonaktif",
"total": "Total" "total": "Total"
}, },
"swagdashboard": { "swagdashboard": {
"proxied": "Diproksi", "proxied": "Proxied",
"auth": "With Auth", "auth": "With Auth",
"outdated": "Usang", "outdated": "Outdated",
"banned": "Banned" "banned": "Banned"
}, },
"myspeed": { "myspeed": {
@@ -941,118 +922,36 @@
"upload": "Unggah" "upload": "Unggah"
}, },
"stocks": { "stocks": {
"stocks": "Saham", "stocks": "Stocks",
"loading": "Memuat", "loading": "Loading",
"open": "Buka - Pasar AS", "open": "Open - US Market",
"closed": "Tutup - Pasar AS", "closed": "Closed - US Market",
"invalidConfiguration": "Konfigurasi Invalid" "invalidConfiguration": "Invalid Configuration"
}, },
"frigate": { "frigate": {
"cameras": "Kamera", "cameras": "Cameras",
"uptime": "Waktu Aktif", "uptime": "Waktu Aktif",
"version": "Versi" "version": "Versi"
}, },
"linkwarden": { "linkwarden": {
"links": "Tautan", "links": "Links",
"collections": "Koleksi", "collections": "Collections",
"tags": "Tag" "tags": "Tag"
}, },
"zabbix": { "zabbix": {
"unclassified": "Not classified", "unclassified": "Not classified",
"information": "Informasi", "information": "Informasi",
"warning": "Peringatan", "warning": "Warning",
"average": "Rata-rata", "average": "Average",
"high": "Tinggi", "high": "High",
"disaster": "Bencana" "disaster": "Disaster"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Kendaraan", "vehicle": "Vehicle",
"vehicles": "Kendaraan", "vehicles": "Vehicles",
"serviceRecords": "Catatan Servis", "serviceRecords": "Service Records",
"reminders": "Pengingat", "reminders": "Reminders",
"nextReminder": "Pengingat Berikutnya", "nextReminder": "Next Reminder",
"none": "Tidak ada" "none": "None"
},
"vikunja": {
"projects": "Proyek Aktif",
"tasks7d": "Tugas Jatuh Tempo Minggu Ini",
"tasksOverdue": "Tugas Terlewat",
"tasksInProgress": "Tugas Berlangsung"
},
"headscale": {
"name": "Nama",
"address": "Alamat",
"last_seen": "Terakhir terlihat",
"status": "Status",
"online": "Online",
"offline": "Offline"
},
"beszel": {
"name": "Nama",
"systems": "Sistem",
"up": "Hidup",
"down": "Mati",
"paused": "Pause",
"pending": "Pending",
"status": "Status",
"updated": "Terbarui",
"cpu": "CPU",
"memory": "MEM",
"disk": "Diska",
"network": "NET"
},
"argocd": {
"apps": "Apl",
"synced": "Tersinkron",
"outOfSync": "Tidak Sinkron",
"healthy": "Lancar",
"degraded": "Terdegradasi",
"progressing": "Progressing",
"missing": "Tidak Ditemukan",
"suspended": "Ditangguhkan"
},
"spoolman": {
"loading": "Memuat"
},
"gitlab": {
"groups": "Grup",
"issues": "Isu",
"merges": "Merge Requests",
"projects": "Proyek"
},
"apcups": {
"status": "Status",
"load": "Beban",
"bcharge": "Sisa Baterai",
"timeleft": "Sisa Waktu"
},
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tag"
},
"slskd": {
"slskStatus": "Jaringan",
"connected": "Tersambung",
"disconnected": "Terputus",
"updateStatus": "Update",
"update_yes": "Tersedia",
"update_no": "Terbaru",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "File"
},
"jellystat": {
"songs": "Lagu",
"movies": "Film",
"episodes": "Episode",
"other": "Other"
},
"checkmk": {
"serviceErrors": "Service issues",
"hostErrors": "Host issues"
} }
} }

View File

@@ -13,8 +13,8 @@
"ms": "{{value, number}}", "ms": "{{value, number}}",
"date": "{{value, date}}", "date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}", "relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}", "uptime": "{{value, uptime}}",
"months": "m", "months": "mo",
"days": "g", "days": "g",
"hours": "o", "hours": "o",
"minutes": "m", "minutes": "m",
@@ -120,7 +120,7 @@
"grid_power": "Griglia", "grid_power": "Griglia",
"home_power": "Consumo", "home_power": "Consumo",
"charge_power": "Caricatore", "charge_power": "Caricatore",
"kilowatt": "kW" "watt_hour": "Wh"
}, },
"flood": { "flood": {
"download": "Download", "download": "Download",
@@ -148,9 +148,7 @@
"up": "Up", "up": "Up",
"received": "Ricevuti", "received": "Ricevuti",
"sent": "Inviati", "sent": "Inviati",
"externalIPAddress": "IP Esterno", "externalIPAddress": "IP Esterno"
"externalIPv6Address": "IPv6 Esterno",
"externalIPv6Prefix": "Prefisso IPv6 Esterno"
}, },
"caddy": { "caddy": {
"upstreams": "Upstream", "upstreams": "Upstream",
@@ -178,7 +176,7 @@
"connectedAp": "AP Connessi", "connectedAp": "AP Connessi",
"activeUser": "Dispositivi attivi", "activeUser": "Dispositivi attivi",
"alerts": "Allarmi", "alerts": "Allarmi",
"connectedGateways": "Gateway connessi", "connectedGateway": "Gateway connessi",
"connectedSwitches": "Switch connessi" "connectedSwitches": "Switch connessi"
}, },
"nzbget": { "nzbget": {
@@ -311,16 +309,6 @@
"stopped": "Fermati", "stopped": "Fermati",
"total": "Totale" "total": "Totale"
}, },
"suwayomi": {
"download": "Scaricato",
"nondownload": "Non Scaricato",
"read": "Letti",
"unread": "Non letto",
"downloadedread": "Scaricato E Letto",
"downloadedunread": "Scaricato E Non Letto",
"nondownloadedread": "Non Scaricato E Letto",
"nondownloadedunread": "Non Scaricato E Non Letto"
},
"tailscale": { "tailscale": {
"address": "Indirizzo", "address": "Indirizzo",
"expires": "Scade", "expires": "Scade",
@@ -337,15 +325,15 @@
}, },
"technitium": { "technitium": {
"totalQueries": "Richieste", "totalQueries": "Richieste",
"totalNoError": "Successo", "totalNoError": "Success",
"totalServerFailure": "Fallimenti", "totalServerFailure": "Failures",
"totalNxDomain": "Domini NX", "totalNxDomain": "NX Domains",
"totalRefused": "Rifiutato", "totalRefused": "Refused",
"totalAuthoritative": "Autoritario", "totalAuthoritative": "Authoritative",
"totalRecursive": "Ricorsivo", "totalRecursive": "Recursive",
"totalCached": "In cache", "totalCached": "Cached",
"totalBlocked": "Bloccati", "totalBlocked": "Bloccati",
"totalDropped": "Saltati", "totalDropped": "Dropped",
"totalClients": "Client" "totalClients": "Client"
}, },
"tdarr": { "tdarr": {
@@ -568,13 +556,12 @@
"gluetun": { "gluetun": {
"public_ip": "IP pubblico", "public_ip": "IP pubblico",
"region": "Località", "region": "Località",
"country": "Paese", "country": "Paese"
"port_forwarded": "Port Forwarded"
}, },
"hdhomerun": { "hdhomerun": {
"channels": "Canali", "channels": "Canali",
"hd": "HD", "hd": "HD",
"tunerCount": "Regolatori", "tunerCount": "Tuners",
"channelNumber": "Canale", "channelNumber": "Canale",
"channelNetwork": "Rete", "channelNetwork": "Rete",
"signalStrength": "Intensità", "signalStrength": "Intensità",
@@ -593,7 +580,7 @@
"total": "Totale" "total": "Totale"
}, },
"peanut": { "peanut": {
"battery_charge": "Carica Batteria", "battery_charge": "Battery Charge",
"ups_load": "Carico UPS", "ups_load": "Carico UPS",
"ups_status": "Stato UPS", "ups_status": "Stato UPS",
"online": "Online", "online": "Online",
@@ -705,10 +692,6 @@
"processed": "Elaborati", "processed": "Elaborati",
"time": "Tempo" "time": "Tempo"
}, },
"firefly": {
"networth": "Valore Netto",
"budget": "Budget"
},
"grafana": { "grafana": {
"dashboards": "Dashboard", "dashboards": "Dashboard",
"datasources": "Origine dei Dati", "datasources": "Origine dei Dati",
@@ -857,38 +840,36 @@
"physicalRelease": "Release fisici", "physicalRelease": "Release fisici",
"digitalRelease": "Versione digitale", "digitalRelease": "Versione digitale",
"noEventsToday": "Nessun evento per oggi!", "noEventsToday": "Nessun evento per oggi!",
"noEventsFound": "Nessun evento trovato", "noEventsFound": "Nessun evento trovato"
"errorWhenLoadingData": "Errore durante il caricamento dei dati del calendario"
}, },
"romm": { "romm": {
"platforms": "Piattaforme", "platforms": "Piattaforme",
"totalRoms": "Giochi", "totalRoms": "Games",
"saves": "Salvati", "saves": "Saves",
"states": "Stati", "states": "States",
"screenshots": "Screenshot", "screenshots": "Screenshots",
"totalfilesize": "Dimensioni totali" "totalfilesize": "Total Size"
}, },
"mailcow": { "mailcow": {
"domains": "Domini", "domains": "Domini",
"mailboxes": "Caselle di posta", "mailboxes": "Mailboxes",
"mails": "Mail", "mails": "Mails",
"storage": "Archiviazione" "storage": "Archiviazione"
}, },
"netdata": { "netdata": {
"warnings": "Avvisi", "warnings": "Avvisi",
"criticals": "Critici" "criticals": "Criticals"
}, },
"plantit": { "plantit": {
"events": "Eventi", "events": "Eventi",
"plants": "Piante", "plants": "Plants",
"photos": "Foto", "photos": "Foto",
"species": "Specie" "species": "Specie"
}, },
"gitea": { "gitea": {
"notifications": "Notifiche", "notifications": "Notifiche",
"issues": "Problemi", "issues": "Problemi",
"pulls": "Richieste di Pull", "pulls": "Richieste di Pull"
"repositories": "Repository"
}, },
"stash": { "stash": {
"scenes": "Scene", "scenes": "Scene",
@@ -899,7 +880,7 @@
"sceneDuration": "Durata Delle Scene", "sceneDuration": "Durata Delle Scene",
"images": "Immagini", "images": "Immagini",
"imageSize": "Dimensioni immagine", "imageSize": "Dimensioni immagine",
"galleries": "Gallerie", "galleries": "Galleries",
"performers": "Esecutori", "performers": "Esecutori",
"studios": "Studi", "studios": "Studi",
"movies": "Film", "movies": "Film",
@@ -930,8 +911,8 @@
"total": "Totale" "total": "Totale"
}, },
"swagdashboard": { "swagdashboard": {
"proxied": "Proxato", "proxied": "Proxied",
"auth": "Con Autenticazione", "auth": "With Auth",
"outdated": "Obsoleto", "outdated": "Obsoleto",
"banned": "Bannato" "banned": "Bannato"
}, },
@@ -941,118 +922,36 @@
"upload": "Upload" "upload": "Upload"
}, },
"stocks": { "stocks": {
"stocks": "Azioni", "stocks": "Stocks",
"loading": "Caricamento", "loading": "Loading",
"open": "Aperto - Mercato USA", "open": "Open - US Market",
"closed": "Chiuso - Mercato USA", "closed": "Closed - US Market",
"invalidConfiguration": "Configurazione non valida" "invalidConfiguration": "Invalid Configuration"
}, },
"frigate": { "frigate": {
"cameras": "Telecamere", "cameras": "Cameras",
"uptime": "Tempo di attività", "uptime": "Tempo di attività",
"version": "Versione" "version": "Versione"
}, },
"linkwarden": { "linkwarden": {
"links": "Collegamenti", "links": "Links",
"collections": "Raccolte", "collections": "Collections",
"tags": "Tag" "tags": "Tag"
}, },
"zabbix": { "zabbix": {
"unclassified": "Non classificato", "unclassified": "Not classified",
"information": "Informazioni", "information": "Informazioni",
"warning": "Avviso", "warning": "Warning",
"average": "Media", "average": "Average",
"high": "Alto", "high": "High",
"disaster": "Disastri" "disaster": "Disaster"
}, },
"lubelogger": { "lubelogger": {
"vehicle": "Veicolo", "vehicle": "Vehicle",
"vehicles": "Veicoli", "vehicles": "Vehicles",
"serviceRecords": "Record Di Servizio", "serviceRecords": "Service Records",
"reminders": "Promemoria", "reminders": "Reminders",
"nextReminder": "Promemoria Seguente", "nextReminder": "Next Reminder",
"none": "Nessuno" "none": "None"
},
"vikunja": {
"projects": "Progetti attivi",
"tasks7d": "Attività Settimanali",
"tasksOverdue": "Task scaduti",
"tasksInProgress": "Task In Corso"
},
"headscale": {
"name": "Nome",
"address": "Indirizzo",
"last_seen": "Ultima visualizzazione",
"status": "Stato",
"online": "Online",
"offline": "Non in linea"
},
"beszel": {
"name": "Nome",
"systems": "Sistemi",
"up": "Up",
"down": "Down",
"paused": "In Pausa",
"pending": "In attesa",
"status": "Stato",
"updated": "Aggiornato",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disco",
"network": "NET"
},
"argocd": {
"apps": "Applicazioni",
"synced": "Sincronizzato",
"outOfSync": "Non Sincronizzato",
"healthy": "Sano",
"degraded": "Degradato",
"progressing": "Progressione",
"missing": "Mancanti",
"suspended": "Sospeso"
},
"spoolman": {
"loading": "Caricamento"
},
"gitlab": {
"groups": "Gruppi",
"issues": "Problemi",
"merges": "Richieste di merge",
"projects": "Progetti"
},
"apcups": {
"status": "Stato",
"load": "Carico",
"bcharge": "Carica Batteria",
"timeleft": "Tempo Rimanente"
},
"karakeep": {
"bookmarks": "Segnalibri",
"favorites": "Preferiti",
"archived": "Archiviato",
"highlights": "Highlights",
"lists": "Liste",
"tags": "Tag"
},
"slskd": {
"slskStatus": "Rete",
"connected": "Connesso",
"disconnected": "Disconnesso",
"updateStatus": "Aggiornamento",
"update_yes": "Disponibili",
"update_no": "Aggiornato",
"downloads": "Download",
"uploads": "Caricamenti",
"sharedFiles": "File"
},
"jellystat": {
"songs": "Canzoni",
"movies": "Film",
"episodes": "Episodi",
"other": "Altro"
},
"checkmk": {
"serviceErrors": "Problemi di servizio",
"hostErrors": "Problemi di host"
} }
} }

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