mirror of
https://github.com/DI0IK/homepage-plus.git
synced 2025-07-07 06:08:48 +00:00
Compare commits
23 commits
v1.1.1-plu
...
homepage-p
Author | SHA1 | Date | |
---|---|---|---|
1370cd195a | |||
![]() |
2376184b14 | ||
![]() |
7272823d20 | ||
![]() |
4a9ca62efd | ||
![]() |
a35da39c03 | ||
![]() |
d99c3cb691 | ||
![]() |
1fe4f49771 | ||
![]() |
0a1bf3b2be | ||
![]() |
e2c997f29d | ||
![]() |
ae9fbdcb8b | ||
![]() |
6597ec566b | ||
![]() |
52399e21e1 | ||
![]() |
dbc26e835c | ||
![]() |
a59ee5a605 | ||
![]() |
f46568ec2a | ||
![]() |
5e946ed2c2 | ||
![]() |
6741eb723d | ||
![]() |
1666106dcd | ||
![]() |
eda06965fa | ||
![]() |
954ab54493 | ||
![]() |
30cb893354 | ||
![]() |
4567427b9c | ||
![]() |
ee7e8fab61 |
355 changed files with 2084 additions and 1567 deletions
|
@ -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/
|
||||||
|
|
4
.github/workflows/crowdin.yml
vendored
4
.github/workflows/crowdin.yml
vendored
|
@ -2,8 +2,8 @@ name: Crowdin Action
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
# schedule:
|
||||||
- cron: '2 */12 * * *'
|
# - cron: '2 */12 * * *'
|
||||||
push:
|
push:
|
||||||
paths: [
|
paths: [
|
||||||
'/public/locales/en/**',
|
'/public/locales/en/**',
|
||||||
|
|
146
.github/workflows/docker-publish.yml
vendored
146
.github/workflows/docker-publish.yml
vendored
|
@ -1,20 +1,16 @@
|
||||||
name: Docker
|
name: Docker CI
|
||||||
|
|
||||||
# This workflow uses actions that are not certified by GitHub.
|
|
||||||
# They are provided by a third-party and are governed by
|
|
||||||
# separate terms of service, privacy policy, and support
|
|
||||||
# documentation.
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
# schedule:
|
||||||
- cron: '20 0 * * *'
|
# - cron: '20 0 * * *'
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- feature/**
|
- feature/**
|
||||||
- dev
|
- dev
|
||||||
|
- homepage-plus
|
||||||
# Publish semver tags as releases.
|
# Publish semver tags as releases.
|
||||||
tags: [ 'v*.*.*' ]
|
tags: [ 'v*.*.*-plus' ]
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
- 'mkdocs.yml'
|
- 'mkdocs.yml'
|
||||||
|
@ -24,91 +20,58 @@ on:
|
||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
- 'mkdocs.yml'
|
- 'mkdocs.yml'
|
||||||
merge_group:
|
merge_group:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
# github.repository as <account>/<repo>
|
|
||||||
IMAGE_NAME: ${{ github.repository }}
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
pre-commit:
|
pre-commit:
|
||||||
name: Linting Checks
|
name: Linting Checks
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
-
|
- name: Checkout repository
|
||||||
name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
-
|
|
||||||
name: Install python
|
- name: Install python
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: 3.x
|
python-version: 3.x
|
||||||
-
|
|
||||||
name: Check files
|
- name: Check files
|
||||||
uses: pre-commit/action@v3.0.1
|
uses: pre-commit/action@v3.0.1
|
||||||
-
|
|
||||||
name: Install pnpm
|
- name: Install pnpm
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
with:
|
with:
|
||||||
version: 10
|
version: 10
|
||||||
run_install: false
|
run_install: false
|
||||||
-
|
|
||||||
name: Install Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 20
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
-
|
|
||||||
name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install
|
run: pnpm install
|
||||||
-
|
|
||||||
name: Lint frontend
|
- name: Lint frontend
|
||||||
run: pnpm run lint
|
run: pnpm run lint
|
||||||
|
|
||||||
build:
|
build:
|
||||||
name: Docker Build & Push
|
name: Docker Build & Push
|
||||||
if: github.repository == 'gethomepage/homepage'
|
runs-on: ubuntu-latest
|
||||||
runs-on: self-hosted
|
|
||||||
needs:
|
needs:
|
||||||
- pre-commit
|
- pre-commit
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
packages: write
|
packages: write
|
||||||
# This is used to complete the identity challenge
|
|
||||||
# with sigstore/fulcio when running outside of PRs.
|
|
||||||
id-token: write
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
# Login to Docker Registry
|
|
||||||
# https://github.com/docker/login-action
|
|
||||||
- name: Log into registry ${{ env.REGISTRY }}
|
|
||||||
if: github.event_name != 'pull_request'
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
registry: ghcr.io
|
|
||||||
username: ${{ github.actor }}
|
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
- name: Login to Docker Hub
|
|
||||||
if: github.event_name != 'pull_request'
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
||||||
|
|
||||||
# Setup QEMU
|
|
||||||
# https://github.com/marketplace/actions/docker-setup-buildx#with-qemu
|
|
||||||
- name: Setup QEMU
|
|
||||||
uses: docker/setup-qemu-action@v3.6.0
|
|
||||||
|
|
||||||
# Workaround: https://github.com/docker/build-push-action/issues/461
|
|
||||||
- name: Setup Docker buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
|
|
||||||
# Extract metadata (tags, labels) for Docker
|
|
||||||
# https://github.com/docker/metadata-action
|
|
||||||
- name: Extract Docker metadata
|
- name: Extract Docker metadata
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@v5
|
||||||
|
@ -116,11 +79,69 @@ jobs:
|
||||||
images: |
|
images: |
|
||||||
${{ env.IMAGE_NAME }}
|
${{ env.IMAGE_NAME }}
|
||||||
ghcr.io/${{ env.IMAGE_NAME }}
|
ghcr.io/${{ env.IMAGE_NAME }}
|
||||||
|
tags: |
|
||||||
|
# Default tags
|
||||||
|
type=schedule,pattern=nightly
|
||||||
|
type=ref,event=branch
|
||||||
|
type=ref,event=tag
|
||||||
|
# Versioning tags
|
||||||
|
type=semver,pattern=v{{version}}
|
||||||
|
type=semver,pattern=v{{major}}.{{minor}}
|
||||||
|
type=semver,pattern=v{{major}}
|
||||||
flavor: |
|
flavor: |
|
||||||
latest=auto
|
latest=auto
|
||||||
|
|
||||||
# Build and push Docker image with Buildx (don't push on PR)
|
- name: Next.js build cache
|
||||||
# https://github.com/docker/build-push-action
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: .next/cache
|
||||||
|
key: nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('**/*.js', '**/*.jsx') }}
|
||||||
|
restore-keys: |
|
||||||
|
nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
|
||||||
|
|
||||||
|
- name: Install pnpm
|
||||||
|
uses: pnpm/action-setup@v4
|
||||||
|
with:
|
||||||
|
version: 10
|
||||||
|
run_install: false
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install
|
||||||
|
|
||||||
|
- name: Build app
|
||||||
|
run: |
|
||||||
|
NEXT_PUBLIC_BUILDTIME="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}" \
|
||||||
|
NEXT_PUBLIC_VERSION="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}" \
|
||||||
|
NEXT_PUBLIC_REVISION="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}" \
|
||||||
|
pnpm run build
|
||||||
|
|
||||||
|
- name: Log into registry ${{ env.REGISTRY }}
|
||||||
|
if: github.event_name != 'pull_request'
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
if: github.event_name != 'pull_request'
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Setup QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3.6.0
|
||||||
|
|
||||||
|
- name: Setup Docker buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
id: build-and-push
|
id: build-and-push
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
|
@ -130,18 +151,15 @@ jobs:
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
build-args: |
|
build-args: |
|
||||||
|
CI=true
|
||||||
BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}
|
BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}
|
||||||
VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
|
VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
|
||||||
REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
|
REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
|
||||||
# https://github.com/docker/setup-qemu-action#about
|
|
||||||
# platforms: linux/amd64,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
|
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
cache-from: type=local,src=/tmp/.buildx-cache
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
|
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
|
||||||
|
|
||||||
# Temp fix
|
# https://github.com/docker/build-push-action/issues/252 / https://github.com/moby/buildkit/issues/1896
|
||||||
# https://github.com/docker/build-push-action/issues/252
|
|
||||||
# https://github.com/moby/buildkit/issues/1896
|
|
||||||
- name: Move cache
|
- name: Move cache
|
||||||
run: |
|
run: |
|
||||||
rm -rf /tmp/.buildx-cache
|
rm -rf /tmp/.buildx-cache
|
||||||
|
|
|
@ -9,11 +9,14 @@ repos:
|
||||||
- id: check-yaml
|
- id: check-yaml
|
||||||
exclude: "(^mkdocs\\.yml$)"
|
exclude: "(^mkdocs\\.yml$)"
|
||||||
- id: check-added-large-files
|
- id: check-added-large-files
|
||||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
- repo: https://github.com/rbubley/mirrors-prettier
|
||||||
rev: 'v3.0.3'
|
rev: 'v3.3.3'
|
||||||
hooks:
|
hooks:
|
||||||
- id: prettier
|
- id: prettier
|
||||||
types_or:
|
types_or:
|
||||||
- javascript
|
- javascript
|
||||||
- markdown
|
- markdown
|
||||||
- jsx
|
- jsx
|
||||||
|
additional_dependencies:
|
||||||
|
- prettier@3.3.3
|
||||||
|
- 'prettier-plugin-organize-imports@4.1.0'
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
{}
|
|
5
.prettierrc.js
Normal file
5
.prettierrc.js
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
const config = {
|
||||||
|
plugins: [require("prettier-plugin-organize-imports")],
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = config;
|
78
Dockerfile
78
Dockerfile
|
@ -1,67 +1,63 @@
|
||||||
# Install dependencies only when needed
|
# =========================
|
||||||
FROM docker.io/node:22-alpine AS deps
|
# Builder Stage
|
||||||
|
# =========================
|
||||||
WORKDIR /app
|
FROM node:22-slim AS builder
|
||||||
|
|
||||||
COPY --link package.json pnpm-lock.yaml* ./
|
|
||||||
|
|
||||||
SHELL ["/bin/ash", "-xeo", "pipefail", "-c"]
|
|
||||||
RUN apk add --no-cache libc6-compat \
|
|
||||||
&& apk add --no-cache --virtual .gyp python3 make g++ \
|
|
||||||
&& npm install -g pnpm
|
|
||||||
|
|
||||||
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm fetch | grep -v "cross-device link not permitted\|Falling back to copying packages from store"
|
|
||||||
|
|
||||||
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm install -r --offline
|
|
||||||
|
|
||||||
# Rebuild the source code only when needed
|
|
||||||
FROM docker.io/node:22-alpine AS builder
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Setup
|
||||||
RUN mkdir config
|
RUN mkdir config
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
ARG CI
|
||||||
ARG BUILDTIME
|
ARG BUILDTIME
|
||||||
ARG VERSION
|
ARG VERSION
|
||||||
ARG REVISION
|
ARG REVISION
|
||||||
|
ENV CI=$CI
|
||||||
|
|
||||||
COPY --link --from=deps /app/node_modules ./node_modules/
|
# Install and build only outside CI
|
||||||
COPY . .
|
RUN if [ "$CI" != "true" ]; then \
|
||||||
|
corepack enable && corepack prepare pnpm@latest --activate && \
|
||||||
|
pnpm install --frozen-lockfile --prefer-offline && \
|
||||||
|
NEXT_TELEMETRY_DISABLED=1 \
|
||||||
|
NEXT_PUBLIC_BUILDTIME=$BUILDTIME \
|
||||||
|
NEXT_PUBLIC_VERSION=$VERSION \
|
||||||
|
NEXT_PUBLIC_REVISION=$REVISION \
|
||||||
|
pnpm run build; \
|
||||||
|
else \
|
||||||
|
echo "✅ Using prebuilt app from CI context"; \
|
||||||
|
fi
|
||||||
|
|
||||||
SHELL ["/bin/ash", "-xeo", "pipefail", "-c"]
|
# =========================
|
||||||
RUN npm install -g pnpm \
|
# Runtime Stage
|
||||||
&& pnpm run telemetry \
|
# =========================
|
||||||
&& NEXT_PUBLIC_BUILDTIME=$BUILDTIME NEXT_PUBLIC_VERSION=$VERSION NEXT_PUBLIC_REVISION=$REVISION pnpm run build
|
FROM node:22-alpine AS runner
|
||||||
|
LABEL org.opencontainers.image.title="Homepage"
|
||||||
# Production image, copy all the files and run next
|
LABEL org.opencontainers.image.description="A self-hosted services landing page, with docker and service integrations."
|
||||||
FROM docker.io/node:22-alpine AS runner
|
LABEL org.opencontainers.image.url="https://github.com/di0ik/homepage-plus"
|
||||||
LABEL org.opencontainers.image.title "Homepage"
|
|
||||||
LABEL org.opencontainers.image.description "A self-hosted services landing page, with docker and service integrations."
|
|
||||||
LABEL org.opencontainers.image.url="https://github.com/gethomepage/homepage"
|
|
||||||
LABEL org.opencontainers.image.documentation='https://github.com/gethomepage/homepage/wiki'
|
LABEL org.opencontainers.image.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'
|
LABEL org.opencontainers.image.licenses='Apache-2.0'
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
# Setup
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Copy files from context (this allows the files to copy before the builder stage is done).
|
# Copy some files from context
|
||||||
COPY --link --chown=1000:1000 package.json next.config.js ./
|
|
||||||
COPY --link --chown=1000:1000 /public ./public/
|
COPY --link --chown=1000:1000 /public ./public/
|
||||||
|
|
||||||
# Copy files from builder
|
|
||||||
COPY --link --from=builder --chown=1000:1000 /app/.next/standalone ./
|
|
||||||
COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static/
|
|
||||||
COPY --link --chmod=755 docker-entrypoint.sh /usr/local/bin/
|
COPY --link --chmod=755 docker-entrypoint.sh /usr/local/bin/
|
||||||
|
|
||||||
RUN apk add --no-cache su-exec
|
# Copy only necessary files from the build stage
|
||||||
|
COPY --link --from=builder --chown=1000:1000 /app/.next/standalone/ ./
|
||||||
|
COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static
|
||||||
|
|
||||||
|
RUN apk add --no-cache su-exec iputils-ping
|
||||||
|
|
||||||
|
ENV NODE_ENV=production
|
||||||
ENV HOSTNAME=0.0.0.0
|
ENV HOSTNAME=0.0.0.0
|
||||||
ENV PORT=3000
|
ENV PORT=3000
|
||||||
EXPOSE $PORT
|
EXPOSE $PORT
|
||||||
|
|
||||||
HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \
|
HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \
|
||||||
CMD wget --no-verbose --tries=1 --spider --no-check-certificate http://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"]
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||||
CMD ["node", "server.js"]
|
CMD ["node", "server.js"]
|
||||||
|
|
|
@ -556,3 +556,42 @@ or per service widget (`services.yaml`) with:
|
||||||
```
|
```
|
||||||
|
|
||||||
If either value is set to true, the error message will be hidden.
|
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"]
|
||||||
|
```
|
||||||
|
|
|
@ -189,6 +189,7 @@ widget:
|
||||||
name: id # required, field in each item to use as the item name (left side)
|
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)
|
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
|
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
|
target: https://example.com/server/{id} # optional, makes items clickable with template support
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
```
|
|
|
@ -51,7 +51,7 @@ You can also find a list of all available service widgets in the sidebar navigat
|
||||||
- [HDHomeRun](hdhomerun.md)
|
- [HDHomeRun](hdhomerun.md)
|
||||||
- [Headscale](headscale.md)
|
- [Headscale](headscale.md)
|
||||||
- [Healthchecks](healthchecks.md)
|
- [Healthchecks](healthchecks.md)
|
||||||
- [Hoarder](hoarder.md)
|
- [Karakeep](karakeep.md)
|
||||||
- [Home Assistant](homeassistant.md)
|
- [Home Assistant](homeassistant.md)
|
||||||
- [HomeBox](homebox.md)
|
- [HomeBox](homebox.md)
|
||||||
- [Homebridge](homebridge.md)
|
- [Homebridge](homebridge.md)
|
||||||
|
|
17
docs/widgets/services/karakeep.md
Normal file
17
docs/widgets/services/karakeep.md
Normal 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
|
||||||
|
```
|
|
@ -4,9 +4,9 @@ site_name: Homepage
|
||||||
site_url: https://gethomepage.dev/
|
site_url: https://gethomepage.dev/
|
||||||
|
|
||||||
# Repository
|
# Repository
|
||||||
repo_name: gethomepage/homepage
|
repo_name: di0ik/homepage-plus
|
||||||
repo_url: https://github.com/gethomepage/homepage
|
repo_url: https://github.com/di0ik/homepage-plus
|
||||||
edit_uri: https://github.com/gethomepage/homepage/tree/main/docs/
|
edit_uri: https://github.com/di0ik/homepage-plus/tree/main/docs/
|
||||||
|
|
||||||
nav:
|
nav:
|
||||||
- "Home":
|
- "Home":
|
||||||
|
@ -74,7 +74,7 @@ nav:
|
||||||
- widgets/services/hdhomerun.md
|
- widgets/services/hdhomerun.md
|
||||||
- widgets/services/headscale.md
|
- widgets/services/headscale.md
|
||||||
- widgets/services/healthchecks.md
|
- widgets/services/healthchecks.md
|
||||||
- widgets/services/hoarder.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
|
||||||
|
|
|
@ -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`;
|
||||||
|
|
||||||
|
|
15
package.json
15
package.json
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "homepage",
|
"name": "homepage",
|
||||||
"version": "1.1.1",
|
"version": "1.2.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"preinstall": "npx only-allow pnpm",
|
"preinstall": "npx only-allow pnpm",
|
||||||
|
@ -19,13 +19,13 @@
|
||||||
"dockerode": "^4.0.4",
|
"dockerode": "^4.0.4",
|
||||||
"follow-redirects": "^1.15.9",
|
"follow-redirects": "^1.15.9",
|
||||||
"gamedig": "^5.2.0",
|
"gamedig": "^5.2.0",
|
||||||
"i18next": "^21.10.0",
|
"i18next": "^24.2.3",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.0",
|
||||||
"json-rpc-2.0": "^1.7.0",
|
"json-rpc-2.0": "^1.7.0",
|
||||||
"luxon": "^3.5.0",
|
"luxon": "^3.5.0",
|
||||||
"memory-cache": "^0.2.0",
|
"memory-cache": "^0.2.0",
|
||||||
"minecraftstatuspinger": "^1.2.2",
|
"minecraftstatuspinger": "^1.2.2",
|
||||||
"next": "^15.2.3",
|
"next": "^15.2.4",
|
||||||
"next-i18next": "^12.1.0",
|
"next-i18next": "^12.1.0",
|
||||||
"ping": "^0.4.4",
|
"ping": "^0.4.4",
|
||||||
"pretty-bytes": "^6.1.1",
|
"pretty-bytes": "^6.1.1",
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
"react-icons": "^5.4.0",
|
"react-icons": "^5.4.0",
|
||||||
"recharts": "^2.15.1",
|
"recharts": "^2.15.1",
|
||||||
"rrule": "^2.8.1",
|
"rrule": "^2.8.1",
|
||||||
"swr": "^1.3.0",
|
"swr": "^2.3.3",
|
||||||
"systeminformation": "^5.25.11",
|
"systeminformation": "^5.25.11",
|
||||||
"tough-cookie": "^5.1.2",
|
"tough-cookie": "^5.1.2",
|
||||||
"urbackup-server-api": "^0.8.9",
|
"urbackup-server-api": "^0.8.9",
|
||||||
|
@ -47,15 +47,16 @@
|
||||||
"@tailwindcss/forms": "^0.5.10",
|
"@tailwindcss/forms": "^0.5.10",
|
||||||
"@tailwindcss/postcss": "^4.0.9",
|
"@tailwindcss/postcss": "^4.0.9",
|
||||||
"eslint": "^9.21.0",
|
"eslint": "^9.21.0",
|
||||||
"eslint-config-next": "^15.1.7",
|
"eslint-config-next": "^15.2.4",
|
||||||
"eslint-config-prettier": "^10.0.2",
|
"eslint-config-prettier": "^10.1.1",
|
||||||
"eslint-plugin-import": "^2.31.0",
|
"eslint-plugin-import": "^2.31.0",
|
||||||
"eslint-plugin-jsx-a11y": "^6.10.2",
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
||||||
"eslint-plugin-prettier": "^5.2.3",
|
"eslint-plugin-prettier": "^5.2.3",
|
||||||
"eslint-plugin-react": "^7.37.4",
|
"eslint-plugin-react": "^7.37.4",
|
||||||
"eslint-plugin-react-hooks": "^5.1.0",
|
"eslint-plugin-react-hooks": "^5.1.0",
|
||||||
"postcss": "^8.5.2",
|
"postcss": "^8.5.3",
|
||||||
"prettier": "^3.5.2",
|
"prettier": "^3.5.2",
|
||||||
|
"prettier-plugin-organize-imports": "^4.1.0",
|
||||||
"tailwind-scrollbar": "^4.0.1",
|
"tailwind-scrollbar": "^4.0.1",
|
||||||
"tailwindcss": "^4.0.9",
|
"tailwindcss": "^4.0.9",
|
||||||
"typescript": "^5.7.3"
|
"typescript": "^5.7.3"
|
||||||
|
|
628
pnpm-lock.yaml
generated
628
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load diff
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Batterylading",
|
"bcharge": "Batterylading",
|
||||||
"timeleft": "Oorblywende Tyd"
|
"timeleft": "Oorblywende Tyd"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Boekmerke",
|
"bookmarks": "Boekmerke",
|
||||||
"favorites": "Gunstelinge",
|
"favorites": "Gunstelinge",
|
||||||
"archived": "Geargiveer",
|
"archived": "Geargiveer",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "شحن البطارية",
|
"bcharge": "شحن البطارية",
|
||||||
"timeleft": "الوقت المتبقي"
|
"timeleft": "الوقت المتبقي"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -394,7 +394,7 @@
|
||||||
"strelaysrv": {
|
"strelaysrv": {
|
||||||
"numActiveSessions": "Сесии",
|
"numActiveSessions": "Сесии",
|
||||||
"numConnections": "Connections",
|
"numConnections": "Connections",
|
||||||
"dataRelayed": "Relayed",
|
"dataRelayed": "",
|
||||||
"transferRate": "Скорост"
|
"transferRate": "Скорост"
|
||||||
},
|
},
|
||||||
"mastodon": {
|
"mastodon": {
|
||||||
|
@ -1002,7 +1002,7 @@
|
||||||
"argocd": {
|
"argocd": {
|
||||||
"apps": "Приложения",
|
"apps": "Приложения",
|
||||||
"synced": "Synced",
|
"synced": "Synced",
|
||||||
"outOfSync": "Out Of Sync",
|
"outOfSync": "",
|
||||||
"healthy": "Здрав",
|
"healthy": "Здрав",
|
||||||
"degraded": "Деградирани",
|
"degraded": "Деградирани",
|
||||||
"progressing": "Progressing",
|
"progressing": "Progressing",
|
||||||
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Заряд на батерията",
|
"bcharge": "Заряд на батерията",
|
||||||
"timeleft": "Оставащо Време"
|
"timeleft": "Оставащо Време"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Càrrega de la bateria",
|
"bcharge": "Càrrega de la bateria",
|
||||||
"timeleft": "Temps restant"
|
"timeleft": "Temps restant"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -85,16 +85,16 @@
|
||||||
"ping": {
|
"ping": {
|
||||||
"error": "Chyba",
|
"error": "Chyba",
|
||||||
"ping": "Odezva",
|
"ping": "Odezva",
|
||||||
"down": "Down",
|
"down": "Výpadek",
|
||||||
"up": "Up",
|
"up": "Běží",
|
||||||
"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": "Down",
|
"down": "Výpadek",
|
||||||
"up": "Up",
|
"up": "Běží",
|
||||||
"not_available": "Není k dispozici"
|
"not_available": "Není k dispozici"
|
||||||
},
|
},
|
||||||
"emby": {
|
"emby": {
|
||||||
|
@ -144,13 +144,13 @@
|
||||||
"uptime": "Doba spuštění",
|
"uptime": "Doba spuštění",
|
||||||
"maxDown": "Max. Down",
|
"maxDown": "Max. Down",
|
||||||
"maxUp": "Max. Up",
|
"maxUp": "Max. Up",
|
||||||
"down": "Down",
|
"down": "Výpadek",
|
||||||
"up": "Up",
|
"up": "Běží",
|
||||||
"received": "Přijaté",
|
"received": "Přijaté",
|
||||||
"sent": "Odeslané",
|
"sent": "Odeslané",
|
||||||
"externalIPAddress": "Ext. IP",
|
"externalIPAddress": "Ext. IP",
|
||||||
"externalIPv6Address": "Ext. IPv6",
|
"externalIPv6Address": "Veřejná IPv6",
|
||||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
"externalIPv6Prefix": "Věřejná IPv6 prefix"
|
||||||
},
|
},
|
||||||
"caddy": {
|
"caddy": {
|
||||||
"upstreams": "Odesílání dat",
|
"upstreams": "Odesílání dat",
|
||||||
|
@ -178,7 +178,7 @@
|
||||||
"connectedAp": "Připojené APs",
|
"connectedAp": "Připojené APs",
|
||||||
"activeUser": "Aktivní zařízení",
|
"activeUser": "Aktivní zařízení",
|
||||||
"alerts": "Upozornění",
|
"alerts": "Upozornění",
|
||||||
"connectedGateways": "Connected gateways",
|
"connectedGateways": "Připojené brány",
|
||||||
"connectedSwitches": "Připojené přepínače"
|
"connectedSwitches": "Připojené přepínače"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
|
@ -229,8 +229,8 @@
|
||||||
"seed": "Seedované"
|
"seed": "Seedované"
|
||||||
},
|
},
|
||||||
"develancacheui": {
|
"develancacheui": {
|
||||||
"cachehitbytes": "Cache Hit Bytes",
|
"cachehitbytes": "Byty nalezené v mezipaměti",
|
||||||
"cachemissbytes": "Cache Miss Bytes"
|
"cachemissbytes": "Byty nenalezené v mezipaměti"
|
||||||
},
|
},
|
||||||
"downloadstation": {
|
"downloadstation": {
|
||||||
"download": "Stahování",
|
"download": "Stahování",
|
||||||
|
@ -287,7 +287,7 @@
|
||||||
"total": "Celkem",
|
"total": "Celkem",
|
||||||
"connected": "",
|
"connected": "",
|
||||||
"new_devices": "",
|
"new_devices": "",
|
||||||
"down_alerts": "Down Alerts"
|
"down_alerts": "Upozornění na výpadek"
|
||||||
},
|
},
|
||||||
"pihole": {
|
"pihole": {
|
||||||
"queries": "Dotazy",
|
"queries": "Dotazy",
|
||||||
|
@ -313,13 +313,13 @@
|
||||||
},
|
},
|
||||||
"suwayomi": {
|
"suwayomi": {
|
||||||
"download": "Staženo",
|
"download": "Staženo",
|
||||||
"nondownload": "Non-Downloaded",
|
"nondownload": "Nestaženo",
|
||||||
"read": "Přečteno",
|
"read": "Přečteno",
|
||||||
"unread": "Nepřečteno",
|
"unread": "Nepřečteno",
|
||||||
"downloadedread": "Downloaded & Read",
|
"downloadedread": "Staženo a přečteno",
|
||||||
"downloadedunread": "Downloaded & Unread",
|
"downloadedunread": "Staženo a nepřečteno",
|
||||||
"nondownloadedread": "Non-Downloaded & Read",
|
"nondownloadedread": "Nestaženo a přečteno",
|
||||||
"nondownloadedunread": "Non-Downloaded & Unread"
|
"nondownloadedunread": "Nestaženo a nepřečteno"
|
||||||
},
|
},
|
||||||
"tailscale": {
|
"tailscale": {
|
||||||
"address": "Adresa",
|
"address": "Adresa",
|
||||||
|
@ -337,15 +337,15 @@
|
||||||
},
|
},
|
||||||
"technitium": {
|
"technitium": {
|
||||||
"totalQueries": "Dotazy",
|
"totalQueries": "Dotazy",
|
||||||
"totalNoError": "Success",
|
"totalNoError": "Úspěšně",
|
||||||
"totalServerFailure": "Failures",
|
"totalServerFailure": "Chyby",
|
||||||
"totalNxDomain": "NX Domains",
|
"totalNxDomain": "NX domény",
|
||||||
"totalRefused": "Refused",
|
"totalRefused": "Odmítnuto",
|
||||||
"totalAuthoritative": "Authoritative",
|
"totalAuthoritative": "Autoritativní",
|
||||||
"totalRecursive": "Recursive",
|
"totalRecursive": "Rekurzivní",
|
||||||
"totalCached": "Cached",
|
"totalCached": "V mezipaměti",
|
||||||
"totalBlocked": "Blokováno",
|
"totalBlocked": "Blokováno",
|
||||||
"totalDropped": "Dropped",
|
"totalDropped": "Vynecháno",
|
||||||
"totalClients": "Klienti"
|
"totalClients": "Klienti"
|
||||||
},
|
},
|
||||||
"tdarr": {
|
"tdarr": {
|
||||||
|
@ -434,7 +434,7 @@
|
||||||
"load": "Zatížení",
|
"load": "Zatížení",
|
||||||
"wait": "Počkejte prosím",
|
"wait": "Počkejte prosím",
|
||||||
"temp": "TEPLOTA",
|
"temp": "TEPLOTA",
|
||||||
"_temp": "Temp",
|
"_temp": "Teplota",
|
||||||
"warn": "Varováni",
|
"warn": "Varováni",
|
||||||
"uptime": "BĚŽÍ",
|
"uptime": "BĚŽÍ",
|
||||||
"total": "Celkem",
|
"total": "Celkem",
|
||||||
|
@ -442,12 +442,12 @@
|
||||||
"used": "Využité",
|
"used": "Využité",
|
||||||
"days": "d",
|
"days": "d",
|
||||||
"hours": "h",
|
"hours": "h",
|
||||||
"crit": "Crit",
|
"crit": "Kritické",
|
||||||
"read": "Přečteno",
|
"read": "Přečteno",
|
||||||
"write": "Write",
|
"write": "Zápis",
|
||||||
"gpu": "GPU",
|
"gpu": "Grafická karta",
|
||||||
"mem": "Mem",
|
"mem": "Pamět RAM",
|
||||||
"swap": "Swap"
|
"swap": "Swap RAM"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Záložka",
|
"bookmark": "Záložka",
|
||||||
|
@ -456,7 +456,7 @@
|
||||||
"custom": "Vlastní",
|
"custom": "Vlastní",
|
||||||
"visit": "Navštivte",
|
"visit": "Navštivte",
|
||||||
"url": "Odkaz",
|
"url": "Odkaz",
|
||||||
"searchsuggestion": "Suggestion"
|
"searchsuggestion": "Doporučení"
|
||||||
},
|
},
|
||||||
"wmo": {
|
"wmo": {
|
||||||
"0-day": "Slunečno",
|
"0-day": "Slunečno",
|
||||||
|
@ -523,15 +523,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": "Up",
|
"up": "Běží",
|
||||||
"pending": "Čeká",
|
"pending": "Čeká",
|
||||||
"down": "Down"
|
"down": "Výpadek"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "Nové",
|
"new": "Nové",
|
||||||
"up": "Up",
|
"up": "Běží",
|
||||||
"grace": "V období odkladu",
|
"grace": "V období odkladu",
|
||||||
"down": "Down",
|
"down": "Výpadek",
|
||||||
"paused": "Pozastaveno",
|
"paused": "Pozastaveno",
|
||||||
"status": "Stav",
|
"status": "Stav",
|
||||||
"last_ping": "Poslední ping",
|
"last_ping": "Poslední ping",
|
||||||
|
@ -573,14 +573,14 @@
|
||||||
"hdhomerun": {
|
"hdhomerun": {
|
||||||
"channels": "Kanály",
|
"channels": "Kanály",
|
||||||
"hd": "HD",
|
"hd": "HD",
|
||||||
"tunerCount": "Tuners",
|
"tunerCount": "Tuner",
|
||||||
"channelNumber": "Channel",
|
"channelNumber": "Kanál",
|
||||||
"channelNetwork": "Network",
|
"channelNetwork": "Síť",
|
||||||
"signalStrength": "Strength",
|
"signalStrength": "Síla",
|
||||||
"signalQuality": "Quality",
|
"signalQuality": "Kvalita",
|
||||||
"symbolQuality": "Quality",
|
"symbolQuality": "Kvalita",
|
||||||
"networkRate": "Přenosová rychlost",
|
"networkRate": "Přenosová rychlost",
|
||||||
"clientIP": "Client"
|
"clientIP": "Klient"
|
||||||
},
|
},
|
||||||
"scrutiny": {
|
"scrutiny": {
|
||||||
"passed": "Úspěšné",
|
"passed": "Úspěšné",
|
||||||
|
@ -592,12 +592,12 @@
|
||||||
"total": "Celkem"
|
"total": "Celkem"
|
||||||
},
|
},
|
||||||
"peanut": {
|
"peanut": {
|
||||||
"battery_charge": "Battery Charge",
|
"battery_charge": "Úroveň baterie",
|
||||||
"ups_load": "UPS Load",
|
"ups_load": "Zítěž UPS",
|
||||||
"ups_status": "UPS Status",
|
"ups_status": "Stav UPS",
|
||||||
"online": "Online",
|
"online": "Online",
|
||||||
"on_battery": "On Battery",
|
"on_battery": "Na baterii",
|
||||||
"low_battery": "Low Battery"
|
"low_battery": "Nízký stav baterie"
|
||||||
},
|
},
|
||||||
"nextdns": {
|
"nextdns": {
|
||||||
"wait": "Čekejte prosím",
|
"wait": "Čekejte prosím",
|
||||||
|
@ -615,9 +615,9 @@
|
||||||
"streams_xepg": "Kanály XEPG"
|
"streams_xepg": "Kanály XEPG"
|
||||||
},
|
},
|
||||||
"opendtu": {
|
"opendtu": {
|
||||||
"yieldDay": "Today",
|
"yieldDay": "Dnes",
|
||||||
"absolutePower": "Power",
|
"absolutePower": "Výkon",
|
||||||
"relativePower": "Power %",
|
"relativePower": "Výkon %",
|
||||||
"limit": "Limit"
|
"limit": "Limit"
|
||||||
},
|
},
|
||||||
"opnsense": {
|
"opnsense": {
|
||||||
|
@ -646,9 +646,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": "Up",
|
"up": "Běží",
|
||||||
"down": "Down",
|
"down": "Výpadek",
|
||||||
"temp": "Temp",
|
"temp": "Teplota",
|
||||||
"disk": "Využití disku",
|
"disk": "Využití disku",
|
||||||
"wanIP": "IP WAN"
|
"wanIP": "IP WAN"
|
||||||
},
|
},
|
||||||
|
@ -668,14 +668,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": "Incident",
|
"incident": "Událost",
|
||||||
"m": "m"
|
"m": "m"
|
||||||
},
|
},
|
||||||
"atsumeru": {
|
"atsumeru": {
|
||||||
"series": "Seriály",
|
"series": "Seriály",
|
||||||
"archives": "Archives",
|
"archives": "Archivy",
|
||||||
"chapters": "Chapters",
|
"chapters": "Kapitoly",
|
||||||
"categories": "Categories"
|
"categories": "Kategorie"
|
||||||
},
|
},
|
||||||
"komga": {
|
"komga": {
|
||||||
"libraries": "Knihovny",
|
"libraries": "Knihovny",
|
||||||
|
@ -705,13 +705,13 @@
|
||||||
"time": "Čas"
|
"time": "Čas"
|
||||||
},
|
},
|
||||||
"firefly": {
|
"firefly": {
|
||||||
"networth": "Net Worth",
|
"networth": "Čisté jmění",
|
||||||
"budget": "Budget"
|
"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í",
|
"totalalerts": "Celkový počet upozornění2",
|
||||||
"alertstriggered": "Spuštěné výstrahy"
|
"alertstriggered": "Spuštěné výstrahy"
|
||||||
},
|
},
|
||||||
"nextcloud": {
|
"nextcloud": {
|
||||||
|
@ -749,7 +749,7 @@
|
||||||
"uptime": "Doba spuštění"
|
"uptime": "Doba spuštění"
|
||||||
},
|
},
|
||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Dnes",
|
||||||
"gross_percent_1y": "Jeden rok",
|
"gross_percent_1y": "Jeden rok",
|
||||||
"gross_percent_max": "Za celou dobu"
|
"gross_percent_max": "Za celou dobu"
|
||||||
},
|
},
|
||||||
|
@ -770,8 +770,8 @@
|
||||||
},
|
},
|
||||||
"calibreweb": {
|
"calibreweb": {
|
||||||
"books": "Knihy",
|
"books": "Knihy",
|
||||||
"authors": "Authors",
|
"authors": "Autoři",
|
||||||
"categories": "Categories",
|
"categories": "Kategorie",
|
||||||
"series": "Seriály"
|
"series": "Seriály"
|
||||||
},
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
|
@ -785,44 +785,44 @@
|
||||||
"totalFiles": "Soubory"
|
"totalFiles": "Soubory"
|
||||||
},
|
},
|
||||||
"azuredevops": {
|
"azuredevops": {
|
||||||
"result": "Result",
|
"result": "Výsledek",
|
||||||
"status": "Stav",
|
"status": "Stav",
|
||||||
"buildId": "Build ID",
|
"buildId": "ID sestavení",
|
||||||
"succeeded": "Succeeded",
|
"succeeded": "Úspěšně",
|
||||||
"notStarted": "Not Started",
|
"notStarted": "Nezahájeno",
|
||||||
"failed": "Selhalo",
|
"failed": "Selhalo",
|
||||||
"canceled": "Canceled",
|
"canceled": "Zrušeno",
|
||||||
"inProgress": "In Progress",
|
"inProgress": "Probíhá",
|
||||||
"totalPrs": "Total PRs",
|
"totalPrs": "Celkem PR",
|
||||||
"myPrs": "My PRs",
|
"myPrs": "Moje PR",
|
||||||
"approved": "Schváleno"
|
"approved": "Schváleno"
|
||||||
},
|
},
|
||||||
"gamedig": {
|
"gamedig": {
|
||||||
"status": "Stav",
|
"status": "Stav",
|
||||||
"online": "Online",
|
"online": "Online",
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"name": "Name",
|
"name": "Jméno",
|
||||||
"map": "Map",
|
"map": "Mapa",
|
||||||
"currentPlayers": "Current players",
|
"currentPlayers": "Počet hráčů",
|
||||||
"players": "Hráči",
|
"players": "Hráči",
|
||||||
"maxPlayers": "Max players",
|
"maxPlayers": "Maximální počet hráčů",
|
||||||
"bots": "Bots",
|
"bots": "Boti",
|
||||||
"ping": "Odezva"
|
"ping": "Odezva"
|
||||||
},
|
},
|
||||||
"urbackup": {
|
"urbackup": {
|
||||||
"ok": "Ok",
|
"ok": "Ok",
|
||||||
"errored": "Errors",
|
"errored": "Chyby",
|
||||||
"noRecent": "Out of Date",
|
"noRecent": "Zastaralý",
|
||||||
"totalUsed": "Used Storage"
|
"totalUsed": "Využití úložiště"
|
||||||
},
|
},
|
||||||
"mealie": {
|
"mealie": {
|
||||||
"recipes": "Recipes",
|
"recipes": "Recepty",
|
||||||
"users": "Uživatelé",
|
"users": "Uživatelé",
|
||||||
"categories": "Categories",
|
"categories": "Kategorie",
|
||||||
"tags": "Tags"
|
"tags": "Štítky"
|
||||||
},
|
},
|
||||||
"openmediavault": {
|
"openmediavault": {
|
||||||
"downloading": "Downloading",
|
"downloading": "Stahování",
|
||||||
"total": "Celkem",
|
"total": "Celkem",
|
||||||
"running": "Běží",
|
"running": "Běží",
|
||||||
"stopped": "Zastaveno",
|
"stopped": "Zastaveno",
|
||||||
|
@ -831,95 +831,95 @@
|
||||||
},
|
},
|
||||||
"openwrt": {
|
"openwrt": {
|
||||||
"uptime": "Doba spuštění",
|
"uptime": "Doba spuštění",
|
||||||
"cpuLoad": "CPU Load Avg (5m)",
|
"cpuLoad": "Prům. zatížení procesoru (5m)",
|
||||||
"up": "Up",
|
"up": "Běží",
|
||||||
"down": "Down",
|
"down": "Výpadek",
|
||||||
"bytesTx": "Transmitted",
|
"bytesTx": "Přeneseno",
|
||||||
"bytesRx": "Přijaté"
|
"bytesRx": "Přijaté"
|
||||||
},
|
},
|
||||||
"uptimerobot": {
|
"uptimerobot": {
|
||||||
"status": "Stav",
|
"status": "Stav",
|
||||||
"uptime": "Doba spuštění",
|
"uptime": "Doba spuštění",
|
||||||
"lastDown": "Last Downtime",
|
"lastDown": "Poslední výpadek",
|
||||||
"downDuration": "Downtime Duration",
|
"downDuration": "Trvání výpadku",
|
||||||
"sitesUp": "Stránky Up",
|
"sitesUp": "Stránky Up",
|
||||||
"sitesDown": "Stránky Down",
|
"sitesDown": "Stránky Down",
|
||||||
"paused": "Pozastaveno",
|
"paused": "Pozastaveno",
|
||||||
"notyetchecked": "Not Yet Checked",
|
"notyetchecked": "Zatím nezkontrolováno",
|
||||||
"up": "Up",
|
"up": "Běží",
|
||||||
"seemsdown": "Seems Down",
|
"seemsdown": "Zdá se nedostupný",
|
||||||
"down": "Down",
|
"down": "Výpadek",
|
||||||
"unknown": "Neznámý"
|
"unknown": "Neznámý"
|
||||||
},
|
},
|
||||||
"calendar": {
|
"calendar": {
|
||||||
"inCinemas": "In cinemas",
|
"inCinemas": "V kinech",
|
||||||
"physicalRelease": "Physical release",
|
"physicalRelease": "Fyzické vydání",
|
||||||
"digitalRelease": "Digital release",
|
"digitalRelease": "Digitální vydání",
|
||||||
"noEventsToday": "No events for today!",
|
"noEventsToday": "Pro dnešek žádné události!",
|
||||||
"noEventsFound": "No events found"
|
"noEventsFound": "Nemáte žádné události"
|
||||||
},
|
},
|
||||||
"romm": {
|
"romm": {
|
||||||
"platforms": "Platforms",
|
"platforms": "Platformy",
|
||||||
"totalRoms": "Games",
|
"totalRoms": "Hry",
|
||||||
"saves": "Saves",
|
"saves": "Uložené",
|
||||||
"states": "States",
|
"states": "Stavy",
|
||||||
"screenshots": "Screenshots",
|
"screenshots": "Snímky obrazovky",
|
||||||
"totalfilesize": "Total Size"
|
"totalfilesize": "Celková velikost"
|
||||||
},
|
},
|
||||||
"mailcow": {
|
"mailcow": {
|
||||||
"domains": "Domény",
|
"domains": "Domény",
|
||||||
"mailboxes": "Mailboxes",
|
"mailboxes": "E-mailové schránky",
|
||||||
"mails": "Mails",
|
"mails": "Maily",
|
||||||
"storage": "Úložiště"
|
"storage": "Úložiště"
|
||||||
},
|
},
|
||||||
"netdata": {
|
"netdata": {
|
||||||
"warnings": "Warnings",
|
"warnings": "Upozornění",
|
||||||
"criticals": "Criticals"
|
"criticals": "Kritické"
|
||||||
},
|
},
|
||||||
"plantit": {
|
"plantit": {
|
||||||
"events": "Events",
|
"events": "Události",
|
||||||
"plants": "Plants",
|
"plants": "Rostliny",
|
||||||
"photos": "Fotografie",
|
"photos": "Fotografie",
|
||||||
"species": "Species"
|
"species": "Druhy"
|
||||||
},
|
},
|
||||||
"gitea": {
|
"gitea": {
|
||||||
"notifications": "Notifications",
|
"notifications": "Oznámení",
|
||||||
"issues": "Problémy",
|
"issues": "Problémy",
|
||||||
"pulls": "Pull Requests",
|
"pulls": "Pull Requests",
|
||||||
"repositories": "Repositories"
|
"repositories": "Repozitáře"
|
||||||
},
|
},
|
||||||
"stash": {
|
"stash": {
|
||||||
"scenes": "Scenes",
|
"scenes": "Scény",
|
||||||
"scenesPlayed": "Scenes Played",
|
"scenesPlayed": "Přehrané scény",
|
||||||
"playCount": "Total Plays",
|
"playCount": "Celkový počet přehrání",
|
||||||
"playDuration": "Time Watched",
|
"playDuration": "Čas sledování",
|
||||||
"sceneSize": "Scenes Size",
|
"sceneSize": "Velikost scén",
|
||||||
"sceneDuration": "Scenes Duration",
|
"sceneDuration": "Délka scény",
|
||||||
"images": "Images",
|
"images": "Obrázky",
|
||||||
"imageSize": "Images Size",
|
"imageSize": "Velikost obrázků",
|
||||||
"galleries": "Galleries",
|
"galleries": "Galerie",
|
||||||
"performers": "Performers",
|
"performers": "Herci",
|
||||||
"studios": "Studios",
|
"studios": "Studia",
|
||||||
"movies": "Filmy",
|
"movies": "Filmy",
|
||||||
"tags": "Tags",
|
"tags": "Štítky",
|
||||||
"oCount": "O Count"
|
"oCount": "Počet O"
|
||||||
},
|
},
|
||||||
"tandoor": {
|
"tandoor": {
|
||||||
"users": "Uživatelé",
|
"users": "Uživatelé",
|
||||||
"recipes": "Recipes",
|
"recipes": "Recepty",
|
||||||
"keywords": "Keywords"
|
"keywords": "Klíčová slova"
|
||||||
},
|
},
|
||||||
"homebox": {
|
"homebox": {
|
||||||
"items": "Items",
|
"items": "Položky",
|
||||||
"totalWithWarranty": "With Warranty",
|
"totalWithWarranty": "Se zárukou",
|
||||||
"locations": "Locations",
|
"locations": "Lokality",
|
||||||
"labels": "Labels",
|
"labels": "Štítky",
|
||||||
"users": "Uživatelé",
|
"users": "Uživatelé",
|
||||||
"totalValue": "Total Value"
|
"totalValue": "Celková hodnota"
|
||||||
},
|
},
|
||||||
"crowdsec": {
|
"crowdsec": {
|
||||||
"alerts": "Upozornění",
|
"alerts": "Upozornění",
|
||||||
"bans": "Bans"
|
"bans": "Bany"
|
||||||
},
|
},
|
||||||
"wgeasy": {
|
"wgeasy": {
|
||||||
"connected": "",
|
"connected": "",
|
||||||
|
@ -928,10 +928,10 @@
|
||||||
"total": "Celkem"
|
"total": "Celkem"
|
||||||
},
|
},
|
||||||
"swagdashboard": {
|
"swagdashboard": {
|
||||||
"proxied": "Proxied",
|
"proxied": "Přes proxy",
|
||||||
"auth": "With Auth",
|
"auth": "S ověřením",
|
||||||
"outdated": "Outdated",
|
"outdated": "Zastaralé",
|
||||||
"banned": "Banned"
|
"banned": "Zabanován"
|
||||||
},
|
},
|
||||||
"myspeed": {
|
"myspeed": {
|
||||||
"ping": "Odezva",
|
"ping": "Odezva",
|
||||||
|
@ -939,46 +939,46 @@
|
||||||
"upload": "Nahrávání"
|
"upload": "Nahrávání"
|
||||||
},
|
},
|
||||||
"stocks": {
|
"stocks": {
|
||||||
"stocks": "Stocks",
|
"stocks": "Akcie",
|
||||||
"loading": "Loading",
|
"loading": "Načítání",
|
||||||
"open": "Open - US Market",
|
"open": "Otevřeno - US trh",
|
||||||
"closed": "Closed - US Market",
|
"closed": "Uzavřeno - US trh",
|
||||||
"invalidConfiguration": "Invalid Configuration"
|
"invalidConfiguration": "Neplatná konfigurace"
|
||||||
},
|
},
|
||||||
"frigate": {
|
"frigate": {
|
||||||
"cameras": "Cameras",
|
"cameras": "Kamery",
|
||||||
"uptime": "Doba spuštění",
|
"uptime": "Doba spuštění",
|
||||||
"version": "Verze"
|
"version": "Verze"
|
||||||
},
|
},
|
||||||
"linkwarden": {
|
"linkwarden": {
|
||||||
"links": "Links",
|
"links": "Linky",
|
||||||
"collections": "Collections",
|
"collections": "Sbírky",
|
||||||
"tags": "Tags"
|
"tags": "Štítky"
|
||||||
},
|
},
|
||||||
"zabbix": {
|
"zabbix": {
|
||||||
"unclassified": "Not classified",
|
"unclassified": "Neklasifikováno",
|
||||||
"information": "Informace",
|
"information": "Informace",
|
||||||
"warning": "Warning",
|
"warning": "Upozornění",
|
||||||
"average": "Average",
|
"average": "Průměr",
|
||||||
"high": "High",
|
"high": "Vysoký",
|
||||||
"disaster": "Disaster"
|
"disaster": "Katastrofa"
|
||||||
},
|
},
|
||||||
"lubelogger": {
|
"lubelogger": {
|
||||||
"vehicle": "Vehicle",
|
"vehicle": "Vozidlo",
|
||||||
"vehicles": "Vehicles",
|
"vehicles": "Vozidla",
|
||||||
"serviceRecords": "Service Records",
|
"serviceRecords": "Servisní záznamy",
|
||||||
"reminders": "Reminders",
|
"reminders": "Připomenutí",
|
||||||
"nextReminder": "Next Reminder",
|
"nextReminder": "Další připomenutí",
|
||||||
"none": "None"
|
"none": "Žádné"
|
||||||
},
|
},
|
||||||
"vikunja": {
|
"vikunja": {
|
||||||
"projects": "Active Projects",
|
"projects": "Aktivní projekty",
|
||||||
"tasks7d": "Tasks Due This Week",
|
"tasks7d": "Úkoly k dokončení tento týden",
|
||||||
"tasksOverdue": "Overdue Tasks",
|
"tasksOverdue": "Zpožděné úkoly",
|
||||||
"tasksInProgress": "Tasks In Progress"
|
"tasksInProgress": "Probíhají úkoly"
|
||||||
},
|
},
|
||||||
"headscale": {
|
"headscale": {
|
||||||
"name": "Name",
|
"name": "Jméno",
|
||||||
"address": "Adresa",
|
"address": "Adresa",
|
||||||
"last_seen": "Naposledy viděno",
|
"last_seen": "Naposledy viděno",
|
||||||
"status": "Stav",
|
"status": "Stav",
|
||||||
|
@ -986,10 +986,10 @@
|
||||||
"offline": "Offline"
|
"offline": "Offline"
|
||||||
},
|
},
|
||||||
"beszel": {
|
"beszel": {
|
||||||
"name": "Name",
|
"name": "Jméno",
|
||||||
"systems": "Systems",
|
"systems": "Systém",
|
||||||
"up": "Up",
|
"up": "Běží",
|
||||||
"down": "Down",
|
"down": "Výpadek",
|
||||||
"paused": "Pozastaveno",
|
"paused": "Pozastaveno",
|
||||||
"pending": "Čeká",
|
"pending": "Čeká",
|
||||||
"status": "Stav",
|
"status": "Stav",
|
||||||
|
@ -997,50 +997,50 @@
|
||||||
"cpu": "CPU",
|
"cpu": "CPU",
|
||||||
"memory": "RAM",
|
"memory": "RAM",
|
||||||
"disk": "Disk",
|
"disk": "Disk",
|
||||||
"network": "NET"
|
"network": "Síť"
|
||||||
},
|
},
|
||||||
"argocd": {
|
"argocd": {
|
||||||
"apps": "Apps",
|
"apps": "Aplikace",
|
||||||
"synced": "Synced",
|
"synced": "Synchronizováno",
|
||||||
"outOfSync": "Out Of Sync",
|
"outOfSync": "Nesynchronizováno",
|
||||||
"healthy": "Zdravý",
|
"healthy": "Zdravý",
|
||||||
"degraded": "Degraded",
|
"degraded": "Degradováno",
|
||||||
"progressing": "Progressing",
|
"progressing": "Probíhá",
|
||||||
"missing": "Chybějící",
|
"missing": "Chybějící",
|
||||||
"suspended": "Suspended"
|
"suspended": "Pozastaveno"
|
||||||
},
|
},
|
||||||
"spoolman": {
|
"spoolman": {
|
||||||
"loading": "Loading"
|
"loading": "Načítání"
|
||||||
},
|
},
|
||||||
"gitlab": {
|
"gitlab": {
|
||||||
"groups": "Groups",
|
"groups": "Skupiny",
|
||||||
"issues": "Problémy",
|
"issues": "Problémy",
|
||||||
"merges": "Merge Requests",
|
"merges": "Žádosti o sloučení",
|
||||||
"projects": "Projects"
|
"projects": "Projekty"
|
||||||
},
|
},
|
||||||
"apcups": {
|
"apcups": {
|
||||||
"status": "Stav",
|
"status": "Stav",
|
||||||
"load": "Zatížení",
|
"load": "Zatížení",
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Úroveň baterie",
|
||||||
"timeleft": "Zbývající čas"
|
"timeleft": "Zbývající čas"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Záložky",
|
||||||
"favorites": "Favorites",
|
"favorites": "Oblíbené",
|
||||||
"archived": "Archived",
|
"archived": "Archivováno",
|
||||||
"highlights": "Highlights",
|
"highlights": "Zvýraznění",
|
||||||
"lists": "Lists",
|
"lists": "Seznamy",
|
||||||
"tags": "Tags"
|
"tags": "Štítky"
|
||||||
},
|
},
|
||||||
"slskd": {
|
"slskd": {
|
||||||
"slskStatus": "Network",
|
"slskStatus": "Síť",
|
||||||
"connected": "",
|
"connected": "",
|
||||||
"disconnected": "Odpojeno",
|
"disconnected": "Odpojeno",
|
||||||
"updateStatus": "Update",
|
"updateStatus": "Aktualizace",
|
||||||
"update_yes": "Dostupné",
|
"update_yes": "Dostupné",
|
||||||
"update_no": "Žádné",
|
"update_no": "Žádné",
|
||||||
"downloads": "Downloads",
|
"downloads": "Stažení",
|
||||||
"uploads": "Uploads",
|
"uploads": "Nahrávání",
|
||||||
"sharedFiles": "Soubory"
|
"sharedFiles": "Soubory"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Batteriniveau",
|
"bcharge": "Batteriniveau",
|
||||||
"timeleft": "Resterende tid"
|
"timeleft": "Resterende tid"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -665,8 +665,8 @@
|
||||||
"storage": "Speicher"
|
"storage": "Speicher"
|
||||||
},
|
},
|
||||||
"uptimekuma": {
|
"uptimekuma": {
|
||||||
"up": "Seiten verfügbar",
|
"up": "Up",
|
||||||
"down": "Seiten nicht verfügbar",
|
"down": "Down",
|
||||||
"uptime": "Betriebszeit",
|
"uptime": "Betriebszeit",
|
||||||
"incident": "Vorfall",
|
"incident": "Vorfall",
|
||||||
"m": "min"
|
"m": "min"
|
||||||
|
@ -744,8 +744,8 @@
|
||||||
"targets_total": "Alle Ziele"
|
"targets_total": "Alle Ziele"
|
||||||
},
|
},
|
||||||
"gatus": {
|
"gatus": {
|
||||||
"up": "Seiten verfügbar",
|
"up": "Up",
|
||||||
"down": "Seiten nicht verfügbar",
|
"down": "Down",
|
||||||
"uptime": "Betriebszeit"
|
"uptime": "Betriebszeit"
|
||||||
},
|
},
|
||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
|
@ -842,8 +842,8 @@
|
||||||
"uptime": "Betriebszeit",
|
"uptime": "Betriebszeit",
|
||||||
"lastDown": "Letzter Ausfall",
|
"lastDown": "Letzter Ausfall",
|
||||||
"downDuration": "Ausfalldauer",
|
"downDuration": "Ausfalldauer",
|
||||||
"sitesUp": "Seiten verfügbar",
|
"sitesUp": "Up",
|
||||||
"sitesDown": "Seiten nicht verfügbar",
|
"sitesDown": "Down",
|
||||||
"paused": "Pausiert",
|
"paused": "Pausiert",
|
||||||
"notyetchecked": "Noch nicht geprüft",
|
"notyetchecked": "Noch nicht geprüft",
|
||||||
"up": "Online",
|
"up": "Online",
|
||||||
|
@ -1024,12 +1024,12 @@
|
||||||
"bcharge": "Akkuladung",
|
"bcharge": "Akkuladung",
|
||||||
"timeleft": "Verbleibende Zeit"
|
"timeleft": "Verbleibende Zeit"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Lesezeichen",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favoriten",
|
"favorites": "Favorites",
|
||||||
"archived": "Archiviert",
|
"archived": "Archived",
|
||||||
"highlights": "Highlights",
|
"highlights": "Highlights",
|
||||||
"lists": "Listen",
|
"lists": "Lists",
|
||||||
"tags": "Schlagwörter"
|
"tags": "Schlagwörter"
|
||||||
},
|
},
|
||||||
"slskd": {
|
"slskd": {
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "Χρόνος που απομένει"
|
"timeleft": "Χρόνος που απομένει"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge":"Battery Charge",
|
"bcharge":"Battery Charge",
|
||||||
"timeleft":"Time Left"
|
"timeleft":"Time Left"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "Time Left"
|
"timeleft": "Time Left"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -149,8 +149,8 @@
|
||||||
"received": "Recibido",
|
"received": "Recibido",
|
||||||
"sent": "Enviado",
|
"sent": "Enviado",
|
||||||
"externalIPAddress": "IP ext.",
|
"externalIPAddress": "IP ext.",
|
||||||
"externalIPv6Address": "Ext. IPv6",
|
"externalIPv6Address": "IPv6 ext.",
|
||||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
"externalIPv6Prefix": "Prefijo IPv6 ext."
|
||||||
},
|
},
|
||||||
"caddy": {
|
"caddy": {
|
||||||
"upstreams": "Upstream (desarrollo de software)",
|
"upstreams": "Upstream (desarrollo de software)",
|
||||||
|
@ -178,7 +178,7 @@
|
||||||
"connectedAp": "AP conectados",
|
"connectedAp": "AP conectados",
|
||||||
"activeUser": "Dispositivos activos",
|
"activeUser": "Dispositivos activos",
|
||||||
"alerts": "Alertas",
|
"alerts": "Alertas",
|
||||||
"connectedGateways": "Connected gateways",
|
"connectedGateways": "Puertas de enlace conectadas",
|
||||||
"connectedSwitches": "Conmutadores conectados"
|
"connectedSwitches": "Conmutadores conectados"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
|
@ -705,8 +705,8 @@
|
||||||
"time": "Tiempo"
|
"time": "Tiempo"
|
||||||
},
|
},
|
||||||
"firefly": {
|
"firefly": {
|
||||||
"networth": "Net Worth",
|
"networth": "Patrimonio neto",
|
||||||
"budget": "Budget"
|
"budget": "Presupuesto"
|
||||||
},
|
},
|
||||||
"grafana": {
|
"grafana": {
|
||||||
"dashboards": "Tableros",
|
"dashboards": "Tableros",
|
||||||
|
@ -886,7 +886,7 @@
|
||||||
"notifications": "Notificaciones",
|
"notifications": "Notificaciones",
|
||||||
"issues": "Números",
|
"issues": "Números",
|
||||||
"pulls": "Solicitudes de cambios",
|
"pulls": "Solicitudes de cambios",
|
||||||
"repositories": "Repositories"
|
"repositories": "Repositorios"
|
||||||
},
|
},
|
||||||
"stash": {
|
"stash": {
|
||||||
"scenes": "Escenas",
|
"scenes": "Escenas",
|
||||||
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Carga de la batería",
|
"bcharge": "Carga de la batería",
|
||||||
"timeleft": "Tiempo restante"
|
"timeleft": "Tiempo restante"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
@ -1036,11 +1036,11 @@
|
||||||
"slskStatus": "Red",
|
"slskStatus": "Red",
|
||||||
"connected": "Conectado",
|
"connected": "Conectado",
|
||||||
"disconnected": "Desconectado",
|
"disconnected": "Desconectado",
|
||||||
"updateStatus": "Update",
|
"updateStatus": "Actualización",
|
||||||
"update_yes": "Disponible",
|
"update_yes": "Disponible",
|
||||||
"update_no": "Actualizado",
|
"update_no": "Actualizado",
|
||||||
"downloads": "Downloads",
|
"downloads": "Descargas",
|
||||||
"uploads": "Uploads",
|
"uploads": "Subidas",
|
||||||
"sharedFiles": "Archivos"
|
"sharedFiles": "Archivos"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1024,12 +1024,12 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "Time Left"
|
"timeleft": "Time Left"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Laster-markak",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Gogokoak",
|
"favorites": "Favorites",
|
||||||
"archived": "Artxibatuta",
|
"archived": "Archived",
|
||||||
"highlights": "Highlights",
|
"highlights": "Highlights",
|
||||||
"lists": "Zerrendak",
|
"lists": "Lists",
|
||||||
"tags": "Etiketak"
|
"tags": "Etiketak"
|
||||||
},
|
},
|
||||||
"slskd": {
|
"slskd": {
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "Aikaa jäljellä"
|
"timeleft": "Aikaa jäljellä"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -85,16 +85,16 @@
|
||||||
"ping": {
|
"ping": {
|
||||||
"error": "Erreur",
|
"error": "Erreur",
|
||||||
"ping": "Latence",
|
"ping": "Latence",
|
||||||
"down": "Bas",
|
"down": "Down",
|
||||||
"up": "Haut",
|
"up": "Up",
|
||||||
"not_available": "Non disponible"
|
"not_available": "Non disponible"
|
||||||
},
|
},
|
||||||
"siteMonitor": {
|
"siteMonitor": {
|
||||||
"http_status": "Statut HTTP",
|
"http_status": "Statut HTTP",
|
||||||
"error": "Erreur",
|
"error": "Erreur",
|
||||||
"response": "Réponse",
|
"response": "Réponse",
|
||||||
"down": "Bas",
|
"down": "Down",
|
||||||
"up": "Haut",
|
"up": "Up",
|
||||||
"not_available": "Non disponible"
|
"not_available": "Non disponible"
|
||||||
},
|
},
|
||||||
"emby": {
|
"emby": {
|
||||||
|
@ -142,10 +142,10 @@
|
||||||
"connectionStatusDisconnected": "Déconnecté",
|
"connectionStatusDisconnected": "Déconnecté",
|
||||||
"connectionStatusConnected": "Connecté",
|
"connectionStatusConnected": "Connecté",
|
||||||
"uptime": "Démarré depuis",
|
"uptime": "Démarré depuis",
|
||||||
"maxDown": "Max. Bas",
|
"maxDown": "Max. Down",
|
||||||
"maxUp": "Max. Haut",
|
"maxUp": "Max. Up",
|
||||||
"down": "Bas",
|
"down": "Down",
|
||||||
"up": "Haut",
|
"up": "Up",
|
||||||
"received": "Reçu",
|
"received": "Reçu",
|
||||||
"sent": "Envoyé",
|
"sent": "Envoyé",
|
||||||
"externalIPAddress": "IP externe",
|
"externalIPAddress": "IP externe",
|
||||||
|
@ -523,15 +523,15 @@
|
||||||
"up_to_date": "À jour",
|
"up_to_date": "À jour",
|
||||||
"child_bridges": "Child Bridges",
|
"child_bridges": "Child Bridges",
|
||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Haut",
|
"up": "Up",
|
||||||
"pending": "En attente",
|
"pending": "En attente",
|
||||||
"down": "Bas"
|
"down": "Down"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "Nouveau",
|
"new": "Nouveau",
|
||||||
"up": "Haut",
|
"up": "Up",
|
||||||
"grace": "En Période de Grâce",
|
"grace": "En Période de Grâce",
|
||||||
"down": "Bas",
|
"down": "Down",
|
||||||
"paused": "En Pause",
|
"paused": "En Pause",
|
||||||
"status": "Statut",
|
"status": "Statut",
|
||||||
"last_ping": "Dernier Ping",
|
"last_ping": "Dernier Ping",
|
||||||
|
@ -646,8 +646,8 @@
|
||||||
"load": "Charge moy.",
|
"load": "Charge moy.",
|
||||||
"memory": "Util. Mém.",
|
"memory": "Util. Mém.",
|
||||||
"wanStatus": "Statut WAN",
|
"wanStatus": "Statut WAN",
|
||||||
"up": "Haut",
|
"up": "Up",
|
||||||
"down": "Bas",
|
"down": "Down",
|
||||||
"temp": "Température",
|
"temp": "Température",
|
||||||
"disk": "Util. Disque",
|
"disk": "Util. Disque",
|
||||||
"wanIP": "IP WAN"
|
"wanIP": "IP WAN"
|
||||||
|
@ -832,8 +832,8 @@
|
||||||
"openwrt": {
|
"openwrt": {
|
||||||
"uptime": "Démarré depuis",
|
"uptime": "Démarré depuis",
|
||||||
"cpuLoad": "Charge moyenne CPU (5 min)",
|
"cpuLoad": "Charge moyenne CPU (5 min)",
|
||||||
"up": "Haut",
|
"up": "Up",
|
||||||
"down": "Bas",
|
"down": "Down",
|
||||||
"bytesTx": "Transmis",
|
"bytesTx": "Transmis",
|
||||||
"bytesRx": "Reçu"
|
"bytesRx": "Reçu"
|
||||||
},
|
},
|
||||||
|
@ -846,9 +846,9 @@
|
||||||
"sitesDown": "Hors ligne",
|
"sitesDown": "Hors ligne",
|
||||||
"paused": "En Pause",
|
"paused": "En Pause",
|
||||||
"notyetchecked": "Non vérifié",
|
"notyetchecked": "Non vérifié",
|
||||||
"up": "Haut",
|
"up": "Up",
|
||||||
"seemsdown": "Semble hors ligne",
|
"seemsdown": "Semble hors ligne",
|
||||||
"down": "Bas",
|
"down": "Down",
|
||||||
"unknown": "Inconnu"
|
"unknown": "Inconnu"
|
||||||
},
|
},
|
||||||
"calendar": {
|
"calendar": {
|
||||||
|
@ -886,7 +886,7 @@
|
||||||
"notifications": "Notifications",
|
"notifications": "Notifications",
|
||||||
"issues": "Anomalies",
|
"issues": "Anomalies",
|
||||||
"pulls": "Demandes de tirage",
|
"pulls": "Demandes de tirage",
|
||||||
"repositories": "Repositories"
|
"repositories": "Dépôts"
|
||||||
},
|
},
|
||||||
"stash": {
|
"stash": {
|
||||||
"scenes": "Scènes",
|
"scenes": "Scènes",
|
||||||
|
@ -988,8 +988,8 @@
|
||||||
"beszel": {
|
"beszel": {
|
||||||
"name": "Nom",
|
"name": "Nom",
|
||||||
"systems": "Systèmes",
|
"systems": "Systèmes",
|
||||||
"up": "Haut",
|
"up": "Up",
|
||||||
"down": "Bas",
|
"down": "Down",
|
||||||
"paused": "En Pause",
|
"paused": "En Pause",
|
||||||
"pending": "En attente",
|
"pending": "En attente",
|
||||||
"status": "Statut",
|
"status": "Statut",
|
||||||
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Charge de la batterie",
|
"bcharge": "Charge de la batterie",
|
||||||
"timeleft": "Temps restant"
|
"timeleft": "Temps restant"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Marque-pages",
|
"bookmarks": "Marque-pages",
|
||||||
"favorites": "Favoris",
|
"favorites": "Favoris",
|
||||||
"archived": "Archivé",
|
"archived": "Archivé",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "זמן שנותר"
|
"timeleft": "זמן שנותר"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "Time Left"
|
"timeleft": "Time Left"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Napunjenost baterije",
|
"bcharge": "Napunjenost baterije",
|
||||||
"timeleft": "Preostalo vrijeme"
|
"timeleft": "Preostalo vrijeme"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Akku töltöttsége",
|
"bcharge": "Akku töltöttsége",
|
||||||
"timeleft": "Hátralévő idő"
|
"timeleft": "Hátralévő idő"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,12 +1024,12 @@
|
||||||
"bcharge": "Sisa Baterai",
|
"bcharge": "Sisa Baterai",
|
||||||
"timeleft": "Sisa Waktu"
|
"timeleft": "Sisa Waktu"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Markah",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorit",
|
"favorites": "Favorites",
|
||||||
"archived": "Diarsipkan",
|
"archived": "Archived",
|
||||||
"highlights": "Sorotan",
|
"highlights": "Highlights",
|
||||||
"lists": "Daftar",
|
"lists": "Lists",
|
||||||
"tags": "Tag"
|
"tags": "Tag"
|
||||||
},
|
},
|
||||||
"slskd": {
|
"slskd": {
|
||||||
|
|
|
@ -149,8 +149,8 @@
|
||||||
"received": "Ricevuti",
|
"received": "Ricevuti",
|
||||||
"sent": "Inviati",
|
"sent": "Inviati",
|
||||||
"externalIPAddress": "IP Esterno",
|
"externalIPAddress": "IP Esterno",
|
||||||
"externalIPv6Address": "Ext. IPv6",
|
"externalIPv6Address": "IPv6 Esterno",
|
||||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
"externalIPv6Prefix": "Prefisso IPv6 Esterno"
|
||||||
},
|
},
|
||||||
"caddy": {
|
"caddy": {
|
||||||
"upstreams": "Upstream",
|
"upstreams": "Upstream",
|
||||||
|
@ -178,7 +178,7 @@
|
||||||
"connectedAp": "AP Connessi",
|
"connectedAp": "AP Connessi",
|
||||||
"activeUser": "Dispositivi attivi",
|
"activeUser": "Dispositivi attivi",
|
||||||
"alerts": "Allarmi",
|
"alerts": "Allarmi",
|
||||||
"connectedGateways": "Connected gateways",
|
"connectedGateways": "Gateway connessi",
|
||||||
"connectedSwitches": "Switch connessi"
|
"connectedSwitches": "Switch connessi"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
|
@ -338,7 +338,7 @@
|
||||||
"technitium": {
|
"technitium": {
|
||||||
"totalQueries": "Richieste",
|
"totalQueries": "Richieste",
|
||||||
"totalNoError": "Successo",
|
"totalNoError": "Successo",
|
||||||
"totalServerFailure": "Failures",
|
"totalServerFailure": "Fallimenti",
|
||||||
"totalNxDomain": "NX Domains",
|
"totalNxDomain": "NX Domains",
|
||||||
"totalRefused": "Refused",
|
"totalRefused": "Refused",
|
||||||
"totalAuthoritative": "Authoritative",
|
"totalAuthoritative": "Authoritative",
|
||||||
|
@ -943,7 +943,7 @@
|
||||||
"loading": "Caricamento",
|
"loading": "Caricamento",
|
||||||
"open": "Open - US Market",
|
"open": "Open - US Market",
|
||||||
"closed": "Closed - US Market",
|
"closed": "Closed - US Market",
|
||||||
"invalidConfiguration": "Invalid Configuration"
|
"invalidConfiguration": "Configurazione non valida"
|
||||||
},
|
},
|
||||||
"frigate": {
|
"frigate": {
|
||||||
"cameras": "Cameras",
|
"cameras": "Cameras",
|
||||||
|
@ -959,7 +959,7 @@
|
||||||
"unclassified": "Not classified",
|
"unclassified": "Not classified",
|
||||||
"information": "Informazioni",
|
"information": "Informazioni",
|
||||||
"warning": "Warning",
|
"warning": "Warning",
|
||||||
"average": "Average",
|
"average": "Media",
|
||||||
"high": "High",
|
"high": "High",
|
||||||
"disaster": "Disaster"
|
"disaster": "Disaster"
|
||||||
},
|
},
|
||||||
|
@ -987,7 +987,7 @@
|
||||||
},
|
},
|
||||||
"beszel": {
|
"beszel": {
|
||||||
"name": "Nome",
|
"name": "Nome",
|
||||||
"systems": "Systems",
|
"systems": "Sistemi",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"down": "Down",
|
"down": "Down",
|
||||||
"paused": "In Pausa",
|
"paused": "In Pausa",
|
||||||
|
@ -996,15 +996,15 @@
|
||||||
"updated": "Aggiornato",
|
"updated": "Aggiornato",
|
||||||
"cpu": "CPU",
|
"cpu": "CPU",
|
||||||
"memory": "MEM",
|
"memory": "MEM",
|
||||||
"disk": "Disk",
|
"disk": "Disco",
|
||||||
"network": "NET"
|
"network": "NET"
|
||||||
},
|
},
|
||||||
"argocd": {
|
"argocd": {
|
||||||
"apps": "Apps",
|
"apps": "Applicazioni",
|
||||||
"synced": "Synced",
|
"synced": "Sincronizzato",
|
||||||
"outOfSync": "Out Of Sync",
|
"outOfSync": "Non Sincronizzato",
|
||||||
"healthy": "Sano",
|
"healthy": "Sano",
|
||||||
"degraded": "Degraded",
|
"degraded": "Degradato",
|
||||||
"progressing": "Progressing",
|
"progressing": "Progressing",
|
||||||
"missing": "Mancanti",
|
"missing": "Mancanti",
|
||||||
"suspended": "Suspended"
|
"suspended": "Suspended"
|
||||||
|
@ -1013,10 +1013,10 @@
|
||||||
"loading": "Caricamento"
|
"loading": "Caricamento"
|
||||||
},
|
},
|
||||||
"gitlab": {
|
"gitlab": {
|
||||||
"groups": "Groups",
|
"groups": "Gruppi",
|
||||||
"issues": "Problemi",
|
"issues": "Problemi",
|
||||||
"merges": "Merge Requests",
|
"merges": "Richieste di merge",
|
||||||
"projects": "Projects"
|
"projects": "Progetti"
|
||||||
},
|
},
|
||||||
"apcups": {
|
"apcups": {
|
||||||
"status": "Stato",
|
"status": "Stato",
|
||||||
|
@ -1024,12 +1024,12 @@
|
||||||
"bcharge": "Carica Batteria",
|
"bcharge": "Carica Batteria",
|
||||||
"timeleft": "Tempo Rimanente"
|
"timeleft": "Tempo Rimanente"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Segnalibri",
|
||||||
"favorites": "Favorites",
|
"favorites": "Preferiti",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
"highlights": "Highlights",
|
"highlights": "Highlights",
|
||||||
"lists": "Lists",
|
"lists": "Liste",
|
||||||
"tags": "Tag"
|
"tags": "Tag"
|
||||||
},
|
},
|
||||||
"slskd": {
|
"slskd": {
|
||||||
|
@ -1039,7 +1039,7 @@
|
||||||
"updateStatus": "Update",
|
"updateStatus": "Update",
|
||||||
"update_yes": "Disponibili",
|
"update_yes": "Disponibili",
|
||||||
"update_no": "Aggiornato",
|
"update_no": "Aggiornato",
|
||||||
"downloads": "Downloads",
|
"downloads": "Download",
|
||||||
"uploads": "Uploads",
|
"uploads": "Uploads",
|
||||||
"sharedFiles": "File"
|
"sharedFiles": "File"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "バッテリー充電",
|
"bcharge": "バッテリー充電",
|
||||||
"timeleft": "残り時間"
|
"timeleft": "残り時間"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -14,11 +14,11 @@
|
||||||
"date": "{{value, date}}",
|
"date": "{{value, date}}",
|
||||||
"relativeDate": "{{value, relativeDate}}",
|
"relativeDate": "{{value, relativeDate}}",
|
||||||
"duration": "{{value, duration}}",
|
"duration": "{{value, duration}}",
|
||||||
"months": "mo",
|
"months": "달",
|
||||||
"days": "d",
|
"days": "일",
|
||||||
"hours": "h",
|
"hours": "시",
|
||||||
"minutes": "m",
|
"minutes": "분",
|
||||||
"seconds": "s"
|
"seconds": "초"
|
||||||
},
|
},
|
||||||
"widget": {
|
"widget": {
|
||||||
"missing_type": "없는 위젯 유형: {{type}}",
|
"missing_type": "없는 위젯 유형: {{type}}",
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
},
|
},
|
||||||
"unifi": {
|
"unifi": {
|
||||||
"users": "사용자",
|
"users": "사용자",
|
||||||
"uptime": "Uptime",
|
"uptime": "가동 시간",
|
||||||
"days": "일",
|
"days": "일",
|
||||||
"wan": "WAN",
|
"wan": "WAN",
|
||||||
"lan": "LAN",
|
"lan": "LAN",
|
||||||
|
@ -141,7 +141,7 @@
|
||||||
"connectionStatusDisconnecting": "연결을 끊는 중...",
|
"connectionStatusDisconnecting": "연결을 끊는 중...",
|
||||||
"connectionStatusDisconnected": "연결 끊김",
|
"connectionStatusDisconnected": "연결 끊김",
|
||||||
"connectionStatusConnected": "연결됨",
|
"connectionStatusConnected": "연결됨",
|
||||||
"uptime": "Uptime",
|
"uptime": "가동 시간",
|
||||||
"maxDown": "Max. Down",
|
"maxDown": "Max. Down",
|
||||||
"maxUp": "Max. Up",
|
"maxUp": "Max. Up",
|
||||||
"down": "Down",
|
"down": "Down",
|
||||||
|
@ -188,7 +188,7 @@
|
||||||
},
|
},
|
||||||
"plex": {
|
"plex": {
|
||||||
"streams": "활성 스트림",
|
"streams": "활성 스트림",
|
||||||
"albums": "Albums",
|
"albums": "앨범",
|
||||||
"movies": "영화",
|
"movies": "영화",
|
||||||
"tv": "TV 쇼"
|
"tv": "TV 쇼"
|
||||||
},
|
},
|
||||||
|
@ -440,8 +440,8 @@
|
||||||
"total": "총합",
|
"total": "총합",
|
||||||
"free": "남음",
|
"free": "남음",
|
||||||
"used": "사용",
|
"used": "사용",
|
||||||
"days": "d",
|
"days": "일",
|
||||||
"hours": "h",
|
"hours": "시",
|
||||||
"crit": "Crit",
|
"crit": "Crit",
|
||||||
"read": "읽음",
|
"read": "읽음",
|
||||||
"write": "쓰기",
|
"write": "쓰기",
|
||||||
|
@ -556,7 +556,7 @@
|
||||||
},
|
},
|
||||||
"truenas": {
|
"truenas": {
|
||||||
"load": "System Load",
|
"load": "System Load",
|
||||||
"uptime": "Uptime",
|
"uptime": "가동 시간",
|
||||||
"alerts": "경고"
|
"alerts": "경고"
|
||||||
},
|
},
|
||||||
"pyload": {
|
"pyload": {
|
||||||
|
@ -606,7 +606,7 @@
|
||||||
"mikrotik": {
|
"mikrotik": {
|
||||||
"cpuLoad": "CPU Load",
|
"cpuLoad": "CPU Load",
|
||||||
"memoryUsed": "메모리 사용량",
|
"memoryUsed": "메모리 사용량",
|
||||||
"uptime": "Uptime",
|
"uptime": "가동 시간",
|
||||||
"numberOfLeases": "Leases"
|
"numberOfLeases": "Leases"
|
||||||
},
|
},
|
||||||
"xteve": {
|
"xteve": {
|
||||||
|
@ -667,9 +667,9 @@
|
||||||
"uptimekuma": {
|
"uptimekuma": {
|
||||||
"up": "Sites Up",
|
"up": "Sites Up",
|
||||||
"down": "Sites Down",
|
"down": "Sites Down",
|
||||||
"uptime": "Uptime",
|
"uptime": "가동 시간",
|
||||||
"incident": "Incident",
|
"incident": "Incident",
|
||||||
"m": "m"
|
"m": "분"
|
||||||
},
|
},
|
||||||
"atsumeru": {
|
"atsumeru": {
|
||||||
"series": "시리즈",
|
"series": "시리즈",
|
||||||
|
@ -684,7 +684,7 @@
|
||||||
},
|
},
|
||||||
"diskstation": {
|
"diskstation": {
|
||||||
"days": "일",
|
"days": "일",
|
||||||
"uptime": "Uptime",
|
"uptime": "가동 시간",
|
||||||
"volumeAvailable": "이용 가능"
|
"volumeAvailable": "이용 가능"
|
||||||
},
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
|
@ -693,7 +693,7 @@
|
||||||
"wanted": "요청"
|
"wanted": "요청"
|
||||||
},
|
},
|
||||||
"photoprism": {
|
"photoprism": {
|
||||||
"albums": "Albums",
|
"albums": "앨범",
|
||||||
"photos": "사진",
|
"photos": "사진",
|
||||||
"videos": "동영상",
|
"videos": "동영상",
|
||||||
"people": "People"
|
"people": "People"
|
||||||
|
@ -705,8 +705,8 @@
|
||||||
"time": "Time"
|
"time": "Time"
|
||||||
},
|
},
|
||||||
"firefly": {
|
"firefly": {
|
||||||
"networth": "Net Worth",
|
"networth": "순자산",
|
||||||
"budget": "Budget"
|
"budget": "예산"
|
||||||
},
|
},
|
||||||
"grafana": {
|
"grafana": {
|
||||||
"dashboards": "대시보드",
|
"dashboards": "대시보드",
|
||||||
|
@ -746,7 +746,7 @@
|
||||||
"gatus": {
|
"gatus": {
|
||||||
"up": "Sites Up",
|
"up": "Sites Up",
|
||||||
"down": "Sites Down",
|
"down": "Sites Down",
|
||||||
"uptime": "Uptime"
|
"uptime": "가동 시간"
|
||||||
},
|
},
|
||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "오늘",
|
"gross_percent_today": "오늘",
|
||||||
|
@ -816,7 +816,7 @@
|
||||||
"totalUsed": "Used Storage"
|
"totalUsed": "Used Storage"
|
||||||
},
|
},
|
||||||
"mealie": {
|
"mealie": {
|
||||||
"recipes": "Recipes",
|
"recipes": "레시피",
|
||||||
"users": "사용자",
|
"users": "사용자",
|
||||||
"categories": "분류",
|
"categories": "분류",
|
||||||
"tags": "태그"
|
"tags": "태그"
|
||||||
|
@ -830,7 +830,7 @@
|
||||||
"failed": "Failed"
|
"failed": "Failed"
|
||||||
},
|
},
|
||||||
"openwrt": {
|
"openwrt": {
|
||||||
"uptime": "Uptime",
|
"uptime": "가동 시간",
|
||||||
"cpuLoad": "CPU Load Avg (5m)",
|
"cpuLoad": "CPU Load Avg (5m)",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"down": "Down",
|
"down": "Down",
|
||||||
|
@ -839,7 +839,7 @@
|
||||||
},
|
},
|
||||||
"uptimerobot": {
|
"uptimerobot": {
|
||||||
"status": "상태",
|
"status": "상태",
|
||||||
"uptime": "Uptime",
|
"uptime": "가동 시간",
|
||||||
"lastDown": "Last Downtime",
|
"lastDown": "Last Downtime",
|
||||||
"downDuration": "Downtime Duration",
|
"downDuration": "Downtime Duration",
|
||||||
"sitesUp": "Sites Up",
|
"sitesUp": "Sites Up",
|
||||||
|
@ -906,7 +906,7 @@
|
||||||
},
|
},
|
||||||
"tandoor": {
|
"tandoor": {
|
||||||
"users": "사용자",
|
"users": "사용자",
|
||||||
"recipes": "Recipes",
|
"recipes": "레시피",
|
||||||
"keywords": "키워드"
|
"keywords": "키워드"
|
||||||
},
|
},
|
||||||
"homebox": {
|
"homebox": {
|
||||||
|
@ -947,7 +947,7 @@
|
||||||
},
|
},
|
||||||
"frigate": {
|
"frigate": {
|
||||||
"cameras": "카메라",
|
"cameras": "카메라",
|
||||||
"uptime": "Uptime",
|
"uptime": "가동 시간",
|
||||||
"version": "버전"
|
"version": "버전"
|
||||||
},
|
},
|
||||||
"linkwarden": {
|
"linkwarden": {
|
||||||
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "배터리 충전 중",
|
"bcharge": "배터리 충전 중",
|
||||||
"timeleft": "남은 시간"
|
"timeleft": "남은 시간"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "Atlikušais laiks"
|
"timeleft": "Atlikušais laiks"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Bateri dicas",
|
"bcharge": "Bateri dicas",
|
||||||
"timeleft": "Masa Tinggal"
|
"timeleft": "Masa Tinggal"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Batterij opladen",
|
"bcharge": "Batterij opladen",
|
||||||
"timeleft": "Resterende Tijd"
|
"timeleft": "Resterende Tijd"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Batteriladning",
|
"bcharge": "Batteriladning",
|
||||||
"timeleft": "Gjenstående tid"
|
"timeleft": "Gjenstående tid"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -149,8 +149,8 @@
|
||||||
"received": "Odebrane",
|
"received": "Odebrane",
|
||||||
"sent": "Wysłane",
|
"sent": "Wysłane",
|
||||||
"externalIPAddress": "Pub. IP",
|
"externalIPAddress": "Pub. IP",
|
||||||
"externalIPv6Address": "Ext. IPv6",
|
"externalIPv6Address": "Zewn. IPv6",
|
||||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
"externalIPv6Prefix": "Zewn. prefiks IPv6"
|
||||||
},
|
},
|
||||||
"caddy": {
|
"caddy": {
|
||||||
"upstreams": "Upstreams",
|
"upstreams": "Upstreams",
|
||||||
|
@ -705,8 +705,8 @@
|
||||||
"time": "Czas"
|
"time": "Czas"
|
||||||
},
|
},
|
||||||
"firefly": {
|
"firefly": {
|
||||||
"networth": "Net Worth",
|
"networth": "Wartość netto",
|
||||||
"budget": "Budget"
|
"budget": "Budżet"
|
||||||
},
|
},
|
||||||
"grafana": {
|
"grafana": {
|
||||||
"dashboards": "Panel główny",
|
"dashboards": "Panel główny",
|
||||||
|
@ -886,7 +886,7 @@
|
||||||
"notifications": "Powiadomienia",
|
"notifications": "Powiadomienia",
|
||||||
"issues": "Zgłoszenia",
|
"issues": "Zgłoszenia",
|
||||||
"pulls": "Żądania Pull",
|
"pulls": "Żądania Pull",
|
||||||
"repositories": "Repositories"
|
"repositories": "Repozytoria"
|
||||||
},
|
},
|
||||||
"stash": {
|
"stash": {
|
||||||
"scenes": "Sceny",
|
"scenes": "Sceny",
|
||||||
|
@ -1024,12 +1024,12 @@
|
||||||
"bcharge": "Stan baterii",
|
"bcharge": "Stan baterii",
|
||||||
"timeleft": "Pozostało"
|
"timeleft": "Pozostało"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Zakładki",
|
||||||
"favorites": "Favorites",
|
"favorites": "Ulubione",
|
||||||
"archived": "Archived",
|
"archived": "Zarchiwizowane",
|
||||||
"highlights": "Highlights",
|
"highlights": "Wyróżnione",
|
||||||
"lists": "Lists",
|
"lists": "Listy",
|
||||||
"tags": "Tagi"
|
"tags": "Tagi"
|
||||||
},
|
},
|
||||||
"slskd": {
|
"slskd": {
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Carga da bateria",
|
"bcharge": "Carga da bateria",
|
||||||
"timeleft": "Tempo Restante"
|
"timeleft": "Tempo Restante"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -886,7 +886,7 @@
|
||||||
"notifications": "Notificações",
|
"notifications": "Notificações",
|
||||||
"issues": "Problemas",
|
"issues": "Problemas",
|
||||||
"pulls": "Solicitações de Envio",
|
"pulls": "Solicitações de Envio",
|
||||||
"repositories": "Repositories"
|
"repositories": "Repositórios"
|
||||||
},
|
},
|
||||||
"stash": {
|
"stash": {
|
||||||
"scenes": "Cenas",
|
"scenes": "Cenas",
|
||||||
|
@ -1024,8 +1024,8 @@
|
||||||
"bcharge": "Carga da bateria",
|
"bcharge": "Carga da bateria",
|
||||||
"timeleft": "Tempo restante"
|
"timeleft": "Tempo restante"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Favoritos",
|
"bookmarks": "Marcadores",
|
||||||
"favorites": "Favoritos",
|
"favorites": "Favoritos",
|
||||||
"archived": "Arquivados",
|
"archived": "Arquivados",
|
||||||
"highlights": "Destaques",
|
"highlights": "Destaques",
|
||||||
|
@ -1036,7 +1036,7 @@
|
||||||
"slskStatus": "Rede",
|
"slskStatus": "Rede",
|
||||||
"connected": "Conectado",
|
"connected": "Conectado",
|
||||||
"disconnected": "Desconectado",
|
"disconnected": "Desconectado",
|
||||||
"updateStatus": "Update",
|
"updateStatus": "Atualize",
|
||||||
"update_yes": "Disponível",
|
"update_yes": "Disponível",
|
||||||
"update_no": "Atualizado",
|
"update_no": "Atualizado",
|
||||||
"downloads": "Transferências",
|
"downloads": "Transferências",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "Timp rămas"
|
"timeleft": "Timp rămas"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -886,7 +886,7 @@
|
||||||
"notifications": "Уведомления",
|
"notifications": "Уведомления",
|
||||||
"issues": "Вопросы",
|
"issues": "Вопросы",
|
||||||
"pulls": "Запросы на слияние (Pull Request)",
|
"pulls": "Запросы на слияние (Pull Request)",
|
||||||
"repositories": "Repositories"
|
"repositories": "Репозитории"
|
||||||
},
|
},
|
||||||
"stash": {
|
"stash": {
|
||||||
"scenes": "Сцены",
|
"scenes": "Сцены",
|
||||||
|
@ -1024,10 +1024,10 @@
|
||||||
"bcharge": "Заряд батареи",
|
"bcharge": "Заряд батареи",
|
||||||
"timeleft": "Осталось"
|
"timeleft": "Осталось"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Закладки",
|
"bookmarks": "Закладки",
|
||||||
"favorites": "Избранное",
|
"favorites": "Избранное",
|
||||||
"archived": "Архивированное",
|
"archived": "Архив",
|
||||||
"highlights": "События",
|
"highlights": "События",
|
||||||
"lists": "Список",
|
"lists": "Список",
|
||||||
"tags": "Теги"
|
"tags": "Теги"
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Nabitie batérie",
|
"bcharge": "Nabitie batérie",
|
||||||
"timeleft": "Zostávajúci čas"
|
"timeleft": "Zostávajúci čas"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Napolnjenost baterije",
|
"bcharge": "Napolnjenost baterije",
|
||||||
"timeleft": "Preostali čas"
|
"timeleft": "Preostali čas"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "Time Left"
|
"timeleft": "Time Left"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "Tid kvar"
|
"timeleft": "Tid kvar"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "మిగిలి వున్న సమయం"
|
"timeleft": "మిగిలి వున్న సమయం"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "Time Left"
|
"timeleft": "Time Left"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Pil Yüzdesi",
|
"bcharge": "Pil Yüzdesi",
|
||||||
"timeleft": "Kalan Zaman"
|
"timeleft": "Kalan Zaman"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -120,7 +120,7 @@
|
||||||
"grid_power": "Сітка",
|
"grid_power": "Сітка",
|
||||||
"home_power": "Споживання",
|
"home_power": "Споживання",
|
||||||
"charge_power": "Зарядний пристрій",
|
"charge_power": "Зарядний пристрій",
|
||||||
"kilowatt": "kW"
|
"kilowatt": "кВт"
|
||||||
},
|
},
|
||||||
"flood": {
|
"flood": {
|
||||||
"download": "Завантажено",
|
"download": "Завантажено",
|
||||||
|
@ -149,8 +149,8 @@
|
||||||
"received": "Отримано",
|
"received": "Отримано",
|
||||||
"sent": "Надіслано",
|
"sent": "Надіслано",
|
||||||
"externalIPAddress": "Зовнішній IP",
|
"externalIPAddress": "Зовнішній IP",
|
||||||
"externalIPv6Address": "Ext. IPv6",
|
"externalIPv6Address": "Зовнішній IPv6",
|
||||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
"externalIPv6Prefix": "Зовнішній Префікс IPv6-"
|
||||||
},
|
},
|
||||||
"caddy": {
|
"caddy": {
|
||||||
"upstreams": "Потоки",
|
"upstreams": "Потоки",
|
||||||
|
@ -178,7 +178,7 @@
|
||||||
"connectedAp": "Підключені точки доступу",
|
"connectedAp": "Підключені точки доступу",
|
||||||
"activeUser": "Активні пристрої",
|
"activeUser": "Активні пристрої",
|
||||||
"alerts": "Оповіщення",
|
"alerts": "Оповіщення",
|
||||||
"connectedGateways": "Connected gateways",
|
"connectedGateways": "Підключені шлюзи",
|
||||||
"connectedSwitches": "Підключені перемикачі"
|
"connectedSwitches": "Підключені перемикачі"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
|
@ -420,8 +420,8 @@
|
||||||
},
|
},
|
||||||
"authentik": {
|
"authentik": {
|
||||||
"users": "Користувачі",
|
"users": "Користувачі",
|
||||||
"loginsLast24H": "Вхід (24 години)",
|
"loginsLast24H": "Вхід (протягом доби)",
|
||||||
"failedLoginsLast24H": "Невдалі входи (24 години)"
|
"failedLoginsLast24H": "Невдалі входи (протягом доби)"
|
||||||
},
|
},
|
||||||
"proxmox": {
|
"proxmox": {
|
||||||
"mem": "ОЗП",
|
"mem": "ОЗП",
|
||||||
|
@ -434,7 +434,7 @@
|
||||||
"load": "Завантаження",
|
"load": "Завантаження",
|
||||||
"wait": "Будь ласка, зачекайте",
|
"wait": "Будь ласка, зачекайте",
|
||||||
"temp": "Температура",
|
"temp": "Температура",
|
||||||
"_temp": "Темп.",
|
"_temp": "Температура",
|
||||||
"warn": "Увага",
|
"warn": "Увага",
|
||||||
"uptime": "Онлайн",
|
"uptime": "Онлайн",
|
||||||
"total": "Усього",
|
"total": "Усього",
|
||||||
|
@ -616,7 +616,7 @@
|
||||||
},
|
},
|
||||||
"opendtu": {
|
"opendtu": {
|
||||||
"yieldDay": "Сьогодні",
|
"yieldDay": "Сьогодні",
|
||||||
"absolutePower": "Абс. потуж.",
|
"absolutePower": "Потужність",
|
||||||
"relativePower": "Заряд %",
|
"relativePower": "Заряд %",
|
||||||
"limit": "Ліміт"
|
"limit": "Ліміт"
|
||||||
},
|
},
|
||||||
|
@ -648,13 +648,13 @@
|
||||||
"wanStatus": "Статус WAN",
|
"wanStatus": "Статус WAN",
|
||||||
"up": "Онлайн",
|
"up": "Онлайн",
|
||||||
"down": "Офлайн",
|
"down": "Офлайн",
|
||||||
"temp": "Темп.",
|
"temp": "Температура",
|
||||||
"disk": "Використання диска",
|
"disk": "Використання диска",
|
||||||
"wanIP": "WAN IP"
|
"wanIP": "WAN IP"
|
||||||
},
|
},
|
||||||
"proxmoxbackupserver": {
|
"proxmoxbackupserver": {
|
||||||
"datastore_usage": "Сховище даних",
|
"datastore_usage": "Сховище даних",
|
||||||
"failed_tasks_24h": "Невиконані завдання 24 години",
|
"failed_tasks_24h": "Невиконані завдання за останню добу",
|
||||||
"cpu_usage": "ЦП",
|
"cpu_usage": "ЦП",
|
||||||
"memory_usage": "Пам'ять"
|
"memory_usage": "Пам'ять"
|
||||||
},
|
},
|
||||||
|
@ -705,8 +705,8 @@
|
||||||
"time": "Час"
|
"time": "Час"
|
||||||
},
|
},
|
||||||
"firefly": {
|
"firefly": {
|
||||||
"networth": "Net Worth",
|
"networth": "Чисті Активи",
|
||||||
"budget": "Budget"
|
"budget": "Бюджет"
|
||||||
},
|
},
|
||||||
"grafana": {
|
"grafana": {
|
||||||
"dashboards": "Інформаційні панелі",
|
"dashboards": "Інформаційні панелі",
|
||||||
|
@ -831,7 +831,7 @@
|
||||||
},
|
},
|
||||||
"openwrt": {
|
"openwrt": {
|
||||||
"uptime": "Час роботи",
|
"uptime": "Час роботи",
|
||||||
"cpuLoad": "Сер. навантаження ЦП (5 хв)",
|
"cpuLoad": "Сер. навантаження ЦП (\"5\" хв)",
|
||||||
"up": "Онлайн",
|
"up": "Онлайн",
|
||||||
"down": "Офлайн",
|
"down": "Офлайн",
|
||||||
"bytesTx": "Передано",
|
"bytesTx": "Передано",
|
||||||
|
@ -855,7 +855,7 @@
|
||||||
"inCinemas": "У кінотеатрах",
|
"inCinemas": "У кінотеатрах",
|
||||||
"physicalRelease": "Фізичний реліз",
|
"physicalRelease": "Фізичний реліз",
|
||||||
"digitalRelease": "Цифровий реліз",
|
"digitalRelease": "Цифровий реліз",
|
||||||
"noEventsToday": "Події на сьогодні відсутні",
|
"noEventsToday": "Події на сьогодні відсутні!",
|
||||||
"noEventsFound": "Події не знайдено"
|
"noEventsFound": "Події не знайдено"
|
||||||
},
|
},
|
||||||
"romm": {
|
"romm": {
|
||||||
|
@ -886,7 +886,7 @@
|
||||||
"notifications": "Сповіщення",
|
"notifications": "Сповіщення",
|
||||||
"issues": "Питання",
|
"issues": "Питання",
|
||||||
"pulls": "Pull-запити",
|
"pulls": "Pull-запити",
|
||||||
"repositories": "Repositories"
|
"repositories": "Репозиторії"
|
||||||
},
|
},
|
||||||
"stash": {
|
"stash": {
|
||||||
"scenes": "Сцени",
|
"scenes": "Сцени",
|
||||||
|
@ -1024,23 +1024,23 @@
|
||||||
"bcharge": "Заряд батареї",
|
"bcharge": "Заряд батареї",
|
||||||
"timeleft": "Залишилось"
|
"timeleft": "Залишилось"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Закладки",
|
||||||
"favorites": "Favorites",
|
"favorites": "Обране",
|
||||||
"archived": "Archived",
|
"archived": "Заархівовані",
|
||||||
"highlights": "Highlights",
|
"highlights": "Основні моменти",
|
||||||
"lists": "Lists",
|
"lists": "Списки",
|
||||||
"tags": "Теги"
|
"tags": "Теги"
|
||||||
},
|
},
|
||||||
"slskd": {
|
"slskd": {
|
||||||
"slskStatus": "Мережа",
|
"slskStatus": "Мережа",
|
||||||
"connected": "З'єднано",
|
"connected": "З'єднано",
|
||||||
"disconnected": "Відключено",
|
"disconnected": "Відключено",
|
||||||
"updateStatus": "Update",
|
"updateStatus": "Оновити",
|
||||||
"update_yes": "Доступно",
|
"update_yes": "Доступно",
|
||||||
"update_no": "Актуально",
|
"update_no": "Актуально",
|
||||||
"downloads": "Downloads",
|
"downloads": "Завантаження",
|
||||||
"uploads": "Uploads",
|
"uploads": "Вивантаження",
|
||||||
"sharedFiles": "Файли"
|
"sharedFiles": "Файли"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "Battery Charge",
|
"bcharge": "Battery Charge",
|
||||||
"timeleft": "Thời gian còn lại"
|
"timeleft": "Thời gian còn lại"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
"bbytes": "{{value, bytes(binary: true)}}",
|
"bbytes": "{{value, bytes(binary: true)}}",
|
||||||
"bbits": "{{value, bytes(bits: true; binary: true)}}",
|
"bbits": "{{value, bytes(bits: true; binary: true)}}",
|
||||||
"byterate": "{{value, rate(bits: false)}}",
|
"byterate": "{{value, rate(bits: false)}}",
|
||||||
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
|
"bibyterate": "{{value, bytes(bits: true; binary: true)}}",
|
||||||
"bitrate": "{{value, rate(bits: true)}}",
|
"bitrate": "{{value, rate(bits: true)}}",
|
||||||
"bibitrate": "{{value, rate(bits: true; binary: true)}}",
|
"bibitrate": "{{value, bytes(bits: true; binary: true)}}",
|
||||||
"percent": "{{value, percent}}",
|
"percent": "{{value, percent}}",
|
||||||
"number": "{{value, number}}",
|
"number": "{{value, number}}",
|
||||||
"ms": "{{value, number}}",
|
"ms": "{{value, number}}",
|
||||||
|
@ -120,7 +120,7 @@
|
||||||
"grid_power": "電網",
|
"grid_power": "電網",
|
||||||
"home_power": "電源使用率",
|
"home_power": "電源使用率",
|
||||||
"charge_power": "充電",
|
"charge_power": "充電",
|
||||||
"kilowatt": "kW"
|
"kilowatt": "千瓦"
|
||||||
},
|
},
|
||||||
"flood": {
|
"flood": {
|
||||||
"download": "下載速率",
|
"download": "下載速率",
|
||||||
|
@ -140,7 +140,7 @@
|
||||||
"connectionStatusPendingDisconnect": "待辦的斷開",
|
"connectionStatusPendingDisconnect": "待辦的斷開",
|
||||||
"connectionStatusDisconnecting": "正在中斷連線",
|
"connectionStatusDisconnecting": "正在中斷連線",
|
||||||
"connectionStatusDisconnected": "連接已中斷",
|
"connectionStatusDisconnected": "連接已中斷",
|
||||||
"connectionStatusConnected": "Connected",
|
"connectionStatusConnected": "已連線",
|
||||||
"uptime": "運行時間",
|
"uptime": "運行時間",
|
||||||
"maxDown": "最大下載速率",
|
"maxDown": "最大下載速率",
|
||||||
"maxUp": "最大上傳速率",
|
"maxUp": "最大上傳速率",
|
||||||
|
@ -149,8 +149,8 @@
|
||||||
"received": "已接收",
|
"received": "已接收",
|
||||||
"sent": "已送出",
|
"sent": "已送出",
|
||||||
"externalIPAddress": "外部 IP",
|
"externalIPAddress": "外部 IP",
|
||||||
"externalIPv6Address": "Ext. IPv6",
|
"externalIPv6Address": "外部 IP",
|
||||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
"externalIPv6Prefix": "擴展 IPv-前綴"
|
||||||
},
|
},
|
||||||
"caddy": {
|
"caddy": {
|
||||||
"upstreams": "上行",
|
"upstreams": "上行",
|
||||||
|
@ -178,7 +178,7 @@
|
||||||
"connectedAp": "已連接的存取點",
|
"connectedAp": "已連接的存取點",
|
||||||
"activeUser": "在線裝置",
|
"activeUser": "在線裝置",
|
||||||
"alerts": "警示",
|
"alerts": "警示",
|
||||||
"connectedGateways": "Connected gateways",
|
"connectedGateways": "已連繫的網關",
|
||||||
"connectedSwitches": "已連接的交換器"
|
"connectedSwitches": "已連接的交換器"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
|
@ -229,8 +229,8 @@
|
||||||
"seed": "已完成下載"
|
"seed": "已完成下載"
|
||||||
},
|
},
|
||||||
"develancacheui": {
|
"develancacheui": {
|
||||||
"cachehitbytes": "Cache Hit Bytes",
|
"cachehitbytes": "快取未命中位元組",
|
||||||
"cachemissbytes": "Cache Miss Bytes"
|
"cachemissbytes": "快取未命中位元組"
|
||||||
},
|
},
|
||||||
"downloadstation": {
|
"downloadstation": {
|
||||||
"download": "下載速率",
|
"download": "下載速率",
|
||||||
|
@ -285,9 +285,9 @@
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "全部",
|
"total": "全部",
|
||||||
"connected": "Connected",
|
"connected": "已連線",
|
||||||
"new_devices": "New Devices",
|
"new_devices": "新裝置",
|
||||||
"down_alerts": "Down Alerts"
|
"down_alerts": "離線警告"
|
||||||
},
|
},
|
||||||
"pihole": {
|
"pihole": {
|
||||||
"queries": "查詢",
|
"queries": "查詢",
|
||||||
|
@ -313,13 +313,13 @@
|
||||||
},
|
},
|
||||||
"suwayomi": {
|
"suwayomi": {
|
||||||
"download": "下載咗",
|
"download": "下載咗",
|
||||||
"nondownload": "Non-Downloaded",
|
"nondownload": "已下載",
|
||||||
"read": "已讀",
|
"read": "已讀",
|
||||||
"unread": "未讀",
|
"unread": "未讀",
|
||||||
"downloadedread": "Downloaded & Read",
|
"downloadedread": "已下載且已閱讀",
|
||||||
"downloadedunread": "Downloaded & Unread",
|
"downloadedunread": "已下載且未閱讀",
|
||||||
"nondownloadedread": "Non-Downloaded & Read",
|
"nondownloadedread": "未下載但已閱讀",
|
||||||
"nondownloadedunread": "Non-Downloaded & Unread"
|
"nondownloadedunread": "未下載且未閱讀"
|
||||||
},
|
},
|
||||||
"tailscale": {
|
"tailscale": {
|
||||||
"address": "位址",
|
"address": "位址",
|
||||||
|
@ -337,15 +337,15 @@
|
||||||
},
|
},
|
||||||
"technitium": {
|
"technitium": {
|
||||||
"totalQueries": "查詢",
|
"totalQueries": "查詢",
|
||||||
"totalNoError": "Success",
|
"totalNoError": "成功",
|
||||||
"totalServerFailure": "Failures",
|
"totalServerFailure": "失敗",
|
||||||
"totalNxDomain": "NX Domains",
|
"totalNxDomain": "網域",
|
||||||
"totalRefused": "Refused",
|
"totalRefused": "對方拒投誠信",
|
||||||
"totalAuthoritative": "Authoritative",
|
"totalAuthoritative": "權威的",
|
||||||
"totalRecursive": "Recursive",
|
"totalRecursive": "遞迴",
|
||||||
"totalCached": "Cached",
|
"totalCached": "快取",
|
||||||
"totalBlocked": "封鎖",
|
"totalBlocked": "封鎖",
|
||||||
"totalDropped": "Dropped",
|
"totalDropped": "丟棄",
|
||||||
"totalClients": "客戶端"
|
"totalClients": "客戶端"
|
||||||
},
|
},
|
||||||
"tdarr": {
|
"tdarr": {
|
||||||
|
@ -705,8 +705,8 @@
|
||||||
"time": "時間"
|
"time": "時間"
|
||||||
},
|
},
|
||||||
"firefly": {
|
"firefly": {
|
||||||
"networth": "Net Worth",
|
"networth": "淨值",
|
||||||
"budget": "Budget"
|
"budget": "預算"
|
||||||
},
|
},
|
||||||
"grafana": {
|
"grafana": {
|
||||||
"dashboards": "控制面板",
|
"dashboards": "控制面板",
|
||||||
|
@ -860,16 +860,16 @@
|
||||||
},
|
},
|
||||||
"romm": {
|
"romm": {
|
||||||
"platforms": "平台",
|
"platforms": "平台",
|
||||||
"totalRoms": "Games",
|
"totalRoms": "遊戲",
|
||||||
"saves": "Saves",
|
"saves": "已儲存",
|
||||||
"states": "States",
|
"states": "州",
|
||||||
"screenshots": "Screenshots",
|
"screenshots": "螢幕截圖",
|
||||||
"totalfilesize": "Total Size"
|
"totalfilesize": "大小總計"
|
||||||
},
|
},
|
||||||
"mailcow": {
|
"mailcow": {
|
||||||
"domains": "域",
|
"domains": "域",
|
||||||
"mailboxes": "Mailboxes",
|
"mailboxes": "信箱",
|
||||||
"mails": "Mails",
|
"mails": "郵件數",
|
||||||
"storage": "儲存空間"
|
"storage": "儲存空間"
|
||||||
},
|
},
|
||||||
"netdata": {
|
"netdata": {
|
||||||
|
@ -886,7 +886,7 @@
|
||||||
"notifications": "信息",
|
"notifications": "信息",
|
||||||
"issues": "出版",
|
"issues": "出版",
|
||||||
"pulls": "提取請求",
|
"pulls": "提取請求",
|
||||||
"repositories": "Repositories"
|
"repositories": "套件來源"
|
||||||
},
|
},
|
||||||
"stash": {
|
"stash": {
|
||||||
"scenes": "場景",
|
"scenes": "場景",
|
||||||
|
@ -922,16 +922,16 @@
|
||||||
"bans": "禁止"
|
"bans": "禁止"
|
||||||
},
|
},
|
||||||
"wgeasy": {
|
"wgeasy": {
|
||||||
"connected": "Connected",
|
"connected": "已連線",
|
||||||
"enabled": "啟用",
|
"enabled": "啟用",
|
||||||
"disabled": "停用咗",
|
"disabled": "停用咗",
|
||||||
"total": "全部"
|
"total": "全部"
|
||||||
},
|
},
|
||||||
"swagdashboard": {
|
"swagdashboard": {
|
||||||
"proxied": "Proxied",
|
"proxied": "已代理",
|
||||||
"auth": "With Auth",
|
"auth": "已授權",
|
||||||
"outdated": "Outdated",
|
"outdated": "須更新",
|
||||||
"banned": "Banned"
|
"banned": "已封鎖"
|
||||||
},
|
},
|
||||||
"myspeed": {
|
"myspeed": {
|
||||||
"ping": "延遲",
|
"ping": "延遲",
|
||||||
|
@ -939,43 +939,43 @@
|
||||||
"upload": "上傳速率"
|
"upload": "上傳速率"
|
||||||
},
|
},
|
||||||
"stocks": {
|
"stocks": {
|
||||||
"stocks": "Stocks",
|
"stocks": "股票",
|
||||||
"loading": "Loading",
|
"loading": "載入中 ",
|
||||||
"open": "Open - US Market",
|
"open": "美國市場已開放",
|
||||||
"closed": "Closed - US Market",
|
"closed": "美國市場已關閉",
|
||||||
"invalidConfiguration": "Invalid Configuration"
|
"invalidConfiguration": "無效的設定"
|
||||||
},
|
},
|
||||||
"frigate": {
|
"frigate": {
|
||||||
"cameras": "Cameras",
|
"cameras": " ",
|
||||||
"uptime": "運行時間",
|
"uptime": "運行時間",
|
||||||
"version": "版本"
|
"version": "版本"
|
||||||
},
|
},
|
||||||
"linkwarden": {
|
"linkwarden": {
|
||||||
"links": "Links",
|
"links": " ",
|
||||||
"collections": "Collections",
|
"collections": "收藏庫",
|
||||||
"tags": "標籤"
|
"tags": "標籤"
|
||||||
},
|
},
|
||||||
"zabbix": {
|
"zabbix": {
|
||||||
"unclassified": "Not classified",
|
"unclassified": "未分類",
|
||||||
"information": "資訊",
|
"information": "資訊",
|
||||||
"warning": "Warning",
|
"warning": "警告",
|
||||||
"average": "Average",
|
"average": "平均",
|
||||||
"high": "High",
|
"high": "高優先權",
|
||||||
"disaster": "Disaster"
|
"disaster": "災難"
|
||||||
},
|
},
|
||||||
"lubelogger": {
|
"lubelogger": {
|
||||||
"vehicle": "Vehicle",
|
"vehicle": "車輛",
|
||||||
"vehicles": "Vehicles",
|
"vehicles": "車輛",
|
||||||
"serviceRecords": "Service Records",
|
"serviceRecords": "保養記錄",
|
||||||
"reminders": "Reminders",
|
"reminders": "提醒",
|
||||||
"nextReminder": "Next Reminder",
|
"nextReminder": "下一個提醒",
|
||||||
"none": "None"
|
"none": "沒有"
|
||||||
},
|
},
|
||||||
"vikunja": {
|
"vikunja": {
|
||||||
"projects": "Active Projects",
|
"projects": "正在應用的項目",
|
||||||
"tasks7d": "Tasks Due This Week",
|
"tasks7d": "本週到期任務",
|
||||||
"tasksOverdue": "Overdue Tasks",
|
"tasksOverdue": "逾期處理",
|
||||||
"tasksInProgress": "Tasks In Progress"
|
"tasksInProgress": "正在執行的任務"
|
||||||
},
|
},
|
||||||
"headscale": {
|
"headscale": {
|
||||||
"name": "名稱",
|
"name": "名稱",
|
||||||
|
@ -987,7 +987,7 @@
|
||||||
},
|
},
|
||||||
"beszel": {
|
"beszel": {
|
||||||
"name": "名稱",
|
"name": "名稱",
|
||||||
"systems": "Systems",
|
"systems": "系統",
|
||||||
"up": "在線",
|
"up": "在線",
|
||||||
"down": "離線",
|
"down": "離線",
|
||||||
"paused": "擱置中",
|
"paused": "擱置中",
|
||||||
|
@ -996,27 +996,27 @@
|
||||||
"updated": "已更新",
|
"updated": "已更新",
|
||||||
"cpu": "CPU",
|
"cpu": "CPU",
|
||||||
"memory": "記憶體",
|
"memory": "記憶體",
|
||||||
"disk": "Disk",
|
"disk": "儲存空間",
|
||||||
"network": "NET"
|
"network": "網路"
|
||||||
},
|
},
|
||||||
"argocd": {
|
"argocd": {
|
||||||
"apps": "Apps",
|
"apps": "應用程式",
|
||||||
"synced": "Synced",
|
"synced": "已同步",
|
||||||
"outOfSync": "Out Of Sync",
|
"outOfSync": "不同步",
|
||||||
"healthy": "健康",
|
"healthy": "健康",
|
||||||
"degraded": "Degraded",
|
"degraded": "已降級",
|
||||||
"progressing": "Progressing",
|
"progressing": "進度",
|
||||||
"missing": "缺少",
|
"missing": "缺少",
|
||||||
"suspended": "Suspended"
|
"suspended": "暫停"
|
||||||
},
|
},
|
||||||
"spoolman": {
|
"spoolman": {
|
||||||
"loading": "Loading"
|
"loading": "載入中 "
|
||||||
},
|
},
|
||||||
"gitlab": {
|
"gitlab": {
|
||||||
"groups": "Groups",
|
"groups": "群組",
|
||||||
"issues": "出版",
|
"issues": "出版",
|
||||||
"merges": "Merge Requests",
|
"merges": "合併請求",
|
||||||
"projects": "Projects"
|
"projects": "專"
|
||||||
},
|
},
|
||||||
"apcups": {
|
"apcups": {
|
||||||
"status": "狀況",
|
"status": "狀況",
|
||||||
|
@ -1024,23 +1024,23 @@
|
||||||
"bcharge": "充電",
|
"bcharge": "充電",
|
||||||
"timeleft": "用時"
|
"timeleft": "用時"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "書籤",
|
||||||
"favorites": "Favorites",
|
"favorites": "我的最愛",
|
||||||
"archived": "Archived",
|
"archived": "已存檔",
|
||||||
"highlights": "Highlights",
|
"highlights": "標記",
|
||||||
"lists": "Lists",
|
"lists": "列表",
|
||||||
"tags": "標籤"
|
"tags": "標籤"
|
||||||
},
|
},
|
||||||
"slskd": {
|
"slskd": {
|
||||||
"slskStatus": "網絡",
|
"slskStatus": "網絡",
|
||||||
"connected": "Connected",
|
"connected": "已連線",
|
||||||
"disconnected": "連接已中斷",
|
"disconnected": "連接已中斷",
|
||||||
"updateStatus": "Update",
|
"updateStatus": "更新",
|
||||||
"update_yes": "可用",
|
"update_yes": "可用",
|
||||||
"update_no": "已更新至最新",
|
"update_no": "已更新至最新",
|
||||||
"downloads": "Downloads",
|
"downloads": "下載",
|
||||||
"uploads": "Uploads",
|
"uploads": "上傳",
|
||||||
"sharedFiles": "檔案"
|
"sharedFiles": "檔案"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1024,7 +1024,7 @@
|
||||||
"bcharge": "充电中",
|
"bcharge": "充电中",
|
||||||
"timeleft": "剩余时间"
|
"timeleft": "剩余时间"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"archived": "Archived",
|
"archived": "Archived",
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
"bbytes": "{{value, bytes(binary: true)}}",
|
"bbytes": "{{value, bytes(binary: true)}}",
|
||||||
"bbits": "{{value, bytes(bits: true; binary: true)}}",
|
"bbits": "{{value, bytes(bits: true; binary: true)}}",
|
||||||
"byterate": "{{value, rate(bits: false)}}",
|
"byterate": "{{value, rate(bits: false)}}",
|
||||||
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
|
"bibyterate": "{{value, bytes(bits: true; binary: true)}}",
|
||||||
"bitrate": "{{value, rate(bits: true)}}",
|
"bitrate": "{{value, rate(bits: true)}}",
|
||||||
"bibitrate": "{{value, rate(bits: true; binary: true)}}",
|
"bibitrate": "{{value, bytes(bits: true; binary: true)}}",
|
||||||
"percent": "{{value, percent}}",
|
"percent": "{{value, percent}}",
|
||||||
"number": "{{value, number}}",
|
"number": "{{value, number}}",
|
||||||
"ms": "{{value, number}}",
|
"ms": "{{value, number}}",
|
||||||
|
@ -120,7 +120,7 @@
|
||||||
"grid_power": "電網",
|
"grid_power": "電網",
|
||||||
"home_power": "電源使用率",
|
"home_power": "電源使用率",
|
||||||
"charge_power": "充電",
|
"charge_power": "充電",
|
||||||
"kilowatt": "kW"
|
"kilowatt": "千瓦"
|
||||||
},
|
},
|
||||||
"flood": {
|
"flood": {
|
||||||
"download": "下載速率",
|
"download": "下載速率",
|
||||||
|
@ -140,7 +140,7 @@
|
||||||
"connectionStatusPendingDisconnect": "待辦的斷開",
|
"connectionStatusPendingDisconnect": "待辦的斷開",
|
||||||
"connectionStatusDisconnecting": "正在中斷連線",
|
"connectionStatusDisconnecting": "正在中斷連線",
|
||||||
"connectionStatusDisconnected": "連接已中斷",
|
"connectionStatusDisconnected": "連接已中斷",
|
||||||
"connectionStatusConnected": "Connected",
|
"connectionStatusConnected": "已連線",
|
||||||
"uptime": "運行時間",
|
"uptime": "運行時間",
|
||||||
"maxDown": "最大下載速率",
|
"maxDown": "最大下載速率",
|
||||||
"maxUp": "最大上傳速率",
|
"maxUp": "最大上傳速率",
|
||||||
|
@ -149,8 +149,8 @@
|
||||||
"received": "已接收",
|
"received": "已接收",
|
||||||
"sent": "已送出",
|
"sent": "已送出",
|
||||||
"externalIPAddress": "外部 IP",
|
"externalIPAddress": "外部 IP",
|
||||||
"externalIPv6Address": "Ext. IPv6",
|
"externalIPv6Address": "外部 IP",
|
||||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
"externalIPv6Prefix": "擴展 IPv-前綴"
|
||||||
},
|
},
|
||||||
"caddy": {
|
"caddy": {
|
||||||
"upstreams": "上行",
|
"upstreams": "上行",
|
||||||
|
@ -178,7 +178,7 @@
|
||||||
"connectedAp": "已連接的存取點",
|
"connectedAp": "已連接的存取點",
|
||||||
"activeUser": "在線裝置",
|
"activeUser": "在線裝置",
|
||||||
"alerts": "警示",
|
"alerts": "警示",
|
||||||
"connectedGateways": "Connected gateways",
|
"connectedGateways": "已連繫的網關",
|
||||||
"connectedSwitches": "已連接的交換器"
|
"connectedSwitches": "已連接的交換器"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
|
@ -229,8 +229,8 @@
|
||||||
"seed": "已完成下載"
|
"seed": "已完成下載"
|
||||||
},
|
},
|
||||||
"develancacheui": {
|
"develancacheui": {
|
||||||
"cachehitbytes": "Cache Hit Bytes",
|
"cachehitbytes": "快取未命中位元組",
|
||||||
"cachemissbytes": "Cache Miss Bytes"
|
"cachemissbytes": "快取未命中位元組"
|
||||||
},
|
},
|
||||||
"downloadstation": {
|
"downloadstation": {
|
||||||
"download": "下載速率",
|
"download": "下載速率",
|
||||||
|
@ -285,9 +285,9 @@
|
||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "全部",
|
"total": "全部",
|
||||||
"connected": "Connected",
|
"connected": "已連線",
|
||||||
"new_devices": "New Devices",
|
"new_devices": "新裝置",
|
||||||
"down_alerts": "Down Alerts"
|
"down_alerts": "離線警告"
|
||||||
},
|
},
|
||||||
"pihole": {
|
"pihole": {
|
||||||
"queries": "查詢",
|
"queries": "查詢",
|
||||||
|
@ -313,13 +313,13 @@
|
||||||
},
|
},
|
||||||
"suwayomi": {
|
"suwayomi": {
|
||||||
"download": "已下載",
|
"download": "已下載",
|
||||||
"nondownload": "Non-Downloaded",
|
"nondownload": "已下載",
|
||||||
"read": "已讀",
|
"read": "已讀",
|
||||||
"unread": "未讀",
|
"unread": "未讀",
|
||||||
"downloadedread": "Downloaded & Read",
|
"downloadedread": "已下載且已閱讀",
|
||||||
"downloadedunread": "Downloaded & Unread",
|
"downloadedunread": "已下載且未閱讀",
|
||||||
"nondownloadedread": "Non-Downloaded & Read",
|
"nondownloadedread": "未下載但已閱讀",
|
||||||
"nondownloadedunread": "Non-Downloaded & Unread"
|
"nondownloadedunread": "未下載且未閱讀"
|
||||||
},
|
},
|
||||||
"tailscale": {
|
"tailscale": {
|
||||||
"address": "位址",
|
"address": "位址",
|
||||||
|
@ -337,15 +337,15 @@
|
||||||
},
|
},
|
||||||
"technitium": {
|
"technitium": {
|
||||||
"totalQueries": "查詢",
|
"totalQueries": "查詢",
|
||||||
"totalNoError": "Success",
|
"totalNoError": "成功",
|
||||||
"totalServerFailure": "Failures",
|
"totalServerFailure": "失敗",
|
||||||
"totalNxDomain": "NX Domains",
|
"totalNxDomain": "網域",
|
||||||
"totalRefused": "Refused",
|
"totalRefused": "對方拒投誠信",
|
||||||
"totalAuthoritative": "Authoritative",
|
"totalAuthoritative": "權威的",
|
||||||
"totalRecursive": "Recursive",
|
"totalRecursive": "遞迴",
|
||||||
"totalCached": "Cached",
|
"totalCached": "快取",
|
||||||
"totalBlocked": "已阻擋",
|
"totalBlocked": "已阻擋",
|
||||||
"totalDropped": "Dropped",
|
"totalDropped": "丟棄",
|
||||||
"totalClients": "客戶端"
|
"totalClients": "客戶端"
|
||||||
},
|
},
|
||||||
"tdarr": {
|
"tdarr": {
|
||||||
|
@ -705,8 +705,8 @@
|
||||||
"time": "時間"
|
"time": "時間"
|
||||||
},
|
},
|
||||||
"firefly": {
|
"firefly": {
|
||||||
"networth": "Net Worth",
|
"networth": "淨值",
|
||||||
"budget": "Budget"
|
"budget": "預算"
|
||||||
},
|
},
|
||||||
"grafana": {
|
"grafana": {
|
||||||
"dashboards": "控制面板",
|
"dashboards": "控制面板",
|
||||||
|
@ -860,16 +860,16 @@
|
||||||
},
|
},
|
||||||
"romm": {
|
"romm": {
|
||||||
"platforms": "平台",
|
"platforms": "平台",
|
||||||
"totalRoms": "Games",
|
"totalRoms": "遊戲",
|
||||||
"saves": "Saves",
|
"saves": "已儲存",
|
||||||
"states": "States",
|
"states": "州",
|
||||||
"screenshots": "Screenshots",
|
"screenshots": "螢幕截圖",
|
||||||
"totalfilesize": "Total Size"
|
"totalfilesize": "大小總計"
|
||||||
},
|
},
|
||||||
"mailcow": {
|
"mailcow": {
|
||||||
"domains": "網域",
|
"domains": "網域",
|
||||||
"mailboxes": "Mailboxes",
|
"mailboxes": "信箱",
|
||||||
"mails": "Mails",
|
"mails": "郵件數",
|
||||||
"storage": "儲存空間"
|
"storage": "儲存空間"
|
||||||
},
|
},
|
||||||
"netdata": {
|
"netdata": {
|
||||||
|
@ -886,7 +886,7 @@
|
||||||
"notifications": "信息",
|
"notifications": "信息",
|
||||||
"issues": "出版",
|
"issues": "出版",
|
||||||
"pulls": "提取請求",
|
"pulls": "提取請求",
|
||||||
"repositories": "Repositories"
|
"repositories": "套件來源"
|
||||||
},
|
},
|
||||||
"stash": {
|
"stash": {
|
||||||
"scenes": "場景",
|
"scenes": "場景",
|
||||||
|
@ -922,16 +922,16 @@
|
||||||
"bans": "禁止"
|
"bans": "禁止"
|
||||||
},
|
},
|
||||||
"wgeasy": {
|
"wgeasy": {
|
||||||
"connected": "Connected",
|
"connected": "已連線",
|
||||||
"enabled": "已啟用",
|
"enabled": "已啟用",
|
||||||
"disabled": "已停用",
|
"disabled": "已停用",
|
||||||
"total": "全部"
|
"total": "全部"
|
||||||
},
|
},
|
||||||
"swagdashboard": {
|
"swagdashboard": {
|
||||||
"proxied": "Proxied",
|
"proxied": "已代理",
|
||||||
"auth": "With Auth",
|
"auth": "已授權",
|
||||||
"outdated": "Outdated",
|
"outdated": "須更新",
|
||||||
"banned": "Banned"
|
"banned": "已封鎖"
|
||||||
},
|
},
|
||||||
"myspeed": {
|
"myspeed": {
|
||||||
"ping": "延遲",
|
"ping": "延遲",
|
||||||
|
@ -939,43 +939,43 @@
|
||||||
"upload": "上傳速率"
|
"upload": "上傳速率"
|
||||||
},
|
},
|
||||||
"stocks": {
|
"stocks": {
|
||||||
"stocks": "Stocks",
|
"stocks": "股票",
|
||||||
"loading": "Loading",
|
"loading": "載入中 ",
|
||||||
"open": "Open - US Market",
|
"open": "美國市場已開放",
|
||||||
"closed": "Closed - US Market",
|
"closed": "美國市場已關閉",
|
||||||
"invalidConfiguration": "Invalid Configuration"
|
"invalidConfiguration": "無效的設定"
|
||||||
},
|
},
|
||||||
"frigate": {
|
"frigate": {
|
||||||
"cameras": "Cameras",
|
"cameras": " ",
|
||||||
"uptime": "運行時間",
|
"uptime": "運行時間",
|
||||||
"version": "版本"
|
"version": "版本"
|
||||||
},
|
},
|
||||||
"linkwarden": {
|
"linkwarden": {
|
||||||
"links": "Links",
|
"links": " ",
|
||||||
"collections": "Collections",
|
"collections": "收藏庫",
|
||||||
"tags": "標籤"
|
"tags": "標籤"
|
||||||
},
|
},
|
||||||
"zabbix": {
|
"zabbix": {
|
||||||
"unclassified": "Not classified",
|
"unclassified": "未分類",
|
||||||
"information": "資訊",
|
"information": "資訊",
|
||||||
"warning": "Warning",
|
"warning": "警告",
|
||||||
"average": "Average",
|
"average": "平均",
|
||||||
"high": "High",
|
"high": "高優先權",
|
||||||
"disaster": "Disaster"
|
"disaster": "災難"
|
||||||
},
|
},
|
||||||
"lubelogger": {
|
"lubelogger": {
|
||||||
"vehicle": "Vehicle",
|
"vehicle": "車輛",
|
||||||
"vehicles": "Vehicles",
|
"vehicles": "車輛",
|
||||||
"serviceRecords": "Service Records",
|
"serviceRecords": "保養記錄",
|
||||||
"reminders": "Reminders",
|
"reminders": "提醒",
|
||||||
"nextReminder": "Next Reminder",
|
"nextReminder": "下一個提醒",
|
||||||
"none": "None"
|
"none": "沒有"
|
||||||
},
|
},
|
||||||
"vikunja": {
|
"vikunja": {
|
||||||
"projects": "Active Projects",
|
"projects": "正在應用的項目",
|
||||||
"tasks7d": "Tasks Due This Week",
|
"tasks7d": "本週到期任務",
|
||||||
"tasksOverdue": "Overdue Tasks",
|
"tasksOverdue": "逾期處理",
|
||||||
"tasksInProgress": "Tasks In Progress"
|
"tasksInProgress": "正在執行的任務"
|
||||||
},
|
},
|
||||||
"headscale": {
|
"headscale": {
|
||||||
"name": "名稱",
|
"name": "名稱",
|
||||||
|
@ -987,7 +987,7 @@
|
||||||
},
|
},
|
||||||
"beszel": {
|
"beszel": {
|
||||||
"name": "名稱",
|
"name": "名稱",
|
||||||
"systems": "Systems",
|
"systems": "系統",
|
||||||
"up": "在線",
|
"up": "在線",
|
||||||
"down": "離線",
|
"down": "離線",
|
||||||
"paused": "擱置中",
|
"paused": "擱置中",
|
||||||
|
@ -996,27 +996,27 @@
|
||||||
"updated": "已更新",
|
"updated": "已更新",
|
||||||
"cpu": "CPU",
|
"cpu": "CPU",
|
||||||
"memory": "記憶體",
|
"memory": "記憶體",
|
||||||
"disk": "Disk",
|
"disk": "儲存空間",
|
||||||
"network": "NET"
|
"network": "網路"
|
||||||
},
|
},
|
||||||
"argocd": {
|
"argocd": {
|
||||||
"apps": "Apps",
|
"apps": "應用程式",
|
||||||
"synced": "Synced",
|
"synced": "已同步",
|
||||||
"outOfSync": "Out Of Sync",
|
"outOfSync": "不同步",
|
||||||
"healthy": "健康",
|
"healthy": "健康",
|
||||||
"degraded": "Degraded",
|
"degraded": "已降級",
|
||||||
"progressing": "Progressing",
|
"progressing": "進度",
|
||||||
"missing": "缺少",
|
"missing": "缺少",
|
||||||
"suspended": "Suspended"
|
"suspended": "暫停"
|
||||||
},
|
},
|
||||||
"spoolman": {
|
"spoolman": {
|
||||||
"loading": "Loading"
|
"loading": "載入中 "
|
||||||
},
|
},
|
||||||
"gitlab": {
|
"gitlab": {
|
||||||
"groups": "Groups",
|
"groups": "群組",
|
||||||
"issues": "出版",
|
"issues": "出版",
|
||||||
"merges": "Merge Requests",
|
"merges": "合併請求",
|
||||||
"projects": "Projects"
|
"projects": "專"
|
||||||
},
|
},
|
||||||
"apcups": {
|
"apcups": {
|
||||||
"status": "狀態",
|
"status": "狀態",
|
||||||
|
@ -1024,23 +1024,23 @@
|
||||||
"bcharge": "充電",
|
"bcharge": "充電",
|
||||||
"timeleft": "剩餘時間"
|
"timeleft": "剩餘時間"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"karakeep": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "書籤",
|
||||||
"favorites": "Favorites",
|
"favorites": "我的最愛",
|
||||||
"archived": "Archived",
|
"archived": "已存檔",
|
||||||
"highlights": "Highlights",
|
"highlights": "標記",
|
||||||
"lists": "Lists",
|
"lists": "列表",
|
||||||
"tags": "標籤"
|
"tags": "標籤"
|
||||||
},
|
},
|
||||||
"slskd": {
|
"slskd": {
|
||||||
"slskStatus": "網絡",
|
"slskStatus": "網絡",
|
||||||
"connected": "Connected",
|
"connected": "已連線",
|
||||||
"disconnected": "連接已中斷",
|
"disconnected": "連接已中斷",
|
||||||
"updateStatus": "Update",
|
"updateStatus": "更新",
|
||||||
"update_yes": "可觀看",
|
"update_yes": "可觀看",
|
||||||
"update_no": "已更新至最新",
|
"update_no": "已更新至最新",
|
||||||
"downloads": "Downloads",
|
"downloads": "下載",
|
||||||
"uploads": "Uploads",
|
"uploads": "上傳",
|
||||||
"sharedFiles": "檔案"
|
"sharedFiles": "檔案"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import { useRef, useEffect } from "react";
|
|
||||||
import classNames from "classnames";
|
|
||||||
import { Disclosure, Transition } from "@headlessui/react";
|
import { Disclosure, Transition } from "@headlessui/react";
|
||||||
import { MdKeyboardArrowDown } from "react-icons/md";
|
import classNames from "classnames";
|
||||||
import ErrorBoundary from "components/errorboundry";
|
|
||||||
import List from "components/bookmarks/list";
|
import List from "components/bookmarks/list";
|
||||||
|
import ErrorBoundary from "components/errorboundry";
|
||||||
import ResolvedIcon from "components/resolvedicon";
|
import ResolvedIcon from "components/resolvedicon";
|
||||||
|
import { useEffect, useRef } from "react";
|
||||||
|
import { MdKeyboardArrowDown } from "react-icons/md";
|
||||||
|
|
||||||
export default function BookmarksGroup({
|
export default function BookmarksGroup({
|
||||||
bookmarks,
|
bookmarks,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { useContext } from "react";
|
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
import { SettingsContext } from "utils/contexts/settings";
|
|
||||||
import ResolvedIcon from "components/resolvedicon";
|
import ResolvedIcon from "components/resolvedicon";
|
||||||
|
import { useContext } from "react";
|
||||||
|
import { SettingsContext } from "utils/contexts/settings";
|
||||||
|
|
||||||
export default function Item({ bookmark, iconOnly = false }) {
|
export default function Item({ bookmark, iconOnly = false }) {
|
||||||
const description = bookmark.description ?? new URL(bookmark.href).hostname;
|
const description = bookmark.description ?? new URL(bookmark.href).hostname;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* eslint-disable @next/next/no-img-element */
|
/* eslint-disable @next/next/no-img-element */
|
||||||
/* eslint-disable jsx-a11y/alt-text */
|
/* eslint-disable jsx-a11y/alt-text */
|
||||||
import { useRef, useEffect, useContext } from "react";
|
import { useContext, useEffect, useRef } from "react";
|
||||||
import { ColorContext } from "utils/contexts/color";
|
import { ColorContext } from "utils/contexts/color";
|
||||||
|
|
||||||
import themes from "utils/styles/themes";
|
import themes from "utils/styles/themes";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import { useEffect, useState, useRef, useCallback, useContext } from "react";
|
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
|
import { useTranslation } from "next-i18next";
|
||||||
|
import { useCallback, useContext, useEffect, useRef, useState } from "react";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
import { SettingsContext } from "utils/contexts/settings";
|
import { SettingsContext } from "utils/contexts/settings";
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ export default function QuickLaunch({ servicesAndBookmarks, searchString, setSea
|
||||||
const [searchSuggestions, setSearchSuggestions] = useState([]);
|
const [searchSuggestions, setSearchSuggestions] = useState([]);
|
||||||
|
|
||||||
const { data: widgets } = useSWR("/api/widgets");
|
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;
|
let searchProvider;
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ export default function QuickLaunch({ servicesAndBookmarks, searchString, setSea
|
||||||
const result = results[currentItemIndex];
|
const result = results[currentItemIndex];
|
||||||
window.open(
|
window.open(
|
||||||
result.href,
|
result.href,
|
||||||
newWindow ? "_blank" : result.target ?? searchProvider?.target ?? settings.target ?? "_blank",
|
newWindow ? "_blank" : (result.target ?? searchProvider?.target ?? settings.target ?? "_blank"),
|
||||||
"noreferrer",
|
"noreferrer",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,8 @@ export default function QuickLaunch({ servicesAndBookmarks, searchString, setSea
|
||||||
return () => {
|
return () => {
|
||||||
abortController.abort();
|
abortController.abort();
|
||||||
};
|
};
|
||||||
}, [searchString, servicesAndBookmarks, searchDescriptions, hideVisitURL, searchSuggestions, searchProvider, url, t]);
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
}, [searchString, servicesAndBookmarks, searchDescriptions, hideVisitURL, searchSuggestions, searchProvider, url]);
|
||||||
|
|
||||||
const [hidden, setHidden] = useState(true);
|
const [hidden, setHidden] = useState(true);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { useContext } from "react";
|
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
|
import { useContext } from "react";
|
||||||
import { SettingsContext } from "utils/contexts/settings";
|
import { SettingsContext } from "utils/contexts/settings";
|
||||||
import { ThemeContext } from "utils/contexts/theme";
|
import { ThemeContext } from "utils/contexts/theme";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Fragment } from "react";
|
|
||||||
import { Menu, Transition } from "@headlessui/react";
|
import { Menu, Transition } from "@headlessui/react";
|
||||||
import { BiCog } from "react-icons/bi";
|
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
|
import { Fragment } from "react";
|
||||||
|
import { BiCog } from "react-icons/bi";
|
||||||
|
|
||||||
export default function Dropdown({ options, value, setValue }) {
|
export default function Dropdown({ options, value, setValue }) {
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import { useRef, useEffect } from "react";
|
|
||||||
import classNames from "classnames";
|
|
||||||
import { Disclosure, Transition } from "@headlessui/react";
|
import { Disclosure, Transition } from "@headlessui/react";
|
||||||
import { MdKeyboardArrowDown } from "react-icons/md";
|
import classNames from "classnames";
|
||||||
import List from "components/services/list";
|
|
||||||
import ResolvedIcon from "components/resolvedicon";
|
import ResolvedIcon from "components/resolvedicon";
|
||||||
|
import List from "components/services/list";
|
||||||
|
import { useEffect, useRef } from "react";
|
||||||
|
import { MdKeyboardArrowDown } from "react-icons/md";
|
||||||
|
|
||||||
import { columnMap } from "../../utils/layout/columns";
|
import { columnMap } from "../../utils/layout/columns";
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
|
import ResolvedIcon from "components/resolvedicon";
|
||||||
import { useContext, useState } from "react";
|
import { useContext, useState } from "react";
|
||||||
|
import { SettingsContext } from "utils/contexts/settings";
|
||||||
import Docker from "widgets/docker/component";
|
import Docker from "widgets/docker/component";
|
||||||
import Kubernetes from "widgets/kubernetes/component";
|
import Kubernetes from "widgets/kubernetes/component";
|
||||||
import { SettingsContext } from "utils/contexts/settings";
|
|
||||||
import ResolvedIcon from "components/resolvedicon";
|
|
||||||
|
|
||||||
import Status from "./status";
|
import KubernetesStatus from "./kubernetes-status";
|
||||||
import Widget from "./widget";
|
|
||||||
import Ping from "./ping";
|
import Ping from "./ping";
|
||||||
import SiteMonitor from "./site-monitor";
|
import SiteMonitor from "./site-monitor";
|
||||||
import KubernetesStatus from "./kubernetes-status";
|
import Status from "./status";
|
||||||
|
import Widget from "./widget";
|
||||||
|
|
||||||
export default function Item({ service, groupName, useEqualHeights }) {
|
export default function Item({ service, groupName, useEqualHeights }) {
|
||||||
const hasLink = service.href && service.href !== "#";
|
const hasLink = service.href && service.href !== "#";
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import useSWR from "swr";
|
|
||||||
import { t } from "i18next";
|
import { t } from "i18next";
|
||||||
|
import useSWR from "swr";
|
||||||
|
|
||||||
export default function KubernetesStatus({ service, style }) {
|
export default function KubernetesStatus({ service, style }) {
|
||||||
const podSelectorString = service.podSelector !== undefined ? `podSelector=${service.podSelector}` : "";
|
const podSelectorString = service.podSelector !== undefined ? `podSelector=${service.podSelector}` : "";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "next-i18next";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
|
|
||||||
export default function Ping({ groupName, serviceName, style }) {
|
export default function Ping({ groupName, serviceName, style }) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "next-i18next";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
|
|
||||||
export default function SiteMonitor({ groupName, serviceName, style }) {
|
export default function SiteMonitor({ groupName, serviceName, style }) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "next-i18next";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
|
|
||||||
export default function Status({ service, style }) {
|
export default function Status({ service, style }) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { useTranslation } from "next-i18next";
|
|
||||||
import ErrorBoundary from "components/errorboundry";
|
import ErrorBoundary from "components/errorboundry";
|
||||||
|
import { useTranslation } from "next-i18next";
|
||||||
|
|
||||||
import components from "widgets/components";
|
import components from "widgets/components";
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { useTranslation } from "next-i18next";
|
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
|
import { useTranslation } from "next-i18next";
|
||||||
|
|
||||||
export default function Block({ value, label }) {
|
export default function Block({ value, label }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
|
@ -3,6 +3,11 @@ import { SettingsContext } from "utils/contexts/settings";
|
||||||
|
|
||||||
import Error from "./error";
|
import Error from "./error";
|
||||||
|
|
||||||
|
const ALIASED_WIDGETS = {
|
||||||
|
pialert: "netalertx",
|
||||||
|
hoarder: "karakeep",
|
||||||
|
};
|
||||||
|
|
||||||
export default function Container({ error = false, children, service }) {
|
export default function Container({ error = false, children, service }) {
|
||||||
const { settings } = useContext(SettingsContext);
|
const { settings } = useContext(SettingsContext);
|
||||||
|
|
||||||
|
@ -32,7 +37,17 @@ export default function Container({ error = false, children, service }) {
|
||||||
if (!field.includes(".")) {
|
if (!field.includes(".")) {
|
||||||
fullField = `${type}.${field}`;
|
fullField = `${type}.${field}`;
|
||||||
}
|
}
|
||||||
return fullField === child?.props?.label;
|
let matches = fullField === child?.props?.label;
|
||||||
|
// check if the field is an 'alias'
|
||||||
|
if (matches) {
|
||||||
|
return true;
|
||||||
|
} else if (ALIASED_WIDGETS[type]) {
|
||||||
|
matches = fullField.replace(type, ALIASED_WIDGETS[type]) === child?.props?.label;
|
||||||
|
|
||||||
|
return matches;
|
||||||
|
}
|
||||||
|
// no match
|
||||||
|
return false;
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "next-i18next";
|
||||||
import { IoAlertCircle } from "react-icons/io5";
|
import { IoAlertCircle } from "react-icons/io5";
|
||||||
|
|
||||||
function displayError(error) {
|
function displayError(error) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { useContext } from "react";
|
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
|
import { useContext } from "react";
|
||||||
import { TabContext } from "utils/contexts/tab";
|
import { TabContext } from "utils/contexts/tab";
|
||||||
|
|
||||||
function slugify(tabName) {
|
function slugify(tabName) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { useContext, Fragment } from "react";
|
|
||||||
import { IoColorPalette } from "react-icons/io5";
|
|
||||||
import { Popover, Transition } from "@headlessui/react";
|
import { Popover, Transition } from "@headlessui/react";
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
|
import { Fragment, useContext } from "react";
|
||||||
|
import { IoColorPalette } from "react-icons/io5";
|
||||||
import { ColorContext } from "utils/contexts/color";
|
import { ColorContext } from "utils/contexts/color";
|
||||||
|
|
||||||
const colors = [
|
const colors = [
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
import { compareVersions, validate } from "compare-versions";
|
||||||
import cache from "memory-cache";
|
import cache from "memory-cache";
|
||||||
import { useTranslation } from "next-i18next";
|
import { useTranslation } from "next-i18next";
|
||||||
import useSWR from "swr";
|
|
||||||
import { compareVersions, validate } from "compare-versions";
|
|
||||||
import { MdNewReleases } from "react-icons/md";
|
import { MdNewReleases } from "react-icons/md";
|
||||||
|
import useSWR from "swr";
|
||||||
|
|
||||||
const LATEST_RELEASE_CACHE_KEY = "latestRelease";
|
const LATEST_RELEASE_CACHE_KEY = "latestRelease";
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { useState, useEffect } from "react";
|
|
||||||
import { useTranslation } from "next-i18next";
|
import { useTranslation } from "next-i18next";
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
|
||||||
import Container from "../widget/container";
|
import Container from "../widget/container";
|
||||||
import Raw from "../widget/raw";
|
import Raw from "../widget/raw";
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import useSWR from "swr";
|
import classNames from "classnames";
|
||||||
|
import { useTranslation } from "next-i18next";
|
||||||
import { useContext } from "react";
|
import { useContext } from "react";
|
||||||
import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa";
|
import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa";
|
||||||
import { FiCpu, FiHardDrive } from "react-icons/fi";
|
import { FiCpu, FiHardDrive } from "react-icons/fi";
|
||||||
import { useTranslation } from "next-i18next";
|
import useSWR from "swr";
|
||||||
import classNames from "classnames";
|
|
||||||
import { SettingsContext } from "utils/contexts/settings";
|
import { SettingsContext } from "utils/contexts/settings";
|
||||||
|
|
||||||
import Error from "../widget/error";
|
import Error from "../widget/error";
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import useSWR from "swr";
|
|
||||||
import { useTranslation } from "next-i18next";
|
import { useTranslation } from "next-i18next";
|
||||||
|
import useSWR from "swr";
|
||||||
|
|
||||||
import Error from "../widget/error";
|
|
||||||
import Container from "../widget/container";
|
import Container from "../widget/container";
|
||||||
|
import Error from "../widget/error";
|
||||||
import Raw from "../widget/raw";
|
import Raw from "../widget/raw";
|
||||||
|
|
||||||
import Node from "./node";
|
import Node from "./node";
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
import { useTranslation } from "next-i18next";
|
||||||
import { FaMemory } from "react-icons/fa";
|
import { FaMemory } from "react-icons/fa";
|
||||||
import { FiAlertTriangle, FiCpu, FiServer } from "react-icons/fi";
|
import { FiAlertTriangle, FiCpu, FiServer } from "react-icons/fi";
|
||||||
import { SiKubernetes } from "react-icons/si";
|
import { SiKubernetes } from "react-icons/si";
|
||||||
import { useTranslation } from "next-i18next";
|
|
||||||
|
|
||||||
import UsageBar from "../resources/usage-bar";
|
import UsageBar from "../resources/usage-bar";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
|
|
||||||
import Error from "../widget/error";
|
|
||||||
import Container from "../widget/container";
|
import Container from "../widget/container";
|
||||||
|
import Error from "../widget/error";
|
||||||
import Raw from "../widget/raw";
|
import Raw from "../widget/raw";
|
||||||
|
|
||||||
import Node from "./node";
|
import Node from "./node";
|
||||||
|
@ -32,8 +32,8 @@ export default function Longhorn({ options }) {
|
||||||
<div className="flex flex-row self-center flex-wrap justify-between">
|
<div className="flex flex-row self-center flex-wrap justify-between">
|
||||||
{data.nodes
|
{data.nodes
|
||||||
.filter((node) => {
|
.filter((node) => {
|
||||||
if (node.id === "total" && total) {
|
if (node.id === "total") {
|
||||||
return true;
|
return total;
|
||||||
}
|
}
|
||||||
if (!nodes) {
|
if (!nodes) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
import useSWR from "swr";
|
|
||||||
import { useState } from "react";
|
|
||||||
import { WiCloudDown } from "react-icons/wi";
|
|
||||||
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
|
|
||||||
import { useTranslation } from "next-i18next";
|
import { useTranslation } from "next-i18next";
|
||||||
|
import { useState } from "react";
|
||||||
|
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
|
||||||
|
import { WiCloudDown } from "react-icons/wi";
|
||||||
|
import useSWR from "swr";
|
||||||
|
|
||||||
import Error from "../widget/error";
|
import mapIcon from "../../../utils/weather/openmeteo-condition-map";
|
||||||
import Container from "../widget/container";
|
import Container from "../widget/container";
|
||||||
import ContainerButton from "../widget/container_button";
|
import ContainerButton from "../widget/container_button";
|
||||||
import WidgetIcon from "../widget/widget_icon";
|
import Error from "../widget/error";
|
||||||
import PrimaryText from "../widget/primary_text";
|
import PrimaryText from "../widget/primary_text";
|
||||||
import SecondaryText from "../widget/secondary_text";
|
import SecondaryText from "../widget/secondary_text";
|
||||||
import mapIcon from "../../../utils/weather/openmeteo-condition-map";
|
import WidgetIcon from "../widget/widget_icon";
|
||||||
|
|
||||||
function Widget({ options }) {
|
function Widget({ options }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
import useSWR from "swr";
|
|
||||||
import { useState } from "react";
|
|
||||||
import { WiCloudDown } from "react-icons/wi";
|
|
||||||
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
|
|
||||||
import { useTranslation } from "next-i18next";
|
import { useTranslation } from "next-i18next";
|
||||||
|
import { useState } from "react";
|
||||||
|
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
|
||||||
|
import { WiCloudDown } from "react-icons/wi";
|
||||||
|
import useSWR from "swr";
|
||||||
|
|
||||||
import Error from "../widget/error";
|
import mapIcon from "../../../utils/weather/owm-condition-map";
|
||||||
import Container from "../widget/container";
|
import Container from "../widget/container";
|
||||||
import ContainerButton from "../widget/container_button";
|
import ContainerButton from "../widget/container_button";
|
||||||
|
import Error from "../widget/error";
|
||||||
import PrimaryText from "../widget/primary_text";
|
import PrimaryText from "../widget/primary_text";
|
||||||
import SecondaryText from "../widget/secondary_text";
|
import SecondaryText from "../widget/secondary_text";
|
||||||
import WidgetIcon from "../widget/widget_icon";
|
import WidgetIcon from "../widget/widget_icon";
|
||||||
import mapIcon from "../../../utils/weather/owm-condition-map";
|
|
||||||
|
|
||||||
function Widget({ options }) {
|
function Widget({ options }) {
|
||||||
const { t, i18n } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import useSWR from "swr";
|
|
||||||
import { FiCpu } from "react-icons/fi";
|
|
||||||
import { useTranslation } from "next-i18next";
|
import { useTranslation } from "next-i18next";
|
||||||
|
import { FiCpu } from "react-icons/fi";
|
||||||
|
import useSWR from "swr";
|
||||||
|
|
||||||
import Resource from "../widget/resource";
|
|
||||||
import Error from "../widget/error";
|
import Error from "../widget/error";
|
||||||
|
import Resource from "../widget/resource";
|
||||||
|
|
||||||
export default function Cpu({ expanded, refresh = 1500 }) {
|
export default function Cpu({ expanded, refresh = 1500 }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import useSWR from "swr";
|
|
||||||
import { FaThermometerHalf } from "react-icons/fa";
|
|
||||||
import { useTranslation } from "next-i18next";
|
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 Error from "../widget/error";
|
||||||
|
import Resource from "../widget/resource";
|
||||||
|
|
||||||
function convertToFahrenheit(t) {
|
function convertToFahrenheit(t) {
|
||||||
return (t * 9) / 5 + 32;
|
return (t * 9) / 5 + 32;
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import useSWR from "swr";
|
|
||||||
import { FiHardDrive } from "react-icons/fi";
|
|
||||||
import { useTranslation } from "next-i18next";
|
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 Error from "../widget/error";
|
||||||
|
import Resource from "../widget/resource";
|
||||||
|
|
||||||
export default function Disk({ options, expanded, diskUnits, refresh = 1500 }) {
|
export default function Disk({ options, expanded, diskUnits, refresh = 1500 }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import useSWR from "swr";
|
|
||||||
import { FaMemory } from "react-icons/fa";
|
|
||||||
import { useTranslation } from "next-i18next";
|
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 Error from "../widget/error";
|
||||||
|
import Resource from "../widget/resource";
|
||||||
|
|
||||||
export default function Memory({ expanded, refresh = 1500 }) {
|
export default function Memory({ expanded, refresh = 1500 }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import useSWR from "swr";
|
|
||||||
import { FaNetworkWired } from "react-icons/fa";
|
|
||||||
import { useTranslation } from "next-i18next";
|
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 Error from "../widget/error";
|
||||||
|
import Resource from "../widget/resource";
|
||||||
|
|
||||||
export default function Network({ options, refresh = 1500 }) {
|
export default function Network({ options, refresh = 1500 }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import Container from "../widget/container";
|
import Container from "../widget/container";
|
||||||
import Raw from "../widget/raw";
|
import Raw from "../widget/raw";
|
||||||
|
|
||||||
import Disk from "./disk";
|
|
||||||
import Cpu from "./cpu";
|
import Cpu from "./cpu";
|
||||||
import Memory from "./memory";
|
|
||||||
import CpuTemp from "./cputemp";
|
import CpuTemp from "./cputemp";
|
||||||
import Uptime from "./uptime";
|
import Disk from "./disk";
|
||||||
|
import Memory from "./memory";
|
||||||
import Network from "./network";
|
import Network from "./network";
|
||||||
|
import Uptime from "./uptime";
|
||||||
|
|
||||||
export default function Resources({ options }) {
|
export default function Resources({ options }) {
|
||||||
const { expanded, units, diskUnits, tempmin, tempmax } = options;
|
const { expanded, units, diskUnits, tempmin, tempmax } = options;
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import useSWR from "swr";
|
|
||||||
import { FaRegClock } from "react-icons/fa";
|
|
||||||
import { useTranslation } from "next-i18next";
|
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 Error from "../widget/error";
|
||||||
|
import Resource from "../widget/resource";
|
||||||
|
|
||||||
export default function Uptime({ refresh = 1500 }) {
|
export default function Uptime({ refresh = 1500 }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import { useState, useEffect, Fragment } from "react";
|
import { Combobox, Listbox, Transition } from "@headlessui/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 classNames from "classnames";
|
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 ContainerForm from "../widget/container_form";
|
||||||
import Raw from "../widget/raw";
|
import Raw from "../widget/raw";
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import useSWR from "swr";
|
|
||||||
import { useState } from "react";
|
|
||||||
import { useTranslation } from "next-i18next";
|
import { useTranslation } from "next-i18next";
|
||||||
|
import { useState } from "react";
|
||||||
import { FaChartLine } from "react-icons/fa6";
|
import { FaChartLine } from "react-icons/fa6";
|
||||||
|
import useSWR from "swr";
|
||||||
|
|
||||||
import Error from "../widget/error";
|
|
||||||
import Container from "../widget/container";
|
import Container from "../widget/container";
|
||||||
|
import Error from "../widget/error";
|
||||||
import PrimaryText from "../widget/primary_text";
|
import PrimaryText from "../widget/primary_text";
|
||||||
import WidgetIcon from "../widget/widget_icon";
|
|
||||||
import Raw from "../widget/raw";
|
import Raw from "../widget/raw";
|
||||||
|
import WidgetIcon from "../widget/widget_icon";
|
||||||
|
|
||||||
export default function Widget({ options }) {
|
export default function Widget({ options }) {
|
||||||
const { t, i18n } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
|
|
|
@ -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 { 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 { SiUbiquiti } from "react-icons/si";
|
||||||
|
|
||||||
import Error from "../widget/error";
|
|
||||||
import Container from "../widget/container";
|
import Container from "../widget/container";
|
||||||
|
import Error from "../widget/error";
|
||||||
|
import PrimaryText from "../widget/primary_text";
|
||||||
import Raw from "../widget/raw";
|
import Raw from "../widget/raw";
|
||||||
import WidgetIcon from "../widget/widget_icon";
|
import WidgetIcon from "../widget/widget_icon";
|
||||||
import PrimaryText from "../widget/primary_text";
|
|
||||||
|
|
||||||
import useWidgetAPI from "utils/proxy/use-widget-api";
|
import useWidgetAPI from "utils/proxy/use-widget-api";
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
import useSWR from "swr";
|
|
||||||
import { useState } from "react";
|
|
||||||
import { WiCloudDown } from "react-icons/wi";
|
|
||||||
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
|
|
||||||
import { useTranslation } from "next-i18next";
|
import { useTranslation } from "next-i18next";
|
||||||
|
import { useState } from "react";
|
||||||
|
import { MdLocationDisabled, MdLocationSearching } from "react-icons/md";
|
||||||
|
import { WiCloudDown } from "react-icons/wi";
|
||||||
|
import useSWR from "swr";
|
||||||
|
|
||||||
import Error from "../widget/error";
|
import mapIcon from "../../../utils/weather/condition-map";
|
||||||
import Container from "../widget/container";
|
import Container from "../widget/container";
|
||||||
|
import ContainerButton from "../widget/container_button";
|
||||||
|
import Error from "../widget/error";
|
||||||
import PrimaryText from "../widget/primary_text";
|
import PrimaryText from "../widget/primary_text";
|
||||||
import SecondaryText from "../widget/secondary_text";
|
import SecondaryText from "../widget/secondary_text";
|
||||||
import WidgetIcon from "../widget/widget_icon";
|
import WidgetIcon from "../widget/widget_icon";
|
||||||
import ContainerButton from "../widget/container_button";
|
|
||||||
import mapIcon from "../../../utils/weather/condition-map";
|
|
||||||
|
|
||||||
function Widget({ options }) {
|
function Widget({ options }) {
|
||||||
const { t, i18n } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import dynamic from "next/dynamic";
|
|
||||||
import ErrorBoundary from "components/errorboundry";
|
import ErrorBoundary from "components/errorboundry";
|
||||||
|
import dynamic from "next/dynamic";
|
||||||
|
|
||||||
const widgetMappings = {
|
const widgetMappings = {
|
||||||
weatherapi: dynamic(() => import("components/widgets/weather/weather")),
|
weatherapi: dynamic(() => import("components/widgets/weather/weather")),
|
||||||
|
|
|
@ -2,10 +2,10 @@ import classNames from "classnames";
|
||||||
import { useContext } from "react";
|
import { useContext } from "react";
|
||||||
import { SettingsContext } from "utils/contexts/settings";
|
import { SettingsContext } from "utils/contexts/settings";
|
||||||
|
|
||||||
import WidgetIcon from "./widget_icon";
|
|
||||||
import PrimaryText from "./primary_text";
|
import PrimaryText from "./primary_text";
|
||||||
import SecondaryText from "./secondary_text";
|
|
||||||
import Raw from "./raw";
|
import Raw from "./raw";
|
||||||
|
import SecondaryText from "./secondary_text";
|
||||||
|
import WidgetIcon from "./widget_icon";
|
||||||
|
|
||||||
export function getAllClasses(options, additionalClassNames = "") {
|
export function getAllClasses(options, additionalClassNames = "") {
|
||||||
if (options?.style?.header === "boxedWidgets") {
|
if (options?.style?.header === "boxedWidgets") {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { getAllClasses, getInnerBlock, getBottomBlock } from "./container";
|
import { getAllClasses, getBottomBlock, getInnerBlock } from "./container";
|
||||||
|
|
||||||
export default function ContainerButton({ children = [], options, additionalClassNames = "", callback }) {
|
export default function ContainerButton({ children = [], options, additionalClassNames = "", callback }) {
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { getAllClasses, getInnerBlock, getBottomBlock } from "./container";
|
import { getAllClasses, getBottomBlock, getInnerBlock } from "./container";
|
||||||
|
|
||||||
export default function ContainerForm({ children = [], options, additionalClassNames = "", callback }) {
|
export default function ContainerForm({ children = [], options, additionalClassNames = "", callback }) {
|
||||||
return (
|
return (
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue