Compare commits

...

22 Commits

Author SHA1 Message Date
Kaloyan Danchev
1f92f0593f Fix TypeScript build errors and configure Traefik deployment
Some checks failed
Master CI / yarn_install_and_build (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Fix type mismatches across Unraid UI pages (SystemInfo, ServerVars,
Notification properties), replace unavailable Mantine components
(ScrollArea.Autosize, IconHardDrive), correct Orchis theme types,
add missing tRPC endpoints (users, syslog, notification actions),
and configure docker-compose for Traefik reverse proxy on dockerproxy
network with unmarr.xtrm-lab.org routing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 23:55:31 +02:00
Kaloyan Danchev
783a12b444 Fix ESLint configuration for Docker build
Some checks failed
Master CI / yarn_install_and_build (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
- Remove ignoreDuringBuilds from eslintConfig in package.json (invalid)
- Add eslint.ignoreDuringBuilds to next.config.js (correct location)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 09:58:47 +02:00
Kaloyan Danchev
a48a06e680 Add Docker deployment for Unraid
Some checks failed
Master CI / yarn_install_and_build (push) Has been cancelled
- Add Dockerfile.unraid with multi-stage build (builds inside container)
- Add docker-compose.unraid.yml for easy deployment
- Add build-and-push.sh script for building and pushing to Gitea registry
- Update root redirect to /unraid dashboard

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 09:48:30 +02:00
Kaloyan Danchev
9a2c56a5dc Phase 4: Add Unraid management pages with sidebar layout
Some checks failed
Master CI / yarn_install_and_build (push) Has been cancelled
- Add UnraidLayout component with full sidebar navigation
- Add Array management page with disk tables and parity check controls
- Add Docker management page with container cards and filtering
- Add VMs management page with power controls (start/stop/pause/resume/reboot)
- Add Shares page with security levels and storage usage
- Add Users page with admin/user roles display
- Add Settings index with links to all settings pages
- Add Identification settings page with system info
- Add Notifications settings page with notification history
- Add Tools index with links to all tools
- Add Syslog page with live log viewing and filtering
- Add Diagnostics page with system health checks
- Update dashboard to use UnraidLayout

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 09:32:52 +02:00
Kaloyan Danchev
83a8546521 Add Unraid API integration and Orchis theme
Some checks failed
Master CI / yarn_install_and_build (push) Has been cancelled
Phase 1: Foundation Setup
- Create Unraid GraphQL client with type-safe queries/mutations
- Add comprehensive TypeScript types for all Unraid data models
- Implement tRPC router with 30+ endpoints for Unraid management
- Add environment variables for Unraid connection

Phase 2: Core Dashboard
- Create SystemInfoCard component (CPU, RAM, OS, motherboard)
- Create ArrayCard component (disks, parity, cache pools)
- Create DockerCard component with start/stop controls
- Create VmsCard component with power management
- Add main Unraid dashboard page with real-time updates

Phase 3: Orchis Theme Integration
- Create Mantine theme override with Orchis design tokens
- Add CSS custom properties for light/dark modes
- Configure shadows, spacing, radius from Orchis specs
- Style all Mantine components with Orchis patterns

Files added:
- src/lib/unraid/* (GraphQL client, types, queries)
- src/server/api/routers/unraid/* (tRPC router)
- src/components/Unraid/* (Dashboard components)
- src/pages/unraid/* (Dashboard page)
- src/styles/orchis/* (Theme configuration)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 09:19:21 +02:00
Kaloyan Danchev
e881ec6cb5 Add Unraid UI project documentation and research
Some checks failed
Master CI / yarn_install_and_build (push) Has been cancelled
- Complete Unraid WebGUI inventory (~100 pages documented)
- Unraid GraphQL API research and documentation
- Homarr architecture documentation
- Orchis GTK theme design tokens (TypeScript)
- Project README with implementation plan

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 07:44:52 +02:00
Meier Lukas
ce336311b1 Merge pull request #2321 from ajnart/dev 2025-08-02 19:24:28 +02:00
Meier Lukas
da138c5b54 chore(release): update version in package-json 2025-08-02 18:36:31 +02:00
Manuel
69f5cd47ad feat: prompt 1.0 migration (#2320)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-08-02 18:35:04 +02:00
Thomas Camlong
638885466e New Crowdin updates (#2231) 2025-08-02 18:04:19 +02:00
Jan Tesař
523fe30452 Updates the installation link (#2318) 2025-08-02 18:00:43 +02:00
Thomas Camlong
cd78714da9 Update greetings.yml 2025-05-30 17:20:31 +02:00
Thomas Camlong
2982c146a4 Update feature-request.yml 2025-05-30 17:18:56 +02:00
Meier Lukas
989cc7de58 Revert "Update PiHole authentication. (PiHole v6)" (#2287) 2025-03-21 20:13:44 +01:00
Thomas Camlong
677224f8de Update README.md 2025-03-21 20:06:12 +01:00
Thomas Camlong
8da6d33c61 Merge pull request #2278 from DR-Blogs/PiHole-v6-API-reintegration
Update PiHole authentication. (PiHole v6)
2025-03-21 20:04:03 +01:00
DR
9be9e3963a Update PiHole authentication. https://docs.pi-hole.net/api/auth/#__tabbed_1_1 2025-02-20 22:27:48 -05:00
Jonathan Chemla
1d3a4af259 docs: Add links to all banners of readme (#2276)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-02-19 21:12:31 +01:00
xmarkurion
1251a89a9b docs: update readme with correct link for getting started. (#2271) 2025-02-19 21:11:14 +01:00
Meier Lukas
274eaa9208 docs: add note about moved repository and migration to 1.0 2025-01-27 18:05:32 +01:00
Meier Lukas
3236402d2b chore(issue-template): add warning alert to issue templates for 1.0 (#2269) 2025-01-27 17:46:21 +01:00
Meier Lukas
c86c69158a Merge pull request #2227 from ajnart/dev 2024-12-17 21:47:24 +01:00
157 changed files with 13167 additions and 520 deletions

View File

@@ -10,4 +10,10 @@ NEXTAUTH_SECRET="anything"
# Disable analytics
NEXT_PUBLIC_DISABLE_ANALYTICS="true"
DEFAULT_COLOR_SCHEME="light"
DEFAULT_COLOR_SCHEME="light"
# Unraid API Configuration
UNRAID_HOST=192.168.10.20
UNRAID_API_KEY=your-api-key-here
UNRAID_USE_SSL=false
UNRAID_PORT=80

View File

@@ -3,6 +3,11 @@ description: Report something that's broken, or not working like intented!
title: '<title>'
labels: ['🐛 Bug']
body:
- type: markdown
attributes:
value: |
> [!WARNING]
> If you want to report a bug for 1.0, please open it on the new [repository](https://github.com/homarr-labs/homarr/issues/new/choose).
- type: dropdown
id: environment
attributes:

View File

@@ -3,6 +3,11 @@ description: Request a feature to help improve Homarr!
title: '<title>'
labels: ['✨ Feature']
body:
- type: markdown
attributes:
value: |
> [!WARNING]
> If you want to request a feature for 1.0, please open it on the new [repository](https://github.com/homarr-labs/homarr/issues/new/choose).
- type: textarea
id: feature
attributes:
@@ -22,3 +27,11 @@ body:
- High (App breaking feature)
validations:
required: true
- type: checkboxes
id: idiot-check
attributes:
label: Please tick the boxes
description: Before submitting, please ensure that
options:
- label: You are **NOT** using a version superior to v1. if that is the case, please fill this issue on the new repository.
required: true

View File

@@ -3,6 +3,11 @@ description: Tell us your idea! We may implement it.
title: '<title>'
labels: ['🤔 Idea']
body:
- type: markdown
attributes:
value: |
> [!WARNING]
> If you have an idea for 1.0, please open it on the new [repository](https://github.com/homarr-labs/homarr/issues/new/choose).
- type: textarea
id: feature
attributes:

View File

@@ -2,6 +2,11 @@ name: 🏗️ Module request
description: Request for a module to be added / an integration with you favourite service !
title: '<title>'
body:
- type: markdown
attributes:
value: |
> [!WARNING]
> If you want to request a new integration for 1.0, please open it on the new [repository](https://github.com/homarr-labs/homarr/issues/new/choose).
- type: textarea
id: name
attributes:

View File

@@ -12,5 +12,5 @@ jobs:
- uses: actions/first-interaction@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: "Hi 👋. Thank you for submitting your first issue to Homarr. Please ensure that you've provided all nessesary information. You can use the three dots > Edit button to update your post with additional images and information. Depending on the current volume of requests, the team should get in conact with you shortly."
issue-message: "Hi 👋. Thank you for submitting your first issue to Homarr. Please ensure that you've opened this issue on the correct repository. Homarr v1 has been moved to github.com/homarr-labs/homarr "
pr-message: "Hi 👋. Thank you for making your first contribution to Homarr. Please ensure that you've completed all the points in the TODO checklist. We'll review your changes shortly."

105
Dockerfile.unraid Normal file
View File

@@ -0,0 +1,105 @@
# Multi-stage Dockerfile for Homarr Unraid UI
# Builds entirely inside Docker to avoid native module issues
# Build stage
FROM node:20.2.0-slim AS builder
WORKDIR /app
# Install build dependencies
RUN apt-get update && apt-get install -y \
python3 \
make \
g++ \
git \
openssl \
&& rm -rf /var/lib/apt/lists/*
# Copy package files
COPY package.json yarn.lock ./
COPY .yarnrc.yml ./
COPY .yarn ./.yarn
# Install dependencies
RUN yarn install --immutable
# Copy source code
COPY . .
# Build the application
ENV SKIP_ENV_VALIDATION=1
ENV NEXTAUTH_SECRET=build-time-secret
ENV DATABASE_URL=file:build.sqlite
RUN yarn build
# Production stage
FROM node:20.2.0-slim
WORKDIR /app
# Define node.js environment variables
ARG PORT=7575
ENV NEXT_TELEMETRY_DISABLED=1
ENV NODE_ENV=production
ENV NODE_OPTIONS='--no-experimental-fetch'
# Copy built application from builder
COPY --from=builder /app/next.config.js ./
COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json ./temp_package.json
COPY --from=builder /app/yarn.lock ./temp_yarn.lock
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/scripts/run.sh ./scripts/run.sh
COPY --from=builder /app/drizzle ./drizzle
COPY --from=builder /app/drizzle/migrate ./migrate
COPY --from=builder /app/tsconfig.json ./migrate/tsconfig.json
COPY --from=builder /app/cli ./cli
RUN chmod +x ./scripts/run.sh
RUN mkdir -p /data
# Install runtime dependencies
RUN apt-get update && apt-get install -y openssl wget && rm -rf /var/lib/apt/lists/*
# Move node_modules to temp location to avoid overwriting
RUN mv node_modules _node_modules
RUN rm package.json
# Install dependencies for migration
RUN cp ./migrate/package.json ./package.json
RUN yarn install --production=false
# Copy better_sqlite3 build for current platform
RUN cp /app/node_modules/better-sqlite3/build/Release/better_sqlite3.node /app/_node_modules/better-sqlite3/build/Release/better_sqlite3.node || true
# Copy node_modules for migration to migrate folder
RUN mv node_modules ./migrate/node_modules
# Restore app node_modules
RUN mv _node_modules node_modules
# Setup CLI
RUN echo '#!/bin/bash\nnode /app/cli/cli.js "$@"' > /usr/bin/homarr
RUN chmod +x /usr/bin/homarr
RUN cd /app/cli && yarn install --production || true
# Expose the default application port
EXPOSE $PORT
ENV PORT=${PORT}
# Environment defaults
ENV DATABASE_URL="file:/data/db.sqlite"
ENV AUTH_TRUST_HOST="true"
ENV PORT=7575
ENV NEXTAUTH_SECRET=NOT_IN_USE_BECAUSE_JWTS_ARE_UNUSED
# Health check
HEALTHCHECK --interval=10s --timeout=5s --start-period=5s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:${PORT} || exit 1
VOLUME [ "/app/data/configs" ]
VOLUME [ "/data" ]
ENTRYPOINT ["sh", "./scripts/run.sh"]

View File

@@ -1,6 +1,5 @@
<!-- Project Title -->
![Banner](docs/banner.png)
[![Banner](docs/banner.png)](https://homarr.dev/)
<!-- Badges -->
<p align="center">
@@ -25,7 +24,7 @@
<strong>Demo ✨</strong>
</a>
<a href="https://homarr.dev/docs/getting-started/installation/">
<a href="https://homarr.dev/docs/getting-started/">
<strong>Install 💻</strong>
</a> •
<a href="https://translate.homarr.dev/">
@@ -41,7 +40,14 @@ Simplify the management of your server with Homarr - a sleek, modern dashboard t
<br/>
<br/>
![Features Section](docs/section-features.png)
> [!IMPORTANT]
> # The Homarr repository has been moved to [HomarrLabs](https://github.com/homarr-labs/homarr)
> # Please create issues related to 1.0 there. This repository will be archived once the 1.0 is fully polished.
> # 1.0 is a complete rewrite and to migrate you have to change your compose file. Please follow the [Migration Guide](https://homarr.dev/blog/2025/01/19/migration-guide-1.0) and read the [Breaking Changes](https://homarr.dev/blog/2024/09/23/version-1.0#breaking-changes)
[![Features Section](docs/section-features.png)](https://homarr.dev/)
- 🖌️ Highly customizable with an extensive drag and drop grid system
- ✨ Integrates seamlessly with your favorite self-hosted applications
@@ -57,7 +63,7 @@ Simplify the management of your server with Homarr - a sleek, modern dashboard t
<br/>
<br/>
![Widgets & Integrations Section](docs/section-widgets-and-integrations.png)
[![Widgets & Integrations Section](docs/section-widgets-and-integrations.png)](https://homarr.dev/docs/category/widgets)
Homarr has a [built-in collection of widgets and integrations](https://homarr.dev/docs/category/integrations), that connect to your applications and enable you to control them directly from the dashboard.
Each widget and integration has a comprehensive documentation
@@ -99,25 +105,25 @@ We're constantly adding new integrations and widgets, which will enhance your ex
<br/>
<br/>
![Preview Section](docs/section-preview.png)
[![Preview Section](docs/section-preview.png)](https://demo.homarr.dev/)
https://user-images.githubusercontent.com/30572287/217098893-5880e7de-13d0-42c5-b505-f7921593396f.mp4
<br/>
<br/>
![Installation Section](docs/section-installation.png)
[![Installation Section](docs/section-installation.png)](https://homarr.dev/docs/category/installation-1)
Since we are updating Homarr very frequently, we recommend reading our official installation guides:
<a href="https://homarr.dev/docs/getting-started/installation/">
<a href="https://homarr.dev/docs/category/installation-1">
<img src="docs/installation-button.png" width="200" />
</a>
<br/>
<br/>
![Contribute Section](docs/section-contribute.png)
[![Contribute Section](docs/section-contribute.png)](https://github.com/ajnart/homarr/blob/dev/CONTRIBUTING.md)
Homarr is maintained by motivated developers in their free-time.
We work for fun and learning on this project.

42
docker-compose.unraid.yml Normal file
View File

@@ -0,0 +1,42 @@
version: "3.8"
services:
unmarr:
image: git.xtrm-lab.org/jazzymc/homarr:latest
container_name: unmarr
restart: unless-stopped
environment:
# Unraid API Configuration
- UNRAID_HOST=192.168.10.20
- UNRAID_API_KEY=${UNRAID_API_KEY}
- UNRAID_USE_SSL=false
- UNRAID_PORT=80
# App Configuration
- TZ=Europe/Sofia
- DATABASE_URL=file:/data/db.sqlite
- AUTH_TRUST_HOST=true
- NEXTAUTH_URL=https://unmarr.xtrm-lab.org
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET:-changeme}
volumes:
- /mnt/user/appdata/unmarr/data:/data
- /mnt/user/appdata/unmarr/configs:/app/data/configs
networks:
dockerproxy:
ipv4_address: 172.18.0.5
labels:
# Traefik
- "traefik.enable=true"
- "traefik.constraint=valid"
- "traefik.http.routers.unmarr.rule=Host(`unmarr.xtrm-lab.org`)"
- "traefik.http.routers.unmarr.entrypoints=https"
- "traefik.http.routers.unmarr.tls=true"
- "traefik.http.routers.unmarr.tls.certresolver=cloudflare"
- "traefik.http.services.unmarr.loadbalancer.server.port=7575"
# Unraid
- "net.unraid.docker.managed=true"
- "net.unraid.docker.icon=https://homarr.dev/img/logo.png"
- "net.unraid.docker.webui=https://unmarr.xtrm-lab.org"
networks:
dockerproxy:
external: true

View File

@@ -0,0 +1,148 @@
# Unraid Custom UI Project
This project transforms the Homarr fork into a custom Unraid management UI with an Orchis GTK theme.
## Project Goals
1. **Step 1**: Recreate all current Unraid WebGUI pages using Homarr as a base, with data from the Unraid GraphQL API
2. **Step 2**: Apply a custom theme based on the Orchis GTK theme
## Project Resources
| Document | Description |
|----------|-------------|
| [WEBGUI-COMPLETE-INVENTORY.md](./WEBGUI-COMPLETE-INVENTORY.md) | Complete inventory of ~100 Unraid WebGUI pages |
| [unraid-api-research.md](./unraid-api-research.md) | Unraid GraphQL API documentation |
| [homarr-architecture.md](./homarr-architecture.md) | Homarr codebase architecture |
| [orchis-design-system.ts](./orchis-design-system.ts) | Orchis theme design tokens (TypeScript) |
## Unraid Server Connection
- **GraphQL Endpoint**: `http://192.168.10.20/graphql`
- **Auth**: `x-api-key` header
- **Socket**: `/var/run/unraid-api.sock`
## Implementation Plan
### Phase 1: Foundation Setup
- [ ] Create Unraid GraphQL client integration
- [ ] Set up API authentication layer
- [ ] Configure environment variables for Unraid connection
- [ ] Create base types for Unraid data models
### Phase 2: Core Pages (Priority Order)
1. **Dashboard** - System overview with real-time metrics
- System info, CPU/RAM usage, array status
- Docker/VM summaries, network, UPS
2. **Array Management** (Main)
- Array devices, pool devices, boot device
- Parity check, array operations
3. **Docker Management**
- Container list, start/stop/restart
- Container details, logs
4. **VM Management**
- VM list, power controls
- VM details, console access
5. **Shares**
- User shares, disk shares
- Share settings, SMB/NFS security
### Phase 3: Orchis Theme Integration
- [ ] Copy design tokens to `src/styles/`
- [ ] Create Mantine theme override with Orchis values
- [ ] Implement light/dark mode with Orchis palettes
- [ ] Replace default components with Orchis-styled versions
### Phase 4: Settings & Tools
- Settings pages (identification, disk, network, etc.)
- Tools pages (syslog, diagnostics, system devices)
- User management
- Notifications system
### Phase 5: Real-time Features
- GraphQL subscriptions for CPU/memory metrics
- Nchan integration for legacy real-time features
- WebSocket connections for live updates
## Key Technical Decisions
### Homarr Stack
- Next.js 13 (Pages Router in this version)
- Mantine UI v6
- tRPC for type-safe API
- Zustand for state management
- React Query for server state
### Data Sources
| Feature | Source |
|---------|--------|
| System info, array, shares | Unraid GraphQL API |
| Docker containers | Unraid GraphQL API |
| VMs | Unraid GraphQL API |
| Real-time CPU/RAM | GraphQL Subscriptions |
| Real-time disk I/O | Nchan WebSocket (`/sub/diskload`) |
| Legacy features | PHP endpoints where needed |
### API Gaps (Require Legacy Endpoints)
- Docker create/delete/restart/logs
- VM create/delete
- Share CRUD, User CRUD
- System reboot/shutdown
- Mover operations
## Directory Structure (New Files)
```
src/
├── lib/
│ └── unraid/
│ ├── client.ts # GraphQL client
│ ├── types.ts # TypeScript types
│ └── queries/ # GraphQL queries
├── pages/
│ └── unraid/
│ ├── dashboard.tsx # Dashboard page
│ ├── array/ # Array pages
│ ├── docker/ # Docker pages
│ ├── vms/ # VM pages
│ ├── shares/ # Share pages
│ ├── settings/ # Settings pages
│ └── tools/ # Tools pages
├── components/
│ └── unraid/
│ ├── Dashboard/ # Dashboard components
│ ├── Array/ # Array components
│ ├── Docker/ # Docker components
│ └── ...
└── styles/
└── orchis/
├── theme.ts # Mantine theme config
├── variables.css # CSS custom properties
└── components.css # Component overrides
```
## Getting Started
```bash
# Install dependencies
yarn install
# Set up environment
cp .env.example .env.local
# Edit .env.local with your Unraid API key
# Run development server
yarn dev
```
## Environment Variables
```env
UNRAID_HOST=192.168.10.20
UNRAID_API_KEY=your-api-key-here
UNRAID_USE_SSL=false
```

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,60 @@
# Homarr Architecture
## Tech Stack
- Next.js 13+ (App Router), React 18, TypeScript
- Mantine UI (component library)
- Zustand (client state), React Query (server state)
- Prisma ORM (SQLite default / PostgreSQL)
- Turbo monorepo, pnpm workspaces
## Project Structure
```
homarr/
├── apps/web/src/ # Main Next.js app
│ ├── app/ # App Router pages
│ ├── components/ # React components
│ ├── modules/ # Widgets & integrations
│ ├── stores/ # Zustand stores
│ └── styles/ # Themes & global CSS
├── packages/
│ ├── api-client/ # API client lib
│ ├── common/ # Shared types/utils
│ ├── definitions/ # Widget/integration defs
│ ├── auth/ # Auth logic
│ └── ui/ # Shared UI components
├── prisma/ # DB schema & migrations
└── turbo.json
```
## Widget System
Each widget in `apps/web/src/modules/`:
- `definition.ts` - Metadata + Zod config schema
- `component.tsx` - React component
- `settings.tsx` - Config panel
- `server-actions.ts` - Backend operations
- Registered in module index, auto-discovered
## Integration System
External service connectors with:
- API client abstraction, credential management
- URL/hostname config, SSL handling
- Error handling, retry, rate limiting, caching
## Theming
- CSS variables + Mantine theming + Tailwind
- Light/dark mode, custom color palettes, accent colors
- Wallpaper/background, font size, border radius customization
- Theme persisted in database
## Adding New Pages
1. Create in `apps/web/src/app/(group)/page-name/page.tsx`
2. Use Mantine UI components
3. Add API routes in `src/app/api/`
4. Create Zustand store or use React Query
5. Update navigation config
## Key Patterns
- Server Components by default, `'use client'` for interactive
- TRPC for type-safe RPC
- Zod schemas for validation
- Prisma for DB operations

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,81 @@
# Unraid API Research (Live from XTRM-Unraid v7.2.3)
## API: unraid-api v4.29.2 (NestJS + Apollo GraphQL)
### Connection
- HTTP: `http://192.168.10.20/graphql`
- WebSocket: `ws://192.168.10.20/graphql` (graphql-ws protocol)
- Unix socket: `/var/run/unraid-api.sock`
- Auth: `x-api-key` header
### GraphQL Queries
| Query | Description |
|-------|-------------|
| `info` | System info (cpu, memory, os, baseboard, devices, display, versions) |
| `array` | Array state, capacity, disks, parities, caches, parity check status |
| `disks` / `disk(id)` | Physical disks with SMART status, temp, serial |
| `docker` | Containers (id, names, state, status, image, ports, autoStart) + networks |
| `vms` | VMs (id, name, state) |
| `shares` | Shares (name, free, used, size, include, exclude, cache, color) |
| `notifications` | Notifications (title, subject, description, importance, type, timestamp) |
| `vars` | Server variables (version, name, timezone, network, SMB/NFS settings) |
| `services` | Running services (name, online, uptime, version) |
| `flash` | Flash drive (guid, vendor, product) |
| `registration` | License (type, state, keyFile, expiration) |
| `network` | Network info (accessUrls) |
| `server` | Server details (owner, guid, wanip, lanip, localurl, remoteurl) |
| `connect` | Connect status (dynamicRemoteAccess, settings) |
| `plugins` | Installed plugins (name, version) |
| `logFiles` / `logFile(path)` | Log file listing and content |
| `upsDevices` / `upsConfiguration` | UPS monitoring |
| `apiKeys` | API key management |
| `customization` | Theme + activation code |
| `me` / `owner` | Current user / server owner |
### GraphQL Mutations
| Mutation | Description |
|----------|-------------|
| `array.setState` | Start/stop array |
| `array.addDiskToArray` / `removeDiskFromArray` | Disk management |
| `array.mountArrayDisk` / `unmountArrayDisk` | Mount/unmount |
| `docker.start(id)` / `docker.stop(id)` | Container start/stop |
| `vm.start/stop/pause/resume/forceStop/reboot/reset(id)` | VM power management |
| `parityCheck.start/pause/resume/cancel` | Parity check control |
| `notification.create/delete/archive/unread` | Notification CRUD |
| `apiKey.create/update/delete` | API key management |
| `customization.setTheme` | Theme switching |
| `connectSignIn/SignOut` | Unraid Connect |
| `setupRemoteAccess` | Remote access config |
### GraphQL Subscriptions (Real-time)
- `systemMetricsCpu` / `systemMetricsCpuTelemetry` / `systemMetricsMemory`
- `arraySubscription` / `parityHistorySubscription`
- `notificationAdded` / `notificationsOverview`
- `logFile` (live log streaming)
- `upsUpdates`
- `ownerSubscription` / `serversSubscription`
### Enums
- ArrayState: STARTED, STOPPED, NEW_ARRAY, RECON_DISK, DISABLE_DISK, etc.
- ArrayDiskStatus: DISK_NP, DISK_OK, DISK_INVALID, DISK_WRONG, DISK_DSBL, etc.
- ArrayDiskType: DATA, PARITY, FLASH, CACHE
- ContainerState: RUNNING, EXITED
- VmState: NOSTATE, RUNNING, IDLE, PAUSED, SHUTDOWN, SHUTOFF, CRASHED, PMSUSPENDED
- DiskFsType: XFS, BTRFS, VFAT, ZFS, EXT4, NTFS
- DiskInterfaceType: SAS, SATA, USB, PCIE, UNKNOWN
- ThemeName: azure, black, gray, white
### Legacy PHP/Nchan Endpoints
- Nchan WebSocket channels: `/sub/var`, `/sub/docker`, `/sub/update1-3`, `/sub/diskload`, etc.
- PHP includes: DashboardApps.php, Control.php, SmartInfo.php, Syslog.php, etc.
- State INI files at `/var/local/emhttp/`: var.ini, disks.ini, shares.ini, etc.
- Legacy control: POST to `/update.htm` for commands
### NOT Available via GraphQL
- Docker create/delete/restart/logs
- VM create/delete
- Share CRUD, User CRUD
- Detailed SMART attributes
- Disk format/clear, spin up/down
- System reboot/shutdown
- Mover operations

View File

@@ -6,6 +6,9 @@ const withBundleAnalyzer = require('@next/bundle-analyzer')({
});
module.exports = withBundleAnalyzer({
eslint: {
ignoreDuringBuilds: true,
},
webpack: (config) => {
// for dynamic loading of auth providers
config.experiments = { ...config.experiments, topLevelAwait: true };
@@ -21,7 +24,7 @@ module.exports = withBundleAnalyzer({
redirects: async () => [
{
source: '/',
destination: '/board',
destination: '/unraid',
permanent: false,
},
],

View File

@@ -1,6 +1,6 @@
{
"name": "homarr",
"version": "0.15.10",
"version": "0.16.0",
"description": "Homarr - A homepage for your server.",
"license": "MIT",
"repository": {
@@ -187,7 +187,6 @@
"importOrderSortSpecifiers": true
},
"eslintConfig": {
"ignoreDuringBuilds": true,
"extends": [
"next",
"eslint:recommended",

Binary file not shown.

BIN
public/imgs/2340450-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

View File

@@ -27,7 +27,7 @@
"items": {
"docker": "Docker",
"api": "API",
"migrate": ""
"migrate": "迁移到 1.0"
}
},
"about": {

View File

@@ -1,33 +1,33 @@
{
"metaTitle": "",
"pageTitle": "",
"description": "",
"metaTitle": "迁移到 1.0",
"pageTitle": "迁移面板、组件和用户",
"description": "将您的面板和用户导出到 ZIP 压缩包,以便在 1.0.0 版本之后将其迁移到 Homarr",
"securityNote": {
"title": "",
"text": ""
"title": "安全说明",
"text": "导出用户和组件时,它还会打开一个带有加密密钥的窗口。此密钥是将数据导入 Homarr 所必需的。请妥善保管,不要与任何人分享。"
},
"form": {
"label": "",
"label": "选择要导出的所有内容",
"option": {
"boards": {
"label": ""
"label": "导出面板"
},
"integrations": {
"label": "",
"description": ""
"label": "导出组件",
"description": "这将包括用于组件的加密凭据。仅在导出面板时可用"
},
"users": {
"label": "",
"description": ""
"label": "导出用户",
"description": "这只会导出凭据用户,密码 hash 和 salt 已加密"
}
}
},
"action": {
"export": ""
"export": "导出数据"
},
"modal": {
"title": "",
"description": "",
"copyDismiss": ""
"title": "加密密钥",
"description": "您的数据已导出。请妥善保管此密钥,不要与任何人共享。您需要此密钥才能将数据导入 Homarr。",
"copyDismiss": "复制并关闭"
}
}

View File

@@ -27,7 +27,7 @@
"items": {
"docker": "Docker",
"api": "API",
"migrate": ""
"migrate": "Přechod na verzi 1.0"
}
},
"about": {

View File

@@ -1,33 +1,33 @@
{
"metaTitle": "",
"pageTitle": "",
"description": "",
"metaTitle": "Přechod na verzi 1.0",
"pageTitle": "Migrace ploch, integrací a uživatelů",
"description": "Exportujete své plochy a uživatele do ZIP-Archivu, aby jste je mohli migrovat do Homarru po verzi 1.0.0",
"securityNote": {
"title": "",
"text": ""
"title": "Bezpečnostní poznámka",
"text": "Při exportování uživatelů a integrací se otevře okno s šifrovacím klíčem. Tento klíč je vyžadován pro následovný import dat do Homarru. Uchovejte jej na bezpečném místě a s nikým jej nesdílejte."
},
"form": {
"label": "",
"label": "Vyberte vše, co chcete exportovat",
"option": {
"boards": {
"label": ""
"label": "Exportovat plochy"
},
"integrations": {
"label": "",
"description": ""
"label": "Exportovat integrace",
"description": "Toto bude obsahovat pouze zašifrované údaje pro integrace. Tato možnost je dostupná pouze při exportování ploch"
},
"users": {
"label": "",
"description": ""
"label": "Exportovat uživatele",
"description": "Toto exportuje pouze údaje uživatelů, hesla, hash a salt jsou zašifrovány"
}
}
},
"action": {
"export": ""
"export": "Exportovat data"
},
"modal": {
"title": "",
"description": "",
"copyDismiss": ""
"title": "Šifrovací klíč",
"description": "Vaše data byla exportována. Uchovejte tento klíč v bezpečí a s nikým jej nesdílejte. Tento klíč budete potřebovat pro import dat do Homarru.",
"copyDismiss": "Zkopírovat a zavřít"
}
}

View File

@@ -22,5 +22,5 @@
"message": "La categoría \"{{name}}\" ha sido creada"
}
},
"importFromDocker": "Importar desde docker"
"importFromDocker": "Importar desde Docker"
}

View File

@@ -27,7 +27,7 @@
"items": {
"docker": "Docker",
"api": "API",
"migrate": ""
"migrate": "Migrar a 1.0"
}
},
"about": {

View File

@@ -1,33 +1,33 @@
{
"metaTitle": "",
"pageTitle": "",
"description": "",
"metaTitle": "Migrar a 1.0",
"pageTitle": "Migrar tableros, integraciones y usuarios",
"description": "Exporta tus tableros y usuarios a un archivo ZIP para migrarlos a Homarr después de la versión 1.0.0",
"securityNote": {
"title": "",
"text": ""
"title": "Nota de seguridad",
"text": "Al exportar usuarios e integraciones, también se abrirá una modal con una clave de cifrado. Esta clave es necesaria para importar los datos a Homarr. Manténgala segura y no la comparta con nadie."
},
"form": {
"label": "",
"label": "Seleccione todo lo que desea exportar",
"option": {
"boards": {
"label": ""
"label": "Exportar tableros"
},
"integrations": {
"label": "",
"description": ""
"label": "Exportar integraciones",
"description": "Esto incluirá credenciales cifradas para integraciones. Sólo disponible cuando se exporten tableros"
},
"users": {
"label": "",
"description": ""
"label": "Exportar usuarios",
"description": "Esto sólo exportará credenciales de usuario, las contraseñas hash y salt son cifradas"
}
}
},
"action": {
"export": ""
"export": "Exportar datos"
},
"modal": {
"title": "",
"description": "",
"copyDismiss": ""
"title": "Clave de cifrado",
"description": "Sus datos han sido exportados. Mantenga esta clave segura y no la comparta con nadie. Necesitará esta clave para importar los datos a Homarr.",
"copyDismiss": "Copiar y descartar"
}
}

View File

@@ -7,8 +7,8 @@
}
},
"modal": {
"text": "",
"label": "",
"reportButton": ""
"text": "El widget ha fallado inesperadamente. Lea la documentación y corrija los errores tipográficos.",
"label": "Ha ocurrido un error",
"reportButton": "Informar de este error en GitHub"
}
}

View File

@@ -40,4 +40,4 @@
}
},
"error": "Une erreur s'est produite"
}
}

View File

@@ -10,7 +10,7 @@
},
"credits": {
"madeWithLove": "Fait avec ❤️ par @",
"thirdPartyContent": "Voir le contenu de tierce partie",
"thirdPartyContent": "Voir le contenu tiers",
"thirdPartyContentTable": {
"dependencyName": "Dépendance",
"dependencyVersion": "Version"

View File

@@ -27,7 +27,7 @@
"items": {
"docker": "דוקר",
"api": "ממשק API",
"migrate": ""
"migrate": "הגירה ל- 1.0"
}
},
"about": {

View File

@@ -1,33 +1,33 @@
{
"metaTitle": "",
"pageTitle": "",
"description": "",
"metaTitle": "הגירה ל- 1.0",
"pageTitle": "הגירת לוחות, אינטגרציות ומשתמשים",
"description": "מייצא את הלוחות והמשתמשים שלך לארכיון ZIP כדי להעביר אותם ל-Homarr לאחר גרסה 1.0.0",
"securityNote": {
"title": "",
"text": ""
"title": "הערת אבטחה",
"text": "בעת ייצוא משתמשים ואינטגרציות יפתח מסך עם מפתח הצפנה. מפתח זה נדרש כדי לייבא את הנתונים לתוך Homarr. שמור על מפתח ההצפנה בטוח ואל תשתף אותו עם אף אחד."
},
"form": {
"label": "",
"label": "בחירת הפריטים לייצוא",
"option": {
"boards": {
"label": ""
"label": "ייצוא לוחות"
},
"integrations": {
"label": "",
"description": ""
"label": "ייצוא אינטגרציות",
"description": "זה יכלול אישורים מוצפנים לאינטגרציות. זמין רק בעת ייצוא לוחות"
},
"users": {
"label": "",
"description": ""
"label": "ייצוא משתמשים",
"description": "זה ייצא רק אישורי משתמש, סיסמאות hash ואותנטיקציה חד כיוונית מוצפנות"
}
}
},
"action": {
"export": ""
"export": "ייצוא נתונים"
},
"modal": {
"title": "",
"description": "",
"copyDismiss": ""
"title": "מפתח הצפנה",
"description": "הנתונים שלך יוצאו. שמור את המפתח הזה בטוח ואל תשתף אותו עם אף אחד. תזדקק למפתח הזה כדי לייבא את הנתונים לתוך Homarr.",
"copyDismiss": "העתק וסגור"
}
}

View File

@@ -27,7 +27,7 @@
"items": {
"docker": "Docker",
"api": "API",
"migrate": ""
"migrate": "Migráció 1.0-ra"
}
},
"about": {

View File

@@ -1,33 +1,33 @@
{
"metaTitle": "",
"pageTitle": "",
"description": "",
"metaTitle": "Migráció 1.0-ra",
"pageTitle": "Áttelepítheti a táblákat, az integrációkat és a felhasználókat",
"description": "Exportálja a táblákat és a felhasználókat egy ZIP-archívumba, hogy az 1.0.0 verzió után átvihesse őket a Homarr-ra",
"securityNote": {
"title": "",
"text": ""
"title": "Biztonsági megjegyzés",
"text": "A felhasználók és integrációk exportálásakor egy modal is megnyílik a titkosítási kulccsal. Ez a kulcs szükséges az adatok Homarrba történő importálásához. Tartsa biztonságban, és ne ossza meg senkivel."
},
"form": {
"label": "",
"label": "Válassza ki mindazt, amit exportálni szeretne",
"option": {
"boards": {
"label": ""
"label": "Táblák exportálása"
},
"integrations": {
"label": "",
"description": ""
"label": "Integrációk exportálása",
"description": "Ez magában foglalja az integrációhoz szükséges titkosított hitelesítő adatokat. Csak táblák exportálásakor érhető el"
},
"users": {
"label": "",
"description": ""
"label": "Felhasználók exportálása",
"description": "Ez csak a hitelesítő adatokat exportálja, a hash és a salt jelszavak titkosítva vannak"
}
}
},
"action": {
"export": ""
"export": "Adatok exportálása"
},
"modal": {
"title": "",
"description": "",
"copyDismiss": ""
"title": "Titkosítókulcs",
"description": "Adatai exportálva. Tartsa biztonságban ezt a kulcsot, és ne ossza meg senkivel. Erre a kulcsra lesz szüksége az adatok Homarrba történő importálásához.",
"copyDismiss": "Másolás és elvetés"
}
}

View File

@@ -40,4 +40,4 @@
}
},
"error": "Hiba történt"
}
}

View File

@@ -27,7 +27,7 @@
"items": {
"docker": "Docker",
"api": "API",
"migrate": ""
"migrate": "Migrare alla 1.0"
}
},
"about": {

View File

@@ -1,33 +1,33 @@
{
"metaTitle": "",
"pageTitle": "",
"description": "",
"metaTitle": "Migrare alla 1.0",
"pageTitle": "Migra schede, integrazioni e utenti",
"description": "Esporta le tue bacheche e gli utenti in un archivio ZIP per migrarli su Homarr dopo la versione 1.0.0",
"securityNote": {
"title": "",
"text": ""
"title": "Note di sicurezza",
"text": "Quando si esportano utenti e integrazioni, si aprirà anche una finestra modale con una chiave di crittografia. Questa chiave è necessaria per importare i dati in Homarr. Mantienila al sicuro e non condividerla con nessuno."
},
"form": {
"label": "",
"label": "Seleziona tutto quello che vuoi esportare",
"option": {
"boards": {
"label": ""
"label": "Esporta schede"
},
"integrations": {
"label": "",
"description": ""
"label": "Esporta integrazioni",
"description": "Questo includerà le credenziali crittografate per le integrazioni. Disponibile solo quando si esportano schede"
},
"users": {
"label": "",
"description": ""
"label": "Esporta utenti",
"description": "Questo esporterà solo le credenziali degli utenti, l'hash e il salt delle password sono criptati"
}
}
},
"action": {
"export": ""
"export": "Esporta dati"
},
"modal": {
"title": "",
"description": "",
"copyDismiss": ""
"title": "Chiave crittografica",
"description": "I tuoi dati sono stati esportati. Tieni questa chiave al sicuro e non condividerla con nessuno. Questa chiave ti servirà per importare i dati su Homarr.",
"copyDismiss": "Copia e chiudi"
}
}

View File

@@ -40,4 +40,4 @@
}
},
"error": "Si è verificato un errore"
}
}

View File

@@ -27,7 +27,7 @@
"items": {
"docker": "Docker",
"api": "API",
"migrate": ""
"migrate": "1.0に移行"
}
},
"about": {

View File

@@ -1,33 +1,33 @@
{
"metaTitle": "",
"pageTitle": "",
"description": "",
"metaTitle": "1.0に移行",
"pageTitle": "ボード、統合、ユーザーを移行する",
"description": "ボードとユーザーをZIPアーカイブにエクスポートしてバージョン1.0.0以降のHomarrに移行します。",
"securityNote": {
"title": "",
"text": ""
"title": "セキュリティノート",
"text": "ユーザーと統合をエクスポートすると暗号化キーを含むモーダルも開きます。このキーはデータをHomarrにインポートするために必要です。安全に保管し誰とも共有しないでください。"
},
"form": {
"label": "",
"label": "エクスポートしたいものをすべて選択してください",
"option": {
"boards": {
"label": ""
"label": "ボードをエクスポート"
},
"integrations": {
"label": "",
"description": ""
"label": "エクスポート統合",
"description": "これには統合用の暗号化された認証情報が含まれます。ボードをエクスポートする場合のみ利用可能です。"
},
"users": {
"label": "",
"description": ""
"label": "ユーザーをエクスポート",
"description": "これにより資格情報ユーザーのみがエクスポートされ、パスワードハッシュとソルトは暗号化されます。"
}
}
},
"action": {
"export": ""
"export": "データをエクスポート"
},
"modal": {
"title": "",
"description": "",
"copyDismiss": ""
"title": "暗号化キー",
"description": "データがエクスポートされました。このキーは安全に保管し誰とも共有しないでください。このキーはデータをHomarrにインポートするために必要になります。",
"copyDismiss": "コピーして閉じる"
}
}

View File

@@ -7,8 +7,8 @@
}
},
"modal": {
"text": "",
"label": "",
"reportButton": ""
"text": "widet が予期せずクラッシュしました。ドキュメントを読み、誤字を修正してください。",
"label": "エラーが発生しました",
"reportButton": "GitHubでこのエラーを報告する"
}
}

View File

@@ -40,4 +40,4 @@
}
},
"error": "Radās kļūda"
}
}

View File

@@ -27,7 +27,7 @@
"items": {
"docker": "Docker",
"api": "API",
"migrate": ""
"migrate": "Migreren naar 1.0"
}
},
"about": {

View File

@@ -1,33 +1,33 @@
{
"metaTitle": "",
"pageTitle": "",
"description": "",
"metaTitle": "Migreren naar 1.0",
"pageTitle": "Migreer borden, integraties en gebruikers",
"description": "Exporteert je borden en gebruikers naar een ZIP-archief om ze te migreren naar Homarr na versie 1.0.0",
"securityNote": {
"title": "",
"text": ""
"title": "Beveiligingsopmerking",
"text": "Bij het exporteren van gebruikers en integraties wordt ook een modal geopend met een coderingssleutel. Deze sleutel is nodig om de gegevens in Homarr te importeren. Bewaar het veilig en deel het met niemand."
},
"form": {
"label": "",
"label": "Selecteer alles wat je wilt exporteren",
"option": {
"boards": {
"label": ""
"label": "Borden exporteren"
},
"integrations": {
"label": "",
"description": ""
"label": "Integraties exporteren",
"description": "Dit zal versleutelde referenties voor integraties bevatten. Alleen beschikbaar bij het exporteren van borden"
},
"users": {
"label": "",
"description": ""
"label": "Gebruikers exporteren",
"description": "Dit exporteert alleen gebruikers met referenties, de hash en salt van wachtwoorden zijn versleuteld"
}
}
},
"action": {
"export": ""
"export": "Gegevens exporteren"
},
"modal": {
"title": "",
"description": "",
"copyDismiss": ""
"title": "Encryptiesleutel",
"description": "Je gegevens zijn geëxporteerd. Bewaar deze sleutel goed en deel hem met niemand. Je hebt deze sleutel nodig om de gegevens in Homarr te importeren.",
"copyDismiss": "Kopiëren & negeren"
}
}

View File

@@ -7,8 +7,8 @@
}
},
"modal": {
"text": "",
"label": "",
"reportButton": ""
"text": "De widget is onverwachts gecrasht. Lees de documentatie en corrigeer eventuele typfouten.",
"label": "Fout opgetreden",
"reportButton": "Rapporteer deze fout op GitHub"
}
}

View File

@@ -17,7 +17,7 @@
"disabled": "Deaktivert",
"enableAll": "Aktiver alle",
"disableAll": "Deaktiver alle",
"setTimer": "",
"setTimer": "Angi timer",
"version": "Versjon",
"changePosition": "Endre posisjon",
"remove": "Fjern",

View File

@@ -32,7 +32,7 @@
"externalAddress": {
"label": "Ekstern adresse",
"description": "URL som vil åpnes når du klikker på appen.",
"tooltip": ""
"tooltip": "Du kan bruke noen variabler for å opprette dynamiske adresser:<br><br><b>[homarr_base]</b> : full adresse uten port og sti. <i>(Eksempel: 'https://subdomain.homarr.dev')</i><br><b>[homarr_hostname]</b> : full base-Url inkludert gjeldende subdomene. <i>(Eksempel: 'subdomain.homarr.dev')</i><br><b>[homarr_domain]</b> : domenet med subdomenet filtrert bort. <i>(Eksempel: 'homarr.dev')</i><br><b>[homarr_protocol]</b> : <i>http/https</i><br><br>Disse variablene avhenger av den nåværende Url-en."
}
},
"behaviour": {

View File

@@ -1,5 +1,5 @@
{
"metaTitle": "Endre",
"metaTitle": "Administrer",
"hero": {
"title": "Velkommen tilbake, {{username}}",
"fallbackUsername": "Anonym",

View File

@@ -16,10 +16,10 @@
}
},
"durationModal": {
"title": "",
"hours": "",
"minutes": "",
"unlimited": "",
"set": ""
"title": "Angi varighet for deaktivering",
"hours": "Timer",
"minutes": "Minutter",
"unlimited": "la stå tomt for ubegrenset",
"set": "Sett"
}
}

View File

@@ -35,14 +35,14 @@
},
"defaultTabState": {
"label": "Fane åpen som standard",
"info": "",
"info": "Fane åpnes som standard. Brukes bare når flere integrasjoner er tilgjengelige.",
"data": {
"system": "",
"cluster": ""
"system": "System",
"cluster": "Klynge"
}
},
"summary": {
"label": ""
"label": "Vis sammendragsdel"
},
"showNode": {
"label": ""
@@ -97,8 +97,8 @@
}
},
"headings": {
"system": "",
"cluster": ""
"system": "System",
"cluster": "Klynge"
},
"cluster": {
"summary": {

View File

@@ -5,7 +5,7 @@
"settings": {
"title": "Indekserings-behandler status",
"openIndexerSiteInNewTab": {
"label": ""
"label": "Åpne indekseringsside i ny fane"
}
}
},

View File

@@ -22,11 +22,11 @@
},
"displayFriendlyName": {
"label": "Vis brukervennlig navn",
"info": ""
"info": "Vis brukervennlig navn fra Home Assistant i stedet for visningsnavn."
},
"genericToggle": {
"label": "",
"info": ""
"label": "Entitetsveksling",
"info": "Utfør en generisk Home Assistant veksle handling på enheten når du klikker."
}
}
}

View File

@@ -40,4 +40,4 @@
}
},
"error": "En feil oppstod"
}
}

View File

@@ -7,8 +7,8 @@
}
},
"modal": {
"text": "",
"label": "",
"reportButton": ""
"text": "Widget hadde et krasj. Les dokumentasjonen og rett opp skrivefeil.",
"label": "Oppstod feil",
"reportButton": "Rapporter denne feilen på GitHub"
}
}

View File

@@ -17,8 +17,8 @@
"afterLoginRedirection": "Po zalogowaniu nastąpi przekierowanie na stronę {{url}}",
"providersEmpty": {
"title": "Błąd dostawcy uwierzytelniania",
"message": ""
"message": "Dostawcy nie są ustawieni, sprawdź logi, aby uzyskać więcej informacji."
}
},
"alert": "Twoje dane logowania są nieprawidłowe lub to konto nie istnieje. Spróbuj ponownie."
"alert": "Twoje dane uwierzytelniające są nieprawidłowe lub to konto nie istnieje. Proszę spróbować ponownie."
}

View File

@@ -27,7 +27,7 @@
"items": {
"docker": "Docker",
"api": "API",
"migrate": ""
"migrate": "Migracja do wersji 1.0"
}
},
"about": {

View File

@@ -32,7 +32,7 @@
"externalAddress": {
"label": "Adres zewnętrzny",
"description": "URL, który zostanie otwarty po kliknięciu na aplikację.",
"tooltip": ""
"tooltip": "Możesz użyć kilku zmiennych, aby utworzyć dynamiczne adresy:<br><br><b>[homarr_base]</b>: pełny adres z wyłączeniem portu i ścieżki. <i>(Przykład: \"https://subdomain.homarr.dev\")</i><br><b>[homarr_hostname]</b>: pełny bazowy adres url, w tym bieżąca subdomena. <i>(Przykład: \"subdomain.homarr.dev\")</i><br><b>[homarr_domain]</b>: domena z odfiltrowaną subdomeną. <i>(Przykład: `homarr.dev')</i><br><b>[homarr_protocol]</b>: <i>http/https</i><br><br>Wszystkie te zmienne zależą od bieżącego adresu url."
}
},
"behaviour": {

View File

@@ -1,33 +1,33 @@
{
"metaTitle": "",
"pageTitle": "",
"description": "",
"metaTitle": "Migracja do wersji 1.0",
"pageTitle": "Migracja tablic, integracji i użytkowników",
"description": "Eksportuje tablice i użytkowników do archiwum ZIP w celu migracji do Homarr po wersji 1.0.0",
"securityNote": {
"title": "",
"text": ""
"title": "Uwaga dotycząca bezpieczeństwa",
"text": "Podczas eksportowania użytkowników i integracji otworzy się również okno dialogowe z kluczem szyfrowania. Klucz ten jest wymagany do zaimportowania danych do Homarr. Przechowuj go bezpiecznie i nie udostępniaj nikomu."
},
"form": {
"label": "",
"label": "Zaznacz wszystko, co chcesz wyeksportować",
"option": {
"boards": {
"label": ""
"label": "Eksportuj tablice"
},
"integrations": {
"label": "",
"description": ""
"label": "Eksportuj integracje",
"description": "Obejmie zaszyfrowane dane logowania do integracji. Dostępne tylko podczas eksportowania tablic."
},
"users": {
"label": "",
"description": ""
"label": "Eksportuj użytkowników",
"description": "Spowoduje to wyeksportowanie tylko poświadczeń użytkowników, hash haseł, które są zaszyfrowane"
}
}
},
"action": {
"export": ""
"export": "Eksport danych"
},
"modal": {
"title": "",
"description": "",
"copyDismiss": ""
"title": "Klucz szyfrowania",
"description": "Twoje dane zostały wyeksportowane. Zachowaj ten klucz w bezpiecznym miejscu i nie udostępniaj go nikomu. Będziesz potrzebować tego klucza, aby zaimportować dane do Homarr.",
"copyDismiss": "Kopiuj i zamknij"
}
}

View File

@@ -6,7 +6,7 @@
},
"filter": {
"roles": {
"all": "",
"all": "Wszystkie",
"normal": "Zwykły",
"admin": "Admin",
"owner": "Właściciel"

View File

@@ -11,15 +11,15 @@
"errors": {
"general": {
"title": "Nie można znaleźć pułapki DNS",
"text": "Wystąpił problem z połączeniem się z pułapką DNS. Sprawdź konfigurację/integrację."
"text": "Wystąpił problem z połączeniem z Twoimi lukami DNS. Sprawdź swoją konfigurację/integrację."
}
}
},
"durationModal": {
"title": "",
"hours": "",
"minutes": "",
"unlimited": "",
"set": ""
"title": "Ustaw czas trwania wyłączenia",
"hours": "Godziny",
"minutes": "Minuty",
"unlimited": "Pozostaw puste, aby ustawić na nieograniczone",
"set": "Ustaw"
}
}

View File

@@ -1,104 +1,104 @@
{
"descriptor": {
"name": "",
"description": "",
"name": "Monitorowanie zdrowia systemu",
"description": "Wyświetla informacje o kondycji i stanie systemu(ów).",
"settings": {
"title": "",
"title": "Ustawienia monitorowania kondycji systemu",
"fahrenheit": {
"label": ""
"label": "Temperatura procesora w Fahrenheit"
},
"cpu": {
"label": "",
"load": "",
"minute": "",
"minutes": ""
"label": "Temperatura CPU w stopniach Fahrenheita.",
"load": "Średnie obciążenie",
"minute": "{{minute}} minuta",
"minutes": "{{minutes}} minuty"
},
"memory": {
"label": ""
"label": "Pokaż informacje o pamięci"
},
"fileSystem": {
"label": ""
"label": "Pokaż informacje o systemie plików"
},
"node": {
"label": "",
"info": ""
"label": "Filtruj według nazwy węzła",
"info": "Wprowadź nazwę węzła Proxmox, aby wyświetlić tylko metryki dla tego węzła. Domyślnie wyświetlane są metryki dla całego klastra."
},
"defaultViewState": {
"label": "",
"label": "Sekcja otwarta domyślnie",
"data": {
"none": "Żaden",
"node": "",
"vm": "",
"lxc": "",
"node": "Węzły",
"vm": "Maszyny wirtualne",
"lxc": "LXCs",
"storage": "Pamięć"
}
},
"defaultTabState": {
"label": "",
"info": "",
"label": "Domyślnie otwarta karta",
"info": "Domyślnie otwarta karta. Używana tylko wtedy, gdy dostępnych jest wiele integracji.",
"data": {
"system": "",
"cluster": ""
"system": "System",
"cluster": "Klaster"
}
},
"summary": {
"label": ""
"label": "Pokaż sekcję podsumowania"
},
"showNode": {
"label": ""
"label": "Pokaż sekcję węzłów"
},
"showVM": {
"label": ""
"label": "Pokaż sekcję maszyn wirtualnych"
},
"showLXCs": {
"label": ""
"label": "Pokaż sekcję LXC"
},
"showStorage": {
"label": ""
"label": "Pokaż sekcję pamięci"
},
"sectionIndicatorColor": {
"label": "",
"info": "",
"label": "Wymaganie, aby wskaźnik stanu sekcji był ustawiony na \"OK\"",
"info": "Opcja „Wszystkie” wymaga, aby wszystkie elementy były online, aby wskaźnik świecił na zielono. Opcja „Dowolny” wymaga, aby co najmniej jeden element był online.",
"data": {
"any": "",
"all": ""
"any": "Dowolny aktywny",
"all": "Wszystkie aktywne"
}
},
"ignoreCert": {
"label": "",
"info": ""
"label": "Ignoruj błędy certyfikatu",
"info": "Jeśli ta opcja jest włączona, widżet będzie ignorował błędy certyfikatu podczas uzyskiwania dostępu do interfejsu API Proxmox. Może to być przydatne podczas uzyskiwania dostępu do Proxmox przez HTTPS."
}
}
},
"cpu": {
"label": "CPU",
"load": "",
"minute": ""
"load": "Średnie obciążenie",
"minute": "{{minute}} minuta"
},
"memory": {
"label": "",
"totalMem": "",
"available": ""
"label": "Pamięć",
"totalMem": "Całkowita pamięć: {{total}}GB",
"available": "Dostępne: {{available}}GB - {{percentage}}%"
},
"fileSystem": {
"label": "",
"available": ""
"label": "System plików",
"available": "Dostępne: {{available}} - {{percentage}}%"
},
"info": {
"uptime": "",
"uptimeFormat": "",
"updates": "",
"reboot": ""
"uptime": "Czas pracy",
"uptimeFormat": "{{days}} dni, {{hours}} godzin, {{minutes}} minut",
"updates": "Dostępne aktualizacje",
"reboot": "Uruchom ponownie"
},
"errors": {
"general": {
"title": "",
"text": ""
"title": "Nie można znaleźć systemu(ów).",
"text": "Wystąpił problem z połączeniem z systemem. Sprawdź konfigurację/integrację(e)."
}
},
"headings": {
"system": "",
"cluster": ""
"system": "System",
"cluster": "Klaster"
},
"cluster": {
"summary": {
@@ -107,9 +107,9 @@
},
"accordion": {
"title": {
"nodes": "",
"vms": "",
"lxcs": "",
"nodes": "Węzły",
"vms": "Maszyny wirtualne",
"lxcs": "LXCs",
"storage": "Pamięć"
}
},
@@ -118,24 +118,24 @@
"name": "Nazwa",
"cpu": "CPU",
"ram": "RAM",
"node": ""
"node": "Węzeł"
}
},
"popover": {
"node": "",
"vmid": "",
"node": "Węzeł",
"vmid": "Identyfikator maszyny wirtualnej",
"details": "Szczegóły",
"cores": "",
"memSize": "",
"memRatio": "",
"diskSize": "",
"diskRatio": "",
"uptime": "",
"plugin": "",
"ha": "",
"sharedStorage": "",
"localStorage": "",
"na": ""
"cores": "Rdzenie - {{maxCpu}}",
"memSize": "Pamięć - {{maxMem}}",
"memRatio": "Pamięć - {{usedMem}} / {{maxMem}}",
"diskSize": "Dysk - {{maxDisk}}",
"diskRatio": "Dysk - {{usedDisk}} / {{maxDisk}}",
"uptime": "Czas pracy - {{uptime}}",
"plugin": "Wtyczka",
"ha": "Status HA - {{haState}}",
"sharedStorage": "Pamięć współdzielona",
"localStorage": "Pamięć lokalna",
"na": "Nie dotyczy"
}
}
}

View File

@@ -1,22 +1,22 @@
{
"descriptor": {
"name": "",
"description": "",
"name": "Status menedżera indeksu",
"description": "Status Twoich indeksów",
"settings": {
"title": "",
"title": "Status menedżera indeksu",
"openIndexerSiteInNewTab": {
"label": ""
"label": "Otwórz stronę indeksowania w nowej karcie"
}
}
},
"indexersStatus": {
"title": "",
"testAllButton": ""
"title": "Menedżer indeksów",
"testAllButton": "Przetestuj wszystkie"
},
"errors": {
"general": {
"title": "",
"text": ""
"title": "Nie można znaleźć menedżera indeksowania",
"text": "Wystąpił problem z połączeniem z menedżerem indeksowania. Sprawdź konfigurację/integracje."
}
}
}

View File

@@ -17,8 +17,8 @@
"approved": "Zatwierdzono",
"pendingApproval": "Oczekujące na zatwierdzenie",
"declined": "Odrzucono",
"available": "",
"partial": ""
"available": "Dostępny",
"partial": "Częściowy"
},
"tooltips": {
"approve": "Zatwierdź zapytania",

View File

@@ -1,96 +1,96 @@
{
"descriptor": {
"name": "",
"description": "",
"name": "Transkodowanie multimediów",
"description": "Wyświetla informacje o transkodowaniu multimediów",
"settings": {
"title": "",
"title": "Ustawienia transkodowania multimediów",
"appId": {
"label": ""
"label": "Wybierz aplikację"
},
"defaultView": {
"label": "",
"label": "Domyślny widok",
"data": {
"workers": "",
"workers": "Pracownicy",
"queue": "Kolejka",
"statistics": ""
"statistics": "Statystyki"
}
},
"showHealthCheck": {
"label": ""
"label": "Pokaż wskaźnik kontroli stanu zdrowia"
},
"showHealthChecksInQueue": {
"label": ""
"label": "Pokaż sprawdzenia stanu zdrowia w kolejce"
},
"queuePageSize": {
"label": ""
"label": "Kolejka: Elementy na stronę"
},
"showAppIcon": {
"label": ""
"label": "Pokaż ikonę aplikacji w prawym dolnym rogu"
}
}
},
"noAppSelected": "",
"noAppSelected": "Wybierz aplikację w ustawieniach widżetu",
"views": {
"workers": {
"table": {
"header": {
"name": "",
"name": "Plik",
"eta": "ETA",
"progress": "Postęp"
},
"empty": "Puste",
"tooltip": {
"transcode": "",
"healthCheck": ""
"transcode": "Transkoduj",
"healthCheck": "Sprawdź stan"
}
}
},
"queue": {
"table": {
"header": {
"name": "",
"name": "Plik",
"size": "Rozmiar"
},
"footer": {
"currentIndex": ""
"currentIndex": "{{start}}-{{end}} z {{total}}"
},
"empty": "Puste",
"tooltip": {
"transcode": "",
"healthCheck": ""
"transcode": "Transkoduj",
"healthCheck": "Sprawdź stan"
}
}
},
"statistics": {
"empty": "Puste",
"box": {
"transcodes": "",
"healthChecks": "",
"files": "",
"spaceSaved": ""
"transcodes": "Transkodowanie: {{value}}",
"healthChecks": "Sprawdzanie stanu zdrowia: {{value}}",
"files": "Pliki: {{value}}",
"spaceSaved": "Zapisane: {{value}}"
},
"pies": {
"transcodes": "",
"healthChecks": "",
"videoCodecs": "",
"videoContainers": "",
"videoResolutions": ""
"transcodes": "Transkoduj",
"healthChecks": "Sprawdzanie stanu zdrowia",
"videoCodecs": "Kodeki",
"videoContainers": "Kontenery",
"videoResolutions": "Rozdzielczość"
}
}
},
"error": {
"title": "Błąd",
"message": ""
"message": "Wystąpił błąd podczas pobierania danych z Tdarr."
},
"tabs": {
"workers": "",
"workers": "Pracownicy",
"queue": "Kolejka",
"statistics": ""
"statistics": "Statystyki"
},
"healthCheckStatus": {
"title": "",
"queued": "",
"healthy": "",
"unhealthy": ""
"title": "Sprawdź stan",
"queued": "Zakolejkowane",
"healthy": "Zdrowy",
"unhealthy": "Niezdrowy"
}
}

View File

@@ -22,10 +22,10 @@
"label": "Sortuj według daty publikacji (rosnąco)"
},
"sortPostsWithoutPublishDateToTheTop": {
"label": ""
"label": "Umieść posty bez daty publikacji na górze"
},
"maximumAmountOfPosts": {
"label": ""
"label": "Maksymalna liczba postów"
}
},
"card": {

View File

@@ -1,17 +1,17 @@
{
"entityNotFound": "Nie znaleziono encji",
"entityNotFound": "Nie znaleziono obiektu",
"descriptor": {
"name": "Encja Home Assistant",
"description": "Aktualny stan encji w Home Assistant",
"name": "Obiekt asystenta domu",
"description": "Aktualny stan obiektu w Asystencie Domu",
"settings": {
"title": "Stan encji",
"title": "Stan obiektu",
"entityId": {
"label": "ID encji",
"info": "Unikalne ID encji w Home Assistant. Kopiuj klikając na encji > Kliknij ikonę koła zębatego > Kliknij na przycisk kopiuj na 'ID encji'. Niektóre niestandardowe obiekty mogą nie być obsługiwane."
"label": "ID obiektu",
"info": "Unikalne ID obiektu w Asystencie Domu. Kopiuj klikając na obiekt > Kliknij ikonę koła zębatego > Kliknij na przycisk kopiuj na 'ID obiektu'. Niektóre niestandardowe obiekty mogą nie być obsługiwane."
},
"appendUnit": {
"label": "",
"info": ""
"label": "Dodaj jednostkę miary",
"info": "Dodaj atrybut jednostki miary do stanu encji."
},
"automationId": {
"label": "Opcjonalne ID automatyzacji",
@@ -21,12 +21,12 @@
"label": "Nazwa wyświetlana"
},
"displayFriendlyName": {
"label": "",
"info": ""
"label": "Wyświetl przyjazną nazwę",
"info": "Wyświetlaj przyjazną nazwę z Home Assistant zamiast nazwy wyświetlanej."
},
"genericToggle": {
"label": "",
"info": ""
"label": "Przełącznik encji",
"info": "Wykonaj ogólną akcję przełączania Home Assistant na encji po kliknięciu."
}
}
}

View File

@@ -75,7 +75,7 @@
"peers": "Peery (połączone)",
"label": "Etykieta",
"state": "Status",
"stateMessage": ""
"stateMessage": "Wiadomość o stanie"
},
"item": {
"text": "Zarządzany przez {{appName}}, {{ratio}} stosunek"

View File

@@ -7,8 +7,8 @@
}
},
"modal": {
"text": "",
"label": "",
"reportButton": ""
"text": "Widżet uległ nieoczekiwanej awarii. Przeczytaj dokumentację i popraw wszelkie literówki.",
"label": "Wystąpił błąd",
"reportButton": "Zgłoś ten błąd w serwisie GitHub"
}
}

View File

@@ -17,7 +17,7 @@
"disabled": "Desativado",
"enableAll": "Habilitar tudo",
"disableAll": "Desativar tudo",
"setTimer": "",
"setTimer": "Definir temporizador",
"version": "Versão",
"changePosition": "Mudar de posição",
"remove": "Excluir",

View File

@@ -15,7 +15,7 @@
"defaultBoard": "Painel de controle padrão",
"manage": "Gerenciar",
"logout": "Sair do site {{username}}",
"login": "Login"
"login": "Login"
}
},
"modals": {

View File

@@ -27,7 +27,7 @@
"items": {
"docker": "Docker",
"api": "API",
"migrate": ""
"migrate": "Migrar para 1.0"
}
},
"about": {

View File

@@ -32,7 +32,7 @@
"externalAddress": {
"label": "Endereço externo",
"description": "URL que será aberto ao clicar na aplicação.",
"tooltip": ""
"tooltip": "Você pode usar algumas variáveis para criar endereços dinâmicos:<br><br><b>[homarr_base]</b> : endereço completo, excluindo porta e caminho. <i>(Exemplo: 'https://subdomain.homarr.dev')</i><br><b>[homarr_hostname]</b> : URL base completa, incluindo seu subdomínio atual. <i>(Exemplo: 'subdomain.homarr.dev')</i><br><b>[homarr_domain]</b> : domínio com subdomínio filtrado. <i>(Exemplo: `homarr.dev')</i><br><b>[homarr_protocol]</b> : <i>http/https</i><br><br>Todas essas variáveis dependem da URL atual."
}
},
"behaviour": {

View File

@@ -1,33 +1,33 @@
{
"metaTitle": "",
"pageTitle": "",
"description": "",
"metaTitle": "Migrar para 1.0",
"pageTitle": "Migrar painéis, integrações e usuários",
"description": "Exporta seus painéis e usuários para um arquivo ZIP para migrá-los para o Homarr após a versão 1.0.0",
"securityNote": {
"title": "",
"text": ""
"title": "Nota de segurança",
"text": "Ao exportar usuários e integrações, também será aberto um modal com uma chave de criptografia. Essa chave é necessária para importar os dados para a Homarr. Mantenha-a em segurança e não a compartilhe com ninguém."
},
"form": {
"label": "",
"label": "Selecione tudo o que deseja exportar",
"option": {
"boards": {
"label": ""
"label": "Exportar painéis"
},
"integrations": {
"label": "",
"description": ""
"label": "Exportar integrações",
"description": "Isso incluirá credenciais criptografadas para integrações. Disponível somente ao exportar painéis"
},
"users": {
"label": "",
"description": ""
"label": "Exportar usuários",
"description": "Isso exportará apenas usuários de credenciais, senhas hash e salt são criptografadas"
}
}
},
"action": {
"export": ""
"export": "Exportar dados"
},
"modal": {
"title": "",
"description": "",
"copyDismiss": ""
"title": "Chave Criptográfica",
"description": "Seus dados foram exportados. Mantenha essa chave em segurança e não a compartilhe com ninguém. Você precisará dessa chave para importar os dados para a Homarr.",
"copyDismiss": "Copiar e dispensar"
}
}

View File

@@ -16,10 +16,10 @@
}
},
"durationModal": {
"title": "",
"hours": "",
"minutes": "",
"unlimited": "",
"set": ""
"title": "Definir tempo de duração da desativação",
"hours": "Horas",
"minutes": "Minutos",
"unlimited": "deixe em branco para ilimitado",
"set": "Definir"
}
}

View File

@@ -86,7 +86,7 @@
},
"info": {
"uptime": "Tempo de Atividade",
"uptimeFormat": "",
"uptimeFormat": "{{days}} dias, {{hours}} horas, {{minutes}} minutos",
"updates": "Atualizações disponíveis",
"reboot": "Reiniciar"
},

View File

@@ -5,7 +5,7 @@
"settings": {
"title": "Status do Gerenciador de Indexadores",
"openIndexerSiteInNewTab": {
"label": ""
"label": "Abrir o site do Indexer em uma nova guia"
}
}
},

View File

@@ -1,35 +1,35 @@
{
"descriptor": {
"name": "Transcodificação de mídia",
"description": "",
"description": "Exibe informações sobre transcodificação de mídia",
"settings": {
"title": "",
"title": "Configurações de transcodificação de mídia",
"appId": {
"label": ""
"label": "Selecione um app"
},
"defaultView": {
"label": "",
"label": "Visualização padrão",
"data": {
"workers": "",
"workers": "Trabalhadores",
"queue": "Fila",
"statistics": "Estatísticas"
}
},
"showHealthCheck": {
"label": ""
"label": "Mostrar indicador de verificação de saúde"
},
"showHealthChecksInQueue": {
"label": ""
"label": "Mostrar verificações de saúde na fila"
},
"queuePageSize": {
"label": ""
"label": "Fila: Itens por página"
},
"showAppIcon": {
"label": ""
"label": "Mostrar o ícone do aplicativo no canto inferior direito"
}
}
},
"noAppSelected": "",
"noAppSelected": "Por favor, selecione um aplicativo nas configurações de widget",
"views": {
"workers": {
"table": {
@@ -41,7 +41,7 @@
"empty": "Vazio",
"tooltip": {
"transcode": "Transcodificar",
"healthCheck": ""
"healthCheck": "Verificação de Saúde"
}
}
},
@@ -52,45 +52,45 @@
"size": "Tamanho"
},
"footer": {
"currentIndex": ""
"currentIndex": "{{start}}-{{end}} de {{total}}"
},
"empty": "Vazio",
"tooltip": {
"transcode": "Transcodificar",
"healthCheck": ""
"healthCheck": "Verificação de Saúde"
}
}
},
"statistics": {
"empty": "Vazio",
"box": {
"transcodes": "",
"healthChecks": "",
"files": "",
"spaceSaved": ""
"transcodes": "Transcodificações: {{value}}",
"healthChecks": "Verificações de saúde: {{value}}",
"files": "Arquivos: {{value}}",
"spaceSaved": "Salvo: {{value}}"
},
"pies": {
"transcodes": "",
"healthChecks": "",
"transcodes": "Transcodificações",
"healthChecks": "Verificações de saúde",
"videoCodecs": "Codecs",
"videoContainers": "",
"videoResolutions": ""
"videoContainers": "Contêineres",
"videoResolutions": "Resoluções"
}
}
},
"error": {
"title": "Erro",
"message": ""
"message": "Ocorreu um erro ao buscar dados do Tdarr."
},
"tabs": {
"workers": "",
"workers": "Trabalhadores",
"queue": "Fila",
"statistics": "Estatísticas"
},
"healthCheckStatus": {
"title": "",
"queued": "",
"healthy": "",
"unhealthy": ""
"title": "Verificação de Saúde",
"queued": "Na fila",
"healthy": "Saudável",
"unhealthy": "Não saudável"
}
}

View File

@@ -22,11 +22,11 @@
},
"displayFriendlyName": {
"label": "Exibir nome amigável",
"info": ""
"info": "Exibir nome amigável do Home Assistant em vez do nome de exibição."
},
"genericToggle": {
"label": "",
"info": ""
"info": "Executa uma ação genérica de alternância do Home Assistant na entidade quando clicada."
}
}
}

View File

@@ -31,15 +31,15 @@
"info": "Se estiver desativado, somente a proporção global será exibida. A proporção global ainda usará os rótulos se estiver definida"
},
"columnOrdering": {
"label": ""
"label": "Habilitar reordenação das colunas"
},
"rowSorting": {
"label": ""
"label": "Permitir a ordenação das linhas"
},
"columns": {
"label": "Selecione colunas para exibir",
"data": {
"date": "",
"date": "Data adicionada",
"down": "Para baixo",
"up": "Para cima",
"eta": "TED",

View File

@@ -40,4 +40,4 @@
}
},
"error": "Ocorreu um erro"
}
}

View File

@@ -7,8 +7,8 @@
}
},
"modal": {
"text": "",
"label": "",
"reportButton": ""
"text": "O widet travou inesperadamente. Por favor, leia a documentação e corrija quaisquer erros de digitação.",
"label": "Ocorreu um erro",
"reportButton": "Reportar este erro no GitHub"
}
}

View File

@@ -3,7 +3,7 @@
"back": "Вернуться к управлению пользователями",
"sections": {
"general": {
"title": "Общие",
"title": "Основное",
"inputs": {
"username": {
"label": "Имя пользователя"

View File

@@ -35,7 +35,7 @@
},
"name": "Название",
"url": "URL",
"newTab": "Открыть в новой вкладке",
"newTab": "Открывать в новой вкладке",
"hideHostname": "Скрыть имя хоста",
"hideIcon": "Скрыть иконку",
"delete": "Удалить"

View File

@@ -27,7 +27,7 @@
},
"errors": {
"noDownloadClients": {
"title": "Не найдено ни одного поддерживаемого клиента загрузки!",
"title": "Не найдены поддерживаемые клиенты загрузки!",
"text": "Добавьте сервис загрузки, чтобы просмотреть текущие загрузки"
}
}

View File

@@ -7,7 +7,7 @@
}
},
"accessibility": {
"title": "Доступность",
"title": "Специальные возможности",
"disablePulse": {
"label": "Отключить пульсацию индикатора",
"description": "По умолчанию индикаторы доступности в Homarr пульсируют. Это может раздражать. Этот переключатель отключит анимацию"

View File

@@ -27,7 +27,7 @@
"items": {
"docker": "Docker",
"api": "API",
"migrate": ""
"migrate": "Migrácia na verziu 1.0"
}
},
"about": {

View File

@@ -1,33 +1,33 @@
{
"metaTitle": "",
"pageTitle": "",
"description": "",
"metaTitle": "Migrácia na verziu 1.0",
"pageTitle": "Migrácia tabúľ, integrácií a používateľov",
"description": "Exportuje vaše nástenky a používateľov do archívu ZIP, aby ste ich mohli migrovať do systému Homarr po verzii 1.0.0",
"securityNote": {
"title": "",
"text": ""
"title": "Bezpečnostná poznámka",
"text": "Pri exporte používateľov a integrácií sa tiež otvorí modálne okno so šifrovacím kľúčom. Tento kľúč je potrebný na import údajov do systému Homarr. Uchovávajte ho v bezpečí a s nikým ho nezdieľajte."
},
"form": {
"label": "",
"label": "Vyberte všetko, čo chcete exportovať",
"option": {
"boards": {
"label": ""
"label": "Export dosiek"
},
"integrations": {
"label": "",
"description": ""
"label": "Integrácie pre export",
"description": "To bude zahŕňať zašifrované poverenia pre integrácie. K dispozícii len pri exporte tabúľ"
},
"users": {
"label": "",
"description": ""
"label": "Export používateľov",
"description": "Týmto spôsobom sa exportujú len poverenia používateľov, heslá sú zašifrované"
}
}
},
"action": {
"export": ""
"export": "Exportovať dáta"
},
"modal": {
"title": "",
"description": "",
"copyDismiss": ""
"title": "Šifrovací kľúč",
"description": "Vaše údaje boli exportované. Tento kľúč uchovávajte v bezpečí a nikomu ho neposkytujte. Tento kľúč budete potrebovať na import údajov do systému Homarr.",
"copyDismiss": "Kopírovať a zavrieť"
}
}

View File

@@ -40,4 +40,4 @@
}
},
"error": "Vyskytla sa chyba"
}
}

View File

@@ -1,6 +1,6 @@
{
"metaTitle": "Skapa Konto",
"title": "Skapa Konto",
"metaTitle": "Skapa ett konto",
"title": "Skapa ett konto",
"text": "Vänligen ange dina uppgifter nedan",
"form": {
"fields": {
@@ -11,7 +11,7 @@
"label": "Lösenord"
},
"passwordConfirmation": {
"label": "Bekräfta lösenord"
"label": "Bekräfta lösenordet"
}
},
"buttons": {
@@ -24,12 +24,12 @@
"text": "Vänligen vänta"
},
"success": {
"title": "Konto skapat",
"title": "Kontot har skapats",
"text": "Ditt konto har skapats utan problem"
},
"error": {
"title": "Fel",
"text": "Något gick fel, fick följande fel: {{error}}"
"text": "Något gick fel, på grund av följande orsak: {{error}}"
}
}
}

View File

@@ -1,7 +1,7 @@
{
"metaTitle": "Logga in",
"title": "Välkommen tillbaka!",
"text": "Ange dina autentiseringsuppgifter",
"text": "Ange dina inloggningsuppgifter",
"form": {
"fields": {
"username": {
@@ -16,9 +16,9 @@
},
"afterLoginRedirection": "Efter inloggningen kommer du att omdirigeras till {{url}}",
"providersEmpty": {
"title": "Fel vid autentiseringsfel",
"title": "Fel vid inloggning",
"message": "Leverantören/leverantörerna är inte inställda, kontrollera dina loggar för mer information."
}
},
"alert": "Dina autentiseringsuppgifter är felaktiga eller så finns inte det här kontot. Vänligen försök igen."
"alert": "Dina uppgifter är felaktiga eller så saknas det här kontot. Vänligen försök igen."
}

View File

@@ -1,7 +1,7 @@
{
"metaTitle": "Anpassa {{name}} Board",
"pageTitle": "Anpassning för {{name}} Board",
"backToBoard": "Tillbaka till tavla",
"metaTitle": "Anpassa tavlan {{name}}",
"pageTitle": "Anpassning för tavlan {{name}}",
"backToBoard": "Tillbaka till tavlan",
"settings": {
"appearance": {
"primaryColor": "Primärfärg",
@@ -9,21 +9,21 @@
}
},
"save": {
"button": "Spara ändringar",
"note": "Var försiktig, du har osparade ändringar!"
"button": "Spara ändringarna",
"note": "Var försiktig, du har ändringar som ej sparats!"
},
"notifications": {
"pending": {
"title": "Sparar anpassning",
"message": "Vänligen vänta medan vi sparar din anpassning"
"title": "Sparar anpassningar",
"message": "Vänligen vänta medan vi sparar dina anpassningar"
},
"success": {
"title": "Anpassning sparad",
"message": "Din anpassning har sparats"
"title": "Anpassningar sparade",
"message": "Dina anpassningar har sparats"
},
"error": {
"title": "Fel",
"message": "Det gick inte att spara ändringar"
"message": "Det gick inte att spara ändringarna"
}
}
}

View File

@@ -3,7 +3,7 @@
"title": "Lägg till en ny ruta",
"text": "Rutor är det viktigaste elementet i Homarr. De används för att visa dina appar och annan information. Du kan lägga till så många rutor som du vill."
},
"widgetDescription": "Widgetar interagerar med dina appar, för att ge dig mer kontroll över dina applikationer. De kräver vanligtvis ytterligare konfiguration innan användning.",
"widgetDescription": "Widgetar interagerar med dina appar, för att ge dig mer kontroll över dina applikationer. De kräver vanligtvis ytterligare konfiguration innan de kan användas.",
"goBack": "Gå tillbaka till föregående steg",
"actionIcon": {
"tooltip": "Lägg till en ruta"
@@ -18,9 +18,9 @@
"newName": "Namn på ny kategori",
"defaultName": "Ny kategori",
"created": {
"title": "Kategori skapad",
"title": "Kategorin har skapats",
"message": "Kategorin \"{{name}}\" har skapats"
}
},
"importFromDocker": "Importera från docker"
"importFromDocker": "Importera från Docker"
}

View File

@@ -1,5 +1,5 @@
{
"title": "Åtkomst nekad",
"title": "Åtkomst nekas",
"text": "Du har inte tillräckliga behörigheter för att komma åt denna sida. Om du tror att detta inte är avsiktligt, vänligen kontakta din administratör.",
"switchAccount": "Växla till ett annat konto"
"switchAccount": "Byt till ett annat konto"
}

View File

@@ -1,11 +1,11 @@
{
"description": "I redigeringsläge kan du justera rutor och konfigurera appar. Ändringar sparas inte förrän du avslutar redigeringsläget.",
"description": "I redigeringsläget kan du justera rutor och konfigurera appar. Ändringar sparas inte förrän du avslutar redigeringsläget.",
"button": {
"disabled": "Gå till redigeringsläge",
"disabled": "Gå till redigeringsläget",
"enabled": "Avsluta och spara"
},
"popover": {
"title": "Redigeringsläget är aktiverat för <1>{{size}}</1> storlek",
"title": "Redigeringsläget är aktiverat för storleken <1>{{size}}</1>",
"text": "Du kan justera och konfigurera dina appar nu. Ändringarna <strong>sparas inte</strong> förrän du lämnar redigeringsläget"
},
"unloadEvent": "Avsluta redigeringsläget för att spara dina ändringar"

View File

@@ -6,9 +6,9 @@
"action": "Åtgärd",
"keybinds": "Knapptilldelning",
"translators": "Översättare ({{count}})",
"translatorsDescription": "Tack vare dessa personer finns Homarr tillgängligt på {{languages}} språk! Vill du hjälpa till att översätta Homarr till ditt språk? Läs hur du gör <a>här</a>.",
"translatorsDescription": "Tack vare dessa personer finns Homarr tillgängligt på {{languages}} språk! Vill du hjälpa till att översätta Homarr till ditt språk? Läs hur du gör genom att klicka <a>här</a>.",
"contributors": "Medverkande ({{count}})",
"contributorsDescription": "Dessa människor har byggt koden som får homarr att fungera! Vill du hjälpa till att bygga Homarr? Läs hur du gör <a>här</a>",
"contributorsDescription": "Dessa människor har utvecklat koden som får homarr att fungera! Vill du hjälpa till att utveckla Homarr? Läs hur du gör genom att klicka <a>här</a>",
"actions": {
"toggleTheme": "Växla mellan ljus- och mörkerläge",
"focusSearchBar": "Fokusera på sökruta",

View File

@@ -22,7 +22,7 @@
"protocolCheck": "Kontrollera alltid att webbadressen föregås av http eller https, och att du använder rätt URL.",
"preferIP": "Vi rekommenderar att du använder det direkta ip-numret för den maskin eller container du försöker kommunicera med.",
"enablePings": "Kontrollera att IP är rätt genom att aktivera pings. Anpassa tavla -> Layout -> Aktivera pings. En liten röd eller grön bubbla kommer att visas på din app och om du håller muspekaren över den får du svarskoden (en grön bubbla med kod 200 förväntas i de flesta fall).",
"wget": "För att se till att homarr kan kommunicera med de andra apparna, se till att wget/curl/ping appens IP:port.",
"wget": "För att se till att Homarr kan kommunicera med de andra apparna, se till att wget/curl/ping appens IP:port.",
"iframe": "När det gäller iframes ska dessa alltid använda samma protokoll (http/s) som Homarr.",
"clearCache": "Viss information registreras i cacheminnet, så en integration kanske inte fungerar om du inte rensar cacheminnet i Homarrs allmänna alternativ."
},

View File

@@ -40,4 +40,4 @@
}
},
"error": "Ett fel uppstod"
}
}

View File

@@ -1,7 +1,7 @@
{
"pageTitle": {
"label": "Sidotitel",
"description": "Titeln på instrumentpanelen längst upp till vänster"
"label": "Titel på sidan",
"description": "Titel på instrumentpanelen längst upp till vänster"
},
"metaTitle": {
"label": "Metatitel",

View File

@@ -12,7 +12,7 @@
"avatar": {
"switchTheme": "Temayı değiştir",
"preferences": "Kullanıcı Tercihleri",
"defaultBoard": "Varsayılan Panel",
"defaultBoard": "Öntanımlı Panel",
"manage": "Yönet",
"logout": "{{username}} kullanıcısından çıkış yapın",
"login": "Giriş"

View File

@@ -27,7 +27,7 @@
"items": {
"docker": "Docker",
"api": "API",
"migrate": ""
"migrate": "1.0'a geçiş yapın"
}
},
"about": {

View File

@@ -62,7 +62,7 @@
"description": "İkon bulmak için yazmaya başlayın. Özel ikon kullanmak için URL de yapıştırabilirsiniz.",
"autocomplete": {
"title": "Sonuç bulunamadı",
"text": "Daha belirgin bir arama terimi kullanmayı deneyin. İstediğiniz simgeyi bulamıyorsanız, özel bir simge için resim URL'sini yukarıya yapıştıın"
"text": "Daha belirgin bir arama terimi kullanmayı deneyin. İstediğiniz simgeyi bulamıyorsanız, özel bir simge için görsel URL'sini yukarıya yapıştıın"
},
"noItems": {
"title": "Harici simgeler yükleniyor",

View File

@@ -11,7 +11,7 @@
"view": "Panelleri görüntüle"
},
"menu": {
"setAsDefault": "Varsayılan panel olarak ayarlayın",
"setAsDefault": "Öntanımlı panel olarak ayarlayın",
"delete": {
"label": "Kalıcı olarak sil",
"disabled": "Silme devre dışı, çünkü eski Homarr bileşenleri varsayılan yapılandırmanın silinmesine izin vermiyor. Silme işlemi gelecekte mümkün olacaktır."
@@ -32,7 +32,7 @@
},
"badges": {
"fileSystem": "Dosya Sistemi",
"default": "Varsayılan"
"default": "Öntanımlı"
}
},
"buttons": {
@@ -45,7 +45,7 @@
},
"create": {
"title": "Panel oluştur",
"text": "Bir pano oluşturulduktan sonra isim değiştirilemez.",
"text": "Bir panel oluşturulduktan sonra isim değiştirilemez.",
"form": {
"name": {
"label": "İsim"

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