Compare commits

..

1 commit

Author SHA1 Message Date
18849dbb06
homepage-plus 2025-04-24 19:43:58 +02:00
367 changed files with 1861 additions and 3001 deletions

View file

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

View file

@ -1,4 +1,9 @@
name: Docker CI
name: Docker
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
on:
# schedule:
@ -23,40 +28,43 @@ on:
workflow_dispatch:
env:
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}
jobs:
pre-commit:
name: Linting Checks
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
-
name: Checkout repository
uses: actions/checkout@v4
- name: Install python
-
name: Install python
uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Check files
-
name: Check files
uses: pre-commit/action@v3.0.1
- name: Install pnpm
-
name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
run_install: false
- name: Setup Node.js
-
name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
-
name: Install dependencies
run: pnpm install
- name: Lint frontend
-
name: Lint frontend
run: pnpm run lint
build:
@ -72,55 +80,8 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: |
${{ env.IMAGE_NAME }}
ghcr.io/${{ env.IMAGE_NAME }}
tags: |
# Default tags
type=schedule,pattern=nightly
type=ref,event=branch
type=ref,event=tag
# Versioning tags
type=semver,pattern=v{{version}}
type=semver,pattern=v{{major}}.{{minor}}
type=semver,pattern=v{{major}}
flavor: |
latest=auto
- name: Next.js build cache
uses: actions/cache@v4
with:
path: .next/cache
key: nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('**/*.js', '**/*.jsx') }}
restore-keys: |
nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
run_install: false
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Build app
run: |
NEXT_PUBLIC_BUILDTIME="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}" \
NEXT_PUBLIC_VERSION="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}" \
NEXT_PUBLIC_REVISION="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}" \
pnpm run build
# 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
@ -128,7 +89,6 @@ jobs:
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
@ -136,12 +96,29 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# Setup QEMU
# https://github.com/marketplace/actions/docker-setup-buildx#with-qemu
- name: Setup QEMU
uses: docker/setup-qemu-action@v3.6.0
# Workaround: https://github.com/docker/build-push-action/issues/461
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: |
${{ env.IMAGE_NAME }}
ghcr.io/${{ env.IMAGE_NAME }}
flavor: |
latest=auto
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v6
@ -151,15 +128,18 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
CI=true
BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}
VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
# https://github.com/docker/setup-qemu-action#about
# platforms: linux/amd64,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
platforms: linux/amd64,linux/arm64
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
# https://github.com/docker/build-push-action/issues/252 / https://github.com/moby/buildkit/issues/1896
# Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache

View file

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

View file

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

1
.prettierrc Normal file
View file

@ -0,0 +1 @@
{}

View file

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

View file

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

View file

@ -80,7 +80,7 @@ services:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port
PUID: 1000 # optional, your user id
PGID: 1000 # optional, your group id
ports:

View file

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

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

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

View file

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

View file

@ -78,7 +78,7 @@ background:
You can apply a blur filter to the service & bookmark cards. Note this option is incompatible with the background blur, saturate and brightness filters.
```yaml
cardBlur: xs # xs, md, etc... see https://tailwindcss.com/docs/backdrop-blur
cardBlur: sm # sm, "", md, etc... see https://tailwindcss.com/docs/backdrop-blur
```
## Favicon
@ -254,29 +254,15 @@ layout:
columns: 4
```
### Full Width
### Five Columns
You can make homepage take up the entire window width by adding:
You can add a fifth column to services (when `style: columns` which is default) by adding:
```yaml
fullWidth: true
fiveColumns: true
```
### Maximum Group Columns
You can set the maximum number of columns of groups on larger screen sizes (note this is only for groups with the default `style: columns`, not groups with `stle: row`) by adding:
```yaml
maxGroupColumns: 8 # default is 4 for services, 6 for bookmarks, max 8
```
By default homepage will max out at 4 columns for services and 6 for bookmarks, thus the minimum for this setting is _5_. Of course, if you're setting this to higher numbers, you may want to consider enabling the [fullWidth](#full-width) option as well.
If you want to set the maximum columns for bookmark groups separately, you can do so by adding:
```yaml
maxBookmarkGroupColumns: 6 # default is 6, max 8
```
By default homepage will max out at 4 columns for services with `columns` style
### Collapsible sections

View file

@ -16,7 +16,7 @@ services:
- /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations
environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port
```
### Running as non-root
@ -38,7 +38,7 @@ services:
- /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods
environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port
PUID: $PUID
PGID: $PGID
```

View file

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

View file

@ -225,7 +225,7 @@ spec:
imagePullPolicy: Always
env:
- name: HOMEPAGE_ALLOWED_HOSTS
value: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
value: gethomepage.dev # required, may need port
ports:
- name: http
containerPort: 3000

View file

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

View file

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

View file

@ -70,9 +70,7 @@ If, after correctly adding and mapping your custom icons via the [Icons](../conf
## Disabling IPv6
If you are having issues with certain widgets that are unable to reach public APIs (e.g. weather), in certain setups you may need to disable IPv6. You can set the environment variable `HOMEPAGE_PROXY_DISABLE_IPV6` to `true` to disable IPv6 for the homepage proxy.
Alternatively, you can use the `sysctls` option in your docker-compose file to disable IPv6 for the homepage container completely:
If you are having issues with certain widgets that are unable to reach public APIs (e.g. weather), you may need to disable IPv6 on your host machine. This can be done by adding the following to your `docker-compose.yml` file (or for docker run, the equivalent flag):
```yaml
services:
@ -81,3 +79,12 @@ services:
sysctls:
- net.ipv6.conf.all.disable_ipv6=1
```
or disable IPv6 for the docker network:
```yaml
networks:
some_network:
driver: bridge
enable_ipv6: false
```

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

641
pnpm-lock.yaml generated

File diff suppressed because it is too large Load diff

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Kennisgewings",
"issues": "Kwessies",
"pulls": "Trek Versoeke",
"repositories": "Bewaarplekke"
"pulls": "Trek Versoeke"
},
"stash": {
"scenes": "Tonele",
@ -1024,23 +1023,12 @@
"bcharge": "Batterylading",
"timeleft": "Oorblywende Tyd"
},
"karakeep": {
"bookmarks": "Boekmerke",
"favorites": "Gunstelinge",
"archived": "Geargiveer",
"highlights": "Hoogtepunte",
"lists": "Lyste",
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Merkers"
},
"slskd": {
"slskStatus": "Netwerk",
"connected": "Gekoppel",
"disconnected": "Ontkoppel",
"updateStatus": "Opdateer",
"update_yes": "Beskikbaar",
"update_no": "Op Datum",
"downloads": "Aflaaie",
"uploads": "Oplaaie",
"sharedFiles": "Lêers"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "الإشعارات",
"issues": "المُشكِلات",
"pulls": "طلبات السحب",
"repositories": "Repositories"
"pulls": "طلبات السحب"
},
"stash": {
"scenes": "المشاهد",
@ -1024,23 +1023,12 @@
"bcharge": "شحن البطارية",
"timeleft": "الوقت المتبقي"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "التصنيفات"
},
"slskd": {
"slskStatus": "الشبكة",
"connected": "متصل",
"disconnected": "غير متصل",
"updateStatus": "Update",
"update_yes": "متاح",
"update_no": "حتى الآن",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "ملفات"
}
}

View file

@ -394,7 +394,7 @@
"strelaysrv": {
"numActiveSessions": "Сесии",
"numConnections": "Connections",
"dataRelayed": "",
"dataRelayed": "Relayed",
"transferRate": "Скорост"
},
"mastodon": {
@ -885,8 +885,7 @@
"gitea": {
"notifications": "Известия",
"issues": "Издания",
"pulls": "Заявки за сливане",
"repositories": "Repositories"
"pulls": "Заявки за сливане"
},
"stash": {
"scenes": "Сцени",
@ -1002,7 +1001,7 @@
"argocd": {
"apps": "Приложения",
"synced": "Synced",
"outOfSync": "",
"outOfSync": "Out Of Sync",
"healthy": "Здрав",
"degraded": "Деградирани",
"progressing": "Progressing",
@ -1024,23 +1023,12 @@
"bcharge": "Заряд на батерията",
"timeleft": "Оставащо Време"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Тагове"
},
"slskd": {
"slskStatus": "Мрежа",
"connected": "Свързан",
"disconnected": "Не е свързан",
"updateStatus": "Update",
"update_yes": "Наличен",
"update_no": "Актуално",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Файлове"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notificacions",
"issues": "Problemes",
"pulls": "Sol·licitud de Canvis",
"repositories": "Repositories"
"pulls": "Sol·licitud de Canvis"
},
"stash": {
"scenes": "Escenes",
@ -1024,23 +1023,12 @@
"bcharge": "Càrrega de la bateria",
"timeleft": "Temps restant"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Etiquetes"
},
"slskd": {
"slskStatus": "Xarxa",
"connected": "Connectat",
"disconnected": "Desconnectat",
"updateStatus": "Update",
"update_yes": "Disponible",
"update_no": "Actualitzat",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Fitxers"
}
}

View file

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

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Problemer",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Batteriniveau",
"timeleft": "Resterende tid"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Tilgængelig",
"update_no": "Opdateret",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Filer"
}
}

View file

@ -447,7 +447,7 @@
"write": "Schreiben",
"gpu": "GPU",
"mem": "RAM",
"swap": "Auslagerung"
"swap": "Swap"
},
"quicklaunch": {
"bookmark": "Lesezeichen",
@ -665,8 +665,8 @@
"storage": "Speicher"
},
"uptimekuma": {
"up": "Up",
"down": "Down",
"up": "Seiten verfügbar",
"down": "Seiten nicht verfügbar",
"uptime": "Betriebszeit",
"incident": "Vorfall",
"m": "min"
@ -744,8 +744,8 @@
"targets_total": "Alle Ziele"
},
"gatus": {
"up": "Up",
"down": "Down",
"up": "Seiten verfügbar",
"down": "Seiten nicht verfügbar",
"uptime": "Betriebszeit"
},
"ghostfolio": {
@ -842,8 +842,8 @@
"uptime": "Betriebszeit",
"lastDown": "Letzter Ausfall",
"downDuration": "Ausfalldauer",
"sitesUp": "Up",
"sitesDown": "Down",
"sitesUp": "Seiten verfügbar",
"sitesDown": "Seiten nicht verfügbar",
"paused": "Pausiert",
"notyetchecked": "Noch nicht geprüft",
"up": "Online",
@ -885,8 +885,7 @@
"gitea": {
"notifications": "Benachrichtigungen",
"issues": "Probleme",
"pulls": "Pull-Requests",
"repositories": "Repositories"
"pulls": "Pull-Requests"
},
"stash": {
"scenes": "Szenen",
@ -1024,23 +1023,12 @@
"bcharge": "Akkuladung",
"timeleft": "Verbleibende Zeit"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Schlagwörter"
},
"slskd": {
"slskStatus": "Netzwerk",
"connected": "Verbunden",
"disconnected": "Getrennt",
"updateStatus": "Update",
"update_yes": "Verfügbar",
"update_no": "Aktuell",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Dateien"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Battery Charge",
"timeleft": "Χρόνος που απομένει"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Ετικέτες"
},
"slskd": {
"slskStatus": "Δίκτυο",
"connected": "Συνδέθηκε",
"disconnected": "Αποσυνδέθηκε",
"updateStatus": "Update",
"update_yes": "Διαθέσιμο",
"update_no": "Ενημερωμένο",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Αρχεία"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge":"Battery Charge",
"timeleft":"Time Left"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Havebla",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

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

View file

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

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Battery Charge",
"timeleft": "Aikaa jäljellä"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Saatavilla",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

@ -85,16 +85,16 @@
"ping": {
"error": "Erreur",
"ping": "Latence",
"down": "Down",
"up": "Up",
"down": "Bas",
"up": "Haut",
"not_available": "Non disponible"
},
"siteMonitor": {
"http_status": "Statut HTTP",
"error": "Erreur",
"response": "Réponse",
"down": "Down",
"up": "Up",
"down": "Bas",
"up": "Haut",
"not_available": "Non disponible"
},
"emby": {
@ -142,15 +142,15 @@
"connectionStatusDisconnected": "Déconnecté",
"connectionStatusConnected": "Connecté",
"uptime": "Démarré depuis",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"maxDown": "Max. Bas",
"maxUp": "Max. Haut",
"down": "Bas",
"up": "Haut",
"received": "Reçu",
"sent": "Envoyé",
"externalIPAddress": "IP externe",
"externalIPv6Address": "IPv6 externe",
"externalIPv6Prefix": "Préfixe IPv6 externe"
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "En amont",
@ -178,7 +178,7 @@
"connectedAp": "AP connectés",
"activeUser": "Périphériques actifs",
"alerts": "Alertes",
"connectedGateways": "Passerelles connectées",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Switchs connectés"
},
"nzbget": {
@ -523,15 +523,15 @@
"up_to_date": "À jour",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"up": "Haut",
"pending": "En attente",
"down": "Down"
"down": "Bas"
},
"healthchecks": {
"new": "Nouveau",
"up": "Up",
"up": "Haut",
"grace": "En Période de Grâce",
"down": "Down",
"down": "Bas",
"paused": "En Pause",
"status": "Statut",
"last_ping": "Dernier Ping",
@ -646,8 +646,8 @@
"load": "Charge moy.",
"memory": "Util. Mém.",
"wanStatus": "Statut WAN",
"up": "Up",
"down": "Down",
"up": "Haut",
"down": "Bas",
"temp": "Température",
"disk": "Util. Disque",
"wanIP": "IP WAN"
@ -832,8 +832,8 @@
"openwrt": {
"uptime": "Démarré depuis",
"cpuLoad": "Charge moyenne CPU (5 min)",
"up": "Up",
"down": "Down",
"up": "Haut",
"down": "Bas",
"bytesTx": "Transmis",
"bytesRx": "Reçu"
},
@ -846,9 +846,9 @@
"sitesDown": "Hors ligne",
"paused": "En Pause",
"notyetchecked": "Non vérifié",
"up": "Up",
"up": "Haut",
"seemsdown": "Semble hors ligne",
"down": "Down",
"down": "Bas",
"unknown": "Inconnu"
},
"calendar": {
@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Anomalies",
"pulls": "Demandes de tirage",
"repositories": "Dépôts"
"pulls": "Demandes de tirage"
},
"stash": {
"scenes": "Scènes",
@ -988,8 +987,8 @@
"beszel": {
"name": "Nom",
"systems": "Systèmes",
"up": "Up",
"down": "Down",
"up": "Haut",
"down": "Bas",
"paused": "En Pause",
"pending": "En attente",
"status": "Statut",
@ -1024,23 +1023,12 @@
"bcharge": "Charge de la batterie",
"timeleft": "Temps restant"
},
"karakeep": {
"bookmarks": "Marque-pages",
"favorites": "Favoris",
"archived": "Archivé",
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Listes",
"lists": "Lists",
"tags": "Étiquettes"
},
"slskd": {
"slskStatus": "Réseau",
"connected": "Connecté",
"disconnected": "Déconnecté",
"updateStatus": "Mise à jour",
"update_yes": "Disponible",
"update_no": "À jour",
"downloads": "Téléchargements",
"uploads": "Téléversements",
"sharedFiles": "Fichiers"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Battery Charge",
"timeleft": "זמן שנותר"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "זמין",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Obavijesti",
"issues": "Problemi",
"pulls": "Zahtjevi za povlačenje",
"repositories": "Repositories"
"pulls": "Zahtjevi za povlačenje"
},
"stash": {
"scenes": "Scene",
@ -1024,23 +1023,12 @@
"bcharge": "Napunjenost baterije",
"timeleft": "Preostalo vrijeme"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Oznake"
},
"slskd": {
"slskStatus": "Mreža",
"connected": "Povezano",
"disconnected": "Odspojeno",
"updateStatus": "Update",
"update_yes": "Dostupno",
"update_no": "Aktualno",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Datoteke"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Üzenetek",
"issues": "Problémák",
"pulls": "Pull request-ek",
"repositories": "Repositories"
"pulls": "Pull request-ek"
},
"stash": {
"scenes": "Jelenetek",
@ -1024,23 +1023,12 @@
"bcharge": "Akku töltöttsége",
"timeleft": "Hátralévő idő"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Címkék"
},
"slskd": {
"slskStatus": "Hálózat",
"connected": "Csatlakozva",
"disconnected": "Kapcsolat bontva",
"updateStatus": "Update",
"update_yes": "Elérhető",
"update_no": "Naprakész",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Fájlok"
}
}

View file

@ -342,7 +342,7 @@
"totalNxDomain": "Domain NX",
"totalRefused": "Ditolak",
"totalAuthoritative": "Authoritative",
"totalRecursive": "Rekursif",
"totalRecursive": "Recursive",
"totalCached": "Cached",
"totalBlocked": "Terblokir",
"totalDropped": "Dropped",
@ -705,8 +705,8 @@
"time": "Waktu"
},
"firefly": {
"networth": "Kekayaan Bersih",
"budget": "Anggaran"
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Dasbor",
@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifikasi",
"issues": "Isu",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Adegan",
@ -966,7 +965,7 @@
"lubelogger": {
"vehicle": "Kendaraan",
"vehicles": "Kendaraan",
"serviceRecords": "Catatan Servis",
"serviceRecords": "Service Records",
"reminders": "Pengingat",
"nextReminder": "Pengingat Berikutnya",
"none": "Tidak ada"
@ -1024,23 +1023,12 @@
"bcharge": "Sisa Baterai",
"timeleft": "Sisa Waktu"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tag"
},
"slskd": {
"slskStatus": "Jaringan",
"connected": "Tersambung",
"disconnected": "Terputus",
"updateStatus": "Update",
"update_yes": "Tersedia",
"update_no": "Terbaru",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "File"
}
}

View file

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

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "通知",
"issues": "課題",
"pulls": "プルリクエスト",
"repositories": "Repositories"
"pulls": "プルリクエスト"
},
"stash": {
"scenes": "シーン",
@ -1024,23 +1023,12 @@
"bcharge": "バッテリー充電",
"timeleft": "残り時間"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "タグ"
},
"slskd": {
"slskStatus": "ネットワーク",
"connected": "接続済",
"disconnected": "切断されました",
"updateStatus": "Update",
"update_yes": "利用可",
"update_no": "最新",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "ファイル"
}
}

View file

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

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Battery Charge",
"timeleft": "Atlikušais laiks"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Adegan",
@ -1024,23 +1023,12 @@
"bcharge": "Bateri dicas",
"timeleft": "Masa Tinggal"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tanda nama"
},
"slskd": {
"slskStatus": "Rangkaian",
"connected": "Connected",
"disconnected": "Sambungan Terputus",
"updateStatus": "Update",
"update_yes": "Sudah Ada",
"update_no": "Terkemaskini",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notificaties",
"issues": "Problemen",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scènes",
@ -1024,23 +1023,12 @@
"bcharge": "Batterij opladen",
"timeleft": "Resterende Tijd"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Label"
},
"slskd": {
"slskStatus": "Netwerk",
"connected": "Verbonden",
"disconnected": "Verbinding verbroken",
"updateStatus": "Update",
"update_yes": "Beschikbaar",
"update_no": "Bijgewerkt",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Bestanden"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Varslinger",
"issues": "Issues",
"pulls": "Forespørsel",
"repositories": "Repositories"
"pulls": "Forespørsel"
},
"stash": {
"scenes": "Scener",
@ -1024,23 +1023,12 @@
"bcharge": "Batteriladning",
"timeleft": "Gjenstående tid"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Stikkord"
},
"slskd": {
"slskStatus": "Nettverk",
"connected": "Tilkoblet",
"disconnected": "Frakoblet",
"updateStatus": "Update",
"update_yes": "Tilgjengelig",
"update_no": "Oppdatert",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

@ -149,8 +149,8 @@
"received": "Odebrane",
"sent": "Wysłane",
"externalIPAddress": "Pub. IP",
"externalIPv6Address": "Zewn. IPv6",
"externalIPv6Prefix": "Zewn. prefiks IPv6"
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Upstreams",
@ -705,8 +705,8 @@
"time": "Czas"
},
"firefly": {
"networth": "Wartość netto",
"budget": "Budżet"
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Panel główny",
@ -885,8 +885,7 @@
"gitea": {
"notifications": "Powiadomienia",
"issues": "Zgłoszenia",
"pulls": "Żądania Pull",
"repositories": "Repozytoria"
"pulls": "Żądania Pull"
},
"stash": {
"scenes": "Sceny",
@ -1024,23 +1023,12 @@
"bcharge": "Stan baterii",
"timeleft": "Pozostało"
},
"karakeep": {
"bookmarks": "Zakładki",
"favorites": "Ulubione",
"archived": "Zarchiwizowane",
"highlights": "Wyróżnione",
"lists": "Listy",
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tagi"
},
"slskd": {
"slskStatus": "Sieć",
"connected": "Połączono",
"disconnected": "Rozłączono",
"updateStatus": "Update",
"update_yes": "Dostępne",
"update_no": "Aktualny",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Pliki"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notificações",
"issues": "Problemas",
"pulls": "Solicitar pull",
"repositories": "Repositories"
"pulls": "Solicitar pull"
},
"stash": {
"scenes": "Cenas",
@ -1024,23 +1023,12 @@
"bcharge": "Carga da bateria",
"timeleft": "Tempo Restante"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Etiquetas"
},
"slskd": {
"slskStatus": "Rede",
"connected": "Conectado",
"disconnected": "Desconectado",
"updateStatus": "Update",
"update_yes": "Disponível",
"update_no": "Atualizado",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Ficheiros"
}
}

View file

@ -47,7 +47,7 @@
"load": "Carga",
"temp": "TEMP",
"max": "Máximo",
"uptime": "ATIVO"
"uptime": "CIMA"
},
"unifi": {
"users": "Usuários",
@ -61,7 +61,7 @@
"wlan_devices": "Dispositivos WLAN",
"lan_users": "Usuários de LAN",
"wlan_users": "Usuários de WLAN",
"up": "ATIVO",
"up": "CIMA",
"down": "Desligado",
"wait": "Por favor, aguarde",
"empty_data": "Status do Subsistema desconhecido"
@ -149,8 +149,8 @@
"received": "Recebido",
"sent": "Enviado",
"externalIPAddress": "IP Externo",
"externalIPv6Address": "IPv6 Externo",
"externalIPv6Prefix": "Prefixo IPv6 Externo"
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Streams de Envio",
@ -178,7 +178,7 @@
"connectedAp": "APs Ligados",
"activeUser": "Dispositivos ativos",
"alerts": "Alertas",
"connectedGateways": "Gateways conectados",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Switches conectados"
},
"nzbget": {
@ -229,8 +229,8 @@
"seed": "Semente"
},
"develancacheui": {
"cachehitbytes": "Bytes de Acerto de Cache",
"cachemissbytes": "Bytes de Falha de Cache"
"cachehitbytes": "Cache Hit Bytes",
"cachemissbytes": "Cache Miss Bytes"
},
"downloadstation": {
"download": "Descarregar",
@ -313,13 +313,13 @@
},
"suwayomi": {
"download": "Baixado",
"nondownload": "Não Baixado",
"nondownload": "Non-Downloaded",
"read": "Lido",
"unread": "Não lida",
"downloadedread": "Baixado e Lido",
"downloadedunread": "Baixado e Não Lido",
"nondownloadedread": "Não Baixado e Lido",
"nondownloadedunread": "Não Baixado e Não Lido"
"downloadedread": "Downloaded & Read",
"downloadedunread": "Downloaded & Unread",
"nondownloadedread": "Non-Downloaded & Read",
"nondownloadedunread": "Non-Downloaded & Unread"
},
"tailscale": {
"address": "Endereço",
@ -337,15 +337,15 @@
},
"technitium": {
"totalQueries": "Consultas",
"totalNoError": "Sucesso",
"totalServerFailure": "Falhas",
"totalNxDomain": "Domínios NX",
"totalRefused": "Recusado",
"totalAuthoritative": "Autoritativo",
"totalRecursive": "Recursivo",
"totalCached": "Em cache",
"totalNoError": "Success",
"totalServerFailure": "Failures",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
"totalAuthoritative": "Authoritative",
"totalRecursive": "Recursive",
"totalCached": "Cached",
"totalBlocked": "Bloqueado",
"totalDropped": "Perdidos",
"totalDropped": "Dropped",
"totalClients": "Clientes"
},
"tdarr": {
@ -436,7 +436,7 @@
"temp": "TEMP",
"_temp": "Temperatura",
"warn": "Aviso",
"uptime": "ATIVO",
"uptime": "CIMA",
"total": "Total",
"free": "Livre",
"used": "Utilizado",
@ -705,8 +705,8 @@
"time": "Hora"
},
"firefly": {
"networth": "Valor Líquido",
"budget": "Orçamento"
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Painéis",
@ -860,16 +860,16 @@
},
"romm": {
"platforms": "Plataformas",
"totalRoms": "Jogos",
"totalRoms": "Games",
"saves": "Saves",
"states": "Estados",
"screenshots": "Capturas de Tela",
"totalfilesize": "Tamanho total"
"states": "States",
"screenshots": "Screenshots",
"totalfilesize": "Total Size"
},
"mailcow": {
"domains": "Domínios",
"mailboxes": "Caixas de e-mail",
"mails": "Mensagens",
"mailboxes": "Mailboxes",
"mails": "Mails",
"storage": "Armazenamento"
},
"netdata": {
@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notificações",
"issues": "Problemas",
"pulls": "Solicitações de Envio",
"repositories": "Repositórios"
"pulls": "Solicitações de Envio"
},
"stash": {
"scenes": "Cenas",
@ -952,30 +951,30 @@
},
"linkwarden": {
"links": "Links",
"collections": "Coleções",
"collections": "Collections",
"tags": "Marcadores"
},
"zabbix": {
"unclassified": "Não classificado",
"unclassified": "Not classified",
"information": "Informação",
"warning": "Aviso",
"average": "Médio",
"high": "Alto",
"disaster": "Desastre"
"warning": "Warning",
"average": "Average",
"high": "High",
"disaster": "Disaster"
},
"lubelogger": {
"vehicle": "Veículo",
"vehicles": "Veículos",
"serviceRecords": "Registros de Serviço",
"reminders": "Lembretes",
"nextReminder": "Próximo Lembrete",
"none": "Nenhum"
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
},
"vikunja": {
"projects": "Projetos Ativos",
"tasks7d": "Tarefas que vencem nesta semana",
"tasksOverdue": "Tarefas Atrasadas",
"tasksInProgress": "Tarefas em Andamento"
"projects": "Active Projects",
"tasks7d": "Tasks Due This Week",
"tasksOverdue": "Overdue Tasks",
"tasksInProgress": "Tasks In Progress"
},
"headscale": {
"name": "Nome",
@ -987,7 +986,7 @@
},
"beszel": {
"name": "Nome",
"systems": "Sistemas",
"systems": "Systems",
"up": "Ativo",
"down": "Inativo",
"paused": "Pausado",
@ -996,27 +995,27 @@
"updated": "Atualizado",
"cpu": "CPU",
"memory": "MEM",
"disk": "Disco",
"network": "Rede"
"disk": "Disk",
"network": "NET"
},
"argocd": {
"apps": "Aplicativos",
"synced": "Sincronizado",
"outOfSync": "Fora de sincronia",
"apps": "Apps",
"synced": "Synced",
"outOfSync": "Out Of Sync",
"healthy": "Saudável",
"degraded": "Degradado",
"progressing": "Progredindo",
"degraded": "Degraded",
"progressing": "Progressing",
"missing": "Faltando",
"suspended": "Suspenso"
"suspended": "Suspended"
},
"spoolman": {
"loading": "Carregando"
},
"gitlab": {
"groups": "Grupos",
"groups": "Groups",
"issues": "Problemas",
"merges": "Solicitações de mesclagem",
"projects": "Projetos"
"merges": "Merge Requests",
"projects": "Projects"
},
"apcups": {
"status": "Status",
@ -1024,23 +1023,12 @@
"bcharge": "Carga da bateria",
"timeleft": "Tempo restante"
},
"karakeep": {
"bookmarks": "Marcadores",
"favorites": "Favoritos",
"archived": "Arquivados",
"highlights": "Destaques",
"lists": "Listas",
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Marcadores"
},
"slskd": {
"slskStatus": "Rede",
"connected": "Conectado",
"disconnected": "Desconectado",
"updateStatus": "Atualize",
"update_yes": "Disponível",
"update_no": "Atualizado",
"downloads": "Transferências",
"uploads": "Envios",
"sharedFiles": "Arquivos"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Battery Charge",
"timeleft": "Timp rămas"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Disponibile",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

@ -149,8 +149,8 @@
"received": "Получено",
"sent": "Отправлено",
"externalIPAddress": "Внеш. IP",
"externalIPv6Address": "Внешний IPv6",
"externalIPv6Prefix": "Внешний IPv6 префикс"
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
},
"caddy": {
"upstreams": "Входящие каналы",
@ -178,7 +178,7 @@
"connectedAp": "Подключенные точки доступа",
"activeUser": "Активные устройства",
"alerts": "Предупреждения",
"connectedGateways": "Подключенные шлюзы",
"connectedGateways": "Connected gateways",
"connectedSwitches": "Подключенные коммутаторы"
},
"nzbget": {
@ -705,8 +705,8 @@
"time": "Время"
},
"firefly": {
"networth": "Общая средства",
"budget": "Бюджет"
"networth": "Net Worth",
"budget": "Budget"
},
"grafana": {
"dashboards": "Панели",
@ -861,7 +861,7 @@
"romm": {
"platforms": "Платформы",
"totalRoms": "Игры",
"saves": "Сохранения",
"saves": "Сейвы",
"states": "Состояния",
"screenshots": "Скриншоты",
"totalfilesize": "Общий объем"
@ -885,8 +885,7 @@
"gitea": {
"notifications": "Уведомления",
"issues": "Вопросы",
"pulls": "Запросы на слияние (Pull Request)",
"repositories": "Репозитории"
"pulls": "Запросы на слияние (Pull Request)"
},
"stash": {
"scenes": "Сцены",
@ -928,7 +927,7 @@
"total": "Всего"
},
"swagdashboard": {
"proxied": "Проксировано",
"proxied": "Прокси",
"auth": "С Авторизацией",
"outdated": "Устаревшие",
"banned": "Заблокированные"
@ -959,17 +958,17 @@
"unclassified": "Не классифицировано",
"information": "Информация",
"warning": "Предупреждение",
"average": "Среднее",
"average": "Средняя",
"high": "Высокая",
"disaster": "Чрезвычайное"
"disaster": "Чрезвычайная"
},
"lubelogger": {
"vehicle": "Транспорт",
"vehicles": "Транспорты",
"serviceRecords": "Сервисные записи",
"vehicle": "Автомобиль",
"vehicles": "Автомобили",
"serviceRecords": "Сервисные работы",
"reminders": "Напоминания",
"nextReminder": "Следующее напоминание",
"none": "Отсутствует"
"none": "Нет"
},
"vikunja": {
"projects": "Активные Проекты",
@ -1024,23 +1023,12 @@
"bcharge": "Заряд батареи",
"timeleft": "Осталось"
},
"karakeep": {
"bookmarks": "Закладки",
"favorites": "Избранное",
"archived": "Архив",
"highlights": "События",
"lists": "Список",
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Теги"
},
"slskd": {
"slskStatus": "Сеть",
"connected": "Подключено",
"disconnected": "Отключено",
"updateStatus": "Обновление",
"update_yes": "Доступно",
"update_no": "Последняя версия",
"downloads": "Скачивания",
"uploads": "Загрузки",
"sharedFiles": "Файлов"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Oznámenia",
"issues": "Problémy",
"pulls": "Pull requesty",
"repositories": "Repositories"
"pulls": "Pull requesty"
},
"stash": {
"scenes": "Scény",
@ -1024,23 +1023,12 @@
"bcharge": "Nabitie batérie",
"timeleft": "Zostávajúci čas"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Štítky"
},
"slskd": {
"slskStatus": "Sieť",
"connected": "Pripojené",
"disconnected": "Odpojené",
"updateStatus": "Update",
"update_yes": "Dostupné",
"update_no": "Aktuálny",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Súborov"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Obvestila",
"issues": "Težave",
"pulls": "Zahteve za prenos",
"repositories": "Repositories"
"pulls": "Zahteve za prenos"
},
"stash": {
"scenes": "Scene",
@ -1024,23 +1023,12 @@
"bcharge": "Napolnjenost baterije",
"timeleft": "Preostali čas"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Značke"
},
"slskd": {
"slskStatus": "Omrežje",
"connected": "Povezan",
"disconnected": "Prekinjeno",
"updateStatus": "Update",
"update_yes": "Na voljo",
"update_no": "Posodobljeno",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Datotek"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Battery Charge",
"timeleft": "Tid kvar"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Tillgänglig",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Battery Charge",
"timeleft": "మిగిలి వున్న సమయం"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "అందుబాటులో వున్నవి",
"update_no": "తాజాగా",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Battery Charge",
"timeleft": "Time Left"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Bildirimler",
"issues": "Sorunlar",
"pulls": "Değişiklik İstekleri",
"repositories": "Repositories"
"pulls": "Değişiklik İstekleri"
},
"stash": {
"scenes": "Sahneler",
@ -1024,23 +1023,12 @@
"bcharge": "Pil Yüzdesi",
"timeleft": "Kalan Zaman"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Etiketler"
},
"slskd": {
"slskStatus": "Ağ",
"connected": "Bağlandı",
"disconnected": "Bağlantı kesildi",
"updateStatus": "Update",
"update_yes": "Kullanılabilir",
"update_no": "Güncel",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Dosyalar"
}
}

View file

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

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "Notifications",
"issues": "Issues",
"pulls": "Pull Requests",
"repositories": "Repositories"
"pulls": "Pull Requests"
},
"stash": {
"scenes": "Scenes",
@ -1024,23 +1023,12 @@
"bcharge": "Battery Charge",
"timeleft": "Thời gian còn lại"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "Network",
"connected": "Connected",
"disconnected": "Disconnected",
"updateStatus": "Update",
"update_yes": "Available",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

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

View file

@ -885,8 +885,7 @@
"gitea": {
"notifications": "通知",
"issues": "问题",
"pulls": "PR",
"repositories": "Repositories"
"pulls": "PR"
},
"stash": {
"scenes": "场景",
@ -1024,23 +1023,12 @@
"bcharge": "充电中",
"timeleft": "剩余时间"
},
"karakeep": {
"hoarder": {
"bookmarks": "Bookmarks",
"favorites": "Favorites",
"archived": "Archived",
"highlights": "Highlights",
"lists": "Lists",
"tags": "Tags"
},
"slskd": {
"slskStatus": "网络",
"connected": "已连接",
"disconnected": "未连接",
"updateStatus": "Update",
"update_yes": "可用",
"update_no": "Up to Date",
"downloads": "Downloads",
"uploads": "Uploads",
"sharedFiles": "Files"
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

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