release: 3.4.1 (#1471)

* Release/3.3.1 (#1439)

* chore: bump version to 3.3.1

* ci: run e2e when build-images is skipped

* feat: view app logs in dashboard (#1445)

* socket events for docker logs

* auto-scroll with ref

* add log terminal with auto scroll

* remove console.logs

* increase initial lines to 25

* remove more console logs

* useSocketEmit

* emit on disconect & hide tab if not running

* change tab when not running & logs options

* logs max lines

* logs emit

* remove console logs

* refactor(logs-socket): consolidate & reduce state usage

* useTranslations in logs tab

* remove wrapLines from useEffect

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* order file & add spanish translations

* chore: fix tsc issues

---------

Co-authored-by: Jorge Montejo <jorgemon.lopez@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* autoforward ports in codespaces (#1447)

* chore(deps-dev): bump @typescript-eslint/parser from 6.21.0 to 7.11.0 (#1443)

Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.21.0 to 7.11.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.11.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: sentry config (#1448)

* chore(deps): bump the minor-patch group across 1 directory with 17 updates (#1451)

* chore(deps): bump the minor-patch group across 1 directory with 17 updates

Bumps the minor-patch group with 17 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) | `8.4.0` | `8.7.0` |
| [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-react) | `3.4.0` | `3.5.0` |
| [argon2](https://github.com/ranisalt/node-argon2) | `0.40.1` | `0.40.3` |
| [bullmq](https://github.com/taskforcesh/bullmq) | `5.7.12` | `5.7.14` |
| [react-hook-form](https://github.com/react-hook-form/react-hook-form) | `7.51.4` | `7.51.5` |
| [sass](https://github.com/sass/dart-sass) | `1.77.2` | `1.77.3` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.12.12` | `20.12.13` |
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `7.10.0` | `7.11.0` |
| [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) | `4.2.1` | `4.3.0` |
| [eslint-plugin-jsonc](https://github.com/ota-meshi/eslint-plugin-jsonc) | `2.15.1` | `2.16.0` |
| [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) | `7.34.1` | `7.34.2` |
| [jsdom](https://github.com/jsdom/jsdom) | `24.0.0` | `24.1.0` |
| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `5.16.0` | `5.17.3` |
| [@sentry/types](https://github.com/getsentry/sentry-javascript) | `8.4.0` | `8.7.0` |
| [@sentry/node](https://github.com/getsentry/sentry-javascript) | `8.4.0` | `8.7.0` |
| [hono](https://github.com/honojs/hono) | `4.3.11` | `4.4.0` |
| [nodemon](https://github.com/remy/nodemon) | `3.1.0` | `3.1.2` |



Updates `@sentry/nextjs` from 8.4.0 to 8.7.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/8.4.0...8.7.0)

Updates `@tabler/icons-react` from 3.4.0 to 3.5.0
- [Release notes](https://github.com/tabler/tabler-icons/releases)
- [Commits](https://github.com/tabler/tabler-icons/commits/v3.5.0/packages/icons-react)

Updates `argon2` from 0.40.1 to 0.40.3
- [Release notes](https://github.com/ranisalt/node-argon2/releases)
- [Commits](https://github.com/ranisalt/node-argon2/commits)

Updates `bullmq` from 5.7.12 to 5.7.14
- [Release notes](https://github.com/taskforcesh/bullmq/releases)
- [Commits](https://github.com/taskforcesh/bullmq/compare/v5.7.12...v5.7.14)

Updates `react-hook-form` from 7.51.4 to 7.51.5
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.51.4...v7.51.5)

Updates `sass` from 1.77.2 to 1.77.3
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.77.2...1.77.3)

Updates `@types/node` from 20.12.12 to 20.12.13
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@typescript-eslint/eslint-plugin` from 7.10.0 to 7.11.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.11.0/packages/eslint-plugin)

Updates `@vitejs/plugin-react` from 4.2.1 to 4.3.0
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/v4.3.0/packages/plugin-react)

Updates `eslint-plugin-jsonc` from 2.15.1 to 2.16.0
- [Release notes](https://github.com/ota-meshi/eslint-plugin-jsonc/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-jsonc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-jsonc/compare/v2.15.1...v2.16.0)

Updates `eslint-plugin-react` from 7.34.1 to 7.34.2
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.1...v7.34.2)

Updates `jsdom` from 24.0.0 to 24.1.0
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/24.0.0...24.1.0)

Updates `knip` from 5.16.0 to 5.17.3
- [Release notes](https://github.com/webpro-nl/knip/releases)
- [Changelog](https://github.com/webpro-nl/knip/blob/main/packages/knip/.release-it.json)
- [Commits](https://github.com/webpro-nl/knip/commits/5.17.3/packages/knip)

Updates `@sentry/types` from 8.4.0 to 8.7.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/8.4.0...8.7.0)

Updates `@sentry/node` from 8.4.0 to 8.7.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/8.4.0...8.7.0)

Updates `hono` from 4.3.11 to 4.4.0
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](https://github.com/honojs/hono/compare/v4.3.11...v4.4.0)

Updates `nodemon` from 3.1.0 to 3.1.2
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.0...v3.1.2)

---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@tabler/icons-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: argon2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: bullmq
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: sass
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@vitejs/plugin-react"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: eslint-plugin-jsonc
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: jsdom
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: knip
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/types"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: hono
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: fix vite plugin typings

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Meienberger <github@thisprops.com>

* Feat/tipi logs terminal (#1450)

* refactor: extract logs terminal ui in its own component

* feat: runtipi logs settings

* fix: runtipi dashboard logs project name

* ci: use nightly version for e2e

* feat(docker-tamplate): include addPorts and readOnly in volumes (#1456)

* chore(deps): bump the minor-patch group with 6 updates (#1454)

* fix(logs): maxlines not updated in closure

* chore: add missing websecure options in docker-compose.dev

* chore(deps): bump the minor-patch group across 1 directory with 13 updates (#1466)

* chore(deps): bump the minor-patch group across 1 directory with 13 updates

Bumps the minor-patch group with 13 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [drizzle-orm](https://github.com/drizzle-team/drizzle-orm) | `0.31.0` | `0.31.1` |
| [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) | `8.11.5` | `8.12.0` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.13.0` | `20.14.1` |
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `7.11.0` | `7.12.0` |
| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `7.11.0` | `7.12.0` |
| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `5.17.3` | `5.17.4` |
| [msw](https://github.com/mswjs/msw) | `2.3.0` | `2.3.1` |
| [prettier](https://github.com/prettier/prettier) | `3.2.5` | `3.3.0` |
| [hono](https://github.com/honojs/hono) | `4.4.2` | `4.4.3` |
| [yaml](https://github.com/eemeli/yaml) | `2.4.2` | `2.4.3` |
| [@sentry/esbuild-plugin](https://github.com/getsentry/sentry-javascript-bundler-plugins) | `2.17.0` | `2.18.0` |
| [nodemon](https://github.com/remy/nodemon) | `3.1.2` | `3.1.3` |
| [tsx](https://github.com/privatenumber/tsx) | `4.11.0` | `4.11.2` |



Updates `drizzle-orm` from 0.31.0 to 0.31.1
- [Release notes](https://github.com/drizzle-team/drizzle-orm/releases)
- [Commits](https://github.com/drizzle-team/drizzle-orm/compare/0.31.0...0.31.1)

Updates `pg` from 8.11.5 to 8.12.0
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.12.0/packages/pg)

Updates `@types/node` from 20.13.0 to 20.14.1
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@typescript-eslint/eslint-plugin` from 7.11.0 to 7.12.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.12.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 7.11.0 to 7.12.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.12.0/packages/parser)

Updates `knip` from 5.17.3 to 5.17.4
- [Release notes](https://github.com/webpro-nl/knip/releases)
- [Changelog](https://github.com/webpro-nl/knip/blob/main/packages/knip/.release-it.json)
- [Commits](https://github.com/webpro-nl/knip/commits/5.17.4/packages/knip)

Updates `msw` from 2.3.0 to 2.3.1
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.3.0...v2.3.1)

Updates `prettier` from 3.2.5 to 3.3.0
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.2.5...3.3.0)

Updates `hono` from 4.4.2 to 4.4.3
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](https://github.com/honojs/hono/compare/v4.4.2...v4.4.3)

Updates `yaml` from 2.4.2 to 2.4.3
- [Release notes](https://github.com/eemeli/yaml/releases)
- [Commits](https://github.com/eemeli/yaml/compare/v2.4.2...v2.4.3)

Updates `@sentry/esbuild-plugin` from 2.17.0 to 2.18.0
- [Release notes](https://github.com/getsentry/sentry-javascript-bundler-plugins/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/main/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript-bundler-plugins/compare/2.17.0...2.18.0)

Updates `nodemon` from 3.1.2 to 3.1.3
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.2...v3.1.3)

Updates `tsx` from 4.11.0 to 4.11.2
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](https://github.com/privatenumber/tsx/compare/v4.11.0...v4.11.2)

---
updated-dependencies:
- dependency-name: drizzle-orm
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: pg
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: knip
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: msw
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: hono
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: yaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@sentry/esbuild-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: tsx
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: fix linting issue

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Meienberger <github@thisprops.com>

* docs: add gabrielfariasnunes as a contributor for translation (#1461)

* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>

* feat: add portuguese language

* chore(deps-dev): bump @testing-library/react from 15.0.7 to 16.0.0 (#1464)

Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 15.0.7 to 16.0.0.
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/react-testing-library/compare/v15.0.7...v16.0.0)

---
updated-dependencies:
- dependency-name: "@testing-library/react"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump the minor-patch group with 5 updates (#1468)

Bumps the minor-patch group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@hookform/resolvers](https://github.com/react-hook-form/resolvers) | `3.4.2` | `3.5.0` |
| [bullmq](https://github.com/taskforcesh/bullmq) | `5.7.14` | `5.7.15` |
| [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) | `7.24.6` | `7.24.7` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.14.1` | `20.14.2` |
| [prettier](https://github.com/prettier/prettier) | `3.3.0` | `3.3.1` |


Updates `@hookform/resolvers` from 3.4.2 to 3.5.0
- [Release notes](https://github.com/react-hook-form/resolvers/releases)
- [Commits](https://github.com/react-hook-form/resolvers/compare/v3.4.2...v3.5.0)

Updates `bullmq` from 5.7.14 to 5.7.15
- [Release notes](https://github.com/taskforcesh/bullmq/releases)
- [Commits](https://github.com/taskforcesh/bullmq/compare/v5.7.14...v5.7.15)

Updates `@babel/core` from 7.24.6 to 7.24.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.7/packages/babel-core)

Updates `@types/node` from 20.14.1 to 20.14.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `prettier` from 3.3.0 to 3.3.1
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.3.0...3.3.1)

---
updated-dependencies:
- dependency-name: "@hookform/resolvers"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: bullmq
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* New Crowdin updates (#1467)

* New translations en.json (French)

* New translations en.json (Romanian)

* New translations en.json (Spanish)

* New translations en.json (Afrikaans)

* New translations en.json (Turkish)

* New translations en.json (Arabic)

* New translations en.json (Catalan)

* New translations en.json (Czech)

* New translations en.json (Danish)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Hebrew)

* New translations en.json (Hungarian)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Korean)

* New translations en.json (Dutch)

* New translations en.json (Norwegian)

* New translations en.json (Polish)

* New translations en.json (Portuguese)

* New translations en.json (Russian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Swedish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)

* New translations en.json (English)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Spanish)

* New translations en.json (Russian)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (Turkish)

* New translations en.json (Romanian)

* New translations en.json (Spanish)

* New translations en.json (Afrikaans)

* New translations en.json (Arabic)

* New translations en.json (Catalan)

* New translations en.json (Czech)

* New translations en.json (Danish)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Hebrew)

* New translations en.json (Hungarian)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Korean)

* New translations en.json (Dutch)

* New translations en.json (Norwegian)

* New translations en.json (Polish)

* New translations en.json (Portuguese)

* New translations en.json (Russian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Swedish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)

* New translations en.json (English)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Spanish)

* New translations en.json (Russian)

* New translations en.json (Vietnamese)

* New translations en.json (Vietnamese)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Swedish)

* New translations en.json (Swedish)

* New translations en.json (French)

* New translations en.json (Turkish)

* New translations en.json (Romanian)

* New translations en.json (Spanish)

* New translations en.json (Afrikaans)

* New translations en.json (Arabic)

* New translations en.json (Catalan)

* New translations en.json (Czech)

* New translations en.json (Danish)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Hebrew)

* New translations en.json (Hungarian)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Korean)

* New translations en.json (Dutch)

* New translations en.json (Norwegian)

* New translations en.json (Polish)

* New translations en.json (Portuguese)

* New translations en.json (Russian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Swedish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)

* New translations en.json (English)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Russian)

* New translations en.json (French)

* New translations en.json (Turkish)

* New translations en.json (Romanian)

* New translations en.json (Spanish)

* New translations en.json (Afrikaans)

* New translations en.json (Arabic)

* New translations en.json (Catalan)

* New translations en.json (Czech)

* New translations en.json (Danish)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Hebrew)

* New translations en.json (Hungarian)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Korean)

* New translations en.json (Dutch)

* New translations en.json (Norwegian)

* New translations en.json (Polish)

* New translations en.json (Portuguese)

* New translations en.json (Russian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Swedish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)

* New translations en.json (English)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Russian)

* New translations en.json (Spanish)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Portuguese, Brazilian)

* chore(deps): bump the minor-patch group across 1 directory with 9 updates (#1470)

Bumps the minor-patch group with 9 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@hookform/resolvers](https://github.com/react-hook-form/resolvers) | `3.5.0` | `3.6.0` |
| [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) | `8.7.0` | `8.8.0` |
| [drizzle-orm](https://github.com/drizzle-team/drizzle-orm) | `0.31.1` | `0.31.2` |
| [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) | `28.5.0` | `28.6.0` |
| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `5.17.4` | `5.18.0` |
| [@sentry/types](https://github.com/getsentry/sentry-javascript) | `8.7.0` | `8.8.0` |
| [@sentry/node](https://github.com/getsentry/sentry-javascript) | `8.7.0` | `8.8.0` |
| [hono](https://github.com/honojs/hono) | `4.4.3` | `4.4.4` |
| [tsx](https://github.com/privatenumber/tsx) | `4.11.2` | `4.13.2` |



Updates `@hookform/resolvers` from 3.5.0 to 3.6.0
- [Release notes](https://github.com/react-hook-form/resolvers/releases)
- [Commits](https://github.com/react-hook-form/resolvers/compare/v3.5.0...v3.6.0)

Updates `@sentry/nextjs` from 8.7.0 to 8.8.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/8.7.0...8.8.0)

Updates `drizzle-orm` from 0.31.1 to 0.31.2
- [Release notes](https://github.com/drizzle-team/drizzle-orm/releases)
- [Commits](https://github.com/drizzle-team/drizzle-orm/compare/0.31.1...0.31.2)

Updates `eslint-plugin-jest` from 28.5.0 to 28.6.0
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v28.5.0...v28.6.0)

Updates `knip` from 5.17.4 to 5.18.0
- [Release notes](https://github.com/webpro-nl/knip/releases)
- [Changelog](https://github.com/webpro-nl/knip/blob/main/packages/knip/.release-it.json)
- [Commits](https://github.com/webpro-nl/knip/commits/5.18.0/packages/knip)

Updates `@sentry/types` from 8.7.0 to 8.8.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/8.7.0...8.8.0)

Updates `@sentry/node` from 8.7.0 to 8.8.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/8.7.0...8.8.0)

Updates `hono` from 4.4.3 to 4.4.4
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](https://github.com/honojs/hono/compare/v4.4.3...v4.4.4)

Updates `tsx` from 4.11.2 to 4.13.2
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](https://github.com/privatenumber/tsx/compare/v4.11.2...v4.13.2)

---
updated-dependencies:
- dependency-name: "@hookform/resolvers"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/nextjs"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: drizzle-orm
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: eslint-plugin-jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: knip
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/types"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: hono
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: tsx
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: bump version to 3.4.1

* feat(logs): keep tabs in url and settings in local storage

* fix(logs): run only on the client

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Jorge Montejo <jorgemon.lopez@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Stavros <steveiliop56@gmail.com>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
This commit is contained in:
Nicolas Meienberger 2024-06-09 11:30:21 +02:00 committed by GitHub
parent 9eb6301ada
commit c08f521cf6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
46 changed files with 1492 additions and 1278 deletions

View File

@ -475,6 +475,15 @@
"contributions": [ "contributions": [
"code" "code"
] ]
},
{
"login": "gabrielfariasnunes",
"name": "Gabriel Farias Nunes",
"avatar_url": "https://avatars.githubusercontent.com/u/21142663?v=4",
"profile": "http://www.bielfarias.com",
"contributions": [
"translation"
]
} }
], ],
"contributorsPerLine": 7, "contributorsPerLine": 7,

View File

@ -1,7 +1,7 @@
# Tipi — A personal homeserver for everyone # Tipi — A personal homeserver for everyone
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-50-orange.svg?style=flat-square)](#contributors-) [![All Contributors](https://img.shields.io/badge/all_contributors-51-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END --> <!-- ALL-CONTRIBUTORS-BADGE:END -->
[![License](https://img.shields.io/github/license/runtipi/runtipi)](https://github.com/runtipi/runtipi/blob/master/LICENSE) [![License](https://img.shields.io/github/license/runtipi/runtipi)](https://github.com/runtipi/runtipi/blob/master/LICENSE)
@ -140,6 +140,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
</tr> </tr>
<tr> <tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/hex-developer"><img src="https://avatars.githubusercontent.com/u/77530549?v=4?s=100" width="100px;" alt="hex-developer"/><br /><sub><b>hex-developer</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=hex-developer" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/hex-developer"><img src="https://avatars.githubusercontent.com/u/77530549?v=4?s=100" width="100px;" alt="hex-developer"/><br /><sub><b>hex-developer</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=hex-developer" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://www.bielfarias.com"><img src="https://avatars.githubusercontent.com/u/21142663?v=4?s=100" width="100px;" alt="Gabriel Farias Nunes"/><br /><sub><b>Gabriel Farias Nunes</b></sub></a><br /><a href="#translation-gabrielfariasnunes" title="Translation">🌍</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@ -107,6 +107,15 @@ services:
traefik.http.routers.dashboard.rule: PathPrefix("/") traefik.http.routers.dashboard.rule: PathPrefix("/")
traefik.http.routers.dashboard.service: dashboard traefik.http.routers.dashboard.service: dashboard
traefik.http.routers.dashboard.entrypoints: web traefik.http.routers.dashboard.entrypoints: web
# Websecure
traefik.http.routers.dashboard-insecure.rule: Host(`${DOMAIN}`) && PathPrefix(`/`)
traefik.http.routers.dashboard-insecure.service: dashboard
traefik.http.routers.dashboard-insecure.entrypoints: web
traefik.http.routers.dashboard-insecure.middlewares: redirect-to-https
traefik.http.routers.dashboard-secure.rule: Host(`${DOMAIN}`) && PathPrefix(`/`)
traefik.http.routers.dashboard-secure.service: dashboard
traefik.http.routers.dashboard-secure.entrypoints: websecure
traefik.http.routers.dashboard-secure.tls.certresolver: myresolver
# Local domain # Local domain
traefik.http.routers.dashboard-local-insecure.rule: Host(`${LOCAL_DOMAIN}`) traefik.http.routers.dashboard-local-insecure.rule: Host(`${LOCAL_DOMAIN}`)
traefik.http.routers.dashboard-local-insecure.entrypoints: web traefik.http.routers.dashboard-local-insecure.entrypoints: web
@ -128,6 +137,23 @@ services:
traefik.http.routers.worker-api.rule: PathPrefix("/worker-api") traefik.http.routers.worker-api.rule: PathPrefix("/worker-api")
traefik.http.routers.worker-api.service: worker-api traefik.http.routers.worker-api.service: worker-api
traefik.http.routers.worker-api.entrypoints: web traefik.http.routers.worker-api.entrypoints: web
# Websecure
traefik.http.routers.worker-insecure.rule: Host(`${DOMAIN}`) && PathPrefix(`/worker`)
traefik.http.routers.worker-insecure.service: worker
traefik.http.routers.worker-insecure.entrypoints: web
traefik.http.routers.worker-insecure.middlewares: redirect-to-https
traefik.http.routers.worker-secure.rule: Host(`${DOMAIN}`) && PathPrefix(`/worker`)
traefik.http.routers.worker-secure.service: worker
traefik.http.routers.worker-secure.entrypoints: websecure
traefik.http.routers.worker-secure.tls.certresolver: myresolver
traefik.http.routers.worker-api-insecure.rule: Host(`${DOMAIN}`) && PathPrefix(`/worker-api`)
traefik.http.routers.worker-api-insecure.service: worker-api
traefik.http.routers.worker-api-insecure.entrypoints: web
traefik.http.routers.worker-api-insecure.middlewares: redirect-to-https
traefik.http.routers.worker-api-secure.rule: Host(`${DOMAIN}`) && PathPrefix(`/worker-api`)
traefik.http.routers.worker-api-secure.service: worker-api
traefik.http.routers.worker-api-secure.entrypoints: websecure
traefik.http.routers.worker-api-secure.tls.certresolver: myresolver
# Local domain # Local domain
traefik.http.routers.worker-local-insecure.rule: Host(`${LOCAL_DOMAIN}`) && PathPrefix("/worker") traefik.http.routers.worker-local-insecure.rule: Host(`${LOCAL_DOMAIN}`) && PathPrefix("/worker")
traefik.http.routers.worker-local-insecure.entrypoints: web traefik.http.routers.worker-local-insecure.entrypoints: web

View File

@ -1,6 +1,6 @@
{ {
"name": "runtipi", "name": "runtipi",
"version": "3.4.0", "version": "3.4.1",
"description": "A homeserver for everyone", "description": "A homeserver for everyone",
"scripts": { "scripts": {
"clean-containers": "docker rm -f $(docker ps -a -q)", "clean-containers": "docker rm -f $(docker ps -a -q)",
@ -25,7 +25,7 @@
"postinstall": "./scripts/postinstall.sh" "postinstall": "./scripts/postinstall.sh"
}, },
"dependencies": { "dependencies": {
"@hookform/resolvers": "^3.4.2", "@hookform/resolvers": "^3.6.0",
"@otplib/core": "^12.0.1", "@otplib/core": "^12.0.1",
"@otplib/plugin-crypto": "^12.0.1", "@otplib/plugin-crypto": "^12.0.1",
"@otplib/plugin-thirty-two": "^12.0.1", "@otplib/plugin-thirty-two": "^12.0.1",
@ -38,13 +38,14 @@
"@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-tabs": "^1.0.4",
"@runtipi/postgres-migrations": "^5.3.0", "@runtipi/postgres-migrations": "^5.3.0",
"@runtipi/shared": "workspace:^", "@runtipi/shared": "workspace:^",
"@sentry/nextjs": "^8.7.0", "@sentry/nextjs": "^8.8.0",
"@tabler/core": "1.0.0-beta20", "@tabler/core": "1.0.0-beta20",
"@tabler/icons-react": "^3.5.0", "@tabler/icons-react": "^3.5.0",
"@uidotdev/usehooks": "^2.4.1",
"argon2": "^0.40.3", "argon2": "^0.40.3",
"bullmq": "^5.7.14", "bullmq": "^5.7.15",
"clsx": "^2.1.0", "clsx": "^2.1.0",
"drizzle-orm": "^0.31.0", "drizzle-orm": "^0.31.2",
"fs-extra": "^11.2.0", "fs-extra": "^11.2.0",
"geist": "^1.3.0", "geist": "^1.3.0",
"ipaddr.js": "^2.2.0", "ipaddr.js": "^2.2.0",
@ -56,7 +57,7 @@
"next-client-cookies": "^1.1.1", "next-client-cookies": "^1.1.1",
"next-intl": "^3.14.1", "next-intl": "^3.14.1",
"next-safe-action": "^6.2.0", "next-safe-action": "^6.2.0",
"pg": "^8.11.5", "pg": "^8.12.0",
"qrcode.react": "^3.1.0", "qrcode.react": "^3.1.0",
"react": "18.3.1", "react": "18.3.1",
"react-dom": "18.3.1", "react-dom": "18.3.1",
@ -81,12 +82,12 @@
"zustand": "^4.5.2" "zustand": "^4.5.2"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.24.6", "@babel/core": "^7.24.7",
"@faker-js/faker": "^8.4.1", "@faker-js/faker": "^8.4.1",
"@playwright/test": "^1.44.1", "@playwright/test": "^1.44.1",
"@testing-library/dom": "^10.1.0", "@testing-library/dom": "^10.1.0",
"@testing-library/jest-dom": "^6.4.5", "@testing-library/jest-dom": "^6.4.5",
"@testing-library/react": "^15.0.7", "@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.5.2", "@testing-library/user-event": "^14.5.2",
"@total-typescript/shoehorn": "^0.1.2", "@total-typescript/shoehorn": "^0.1.2",
"@total-typescript/ts-reset": "^0.5.1", "@total-typescript/ts-reset": "^0.5.1",
@ -94,15 +95,15 @@
"@types/fs-extra": "^11.0.4", "@types/fs-extra": "^11.0.4",
"@types/jsonwebtoken": "^9.0.6", "@types/jsonwebtoken": "^9.0.6",
"@types/lodash.merge": "^4.6.9", "@types/lodash.merge": "^4.6.9",
"@types/node": "20.13.0", "@types/node": "20.14.2",
"@types/pg": "^8.11.6", "@types/pg": "^8.11.6",
"@types/react": "18.3.3", "@types/react": "18.3.3",
"@types/react-dom": "18.3.0", "@types/react-dom": "18.3.0",
"@types/semver": "^7.5.8", "@types/semver": "^7.5.8",
"@types/uuid": "^9.0.8", "@types/uuid": "^9.0.8",
"@types/validator": "^13.11.10", "@types/validator": "^13.11.10",
"@typescript-eslint/eslint-plugin": "^7.11.0", "@typescript-eslint/eslint-plugin": "^7.12.0",
"@typescript-eslint/parser": "^7.11.0", "@typescript-eslint/parser": "^7.12.0",
"@vitejs/plugin-react": "^4.3.0", "@vitejs/plugin-react": "^4.3.0",
"@vitest/coverage-v8": "^1.5.0", "@vitest/coverage-v8": "^1.5.0",
"@vitest/ui": "^1.6.0", "@vitest/ui": "^1.6.0",
@ -111,7 +112,7 @@
"eslint-config-next": "14.2.3", "eslint-config-next": "14.2.3",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-import": "^2.29.1", "eslint-plugin-import": "^2.29.1",
"eslint-plugin-jest": "^28.5.0", "eslint-plugin-jest": "^28.6.0",
"eslint-plugin-jest-dom": "^5.4.0", "eslint-plugin-jest-dom": "^5.4.0",
"eslint-plugin-jsonc": "^2.16.0", "eslint-plugin-jsonc": "^2.16.0",
"eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-jsx-a11y": "^6.8.0",
@ -121,11 +122,11 @@
"jest": "^29.7.0", "jest": "^29.7.0",
"jsdom": "^24.1.0", "jsdom": "^24.1.0",
"jsonc-eslint-parser": "^2.4.0", "jsonc-eslint-parser": "^2.4.0",
"knip": "^5.17.3", "knip": "^5.18.0",
"memfs": "^4.8.2", "memfs": "^4.8.2",
"msw": "^2.3.0", "msw": "^2.3.1",
"next-router-mock": "^0.9.13", "next-router-mock": "^0.9.13",
"prettier": "^3.2.5", "prettier": "^3.3.1",
"typescript": "5.4.5", "typescript": "5.4.5",
"vite-tsconfig-paths": "^4.3.2", "vite-tsconfig-paths": "^4.3.2",
"vitest": "^1.6.0", "vitest": "^1.6.0",

View File

@ -38,12 +38,12 @@
"zod": "^3.23.8" "zod": "^3.23.8"
}, },
"devDependencies": { "devDependencies": {
"@sentry/types": "^8.7.0", "@sentry/types": "^8.8.0",
"@types/lodash.clonedeep": "^4.5.9", "@types/lodash.clonedeep": "^4.5.9",
"@typescript-eslint/eslint-plugin": "^7.11.0", "@typescript-eslint/eslint-plugin": "^7.12.0",
"@typescript-eslint/parser": "^7.11.0", "@typescript-eslint/parser": "^7.12.0",
"eslint": "8.57.0", "eslint": "8.57.0",
"eslint-plugin-import": "^2.29.1", "eslint-plugin-import": "^2.29.1",
"prettier": "^3.2.5" "prettier": "^3.3.1"
} }
} }

View File

@ -18,19 +18,19 @@
"license": "ISC", "license": "ISC",
"devDependencies": { "devDependencies": {
"@faker-js/faker": "^8.4.1", "@faker-js/faker": "^8.4.1",
"@sentry/esbuild-plugin": "^2.17.0", "@sentry/esbuild-plugin": "^2.18.0",
"@types/web-push": "^3.6.3", "@types/web-push": "^3.6.3",
"@typescript-eslint/eslint-plugin": "^7.11.0", "@typescript-eslint/eslint-plugin": "^7.12.0",
"@typescript-eslint/parser": "^7.11.0", "@typescript-eslint/parser": "^7.12.0",
"dotenv-cli": "^7.4.2", "dotenv-cli": "^7.4.2",
"esbuild": "^0.19.4", "esbuild": "^0.19.4",
"eslint": "8.57.0", "eslint": "8.57.0",
"eslint-plugin-import": "^2.29.1", "eslint-plugin-import": "^2.29.1",
"knip": "^5.17.3", "knip": "^5.18.0",
"memfs": "^4.8.2", "memfs": "^4.8.2",
"nodemon": "^3.1.2", "nodemon": "^3.1.3",
"prettier": "^3.2.5", "prettier": "^3.3.1",
"tsx": "^4.10.2", "tsx": "^4.13.2",
"typescript": "^5.4.5", "typescript": "^5.4.5",
"vite-tsconfig-paths": "^4.3.2", "vite-tsconfig-paths": "^4.3.2",
"vitest": "^1.6.0" "vitest": "^1.6.0"
@ -40,16 +40,16 @@
"@runtipi/postgres-migrations": "^5.3.0", "@runtipi/postgres-migrations": "^5.3.0",
"@runtipi/shared": "workspace:^", "@runtipi/shared": "workspace:^",
"@sentry/integrations": "^7.114.0", "@sentry/integrations": "^7.114.0",
"@sentry/node": "^8.7.0", "@sentry/node": "^8.8.0",
"bullmq": "^5.7.14", "bullmq": "^5.7.15",
"dotenv": "^16.4.5", "dotenv": "^16.4.5",
"hono": "^4.4.2", "hono": "^4.4.4",
"ioredis": "^5.4.1", "ioredis": "^5.4.1",
"pg": "^8.11.5", "pg": "^8.12.0",
"socket.io": "^4.7.5", "socket.io": "^4.7.5",
"systeminformation": "^5.22.10", "systeminformation": "^5.22.10",
"web-push": "^3.6.7", "web-push": "^3.6.7",
"yaml": "^2.4.1", "yaml": "^2.4.3",
"zod": "^3.23.8" "zod": "^3.23.8"
} }
} }

View File

@ -166,7 +166,6 @@ export const handleViewAppLogsEvent = async (socket: Socket, event: SocketEvent)
socket.on('app-logs', (data) => { socket.on('app-logs', (data) => {
if (data.event === 'stopLogs') { if (data.event === 'stopLogs') {
console.log('Stopping logs');
logs.kill('SIGINT'); logs.kill('SIGINT');
} }
}); });

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@
* - Please do NOT serve this file on production. * - Please do NOT serve this file on production.
*/ */
const PACKAGE_VERSION = '2.3.0' const PACKAGE_VERSION = '2.3.1'
const INTEGRITY_CHECKSUM = '26357c79639bfa20d64c0efca2a87423' const INTEGRITY_CHECKSUM = '26357c79639bfa20d64c0efca2a87423'
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
const activeClientIds = new Set() const activeClientIds = new Set()

View File

@ -0,0 +1,33 @@
import React from 'react';
import { TabsList, TabsTrigger } from '@/components/ui/tabs';
import { useTranslations } from 'next-intl';
import { AppStatus } from '@/server/db/schema';
import { useRouter } from 'next/navigation';
interface IProps {
status: AppStatus;
}
export const AppDetailsTabTriggers = ({ status }: IProps) => {
const t = useTranslations();
const router = useRouter();
const handleTabChange = (newTab: string) => {
void router.push(`?tab=${newTab}`);
};
return (
<TabsList>
<TabsTrigger onClick={() => handleTabChange('description')} value="description">
{t('APP_DETAILS_DESCRIPTION')}
</TabsTrigger>
<TabsTrigger onClick={() => handleTabChange('info')} value="info">
{t('APP_DETAILS_BASE_INFO')}
</TabsTrigger>
<TabsTrigger onClick={() => handleTabChange('logs')} value="logs" disabled={status === 'missing'}>
{t('APP_LOGS_TAB_TITLE')}
</TabsTrigger>
</TabsList>
);
};

View File

@ -1,12 +1,14 @@
import { IconAlertCircle, IconExternalLink } from '@tabler/icons-react'; import { IconAlertCircle, IconExternalLink } from '@tabler/icons-react';
import React from 'react'; import React from 'react';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Tabs, TabsContent } from '@/components/ui/tabs';
import { useTranslations } from 'next-intl'; import { useTranslations } from 'next-intl';
import { AppInfo } from '@runtipi/shared'; import { AppInfo } from '@runtipi/shared';
import { Markdown } from '@/components/Markdown'; import { Markdown } from '@/components/Markdown';
import { DataGrid, DataGridItem } from '@/components/ui/DataGrid'; import { DataGrid, DataGridItem } from '@/components/ui/DataGrid';
import { AppStatus as AppStatusEnum } from '@/server/db/schema'; import { AppStatus as AppStatusEnum } from '@/server/db/schema';
import { AppLogs } from './AppLogs'; import { AppLogs } from './AppLogs';
import { AppDetailsTabTriggers } from './AppDetailsTabTriggers';
import { useSearchParams } from 'next/navigation';
interface IProps { interface IProps {
info: AppInfo; info: AppInfo;
@ -16,15 +18,11 @@ interface IProps {
export const AppDetailsTabs: React.FC<IProps> = ({ info, status }) => { export const AppDetailsTabs: React.FC<IProps> = ({ info, status }) => {
const t = useTranslations(); const t = useTranslations();
const defaultTab = useSearchParams().get('tab');
return ( return (
<Tabs defaultValue="description" orientation="vertical" style={{ marginTop: -1 }}> <Tabs defaultValue={defaultTab || 'description'} orientation="vertical" style={{ marginTop: -1 }}>
<TabsList> <AppDetailsTabTriggers status={status} />
<TabsTrigger value="description">{t('APP_DETAILS_DESCRIPTION')}</TabsTrigger>
<TabsTrigger value="info">{t('APP_DETAILS_BASE_INFO')}</TabsTrigger>
<TabsTrigger value="logs" disabled={status === 'missing'}>
{t('APP_LOGS_TAB_TITLE')}
</TabsTrigger>
</TabsList>
<TabsContent value="description"> <TabsContent value="description">
{info.deprecated && ( {info.deprecated && (
<div className="alert alert-danger" role="alert"> <div className="alert alert-danger" role="alert">

View File

@ -1,18 +1,19 @@
'use client'; 'use client';
import React, { useState } from 'react'; import React, { useState, useRef } from 'react';
import { useSocket } from '@/lib/socket/useSocket'; import { useSocket } from '@/lib/socket/useSocket';
import { LogsTerminal } from 'src/app/components/LogsTerminal/LogsTerminal'; import { LogsTerminal } from 'src/app/components/LogsTerminal/LogsTerminal';
import { ClientOnly } from '@/components/ClientOnly/ClientOnly';
export const AppLogs = ({ appId }: { appId: string }) => { export const AppLogs = ({ appId }: { appId: string }) => {
let nextId = 0; let nextId = 0;
const [logs, setLogs] = useState<{ id: number; text: string }[]>([]); const [logs, setLogs] = useState<{ id: number; text: string }[]>([]);
const [maxLines, setMaxLines] = useState<number>(300); const maxLines = useRef(300);
useSocket({ useSocket({
selector: { type: 'app-logs', event: 'newLogs', data: { property: 'appId', value: appId } }, selector: { type: 'app-logs', event: 'newLogs', data: { property: 'appId', value: appId } },
onCleanup: () => setLogs([]), onCleanup: () => setLogs([]),
emitOnConnect: { type: 'app-logs-init', event: 'initLogs', data: { appId, maxLines } }, emitOnConnect: { type: 'app-logs-init', event: 'initLogs', data: { appId, maxLines: maxLines.current } },
emitOnDisconnect: { type: 'app-logs', event: 'stopLogs', data: { appId } }, emitOnDisconnect: { type: 'app-logs', event: 'stopLogs', data: { appId } },
onEvent: (_, data) => { onEvent: (_, data) => {
setLogs((prevLogs) => { setLogs((prevLogs) => {
@ -20,8 +21,8 @@ export const AppLogs = ({ appId }: { appId: string }) => {
return prevLogs; return prevLogs;
} }
const newLogs = [...prevLogs, ...data.lines.map((line) => ({ id: nextId++, text: line.trim() }))]; const newLogs = [...prevLogs, ...data.lines.map((line) => ({ id: nextId++, text: line.trim() }))];
if (newLogs.length > maxLines) { if (newLogs.length > maxLines.current) {
return newLogs.slice(newLogs.length - maxLines); return newLogs.slice(newLogs.length - maxLines.current);
} }
return newLogs; return newLogs;
}); });
@ -30,9 +31,13 @@ export const AppLogs = ({ appId }: { appId: string }) => {
const updateMaxLines = (lines: number) => { const updateMaxLines = (lines: number) => {
const linesToKeep = Math.max(1, lines); const linesToKeep = Math.max(1, lines);
setMaxLines(linesToKeep); maxLines.current = linesToKeep;
setLogs((currentLogs) => currentLogs.slice(currentLogs.length - linesToKeep)); setLogs((currentLogs) => currentLogs.slice(currentLogs.length - linesToKeep));
}; };
return <LogsTerminal logs={logs} maxLines={maxLines} onMaxLinesChange={updateMaxLines} />; return (
<ClientOnly>
<LogsTerminal logs={logs} maxLines={maxLines.current} onMaxLinesChange={updateMaxLines} />
</ClientOnly>
);
}; };

View File

@ -1,18 +1,19 @@
'use client'; 'use client';
import React, { useState } from 'react'; import React, { useState, useRef } from 'react';
import { useSocket } from '@/lib/socket/useSocket'; import { useSocket } from '@/lib/socket/useSocket';
import { LogsTerminal } from 'src/app/components/LogsTerminal/LogsTerminal'; import { LogsTerminal } from 'src/app/components/LogsTerminal/LogsTerminal';
import { ClientOnly } from '@/components/ClientOnly/ClientOnly';
export const LogsContainer = () => { export const LogsContainer = () => {
let nextId = 0; let nextId = 0;
const [logs, setLogs] = useState<{ id: number; text: string }[]>([]); const [logs, setLogs] = useState<{ id: number; text: string }[]>([]);
const [maxLines, setMaxLines] = useState<number>(300); const maxLines = useRef(300);
useSocket({ useSocket({
selector: { type: 'runtipi-logs', event: 'newLogs' }, selector: { type: 'runtipi-logs', event: 'newLogs' },
onCleanup: () => setLogs([]), onCleanup: () => setLogs([]),
emitOnConnect: { type: 'runtipi-logs-init', event: 'initLogs', data: { maxLines } }, emitOnConnect: { type: 'runtipi-logs-init', event: 'initLogs', data: { maxLines: maxLines.current } },
emitOnDisconnect: { type: 'runtipi-logs', event: 'stopLogs', data: {} }, emitOnDisconnect: { type: 'runtipi-logs', event: 'stopLogs', data: {} },
onEvent: (_, data) => { onEvent: (_, data) => {
setLogs((prevLogs) => { setLogs((prevLogs) => {
@ -20,8 +21,8 @@ export const LogsContainer = () => {
return prevLogs; return prevLogs;
} }
const newLogs = [...prevLogs, ...data.lines.map((line) => ({ id: nextId++, text: line.trim() }))]; const newLogs = [...prevLogs, ...data.lines.map((line) => ({ id: nextId++, text: line.trim() }))];
if (newLogs.length > maxLines) { if (newLogs.length > maxLines.current) {
return newLogs.slice(newLogs.length - maxLines); return newLogs.slice(newLogs.length - maxLines.current);
} }
return newLogs; return newLogs;
}); });
@ -30,9 +31,13 @@ export const LogsContainer = () => {
const updateMaxLines = (lines: number) => { const updateMaxLines = (lines: number) => {
const linesToKeep = Math.max(1, lines); const linesToKeep = Math.max(1, lines);
setMaxLines(linesToKeep); maxLines.current = linesToKeep;
setLogs(logs.slice(logs.length - linesToKeep)); setLogs(logs.slice(logs.length - linesToKeep));
}; };
return <LogsTerminal logs={logs} maxLines={maxLines} onMaxLinesChange={updateMaxLines} />; return (
<ClientOnly>
<LogsTerminal logs={logs} maxLines={maxLines.current} onMaxLinesChange={updateMaxLines} />
</ClientOnly>
);
}; };

View File

@ -1,6 +1,7 @@
'use client'; 'use client';
import React, { useEffect, useRef, useState } from 'react'; import React, { useEffect, useRef } from 'react';
import { useLocalStorage } from '@uidotdev/usehooks';
import clsx from 'clsx'; import clsx from 'clsx';
import styles from './LogsTerminal.module.scss'; import styles from './LogsTerminal.module.scss';
import { useTranslations } from 'next-intl'; import { useTranslations } from 'next-intl';
@ -15,8 +16,8 @@ export const LogsTerminal = (props: Props) => {
const t = useTranslations(); const t = useTranslations();
const { logs, onMaxLinesChange, maxLines } = props; const { logs, onMaxLinesChange, maxLines } = props;
const [follow, setFollow] = useState<boolean>(true); const [follow, setFollow] = useLocalStorage<boolean>('logs-follow', true);
const [wrapLines, setWrapLines] = useState<boolean>(false); const [wrapLines, setWrapLines] = useLocalStorage<boolean>('logs-wraplines', false);
const ref = useRef<HTMLPreElement>(null); const ref = useRef<HTMLPreElement>(null);
const lastLogId = logs.length > 0 ? logs.at(-1)?.id : null; const lastLogId = logs.length > 0 ? logs.at(-1)?.id : null;

View File

@ -0,0 +1,18 @@
'use client';
/**
* Hack to work around next.js hydration
* @see https://github.com/uidotdev/usehooks/issues/218
*/
import React from 'react';
import { useIsClient } from '@uidotdev/usehooks';
type ClientOnlyProps = {
children: React.ReactNode;
};
export const ClientOnly: React.FC<ClientOnlyProps> = ({ children }) => {
const isClient = useIsClient();
// Render children if on client side, otherwise return null
return isClient ? <>{children}</> : null;
};

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update",
"APP_INSTALL_FORM_TITLE": "Install {name}", "APP_INSTALL_FORM_TITLE": "Install {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password",
"AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.",
"SETTINGS_SECURITY_TAB_TITLE": "Security", "SETTINGS_SECURITY_TAB_TITLE": "Security",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Settings", "SETTINGS_TITLE": "Settings",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update",
"APP_INSTALL_FORM_TITLE": "Install {name}", "APP_INSTALL_FORM_TITLE": "Install {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password",
"AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.",
"SETTINGS_SECURITY_TAB_TITLE": "Security", "SETTINGS_SECURITY_TAB_TITLE": "Security",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Settings", "SETTINGS_TITLE": "Settings",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Instal·la", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Instal·la",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Actualitza", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Actualitza",
"APP_INSTALL_FORM_TITLE": "Instal·la {name}", "APP_INSTALL_FORM_TITLE": "Instal·la {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "Tota la informació d'aquesta aplicació es perdrà.", "APP_RESET_FORM_SUBTITLE": "Tota la informació d'aquesta aplicació es perdrà.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Inicia sessió al teu compte", "AUTH_REGISTER_TITLE": "Inicia sessió al teu compte",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Torna a l'inici de sessió", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Torna a l'inici de sessió",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel·la la sol·licitud de canvi de contrasenya", "AUTH_RESET_PASSWORD_CANCEL": "Cancel·la la sol·licitud de canvi de contrasenya",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Executa aquesta comanda al teu servidor i després actualitza aquesta pàgina", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Restableix la contrasenya", "AUTH_RESET_PASSWORD_SUBMIT": "Restableix la contrasenya",
"AUTH_RESET_PASSWORD_SUCCESS": "La teva contrasenya s'ha restablert. Ara pots iniciar sessió amb la nova contrasenya. I el correu electrònic {email}", "AUTH_RESET_PASSWORD_SUCCESS": "La teva contrasenya s'ha restablert. Ara pots iniciar sessió amb la nova contrasenya. I el correu electrònic {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "La contrasenya s'ha restablert", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "La contrasenya s'ha restablert",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Es requereix la teva contrasenya per canviar la configuració de l'autenticació de dos factors.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Es requereix la teva contrasenya per canviar la configuració de l'autenticació de dos factors.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Escanegeu aquest codi QR amb l'aplicació autenticadora.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Escanegeu aquest codi QR amb l'aplicació autenticadora.",
"SETTINGS_SECURITY_TAB_TITLE": "Seguretat", "SETTINGS_SECURITY_TAB_TITLE": "Seguretat",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Configuració", "SETTINGS_TITLE": "Configuració",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "No s'ha pogut recuperar l'última versió", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "No s'ha pogut recuperar l'última versió",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "La versió actual ja està actualitzada", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "La versió actual ja està actualitzada",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update",
"APP_INSTALL_FORM_TITLE": "Install {name}", "APP_INSTALL_FORM_TITLE": "Install {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password",
"AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.",
"SETTINGS_SECURITY_TAB_TITLE": "Security", "SETTINGS_SECURITY_TAB_TITLE": "Security",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Settings", "SETTINGS_TITLE": "Settings",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update",
"APP_INSTALL_FORM_TITLE": "Install {name}", "APP_INSTALL_FORM_TITLE": "Install {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password",
"AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.",
"SETTINGS_SECURITY_TAB_TITLE": "Security", "SETTINGS_SECURITY_TAB_TITLE": "Security",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Settings", "SETTINGS_TITLE": "Settings",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date",

View File

@ -3,11 +3,11 @@
"APP_ACTION_INSTALL": "Installieren", "APP_ACTION_INSTALL": "Installieren",
"APP_ACTION_LOADING": "Laden", "APP_ACTION_LOADING": "Laden",
"APP_ACTION_OPEN": "Öffnen", "APP_ACTION_OPEN": "Öffnen",
"APP_ACTION_REMOVE": "Löschen", "APP_ACTION_REMOVE": "Entfernen",
"APP_ACTION_SETTINGS": "Einstellungen", "APP_ACTION_SETTINGS": "Einstellungen",
"APP_ACTION_START": "Start", "APP_ACTION_START": "Starten",
"APP_ACTION_STOP": "Anhalten", "APP_ACTION_STOP": "Anhalten",
"APP_ACTION_RESTART": "Restart", "APP_ACTION_RESTART": "Neu starten",
"APP_ACTION_UPDATE": "Aktualisieren", "APP_ACTION_UPDATE": "Aktualisieren",
"APP_CATEGORY_AI": "KI", "APP_CATEGORY_AI": "KI",
"APP_CATEGORY_AUTOMATION": "Automatisierung", "APP_CATEGORY_AUTOMATION": "Automatisierung",
@ -27,22 +27,22 @@
"APP_DETAILS_AUTHOR": "Autor", "APP_DETAILS_AUTHOR": "Autor",
"APP_DETAILS_BASE_INFO": "Basisinfo", "APP_DETAILS_BASE_INFO": "Basisinfo",
"APP_DETAILS_CATEGORIES_TITLE": "Kategorien", "APP_DETAILS_CATEGORIES_TITLE": "Kategorien",
"APP_DETAILS_CHOOSE_OPEN_METHOD": "Offene Methode wählen", "APP_DETAILS_CHOOSE_OPEN_METHOD": "Wähle eine Öffnungsmethode aus",
"APP_DETAILS_DEPRECATED_ALERT_SUBTITLE": "A breaking change in this app prevents it from being updated automatically. You can still use this version and update it manually, but it is recommended to switch to a newer version and migrate your data. You can find an updated version in the app store under the same name.", "APP_DETAILS_DEPRECATED_ALERT_SUBTITLE": "Eine grundlegende Änderung in dieser App verhindert eine automatische Aktualisierung. Du kannst diese Version weiterhin verwenden und manuell aktualisieren, aber es wird empfohlen, auf eine neuere Version umzusteigen und deine Daten zu migrieren. Eine aktualisierte Version findest du im App Store unter demselben Namen.",
"APP_DETAILS_DEPRECATED_ALERT_TITLE": "This app is deprecated", "APP_DETAILS_DEPRECATED_ALERT_TITLE": "Diese App ist veraltet",
"APP_DETAILS_DESCRIPTION": "Beschreibung", "APP_DETAILS_DESCRIPTION": "Beschreibung",
"APP_DETAILS_LINK": "Link", "APP_DETAILS_LINK": "Link",
"APP_DETAILS_PORT": "Port", "APP_DETAILS_PORT": "Port",
"APP_DETAILS_SOURCE_CODE": "Quellcode", "APP_DETAILS_SOURCE_CODE": "Quellcode",
"APP_DETAILS_SUPPORTED_ARCH": "Unterstütze Architekturen", "APP_DETAILS_SUPPORTED_ARCH": "Unterstütze Architekturen",
"APP_DETAILS_TITLE": "App details", "APP_DETAILS_TITLE": "App-Details",
"APP_DETAILS_VERSION": "Version", "APP_DETAILS_VERSION": "Version",
"APP_DETAILS_WEBSITE": "Webseite", "APP_DETAILS_WEBSITE": "Webseite",
"APP_ERROR_APP_FAILED_TO_INSTALL": "Installieren der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen", "APP_ERROR_APP_FAILED_TO_INSTALL": "Installieren der App {id} fehlgeschlagen, schau dir die Logs an für weitere Informationen",
"APP_ERROR_APP_FAILED_TO_RESET": "Failed to reset app {id}, see logs for more details", "APP_ERROR_APP_FAILED_TO_RESET": "Zurücksetzen der App {id} fehlgeschlagen, schau dir die Logs an für weitere Details",
"APP_ERROR_APP_FAILED_TO_START": "Starten der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen", "APP_ERROR_APP_FAILED_TO_START": "Starten der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen",
"APP_ERROR_APP_FAILED_TO_STOP": "Stoppen der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen", "APP_ERROR_APP_FAILED_TO_STOP": "Stoppen der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen",
"APP_ERROR_APP_FAILED_TO_RESTART": "Failed to restart app {id}, see logs for more details", "APP_ERROR_APP_FAILED_TO_RESTART": "Neustart der App {id} fehlgeschlagen, schau dir die Logs an für weitere Details",
"APP_ERROR_APP_FAILED_TO_UNINSTALL": "Deinstallieren der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen", "APP_ERROR_APP_FAILED_TO_UNINSTALL": "Deinstallieren der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen",
"APP_ERROR_APP_FAILED_TO_UPDATE": "Aktualisieren der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen", "APP_ERROR_APP_FAILED_TO_UPDATE": "Aktualisieren der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen",
"APP_ERROR_APP_FORCE_EXPOSED": "App {id} funktioniert nur mit veröffentlichter Domain", "APP_ERROR_APP_FORCE_EXPOSED": "App {id} funktioniert nur mit veröffentlichter Domain",
@ -50,57 +50,64 @@
"APP_ERROR_APP_NOT_FOUND": "App {id} nicht gefunden", "APP_ERROR_APP_NOT_FOUND": "App {id} nicht gefunden",
"APP_ERROR_DOMAIN_ALREADY_IN_USE": "Die Domain {domain} ist bereits in Verwendung von der App {id}", "APP_ERROR_DOMAIN_ALREADY_IN_USE": "Die Domain {domain} ist bereits in Verwendung von der App {id}",
"APP_ERROR_DOMAIN_NOT_VALID": "Die Domain {domain} ist ungültig", "APP_ERROR_DOMAIN_NOT_VALID": "Die Domain {domain} ist ungültig",
"APP_ERROR_DOMAIN_REQUIRED_IF_EXPOSE_APP": "Eine Domain ist erforderlich, wenn die App veröffentlicht ist", "APP_ERROR_DOMAIN_REQUIRED_IF_EXPOSE_APP": "Eine Domain ist erforderlich, wenn die App freigegeben ist",
"APP_ERROR_INVALID_CONFIG": "Die App {id} hat eine ungültige config.json Datei", "APP_ERROR_INVALID_CONFIG": "Die App {id} hat eine ungültige config.json Datei",
"APP_INSTALL_FORM_CHOOSE_OPTION": "Wählen Sie eine Option...", "APP_INSTALL_FORM_CHOOSE_OPTION": "Wähle eine Option...",
"APP_INSTALL_FORM_DISPLAY_ON_GUEST_DASHBOARD": "Display on guest dashboard", "APP_INSTALL_FORM_DISPLAY_ON_GUEST_DASHBOARD": "Anzeige auf dem Gast-Dashboard",
"APP_INSTALL_FORM_DOMAIN_NAME": "Domänenname", "APP_INSTALL_FORM_DOMAIN_NAME": "Domainname",
"APP_INSTALL_FORM_DOMAIN_NAME_HINT": "Stellen Sie sicher, dass genau diese Domain einen A-Eintrag enthält, der auf Ihre IP verweist.", "APP_INSTALL_FORM_DOMAIN_NAME_HINT": "Stelle sicher, dass genau diese Domain einen A-Record enthält, der auf deine IP zeigt.",
"APP_INSTALL_FORM_ERROR_BETWEEN_LENGTH": "{label} muss zwischen {min} und {max} Zeichen lang sein", "APP_INSTALL_FORM_ERROR_BETWEEN_LENGTH": "{label} muss zwischen {min} und {max} Zeichen lang sein",
"APP_INSTALL_FORM_ERROR_FQDN": "{label} muss eine gültige Domain sein", "APP_INSTALL_FORM_ERROR_FQDN": "{label} muss eine gültige Domain sein",
"APP_INSTALL_FORM_ERROR_FQDNIP": "{label} muss eine gültige Domain oder IP-Addresse sein", "APP_INSTALL_FORM_ERROR_FQDNIP": "{label} muss eine gültige Domain oder IP-Adresse sein",
"APP_INSTALL_FORM_ERROR_INVALID_EMAIL": "{label} muss eine gültige E-Mail Adresse sein", "APP_INSTALL_FORM_ERROR_INVALID_EMAIL": "{label} muss eine gültige E-Mail-Adresse sein",
"APP_INSTALL_FORM_ERROR_IP": "{label} muss eine gültige IP-Adresse sein", "APP_INSTALL_FORM_ERROR_IP": "{label} muss eine gültige IP-Adresse sein",
"APP_INSTALL_FORM_ERROR_MAX_LENGTH": "{label} muss kleiner als {max} Zeichen sein", "APP_INSTALL_FORM_ERROR_MAX_LENGTH": "{label} darf nicht mehr als {max} Zeichen enthalten",
"APP_INSTALL_FORM_ERROR_MIN_LENGTH": "{label} muss mindestens {min} Zeichen lang sein", "APP_INSTALL_FORM_ERROR_MIN_LENGTH": "{label} muss mindestens {min} Zeichen lang sein",
"APP_INSTALL_FORM_ERROR_NUMBER": "{label} muss eine Nummer sein", "APP_INSTALL_FORM_ERROR_NUMBER": "{label} muss eine Zahl sein",
"APP_INSTALL_FORM_ERROR_REGEX": "{label} stimmt nicht mit dem Format {pattern} überein", "APP_INSTALL_FORM_ERROR_REGEX": "{label} stimmt nicht mit dem Format {pattern} überein",
"APP_INSTALL_FORM_ERROR_REQUIRED": "{label} ist erforderlich", "APP_INSTALL_FORM_ERROR_REQUIRED": "{label} ist erforderlich",
"APP_INSTALL_FORM_ERROR_URL": "{label} muss eine gültige URL sein", "APP_INSTALL_FORM_ERROR_URL": "{label} muss eine gültige URL sein",
"APP_INSTALL_FORM_EXPOSE_APP": "Expose app on the internet", "APP_INSTALL_FORM_EXPOSE_APP": "App im Internet verfügbar machen",
"APP_INSTALL_FORM_OPEN_PORT": "Open port", "APP_INSTALL_FORM_OPEN_PORT": "Port öffnen",
"APP_INSTALL_FORM_OPEN_PORT_HINT": "Open a port on the host? This app will be accessible at {internalIp}:{port}. (Easiest but less secure)", "APP_INSTALL_FORM_OPEN_PORT_HINT": "Einen Port auf dem Host öffnen? Diese App wird unter {internalIp}:{port} erreichbar sein. (Einfachste, aber weniger sichere Methode)",
"APP_INSTALL_FORM_EXPOSE_LOCAL": "Expose app on local network", "APP_INSTALL_FORM_EXPOSE_LOCAL": "Die App im lokalen Netzwerk freigeben",
"APP_INSTALL_FORM_EXPOSE_LOCAL_HINT": "Expose the app on the local network? This app will be accessible at {appId}.{domain}. (Visit settings page to setup your local domain)", "APP_INSTALL_FORM_EXPOSE_LOCAL_HINT": "Die App im lokalen Netzwerk freigeben? Diese App wird unter {appId}.{domain} erreichbar sein. (Besuche die Einstellungsseite, um deine lokale Domain einzurichten)",
"APP_INSTALL_FORM_RESET": "Reset app", "APP_INSTALL_FORM_RESET": "App zurücksetzen",
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Installieren", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Installieren",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Aktualisieren", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Aktualisieren",
"APP_INSTALL_FORM_TITLE": "{name} installieren", "APP_INSTALL_FORM_TITLE": "{name} installieren",
"APP_INSTALL_FORM_GENERAL": "Allgemein",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse Proxy",
"APP_INSTALL_SUCCESS": "App- {id} erfolgreich installiert", "APP_INSTALL_SUCCESS": "App- {id} erfolgreich installiert",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_RESET_FORM_SUBTITLE": "Alle Daten für diese Anwendung werden gelöscht.", "APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_LOGS_TAB_TITLE": "Logs",
"APP_RESET_FORM_WARNING": "Sind Sie sicher? Dieser Schritt kann nicht rückgängig gemacht werden.", "APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_RESET_SUCCESS": "App {id} reset successfully", "APP_NEW": "NEU",
"APP_RESET_FORM_SUBMIT": "Zurücksetzen",
"APP_RESET_FORM_SUBTITLE": "Alle Daten für diese App gehen verloren.",
"APP_RESET_FORM_TITLE": "{name} zurücksetzen?",
"APP_RESET_FORM_WARNING": "Bist du sicher? Diese Aktion kann nicht rückgängig gemacht werden.",
"APP_RESET_SUCCESS": "App {id} erfolgreich zurückgesetzt",
"APP_START_SUCCESS": "App {id} erfolgreich gestartet", "APP_START_SUCCESS": "App {id} erfolgreich gestartet",
"APP_STATUS_INSTALLING": "Installieren", "APP_STATUS_INSTALLING": "Installieren",
"APP_STATUS_MISSING": "Fehlt", "APP_STATUS_MISSING": "Fehlt",
"APP_STATUS_RESETTING": "Resetting", "APP_STATUS_RESETTING": "Wird zurückgesetzt",
"APP_STATUS_RUNNING": "Aktiv", "APP_STATUS_RUNNING": "Aktiv",
"APP_STATUS_STARTING": "Startet", "APP_STATUS_STARTING": "Startet",
"APP_STATUS_STOPPED": "Angehalten", "APP_STATUS_STOPPED": "Gestoppt",
"APP_STATUS_STOPPING": "Stoppen", "APP_STATUS_STOPPING": "Stoppen",
"APP_STATUS_RESTARTING": "Restarting", "APP_STATUS_RESTARTING": "Wird neu gestartet",
"APP_STATUS_UNINSTALLING": "Deinstallieren", "APP_STATUS_UNINSTALLING": "Deinstallieren",
"APP_STATUS_UPDATING": "Aktualisieren", "APP_STATUS_UPDATING": "Aktualisieren",
"APP_STOP_FORM_SUBMIT": "Anhalten", "APP_STOP_FORM_SUBMIT": "Anhalten",
"APP_STOP_FORM_SUBTITLE": "Alle Daten werden aufbewahrt", "APP_STOP_FORM_SUBTITLE": "Alle Daten werden aufbewahrt",
"APP_STOP_FORM_TITLE": "{name} anhalten?", "APP_STOP_FORM_TITLE": "{name} anhalten?",
"APP_STOP_SUCCESS": "App {id} erfolgreich angehalten", "APP_STOP_SUCCESS": "App {id} erfolgreich angehalten",
"APP_RESTART_FORM_SUBMIT": "Restart", "APP_RESTART_FORM_SUBMIT": "Neu starten",
"APP_RESTART_FORM_SUBTITLE": "All data will be retained", "APP_RESTART_FORM_SUBTITLE": "Alle Daten bleiben erhalten",
"APP_RESTART_FORM_TITLE": "Restart {name} ?", "APP_RESTART_FORM_TITLE": "{name} neu starten?",
"APP_RESTART_SUCCESS": "App {id} restarted successfully", "APP_RESTART_SUCCESS": "App {id} erfolgreich neu gestartet",
"APP_STORE_CATEGORY_PLACEHOLDER": "Kategorie wählen", "APP_STORE_CATEGORY_PLACEHOLDER": "Kategorie wählen",
"APP_STORE_NO_RESULTS": "Keine App gefunden", "APP_STORE_NO_RESULTS": "Keine App gefunden",
"APP_STORE_NO_RESULTS_SUBTITLE": "Versuche, deine Suche zu verbessern", "APP_STORE_NO_RESULTS_SUBTITLE": "Versuche, deine Suche zu verbessern",
@ -112,7 +119,7 @@
"APP_UNINSTALL_FORM_WARNING": "Sind Sie sicher? Dieser Schritt kann nicht rückgängig gemacht werden.", "APP_UNINSTALL_FORM_WARNING": "Sind Sie sicher? Dieser Schritt kann nicht rückgängig gemacht werden.",
"APP_UNINSTALL_SUCCESS": "App {id} erfolgreich deinstalliert", "APP_UNINSTALL_SUCCESS": "App {id} erfolgreich deinstalliert",
"APP_UPDATE_CONFIG_SUCCESS": "App-Konfiguration erfolgreich aktualisiert. Starte die App neu, um die Änderungen zu übernehmen", "APP_UPDATE_CONFIG_SUCCESS": "App-Konfiguration erfolgreich aktualisiert. Starte die App neu, um die Änderungen zu übernehmen",
"APP_UPDATE_ERROR_MIN_TIPI_VERSION": "App {id} update requires Tipi version {minVersion} or higher. Please update your instance.", "APP_UPDATE_ERROR_MIN_TIPI_VERSION": "Update der App {id} erfordert Tipi-Version {minVersion} oder höher. Bitte aktualisiere deine Instanz.",
"APP_UPDATE_FORM_SUBMIT": "Aktualisieren", "APP_UPDATE_FORM_SUBMIT": "Aktualisieren",
"APP_UPDATE_FORM_SUBTITLE_1": "App auf die neueste Version aktualisieren:", "APP_UPDATE_FORM_SUBTITLE_1": "App auf die neueste Version aktualisieren:",
"APP_UPDATE_FORM_SUBTITLE_2": "Dies wird Ihre benutzerdefinierte Konfiguration zurücksetzen (z.B. Änderungen in docker-compose.yml).", "APP_UPDATE_FORM_SUBTITLE_2": "Dies wird Ihre benutzerdefinierte Konfiguration zurücksetzen (z.B. Änderungen in docker-compose.yml).",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Ihr Konto erstellen", "AUTH_REGISTER_TITLE": "Ihr Konto erstellen",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Zurück zur Anmeldung", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Zurück zur Anmeldung",
"AUTH_RESET_PASSWORD_CANCEL": "Passwortänderung abbrechen", "AUTH_RESET_PASSWORD_CANCEL": "Passwortänderung abbrechen",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Führen Sie diesen Befehl auf Ihrem Server aus und aktualisieren Sie die Seite", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Um zu beginnen, führe diesen Befehl auf deinem Server aus und aktualisiere dann diese Seite. Falls du das bereits zuvor getan hast, könnte die Anforderung zum Zurücksetzen des Passworts abgelaufen sein. In diesem Fall versuche es bitte erneut",
"AUTH_RESET_PASSWORD_SUBMIT": "Zurücksetzen", "AUTH_RESET_PASSWORD_SUBMIT": "Zurücksetzen",
"AUTH_RESET_PASSWORD_SUCCESS": "Ihr Passwort wurde gespeichert. Sie können sich nun mit Ihrem neuen Passwort und ihrer E-Mail {email} anmelden", "AUTH_RESET_PASSWORD_SUCCESS": "Ihr Passwort wurde gespeichert. Sie können sich nun mit Ihrem neuen Passwort und ihrer E-Mail {email} anmelden",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Passwort zurückgesetzt", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Passwort zurückgesetzt",
@ -165,18 +172,18 @@
"AUTH_TOTP_INSTRUCTIONS": "Code aus der Authenticator-App eingeben", "AUTH_TOTP_INSTRUCTIONS": "Code aus der Authenticator-App eingeben",
"AUTH_TOTP_SUBMIT": "Bestätigen", "AUTH_TOTP_SUBMIT": "Bestätigen",
"AUTH_TOTP_TITLE": "Zwei-Faktor Authentifizierung", "AUTH_TOTP_TITLE": "Zwei-Faktor Authentifizierung",
"COMMON_CLOSE": "Close", "COMMON_CLOSE": "Schließen",
"DASHBOARD_CPU_SUBTITLE": "Apps deinstallieren um Last zu reduzieren", "DASHBOARD_CPU_SUBTITLE": "Apps deinstallieren um Last zu reduzieren",
"DASHBOARD_CPU_TITLE": "CPU Last", "DASHBOARD_CPU_TITLE": "CPU Last",
"DASHBOARD_DISK_SPACE_SUBTITLE": "Wird von {total} GB verwendet", "DASHBOARD_DISK_SPACE_SUBTITLE": "Wird von {total} GB verwendet",
"DASHBOARD_DISK_SPACE_TITLE": "Speicherplatz", "DASHBOARD_DISK_SPACE_TITLE": "Speicherplatz",
"DASHBOARD_MEMORY_TITLE": "Benutzter Speicher", "DASHBOARD_MEMORY_TITLE": "Benutzter Speicher",
"DASHBOARD_TITLE": "Dashboard", "DASHBOARD_TITLE": "Dashboard",
"DASHBOARD_IP_WARNING_TITLE": "Insecure configuration", "DASHBOARD_IP_WARNING_TITLE": "Unsichere Konfiguration",
"DASHBOARD_IP_WARNING": "Warning, you might be at risk! it looks like you are accessing your instance through a public IP address. This makes your dashboard and all apps that you install vulnerable to attackers", "DASHBOARD_IP_WARNING": "Warnung, du könntest gefährdet sein! Es sieht so aus, als würdest du auf deine Instanz über eine öffentliche IP-Adresse zugreifen. Dies macht dein Dashboard und alle installierten Apps anfällig für Angreifer",
"GUEST_DASHBOARD": "Guest dashboard", "GUEST_DASHBOARD": "Gast-Dashboard",
"GUEST_DASHBOARD_NO_APPS": "No apps to display", "GUEST_DASHBOARD_NO_APPS": "Keine Apps anzuzeigen",
"GUEST_DASHBOARD_NO_APPS_SUBTITLE": "Ask your administrator to add apps to the guest dashboard or login to see your apps.", "GUEST_DASHBOARD_NO_APPS_SUBTITLE": "Bitte deinen Administrator, Apps zum Gast-Dashboard hinzuzufügen, oder melde dich an, um deine Apps anzuzeigen.",
"HEADER_APPS": "Meine Apps", "HEADER_APPS": "Meine Apps",
"HEADER_APP_STORE": "App Store", "HEADER_APP_STORE": "App Store",
"HEADER_DARK_MODE": "Dunkler Modus", "HEADER_DARK_MODE": "Dunkler Modus",
@ -188,35 +195,35 @@
"HEADER_SOURCE_CODE": "Quellcode", "HEADER_SOURCE_CODE": "Quellcode",
"HEADER_SPONSOR": "Sponsor", "HEADER_SPONSOR": "Sponsor",
"HEADER_UPDATE_AVAILABLE": "Aktualisierung verfügbar", "HEADER_UPDATE_AVAILABLE": "Aktualisierung verfügbar",
"INTERNAL_SERVER_ERROR": "Internal server error", "INTERNAL_SERVER_ERROR": "Interner Serverfehler",
"LINKS_ADD_SUBMIT": "Submit", "LINKS_ADD_SUBMIT": "Bestätigen",
"LINKS_ADD_SUBTITLE": "Add external link to the dashboard", "LINKS_ADD_SUBTITLE": "Externen Link zum Dashboard hinzufügen",
"LINKS_ADD_SUCCESS": "Link added succesfully", "LINKS_ADD_SUCCESS": "Link erfolgreich hinzugefügt",
"LINKS_ADD_TITLE": "Add external link", "LINKS_ADD_TITLE": "Externen Link hinzufügen",
"LINKS_DELETE_CONTEXT_MENU": "Delete", "LINKS_DELETE_CONTEXT_MENU": "Löschen",
"LINKS_DELETE_SUBMIT": "Delete", "LINKS_DELETE_SUBMIT": "Löschen",
"LINKS_DELETE_SUBTITLE": "Are you sure you want to delete this external link?", "LINKS_DELETE_SUBTITLE": "Bist du sicher, dass du diesen externen Link entfernen willst?",
"LINKS_DELETE_SUCCESS": "Link deleted succesfully", "LINKS_DELETE_SUCCESS": "Link erfolgreich gelöscht",
"LINKS_DELETE_TITLE": "Delete external link", "LINKS_DELETE_TITLE": "Externen Link löschen",
"LINKS_EDIT_CONTEXT_MENU": "Edit", "LINKS_EDIT_CONTEXT_MENU": "Bearbeiten",
"LINKS_EDIT_SUBMIT": "Save", "LINKS_EDIT_SUBMIT": "Speichern",
"LINKS_EDIT_SUCCESS": "Link edited succesfully", "LINKS_EDIT_SUCCESS": "Link erfolgreich bearbeitet",
"LINKS_EDIT_TITLE": "Edit link", "LINKS_EDIT_TITLE": "Link bearbeiten",
"LINKS_FORM_ICON_PLACEHOLDER": "Link logo URL", "LINKS_FORM_ICON_PLACEHOLDER": "Link logo URL",
"LINKS_FORM_ICON_URL": "Icon URL", "LINKS_FORM_ICON_URL": "Icon-URL",
"LINKS_FORM_LINK_TITLE": "Link title", "LINKS_FORM_LINK_TITLE": "Linktitel",
"LINKS_FORM_LINK_URL": "Link URL", "LINKS_FORM_LINK_URL": "Link-URL",
"LINKS_FROM_LINK_DESCRIPTION": "Link Description", "LINKS_FROM_LINK_DESCRIPTION": "Linkbeschreibung",
"MY_APPS_DEPRECATED": "This app is deprecated", "MY_APPS_DEPRECATED": "Diese App ist veraltet",
"MY_APPS_EMPTY_ACTION": "Zum App Store", "MY_APPS_EMPTY_ACTION": "Zum App Store",
"MY_APPS_EMPTY_SUBTITLE": "Installiere eine App aus dem App Store, um loszulegen", "MY_APPS_EMPTY_SUBTITLE": "Installiere eine App aus dem App Store, um loszulegen",
"MY_APPS_EMPTY_TITLE": "Keine Apps installiert", "MY_APPS_EMPTY_TITLE": "Keine Apps installiert",
"MY_APPS_TITLE": "Meine Apps", "MY_APPS_TITLE": "Meine Apps",
"MY_APPS_UPDATE_ALL_FORM_SUBMIT": "Update all", "MY_APPS_UPDATE_ALL_FORM_SUBMIT": "Alle aktualisieren",
"MY_APPS_UPDATE_ALL_FORM_SUBTITLE_1": "Do you want to update all your apps to the latest version?", "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_1": "Möchtest du alle deine Apps auf die neueste Version aktualisieren?",
"MY_APPS_UPDATE_ALL_FORM_SUBTITLE_2": "This will update all your apps to the latest version. Make sure you've read the release notes of the apps and you've backed up your app data.", "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_2": "Dies wird all deine Apps auf die neueste Version aktualisieren. Stelle sicher, dass du die Release Notes der Apps gelesen und deine App-Daten gesichert hast.",
"MY_APPS_UPDATE_ALL_FORM_TITLE": "Update all apps", "MY_APPS_UPDATE_ALL_FORM_TITLE": "Alle Apps aktualisieren",
"MY_APPS_UPDATE_ALL_IN_PROGRESS": "Updating all apps", "MY_APPS_UPDATE_ALL_IN_PROGRESS": "Alle Apps werden aktualisiert",
"MY_APPS_UPDATE_AVAILABLE": "Aktualisierung verfügbar", "MY_APPS_UPDATE_AVAILABLE": "Aktualisierung verfügbar",
"RUNTIPI": "Runtipi", "RUNTIPI": "Runtipi",
"SERVER_ERROR_INVALID_LOCALE": "Ungültige Region", "SERVER_ERROR_INVALID_LOCALE": "Ungültige Region",
@ -231,18 +238,18 @@
"SETTINGS_ACTIONS_STAY_UP_TO_DATE": "Bleiben Sie auf dem Laufenden mit der neuesten Version von Tipi", "SETTINGS_ACTIONS_STAY_UP_TO_DATE": "Bleiben Sie auf dem Laufenden mit der neuesten Version von Tipi",
"SETTINGS_ACTIONS_TAB_TITLE": "Aktionen", "SETTINGS_ACTIONS_TAB_TITLE": "Aktionen",
"SETTINGS_ACTIONS_TITLE": "Aktionen", "SETTINGS_ACTIONS_TITLE": "Aktionen",
"SETTINGS_GENERAL_ALLOW_AUTO_THEMES": "Allow auto themes", "SETTINGS_GENERAL_ALLOW_AUTO_THEMES": "Automatische Themes zulassen",
"SETTINGS_GENERAL_ALLOW_AUTO_THEMES_HINT": "Be surprised by themes that change automatically based on the time of the year.", "SETTINGS_GENERAL_ALLOW_AUTO_THEMES_HINT": "Lass dich von Themes überraschen, die sich automatisch je nach Jahreszeit ändern.",
"SETTINGS_GENERAL_ALLOW_ERROR_MONITORING": "Allow anonymous error monitoring", "SETTINGS_GENERAL_ALLOW_ERROR_MONITORING": "Anonymes Fehler-Monitoring zulassen",
"SETTINGS_GENERAL_ALLOW_ERROR_MONITORING_HINT": "Error monitoring is used to track errors and improve Tipi. Keep this option enabled to help us improve Tipi.", "SETTINGS_GENERAL_ALLOW_ERROR_MONITORING_HINT": "Fehler-Monitoring wird verwendet, um Fehler zu tracken und Tipi zu verbessern. Lass diese Option aktiviert, um uns bei der Verbesserung von Tipi zu unterstützen.",
"SETTINGS_GENERAL_APPS_REPO": "App-Repo-URL", "SETTINGS_GENERAL_APPS_REPO": "App-Repo-URL",
"SETTINGS_GENERAL_APPS_REPO_HINT": "URL zum App-Repository.", "SETTINGS_GENERAL_APPS_REPO_HINT": "URL zum App-Repository.",
"SETTINGS_GENERAL_DNS_IP": "DNS IP", "SETTINGS_GENERAL_DNS_IP": "DNS IP",
"SETTINGS_GENERAL_DOMAIN_NAME": "Domänenname", "SETTINGS_GENERAL_DOMAIN_NAME": "Domänenname",
"SETTINGS_GENERAL_DOMAIN_NAME_HINT": "Stellen Sie sicher, dass genau diese Domain einen A-Eintrag enthält, der auf Ihre IP verweist.", "SETTINGS_GENERAL_DOMAIN_NAME_HINT": "Stellen Sie sicher, dass genau diese Domain einen A-Eintrag enthält, der auf Ihre IP verweist.",
"SETTINGS_GENERAL_DOWNLOAD_CERTIFICATE": "Zertifikat herunterladen", "SETTINGS_GENERAL_DOWNLOAD_CERTIFICATE": "Zertifikat herunterladen",
"SETTINGS_GENERAL_GUEST_DASHBOARD": "Enable guest dashboard", "SETTINGS_GENERAL_GUEST_DASHBOARD": "Gast-Dashboard aktivieren",
"SETTINGS_GENERAL_GUEST_DASHBOARD_HINT": "This will allow non-authenticated users to see a limited dashboard and easily access the running apps on your instance.", "SETTINGS_GENERAL_GUEST_DASHBOARD_HINT": "Dies ermöglicht nicht authentifizierten Benutzern, ein begrenztes Dashboard zu sehen und einfach auf die laufenden Apps auf deiner Instanz zuzugreifen.",
"SETTINGS_GENERAL_INTERNAL_IP": "Interne IP", "SETTINGS_GENERAL_INTERNAL_IP": "Interne IP",
"SETTINGS_GENERAL_INTERNAL_IP_HINT": "IP-Adresse, die Ihr Server abhört.", "SETTINGS_GENERAL_INTERNAL_IP_HINT": "IP-Adresse, die Ihr Server abhört.",
"SETTINGS_GENERAL_INVALID_DOMAIN": "Ungültige Domain", "SETTINGS_GENERAL_INVALID_DOMAIN": "Ungültige Domain",
@ -251,10 +258,10 @@
"SETTINGS_GENERAL_LANGUAGE": "Sprache", "SETTINGS_GENERAL_LANGUAGE": "Sprache",
"SETTINGS_GENERAL_LANGUAGE_HELP_TRANSLATE": "Beim Übersetzen helfen", "SETTINGS_GENERAL_LANGUAGE_HELP_TRANSLATE": "Beim Übersetzen helfen",
"SETTINGS_GENERAL_LOCAL_DOMAIN": "Local domain", "SETTINGS_GENERAL_LOCAL_DOMAIN": "Local domain",
"SETTINGS_GENERAL_LOCAL_DOMAIN_HINT": "Domain name used for accessing apps in your local network. Your apps will be accessible at app-name.local-domain.", "SETTINGS_GENERAL_LOCAL_DOMAIN_HINT": "Domainname für den Zugriff auf Apps in deinem lokalen Netzwerk. Deine Apps werden unter app-name.local-domain erreichbar sein.",
"SETTINGS_GENERAL_SETTINGS_UPDATED": "Einstellungen aktualisiert. Starten Sie Ihre Instanz neu, um die Einstellungen zu übernehmen.", "SETTINGS_GENERAL_SETTINGS_UPDATED": "Einstellungen aktualisiert. Starten Sie Ihre Instanz neu, um die Einstellungen zu übernehmen.",
"SETTINGS_GENERAL_STORAGE_PATH": "Speicherpfad", "SETTINGS_GENERAL_STORAGE_PATH": "Speicherpfad",
"SETTINGS_GENERAL_STORAGE_PATH_HINT": "Path to the storage directory. Make sure it is an absolute path and that it exists.", "SETTINGS_GENERAL_STORAGE_PATH_HINT": "Pfad zum Speicherverzeichnis. Stelle sicher, dass es ein absoluter Pfad ist und er existiert.",
"SETTINGS_GENERAL_SUBMIT": "Einstellungen aktualisieren", "SETTINGS_GENERAL_SUBMIT": "Einstellungen aktualisieren",
"SETTINGS_GENERAL_SUBTITLE": "Dadurch wird Ihre Datei settings.json aktualisiert. Stellen Sie sicher, dass Sie wissen, was Sie tun, bevor Sie diese Werte aktualisieren.", "SETTINGS_GENERAL_SUBTITLE": "Dadurch wird Ihre Datei settings.json aktualisiert. Stellen Sie sicher, dass Sie wissen, was Sie tun, bevor Sie diese Werte aktualisieren.",
"SETTINGS_GENERAL_TAB_TITLE": "Einstellungen", "SETTINGS_GENERAL_TAB_TITLE": "Einstellungen",
@ -265,15 +272,15 @@
"SETTINGS_SECURITY_2FA_SUBTITLE": "Zwei-Faktor Authentifizierung (2FA) fügt deinem Konto eine weitere Sicherheitsebene zu.", "SETTINGS_SECURITY_2FA_SUBTITLE": "Zwei-Faktor Authentifizierung (2FA) fügt deinem Konto eine weitere Sicherheitsebene zu.",
"SETTINGS_SECURITY_2FA_SUBTITLE_2": "Wenn aktiviert, werden Sie bei der Anmeldung aufgefordert, einen Code aus ihrer Authentifizierungs-App einzugeben.", "SETTINGS_SECURITY_2FA_SUBTITLE_2": "Wenn aktiviert, werden Sie bei der Anmeldung aufgefordert, einen Code aus ihrer Authentifizierungs-App einzugeben.",
"SETTINGS_SECURITY_2FA_TITLE": "Zwei-Faktor Authentifizierung", "SETTINGS_SECURITY_2FA_TITLE": "Zwei-Faktor Authentifizierung",
"SETTINGS_SECURITY_CHANGE_PASSWORD_SUBTITLE": "Changing your password will log you out of all devices.", "SETTINGS_SECURITY_CHANGE_PASSWORD_SUBTITLE": "Wenn du dein Passwort änderst, wirst du von allen Geräten abgemeldet.",
"SETTINGS_SECURITY_CHANGE_PASSWORD_TITLE": "Passwort ändern", "SETTINGS_SECURITY_CHANGE_PASSWORD_TITLE": "Passwort ändern",
"SETTINGS_SECURITY_CHANGE_USERNAME_FORM_INVALID_USERNAME": "Muss eine gültige E-Mail Adresse sein", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_INVALID_USERNAME": "Muss eine gültige E-Mail Adresse sein",
"SETTINGS_SECURITY_CHANGE_USERNAME_FORM_NEW_USERNAME": "Neuer Benutzername", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_NEW_USERNAME": "Neuer Benutzername",
"SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD": "Passwort", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD": "Passwort",
"SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD_NEEDED_HINT": "Your password is required to change your username.", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD_NEEDED_HINT": "Dein Passwort wird benötigt, um deinen Benutzernamen zu ändern.",
"SETTINGS_SECURITY_CHANGE_USERNAME_FORM_SUBMIT": "Benutzername ändern", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_SUBMIT": "Benutzername ändern",
"SETTINGS_SECURITY_CHANGE_USERNAME_SUBTITLE": "Changing your username will log you out of all devices.", "SETTINGS_SECURITY_CHANGE_USERNAME_SUBTITLE": "Wenn du deinen Benutzernamen änderst, wirst du von allen Geräten abgemeldet.",
"SETTINGS_SECURITY_CHANGE_USERNAME_SUCCESS": "Username changed successfully", "SETTINGS_SECURITY_CHANGE_USERNAME_SUCCESS": "Benutzername erfolgreich geändert",
"SETTINGS_SECURITY_CHANGE_USERNAME_TITLE": "Benutzername ändern", "SETTINGS_SECURITY_CHANGE_USERNAME_TITLE": "Benutzername ändern",
"SETTINGS_SECURITY_DISABLE_2FA": "Zwei-Faktor-Authentifizierung deaktivieren", "SETTINGS_SECURITY_DISABLE_2FA": "Zwei-Faktor-Authentifizierung deaktivieren",
"SETTINGS_SECURITY_ENABLE_2FA": "Zwei-Faktor-Authentifizierung aktivieren", "SETTINGS_SECURITY_ENABLE_2FA": "Zwei-Faktor-Authentifizierung aktivieren",
@ -291,10 +298,11 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Ihr Passwort wird benötigt, um die Zwei-Faktor-Authentifizierungseinstellungen zu ändern.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Ihr Passwort wird benötigt, um die Zwei-Faktor-Authentifizierungseinstellungen zu ändern.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scannen Sie diesen QR-Code mit Ihrer Authentifizierungs-App.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scannen Sie diesen QR-Code mit Ihrer Authentifizierungs-App.",
"SETTINGS_SECURITY_TAB_TITLE": "Sicherheit", "SETTINGS_SECURITY_TAB_TITLE": "Sicherheit",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Einstellungen", "SETTINGS_TITLE": "Einstellungen",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Konnte aktuellste Version nicht abfragen", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Konnte aktuellste Version nicht abfragen",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Die aktuelle Version ist bereits auf dem neuesten Stand", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Die aktuelle Version ist bereits auf dem neuesten Stand",
"SYSTEM_ERROR_DEMO_MODE_LIMIT": "Im Demo-Modus können nur 6 Apps installiert werden. Bitte deinstallieren Sie eine andere App, um eine neue zu installieren.", "SYSTEM_ERROR_DEMO_MODE_LIMIT": "Im Demo-Modus können nur 6 Apps installiert werden. Bitte deinstallieren Sie eine andere App, um eine neue zu installieren.",
"SYSTEM_ERROR_MAJOR_VERSION_UPDATE": "Die Hauptversion hat sich geändert. Bitte aktualisieren Sie manuell. (Anleitung auf GitHub)", "SYSTEM_ERROR_MAJOR_VERSION_UPDATE": "Die Hauptversion hat sich geändert. Bitte aktualisieren Sie manuell. (Anleitung auf GitHub)",
"SYSTEM_ERROR_YOU_MUST_BE_LOGGED_IN": "You must be logged in to perform this action" "SYSTEM_ERROR_YOU_MUST_BE_LOGGED_IN": "Du musst angemeldet sein, um diese Aktion auszuführen"
} }

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Εγκατάσταση", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Εγκατάσταση",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Ενημέρωση", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Ενημέρωση",
"APP_INSTALL_FORM_TITLE": "Εγκατάσταση {name}", "APP_INSTALL_FORM_TITLE": "Εγκατάσταση {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "Όλα τα δεδομένα αυτής της εφαρμογής θα χαθούν.", "APP_RESET_FORM_SUBTITLE": "Όλα τα δεδομένα αυτής της εφαρμογής θα χαθούν.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Εγγραφή του λογαριασμού σας", "AUTH_REGISTER_TITLE": "Εγγραφή του λογαριασμού σας",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Επιστροφή στη σελίδα εισόδου", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Επιστροφή στη σελίδα εισόδου",
"AUTH_RESET_PASSWORD_CANCEL": "Ακύρωση αιτήματος αλλαγής κωδικού πρόσβασης", "AUTH_RESET_PASSWORD_CANCEL": "Ακύρωση αιτήματος αλλαγής κωδικού πρόσβασης",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Εκτελέστε αυτήν την εντολή στο διακομιστή σας και στη συνέχεια ανανεώστε αυτή τη σελίδα", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Επαναφορά κωδικού πρόσβασης", "AUTH_RESET_PASSWORD_SUBMIT": "Επαναφορά κωδικού πρόσβασης",
"AUTH_RESET_PASSWORD_SUCCESS": "Ο κωδικός σας έχει επαναφερθεί. Μπορείτε τώρα να συνδεθείτε με τον καινούριο κωδικό πρόσβασης και τη διεύθυνση ηλεκτρονικού ταχυδρομείου {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Ο κωδικός σας έχει επαναφερθεί. Μπορείτε τώρα να συνδεθείτε με τον καινούριο κωδικό πρόσβασης και τη διεύθυνση ηλεκτρονικού ταχυδρομείου {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Επαναφορά κωδικού πρόσβασης", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Επαναφορά κωδικού πρόσβασης",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Απαιτείται κωδικός πρόσβασης για να αλλάξετε τις ρυθμίσεις ελέγχου ταυτότητας δύο βημάτων.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Απαιτείται κωδικός πρόσβασης για να αλλάξετε τις ρυθμίσεις ελέγχου ταυτότητας δύο βημάτων.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Σαρώστε αυτόν τον κώδικα QR με την εφαρμογή επαλήθευσης.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Σαρώστε αυτόν τον κώδικα QR με την εφαρμογή επαλήθευσης.",
"SETTINGS_SECURITY_TAB_TITLE": "Ασφάλεια", "SETTINGS_SECURITY_TAB_TITLE": "Ασφάλεια",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Ρυθμίσεις", "SETTINGS_TITLE": "Ρυθμίσεις",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Αδυναμία λήψης της τελευταίας έκδοσης", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Αδυναμία λήψης της τελευταίας έκδοσης",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Η τρέχουσα έκδοση είναι ενημερωμένη", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Η τρέχουσα έκδοση είναι ενημερωμένη",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update",
"APP_INSTALL_FORM_TITLE": "Install {name}", "APP_INSTALL_FORM_TITLE": "Install {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password",
"AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.",
"SETTINGS_SECURITY_TAB_TITLE": "Security", "SETTINGS_SECURITY_TAB_TITLE": "Security",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Settings", "SETTINGS_TITLE": "Settings",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date",

View File

@ -76,11 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Instalar", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Instalar",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Actualizar", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Actualizar",
"APP_INSTALL_FORM_TITLE": "Instalar {name}", "APP_INSTALL_FORM_TITLE": "Instalar {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Proxy inverso",
"APP_INSTALL_SUCCESS": "La aplicación {id} se instaló correctamente", "APP_INSTALL_SUCCESS": "La aplicación {id} se instaló correctamente",
"APP_LOGS_TAB_FOLLOW": "Seguir trazas", "APP_LOGS_TAB_FOLLOW": "Seguir trazas",
"APP_LOGS_TAB_MAX_LINES": "Maximo numero de líneas:", "APP_LOGS_TAB_MAX_LINES": "Líneas máximas:",
"APP_LOGS_TAB_TITLE": "Trazas", "APP_LOGS_TAB_TITLE": "Trazas",
"APP_LOGS_TAB_WRAP_LINES": "Ajustar líneas", "APP_LOGS_TAB_WRAP_LINES": "Ajustar líneas",
"APP_NEW": "NUEVA",
"APP_RESET_FORM_SUBMIT": "Restablecer", "APP_RESET_FORM_SUBMIT": "Restablecer",
"APP_RESET_FORM_SUBTITLE": "Todos los datos de esta aplicación se perderán.", "APP_RESET_FORM_SUBTITLE": "Todos los datos de esta aplicación se perderán.",
"APP_RESET_FORM_TITLE": "Restablecer {name}?", "APP_RESET_FORM_TITLE": "Restablecer {name}?",
@ -161,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Registre su cuenta", "AUTH_REGISTER_TITLE": "Registre su cuenta",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Volver al inicio de sesión", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Volver al inicio de sesión",
"AUTH_RESET_PASSWORD_CANCEL": "Cancelar cambio de contraseña", "AUTH_RESET_PASSWORD_CANCEL": "Cancelar cambio de contraseña",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Ejecuta este comando en tu servidor y luego actualiza esta página", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Ejecuta este comando en el servidor y recarga la página. Si ya has hecho esto previamente, es posible que la solicitud haya caducado. En ese caso, inténtelo de nuevo por favor",
"AUTH_RESET_PASSWORD_SUBMIT": "Restablecer contraseña", "AUTH_RESET_PASSWORD_SUBMIT": "Restablecer contraseña",
"AUTH_RESET_PASSWORD_SUCCESS": "Tu contraseña ha sido restablecida. Ahora puedes iniciar sesión con tu nueva contraseña. Y tu correo electrónico es {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Tu contraseña ha sido restablecida. Ahora puedes iniciar sesión con tu nueva contraseña. Y tu correo electrónico es {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Restablecimiento de contraseña", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Restablecimiento de contraseña",
@ -295,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Tu contraseña es necesaria para cambiar la configuración de autenticación de dos factores.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Tu contraseña es necesaria para cambiar la configuración de autenticación de dos factores.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Escanea este código QR con tu aplicación de autenticación.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Escanea este código QR con tu aplicación de autenticación.",
"SETTINGS_SECURITY_TAB_TITLE": "Seguridad", "SETTINGS_SECURITY_TAB_TITLE": "Seguridad",
"SETTINGS_LOGS_TAB_TITLE": "Trazas",
"SETTINGS_TITLE": "Configuración", "SETTINGS_TITLE": "Configuración",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "No se pudo obtener la última versión", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "No se pudo obtener la última versión",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "La versión ya está actualizada", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "La versión ya está actualizada",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update",
"APP_INSTALL_FORM_TITLE": "Install {name}", "APP_INSTALL_FORM_TITLE": "Install {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password",
"AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.",
"SETTINGS_SECURITY_TAB_TITLE": "Security", "SETTINGS_SECURITY_TAB_TITLE": "Security",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Settings", "SETTINGS_TITLE": "Settings",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Installer", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Installer",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Mettre à jour", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Mettre à jour",
"APP_INSTALL_FORM_TITLE": "Installer {name}", "APP_INSTALL_FORM_TITLE": "Installer {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "Application {id} installée avec succès", "APP_INSTALL_SUCCESS": "Application {id} installée avec succès",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NOUVEAU",
"APP_RESET_FORM_SUBMIT": "Réinitialiser", "APP_RESET_FORM_SUBMIT": "Réinitialiser",
"APP_RESET_FORM_SUBTITLE": "Toutes les données de cette application seront perdues.", "APP_RESET_FORM_SUBTITLE": "Toutes les données de cette application seront perdues.",
"APP_RESET_FORM_TITLE": "Réinitialiser {name} ?", "APP_RESET_FORM_TITLE": "Réinitialiser {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Créez votre compte", "AUTH_REGISTER_TITLE": "Créez votre compte",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Retour au login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Retour au login",
"AUTH_RESET_PASSWORD_CANCEL": "Annuler la demande de changement de mot de passe", "AUTH_RESET_PASSWORD_CANCEL": "Annuler la demande de changement de mot de passe",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Exécutez cette commande sur votre serveur, puis rafraîchissez cette page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Pour commencer, exécutez cette commande sur votre serveur puis actualisez cette page. Si vous l'avez déjà fait, la demande de réinitialisation du mot de passe peut avoir expiré. Dans ce cas, veuillez réessayer.",
"AUTH_RESET_PASSWORD_SUBMIT": "Réinitialiser", "AUTH_RESET_PASSWORD_SUBMIT": "Réinitialiser",
"AUTH_RESET_PASSWORD_SUCCESS": "Votre mot de passe a été réinitialisé. Vous pouvez maintenant vous connecter avec votre nouveau mot de passe. Et votre e-mail {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Votre mot de passe a été réinitialisé. Vous pouvez maintenant vous connecter avec votre nouveau mot de passe. Et votre e-mail {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Mot de passe réinitialisé", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Mot de passe réinitialisé",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Votre mot de passe est requis pour modifier les paramètres d'authentification à deux facteurs.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Votre mot de passe est requis pour modifier les paramètres d'authentification à deux facteurs.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scannez ce QR code avec votre application d'authentification.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scannez ce QR code avec votre application d'authentification.",
"SETTINGS_SECURITY_TAB_TITLE": "Sécurité", "SETTINGS_SECURITY_TAB_TITLE": "Sécurité",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Paramètres", "SETTINGS_TITLE": "Paramètres",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Impossible d'obtenir la dernière version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Impossible d'obtenir la dernière version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "La version actuelle est déjà à jour", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "La version actuelle est déjà à jour",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update",
"APP_INSTALL_FORM_TITLE": "Install {name}", "APP_INSTALL_FORM_TITLE": "Install {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password",
"AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.",
"SETTINGS_SECURITY_TAB_TITLE": "Security", "SETTINGS_SECURITY_TAB_TITLE": "Security",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Settings", "SETTINGS_TITLE": "Settings",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Telepítés", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Telepítés",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Frissítés", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Frissítés",
"APP_INSTALL_FORM_TITLE": "{name} telepítése", "APP_INSTALL_FORM_TITLE": "{name} telepítése",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "A(z) {id} alkalmazás sikeresen telepítve", "APP_INSTALL_SUCCESS": "A(z) {id} alkalmazás sikeresen telepítve",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Alaphelyzetbe állítás", "APP_RESET_FORM_SUBMIT": "Alaphelyzetbe állítás",
"APP_RESET_FORM_SUBTITLE": "Az alkalmazás összes adata elveszik.", "APP_RESET_FORM_SUBTITLE": "Az alkalmazás összes adata elveszik.",
"APP_RESET_FORM_TITLE": "Alaphelyzetbe állítod a következőt: {name} ?", "APP_RESET_FORM_TITLE": "Alaphelyzetbe állítod a következőt: {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Fiók regisztráció", "AUTH_REGISTER_TITLE": "Fiók regisztráció",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Vissza a belépéshez", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Vissza a belépéshez",
"AUTH_RESET_PASSWORD_CANCEL": "Jelszómódosítási kérés visszavonása", "AUTH_RESET_PASSWORD_CANCEL": "Jelszómódosítási kérés visszavonása",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Futtassa ezt a parancsot a szerverén, majd frissítse ezt az oldalt", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Jelszó visszaállítása", "AUTH_RESET_PASSWORD_SUBMIT": "Jelszó visszaállítása",
"AUTH_RESET_PASSWORD_SUCCESS": "A jelszava vissza lett állítva. Most már bejelentkezhet az új jelszavával. Ez az e-mail címe {email}", "AUTH_RESET_PASSWORD_SUCCESS": "A jelszava vissza lett állítva. Most már bejelentkezhet az új jelszavával. Ez az e-mail címe {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Jelszó visszaállítása", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Jelszó visszaállítása",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "A kétlépcsős hitelesítési beállítások megváltoztatásához szükséges a jelszavad.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "A kétlépcsős hitelesítési beállítások megváltoztatásához szükséges a jelszavad.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Ezt a QR kódot kell beolvasni a hitelesítő alkalmazással.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Ezt a QR kódot kell beolvasni a hitelesítő alkalmazással.",
"SETTINGS_SECURITY_TAB_TITLE": "Biztonság", "SETTINGS_SECURITY_TAB_TITLE": "Biztonság",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Beállítások", "SETTINGS_TITLE": "Beállítások",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Nem sikerült letölteni a legújabb verziót", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Nem sikerült letölteni a legújabb verziót",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "A jelenlegi verzió már naprakész", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "A jelenlegi verzió már naprakész",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Installa", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Installa",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Aggiorna", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Aggiorna",
"APP_INSTALL_FORM_TITLE": "Installa {name}", "APP_INSTALL_FORM_TITLE": "Installa {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installata con successo", "APP_INSTALL_SUCCESS": "App {id} installata con successo",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "Tutti i dati relativi a questa app verranno persi.", "APP_RESET_FORM_SUBTITLE": "Tutti i dati relativi a questa app verranno persi.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Crea un nuovo account", "AUTH_REGISTER_TITLE": "Crea un nuovo account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Torna alla pagina di login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Torna alla pagina di login",
"AUTH_RESET_PASSWORD_CANCEL": "Annulla richiesta di cambio password", "AUTH_RESET_PASSWORD_CANCEL": "Annulla richiesta di cambio password",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Esegui questo comando sul tuo server e poi aggiorna questa pagina", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Resetta password", "AUTH_RESET_PASSWORD_SUBMIT": "Resetta password",
"AUTH_RESET_PASSWORD_SUCCESS": "La tua password è stata resettata. Ora puoi accedere con la tua nuova password. E la tua email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "La tua password è stata resettata. Ora puoi accedere con la tua nuova password. E la tua email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Resettata la password", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Resettata la password",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "La tua password è richiesta per cambiare le impostazioni relative all'autenticazione a due fattori.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "La tua password è richiesta per cambiare le impostazioni relative all'autenticazione a due fattori.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scansiona questo codice QR con la tua app di autenticazione.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scansiona questo codice QR con la tua app di autenticazione.",
"SETTINGS_SECURITY_TAB_TITLE": "Sicurezza", "SETTINGS_SECURITY_TAB_TITLE": "Sicurezza",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Impostazioni", "SETTINGS_TITLE": "Impostazioni",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Impossibile ottenere l'ultima versione", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Impossibile ottenere l'ultima versione",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "La versione corrente è già la più recente", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "La versione corrente è già la più recente",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "インストール", "APP_INSTALL_FORM_SUBMIT_INSTALL": "インストール",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "更新", "APP_INSTALL_FORM_SUBMIT_UPDATE": "更新",
"APP_INSTALL_FORM_TITLE": "{name} をインストール", "APP_INSTALL_FORM_TITLE": "{name} をインストール",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "このアプリのすべてのデータが失われます。", "APP_RESET_FORM_SUBTITLE": "このアプリのすべてのデータが失われます。",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "アカウントを作成", "AUTH_REGISTER_TITLE": "アカウントを作成",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "ログインページへ戻る", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "ログインページへ戻る",
"AUTH_RESET_PASSWORD_CANCEL": "パスワード変更リクエストをキャンセルする", "AUTH_RESET_PASSWORD_CANCEL": "パスワード変更リクエストをキャンセルする",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "サーバーでこのコマンドを実行してから、このページを更新してください", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "パスワードをリセット", "AUTH_RESET_PASSWORD_SUBMIT": "パスワードをリセット",
"AUTH_RESET_PASSWORD_SUCCESS": "パスワードがリセットされました。新しいパスワードでログインできるようになりました。そして、メールアドレス {email}", "AUTH_RESET_PASSWORD_SUCCESS": "パスワードがリセットされました。新しいパスワードでログインできるようになりました。そして、メールアドレス {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "パスワードをリセットする", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "パスワードをリセットする",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "二段階認証の設定を変更するにはパスワードが必要です。", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "二段階認証の設定を変更するにはパスワードが必要です。",
"SETTINGS_SECURITY_SCAN_QR_CODE": "認証アプリでQRコードをスキャンして下さい。", "SETTINGS_SECURITY_SCAN_QR_CODE": "認証アプリでQRコードをスキャンして下さい。",
"SETTINGS_SECURITY_TAB_TITLE": "セキュリティ", "SETTINGS_SECURITY_TAB_TITLE": "セキュリティ",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "設定", "SETTINGS_TITLE": "設定",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "最新バージョンを取得できませんでした", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "最新バージョンを取得できませんでした",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "現在のバージョンは既に最新です", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "現在のバージョンは既に最新です",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update",
"APP_INSTALL_FORM_TITLE": "Install {name}", "APP_INSTALL_FORM_TITLE": "Install {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password",
"AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.",
"SETTINGS_SECURITY_TAB_TITLE": "Security", "SETTINGS_SECURITY_TAB_TITLE": "Security",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Settings", "SETTINGS_TITLE": "Settings",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update",
"APP_INSTALL_FORM_TITLE": "Install {name}", "APP_INSTALL_FORM_TITLE": "Install {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password",
"AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.",
"SETTINGS_SECURITY_TAB_TITLE": "Security", "SETTINGS_SECURITY_TAB_TITLE": "Security",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Settings", "SETTINGS_TITLE": "Settings",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update",
"APP_INSTALL_FORM_TITLE": "Install {name}", "APP_INSTALL_FORM_TITLE": "Install {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password",
"AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.",
"SETTINGS_SECURITY_TAB_TITLE": "Security", "SETTINGS_SECURITY_TAB_TITLE": "Security",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Settings", "SETTINGS_TITLE": "Settings",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Zainstaluj", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Zainstaluj",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Aktualizuj", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Aktualizuj",
"APP_INSTALL_FORM_TITLE": "Zainstaluj {name}", "APP_INSTALL_FORM_TITLE": "Zainstaluj {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "Wszystkie dane tej aplikacji zostaną utracone.", "APP_RESET_FORM_SUBTITLE": "Wszystkie dane tej aplikacji zostaną utracone.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Uruchom to polecenie na swoim serwerze, a następnie odśwież tę stronę", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Zresetuj hasło", "AUTH_RESET_PASSWORD_SUBMIT": "Zresetuj hasło",
"AUTH_RESET_PASSWORD_SUCCESS": "Twoje hasło zostało zresetowane. Możesz teraz zalogować się przy użyciu nowego hasła. I e-mail {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Twoje hasło zostało zresetowane. Możesz teraz zalogować się przy użyciu nowego hasła. I e-mail {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Resetowanie hasła", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Resetowanie hasła",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Twoje hasło jest wymagane do zmiany ustawień weryfikacji dwuetapowej.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Twoje hasło jest wymagane do zmiany ustawień weryfikacji dwuetapowej.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Zeskanuj ten kod QR za pomocą aplikacji uwierzytelniającej.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Zeskanuj ten kod QR za pomocą aplikacji uwierzytelniającej.",
"SETTINGS_SECURITY_TAB_TITLE": "Bezpieczeństwo", "SETTINGS_SECURITY_TAB_TITLE": "Bezpieczeństwo",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Ustawienia", "SETTINGS_TITLE": "Ustawienia",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Nie udało się pobrać najnowszej wersji", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Nie udało się pobrać najnowszej wersji",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Bieżąca wersja jest już aktualna", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Bieżąca wersja jest już aktualna",

View File

@ -59,28 +59,35 @@
"APP_INSTALL_FORM_ERROR_BETWEEN_LENGTH": "{label} Deve ter entre {min} e {max} caracteres", "APP_INSTALL_FORM_ERROR_BETWEEN_LENGTH": "{label} Deve ter entre {min} e {max} caracteres",
"APP_INSTALL_FORM_ERROR_FQDN": "{label} Deve ser um domínio válido", "APP_INSTALL_FORM_ERROR_FQDN": "{label} Deve ser um domínio válido",
"APP_INSTALL_FORM_ERROR_FQDNIP": "{label} Deve ser um domínio ou endereço IP válido", "APP_INSTALL_FORM_ERROR_FQDNIP": "{label} Deve ser um domínio ou endereço IP válido",
"APP_INSTALL_FORM_ERROR_INVALID_EMAIL": "Deve ser um endereço de e-mail válido", "APP_INSTALL_FORM_ERROR_INVALID_EMAIL": "{label} Deve ser um endereço de e-mail válido",
"APP_INSTALL_FORM_ERROR_IP": "O endereço IP não é válido", "APP_INSTALL_FORM_ERROR_IP": "{label} O endereço IP não é válido",
"APP_INSTALL_FORM_ERROR_MAX_LENGTH": "{label} Deve ter entre {min} e {max} caracteres", "APP_INSTALL_FORM_ERROR_MAX_LENGTH": "{label} Deve ter entre {min} e {max} caracteres",
"APP_INSTALL_FORM_ERROR_MIN_LENGTH": "{label} deve ter pelo menos {min} caracteres", "APP_INSTALL_FORM_ERROR_MIN_LENGTH": "{label} Deve ter pelo menos {min} caracteres",
"APP_INSTALL_FORM_ERROR_NUMBER": "{label} deve ser um número", "APP_INSTALL_FORM_ERROR_NUMBER": "{label} Deve ser um número",
"APP_INSTALL_FORM_ERROR_REGEX": "{label} deve corresponder ao padrão {pattern}", "APP_INSTALL_FORM_ERROR_REGEX": "{label} Deve corresponder ao padrão {pattern}",
"APP_INSTALL_FORM_ERROR_REQUIRED": "{label} É obrigatório", "APP_INSTALL_FORM_ERROR_REQUIRED": "{label} É obrigatório",
"APP_INSTALL_FORM_ERROR_URL": "{label} Deve ser um endereço válido", "APP_INSTALL_FORM_ERROR_URL": "{label} Deve ser um endereço válido",
"APP_INSTALL_FORM_EXPOSE_APP": "Tornar aplicação pública", "APP_INSTALL_FORM_EXPOSE_APP": "Tornar aplicação pública",
"APP_INSTALL_FORM_OPEN_PORT": "Abrir porta", "APP_INSTALL_FORM_OPEN_PORT": "Abrir porta",
"APP_INSTALL_FORM_OPEN_PORT_HINT": "Abrir uma porta no host? Este aplicativo será acessível em {internalIp}:{port}. (Mais fácil, mas menos seguro)", "APP_INSTALL_FORM_OPEN_PORT_HINT": "Abrir uma porta nesse endereço? Este aplicativo será acessível em {internalIp}:{port}. (Mais fácil, mas menos seguro)",
"APP_INSTALL_FORM_EXPOSE_LOCAL": "Expor o aplicativo na rede local", "APP_INSTALL_FORM_EXPOSE_LOCAL": "Tornar acessível apenas na rede local",
"APP_INSTALL_FORM_EXPOSE_LOCAL_HINT": "Expor o aplicativo na rede local? Este aplicativo estará acessível em {appId}.{domain}. (Visite a página de configurações para configurar seu domínio local)", "APP_INSTALL_FORM_EXPOSE_LOCAL_HINT": "Expor o aplicativo na rede local? Este aplicativo estará acessível em {appId}.{domain}. (Visite a página de configurações para configurar seu domínio local)",
"APP_INSTALL_FORM_RESET": "Redefinir o aplicativo", "APP_INSTALL_FORM_RESET": "Redefinir o aplicativo",
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Instalar", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Instalar",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Atualizar", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Atualizar",
"APP_INSTALL_FORM_TITLE": "Instalar {name}", "APP_INSTALL_FORM_TITLE": "Instalar {name}",
"APP_INSTALL_FORM_GENERAL": "Geral",
"APP_INSTALL_FORM_REVERSE_PROXY": "Proxy Reverso",
"APP_INSTALL_SUCCESS": "Aplicativo {id} instalado com sucesso", "APP_INSTALL_SUCCESS": "Aplicativo {id} instalado com sucesso",
"APP_LOGS_TAB_FOLLOW": "Seguir registros",
"APP_LOGS_TAB_MAX_LINES": "Máximo de linhas",
"APP_LOGS_TAB_TITLE": "Registros",
"APP_LOGS_TAB_WRAP_LINES": "Ajuste de linha automático",
"APP_NEW": "NOVO",
"APP_RESET_FORM_SUBMIT": "Redefinir", "APP_RESET_FORM_SUBMIT": "Redefinir",
"APP_RESET_FORM_SUBTITLE": "Todos os dados deste aplicativo serão perdidos.", "APP_RESET_FORM_SUBTITLE": "Todos os dados deste aplicativo serão perdidos.",
"APP_RESET_FORM_TITLE": "Redefinir {name} ?", "APP_RESET_FORM_TITLE": "Redefinir {name} ?",
"APP_RESET_FORM_WARNING": "Confirma? essa ação não poderá ser desfeita.", "APP_RESET_FORM_WARNING": "Confirma? Essa ação não poderá ser desfeita.",
"APP_RESET_SUCCESS": "App {id} redefinido com sucesso", "APP_RESET_SUCCESS": "App {id} redefinido com sucesso",
"APP_START_SUCCESS": "App {id} iniciado com sucesso", "APP_START_SUCCESS": "App {id} iniciado com sucesso",
"APP_STATUS_INSTALLING": "Instalando", "APP_STATUS_INSTALLING": "Instalando",
@ -95,7 +102,7 @@
"APP_STATUS_UPDATING": "Atualizando", "APP_STATUS_UPDATING": "Atualizando",
"APP_STOP_FORM_SUBMIT": "Parar", "APP_STOP_FORM_SUBMIT": "Parar",
"APP_STOP_FORM_SUBTITLE": "Todos os dados serão removidos", "APP_STOP_FORM_SUBTITLE": "Todos os dados serão removidos",
"APP_STOP_FORM_TITLE": "Parar {name}?", "APP_STOP_FORM_TITLE": "Interromper {name}?",
"APP_STOP_SUCCESS": "O aplicativo {id} foi interrompido com sucesso", "APP_STOP_SUCCESS": "O aplicativo {id} foi interrompido com sucesso",
"APP_RESTART_FORM_SUBMIT": "Reiniciar", "APP_RESTART_FORM_SUBMIT": "Reiniciar",
"APP_RESTART_FORM_SUBTITLE": "Todos os dados serão apagados", "APP_RESTART_FORM_SUBTITLE": "Todos os dados serão apagados",
@ -112,7 +119,7 @@
"APP_UNINSTALL_FORM_WARNING": "Tem certeza? Esta ação não pode ser desfeita.", "APP_UNINSTALL_FORM_WARNING": "Tem certeza? Esta ação não pode ser desfeita.",
"APP_UNINSTALL_SUCCESS": "App {id} desinstalado com sucesso", "APP_UNINSTALL_SUCCESS": "App {id} desinstalado com sucesso",
"APP_UPDATE_CONFIG_SUCCESS": "Configuração do aplicativo atualizada com sucesso. Reinicie o aplicativo para aplicar as alterações", "APP_UPDATE_CONFIG_SUCCESS": "Configuração do aplicativo atualizada com sucesso. Reinicie o aplicativo para aplicar as alterações",
"APP_UPDATE_ERROR_MIN_TIPI_VERSION": "App {id} update requires Tipi version {minVersion} or higher. Please update your instance.", "APP_UPDATE_ERROR_MIN_TIPI_VERSION": "A atualização do aplicativo {id} requer a versão do Tipi {minVersion} ou superior. Por favor, atualize sua instância.",
"APP_UPDATE_FORM_SUBMIT": "Atualizar", "APP_UPDATE_FORM_SUBMIT": "Atualizar",
"APP_UPDATE_FORM_SUBTITLE_1": "Atualize o aplicativo para a última versão :", "APP_UPDATE_FORM_SUBTITLE_1": "Atualize o aplicativo para a última versão :",
"APP_UPDATE_FORM_SUBTITLE_2": "Certifique-se de ter lido as notas de lançamento do app e de ter feito backup dos dados do seu aplicativo.", "APP_UPDATE_FORM_SUBTITLE_2": "Certifique-se de ter lido as notas de lançamento do app e de ter feito backup dos dados do seu aplicativo.",
@ -132,15 +139,15 @@
"AUTH_ERROR_TOTP_INVALID_CODE": "Código 2FA inválido", "AUTH_ERROR_TOTP_INVALID_CODE": "Código 2FA inválido",
"AUTH_ERROR_TOTP_NOT_ENABLED": "2FA não está habilitado para esse usuário", "AUTH_ERROR_TOTP_NOT_ENABLED": "2FA não está habilitado para esse usuário",
"AUTH_ERROR_TOTP_SESSION_NOT_FOUND": "Sessão 2FA não encontrado", "AUTH_ERROR_TOTP_SESSION_NOT_FOUND": "Sessão 2FA não encontrado",
"AUTH_ERROR_USER_ALREADY_EXISTS": "Usuário já existe", "AUTH_ERROR_USER_ALREADY_EXISTS": "Usuário já existente ",
"AUTH_ERROR_USER_NOT_FOUND": "Usuário não encontrado", "AUTH_ERROR_USER_NOT_FOUND": "Usuário não encontrado",
"AUTH_FORM_EMAIL": "Endereço de e-mail", "AUTH_FORM_EMAIL": "Endereço de e-mail",
"AUTH_FORM_EMAIL_PLACEHOLDER": "voce@exemplo.com", "AUTH_FORM_EMAIL_PLACEHOLDER": "voce@exemplo.com",
"AUTH_FORM_ERROR_EMAIL_EMAIL": "O endereço de e-mail é inválido", "AUTH_FORM_ERROR_EMAIL_EMAIL": "O endereço de e-mail é inválido",
"AUTH_FORM_ERROR_EMAIL_INVALID": "O endereço de e-mail é inválido", "AUTH_FORM_ERROR_EMAIL_INVALID": "O endereço de e-mail é inválido",
"AUTH_FORM_ERROR_EMAIL_REQUIRED": "E-mail é obrigatório", "AUTH_FORM_ERROR_EMAIL_REQUIRED": "O endereço de e-mail é obrigatório",
"AUTH_FORM_ERROR_PASSWORD_CONFIRMATION_LENGTH": "A confirmação da senha deve ter pelo menos 8 caracteres", "AUTH_FORM_ERROR_PASSWORD_CONFIRMATION_LENGTH": "A confirmação da senha deve ter pelo menos 8 caracteres",
"AUTH_FORM_ERROR_PASSWORD_CONFIRMATION_MATCH": "As senhas não conferem", "AUTH_FORM_ERROR_PASSWORD_CONFIRMATION_MATCH": "As senhas não são iguais",
"AUTH_FORM_ERROR_PASSWORD_CONFIRMATION_REQUIRED": "Confirmação de senha é necessária", "AUTH_FORM_ERROR_PASSWORD_CONFIRMATION_REQUIRED": "Confirmação de senha é necessária",
"AUTH_FORM_ERROR_PASSWORD_LENGTH": "A senha deve ter pelo menos 8 caracteres", "AUTH_FORM_ERROR_PASSWORD_LENGTH": "A senha deve ter pelo menos 8 caracteres",
"AUTH_FORM_ERROR_PASSWORD_REQUIRED": "A senha é obrigatória", "AUTH_FORM_ERROR_PASSWORD_REQUIRED": "A senha é obrigatória",
@ -151,13 +158,13 @@
"AUTH_FORM_PASSWORD_CONFIRMATION": "Confirme a senha", "AUTH_FORM_PASSWORD_CONFIRMATION": "Confirme a senha",
"AUTH_FORM_PASSWORD_CONFIRMATION_PLACEHOLDER": "Confirme sua senha", "AUTH_FORM_PASSWORD_CONFIRMATION_PLACEHOLDER": "Confirme sua senha",
"AUTH_FORM_PASSWORD_PLACEHOLDER": "Digite sua senha", "AUTH_FORM_PASSWORD_PLACEHOLDER": "Digite sua senha",
"AUTH_LOGIN_SUBMIT": "Entrar", "AUTH_LOGIN_SUBMIT": "Acessar",
"AUTH_LOGIN_TITLE": "Entrar na sua conta", "AUTH_LOGIN_TITLE": "Entrar na sua conta",
"AUTH_REGISTER_SUBMIT": "Registrar", "AUTH_REGISTER_SUBMIT": "Registrar",
"AUTH_REGISTER_TITLE": "Crie sua conta", "AUTH_REGISTER_TITLE": "Crie sua conta",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Voltar para o login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Voltar para o login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancelar solicitação de alteração de senha", "AUTH_RESET_PASSWORD_CANCEL": "Cancelar solicitação de alteração de senha",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Execute este comando em seu servidor e depois atualize a página", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Para começar, execute este comando em seu servidor e depois atualize esta página. Se você já fez isso anteriormente, a solicitação de redefinição de senha pode ter expirado. Nesse caso, por favor, tente novamente",
"AUTH_RESET_PASSWORD_SUBMIT": "Redefinir senha", "AUTH_RESET_PASSWORD_SUBMIT": "Redefinir senha",
"AUTH_RESET_PASSWORD_SUCCESS": "Sua senha foi atualizada com sucesso, Agora você pode utilizar sua nova senha e seu e-mail {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Sua senha foi atualizada com sucesso, Agora você pode utilizar sua nova senha e seu e-mail {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Senha atualizada", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Senha atualizada",
@ -165,15 +172,15 @@
"AUTH_TOTP_INSTRUCTIONS": "Insira o código de autenticação", "AUTH_TOTP_INSTRUCTIONS": "Insira o código de autenticação",
"AUTH_TOTP_SUBMIT": "Aceitar", "AUTH_TOTP_SUBMIT": "Aceitar",
"AUTH_TOTP_TITLE": "Autenticação de 3 fatores", "AUTH_TOTP_TITLE": "Autenticação de 3 fatores",
"COMMON_CLOSE": "Close", "COMMON_CLOSE": "Finalizar",
"DASHBOARD_CPU_SUBTITLE": "Desinstale aplicativos para reduzir a carga", "DASHBOARD_CPU_SUBTITLE": "Desinstale aplicativos para reduzir a carga",
"DASHBOARD_CPU_TITLE": "Utilização do Processador", "DASHBOARD_CPU_TITLE": "Utilização do Processador",
"DASHBOARD_DISK_SPACE_SUBTITLE": "Espaço disponível {total} GB", "DASHBOARD_DISK_SPACE_SUBTITLE": "Espaço disponível {total} GB",
"DASHBOARD_DISK_SPACE_TITLE": "Espaço total em disco", "DASHBOARD_DISK_SPACE_TITLE": "Espaço total em disco",
"DASHBOARD_MEMORY_TITLE": "Memória utilizada", "DASHBOARD_MEMORY_TITLE": "Memória utilizada",
"DASHBOARD_TITLE": "Painel de controle", "DASHBOARD_TITLE": "Painel de controle",
"DASHBOARD_IP_WARNING_TITLE": "Insecure configuration", "DASHBOARD_IP_WARNING_TITLE": "Configuração insegura",
"DASHBOARD_IP_WARNING": "Warning, you might be at risk! it looks like you are accessing your instance through a public IP address. This makes your dashboard and all apps that you install vulnerable to attackers", "DASHBOARD_IP_WARNING": "Atenção, você pode estar em risco! Parece que você está acessando sua instância através de um endereço IP público. Isso torna seu painel e todos os aplicativos que você instala vulneráveis a ataques",
"GUEST_DASHBOARD": "Painel de controle para visitantes", "GUEST_DASHBOARD": "Painel de controle para visitantes",
"GUEST_DASHBOARD_NO_APPS": "Nenhum aplicativo instalado", "GUEST_DASHBOARD_NO_APPS": "Nenhum aplicativo instalado",
"GUEST_DASHBOARD_NO_APPS_SUBTITLE": "Peça ao seu administrador para adicionar aplicativos ao painel de visitantes ou fazer login para ver seus aplicativos.", "GUEST_DASHBOARD_NO_APPS_SUBTITLE": "Peça ao seu administrador para adicionar aplicativos ao painel de visitantes ou fazer login para ver seus aplicativos.",
@ -202,14 +209,14 @@
"LINKS_EDIT_SUBMIT": "Salvar", "LINKS_EDIT_SUBMIT": "Salvar",
"LINKS_EDIT_SUCCESS": "Link editado com sucesso", "LINKS_EDIT_SUCCESS": "Link editado com sucesso",
"LINKS_EDIT_TITLE": "Editar link", "LINKS_EDIT_TITLE": "Editar link",
"LINKS_FORM_ICON_PLACEHOLDER": "Link URL da logo", "LINKS_FORM_ICON_PLACEHOLDER": "URL da logo",
"LINKS_FORM_ICON_URL": "URL do ícone", "LINKS_FORM_ICON_URL": "URL do ícone",
"LINKS_FORM_LINK_TITLE": "Título do link", "LINKS_FORM_LINK_TITLE": "Título do link",
"LINKS_FORM_LINK_URL": "URL do link", "LINKS_FORM_LINK_URL": "URL do link",
"LINKS_FROM_LINK_DESCRIPTION": "Descrição do link", "LINKS_FROM_LINK_DESCRIPTION": "Descrição do link",
"MY_APPS_DEPRECATED": "Este aplicativo está obsoleto", "MY_APPS_DEPRECATED": "Esse aplicativo foi descontinuado",
"MY_APPS_EMPTY_ACTION": "Ir para a App Store", "MY_APPS_EMPTY_ACTION": "Ir para a App Store",
"MY_APPS_EMPTY_SUBTITLE": "Instale um aplicativo da loja de aplicativos para começar", "MY_APPS_EMPTY_SUBTITLE": "Instale uma aplicação na loja de aplicativos para começar",
"MY_APPS_EMPTY_TITLE": "Nenhum aplicativo instalado", "MY_APPS_EMPTY_TITLE": "Nenhum aplicativo instalado",
"MY_APPS_TITLE": "Meus aplicativos", "MY_APPS_TITLE": "Meus aplicativos",
"MY_APPS_UPDATE_ALL_FORM_SUBMIT": "Atualizar tudo", "MY_APPS_UPDATE_ALL_FORM_SUBMIT": "Atualizar tudo",
@ -217,12 +224,12 @@
"MY_APPS_UPDATE_ALL_FORM_SUBTITLE_2": "Isso atualizará todos os seus aplicativos para a versão mais recente. Certifique-se de ter lido as notas de lançamento dos aplicativos e ter feito backup dos dados do seu aplicativo.", "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_2": "Isso atualizará todos os seus aplicativos para a versão mais recente. Certifique-se de ter lido as notas de lançamento dos aplicativos e ter feito backup dos dados do seu aplicativo.",
"MY_APPS_UPDATE_ALL_FORM_TITLE": "Atualizar todos os aplicativos", "MY_APPS_UPDATE_ALL_FORM_TITLE": "Atualizar todos os aplicativos",
"MY_APPS_UPDATE_ALL_IN_PROGRESS": "Atualizando todos os aplicativos", "MY_APPS_UPDATE_ALL_IN_PROGRESS": "Atualizando todos os aplicativos",
"MY_APPS_UPDATE_AVAILABLE": "Atualização Disponível", "MY_APPS_UPDATE_AVAILABLE": "Atualização disponível",
"RUNTIPI": "Runtipi", "RUNTIPI": "Runtipi",
"SERVER_ERROR_INVALID_LOCALE": "Idioma inválido", "SERVER_ERROR_INVALID_LOCALE": "Idioma inválido",
"SERVER_ERROR_NOT_ALLOWED_IN_DEMO": "Não é permitido no modo demonstração", "SERVER_ERROR_NOT_ALLOWED_IN_DEMO": "Não é permitido no modo demonstração",
"SERVER_ERROR_NOT_ALLOWED_IN_DEV": "Não permitido no modo de desenvolvimento", "SERVER_ERROR_NOT_ALLOWED_IN_DEV": "Não permitido no modo de desenvolvimento",
"SETTINGS_ACTIONS_ALREADY_LATEST": "Já está atualizado", "SETTINGS_ACTIONS_ALREADY_LATEST": "Você já está na última versão",
"SETTINGS_ACTIONS_CURRENT_VERSION": "Versão atual: {version}", "SETTINGS_ACTIONS_CURRENT_VERSION": "Versão atual: {version}",
"SETTINGS_ACTIONS_MAINTENANCE_SUBTITLE": "Ações comuns a serem realizadas em sua instância", "SETTINGS_ACTIONS_MAINTENANCE_SUBTITLE": "Ações comuns a serem realizadas em sua instância",
"SETTINGS_ACTIONS_MAINTENANCE_TITLE": "Manutenção", "SETTINGS_ACTIONS_MAINTENANCE_TITLE": "Manutenção",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Sua senha é necessária para alterar as configurações de autenticação em duas etapas.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Sua senha é necessária para alterar as configurações de autenticação em duas etapas.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Escaneie este código de barras com\nseu aplicativo autenticador.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Escaneie este código de barras com\nseu aplicativo autenticador.",
"SETTINGS_SECURITY_TAB_TITLE": "Segurança", "SETTINGS_SECURITY_TAB_TITLE": "Segurança",
"SETTINGS_LOGS_TAB_TITLE": "Registros",
"SETTINGS_TITLE": "Configurações", "SETTINGS_TITLE": "Configurações",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Error ao baixar atualização", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Error ao baixar atualização",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "A versão atual já está atualizada", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "A versão atual já está atualizada",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Instalar", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Instalar",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Atualizar", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Atualizar",
"APP_INSTALL_FORM_TITLE": "Instalar {name}", "APP_INSTALL_FORM_TITLE": "Instalar {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "Todos os dados deste aplicativo serão perdidos.", "APP_RESET_FORM_SUBTITLE": "Todos os dados deste aplicativo serão perdidos.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Registre a sua conta", "AUTH_REGISTER_TITLE": "Registre a sua conta",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Voltar ao início de sessão", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Voltar ao início de sessão",
"AUTH_RESET_PASSWORD_CANCEL": "Cancelar solicitação de alteração de senha", "AUTH_RESET_PASSWORD_CANCEL": "Cancelar solicitação de alteração de senha",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Execute este comando no seu servidor e, em seguida, atualize esta página", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Repor palavra-passe", "AUTH_RESET_PASSWORD_SUBMIT": "Repor palavra-passe",
"AUTH_RESET_PASSWORD_SUCCESS": "Sua senha foi redefinida. Agora você pode acessar com a sua nova senha. E seu e-mail {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Sua senha foi redefinida. Agora você pode acessar com a sua nova senha. E seu e-mail {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Redefinir palavra-passe", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Redefinir palavra-passe",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "A sua senha é necessária para alterar as configurações de autenticação de dois fatores.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "A sua senha é necessária para alterar as configurações de autenticação de dois fatores.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Digitalize este código QR com o seu aplicativo de autenticação.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Digitalize este código QR com o seu aplicativo de autenticação.",
"SETTINGS_SECURITY_TAB_TITLE": "Segurança", "SETTINGS_SECURITY_TAB_TITLE": "Segurança",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Configurações", "SETTINGS_TITLE": "Configurações",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Não foi possível obter a versão recente", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Não foi possível obter a versão recente",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "A versão atual já é atualizada", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "A versão atual já é atualizada",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Instalare", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Instalare",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Actualizare", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Actualizare",
"APP_INSTALL_FORM_TITLE": "Instalează {name}", "APP_INSTALL_FORM_TITLE": "Instalează {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "Toate datele pentru această aplicație vor fi pierdute.", "APP_RESET_FORM_SUBTITLE": "Toate datele pentru această aplicație vor fi pierdute.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Înregistrați-vă contul", "AUTH_REGISTER_TITLE": "Înregistrați-vă contul",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Inapoi la autentificare", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Inapoi la autentificare",
"AUTH_RESET_PASSWORD_CANCEL": "Anulează cererea de modificare a parolei", "AUTH_RESET_PASSWORD_CANCEL": "Anulează cererea de modificare a parolei",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Rulează această comandă pe serverul tău și apoi reîmprospătează această pagină", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Resetare parola", "AUTH_RESET_PASSWORD_SUBMIT": "Resetare parola",
"AUTH_RESET_PASSWORD_SUCCESS": "Parola ta a fost resetată. Acum te poți conecta cu noua ta parolă. Și adresa de e-mail {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Parola ta a fost resetată. Acum te poți conecta cu noua ta parolă. Și adresa de e-mail {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Parolă resetată", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Parolă resetată",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Parola dvs. este necesară pentru a schimba setările de autentificare cu doi factori.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Parola dvs. este necesară pentru a schimba setările de autentificare cu doi factori.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scanați acest cod QR cu aplicația de autentificare.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scanați acest cod QR cu aplicația de autentificare.",
"SETTINGS_SECURITY_TAB_TITLE": "Securitate", "SETTINGS_SECURITY_TAB_TITLE": "Securitate",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Setări", "SETTINGS_TITLE": "Setări",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Nu s-a putut obține cea mai recentă versiune", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Nu s-a putut obține cea mai recentă versiune",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Versiunea curentă este deja actualizată", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Versiunea curentă este deja actualizată",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Установить", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Установить",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Обновить", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Обновить",
"APP_INSTALL_FORM_TITLE": "Установить {name}", "APP_INSTALL_FORM_TITLE": "Установить {name}",
"APP_INSTALL_FORM_GENERAL": "Общее",
"APP_INSTALL_FORM_REVERSE_PROXY": "Обратный прокси",
"APP_INSTALL_SUCCESS": "Приложение {id} успешно установлено", "APP_INSTALL_SUCCESS": "Приложение {id} успешно установлено",
"APP_LOGS_TAB_FOLLOW": "Следить за логами",
"APP_LOGS_TAB_MAX_LINES": "Максимум строк:",
"APP_LOGS_TAB_TITLE": "Логи",
"APP_LOGS_TAB_WRAP_LINES": "Переносить строки",
"APP_NEW": "НОВОЕ",
"APP_RESET_FORM_SUBMIT": "Сбросить", "APP_RESET_FORM_SUBMIT": "Сбросить",
"APP_RESET_FORM_SUBTITLE": "Все данные этого приложения будут потеряны.", "APP_RESET_FORM_SUBTITLE": "Все данные этого приложения будут потеряны.",
"APP_RESET_FORM_TITLE": "Сбросить {name}?", "APP_RESET_FORM_TITLE": "Сбросить {name}?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Зарегистрируйте аккаунт", "AUTH_REGISTER_TITLE": "Зарегистрируйте аккаунт",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Вернуться на страницу входа", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Вернуться на страницу входа",
"AUTH_RESET_PASSWORD_CANCEL": "Отменить запрос на смену пароля", "AUTH_RESET_PASSWORD_CANCEL": "Отменить запрос на смену пароля",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Выполните эту команду на вашем сервере, затем обновите эту страницу", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Чтобы начать, запустите команду на вашем сервере и обновите эту страницу. Если вы уже сделали это, возможно, запрос на сброс пароля истёк. В этом случае повторите попытку",
"AUTH_RESET_PASSWORD_SUBMIT": "Сбросить пароль", "AUTH_RESET_PASSWORD_SUBMIT": "Сбросить пароль",
"AUTH_RESET_PASSWORD_SUCCESS": "Ваш пароль был сброшен. Теперь вы можете войти с новым паролем. Ваш адрес электронной почты {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Ваш пароль был сброшен. Теперь вы можете войти с новым паролем. Ваш адрес электронной почты {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Пароль сброшен", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Пароль сброшен",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Для изменения параметров двухфакторной аутентификации требуется пароль.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Для изменения параметров двухфакторной аутентификации требуется пароль.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Сканируйте этот QR-код вашим приложением-аутентификатором.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Сканируйте этот QR-код вашим приложением-аутентификатором.",
"SETTINGS_SECURITY_TAB_TITLE": "Безопасность", "SETTINGS_SECURITY_TAB_TITLE": "Безопасность",
"SETTINGS_LOGS_TAB_TITLE": "Логи",
"SETTINGS_TITLE": "Настройки", "SETTINGS_TITLE": "Настройки",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Не удалось получить последнюю версию", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Не удалось получить последнюю версию",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Текущая версия уже актуальна", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Текущая версия уже актуальна",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update",
"APP_INSTALL_FORM_TITLE": "Install {name}", "APP_INSTALL_FORM_TITLE": "Install {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password",
"AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.",
"SETTINGS_SECURITY_TAB_TITLE": "Security", "SETTINGS_SECURITY_TAB_TITLE": "Security",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Settings", "SETTINGS_TITLE": "Settings",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date",

View File

@ -42,7 +42,7 @@
"APP_ERROR_APP_FAILED_TO_RESET": "Det gick inte att återställa appen {id}, se loggar för mer information", "APP_ERROR_APP_FAILED_TO_RESET": "Det gick inte att återställa appen {id}, se loggar för mer information",
"APP_ERROR_APP_FAILED_TO_START": "Det gick inte att starta app {id}, se loggar för mer information", "APP_ERROR_APP_FAILED_TO_START": "Det gick inte att starta app {id}, se loggar för mer information",
"APP_ERROR_APP_FAILED_TO_STOP": "Det gick inte att stoppa app {id}, se loggar för mer information", "APP_ERROR_APP_FAILED_TO_STOP": "Det gick inte att stoppa app {id}, se loggar för mer information",
"APP_ERROR_APP_FAILED_TO_RESTART": "Failed to restart app {id}, see logs for more details", "APP_ERROR_APP_FAILED_TO_RESTART": "Misslyckades med att starta om appen{id}. Se loggen för mer detaljer",
"APP_ERROR_APP_FAILED_TO_UNINSTALL": "Det gick inte att avinstallera app {id}, se loggar för mer information", "APP_ERROR_APP_FAILED_TO_UNINSTALL": "Det gick inte att avinstallera app {id}, se loggar för mer information",
"APP_ERROR_APP_FAILED_TO_UPDATE": "Det gick inte att uppdatera app {id}, se loggar för mer information", "APP_ERROR_APP_FAILED_TO_UPDATE": "Det gick inte att uppdatera app {id}, se loggar för mer information",
"APP_ERROR_APP_FORCE_EXPOSED": "Appen {id} fungerar endast med exponerad domän", "APP_ERROR_APP_FORCE_EXPOSED": "Appen {id} fungerar endast med exponerad domän",
@ -67,8 +67,8 @@
"APP_INSTALL_FORM_ERROR_REGEX": "{label} måste matcha mönstret {pattern}", "APP_INSTALL_FORM_ERROR_REGEX": "{label} måste matcha mönstret {pattern}",
"APP_INSTALL_FORM_ERROR_REQUIRED": "{label} krävs", "APP_INSTALL_FORM_ERROR_REQUIRED": "{label} krävs",
"APP_INSTALL_FORM_ERROR_URL": "{label} måste vara en giltig URL", "APP_INSTALL_FORM_ERROR_URL": "{label} måste vara en giltig URL",
"APP_INSTALL_FORM_EXPOSE_APP": "Expose app on the internet", "APP_INSTALL_FORM_EXPOSE_APP": "Exponera appen mot internet",
"APP_INSTALL_FORM_OPEN_PORT": "Open port", "APP_INSTALL_FORM_OPEN_PORT": "Öppna en port",
"APP_INSTALL_FORM_OPEN_PORT_HINT": "Open a port on the host? This app will be accessible at {internalIp}:{port}. (Easiest but less secure)", "APP_INSTALL_FORM_OPEN_PORT_HINT": "Open a port on the host? This app will be accessible at {internalIp}:{port}. (Easiest but less secure)",
"APP_INSTALL_FORM_EXPOSE_LOCAL": "Expose app on local network", "APP_INSTALL_FORM_EXPOSE_LOCAL": "Expose app on local network",
"APP_INSTALL_FORM_EXPOSE_LOCAL_HINT": "Expose the app on the local network? This app will be accessible at {appId}.{domain}. (Visit settings page to setup your local domain)", "APP_INSTALL_FORM_EXPOSE_LOCAL_HINT": "Expose the app on the local network? This app will be accessible at {appId}.{domain}. (Visit settings page to setup your local domain)",
@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Installera", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Installera",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Uppdatera", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Uppdatera",
"APP_INSTALL_FORM_TITLE": "Installera {name}", "APP_INSTALL_FORM_TITLE": "Installera {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "Appen {id} installerades", "APP_INSTALL_SUCCESS": "Appen {id} installerades",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Återställ", "APP_RESET_FORM_SUBMIT": "Återställ",
"APP_RESET_FORM_SUBTITLE": "Alla data för denna app kommer att försvinna.", "APP_RESET_FORM_SUBTITLE": "Alla data för denna app kommer att försvinna.",
"APP_RESET_FORM_TITLE": "Återställ {name} ?", "APP_RESET_FORM_TITLE": "Återställ {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Registrera ditt konto", "AUTH_REGISTER_TITLE": "Registrera ditt konto",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Tillbaka till inloggningen", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Tillbaka till inloggningen",
"AUTH_RESET_PASSWORD_CANCEL": "Avbryta begäran om ändring av lösenord", "AUTH_RESET_PASSWORD_CANCEL": "Avbryta begäran om ändring av lösenord",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Kör detta kommando på din server och uppdatera sedan den här sidan", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Återställ lösenord", "AUTH_RESET_PASSWORD_SUBMIT": "Återställ lösenord",
"AUTH_RESET_PASSWORD_SUCCESS": "Ditt lösenord har återställts. Du kan nu logga in med ditt nya lösenord. Och din e-postadress {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Ditt lösenord har återställts. Du kan nu logga in med ditt nya lösenord. Och din e-postadress {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Återställ lösenord", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Återställ lösenord",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Ditt lösenord krävs för att ändra tvåfaktorsautentiseringsinställningar.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Ditt lösenord krävs för att ändra tvåfaktorsautentiseringsinställningar.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Skanna den här QR-koden med din autentiseringsapp.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Skanna den här QR-koden med din autentiseringsapp.",
"SETTINGS_SECURITY_TAB_TITLE": "Säkerhet", "SETTINGS_SECURITY_TAB_TITLE": "Säkerhet",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Inställningar", "SETTINGS_TITLE": "Inställningar",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Kunde inte hämta senaste versionen", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Kunde inte hämta senaste versionen",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Den nuvarande versionen är redan uppdaterad", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Den nuvarande versionen är redan uppdaterad",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Yükle", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Yükle",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Güncelle", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Güncelle",
"APP_INSTALL_FORM_TITLE": "Yükle {name}", "APP_INSTALL_FORM_TITLE": "Yükle {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "Uygulama başarıyla yüklendi", "APP_INSTALL_SUCCESS": "Uygulama başarıyla yüklendi",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Sıfırla", "APP_RESET_FORM_SUBMIT": "Sıfırla",
"APP_RESET_FORM_SUBTITLE": "Bu uygulama için tüm veriler kaybolacak.", "APP_RESET_FORM_SUBTITLE": "Bu uygulama için tüm veriler kaybolacak.",
"APP_RESET_FORM_TITLE": "Yeniden Başlat {name} ?", "APP_RESET_FORM_TITLE": "Yeniden Başlat {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Yeni hesabınızı kaydedin", "AUTH_REGISTER_TITLE": "Yeni hesabınızı kaydedin",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Giriş sayfasına dön", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Giriş sayfasına dön",
"AUTH_RESET_PASSWORD_CANCEL": "Parola değiştirme isteğini iptal et", "AUTH_RESET_PASSWORD_CANCEL": "Parola değiştirme isteğini iptal et",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Bu komutu sunucunuzda çalıştırtıkdan sonra bu sayfayı yenileyin", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Parolayı sıfırla", "AUTH_RESET_PASSWORD_SUBMIT": "Parolayı sıfırla",
"AUTH_RESET_PASSWORD_SUCCESS": "Parolanız sıfırlandı. Artık yeni parolanız ile giriş yapabilirsiniz. Ve e-postanız {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Parolanız sıfırlandı. Artık yeni parolanız ile giriş yapabilirsiniz. Ve e-postanız {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Parolayı sıfırla", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Parolayı sıfırla",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "İki faktörlü kimlik doğrulama ayarlarını değiştirmek için parolanız gereklidir.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "İki faktörlü kimlik doğrulama ayarlarını değiştirmek için parolanız gereklidir.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Bu QR kodunu kimlik doğrulama uygulamanızla tarayın.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Bu QR kodunu kimlik doğrulama uygulamanızla tarayın.",
"SETTINGS_SECURITY_TAB_TITLE": "Güvenlik", "SETTINGS_SECURITY_TAB_TITLE": "Güvenlik",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Ayarlar", "SETTINGS_TITLE": "Ayarlar",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "En son sürüm alınamadı", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "En son sürüm alınamadı",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Son versiyon zaten yüklü", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Son versiyon zaten yüklü",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update",
"APP_INSTALL_FORM_TITLE": "Install {name}", "APP_INSTALL_FORM_TITLE": "Install {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Register your account", "AUTH_REGISTER_TITLE": "Register your account",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login",
"AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password",
"AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.",
"SETTINGS_SECURITY_TAB_TITLE": "Security", "SETTINGS_SECURITY_TAB_TITLE": "Security",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Settings", "SETTINGS_TITLE": "Settings",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date",

View File

@ -7,7 +7,7 @@
"APP_ACTION_SETTINGS": "Cài đặt", "APP_ACTION_SETTINGS": "Cài đặt",
"APP_ACTION_START": "Bắt đầu", "APP_ACTION_START": "Bắt đầu",
"APP_ACTION_STOP": "Dừng", "APP_ACTION_STOP": "Dừng",
"APP_ACTION_RESTART": "Restart", "APP_ACTION_RESTART": "Khởi Động Lại",
"APP_ACTION_UPDATE": "Cập nhật", "APP_ACTION_UPDATE": "Cập nhật",
"APP_CATEGORY_AI": "Trí tuệ nhân tạo", "APP_CATEGORY_AI": "Trí tuệ nhân tạo",
"APP_CATEGORY_AUTOMATION": "Tự động hóa", "APP_CATEGORY_AUTOMATION": "Tự động hóa",
@ -28,8 +28,8 @@
"APP_DETAILS_BASE_INFO": "Thông tin cơ bản", "APP_DETAILS_BASE_INFO": "Thông tin cơ bản",
"APP_DETAILS_CATEGORIES_TITLE": "Danh mục", "APP_DETAILS_CATEGORIES_TITLE": "Danh mục",
"APP_DETAILS_CHOOSE_OPEN_METHOD": "Chọn phương thức mở", "APP_DETAILS_CHOOSE_OPEN_METHOD": "Chọn phương thức mở",
"APP_DETAILS_DEPRECATED_ALERT_SUBTITLE": "A breaking change in this app prevents it from being updated automatically. You can still use this version and update it manually, but it is recommended to switch to a newer version and migrate your data. You can find an updated version in the app store under the same name.", "APP_DETAILS_DEPRECATED_ALERT_SUBTITLE": "Một thay đổi nghiêm trọng trong ứng dụng này ngăn nó khỏi được cập nhật tự động. Bạn vẫn có thể sử dụng phiên bản này và cập nhật thủ công, nhưng khuyến khích chuyển sang phiên bản mới hơn và di dời dữ liệu của bạn. Bạn có thể tìm thấy phiên bản cập nhật trong cửa hàng ứng dụng dưới cùng tên.",
"APP_DETAILS_DEPRECATED_ALERT_TITLE": "This app is deprecated", "APP_DETAILS_DEPRECATED_ALERT_TITLE": "Ứng dụng này đã bị loại bỏ",
"APP_DETAILS_DESCRIPTION": "Mô tả", "APP_DETAILS_DESCRIPTION": "Mô tả",
"APP_DETAILS_LINK": "Liên kết", "APP_DETAILS_LINK": "Liên kết",
"APP_DETAILS_PORT": "Cổng", "APP_DETAILS_PORT": "Cổng",
@ -38,11 +38,11 @@
"APP_DETAILS_TITLE": "Chi tiết ứng dụng", "APP_DETAILS_TITLE": "Chi tiết ứng dụng",
"APP_DETAILS_VERSION": "Phiên bản", "APP_DETAILS_VERSION": "Phiên bản",
"APP_DETAILS_WEBSITE": "Trang web", "APP_DETAILS_WEBSITE": "Trang web",
"APP_ERROR_APP_FAILED_TO_INSTALL": "Cài đặt ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết", "APP_ERROR_APP_FAILED_TO_INSTALL": "Cài đặt ứng dụng {id} thất bại, xem nhật kí để biết chi tiết",
"APP_ERROR_APP_FAILED_TO_RESET": "Failed to reset app {id}, see logs for more details", "APP_ERROR_APP_FAILED_TO_RESET": "Failed to reset app {id}, see logs for more details",
"APP_ERROR_APP_FAILED_TO_START": "Khởi động ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết", "APP_ERROR_APP_FAILED_TO_START": "Khởi động ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết",
"APP_ERROR_APP_FAILED_TO_STOP": "Dừng ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết", "APP_ERROR_APP_FAILED_TO_STOP": "Dừng ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết",
"APP_ERROR_APP_FAILED_TO_RESTART": "Failed to restart app {id}, see logs for more details", "APP_ERROR_APP_FAILED_TO_RESTART": "Khởi động lại ứng dụng {id} thất bại, xem nhật kí biết thêm",
"APP_ERROR_APP_FAILED_TO_UNINSTALL": "Gỡ cài đặt ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết", "APP_ERROR_APP_FAILED_TO_UNINSTALL": "Gỡ cài đặt ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết",
"APP_ERROR_APP_FAILED_TO_UPDATE": "Cập nhật ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết", "APP_ERROR_APP_FAILED_TO_UPDATE": "Cập nhật ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết",
"APP_ERROR_APP_FORCE_EXPOSED": "Ứng dụng {id} chỉ hoạt động với tên miền công khai", "APP_ERROR_APP_FORCE_EXPOSED": "Ứng dụng {id} chỉ hoạt động với tên miền công khai",
@ -76,31 +76,38 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "Cài đặt", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Cài đặt",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "Cập nhật", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Cập nhật",
"APP_INSTALL_FORM_TITLE": "Cài đặt {name}", "APP_INSTALL_FORM_TITLE": "Cài đặt {name}",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_FORM_GENERAL": "Chung",
"APP_INSTALL_FORM_REVERSE_PROXY": "Proxy ngược",
"APP_INSTALL_SUCCESS": "Ứng dụng {id} đã được cài đặt thành công",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "MỚI",
"APP_RESET_FORM_SUBMIT": "Thiết lập lại", "APP_RESET_FORM_SUBMIT": "Thiết lập lại",
"APP_RESET_FORM_SUBTITLE": "Tất cả dữ liệu của ứng dụng này sẽ bị mất.", "APP_RESET_FORM_SUBTITLE": "Tất cả dữ liệu của ứng dụng này sẽ bị mất.",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Đặt lại {name}?",
"APP_RESET_FORM_WARNING": "Bạn chắc chứ? Hành động này không thể hoàn tác.", "APP_RESET_FORM_WARNING": "Bạn chắc chứ? Hành động này không thể hoàn tác.",
"APP_RESET_SUCCESS": "App {id} reset successfully", "APP_RESET_SUCCESS": "Ứng dụng {id} đã được thiết lập lại thành công",
"APP_START_SUCCESS": "App {id} started successfully", "APP_START_SUCCESS": "Ứng dụng {id} Bắt đầu thành công",
"APP_STATUS_INSTALLING": "Đang cài đặt", "APP_STATUS_INSTALLING": "Đang cài đặt",
"APP_STATUS_MISSING": "Thiếu", "APP_STATUS_MISSING": "Thiếu",
"APP_STATUS_RESETTING": "Resetting", "APP_STATUS_RESETTING": "Đang đặt lại",
"APP_STATUS_RUNNING": "Đang hoạt động", "APP_STATUS_RUNNING": "Đang hoạt động",
"APP_STATUS_STARTING": "Đang khởi động", "APP_STATUS_STARTING": "Đang khởi động",
"APP_STATUS_STOPPED": "Đã dừng", "APP_STATUS_STOPPED": "Đã dừng",
"APP_STATUS_STOPPING": "Đang dừng", "APP_STATUS_STOPPING": "Đang dừng",
"APP_STATUS_RESTARTING": "Restarting", "APP_STATUS_RESTARTING": "Khởi động lại",
"APP_STATUS_UNINSTALLING": "Đang gỡ cài đặt", "APP_STATUS_UNINSTALLING": "Đang gỡ cài đặt",
"APP_STATUS_UPDATING": "Đang cập nhật", "APP_STATUS_UPDATING": "Đang cập nhật",
"APP_STOP_FORM_SUBMIT": "Dừng", "APP_STOP_FORM_SUBMIT": "Dừng",
"APP_STOP_FORM_SUBTITLE": "Tất cả dữ liệu sẽ được giữ lại", "APP_STOP_FORM_SUBTITLE": "Tất cả dữ liệu sẽ được giữ lại",
"APP_STOP_FORM_TITLE": "Dừng {name}?", "APP_STOP_FORM_TITLE": "Dừng {name}?",
"APP_STOP_SUCCESS": "App {id} stopped successfully", "APP_STOP_SUCCESS": "Ứng dụng {id} đã dừng thành công",
"APP_RESTART_FORM_SUBMIT": "Restart", "APP_RESTART_FORM_SUBMIT": "Khởi động lại",
"APP_RESTART_FORM_SUBTITLE": "All data will be retained", "APP_RESTART_FORM_SUBTITLE": "Tất cả dữ liệu sẽ được giữ lại",
"APP_RESTART_FORM_TITLE": "Restart {name} ?", "APP_RESTART_FORM_TITLE": "Khởi động lại {name} ?",
"APP_RESTART_SUCCESS": "App {id} restarted successfully", "APP_RESTART_SUCCESS": "Ứng dụng {id} đã khởi động lại thành công",
"APP_STORE_CATEGORY_PLACEHOLDER": "Chọn một danh mục", "APP_STORE_CATEGORY_PLACEHOLDER": "Chọn một danh mục",
"APP_STORE_NO_RESULTS": "Không tìm thấy ứng dụng", "APP_STORE_NO_RESULTS": "Không tìm thấy ứng dụng",
"APP_STORE_NO_RESULTS_SUBTITLE": "Hãy thử tìm kiếm lại", "APP_STORE_NO_RESULTS_SUBTITLE": "Hãy thử tìm kiếm lại",
@ -110,15 +117,15 @@
"APP_UNINSTALL_FORM_SUBTITLE": "Tất cả dữ liệu của ứng dụng này sẽ bị mất.", "APP_UNINSTALL_FORM_SUBTITLE": "Tất cả dữ liệu của ứng dụng này sẽ bị mất.",
"APP_UNINSTALL_FORM_TITLE": "Gỡ cài đặt {name}?", "APP_UNINSTALL_FORM_TITLE": "Gỡ cài đặt {name}?",
"APP_UNINSTALL_FORM_WARNING": "Bạn chắc chứ? Hành động này không thể hoàn tác.", "APP_UNINSTALL_FORM_WARNING": "Bạn chắc chứ? Hành động này không thể hoàn tác.",
"APP_UNINSTALL_SUCCESS": "App {id} uninstalled successfully", "APP_UNINSTALL_SUCCESS": "Ứng dụng {id} đã được gỡ cài đặt thành công",
"APP_UPDATE_CONFIG_SUCCESS": "Cài đặt của ứng dụng đã được cập nhật. Khởi động lại ứng dụng để áp dụng thay đổi", "APP_UPDATE_CONFIG_SUCCESS": "Cài đặt của ứng dụng đã được cập nhật. Khởi động lại ứng dụng để áp dụng thay đổi",
"APP_UPDATE_ERROR_MIN_TIPI_VERSION": "App {id} update requires Tipi version {minVersion} or higher. Please update your instance.", "APP_UPDATE_ERROR_MIN_TIPI_VERSION": "Ứng dụng {id} cần cập nhật phiên bản Tipi {minVersion} hoặc cao hơn. Vui lòng cập nhật phiên bản của bạn.",
"APP_UPDATE_FORM_SUBMIT": "Cập nhật", "APP_UPDATE_FORM_SUBMIT": "Cập nhật",
"APP_UPDATE_FORM_SUBTITLE_1": "Cập nhật ứng dụng lên phiên bản mới nhất:", "APP_UPDATE_FORM_SUBTITLE_1": "Cập nhật ứng dụng lên phiên bản mới nhất:",
"APP_UPDATE_FORM_SUBTITLE_2": "Việc này sẽ thay đổi cấu hình tùy chọn của bạn (ví dụ: các thay đổi trong file docker-compose.yml).", "APP_UPDATE_FORM_SUBTITLE_2": "Việc này sẽ thay đổi cấu hình tùy chọn của bạn (ví dụ: các thay đổi trong file docker-compose.yml).",
"APP_UPDATE_FORM_TITLE": "Cập nhật {name}?", "APP_UPDATE_FORM_TITLE": "Cập nhật {name}?",
"APP_UPDATE_SETTINGS_FORM_TITLE": "Cập nhật cấu hình {name}", "APP_UPDATE_SETTINGS_FORM_TITLE": "Cập nhật cấu hình {name}",
"APP_UPDATE_SUCCESS": "App {id} updated successfully", "APP_UPDATE_SUCCESS": "Ứng dụng {id} cập nhật thành công",
"AUTH_ERROR_ADMIN_ALREADY_EXISTS": "Người dùng với quyền quản trị đã tồn tại. Vui lòng đăng nhập để tạo người dùng mới từ Trang quản trị.", "AUTH_ERROR_ADMIN_ALREADY_EXISTS": "Người dùng với quyền quản trị đã tồn tại. Vui lòng đăng nhập để tạo người dùng mới từ Trang quản trị.",
"AUTH_ERROR_ERROR_CREATING_USER": "Đã có lỗi khi tạo người dùng", "AUTH_ERROR_ERROR_CREATING_USER": "Đã có lỗi khi tạo người dùng",
"AUTH_ERROR_INVALID_CREDENTIALS": "Thông tin đăng nhập không hợp lệ", "AUTH_ERROR_INVALID_CREDENTIALS": "Thông tin đăng nhập không hợp lệ",
@ -127,7 +134,7 @@
"AUTH_ERROR_INVALID_USERNAME": "Tên người dùng không hợp lệ", "AUTH_ERROR_INVALID_USERNAME": "Tên người dùng không hợp lệ",
"AUTH_ERROR_MISSING_EMAIL_OR_PASSWORD": "Thiếu email hoặc mật khẩu", "AUTH_ERROR_MISSING_EMAIL_OR_PASSWORD": "Thiếu email hoặc mật khẩu",
"AUTH_ERROR_NO_CHANGE_PASSWORD_REQUEST": "Không có yêu cầu thay đổi mật khẩu nào được tìm thấy", "AUTH_ERROR_NO_CHANGE_PASSWORD_REQUEST": "Không có yêu cầu thay đổi mật khẩu nào được tìm thấy",
"AUTH_ERROR_OPERATOR_NOT_FOUND": "Operator user not found", "AUTH_ERROR_OPERATOR_NOT_FOUND": "Không tìm thấy người quản lí",
"AUTH_ERROR_TOTP_ALREADY_ENABLED": "2FA đã được kích hoạt cho người dùng này", "AUTH_ERROR_TOTP_ALREADY_ENABLED": "2FA đã được kích hoạt cho người dùng này",
"AUTH_ERROR_TOTP_INVALID_CODE": "Mã 2FA không hợp lệ", "AUTH_ERROR_TOTP_INVALID_CODE": "Mã 2FA không hợp lệ",
"AUTH_ERROR_TOTP_NOT_ENABLED": "2FA không kích hoạt cho người dùng này", "AUTH_ERROR_TOTP_NOT_ENABLED": "2FA không kích hoạt cho người dùng này",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "Đăng kí tài khoản của bạn", "AUTH_REGISTER_TITLE": "Đăng kí tài khoản của bạn",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Trở lại trang đăng nhập", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Trở lại trang đăng nhập",
"AUTH_RESET_PASSWORD_CANCEL": "Hủy yêu cầu thay đổi mật khẩu", "AUTH_RESET_PASSWORD_CANCEL": "Hủy yêu cầu thay đổi mật khẩu",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "Chạy lệnh này trên máy chủ của bạn và tải lại trang này", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Để bắt đầu, chạy lệnh này trên máy chủ của bạn và sau đó làm mới trang này. Nếu bạn đã thực hiện điều này trước đó, yêu cầu đặt lại mật khẩu có thể đã hết hạn. Trong trường hợp đó, vui lòng thử lại",
"AUTH_RESET_PASSWORD_SUBMIT": "Đặt lại mật khẩu", "AUTH_RESET_PASSWORD_SUBMIT": "Đặt lại mật khẩu",
"AUTH_RESET_PASSWORD_SUCCESS": "Mật khẩu của bạn đã được khôi phục. Bạn có thể đăng nhập với mật khẩu mới và email {email}", "AUTH_RESET_PASSWORD_SUCCESS": "Mật khẩu của bạn đã được khôi phục. Bạn có thể đăng nhập với mật khẩu mới và email {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Khôi phục mật khẩu", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Khôi phục mật khẩu",
@ -165,18 +172,18 @@
"AUTH_TOTP_INSTRUCTIONS": "Nhập mã từ ứng dụng xác thực của bạn", "AUTH_TOTP_INSTRUCTIONS": "Nhập mã từ ứng dụng xác thực của bạn",
"AUTH_TOTP_SUBMIT": "Xác nhận", "AUTH_TOTP_SUBMIT": "Xác nhận",
"AUTH_TOTP_TITLE": "Xác thực 2 bước", "AUTH_TOTP_TITLE": "Xác thực 2 bước",
"COMMON_CLOSE": "Close", "COMMON_CLOSE": "Đóng",
"DASHBOARD_CPU_SUBTITLE": "Gỡ cài đặt ứng dụng để giảm thiểu việc quá tải", "DASHBOARD_CPU_SUBTITLE": "Gỡ cài đặt ứng dụng để giảm thiểu việc quá tải",
"DASHBOARD_CPU_TITLE": "Tải CPU", "DASHBOARD_CPU_TITLE": "Tải CPU",
"DASHBOARD_DISK_SPACE_SUBTITLE": "Đã dùng trên tổng số {total} GB", "DASHBOARD_DISK_SPACE_SUBTITLE": "Đã dùng trên tổng số {total} GB",
"DASHBOARD_DISK_SPACE_TITLE": "Dung lượng đĩa", "DASHBOARD_DISK_SPACE_TITLE": "Dung lượng đĩa",
"DASHBOARD_MEMORY_TITLE": "Đã sử dụng bộ nhớ", "DASHBOARD_MEMORY_TITLE": "Đã sử dụng bộ nhớ",
"DASHBOARD_TITLE": "Bảng điều khiển", "DASHBOARD_TITLE": "Bảng điều khiển",
"DASHBOARD_IP_WARNING_TITLE": "Insecure configuration", "DASHBOARD_IP_WARNING_TITLE": "Cấu hình không an toàn",
"DASHBOARD_IP_WARNING": "Warning, you might be at risk! it looks like you are accessing your instance through a public IP address. This makes your dashboard and all apps that you install vulnerable to attackers", "DASHBOARD_IP_WARNING": "Cảnh báo, bạn có thể gặp nguy hiểm! Có vẻ bạn đang truy cập vào phiên của mình thông qua IP công cộng. Điều này khiến bảng điều khiển của bạn và các ứng dụng bạn cài đặt có thể bị tấn công",
"GUEST_DASHBOARD": "Guest dashboard", "GUEST_DASHBOARD": "Bảng điều khiển Khách",
"GUEST_DASHBOARD_NO_APPS": "No apps to display", "GUEST_DASHBOARD_NO_APPS": "Không có ứng dụng để hiển thị",
"GUEST_DASHBOARD_NO_APPS_SUBTITLE": "Ask your administrator to add apps to the guest dashboard or login to see your apps.", "GUEST_DASHBOARD_NO_APPS_SUBTITLE": "Yêu cầu người quản trị của bạn thêm ứng dụng vào bảng điều khiển khách hoặc đăng nhập để xem ứng dụng của bạn.",
"HEADER_APPS": "Ứng dụng của tôi", "HEADER_APPS": "Ứng dụng của tôi",
"HEADER_APP_STORE": "Cửa hàng ứng dụng", "HEADER_APP_STORE": "Cửa hàng ứng dụng",
"HEADER_DARK_MODE": "Chế độ Ban đêm", "HEADER_DARK_MODE": "Chế độ Ban đêm",
@ -188,33 +195,33 @@
"HEADER_SOURCE_CODE": "Mã nguồn", "HEADER_SOURCE_CODE": "Mã nguồn",
"HEADER_SPONSOR": "Nhà tài trợ", "HEADER_SPONSOR": "Nhà tài trợ",
"HEADER_UPDATE_AVAILABLE": "Đã có bản cập nhật", "HEADER_UPDATE_AVAILABLE": "Đã có bản cập nhật",
"INTERNAL_SERVER_ERROR": "Internal server error", "INTERNAL_SERVER_ERROR": "Lỗi máy chủ nội bộ",
"LINKS_ADD_SUBMIT": "Submit", "LINKS_ADD_SUBMIT": "Gửi",
"LINKS_ADD_SUBTITLE": "Add external link to the dashboard", "LINKS_ADD_SUBTITLE": "Thêm liên kết bên ngoài vào bảng điều khiển",
"LINKS_ADD_SUCCESS": "Link added succesfully", "LINKS_ADD_SUCCESS": "Liên kết được thêm thành công",
"LINKS_ADD_TITLE": "Add external link", "LINKS_ADD_TITLE": "Thêm liên kết ngoài",
"LINKS_DELETE_CONTEXT_MENU": "Delete", "LINKS_DELETE_CONTEXT_MENU": "Xóa",
"LINKS_DELETE_SUBMIT": "Delete", "LINKS_DELETE_SUBMIT": "Xóa",
"LINKS_DELETE_SUBTITLE": "Are you sure you want to delete this external link?", "LINKS_DELETE_SUBTITLE": "Bạn có chắc chắn muốn xóa liên kết bên ngoài này không?",
"LINKS_DELETE_SUCCESS": "Link deleted succesfully", "LINKS_DELETE_SUCCESS": "Xóa liên kết thành công",
"LINKS_DELETE_TITLE": "Delete external link", "LINKS_DELETE_TITLE": "Xóa liên kết bên ngoài",
"LINKS_EDIT_CONTEXT_MENU": "Edit", "LINKS_EDIT_CONTEXT_MENU": "Chỉnh sửa",
"LINKS_EDIT_SUBMIT": "Save", "LINKS_EDIT_SUBMIT": "Lưu",
"LINKS_EDIT_SUCCESS": "Link edited succesfully", "LINKS_EDIT_SUCCESS": "Sửa liên kết thành công",
"LINKS_EDIT_TITLE": "Edit link", "LINKS_EDIT_TITLE": "Sửa liên kết",
"LINKS_FORM_ICON_PLACEHOLDER": "Link logo URL", "LINKS_FORM_ICON_PLACEHOLDER": "Liên kết logo",
"LINKS_FORM_ICON_URL": "Icon URL", "LINKS_FORM_ICON_URL": "URL biểu tượng",
"LINKS_FORM_LINK_TITLE": "Link title", "LINKS_FORM_LINK_TITLE": "Liên kết tiêu đề",
"LINKS_FORM_LINK_URL": "Link URL", "LINKS_FORM_LINK_URL": "Địa chỉ liên kết:",
"LINKS_FROM_LINK_DESCRIPTION": "Link Description", "LINKS_FROM_LINK_DESCRIPTION": "Mô tả Liên kết",
"MY_APPS_DEPRECATED": "This app is deprecated", "MY_APPS_DEPRECATED": "Ứng dụng này đã bị loại bỏ",
"MY_APPS_EMPTY_ACTION": "Đi đến Cửa hàng Ứng dụng", "MY_APPS_EMPTY_ACTION": "Đi đến Cửa hàng Ứng dụng",
"MY_APPS_EMPTY_SUBTITLE": "Cài đặt một ứng dụng từ Cửa hàng Ứng dụng để bắt đầu", "MY_APPS_EMPTY_SUBTITLE": "Cài đặt một ứng dụng từ Cửa hàng Ứng dụng để bắt đầu",
"MY_APPS_EMPTY_TITLE": "Không có ứng dụng nào được cài đặt", "MY_APPS_EMPTY_TITLE": "Không có ứng dụng nào được cài đặt",
"MY_APPS_TITLE": "Ứng dụng của tôi", "MY_APPS_TITLE": "Ứng dụng của tôi",
"MY_APPS_UPDATE_ALL_FORM_SUBMIT": "Cập nhật tất cả", "MY_APPS_UPDATE_ALL_FORM_SUBMIT": "Cập nhật tất cả",
"MY_APPS_UPDATE_ALL_FORM_SUBTITLE_1": "Do you want to update all your apps to the latest version?", "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_1": "Bạn có muốn cập nhật tất cả ứng dụng của mình lên phiên bản mới nhất?",
"MY_APPS_UPDATE_ALL_FORM_SUBTITLE_2": "This will update all your apps to the latest version. Make sure you've read the release notes of the apps and you've backed up your app data.", "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_2": "Điều này sẽ cập nhật tất cả ứng dụng của bạn lên phiên bản mới nhất. Hãy chắc chắn bạn đã đọc ghi chú phát hành của ứng dụng và đã sao lưu dữ liệu ứng dụng của bạn.",
"MY_APPS_UPDATE_ALL_FORM_TITLE": "Cập nhật tất cả ứng dụng", "MY_APPS_UPDATE_ALL_FORM_TITLE": "Cập nhật tất cả ứng dụng",
"MY_APPS_UPDATE_ALL_IN_PROGRESS": "Đang cập nhật tất cả ứng dụng", "MY_APPS_UPDATE_ALL_IN_PROGRESS": "Đang cập nhật tất cả ứng dụng",
"MY_APPS_UPDATE_AVAILABLE": "Đã có bản cập nhật", "MY_APPS_UPDATE_AVAILABLE": "Đã có bản cập nhật",
@ -231,18 +238,18 @@
"SETTINGS_ACTIONS_STAY_UP_TO_DATE": "Luôn được cập nhật phiên bản mới nhất của Tipi", "SETTINGS_ACTIONS_STAY_UP_TO_DATE": "Luôn được cập nhật phiên bản mới nhất của Tipi",
"SETTINGS_ACTIONS_TAB_TITLE": "Thao tác", "SETTINGS_ACTIONS_TAB_TITLE": "Thao tác",
"SETTINGS_ACTIONS_TITLE": "Thao tác", "SETTINGS_ACTIONS_TITLE": "Thao tác",
"SETTINGS_GENERAL_ALLOW_AUTO_THEMES": "Allow auto themes", "SETTINGS_GENERAL_ALLOW_AUTO_THEMES": "Cho phép chủ đề tự động",
"SETTINGS_GENERAL_ALLOW_AUTO_THEMES_HINT": "Be surprised by themes that change automatically based on the time of the year.", "SETTINGS_GENERAL_ALLOW_AUTO_THEMES_HINT": "Hãy ngạc nhiên bởi các chủ đề thay đổi tự động dựa trên thời gian trong năm.",
"SETTINGS_GENERAL_ALLOW_ERROR_MONITORING": "Allow anonymous error monitoring", "SETTINGS_GENERAL_ALLOW_ERROR_MONITORING": "Cho phép theo dõi lỗi ẩn danh",
"SETTINGS_GENERAL_ALLOW_ERROR_MONITORING_HINT": "Error monitoring is used to track errors and improve Tipi. Keep this option enabled to help us improve Tipi.", "SETTINGS_GENERAL_ALLOW_ERROR_MONITORING_HINT": "Theo dõi lỗi được sử dụng để theo dõi lỗi và cải thiện Tipi. Hãy giữ cho tùy chọn này được bật để giúp chúng tôi cải thiện Tipi.",
"SETTINGS_GENERAL_APPS_REPO": "Đường dẫn kho ứng dụng", "SETTINGS_GENERAL_APPS_REPO": "Đường dẫn kho ứng dụng",
"SETTINGS_GENERAL_APPS_REPO_HINT": "Đường dẫn đến kho ứng dụng.", "SETTINGS_GENERAL_APPS_REPO_HINT": "Đường dẫn đến kho ứng dụng.",
"SETTINGS_GENERAL_DNS_IP": "Địa chỉ IP DNS", "SETTINGS_GENERAL_DNS_IP": "Địa chỉ IP DNS",
"SETTINGS_GENERAL_DOMAIN_NAME": "Tên miền", "SETTINGS_GENERAL_DOMAIN_NAME": "Tên miền",
"SETTINGS_GENERAL_DOMAIN_NAME_HINT": "Hãy chắc chắn rằng tên miền này có chứa bản ghi A trỏ đến địa chỉ IP của bạn.", "SETTINGS_GENERAL_DOMAIN_NAME_HINT": "Hãy chắc chắn rằng tên miền này có chứa bản ghi A trỏ đến địa chỉ IP của bạn.",
"SETTINGS_GENERAL_DOWNLOAD_CERTIFICATE": "Tải chứng chỉ", "SETTINGS_GENERAL_DOWNLOAD_CERTIFICATE": "Tải chứng chỉ",
"SETTINGS_GENERAL_GUEST_DASHBOARD": "Enable guest dashboard", "SETTINGS_GENERAL_GUEST_DASHBOARD": "Kích hoạt bảng điều khiển khách",
"SETTINGS_GENERAL_GUEST_DASHBOARD_HINT": "This will allow non-authenticated users to see a limited dashboard and easily access the running apps on your instance.", "SETTINGS_GENERAL_GUEST_DASHBOARD_HINT": "Điều này sẽ cho phép người dùng chưa xác thực xem bảng điều khiển giới hạn và dễ dàng truy cập các ứng dụng đang chạy trên phiên bản của bạn.",
"SETTINGS_GENERAL_INTERNAL_IP": "Địa chỉ IP nội bộ", "SETTINGS_GENERAL_INTERNAL_IP": "Địa chỉ IP nội bộ",
"SETTINGS_GENERAL_INTERNAL_IP_HINT": "Địa chỉ IP máy chủ của bạn sẽ nhận gói tin.", "SETTINGS_GENERAL_INTERNAL_IP_HINT": "Địa chỉ IP máy chủ của bạn sẽ nhận gói tin.",
"SETTINGS_GENERAL_INVALID_DOMAIN": "Tên miền không hợp lệ", "SETTINGS_GENERAL_INVALID_DOMAIN": "Tên miền không hợp lệ",
@ -254,7 +261,7 @@
"SETTINGS_GENERAL_LOCAL_DOMAIN_HINT": "Tên miền để truy cập ứng dụng từ mạng nội bộ của bạn. Ứng dụng có thể được truy cập tại app-name.local-domain.", "SETTINGS_GENERAL_LOCAL_DOMAIN_HINT": "Tên miền để truy cập ứng dụng từ mạng nội bộ của bạn. Ứng dụng có thể được truy cập tại app-name.local-domain.",
"SETTINGS_GENERAL_SETTINGS_UPDATED": "Cài đặt đã được cập nhật. Khởi động lại máy chủ của bạn để áp dụng cài đặt mới.", "SETTINGS_GENERAL_SETTINGS_UPDATED": "Cài đặt đã được cập nhật. Khởi động lại máy chủ của bạn để áp dụng cài đặt mới.",
"SETTINGS_GENERAL_STORAGE_PATH": "Đường dẫn lưu trữ dữ liệu", "SETTINGS_GENERAL_STORAGE_PATH": "Đường dẫn lưu trữ dữ liệu",
"SETTINGS_GENERAL_STORAGE_PATH_HINT": "Path to the storage directory. Make sure it is an absolute path and that it exists.", "SETTINGS_GENERAL_STORAGE_PATH_HINT": "Đường dẫn đến thư mục lưu trữ dữ liệu. Hãy chắc rằng đó là đường dẫn tuyệt đối và đã tồn tại.",
"SETTINGS_GENERAL_SUBMIT": "Cập nhật cài đặt", "SETTINGS_GENERAL_SUBMIT": "Cập nhật cài đặt",
"SETTINGS_GENERAL_SUBTITLE": "Điều này sẽ thay đổi file setting.json của bạn. Hãy chắc chắn rằng bạn hiểu rõ mình đang làm gì trước khi thay đổi các giá trị này.", "SETTINGS_GENERAL_SUBTITLE": "Điều này sẽ thay đổi file setting.json của bạn. Hãy chắc chắn rằng bạn hiểu rõ mình đang làm gì trước khi thay đổi các giá trị này.",
"SETTINGS_GENERAL_TAB_TITLE": "Cài đặt", "SETTINGS_GENERAL_TAB_TITLE": "Cài đặt",
@ -270,9 +277,9 @@
"SETTINGS_SECURITY_CHANGE_USERNAME_FORM_INVALID_USERNAME": "Phải là một địa chỉ email hợp lệ", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_INVALID_USERNAME": "Phải là một địa chỉ email hợp lệ",
"SETTINGS_SECURITY_CHANGE_USERNAME_FORM_NEW_USERNAME": "Tên đăng nhập mới", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_NEW_USERNAME": "Tên đăng nhập mới",
"SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD": "Mật khẩu", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD": "Mật khẩu",
"SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD_NEEDED_HINT": "Your password is required to change your username.", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD_NEEDED_HINT": "Mật khẩu của bạn cần thiết để thay đổi tên người dùng của bạn.",
"SETTINGS_SECURITY_CHANGE_USERNAME_FORM_SUBMIT": "Thay đổi tên đăng nhập", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_SUBMIT": "Thay đổi tên đăng nhập",
"SETTINGS_SECURITY_CHANGE_USERNAME_SUBTITLE": "Changing your username will log you out of all devices.", "SETTINGS_SECURITY_CHANGE_USERNAME_SUBTITLE": "Thay đổi tên người dùng sẽ đăng xuất bạn khỏi tất cả các thiết bị.",
"SETTINGS_SECURITY_CHANGE_USERNAME_SUCCESS": "Tên đăng nhập thay đổi thành công", "SETTINGS_SECURITY_CHANGE_USERNAME_SUCCESS": "Tên đăng nhập thay đổi thành công",
"SETTINGS_SECURITY_CHANGE_USERNAME_TITLE": "Thay đổi tên đăng nhập", "SETTINGS_SECURITY_CHANGE_USERNAME_TITLE": "Thay đổi tên đăng nhập",
"SETTINGS_SECURITY_DISABLE_2FA": "Tắt xác thực 2 bước", "SETTINGS_SECURITY_DISABLE_2FA": "Tắt xác thực 2 bước",
@ -291,10 +298,11 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Mật khẩu của bạn được yêu cầu khi muốn thay đổi cấu hình Xác thực 2 bước.", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Mật khẩu của bạn được yêu cầu khi muốn thay đổi cấu hình Xác thực 2 bước.",
"SETTINGS_SECURITY_SCAN_QR_CODE": "Quét mã QR này bằng ứng dụng xác thực của bạn.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Quét mã QR này bằng ứng dụng xác thực của bạn.",
"SETTINGS_SECURITY_TAB_TITLE": "Bảo mật", "SETTINGS_SECURITY_TAB_TITLE": "Bảo mật",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "Cài đặt", "SETTINGS_TITLE": "Cài đặt",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Không thể kiểm tra phiên bản mới nhất", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Không thể kiểm tra phiên bản mới nhất",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Phiên bản hiện tại đã được cập nhật", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Phiên bản hiện tại đã được cập nhật",
"SYSTEM_ERROR_DEMO_MODE_LIMIT": "Only 6 apps can be installed in the demo mode. Please uninstall an other app to install a new one.", "SYSTEM_ERROR_DEMO_MODE_LIMIT": "Chỉ có thể cài đặt 6 ứng dụng trong chế độ demo. Vui lòng gỡ bỏ một ứng dụng khác để cài đặt một ứng dụng mới.",
"SYSTEM_ERROR_MAJOR_VERSION_UPDATE": "Ứng dụng được cập nhật phiên bản lớn. Vui lòng cập nhật thủ công (hướng dẫn được tim thấy ở GitHub)", "SYSTEM_ERROR_MAJOR_VERSION_UPDATE": "Ứng dụng được cập nhật phiên bản lớn. Vui lòng cập nhật thủ công (hướng dẫn được tim thấy ở GitHub)",
"SYSTEM_ERROR_YOU_MUST_BE_LOGGED_IN": "You must be logged in to perform this action" "SYSTEM_ERROR_YOU_MUST_BE_LOGGED_IN": "Bạn phải đăng nhập để thực hiện hành động này"
} }

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "安装", "APP_INSTALL_FORM_SUBMIT_INSTALL": "安装",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "更新", "APP_INSTALL_FORM_SUBMIT_UPDATE": "更新",
"APP_INSTALL_FORM_TITLE": "安装 {name}", "APP_INSTALL_FORM_TITLE": "安装 {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "应用 {id} 安装成功", "APP_INSTALL_SUCCESS": "应用 {id} 安装成功",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "重置", "APP_RESET_FORM_SUBMIT": "重置",
"APP_RESET_FORM_SUBTITLE": "此应用的所有数据将丢失。", "APP_RESET_FORM_SUBTITLE": "此应用的所有数据将丢失。",
"APP_RESET_FORM_TITLE": "确认重置 {name}", "APP_RESET_FORM_TITLE": "确认重置 {name}",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "注册您的账户", "AUTH_REGISTER_TITLE": "注册您的账户",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "返回登录界面", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "返回登录界面",
"AUTH_RESET_PASSWORD_CANCEL": "取消密码更改请求", "AUTH_RESET_PASSWORD_CANCEL": "取消密码更改请求",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "在您的服务器上运行此命令,然后刷新此页", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "重置密码", "AUTH_RESET_PASSWORD_SUBMIT": "重置密码",
"AUTH_RESET_PASSWORD_SUCCESS": "您的密码已重置。您现在可以使用您的新密码登录。您的电子邮件 {email}", "AUTH_RESET_PASSWORD_SUCCESS": "您的密码已重置。您现在可以使用您的新密码登录。您的电子邮件 {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "密码重置", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "密码重置",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "更改双重身份验证设置需要您的密码。", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "更改双重身份验证设置需要您的密码。",
"SETTINGS_SECURITY_SCAN_QR_CODE": "使用验证器应用扫描这个二维码", "SETTINGS_SECURITY_SCAN_QR_CODE": "使用验证器应用扫描这个二维码",
"SETTINGS_SECURITY_TAB_TITLE": "安全", "SETTINGS_SECURITY_TAB_TITLE": "安全",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "设置", "SETTINGS_TITLE": "设置",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "无法获取最新版本", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "无法获取最新版本",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "当前版本已经是最新版本", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "当前版本已经是最新版本",

View File

@ -76,7 +76,14 @@
"APP_INSTALL_FORM_SUBMIT_INSTALL": "安裝", "APP_INSTALL_FORM_SUBMIT_INSTALL": "安裝",
"APP_INSTALL_FORM_SUBMIT_UPDATE": "更新", "APP_INSTALL_FORM_SUBMIT_UPDATE": "更新",
"APP_INSTALL_FORM_TITLE": "安裝 {name}", "APP_INSTALL_FORM_TITLE": "安裝 {name}",
"APP_INSTALL_FORM_GENERAL": "General",
"APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy",
"APP_INSTALL_SUCCESS": "App {id} installed successfully", "APP_INSTALL_SUCCESS": "App {id} installed successfully",
"APP_LOGS_TAB_FOLLOW": "Follow logs",
"APP_LOGS_TAB_MAX_LINES": "Max lines:",
"APP_LOGS_TAB_TITLE": "Logs",
"APP_LOGS_TAB_WRAP_LINES": "Wrap lines",
"APP_NEW": "NEW",
"APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBMIT": "Reset",
"APP_RESET_FORM_SUBTITLE": "此應用程序的所有數據都將丟失。", "APP_RESET_FORM_SUBTITLE": "此應用程序的所有數據都將丟失。",
"APP_RESET_FORM_TITLE": "Reset {name} ?", "APP_RESET_FORM_TITLE": "Reset {name} ?",
@ -157,7 +164,7 @@
"AUTH_REGISTER_TITLE": "註冊您的帳戶", "AUTH_REGISTER_TITLE": "註冊您的帳戶",
"AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "返回登入", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "返回登入",
"AUTH_RESET_PASSWORD_CANCEL": "取消密碼更改請求", "AUTH_RESET_PASSWORD_CANCEL": "取消密碼更改請求",
"AUTH_RESET_PASSWORD_INSTRUCTIONS": "在您的服務器上運行此命令,然後刷新此頁面", "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry",
"AUTH_RESET_PASSWORD_SUBMIT": "密碼重置", "AUTH_RESET_PASSWORD_SUBMIT": "密碼重置",
"AUTH_RESET_PASSWORD_SUCCESS": "您的密碼已重置。 您現在可以使用新密碼登錄。 還有你的電子郵件 {email}", "AUTH_RESET_PASSWORD_SUCCESS": "您的密碼已重置。 您現在可以使用新密碼登錄。 還有你的電子郵件 {email}",
"AUTH_RESET_PASSWORD_SUCCESS_TITLE": "重置密碼", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "重置密碼",
@ -291,6 +298,7 @@
"SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "需要您的密碼才能更改雙因素身份驗證設置", "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "需要您的密碼才能更改雙因素身份驗證設置",
"SETTINGS_SECURITY_SCAN_QR_CODE": "使用您的驗證器程式掃描此 QR Code", "SETTINGS_SECURITY_SCAN_QR_CODE": "使用您的驗證器程式掃描此 QR Code",
"SETTINGS_SECURITY_TAB_TITLE": "安全性", "SETTINGS_SECURITY_TAB_TITLE": "安全性",
"SETTINGS_LOGS_TAB_TITLE": "Logs",
"SETTINGS_TITLE": "設定", "SETTINGS_TITLE": "設定",
"SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "無法檢查最新版本", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "無法檢查最新版本",
"SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "當前版本已經是最新的", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "當前版本已經是最新的",

View File

@ -15,6 +15,8 @@ const APP_LOCALES = {
'vi-VN': 'Tiếng Việt', 'vi-VN': 'Tiếng Việt',
'zh-CN': '简体中文', 'zh-CN': '简体中文',
'zh-TW': '繁體中文', 'zh-TW': '繁體中文',
'pt-PT': 'Português',
'pt-BR': 'Português (Brasil)',
} as const; } as const;
type BaseLang<T extends string> = T extends `${infer U}-${string}` ? U : T; // 'en-US' -> 'en' type BaseLang<T extends string> = T extends `${infer U}-${string}` ? U : T; // 'en-US' -> 'en'
@ -28,6 +30,7 @@ const FALLBACK_LOCALES: { from: BaseLang<keyof typeof APP_LOCALES>; to: keyof ty
{ from: 'it', to: 'it-IT' }, { from: 'it', to: 'it-IT' },
{ from: 'ja', to: 'ja-JP' }, { from: 'ja', to: 'ja-JP' },
{ from: 'pl', to: 'pl-PL' }, { from: 'pl', to: 'pl-PL' },
{ from: 'pt', to: 'pt-PT' },
{ from: 'sv', to: 'sv-SE' }, { from: 'sv', to: 'sv-SE' },
{ from: 'ro', to: 'ro-RO' }, { from: 'ro', to: 'ro-RO' },
{ from: 'ru', to: 'ru-RU' }, { from: 'ru', to: 'ru-RU' },