Compare commits

...
Author SHA1 Message Date
Releases Homarr 162e8adf4c chore(release): 1.0.0-beta.7 [skip ci] 2024-12-24 13:34:42 +00:00
homarr-releases[bot] 620ec0315f chore(release): automatic release v1.0.0 2024-12-24 13:33:47 +00:00
Meier Lukas 8df398c3c7 feat(apps): remove url variables (#1771) 2024-12-24 14:16:24 +01:00
Meier Lukas 425359be02 fix(board): item background and border overridden by mantine card styles (#1769) 2024-12-24 14:16:11 +01:00
Meier Lukas 8893b72fe3 fix(board): tiles order not respected on firefox (#1770) 2024-12-24 14:15:58 +01:00
Meier Lukas b9483379dd fix(onboard): missing admin permission assignment for external group (#1764) 2024-12-24 14:15:46 +01:00
Meier Lukas 0336803550 fix(auth): oidc redirect does not respect https protocol (#1763) 2024-12-24 14:15:34 +01:00
Meier Lukas e220087e96 fix(icons): local icon repository does not work with medias (#1765) 2024-12-24 14:15:18 +01:00
Manuel f127c9325c config: update issue templates (#1751) 2024-12-24 13:05:59 +00:00
homarr-renovate[bot] c410b06a15 fix(deps): update tanstack-query monorepo to ^5.62.10 (#1772)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-24 12:25:11 +00:00
Thomas Camlong ce755efe4d chore(lang): updated translations from crowdin (#1760)
* New translations en.json (Hungarian)

* New translations en.json (Hebrew)

* New translations en.json (Hebrew)

* New translations en.json (Hebrew)

* New translations en.json (Hungarian)

* New translations en.json (Hebrew)
2024-12-24 11:01:14 +01:00
homarr-renovate[bot] 8b416a6dd3 fix(deps): update dependency @ctrl/qbittorrent to ^9.2.0 (#1768)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-24 04:18:59 +00:00
homarr-renovate[bot] fe95334aa7 fix(deps): update dependency eslint-plugin-react to ^7.37.3 (#1767)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-24 03:02:21 +00:00
homarr-crowdin[bot] b0facfd77a chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2024-12-24 00:44:22 +00:00
homarr-renovate[bot] 01db27c34f fix(deps): update dependency react-error-boundary to v5 (#1748)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-23 20:17:53 +01:00
homarr-renovate[bot] 999cf58625 chore(deps): update dependency dotenv-cli to v8 (#1741)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-23 20:14:01 +01:00
homarr-renovate[bot] 9223dd06ee fix(deps): update dependency typescript-eslint to ^8.18.2 (#1762)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-23 17:34:06 +00:00
homarr-renovate[bot] 42da2b9b06 fix(deps): update tanstack-query monorepo to ^5.62.9 (#1761)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-23 17:15:12 +00:00
Thomas CamlongandMeier Lukas a73eed63eb chore(lang): updated translations from crowdin (#1754)
* New translations en.json (Italian)

* New translations en.json (Hungarian)

* New translations en.json (Hungarian)

---------

Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2024-12-23 12:01:12 +01:00
homarr-crowdin[bot] 44dcc72d43 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2024-12-23 10:51:54 +00:00
homarr-renovate[bot] d02ded5511 fix(deps): update dependency mysql2 to v3.12.0 (#1758)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-23 10:38:45 +00:00
homarr-renovate[bot] dfacb08dbd fix(deps): update mantine monorepo to ^7.15.2 (#1757)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-23 10:17:37 +00:00
homarr-renovate[bot] 4e85bbbad0 fix(deps): update dependency jotai to ^2.11.0 (#1756)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-23 06:21:05 +00:00
ManuelandMeier Lukas d78c6ed529 fix: copy media link (#1750)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2024-12-22 20:20:33 +01:00
Thomas CamlongandMeier Lukas 210ce3669f chore(lang): updated translations from crowdin (#1747)
* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

---------

Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2024-12-22 18:39:19 +01:00
homarr-crowdin[bot] 44e5346d75 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2024-12-22 17:25:57 +00:00
Meier Lukas d34d665229 docs: update crowdin badge to new translation project (#1745) 2024-12-22 15:40:57 +01:00
Thomas CamlongandMeier Lukas b6dc38483d chore(lang): updated translations from crowdin (#1738)
* New translations en.json (Turkish)

* New translations en.json (Turkish)

* New translations en.json (German)

* New translations en.json (Turkish)

* New translations en.json (German)

* New translations en.json (Hebrew)

* New translations en.json (Chinese Simplified)

* New translations en.json (Hebrew)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Simplified)

---------

Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2024-12-21 12:13:42 +01:00
homarr-crowdin[bot] a7e387e54c chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2024-12-21 11:10:45 +00:00
homarr-crowdin[bot] 189f35f3cb chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2024-12-21 11:05:13 +00:00
Releases Homarr 3c8d4f5018 chore(release): 1.0.0-beta.6 [skip ci] 2024-12-20 19:13:19 +00:00
homarr-releases[bot] 2b59f19a7f chore(release): automatic release v1.0.0 2024-12-20 19:12:27 +00:00
homarr-renovate[bot] fff1da88bd fix(deps): update dependency next-intl to v3.26.3 (#1740)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-20 13:23:18 +00:00
homarr-renovate[bot] 720fdb772c fix(deps): update dependency ioredis to v5.4.2 (#1739)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-20 12:25:58 +00:00
homarr-renovate[bot] a225bdd70c chore(deps): update pnpm to v9.15.1 (#1737)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2024-12-20 00:55:05 +00:00
homarr-crowdin[bot] e40c348352 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2024-12-20 00:44:25 +00:00
Thomas Camlong 28e1175565 chore(lang): updated translations from crowdin (#1734)
* New translations en.json (Slovak)

* New translations en.json (Slovak)
2024-12-19 23:28:56 +01:00
homarr-crowdin[bot] b450b00934 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2024-12-19 22:28:10 +00:00
Thomas CamlongandMeier Lukas 8e0bf87c56 chore(lang): updated translations from crowdin (#1722)
* New translations en.json (Hungarian)

* New translations en.json (Russian)

* New translations en.json (Turkish)

* New translations en.json (Hungarian)

* New translations en.json (Turkish)

* New translations en.json (Hungarian)

* New translations en.json (Turkish)

* New translations en.json (Turkish)

* New translations en.json (Chinese Traditional)

* New translations en.json (Czech)

---------

Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2024-12-19 19:45:58 +01:00
homarr-crowdin[bot] 9e061f8fc7 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2024-12-19 18:34:13 +00:00
76 changed files with 5795 additions and 5009 deletions

No files matched your search

+58 -17
View File
@@ -1,37 +1,78 @@
name: 🐞 Bug Report
description: Create a bug report to help us improve
description: Report that something is broken, not working as intended or causes side-effects
title: "bug: "
labels: ["🐞❔ unconfirmed bug"]
labels: ["needs triage"]
body:
- type: textarea
attributes:
label: Provide environment information
description: |
Run this command in your project root and paste the results in a code block:
```bash
npx envinfo --system --binaries
```
validations:
required: true
- type: textarea
attributes:
label: Describe the bug
description: A clear and concise description of the bug, as well as what you expected to happen when encountering it.
validations:
required: true
- type: input
- type: textarea
attributes:
label: Link to reproduction
description: Please provide a link to a reproduction of the bug. Issues without a reproduction repo may be ignored.
label: Steps to reproduce
description: Describe how to reproduce your bug. Steps, code snippets, reproduction repos etc.
validations:
required: true
- type: textarea
attributes:
label: To reproduce
description: Describe how to reproduce your bug. Steps, code snippets, reproduction repos etc.
label: Impact
description: How big is the impact of this bug? Does it make Homarr unusable? Is there any workaround that you're aware of?
validations:
required: true
- type: textarea
attributes:
label: Additional information
description: Add any other information related to the bug here, screenshots if applicable.
- type: dropdown
id: version
attributes:
label: Version
description: What version of Homarr are you running?
options:
- 1.0.0-beta
- Other (describe in "additional information")
default: 0
validations:
required: true
- type: dropdown
id: installationMethod
attributes:
label: Installation method
description: How do you run Homarr? Post docker-compose, configs or screenshots if applicable.
options:
- Docker Run
- Docker Compose
- Portainer
- Helm
- QNAP
- Saltbox
- EasyPanel
- Unraid Apps
- TrueNAS Apps
- Synology
- HomeAssistant Addon
- From Source
- Other (describe in "additional information")
default: 0
validations:
required: true
- type: dropdown
id: browser
attributes:
label: Browser
description: If relevant, what browser do you use?
options:
- Firefox
- Edge (Chromium)
- Edge (Proprietary)
- Chrome
- Safari
- Vivaldi
- Brave
- Samsung Internet
- Other (describe in "additional information")
default: 0
validations:
required: false
+2 -12
View File
@@ -2,26 +2,16 @@
# See here: https://github.com/vercel/next.js/blob/canary/.github/ISSUE_TEMPLATE/3.feature_request.yml
name: 🛠 Feature Request
description: Create a feature request for the core packages
description: Request a new feature that you would like to have implemented
title: "feat: "
labels: ["✨ enhancement"]
labels: ["needs triage"]
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to file a feature request. Please fill out this form as completely as possible.
- type: textarea
attributes:
label: Describe the feature you'd like to request
description: Please describe the feature as clear and concise as possible. Remember to add context as to why you believe this feature is needed.
validations:
required: true
- type: textarea
attributes:
label: Describe the solution you'd like to see
description: Please describe the solution you would like to see. Adding example usage is a good way to provide context.
validations:
required: true
- type: textarea
attributes:
label: Additional information
+40
View File
@@ -0,0 +1,40 @@
name: 🛠 Integration request
description: Request support for a new integration (eg. Sonarr, Radarr)
title: "feat: "
labels: ["needs triage"]
body:
- type: input
attributes:
label: Project Website
description: Post the link to the website of the application. Paste the official link.
placeholder: ex. https://sonarr.tv/
validations:
required: true
- type: textarea
attributes:
label: Describe what data should be consumed by Homarr
description: Please describe what data Homarr should fetch from the integration. Specify in what interval data should be fetched and whether the user can also perform write operations (eg. deleting a movie or adding a user).
validations:
required: true
- type: textarea
attributes:
label: Additional information
description: Add any other information related to the integration.
- type: dropdown
attributes:
label: Public API available?
description: Is there a public API available, that we can consume in Homarr?
options:
- Yes, available on a website
- Yes, available in the application itself
- No
validations:
required: true
- type: dropdown
attributes:
label: Are you willing to contribute this yourself?
options:
- Yes
- No
validations:
required: true
+30
View File
@@ -0,0 +1,30 @@
name: 🛠 Widget request
description: Request a new widget (eg. Clock, Calendar, ...)
title: "feat: "
labels: ["needs triage"]
body:
- type: input
attributes:
label: Compatible integrations
description: Post a list of the integrations that should be compatible with this widget. Divide using comma. Leave empty if no integration is needed.
placeholder: ex. Sonarr, Radarr, Lidarr, Readarr, Nextcloud
validations:
required: false
- type: textarea
attributes:
label: Describe what data should be displayed
description: Please describe what data Homarr should display. Describe how elements should be intractable and what actions the user can perform.
validations:
required: true
- type: textarea
attributes:
label: Additional information
description: Add any other information related to the widget.
- type: dropdown
attributes:
label: Are you willing to contribute this yourself?
options:
- Yes
- No
validations:
required: true
@@ -149,7 +149,7 @@ jobs:
with:
platforms: linux/amd64,linux/arm64
context: .
push: ${{ env.PUSH_IMAGE}}
push: ${{ env.PUSH_IMAGE }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
network: host
+31
View File
@@ -1,3 +1,34 @@
## [1.0.0-beta.7](https://github.com/homarr-labs/homarr/compare/v1.0.0-beta.6...v1.0.0-beta.7) (2024-12-24)
### Features
* **apps:** remove url variables ([#1771](https://github.com/homarr-labs/homarr/issues/1771)) ([8df398c](https://github.com/homarr-labs/homarr/commit/8df398c3c706369f6990719603a357c161606f81))
### Bug Fixes
* **auth:** oidc redirect does not respect https protocol ([#1763](https://github.com/homarr-labs/homarr/issues/1763)) ([0336803](https://github.com/homarr-labs/homarr/commit/033680355044b1ebfa5d8fe07b59929bbcfcb3a0))
* **board:** item background and border overridden by mantine card styles ([#1769](https://github.com/homarr-labs/homarr/issues/1769)) ([425359b](https://github.com/homarr-labs/homarr/commit/425359be02f66242f7db0dc77bed0355495e21d5))
* **board:** tiles order not respected on firefox ([#1770](https://github.com/homarr-labs/homarr/issues/1770)) ([8893b72](https://github.com/homarr-labs/homarr/commit/8893b72fe363691b91b6aca75d4ad37f4b8e9f6a))
* copy media link ([#1750](https://github.com/homarr-labs/homarr/issues/1750)) ([d78c6ed](https://github.com/homarr-labs/homarr/commit/d78c6ed5299e1f975c2e85ec3ecad38e00457677))
* **deps:** update dependency @ctrl/qbittorrent to ^9.2.0 ([#1768](https://github.com/homarr-labs/homarr/issues/1768)) ([8b416a6](https://github.com/homarr-labs/homarr/commit/8b416a6dd354b22a3e4f527b793dde2c538b1e6a))
* **deps:** update dependency eslint-plugin-react to ^7.37.3 ([#1767](https://github.com/homarr-labs/homarr/issues/1767)) ([fe95334](https://github.com/homarr-labs/homarr/commit/fe95334aa70c95faefcf904591fa9d33159b0905))
* **deps:** update dependency jotai to ^2.11.0 ([#1756](https://github.com/homarr-labs/homarr/issues/1756)) ([4e85bbb](https://github.com/homarr-labs/homarr/commit/4e85bbbad034f08ab84e331d376b7a9c6f54e507))
* **deps:** update dependency mysql2 to v3.12.0 ([#1758](https://github.com/homarr-labs/homarr/issues/1758)) ([d02ded5](https://github.com/homarr-labs/homarr/commit/d02ded5511aa2d54307db0ac7f4e0a5dee5a707d))
* **deps:** update dependency react-error-boundary to v5 ([#1748](https://github.com/homarr-labs/homarr/issues/1748)) ([01db27c](https://github.com/homarr-labs/homarr/commit/01db27c34f3daf6e67e35bbd357df31dcb154b41))
* **deps:** update dependency typescript-eslint to ^8.18.2 ([#1762](https://github.com/homarr-labs/homarr/issues/1762)) ([9223dd0](https://github.com/homarr-labs/homarr/commit/9223dd06ee0c2b51e036f607d7b3252c61ab77ea))
* **deps:** update mantine monorepo to ^7.15.2 ([#1757](https://github.com/homarr-labs/homarr/issues/1757)) ([dfacb08](https://github.com/homarr-labs/homarr/commit/dfacb08dbddb6864646ece2fca6978207f0c58ac))
* **deps:** update tanstack-query monorepo to ^5.62.10 ([#1772](https://github.com/homarr-labs/homarr/issues/1772)) ([c410b06](https://github.com/homarr-labs/homarr/commit/c410b06a15ed5426931ad764cc861f66f11a40da))
* **deps:** update tanstack-query monorepo to ^5.62.9 ([#1761](https://github.com/homarr-labs/homarr/issues/1761)) ([42da2b9](https://github.com/homarr-labs/homarr/commit/42da2b9b062bd8a08c37e45ab129953e8b0e3624))
* **icons:** local icon repository does not work with medias ([#1765](https://github.com/homarr-labs/homarr/issues/1765)) ([e220087](https://github.com/homarr-labs/homarr/commit/e220087e96c7096303b1d245ccf3941118e692f3))
* **onboard:** missing admin permission assignment for external group ([#1764](https://github.com/homarr-labs/homarr/issues/1764)) ([b948337](https://github.com/homarr-labs/homarr/commit/b9483379dd56a8dab2b9b636b66b970da4cf9d83))
## [1.0.0-beta.6](https://github.com/homarr-labs/homarr/compare/v1.0.0-beta.5...v1.0.0-beta.6) (2024-12-20)
### Bug Fixes
* **deps:** update dependency ioredis to v5.4.2 ([#1739](https://github.com/homarr-labs/homarr/issues/1739)) ([720fdb7](https://github.com/homarr-labs/homarr/commit/720fdb772c2142e23b2bfa2ecaddf0063fbe192c))
* **deps:** update dependency next-intl to v3.26.3 ([#1740](https://github.com/homarr-labs/homarr/issues/1740)) ([fff1da8](https://github.com/homarr-labs/homarr/commit/fff1da88bd44162b08a76f8b2f49e2b929fc56e8))
## [1.0.0-beta.5](https://github.com/homarr-labs/homarr/compare/v1.0.0-beta.4...v1.0.0-beta.5) (2024-12-19)
### Features
+11 -11
View File
@@ -38,18 +38,18 @@
"@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@homarr/widgets": "workspace:^0.1.0",
"@mantine/colors-generator": "^7.15.1",
"@mantine/core": "^7.15.1",
"@mantine/dropzone": "^7.15.1",
"@mantine/hooks": "^7.15.1",
"@mantine/modals": "^7.15.1",
"@mantine/tiptap": "^7.15.1",
"@mantine/colors-generator": "^7.15.2",
"@mantine/core": "^7.15.2",
"@mantine/dropzone": "^7.15.2",
"@mantine/hooks": "^7.15.2",
"@mantine/modals": "^7.15.2",
"@mantine/tiptap": "^7.15.2",
"@million/lint": "1.0.14",
"@t3-oss/env-nextjs": "^0.11.1",
"@tabler/icons-react": "^3.26.0",
"@tanstack/react-query": "^5.62.8",
"@tanstack/react-query-devtools": "^5.62.8",
"@tanstack/react-query-next-experimental": "5.62.8",
"@tanstack/react-query": "^5.62.10",
"@tanstack/react-query-devtools": "^5.62.10",
"@tanstack/react-query-next-experimental": "5.62.10",
"@trpc/client": "next",
"@trpc/next": "next",
"@trpc/react-query": "next",
@@ -63,14 +63,14 @@
"dotenv": "^16.4.7",
"flag-icons": "^7.2.3",
"glob": "^11.0.0",
"jotai": "^2.10.4",
"jotai": "^2.11.0",
"mantine-react-table": "2.0.0-beta.7",
"next": "^14.2.21",
"postcss-preset-mantine": "^1.17.0",
"prismjs": "^1.29.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-error-boundary": "^4.1.2",
"react-error-boundary": "^5.0.0",
"react-simple-code-editor": "^0.14.1",
"sass": "^1.83.0",
"superjson": "2.2.2",
@@ -6,7 +6,6 @@ import { IconBox, IconPencil } from "@tabler/icons-react";
import type { RouterOutputs } from "@homarr/api";
import { api } from "@homarr/api/server";
import { auth } from "@homarr/auth/next";
import { parseAppHrefWithVariablesServer } from "@homarr/common/server";
import { getI18n, getScopedI18n } from "@homarr/translation/server";
import { ManageContainer } from "~/components/manage/manage-container";
@@ -82,8 +81,8 @@ const AppCard = async ({ app }: AppCardProps) => {
</Text>
)}
{app.href && (
<Anchor href={parseAppHrefWithVariablesServer(app.href)} lineClamp={1} size="sm" w="min-content">
{parseAppHrefWithVariablesServer(app.href)}
<Anchor href={app.href} lineClamp={1} size="sm" w="min-content">
{app.href}
</Anchor>
)}
</Stack>
@@ -13,10 +13,7 @@ interface CopyMediaProps {
export const CopyMedia = ({ media }: CopyMediaProps) => {
const t = useI18n();
const url =
typeof window !== "undefined"
? `${window.location.protocol}://${window.location.hostname}:${window.location.port}/api/user-medias/${media.id}`
: "";
const url = typeof window !== "undefined" ? `${window.location.origin}/api/user-medias/${media.id}` : "";
return (
<CopyButton value={url}>
@@ -10,6 +10,12 @@ import { useSectionContext } from "./section-context";
export const SectionContent = () => {
const { section, innerSections, refs } = useSectionContext();
const board = useRequiredBoard();
/**
* IMPORTANT: THE ORDER OF THE BELOW ITEMS HAS TO MATCH THE ORDER OF
* THE ITEMS RENDERED WITH GRIDSTACK, OTHERWISE THE ITEMS WILL BE MIXED UP
* @see https://github.com/homarr-labs/homarr/pull/1770
*/
const sortedItems = useMemo(() => {
return [
...section.items.map((item) => ({ ...item, type: "item" as const })),
@@ -19,7 +25,7 @@ export const SectionContent = () => {
return itemA.xOffset - itemB.xOffset;
}
return itemA.yOffset - itemB.xOffset;
return itemA.yOffset - itemB.yOffset;
});
}, [section.items, innerSections]);
@@ -7,6 +7,6 @@
--background-color: rgb(from var(--mantine-color-white) r g b / var(--opacity));
--border-color: rgb(from var(--mantine-color-gray-3) r g b / var(--opacity));
}
background-color: var(--background-color);
border-color: var(--border-color);
background-color: var(--background-color) !important;
border-color: var(--border-color) !important;
}
+1 -1
View File
@@ -45,7 +45,7 @@
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/node": "^22.10.2",
"dotenv-cli": "^7.4.4",
"dotenv-cli": "^8.0.0",
"eslint": "^9.17.0",
"prettier": "^3.4.2",
"tsx": "4.19.2",
+2 -2
View File
@@ -10,8 +10,8 @@
<a href="https://github.com/homarr-labs/homarr/actions/workflows/deployment-docker-image.yml">
  <img title="Docker CI Status" src="https://github.com/homarr-labs/homarr/actions/workflows/deployment-docker-image.yml/badge.svg" alt="CI Status">
</a>
<a href=https://translate.homarr.dev/>
<img title="Translations" src="https://badges.crowdin.net/homarr/localized.svg" />
<a href="https://crowdin.com/project/homarr_labs">
<img title="Translations" src="https://badges.crowdin.net/homarr_labs/localized.svg" />
</a>
<a href="https://discord.gg/aCsmEV5RgA">
  <img title="Discord" src="https://discordapp.com/api/guilds/972958686051962910/widget.png?style=shield">
+1 -1
View File
@@ -21,7 +21,7 @@ http {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
}
}
}
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "homarr",
"version": "1.0.0-beta.5",
"version": "1.0.0-beta.7",
"private": true,
"scripts": {
"build": "cross-env CI=true turbo build",
@@ -52,7 +52,7 @@
"vite-tsconfig-paths": "^5.1.4",
"vitest": "^2.1.8"
},
"packageManager": "pnpm@9.15.0",
"packageManager": "pnpm@9.15.1",
"engines": {
"node": ">=22.12.0"
},
+1
View File
@@ -27,6 +27,7 @@
"@homarr/cron-jobs": "workspace:^0.1.0",
"@homarr/db": "workspace:^0.1.0",
"@homarr/definitions": "workspace:^0.1.0",
"@homarr/icons": "workspace:^0.1.0",
"@homarr/integrations": "workspace:^0.1.0",
"@homarr/log": "workspace:^",
"@homarr/old-import": "workspace:^0.1.0",
+7 -1
View File
@@ -152,11 +152,17 @@ export const groupRouter = createTRPCRouter({
.mutation(async ({ input, ctx }) => {
await checkSimilarNameAndThrowAsync(ctx.db, input.name);
const groupId = createId();
await ctx.db.insert(groups).values({
id: createId(),
id: groupId,
name: input.name,
});
await ctx.db.insert(groupPermissions).values({
groupId,
permission: "admin",
});
await nextOnboardingStepAsync(ctx.db, undefined);
}),
createGroup: permissionRequiredProcedure
+22 -2
View File
@@ -1,7 +1,9 @@
import { TRPCError } from "@trpc/server";
import type { InferInsertModel } from "@homarr/db";
import { and, createId, desc, eq, like } from "@homarr/db";
import { medias } from "@homarr/db/schema";
import { iconRepositories, icons, medias } from "@homarr/db/schema";
import { createLocalImageUrl, LOCAL_ICON_REPOSITORY_SLUG, mapMediaToIcon } from "@homarr/icons/local";
import { validation, z } from "@homarr/validation";
import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure } from "../../trpc";
@@ -52,13 +54,29 @@ export const mediaRouter = createTRPCRouter({
.mutation(async ({ ctx, input }) => {
const content = Buffer.from(await input.file.arrayBuffer());
const id = createId();
await ctx.db.insert(medias).values({
const media = {
id,
creatorId: ctx.session.user.id,
content,
size: input.file.size,
contentType: input.file.type,
name: input.file.name,
} satisfies InferInsertModel<typeof medias>;
await ctx.db.insert(medias).values(media);
const localIconRepository = await ctx.db.query.iconRepositories.findFirst({
where: eq(iconRepositories.slug, LOCAL_ICON_REPOSITORY_SLUG),
});
if (!localIconRepository) return id;
const icon = mapMediaToIcon(media);
await ctx.db.insert(icons).values({
id: createId(),
checksum: icon.checksum,
name: icon.fileNameWithExtension,
url: icon.imageUrl,
iconRepositoryId: localIconRepository.id,
});
return id;
@@ -67,6 +85,7 @@ export const mediaRouter = createTRPCRouter({
const dbMedia = await ctx.db.query.medias.findFirst({
where: eq(medias.id, input.id),
columns: {
id: true,
creatorId: true,
},
});
@@ -87,5 +106,6 @@ export const mediaRouter = createTRPCRouter({
}
await ctx.db.delete(medias).where(eq(medias.id, input.id));
await ctx.db.delete(icons).where(eq(icons.url, createLocalImageUrl(input.id)));
}),
});
@@ -23,7 +23,8 @@ export const OidcProvider = (headers: ReadonlyHeaders | null): OIDCConfig<Profil
authorization: {
params: {
scope: env.AUTH_OIDC_SCOPE_OVERWRITE,
redirect_uri: createRedirectUri(headers, "/api/auth/callback/oidc"),
// We fallback to https as generally oidc providers require https
redirect_uri: createRedirectUri(headers, "/api/auth/callback/oidc", "https"),
},
},
profile(profile) {
+6 -2
View File
@@ -8,12 +8,16 @@ import { extractBaseUrlFromHeaders } from "@homarr/common";
* @param pathname
* @returns
*/
export const createRedirectUri = (headers: ReadonlyHeaders | null, pathname: string) => {
export const createRedirectUri = (
headers: ReadonlyHeaders | null,
pathname: string,
fallbackProtocol: "http" | "https" = "http",
) => {
if (!headers) {
return pathname;
}
const baseUrl = extractBaseUrlFromHeaders(headers);
const baseUrl = extractBaseUrlFromHeaders(headers, fallbackProtocol);
const path = pathname.startsWith("/") ? pathname : `/${pathname}`;
+1 -2
View File
@@ -28,8 +28,7 @@
"@homarr/log": "workspace:^0.1.0",
"dayjs": "^1.11.13",
"next": "^14.2.21",
"react": "^19.0.0",
"tldts": "^6.1.69"
"react": "^19.0.0"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
-23
View File
@@ -1,23 +0,0 @@
import * as tldts from "tldts";
const safeParseTldts = (url: string) => {
try {
return tldts.parse(url);
} catch {
return null;
}
};
export const parseAppHrefWithVariables = <TInput extends string | null>(url: TInput, currentHref: string): TInput => {
if (!url || url.length === 0) return url;
const tldtsResult = safeParseTldts(currentHref);
const urlObject = new URL(currentHref);
return url
.replaceAll("[homarr_base]", `${urlObject.protocol}//${urlObject.hostname}`)
.replaceAll("[homarr_hostname]", tldtsResult?.hostname ?? "")
.replaceAll("[homarr_domain]", tldtsResult?.domain ?? "")
.replaceAll("[homarr_protocol]", urlObject.protocol.replace(":", "")) as TInput;
};
-6
View File
@@ -1,6 +0,0 @@
import { parseAppHrefWithVariables } from "./base";
export const parseAppHrefWithVariablesClient = <TInput extends string | null>(url: TInput): TInput => {
if (typeof window === "undefined") return url;
return parseAppHrefWithVariables(url, window.location.href);
};
-8
View File
@@ -1,8 +0,0 @@
import { headers } from "next/headers";
import { extractBaseUrlFromHeaders } from "../url";
import { parseAppHrefWithVariables } from "./base";
export const parseAppHrefWithVariablesServer = <TInput extends string | null>(url: TInput): TInput => {
return parseAppHrefWithVariables(url, extractBaseUrlFromHeaders(headers()));
};
-1
View File
@@ -1,2 +1 @@
export * from "./app-url/client";
export * from "./revalidate-path-action";
-1
View File
@@ -1,3 +1,2 @@
export * from "./app-url/server";
export * from "./security";
export * from "./encryption";
+10 -2
View File
@@ -4,8 +4,16 @@ export const removeTrailingSlash = (path: string) => {
return path.at(-1) === "/" ? path.substring(0, path.length - 1) : path;
};
export const extractBaseUrlFromHeaders = (headers: ReadonlyHeaders): `${string}://${string}` => {
let protocol = headers.get("x-forwarded-proto") ?? "http";
export const extractBaseUrlFromHeaders = (
headers: ReadonlyHeaders,
fallbackProtocol: "http" | "https" = "http",
): `${string}://${string}` => {
let protocol = headers.get("x-forwarded-proto");
// If the protocol is not set or an empty string
if (!protocol) {
protocol = fallbackProtocol;
}
// @see https://support.glitch.com/t/x-forwarded-proto-contains-multiple-protocols/17219
if (protocol.includes(",")) {
+2 -2
View File
@@ -50,14 +50,14 @@
"drizzle-kit": "^0.30.1",
"drizzle-orm": "^0.38.2",
"drizzle-zod": "^0.6.0",
"mysql2": "3.11.5"
"mysql2": "3.12.0"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/better-sqlite3": "7.6.12",
"dotenv-cli": "^7.4.4",
"dotenv-cli": "^8.0.0",
"eslint": "^9.17.0",
"prettier": "^3.4.2",
"tsx": "4.19.2",
+1 -1
View File
@@ -26,7 +26,7 @@
"@homarr/common": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@mantine/form": "^7.15.1"
"@mantine/form": "^7.15.2"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
+2 -1
View File
@@ -5,7 +5,8 @@
"license": "MIT",
"type": "module",
"exports": {
".": "./index.ts"
".": "./index.ts",
"./local": "./src/local.ts"
},
"typesVersions": {
"*": {
+1
View File
@@ -0,0 +1 @@
export { createLocalImageUrl, mapMediaToIcon, LOCAL_ICON_REPOSITORY_SLUG } from "./repositories/local.icon-repository";
@@ -1,26 +1,36 @@
import { createHash } from "crypto";
import type { InferSelectModel } from "@homarr/db";
import { db } from "@homarr/db";
import type { medias } from "@homarr/db/schema";
import type { RepositoryIconGroup } from "../types";
import type { RepositoryIcon, RepositoryIconGroup } from "../types";
import { IconRepository } from "./icon-repository";
export const LOCAL_ICON_REPOSITORY_SLUG = "local";
export class LocalIconRepository extends IconRepository {
constructor() {
super("Local", "local", undefined, undefined, undefined, undefined);
super("Local", LOCAL_ICON_REPOSITORY_SLUG, undefined, undefined, undefined, undefined);
}
protected async getAllIconsInternalAsync(): Promise<RepositoryIconGroup> {
const medias = await db.query.medias.findMany();
return {
success: true,
icons: medias.map((media) => ({
local: true,
fileNameWithExtension: media.name,
imageUrl: `/api/user-medias/${media.id}`,
checksum: createHash("md5").update(media.content).digest("hex"),
sizeInBytes: media.size,
})),
slug: "local",
icons: medias.map(mapMediaToIcon),
slug: LOCAL_ICON_REPOSITORY_SLUG,
};
}
}
export const createLocalImageUrl = (id: string) => `/api/user-medias/${id}`;
export const mapMediaToIcon = (
media: Pick<InferSelectModel<typeof medias>, "name" | "id" | "content" | "size">,
): RepositoryIcon => ({
local: true,
fileNameWithExtension: media.name,
imageUrl: createLocalImageUrl(media.id),
checksum: createHash("md5").update(media.content).digest("hex"),
sizeInBytes: media.size,
});
+1 -1
View File
@@ -25,7 +25,7 @@
"prettier": "@homarr/prettier-config",
"dependencies": {
"@ctrl/deluge": "^7.0.0",
"@ctrl/qbittorrent": "^9.1.0",
"@ctrl/qbittorrent": "^9.2.0",
"@ctrl/transmission": "^7.1.0",
"@homarr/common": "workspace:^0.1.0",
"@homarr/db": "workspace:^0.1.0",
+1 -1
View File
@@ -26,7 +26,7 @@
},
"prettier": "@homarr/prettier-config",
"dependencies": {
"ioredis": "5.4.1",
"ioredis": "5.4.2",
"superjson": "2.2.2",
"winston": "3.17.0"
},
+1 -1
View File
@@ -32,7 +32,7 @@
"@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@mantine/core": "^7.15.1",
"@mantine/core": "^7.15.2",
"@tabler/icons-react": "^3.26.0",
"dayjs": "^1.11.13",
"next": "^14.2.21",
+2 -2
View File
@@ -24,8 +24,8 @@
"dependencies": {
"@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0",
"@mantine/core": "^7.15.1",
"@mantine/hooks": "^7.15.1",
"@mantine/core": "^7.15.2",
"@mantine/hooks": "^7.15.2",
"react": "^19.0.0"
},
"devDependencies": {
+1 -1
View File
@@ -24,7 +24,7 @@
"prettier": "@homarr/prettier-config",
"dependencies": {
"@homarr/ui": "workspace:^0.1.0",
"@mantine/notifications": "^7.15.1",
"@mantine/notifications": "^7.15.2",
"@tabler/icons-react": "^3.26.0"
},
"devDependencies": {
+2 -2
View File
@@ -37,8 +37,8 @@
"@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@mantine/core": "^7.15.1",
"@mantine/hooks": "^7.15.1",
"@mantine/core": "^7.15.2",
"@mantine/hooks": "^7.15.2",
"adm-zip": "0.5.16",
"next": "^14.2.21",
"react": "^19.0.0",
+1 -1
View File
@@ -26,7 +26,7 @@
"@homarr/db": "workspace:^",
"@homarr/definitions": "workspace:^",
"@homarr/log": "workspace:^",
"ioredis": "5.4.1",
"ioredis": "5.4.2",
"superjson": "2.2.2"
},
"devDependencies": {
+4 -4
View File
@@ -32,11 +32,11 @@
"@homarr/modals-collection": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0",
"@mantine/core": "^7.15.1",
"@mantine/hooks": "^7.15.1",
"@mantine/spotlight": "^7.15.1",
"@mantine/core": "^7.15.2",
"@mantine/hooks": "^7.15.2",
"@mantine/spotlight": "^7.15.2",
"@tabler/icons-react": "^3.26.0",
"jotai": "^2.10.4",
"jotai": "^2.11.0",
"next": "^14.2.21",
"react": "^19.0.0",
"use-deep-compare-effect": "^1.8.1"
+1 -1
View File
@@ -33,7 +33,7 @@
"deepmerge": "4.3.1",
"mantine-react-table": "2.0.0-beta.7",
"next": "^14.2.21",
"next-intl": "3.26.2",
"next-intl": "3.26.3",
"react": "^19.0.0"
},
"devDependencies": {
+235 -235
View File
@@ -2,130 +2,130 @@
"init": {
"step": {
"start": {
"title": "",
"subtitle": "",
"description": "",
"title": "欢迎使用 Homarr",
"subtitle": "让我们开始设置您的 Homarr 实例。",
"description": "首先,请选择您想要如何设置您的 Homarr 实例。",
"action": {
"scratch": "",
"importOldmarr": ""
"scratch": "从头开始",
"importOldmarr": "从 1.0 之前的 Homarr 导入"
}
},
"import": {
"title": "",
"subtitle": "",
"title": "导入数据",
"subtitle": "您可以从已有的 Homarr 实例导入数据。",
"dropzone": {
"title": "",
"description": ""
"title": "将 zip 文件拖到此处或单击浏览",
"description": "上传的压缩包将被处理,您可以选择要导入的内容"
},
"fileInfo": {
"action": {
"change": ""
"change": "更改文件"
}
},
"importSettings": {
"title": "",
"description": ""
"title": "导入设置",
"description": "配置导入方式"
},
"boardSelection": {
"title": "",
"description": "",
"title": "找到 {count} 个面板",
"description": "选择您想要导入的所有面板",
"action": {
"selectAll": "",
"unselectAll": ""
"selectAll": "选择全部",
"unselectAll": "取消全选"
}
},
"summary": {
"title": "",
"description": "",
"title": "导入概况",
"description": "在下面的概况中,您可以看到将要导入的内容",
"action": {
"import": ""
"import": "确认导入并继续"
},
"entities": {
"apps": "应用",
"boards": "面板",
"integrations": "",
"credentialUsers": ""
"integrations": "组件",
"credentialUsers": "凭证用户"
}
},
"tokenModal": {
"title": "",
"title": "输入导入密钥",
"field": {
"token": {
"label": "Token",
"description": ""
"label": "令牌",
"description": "输入您之前的 homarr 实例中显示的导入秘钥"
}
},
"notification": {
"error": {
"title": "",
"message": ""
"title": "无效秘钥",
"message": "您输入的秘钥无效"
}
}
}
},
"user": {
"title": "",
"subtitle": "",
"title": "管理员用户",
"subtitle": "指定您的管理员用户的凭据。",
"notification": {
"success": {
"title": "",
"message": ""
"title": "创建用户",
"message": "用户已成功创建"
},
"error": {
"title": ""
"title": "用户创建失败"
}
}
},
"group": {
"title": "",
"subtitle": "",
"title": "外部组",
"subtitle": "指定应该用于外部用户的组。",
"form": {
"name": {
"label": "",
"description": ""
"label": "组名称",
"description": "名称必须与外部提供商的管理组匹配"
}
}
},
"settings": {
"title": "设置",
"subtitle": ""
"subtitle": "配置服务器的设置"
},
"finish": {
"title": "",
"subtitle": "",
"description": "",
"title": "完成设置",
"subtitle": "你已设置完成!",
"description": "您已成功完成设置过程。现在您可以开始使用 Homarr 了。选择下一步操作:",
"action": {
"goToBoard": "",
"createBoard": "",
"inviteUser": "",
"docs": ""
"goToBoard": "转到 {name} 面板",
"createBoard": "创建您的第一个面板",
"inviteUser": "邀请其他用户",
"docs": "阅读文档"
}
}
},
"backToStart": ""
"backToStart": "返回起点"
},
"user": {
"title": "用户",
"name": "用户",
"page": {
"login": {
"title": "",
"subtitle": ""
"title": "登录你的账户",
"subtitle": "欢迎回来!请输入您的凭据"
},
"invite": {
"title": "",
"subtitle": "",
"description": ""
"title": "加入 Homarr",
"subtitle": "欢迎来到 Homarr!请创建您的账户",
"description": "您受到了 {username} 的邀请。"
},
"init": {
"title": "",
"subtitle": ""
"title": "新建Homarr 安装",
"subtitle": "请创建初始管理员用户"
}
},
"field": {
"email": {
"label": "邮箱",
"verified": ""
"verified": "已验证"
},
"username": {
"label": "用户名"
@@ -133,46 +133,46 @@
"password": {
"label": "密码",
"requirement": {
"length": "",
"length": "包含至少8个字符",
"lowercase": "包括小写字母",
"uppercase": "包含大写字母",
"number": "包含数字",
"special": ""
"special": "包含特殊符号"
}
},
"passwordConfirm": {
"label": "确认密码"
},
"previousPassword": {
"label": ""
"label": "先前的密码"
},
"homeBoard": {
"label": ""
"label": "首页"
},
"pingIconsEnabled": {
"label": ""
"label": "用于ping的图标"
}
},
"error": {
"usernameTaken": ""
"usernameTaken": "用户名称已被占用"
},
"action": {
"login": {
"label": "登录",
"labelWith": "",
"labelWith": "使用 {provider} 登录",
"notification": {
"success": {
"title": "",
"message": ""
"title": "登录成功",
"message": "您已登录"
},
"error": {
"title": "",
"message": ""
"title": "登录失败",
"message": "您登录失败"
}
},
"forgotPassword": {
"label": "",
"description": ""
"label": "忘记密码?",
"description": "管理员可以使用以下命令重置您的密码:"
}
},
"register": {
@@ -180,81 +180,81 @@
"notification": {
"success": {
"title": "账号已创建",
"message": ""
"message": "请登录以继续"
},
"error": {
"title": "",
"message": ""
"title": "创建账户失败",
"message": "无法创建您的帐户"
}
}
},
"create": "创建用户",
"changePassword": {
"label": "",
"label": "修改密码",
"notification": {
"success": {
"message": ""
"message": "密码修改成功"
},
"error": {
"message": ""
"message": "无法修改密码"
}
}
},
"changeHomeBoard": {
"notification": {
"success": {
"message": ""
"message": "主页面修改成功"
},
"error": {
"message": ""
"message": "无法修改主面板"
}
}
},
"changeFirstDayOfWeek": {
"notification": {
"success": {
"message": ""
"message": "成功修改一周的第一天"
},
"error": {
"message": ""
"message": "无法修改一周的第一天"
}
}
},
"changePingIconsEnabled": {
"notification": {
"success": {
"message": ""
"message": "Ping 图标切换成功"
},
"error": {
"message": ""
"message": "无法切换 ping 图标"
}
}
},
"manageAvatar": {
"changeImage": {
"label": "",
"label": "更改图像",
"notification": {
"success": {
"message": ""
"message": "图像修改成功"
},
"error": {
"message": ""
"message": "无法更改图像"
},
"toLarge": {
"title": "",
"message": ""
"title": "图片太大",
"message": "最大图像尺寸为 {size}"
}
}
},
"removeImage": {
"label": "",
"confirm": "",
"label": "删除图像",
"confirm": "确定要移除这张图片吗?",
"notification": {
"success": {
"message": ""
"message": "图像删除成功"
},
"error": {
"message": ""
"message": "无法删除图像"
}
}
}
@@ -262,42 +262,42 @@
"editProfile": {
"notification": {
"success": {
"message": ""
"message": "资料更新成功"
},
"error": {
"message": ""
"message": "资料更新失败"
}
}
},
"delete": {
"label": "",
"description": "",
"confirm": ""
"label": "永久删除用户",
"description": "删除此用户及其偏好设置。这将不会删除任何看板。用户将不会收到通知。",
"confirm": "您确定要删除用户 {username} 及其偏好设置吗?"
},
"select": {
"label": "",
"notFound": ""
"label": "选择用户",
"notFound": "找不到用户"
},
"transfer": {
"label": ""
"label": "选择新的所有者"
}
}
},
"group": {
"title": "",
"name": "",
"search": "",
"title": "组",
"name": "组",
"search": "查找组",
"field": {
"name": "名称",
"members": ""
"members": "成员列表"
},
"permission": {
"admin": {
"title": "管理员",
"item": {
"admin": {
"label": "",
"description": ""
"label": "管理员",
"description": "拥有此权限的成员可完全访问所有功能和设置"
}
}
},
@@ -305,20 +305,20 @@
"title": "应用",
"item": {
"create": {
"label": "",
"description": ""
"label": "创建应用",
"description": "允许成员创建应用"
},
"use-all": {
"label": "",
"description": ""
"label": "使用全部应用",
"description": "允许成员将任何应用添加到他们的看板"
},
"modify-all": {
"label": "",
"description": ""
"label": "修改全部应用",
"description": "允许成员修改全部应用"
},
"full-all": {
"label": "",
"description": ""
"label": "完整应用访问权限",
"description": "允许成员管理、使用和删除全部应用"
}
}
},
@@ -326,165 +326,165 @@
"title": "面板",
"item": {
"create": {
"label": "",
"description": ""
"label": "创建面板",
"description": "允许成员创建看板"
},
"view-all": {
"label": "",
"description": ""
"label": "查看全部面板",
"description": "允许成员查看全部看板"
},
"modify-all": {
"label": "",
"description": ""
"label": "修改全部看板",
"description": "允许成员修改全部看板 (不包括访问控制和危险区)"
},
"full-all": {
"label": "",
"description": ""
"label": "完整的看板访问权限",
"description": "允许成员查看、修改和删除全部看板 (包括访问控制和危险区)"
}
}
},
"integration": {
"title": "",
"title": "组件",
"item": {
"create": {
"label": "",
"description": ""
"label": "创建组件",
"description": "允许成员创建组件"
},
"use-all": {
"label": "",
"description": ""
"label": "使用全部组件",
"description": "允许成员将任何组件添加到他们的看板"
},
"interact-all": {
"label": "",
"description": ""
"label": "与任何组件互动",
"description": "允许成员与任何组件互动"
},
"full-all": {
"label": "",
"description": ""
"label": "完全的组件访问权限",
"description": "允许成员管理、使用并与任何组件交互"
}
}
},
"media": {
"title": "",
"title": "媒体",
"item": {
"upload": {
"label": "",
"description": ""
"label": "上传媒体",
"description": "允许成员上传媒体"
},
"view-all": {
"label": "",
"description": ""
"label": "查看全部媒体",
"description": "允许成员查看全部媒体"
},
"full-all": {
"label": "",
"description": ""
"label": "完全的媒体访问权限",
"description": "允许成员管理和删除任何媒体"
}
}
},
"other": {
"title": "",
"title": "其它",
"item": {
"view-logs": {
"label": "",
"description": ""
"label": "查看日志",
"description": "允许成员查看日志"
}
}
},
"search-engine": {
"title": "",
"title": "搜索引擎",
"item": {
"create": {
"label": "",
"description": ""
"label": "创建搜索引擎",
"description": "允许成员创建搜索引擎"
},
"modify-all": {
"label": "",
"description": ""
"label": "修改全部搜索引擎",
"description": "允许成员修改全部搜索引擎"
},
"full-all": {
"label": "",
"description": ""
"label": "完整的搜索引擎访问权限",
"description": "允许成员管理和删除任何搜索引擎"
}
}
}
},
"memberNotice": {
"mixed": "",
"external": ""
"mixed": "部分成员来自外部提供者,无法在此处管理",
"external": "所有成员都来自外部提供者,无法在此处管理"
},
"reservedNotice": {
"message": ""
"message": "此用户组保留供系统使用并限制部分操作 <checkoutDocs></checkoutDocs>"
},
"action": {
"create": {
"label": "",
"label": "新建用户组",
"notification": {
"success": {
"message": ""
"message": "用户组已成功创建"
},
"error": {
"message": ""
"message": "无法创建用户组"
}
}
},
"transfer": {
"label": "",
"description": "",
"confirm": "",
"label": "转移所有权",
"description": "将此用户组的所有权转移给另一个用户。",
"confirm": "确定将用户组 {name} 的所有权转移给 {username} 吗?",
"notification": {
"success": {
"message": ""
"message": "成功将用户组 {group} 的所有权转移给 {user}"
},
"error": {
"message": ""
"message": "无法转移所有权"
}
}
},
"addMember": {
"label": ""
"label": "添加成员"
},
"removeMember": {
"label": "",
"confirm": ""
"label": "删除成员",
"confirm": "确定将 {user} 从此用户组移除吗?"
},
"delete": {
"label": "",
"description": "",
"confirm": "",
"label": "删除用户组",
"description": "用户组一旦删除就无法恢复. 请谨慎操作.",
"confirm": "确认删除用户组 {name} 吗?",
"notification": {
"success": {
"message": ""
"message": "成功删除用户组 {name}"
},
"error": {
"message": ""
"message": "无法删除用户组 {name}"
}
}
},
"changePermissions": {
"notification": {
"success": {
"title": "",
"message": ""
"title": "权限已保存",
"message": "权限保存成功"
},
"error": {
"title": "",
"message": ""
"title": "权限未保存",
"message": "权限尚未保存"
}
}
},
"update": {
"notification": {
"success": {
"message": ""
"message": "用户组 {name} 保存成功"
},
"error": {
"message": ""
"message": "无法保存用户组 {name}"
}
}
},
"select": {
"label": "",
"notFound": ""
"label": "选择用户组",
"notFound": "未找到用户组"
}
}
},
@@ -493,47 +493,47 @@
"list": {
"title": "应用",
"noResults": {
"title": "",
"action": ""
"title": "尚无应用",
"action": "创建您的第一个应用"
}
},
"create": {
"title": "",
"title": "新建应用",
"notification": {
"success": {
"title": "",
"message": ""
"title": "创建成功",
"message": "应用已成功创建"
},
"error": {
"title": "",
"message": ""
"title": "创建失败",
"message": "无法创建此应用"
}
}
},
"edit": {
"title": "",
"title": "编辑应用",
"notification": {
"success": {
"title": "",
"message": ""
"title": "更改应用成功",
"message": "应用保存成功"
},
"error": {
"title": "",
"message": ""
"title": "无法应用更改",
"message": "无法保存此应用"
}
}
},
"delete": {
"title": "",
"message": "",
"title": "删除应用",
"message": "确认删除应用 {name} 吗?",
"notification": {
"success": {
"title": "",
"message": ""
"title": "成功删除",
"message": "应用已成功删除"
},
"error": {
"title": "",
"message": ""
"title": "删除失败",
"message": "无法删除应用"
}
}
}
@@ -543,65 +543,65 @@
"label": "名称"
},
"description": {
"label": ""
"label": "描述"
},
"url": {
"label": ""
"label": "Url"
}
},
"action": {
"select": {
"label": "",
"notFound": ""
"label": "选择应用",
"notFound": "未找到应用"
}
}
},
"integration": {
"page": {
"list": {
"title": "",
"search": "",
"title": "组件",
"search": "搜索组件",
"noResults": {
"title": ""
"title": "尚无组件"
}
},
"create": {
"title": "",
"title": "新的组件 {name}",
"notification": {
"success": {
"title": "",
"message": ""
"title": "创建成功",
"message": "组件已成功创建"
},
"error": {
"title": "",
"message": ""
"title": "创建失败",
"message": "无法创建组件"
}
}
},
"edit": {
"title": "",
"title": "编辑组件 {name}",
"notification": {
"success": {
"title": "",
"message": ""
"title": "更改应用成功",
"message": "组件已成功保存"
},
"error": {
"title": "",
"message": ""
"title": "无法应用更改",
"message": "无法保存此组件"
}
}
},
"delete": {
"title": "",
"message": "",
"title": "删除组件",
"message": "确认删除组件 {name} 吗?",
"notification": {
"success": {
"title": "",
"message": ""
"title": "成功删除",
"message": "组件已成功删除"
},
"error": {
"title": "",
"message": ""
"title": "删除失败",
"message": "无法删除组件"
}
}
}
@@ -611,21 +611,21 @@
"label": "名称"
},
"url": {
"label": ""
"label": "Url"
}
},
"action": {
"create": ""
"create": "新建组件"
},
"testConnection": {
"action": {
"create": "",
"edit": ""
"create": "测试连接并创建",
"edit": "测试连接并保存"
},
"alertNotice": "",
"alertNotice": "成功建立连接后保存按钮将启用",
"notification": {
"success": {
"title": "",
"title": "连接成功",
"message": ""
},
"invalidUrl": {
@@ -978,7 +978,7 @@
},
"field": {
"integrations": {
"label": ""
"label": "组件"
},
"customCssClasses": {
"label": ""
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "嵌入互联网上的任何内容。某些网站可能限制访问。",
"option": {
"embedUrl": {
@@ -1981,15 +1981,15 @@
},
"error": {
"noBoard": {
"title": "",
"title": "欢迎使用 Homarr",
"description": "",
"link": "",
"link": "创建您的第一个面板",
"notice": ""
},
"notFound": {
"title": "",
"description": "",
"link": "",
"link": "查看全部面板",
"notice": ""
},
"homeBoard": {
@@ -2028,7 +2028,7 @@
"home": "首页",
"boards": "面板",
"apps": "应用",
"integrations": "",
"integrations": "组件",
"searchEngies": "",
"medias": "",
"users": {
@@ -2042,9 +2042,9 @@
"tools": {
"label": "工具",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2067,7 +2067,7 @@
"board": "面板",
"user": "用户",
"invite": "邀请",
"integration": "",
"integration": "组件",
"app": "应用",
"group": ""
},
@@ -2168,10 +2168,10 @@
"label": ""
},
"completed": {
"title": ""
"title": "创建用户"
},
"error": {
"title": ""
"title": "用户创建失败"
}
},
"action": {
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "创建者"
@@ -2208,7 +2208,7 @@
"label": "过期时间"
},
"token": {
"label": "Token"
"label": ""
}
}
}
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2555,7 +2555,7 @@
"label": "面板"
},
"integrations": {
"label": "",
"label": "组件",
"edit": {
"label": "编辑"
},
@@ -2602,7 +2602,7 @@
"tools": {
"label": "工具",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
@@ -2662,7 +2662,7 @@
}
},
"integration": {
"title": ""
"title": "组件"
}
}
},
@@ -2749,7 +2749,7 @@
"description": ""
},
"torrent": {
"name": "Torrents",
"name": "",
"description": ""
},
"youTube": {
+33 -33
View File
@@ -2,53 +2,53 @@
"init": {
"step": {
"start": {
"title": "",
"subtitle": "",
"description": "",
"title": "Vítejte v Homarru",
"subtitle": "Pojďme začít nastavením instance Homarru.",
"description": "Chcete-li začít, zvolte, jak chcete nastavit instanci Homarru.",
"action": {
"scratch": "",
"importOldmarr": ""
"scratch": "Začít od začátku",
"importOldmarr": "Import z Homarru před verzí 1.0"
}
},
"import": {
"title": "",
"subtitle": "",
"title": "Import dat",
"subtitle": "Můžete importovat data z existující instance Homarru.",
"dropzone": {
"title": "",
"description": ""
"title": "Přetáhněte zip soubor sem nebo klikněte pro procházení souborů",
"description": "Nahraný zip soubor bude zpracován a budete si moci vybrat, co chcete importovat"
},
"fileInfo": {
"action": {
"change": ""
"change": "Změnit soubor"
}
},
"importSettings": {
"title": "",
"description": ""
"title": "Importovat nastavení",
"description": "Konfigurovat chování importu"
},
"boardSelection": {
"title": "",
"description": "",
"title": "Nalezeno {count} ploch",
"description": "Vyberte všechny plochy s velikostmi, které chcete importovat",
"action": {
"selectAll": "",
"unselectAll": ""
"selectAll": "Vybrat vše",
"unselectAll": "Zrušit vybraní všeho"
}
},
"summary": {
"title": "",
"title": "Přehled importu",
"description": "",
"action": {
"import": ""
"import": "Potvrdit import a pokračovat"
},
"entities": {
"apps": "Aplikace",
"boards": "Plochy",
"integrations": "",
"integrations": "Integrace",
"credentialUsers": ""
}
},
"tokenModal": {
"title": "",
"title": "Zadejte token pro import",
"field": {
"token": {
"label": "Token",
@@ -57,14 +57,14 @@
},
"notification": {
"error": {
"title": "",
"message": ""
"title": "Neplatný token",
"message": "Token, který jste zadali je neplatný"
}
}
}
},
"user": {
"title": "",
"title": "Správce",
"subtitle": "",
"notification": {
"success": {
@@ -1213,11 +1213,11 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Vložte jakýkoli obsah z internetu. Některé webové stránky mohou omezit přístup.",
"option": {
"embedUrl": {
"label": "Embed URL"
"label": ""
},
"allowFullScreen": {
"label": "Povolit celou obrazovku"
@@ -1981,7 +1981,7 @@
},
"error": {
"noBoard": {
"title": "",
"title": "Vítejte v Homarru",
"description": "",
"link": "",
"notice": ""
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Nástroje",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Vytvořil/a"
@@ -2208,7 +2208,7 @@
"label": "Datum konce platnosti"
},
"token": {
"label": "Token"
"label": ""
}
}
}
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Nástroje",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
+43 -43
View File
@@ -41,8 +41,8 @@
"import": ""
},
"entities": {
"apps": "Apps",
"boards": "Boards",
"apps": "",
"boards": "",
"integrations": "",
"credentialUsers": ""
}
@@ -51,7 +51,7 @@
"title": "",
"field": {
"token": {
"label": "Token",
"label": "",
"description": ""
}
},
@@ -293,7 +293,7 @@
},
"permission": {
"admin": {
"title": "Admin",
"title": "",
"item": {
"admin": {
"label": "",
@@ -302,7 +302,7 @@
}
},
"app": {
"title": "Apps",
"title": "",
"item": {
"create": {
"label": "",
@@ -323,7 +323,7 @@
}
},
"board": {
"title": "Boards",
"title": "",
"item": {
"create": {
"label": "",
@@ -491,7 +491,7 @@
"app": {
"page": {
"list": {
"title": "Apps",
"title": "",
"noResults": {
"title": "",
"action": ""
@@ -1026,7 +1026,7 @@
"label": ""
},
"layout": {
"label": "Layout",
"label": "",
"option": {
"row": {
"label": "Horisontal"
@@ -1050,7 +1050,7 @@
"description": "",
"option": {
"layout": {
"label": "Layout",
"label": "",
"option": {
"row": {
"label": "Horisontal"
@@ -1083,7 +1083,7 @@
"description": "Kontroller PiHole eller AdGuard fra dit dashboard",
"option": {
"layout": {
"label": "Layout",
"label": "",
"option": {
"row": {
"label": "Horisontal"
@@ -1183,7 +1183,7 @@
"checkList": "Tjekliste",
"increaseIndent": "Forøg indrykning",
"decreaseIndent": "Formindsk indrykning",
"link": "Link",
"link": "",
"unlink": "Fjern link",
"image": "Integrer billede",
"addTable": "Tilføj tabel",
@@ -1432,11 +1432,11 @@
"option": {}
},
"video": {
"name": "Video Stream",
"name": "",
"description": "Indlejr en video stream eller video fra et kamera eller et website",
"option": {
"feedUrl": {
"label": "Feed URL"
"label": ""
},
"hasAutoPlay": {
"label": "Auto-afspilning",
@@ -1511,7 +1511,7 @@
"detailsTitle": ""
},
"downSpeed": {
"columnTitle": "Down",
"columnTitle": "",
"detailsTitle": "Download hastighed"
},
"index": {
@@ -1522,7 +1522,7 @@
"columnTitle": ""
},
"integration": {
"columnTitle": "Integration"
"columnTitle": ""
},
"name": {
"columnTitle": ""
@@ -1560,7 +1560,7 @@
"detailsTitle": ""
},
"upSpeed": {
"columnTitle": "Up",
"columnTitle": "",
"detailsTitle": ""
}
},
@@ -1635,7 +1635,7 @@
"available": "",
"tv": "TV-anmodninger",
"movie": "Film anmodninger",
"total": "Total"
"total": ""
},
"users": {
"main": "Topbrugere",
@@ -1685,7 +1685,7 @@
"empty": "Tom",
"table": {
"file": "Fil",
"eta": "ETA",
"eta": "",
"progress": "Fremskridt",
"transcode": "Transkod",
"healthCheck": ""
@@ -1766,7 +1766,7 @@
"invalidError": ""
},
"apps": {
"label": "Apps",
"label": "",
"avoidDuplicates": {
"label": "",
"description": ""
@@ -1907,7 +1907,7 @@
"unrecognizedLink": ""
},
"layout": {
"title": "Layout"
"title": ""
},
"background": {
"title": "Baggrund"
@@ -2026,8 +2026,8 @@
"navbar": {
"items": {
"home": "Hjem",
"boards": "Boards",
"apps": "Apps",
"boards": "",
"apps": "",
"integrations": "",
"searchEngies": "",
"medias": "",
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Værktøjer",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2064,15 +2064,15 @@
"page": {
"home": {
"statistic": {
"board": "Boards",
"board": "",
"user": "Brugere",
"invite": "Invitationer",
"integration": "",
"app": "Apps",
"app": "",
"group": ""
},
"statisticLabel": {
"boards": "Boards",
"boards": "",
"resources": "",
"authentication": "",
"authorization": ""
@@ -2139,7 +2139,7 @@
"title": "Sikkerhed"
},
"board": {
"title": "Boards"
"title": ""
}
},
"list": {
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Skaber"
@@ -2208,7 +2208,7 @@
"label": "Udløbsdato"
},
"token": {
"label": "Token"
"label": ""
}
}
}
@@ -2286,7 +2286,7 @@
}
},
"board": {
"title": "Boards",
"title": "",
"homeBoard": {
"label": "",
"description": ""
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2442,7 +2442,7 @@
}
},
"containerImage": {
"label": "Image"
"label": ""
},
"ports": {
"label": "Porte"
@@ -2450,7 +2450,7 @@
},
"action": {
"start": {
"label": "Start",
"label": "",
"notification": {
"success": {
"title": "",
@@ -2463,7 +2463,7 @@
}
},
"stop": {
"label": "Stop",
"label": "",
"notification": {
"success": {
"title": "",
@@ -2552,7 +2552,7 @@
"manage": {
"label": "Administrer",
"boards": {
"label": "Boards"
"label": ""
},
"integrations": {
"label": "",
@@ -2576,7 +2576,7 @@
"label": ""
},
"apps": {
"label": "Apps",
"label": "",
"new": {
"label": ""
},
@@ -2591,7 +2591,7 @@
},
"general": "Generelt",
"security": "Sikkerhed",
"board": "Boards",
"board": "",
"groups": {
"label": ""
},
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Værktøjer",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
@@ -2627,7 +2627,7 @@
"help": "",
"group": {
"app": {
"title": "Apps",
"title": "",
"children": {
"action": {
"open": {
@@ -2643,7 +2643,7 @@
}
},
"board": {
"title": "Boards",
"title": "",
"children": {
"action": {
"open": {
@@ -2749,7 +2749,7 @@
"description": ""
},
"torrent": {
"name": "Torrents",
"name": "",
"description": ""
},
"youTube": {
File diff suppressed because it is too large. Load diff
+9 -9
View File
@@ -51,7 +51,7 @@
"title": "",
"field": {
"token": {
"label": "Token",
"label": "",
"description": ""
}
},
@@ -124,7 +124,7 @@
},
"field": {
"email": {
"label": "E-Mail",
"label": "",
"verified": ""
},
"username": {
@@ -1678,7 +1678,7 @@
"savedSpace": "",
"healthChecks": "",
"videoCodecs": "Κωδικοποιητές",
"videoContainers": "Containers",
"videoContainers": "",
"videoResolutions": "Αναλύσεις"
},
"workers": {
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Εργαλεία",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2208,7 +2208,7 @@
"label": "Ημερομηνία λήξης"
},
"token": {
"label": "Token"
"label": ""
}
}
}
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2419,7 +2419,7 @@
}
},
"docker": {
"title": "Containers",
"title": "",
"table": {
"updated": "",
"search": "",
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Εργαλεία",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
+24 -24
View File
@@ -51,7 +51,7 @@
"title": "",
"field": {
"token": {
"label": "Token",
"label": "",
"description": ""
}
},
@@ -767,7 +767,7 @@
},
"common": {
"beta": "",
"error": "Error",
"error": "",
"action": {
"add": "Añadir",
"apply": "Aplicar",
@@ -1029,10 +1029,10 @@
"label": "Diseño",
"option": {
"row": {
"label": "Horizontal"
"label": ""
},
"column": {
"label": "Vertical"
"label": ""
},
"grid": {
"label": ""
@@ -1053,10 +1053,10 @@
"label": "Diseño",
"option": {
"row": {
"label": "Horizontal"
"label": ""
},
"column": {
"label": "Vertical"
"label": ""
},
"grid": {
"label": ""
@@ -1086,10 +1086,10 @@
"label": "Diseño",
"option": {
"row": {
"label": "Horizontal"
"label": ""
},
"column": {
"label": "Vertical"
"label": ""
},
"grid": {
"label": ""
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Incrusta cualquier contenido de Internet. Algunos sitios web pueden restringir el acceso.",
"option": {
"embedUrl": {
@@ -1532,7 +1532,7 @@
"detailsTitle": ""
},
"ratio": {
"columnTitle": "Ratio",
"columnTitle": "",
"detailsTitle": ""
},
"received": {
@@ -1635,7 +1635,7 @@
"available": "",
"tv": "Solicitudes de TV",
"movie": "Solicitudes de películas",
"total": "Total"
"total": ""
},
"users": {
"main": "Mejores usuarios",
@@ -1903,7 +1903,7 @@
"title": "",
"section": {
"general": {
"title": "General",
"title": "",
"unrecognizedLink": ""
},
"layout": {
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Herramientas",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2127,7 +2127,7 @@
"fieldsDisabledExternalProvider": "",
"setting": {
"general": {
"title": "General",
"title": "",
"item": {
"language": "",
"board": "",
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Creador"
@@ -2208,7 +2208,7 @@
"label": "Fecha de caducidad"
},
"token": {
"label": "Token"
"label": ""
}
}
}
@@ -2217,7 +2217,7 @@
"back": "",
"setting": {
"general": {
"title": "General",
"title": "",
"owner": "Propietario",
"ownerOfGroup": "",
"ownerOfGroupDeleted": ""
@@ -2316,7 +2316,7 @@
"status": {
"idle": "",
"running": "En ejecución",
"error": "Error"
"error": ""
},
"job": {
"iconsUpdater": {
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2589,7 +2589,7 @@
"create": {
"label": "Crear"
},
"general": "General",
"general": "",
"security": "Seguridad",
"board": "Tableros",
"groups": {
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Herramientas",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
@@ -2749,7 +2749,7 @@
"description": ""
},
"torrent": {
"name": "Torrents",
"name": "",
"description": ""
},
"youTube": {
+202 -202
View File
@@ -2,130 +2,130 @@
"init": {
"step": {
"start": {
"title": "",
"subtitle": "",
"description": "",
"title": "Bienvenue dans Homarr",
"subtitle": "Commençons par configurer votre instance Homarr.",
"description": "Pour commencer, veuillez selectionner comment vous souhaitez configurer votre instance Homarr.",
"action": {
"scratch": "",
"importOldmarr": ""
"scratch": "Partir de zéro",
"importOldmarr": "Importer à partir d'Homarr avant la 1.0"
}
},
"import": {
"title": "",
"subtitle": "",
"title": "Importer des données",
"subtitle": "Vous pouvez importer des données depuis une instance Homarr existante.",
"dropzone": {
"title": "",
"description": ""
"title": "Déposez le fichier zip ici ou cliquez pour naviguer",
"description": "Le zip téléchargé sera traité et vous pourrez sélectionner ce que vous voulez importer"
},
"fileInfo": {
"action": {
"change": ""
"change": "Changer le fichier"
}
},
"importSettings": {
"title": "",
"description": ""
"title": "Importer des paramètres",
"description": "Configurer le comportement d'importation"
},
"boardSelection": {
"title": "",
"description": "",
"title": "{count} tableaux trouvés",
"description": "Choisissez tous les tableaux avec la taille que vous souhaitez importer",
"action": {
"selectAll": "",
"unselectAll": ""
"selectAll": "Tout sélectionner",
"unselectAll": "Tout désélectionner"
}
},
"summary": {
"title": "",
"description": "",
"title": "Résumé de l'importation",
"description": "Dans le résumé ci-dessous vous pouvez voir ce qui va être importé",
"action": {
"import": ""
"import": "Confirmer l'importation et continuer"
},
"entities": {
"apps": "Applications",
"boards": "Tableaux de bord",
"integrations": "",
"integrations": "Intégrations",
"credentialUsers": ""
}
},
"tokenModal": {
"title": "",
"title": "Saisir le jeton d'importation",
"field": {
"token": {
"label": "Jeton",
"description": ""
"description": "Entrez le jeton d'importation de votre instance précédente"
}
},
"notification": {
"error": {
"title": "",
"message": ""
"title": "Jeton non valide",
"message": "Le jeton que vous avez saisi est invalide"
}
}
}
},
"user": {
"title": "",
"subtitle": "",
"title": "Administrateur",
"subtitle": "Spécifiez les informations d'identification pour votre compte d'administrateur.",
"notification": {
"success": {
"title": "",
"message": ""
"title": "Utilisateur créé",
"message": "L’utilisateur a été créé avec succès"
},
"error": {
"title": ""
"title": "La création de l'utilisateur a échoué"
}
}
},
"group": {
"title": "",
"title": "Groupe externe",
"subtitle": "",
"form": {
"name": {
"label": "",
"label": "Nom du groupe",
"description": ""
}
}
},
"settings": {
"title": "Paramètres",
"subtitle": ""
"subtitle": "Configurer les paramètres du serveur."
},
"finish": {
"title": "",
"subtitle": "",
"description": "",
"title": "Terminer la configuration",
"subtitle": "Vous êtes prêt !",
"description": "Vous avez terminé avec succès le processus d'installation. Vous pouvez maintenant commencer à utiliser Homarr. Sélectionnez votre prochaine action :",
"action": {
"goToBoard": "",
"createBoard": "",
"inviteUser": "",
"docs": ""
"inviteUser": "Inviter d'autres utilisateurs",
"docs": "Lire la documentation"
}
}
},
"backToStart": ""
"backToStart": "Retour au début"
},
"user": {
"title": "Utilisateurs",
"name": "Utilisateur",
"page": {
"login": {
"title": "",
"subtitle": ""
"title": "Connectez-vous à votre compte",
"subtitle": "Bon retour parmi nous ! Veuillez entrer vos identifiants"
},
"invite": {
"title": "",
"subtitle": "",
"description": ""
"title": "Rejoindre Homarr",
"subtitle": "Bienvenue sur Homarr! Veuillez créer votre compte",
"description": "Vous avez été invité par {username}"
},
"init": {
"title": "",
"subtitle": ""
"title": "Nouvelle installation Homarr",
"subtitle": "Veuillez créer l'utilisateur administrateur initial"
}
},
"field": {
"email": {
"label": "Courriel",
"verified": ""
"verified": "Vérifié"
},
"username": {
"label": "Nom d'utilisateur"
@@ -133,18 +133,18 @@
"password": {
"label": "Mot de passe",
"requirement": {
"length": "",
"length": "Contient au moins 8 caractères",
"lowercase": "Inclut une lettre minuscule",
"uppercase": "Inclut une lettre majuscule",
"number": "Inclut un nombre",
"special": ""
"special": "Contient un symbole spécial"
}
},
"passwordConfirm": {
"label": "Confirmation du mot de passe"
},
"previousPassword": {
"label": ""
"label": "Ancien mot de passe"
},
"homeBoard": {
"label": ""
@@ -154,25 +154,25 @@
}
},
"error": {
"usernameTaken": ""
"usernameTaken": "Nom d'utilisateur déjà utilisé"
},
"action": {
"login": {
"label": "Connexion",
"labelWith": "",
"labelWith": "Se connecter avec {provider}",
"notification": {
"success": {
"title": "",
"message": ""
"title": "Connexion réussie",
"message": "Vous êtes maintenant connecté"
},
"error": {
"title": "",
"title": "Échec de la connexion",
"message": ""
}
},
"forgotPassword": {
"label": "",
"description": ""
"label": "Mot de passe oublié?",
"description": "Un administrateur peut utiliser la commande suivante pour réinitialiser votre mot de passe :"
}
},
"register": {
@@ -184,19 +184,19 @@
},
"error": {
"title": "",
"message": ""
"message": "Votre compte n'a pas pu être créé"
}
}
},
"create": "Créer un utilisateur",
"changePassword": {
"label": "",
"label": "Changer le mot de passe",
"notification": {
"success": {
"message": ""
"message": "Mot de passe modifié avec succès"
},
"error": {
"message": ""
"message": "Modification du mot de passe impossible"
}
}
},
@@ -232,29 +232,29 @@
},
"manageAvatar": {
"changeImage": {
"label": "",
"label": "Modifier l’image",
"notification": {
"success": {
"message": ""
"message": "L'image a été modifiée avec succès"
},
"error": {
"message": ""
"message": "Impossible de modifier l'image"
},
"toLarge": {
"title": "",
"message": ""
"title": "L'image est trop volumineuse",
"message": "La taille maximale de l'image est {size}"
}
}
},
"removeImage": {
"label": "",
"confirm": "",
"label": "Retirer l'image",
"confirm": "Êtes-vous sûr de vouloir retirer cette image ?",
"notification": {
"success": {
"message": ""
"message": "Image retirée avec succès"
},
"error": {
"message": ""
"message": "Impossible de retirer l'image"
}
}
}
@@ -262,42 +262,42 @@
"editProfile": {
"notification": {
"success": {
"message": ""
"message": "Profil mis à jour avec succès"
},
"error": {
"message": ""
"message": "Impossible de mettre à jour le profil"
}
}
},
"delete": {
"label": "",
"description": "",
"confirm": ""
"label": "Supprimer définitivement l'utilisateur",
"description": "Supprime cet utilisateur ainsi que ses préférences. Ne supprimera aucun tableau. L'utilisateur ne sera pas averti.",
"confirm": "Êtes-vous sûr de vouloir supprimer l'utilisateur {username} ainsi que ses préférences ?"
},
"select": {
"label": "",
"notFound": ""
"label": "Sélectionner l'utilisateur",
"notFound": "Aucun utilisateur trouvé"
},
"transfer": {
"label": ""
"label": "Choisir un nouveau propriétaire"
}
}
},
"group": {
"title": "",
"name": "",
"search": "",
"title": "Groupes",
"name": "Groupe",
"search": "Trouver un groupe",
"field": {
"name": "Nom",
"members": ""
"members": "Membres"
},
"permission": {
"admin": {
"title": "Admin",
"item": {
"admin": {
"label": "",
"description": ""
"label": "Administrateur",
"description": "Les membres avec cette permission ont un accès complet à toutes les fonctionnalités et paramètres"
}
}
},
@@ -305,15 +305,15 @@
"title": "Applications",
"item": {
"create": {
"label": "",
"description": ""
"label": "Créer une app",
"description": "Autoriser les membres à créer des apps"
},
"use-all": {
"label": "",
"label": "Utiliser toutes les apps",
"description": ""
},
"modify-all": {
"label": "",
"label": "Modifier toutes les apps",
"description": ""
},
"full-all": {
@@ -344,11 +344,11 @@
}
},
"integration": {
"title": "",
"title": "Intégrations",
"item": {
"create": {
"label": "",
"description": ""
"label": "Créer des intégrations",
"description": "Autoriser les membres à créer des intégrations"
},
"use-all": {
"label": "",
@@ -365,37 +365,37 @@
}
},
"media": {
"title": "",
"title": "Médias",
"item": {
"upload": {
"label": "",
"description": ""
"label": "Téléverser des médias",
"description": "Autoriser les membres à téléverser des médias"
},
"view-all": {
"label": "",
"description": ""
"label": "Voir tous les médias",
"description": "Autoriser les membres à voir tous les médias"
},
"full-all": {
"label": "",
"description": ""
"label": "Accès complet aux médias",
"description": "Autoriser les membres à gérer et supprimer les médias"
}
}
},
"other": {
"title": "",
"title": "Autre",
"item": {
"view-logs": {
"label": "",
"description": ""
"label": "Voir les logs",
"description": "Autoriser les membres à voir les logs"
}
}
},
"search-engine": {
"title": "",
"title": "Moteurs de recherche",
"item": {
"create": {
"label": "",
"description": ""
"label": "Créer des moteurs de recherche",
"description": "Autoriser les membres à créer des moteurs de recherche"
},
"modify-all": {
"label": "",
@@ -413,62 +413,62 @@
"external": ""
},
"reservedNotice": {
"message": ""
"message": "Ce groupe est réservé pour l'utilisation du système et restreint certaines actions. <checkoutDocs></checkoutDocs>"
},
"action": {
"create": {
"label": "",
"label": "Nouveau groupe",
"notification": {
"success": {
"message": ""
"message": "Le groupe a été créé avec succès"
},
"error": {
"message": ""
"message": "Le groupe n'a pas pu être créé"
}
}
},
"transfer": {
"label": "",
"description": "",
"confirm": "",
"label": "Changer le propriétaire",
"description": "Transférer la propriété de ce groupe à un autre utilisateur.",
"confirm": "Êtes-vous sûr de vouloir transférer la propriété du groupe {name} à {username}?",
"notification": {
"success": {
"message": ""
"message": "Le groupe {group} a été transféré avec succès à {user}"
},
"error": {
"message": ""
"message": "Impossible de transférer la propriété"
}
}
},
"addMember": {
"label": ""
"label": "Ajouter un membre"
},
"removeMember": {
"label": "",
"confirm": ""
"label": "Retirer un membre",
"confirm": "Êtes-vous sûr de vouloir retirer {user} de ce groupe ?"
},
"delete": {
"label": "",
"description": "",
"confirm": "",
"label": "Supprimer le groupe",
"description": "Une fois que vous supprimez un groupe, il n'y a pas de retour en arrière possible. Soyez certain.",
"confirm": "Êtes-vous sûr de vouloir supprimer le groupe {name}?",
"notification": {
"success": {
"message": ""
"message": "Groupe {name} supprimé avec succès"
},
"error": {
"message": ""
"message": "Impossible de supprimer le groupe {name}"
}
}
},
"changePermissions": {
"notification": {
"success": {
"title": "",
"message": ""
"title": "Permissions sauvegardées",
"message": "Les permissions ont été sauvegardées avec succès"
},
"error": {
"title": "",
"message": ""
"title": "Permissions non sauvegardées",
"message": "Les permissions n'ont pas été sauvegardées"
}
}
},
@@ -483,8 +483,8 @@
}
},
"select": {
"label": "",
"notFound": ""
"label": "Sélectionner un groupe",
"notFound": "Aucun groupe trouvé"
}
}
},
@@ -493,16 +493,16 @@
"list": {
"title": "Applications",
"noResults": {
"title": "",
"action": ""
"title": "Il n'y a pas encore d'apps",
"action": "Créer votre première app"
}
},
"create": {
"title": "",
"title": "Nouvelle app",
"notification": {
"success": {
"title": "",
"message": ""
"title": "Créé avec succès",
"message": "L'application a bien été créée"
},
"error": {
"title": "",
@@ -518,17 +518,17 @@
"message": ""
},
"error": {
"title": "",
"title": "Impossible d'appliquer les changements",
"message": ""
}
}
},
"delete": {
"title": "",
"message": "",
"title": "Supprimer l'app",
"message": "Êtes-vous sûr de vouloir supprimer l'app {name}?",
"notification": {
"success": {
"title": "",
"title": "Suppression effectuée avec succès",
"message": ""
},
"error": {
@@ -543,23 +543,23 @@
"label": "Nom"
},
"description": {
"label": ""
"label": "Description"
},
"url": {
"label": ""
"label": "Url"
}
},
"action": {
"select": {
"label": "",
"notFound": ""
"label": "Sélectionner l'app",
"notFound": "Aucune app trouvée"
}
}
},
"integration": {
"page": {
"list": {
"title": "",
"title": "Intégrations",
"search": "",
"noResults": {
"title": ""
@@ -569,7 +569,7 @@
"title": "",
"notification": {
"success": {
"title": "",
"title": "Créé avec succès",
"message": ""
},
"error": {
@@ -611,37 +611,37 @@
"label": "Nom"
},
"url": {
"label": ""
"label": "Url"
}
},
"action": {
"create": ""
"create": "Nouvelle intégration"
},
"testConnection": {
"action": {
"create": "",
"edit": ""
"create": "Tester la connexion et créer",
"edit": "Tester la connexion et enregistrer"
},
"alertNotice": "",
"alertNotice": "Le bouton Enregistrer est activé une fois qu'une connexion est établie avec succès",
"notification": {
"success": {
"title": "",
"message": ""
"title": "Connexion réussie",
"message": "La connexion a été établie avec succès"
},
"invalidUrl": {
"title": "URL invalide",
"message": ""
"message": "L'URL est invalide."
},
"secretNotDefined": {
"title": "",
"message": ""
"title": "Identifiants manquants",
"message": "Les informations d'identification n'ont pas toutes été fournies"
},
"invalidCredentials": {
"title": "",
"message": ""
"title": "Informations d'identification incorrectes.",
"message": "Les informations d'identification ne sont pas valides"
},
"commonError": {
"title": "",
"title": "Échec de la connexion",
"message": ""
},
"badRequest": {
@@ -709,11 +709,11 @@
"kind": {
"username": {
"label": "Nom d'utilisateur",
"newLabel": ""
"newLabel": "Nouveau nom d'utilisateur"
},
"apiKey": {
"label": "",
"newLabel": ""
"label": "Clé API",
"newLabel": "Nouvelle clé API"
},
"password": {
"label": "Mot de passe",
@@ -761,12 +761,12 @@
}
},
"copy": {
"label": ""
"label": "Copier l'URL"
}
}
},
"common": {
"beta": "",
"beta": "Bêta",
"error": "Erreur",
"action": {
"add": "Ajouter",
@@ -774,7 +774,7 @@
"backToOverview": "",
"create": "Créer",
"edit": "Modifier",
"import": "",
"import": "Importer",
"insert": "Insérer",
"remove": "Supprimer",
"save": "Sauvegarder",
@@ -783,29 +783,29 @@
"delete": "Supprimer",
"discard": "",
"confirm": "Confirmer",
"continue": "",
"continue": "Continuer",
"previous": "Précédent",
"next": "Suivant",
"checkoutDocs": "",
"checkLogs": "",
"checkoutDocs": "Voir la documentation",
"checkLogs": "Vérifiez les logs pour plus de détails",
"tryAgain": "Réessayer",
"loading": ""
"loading": "Chargement"
},
"here": "",
"here": "ici",
"iconPicker": {
"label": "",
"header": ""
},
"colorScheme": {
"options": {
"light": "",
"dark": ""
"light": "Clair",
"dark": "Sombre"
}
},
"information": {
"min": "",
"max": "",
"days": "",
"min": "Min",
"max": "Max",
"days": "Jours",
"hours": "Heures",
"minutes": "Minutes"
},
@@ -832,7 +832,7 @@
},
"multiText": {
"placeholder": "",
"addLabel": ""
"addLabel": "Ajouter {value}"
},
"select": {
"placeholder": "",
@@ -842,11 +842,11 @@
},
"userAvatar": {
"menu": {
"switchToDarkMode": "",
"switchToLightMode": "",
"management": "",
"switchToDarkMode": "Activer le mode sombre",
"switchToLightMode": "Activer le mode clair",
"management": "Administration",
"preferences": "Vos préférences",
"logout": "",
"logout": "Se déconnecter",
"login": "Connexion",
"homeBoard": "",
"loggedOut": "",
@@ -992,7 +992,7 @@
},
"widget": {
"app": {
"name": "",
"name": "App",
"description": "",
"option": {
"appId": {
@@ -1113,7 +1113,7 @@
"processing": "",
"disconnected": "",
"hours": "Heures",
"minutes": "Minutes",
"minutes": "",
"unlimited": ""
}
},
@@ -1172,7 +1172,7 @@
"underline": "Souligner",
"colorText": "Colorer le texte",
"colorHighlight": "Surligner en couleur",
"code": "Code",
"code": "",
"clear": "Effacer la mise en forme",
"heading": "Titre {level}",
"align": "Aligner le texte : {position}",
@@ -1204,7 +1204,7 @@
},
"popover": {
"clearColor": "Enlever la couleur",
"source": "Source",
"source": "",
"widthPlaceholder": "Valeur en % ou en pixels",
"columns": "Colonnes",
"rows": "Lignes",
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Intégrer n'importe quel contenu à partir d'Internet. Certains sites Web peuvent restreindre l'accès.",
"option": {
"embedUrl": {
@@ -1532,7 +1532,7 @@
"detailsTitle": ""
},
"ratio": {
"columnTitle": "Ratio",
"columnTitle": "",
"detailsTitle": ""
},
"received": {
@@ -1635,7 +1635,7 @@
"available": "",
"tv": "Demandes de séries TV",
"movie": "Demandes de films",
"total": "Total"
"total": ""
},
"users": {
"main": "Principaux utilisateurs",
@@ -1677,7 +1677,7 @@
"filesCount": "",
"savedSpace": "",
"healthChecks": "",
"videoCodecs": "Codecs",
"videoCodecs": "",
"videoContainers": "Conteneurs",
"videoResolutions": "Résolutions"
},
@@ -1685,7 +1685,7 @@
"empty": "Vide",
"table": {
"file": "Fichier",
"eta": "ETA",
"eta": "",
"progress": "Progrès",
"transcode": "Transcodeur",
"healthCheck": ""
@@ -1892,7 +1892,7 @@
"label": "Nom"
},
"isPublic": {
"label": "Public",
"label": "",
"description": ""
}
},
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Outils",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2052,7 +2052,7 @@
"help": {
"label": "Aide",
"items": {
"documentation": "Documentation",
"documentation": "",
"submitIssue": "",
"discord": "Communauté Discord",
"sourceCode": ""
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Créateur"
@@ -2315,7 +2315,7 @@
"title": "",
"status": {
"idle": "",
"running": "Running",
"running": "",
"error": "Erreur"
},
"job": {
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2380,7 +2380,7 @@
},
"tab": {
"documentation": {
"label": "Documentation"
"label": ""
},
"apiKey": {
"label": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2433,7 +2433,7 @@
"label": "État",
"option": {
"created": "Créé",
"running": "Running",
"running": "",
"paused": "En pause",
"restarting": "Redémarrage en cours",
"exited": "",
@@ -2442,10 +2442,10 @@
}
},
"containerImage": {
"label": "Image"
"label": ""
},
"ports": {
"label": "Ports"
"label": ""
}
},
"action": {
@@ -2463,7 +2463,7 @@
}
},
"stop": {
"label": "Stop",
"label": "",
"notification": {
"success": {
"title": "",
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Outils",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
@@ -2676,8 +2676,8 @@
"title": "",
"option": {
"colorScheme": {
"light": "",
"dark": ""
"light": "Activer le mode clair",
"dark": "Activer le mode sombre"
},
"language": {
"label": "",
@@ -2749,7 +2749,7 @@
"description": ""
},
"torrent": {
"name": "Torrents",
"name": "",
"description": ""
},
"youTube": {
@@ -2769,7 +2769,7 @@
"title": "Aide",
"option": {
"documentation": {
"label": "Documentation"
"label": ""
},
"submitIssue": {
"label": ""
+212 -212
View File
@@ -93,39 +93,39 @@
"finish": {
"title": "סיים את ההגדרה",
"subtitle": "",
"description": "",
"description": "השלמת בהצלחה את תהליך ההגדרה. כעת תוכל להתחיל להשתמש ב-Homarr. בחר את הפעולה הבאה שלך:",
"action": {
"goToBoard": "",
"createBoard": "",
"inviteUser": "",
"docs": ""
"goToBoard": "עבור ללוח {name}",
"createBoard": "צור את הלוח הראשון שלך",
"inviteUser": "הזמן משתמשים אחרים",
"docs": "קרא את הדוקומנטציה"
}
}
},
"backToStart": ""
"backToStart": "חזרה להתחלה"
},
"user": {
"title": "משתמשים",
"name": "משתמש",
"page": {
"login": {
"title": "",
"subtitle": ""
"title": "היכנס לחשבון שלך",
"subtitle": "ברוך שובך! אנא הזן את שם המשתמש והסיסמה שלך"
},
"invite": {
"title": "",
"subtitle": "",
"description": ""
"title": "הצטרף ל- Homarr",
"subtitle": "ברוכים הבאים ל- Homarr! נא ליצור את החשבון שלך",
"description": "הוזמנת על ידי {username}"
},
"init": {
"title": "",
"subtitle": ""
"title": "התקנת Homarr חדשה",
"subtitle": "נא ליצור את משתמש המנהל הראשוני"
}
},
"field": {
"email": {
"label": "אימייל",
"verified": ""
"verified": "מאומת"
},
"username": {
"label": "שם משתמש"
@@ -133,46 +133,46 @@
"password": {
"label": "סיסמה",
"requirement": {
"length": "",
"length": "כולל לפחות 8 תווים",
"lowercase": "אפשר אותיות קטנות",
"uppercase": "אפשר אותיות גדולות",
"number": "אפשר מספרים",
"special": ""
"special": "כולל סמל מיוחד"
}
},
"passwordConfirm": {
"label": "אימות סיסמא"
},
"previousPassword": {
"label": ""
"label": "סיסמה קודמת"
},
"homeBoard": {
"label": ""
"label": "לוח בית"
},
"pingIconsEnabled": {
"label": ""
"label": "השתמש בסמלים עבור פינגים"
}
},
"error": {
"usernameTaken": ""
"usernameTaken": "שם המשתמש תפוס"
},
"action": {
"login": {
"label": "התחבר/י",
"labelWith": "",
"labelWith": "התחבר עם {provider}",
"notification": {
"success": {
"title": "",
"message": ""
"title": "התחברת בהצלחה",
"message": "אתה כעת מחובר"
},
"error": {
"title": "",
"message": ""
"title": "התחברות נכשלה",
"message": "הכניסה נכשלה"
}
},
"forgotPassword": {
"label": "",
"description": ""
"label": "שכחת את הסיסמה שלך?",
"description": "מנהל מערכת יכול להשתמש בפקודה הבאה כדי לאפס את הסיסמה שלך:"
}
},
"register": {
@@ -180,81 +180,81 @@
"notification": {
"success": {
"title": "החשבון נוצר",
"message": ""
"message": "אנא היכנס כדי להמשיך"
},
"error": {
"title": "",
"message": ""
"title": "יצירת החשבון נכשלה",
"message": "לא ניתן ליצור את החשבון שלך"
}
}
},
"create": "צור משתמש",
"changePassword": {
"label": "",
"label": "שינוי סיסמה",
"notification": {
"success": {
"message": ""
"message": "הסיסמה שונתה בהצלחה"
},
"error": {
"message": ""
"message": "לא ניתן לשנות סיסמה"
}
}
},
"changeHomeBoard": {
"notification": {
"success": {
"message": ""
"message": "לוח הבית השתנה בהצלחה"
},
"error": {
"message": ""
"message": "לא ניתן לשנות לוח בית"
}
}
},
"changeFirstDayOfWeek": {
"notification": {
"success": {
"message": ""
"message": "היום הראשון בשבוע השתנה בהצלחה"
},
"error": {
"message": ""
"message": "לא ניתן לשנות את היום הראשון בשבוע"
}
}
},
"changePingIconsEnabled": {
"notification": {
"success": {
"message": ""
"message": "סמלי פינג הוחלפו בהצלחה"
},
"error": {
"message": ""
"message": "לא ניתן לשנות את סמלי הפינג"
}
}
},
"manageAvatar": {
"changeImage": {
"label": "",
"label": "שנה תמונה",
"notification": {
"success": {
"message": ""
"message": "התמונה השתנתה בהצלחה"
},
"error": {
"message": ""
"message": "לא ניתן לשנות תמונה"
},
"toLarge": {
"title": "",
"message": ""
"title": "התמונה גדולה מדי",
"message": "גודל התמונה המרבי הוא {size}"
}
}
},
"removeImage": {
"label": "",
"confirm": "",
"label": "הסר תמונה",
"confirm": "האם אתה בטוח שברצונך להסיר את התמונה?",
"notification": {
"success": {
"message": ""
"message": "התמונה הוסרה בהצלחה"
},
"error": {
"message": ""
"message": "לא ניתן להסיר תמונה"
}
}
}
@@ -262,42 +262,42 @@
"editProfile": {
"notification": {
"success": {
"message": ""
"message": "הפרופיל עודכן בהצלחה"
},
"error": {
"message": ""
"message": "לא ניתן לעדכן את הפרופיל"
}
}
},
"delete": {
"label": "",
"description": "",
"confirm": ""
"label": "מחק משתמש לצמיתות",
"description": "מוחק משתמש זה כולל העדפותיו. לא ימחק אף לוח. המשתמש לא יקבל הודעה.",
"confirm": "האם אתה בטוח שאתה רוצה למחוק את המשתמש {username} עם ההעדפות שלו?"
},
"select": {
"label": "",
"notFound": ""
"label": "בחר משתמש",
"notFound": "לא נמצא משתמש"
},
"transfer": {
"label": ""
"label": "בחר בעלים חדש"
}
}
},
"group": {
"title": "",
"name": "",
"search": "",
"title": "קבוצות",
"name": "קבוצה",
"search": "מצא קבוצה",
"field": {
"name": "שם",
"members": ""
"members": "חברים"
},
"permission": {
"admin": {
"title": "מנהל מערכת",
"item": {
"admin": {
"label": "",
"description": ""
"label": "מנהל",
"description": "לחברים עם הרשאה זו יש גישה מלאה לכל התכונות וההגדרות"
}
}
},
@@ -305,20 +305,20 @@
"title": "אפליקציות",
"item": {
"create": {
"label": "",
"description": ""
"label": "יצירת אפליקציות",
"description": "מאפשר לחברים ליצור אפליקציות"
},
"use-all": {
"label": "",
"description": ""
"label": "שימוש בכל האפליקציות",
"description": "מאפשר לחברים להוסיף כל אפליקציות ללוחות שלהם"
},
"modify-all": {
"label": "",
"description": ""
"label": "משנה את כל האפליקציות",
"description": "מאפשר לחברים לשנות את כל האפליקציות"
},
"full-all": {
"label": "",
"description": ""
"label": "גישה מלאה לאפליקציה",
"description": "מאפשר לחברים לנהל, להשתמש ולמחוק כל אפליקציה"
}
}
},
@@ -326,20 +326,20 @@
"title": "לוחות",
"item": {
"create": {
"label": "",
"description": ""
"label": "יצירת לוחות",
"description": "מאפשר לחברים ליצור לוחות"
},
"view-all": {
"label": "",
"description": ""
"label": "הצגת כל הלוחות",
"description": "מאפשר לחברים לצפות בכל הלוחות"
},
"modify-all": {
"label": "",
"description": ""
"label": "משנה את כל הלוחות",
"description": "מאפשר לחברים לשנות את כל הלוחות (לא כולל בקרת גישה ואזור סכנה)"
},
"full-all": {
"label": "",
"description": ""
"label": "גישה מלאה ללוח",
"description": "אפשר לחברים להציג, לשנות ולמחוק את כל הלוחות (כולל בקרת גישה ואזור סכנה)"
}
}
},
@@ -347,144 +347,144 @@
"title": "אינטגרציות",
"item": {
"create": {
"label": "",
"description": ""
"label": "יצירת אינטגרציות",
"description": "אפשר לחברים ליצור אינטגרציות"
},
"use-all": {
"label": "",
"description": ""
"label": "שימוש בכל האינטגרציות",
"description": "מאפשר לחברים להוסיף כל אינטגרציה ללוחות שלהם"
},
"interact-all": {
"label": "",
"description": ""
"label": "אינטראקציה עם כל אינטגרציה",
"description": "אפשר לחברים לקיים אינטראקציה עם כל אינטגרציה"
},
"full-all": {
"label": "",
"description": ""
"label": "גישת אינטגרציה מלאה",
"description": "אפשר לחברים לנהל, להשתמש ולקיים אינטראקציה עם כל אינטגרציה"
}
}
},
"media": {
"title": "",
"title": "מדיה",
"item": {
"upload": {
"label": "",
"description": ""
"label": "העלה מדיה",
"description": "אפשר לחברים להעלות מדיה"
},
"view-all": {
"label": "",
"description": ""
"label": "הצג את כל המדיה",
"description": "אפשר לחברים להציג את כל המדיה"
},
"full-all": {
"label": "",
"description": ""
"label": "גישה מלאה למדיה",
"description": "אפשר לחברים לנהל ולמחוק כל מדיה"
}
}
},
"other": {
"title": "",
"title": "אחר",
"item": {
"view-logs": {
"label": "",
"description": ""
"label": "הצג לוגים",
"description": "אפשר לחברים לצפות בלוגים"
}
}
},
"search-engine": {
"title": "",
"title": "מנועי חיפוש",
"item": {
"create": {
"label": "",
"description": ""
"label": "צור מנועי חיפוש",
"description": "אפשר לחברים ליצור מנועי חיפוש"
},
"modify-all": {
"label": "",
"description": ""
"label": "שנה את כל מנועי החיפוש",
"description": "אפשר לחברים לשנות את כל מנועי החיפוש"
},
"full-all": {
"label": "",
"description": ""
"label": "גישה מלאה למנועי חיפוש",
"description": "אפשר לחברים לנהל ולמחוק כל מנוע חיפוש"
}
}
}
},
"memberNotice": {
"mixed": "",
"external": ""
"mixed": "חלק מהחברים הם מספקים חיצוניים ולא ניתן לנהל אותם כאן",
"external": "כל החברים הם מספקים חיצוניים ולא ניתן לנהל אותם כאן"
},
"reservedNotice": {
"message": ""
"message": "קבוצה זו שמורה לשימוש במערכת ומגבילה חלק מהפעולות. <checkoutDocs></checkoutDocs>"
},
"action": {
"create": {
"label": "",
"label": "קבוצה חדשה",
"notification": {
"success": {
"message": ""
"message": "הקבוצה נוצרה בהצלחה"
},
"error": {
"message": ""
"message": "לא ניתן ליצור את הקבוצה"
}
}
},
"transfer": {
"label": "",
"description": "",
"confirm": "",
"label": "העברת בעלות",
"description": "העבר את הבעלות על הקבוצה הזו למשתמש אחר.",
"confirm": "האם אתה בטוח שברצונך להעביר בעלות על הקבוצה {name} ל- {username}?",
"notification": {
"success": {
"message": ""
"message": "הקבוצה {group} הועברה בהצלחה ל {user}"
},
"error": {
"message": ""
"message": "לא ניתן להעביר בעלות"
}
}
},
"addMember": {
"label": ""
"label": "הוסף חבר"
},
"removeMember": {
"label": "",
"confirm": ""
"label": "הסר חבר",
"confirm": "האם אתה בטוח שברצונך להסיר את {user} מהקבוצה הזו?"
},
"delete": {
"label": "",
"label": "מחק קבוצה",
"description": "",
"confirm": "",
"confirm": "האם אתה בטוח שברצונך למחוק את הקבוצה {name}?",
"notification": {
"success": {
"message": ""
"message": "הקבוצה {name} נמחקה בהצלחה"
},
"error": {
"message": ""
"message": "לא ניתן למחוק את הקבוצה {name}"
}
}
},
"changePermissions": {
"notification": {
"success": {
"title": "",
"message": ""
"title": "ההרשאות נשמרו",
"message": "ההרשאות נשמרו בהצלחה"
},
"error": {
"title": "",
"message": ""
"title": "ההרשאות לא נשמרו",
"message": "ההרשאות לא נשמרו"
}
}
},
"update": {
"notification": {
"success": {
"message": ""
"message": "הקבוצה {name} נשמרה בהצלחה"
},
"error": {
"message": ""
"message": "לא ניתן לשמור את הקבוצה {name}"
}
}
},
"select": {
"label": "",
"notFound": ""
"label": "בחר קבוצה",
"notFound": "לא נמצאה קבוצה"
}
}
},
@@ -493,47 +493,47 @@
"list": {
"title": "אפליקציות",
"noResults": {
"title": "",
"action": ""
"title": "עדיין אין אפליקציות",
"action": "צור את האפליקציה הראשונה שלך"
}
},
"create": {
"title": "",
"title": "אפליקציה חדשה",
"notification": {
"success": {
"title": "",
"message": ""
"title": "היצירה הצליחה",
"message": "האפליקציה נוצרה בהצלחה"
},
"error": {
"title": "",
"message": ""
"title": "היצירה נכשלה",
"message": "לא ניתן ליצור את האפליקציה"
}
}
},
"edit": {
"title": "",
"title": "ערוך אפליקציה",
"notification": {
"success": {
"title": "",
"message": ""
"title": "השינויים הוחלו בהצלחה",
"message": "האפליקציה נשמרה בהצלחה"
},
"error": {
"title": "",
"message": ""
"title": "לא ניתן להחיל שינויים",
"message": "לא ניתן היה לשמור את האפליקציה"
}
}
},
"delete": {
"title": "",
"message": "",
"title": "מחק אפליקציה",
"message": "האם אתה בטוח שברצונך למחוק את האפליקציה {name}?",
"notification": {
"success": {
"title": "",
"message": ""
"title": "המחיקה הצליחה",
"message": "האפליקציה נמחקה בהצלחה"
},
"error": {
"title": "",
"message": ""
"title": "המחיקה נכשלה",
"message": "לא ניתן למחוק את האפליקציה"
}
}
}
@@ -543,16 +543,16 @@
"label": "שם"
},
"description": {
"label": ""
"label": "תיאור"
},
"url": {
"label": ""
"label": "כתובת אתר"
}
},
"action": {
"select": {
"label": "",
"notFound": ""
"label": "בחר אפליקציה",
"notFound": "לא נמצאה אפליקציה"
}
}
},
@@ -560,48 +560,48 @@
"page": {
"list": {
"title": "אינטגרציות",
"search": "",
"search": "חיפוש אינטגרציות",
"noResults": {
"title": ""
"title": "עדיין אין אינטגרציות"
}
},
"create": {
"title": "",
"title": "אינטגרציה {name} חדשה",
"notification": {
"success": {
"title": "",
"message": ""
"title": "היצירה הצליחה",
"message": "האינטגרציה נוצרה בהצלחה"
},
"error": {
"title": "",
"message": ""
"title": "היצירה נכשלה",
"message": "לא ניתן ליצור את האינטגרציה"
}
}
},
"edit": {
"title": "",
"title": "ערוך אינטגרציה {name}",
"notification": {
"success": {
"title": "",
"message": ""
"title": "השינויים הוחלו בהצלחה",
"message": "האינטגרציה נשמרה בהצלחה"
},
"error": {
"title": "",
"message": ""
"title": "לא ניתן להחיל שינויים",
"message": "לא ניתן היה לשמור את האינטגרציה"
}
}
},
"delete": {
"title": "",
"message": "",
"title": "מחק אינטגרציה",
"message": "האם אתה בטוח שברצונך למחוק את האינטגרציה {name}?",
"notification": {
"success": {
"title": "",
"message": ""
"title": "המחיקה הצליחה",
"message": "האינטגרציה נמחקה בהצלחה"
},
"error": {
"title": "",
"message": ""
"title": "המחיקה נכשלה",
"message": "לא ניתן למחוק את האינטגרציה"
}
}
}
@@ -611,29 +611,29 @@
"label": "שם"
},
"url": {
"label": ""
"label": "כתובת אתר"
}
},
"action": {
"create": ""
"create": "אינטגרציה חדשה"
},
"testConnection": {
"action": {
"create": "",
"edit": ""
"create": "בדוק חיבור וצור",
"edit": "בדוק את החיבור ושמור"
},
"alertNotice": "",
"alertNotice": "הלחצן שמור מופעל לאחר יצירת חיבור מוצלח",
"notification": {
"success": {
"title": "",
"message": ""
"title": "החיבור הצליח",
"message": "החיבור נוצר בהצלחה"
},
"invalidUrl": {
"title": "קישור לא תקין",
"message": ""
"message": "כתובת האתר אינה חוקית"
},
"secretNotDefined": {
"title": "",
"title": "חסרים פרטי התחברות",
"message": ""
},
"invalidCredentials": {
@@ -724,11 +724,11 @@
"permission": {
"use": "",
"interact": "",
"full": ""
"full": "גישת אינטגרציה מלאה"
}
},
"media": {
"plural": "",
"plural": "מדיה",
"search": "",
"field": {
"name": "שם",
@@ -811,16 +811,16 @@
},
"notification": {
"create": {
"success": "",
"error": ""
"success": "היצירה הצליחה",
"error": "היצירה נכשלה"
},
"delete": {
"success": "",
"error": ""
"success": "המחיקה הצליחה",
"error": "המחיקה נכשלה"
},
"update": {
"success": "",
"error": ""
"success": "השינויים הוחלו בהצלחה",
"error": "לא ניתן להחיל שינויים"
},
"transfer": {
"success": "",
@@ -1422,7 +1422,7 @@
"description": ""
},
"app": {
"noData": "",
"noData": "לא נמצאה אפליקציה",
"description": ""
},
"error": {
@@ -1735,11 +1735,11 @@
"edit": {
"notification": {
"success": {
"title": "",
"title": "השינויים הוחלו בהצלחה",
"message": ""
},
"error": {
"title": "",
"title": "לא ניתן להחיל שינויים",
"message": ""
}
},
@@ -1983,13 +1983,13 @@
"noBoard": {
"title": "ברוכים הבאים ל- Homarr",
"description": "",
"link": "",
"link": "צור את הלוח הראשון שלך",
"notice": ""
},
"notFound": {
"title": "",
"description": "",
"link": "",
"link": "הצגת כל הלוחות",
"notice": ""
},
"homeBoard": {
@@ -2029,14 +2029,14 @@
"boards": "לוחות",
"apps": "אפליקציות",
"integrations": "אינטגרציות",
"searchEngies": "",
"medias": "",
"searchEngies": "מנועי חיפוש",
"medias": "מדיה",
"users": {
"label": "משתמשים",
"items": {
"manage": "ניהול",
"invites": "הזמנות",
"groups": ""
"groups": "קבוצות"
}
},
"tools": {
@@ -2069,7 +2069,7 @@
"invite": "הזמנות",
"integration": "אינטגרציות",
"app": "אפליקציות",
"group": ""
"group": "קבוצות"
},
"statisticLabel": {
"boards": "לוחות",
@@ -2130,7 +2130,7 @@
"title": "כללי",
"item": {
"language": "",
"board": "",
"board": "לוח בית",
"firstDayOfWeek": "היום הראשון בשבוע",
"accessibility": "נגישות"
}
@@ -2160,7 +2160,7 @@
"label": "אבטחה"
},
"groups": {
"label": "",
"label": "קבוצות",
"title": "",
"description": ""
},
@@ -2223,7 +2223,7 @@
"ownerOfGroupDeleted": ""
},
"members": {
"title": "",
"title": "חברים",
"search": "",
"notFound": ""
},
@@ -2529,7 +2529,7 @@
},
"tab": {
"user": "משתמשים",
"group": "",
"group": "קבוצות",
"inherited": ""
},
"field": {
@@ -2537,7 +2537,7 @@
"label": "משתמש"
},
"group": {
"label": ""
"label": "קבוצה"
},
"permission": {
"label": ""
@@ -2564,7 +2564,7 @@
}
},
"search-engines": {
"label": "",
"label": "מנועי חיפוש",
"new": {
"label": ""
},
@@ -2573,7 +2573,7 @@
}
},
"medias": {
"label": ""
"label": "מדיה"
},
"apps": {
"label": "אפליקציות",
@@ -2593,7 +2593,7 @@
"security": "אבטחה",
"board": "לוחות",
"groups": {
"label": ""
"label": "קבוצות"
},
"invites": {
"label": "הזמנות"
@@ -2634,7 +2634,7 @@
"label": ""
},
"edit": {
"label": ""
"label": "ערוך אפליקציה"
}
},
"detail": {
@@ -2721,7 +2721,7 @@
"help": "",
"group": {
"searchEngine": {
"title": "",
"title": "מנועי חיפוש",
"children": {
"action": {
"search": {
@@ -2828,7 +2828,7 @@
"label": ""
},
"manageLog": {
"label": ""
"label": "הצג לוגים"
},
"manageTask": {
"label": ""
@@ -2840,7 +2840,7 @@
"label": "אודות"
},
"homeBoard": {
"label": ""
"label": "לוח בית"
},
"preferences": {
"label": "העדפות שלך"
@@ -2866,7 +2866,7 @@
}
},
"group": {
"title": "",
"title": "קבוצות",
"children": {
"action": {
"detail": {
@@ -2900,12 +2900,12 @@
"label": ""
},
"description": {
"label": ""
"label": "תיאור"
}
},
"page": {
"list": {
"title": "",
"title": "מנועי חיפוש",
"noResults": {
"title": "",
"action": ""
@@ -2929,11 +2929,11 @@
"title": "",
"notification": {
"success": {
"title": "",
"title": "השינויים הוחלו בהצלחה",
"message": ""
},
"error": {
"title": "",
"title": "לא ניתן להחיל שינויים",
"message": ""
}
},
+5 -5
View File
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Ugradite bilo koji sadržaj s interneta. Neke web stranice mogu ograničiti pristup.",
"option": {
"embedUrl": {
@@ -1432,7 +1432,7 @@
"option": {}
},
"video": {
"name": "Video Stream",
"name": "",
"description": "Ugradi video stream ili video sa kamere i/ili web stranice",
"option": {
"feedUrl": {
@@ -1685,7 +1685,7 @@
"empty": "Isprazni",
"table": {
"file": "",
"eta": "ETA",
"eta": "",
"progress": "Napredak",
"transcode": "",
"healthCheck": ""
@@ -2042,7 +2042,7 @@
"tools": {
"label": "Alati",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "",
"tasks": ""
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Alati",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+10 -10
View File
@@ -1685,7 +1685,7 @@
"empty": "空",
"table": {
"file": "ファイル",
"eta": "ETA",
"eta": "",
"progress": "進捗状況",
"transcode": "トランスコード",
"healthCheck": ""
@@ -2042,9 +2042,9 @@
"tools": {
"label": "ツール",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2058,7 +2058,7 @@
"sourceCode": ""
}
},
"about": "About"
"about": ""
}
},
"page": {
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "クリエイター"
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2602,7 +2602,7 @@
"tools": {
"label": "ツール",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
@@ -2612,7 +2612,7 @@
"label": "設定"
},
"about": {
"label": "About"
"label": ""
}
}
},
@@ -2837,7 +2837,7 @@
"label": ""
},
"about": {
"label": "About"
"label": ""
},
"homeBoard": {
"label": ""
+8 -8
View File
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "인터넷에서 콘텐츠를 퍼옵니다. 일부 웹사이트는 액세스를 제한할 수 있습니다.",
"option": {
"embedUrl": {
@@ -1783,9 +1783,9 @@
"label": "",
"description": "",
"option": {
"sm": "Small",
"md": "Medium",
"lg": "Large"
"sm": "",
"md": "",
"lg": ""
}
},
"sidebarBehavior": {
@@ -2042,7 +2042,7 @@
"tools": {
"label": "도구",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "",
"tasks": ""
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "크리에이터"
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2602,7 +2602,7 @@
"tools": {
"label": "도구",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
+7 -7
View File
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Įterpkite bet kokį turinį iš interneto. Kai kuriose svetainėse prieiga gali būti ribojama.",
"option": {
"embedUrl": {
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Įrankiai",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Kūrėjas"
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Įrankiai",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
+11 -11
View File
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Iegult jebkuru saturu no interneta. Dažas vietnes var ierobežot piekļuvi.",
"option": {
"embedUrl": {
@@ -1528,7 +1528,7 @@
"columnTitle": ""
},
"progress": {
"columnTitle": "Progress",
"columnTitle": "",
"detailsTitle": ""
},
"ratio": {
@@ -1685,8 +1685,8 @@
"empty": "Tukšs",
"table": {
"file": "",
"eta": "ETA",
"progress": "Progress",
"eta": "",
"progress": "",
"transcode": "",
"healthCheck": ""
}
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Rīki",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Izveidotājs"
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2445,7 +2445,7 @@
"label": "Attēls"
},
"ports": {
"label": "Ports"
"label": ""
}
},
"action": {
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Rīki",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
+36 -36
View File
@@ -41,7 +41,7 @@
"import": ""
},
"entities": {
"apps": "Apps",
"apps": "",
"boards": "Borden",
"integrations": "",
"credentialUsers": ""
@@ -302,7 +302,7 @@
}
},
"app": {
"title": "Apps",
"title": "",
"item": {
"create": {
"label": "",
@@ -491,7 +491,7 @@
"app": {
"page": {
"list": {
"title": "Apps",
"title": "",
"noResults": {
"title": "",
"action": ""
@@ -1172,7 +1172,7 @@
"underline": "Onderstreept",
"colorText": "Kleur tekst",
"colorHighlight": "Gekleurde tekst markeren",
"code": "Code",
"code": "",
"clear": "Opmaak wissen",
"heading": "Koptekst {level}",
"align": "Tekst uitlijnen: {position}",
@@ -1183,7 +1183,7 @@
"checkList": "Controlelijst",
"increaseIndent": "Inspringen vergroten",
"decreaseIndent": "Inspringen verminderen",
"link": "Link",
"link": "",
"unlink": "Link verwijderen",
"image": "Afbeelding insluiten",
"addTable": "Tabel toevoegen",
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Insluiten van alle inhoud van het internet. Sommige websites kunnen de toegang beperken.",
"option": {
"embedUrl": {
@@ -1287,7 +1287,7 @@
"description": "",
"option": {
"releaseType": {
"label": "Radarr release type",
"label": "",
"options": {
"inCinemas": "",
"digitalRelease": "",
@@ -1436,7 +1436,7 @@
"description": "Een videostream of video van een camera of een website insluiten",
"option": {
"feedUrl": {
"label": "Feed URL"
"label": ""
},
"hasAutoPlay": {
"label": "Automatisch afspelen",
@@ -1511,7 +1511,7 @@
"detailsTitle": ""
},
"downSpeed": {
"columnTitle": "Down",
"columnTitle": "",
"detailsTitle": "Downloadsnelheid"
},
"index": {
@@ -1560,7 +1560,7 @@
"detailsTitle": ""
},
"upSpeed": {
"columnTitle": "Up",
"columnTitle": "",
"detailsTitle": ""
}
},
@@ -1655,7 +1655,7 @@
}
},
"tab": {
"workers": "Workers",
"workers": "",
"queue": "Wachtrij",
"statistics": "Statistieken"
},
@@ -1671,21 +1671,21 @@
"panel": {
"statistics": {
"empty": "Leeg",
"transcodes": "Transcodes",
"transcodes": "",
"transcodesCount": "",
"healthChecksCount": "",
"filesCount": "",
"savedSpace": "",
"healthChecks": "",
"videoCodecs": "Codecs",
"videoContainers": "Containers",
"videoCodecs": "",
"videoContainers": "",
"videoResolutions": "Resoluties"
},
"workers": {
"empty": "Leeg",
"table": {
"file": "Bestand",
"eta": "ETA",
"eta": "",
"progress": "Voortgang",
"transcode": "Transcoderen",
"healthCheck": ""
@@ -1766,7 +1766,7 @@
"invalidError": ""
},
"apps": {
"label": "Apps",
"label": "",
"avoidDuplicates": {
"label": "",
"description": ""
@@ -2025,9 +2025,9 @@
},
"navbar": {
"items": {
"home": "Home",
"home": "",
"boards": "Borden",
"apps": "Apps",
"apps": "",
"integrations": "",
"searchEngies": "",
"medias": "",
@@ -2042,19 +2042,19 @@
"tools": {
"label": "Gereedschappen",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
"settings": "Instellingen",
"help": {
"label": "Help",
"label": "",
"items": {
"documentation": "Documentatie",
"submitIssue": "",
"discord": "Community Discord",
"discord": "",
"sourceCode": ""
}
},
@@ -2068,7 +2068,7 @@
"user": "Gebruikers",
"invite": "Uitnodigingen",
"integration": "",
"app": "Apps",
"app": "",
"group": ""
},
"statisticLabel": {
@@ -2093,7 +2093,7 @@
"setHomeBoard": {
"label": "",
"badge": {
"label": "Home",
"label": "",
"tooltip": ""
}
},
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Maker"
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2419,7 +2419,7 @@
}
},
"docker": {
"title": "Containers",
"title": "",
"table": {
"updated": "",
"search": "",
@@ -2450,7 +2450,7 @@
},
"action": {
"start": {
"label": "Start",
"label": "",
"notification": {
"success": {
"title": "",
@@ -2463,7 +2463,7 @@
}
},
"stop": {
"label": "Stop",
"label": "",
"notification": {
"success": {
"title": "",
@@ -2576,7 +2576,7 @@
"label": ""
},
"apps": {
"label": "Apps",
"label": "",
"new": {
"label": ""
},
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Gereedschappen",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
@@ -2627,7 +2627,7 @@
"help": "",
"group": {
"app": {
"title": "Apps",
"title": "",
"children": {
"action": {
"open": {
@@ -2749,7 +2749,7 @@
"description": ""
},
"torrent": {
"name": "Torrents",
"name": "",
"description": ""
},
"youTube": {
@@ -2766,7 +2766,7 @@
"title": ""
},
"help": {
"title": "Help",
"title": "",
"option": {
"documentation": {
"label": "Documentatie"
@@ -2775,7 +2775,7 @@
"label": ""
},
"discord": {
"label": "Community Discord"
"label": ""
}
}
}
+14 -14
View File
@@ -51,7 +51,7 @@
"title": "",
"field": {
"token": {
"label": "Token",
"label": "",
"description": ""
}
},
@@ -1183,7 +1183,7 @@
"checkList": "Sjekkliste",
"increaseIndent": "Øk innrykk",
"decreaseIndent": "Reduser innrykk",
"link": "Link",
"link": "",
"unlink": "Fjern lenke",
"image": "Bygg inn bilde",
"addTable": "Legg til tabell",
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Bygg inn innhold fra Internett. Noen nettsteder kan begrense adgang.",
"option": {
"embedUrl": {
@@ -1436,7 +1436,7 @@
"description": "Bygg inn en videostrøm eller video fra et kamera eller et nettsted",
"option": {
"feedUrl": {
"label": "Feed URL"
"label": ""
},
"hasAutoPlay": {
"label": "Autospill",
@@ -1784,7 +1784,7 @@
"description": "",
"option": {
"sm": "Liten",
"md": "Medium",
"md": "",
"lg": "Stor"
}
},
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Verktøy",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Skaper"
@@ -2208,7 +2208,7 @@
"label": "Utløpsdato"
},
"token": {
"label": "Token"
"label": ""
}
}
}
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2442,7 +2442,7 @@
}
},
"containerImage": {
"label": "Image"
"label": ""
},
"ports": {
"label": "Porter"
@@ -2450,7 +2450,7 @@
},
"action": {
"start": {
"label": "Start",
"label": "",
"notification": {
"success": {
"title": "",
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Verktøy",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
+11 -11
View File
@@ -51,7 +51,7 @@
"title": "",
"field": {
"token": {
"label": "Token",
"label": "",
"description": ""
}
},
@@ -293,7 +293,7 @@
},
"permission": {
"admin": {
"title": "Admin",
"title": "",
"item": {
"admin": {
"label": "",
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Osadzaj dowolne treści z internetu. Niektóre strony internetowe mogą ograniczać dostęp.",
"option": {
"embedUrl": {
@@ -1685,7 +1685,7 @@
"empty": "Puste",
"table": {
"file": "",
"eta": "ETA",
"eta": "",
"progress": "Postęp",
"transcode": "",
"healthCheck": ""
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Narzędzia",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Twórca"
@@ -2208,7 +2208,7 @@
"label": "Wygasa"
},
"token": {
"label": "Token"
"label": ""
}
}
}
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Narzędzia",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
+22 -22
View File
@@ -51,7 +51,7 @@
"title": "",
"field": {
"token": {
"label": "Token",
"label": "",
"description": ""
}
},
@@ -1026,13 +1026,13 @@
"label": ""
},
"layout": {
"label": "Layout",
"label": "",
"option": {
"row": {
"label": "Horizontal"
"label": ""
},
"column": {
"label": "Vertical"
"label": ""
},
"grid": {
"label": ""
@@ -1050,13 +1050,13 @@
"description": "",
"option": {
"layout": {
"label": "Layout",
"label": "",
"option": {
"row": {
"label": "Horizontal"
"label": ""
},
"column": {
"label": "Vertical"
"label": ""
},
"grid": {
"label": ""
@@ -1083,13 +1083,13 @@
"description": "Controle o PiHole ou o AdGuard em seu painel de controle",
"option": {
"layout": {
"label": "Layout",
"label": "",
"option": {
"row": {
"label": "Horizontal"
"label": ""
},
"column": {
"label": "Vertical"
"label": ""
},
"grid": {
"label": ""
@@ -1183,7 +1183,7 @@
"checkList": "Lista de verificação",
"increaseIndent": "Aumentar recuo",
"decreaseIndent": "Diminuir recuo",
"link": "Link",
"link": "",
"unlink": "Remover link",
"image": "Incorporar imagem",
"addTable": "Adicionar tabela",
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Incorporar qualquer conteúdo da internet. Alguns sites podem restringir o acesso.",
"option": {
"embedUrl": {
@@ -1635,7 +1635,7 @@
"available": "",
"tv": "Solicitações de TV",
"movie": "Solicitações de filmes",
"total": "Total"
"total": ""
},
"users": {
"main": "Principais usuários",
@@ -1677,7 +1677,7 @@
"filesCount": "",
"savedSpace": "",
"healthChecks": "",
"videoCodecs": "Codecs",
"videoCodecs": "",
"videoContainers": "",
"videoResolutions": ""
},
@@ -1907,7 +1907,7 @@
"unrecognizedLink": ""
},
"layout": {
"title": "Layout"
"title": ""
},
"background": {
"title": "Antecedentes"
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Ferramentas",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Criador"
@@ -2208,7 +2208,7 @@
"label": "Data de expiração"
},
"token": {
"label": "Token"
"label": ""
}
}
}
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Ferramentas",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
+22 -22
View File
@@ -51,7 +51,7 @@
"title": "",
"field": {
"token": {
"label": "Token",
"label": "",
"description": ""
}
},
@@ -733,7 +733,7 @@
"field": {
"name": "Nume",
"size": "Mărime",
"creator": "Creator"
"creator": ""
},
"action": {
"upload": {
@@ -1032,7 +1032,7 @@
"label": "Orizontal"
},
"column": {
"label": "Vertical"
"label": ""
},
"grid": {
"label": ""
@@ -1056,7 +1056,7 @@
"label": "Orizontal"
},
"column": {
"label": "Vertical"
"label": ""
},
"grid": {
"label": ""
@@ -1089,7 +1089,7 @@
"label": "Orizontal"
},
"column": {
"label": "Vertical"
"label": ""
},
"grid": {
"label": ""
@@ -1183,7 +1183,7 @@
"checkList": "Lista de verificare cu bifă",
"increaseIndent": "Mărește spațierea",
"decreaseIndent": "Scade spațierea",
"link": "Link",
"link": "",
"unlink": "Șterge link-ul",
"image": "Încorporează imagine",
"addTable": "Adaugă tabelă",
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Încorporați orice conținut de pe internet. Unele site-uri web pot restricționa accesul.",
"option": {
"embedUrl": {
@@ -1283,7 +1283,7 @@
}
},
"calendar": {
"name": "Calendar",
"name": "",
"description": "",
"option": {
"releaseType": {
@@ -1635,7 +1635,7 @@
"available": "",
"tv": "Cereri seriale TV",
"movie": "Cereri filme",
"total": "Total"
"total": ""
},
"users": {
"main": "Top utilizatori",
@@ -1892,7 +1892,7 @@
"label": "Nume"
},
"isPublic": {
"label": "Public",
"label": "",
"description": ""
}
},
@@ -1903,7 +1903,7 @@
"title": "",
"section": {
"general": {
"title": "General",
"title": "",
"unrecognizedLink": ""
},
"layout": {
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Unelte",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2127,7 +2127,7 @@
"fieldsDisabledExternalProvider": "",
"setting": {
"general": {
"title": "General",
"title": "",
"item": {
"language": "",
"board": "",
@@ -2199,16 +2199,16 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Creator"
"label": ""
},
"expirationDate": {
"label": "Data expirării"
},
"token": {
"label": "Token"
"label": ""
}
}
}
@@ -2217,7 +2217,7 @@
"back": "",
"setting": {
"general": {
"title": "General",
"title": "",
"owner": "Proprietar",
"ownerOfGroup": "",
"ownerOfGroupDeleted": ""
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2589,7 +2589,7 @@
"create": {
"label": "Creează"
},
"general": "General",
"general": "",
"security": "Securitate",
"board": "Planșe",
"groups": {
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Unelte",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+8 -8
View File
@@ -293,7 +293,7 @@
},
"permission": {
"admin": {
"title": "Admin",
"title": "",
"item": {
"admin": {
"label": "",
@@ -1199,7 +1199,7 @@
},
"align": {
"left": "Leva stran",
"center": "Center",
"center": "",
"right": "Desno"
},
"popover": {
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Vstavite katero koli vsebino iz interneta. Nekatera spletna mesta lahko omejijo dostop.",
"option": {
"embedUrl": {
@@ -1685,7 +1685,7 @@
"empty": "Prazno",
"table": {
"file": "",
"eta": "ETA",
"eta": "",
"progress": "Napredek",
"transcode": "",
"healthCheck": ""
@@ -2042,7 +2042,7 @@
"tools": {
"label": "Orodja",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "",
"tasks": ""
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Ustvarjalec"
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Orodja",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
+20 -20
View File
@@ -51,7 +51,7 @@
"title": "",
"field": {
"token": {
"label": "Token",
"label": "",
"description": ""
}
},
@@ -293,7 +293,7 @@
},
"permission": {
"admin": {
"title": "Admin",
"title": "",
"item": {
"admin": {
"label": "",
@@ -1026,7 +1026,7 @@
"label": ""
},
"layout": {
"label": "Layout",
"label": "",
"option": {
"row": {
"label": "Horisontal"
@@ -1050,7 +1050,7 @@
"description": "",
"option": {
"layout": {
"label": "Layout",
"label": "",
"option": {
"row": {
"label": "Horisontal"
@@ -1083,7 +1083,7 @@
"description": "Styr PiHole eller AdGuard från din instrumentpanel",
"option": {
"layout": {
"label": "Layout",
"label": "",
"option": {
"row": {
"label": "Horisontal"
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Bädda in valfritt innehåll från internet. Vissa webbplatser kan begränsa åtkomsten.",
"option": {
"embedUrl": {
@@ -1522,7 +1522,7 @@
"columnTitle": ""
},
"integration": {
"columnTitle": "Integration"
"columnTitle": ""
},
"name": {
"columnTitle": ""
@@ -1677,8 +1677,8 @@
"filesCount": "",
"savedSpace": "",
"healthChecks": "",
"videoCodecs": "Codecs",
"videoContainers": "Containers",
"videoCodecs": "",
"videoContainers": "",
"videoResolutions": "Upplösningar"
},
"workers": {
@@ -1907,7 +1907,7 @@
"unrecognizedLink": ""
},
"layout": {
"title": "Layout"
"title": ""
},
"background": {
"title": "Bakgrund"
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Verktyg",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2199,7 +2199,7 @@
},
"field": {
"id": {
"label": "ID"
"label": ""
},
"creator": {
"label": "Skapare"
@@ -2208,7 +2208,7 @@
"label": "Utgångsdatum"
},
"token": {
"label": "Token"
"label": ""
}
}
}
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2390,7 +2390,7 @@
},
"table": {
"header": {
"id": "ID",
"id": "",
"createdBy": ""
}
}
@@ -2419,7 +2419,7 @@
}
},
"docker": {
"title": "Containers",
"title": "",
"table": {
"updated": "",
"search": "",
@@ -2442,7 +2442,7 @@
}
},
"containerImage": {
"label": "Image"
"label": ""
},
"ports": {
"label": "Portar"
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Verktyg",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
@@ -2749,7 +2749,7 @@
"description": ""
},
"torrent": {
"name": "Torrents",
"name": "",
"description": ""
},
"youTube": {
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -2,7 +2,7 @@
"init": {
"step": {
"start": {
"title": "",
"title": "歡迎來到 Homarr",
"subtitle": "",
"description": "",
"action": {
@@ -1981,7 +1981,7 @@
},
"error": {
"noBoard": {
"title": "",
"title": "歡迎來到 Homarr",
"description": "",
"link": "",
"notice": ""
+4 -4
View File
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Інструменти",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Інструменти",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
+5 -5
View File
@@ -1213,7 +1213,7 @@
}
},
"iframe": {
"name": "iFrame",
"name": "",
"description": "Nhúng bất kỳ nội dung nào từ internet. Một số trang web có thể hạn chế quyền truy cập.",
"option": {
"embedUrl": {
@@ -2042,9 +2042,9 @@
"tools": {
"label": "Công cụ",
"items": {
"docker": "Docker",
"docker": "",
"logs": "",
"api": "API",
"api": "",
"tasks": ""
}
},
@@ -2370,7 +2370,7 @@
}
},
"api": {
"title": "API",
"title": "",
"modal": {
"createApiToken": {
"title": "",
@@ -2602,7 +2602,7 @@
"tools": {
"label": "Công cụ",
"docker": {
"label": "Docker"
"label": ""
},
"logs": {
"label": ""
+3 -3
View File
@@ -29,9 +29,9 @@
"@homarr/log": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@mantine/core": "^7.15.1",
"@mantine/dates": "^7.15.1",
"@mantine/hooks": "^7.15.1",
"@mantine/core": "^7.15.2",
"@mantine/dates": "^7.15.2",
"@mantine/hooks": "^7.15.2",
"@tabler/icons-react": "^3.26.0",
"mantine-react-table": "2.0.0-beta.7",
"next": "^14.2.21",
+2 -2
View File
@@ -41,8 +41,8 @@
"@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@mantine/core": "^7.15.1",
"@mantine/hooks": "^7.15.1",
"@mantine/core": "^7.15.2",
"@mantine/hooks": "^7.15.2",
"@tabler/icons-react": "^3.26.0",
"@tiptap/extension-color": "2.10.4",
"@tiptap/extension-highlight": "2.10.4",
+20 -17
View File
@@ -7,7 +7,6 @@ import { IconLoader } from "@tabler/icons-react";
import combineClasses from "clsx";
import { clientApi } from "@homarr/api/client";
import { parseAppHrefWithVariablesClient } from "@homarr/common/client";
import { useRegisterSpotlightContextResults } from "@homarr/spotlight";
import { useI18n } from "@homarr/translation/client";
@@ -31,26 +30,30 @@ export default function AppWidget({ options, isEditMode }: WidgetComponentProps<
);
useRegisterSpotlightContextResults(
`app-${app.id}`,
[
{
id: app.id,
name: app.name,
icon: app.iconUrl,
interaction() {
return {
type: "link",
href: parseAppHrefWithVariablesClient(app.href ?? ""),
newTab: options.openInNewTab,
};
},
},
],
app.href
? [
{
id: app.id,
name: app.name,
icon: app.iconUrl,
interaction() {
return {
type: "link",
// We checked above that app.href is defined
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
href: app.href!,
newTab: options.openInNewTab,
};
},
},
]
: [],
[app, options.openInNewTab],
);
return (
<AppLink
href={parseAppHrefWithVariablesClient(app.href ?? "")}
href={app.href ?? undefined}
openInNewTab={options.openInNewTab}
enabled={Boolean(app.href) && !isEditMode}
>
@@ -88,7 +91,7 @@ export default function AppWidget({ options, isEditMode }: WidgetComponentProps<
}
interface AppLinkProps {
href: string;
href: string | undefined;
openInNewTab: boolean;
enabled: boolean;
}
@@ -3,7 +3,6 @@ import { IconCheck, IconX } from "@tabler/icons-react";
import type { RouterOutputs } from "@homarr/api";
import { clientApi } from "@homarr/api/client";
import { parseAppHrefWithVariablesClient } from "@homarr/common/client";
import { PingDot } from "./ping-dot";
@@ -14,7 +13,7 @@ interface PingIndicatorProps {
export const PingIndicator = ({ href }: PingIndicatorProps) => {
const [ping] = clientApi.widget.app.ping.useSuspenseQuery(
{
url: parseAppHrefWithVariablesClient(href),
url: href,
},
{
refetchOnMount: false,
@@ -25,7 +24,7 @@ export const PingIndicator = ({ href }: PingIndicatorProps) => {
const [pingResult, setPingResult] = useState<RouterOutputs["widget"]["app"]["ping"]>(ping);
clientApi.widget.app.updatedPing.useSubscription(
{ url: parseAppHrefWithVariablesClient(href) },
{ url: href },
{
onData(data) {
setPingResult(data);
+16 -13
View File
@@ -4,7 +4,6 @@ import { Anchor, Box, Card, Divider, Flex, Group, Stack, Text, Title, UnstyledBu
import type { RouterOutputs } from "@homarr/api";
import { clientApi } from "@homarr/api/client";
import { parseAppHrefWithVariablesClient } from "@homarr/common/client";
import { useRegisterSpotlightContextResults } from "@homarr/spotlight";
import type { WidgetComponentProps } from "../definition";
@@ -19,18 +18,22 @@ export default function BookmarksWidget({ options, width, height, itemId }: Widg
useRegisterSpotlightContextResults(
`bookmark-${itemId}`,
data.map((app) => ({
id: app.id,
name: app.name,
icon: app.iconUrl,
interaction() {
return {
type: "link",
href: parseAppHrefWithVariablesClient(app.href ?? ""),
newTab: false,
};
},
})),
data
.filter((app) => app.href !== null)
.map((app) => ({
id: app.id,
name: app.name,
icon: app.iconUrl,
interaction() {
return {
type: "link",
// We checked above that app.href is defined
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
href: app.href!,
newTab: false,
};
},
})),
[data],
);
+982 -347
View File
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -22,9 +22,9 @@
"eslint-config-turbo": "^2.3.3",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-react": "^7.37.2",
"eslint-plugin-react": "^7.37.3",
"eslint-plugin-react-hooks": "^5.1.0",
"typescript-eslint": "^8.18.1"
"typescript-eslint": "^8.18.2"
},
"devDependencies": {
"@homarr/prettier-config": "workspace:^0.1.0",