Compare commits

...

28 commits

Author SHA1 Message Date
1370cd195a homepage-plus
Some checks failed
Docker CI / Linting Checks (push) Has been cancelled
Docker CI / Docker Build & Push (push) Has been cancelled
2025-05-07 09:16:23 +02:00
shamoon
2376184b14
Bump version to 1.2.0 2025-04-28 10:43:35 -07:00
github-actions[bot]
7272823d20
New Crowdin translations by GitHub Action (#5092)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-04-28 10:43:35 -07:00
choehn86
4a9ca62efd
Enhancement: Add support for specifying a datastore to PBS widget (#4614)
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2025-04-28 08:00:02 -07:00
Rayan Mestiri
a35da39c03
Enhancement: add label formatting for dynamic-list customapi widget (#5217) 2025-04-25 01:11:03 -07:00
xethlyx
d99c3cb691
Fix: kubernetes statistics not respecting selector (#5199) 2025-04-20 17:39:56 -07:00
Kevin Stone
1fe4f49771
Fix: Longhorn still showing Total despite total: false (#5200) 2025-04-20 17:39:25 -07:00
dependabot[bot]
0a1bf3b2be
Chore(deps): Bump next from 15.2.3 to 15.2.4 (#5159)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-08 15:08:54 -07:00
shamoon
e2c997f29d
Change: install iputils-ping inside docker image (#5153) 2025-04-07 23:59:22 -07:00
shamoon
ae9fbdcb8b
Chore: change hoarder widget to karakeep (#5143) 2025-04-05 23:54:48 -07:00
shamoon
6597ec566b
Fix translation issue 2025-04-01 09:52:33 -07:00
shamoon
52399e21e1
Fix depth issue with t 2025-04-01 09:48:28 -07:00
dependabot[bot]
dbc26e835c
Chore(deps): Bump swr from 1.3.0 to 2.3.3 (#5111)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 09:36:44 -07:00
dependabot[bot]
a59ee5a605
Chore(deps-dev): Bump eslint-config-next from 15.1.7 to 15.2.4 (#5113)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 09:32:05 -07:00
dependabot[bot]
f46568ec2a
Chore(deps-dev): Bump eslint-config-prettier from 10.0.2 to 10.1.1 (#5112)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 09:24:46 -07:00
dependabot[bot]
5e946ed2c2
Chore(deps-dev): Bump postcss from 8.5.2 to 8.5.3 (#5110)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 09:24:24 -07:00
dependabot[bot]
6741eb723d
Chore(deps): Bump i18next from 21.10.0 to 24.2.3 (#5109)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 09:22:36 -07:00
RoboMagus
1666106dcd
Chore: add more Docker Semver Tags (#5107)
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2025-03-31 06:44:17 -07:00
shamoon
eda06965fa
Chore: add organize imports to pre-commit (#5104) 2025-03-30 21:40:03 -07:00
shamoon
954ab54493
Speed up CI: Skip unnecessary build steps, optimize caching etc (#5098) 2025-03-30 08:52:23 -07:00
Chris
30cb893354
Fix: remove unneeded import from Hoarder widget.js (#5097) 2025-03-29 19:49:53 -07:00
shamoon
4567427b9c
Enhancement: add shvl fallback for custom api dynamic list (#5091) 2025-03-28 16:32:56 -07:00
Matheus Vellone
ee7e8fab61
Fix: support shvl on customapi dynamic list target (#5081)
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2025-03-28 16:29:23 -07:00
shamoon
313835c0e6
Bump version to 1.1.1 2025-03-27 20:20:02 -07:00
shamoon
999dade861
Fix: add fallback for shvl syntax (#5080) 2025-03-27 20:16:50 -07:00
shamoon
2cabe77b55
Fix: add fallback for shvl syntax 2025-03-27 20:15:39 -07:00
shamoon
0a50d5a6aa
Merge branch 'main' into dev 2025-03-27 13:27:26 -07:00
shamoon
e19dcc2729
Only deploy docs from main branch 2025-03-27 13:27:20 -07:00
356 changed files with 2086 additions and 1569 deletions

View file

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

View file

@ -2,8 +2,8 @@ name: Crowdin Action
on:
workflow_dispatch:
schedule:
- cron: '2 */12 * * *'
# schedule:
# - cron: '2 */12 * * *'
push:
paths: [
'/public/locales/en/**',

View file

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

View file

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

View file

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

View file

@ -1 +0,0 @@
{}

5
.prettierrc.js Normal file
View file

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

View file

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

View file

@ -556,3 +556,42 @@ or per service widget (`services.yaml`) with:
```
If either value is set to true, the error message will be hidden.
## Identity Based Visibiltiy
Basic user identity integration is implemeted via an `identity` section. An identity provider can be configured using the `provider` section with the given type. Currently the only provider supported is `proxy`, where the users identification and group membership are passed via HTTP Request headers (in plaintext). The expectation is that the application will be accessed only via an authenticating proxy (i.e traefik or nginx).
The group and user headers are both configurable like so:
```yaml
identity:
provider:
type: proxy
groupHeader: "X-group-header"
userHeader: "X-user-header"
```
Identity based visibility can be configured on the service, bookmark, and widget level using the `allowUsers` and `allowGroups` list. The default is to allow all users and groups.
```yaml
- Example Servie:
allowGroups:
- Group1
- Group2
- Group3
allowUsers:
- User1
- User2
- User3
```
Identity visibility for groups can be set in the `groups` under `identity`. In general the `groups` tag follows the format of the `layout` section. For example:
```yaml
identity:
groups:
- My Service Group:
allowGroups: ["Group1", "Group2"]
- My Other Group:
allowGroups: ["Group1"]
```

View file

@ -189,6 +189,7 @@ widget:
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
```

View file

@ -1,17 +0,0 @@
---
title: Hoarder
description: Hoarder Widget Configuration
---
Learn more about [Hoarder](https://hoarder.app).
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: hoarder
url: http[s]://hoarder.host.or.ip[:port]
key: hoarderapikey
```

View file

@ -51,7 +51,7 @@ You can also find a list of all available service widgets in the sidebar navigat
- [HDHomeRun](hdhomerun.md)
- [Headscale](headscale.md)
- [Healthchecks](healthchecks.md)
- [Hoarder](hoarder.md)
- [Karakeep](karakeep.md)
- [Home Assistant](homeassistant.md)
- [HomeBox](homebox.md)
- [Homebridge](homebridge.md)

View file

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

View file

@ -4,9 +4,9 @@ site_name: Homepage
site_url: https://gethomepage.dev/
# Repository
repo_name: gethomepage/homepage
repo_url: https://github.com/gethomepage/homepage
edit_uri: https://github.com/gethomepage/homepage/tree/main/docs/
repo_name: di0ik/homepage-plus
repo_url: https://github.com/di0ik/homepage-plus
edit_uri: https://github.com/di0ik/homepage-plus/tree/main/docs/
nav:
- "Home":
@ -74,7 +74,7 @@ nav:
- widgets/services/hdhomerun.md
- widgets/services/headscale.md
- widgets/services/healthchecks.md
- widgets/services/hoarder.md
- widgets/services/karakeep.md
- widgets/services/homeassistant.md
- widgets/services/homebox.md
- widgets/services/homebridge.md

View file

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

View file

@ -1,6 +1,6 @@
{
"name": "homepage",
"version": "1.1.0",
"version": "1.2.0",
"private": true,
"scripts": {
"preinstall": "npx only-allow pnpm",
@ -19,13 +19,13 @@
"dockerode": "^4.0.4",
"follow-redirects": "^1.15.9",
"gamedig": "^5.2.0",
"i18next": "^21.10.0",
"i18next": "^24.2.3",
"js-yaml": "^4.1.0",
"json-rpc-2.0": "^1.7.0",
"luxon": "^3.5.0",
"memory-cache": "^0.2.0",
"minecraftstatuspinger": "^1.2.2",
"next": "^15.2.3",
"next": "^15.2.4",
"next-i18next": "^12.1.0",
"ping": "^0.4.4",
"pretty-bytes": "^6.1.1",
@ -36,7 +36,7 @@
"react-icons": "^5.4.0",
"recharts": "^2.15.1",
"rrule": "^2.8.1",
"swr": "^1.3.0",
"swr": "^2.3.3",
"systeminformation": "^5.25.11",
"tough-cookie": "^5.1.2",
"urbackup-server-api": "^0.8.9",
@ -47,15 +47,16 @@
"@tailwindcss/forms": "^0.5.10",
"@tailwindcss/postcss": "^4.0.9",
"eslint": "^9.21.0",
"eslint-config-next": "^15.1.7",
"eslint-config-prettier": "^10.0.2",
"eslint-config-next": "^15.2.4",
"eslint-config-prettier": "^10.1.1",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-prettier": "^5.2.3",
"eslint-plugin-react": "^7.37.4",
"eslint-plugin-react-hooks": "^5.1.0",
"postcss": "^8.5.2",
"postcss": "^8.5.3",
"prettier": "^3.5.2",
"prettier-plugin-organize-imports": "^4.1.0",
"tailwind-scrollbar": "^4.0.1",
"tailwindcss": "^4.0.9",
"typescript": "^5.7.3"

628
pnpm-lock.yaml generated

File diff suppressed because it is too large Load diff

View file

@ -1024,7 +1024,7 @@
"bcharge": "Batterylading",
"timeleft": "Oorblywende Tyd"
},
"hoarder": {
"karakeep": {
"bookmarks": "Boekmerke",
"favorites": "Gunstelinge",
"archived": "Geargiveer",

View file

@ -1024,7 +1024,7 @@
"bcharge": "شحن البطارية",
"timeleft": "الوقت المتبقي"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -394,7 +394,7 @@
"strelaysrv": {
"numActiveSessions": "Сесии",
"numConnections": "Connections",
"dataRelayed": "Relayed",
"dataRelayed": "",
"transferRate": "Скорост"
},
"mastodon": {
@ -1002,7 +1002,7 @@
"argocd": {
"apps": "Приложения",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"outOfSync": "",
"healthy": "Здрав",
"degraded": "Деградирани",
"progressing": "Progressing",
@ -1024,7 +1024,7 @@
"bcharge": "Заряд на батерията",
"timeleft": "Оставащо Време"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Càrrega de la bateria",
"timeleft": "Temps restant"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

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

View file

@ -1024,7 +1024,7 @@
"bcharge": "Batteriniveau",
"timeleft": "Resterende tid"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -665,8 +665,8 @@
"storage": "Speicher"
},
"uptimekuma": {
"up": "Seiten verfügbar",
"down": "Seiten nicht verfügbar",
"up": "Up",
"down": "Down",
"uptime": "Betriebszeit",
"incident": "Vorfall",
"m": "min"
@ -744,8 +744,8 @@
"targets_total": "Alle Ziele"
},
"gatus": {
"up": "Seiten verfügbar",
"down": "Seiten nicht verfügbar",
"up": "Up",
"down": "Down",
"uptime": "Betriebszeit"
},
"ghostfolio": {
@ -842,8 +842,8 @@
"uptime": "Betriebszeit",
"lastDown": "Letzter Ausfall",
"downDuration": "Ausfalldauer",
"sitesUp": "Seiten verfügbar",
"sitesDown": "Seiten nicht verfügbar",
"sitesUp": "Up",
"sitesDown": "Down",
"paused": "Pausiert",
"notyetchecked": "Noch nicht geprüft",
"up": "Online",
@ -1024,12 +1024,12 @@
"bcharge": "Akkuladung",
"timeleft": "Verbleibende Zeit"
},
"hoarder": {
"bookmarks": "Lesezeichen",
"favorites": "Favoriten",
"archived": "Archiviert",
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Listen",
"lists": "Lists",
"tags": "Schlagwörter"
},
"slskd": {

View file

@ -1024,7 +1024,7 @@
"bcharge": "Battery Charge",
"timeleft": "Χρόνος που απομένει"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge":"Battery Charge",
"timeleft":"Time Left"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -149,8 +149,8 @@
"received": "Recibido",
"sent": "Enviado",
"externalIPAddress": "IP ext.",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
"externalIPv6Address": "IPv6 ext.",
"externalIPv6Prefix": "Prefijo IPv6 ext."
},
"caddy": {
"upstreams": "Upstream (desarrollo de software)",
@ -178,7 +178,7 @@
"connectedAp": "AP conectados",
"activeUser": "Dispositivos activos",
"alerts": "Alertas",
"connectedGateways": "Connected gateways",
"connectedGateways": "Puertas de enlace conectadas",
"connectedSwitches": "Conmutadores conectados"
},
"nzbget": {
@ -705,8 +705,8 @@
"time": "Tiempo"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
"networth": "Patrimonio neto",
"budget": "Presupuesto"
},
"grafana": {
"dashboards": "Tableros",
@ -886,7 +886,7 @@
"notifications": "Notificaciones",
"issues": "Números",
"pulls": "Solicitudes de cambios",
"repositories": "Repositories"
"repositories": "Repositorios"
},
"stash": {
"scenes": "Escenas",
@ -1024,7 +1024,7 @@
"bcharge": "Carga de la batería",
"timeleft": "Tiempo restante"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
@ -1036,11 +1036,11 @@
"slskStatus": "Red",
"connected": "Conectado",
"disconnected": "Desconectado",
"updateStatus": "Update",
"updateStatus": "Actualización",
"update_yes": "Disponible",
"update_no": "Actualizado",
"downloads": "Downloads",
"uploads": "Uploads",
"downloads": "Descargas",
"uploads": "Subidas",
"sharedFiles": "Archivos"
}
}

View file

@ -1024,12 +1024,12 @@
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"hoarder": {
"bookmarks": "Laster-markak",
"favorites": "Gogokoak",
"archived": "Artxibatuta",
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Zerrendak",
"lists": "Lists",
"tags": "Etiketak"
},
"slskd": {

View file

@ -1024,7 +1024,7 @@
"bcharge": "Battery Charge",
"timeleft": "Aikaa jäljellä"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -85,16 +85,16 @@
"ping": {
"error": "Erreur",
"ping": "Latence",
"down": "Bas",
"up": "Haut",
"down": "Down",
"up": "Up",
"not_available": "Non disponible"
},
"siteMonitor": {
"http_status": "Statut HTTP",
"error": "Erreur",
"response": "Réponse",
"down": "Bas",
"up": "Haut",
"down": "Down",
"up": "Up",
"not_available": "Non disponible"
},
"emby": {
@ -142,10 +142,10 @@
"connectionStatusDisconnected": "Déconnecté",
"connectionStatusConnected": "Connecté",
"uptime": "Démarré depuis",
"maxDown": "Max. Bas",
"maxUp": "Max. Haut",
"down": "Bas",
"up": "Haut",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Reçu",
"sent": "Envoyé",
"externalIPAddress": "IP externe",
@ -523,15 +523,15 @@
"up_to_date": "À jour",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Haut",
"up": "Up",
"pending": "En attente",
"down": "Bas"
"down": "Down"
},
"healthchecks": {
"new": "Nouveau",
"up": "Haut",
"up": "Up",
"grace": "En Période de Grâce",
"down": "Bas",
"down": "Down",
"paused": "En Pause",
"status": "Statut",
"last_ping": "Dernier Ping",
@ -646,8 +646,8 @@
"load": "Charge moy.",
"memory": "Util. Mém.",
"wanStatus": "Statut WAN",
"up": "Haut",
"down": "Bas",
"up": "Up",
"down": "Down",
"temp": "Température",
"disk": "Util. Disque",
"wanIP": "IP WAN"
@ -832,8 +832,8 @@
"openwrt": {
"uptime": "Démarré depuis",
"cpuLoad": "Charge moyenne CPU (5 min)",
"up": "Haut",
"down": "Bas",
"up": "Up",
"down": "Down",
"bytesTx": "Transmis",
"bytesRx": "Reçu"
},
@ -846,9 +846,9 @@
"sitesDown": "Hors ligne",
"paused": "En Pause",
"notyetchecked": "Non vérifié",
"up": "Haut",
"up": "Up",
"seemsdown": "Semble hors ligne",
"down": "Bas",
"down": "Down",
"unknown": "Inconnu"
},
"calendar": {
@ -886,7 +886,7 @@
"notifications": "Notifications",
"issues": "Anomalies",
"pulls": "Demandes de tirage",
"repositories": "Repositories"
"repositories": "Dépôts"
},
"stash": {
"scenes": "Scènes",
@ -988,8 +988,8 @@
"beszel": {
"name": "Nom",
"systems": "Systèmes",
"up": "Haut",
"down": "Bas",
"up": "Up",
"down": "Down",
"paused": "En Pause",
"pending": "En attente",
"status": "Statut",
@ -1024,7 +1024,7 @@
"bcharge": "Charge de la batterie",
"timeleft": "Temps restant"
},
"hoarder": {
"karakeep": {
"bookmarks": "Marque-pages",
"favorites": "Favoris",
"archived": "Archivé",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Battery Charge",
"timeleft": "זמן שנותר"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Napunjenost baterije",
"timeleft": "Preostalo vrijeme"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Akku töltöttsége",
"timeleft": "Hátralévő idő"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,12 +1024,12 @@
"bcharge": "Sisa Baterai",
"timeleft": "Sisa Waktu"
},
"hoarder": {
"bookmarks": "Markah",
"favorites": "Favorit",
"archived": "Diarsipkan",
"highlights": "Sorotan",
"lists": "Daftar",
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tag"
},
"slskd": {

View file

@ -149,8 +149,8 @@
"received": "Ricevuti",
"sent": "Inviati",
"externalIPAddress": "IP Esterno",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
"externalIPv6Address": "IPv6 Esterno",
"externalIPv6Prefix": "Prefisso IPv6 Esterno"
},
"caddy": {
"upstreams": "Upstream",
@ -178,7 +178,7 @@
"connectedAp": "AP Connessi",
"activeUser": "Dispositivi attivi",
"alerts": "Allarmi",
"connectedGateways": "Connected gateways",
"connectedGateways": "Gateway connessi",
"connectedSwitches": "Switch connessi"
},
"nzbget": {
@ -338,7 +338,7 @@
"technitium": {
"totalQueries": "Richieste",
"totalNoError": "Successo",
"totalServerFailure": "Failures",
"totalServerFailure": "Fallimenti",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
"totalAuthoritative": "Authoritative",
@ -943,7 +943,7 @@
"loading": "Caricamento",
"open": "Open - US Market",
"closed": "Closed - US Market",
"invalidConfiguration": "Invalid Configuration"
"invalidConfiguration": "Configurazione non valida"
},
"frigate": {
"cameras": "Cameras",
@ -959,7 +959,7 @@
"unclassified": "Not classified",
"information": "Informazioni",
"warning": "Warning",
"average": "Average",
"average": "Media",
"high": "High",
"disaster": "Disaster"
},
@ -987,7 +987,7 @@
},
"beszel": {
"name": "Nome",
"systems": "Systems",
"systems": "Sistemi",
"up": "Up",
"down": "Down",
"paused": "In Pausa",
@ -996,15 +996,15 @@
"updated": "Aggiornato",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disk",
"disk": "Disco",
"network": "NET"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"apps": "Applicazioni",
"synced": "Sincronizzato",
"outOfSync": "Non Sincronizzato",
"healthy": "Sano",
"degraded": "Degraded",
"degraded": "Degradato",
"progressing": "Progressing",
"missing": "Mancanti",
"suspended": "Suspended"
@ -1013,10 +1013,10 @@
"loading": "Caricamento"
},
"gitlab": {
"groups": "Groups",
"groups": "Gruppi",
"issues": "Problemi",
"merges": "Merge Requests",
"projects": "Projects"
"merges": "Richieste di merge",
"projects": "Progetti"
},
"apcups": {
"status": "Stato",
@ -1024,12 +1024,12 @@
"bcharge": "Carica Batteria",
"timeleft": "Tempo Rimanente"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"karakeep": {
"bookmarks": "Segnalibri",
"favorites": "Preferiti",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"lists": "Liste",
"tags": "Tag"
},
"slskd": {
@ -1039,7 +1039,7 @@
"updateStatus": "Update",
"update_yes": "Disponibili",
"update_no": "Aggiornato",
"downloads": "Downloads",
"downloads": "Download",
"uploads": "Uploads",
"sharedFiles": "File"
}

View file

@ -1024,7 +1024,7 @@
"bcharge": "バッテリー充電",
"timeleft": "残り時間"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -14,11 +14,11 @@
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"duration": "{{value, duration}}",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m",
"seconds": "s"
"months": "",
"days": "",
"hours": "",
"minutes": "",
"seconds": ""
},
"widget": {
"missing_type": "없는 위젯 유형: {{type}}",
@ -51,7 +51,7 @@
},
"unifi": {
"users": "사용자",
"uptime": "Uptime",
"uptime": "가동 시간",
"days": "일",
"wan": "WAN",
"lan": "LAN",
@ -141,7 +141,7 @@
"connectionStatusDisconnecting": "연결을 끊는 중...",
"connectionStatusDisconnected": "연결 끊김",
"connectionStatusConnected": "연결됨",
"uptime": "Uptime",
"uptime": "가동 시간",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
@ -188,7 +188,7 @@
},
"plex": {
"streams": "활성 스트림",
"albums": "Albums",
"albums": "앨범",
"movies": "영화",
"tv": "TV 쇼"
},
@ -440,8 +440,8 @@
"total": "총합",
"free": "남음",
"used": "사용",
"days": "d",
"hours": "h",
"days": "",
"hours": "",
"crit": "Crit",
"read": "읽음",
"write": "쓰기",
@ -556,7 +556,7 @@
},
"truenas": {
"load": "System Load",
"uptime": "Uptime",
"uptime": "가동 시간",
"alerts": "경고"
},
"pyload": {
@ -606,7 +606,7 @@
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "메모리 사용량",
"uptime": "Uptime",
"uptime": "가동 시간",
"numberOfLeases": "Leases"
},
"xteve": {
@ -667,9 +667,9 @@
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"uptime": "가동 시간",
"incident": "Incident",
"m": "m"
"m": ""
},
"atsumeru": {
"series": "시리즈",
@ -684,7 +684,7 @@
},
"diskstation": {
"days": "일",
"uptime": "Uptime",
"uptime": "가동 시간",
"volumeAvailable": "이용 가능"
},
"mylar": {
@ -693,7 +693,7 @@
"wanted": "요청"
},
"photoprism": {
"albums": "Albums",
"albums": "앨범",
"photos": "사진",
"videos": "동영상",
"people": "People"
@ -705,8 +705,8 @@
"time": "Time"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
"networth": "순자산",
"budget": "예산"
},
"grafana": {
"dashboards": "대시보드",
@ -746,7 +746,7 @@
"gatus": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime"
"uptime": "가동 시간"
},
"ghostfolio": {
"gross_percent_today": "오늘",
@ -816,7 +816,7 @@
"totalUsed": "Used Storage"
},
"mealie": {
"recipes": "Recipes",
"recipes": "레시피",
"users": "사용자",
"categories": "분류",
"tags": "태그"
@ -830,7 +830,7 @@
"failed": "Failed"
},
"openwrt": {
"uptime": "Uptime",
"uptime": "가동 시간",
"cpuLoad": "CPU Load Avg (5m)",
"up": "Up",
"down": "Down",
@ -839,7 +839,7 @@
},
"uptimerobot": {
"status": "상태",
"uptime": "Uptime",
"uptime": "가동 시간",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
@ -906,7 +906,7 @@
},
"tandoor": {
"users": "사용자",
"recipes": "Recipes",
"recipes": "레시피",
"keywords": "키워드"
},
"homebox": {
@ -947,7 +947,7 @@
},
"frigate": {
"cameras": "카메라",
"uptime": "Uptime",
"uptime": "가동 시간",
"version": "버전"
},
"linkwarden": {
@ -1024,7 +1024,7 @@
"bcharge": "배터리 충전 중",
"timeleft": "남은 시간"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Battery Charge",
"timeleft": "Atlikušais laiks"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Bateri dicas",
"timeleft": "Masa Tinggal"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Batterij opladen",
"timeleft": "Resterende Tijd"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Batteriladning",
"timeleft": "Gjenstående tid"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -149,8 +149,8 @@
"received": "Odebrane",
"sent": "Wysłane",
"externalIPAddress": "Pub. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
"externalIPv6Address": "Zewn. IPv6",
"externalIPv6Prefix": "Zewn. prefiks IPv6"
},
"caddy": {
"upstreams": "Upstreams",
@ -705,8 +705,8 @@
"time": "Czas"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
"networth": "Wartość netto",
"budget": "Budżet"
},
"grafana": {
"dashboards": "Panel główny",
@ -886,7 +886,7 @@
"notifications": "Powiadomienia",
"issues": "Zgłoszenia",
"pulls": "Żądania Pull",
"repositories": "Repositories"
"repositories": "Repozytoria"
},
"stash": {
"scenes": "Sceny",
@ -1024,12 +1024,12 @@
"bcharge": "Stan baterii",
"timeleft": "Pozostało"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"karakeep": {
"bookmarks": "Zakładki",
"favorites": "Ulubione",
"archived": "Zarchiwizowane",
"highlights": "Wyróżnione",
"lists": "Listy",
"tags": "Tagi"
},
"slskd": {

View file

@ -1024,7 +1024,7 @@
"bcharge": "Carga da bateria",
"timeleft": "Tempo Restante"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -886,7 +886,7 @@
"notifications": "Notificações",
"issues": "Problemas",
"pulls": "Solicitações de Envio",
"repositories": "Repositories"
"repositories": "Repositórios"
},
"stash": {
"scenes": "Cenas",
@ -1024,8 +1024,8 @@
"bcharge": "Carga da bateria",
"timeleft": "Tempo restante"
},
"hoarder": {
"bookmarks": "Favoritos",
"karakeep": {
"bookmarks": "Marcadores",
"favorites": "Favoritos",
"archived": "Arquivados",
"highlights": "Destaques",
@ -1036,7 +1036,7 @@
"slskStatus": "Rede",
"connected": "Conectado",
"disconnected": "Desconectado",
"updateStatus": "Update",
"updateStatus": "Atualize",
"update_yes": "Disponível",
"update_no": "Atualizado",
"downloads": "Transferências",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Battery Charge",
"timeleft": "Timp rămas"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -886,7 +886,7 @@
"notifications": "Уведомления",
"issues": "Вопросы",
"pulls": "Запросы на слияние (Pull Request)",
"repositories": "Repositories"
"repositories": "Репозитории"
},
"stash": {
"scenes": "Сцены",
@ -1024,10 +1024,10 @@
"bcharge": "Заряд батареи",
"timeleft": "Осталось"
},
"hoarder": {
"karakeep": {
"bookmarks": "Закладки",
"favorites": "Избранное",
"archived": "Архивированное",
"archived": "Архив",
"highlights": "События",
"lists": "Список",
"tags": "Теги"

View file

@ -1024,7 +1024,7 @@
"bcharge": "Nabitie batérie",
"timeleft": "Zostávajúci čas"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Napolnjenost baterije",
"timeleft": "Preostali čas"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Battery Charge",
"timeleft": "Tid kvar"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Battery Charge",
"timeleft": "మిగిలి వున్న సమయం"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -1024,7 +1024,7 @@
"bcharge": "Pil Yüzdesi",
"timeleft": "Kalan Zaman"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -120,7 +120,7 @@
"grid_power": "Сітка",
"home_power": "Споживання",
"charge_power": "Зарядний пристрій",
"kilowatt": "kW"
"kilowatt": "кВт"
},
"flood": {
"download": "Завантажено",
@ -149,8 +149,8 @@
"received": "Отримано",
"sent": "Надіслано",
"externalIPAddress": "Зовнішній IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
"externalIPv6Address": "Зовнішній IPv6",
"externalIPv6Prefix": "Зовнішній Префікс IPv6-"
},
"caddy": {
"upstreams": "Потоки",
@ -178,7 +178,7 @@
"connectedAp": "Підключені точки доступу",
"activeUser": "Активні пристрої",
"alerts": "Оповіщення",
"connectedGateways": "Connected gateways",
"connectedGateways": "Підключені шлюзи",
"connectedSwitches": "Підключені перемикачі"
},
"nzbget": {
@ -420,8 +420,8 @@
},
"authentik": {
"users": "Користувачі",
"loginsLast24H": "Вхід (24 години)",
"failedLoginsLast24H": "Невдалі входи (24 години)"
"loginsLast24H": "Вхід (протягом доби)",
"failedLoginsLast24H": "Невдалі входи (протягом доби)"
},
"proxmox": {
"mem": "ОЗП",
@ -434,7 +434,7 @@
"load": "Завантаження",
"wait": "Будь ласка, зачекайте",
"temp": "Температура",
"_temp": "Темп.",
"_temp": "Температура",
"warn": "Увага",
"uptime": "Онлайн",
"total": "Усього",
@ -616,7 +616,7 @@
},
"opendtu": {
"yieldDay": "Сьогодні",
"absolutePower": "Абс. потуж.",
"absolutePower": "Потужність",
"relativePower": "Заряд %",
"limit": "Ліміт"
},
@ -648,13 +648,13 @@
"wanStatus": "Статус WAN",
"up": "Онлайн",
"down": "Офлайн",
"temp": "Темп.",
"temp": "Температура",
"disk": "Використання диска",
"wanIP": "WAN IP"
},
"proxmoxbackupserver": {
"datastore_usage": "Сховище даних",
"failed_tasks_24h": "Невиконані завдання 24 години",
"failed_tasks_24h": "Невиконані завдання за останню добу",
"cpu_usage": "ЦП",
"memory_usage": "Пам'ять"
},
@ -705,8 +705,8 @@
"time": "Час"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
"networth": "Чисті Активи",
"budget": "Бюджет"
},
"grafana": {
"dashboards": "Інформаційні панелі",
@ -831,7 +831,7 @@
},
"openwrt": {
"uptime": "Час роботи",
"cpuLoad": "Сер. навантаження ЦП (5 хв)",
"cpuLoad": "Сер. навантаження ЦП (\"5\" хв)",
"up": "Онлайн",
"down": "Офлайн",
"bytesTx": "Передано",
@ -855,7 +855,7 @@
"inCinemas": "У кінотеатрах",
"physicalRelease": "Фізичний реліз",
"digitalRelease": "Цифровий реліз",
"noEventsToday": "Події на сьогодні відсутні",
"noEventsToday": "Події на сьогодні відсутні!",
"noEventsFound": "Події не знайдено"
},
"romm": {
@ -886,7 +886,7 @@
"notifications": "Сповіщення",
"issues": "Питання",
"pulls": "Pull-запити",
"repositories": "Repositories"
"repositories": "Репозиторії"
},
"stash": {
"scenes": "Сцени",
@ -1024,23 +1024,23 @@
"bcharge": "Заряд батареї",
"timeleft": "Залишилось"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"karakeep": {
"bookmarks": "Закладки",
"favorites": "Обране",
"archived": "Заархівовані",
"highlights": "Основні моменти",
"lists": "Списки",
"tags": "Теги"
},
"slskd": {
"slskStatus": "Мережа",
"connected": "З'єднано",
"disconnected": "Відключено",
"updateStatus": "Update",
"updateStatus": "Оновити",
"update_yes": "Доступно",
"update_no": "Актуально",
"downloads": "Downloads",
"uploads": "Uploads",
"downloads": "Завантаження",
"uploads": "Вивантаження",
"sharedFiles": "Файли"
}
}

View file

@ -1024,7 +1024,7 @@
"bcharge": "Battery Charge",
"timeleft": "Thời gian còn lại"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -5,9 +5,9 @@
"bbytes": "{{value, bytes(binary: true)}}",
"bbits": "{{value, bytes(bits: true; binary: true)}}",
"byterate": "{{value, rate(bits: false)}}",
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibyterate": "{{value, bytes(bits: true; binary: true)}}",
"bitrate": "{{value, rate(bits: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}",
"bibitrate": "{{value, bytes(bits: true; binary: true)}}",
"percent": "{{value, percent}}",
"number": "{{value, number}}",
"ms": "{{value, number}}",
@ -120,7 +120,7 @@
"grid_power": "電網",
"home_power": "電源使用率",
"charge_power": "充電",
"kilowatt": "kW"
"kilowatt": "千瓦"
},
"flood": {
"download": "下載速率",
@ -140,7 +140,7 @@
"connectionStatusPendingDisconnect": "待辦的斷開",
"connectionStatusDisconnecting": "正在中斷連線",
"connectionStatusDisconnected": "連接已中斷",
"connectionStatusConnected": "Connected",
"connectionStatusConnected": "已連線",
"uptime": "運行時間",
"maxDown": "最大下載速率",
"maxUp": "最大上傳速率",
@ -149,8 +149,8 @@
"received": "已接收",
"sent": "已送出",
"externalIPAddress": "外部 IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
"externalIPv6Address": "外部 IP",
"externalIPv6Prefix": "擴展 IPv-前綴"
},
"caddy": {
"upstreams": "上行",
@ -178,7 +178,7 @@
"connectedAp": "已連接的存取點",
"activeUser": "在線裝置",
"alerts": "警示",
"connectedGateways": "Connected gateways",
"connectedGateways": "已連繫的網關",
"connectedSwitches": "已連接的交換器"
},
"nzbget": {
@ -229,8 +229,8 @@
"seed": "已完成下載"
},
"develancacheui": {
"cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Cache Miss Bytes"
"cachehitbytes": "快取未命中位元組",
"cachemissbytes": "快取未命中位元組"
},
"downloadstation": {
"download": "下載速率",
@ -285,9 +285,9 @@
},
"netalertx": {
"total": "全部",
"connected": "Connected",
"new_devices": "New Devices",
"down_alerts": "Down Alerts"
"connected": "已連線",
"new_devices": "新裝置",
"down_alerts": "離線警告"
},
"pihole": {
"queries": "查詢",
@ -313,13 +313,13 @@
},
"suwayomi": {
"download": "下載咗",
"nondownload": "Non-Downloaded",
"nondownload": "已下載",
"read": "已讀",
"unread": "未讀",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
"downloadedread": "已下載且已閱讀",
"downloadedunread": "已下載且未閱讀",
"nondownloadedread": "未下載但已閱讀",
"nondownloadedunread": "未下載且未閱讀"
},
"tailscale": {
"address": "位址",
@ -337,15 +337,15 @@
},
"technitium": {
"totalQueries": "查詢",
"totalNoError": "Success",
"totalServerFailure": "Failures",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
"totalAuthoritative": "Authoritative",
"totalRecursive": "Recursive",
"totalCached": "Cached",
"totalNoError": "成功",
"totalServerFailure": "失敗",
"totalNxDomain": "網域",
"totalRefused": "對方拒投誠信",
"totalAuthoritative": "權威的",
"totalRecursive": "遞迴",
"totalCached": "快取",
"totalBlocked": "封鎖",
"totalDropped": "Dropped",
"totalDropped": "丟棄",
"totalClients": "客戶端"
},
"tdarr": {
@ -705,8 +705,8 @@
"time": "時間"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
"networth": "淨值",
"budget": "預算"
},
"grafana": {
"dashboards": "控制面板",
@ -860,16 +860,16 @@
},
"romm": {
"platforms": "平台",
"totalRoms": "Games",
"saves": "Saves",
"states": "States",
"screenshots": "Screenshots",
"totalfilesize": "Total Size"
"totalRoms": "遊戲",
"saves": "已儲存",
"states": "",
"screenshots": "螢幕截圖",
"totalfilesize": "大小總計"
},
"mailcow": {
"domains": "域",
"mailboxes": "Mailboxes",
"mails": "Mails",
"mailboxes": "信箱",
"mails": "郵件數",
"storage": "儲存空間"
},
"netdata": {
@ -886,7 +886,7 @@
"notifications": "信息",
"issues": "出版",
"pulls": "提取請求",
"repositories": "Repositories"
"repositories": "套件來源"
},
"stash": {
"scenes": "場景",
@ -922,16 +922,16 @@
"bans": "禁止"
},
"wgeasy": {
"connected": "Connected",
"connected": "已連線",
"enabled": "啟用",
"disabled": "停用咗",
"total": "全部"
},
"swagdashboard": {
"proxied": "Proxied",
"auth": "With Auth",
"outdated": "Outdated",
"banned": "Banned"
"proxied": "已代理",
"auth": "已授權",
"outdated": "須更新",
"banned": "已封鎖"
},
"myspeed": {
"ping": "延遲",
@ -939,43 +939,43 @@
"upload": "上傳速率"
},
"stocks": {
"stocks": "Stocks",
"loading": "Loading",
"open": "Open - US Market",
"closed": "Closed - US Market",
"invalidConfiguration": "Invalid Configuration"
"stocks": "股票",
"loading": "載入中 ",
"open": "美國市場已開放",
"closed": "美國市場已關閉",
"invalidConfiguration": "無效的設定"
},
"frigate": {
"cameras": "Cameras",
"cameras": " ",
"uptime": "運行時間",
"version": "版本"
},
"linkwarden": {
"links": "Links",
"collections": "Collections",
"links": " ",
"collections": "收藏庫",
"tags": "標籤"
},
"zabbix": {
"unclassified": "Not classified",
"unclassified": "未分類",
"information": "資訊",
"warning": "Warning",
"average": "Average",
"high": "High",
"disaster": "Disaster"
"warning": "警告",
"average": "平均",
"high": "高優先權",
"disaster": "災難"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
"vehicle": "車輛",
"vehicles": "車輛",
"serviceRecords": "保養記錄",
"reminders": "提醒",
"nextReminder": "下一個提醒",
"none": "沒有"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
"projects": "正在應用的項目",
"tasks7d": "本週到期任務",
"tasksOverdue": "逾期處理",
"tasksInProgress": "正在執行的任務"
},
"headscale": {
"name": "名稱",
@ -987,7 +987,7 @@
},
"beszel": {
"name": "名稱",
"systems": "Systems",
"systems": "系統",
"up": "在線",
"down": "離線",
"paused": "擱置中",
@ -996,27 +996,27 @@
"updated": "已更新",
"cpu": "CPU",
"memory": "記憶體",
"disk": "Disk",
"network": "NET"
"disk": "儲存空間",
"network": "網路"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"apps": "應用程式",
"synced": "已同步",
"outOfSync": "不同步",
"healthy": "健康",
"degraded": "Degraded",
"progressing": "Progressing",
"degraded": "已降級",
"progressing": "進度",
"missing": "缺少",
"suspended": "Suspended"
"suspended": "暫停"
},
"spoolman": {
"loading": "Loading"
"loading": "載入中 "
},
"gitlab": {
"groups": "Groups",
"groups": "群組",
"issues": "出版",
"merges": "Merge Requests",
"projects": "Projects"
"merges": "合併請求",
"projects": ""
},
"apcups": {
"status": "狀況",
@ -1024,23 +1024,23 @@
"bcharge": "充電",
"timeleft": "用時"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"karakeep": {
"bookmarks": "書籤",
"favorites": "我的最愛",
"archived": "已存檔",
"highlights": "標記",
"lists": "列表",
"tags": "標籤"
},
"slskd": {
"slskStatus": "網絡",
"connected": "Connected",
"connected": "已連線",
"disconnected": "連接已中斷",
"updateStatus": "Update",
"updateStatus": "更新",
"update_yes": "可用",
"update_no": "已更新至最新",
"downloads": "Downloads",
"uploads": "Uploads",
"downloads": "下載",
"uploads": "上傳",
"sharedFiles": "檔案"
}
}

View file

@ -1024,7 +1024,7 @@
"bcharge": "充电中",
"timeleft": "剩余时间"
},
"hoarder": {
"karakeep": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",

View file

@ -5,9 +5,9 @@
"bbytes": "{{value, bytes(binary: true)}}",
"bbits": "{{value, bytes(bits: true; binary: true)}}",
"byterate": "{{value, rate(bits: false)}}",
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibyterate": "{{value, bytes(bits: true; binary: true)}}",
"bitrate": "{{value, rate(bits: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}",
"bibitrate": "{{value, bytes(bits: true; binary: true)}}",
"percent": "{{value, percent}}",
"number": "{{value, number}}",
"ms": "{{value, number}}",
@ -120,7 +120,7 @@
"grid_power": "電網",
"home_power": "電源使用率",
"charge_power": "充電",
"kilowatt": "kW"
"kilowatt": "千瓦"
},
"flood": {
"download": "下載速率",
@ -140,7 +140,7 @@
"connectionStatusPendingDisconnect": "待辦的斷開",
"connectionStatusDisconnecting": "正在中斷連線",
"connectionStatusDisconnected": "連接已中斷",
"connectionStatusConnected": "Connected",
"connectionStatusConnected": "已連線",
"uptime": "運行時間",
"maxDown": "最大下載速率",
"maxUp": "最大上傳速率",
@ -149,8 +149,8 @@
"received": "已接收",
"sent": "已送出",
"externalIPAddress": "外部 IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
"externalIPv6Address": "外部 IP",
"externalIPv6Prefix": "擴展 IPv-前綴"
},
"caddy": {
"upstreams": "上行",
@ -178,7 +178,7 @@
"connectedAp": "已連接的存取點",
"activeUser": "在線裝置",
"alerts": "警示",
"connectedGateways": "Connected gateways",
"connectedGateways": "已連繫的網關",
"connectedSwitches": "已連接的交換器"
},
"nzbget": {
@ -229,8 +229,8 @@
"seed": "已完成下載"
},
"develancacheui": {
"cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Cache Miss Bytes"
"cachehitbytes": "快取未命中位元組",
"cachemissbytes": "快取未命中位元組"
},
"downloadstation": {
"download": "下載速率",
@ -285,9 +285,9 @@
},
"netalertx": {
"total": "全部",
"connected": "Connected",
"new_devices": "New Devices",
"down_alerts": "Down Alerts"
"connected": "已連線",
"new_devices": "新裝置",
"down_alerts": "離線警告"
},
"pihole": {
"queries": "查詢",
@ -313,13 +313,13 @@
},
"suwayomi": {
"download": "已下載",
"nondownload": "Non-Downloaded",
"nondownload": "已下載",
"read": "已讀",
"unread": "未讀",
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
"downloadedread": "已下載且已閱讀",
"downloadedunread": "已下載且未閱讀",
"nondownloadedread": "未下載但已閱讀",
"nondownloadedunread": "未下載且未閱讀"
},
"tailscale": {
"address": "位址",
@ -337,15 +337,15 @@
},
"technitium": {
"totalQueries": "查詢",
"totalNoError": "Success",
"totalServerFailure": "Failures",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
"totalAuthoritative": "Authoritative",
"totalRecursive": "Recursive",
"totalCached": "Cached",
"totalNoError": "成功",
"totalServerFailure": "失敗",
"totalNxDomain": "網域",
"totalRefused": "對方拒投誠信",
"totalAuthoritative": "權威的",
"totalRecursive": "遞迴",
"totalCached": "快取",
"totalBlocked": "已阻擋",
"totalDropped": "Dropped",
"totalDropped": "丟棄",
"totalClients": "客戶端"
},
"tdarr": {
@ -705,8 +705,8 @@
"time": "時間"
},
"firefly": {
"networth": "Net Worth",
"budget": "Budget"
"networth": "淨值",
"budget": "預算"
},
"grafana": {
"dashboards": "控制面板",
@ -860,16 +860,16 @@
},
"romm": {
"platforms": "平台",
"totalRoms": "Games",
"saves": "Saves",
"states": "States",
"screenshots": "Screenshots",
"totalfilesize": "Total Size"
"totalRoms": "遊戲",
"saves": "已儲存",
"states": "",
"screenshots": "螢幕截圖",
"totalfilesize": "大小總計"
},
"mailcow": {
"domains": "網域",
"mailboxes": "Mailboxes",
"mails": "Mails",
"mailboxes": "信箱",
"mails": "郵件數",
"storage": "儲存空間"
},
"netdata": {
@ -886,7 +886,7 @@
"notifications": "信息",
"issues": "出版",
"pulls": "提取請求",
"repositories": "Repositories"
"repositories": "套件來源"
},
"stash": {
"scenes": "場景",
@ -922,16 +922,16 @@
"bans": "禁止"
},
"wgeasy": {
"connected": "Connected",
"connected": "已連線",
"enabled": "已啟用",
"disabled": "已停用",
"total": "全部"
},
"swagdashboard": {
"proxied": "Proxied",
"auth": "With Auth",
"outdated": "Outdated",
"banned": "Banned"
"proxied": "已代理",
"auth": "已授權",
"outdated": "須更新",
"banned": "已封鎖"
},
"myspeed": {
"ping": "延遲",
@ -939,43 +939,43 @@
"upload": "上傳速率"
},
"stocks": {
"stocks": "Stocks",
"loading": "Loading",
"open": "Open - US Market",
"closed": "Closed - US Market",
"invalidConfiguration": "Invalid Configuration"
"stocks": "股票",
"loading": "載入中 ",
"open": "美國市場已開放",
"closed": "美國市場已關閉",
"invalidConfiguration": "無效的設定"
},
"frigate": {
"cameras": "Cameras",
"cameras": " ",
"uptime": "運行時間",
"version": "版本"
},
"linkwarden": {
"links": "Links",
"collections": "Collections",
"links": " ",
"collections": "收藏庫",
"tags": "標籤"
},
"zabbix": {
"unclassified": "Not classified",
"unclassified": "未分類",
"information": "資訊",
"warning": "Warning",
"average": "Average",
"high": "High",
"disaster": "Disaster"
"warning": "警告",
"average": "平均",
"high": "高優先權",
"disaster": "災難"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
"vehicle": "車輛",
"vehicles": "車輛",
"serviceRecords": "保養記錄",
"reminders": "提醒",
"nextReminder": "下一個提醒",
"none": "沒有"
},
"vikunja": {
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
"projects": "正在應用的項目",
"tasks7d": "本週到期任務",
"tasksOverdue": "逾期處理",
"tasksInProgress": "正在執行的任務"
},
"headscale": {
"name": "名稱",
@ -987,7 +987,7 @@
},
"beszel": {
"name": "名稱",
"systems": "Systems",
"systems": "系統",
"up": "在線",
"down": "離線",
"paused": "擱置中",
@ -996,27 +996,27 @@
"updated": "已更新",
"cpu": "CPU",
"memory": "記憶體",
"disk": "Disk",
"network": "NET"
"disk": "儲存空間",
"network": "網路"
},
"argocd": {
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"apps": "應用程式",
"synced": "已同步",
"outOfSync": "不同步",
"healthy": "健康",
"degraded": "Degraded",
"progressing": "Progressing",
"degraded": "已降級",
"progressing": "進度",
"missing": "缺少",
"suspended": "Suspended"
"suspended": "暫停"
},
"spoolman": {
"loading": "Loading"
"loading": "載入中 "
},
"gitlab": {
"groups": "Groups",
"groups": "群組",
"issues": "出版",
"merges": "Merge Requests",
"projects": "Projects"
"merges": "合併請求",
"projects": ""
},
"apcups": {
"status": "狀態",
@ -1024,23 +1024,23 @@
"bcharge": "充電",
"timeleft": "剩餘時間"
},
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"karakeep": {
"bookmarks": "書籤",
"favorites": "我的最愛",
"archived": "已存檔",
"highlights": "標記",
"lists": "列表",
"tags": "標籤"
},
"slskd": {
"slskStatus": "網絡",
"connected": "Connected",
"connected": "已連線",
"disconnected": "連接已中斷",
"updateStatus": "Update",
"updateStatus": "更新",
"update_yes": "可觀看",
"update_no": "已更新至最新",
"downloads": "Downloads",
"uploads": "Uploads",
"downloads": "下載",
"uploads": "上傳",
"sharedFiles": "檔案"
}
}

View file

@ -1,10 +1,10 @@
import { useRef, useEffect } from "react";
import classNames from "classnames";
import { Disclosure, Transition } from "@headlessui/react";
import { MdKeyboardArrowDown } from "react-icons/md";
import ErrorBoundary from "components/errorboundry";
import classNames from "classnames";
import List from "components/bookmarks/list";
import ErrorBoundary from "components/errorboundry";
import ResolvedIcon from "components/resolvedicon";
import { useEffect, useRef } from "react";
import { MdKeyboardArrowDown } from "react-icons/md";
export default function BookmarksGroup({
bookmarks,

View file

@ -1,7 +1,7 @@
import { useContext } from "react";
import classNames from "classnames";
import { SettingsContext } from "utils/contexts/settings";
import ResolvedIcon from "components/resolvedicon";
import { useContext } from "react";
import { SettingsContext } from "utils/contexts/settings";
export default function Item({ bookmark, iconOnly = false }) {
const description = bookmark.description ?? new URL(bookmark.href).hostname;

View file

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

View file

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

View file

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

View file

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

View file

@ -1,9 +1,9 @@
import { useRef, useEffect } from "react";
import classNames from "classnames";
import { Disclosure, Transition } from "@headlessui/react";
import { MdKeyboardArrowDown } from "react-icons/md";
import List from "components/services/list";
import classNames from "classnames";
import ResolvedIcon from "components/resolvedicon";
import List from "components/services/list";
import { useEffect, useRef } from "react";
import { MdKeyboardArrowDown } from "react-icons/md";
import { columnMap } from "../../utils/layout/columns";

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,8 +1,8 @@
import { compareVersions, validate } from "compare-versions";
import cache from "memory-cache";
import { useTranslation } from "next-i18next";
import useSWR from "swr";
import { compareVersions, validate } from "compare-versions";
import { MdNewReleases } from "react-icons/md";
import useSWR from "swr";
const LATEST_RELEASE_CACHE_KEY = "latestRelease";

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
import useSWR from "swr";
import Error from "../widget/error";
import Container from "../widget/container";
import Error from "../widget/error";
import Raw from "../widget/raw";
import Node from "./node";
@ -32,8 +32,8 @@ export default function Longhorn({ options }) {
<div className="flex flex-row self-center flex-wrap justify-between">
{data.nodes
.filter((node) => {
if (node.id === "total" && total) {
return true;
if (node.id === "total") {
return total;
}
if (!nodes) {
return false;

View file

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

View file

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

View file

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

View file

@ -1,9 +1,9 @@
import useSWR from "swr";
import { FaThermometerHalf } from "react-icons/fa";
import { useTranslation } from "next-i18next";
import { FaThermometerHalf } from "react-icons/fa";
import useSWR from "swr";
import Resource from "../widget/resource";
import Error from "../widget/error";
import Resource from "../widget/resource";
function convertToFahrenheit(t) {
return (t * 9) / 5 + 32;

View file

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

View file

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

View file

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

View file

@ -1,12 +1,12 @@
import Container from "../widget/container";
import Raw from "../widget/raw";
import Disk from "./disk";
import Cpu from "./cpu";
import Memory from "./memory";
import CpuTemp from "./cputemp";
import Uptime from "./uptime";
import Disk from "./disk";
import Memory from "./memory";
import Network from "./network";
import Uptime from "./uptime";
export default function Resources({ options }) {
const { expanded, units, diskUnits, tempmin, tempmax } = options;

View file

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

View file

@ -1,10 +1,10 @@
import { useState, useEffect, Fragment } from "react";
import { useTranslation } from "next-i18next";
import { FiSearch } from "react-icons/fi";
import { SiDuckduckgo, SiGoogle, SiBaidu, SiBrave } from "react-icons/si";
import { BiLogoBing } from "react-icons/bi";
import { Listbox, Transition, Combobox } from "@headlessui/react";
import { Combobox, Listbox, Transition } from "@headlessui/react";
import classNames from "classnames";
import { useTranslation } from "next-i18next";
import { Fragment, useEffect, useState } from "react";
import { BiLogoBing } from "react-icons/bi";
import { FiSearch } from "react-icons/fi";
import { SiBaidu, SiBrave, SiDuckduckgo, SiGoogle } from "react-icons/si";
import ContainerForm from "../widget/container_form";
import Raw from "../widget/raw";

View file

@ -1,13 +1,13 @@
import useSWR from "swr";
import { useState } from "react";
import { useTranslation } from "next-i18next";
import { useState } from "react";
import { FaChartLine } from "react-icons/fa6";
import useSWR from "swr";
import Error from "../widget/error";
import Container from "../widget/container";
import Error from "../widget/error";
import PrimaryText from "../widget/primary_text";
import WidgetIcon from "../widget/widget_icon";
import Raw from "../widget/raw";
import WidgetIcon from "../widget/widget_icon";
export default function Widget({ options }) {
const { t, i18n } = useTranslation();

View file

@ -1,13 +1,13 @@
import { BiError, BiWifi, BiCheckCircle, BiXCircle, BiNetworkChart } from "react-icons/bi";
import { MdSettingsEthernet } from "react-icons/md";
import { useTranslation } from "next-i18next";
import { BiCheckCircle, BiError, BiNetworkChart, BiWifi, BiXCircle } from "react-icons/bi";
import { MdSettingsEthernet } from "react-icons/md";
import { SiUbiquiti } from "react-icons/si";
import Error from "../widget/error";
import Container from "../widget/container";
import Error from "../widget/error";
import PrimaryText from "../widget/primary_text";
import Raw from "../widget/raw";
import WidgetIcon from "../widget/widget_icon";
import PrimaryText from "../widget/primary_text";
import useWidgetAPI from "utils/proxy/use-widget-api";

View file

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

View file

@ -1,5 +1,5 @@
import dynamic from "next/dynamic";
import ErrorBoundary from "components/errorboundry";
import dynamic from "next/dynamic";
const widgetMappings = {
weatherapi: dynamic(() => import("components/widgets/weather/weather")),

View file

@ -2,10 +2,10 @@ import classNames from "classnames";
import { useContext } from "react";
import { SettingsContext } from "utils/contexts/settings";
import WidgetIcon from "./widget_icon";
import PrimaryText from "./primary_text";
import SecondaryText from "./secondary_text";
import Raw from "./raw";
import SecondaryText from "./secondary_text";
import WidgetIcon from "./widget_icon";
export function getAllClasses(options, additionalClassNames = "") {
if (options?.style?.header === "boxedWidgets") {

View file

@ -1,4 +1,4 @@
import { getAllClasses, getInnerBlock, getBottomBlock } from "./container";
import { getAllClasses, getBottomBlock, getInnerBlock } from "./container";
export default function ContainerButton({ children = [], options, additionalClassNames = "", callback }) {
return (

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