1
0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2025-02-03 01:22:44 +01:00

Merge branch 'new-face-cluster-guide' of https://github.com/aviv926/immich into new-face-cluster-guide

This commit is contained in:
Aviv 2025-01-27 15:07:47 +02:00
commit 85bc051b17
896 changed files with 37673 additions and 36809 deletions
.devcontainer
.github/workflows
.vscode
Makefile
cli
deployment/modules/cloudflare
docker
docs
e2e
i18n

2
.devcontainer/Dockerfile Normal file
View file

@ -0,0 +1,2 @@
ARG BASEIMAGE=mcr.microsoft.com/devcontainers/typescript-node:22@sha256:9791f4aa527774bc370c6bd2f6705ce5a686f1e6f204badd8dfaacce28c631ae
FROM ${BASEIMAGE}

View file

@ -0,0 +1,20 @@
{
"name": "Immich devcontainers",
"build": {
"dockerfile": "Dockerfile",
"args": {
"BASEIMAGE": "mcr.microsoft.com/devcontainers/typescript-node:22"
}
},
"customizations": {
"vscode": {
"extensions": [
"svelte.svelte-vscode"
]
}
},
"forwardPorts": [],
"postCreateCommand": "make install-all",
"remoteUser": "node"
}

View file

@ -59,7 +59,7 @@ jobs:
uses: docker/setup-qemu-action@v3.2.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.7.1
uses: docker/setup-buildx-action@v3.8.0
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
@ -88,7 +88,7 @@ jobs:
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
- name: Build and push image
uses: docker/build-push-action@v6.9.0
uses: docker/build-push-action@v6.10.0
with:
file: cli/Dockerfile
platforms: linux/amd64,linux/arm64

View file

@ -125,7 +125,7 @@ jobs:
uses: docker/setup-qemu-action@v3.2.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.7.1
uses: docker/setup-buildx-action@v3.8.0
- name: Login to Docker Hub
# Only push to Docker Hub when making a release
@ -174,7 +174,7 @@ jobs:
fi
- name: Build and push image
uses: docker/build-push-action@v6.9.0
uses: docker/build-push-action@v6.10.0
with:
context: ${{ env.context }}
file: ${{ env.file }}
@ -216,7 +216,7 @@ jobs:
uses: docker/setup-qemu-action@v3.2.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.7.1
uses: docker/setup-buildx-action@v3.8.0
- name: Login to Docker Hub
# Only push to Docker Hub when making a release
@ -265,7 +265,7 @@ jobs:
fi
- name: Build and push image
uses: docker/build-push-action@v6.9.0
uses: docker/build-push-action@v6.10.0
with:
context: ${{ env.context }}
file: ${{ env.file }}

View file

@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: PR Conventional Commit Validation
uses: ytanikin/PRConventionalCommits@1.2.0
uses: ytanikin/PRConventionalCommits@1.3.0
with:
task_types: '["feat","fix","docs","test","ci","refactor","perf","chore","revert"]'
add_label: 'false'

View file

@ -41,4 +41,4 @@
"explorer.fileNesting.patterns": {
"*.ts": "${capture}.spec.ts,${capture}.mock.ts"
}
}
}

View file

@ -39,7 +39,7 @@ attach-server:
renovate:
LOG_LEVEL=debug npx renovate --platform=local --repository-cache=reset
MODULES = e2e server web cli sdk
MODULES = e2e server web cli sdk docs
audit-%:
npm --prefix $(subst sdk,open-api/typescript-sdk,$*) audit fix
@ -48,11 +48,9 @@ install-%:
build-cli: build-sdk
build-web: build-sdk
build-%: install-%
npm --prefix $(subst sdk,open-api/typescript-sdk,$*) run | grep 'build' >/dev/null \
&& npm --prefix $(subst sdk,open-api/typescript-sdk,$*) run build || true
npm --prefix $(subst sdk,open-api/typescript-sdk,$*) run build
format-%:
npm --prefix $(subst sdk,open-api/typescript-sdk,$*) run | grep 'format:fix' >/dev/null \
&& npm --prefix $(subst sdk,open-api/typescript-sdk,$*) run format:fix || true
npm --prefix $* run format:fix
lint-%:
npm --prefix $* run lint:fix
check-%:
@ -79,14 +77,14 @@ test-medium:
test-medium-dev:
docker exec -it immich_server /bin/sh -c "npm run test:medium"
build-all: $(foreach M,$(MODULES),build-$M) ;
build-all: $(foreach M,$(filter-out e2e,$(MODULES)),build-$M) ;
install-all: $(foreach M,$(MODULES),install-$M) ;
check-all: $(foreach M,$(MODULES),check-$M) ;
lint-all: $(foreach M,$(MODULES),lint-$M) ;
format-all: $(foreach M,$(MODULES),format-$M) ;
check-all: $(foreach M,$(filter-out sdk cli docs,$(MODULES)),check-$M) ;
lint-all: $(foreach M,$(filter-out sdk docs,$(MODULES)),lint-$M) ;
format-all: $(foreach M,$(filter-out sdk,$(MODULES)),format-$M) ;
audit-all: $(foreach M,$(MODULES),audit-$M) ;
hygiene-all: lint-all format-all check-all sql audit-all;
test-all: $(foreach M,$(MODULES),test-$M) ;
test-all: $(foreach M,$(filter-out sdk docs,$(MODULES)),test-$M) ;
clean:
find . -name "node_modules" -type d -prune -exec rm -rf '{}' +

View file

@ -1 +1 @@
22.11.0
22.12.0

View file

@ -1,4 +1,4 @@
FROM node:22.10.0-alpine3.20@sha256:fc95a044b87e95507c60c1f8c829e5d98ddf46401034932499db370c494ef0ff AS core
FROM node:22.12.0-alpine3.20@sha256:96cc8323e25c8cc6ddcb8b965e135cfd57846e8003ec0d7bcec16c5fd5f6d39f AS core
WORKDIR /usr/src/open-api/typescript-sdk
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./

657
cli/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{
"name": "@immich/cli",
"version": "2.2.28",
"version": "2.2.37",
"description": "Command Line Interface (CLI) for Immich",
"type": "module",
"exports": "./dist/index.js",
@ -20,17 +20,17 @@
"@types/cli-progress": "^3.11.0",
"@types/lodash-es": "^4.17.12",
"@types/mock-fs": "^4.13.1",
"@types/node": "^22.8.1",
"@typescript-eslint/eslint-plugin": "^8.0.0",
"@typescript-eslint/parser": "^8.0.0",
"@types/node": "^22.10.2",
"@typescript-eslint/eslint-plugin": "^8.15.0",
"@typescript-eslint/parser": "^8.15.0",
"@vitest/coverage-v8": "^2.0.5",
"byte-size": "^9.0.0",
"cli-progress": "^3.12.0",
"commander": "^12.0.0",
"eslint": "^9.0.0",
"eslint": "^9.14.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^55.0.0",
"eslint-plugin-unicorn": "^56.0.1",
"globals": "^15.9.0",
"mock-fs": "^5.2.0",
"prettier": "^3.2.5",
@ -67,6 +67,6 @@
"lodash-es": "^4.17.21"
},
"volta": {
"node": "22.11.0"
"node": "22.12.0"
}
}

View file

@ -1,5 +1,6 @@
import {
Action,
AssetBulkUploadCheckItem,
AssetBulkUploadCheckResult,
AssetMediaResponseDto,
AssetMediaStatus,
@ -11,7 +12,7 @@ import {
getSupportedMediaTypes,
} from '@immich/sdk';
import byteSize from 'byte-size';
import { Presets, SingleBar } from 'cli-progress';
import { MultiBar, Presets, SingleBar } from 'cli-progress';
import { chunk } from 'lodash-es';
import { Stats, createReadStream } from 'node:fs';
import { stat, unlink } from 'node:fs/promises';
@ -90,23 +91,23 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
return { newFiles: files, duplicates: [] };
}
const progressBar = new SingleBar(
{ format: 'Checking files | {bar} | {percentage}% | ETA: {eta}s | {value}/{total} assets' },
const multiBar = new MultiBar(
{ format: '{message} | {bar} | {percentage}% | ETA: {eta}s | {value}/{total} assets' },
Presets.shades_classic,
);
progressBar.start(files.length, 0);
const hashProgressBar = multiBar.create(files.length, 0, { message: 'Hashing files ' });
const checkProgressBar = multiBar.create(files.length, 0, { message: 'Checking for duplicates' });
const newFiles: string[] = [];
const duplicates: Asset[] = [];
const queue = new Queue<string[], AssetBulkUploadCheckResults>(
async (filepaths: string[]) => {
const dto = await Promise.all(
filepaths.map(async (filepath) => ({ id: filepath, checksum: await sha1(filepath) })),
);
const response = await checkBulkUpload({ assetBulkUploadCheckDto: { assets: dto } });
const checkBulkUploadQueue = new Queue<AssetBulkUploadCheckItem[], void>(
async (assets: AssetBulkUploadCheckItem[]) => {
const response = await checkBulkUpload({ assetBulkUploadCheckDto: { assets } });
const results = response.results as AssetBulkUploadCheckResults;
for (const { id: filepath, assetId, action } of results) {
if (action === Action.Accept) {
newFiles.push(filepath);
@ -115,19 +116,46 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
duplicates.push({ id: assetId as string, filepath });
}
}
progressBar.increment(filepaths.length);
checkProgressBar.increment(assets.length);
},
{ concurrency, retry: 3 },
);
const results: { id: string; checksum: string }[] = [];
let checkBulkUploadRequests: AssetBulkUploadCheckItem[] = [];
const queue = new Queue<string, AssetBulkUploadCheckItem[]>(
async (filepath: string): Promise<AssetBulkUploadCheckItem[]> => {
const dto = { id: filepath, checksum: await sha1(filepath) };
results.push(dto);
checkBulkUploadRequests.push(dto);
if (checkBulkUploadRequests.length === 5000) {
const batch = checkBulkUploadRequests;
checkBulkUploadRequests = [];
void checkBulkUploadQueue.push(batch);
}
hashProgressBar.increment();
return results;
},
{ concurrency, retry: 3 },
);
for (const items of chunk(files, concurrency)) {
await queue.push(items);
for (const item of files) {
void queue.push(item);
}
await queue.drained();
progressBar.stop();
if (checkBulkUploadRequests.length > 0) {
void checkBulkUploadQueue.push(checkBulkUploadRequests);
}
await checkBulkUploadQueue.drained();
multiBar.stop();
console.log(`Found ${newFiles.length} new files and ${duplicates.length} duplicate${s(duplicates.length)}`);
@ -201,8 +229,8 @@ export const uploadFiles = async (files: string[], { dryRun, concurrency }: Uplo
{ concurrency, retry: 3 },
);
for (const filepath of files) {
await queue.push(filepath);
for (const item of files) {
void queue.push(item);
}
await queue.drained();

View file

@ -72,8 +72,8 @@ export class Queue<T, R> {
* @returns Promise<void> - The returned Promise will be resolved when all tasks in the queue have been processed by a worker.
* This promise could be ignored as it will not lead to a `unhandledRejection`.
*/
async drained(): Promise<void> {
await this.queue.drain();
drained(): Promise<void> {
return this.queue.drained();
}
/**

View file

@ -2,37 +2,37 @@
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/cloudflare/cloudflare" {
version = "4.45.0"
constraints = "4.45.0"
version = "4.48.0"
constraints = "4.48.0"
hashes = [
"h1:/CGpnYMkLRDmqn4iAsh/jg7ELZ6QExUw03VdjKZyK5M=",
"h1:82C/ryqwQvxhBINYOOyF5ZzPW/k4zJ/RYT13eCdPgEc=",
"h1:8Wu1D7ZwbLGdHakLRAzoAJ5VqZ8I14qzkPv1OGNfIlg=",
"h1:CVq0CAibeueOuiNk0UQtwZvMLMof33n1BgskFPOymrk=",
"h1:FSS5Kq+L+CX1zARy8PhaF8edBFNgsLtds4Uo8MwJiK8=",
"h1:L4qsorLII7f8xSFmv6JOoWfLWDunWQEpK964Bxk7mtM=",
"h1:StO3PV5PDskSCnhoHhWHOPxu6hbzJUQggfLgOSkvhwg=",
"h1:Tjo+Er9ets5YrTRIdP9LBmi4p89nL/W+A7r8a1MM9nI=",
"h1:XIwT+AWvks1LTytePM9zls+O8ItxoqCfPOgHwuH9ivQ=",
"h1:aOXn/zuM1+5GGy/SSRx8q4EYCSTFE9Tr0twHPIf5/KE=",
"h1:lb+YcuZ4guYd8zE51vgSnDsRAD9IV00Z15l1i1X52s8=",
"h1:pYwNXGjfXA2rUEmotGMLWgmavT9D2rdHnV3TpuIK3ko=",
"h1:q1qrnPq6KkljwBrugCwzb7f0SVP4Lzkfh+EOLARY9V8=",
"h1:v9sL4cZLTV5Gu2004DDyy7209gT0JmudBCAD0WCr/JE=",
"zh:00be2a6adc76615a368491c7a026098103b6286deb31e3cfb037365dd39f095f",
"zh:05bd072e6119f7a5abff05c6064001f745473119a956586cf77ae843cf55d666",
"zh:228bbe61345c4e8e0bc6b698b4b9652abff65662ee72ede2aecb4c3efb91b243",
"zh:2948aeefe71ba041c94082cf931ecc95510d93af0a61d0a287880f5b9d24b11a",
"zh:5dfc2c5e95843ca54957212ee3ecb7ff06f2cf60bfd6ca278b5249fd70ac18f5",
"zh:69922cb45559b0b0544b9c2d31ed2d0fac9121faa75bc2f523484785b45d8e2b",
"h1:0IKUOR32xEI1suS5QCOjfxjQ2mRd058btXk8hVnaOJ4=",
"h1:3YG6vu/bFPcYOeLdSUZhiAWiWKaFlOAR34z2o8cbE9k=",
"h1:FvGy06/i9AMtVkSIUnCrXNv5xF6jqBqMH8oPVLyeeAg=",
"h1:GXH7nIF0ocMqebbA41+fSGIYfM+VAM/PvTe7fJr8UrQ=",
"h1:H0ll0ph4404vFE868W3qJ3zhOyy4jbXrOMtdkViEZsU=",
"h1:SX42e3k73IcFcrQlZ2e/Veqt2tvCMy6fwlo5yNUktCE=",
"h1:Uu/gjBc99GefdPdSrlBwU75DWU0ZcwGcrd3ZFyTeL0s=",
"h1:VZw0uN41PWRmNlhg7Ze0Eh7cdoklX1oZbfNAXNYnU1I=",
"h1:cMdV7ql6PsFa4qtb0EoZSctvTaTqV7yplBSDwcLRCLc=",
"h1:ePGvSurmlqOCkD761vkhRmz7bsK36/EnIvx2Xy8TdXo=",
"h1:fOYufF+1bzw2N3aHLpkLB6E8VbZ4ysXDODYQOlwhwd4=",
"h1:qe8RbnWq0T4xhqjn9QcbO6YW5YDx47P+eJ0NUMIfwCc=",
"h1:tRD2av6PafHDP/b9jDQsG5/aX+lHeKxpbIEHYYLBVUc=",
"h1:zyl6Gvx/CFpwYW8pFFDesfO8Lxv+a6CopyAsIMhp54s=",
"zh:04c0a49c2b23140b2f21cfd0d52f9798d70d3bdae3831613e156aabe519bbc6c",
"zh:185f21b4834ba63e8df1f84aa34639d8a7e126429a4007bb5f9ad82f2602a997",
"zh:234724f52cb4c0c3f7313d3b2697caef26d921d134f26ae14801e7afac522f7b",
"zh:38a56fcd1b3e40706af995611c977816543b53f1e55fe2720944aae2b6828fcb",
"zh:419938f5430fc78eff933470aefbf94a460a478f867cf7761a3dea177b4eb153",
"zh:4b46d92bfde1deab7de7ba1a6bbf4ba7c711e4fd925341ddf09d4cc28dae03d8",
"zh:537acd4a31c752f1bae305ba7190f60b71ad1a459f22d464f3f914336c9e919f",
"zh:5ff36b005aad07697dd0b30d4f0c35dbcdc30dc52b41722552060792fa87ce04",
"zh:635c5ee419daea098060f794d9d7d999275301181e49562c4e4c08f043076937",
"zh:859277c330d61f91abe9e799389467ca11b77131bf34bedbef52f8da68b2bb49",
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
"zh:9d83a0cbf72327286f7dbd63cd4af89059c648163fe6ed21b1df768e0518d445",
"zh:a8e1982945822c7d7aaa6ba8602c7247d1a3fad15d612f30eb323491a637bf8d",
"zh:c6d41ebd69ddb23e3dad49a0ebf1da5a9c7d8706a4f55d953115d371f407928b",
"zh:d03e5442b12846c2737f099d30cd23d9f85a0c6d65437ccb44819f9a6c4e1d7f",
"zh:d446f2e1186b35037aea03b0e27d8b032d2f069f194f84b3f0e2907b3a79a955",
"zh:e4d7549a4c856524e01f3dd4d69f57119ea205f7a0fa38dcfe154475b4ae9258",
"zh:e64b8915cb9686f85e77115bd674f2faf4f29880688067d7d0f1376566fdb3b0",
"zh:f046efdc55e6385cdd69baaa06a929bef9fe6809d373b0d2d6c7df8f8c23eddc",
"zh:927dfdb8d9aef37ead03fceaa29e87ba076a3dd24e19b6cefdbb0efe9987ff8c",
"zh:bbf2226f07f6b1e721877328e69ded4b64f9c196634d2e2429e3cfabbe41e532",
"zh:daeed873d6f38604232b46ee4a5830c85d195b967f8dbcafe2fcffa98daf9c5f",
"zh:f8f2fc4646c1ba44085612fa7f4dbb7cbcead43b4e661f2b98ddfb4f68afc758",
]
}

View file

@ -5,7 +5,7 @@ terraform {
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "4.45.0"
version = "4.48.0"
}
}
}

View file

@ -2,37 +2,37 @@
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/cloudflare/cloudflare" {
version = "4.45.0"
constraints = "4.45.0"
version = "4.48.0"
constraints = "4.48.0"
hashes = [
"h1:/CGpnYMkLRDmqn4iAsh/jg7ELZ6QExUw03VdjKZyK5M=",
"h1:82C/ryqwQvxhBINYOOyF5ZzPW/k4zJ/RYT13eCdPgEc=",
"h1:8Wu1D7ZwbLGdHakLRAzoAJ5VqZ8I14qzkPv1OGNfIlg=",
"h1:CVq0CAibeueOuiNk0UQtwZvMLMof33n1BgskFPOymrk=",
"h1:FSS5Kq+L+CX1zARy8PhaF8edBFNgsLtds4Uo8MwJiK8=",
"h1:L4qsorLII7f8xSFmv6JOoWfLWDunWQEpK964Bxk7mtM=",
"h1:StO3PV5PDskSCnhoHhWHOPxu6hbzJUQggfLgOSkvhwg=",
"h1:Tjo+Er9ets5YrTRIdP9LBmi4p89nL/W+A7r8a1MM9nI=",
"h1:XIwT+AWvks1LTytePM9zls+O8ItxoqCfPOgHwuH9ivQ=",
"h1:aOXn/zuM1+5GGy/SSRx8q4EYCSTFE9Tr0twHPIf5/KE=",
"h1:lb+YcuZ4guYd8zE51vgSnDsRAD9IV00Z15l1i1X52s8=",
"h1:pYwNXGjfXA2rUEmotGMLWgmavT9D2rdHnV3TpuIK3ko=",
"h1:q1qrnPq6KkljwBrugCwzb7f0SVP4Lzkfh+EOLARY9V8=",
"h1:v9sL4cZLTV5Gu2004DDyy7209gT0JmudBCAD0WCr/JE=",
"zh:00be2a6adc76615a368491c7a026098103b6286deb31e3cfb037365dd39f095f",
"zh:05bd072e6119f7a5abff05c6064001f745473119a956586cf77ae843cf55d666",
"zh:228bbe61345c4e8e0bc6b698b4b9652abff65662ee72ede2aecb4c3efb91b243",
"zh:2948aeefe71ba041c94082cf931ecc95510d93af0a61d0a287880f5b9d24b11a",
"zh:5dfc2c5e95843ca54957212ee3ecb7ff06f2cf60bfd6ca278b5249fd70ac18f5",
"zh:69922cb45559b0b0544b9c2d31ed2d0fac9121faa75bc2f523484785b45d8e2b",
"h1:0IKUOR32xEI1suS5QCOjfxjQ2mRd058btXk8hVnaOJ4=",
"h1:3YG6vu/bFPcYOeLdSUZhiAWiWKaFlOAR34z2o8cbE9k=",
"h1:FvGy06/i9AMtVkSIUnCrXNv5xF6jqBqMH8oPVLyeeAg=",
"h1:GXH7nIF0ocMqebbA41+fSGIYfM+VAM/PvTe7fJr8UrQ=",
"h1:H0ll0ph4404vFE868W3qJ3zhOyy4jbXrOMtdkViEZsU=",
"h1:SX42e3k73IcFcrQlZ2e/Veqt2tvCMy6fwlo5yNUktCE=",
"h1:Uu/gjBc99GefdPdSrlBwU75DWU0ZcwGcrd3ZFyTeL0s=",
"h1:VZw0uN41PWRmNlhg7Ze0Eh7cdoklX1oZbfNAXNYnU1I=",
"h1:cMdV7ql6PsFa4qtb0EoZSctvTaTqV7yplBSDwcLRCLc=",
"h1:ePGvSurmlqOCkD761vkhRmz7bsK36/EnIvx2Xy8TdXo=",
"h1:fOYufF+1bzw2N3aHLpkLB6E8VbZ4ysXDODYQOlwhwd4=",
"h1:qe8RbnWq0T4xhqjn9QcbO6YW5YDx47P+eJ0NUMIfwCc=",
"h1:tRD2av6PafHDP/b9jDQsG5/aX+lHeKxpbIEHYYLBVUc=",
"h1:zyl6Gvx/CFpwYW8pFFDesfO8Lxv+a6CopyAsIMhp54s=",
"zh:04c0a49c2b23140b2f21cfd0d52f9798d70d3bdae3831613e156aabe519bbc6c",
"zh:185f21b4834ba63e8df1f84aa34639d8a7e126429a4007bb5f9ad82f2602a997",
"zh:234724f52cb4c0c3f7313d3b2697caef26d921d134f26ae14801e7afac522f7b",
"zh:38a56fcd1b3e40706af995611c977816543b53f1e55fe2720944aae2b6828fcb",
"zh:419938f5430fc78eff933470aefbf94a460a478f867cf7761a3dea177b4eb153",
"zh:4b46d92bfde1deab7de7ba1a6bbf4ba7c711e4fd925341ddf09d4cc28dae03d8",
"zh:537acd4a31c752f1bae305ba7190f60b71ad1a459f22d464f3f914336c9e919f",
"zh:5ff36b005aad07697dd0b30d4f0c35dbcdc30dc52b41722552060792fa87ce04",
"zh:635c5ee419daea098060f794d9d7d999275301181e49562c4e4c08f043076937",
"zh:859277c330d61f91abe9e799389467ca11b77131bf34bedbef52f8da68b2bb49",
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
"zh:9d83a0cbf72327286f7dbd63cd4af89059c648163fe6ed21b1df768e0518d445",
"zh:a8e1982945822c7d7aaa6ba8602c7247d1a3fad15d612f30eb323491a637bf8d",
"zh:c6d41ebd69ddb23e3dad49a0ebf1da5a9c7d8706a4f55d953115d371f407928b",
"zh:d03e5442b12846c2737f099d30cd23d9f85a0c6d65437ccb44819f9a6c4e1d7f",
"zh:d446f2e1186b35037aea03b0e27d8b032d2f069f194f84b3f0e2907b3a79a955",
"zh:e4d7549a4c856524e01f3dd4d69f57119ea205f7a0fa38dcfe154475b4ae9258",
"zh:e64b8915cb9686f85e77115bd674f2faf4f29880688067d7d0f1376566fdb3b0",
"zh:f046efdc55e6385cdd69baaa06a929bef9fe6809d373b0d2d6c7df8f8c23eddc",
"zh:927dfdb8d9aef37ead03fceaa29e87ba076a3dd24e19b6cefdbb0efe9987ff8c",
"zh:bbf2226f07f6b1e721877328e69ded4b64f9c196634d2e2429e3cfabbe41e532",
"zh:daeed873d6f38604232b46ee4a5830c85d195b967f8dbcafe2fcffa98daf9c5f",
"zh:f8f2fc4646c1ba44085612fa7f4dbb7cbcead43b4e661f2b98ddfb4f68afc758",
]
}

View file

@ -5,7 +5,7 @@ terraform {
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "4.45.0"
version = "4.48.0"
}
}
}

View file

@ -47,6 +47,7 @@ services:
ports:
- 9230:9230
- 9231:9231
- 2283:2283
depends_on:
- redis
- database
@ -56,13 +57,15 @@ services:
immich-web:
container_name: immich_web
image: immich-web-dev:latest
# Needed for rootless docker setup, see https://github.com/moby/moby/issues/45919
# user: 0:0
build:
context: ../web
command: ['/usr/src/app/bin/immich-web']
env_file:
- .env
ports:
- 2283:3000
- 3000:3000
- 24678:24678
volumes:
- ../web:/usr/src/app
@ -103,7 +106,7 @@ services:
redis:
container_name: immich_redis
image: redis:6.2-alpine@sha256:2ba50e1ac3a0ea17b736ce9db2b0a9f6f8b85d4c27d5f5accc6a416d8f42c6d5
image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
healthcheck:
test: redis-cli ping || exit 1
@ -122,26 +125,23 @@ services:
ports:
- 5432:5432
healthcheck:
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
test: >-
pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
--command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
echo "checksum failure count is $$Chksum";
[ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
command:
[
'postgres',
'-c',
'shared_preload_libraries=vectors.so',
'-c',
'search_path="$$user", public, vectors',
'-c',
'logging_collector=on',
'-c',
'max_wal_size=2GB',
'-c',
'shared_buffers=512MB',
'-c',
'wal_compression=on',
]
command: >-
postgres
-c shared_preload_libraries=vectors.so
-c 'search_path="$$user", public, vectors'
-c logging_collector=on
-c max_wal_size=2GB
-c shared_buffers=512MB
-c wal_compression=on
# set IMMICH_TELEMETRY_INCLUDE=all in .env to enable metrics
# immich-prometheus:

View file

@ -47,7 +47,7 @@ services:
redis:
container_name: immich_redis
image: redis:6.2-alpine@sha256:2ba50e1ac3a0ea17b736ce9db2b0a9f6f8b85d4c27d5f5accc6a416d8f42c6d5
image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
healthcheck:
test: redis-cli ping || exit 1
restart: always
@ -67,26 +67,23 @@ services:
ports:
- 5432:5432
healthcheck:
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
test: >-
pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
--command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
echo "checksum failure count is $$Chksum";
[ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
command:
[
'postgres',
'-c',
'shared_preload_libraries=vectors.so',
'-c',
'search_path="$$user", public, vectors',
'-c',
'logging_collector=on',
'-c',
'max_wal_size=2GB',
'-c',
'shared_buffers=512MB',
'-c',
'wal_compression=on',
]
command: >-
postgres
-c shared_preload_libraries=vectors.so
-c 'search_path="$$user", public, vectors'
-c logging_collector=on
-c max_wal_size=2GB
-c shared_buffers=512MB
-c wal_compression=on
restart: always
# set IMMICH_TELEMETRY_INCLUDE=all in .env to enable metrics
@ -94,7 +91,7 @@ services:
container_name: immich_prometheus
ports:
- 9090:9090
image: prom/prometheus@sha256:378f4e03703557d1c6419e6caccf922f96e6d88a530f7431d66a4c4f4b1000fe
image: prom/prometheus@sha256:565ee86501224ebbb98fc10b332fa54440b100469924003359edf49cbce374bd
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
@ -106,7 +103,7 @@ services:
command: ['./run.sh', '-disable-reporting']
ports:
- 3000:3000
image: grafana/grafana:11.3.0-ubuntu@sha256:51587e148ac0214d7938e7f3fe8512182e4eb6141892a3ffb88bba1901b49285
image: grafana/grafana:11.4.0-ubuntu@sha256:afccec22ba0e4815cca1d2bf3836e414322390dc78d77f1851976ffa8d61051c
volumes:
- grafana-data:/var/lib/grafana

View file

@ -48,7 +48,7 @@ services:
redis:
container_name: immich_redis
image: docker.io/redis:6.2-alpine@sha256:2ba50e1ac3a0ea17b736ce9db2b0a9f6f8b85d4c27d5f5accc6a416d8f42c6d5
image: docker.io/redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
healthcheck:
test: redis-cli ping || exit 1
restart: always
@ -65,26 +65,23 @@ services:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
healthcheck:
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
test: >-
pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
--command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
echo "checksum failure count is $$Chksum";
[ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
command:
[
'postgres',
'-c',
'shared_preload_libraries=vectors.so',
'-c',
'search_path="$$user", public, vectors',
'-c',
'logging_collector=on',
'-c',
'max_wal_size=2GB',
'-c',
'shared_buffers=512MB',
'-c',
'wal_compression=on',
]
command: >-
postgres
-c shared_preload_libraries=vectors.so
-c 'search_path="$$user", public, vectors'
-c logging_collector=on
-c max_wal_size=2GB
-c shared_buffers=512MB
-c wal_compression=on
restart: always
volumes:

View file

@ -1 +1 @@
22.11.0
22.12.0

View file

@ -69,7 +69,8 @@ However, Immich will delete original files that have been trashed when the trash
### Why do my file names appear as a random string in the file manager?
When Storage Template is off (default) Immich saves the file names in a random string (also known as random UUIDs) to prevent duplicate file names. To retrieve the original file names, you must enable the Storage Template and then run the STORAGE TEMPLATE MIGRATION job.
When Storage Template is off (default) Immich saves the file names in a random string (also known as random UUIDs) to prevent duplicate file names.
To retrieve the original file names, you must enable the Storage Template and then run the STORAGE TEMPLATE MIGRATION job.
It is recommended to read about [Storage Template](https://immich.app/docs/administration/storage-template) before activation.
### Can I add my existing photo library?
@ -82,11 +83,20 @@ Template changes will only apply to _new_ assets. To retroactively apply the tem
### Why are only photos and not videos being uploaded to Immich?
This often happens when using a reverse proxy (such as Nginx or Cloudflare tunnel) in front of Immich. Make sure to set your reverse proxy to allow large `POST` requests. In `nginx`, set `client_max_body_size 50000M;` or similar. Also, check the disk space of your reverse proxy. In some cases, proxies cache requests to disk before passing them on, and if disk space runs out, the request fails.
This often happens when using a reverse proxy in front of Immich.
Make sure to [set your reverse proxy](/docs/administration/reverse-proxy/) to allow large requests.
Also, check the disk space of your reverse proxy.
In some cases, proxies cache requests to disk before passing them on, and if disk space runs out, the request fails.
If you are using Cloudflare Tunnel, please know that they set a maxiumum filesize of 100 MB that cannot be changed.
At times, files larger than this may work, potentially up to 1 GB. However, the official limit is 100 MB.
If you are having issues, we recommend switching to a different network deployment.
### Why are some photos stored in the file system with the wrong date?
There are a few different scenarios that can lead to this situation. The solution is to rerun the storage migration job. The job is only automatically run once per asset after upload. If metadata extraction originally failed, the jobs were cleared/canceled, etc., the job may not have run automatically the first time.
There are a few different scenarios that can lead to this situation. The solution is to rerun the storage migration job.
The job is only automatically run once per asset after upload. If metadata extraction originally failed, the jobs were cleared/canceled, etc.,
the job may not have run automatically the first time.
### How can I hide photos from the timeline?
@ -116,7 +126,8 @@ Also, there are additional jobs for person (face) thumbnails.
### Why do files from WhatsApp not appear with the correct date?
Files sent on WhatsApp are saved without metadata on the file. Therefore, Immich has no way of knowing the original date of the file when files are uploaded from WhatsApp, not the order of arrival on the device. [See #3527](https://github.com/immich-app/immich/issues/3527).
Files sent on WhatsApp are saved without metadata on the file. Therefore, Immich has no way of knowing the original date of the file when files are uploaded from WhatsApp,
not the order of arrival on the device. [See #9116](https://github.com/immich-app/immich/discussions/9116).
### What happens if an asset exists in more than one account?
@ -308,7 +319,7 @@ Do not exaggerate with the job concurrency because you're probably thoroughly ov
### My server shows Server Status Offline | Version Unknown. What can I do?
You need to enable WebSockets on your reverse proxy.
You need to [enable WebSockets](/docs/administration/reverse-proxy/) on your reverse proxy.
---
@ -339,7 +350,7 @@ The non-root user/group needs read/write access to the volume mounts, including
The Docker Compose top level volume element does not support non-root access, all of the above volumes must be local volume mounts.
:::
For a further hardened system, you can add the following block to every container except for `immich_postgres`.
For a further hardened system, you can add the following block to every container.
<details>
<summary>docker-compose.yml</summary>
@ -388,22 +399,21 @@ If the error says the worker is exiting, then this is normal. This is a feature
There are a few reasons why this can happen.
If the error mentions SIGKILL or error code 137, it most likely means the service is running out of memory. Consider either increasing the server's RAM or moving the service to a server with more RAM.
If the error mentions SIGKILL or error code 137, it most likely means the service is running out of memory.
Consider either increasing the server's RAM or moving the service to a server with more RAM.
If it mentions SIGILL (note the lack of a K) or error code 132, it most likely means your server's CPU is incompatible. This is unlikely to occur on version 1.92.0 or later. Consider upgrading if your version of Immich is below that.
If your version of Immich is below 1.92.0 and the crash occurs after logs about tracing or exporting a model, consider either upgrading or disabling the Tag Objects job.
If it mentions SIGILL (note the lack of a K) or error code 132, it most likely means your server's CPU is incompatible with Immich.
## Database
### Why am I getting database ownership errors?
If you get database errors such as `FATAL: data directory "/var/lib/postgresql/data" has wrong ownership` upon database startup, this is likely due to an issue with your filesystem.
NTFS and ex/FAT/32 filesystems are not supported. See [here](/docs/install/environment-variables#supported-filesystems) for more details.
NTFS and ex/FAT/32 filesystems are not supported. See [here](/docs/install/requirements#special-requirements-for-windows-users) for more details.
### How can I verify the integrity of my database?
If you installed Immich using v1.104.0 or later, you likely have database checksums enabled by default. You can check this by running the following command.
Database checksums are enabled by default for new installations since v1.104.0. You can check if they are enabled by running the following command.
A result of `on` means that checksums are enabled.
<details>
@ -419,7 +429,7 @@ docker exec -it immich_postgres psql --dbname=immich --username=<DB_USERNAME> --
</details>
If checksums are enabled, you can check the status of the database with the following command. A normal result is all zeroes.
If checksums are enabled, you can check the status of the database with the following command. A normal result is all `0`s.
<details>
<summary>Check for database corruption</summary>

View file

@ -15,8 +15,6 @@ Immich saves [file paths in the database](https://github.com/immich-app/immich/d
Refer to the official [postgres documentation](https://www.postgresql.org/docs/current/backup.html) for details about backing up and restoring a postgres database.
:::
The recommended way to backup and restore the Immich database is to use the `pg_dumpall` command. When restoring, you need to delete the `DB_DATA_LOCATION` folder (if it exists) to reset the database.
:::caution
It is not recommended to directly backup the `DB_DATA_LOCATION` folder. Doing so while the database is running can lead to a corrupted backup that cannot be restored.
:::
@ -60,72 +58,34 @@ docker compose up -d # Start remainder of Immich apps
<TabItem value="Windows system (PowerShell)" label="Windows system (PowerShell)">
```powershell title='Backup'
docker exec -t immich_postgres pg_dumpall --clean --if-exists --username=postgres | Set-Content -Encoding utf8 "C:\path\to\backup\dump.sql"
[System.IO.File]::WriteAllLines("C:\absolute\path\to\backup\dump.sql", (docker exec -t immich_postgres pg_dumpall --clean --if-exists --username=postgres))
```
```powershell title='Restore'
docker compose down -v # CAUTION! Deletes all Immich data to start from scratch
## Uncomment the next line and replace DB_DATA_LOCATION with your Postgres path to permanently reset the Postgres database
# Remove-Item -Recurse -Force DB_DATA_LOCATION # CAUTION! Deletes all Immich data to start from scratch
## You should mount the backup (as a volume, example: - 'C:\path\to\backup\dump.sql':/dump.sql) into the immich_postgres container using the docker-compose.yml
docker compose pull # Update to latest version of Immich (if desired)
docker compose create # Create Docker containers for Immich apps without running them
docker start immich_postgres # Start Postgres server
sleep 10 # Wait for Postgres server to start up
docker exec -it immich_postgres bash # Enter the Docker shell and run the following command
# Check the database user if you deviated from the default
gc "C:\path\to\backup\dump.sql" | docker exec -i immich_postgres psql --username=postgres # Restore Backup
cat "/dump.sql" \
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
| psql --username=postgres # Restore Backup
exit # Exit the Docker shell
docker compose up -d # Start remainder of Immich apps
```
</TabItem>
</Tabs>
Note that for the database restore to proceed properly, it requires a completely fresh install (i.e. the Immich server has never run since creating the Docker containers). If the Immich app has run, Postgres conflicts may be encountered upon database restoration (relation already exists, violated foreign key constraints, multiple primary keys, etc.).
Note that for the database restore to proceed properly, it requires a completely fresh install (i.e. the Immich server has never run since creating the Docker containers). If the Immich app has run, Postgres conflicts may be encountered upon database restoration (relation already exists, violated foreign key constraints, multiple primary keys, etc.), in which case you need to delete the `DB_DATA_LOCATION` folder to reset the database.
:::tip
Some deployment methods make it difficult to start the database without also starting the server or microservices. In these cases, you may set the environmental variable `DB_SKIP_MIGRATIONS=true` before starting the services. This will prevent the server from running migrations that interfere with the restore process. Note that both the server and microservices must have this variable set to prevent the migrations from running. Be sure to remove this variable and restart the services after the database is restored.
:::
### Automatic Database Backups
The database dumps can also be automated (using [this image](https://github.com/prodrigestivill/docker-postgres-backup-local)) by editing the docker compose file to match the following:
```yaml
services:
...
backup:
container_name: immich_db_dumper
image: prodrigestivill/postgres-backup-local:14
restart: always
env_file:
- .env
environment:
POSTGRES_HOST: database
POSTGRES_CLUSTER: 'TRUE'
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: ${DB_DATABASE_NAME}
SCHEDULE: "@daily"
POSTGRES_EXTRA_OPTS: '--clean --if-exists'
BACKUP_DIR: /db_dumps
volumes:
- ./db_dumps:/db_dumps
depends_on:
- database
```
Then you can restore with the same command but pointed at the latest dump.
```bash title='Automated Restore'
# Be sure to check the username if you changed it from default
gunzip < db_dumps/last/immich-latest.sql.gz \
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
| docker exec -i immich_postgres psql --username=postgres
```
:::note
If you see the error `ERROR: type "earth" does not exist`, or you have problems with Reverse Geocoding after a restore, add the following `sed` fragment to your restore command.
Example: `gunzip < "/path/to/backup/dump.sql.gz" | sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" | docker exec -i immich_postgres psql --username=postgres`
Some deployment methods make it difficult to start the database without also starting the server. In these cases, you may set the environment variable `DB_SKIP_MIGRATIONS=true` before starting the services. This will prevent the server from running migrations that interfere with the restore process. Be sure to remove this variable and restart the services after the database is restored.
:::
## Filesystem

View file

@ -19,3 +19,9 @@ You can use [this guide](/docs/guides/smtp-gmail) to use Gmail's SMTP server.
Users can manage their email notification settings from their account settings page on the web. They can choose to turn email notifications on or off for the following events:
<img src={require('./img/user-notifications-settings.png').default} width="80%" title="User notification settings" />
## Notification templates
You can override the default notification text with custom templates in HTML format. You can use tags to show dynamic tags in your templates.
<img src={require('./img/user-notifications-templates.png').default} width="80%" title="User notification templates" />

Binary file not shown.

After

(image error) Size: 195 KiB

View file

@ -3,7 +3,7 @@
## Folder checks
:::info
The folders considered for these checks include: `upload/`, `library/`, `thumbs/`, `encoded-video/`, `profile/`
The folders considered for these checks include: `upload/`, `library/`, `thumbs/`, `encoded-video/`, `profile/`, `backups/`
:::
When Immich starts, it performs a series of checks in order to validate that it can read and write files to the volume mounts used by the storage system. If it cannot perform all the required operations, it will fail to start. The checks include:
@ -40,7 +40,9 @@ The above error messages show that the server has previously (successfully) writ
### Ignoring the checks
The checks are designed to catch common problems that we have seen users have in the past, but if you want to disable them you can set the following environment variable:
:::warning
The checks are designed to catch common problems that we have seen users have in the past, and often indicate there's something wrong that you should solve. If you know what you're doing and you want to disable them you can set the following environment variable:
:::
```
IMMICH_IGNORE_MOUNT_CHECK_ERRORS=true

View file

@ -157,6 +157,10 @@ Immich supports [Reverse Geocoding](/docs/features/reverse-geocoding) using data
SMTP server setup, for user creation notifications, new albums, etc. More information can be found [here](/docs/administration/email-notification)
## Notification Templates
Override the default notifications text with notification templates. More information can be found [here](/docs/administration/email-notification)
## Server Settings
### External Domain
@ -205,4 +209,68 @@ When this option is enabled the `immich-server` will periodically make requests
## Video Transcoding Settings
The system administrator can define parameters according to which video files will be converted to different formats (depending on the settings). The settings can be changed in depth, to learn more about the terminology used here, refer to FFmpeg documentation for [H.264](https://trac.ffmpeg.org/wiki/Encode/H.264) codec, [HEVC](https://trac.ffmpeg.org/wiki/Encode/H.265) codec and [VP9](https://trac.ffmpeg.org/wiki/Encode/VP9) codec.
The system administrator can configure which video files will be converted to different formats. The settings can be changed in depth, to learn more about the terminology used here, refer to FFmpeg documentation for [H.264](https://trac.ffmpeg.org/wiki/Encode/H.264) codec, [HEVC](https://trac.ffmpeg.org/wiki/Encode/H.265) codec and [VP9](https://trac.ffmpeg.org/wiki/Encode/VP9) codec.
Which streams of a video file will be transcoded is determined by the [Transcode Policy](#ffmpeg.transcode). Streams that are transcoded use the following settings (config file name in brackets). Streams that are not transcoded are untouched and preserve their original settings.
### Accepted containers (`ffmpeg.acceptedContainers`) {#ffmpeg.acceptedContainers}
If the video asset's container format is not in this list, it will be remuxed to MP4 even if no streams need to be transcoded.
The default set of accepted container formats is `mov`, `ogg` and `webm`.
### Preset (`ffmpeg.preset`) {#ffmpeg.preset}
The amount of "compute effort" to put into transcoding. These use [the preset names from h264](https://trac.ffmpeg.org/wiki/Encode/H.264#Preset) and will be converted to appropriate values for encoders that configure effort in different ways.
The default value is `ultrafast`.
### Audio codec (`ffmpeg.targetAudioCodec`) {#ffmpeg.targetAudioCodec}
Which audio codec to use when the audio stream is being transcoded. Can be one of `mp3`, `aac`, `libopus`.
The default value is `aac`.
### Video Codec (`ffmpeg.targetVideoCodec`) {#ffmpeg.targetVideoCodec}
Which video codec to use when the video stream is being transcoded. Can be one of `h264`, `hevc`, `vp9` or `av1`.
The default value is `h264`.
### Target resolution (`ffmpeg.targetResolution`) {#ffmpeg.targetResolution}
When transcoding a video stream, downscale the largest dimension to this value while preserving aspect ratio. Videos are never upscaled.
The default value is `720`.
### Transcode policy (`ffmpeg.transcode`) {#ffmpeg.transcode}
The transcoding policy configures which streams of a video asset will be transcoded. The transcoding decision is made independently for video streams and audio streams. This means that if a video stream needs to be transcoded, but an audio stream does not, then the video stream will be transcoded while the audio stream will be copied. If the transcoding policy does not require any stream to be transcoded and does not require the video to be remuxed, then no separate video file will be created.
The default policy is `required`.
#### All videos (`all`) {#ffmpeg.transcode-all}
Videos are always transcoded. This ensures consistency during video playback.
#### Don't transcode any videos (`disabled`) {#ffmpeg.transcode-disabled}
Videos are never transcoded. This saves space and resources on the server, but may prevent playback on devices that don't support the source format (especially web browsers) or result in high bandwidth usage when playing high-bitrate files.
#### Only videos not in an accepted format (`required`) {#ffmpeg.transcode-required}
Video streams are transcoded when any of the following conditions are met:
- The video is HDR.
- The video is not in the yuv420p pixel format.
- The video codec is not in `acceptedVideoCodecs`.
Audio is transcoded if the audio codec is not in `acceptedAudioCodecs`.
#### Videos higher than max bitrate or not in an accepted format (`bitrate`) {#ffmpeg.transcode-bitrate}
In addition to the conditions in `required`, video streams are also transcoded if their bitrate is over `maxBitrate`.
#### Videos higher than target resolution or not in an accepted format (`optimal`) {#ffmpeg.transcode-optimal}
In addition to the conditions in `required`, video streams are also transcoded if the horizontal **and** vertical dimensions are higher than [`targetResolution`](#ffmpeg.targetResolution).

View file

@ -1,5 +1,9 @@
# PR Checklist
A minimal devcontainer is supplied with this repository. All commands can be executed directly inside this container to avoid tedious installation of the environment.
:::warning
The provided devcontainer isn't complete at the moment. At least all dockerized steps in the Makefile won't work (`make dev`, ....). Feel free to contribute!
:::
When contributing code through a pull request, please check the following:
## Web Checks
@ -7,6 +11,7 @@ When contributing code through a pull request, please check the following:
- [ ] `npm run lint` (linting via ESLint)
- [ ] `npm run format` (formatting via Prettier)
- [ ] `npm run check:svelte` (Type checking via SvelteKit)
- [ ] `npm run check:typescript` (check typescript)
- [ ] `npm test` (unit tests)
## Documentation

View file

@ -39,13 +39,16 @@ All the services are packaged to run as with single Docker Compose command.
make dev # required Makefile installed on the system.
```
5. Access the dev instance in your browser at http://localhost:2283, or connect via the mobile app.
5. Access the dev instance in your browser at http://localhost:3000, or connect via the mobile app.
All the services will be started with hot-reloading enabled for a quick feedback loop.
You can access the web from `http://your-machine-ip:2283` or `http://localhost:2283` and access the server from the mobile app at `http://your-machine-ip:2283/api`
You can access the web from `http://your-machine-ip:3000` or `http://localhost:3000` and access the server from the mobile app at `http://your-machine-ip:3000/api`
**Note:** the "web" development container runs with uid 1000. If that uid does not have read/write permissions on the mounted volumes, you may encounter errors
**Notes:**
- The "web" development container runs with uid 1000. If that uid does not have read/write permissions on the mounted volumes, you may encounter errors
- In case of rootless docker setup, you need to use root within the container, otherwise you will encounter read/write permission related errors, see comments in `docker/docker-compose.dev.yml`.
#### Connect web to a remote backend
@ -76,7 +79,7 @@ Setting these in the IDE give a better developer experience, auto-formatting cod
### Dart Code Metrics
The mobile app uses DCM (Dart Code Metrics) for linting and metrics calculation. Please refer to the [Getting Started](https://dcm.dev/docs/getting-started/#installation) page for more information on setting up DCM
The mobile app uses DCM (Dart Code Metrics) for linting and metrics calculation. Please refer to the [Getting Started](https://dcm.dev/docs/) page for more information on setting up DCM
Note: Activating the license is not required.

View file

@ -70,7 +70,7 @@ Navigating to Administration > Settings > Machine Learning Settings > Facial Rec
:::tip
It's better to only tweak the parameters here than to set them to something very different unless you're ready to test a variety of options. If you do need to set a parameter to a strict setting, relaxing other settings can be a good option to compensate, and vice versa.
You can leran how the tune the result in this [Guide](/docs/guides/better-facial-clusters)
You can learn how the tune the result in this [Guide](/docs/guides/better-facial-clusters)
:::
### Facial recognition model

View file

@ -1,7 +1,7 @@
# Hardware Transcoding [Experimental]
This feature allows you to use a GPU to accelerate transcoding and reduce CPU load.
Note that hardware transcoding is much less efficient for file sizes.
Note that hardware transcoding produces significantly larger videos than software transcoding with similar settings, typically with lower quality. Using slow presets and preferring more efficient codecs can narrow this gap.
As this is a new feature, it is still experimental and may not work on all systems.
:::info

Binary file not shown.

After

(image error) Size: 379 KiB

Binary file not shown.

After

(image error) Size: 2.1 MiB

View file

@ -1,6 +1,9 @@
import Icon from '@mdi/react';
import { mdiCloudOffOutline, mdiCloudCheckOutline } from '@mdi/js';
import MobileAppDownload from '/docs/partials/_mobile-app-download.md';
import MobileAppLogin from '/docs/partials/_mobile-app-login.md';
import MobileAppBackup from '/docs/partials/_mobile-app-backup.md';
import { cloudDonePath, cloudOffPath } from '@site/src/components/svg-paths';
# Mobile App
@ -28,6 +31,30 @@ The beta release channel allows users to test upcoming changes before they are o
You can enable automatic backup on supported devices. For more information see [Automatic Backup](/docs/features/automatic-backup.md).
:::
## Sync only selected photos
If you have a large number of photos on the device, and you would prefer not to backup all the photos, then it might be prudent to only backup selected photos from device to the Immich server.
First, you need to enable the Storage Indicator in your app's settings. Navigate to **<ins>Settings -> Photo Grid</ins>** and enable **"Show Storage indicator on asset tiles"**; this makes it easy to distinguish local-only assets and synced assets.
:::note
This will enable a small cloud icon on the bottom right corner of the asset tile, indicating that the asset is synced to the server:
1. <Icon path={mdiCloudOffOutline} size={1} /> - Local-only asset; not synced to the server
2. <Icon path={mdiCloudCheckOutline} size={1} /> - Asset is synced to the server :::
Now make sure that the local album is selected in the backup screen (steps 1-2 above). You can find these albums listed in **<ins>Library -> On this device</ins>**. To selectively upload photos from these albums, simply select the local-only photos and tap on "Upload" button in the dynamic bottom menu.
<img
src={require('./img/mobile-upload-open-photo.png').default}
width="50%"
title="Upload button on local asset preview"
/>
<img
src={require('./img/mobile-upload-selected-photos.png').default}
width="40%"
title="Upload button after photos selection"
/>
## Album Sync
You can sync or mirror an album from your phone to the Immich server on your account. For example, if you select Recents, Camera and Videos album for backup, the corresponding album with the same name will be created on the server. Once the assets from those albums are uploaded, they will be put into the target albums automatically.

View file

@ -1,15 +1,15 @@
# Files Custom Locations
This guide explains storing generated and raw files with docker's volume mount in different locations.
This guide explains how to store generated and raw files with docker's volume mount in different locations.
:::caution Backup
It is important to remember to update the backup settings after following the guide to back up the new backup paths if using automatic backup tools, especially `profile/`.
:::
In our `.env` file, we will define variables that will help us in the future when we want to move to a more advanced server in the future
In our `.env` file, we will define variables that will help us in the future when we want to move to a more advanced server
```diff title=".env"
# You can find documentation for all the supported env variables [here](/docs/install/environment-variables)
# You can find documentation for all the supported environment variables [here](/docs/install/environment-variables)
# Custom location where your uploaded, thumbnails, and transcoded video files are stored
- UPLOAD_LOCATION=./library
@ -17,10 +17,11 @@ In our `.env` file, we will define variables that will help us in the future whe
+ THUMB_LOCATION=/custom/path/immich/thumbs
+ ENCODED_VIDEO_LOCATION=/custom/path/immich/encoded-video
+ PROFILE_LOCATION=/custom/path/immich/profile
+ BACKUP_LOCATION=/custom/path/immich/backups
...
```
After defining the locations for these files, we will edit the `docker-compose.yml` file accordingly and add the new variables to the `immich-server` container.
After defining the locations of these files, we will edit the `docker-compose.yml` file accordingly and add the new variables to the `immich-server` container.
```diff title="docker-compose.yml"
services:
@ -30,6 +31,7 @@ services:
+ - ${THUMB_LOCATION}:/usr/src/app/upload/thumbs
+ - ${ENCODED_VIDEO_LOCATION}:/usr/src/app/upload/encoded-video
+ - ${PROFILE_LOCATION}:/usr/src/app/upload/profile
+ - ${BACKUP_LOCATION}:/usr/src/app/upload/backups
- /etc/localtime:/etc/localtime:ro
```
@ -41,12 +43,11 @@ docker compose up -d
:::note
Because of the underlying properties of docker bind mounts, it is not recommended to mount the `upload/` and `library/` folders as separate bind mounts if they are on the same device.
For this reason, we mount the HDD or network storage to `/usr/src/app/upload` and then mount the folders we want quick access to below this folder.
For this reason, we mount the HDD or the network storage (NAS) to `/usr/src/app/upload` and then mount the folders we want to access under that folder.
The `thumbs/` folder contains both the small thumbnails shown in the timeline, and the larger previews shown when clicking into an image. These cannot be split up.
The `thumbs/` folder contains both the small thumbnails displayed in the timeline and the larger previews shown when clicking into an image. These cannot be separated.
The storage metrics of the Immich server will track the storage available at `UPLOAD_LOCATION`,
so the administrator should setup some kind of monitoring to make sure the SSD does not run out of space. The `profile/` folder is much smaller, typically less than 1 MB.
The storage metrics of the Immich server will track available storage at `UPLOAD_LOCATION`, so the administrator must set up some sort of monitoring to ensure the storage does not run out of space. The `profile/` folder is much smaller, usually less than 1 MB.
:::
Thanks to [Jrasm91](https://github.com/immich-app/immich/discussions/2110#discussioncomment-5477767) for writing the guide.

View file

@ -98,6 +98,10 @@ SELECT * FROM "move_history";
SELECT * FROM "users";
```
```sql title="Get owner info from asset ID"
SELECT "users".* FROM "users" JOIN "assets" ON "users"."id" = "assets"."ownerId" WHERE "assets"."id" = 'fa310b01-2f26-4b7a-9042-d578226e021f';
```
## System Config
```sql title="Custom settings"

View file

@ -1,18 +1,20 @@
# Remote Machine Learning
To alleviate [performance issues on low-memory systems](/docs/FAQ.mdx#why-is-immich-slow-on-low-memory-systems-like-the-raspberry-pi) like the Raspberry Pi, you may also host Immich's machine-learning container on a more powerful system (e.g. your laptop or desktop computer):
- Set the URL in Machine Learning Settings on the Admin Settings page to point to the designated ML system, e.g. `http://workstation:3003`.
- Copy the following `docker-compose.yml` to your ML system.
- If using [hardware acceleration](/docs/features/ml-hardware-acceleration), the [hwaccel.ml.yml](https://github.com/immich-app/immich/releases/latest/download/hwaccel.ml.yml) file also needs to be added
- Start the container by running `docker compose up -d`.
To alleviate [performance issues on low-memory systems](/docs/FAQ.mdx#why-is-immich-slow-on-low-memory-systems-like-the-raspberry-pi) like the Raspberry Pi, you may also host Immich's machine learning container on a more powerful system, such as your laptop or desktop computer. The server container will send requests containing the image preview to the remote machine learning container for processing. The machine learning container does not persist this data or associate it with a particular user.
:::info
Smart Search and Face Detection will use this feature, but Facial Recognition is handled in the server.
Smart Search and Face Detection will use this feature, but Facial Recognition will not. This is because Facial Recognition uses the _outputs_ of these models that have already been saved to the database. As such, its processing is between the server container and the database.
:::
:::danger
When using remote machine learning, the thumbnails are sent to the remote machine learning container. Use this option carefully when running this on a public computer or a paid processing cloud.
Image previews are sent to the remote machine learning container. Use this option carefully when running this on a public computer or a paid processing cloud. Additionally, as an internal service, the machine learning container has no security measures whatsoever. Please be mindful of where it's deployed and who can access it.
:::
1. Ensure the remote server has Docker installed
2. Copy the following `docker-compose.yml` to the remote server
:::info
If using hardware acceleration, the [hwaccel.ml.yml](https://github.com/immich-app/immich/releases/latest/download/hwaccel.ml.yml) file also needs to be added and the `docker-compose.yml` needs to be configured as described in the [hardware acceleration documentation](/docs/features/ml-hardware-acceleration)
:::
```yaml
@ -37,8 +39,26 @@ volumes:
model-cache:
```
Please note that version mismatches between both hosts may cause instabilities and bugs, so make sure to always perform updates together.
3. Start the remote machine learning container by running `docker compose up -d`
:::caution
As an internal service, the machine learning container has no security measures whatsoever. Please be mindful of where it's deployed and who can access it.
:::info
Version mismatches between both hosts may cause bugs and instability, so remember to update this container as well when updating the local Immich instance.
:::
4. Navigate to the [Machine Learning Settings](https://my.immich.app/admin/system-settings?isOpen=machine-learning)
5. Click _Add URL_
6. Fill the new field with the URL to the remote machine learning container, e.g. `http://ip:port`
## Forcing remote processing
Adding a new URL to the settings is recommended over replacing the existing URL. This is because it will allow machine learning tasks to be processed successfully when the remote server is down by falling back to the local machine learning container. If you do not want machine learning tasks to be processed locally when the remote server is not available, you can instead replace the existing URL and only provide the remote container's URL. If doing this, you can remove the `immich-machine-learning` section of the local `docker-compose.yml` file to save resources, as this service will never be used.
Do note that this will mean that Smart Search and Face Detection jobs will fail to be processed when the remote instance is not available. This in turn means that tasks dependent on these features—Duplicate Detection and Facial Recognition—will not run for affected assets. If this occurs, you must manually click the _Missing_ button next to Smart Search and Face Detection in the [Job Status](http://my.immich.app/admin/jobs-status) page for the jobs to be retried.
## Load balancing
While several URLs can be provided in the settings, they are tried sequentially; there is no attempt to distribute load across multiple containers. It is recommended to use a dedicated load balancer for such use-cases and specify it as the only URL. Among other things, it may enable the use of different APIs on the same server by running multiple containers with different configurations. For example, one might run an OpenVINO container in addition to a CUDA container, or run a standard release container to maximize both CPU and GPU utilization.
:::tip
The machine learning container can be shared among several Immich instances regardless of the models a particular instance uses. However, using different models will lead to higher peak memory usage.
:::

View file

@ -6,6 +6,15 @@ This script assumes you have a second hard drive connected to your server for on
The database is saved to your Immich upload folder in the `database-backup` subdirectory. The database is then backed up and versioned with your assets by Borg. This ensures that the database backup is in sync with your assets in every snapshot.
:::info
This script makes backups of your database along with your photo/video library. This is redundant with the [automatic database backup tool](https://immich.app/docs/administration/backup-and-restore#automatic-database-backups) built into Immich. Using this script to backup your database has two advantages over the built-in backup tool:
- This script uses storage more efficiently by versioning your backups instead of making multiple copies.
- The database backups are performed at the same time as the library backup, ensuring that the backups of your database and the library are always in sync.
If you are using this script, it is therefore safe to turn off the built-in automatic database backups from your admin panel to save storage space.
:::
### Prerequisites
- Borg needs to be installed on your server as well as the remote machine. You can find instructions to install Borg [here](https://borgbackup.readthedocs.io/en/latest/installation.html).

View file

@ -26,7 +26,6 @@ The default configuration looks like this:
"bframes": -1,
"refs": 0,
"gopSize": 0,
"npl": 0,
"temporalAQ": false,
"cqMode": "auto",
"twoPass": false,
@ -36,6 +35,13 @@ The default configuration looks like this:
"accel": "disabled",
"accelDecode": false
},
"backup": {
"database": {
"enabled": true,
"cronExpression": "0 02 * * *",
"keepLastAmount": 14
}
},
"job": {
"backgroundTask": {
"concurrency": 5
@ -77,7 +83,7 @@ The default configuration looks like this:
},
"machineLearning": {
"enabled": true,
"url": "http://immich-machine-learning:3003",
"urls": ["http://immich-machine-learning:3003"],
"clip": {
"enabled": true,
"modelName": "ViT-B-32__openai"

View file

@ -7,10 +7,9 @@ import ExampleEnv from '!!raw-loader!../../../docker/example.env';
# Docker Compose [Recommended]
Docker Compose is the recommended method to run Immich in production. Below are the steps to deploy Immich with Docker Compose.
Immich requires Docker Compose version 2.x.
Docker Compose is the recommended method to run Immich in production. Below are the steps to deploy Immich with Docker Compose.
### Step 1 - Download the required files
## Step 1 - Download the required files
Create a directory of your choice (e.g. `./immich-app`) to hold the `docker-compose.yml` and `.env` files.
@ -19,7 +18,7 @@ mkdir ./immich-app
cd ./immich-app
```
Download [`docker-compose.yml`][compose-file] and [`example.env`][env-file], either by running the following commands:
Download [`docker-compose.yml`][compose-file] and [`example.env`][env-file] by running the following commands:
```bash title="Get docker-compose.yml file"
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
@ -29,6 +28,11 @@ wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
```
You can alternatively download these two files from your browser and move them to the directory that you created, in which case ensure that you rename `example.env` to `.env`.
:::info Optional Features
If you intend to use hardware acceleration for transcoding or machine learning (ML), you can download now the config files you'll need, in the same way:
```bash title="(Optional) Get hwaccel.transcoding.yml file"
wget -O hwaccel.transcoding.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.transcoding.yml
```
@ -37,15 +41,9 @@ wget -O hwaccel.transcoding.yml https://github.com/immich-app/immich/releases/la
wget -O hwaccel.ml.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.ml.yml
```
or by downloading from your browser and moving the files to the directory that you created.
Note: If you downloaded the files from your browser, also ensure that you rename `example.env` to `.env`.
:::info
Optionally, you can enable hardware acceleration for machine learning and transcoding. See the [Hardware Transcoding](/docs/features/hardware-transcoding.md) and [Hardware-Accelerated Machine Learning](/docs/features/ml-hardware-acceleration.md) guides for info on how to set these up.
:::
### Step 2 - Populate the .env file with custom values
## Step 2 - Populate the .env file with custom values
<details>
<summary>
@ -54,31 +52,37 @@ Optionally, you can enable hardware acceleration for machine learning and transc
<CodeBlock language="bash">{ExampleEnv}</CodeBlock>
</details>
- Populate custom database information if necessary.
- Populate `UPLOAD_LOCATION` with your preferred location for storing backup assets.
- Populate `UPLOAD_LOCATION` with your preferred location for storing backup assets. It should be a new directory on the server with enough free space.
- Consider changing `DB_PASSWORD` to a custom value. Postgres is not publically exposed, so this password is only used for local authentication.
To avoid issues with Docker parsing this value, it is best to use only the characters `A-Za-z0-9`.
To avoid issues with Docker parsing this value, it is best to use only the characters `A-Za-z0-9`. `pwgen` is a handy utility for this.
- Set your timezone by uncommenting the `TZ=` line.
- Populate custom database information if necessary.
### Step 3 - Start the containers
:::info Optional Features
You can edit `docker-compose.yml` to add external libraries or enable hardware acceleration now by following [their guides](#setting-up-optional-features).
:::
From the directory you created in Step 1, (which should now contain your customized `docker-compose.yml` and `.env` files) run `docker compose up -d`.
## Step 3 - Start the containers
From the directory you created in Step 1 (which should now contain your customized `docker-compose.yml` and `.env` files), run this command:
```bash title="Start the containers using docker compose command"
docker compose up -d
```
:::info Docker version
If you get an error `unknown shorthand flag: 'd' in -d`, you are probably running the wrong Docker version. (This happens, for example, with the docker.io package in Ubuntu 22.04.3 LTS.) You can correct the problem by `apt remove`ing Ubuntu's docker.io package and installing docker and docker-compose via [Docker's official repository][docker-repo].
This starts immich as a background service (per the `-d` flag), ensuring it restarts after system reboots or crashes (per the `restart` fields in `docker-compose.yml`).
Note that the correct command really is `docker compose`, not `docker-compose`. If you try the latter on vanilla Ubuntu 22.04 it will fail in a different way:
:::info Docker version
If you get an error `unknown shorthand flag: 'd' in -d`, you are probably running the wrong Docker version. (This happens, for example, with the docker.io package in Ubuntu 22.04.3 LTS.) You can correct the problem by following the complete [Docker Engine install](https://docs.docker.com/engine/install/) procedure for your distribution, crucially the "Uninstall old versions" and "Install using the apt/rpm repository" sections. These replace the distro's Docker packages with Docker's official ones.
Note that the correct command really is `docker compose`, not `docker-compose`. If you try the latter on vanilla Ubuntu 22.04, it will fail in a different way:
```
The Compose file './docker-compose.yml' is invalid because:
'name' does not match any of the regexes: '^x-'
```
See the previous paragraph about installing from the official docker repository.
See the previous paragraph about installing from the official Docker repository.
:::
:::info Health check start interval
@ -93,7 +97,17 @@ For more information on how to use the application, please refer to the [Post In
Downloading container images might require you to authenticate to the GitHub Container Registry ([steps here][container-auth]).
:::
### Step 4 - Upgrading
## Next Steps
### Setting Up Optional Features
You can set up the following now:
- [External Libraries](/docs/features/libraries.md)
- [Hardware Transcoding](/docs/features/hardware-transcoding.md)
- [Hardware-Accelerated Machine Learning](/docs/features/ml-hardware-acceleration.md)
### Upgrading
:::danger Breaking Changes
It is important to follow breaking updates to avoid problems. You can see versions that had breaking changes [here][breaking].
@ -101,12 +115,18 @@ It is important to follow breaking updates to avoid problems. You can see versio
If `IMMICH_VERSION` is set, it will need to be updated to the latest or desired version.
When a new version of Immich is [released][releases], the application can be upgraded with the following commands, run in the directory with the `docker-compose.yml` file:
When a new version of Immich is [released][releases], the application can be upgraded and restarted with the following commands, run in the directory with the `docker-compose.yml` file:
```bash title="Upgrade Immich"
```bash title="Upgrade and restart Immich"
docker compose pull && docker compose up -d
```
To clean up disk space, the old version's obsolete container images can be deleted with the following command:
```bash title="Delete all obsolete container images"
docker image prune
```
:::caution Automatic Updates
Immich is currently under heavy development, which means you can expect [breaking changes][breaking] and bugs. Therefore, we recommend reading the release notes prior to updating and to take special care when using automated tools like [Watchtower][watchtower].
:::
@ -117,4 +137,3 @@ Immich is currently under heavy development, which means you can expect [breakin
[breaking]: https://github.com/immich-app/immich/discussions?discussions_q=label%3Achangelog%3Abreaking-change+sort%3Adate_created
[container-auth]: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#authenticating-to-the-container-registry
[releases]: https://github.com/immich-app/immich/releases
[docker-repo]: https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

Binary file not shown.

Before

(image error) Size: 8.7 KiB

After

(image error) Size: 9.4 KiB

Binary file not shown.

Before

(image error) Size: 86 KiB

After

(image error) Size: 127 KiB

Binary file not shown.

Before

(image error) Size: 20 KiB

After

(image error) Size: 35 KiB

Binary file not shown.

Before

(image error) Size: 79 KiB

After

(image error) Size: 128 KiB

Binary file not shown.

Before

(image error) Size: 6 KiB

After

(image error) Size: 23 KiB

Binary file not shown.

Before

(image error) Size: 4 KiB

After

(image error) Size: 5.5 KiB

Binary file not shown.

Before

(image error) Size: 19 KiB

After

(image error) Size: 63 KiB

Binary file not shown.

Before

(image error) Size: 6.2 KiB

After

(image error) Size: 24 KiB

Binary file not shown.

Before

(image error) Size: 9.9 KiB

After

(image error) Size: 12 KiB

Binary file not shown.

After

(image error) Size: 16 KiB

Binary file not shown.

After

(image error) Size: 4.9 KiB

Binary file not shown.

After

(image error) Size: 19 KiB

View file

@ -8,30 +8,43 @@ Hardware and software requirements for Immich:
## Software
- [Docker](https://docs.docker.com/get-docker/)
- [Docker Compose](https://docs.docker.com/compose/install/)
Immich requires [**Docker**](https://docs.docker.com/get-started/get-docker/) with the **Docker Compose plugin**:
- **Docker Engine**: This CLI variant is suitable for Linux servers (or Windows via WSL2).
- **Docker Desktop**: This GUI variant is suitable for Linux desktop (or Windows or macOS).
The Compose plugin will be installed by both Docker Engine and Desktop by following the linked installation guides; it can also be [separately installed](https://docs.docker.com/compose/install/).
:::note
Immich requires the command `docker compose` - the similarly named `docker-compose` is [deprecated](https://docs.docker.com/compose/migrate/) and is no longer compatible with Immich.
Immich requires the command `docker compose`; the similarly named `docker-compose` is [deprecated](https://docs.docker.com/compose/migrate/) and is no longer supported by Immich.
:::
## Hardware
- **OS**: Recommended Linux operating system (Ubuntu, Debian, etc).
- Windows is supported with [Docker Desktop on Windows](https://docs.docker.com/desktop/install/windows-install/) or [WSL 2](https://docs.docker.com/desktop/wsl/).
- macOS is supported with [Docker Desktop on Mac](https://docs.docker.com/desktop/install/mac-install/).
- Non-Linux OSes tend to provide a poor Docker experience and are strongly discouraged.
Our ability to assist with setup or troubleshooting on non-Linux OSes will be severely reduced.
If you still want to try to use a non-Linux OS, you can set it up as follows:
- Windows: [Docker Desktop on Windows](https://docs.docker.com/desktop/install/windows-install/) or [WSL 2](https://docs.docker.com/desktop/wsl/).
- macOS: [Docker Desktop on Mac](https://docs.docker.com/desktop/install/mac-install/).
- **RAM**: Minimum 4GB, recommended 6GB.
- **CPU**: Minimum 2 cores, recommended 4 cores.
- **Storage**: Recommended Unix-compatible filesystem (EXT4, ZFS, APFS, etc.) with support for user/group ownership and permissions.
- This can present an issue for Windows users. See below for details and an alternative setup.
- The generation of thumbnails and transcoded video can increase the size of the photo library by 10-20% on average.
- Network shares are supported for the storage of image and video assets only. It is not recommended to use a network share for your database location due to performance and possible data loss issues.
:::tip
Good performance and a stable connection to the Postgres database is critical to a smooth Immich experience.
The Postgres database files are typically between 1-3 GB in size.
For this reason, the Postgres database (`DB_DATA_LOCATION`) should ideally use local SSD storage, and never a network share of any kind.
Additionally, if Docker resource limits are used, the Postgres database requires at least 2GB of RAM.
Windows users may run into issues with non-Unix-compatible filesystems, see below for more details.
:::
### Special requirements for Windows users
<details>
<summary>Database storage on Windows systems</summary>
The Immich Postgres database (`DB_DATA_LOCATION`) must be located on a filesystem that supports user/group
ownership and permissions (EXT2/3/4, ZFS, APFS, BTRFS, XFS, etc.). It will not work on any filesystem formatted in NTFS or ex/FAT/32.
It will not work in WSL (Windows Subsystem for Linux) when using a mounted host directory (commonly under `/mnt`).

View file

@ -7,7 +7,9 @@ sidebar_position: 80
:::note
This is a community contribution and not officially supported by the Immich team, but included here for convenience.
**Please report issues to the corresponding [Github Repository](https://github.com/truenas/charts/tree/master/community/immich).**
Community support can be found in the dedicated channel on the [Discord Server](https://discord.immich.app/).
**Please report app issues to the corresponding [Github Repository](https://github.com/truenas/charts/tree/master/community/immich).**
:::
Immich can easily be installed on TrueNAS SCALE via the **Community** train application.
@ -20,18 +22,26 @@ TrueNAS SCALE makes installing and updating Immich easy, but you must use the Im
The Immich app in TrueNAS SCALE installs, completes the initial configuration, then starts the Immich web portal.
When updates become available, SCALE alerts and provides easy updates.
Before installing the Immich app in SCALE, review the [Environment Variables](/docs/install/environment-variables.md) documentation to see if you want to configure any during installation.
You can configure environment variables at any time after deploying the application.
Before installing the Immich app in SCALE, review the [Environment Variables](#environment-variables) documentation to see if you want to configure any during installation.
You may also configure environment variables at any time after deploying the application.
You can allow SCALE to create the datasets Immich requires automatically during app installation.
Or before beginning app installation, [create the datasets](https://www.truenas.com/docs/scale/scaletutorials/storage/datasets/datasetsscale/) to use in the **Storage Configuration** section during installation.
Immich requires seven datasets: **library**, **pgBackup**, **pgData**, **profile**, **thumbs**, **uploads**, and **video**.
You can organize these as one parent with seven child datasets, for example `mnt/tank/immich/library`, `mnt/tank/immich/pgBackup`, and so on.
### Setting up Storage Datasets
Before beginning app installation, [create the datasets](https://www.truenas.com/docs/scale/scaletutorials/storage/datasets/datasetsscale/) to use in the **Storage Configuration** section during installation.
Immich requires seven datasets: `library`, `upload`, `thumbs`, `profile`, `video`, `backups`, and `pgData`.
You can organize these as one parent with seven child datasets, for example `/mnt/tank/immich/library`, `/mnt/tank/immich/upload`, and so on.
<img
src={require('./img/truenas12.png').default}
width="30%"
alt="Immich App Widget"
className="border rounded-xl"
/>
:::info Permissions
The **pgData** dataset must be owned by the user `netdata` (UID 999) for postgres to start. The other datasets must be owned by the user `root` (UID 0) or a group that includes the user `root` (UID 0) for immich to have the necessary permissions.
The **library** dataset must have [ACL mode](https://www.truenas.com/docs/core/coretutorials/storage/pools/permissions/#access-control-lists) set to `Passthrough` if you plan on using a [storage template](/docs/administration/storage-template.mdx) and the dataset is configured for network sharing (its ACL type is set to `SMB/NFSv4`). When the template is applied and files need to be moved from **uploads** to **library**, immich performs `chmod` internally and needs to be allowed to execute the command.
If the **library** dataset uses ACL it must have [ACL mode](https://www.truenas.com/docs/core/coretutorials/storage/pools/permissions/#access-control-lists) set to `Passthrough` if you plan on using a [storage template](/docs/administration/storage-template.mdx) and the dataset is configured for network sharing (its ACL type is set to `SMB/NFSv4`). When the template is applied and files need to be moved from **upload** to **library**, immich performs `chmod` internally and needs to be allowed to execute the command. [More info.](https://github.com/immich-app/immich/pull/13017)
:::
## Installing the Immich Application
@ -47,6 +57,8 @@ className="border rounded-xl"
Click on the widget to open the **Immich** application details screen.
<br/><br/>
<img
src={require('./img/truenas02.png').default}
width="100%"
@ -56,9 +68,13 @@ className="border rounded-xl"
Click **Install** to open the Immich application configuration screen.
<br/><br/>
Application configuration settings are presented in several sections, each explained below.
To find specific fields click in the **Search Input Fields** search field, scroll down to a particular section or click on the section heading on the navigation area in the upper-right corner.
### Application Name and Version
<img
src={require('./img/truenas03.png').default}
width="100%"
@ -66,21 +82,123 @@ alt="Install Immich Screen"
className="border rounded-xl"
/>
Accept the default values in **Application Name** and **Version**.
Accept the default value or enter a name in **Application Name** field.
In most cases use the default name, but if adding a second deployment of the application you must change this name.
Accept the default version number in **Version**.
When a new version becomes available, the application has an update badge.
The **Installed Applications** screen shows the option to update applications.
### Immich Configuration
<img
src={require('./img/truenas05.png').default}
width="40%"
alt="Configuration Settings"
className="border rounded-xl"
/>
Accept the default value in **Timezone** or change to match your local timezone.
**Timezone** is only used by the Immich `exiftool` microservice if it cannot be determined from the image metadata.
Accept the default port in **Web Port**.
Untick **Enable Machine Learning** if you will not use face recognition, image search, and smart duplicate detection.
Accept the default option or select the **Machine Learning Image Type** for your hardware based on the [Hardware-Accelerated Machine Learning Supported Backends](/docs/features/ml-hardware-acceleration.md#supported-backends).
Immich's default is `postgres` but you should consider setting the **Database Password** to a custom value using only the characters `A-Za-z0-9`.
The **Redis Password** should be set to a custom value using only the characters `A-Za-z0-9`.
Accept the **Log Level** default of **Log**.
Leave **Hugging Face Endpoint** blank. (This is for downloading ML models from a different source.)
Leave **Additional Environment Variables** blank or see [Environment Variables](#environment-variables) to set before installing.
### Network Configuration
<img
src={require('./img/truenas06.png').default}
width="40%"
alt="Networking Settings"
className="border rounded-xl"
/>
Accept the default port `30041` in **WebUI Port** or enter a custom port number.
:::info Allowed Port Numbers
Only numbers within the range 9000-65535 may be used on SCALE versions below TrueNAS Scale 24.10 Electric Eel.
Regardless of version, to avoid port conflicts, don't use [ports on this list](https://www.truenas.com/docs/references/defaultports/).
:::
### Storage Configuration
Immich requires seven storage datasets.
You can allow SCALE to create them for you, or use the dataset(s) created in [First Steps](#first-steps).
Select the storage options you want to use for **Immich Uploads Storage**, **Immich Library Storage**, **Immich Thumbs Storage**, **Immich Profile Storage**, **Immich Video Storage**, **Immich Postgres Data Storage**, **Immich Postgres Backup Storage**.
Select **ixVolume (dataset created automatically by the system)** in **Type** to let SCALE create the dataset or select **Host Path** to use the existing datasets created on the system.
Accept the defaults in Resources or change the CPU and memory limits to suit your use case.
<img
src={require('./img/truenas07.png').default}
width="20%"
alt="Configure Storage ixVolumes"
className="border rounded-xl"
/>
Click **Install**.
:::note Default Setting (Not recommended)
The default setting for datasets is **ixVolume (dataset created automatically by the system)** but this results in your data being harder to access manually and can result in data loss if you delete the immich app. (Not recommended)
:::
For each Storage option select **Host Path (Path that already exists on the system)** and then select the matching dataset [created before installing the app](#setting-up-storage-datasets): **Immich Library Storage**: `library`, **Immich Uploads Storage**: `upload`, **Immich Thumbs Storage**: `thumbs`, **Immich Profile Storage**: `profile`, **Immich Video Storage**: `video`, **Immich Backups Storage**: `backups`, **Postgres Data Storage**: `pgData`.
<img
src={require('./img/truenas08.png').default}
width="40%"
alt="Configure Storage Host Paths"
className="border rounded-xl"
/>
The image above has example values.
<br/>
### Additional Storage [(External Libraries)](/docs/features/libraries)
<img
src={require('./img/truenas10.png').default}
width="40%"
alt="Configure Storage Host Paths"
className="border rounded-xl"
/>
You may configure [External Libraries](/docs/features/libraries) by mounting them using **Additional Storage**.
The **Mount Path** is the loaction you will need to copy and paste into the External Library settings within Immich.
The **Host Path** is the location on the TrueNAS SCALE server where your external library is located.
<!-- A section for Labels would go here but I don't know what they do. -->
### Resources Configuration
<img
src={require('./img/truenas09.png').default}
width="40%"
alt="Resource Limits"
className="border rounded-xl"
/>
Accept the default **CPU** limit of `2` threads or specify the number of threads (CPUs with Multi-/Hyper-threading have 2 threads per core).
Accept the default **Memory** limit of `4096` MB or specify the number of MB of RAM. If you're using Machine Learning you should probably set this above 8000 MB.
:::info Older SCALE Versions
Before TrueNAS SCALE version 24.10 Electric Eel:
The **CPU** value was specified in a different format with a default of `4000m` which is 4 threads.
The **Memory** value was specified in a different format with a default of `8Gi` which is 8 GiB of RAM. The value was specified in bytes or a number with a measurement suffix. Examples: `129M`, `123Mi`, `1000000000`
:::
Enable **GPU Configuration** options if you have a GPU that you will use for [Hardware Transcoding](/docs/features/hardware-transcoding) and/or [Hardware-Accelerated Machine Learning](/docs/features/ml-hardware-acceleration.md). More info: [GPU Passtrough Docs for TrueNAS Apps](https://www.truenas.com/docs/truenasapps/#gpu-passthrough)
### Install
Finally, click **Install**.
The system opens the **Installed Applications** screen with the Immich app in the **Deploying** state.
When the installation completes it changes to **Running**.
@ -97,102 +215,41 @@ Click **Web Portal** on the **Application Info** widget to open the Immich web i
For more information on how to use the application once installed, please refer to the [Post Install](/docs/install/post-install.mdx) guide.
:::
## Editing Environment Variables
## Edit App Settings
Go to the **Installed Applications** screen and select Immich from the list of installed applications.
Click **Edit** on the **Application Info** widget to open the **Edit Immich** screen.
The settings on the edit screen are the same as on the install screen.
You cannot edit **Storage Configuration** paths after the initial app install.
- Go to the **Installed Applications** screen and select Immich from the list of installed applications.
- Click **Edit** on the **Application Info** widget to open the **Edit Immich** screen.
- Change any settings you would like to change.
- The settings on the edit screen are the same as on the install screen.
- Click **Update** at the very bottom of the page to save changes.
- TrueNAS automatically updates, recreates, and redeploys the Immich container with the updated settings.
Click **Update** to save changes.
TrueNAS automatically updates, recreates, and redeploys the Immich container with the updated environment variables.
## Environment Variables
You can set [Environment Variables](/docs/install/environment-variables) by clicking **Add** on the **Additional Environment Variables** option and filling in the **Name** and **Value**.
<img
src={require('./img/truenas11.png').default}
width="40%"
alt="Environment Variables"
className="border rounded-xl"
/>
:::info
Some Environment Variables are not available for the TrueNAS SCALE app. This is mainly because they can be configured through GUI options in the [Edit Immich screen](#edit-app-settings).
Some examples are: `IMMICH_VERSION`, `UPLOAD_LOCATION`, `DB_DATA_LOCATION`, `TZ`, `IMMICH_LOG_LEVEL`, `DB_PASSWORD`, `REDIS_PASSWORD`.
:::
## Updating the App
When updates become available, SCALE alerts and provides easy updates.
To update the app to the latest version, click **Update** on the **Application Info** widget from the **Installed Applications** screen.
To update the app to the latest version:
Update opens an update window for the application that includes two selectable options, Images (to be updated) and Changelog. Click on the down arrow to see the options available for each.
Click **Upgrade** to begin the process and open a counter dialog that shows the upgrade progress. When complete, the update badge and buttons disappear and the application Update state on the Installed screen changes from Update Available to Up to date.
## Understanding Immich Settings in TrueNAS SCALE
Accept the default value or enter a name in **Application Name** field.
In most cases use the default name, but if adding a second deployment of the application you must change this name.
Accept the default version number in **Version**.
When a new version becomes available, the application has an update badge.
The **Installed Applications** screen shows the option to update applications.
### Immich Configuration Settings
You can accept the defaults in the **Immich Configuration** settings, or enter the settings you want to use.
<img
src={require('./img/truenas05.png').default}
width="100%"
alt="Configuration Settings"
className="border rounded-xl"
/>
Accept the default setting in **Timezone** or change to match your local timezone.
**Timezone** is only used by the Immich `exiftool` microservice if it cannot be determined from the image metadata.
You can enter a **Public Login Message** to display on the login page, or leave it blank.
### Networking Settings
Accept the default port numbers in **Web Port**.
The SCALE Immich app listens on port **30041**.
Refer to the TrueNAS [default port list](https://www.truenas.com/docs/references/defaultports/) for a list of assigned port numbers.
To change the port numbers, enter a number within the range 9000-65535.
<img
src={require('./img/truenas06.png').default}
width="100%"
alt="Networking Settings"
className="border rounded-xl"
/>
### Storage Settings
You can install Immich using the default setting **ixVolume (dataset created automatically by the system)** or use the host path option with datasets [created before installing the app](#first-steps).
<img
src={require('./img/truenas07.png').default}
width="100%"
alt="Configure Storage ixVolumes"
className="border rounded-xl"
/>
Select **Host Path (Path that already exists on the system)** to browse to and select the datasets.
<img
src={require('./img/truenas08.png').default}
width="100%"
alt="Configure Storage Host Paths"
className="border rounded-xl"
/>
### Resource Configuration Settings
Accept the default values in **Resources Configuration** or enter new CPU and memory values
By default, this application is limited to use no more than 4 CPU cores and 8 Gigabytes available memory. The application might use considerably less system resources.
<img
src={require('./img/truenas09.png').default}
width="100%"
alt="Resource Limits"
className="border rounded-xl"
/>
To customize the CPU and memory allocated to the container Immich uses, enter new CPU values as a plain integer value followed by the suffix m (milli).
Default is 4000m.
Accept the default value 8Gi allocated memory or enter a new limit in bytes.
Enter a plain integer followed by the measurement suffix, for example 129M or 123Mi.
Systems with compatible GPU(s) display devices in **GPU Configuration**.
See [Managing GPUs](https://www.truenas.com/docs/scale/scaletutorials/systemsettings/advanced/managegpuscale/) for more information about allocating isolated GPU devices in TrueNAS SCALE.
- Go to the **Installed Applications** screen and select Immich from the list of installed applications.
- Click **Update** on the **Application Info** widget from the **Installed Applications** screen.
- This opens an update window with some options
- You may select an Image update too.
- You may view the Changelog.
- Click **Upgrade** to begin the process and open a counter dialog that shows the upgrade progress.
- When complete, the update badge and buttons disappear and the application Update state on the Installed screen changes from Update Available to Up to date.

View file

@ -14,13 +14,7 @@ Check the [requirements page](/docs/install/requirements) to get started.
## Install and Launch via Docker Compose
Follow the [Docker Compose (Recommended)](/docs/install/docker-compose) instructions
to install the server.
- Where random passwords are required, `pwgen` is a handy utility.
- `UPLOAD_LOCATION` should be set to some new directory on the server
with enough free space.
- You may ignore "Step 4 - Upgrading".
Follow the [Docker Compose (Recommended)](/docs/install/docker-compose) instructions to install the server.
## Try the Web UI
@ -56,6 +50,7 @@ import MobileAppBackup from '/docs/partials/_mobile-app-backup.md';
The backup time differs depending on how many photos are on your mobile device. Large uploads may
take quite a while.
To quickly get going, you can selectively upload few photos first, by following this [guide](/docs/features/mobile-app#sync-only-selected-photos).
You can select the **Jobs** tab to see Immich processing your photos.

View file

@ -1,9 +1,9 @@
Navigate to the backup screen by clicking on the cloud icon in the top right corner of the screen.
1. Navigate to the backup screen by clicking on the cloud icon in the top right corner of the screen.
<img src={require('./img/backup-header.png').default} width='50%' title='Backup button' />
You can select which album(s) you want to back up to the Immich server from the backup screen.
2. You can select which album(s) you want to back up to the Immich server from the backup screen.
<img src={require('./img/album-selection.png').default} width='50%' title='Backup button' />
Scroll down to the bottom and press "**Start Backup**" to start the backup process.
3. Scroll down to the bottom and press "**Start Backup**" to start the backup process. This will upload all the assets in the selected albums.

View file

@ -8,8 +8,8 @@
"name": "documentation",
"version": "0.0.0",
"dependencies": {
"@docusaurus/core": "^3.2.1",
"@docusaurus/preset-classic": "^3.2.1",
"@docusaurus/core": "~3.5.2",
"@docusaurus/preset-classic": "~3.5.2",
"@mdi/js": "^7.3.67",
"@mdi/react": "^1.6.1",
"@mdx-js/react": "^3.0.0",
@ -27,7 +27,7 @@
"url": "^0.11.0"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "^3.1.0",
"@docusaurus/module-type-aliases": "~3.5.2",
"@tsconfig/docusaurus": "^2.0.2",
"prettier": "^3.2.4",
"typescript": "^5.1.6"

View file

@ -16,8 +16,8 @@
"write-heading-ids": "docusaurus write-heading-ids"
},
"dependencies": {
"@docusaurus/core": "^3.2.1",
"@docusaurus/preset-classic": "^3.2.1",
"@docusaurus/core": "~3.5.2",
"@docusaurus/preset-classic": "~3.5.2",
"@mdi/js": "^7.3.67",
"@mdi/react": "^1.6.1",
"@mdx-js/react": "^3.0.0",
@ -35,8 +35,7 @@
"url": "^0.11.0"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "^3.1.0",
"@tsconfig/docusaurus": "^2.0.2",
"@docusaurus/module-type-aliases": "~3.5.2",
"prettier": "^3.2.4",
"typescript": "^5.1.6"
},
@ -56,6 +55,6 @@
"node": ">=20"
},
"volta": {
"node": "22.11.0"
"node": "22.12.0"
}
}

View file

@ -35,19 +35,24 @@ const guides: CommunityGuidesProps[] = [
},
{
title: 'Google Photos import + albums',
description: 'Import your Google Photos files into Immich and add your albums',
description: 'Import your Google Photos files into Immich and add your albums.',
url: 'https://github.com/immich-app/immich/discussions/1340',
},
{
title: 'Access Immich with custom domain',
description: 'Access your local Immich installation over the internet using your own domain',
description: 'Access your local Immich installation over the internet using your own domain.',
url: 'https://github.com/ppr88/immich-guides/blob/main/open-immich-custom-domain.md',
},
{
title: 'Nginx caching map server',
description: 'Increase privacy by using nginx as a caching proxy in front of a map tile server',
description: 'Increase privacy by using nginx as a caching proxy in front of a map tile server.',
url: 'https://github.com/pcouy/pcouy.github.io/blob/main/_posts/2024-08-30-proxying-a-map-tile-server-for-increased-privacy.md',
},
{
title: 'fail2ban setup instructions',
description: 'How to configure an existing fail2ban installation to block incorrect login attempts.',
url: 'https://github.com/immich-app/immich/discussions/3243#discussioncomment-6681948',
},
];
function CommunityGuide({ title, description, url }: CommunityGuidesProps): JSX.Element {

View file

@ -83,6 +83,17 @@ const projects: CommunityProjectProps[] = [
description: 'Power tools for organizing your immich library.',
url: 'https://github.com/varun-raj/immich-power-tools',
},
{
title: 'Immich Public Proxy',
description:
'Share your Immich photos and albums in a safe way without exposing your Immich instance to the public.',
url: 'https://github.com/alangrainger/immich-public-proxy',
},
{
title: 'Immich Kodi',
description: 'Unofficial Kodi plugin for Immich.',
url: 'https://github.com/vladd11/immich-kodi',
},
];
function CommunityProject({ title, description, url }: CommunityProjectProps): JSX.Element {

View file

@ -49,7 +49,7 @@ export function Timeline({ items }: Props): JSX.Element {
<div className="flex flex-col flex-grow justify-between gap-2">
<div className="flex gap-2 items-center">
{cardIcon === 'immich' ? (
<img src="img/immich-logo.svg" height="30" className="rounded-none" />
<img src="/img/immich-logo.svg" height="30" className="rounded-none" />
) : (
<Icon path={cardIcon} size={1} color={item.iconColor} />
)}

View file

@ -74,12 +74,14 @@ import {
mdiFaceRecognition,
mdiVideo,
mdiWeb,
mdiDatabaseOutline,
} from '@mdi/js';
import Layout from '@theme/Layout';
import React from 'react';
import { Item, Timeline } from '../components/timeline';
const releases = {
'v1.120.0': new Date(2024, 10, 6),
'v1.114.0': new Date(2024, 8, 6),
'v1.113.0': new Date(2024, 7, 30),
'v1.112.0': new Date(2024, 7, 14),
@ -151,6 +153,9 @@ const weirdTags = {
'v1.2.0': 'v0.2-dev ',
};
const title = 'Roadmap';
const description = 'A list of future plans and goals, as well as past achievements and milestones.';
const withLanguage = (date: Date) => (language: string) => date.toLocaleDateString(language);
type Base = { icon: string; iconColor?: React.CSSProperties['color']; title: string; description: string };
@ -175,6 +180,38 @@ const withRelease = ({
};
const roadmap: Item[] = [
{
done: false,
icon: mdiFlash,
iconColor: 'gold',
title: 'Workflows',
description: 'Automate tasks with workflows',
getDateLabel: () => 'Planned for 2025',
},
{
done: false,
icon: mdiTableKey,
iconColor: 'gray',
title: 'Fine grained access controls',
description: 'Granular access controls for users and api keys',
getDateLabel: () => 'Planned for 2025',
},
{
done: false,
icon: mdiImageEdit,
iconColor: 'rebeccapurple',
title: 'Basic editor',
description: 'Basic photo editing capabilities',
getDateLabel: () => 'Planned for 2025',
},
{
done: false,
icon: mdiRocketLaunch,
iconColor: 'indianred',
title: 'Stable release',
description: 'Immich goes stable',
getDateLabel: () => 'Planned for early 2025',
},
{
done: false,
icon: mdiLockOutline,
@ -183,14 +220,6 @@ const roadmap: Item[] = [
description: 'Private assets with extra protections',
getDateLabel: () => 'Planned for 2024',
},
{
done: false,
icon: mdiRocketLaunch,
iconColor: 'indianred',
title: 'Stable release',
description: 'Immich goes stable',
getDateLabel: () => 'Planned for 2024',
},
{
done: false,
icon: mdiCloudUploadOutline,
@ -199,30 +228,6 @@ const roadmap: Item[] = [
description: 'Rework background backups to be more reliable',
getDateLabel: () => 'Planned for 2024',
},
{
done: false,
icon: mdiImageEdit,
iconColor: 'rebeccapurple',
title: 'Basic editor',
description: 'Basic photo editing capabilities',
getDateLabel: () => 'Planned for 2024',
},
{
done: false,
icon: mdiFlash,
iconColor: 'gold',
title: 'Workflows',
description: 'Automate tasks with workflows',
getDateLabel: () => 'Planned for 2024',
},
{
done: false,
icon: mdiTableKey,
iconColor: 'gray',
title: 'Fine grained access controls',
description: 'Granular access controls for users and api keys',
getDateLabel: () => 'Planned for 2024',
},
{
done: false,
icon: mdiCameraBurst,
@ -234,6 +239,20 @@ const roadmap: Item[] = [
];
const milestones: Item[] = [
withRelease({
icon: mdiDatabaseOutline,
iconColor: 'brown',
title: 'Automatic database backups',
description: 'Database backups are now integrated into the Immich server',
release: 'v1.120.0',
}),
{
icon: mdiStar,
iconColor: 'gold',
title: '50,000 Stars',
description: 'Reached 50K Stars on GitHub!',
getDateLabel: withLanguage(new Date(2024, 10, 1)),
},
withRelease({
icon: mdiFaceRecognition,
title: 'Metadata Face Import',
@ -853,14 +872,12 @@ const milestones: Item[] = [
export default function MilestonePage(): JSX.Element {
return (
<Layout title="Milestones" description="History of Immich">
<Layout title={title} description={description}>
<section className="my-8">
<h1 className="md:text-6xl text-center mb-10 text-immich-primary dark:text-immich-dark-primary px-2">
Roadmap
{title}
</h1>
<p className="text-center text-xl px-2">
A list of future plans and goals, as well as past achievements and milestones.
</p>
<p className="text-center text-xl px-2">{description}</p>
<div className="flex justify-around mt-8 w-full max-w-full">
<Timeline items={[...roadmap, ...milestones]} />
</div>

View file

@ -1,4 +1,40 @@
[
{
"label": "v1.123.0",
"url": "https://v1.123.0.archive.immich.app"
},
{
"label": "v1.122.3",
"url": "https://v1.122.3.archive.immich.app"
},
{
"label": "v1.122.2",
"url": "https://v1.122.2.archive.immich.app"
},
{
"label": "v1.122.1",
"url": "https://v1.122.1.archive.immich.app"
},
{
"label": "v1.122.0",
"url": "https://v1.122.0.archive.immich.app"
},
{
"label": "v1.121.0",
"url": "https://v1.121.0.archive.immich.app"
},
{
"label": "v1.120.2",
"url": "https://v1.120.2.archive.immich.app"
},
{
"label": "v1.120.1",
"url": "https://v1.120.1.archive.immich.app"
},
{
"label": "v1.120.0",
"url": "https://v1.120.0.archive.immich.app"
},
{
"label": "v1.119.1",
"url": "https://v1.119.1.archive.immich.app"

View file

@ -1 +1 @@
22.11.0
22.12.0

View file

@ -34,7 +34,7 @@ services:
- 2285:2285
redis:
image: redis:6.2-alpine@sha256:2ba50e1ac3a0ea17b736ce9db2b0a9f6f8b85d4c27d5f5accc6a416d8f42c6d5
image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
database:
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0

908
e2e/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{
"name": "immich-e2e",
"version": "1.119.1",
"version": "1.123.0",
"description": "",
"main": "index.js",
"type": "module",
@ -25,18 +25,18 @@
"@immich/sdk": "file:../open-api/typescript-sdk",
"@playwright/test": "^1.44.1",
"@types/luxon": "^3.4.2",
"@types/node": "^22.8.1",
"@types/node": "^22.10.2",
"@types/oidc-provider": "^8.5.1",
"@types/pg": "^8.11.0",
"@types/pngjs": "^6.0.4",
"@types/supertest": "^6.0.2",
"@typescript-eslint/eslint-plugin": "^8.0.0",
"@typescript-eslint/parser": "^8.0.0",
"@typescript-eslint/eslint-plugin": "^8.15.0",
"@typescript-eslint/parser": "^8.15.0",
"@vitest/coverage-v8": "^2.0.5",
"eslint": "^9.0.0",
"eslint": "^9.14.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^55.0.0",
"eslint-plugin-unicorn": "^56.0.1",
"exiftool-vendored": "^28.3.1",
"globals": "^15.9.0",
"jose": "^5.6.3",
@ -53,6 +53,6 @@
"vitest": "^2.0.5"
},
"volta": {
"node": "22.11.0"
"node": "22.12.0"
}
}

View file

@ -141,6 +141,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user1Albums[0],
assets: [expect.objectContaining({ isFavorite: false })],
lastModifiedAssetTimestamp: expect.any(String),
});
});
@ -297,6 +298,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user1Albums[0],
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
lastModifiedAssetTimestamp: expect.any(String),
});
});
@ -327,6 +329,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user1Albums[0],
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
lastModifiedAssetTimestamp: expect.any(String),
});
});
@ -340,6 +343,7 @@ describe('/albums', () => {
...user1Albums[0],
assets: [],
assetCount: 1,
lastModifiedAssetTimestamp: expect.any(String),
});
});
});

View file

@ -1148,6 +1148,78 @@ describe('/asset', () => {
},
},
},
{
input: 'formats/raw/Canon/PowerShot_G12.CR2',
expected: {
type: AssetTypeEnum.Image,
originalFileName: 'PowerShot_G12.CR2',
fileCreatedAt: '2015-12-27T09:55:40.000Z',
exifInfo: {
make: 'Canon',
model: 'Canon PowerShot G12',
exifImageHeight: 2736,
exifImageWidth: 3648,
exposureTime: '1/1000',
fNumber: 4,
focalLength: 18.098,
iso: 80,
lensModel: null,
fileSizeInByte: 11_113_617,
dateTimeOriginal: '2015-12-27T09:55:40.000Z',
latitude: null,
longitude: null,
orientation: '1',
},
},
},
{
input: 'formats/raw/Fujifilm/X100V_compressed.RAF',
expected: {
type: AssetTypeEnum.Image,
originalFileName: 'X100V_compressed.RAF',
fileCreatedAt: '2024-10-12T21:01:01.000Z',
exifInfo: {
make: 'FUJIFILM',
model: 'X100V',
exifImageHeight: 4160,
exifImageWidth: 6240,
exposureTime: '1/4000',
fNumber: 16,
focalLength: 23,
iso: 160,
lensModel: null,
fileSizeInByte: 13_551_312,
dateTimeOriginal: '2024-10-12T21:01:01.000Z',
latitude: null,
longitude: null,
orientation: '6',
},
},
},
{
input: 'formats/raw/Ricoh/GR3/Ricoh_GR3-450.DNG',
expected: {
type: AssetTypeEnum.Image,
originalFileName: 'Ricoh_GR3-450.DNG',
fileCreatedAt: '2024-06-08T13:48:39.000Z',
exifInfo: {
dateTimeOriginal: '2024-06-08T13:48:39.000Z',
exifImageHeight: 4064,
exifImageWidth: 6112,
exposureTime: '1/400',
fNumber: 5,
fileSizeInByte: 31_175_472,
focalLength: 18.3,
iso: 100,
latitude: 36.613_24,
lensModel: 'GR LENS 18.3mm F2.8',
longitude: -121.897_85,
make: 'RICOH IMAGING COMPANY, LTD.',
model: 'RICOH GR III',
orientation: '1',
},
},
},
];
it(`should upload and generate a thumbnail for different file types`, async () => {

View file

@ -1,5 +1,5 @@
import { LibraryResponseDto, LoginResponseDto, getAllLibraries, scanLibrary } from '@immich/sdk';
import { cpSync, existsSync } from 'node:fs';
import { cpSync, existsSync, rmSync, unlinkSync } from 'node:fs';
import { Socket } from 'socket.io-client';
import { userDto, uuidDto } from 'src/fixtures';
import { errorDto } from 'src/responses';
@ -299,7 +299,7 @@ describe('/libraries', () => {
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets } = await utils.metadataSearch(admin.accessToken, {
const { assets } = await utils.searchAssets(admin.accessToken, {
originalPath: `${testAssetDirInternal}/temp/directoryA/assetA.png`,
});
expect(assets.count).toBe(1);
@ -320,7 +320,7 @@ describe('/libraries', () => {
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(assets.count).toBe(1);
expect(assets.items[0].originalPath.includes('directoryB'));
@ -340,7 +340,7 @@ describe('/libraries', () => {
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(assets.count).toBe(2);
expect(assets.items.find((asset) => asset.originalPath.includes('directoryA'))).toBeDefined();
@ -365,7 +365,7 @@ describe('/libraries', () => {
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(assets.count).toBe(2);
expect(assets.items.find((asset) => asset.originalPath.includes('folder, a'))).toBeDefined();
@ -393,7 +393,7 @@ describe('/libraries', () => {
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(assets.count).toBe(2);
expect(assets.items.find((asset) => asset.originalPath.includes('folder{ a'))).toBeDefined();
@ -403,68 +403,157 @@ describe('/libraries', () => {
utils.removeImageFile(`${testAssetDir}/temp/folder} b/assetB.png`);
});
it('should reimport a modified file', async () => {
const annoyingChars = [
"'",
'"',
'`',
'*',
'{',
'}',
',',
'(',
')',
'[',
']',
'?',
'!',
'@',
'#',
'$',
'%',
'^',
'&',
'=',
'+',
'~',
'|',
'<',
'>',
';',
':',
'/', // We never got backslashes to work
];
it.each(annoyingChars)('should scan multiple import paths with %s', async (char) => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp`],
importPaths: [`${testAssetDirInternal}/temp/folder${char}1`, `${testAssetDirInternal}/temp/folder${char}2`],
});
utils.createImageFile(`${testAssetDir}/temp/directoryA/assetB.jpg`);
await utimes(`${testAssetDir}/temp/directoryA/assetB.jpg`, 447_775_200_000);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
cpSync(`${testAssetDir}/albums/nature/tanners_ridge.jpg`, `${testAssetDir}/temp/directoryA/assetB.jpg`);
await utimes(`${testAssetDir}/temp/directoryA/assetB.jpg`, 447_775_200_001);
utils.createImageFile(`${testAssetDir}/temp/folder${char}1/asset1.png`);
utils.createImageFile(`${testAssetDir}/temp/folder${char}2/asset2.png`);
const { status } = await request(app)
.post(`/libraries/${library.id}/scan`)
.set('Authorization', `Bearer ${admin.accessToken}`)
.send({ refreshModifiedFiles: true });
.send();
expect(status).toBe(204);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
utils.removeImageFile(`${testAssetDir}/temp/directoryA/assetB.jpg`);
const { assets } = await utils.metadataSearch(admin.accessToken, {
libraryId: library.id,
model: 'NIKON D750',
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(assets.items).toEqual(
expect.arrayContaining([
expect.objectContaining({ originalPath: expect.stringContaining(`folder${char}1/asset1.png`) }),
expect.objectContaining({ originalPath: expect.stringContaining(`folder${char}2/asset2.png`) }),
]),
);
utils.removeImageFile(`${testAssetDir}/temp/folder${char}1/asset1.png`);
utils.removeImageFile(`${testAssetDir}/temp/folder${char}2/asset2.png`);
});
it('should reimport a modified file', async () => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp/reimport`],
});
expect(assets.count).toBe(1);
utils.createImageFile(`${testAssetDir}/temp/reimport/asset.jpg`);
await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_000);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
cpSync(`${testAssetDir}/albums/nature/tanners_ridge.jpg`, `${testAssetDir}/temp/reimport/asset.jpg`);
await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_001);
const { status } = await request(app)
.post(`/libraries/${library.id}/scan`)
.set('Authorization', `Bearer ${admin.accessToken}`)
.send();
expect(status).toBe(204);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
const { assets } = await utils.searchAssets(admin.accessToken, {
libraryId: library.id,
});
expect(assets.count).toEqual(1);
const asset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id);
expect(asset).toEqual(
expect.objectContaining({
originalFileName: 'asset.jpg',
exifInfo: expect.objectContaining({
model: 'NIKON D750',
}),
}),
);
utils.removeImageFile(`${testAssetDir}/temp/reimport/asset.jpg`);
});
it('should not reimport unmodified files', async () => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp`],
importPaths: [`${testAssetDirInternal}/temp/reimport`],
});
utils.createImageFile(`${testAssetDir}/temp/directoryA/assetB.jpg`);
await utimes(`${testAssetDir}/temp/directoryA/assetB.jpg`, 447_775_200_000);
utils.createImageFile(`${testAssetDir}/temp/reimport/asset.jpg`);
await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_000);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
cpSync(`${testAssetDir}/albums/nature/tanners_ridge.jpg`, `${testAssetDir}/temp/directoryA/assetB.jpg`);
await utimes(`${testAssetDir}/temp/directoryA/assetB.jpg`, 447_775_200_000);
cpSync(`${testAssetDir}/albums/nature/tanners_ridge.jpg`, `${testAssetDir}/temp/reimport/asset.jpg`);
await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_000);
const { status } = await request(app)
.post(`/libraries/${library.id}/scan`)
.set('Authorization', `Bearer ${admin.accessToken}`)
.send({ refreshModifiedFiles: true });
.send();
expect(status).toBe(204);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
utils.removeImageFile(`${testAssetDir}/temp/directoryA/assetB.jpg`);
const { assets } = await utils.metadataSearch(admin.accessToken, {
const { assets } = await utils.searchAssets(admin.accessToken, {
libraryId: library.id,
model: 'NIKON D750',
});
expect(assets.count).toBe(0);
expect(assets.count).toEqual(1);
const asset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id);
expect(asset).toEqual(
expect.objectContaining({
originalFileName: 'asset.jpg',
exifInfo: expect.not.objectContaining({
model: 'NIKON D750',
}),
}),
);
utils.removeImageFile(`${testAssetDir}/temp/reimport/asset.jpg`);
});
it('should set an asset offline if its file is missing', async () => {
@ -478,7 +567,7 @@ describe('/libraries', () => {
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(assets.count).toBe(1);
utils.removeImageFile(`${testAssetDir}/temp/offline/offline.png`);
@ -495,7 +584,7 @@ describe('/libraries', () => {
expect(trashedAsset.originalPath).toBe(`${testAssetDirInternal}/temp/offline/offline.png`);
expect(trashedAsset.isOffline).toEqual(true);
const { assets: newAssets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(newAssets.items).toEqual([]);
});
@ -510,7 +599,7 @@ describe('/libraries', () => {
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(assets.count).toBe(1);
utils.createDirectory(`${testAssetDir}/temp/another-path/`);
@ -532,7 +621,7 @@ describe('/libraries', () => {
expect(trashedAsset.originalPath).toBe(`${testAssetDirInternal}/temp/offline/offline.png`);
expect(trashedAsset.isOffline).toBe(true);
const { assets: newAssets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(newAssets.items).toEqual([]);
@ -549,7 +638,7 @@ describe('/libraries', () => {
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets } = await utils.metadataSearch(admin.accessToken, {
const { assets } = await utils.searchAssets(admin.accessToken, {
libraryId: library.id,
originalFileName: 'assetB.png',
});
@ -568,7 +657,7 @@ describe('/libraries', () => {
expect(trashedAsset.originalPath).toBe(`${testAssetDirInternal}/temp/directoryB/assetB.png`);
expect(trashedAsset.isOffline).toBe(true);
const { assets: newAssets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(newAssets.items).toEqual([
expect.objectContaining({
@ -586,7 +675,7 @@ describe('/libraries', () => {
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets: assetsBefore } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets: assetsBefore } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(assetsBefore.count).toBeGreaterThan(1);
const { status } = await request(app)
@ -597,10 +686,302 @@ describe('/libraries', () => {
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(assets).toEqual(assetsBefore);
});
describe('xmp metadata', async () => {
it('should import metadata from file.xmp', async () => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp/xmp`],
});
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`);
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(newAssets.items).toEqual([
expect.objectContaining({
originalFileName: 'glarus.nef',
fileCreatedAt: '2000-09-27T12:35:33.000Z',
}),
]);
rmSync(`${testAssetDir}/temp/xmp`, { recursive: true, force: true });
});
it('should import metadata from file.ext.xmp', async () => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp/xmp`],
});
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.nef.xmp`);
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(newAssets.items).toEqual([
expect.objectContaining({
originalFileName: 'glarus.nef',
fileCreatedAt: '2000-09-27T12:35:33.000Z',
}),
]);
rmSync(`${testAssetDir}/temp/xmp`, { recursive: true, force: true });
});
it('should import metadata in file.ext.xmp before file.xmp if both exist', async () => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp/xmp`],
});
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.nef.xmp`);
cpSync(`${testAssetDir}/metadata/xmp/dates/2010.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`);
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(newAssets.items).toEqual([
expect.objectContaining({
originalFileName: 'glarus.nef',
fileCreatedAt: '2000-09-27T12:35:33.000Z',
}),
]);
rmSync(`${testAssetDir}/temp/xmp`, { recursive: true, force: true });
});
it('should switch from using file.xmp to file.ext.xmp when asset refreshes', async () => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp/xmp`],
});
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`);
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
cpSync(`${testAssetDir}/metadata/xmp/dates/2010.xmp`, `${testAssetDir}/temp/xmp/glarus.nef.xmp`);
unlinkSync(`${testAssetDir}/temp/xmp/glarus.xmp`);
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(newAssets.items).toEqual([
expect.objectContaining({
originalFileName: 'glarus.nef',
fileCreatedAt: '2010-09-27T12:35:33.000Z',
}),
]);
rmSync(`${testAssetDir}/temp/xmp`, { recursive: true, force: true });
});
it('should switch from using file metadata to file.xmp metadata when asset refreshes', async () => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp/xmp`],
});
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`);
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(newAssets.items).toEqual([
expect.objectContaining({
originalFileName: 'glarus.nef',
fileCreatedAt: '2000-09-27T12:35:33.000Z',
}),
]);
rmSync(`${testAssetDir}/temp/xmp`, { recursive: true, force: true });
});
it('should switch from using file metadata to file.xmp metadata when asset refreshes', async () => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp/xmp`],
});
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.nef.xmp`);
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(newAssets.items).toEqual([
expect.objectContaining({
originalFileName: 'glarus.nef',
fileCreatedAt: '2000-09-27T12:35:33.000Z',
}),
]);
rmSync(`${testAssetDir}/temp/xmp`, { recursive: true, force: true });
});
it('should switch from using file.ext.xmp to file.xmp when asset refreshes', async () => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp/xmp`],
});
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.nef.xmp`);
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
cpSync(`${testAssetDir}/metadata/xmp/dates/2010.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`);
unlinkSync(`${testAssetDir}/temp/xmp/glarus.nef.xmp`);
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(newAssets.items).toEqual([
expect.objectContaining({
originalFileName: 'glarus.nef',
fileCreatedAt: '2010-09-27T12:35:33.000Z',
}),
]);
rmSync(`${testAssetDir}/temp/xmp`, { recursive: true, force: true });
});
it('should switch from using file.ext.xmp to file metadata', async () => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp/xmp`],
});
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.nef.xmp`);
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
unlinkSync(`${testAssetDir}/temp/xmp/glarus.nef.xmp`);
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(newAssets.items).toEqual([
expect.objectContaining({
originalFileName: 'glarus.nef',
fileCreatedAt: '2010-07-20T17:27:12.000Z',
}),
]);
rmSync(`${testAssetDir}/temp/xmp`, { recursive: true, force: true });
});
it('should switch from using file.xmp to file metadata', async () => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp/xmp`],
});
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`);
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
unlinkSync(`${testAssetDir}/temp/xmp/glarus.xmp`);
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001);
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(newAssets.items).toEqual([
expect.objectContaining({
originalFileName: 'glarus.nef',
fileCreatedAt: '2010-07-20T17:27:12.000Z',
}),
]);
rmSync(`${testAssetDir}/temp/xmp`, { recursive: true, force: true });
});
});
});
describe('POST /libraries/:id/validate', () => {

View file

@ -98,6 +98,7 @@ describe('/search', () => {
{ latitude: 31.634_16, longitude: -7.999_94 }, // marrakesh
{ latitude: 38.523_735_4, longitude: -78.488_619_4 }, // tanners ridge
{ latitude: 59.938_63, longitude: 30.314_13 }, // st. petersburg
{ latitude: 0, longitude: 0 }, // null island
];
const updates = coordinates.map((dto, i) =>
@ -473,10 +474,7 @@ describe('/search', () => {
.get('/search/explore')
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toBe(200);
expect(body).toEqual([
{ fieldName: 'exifInfo.city', items: [] },
{ fieldName: 'smartInfo.tags', items: [] },
]);
expect(body).toEqual([{ fieldName: 'exifInfo.city', items: [] }]);
});
});
@ -535,7 +533,7 @@ describe('/search', () => {
expect(body).toEqual(errorDto.unauthorized);
});
it('should get suggestions for country', async () => {
it('should get suggestions for country (including null)', async () => {
const { status, body } = await request(app)
.get('/search/suggestions?type=country&includeNull=true')
.set('Authorization', `Bearer ${admin.accessToken}`);
@ -558,7 +556,29 @@ describe('/search', () => {
expect(status).toBe(200);
});
it('should get suggestions for state', async () => {
it('should get suggestions for country', async () => {
const { status, body } = await request(app)
.get('/search/suggestions?type=country')
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(body).toEqual([
'Cuba',
'France',
'Georgia',
'Germany',
'Ghana',
'Japan',
'Morocco',
"People's Republic of China",
'Russian Federation',
'Singapore',
'Spain',
'Switzerland',
'United States of America',
]);
expect(status).toBe(200);
});
it('should get suggestions for state (including null)', async () => {
const { status, body } = await request(app)
.get('/search/suggestions?type=state&includeNull=true')
.set('Authorization', `Bearer ${admin.accessToken}`);
@ -582,7 +602,30 @@ describe('/search', () => {
expect(status).toBe(200);
});
it('should get suggestions for city', async () => {
it('should get suggestions for state', async () => {
const { status, body } = await request(app)
.get('/search/suggestions?type=state')
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(body).toEqual([
'Andalusia',
'Berlin',
'Glarus',
'Greater Accra',
'Havana',
'Île-de-France',
'Marrakesh-Safi',
'Mississippi',
'New York',
'Shanghai',
'St.-Petersburg',
'Tbilisi',
'Tokyo',
'Virginia',
]);
expect(status).toBe(200);
});
it('should get suggestions for city (including null)', async () => {
const { status, body } = await request(app)
.get('/search/suggestions?type=city&includeNull=true')
.set('Authorization', `Bearer ${admin.accessToken}`);
@ -607,7 +650,31 @@ describe('/search', () => {
expect(status).toBe(200);
});
it('should get suggestions for camera make', async () => {
it('should get suggestions for city', async () => {
const { status, body } = await request(app)
.get('/search/suggestions?type=city')
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(body).toEqual([
'Accra',
'Berlin',
'Glarus',
'Havana',
'Marrakesh',
'Montalbán de Córdoba',
'New York City',
'Novena',
'Paris',
'Philadelphia',
'Saint Petersburg',
'Shanghai',
'Stanley',
'Tbilisi',
'Tokyo',
]);
expect(status).toBe(200);
});
it('should get suggestions for camera make (including null)', async () => {
const { status, body } = await request(app)
.get('/search/suggestions?type=camera-make&includeNull=true')
.set('Authorization', `Bearer ${admin.accessToken}`);
@ -624,7 +691,23 @@ describe('/search', () => {
expect(status).toBe(200);
});
it('should get suggestions for camera model', async () => {
it('should get suggestions for camera make', async () => {
const { status, body } = await request(app)
.get('/search/suggestions?type=camera-make')
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(body).toEqual([
'Apple',
'Canon',
'FUJIFILM',
'NIKON CORPORATION',
'PENTAX Corporation',
'samsung',
'SONY',
]);
expect(status).toBe(200);
});
it('should get suggestions for camera model (including null)', async () => {
const { status, body } = await request(app)
.get('/search/suggestions?type=camera-model&includeNull=true')
.set('Authorization', `Bearer ${admin.accessToken}`);
@ -645,5 +728,26 @@ describe('/search', () => {
]);
expect(status).toBe(200);
});
it('should get suggestions for camera model', async () => {
const { status, body } = await request(app)
.get('/search/suggestions?type=camera-model')
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(body).toEqual([
'Canon EOS 7D',
'Canon EOS R5',
'DSLR-A550',
'FinePix S3Pro',
'iPhone 7',
'NIKON D700',
'NIKON D750',
'NIKON D80',
'PENTAX K10D',
'SM-F711N',
'SM-S906U',
'SM-T970',
]);
expect(status).toBe(200);
});
});
});

View file

@ -133,6 +133,7 @@ describe('/server', () => {
userDeleteDelay: 7,
isInitialized: true,
externalDomain: '',
publicUsers: true,
isOnboarded: false,
mapDarkStyleUrl: 'https://tiles.immich.cloud/v1/style/dark.json',
mapLightStyleUrl: 'https://tiles.immich.cloud/v1/style/light.json',
@ -163,11 +164,15 @@ describe('/server', () => {
expect(body).toEqual({
photos: 0,
usage: 0,
usagePhotos: 0,
usageVideos: 0,
usageByUser: [
{
quotaSizeInBytes: null,
photos: 0,
usage: 0,
usagePhotos: 0,
usageVideos: 0,
userName: 'Immich Admin',
userId: admin.userId,
videos: 0,
@ -176,6 +181,8 @@ describe('/server', () => {
quotaSizeInBytes: null,
photos: 0,
usage: 0,
usagePhotos: 0,
usageVideos: 0,
userName: 'User 1',
userId: nonAdmin.userId,
videos: 0,

View file

@ -84,7 +84,7 @@ describe('/trash', () => {
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(assets.items.length).toBe(1);
const asset = assets.items[0];
@ -148,7 +148,7 @@ describe('/trash', () => {
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(assets.count).toBe(1);
const assetId = assets.items[0].id;
@ -206,7 +206,7 @@ describe('/trash', () => {
await scan(admin.accessToken, library.id);
await utils.waitForQueueFinish(admin.accessToken, 'library');
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
expect(assets.count).toBe(1);
const assetId = assets.items[0].id;

View file

@ -103,7 +103,7 @@ describe(`immich upload`, () => {
describe(`immich upload /path/to/file.jpg`, () => {
it('should upload a single file', async () => {
const { stderr, stdout, exitCode } = await immichCli(['upload', `${testAssetDir}/albums/nature/silver_fir.jpg`]);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 1 new asset')]),
);
@ -126,7 +126,7 @@ describe(`immich upload`, () => {
const expectedCount = Object.entries(files).filter((entry) => entry[1]).length;
const { stderr, stdout, exitCode } = await immichCli(['upload', ...commandLine]);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining(`Successfully uploaded ${expectedCount} new asset`)]),
);
@ -154,7 +154,7 @@ describe(`immich upload`, () => {
cpSync(`${testAssetDir}/albums/nature/silver_fir.jpg`, testPaths[1]);
const { stderr, stdout, exitCode } = await immichCli(['upload', ...testPaths]);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 2 new assets')]),
);
@ -169,7 +169,7 @@ describe(`immich upload`, () => {
it('should skip a duplicate file', async () => {
const first = await immichCli(['upload', `${testAssetDir}/albums/nature/silver_fir.jpg`]);
expect(first.stderr).toBe('');
expect(first.stderr).toContain('{message}');
expect(first.stdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 1 new asset')]),
);
@ -179,7 +179,7 @@ describe(`immich upload`, () => {
expect(assets.total).toBe(1);
const second = await immichCli(['upload', `${testAssetDir}/albums/nature/silver_fir.jpg`]);
expect(second.stderr).toBe('');
expect(second.stderr).toContain('{message}');
expect(second.stdout.split('\n')).toEqual(
expect.arrayContaining([
expect.stringContaining('Found 0 new files and 1 duplicate'),
@ -205,7 +205,7 @@ describe(`immich upload`, () => {
`${testAssetDir}/albums/nature/silver_fir.jpg`,
'--dry-run',
]);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Would have uploaded 1 asset')]),
);
@ -217,7 +217,7 @@ describe(`immich upload`, () => {
it('dry run should handle duplicates', async () => {
const first = await immichCli(['upload', `${testAssetDir}/albums/nature/silver_fir.jpg`]);
expect(first.stderr).toBe('');
expect(first.stderr).toContain('{message}');
expect(first.stdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 1 new asset')]),
);
@ -227,7 +227,7 @@ describe(`immich upload`, () => {
expect(assets.total).toBe(1);
const second = await immichCli(['upload', `${testAssetDir}/albums/nature/`, '--dry-run']);
expect(second.stderr).toBe('');
expect(second.stderr).toContain('{message}');
expect(second.stdout.split('\n')).toEqual(
expect.arrayContaining([
expect.stringContaining('Found 8 new files and 1 duplicate'),
@ -241,7 +241,7 @@ describe(`immich upload`, () => {
describe('immich upload --recursive', () => {
it('should upload a folder recursively', async () => {
const { stderr, stdout, exitCode } = await immichCli(['upload', `${testAssetDir}/albums/nature/`, '--recursive']);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 9 new assets')]),
);
@ -267,7 +267,7 @@ describe(`immich upload`, () => {
expect.stringContaining('Successfully updated 9 assets'),
]),
);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
@ -283,7 +283,7 @@ describe(`immich upload`, () => {
expect(response1.stdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 9 new assets')]),
);
expect(response1.stderr).toBe('');
expect(response1.stderr).toContain('{message}');
expect(response1.exitCode).toBe(0);
const assets1 = await getAssetStatistics({}, { headers: asKeyAuth(key) });
@ -299,7 +299,7 @@ describe(`immich upload`, () => {
expect.stringContaining('Successfully updated 9 assets'),
]),
);
expect(response2.stderr).toBe('');
expect(response2.stderr).toContain('{message}');
expect(response2.exitCode).toBe(0);
const assets2 = await getAssetStatistics({}, { headers: asKeyAuth(key) });
@ -325,7 +325,7 @@ describe(`immich upload`, () => {
expect.stringContaining('Would have updated albums of 9 assets'),
]),
);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
@ -351,7 +351,7 @@ describe(`immich upload`, () => {
expect.stringContaining('Successfully updated 9 assets'),
]),
);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
@ -377,7 +377,7 @@ describe(`immich upload`, () => {
expect.stringContaining('Would have updated albums of 9 assets'),
]),
);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
@ -408,7 +408,7 @@ describe(`immich upload`, () => {
expect.stringContaining('Deleting assets that have been uploaded'),
]),
);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
@ -434,7 +434,7 @@ describe(`immich upload`, () => {
expect.stringContaining('Would have deleted 9 local assets'),
]),
);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
@ -493,7 +493,7 @@ describe(`immich upload`, () => {
'2',
]);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([
'Found 9 new files and 0 duplicates',
@ -534,7 +534,7 @@ describe(`immich upload`, () => {
'silver_fir.jpg',
]);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([
'Found 8 new files and 0 duplicates',
@ -555,7 +555,7 @@ describe(`immich upload`, () => {
'!(*_*_*).jpg',
]);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([
'Found 1 new files and 0 duplicates',
@ -577,7 +577,7 @@ describe(`immich upload`, () => {
'--dry-run',
]);
expect(stderr).toBe('');
expect(stderr).toContain('{message}');
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([
'Found 8 new files and 0 duplicates',

View file

@ -9,9 +9,11 @@ describe(`immich-admin`, () => {
describe('list-users', () => {
it('should list the admin user', async () => {
const { stdout, stderr, exitCode } = await immichAdmin(['list-users']).promise;
const { stdout, exitCode } = await immichAdmin(['list-users']).promise;
expect(exitCode).toBe(0);
expect(stderr).toBe('');
// TODO: Vitest needs upgrade to Node 22.x to fix the failed check
// expect(stderr).toBe('');
expect(stdout).toContain("email: 'admin@immich.cloud'");
expect(stdout).toContain("name: 'Immich Admin'");
});
@ -29,9 +31,10 @@ describe(`immich-admin`, () => {
}
});
const { stderr, stdout, exitCode } = await promise;
const { stdout, exitCode } = await promise;
expect(exitCode).toBe(0);
expect(stderr).toBe('');
// TODO: Vitest needs upgrade to Node 22.x to fix the failed check
// expect(stderr).toBe('');
expect(stdout).toContain('The admin password has been updated to:');
});
});

View file

@ -11,6 +11,7 @@ import {
PersonCreateDto,
SharedLinkCreateDto,
UserAdminCreateDto,
UserPreferencesUpdateDto,
ValidateLibraryDto,
checkExistingAssets,
createAlbum,
@ -19,19 +20,23 @@ import {
createPartner,
createPerson,
createSharedLink,
createStack,
createUserAdmin,
deleteAssets,
getAllJobsStatus,
getAssetInfo,
getConfigDefaults,
login,
searchMetadata,
searchAssets,
setBaseUrl,
signUpAdmin,
tagAssets,
updateAdminOnboarding,
updateAlbumUser,
updateAssets,
updateConfig,
updateMyPreferences,
upsertTags,
validate,
} from '@immich/sdk';
import { BrowserContext } from '@playwright/test';
@ -400,8 +405,8 @@ export const utils = {
checkExistingAssets: (accessToken: string, checkExistingAssetsDto: CheckExistingAssetsDto) =>
checkExistingAssets({ checkExistingAssetsDto }, { headers: asBearerAuth(accessToken) }),
metadataSearch: async (accessToken: string, dto: MetadataSearchDto) => {
return searchMetadata({ metadataSearchDto: dto }, { headers: asBearerAuth(accessToken) });
searchAssets: async (accessToken: string, dto: MetadataSearchDto) => {
return searchAssets({ metadataSearchDto: dto }, { headers: asBearerAuth(accessToken) });
},
archiveAssets: (accessToken: string, ids: string[]) =>
@ -444,6 +449,18 @@ export const utils = {
createPartner: (accessToken: string, id: string) => createPartner({ id }, { headers: asBearerAuth(accessToken) }),
updateMyPreferences: (accessToken: string, userPreferencesUpdateDto: UserPreferencesUpdateDto) =>
updateMyPreferences({ userPreferencesUpdateDto }, { headers: asBearerAuth(accessToken) }),
createStack: (accessToken: string, assetIds: string[]) =>
createStack({ stackCreateDto: { assetIds } }, { headers: asBearerAuth(accessToken) }),
upsertTags: (accessToken: string, tags: string[]) =>
upsertTags({ tagUpsertDto: { tags } }, { headers: asBearerAuth(accessToken) }),
tagAssets: (accessToken: string, tagId: string, assetIds: string[]) =>
tagAssets({ id: tagId, bulkIdsDto: { ids: assetIds } }, { headers: asBearerAuth(accessToken) }),
setAuthCookies: async (context: BrowserContext, accessToken: string, domain = '127.0.0.1') =>
await context.addCookies([
{

View file

@ -0,0 +1,66 @@
import { AssetMediaResponseDto, LoginResponseDto } from '@immich/sdk';
import { expect, Page, test } from '@playwright/test';
import { utils } from 'src/utils';
async function ensureDetailPanelVisible(page: Page) {
await page.waitForSelector('#immich-asset-viewer');
const isVisible = await page.locator('#detail-panel').isVisible();
if (!isVisible) {
await page.keyboard.press('i');
await page.waitForSelector('#detail-panel');
}
}
test.describe('Asset Viewer stack', () => {
let admin: LoginResponseDto;
let assetOne: AssetMediaResponseDto;
let assetTwo: AssetMediaResponseDto;
test.beforeAll(async () => {
utils.initSdk();
await utils.resetDatabase();
admin = await utils.adminSetup();
await utils.updateMyPreferences(admin.accessToken, { tags: { enabled: true } });
assetOne = await utils.createAsset(admin.accessToken);
assetTwo = await utils.createAsset(admin.accessToken);
await utils.createStack(admin.accessToken, [assetOne.id, assetTwo.id]);
const tags = await utils.upsertTags(admin.accessToken, ['test/1', 'test/2']);
const tagOne = tags.find((tag) => tag.value === 'test/1')!;
const tagTwo = tags.find((tag) => tag.value === 'test/2')!;
await utils.tagAssets(admin.accessToken, tagOne.id, [assetOne.id]);
await utils.tagAssets(admin.accessToken, tagTwo.id, [assetTwo.id]);
});
test('stack slideshow is visible', async ({ page, context }) => {
await utils.setAuthCookies(context, admin.accessToken);
await page.goto(`/photos/${assetOne.id}`);
const stackAssets = page.locator('#stack-slideshow [data-asset]');
await expect(stackAssets.first()).toBeVisible();
await expect(stackAssets.nth(1)).toBeVisible();
});
test('tags of primary asset are visible', async ({ page, context }) => {
await utils.setAuthCookies(context, admin.accessToken);
await page.goto(`/photos/${assetOne.id}`);
await ensureDetailPanelVisible(page);
const tags = page.getByTestId('detail-panel-tags').getByRole('link');
await expect(tags.first()).toHaveText('test/1');
});
test('tags of second asset are visible', async ({ page, context }) => {
await utils.setAuthCookies(context, admin.accessToken);
await page.goto(`/photos/${assetOne.id}`);
await ensureDetailPanelVisible(page);
const stackAssets = page.locator('#stack-slideshow [data-asset]');
await stackAssets.nth(1).click();
const tags = page.getByTestId('detail-panel-tags').getByRole('link');
await expect(tags.first()).toHaveText('test/2');
});
});

@ -1 +1 @@
Subproject commit 3e057d2f58750acdf7ff281a3938e34a86cfef4d
Subproject commit 9e3b964b080dca6f035b29b86e66454ae8aeda78

View file

@ -1 +1,57 @@
{}
{
"about": "Verfris",
"account": "Rekening",
"account_settings": "Rekeninginstellings",
"acknowledge": "Erken",
"action": "Aksie",
"actions": "Aksies",
"active": "Aktief",
"activity": "Aktiwiteite",
"activity_changed": "Aktiwiteit is {enabled, select, true {aangeskakel} other {afgeskakel}}",
"add": "Voegby",
"add_a_description": "Voeg 'n beskrywing by",
"add_a_location": "Voeg 'n ligging by",
"add_a_name": "Voeg 'n naam by",
"add_a_title": "Voeg 'n titel by",
"add_exclusion_pattern": "Voeg uitsgluitingspatrone by",
"add_import_path": "Voeg invoerpad by",
"add_location": "Voeg ligging by",
"add_more_users": "Voeg meer gebruikers by",
"add_partner": "Voeg vennoot by",
"add_path": "Voeg pad by",
"add_photos": "Voeg foto's by",
"add_to": "Voeg na...",
"add_to_album": "Voeg na album",
"add_to_shared_album": "Voeg na gedeelde album",
"added_to_archive": "By argief gevoeg",
"added_to_favorites": "By gunstelinge gevoeg",
"added_to_favorites_count": "Het {count, number} by gunstelinge gevoeg",
"admin": {
"add_exclusion_pattern_description": "Voeg uitsluitingspatrone by. Globbing met *, ** en ? word ondersteun. Om alle lêers in enige lêergids genaamd \"Raw\" te ignoreer, gebruik \"**/Raw/**\". Om alle lêers wat op \".tif\" eindig, te ignoreer, gebruik \"**/*.tif\". Om 'n absolute pad te ignoreer, gebruik \"/path/to/ignore/**\".",
"asset_offline_description": "Hierdie eksterne biblioteekbate word nie meer op skyf gevind nie en is na die asblik geskuif. As die lêer binne die biblioteek geskuif is, gaan jou tydlyn na vir die nuwe ooreenstemmende bate. Om hierdie bate te herstel, maak asseblief seker dat die lêerpad hieronder deur Immich verkry kan word en skandeer die biblioteek.",
"authentication_settings": "Verifikasie instellings",
"authentication_settings_description": "Bestuur wagwoord, OAuth en ander verifikasie instellings",
"authentication_settings_disable_all": "Is jy seker jy wil alle aanmeldmetodes deaktiveer? Aanmelding sal heeltemal gedeaktiveer word.",
"authentication_settings_reenable": "Om te heraktiveer, gebruik 'n <link>Server Command</link>.",
"background_task_job": "Agtergrondtake",
"backup_database": "Rugsteun databasis",
"backup_database_enable_description": "Aktiveer databasisrugsteun",
"backup_keep_last_amount": "Aantal vorige rugsteune om te hou",
"backup_settings": "Rugsteun instellings",
"backup_settings_description": "Bestuur databasis rugsteun instellings",
"check_all": "Kies Alles",
"cleared_jobs": "Poste gevee vir: {job}",
"config_set_by_file": "Config word tans deur 'n konfigurasielêer gestel",
"confirm_delete_library": "Is jy seker jy wil {library}-biblioteek uitvee?",
"confirm_delete_library_assets": "Is jy seker jy wil hierdie biblioteek uitvee? Dit sal {count, plural, one {# bevatte base} other {# bevatte bates}} uit Immich uitvee en kan nie ongedaan gemaak word nie. Lêers sal op skyf bly.",
"confirm_email_below": "Om te bevestig, tik \"{email}\" hieronder",
"confirm_reprocess_all_faces": "Is jy seker jy wil alle gesigte herverwerk? Dit sal ook genoemde mense skoonmaak.",
"confirm_user_password_reset": "Is jy seker jy wil {user} se wagwoord terugstel?",
"create_job": "Skep werk",
"cron_expression": "Cron uitdrukking",
"cron_expression_description": "Stel die skanderingsinterval in met die cron-formaat. Vir meer inligting verwys asseblief na bv. <link>Crontab Guru</link>",
"cron_expression_presets": "Cron uitdrukking voorafinstellings",
"disable_login": "Deaktiveer aanmelding",
"duplicate_detection_job_description": "Begin masjienleer op bates om soortgelyke beelde op te spoor. Maak staat op Smart Search"
}
}

View file

@ -1,5 +1,5 @@
{
"about": "حول",
"about": "تحديث",
"account": "الحساب",
"account_settings": "إعدادات الحساب",
"acknowledge": "أُدرك ذلك",
@ -34,6 +34,11 @@
"authentication_settings_disable_all": "هل أنت متأكد أنك تريد تعطيل جميع وسائل تسجيل الدخول؟ سيتم تعطيل تسجيل الدخول بالكامل.",
"authentication_settings_reenable": "لإعادة التفعيل، استخدم <link>أمر الخادم</link>.",
"background_task_job": "المهام الخلفية",
"backup_database": "قاعدة البيانات الاحتياطية",
"backup_database_enable_description": "تمكين النسخ الاحتياطي لقاعدة البيانات",
"backup_keep_last_amount": "مقدار النسخ الاحتياطية السابقة للاحتفاظ بها",
"backup_settings": "إعدادات النسخ الاحتياطي",
"backup_settings_description": "إدارة إعدادات النسخ الاحتياطي لقاعدة البيانات",
"check_all": "اختر الكل",
"cleared_jobs": "تم إخلاء مهام: {job}",
"config_set_by_file": "الإعدادات حاليًا معينة عن طريق ملف الاعدادات",
@ -43,9 +48,10 @@
"confirm_reprocess_all_faces": "هل أنت متأكد أنك تريد إعادة معالجة جميع الوجوه؟ سيخلي هذا كل الأشخاص الذين سَميتَهم.",
"confirm_user_password_reset": "هل أنت متأكد أنك تريد إعادة تعيين كلمة مرور {user}؟",
"create_job": "إنشاء وظيفة",
"crontab_guru": "",
"cron_expression": "تعبير Cron",
"cron_expression_description": "اضبط الفاصل الزمني للفحص باستخدام تنسيق cron. لمزيد من المعلومات يُرجى الرجوع إلى <link>Crontab Guru</link> على سبيل المثال",
"cron_expression_presets": "الإعدادات المسبقة لتعبير Cron",
"disable_login": "تعطيل تسجيل الدخول",
"disabled": "",
"duplicate_detection_job_description": "بدء التعلم الآلي على المحتوى للعثور على الصور المتشابهة. يعتمد على البحث الذكي",
"exclusion_pattern_description": "تتيح لك أنماط الاستبعاد تجاهل الملفات والمجلدات عند فحص مكتبتك. يعد هذا مفيدًا إذا كان لديك مجلدات تحتوي على ملفات لا تريد استيرادها، مثل ملفات RAW.",
"external_library_created_at": "مكتبة خارجية (أُنشئت في {date})",
@ -63,22 +69,15 @@
"image_prefer_wide_gamut": "تفضيل نطاق الألوان الواسع",
"image_prefer_wide_gamut_setting_description": "استخدم Display P3 للصور المصغرة. يحافظ هذا على حيوية الصور ذات مساحات الألوان الواسعة بشكل أفضل، ولكن قد تظهر الصور بشكل مختلف على الأجهزة القديمة ذات إصدار متصفح قديم. يتم الاحتفاظ بصور sRGB بتنسيق sRGB لتجنب تغيرات اللون.",
"image_preview_description": "صورة متوسطة الحجم مع بيانات وصفية مجردة، تُستخدم عند عرض أصل واحد وللتعلم الآلي",
"image_preview_format": "تنسيق المعاينة",
"image_preview_quality_description": "جودة المعاينة من 1 إلى 100. كلما كانت القيمة أعلى كان ذلك أفضل، ولكنها تنتج ملفات أكبر وقد تقلل من استجابة التطبيق. قد يؤثر ضبط قيمة منخفضة على جودة التعلم الآلي.",
"image_preview_resolution": "معاينة الدقّة",
"image_preview_resolution_description": "يُستخدم عند عرض صورة واحدة وللتعلم الآلي. ستحافظ الدقاتُ العالية على المزيد من التفاصيل ولكنها ستستغرق وقتًا أطول للترميز، ولها أحجام ملفات أكبر، ويمكن أن تقلل من استجابة التطبيق.",
"image_preview_title": "إعدادات المعاينة",
"image_quality": "الجودة",
"image_quality_description": "جودة الصورة من 1-100. الأعلى هو الأفضل من حيث الجودة ولكنه ينتج ملفات أكبر، ويؤثر هذا الخيار على صور المعاينة والصور المصغرة.",
"image_resolution": "الدقة",
"image_resolution_description": "يمكن للدقة العالية الحفاظ على مزيد من التفاصيل ولكنها تستغرق وقتًا أطول للترميز، وتحتوي على أحجام ملفات أكبر ويمكن أن تقلل من استجابة التطبيق.",
"image_settings": "إعدادات الصور",
"image_settings_description": "إدارة جودة ودقة الصور التي تم إنشاؤها",
"image_thumbnail_description": "صورة مصغرة صغيرة مع بيانات وصفية مجردة، تُستخدم عند عرض مجموعات من الصور مثل الجدول الزمني الرئيسي",
"image_thumbnail_format": "تنسيق الصور المصغّرة",
"image_thumbnail_quality_description": "تتراوح جودة الصورة المصغرة من 1 إلى 100. كلما كانت الجودة أعلى كان ذلك أفضل، ولكنها تنتج ملفات أكبر وقد تقلل من استجابة التطبيق.",
"image_thumbnail_resolution": "دقة الصور المصغّرة",
"image_thumbnail_resolution_description": "يُستخدم عند عرض مجموعات من الصور (المخطط الزمني الرئيسي، عرض الألبوم، وما إلى ذلك). ستحافظ الدقاتُ العالية على المزيد من التفاصيل ولكنها ستستغرق وقتًا أطول للترميز، ولها أحجام ملفات أكبر، ويمكن أن تقلل من استجابة التطبيق.",
"image_thumbnail_title": "إعدادات الصورة المصغرة",
"job_concurrency": "تزامن {job}",
"job_created": "تم إنشاء الوظيفة",
@ -89,9 +88,6 @@
"jobs_delayed": "{jobCount, plural, other {# مؤجلة}}",
"jobs_failed": "{jobCount, plural, other {# فشلت}}",
"library_created": "تم إنشاء المكتبة: {library}",
"library_cron_expression": "تعبير Cron",
"library_cron_expression_description": "\"اضبط فواصلَ زمنِ الفحص باستخدام صيغة cron. للمزيد من المعلومات، يرجى الرجوع إلى <link>Crontab Guru</link>\"",
"library_cron_expression_presets": "إعدادات مسبقة لتعبير Cron",
"library_deleted": "تم حذف المكتبة",
"library_import_path_description": "حدد مجلدًا للاستيراد. سيتم فحص هذا المجلد، بما في ذلك المجلدات الفرعية، بحثًا عن الصور ومقاطع الفيديو.",
"library_scanning": "الفحص الدوري",
@ -215,7 +211,6 @@
"refreshing_all_libraries": "تحديث كافة المكتبات",
"registration": "تسجيل المدير",
"registration_description": "بما أنك أول مستخدم في النظام، سيتم تعيينك كمسؤول وستكون مسؤولًا عن المهام الإدارية، وسيتم إنشاء مستخدمين إضافيين بواسطتك.",
"removing_deleted_files": "إزالة الملفات غير المتصلة",
"repair_all": "إصلاح الكل",
"repair_matched_items": "تمت مطابقة {count, plural, one {# عنصر} other {# عناصر}}",
"repaired_items": "تم إصلاح {count, plural, one {# عنصر} other {# عناصر}}",
@ -223,12 +218,12 @@
"reset_settings_to_default": "إعادة ضبط الإعدادات إلى الوضع الافتراضي",
"reset_settings_to_recent_saved": "إعادة ضبط الإعدادات إلى الإعدادات المحفوظة مؤخرًا",
"scanning_library": "مسح المكتبة",
"scanning_library_for_changed_files": "فحص المكتبة لاكتشاف الملفات التي تم تغييرها",
"scanning_library_for_new_files": "فحص المكتبة للبحث عن ملفات جديدة",
"search_jobs": "البحث عن وظائف...",
"send_welcome_email": "إرسال بريد ترحيبي",
"server_external_domain_settings": "إسم النطاق الخارجي",
"server_external_domain_settings_description": "إسم النطاق لروابط المشاركة العامة، بما في ذلك http(s)://",
"server_public_users": "المستخدمون العامون",
"server_public_users_description": "يتم إدراج جميع المستخدمين (الاسم والبريد الإلكتروني) عند إضافة مستخدم إلى الألبومات المشتركة. عند تعطيل هذه الميزة، ستكون قائمة المستخدمين متاحة فقط لمستخدمي الإدارة.",
"server_settings": "إعدادات الخادم",
"server_settings_description": "إدارة إعدادات الخادم",
"server_welcome_message": "الرسالة الترحيبية",
@ -261,7 +256,6 @@
"these_files_matched_by_checksum": "تتم مطابقة هذه الملفات من خلال المجاميع الاختبارية الخاصة بهم",
"thumbnail_generation_job": "إنشاء الصور المصغرة",
"thumbnail_generation_job_description": "إنشاء صور مصغرة كبيرة وصغيرة وغير واضحة لكل أصل، بالإضافة إلى صور مصغرة لكل شخص",
"transcode_policy_description": "",
"transcoding_acceleration_api": "واجهة برمجة التطبيقات للتسريع",
"transcoding_acceleration_api_description": "الواجهة البرمجية التي ستتفاعل مع جهازك لتسريع التحويل. هذا الإعداد هو \"أفضل محاولة\": سيعود إلى التحويل البرمجي في حالة الفشل. قد لا يعمل VP9 اعتمادًا على عتادك.",
"transcoding_acceleration_nvenc": "NVENC (يتطلب GPU من NVIDIA)",
@ -313,8 +307,6 @@
"transcoding_threads_description": "تؤدي القيم الأعلى إلى تشفير أسرع، ولكنها تترك مساحة أقل للخادم لمعالجة المهام الأخرى أثناء النشاط. يجب ألا تزيد هذه القيمة عن عدد مراكز وحدة المعالجة المركزية. يزيد من الإستغلال إذا تم ضبطه على 0.",
"transcoding_tone_mapping": "رسم الخرائط النغمية",
"transcoding_tone_mapping_description": "تحاول الحفاظ على مظهر مقاطع الفيديو HDR عند تحويلها إلى SDR. يقدم كل خوارزمية تنازلات مختلفة بين اللون والتفاصيل والسطوع. Hable تحافظ على التفاصيل، Mobius تحافظ على الألوان، و Reinhard تحافظ على السطوع.",
"transcoding_tone_mapping_npl": "تحويل الصور من نطاق الإضاءة العالية",
"transcoding_tone_mapping_npl_description": "سيتم ضبط الألوان لتبدو طبيعية على شاشة بهذه السطوع. على عكس المتوقع، تزيد القيم الأقل من سطوع الفيديو والعكس بسبب تعويضها لسطوع الشاشة. قيمة 0 تضبط هذه القيمة تلقائيًا.",
"transcoding_transcode_policy": "سياسة الترميز",
"transcoding_transcode_policy_description": "سياسة تحديد متى يجب ترميز الفيديو. سيتم دائمًا ترميز مقاطع الفيديو HDR (ما لم يتم تعطيل الترميز).",
"transcoding_two_pass_encoding": "الترميز بمرورين",
@ -395,7 +387,6 @@
"archive_or_unarchive_photo": "أرشفة الصورة أو إلغاء أرشفتها",
"archive_size": "حجم الأرشيف",
"archive_size_description": "تكوين حجم الأرشيف للتنزيلات (بالجيجابايت)",
"archived": "",
"archived_count": "{count, plural, other {الأرشيف #}}",
"are_these_the_same_person": "هل هؤلاء هم نفس الشخص؟",
"are_you_sure_to_do_this": "هل انت متأكد من أنك تريد أن تفعل هذا؟",
@ -445,10 +436,6 @@
"cannot_merge_people": "لا يمكن دمج الأشخاص",
"cannot_undo_this_action": "لا يمكنك التراجع عن هذا الإجراء!",
"cannot_update_the_description": "لا يمكن تحديث الوصف",
"cant_apply_changes": "",
"cant_get_faces": "",
"cant_search_people": "",
"cant_search_places": "",
"change_date": "غيّر التاريخ",
"change_expiration_time": "تغيير وقت انتهاء الصلاحية",
"change_location": "غيّر الموقع",
@ -480,6 +467,7 @@
"confirm": "تأكيد",
"confirm_admin_password": "تأكيد كلمة مرور المسؤول",
"confirm_delete_shared_link": "هل أنت متأكد أنك تريد حذف هذا الرابط المشترك؟",
"confirm_keep_this_delete_others": "سيتم حذف جميع الأصول الأخرى في المجموعة باستثناء هذا الأصل. هل أنت متأكد من أنك تريد المتابعة؟",
"confirm_password": "تأكيد كلمة المرور",
"contain": "محتواة",
"context": "السياق",
@ -529,6 +517,7 @@
"delete_key": "حذف المفتاح",
"delete_library": "حذف المكتبة",
"delete_link": "حذف الرابط",
"delete_others": "حذف الأخرى",
"delete_shared_link": "حذف الرابط المشترك",
"delete_tag": "حذف العلامة",
"delete_tag_confirmation_prompt": "هل أنت متأكد أنك تريد حذف العلامة {tagName}؟",
@ -562,13 +551,6 @@
"duplicates": "التكرارات",
"duplicates_description": "قم بحل كل مجموعة من خلال الإشارة إلى التكرارات، إن وجدت",
"duration": "المدة",
"durations": {
"days": "",
"hours": "",
"minutes": "",
"months": "",
"years": ""
},
"edit": "تعديل",
"edit_album": "تعديل الألبوم",
"edit_avatar": "تعديل الصورة الشخصية",
@ -593,8 +575,6 @@
"editor_crop_tool_h2_aspect_ratios": "نسب العرض إلى الارتفاع",
"editor_crop_tool_h2_rotation": "التدوير",
"email": "البريد الإلكتروني",
"empty": "",
"empty_album": "",
"empty_trash": "أفرغ سلة المهملات",
"empty_trash_confirmation": "هل أنت متأكد أنك تريد إفراغ سلة المهملات؟ سيؤدي هذا إلى إزالة جميع المحتويات الموجودة في سلة المهملات بشكل نهائي من Immich.\nلا يمكنك التراجع عن هذا الإجراء!",
"enable": "تفعيل",
@ -628,6 +608,7 @@
"failed_to_create_shared_link": "فشل إنشاء رابط مشترك",
"failed_to_edit_shared_link": "فشل تعديل الرابط المشترك",
"failed_to_get_people": "فشل في الحصول على الناس",
"failed_to_keep_this_delete_others": "فشل في الاحتفاظ بهذا الأصل وحذف الأصول الأخرى",
"failed_to_load_asset": "فشل تحميل المحتوى",
"failed_to_load_assets": "فشل تحميل المحتويات",
"failed_to_load_people": "فشل تحميل الأشخاص",
@ -655,8 +636,6 @@
"unable_to_change_location": "غير قادر على تغيير الموقع",
"unable_to_change_password": "غير قادر على تغيير كلمة المرور",
"unable_to_change_visibility": "غير قادر على تغيير الظهور لـ {count, plural, one {# شخص} other {# أشخاص}}",
"unable_to_check_item": "",
"unable_to_check_items": "",
"unable_to_complete_oauth_login": "غير قادر على إكمال تسجيل الدخول عبر OAuth",
"unable_to_connect": "غير قادر على الإتصال",
"unable_to_connect_to_server": "غير قادر على الإتصال بالسيرفر",
@ -697,12 +676,10 @@
"unable_to_remove_album_users": "تعذر إزالة المستخدمين من الألبوم",
"unable_to_remove_api_key": "تعذر إزالة مفتاح API",
"unable_to_remove_assets_from_shared_link": "غير قادر على إزالة المحتويات من الرابط المشترك",
"unable_to_remove_comment": "",
"unable_to_remove_deleted_assets": "غير قادر على إزالة الملفات غير المتصلة",
"unable_to_remove_library": "غير قادر على إزالة المكتبة",
"unable_to_remove_partner": "غير قادر على إزالة الشريك",
"unable_to_remove_reaction": "غير قادر على إزالة رد الفعل",
"unable_to_remove_user": "",
"unable_to_repair_items": "غير قادر على إصلاح العناصر",
"unable_to_reset_password": "غير قادر على إعادة تعيين كلمة المرور",
"unable_to_resolve_duplicate": "غير قادر على حل التكرارات",
@ -732,10 +709,6 @@
"unable_to_update_user": "غير قادر على تحديث المستخدم",
"unable_to_upload_file": "تعذر رفع الملف"
},
"every_day_at_onepm": "",
"every_night_at_midnight": "",
"every_night_at_twoam": "",
"every_six_hours": "",
"exif": "Exif (صيغة ملف صوري قابل للتبادل)",
"exit_slideshow": "خروج من العرض التقديمي",
"expand_all": "توسيع الكل",
@ -750,33 +723,27 @@
"external": "خارجي",
"external_libraries": "المكتبات الخارجية",
"face_unassigned": "غير معين",
"failed_to_get_people": "",
"favorite": "مفضل",
"favorite_or_unfavorite_photo": "تفضيل أو إلغاء تفضيل الصورة",
"favorites": "المفضلة",
"feature": "",
"feature_photo_updated": "تم تحديث الصورة المميزة",
"featurecollection": "",
"features": "الميزات",
"features_setting_description": "إدارة ميزات التطبيق",
"file_name": "إسم الملف",
"file_name_or_extension": "اسم الملف أو امتداده",
"filename": "اسم الملف",
"files": "",
"filetype": "نوع الملف",
"filter_people": "تصفية الاشخاص",
"find_them_fast": "يمكنك العثور عليها بسرعة بالاسم من خلال البحث",
"fix_incorrect_match": "إصلاح المطابقة غير الصحيحة",
"folders": "المجلدات",
"folders_feature_description": "تصفح عرض المجلد للصور ومقاطع الفيديو الموجودة على نظام الملفات",
"force_re-scan_library_files": "فرض إعادة فحص جميع ملفات المكتبة",
"forward": "إلى الأمام",
"general": "عام",
"get_help": "الحصول على المساعدة",
"getting_started": "البدء",
"go_back": "الرجوع للخلف",
"go_to_search": "اذهب إلى البحث",
"go_to_share_page": "انتقل إلى صفحة المشاركة",
"group_albums_by": "تجميع الألبومات حسب...",
"group_no": "بدون تجميع",
"group_owner": "تجميع حسب المالك",
@ -802,10 +769,6 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {city}، {country} مع {person1} و{person2} في {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {city}، {country} مع {person1}، {person2}، و{person3} في {date}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {city}, {country} with {person1}, {person2}, مع {additionalCount, number} آخرين في {date}",
"image_alt_text_people": "{count, plural, =1 {مع {person1}} =2 {مع {person1} و {person2}} =3 {مع {person1} و {person2} و {person3}} other {مع {person1} و {person2} و {others, number} آخرين}}",
"image_alt_text_place": "في {city}, {country}",
"image_taken": "{isVideo, select, true {تم التقاط الفيديو} other {تم التقاط الصورة}}",
"img": "",
"immich_logo": "شعار immich",
"immich_web_interface": "واجهة ويب immich",
"import_from_json": "استيراد من JSON",
@ -826,10 +789,11 @@
"invite_people": "دعوة الأشخاص",
"invite_to_album": "دعوة إلى الألبوم",
"items_count": "{count, plural, one {# عنصر} other {# عناصر}}",
"job_settings_description": "",
"jobs": "الوظائف",
"keep": "احتفظ",
"keep_all": "احتفظ بالكل",
"keep_this_delete_others": "احتفظ بهذا، واحذف الآخرين",
"kept_this_deleted_others": "تم الاحتفاظ بهذا الأصل وحذف {count, plural, one {# asset} other {# assets}}",
"keyboard_shortcuts": "اختصارات لوحة المفاتيح",
"language": "اللغة",
"language_setting_description": "اختر لغتك المفضلة",
@ -841,31 +805,6 @@
"level": "المستوى",
"library": "مكتبة",
"library_options": "خيارات المكتبة",
"license_account_info": "حسابك مرخص",
"license_activated_subtitle": "شكرا بدعمك لـ Immich وبرمجيات المصدر المفتوح",
"license_activated_title": "رخصتك نُشطت بنجاح",
"license_button_activate": "تنشيط",
"license_button_buy": "شراء",
"license_button_buy_license": "اشتر رخصة",
"license_button_select": "إختر",
"license_failed_activation": "فشل في تفعيل الترخيص. يرجى التحقق من بريدك الإلكتروني للحصول على مفتاح الترخيص الصحيح!",
"license_individual_description_1": "رخصة واحدة لكل مستخدم على أي خادم",
"license_individual_title": "رخصة فردية",
"license_info_licensed": "مُرَخص",
"license_info_unlicensed": "غير مُرَخص",
"license_input_suggestion": "لديك رخصة؟ أدخِل الرمز بالأسفل",
"license_license_subtitle": "اشتر رخصةً لدعم Immich",
"license_license_title": "الرخصة",
"license_lifetime_description": "رخصة مدى الحياة",
"license_per_server": "لكل خادم",
"license_per_user": "لكل مستحدم",
"license_server_description_1": "رخصة واحدة لكل خادم",
"license_server_description_2": "رخصة لكل المستخدمين على الخادم",
"license_server_title": "رخصة خادم",
"license_trial_info_1": "أنت تستخدم نسخةً غير مرخصة ل Immich",
"license_trial_info_2": "لقد استخدمتَ Immich تقريبا لمدة",
"license_trial_info_3": "{accountAge, plural, one {# يوم} other {# أيام}}",
"license_trial_info_4": "يُرجى التفكير في شراء رخصة لدعم التطوير المستمر للخدمة",
"light": "المضيئ",
"like_deleted": "تم حذف الإعجاب",
"link_motion_video": "رابط فيديو الحركة",
@ -887,6 +826,7 @@
"look": "الشكل",
"loop_videos": "تكرار مقاطع الفيديو",
"loop_videos_description": "فَعْل لتكرار مقطع فيديو تلقائيًا في عارض التفاصيل.",
"main_branch_warning": "أنت تستخدم إصداراً تطويرياً؛ ونحن نوصي بشدة باستخدام إصدار النشر!",
"make": "صنع",
"manage_shared_links": "إدارة الروابط المشتركة",
"manage_sharing_with_partners": "إدارة المشاركة مع الشركاء",
@ -969,7 +909,6 @@
"onboarding_welcome_user": "مرحبا، {user}",
"online": "متصل",
"only_favorites": "المفضلة فقط",
"only_refreshes_modified_files": "تحديث الملفات المعدلة فقط",
"open_in_map_view": "فتح في عرض الخريطة",
"open_in_openstreetmap": "فتح في OpenStreetMap",
"open_the_search_filters": "افتح مرشحات البحث",
@ -1007,7 +946,6 @@
"people_edits_count": "تم تعديل {count, plural, one {# شخص } other {# أشخاص }}",
"people_feature_description": "تصفح الصور ومقاطع الفيديو المجمعة حسب الأشخاص",
"people_sidebar_description": "عرض رابط للأشخاص في الشريط الجانبي",
"perform_library_tasks": "",
"permanent_deletion_warning": "تحذير الحذف الدائم",
"permanent_deletion_warning_setting_description": "إظهار تحذير عند حذف المحتويات نهائيًا",
"permanently_delete": "حذف بشكل دائم",
@ -1029,7 +967,6 @@
"play_memories": "تشغيل الذكريات",
"play_motion_photo": "تشغيل الصور المتحركة",
"play_or_pause_video": "تشغيل الفيديو أو إيقافه مؤقتًا",
"point": "",
"port": "المنفذ",
"preset": "الإعداد المسبق",
"preview": "معاينة",
@ -1074,12 +1011,10 @@
"purchase_server_description_2": "حالة الداعم",
"purchase_server_title": "الخادم",
"purchase_settings_server_activated": "يتم إدارة مفتاح منتج الخادم من قبل مدير النظام",
"range": "",
"rating": "تقييم نجمي",
"rating_clear": "مسح التقييم",
"rating_count": "{count, plural, one {# نجمة} other {# نجوم}}",
"rating_description": "‫‌اعرض تقييم EXIF في لوحة المعلومات",
"raw": "",
"reaction_options": "خيارات رد الفعل",
"read_changelog": "قراءة سجل التغيير",
"reassign": "إعادة التعيين",
@ -1124,7 +1059,6 @@
"reset": "إعادة ضبط",
"reset_password": "إعادة تعيين كلمة المرور",
"reset_people_visibility": "إعادة ضبط ظهور الأشخاص",
"reset_settings_to_default": "",
"reset_to_default": "إعادة التعيين إلى الافتراضي",
"resolve_duplicates": "معالجة النسخ المكررة",
"resolved_all_duplicates": "تم حل جميع التكرارات",
@ -1144,9 +1078,7 @@
"saved_settings": "تم حفظ الإعدادات",
"say_something": "قل شيئًا",
"scan_all_libraries": "فحص كل المكتبات",
"scan_all_library_files": "إعادة فحص كافة ملفات المكتبة",
"scan_library": "مسح",
"scan_new_library_files": "فحص ملفات المكتبة الجديدة",
"scan_settings": "إعدادات الفحص",
"scanning_for_album": "جارٍ الفحص عن ألبوم...",
"search": "بحث",
@ -1189,7 +1121,6 @@
"selected_count": "{count, plural, other {# محددة }}",
"send_message": "أرسل رسالة",
"send_welcome_email": "أرسل بريدًا إلكترونيًا ترحيبيًا",
"server": "الخادم",
"server_offline": "الخادم غير متصل",
"server_online": "الخادم متصل",
"server_stats": "إحصائيات الخادم",
@ -1294,6 +1225,7 @@
"they_will_be_merged_together": "سيتم دمجهم معًا",
"third_party_resources": "موارد الطرف الثالث",
"time_based_memories": "ذكريات استنادًا للوقت",
"timeline": "الخط الزمني",
"timezone": "المنطقة الزمنية",
"to_archive": "أرشفة",
"to_change_password": "تغيير كلمة المرور",
@ -1303,7 +1235,7 @@
"to_trash": "حذف",
"toggle_settings": "الإعدادات",
"toggle_theme": "تبديل المظهر الداكن",
"toggle_visibility": "تبديل الرؤية",
"total": "الإجمالي",
"total_usage": "الاستخدام الإجمالي",
"trash": "المهملات",
"trash_all": "نقل الكل إلى سلة المهملات",
@ -1313,12 +1245,10 @@
"trashed_items_will_be_permanently_deleted_after": "سيتم حذفُ العناصر المحذوفة نِهائيًا بعد {days, plural, one {# يوم} other {# أيام }}.",
"type": "النوع",
"unarchive": "أخرج من الأرشيف",
"unarchived": "",
"unarchived_count": "{count, plural, other {غير مؤرشفة #}}",
"unfavorite": "أزل التفضيل",
"unhide_person": "أظهر الشخص",
"unknown": "غير معروف",
"unknown_album": "",
"unknown_year": "سنة غير معروفة",
"unlimited": "غير محدود",
"unlink_motion_video": "إلغاء ربط فيديو الحركة",
@ -1350,13 +1280,13 @@
"use_custom_date_range": "استخدم النطاق الزمني المخصص بدلاً من ذلك",
"user": "مستخدم",
"user_id": "معرف المستخدم",
"user_license_settings": "رخصة",
"user_license_settings_description": "ادر رخصتك",
"user_liked": "قام {user} بالإعجاب {type, select, photo {بهذه الصورة} video {بهذا الفيديو} asset {بهذا المحتوى} other {بها}}",
"user_purchase_settings": "الشراء",
"user_purchase_settings_description": "إدارة عملية الشراء الخاصة بك",
"user_role_set": "قم بتعيين {user} كـ {role}",
"user_usage_detail": "تفاصيل استخدام المستخدم",
"user_usage_stats": "إحصائيات استخدام الحساب",
"user_usage_stats_description": "عرض إحصائيات استخدام الحساب",
"username": "اسم المستخدم",
"users": "المستخدمين",
"utilities": "أدوات",
@ -1364,7 +1294,7 @@
"variables": "المتغيرات",
"version": "الإصدار",
"version_announcement_closing": "صديقك، أليكس",
"version_announcement_message": "مرحباً يا صديقي، هنالك نسخة جديدة من التطبيق. خذ وقتك لزيارة <link>ملاحظات الإصدار</link> والتأكد من أن ملف <code>docker-compose.yml</code> وإعداد <code>.env</code> مُحدّثين لتجنب أي إعدادات خاطئة، خاصةً إذا كنت تستخدم WatchTower أو أي آلية تقوم بتحديث التطبيق تلقائياً.",
"version_announcement_message": "مرحبًا! يتوفر إصدار جديد من Immich. يُرجى تخصيص بعض الوقت لقراءة <link>ملاحظات الإصدار</link> للتأكد من تحديث إعداداتك لمنع أي أخطاء في التكوين، خاصة إذا كنت تستخدم WatchTower أو أي آلية تتولى تحديث مثيل Immich الخاص بك تلقائيًا.",
"version_history": "تاريخ الإصدار",
"version_history_item": "تم تثبيت {version} في {date}",
"video": "فيديو",
@ -1378,10 +1308,10 @@
"view_all_users": "عرض كافة المستخدمين",
"view_in_timeline": "عرض في الجدول الزمني",
"view_links": "عرض الروابط",
"view_name": "عرض",
"view_next_asset": "عرض المحتوى التالي",
"view_previous_asset": "عرض المحتوى السابق",
"view_stack": "عرض التكديس",
"viewer": "",
"visibility_changed": "الرؤية تغيرت لـ {count, plural, one {شخص واحد} other {# عدة أشخاص}}",
"waiting": "في الانتظار",
"warning": "تحذير",

View file

@ -1,8 +1,10 @@
{
"about": "Haqqında",
"about": "Yenilə",
"account": "Hesab",
"account_settings": "Hesab parametrləri",
"acknowledge": "Təsdiq et",
"action": "Əməliyyat",
"actions": "Əməliyyatlar",
"active": "Aktiv",
"activity": "Fəaliyyət",
"add": "Əlavə et",
@ -10,9 +12,12 @@
"add_a_location": "Məkan əlavə et",
"add_a_name": "Ad əlavə et",
"add_a_title": "Başlıq əlavə et",
"add_exclusion_pattern": "İstisna nümunəsi əlavə et",
"add_import_path": "Import yolunu əlavə et",
"add_location": "Məkanı əlavə et",
"add_more_users": "Daha çox istifadəçi əlavə et",
"add_partner": "Partnyor əlavə et",
"add_path": "Yol əlavə et",
"add_photos": "Şəkilləri əlavə et",
"add_to": "... əlavə et",
"add_to_album": "Albom əlavə et",
@ -26,7 +31,11 @@
"authentication_settings_disable_all": "Bütün giriş etmə metodlarını söndürmək istədiyinizdən əminsinizmi? Giriş etmə funksiyası tamamilə söndürüləcəkdir.",
"authentication_settings_reenable": "Yenidən aktiv etmək üçün <link> Server Əmri</link> -ni istifadə edin.",
"background_task_job": "Arxa plan tapşırıqları",
"backup_database_enable_description": "Verilənlər bazasının ehtiyat nüsxələrini aktiv et",
"backup_settings": "Ehtiyat Nüsxə Parametrləri",
"backup_settings_description": "Verilənlər bazasının ehtiyat nüsxə parametrlərini idarə et",
"check_all": "Hamısını yoxla",
"config_set_by_file": "Konfiqurasiya hal-hazırda konfiqurasiya faylı ilə təyin olunub",
"confirm_delete_library": "{library} kitabxanasını silmək istədiyinizdən əminmisiniz?",
"confirm_email_below": "Təsdiqləmək üçün aşağıya {email} yazın",
"confirm_user_password_reset": "{user} adlı istifadəçinin şifrəsini sıfırlamaq istədiyinizdən əminmisiniz?",
@ -54,9 +63,6 @@
"jobs_delayed": "{jobCount, plural, other {# gecikməli}}",
"jobs_failed": "{jobCount, plural, other {# uğursuz}}",
"library_created": "{library} kitabxanası yaradıldı",
"library_cron_expression": "Kron zamanlaması",
"library_cron_expression_description": "Kron zamanlama formatından istifadə edərək skan intervalının təyin edin. Daha çox məlumat üçün <link>Crontab Guru</link>",
"library_cron_expression_presets": "Kron zamanlamasının ilkin parametrləri",
"library_deleted": "Kitabxana silindi",
"library_import_path_description": "İdxal olunacaq qovluöu seçin. Bu qovluq, alt qovluqlar daxil olmaqla şəkil və videolar üçün skan ediləcəkdir.",
"library_scanning": "Periodik skan",

View file

@ -1 +1,115 @@
{}
{
"about": "Аб",
"account": "Уліковы запіс",
"account_settings": "Налады ўліковага запісу",
"acknowledge": "Пацвердзіць",
"action": "Дзеянне",
"actions": "Дзеянні",
"active": "Актыўны",
"activity": "Актыўнасць",
"activity_changed": "Актыўнасць {enabled, select, true {уключана} other {адключана}}",
"add": "Дадаць",
"add_a_description": "Дадаць апісанне",
"add_a_location": "Дадаць месца",
"add_a_name": "Дадаць імя",
"add_a_title": "Дадаць загаловак",
"add_exclusion_pattern": "Дадаць шаблон выключэння",
"add_import_path": "Дадаць шлях імпарту",
"add_location": "Дадайце месца",
"add_more_users": "Дадаць больш карыстальнікаў",
"add_partner": "Дадаць партнёра",
"add_path": "Дадаць шлях",
"add_photos": "Дадаць фота",
"add_to": "Дадаць у...",
"add_to_album": "Дадаць у альбом",
"add_to_shared_album": "Дадаць у агульны альбом",
"add_url": "Дадаць URL",
"added_to_archive": "Дададзена ў архіў",
"added_to_favorites": "Дададзена ў абраныя",
"added_to_favorites_count": "Дададзена {count, number} да абранага",
"admin": {
"add_exclusion_pattern_description": "Дадайце шаблоны выключэнняў. Падтрымліваецца выкарыстанне сімвалаў * , ** і ?. Каб ігнараваць усе файлы ў любой дырэкторыі з назвай \"Raw\", выкарыстоўвайце \"**/Raw/**\". Каб ігнараваць усе файлы, якія заканчваюцца на \".tif\", выкарыстоўвайце \"**/.tif\". Каб ігнараваць абсолютны шлях, выкарыстоўвайце \"/path/to/ignore/**\".",
"asset_offline_description": "Гэты знешні бібліятэчны актыў больш не знойдзены на дыску і быў перамешчаны ў сметніцу. Калі файл быў перамешчаны ў межах бібліятэкі, праверце вашу хроніку для новага адпаведнага актыва. Каб аднавіць гэты актыў, пераканайцеся, што шлях да файла ніжэй даступны для Immich і адскануйце бібліятэку.",
"authentication_settings": "Налады праверкі сапраўднасці",
"authentication_settings_description": "Кіраванне паролямі, OAuth, і іншыя налады праверкі сапраўднасці",
"authentication_settings_disable_all": "Вы ўпэўнены, што жадаеце адключыць усе спосабы логіну? Логін будзе цалкам адключаны.",
"authentication_settings_reenable": "Каб зноў уключыць, выкарыстайце <link>Каманду сервера</link>.",
"background_task_job": "Фонавыя заданні",
"backup_database": "Рэзервовая копія базы даных",
"backup_database_enable_description": "Уключыць рэзерваванне базы даных",
"backup_keep_last_amount": "Колькасць папярэдніх рэзервовых копій для захавання",
"backup_settings": "Налады рэзервовага капіявання",
"backup_settings_description": "Кіраванне наладкамі рэзервовага капіявання базы даных",
"check_all": "Праверыць усе",
"cleared_jobs": "Ачышчаны заданні для: {job}",
"config_set_by_file": "Канфігурацыя ў зараз усталявана праз файл канфігурацыі",
"confirm_delete_library": "Вы ўпэўнены што жадаеце выдаліць {library} бібліятэку?",
"confirm_delete_library_assets": "Вы ўпэўнены, што хочаце выдаліць гэтую бібліятэку? Гэта прывядзе да выдалення {count, plural, one {# актыву} other {усіх # актываў}}, якія змяшчаюцца ў Immich, і гэта дзеянне немагчыма будзе адмяніць. Файлы застануцца на дыску.",
"confirm_email_below": "Каб пацвердзіць, увядзіце \"{email}\" ніжэй",
"confirm_reprocess_all_faces": "Вы ўпэўнены, што хочаце пераапрацаваць усе твары? Гэта таксама прывядзе да выдалення імя людзей.",
"confirm_user_password_reset": "Вы ўпэўнены ў тым, што жадаеце скінуць пароль {user}?",
"create_job": "Стварыць заданне",
"cron_expression": "Выраз Cron",
"cron_expression_description": "Усталюйце інтэрвал сканавання, выкарыстоўваючы фармат cron. Для атрымання дадатковай інфармацыі, калі ласка, звярніцеся, напрыклад, да <link>Crontab Guru</link>",
"cron_expression_presets": "Прадустановкі выразаў Cron",
"disable_login": "Адключыць уваход",
"duplicate_detection_job_description": "Запусціць машыннае навучанне на актывах для выяўлення падобных выяў. Залежыць ад Smart Search",
"exclusion_pattern_description": "Шаблоны выключэння дазваляюць ігнараваць файлы і папкі пры сканаванні вашай бібліятэкі. Гэта карысна, калі ў вас ёсць папкі, якія змяшчаюць файлы, якія вы не хочаце імпартаваць, напрыклад, файлы RAW.",
"external_library_created_at": "Знешняя бібліятэка (створана {date})",
"external_library_management": "Кіраванне знешняй бібліятэкай",
"face_detection": "Выяўленне твараў",
"force_delete_user_warning": "ПАПЯРЭДЖАННЕ: Гэта дзеянне неадкладна выдаліць карыстальніка і ўсе аб'екты. Гэта дзеянне не можа быць адроблена і файлы немагчыма будзе аднавіць.",
"image_format": "Фармат",
"image_preview_title": "Налады папярэдняга прагляду",
"image_quality": "Якасць",
"image_resolution": "Раздзяляльнасць",
"image_settings": "Налады відарыса",
"image_settings_description": "Кіруйце якасцю і раздзяляльнасцю сгенерыраваных відарысаў"
},
"timeline": "Хроніка",
"total": "Усяго",
"user": "Карыстальнік",
"user_id": "ID карыстальніка",
"user_purchase_settings": "Купля",
"user_purchase_settings_description": "Кіруйце пакупкамі",
"user_role_set": "Прызначыць {user} як {role}",
"user_usage_detail": "Падрабязнасці выкарыстання карыстальнікам",
"user_usage_stats": "Статыстыка карыстання ўліковага запісу",
"user_usage_stats_description": "Прагледзець статыстыку карыстання ўліковага запісу",
"username": "Імя карыстальніка",
"users": "Карыстальнікі",
"utilities": "Утыліты",
"validate": "Праверыць",
"variables": "Пераменныя",
"version": "Версія",
"version_announcement_closing": "Твой сябар, Алекс",
"version_announcement_message": "Вітаем! Даступная новая версія Immich. Калі ласка, знайдзіце час, каб прачытаць <link>нататкі да выпуску</link>, каб пераканацца, што ваша налада актуальная і пазбегнуць магчымых памылак канфігурацыі, асабліва калі вы карыстаецеся WatchTower або іншымі механізмамі, якія аўтаматычна абнаўляюць вашу інстанцыю Immich.",
"version_history": "Гісторыя версій",
"version_history_item": "Усталявана версія {version} на {date}",
"video": "Відэа",
"video_hover_setting": "Прайграванне мініяцюры відэа пры навядзенні курсора",
"video_hover_setting_description": "Прайграванне мініяцюры відэа пры навядзенні курсора на элемент. Нават калі функцыя адключана, прайграванне можна пачаць, навёўшы курсор на значок прайгравання.",
"videos": "Відэа",
"videos_count": "{count, plural, one {# відэа} астатнія {# відэа}}",
"view": "Прагляд",
"view_album": "Праглядзець альбом",
"view_all": "Праглядзець усё",
"view_all_users": "Праглядзець усех карыстальнікаў",
"view_in_timeline": "Паглядзець хроніку",
"view_links": "Праглядзець спасылкі",
"view_name": "Прагледзець",
"view_next_asset": "Паказаць наступны аб'ект",
"view_previous_asset": "Праглядзець папярэдні аб'ект",
"view_stack": "Прагляд стэка",
"visibility_changed": "Відзімасць змянілася для {count, plural, one {# чалавек(-аў)} астатніх {# чалавек}}",
"waiting": "Чакаюць",
"warning": "Папярэджанне",
"week": "Тыдзень",
"welcome": "Вітаем",
"welcome_to_immich": "Вітаем у Immich",
"year": "Год",
"years_ago": "{years, plural, one {# год} other {# гадоў}} таму",
"yes": "Так",
"you_dont_have_any_shared_links": "У вас няма абагуленых спасылак",
"zoom_image": "Павялічыць відарыс"
}

View file

@ -23,17 +23,23 @@
"add_to": "Добави към...",
"add_to_album": "Добави към албум",
"add_to_shared_album": "Добави към споделен албум",
"add_url": "Добави URL",
"added_to_archive": "Добавено към архива",
"added_to_favorites": "Добавени към любимите ви",
"added_to_favorites_count": "Добавени {count, number} към любими",
"admin": {
"add_exclusion_pattern_description": "Добави модели за изключване. Поддържа се \"globbing\" с помощта на *, ** и ?. За да игнорирате всички файлове в директория с име \"Raw\", използвайте \"**/Raw/**\". За да игнорирате всички файлове, завършващи на \".tif\", използвайте \"**/*.tif\". За да игнорирате абсолютен път, използвайте \"/path/to/ignore/**\".",
"asset_offline_description": "Този външен библиотечен елемент не може да бъде открит на диска и е преместен в кошчето за боклук. Ако файлът е преместен в библиотеката, проверете вашата история за нов съответстващ елемент. За да възстановите елемента, моля проверете дали файловият път отдолу може да бъде достъпен от Immich и сканирайте библиотеката.",
"asset_offline_description": "Този външен библиотечен елемент не може да бъде открит на диска и е преместен в кошчето за боклук. Ако файлът е преместен в библиотеката, проверете вашата история за нов съответстващ елемент. За да възстановите елемента, моля проверете дали файловият път отдолу може да бъде достъпен от Immich и сканирайте библиотеката.",
"authentication_settings": "Настройки за удостоверяване",
"authentication_settings_description": "Управление на парола, OAuth и други настройки за удостоверяване",
"authentication_settings_disable_all": "Сигурни ли сте, че искате да деактивирате всички методи за вписване? Вписването ще бъде напълно деактивирано.",
"authentication_settings_reenable": "За да реактивирате, изполвайте <link>Server Command</link>.",
"background_task_job": "Процеси на заден фон",
"backup_database": "Резервна База данни",
"backup_database_enable_description": "Разрешаване на резервни копия на базата данни",
"backup_keep_last_amount": "Брой резервни копия за запазване",
"backup_settings": "Настройка на резервни копия",
"backup_settings_description": "Управление на настройките за резервно копие на базата данни",
"check_all": "Провери всичко",
"cleared_jobs": "Изчистени задачи от тип: {job}",
"config_set_by_file": "Конфигурацията е зададена от файл",
@ -43,6 +49,9 @@
"confirm_reprocess_all_faces": "Сигурни ли сте, че искате да се обработят лицата отново? Това ще изчисти всички именувани хора.",
"confirm_user_password_reset": "Сигурни ли сте, че искате да нулирате паролата на {user}?",
"create_job": "Създайте задача",
"cron_expression": "Cron израз",
"cron_expression_description": "Настрой интервала на сканиране използвайки cron формата. За повече информация <link>Crontab Guru</link>",
"cron_expression_presets": "Примерни Cron изрази",
"disable_login": "Изключете вписването",
"duplicate_detection_job_description": "Стартиране машинно обучение на ресурси, за откриване на подобни изображения. Разчита на Интелигентно Търсене",
"exclusion_pattern_description": "Модели за изключване позволяват да игнорирате файлове и папки, когато сканирате вашата библиотека. Това е потребно, ако имате папки, които съдържат файлове, които не искате да импортирате. Примерно - RAW файлове.",
@ -54,21 +63,23 @@
"failed_job_command": "Командата {command} е неуспешна за задача: {job}",
"force_delete_user_warning": "ВНИМАНИЕ: Това веднага ще изтрие потребителя и всичките му ресурси. Действието е необратимо и файловете не могат да бъдат възстановени.",
"forcing_refresh_library_files": "Принуждаване обновяване на всички файлове в библиотеката",
"image_format": "Формат",
"image_format_description": "WebP създава по-малки файлове от JPEG, но ги кодира по-бавно.",
"image_prefer_embedded_preview": "Предпочитане на вградените прегледи",
"image_prefer_embedded_preview_setting_description": "Използване на вградените прегледи в RAW снимките като вход за обработка на изображенията, когато има такива. Това може да доведе до по-точни цветове за някои изображения, но качеството на прегледите зависи от камерата и изображението може да има повече компресионни артефакти.",
"image_prefer_wide_gamut": "Предпочитане на широка гама",
"image_prefer_wide_gamut_setting_description": "Използване на Display P3 за миниатюри. Това запазва по-добре жизнеността на изображенията с широки цветови пространства, но изображенията може да изглеждат по различен начин на стари устройства със стара версия на браузъра. sRGB изображенията се запазват като sRGB, за да се избегнат цветови промени.",
"image_preview_format": "Формат на прегледите",
"image_preview_resolution": "Резолюция на прегледите",
"image_preview_resolution_description": "Използва се при разглеждане на единична снимка и за машинно обучение. По-високите резолюции могат да запазят повече детайли, но отнемат повече време за кодиране, имат по-големи размери на файловете и могат да намалят отзивчивостта на приложението.",
"image_preview_description": "Среден размер на изображението с премахнати метаданни, използвано при преглед на един актив и за машинно обучение",
"image_preview_quality_description": "Качество на предварителния преглед от 1 до 100. По-високата стойност е по-добра, но води до по-големи файлове и може да намали бързодействието на приложението. Задаването на ниска стойност може да повлияе на качеството на машинното обучение.",
"image_preview_title": "Настойки на прегледа",
"image_quality": "Качество",
"image_quality_description": "Качество на изображението от 1-100. По-голяма стойност води до по-добро качество, но създава по-големи файлове. Тази настройка засяга изображенията от тип преглед и миниатюра.",
"image_resolution": "Резолюция",
"image_resolution_description": "По-високите резолюции могат да запазят повече детайли, но изискват повече време за кодиране, имат по-големи размери на файловете и могат да намалят бързодействието на приложението.",
"image_settings": "Настройки за изображенията",
"image_settings_description": "Управляване качеството и резолюцията на създадените изображения",
"image_thumbnail_format": "Формат на миниатюрните изображения",
"image_thumbnail_resolution": "Резолюция на миниатюрните изображения",
"image_thumbnail_resolution_description": "Използва се при разглеждане на групи от снимки (основна времева линия, изглед на албум и др.). По-високите резолюции могат да запазят повече детайли, но отнемат повече време за кодиране, имат по-големи размери на файловете и могат да намалят отзивчивостта на приложението.",
"image_thumbnail_description": "Малка миниатюра с премахнати метаданни, използвана при преглед на групи снимки, като основния екран",
"image_thumbnail_quality_description": "Качество на миниатюрата от 1 до 100. По-високата стойност е по-добра, но води до по-големи файлове и може да намали бързодействието на приложението.",
"image_thumbnail_title": "Настройки на миниатюрите",
"job_concurrency": "Паралелност на {job}",
"job_created": "Задачата е създадена",
"job_not_concurrency_safe": "Тази задача не е безопасна за паралелно изпълнение.",
@ -78,9 +89,6 @@
"jobs_delayed": "{jobCount, plural, other {# delayed}}",
"jobs_failed": "{jobCount, plural, other {# failed}}",
"library_created": "Създадена библиотека: {library}",
"library_cron_expression": "Cron израз",
"library_cron_expression_description": "Задайте интервала за сканиране чрез cron интервал. За повече информация, вижте например <link>Crontab Guru</link>",
"library_cron_expression_presets": "Предварителни настройки на Cron израза",
"library_deleted": "Библиотека е изтрита",
"library_import_path_description": "Посочете папка за импортиране. Тази папка, включително подпапките, ще бъдат сканирани за изображения и видеоклипове.",
"library_scanning": "Периодично сканиране",
@ -123,7 +131,7 @@
"machine_learning_smart_search_description": "Семантично търсене на изображения с помощта на CLIP вграждания",
"machine_learning_smart_search_enabled": "Включване на Интелигентно Търсене",
"machine_learning_smart_search_enabled_description": "Ако е деактивирано, изображенията няма да бъдат кодирани за Интелигентно Търсене.",
"machine_learning_url_description": "URL адрес на сървъра за машинно обучение",
"machine_learning_url_description": "URL на сървъра за машинно обучение. Ако са предоставени повече от един URL, всеки сървър ще бъде опитан един по един, докато един не отговори успешно, в реда от първия до последния",
"manage_concurrency": "Управление на паралелност",
"manage_log_settings": "Управление на настройките на записване",
"map_dark_style": "Тъмен стил",
@ -199,11 +207,11 @@
"password_settings": "Вписване с парола",
"password_settings_description": "Управление на настройките за влизане с парола",
"paths_validated_successfully": "Всички пътища са валидирани успешно",
"person_cleanup_job": "Почистване на лица",
"quota_size_gib": "Размер на квотата (GiB)",
"refreshing_all_libraries": "Опресняване на всички библиотеки",
"registration": "Администраторска регистрация",
"registration_description": "Тъй като сте първият потребител в системата, ще бъдете назначен като администратор и ще отговаряте за административните задачи, а допълнителните потребители ще бъдат създадени от вас.",
"removing_deleted_files": "Премахване на офлайн файлове",
"repair_all": "Поправяне на всичко",
"repair_matched_items": "{count, plural, one {Съвпадащ елемент (#)} other {Съвпадащи елементи (#)}}",
"repaired_items": "{count, plural, one {Поправен елемент (#)} other {Поправени елементи (#)}}",
@ -211,12 +219,12 @@
"reset_settings_to_default": "Възстановяване на настройките по подразбиране",
"reset_settings_to_recent_saved": "Възстановяване на настройките до последните запазени настройки",
"scanning_library": "Сканиране на библиотеката",
"scanning_library_for_changed_files": "Сканиране на библиотеката за променени файлове",
"scanning_library_for_new_files": "Сканиране на библиотеката за нови файлове",
"search_jobs": "Търсене на задачи...",
"send_welcome_email": "Изпращане на имейл за добре дошли",
"server_external_domain_settings": "Външен домейн",
"server_external_domain_settings_description": "Домейн за публични споделени връзки, включително http(s)://",
"server_public_users": "Публични потребители",
"server_public_users_description": "Всички потребители (име и имейл) са изброени при добавяне на потребител в споделени албуми. Когато е деактивирано, списъкът с потребители ще бъде достъпен само за администраторите.",
"server_settings": "Настройки на сървъра",
"server_settings_description": "Управление на настройките на сървъра",
"server_welcome_message": "Поздравително съобщение",
@ -241,6 +249,17 @@
"storage_template_settings_description": "Управление на структурата на папките и името на файла за качване",
"storage_template_user_label": "<code>{label}</code> е етикетът за съхранение на потребителя",
"system_settings": "Системни настройки",
"tag_cleanup_job": "Почистване на тагове",
"template_email_available_tags": "Можете да използвате следните променливи в шаблона си: {tags}",
"template_email_if_empty": "Ако шаблонът е празен, ще се използва имейлът по подразбиране.",
"template_email_invite_album": "Шаблон за покана за албум",
"template_email_preview": "Преглед",
"template_email_settings": "Шаблони за имейли",
"template_email_settings_description": "Управление на шаблони за имейл известия",
"template_email_update_album": "Шаблон за актуализация на албум",
"template_email_welcome": "Шаблон за приветстващ имейл",
"template_settings": "Шаблони за известия",
"template_settings_description": "Управление на шаблони за известия.",
"theme_custom_css_settings": "Персонализиран CSS",
"theme_custom_css_settings_description": "Каскадните стилови таблици позволяват персонализиране на дизайна на Immich.",
"theme_settings": "Настройки на темата",
@ -297,10 +316,8 @@
"transcoding_temporal_aq_description": "Само за NVENC. Повишава качеството на сцени с висока детайлност и ниско ниво на движение. Може да не е съвместимо с по-стари устройства.",
"transcoding_threads": "Нишки",
"transcoding_threads_description": "По-високите стойности водят до по-бързо разкодиране, но оставят по-малко място за сървъра да обработва други задачи, докато е активен. Тази стойност не трябва да надвишава броя на процесорните ядра. Увеличава максимално използването, ако е зададено на 0.",
"transcoding_tone_mapping": "",
"transcoding_tone_mapping": "Tone-mapping",
"transcoding_tone_mapping_description": "Опитва се да запази външния вид на HDR видеоклипове, когато се преобразува в SDR. Всеки алгоритъм прави различни компромиси за цвят, детайлност и яркост. Hable запазва детайлите, Mobius запазва цвета, а Reinhard запазва яркостта.",
"transcoding_tone_mapping_npl": "",
"transcoding_tone_mapping_npl_description": "Цветовете ще бъдат коригирани, за да изглеждат нормално за дисплей с тази яркост. Противоинтуитивно, по-ниските стойности увеличават яркостта на видеото и обратно, тъй като компенсират яркостта на дисплея. 0 задава тази стойност автоматично.",
"transcoding_transcode_policy": "Правила за транскодиране",
"transcoding_transcode_policy_description": "Правила за това кога видеоклипът трябва да бъде транскодиран. HDR видеоклиповете винаги ще бъдат транскодирани (освен ако транскодирането е деактивирано).",
"transcoding_two_pass_encoding": "Кодиране с двойно минаване",
@ -314,6 +331,7 @@
"trash_settings_description": "Управление на настройките на кошчето",
"untracked_files": "Непроследени файлове",
"untracked_files_description": "Тези файлове не се проследяват от приложението. Те могат да бъдат резултат от неуспешни премествания, прекъснати качвания или оставени поради грешка",
"user_cleanup_job": "Почистване на потребители",
"user_delete_delay": "<b>{user}</b> aкаунтът и файловете на потребителя ще бъдат планирани за постоянно изтриване след {delay, plural, one {# ден} other {# дни}}.",
"user_delete_delay_settings": "Забавяне на изтриване",
"user_delete_delay_settings_description": "Брой дни след окончателно изтриване акаунта на потребителя. Задачата за изтриване на потребител се изпълнява в полунощ, за да се провери за потребители, които са готови за изтриване. Промените на тази настройка ще влязат в сила при следващото изпълнение.",
@ -338,6 +356,9 @@
"admin_password": "Администраторска парола",
"administration": "Администрация",
"advanced": "Разширено",
"age_months": "Възраст {months, plural, one {# month} other {# months}}",
"age_year_months": "Възраст 1 година, {months, plural, one {# month} other {# months}}",
"age_years": "{years, plural, other {Age #}}",
"album_added": "Албумът е добавен",
"album_added_notification_setting_description": "Получавайте известие по имейл, когато бъдете добавени към споделен албум",
"album_cover_updated": "Обложката на албума е актуализирана",
@ -357,7 +378,7 @@
"album_user_removed": "Премахнат {user}",
"album_with_link_access": "Нека всеки с линк вижда снимки и хора в този албум.",
"albums": "Албуми",
"albums_count": "",
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albums}}",
"all": "Всички",
"all_albums": "Всички албуми",
"all_people": "Всички хора",
@ -366,24 +387,44 @@
"allow_edits": "Позволяване на редакции",
"allow_public_user_to_download": "Позволете на публичен потребител да може да изтегля",
"allow_public_user_to_upload": "Позволете на публичния потребител да може да качва",
"anti_clockwise": "Обратно на часовниковата стрелка",
"api_key": "API ключ",
"api_key_description": "Тази стойност ще бъде показана само веднъж. Моля, не забравяйте да го копирате, преди да затворите прозореца.",
"api_key_empty": "Името на вашия API ключ не трябва да е празно",
"api_keys": "API ключове",
"app_settings": "Настройки ма приложението",
"appears_in": "",
"appears_in": "Излиза в",
"archive": "Архив",
"archive_or_unarchive_photo": "Архивиране или деархивиране на снимка",
"archive_size": "Размер на архива",
"archive_size_description": "Конфигурирайте размера на архива за изтегляния (в GiB)",
"archived": "",
"archived_count": "{count, plural, other {Archived #}}",
"are_these_the_same_person": "Това едно и също лице ли е?",
"are_you_sure_to_do_this": "Сигурни ли сте, че искате да направите това?",
"asset_added_to_album": "Добавено в албум",
"asset_adding_to_album": "Добавяне в албум...",
"asset_description_updated": "Описание на актива е обновено",
"asset_filename_is_offline": "Активът {filename} е офлайн",
"asset_has_unassigned_faces": "Активът има неразпределени лица",
"asset_hashing": "Хеширане...",
"asset_offline": "Ресурсът е офлайн",
"asset_offline_description": "Този външен актив вече не се намира на диска. Моля, свържете се с администратора на Immich за помощ.",
"asset_skipped": "Пропуснато",
"asset_skipped_in_trash": "В кошчето",
"asset_uploaded": "Качено",
"asset_uploading": "Качване...",
"assets": "Ресурси",
"assets_moved_to_trash": "",
"assets_added_count": "Добавено {count, plural, one {# asset} other {# assets}}",
"assets_added_to_album_count": "Добавен(и) са {count, plural, one {# актив} other {# актива}} в албума",
"assets_added_to_name_count": "Добавен(и) са {count, plural, one {# актив} other {# актива}} към {hasName, select, true {<b>{name}</b>} other {нов албум}}",
"assets_count": "{count, plural, one {# актив} other {# актива}}",
"assets_moved_to_trash_count": "Преместен(и) са {count, plural, one {# актив} other {# актива}} в кошчето",
"assets_permanently_deleted_count": "Постоянно изтрит(и) са {count, plural, one {# актив} other {# актива}}",
"assets_removed_count": "Премахнат(и) са {count, plural, one {# актив} other {# актива}}",
"assets_restore_confirmation": "Сигурни ли сте, че искате да възстановите всички активи в кошчето? Не можете да отмените това действие! Имайте предвид, че активи, които са офлайн, не могат да бъдат възстановени по този начин.",
"assets_restored_count": "Възстановен(и) са {count, plural, one {# актив} other {# актива}}",
"assets_trashed_count": "Възстановен(и) са {count, plural, one {# файл} other {# файла}}",
"assets_were_part_of_album_count": "{count, plural, one {Файлът е} other {Файловете са}} вече част от албума",
"authorized_devices": "Удостоверени устройства",
"back": "Назад",
"back_close_deselect": "Назад, затваряне или премахване на избора",
@ -391,9 +432,12 @@
"birthdate_saved": "Датата на раждане е запазена успешно",
"birthdate_set_description": "Датата на раждане се използва за изчисляване на възрастта на този човек към момента на снимката.",
"blurred_background": "Замъглен заден фон",
"bulk_delete_duplicates_confirmation": "",
"bulk_keep_duplicates_confirmation": "",
"bulk_trash_duplicates_confirmation": "",
"bugs_and_feature_requests": "Бъгове и заявки за функции",
"build": "Build",
"build_image": "Build Image",
"bulk_delete_duplicates_confirmation": "Сигурни ли сте, че искате да изтриете масово {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще запази най-големия файл от всяка група и ще изтрие трайно всички други дубликати. Не можете да отмените това действие!",
"bulk_keep_duplicates_confirmation": "Сигурни ли сте, че искате да запазите {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще потвърди всички групи дубликати, без да изтрива нищо.",
"bulk_trash_duplicates_confirmation": "Сигурни ли сте, че искате да преместите в кошчето масово {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще запази най-големия файл от всяка група и ще премести в кошчето всички други дубликати.",
"buy": "Купете Immich",
"camera": "Камера",
"camera_brand": "Марка на камерата",
@ -403,10 +447,6 @@
"cannot_merge_people": "Не може да обединява хора",
"cannot_undo_this_action": "Не можете да отмените това действие!",
"cannot_update_the_description": "Описанието не може да бъде актуализирано",
"cant_apply_changes": "",
"cant_get_faces": "",
"cant_search_people": "",
"cant_search_places": "",
"change_date": "Промени датата",
"change_expiration_time": "Променете времето на изтичане",
"change_location": "Промени локацията",
@ -425,9 +465,11 @@
"clear_all_recent_searches": "Изчистете всички скорошни търсения",
"clear_message": "Изчисти съобщението",
"clear_value": "Изчисти стойността",
"clockwise": "По часовниковата стрелка",
"close": "Затвори",
"collapse": "Свиване",
"collapse_all": "Свиване на всичко",
"color": "Цвят",
"color_theme": "Цветова тема",
"comment_deleted": "Коментарът е изтрит",
"comment_options": "Опции за коментар",
@ -436,8 +478,9 @@
"confirm": "Потвърди",
"confirm_admin_password": "Потвърждаване на паролата на администратора",
"confirm_delete_shared_link": "Сигурни ли сте, че искате да изтриете тази споделена връзка?",
"confirm_keep_this_delete_others": "Всички останали файлове в стека ще бъдат изтрити, с изключение на този файл. Сигурни ли сте, че искате да продължите?",
"confirm_password": "Потвърдете паролата",
"contain": "",
"contain": "В рамките на",
"context": "Контекст",
"continue": "Продължи",
"copied_image_to_clipboard": "Изображението е копирано в клипборда.",
@ -450,7 +493,7 @@
"copy_password": "Копиране на парола",
"copy_to_clipboard": "Копиране в клипборда",
"country": "Държава",
"cover": "",
"cover": "Cover",
"covers": "Обложка",
"create": "Създай",
"create_album": "Създай албум",
@ -459,7 +502,10 @@
"create_link_to_share": "Създаване на линк за споделяне",
"create_link_to_share_description": "Позволете на всеки, който има линк, да види избраната(ите) снимка(и)",
"create_new_person": "Създаване на ново лице",
"create_new_person_hint": "Присвойте избраните файлове на нов човек",
"create_new_user": "Създаване на нов потребител",
"create_tag": "Създай таг",
"create_tag_description": "Създайте нов таг. За вложени тагове, моля, въведете пълния път на тага, включително наклонените черти.",
"create_user": "Създай потребител",
"created": "Създадено",
"current_device": "Текущо устройство",
@ -473,7 +519,7 @@
"date_range": "Период от време",
"day": "Ден",
"deduplicate_all": "Дедупликиране на всички",
"default_locale": "",
"default_locale": "Локализация по подразбиране",
"default_locale_description": "Форматиране на дати и числа в зависимост от местоположението на браузъра",
"delete": "Изтрий",
"delete_album": "Изтрий албум",
@ -482,14 +528,19 @@
"delete_key": "Изтрий ключ",
"delete_library": "Изтрий библиотека",
"delete_link": "Изтрий линк",
"delete_others": "Изтрий останалите",
"delete_shared_link": "Изтриване на споделен линк",
"delete_tag": "Изтрий таг",
"delete_tag_confirmation_prompt": "Сигурни ли сте, че искате да изтриете таг {tagName}?",
"delete_user": "Изтрий потребител",
"deleted_shared_link": "Изтрит споделен линк",
"deletes_missing_assets": "Изтрива файлове, които липсват на диска",
"description": "Описание",
"details": "Детайли",
"direction": "Посока",
"disabled": "Изключено",
"disallow_edits": "Забраняване на редакциите",
"discord": "Discord",
"discover": "Открий",
"dismiss_all_errors": "Отхвърляне на всички грешки",
"dismiss_error": "Отхвърляне на грешка",
@ -498,15 +549,18 @@
"display_original_photos": "Показване на оригинални снимки",
"display_original_photos_setting_description": "Показване на оригиналната снимка вместо миниатюри, когато оригиналният актив е съвместим с мрежата. Това може да доведе до по-бавни скорости на показване на снимки.",
"do_not_show_again": "Не показвайте това съобщение отново",
"documentation": "Документация",
"done": "Готово",
"download": "Изтегли",
"download_include_embedded_motion_videos": "Вградени видеа",
"download_include_embedded_motion_videos_description": "Включете видеата, вградени в динамични снимки, като отделен файл",
"download_settings": "Изтегли",
"download_settings_description": "Управление на настройките, свързани с изтеглянето на файлове",
"downloading": "Изтегляне",
"downloading_asset_filename": "Изтегляне на файл {filename}",
"drop_files_to_upload": "Пуснете файловете, за да ги качите",
"duplicates": "Дубликати",
"duplicates_description": "",
"duplicates_description": "Изберете всяка група, като посочите кои, ако има такива, са дубликати",
"duration": "Продължителност",
"edit": "Редактиране",
"edit_album": "Редактиране на албум",
@ -522,10 +576,15 @@
"edit_location": "Редактиране на местоположението",
"edit_name": "Редактиране на име",
"edit_people": "Редактиране на хора",
"edit_tag": "Редактирай таг",
"edit_title": "Редактиране на заглавието",
"edit_user": "Редактиране на потребител",
"edited": "Редактирано",
"editor": "",
"editor": "Редактор",
"editor_close_without_save_prompt": "Промените няма да бъдат запазени",
"editor_close_without_save_title": "Затваряне на редактора?",
"editor_crop_tool_h2_aspect_ratios": "Съотношения на страните",
"editor_crop_tool_h2_rotation": "Завъртане",
"email": "Имейл",
"empty_trash": "Изпразване на кош",
"empty_trash_confirmation": "Сигурни ли сте, че искате да изпразните кошчето? Това ще премахне всичко в кошчето за постоянно от Immich.\nНе можете да отмените това действие!",
@ -539,7 +598,9 @@
"cannot_navigate_next_asset": "Не можете да преминете към следващия файл",
"cannot_navigate_previous_asset": "Не можете да преминете към предишния актив",
"cant_apply_changes": "Не могат да се приложат промение",
"cant_change_activity": "Не може {enabled, select, true {да се деактивира} other {да се активира}} дейността",
"cant_change_asset_favorite": "Не може да промени любими за файл",
"cant_change_metadata_assets_count": "Не може да се промени метаданните на {count, plural, one {# обект} other {# обекта}}",
"cant_get_faces": "Не мога да намеря лица",
"cant_get_number_of_comments": "Не може да получи броя на коментарите",
"cant_search_people": "Не може да търси хора",
@ -558,19 +619,28 @@
"failed_to_create_shared_link": "Неуспешно създаване на споделена връзка",
"failed_to_edit_shared_link": "Неуспешно редактиране на споделена връзка",
"failed_to_get_people": "Неуспешно зареждане на хора",
"failed_to_keep_this_delete_others": "Неуспешно запазване на този обект и изтриване на останалите обекти",
"failed_to_load_asset": "Неуспешно зареждане на файл",
"failed_to_load_assets": "Неуспешно зареждане на файлове",
"import_path_already_exists": "",
"failed_to_load_people": "Неуспешно зареждане на хора",
"failed_to_remove_product_key": "Неуспешно премахване на продуктовия ключ",
"failed_to_stack_assets": "Неуспешно подреждане на обекти",
"failed_to_unstack_assets": "Неуспешно премахване на подредбата на обекти",
"import_path_already_exists": "Този път за импортиране вече съществува.",
"incorrect_email_or_password": "Неправилен имейл или парола",
"paths_validation_failed": "",
"paths_validation_failed": "{paths, plural, one {# път} other {# пътища}} не преминаха валидация",
"profile_picture_transparent_pixels": "Профилните снимки не могат да имат прозрачни пиксели. Моля, увеличете и/или преместете изображението.",
"quota_higher_than_disk_size": "Зададена е квота, по-голяма от размера на диска",
"repair_unable_to_check_items": "",
"unable_to_add_album_users": "",
"unable_to_add_comment": "",
"unable_to_add_exclusion_pattern": "",
"unable_to_add_import_path": "",
"unable_to_add_partners": "",
"repair_unable_to_check_items": "Неуспешно проверяване на {count, select, one {обект} other {обекти}}",
"unable_to_add_album_users": "Неуспешно добавяне на потребители в албум",
"unable_to_add_assets_to_shared_link": "Неуспешно добавяне на обекти в споделен линк",
"unable_to_add_comment": "Неуспешно добавяне на коментар",
"unable_to_add_exclusion_pattern": "Неуспешно добавяне на шаблон за изключение",
"unable_to_add_import_path": "Неуспешно добавяне на път за импортиране",
"unable_to_add_partners": "Неуспешно добавяне на партньори",
"unable_to_add_remove_archive": "Неуспешно {archived, select, true {премахване на обект от} other {добавяне на обект в}} архива",
"unable_to_add_remove_favorites": "Неуспешно {favorite, select, true {добавяне на обект в} other {премахване на обект от}} любими",
"unable_to_archive_unarchive": "Неуспешно {archived, select, true {архивиране} other {разархивиране}}",
"unable_to_change_album_user_role": "Не може да се промени ролята на потребителя на албума",
"unable_to_change_date": "Не може да се промени датата",
"unable_to_change_favorite": "Не може да промени фаворит за актив",
@ -601,11 +671,12 @@
"unable_to_get_comments_number": "Не може да получи брой коментари",
"unable_to_get_shared_link": "Неуспешно създаване на споделена връзка",
"unable_to_hide_person": "Не може да скрие човек",
"unable_to_link_oauth_account": "",
"unable_to_load_album": "",
"unable_to_load_asset_activity": "",
"unable_to_load_items": "",
"unable_to_load_liked_status": "",
"unable_to_link_motion_video": "Неуспешно свързване на видео с движение",
"unable_to_link_oauth_account": "Неуспешно свързване на OAuth акаунт",
"unable_to_load_album": "Неуспешно зареждане на албум",
"unable_to_load_asset_activity": "Неуспешно зареждане на активност на обект",
"unable_to_load_items": "Неуспешно зареждане на обекти",
"unable_to_load_liked_status": "Неуспешно зареждане на статус на харесване",
"unable_to_play_video": "",
"unable_to_refresh_user": "",
"unable_to_remove_album_users": "",
@ -650,7 +721,6 @@
"external": "Външно",
"external_libraries": "Външни библиотеки",
"face_unassigned": "Незададено",
"failed_to_get_people": "",
"favorite": "Любим",
"favorite_or_unfavorite_photo": "",
"favorites": "Любими",
@ -662,14 +732,12 @@
"filter_people": "Филтриране на хора",
"find_them_fast": "Намерете ги бързо по име с търсене",
"fix_incorrect_match": "Поправяне на неправилно съвпадение",
"force_re-scan_library_files": "Принудително повторно сканиране на всички библиотечни файлове",
"forward": "Напред",
"general": "Общи",
"get_help": "Помощ",
"getting_started": "",
"go_back": "Връщане назад",
"go_to_search": "Преминаване към търсене",
"go_to_share_page": "",
"group_albums_by": "Групирай албум по...",
"group_owner": "Групиране по собственик",
"group_year": "Групиране по година",
@ -685,7 +753,6 @@
"hour": "Час",
"image": "Изображение",
"image_alt_text_date": "на {date}",
"image_alt_text_place": "в {city}, {country}",
"immich_logo": "Immich лого",
"immich_web_interface": "",
"import_from_json": "Импортиране от JSON",
@ -718,29 +785,6 @@
"level": "Ниво",
"library": "Библиотека",
"library_options": "Опции на библиотеката",
"license_account_info": "Вашият акаунт е лицензиран",
"license_activated_title": "Вашият лиценз е активиран успешно",
"license_button_activate": "Активирай",
"license_button_buy": "Купи",
"license_button_buy_license": "Купи лиценз",
"license_button_select": "Избери",
"license_failed_activation": "Неуспешно активиране на лиценз. Моля, проверете имейла си за правилния лицензен ключ!",
"license_individual_description_1": "1 лиценз за потребител на всеки сървър",
"license_individual_title": "Индивидуален лиценз",
"license_info_licensed": "Лицензиран",
"license_info_unlicensed": "Не лицензиран",
"license_input_suggestion": "Имате лиценз? Въведете ключа по-долу",
"license_license_subtitle": "Купете лиценз, за да подкрепите Immich",
"license_license_title": "ЛИЦЕНЗ",
"license_lifetime_description": "Доживотен лиценз",
"license_per_server": "За сървър",
"license_per_user": "За потребител",
"license_server_description_1": "1 лиценз за сървър",
"license_server_description_2": "Лиценз за всички потребители на сървъра",
"license_server_title": "Лиценз за сървър",
"license_trial_info_1": "Работите с нелицензирана версия на Immich",
"license_trial_info_2": "Използвали сте Immich за приблизително",
"license_trial_info_4": "Моля, помислете за закупуване на лиценз, за да подкрепите по-нататъшното развитие на услугата",
"light": "Светло",
"link_options": "Опции на линк за споделяне",
"link_to_oauth": "",
@ -832,7 +876,6 @@
"onboarding_welcome_user": "Добре дошъл, {user}",
"online": "Онлайн",
"only_favorites": "Само любими",
"only_refreshes_modified_files": "Опреснява само модифицирани файлове",
"open_the_search_filters": "Отваряне на филтрите за търсене",
"options": "Настройки",
"or": "или",
@ -870,7 +913,6 @@
"permanent_deletion_warning_setting_description": "Показване на предупреждение при трайно изтриване на активи",
"permanently_delete": "Трайно изтриване",
"permanently_deleted_asset": "",
"permanently_deleted_assets": "",
"person": "Човек",
"photos": "Снимки",
"photos_count": "",
@ -931,8 +973,6 @@
"saved_settings": "",
"say_something": "",
"scan_all_libraries": "",
"scan_all_library_files": "",
"scan_new_library_files": "",
"scan_settings": "",
"scanning_for_album": "",
"search": "Търсене",
@ -967,7 +1007,6 @@
"selected": "Избрано",
"send_message": "Изпратете съобщение",
"send_welcome_email": "Изпратете имейл за добре дошли",
"server": "Сървър",
"server_offline": "Сървър офлайн",
"server_online": "Сървър онлайн",
"server_stats": "Статус на сървъра",
@ -1070,7 +1109,6 @@
"to_trash": "Кошче",
"toggle_settings": "Превключване на настройките",
"toggle_theme": "Превключване на тема",
"toggle_visibility": "",
"total_usage": "Общо използвано",
"trash": "кошче",
"trash_all": "Изхвърли всички",
@ -1079,7 +1117,6 @@
"trashed_items_will_be_permanently_deleted_after": "Изхвърлените в кошчето елементи ще бъдат изтрити за постоянно след {days, plural, one {# day} other {# days}}.",
"type": "Тип",
"unarchive": "Разархивирай",
"unarchived": "",
"unfavorite": "Премахване от любимите",
"unhide_person": "",
"unknown": "Неизвестно",
@ -1113,6 +1150,8 @@
"user_purchase_settings_description": "Управлявай покупката си",
"user_role_set": "Задай {user} като {role}",
"user_usage_detail": "Подробности за използването на потребителя",
"user_usage_stats": "Статистика за използването на акаунта",
"user_usage_stats_description": "Преглед на статистиката за използването на акаунта",
"username": "Потребителско име",
"users": "Потребители",
"utilities": "Инструменти",
@ -1135,13 +1174,12 @@
"view_next_asset": "Преглед на следващия файл",
"view_previous_asset": "Преглед на предишния файл",
"view_stack": "Покажи в стек",
"viewer": "",
"visibility_changed": "Видимостта е променена за {count, plural, one {# person} other {# people}}",
"waiting": "в изчакване",
"warning": "Внимание",
"week": "Седмица",
"welcome": "Добре дошли",
"welcome_to_immich": "Добре дошли в immich",
"welcome_to_immich": "Добре дошли в Immich",
"year": "Година",
"yes": "Да",
"you_dont_have_any_shared_links": "Нямате споделени връзки",

View file

@ -33,7 +33,6 @@
"confirm_email_below": "",
"confirm_reprocess_all_faces": "",
"confirm_user_password_reset": "",
"crontab_guru": "",
"disable_login": "",
"duplicate_detection_job_description": "",
"exclusion_pattern_description": "",
@ -49,16 +48,9 @@
"image_prefer_embedded_preview_setting_description": "",
"image_prefer_wide_gamut": "",
"image_prefer_wide_gamut_setting_description": "",
"image_preview_format": "",
"image_preview_resolution": "",
"image_preview_resolution_description": "",
"image_quality": "",
"image_quality_description": "",
"image_settings": "",
"image_settings_description": "",
"image_thumbnail_format": "",
"image_thumbnail_resolution": "",
"image_thumbnail_resolution_description": "",
"job_concurrency": "",
"job_not_concurrency_safe": "",
"job_settings": "",
@ -67,8 +59,6 @@
"jobs_delayed": "",
"jobs_failed": "",
"library_created": "",
"library_cron_expression": "",
"library_cron_expression_presets": "",
"library_deleted": "",
"library_import_path_description": "",
"library_scanning": "",
@ -172,15 +162,12 @@
"paths_validated_successfully": "",
"quota_size_gib": "",
"refreshing_all_libraries": "",
"removing_deleted_files": "",
"repair_all": "",
"repair_matched_items": "",
"repaired_items": "",
"require_password_change_on_login": "",
"reset_settings_to_default": "",
"reset_settings_to_recent_saved": "",
"scanning_library_for_changed_files": "",
"scanning_library_for_new_files": "",
"send_welcome_email": "",
"server_external_domain_settings": "",
"server_external_domain_settings_description": "",
@ -255,8 +242,6 @@
"transcoding_threads_description": "",
"transcoding_tone_mapping": "",
"transcoding_tone_mapping_description": "",
"transcoding_tone_mapping_npl": "",
"transcoding_tone_mapping_npl_description": "",
"transcoding_transcode_policy": "",
"transcoding_transcode_policy_description": "",
"transcoding_two_pass_encoding": "",
@ -308,7 +293,6 @@
"appears_in": "",
"archive": "",
"archive_or_unarchive_photo": "",
"archived": "",
"asset_offline": "",
"assets": "",
"authorized_devices": "",
@ -322,10 +306,6 @@
"cancel_search": "",
"cannot_merge_people": "",
"cannot_update_the_description": "",
"cant_apply_changes": "",
"cant_get_faces": "",
"cant_search_people": "",
"cant_search_places": "",
"change_date": "",
"change_expiration_time": "",
"change_location": "",
@ -411,13 +391,6 @@
"download": "",
"downloading": "",
"duration": "",
"durations": {
"days": "",
"hours": "",
"minutes": "",
"months": "",
"years": ""
},
"edit_album": "",
"edit_avatar": "",
"edit_date": "",
@ -436,7 +409,6 @@
"edited": "",
"editor": "",
"email": "",
"empty_album": "",
"empty_trash": "",
"enable": "",
"enabled": "",
@ -522,7 +494,6 @@
"extension": "",
"external": "",
"external_libraries": "",
"failed_to_get_people": "",
"favorite": "",
"favorite_or_unfavorite_photo": "",
"favorites": "",
@ -534,14 +505,12 @@
"filter_people": "",
"find_them_fast": "",
"fix_incorrect_match": "",
"force_re-scan_library_files": "",
"forward": "",
"general": "",
"get_help": "",
"getting_started": "",
"go_back": "",
"go_to_search": "",
"go_to_share_page": "",
"group_albums_by": "",
"has_quota": "",
"hide_gallery": "",
@ -656,7 +625,6 @@
"oldest_first": "",
"online": "",
"only_favorites": "",
"only_refreshes_modified_files": "",
"open_the_search_filters": "",
"options": "",
"organize_your_library": "",
@ -745,8 +713,6 @@
"saved_settings": "",
"say_something": "",
"scan_all_libraries": "",
"scan_all_library_files": "",
"scan_new_library_files": "",
"scan_settings": "",
"search": "",
"search_albums": "",
@ -777,7 +743,6 @@
"selected": "",
"send_message": "",
"send_welcome_email": "",
"server": "",
"server_stats": "",
"set": "",
"set_as_album_cover": "",
@ -847,7 +812,6 @@
"to_favorite": "",
"toggle_settings": "",
"toggle_theme": "",
"toggle_visibility": "",
"total_usage": "",
"trash": "",
"trash_all": "",
@ -855,11 +819,9 @@
"trashed_items_will_be_permanently_deleted_after": "",
"type": "",
"unarchive": "",
"unarchived": "",
"unfavorite": "",
"unhide_person": "",
"unknown": "",
"unknown_album": "",
"unknown_year": "",
"unlimited": "",
"unlink_oauth": "",
@ -893,7 +855,6 @@
"view_links": "",
"view_next_asset": "",
"view_previous_asset": "",
"viewer": "",
"waiting": "",
"week": "",
"welcome_to_immich": "",

1
i18n/bn.json Normal file
View file

@ -0,0 +1 @@
{}

View file

@ -1,8 +1,8 @@
{
"about": "Quant a",
"about": "Sobre",
"account": "Compte",
"account_settings": "Configuració del compte",
"acknowledge": "Reconeix",
"acknowledge": "Confirmar",
"action": "Acció",
"actions": "Accions",
"active": "Actiu",
@ -14,26 +14,32 @@
"add_a_name": "Afegir un nom",
"add_a_title": "Afegir un títol",
"add_exclusion_pattern": "Afegir un patró d'exclusió",
"add_import_path": "Afegir un camí d'importació",
"add_import_path": "Afegir una ruta d'importació",
"add_location": "Afegir la ubicació",
"add_more_users": "Afegir més usuaris",
"add_partner": "Afegir company/a",
"add_path": "Afegir un camí",
"add_path": "Afegir una ruta",
"add_photos": "Afegir fotografies",
"add_to": "Afegir a...",
"add_to_album": "Afegir a un l'àlbum",
"add_to_shared_album": "Afegir a un àlbum compartit",
"add_url": "Afegir URL",
"added_to_archive": "Afegit als arxivats",
"added_to_favorites": "Afegit als preferits",
"added_to_favorites_count": "{count, number} afegits als preferits",
"admin": {
"add_exclusion_pattern_description": "Afegeix patrons d'eclusió. És permès de l'ús de *, **, i ? (globbing). Per a ignorar els fitxers de qualsevol directori anomenat \"Raw\" introduïu \"**/Raw/**\". Per a ignorar els fitxers acabats en \".tif\" introduïu \"**/*.tif\". Per a ignorar un camí absolut, utilitzeu \"/camí/a/ignorar/**\".",
"add_exclusion_pattern_description": "Afegeix patrons d'exclusió. Es permet englobar fent ús de *, **, i ?. Per a ignorar els fitxers de qualsevol directori anomenat \"Raw\" introduïu \"**/Raw/**\". Per a ignorar els fitxers acabats en \".tif\" introduïu \"**/*.tif\". Per a ignorar una ruta absoluta, utilitzeu \"/ruta/a/ignorar/**\".",
"asset_offline_description": "Aquest recurs de la biblioteca externa ja no es troba al disc i s'ha mogut a la paperera. Si el fitxer s'ha mogut dins de la biblioteca, comproveu la vostra línia de temps per trobar el nou recurs corresponent. Per restaurar aquest recurs, assegureu-vos que Immich pugui accedir a la ruta del fitxer següent i escanegeu la biblioteca.",
"authentication_settings": "Configuració de l'autenticació",
"authentication_settings_description": "Gestiona la contrasenya, OAuth i altres configuracions de l'autenticació",
"authentication_settings_disable_all": "Estàs segur que vols desactivar tots els mètodes d'inici de sessió? L'inici de sessió quedarà completament desactivat.",
"authentication_settings_reenable": "Per a tornar a habilitar, empra una <link>Comanda de Servidor</link>.",
"background_task_job": "Tasques en segon pla",
"backup_database": "Còpia de la base de dades",
"backup_database_enable_description": "Habilitar còpies de la base de dades",
"backup_keep_last_amount": "Quantitat de còpies de seguretat anteriors per conservar",
"backup_settings": "Ajustes de les còpies de seguretat",
"backup_settings_description": "Gestionar la configuració de la còpia de seguretat de la base de dades",
"check_all": "Marca-ho tot",
"cleared_jobs": "Tasques esborrades per a: {job}",
"config_set_by_file": "La configuració està definida per un fitxer de configuració",
@ -43,9 +49,10 @@
"confirm_reprocess_all_faces": "Esteu segur que voleu reprocessar totes les cares? Això també esborrarà la gent que heu anomenat.",
"confirm_user_password_reset": "Esteu segur que voleu reinicialitzar la contrasenya de l'usuari {user}?",
"create_job": "Crear tasca",
"crontab_guru": "Crontab Guru",
"cron_expression": "Expressió Cron",
"cron_expression_description": "Estableix l'interval d'escaneig amb el format cron. Per obtenir més informació, consulteu, p.e <link>Crontab Guru</link>",
"cron_expression_presets": "Ajustos predefinits d'expressions Cron",
"disable_login": "Deshabiliteu l'inici de sessió",
"disabled": "Deshabilitat",
"duplicate_detection_job_description": "Executa l'aprenentatge automàtic en els elements per a detectar imatges semblants. Fa servir l'Smart Search",
"exclusion_pattern_description": "Els patrons d'exclusió permeten ignorar fitxers i carpetes quan escanegeu una llibreria. Això és útil si teniu carpetes que contenen fitxer que no voleu importar, com els fitxers RAW.",
"external_library_created_at": "Llibreria externa (creada el {date})",
@ -63,22 +70,15 @@
"image_prefer_wide_gamut": "Prefereix àmplia gamma",
"image_prefer_wide_gamut_setting_description": "Uitlitza Display P3 per a les miniatures. Això preserva més bé la vitalitat de les imatges amb espais de color àmplis, però les imatges es poden veure diferent en aparells antics amb una versió antiga del navegador. Les imatges sRGB romandran com a sRGB per a evitar canvis de color.",
"image_preview_description": "Imatge de mida mitjana amb metadades eliminades, que s'utilitza quan es visualitza un sol recurs i per a l'aprenentatge automàtic",
"image_preview_format": "Format de previsualització",
"image_preview_quality_description": "Vista prèvia de la qualitat de l'1 al 100. Més alt és millor, però produeix fitxers més grans i pot reduir la capacitat de resposta de l'aplicació. Establir un valor baix pot afectar la qualitat de l'aprenentatge automàtic.",
"image_preview_resolution": "Resolució de previsualització",
"image_preview_resolution_description": "S'empra al visualitzar una única fotografia i per a l'Aprenentatge Automàtic. L'alta resolució por preservar més detalls però es triga més a codificar, té fitxers més pesats i pot reduir la resposta de l'aplicació.",
"image_preview_title": "Paràmetres de previsualització",
"image_quality": "Qualitat",
"image_quality_description": "Qualitat d'imatge de 1 a 100. Un valor més alt millora la qualitat però genera fitxers més pesats.",
"image_resolution": "Resolució",
"image_resolution_description": "Les resolucions més altes poden conservar més detalls però triguen més a codificar-se, tenen mides de fitxer més grans i poden reduir la capacitat de resposta de l'aplicació.",
"image_settings": "Configuració d'imatges",
"image_settings_description": "Gestiona la qualitat i resolució de les imatges generades",
"image_thumbnail_description": "Miniatura petita amb metadades eliminades, que s'utilitza quan es visualitzen grups de fotos com la línia de temps principal",
"image_thumbnail_format": "Format de la miniatura",
"image_thumbnail_quality_description": "Qualitat de miniatura d'1 a 100. Més alt és millor, però produeix fitxers més grans i pot reduir la capacitat de resposta de l'aplicació.",
"image_thumbnail_resolution": "Resolució de la miniatura",
"image_thumbnail_resolution_description": "S'empra per a veure grups de fotos (cronologia, vista d'àlbum, etc.). L'alta resolució pot preservar més detalls però triguen més en codificar-se, tenen fitxers més pesats i poden reduir la reactivitat de l'aplicació.",
"image_thumbnail_title": "Configuració de miniatures",
"job_concurrency": "{job} concurrència",
"job_created": "Tasca creada",
@ -89,9 +89,6 @@
"jobs_delayed": "{jobCount, plural, other {# posposades}}",
"jobs_failed": "{jobCount, plural, other {# fallides}}",
"library_created": "Bilbioteca creada: {library}",
"library_cron_expression": "Expressió cron",
"library_cron_expression_description": "Estableix l'interval d'escaneig utilitzant el format cron. Per a més informació, consulta per exemple, <link>Crontab Guru</link>",
"library_cron_expression_presets": "Expressions cron predeterminades",
"library_deleted": "Bilbioteca eliminada",
"library_import_path_description": "Especifiqueu una carpeta a importar. Aquesta carpeta, incloses les seves subcarpetes, serà escanejada per cercar-hi imatges i vídeos.",
"library_scanning": "Escaneig periòdic",
@ -158,7 +155,7 @@
"metadata_settings_description": "Administrar la configuració de les metadades",
"migration_job": "Migració",
"migration_job_description": "Migra les miniatures d'elements i cares cap a la nova estructura de carpetes",
"no_paths_added": "Cap camí afegit",
"no_paths_added": "No s'ha afegit cap ruta",
"no_pattern_added": "Cap patró aplicat",
"note_apply_storage_label_previous_assets": "Nota: Per aplicar l'etiquetatge d'emmagatzematge a elements pujats prèviament, executeu la",
"note_cannot_be_changed_later": "NOTA: Això és irreversible!",
@ -209,13 +206,12 @@
"password_enable_description": "Inicia sessió amb correu electrònic i contrasenya",
"password_settings": "Inici de sessió amb contrasenya",
"password_settings_description": "Gestiona la configuració de l'inici de sessió amb contrasenya",
"paths_validated_successfully": "Tots els camins han estat validats amb èxit",
"paths_validated_successfully": "Totes les rutes han estat validades amb èxit",
"person_cleanup_job": "Neteja de persona",
"quota_size_gib": "Tamany de la quota (GiB)",
"refreshing_all_libraries": "Actualitzant totes les biblioteques",
"registration": "Registre d'administrador",
"registration_description": "Com que ets el primer usuari del sistema, seràs designat com a administrador i seràs responsable de les tasques administratives. També seràs l'encarregat de crear usuaris addicionals.",
"removing_deleted_files": "Eliminant fitxers fora de línia",
"repair_all": "Reparar tot",
"repair_matched_items": "Coincidència {count, plural, one {# element} other {# elements}}",
"repaired_items": "Corregit {count, plural, one {# element} other {# elements}}",
@ -223,8 +219,6 @@
"reset_settings_to_default": "Restablir configuracions per defecte",
"reset_settings_to_recent_saved": "Restablir la configuració guardada més recent",
"scanning_library": "Escanejant biblioteca",
"scanning_library_for_changed_files": "Escanejant llibreria per trobar fitxers modificats",
"scanning_library_for_new_files": "Escanejant llibreria per trobar fitxers nous",
"search_jobs": "Tasques de cerca...",
"send_welcome_email": "Enviar correu electrònic de benvinguda",
"server_external_domain_settings": "Domini extern",
@ -261,7 +255,6 @@
"these_files_matched_by_checksum": "Aquests fitxers coincideixen amb els seus checksums",
"thumbnail_generation_job": "Generar miniatures",
"thumbnail_generation_job_description": "Genera miniatures grans, petites i borroses per a cada element, així com miniatures per a cada persona",
"transcode_policy_description": "",
"transcoding_acceleration_api": "API d'acceleració",
"transcoding_acceleration_api_description": "L'API que interactuarà amb el vostre dispositiu per accelerar la transcodificació. Aquesta configuració és \"millor esforç\": tornarà a la transcodificació del programari en cas d'error. VP9 pot funcionar o no depenent del vostre maquinari.",
"transcoding_acceleration_nvenc": "NVENC (requereix GPU d'NVIDIA)",
@ -313,8 +306,6 @@
"transcoding_threads_description": "Els valors més alts condueixen a una codificació més ràpida, però deixen menys espai perquè el servidor processi altres tasques mentre està actiu. Aquest valor no hauria de ser superior al nombre de nuclis de CPU. Maximitza la utilització si s'estableix a 0.",
"transcoding_tone_mapping": "Mapeig de to",
"transcoding_tone_mapping_description": "Intenta preservar l'aspecte dels vídeos HDR quan es converteixen a SDR. Cada algorisme fa diferents compensacions pel color, el detall i la brillantor. Hable conserva els detalls, Mobius conserva el color i Reinhard conserva la brillantor.",
"transcoding_tone_mapping_npl": "NPL de mapatge de to",
"transcoding_tone_mapping_npl_description": "Els colors s'ajustaran perquè semblin normals per a exposicions amb aquesta brillantor. Contra intuïtivament, els valors més baixos augmenten la brillantor del vídeo i viceversa, ja que compensa la brillantor de la pantalla. 0 estableix aquest valor automàticament.",
"transcoding_transcode_policy": "Política de transcodificació",
"transcoding_transcode_policy_description": "Política sobre quan s'ha de transcodificar un vídeo. Els vídeos HDR sempre es transcodificaran (excepte si la transcodificació està desactivada).",
"transcoding_two_pass_encoding": "Codificació de dues passades",
@ -395,7 +386,6 @@
"archive_or_unarchive_photo": "Arxivar o desarxivar fotografia",
"archive_size": "Mida de l'arxiu",
"archive_size_description": "Configureu la mida de l'arxiu de les descàrregues (en GiB)",
"archived": "Arxivat",
"archived_count": "{count, plural, one {Arxivat #} other {Arxivats #}}",
"are_these_the_same_person": "Són la mateixa persona?",
"are_you_sure_to_do_this": "Esteu segurs que voleu fer-ho?",
@ -445,10 +435,6 @@
"cannot_merge_people": "No es pot fusionar gent",
"cannot_undo_this_action": "Aquesta acció no es pot desfer!",
"cannot_update_the_description": "No es pot actualitzar la descripció",
"cant_apply_changes": "No es poden aplicar els canvis",
"cant_get_faces": "No es poden obtenir les cares",
"cant_search_people": "No es pot buscar gent",
"cant_search_places": "No es poden cercar llocs",
"change_date": "Canvia la data",
"change_expiration_time": "Canvia la data d'expiració",
"change_location": "Canvia la ubicació",
@ -480,6 +466,7 @@
"confirm": "Confirmar",
"confirm_admin_password": "Confirmeu la contrasenya d'administrador",
"confirm_delete_shared_link": "Esteu segurs que voleu eliminar aquest enllaç compartit?",
"confirm_keep_this_delete_others": "Excepte aquest element, tots els altres de la pila se suprimiran. Esteu segur que voleu continuar?",
"confirm_password": "Confirmació de contrasenya",
"contain": "Contingut",
"context": "Context",
@ -529,6 +516,7 @@
"delete_key": "Suprimeix la clau",
"delete_library": "Suprimeix la Llibreria",
"delete_link": "Esborra l'enllaç",
"delete_others": "Suprimeix altres",
"delete_shared_link": "Odstranit sdílený odkaz",
"delete_tag": "Eliminar etiqueta",
"delete_tag_confirmation_prompt": "Estàs segur que vols eliminar l'etiqueta {tagName}?",
@ -562,13 +550,6 @@
"duplicates": "Duplicats",
"duplicates_description": "Resol cada grup indicant quins, si n'hi ha, són duplicats",
"duration": "Duració",
"durations": {
"days": "",
"hours": "",
"minutes": "",
"months": "",
"years": ""
},
"edit": "Editar",
"edit_album": "Edita l'àlbum",
"edit_avatar": "Edita l'avatar",
@ -576,8 +557,8 @@
"edit_date_and_time": "Edita data i hora",
"edit_exclusion_pattern": "Edita patró d'exclusió",
"edit_faces": "Edita les cares",
"edit_import_path": "Edita el camí d'importació",
"edit_import_paths": "Edita camins d'importació",
"edit_import_path": "Edita la ruta d'importació",
"edit_import_paths": "Edita les rutes d'importació",
"edit_key": "Edita clau",
"edit_link": "Edita enllaç",
"edit_location": "Edita ubicació",
@ -593,8 +574,6 @@
"editor_crop_tool_h2_aspect_ratios": "Relació d'aspecte",
"editor_crop_tool_h2_rotation": "Rotació",
"email": "Correu electrònic",
"empty": "",
"empty_album": "",
"empty_trash": "Buidar la paperera",
"empty_trash_confirmation": "Esteu segur que voleu buidar la paperera? Això eliminarà tots els recursos a la paperera permanentment d'Immich.\nNo podeu desfer aquesta acció!",
"enable": "Activar",
@ -628,13 +607,14 @@
"failed_to_create_shared_link": "No s'ha pogut crear l'enllaç compartit",
"failed_to_edit_shared_link": "No s'ha pogut editar l'enllaç compartit",
"failed_to_get_people": "No s'han pogut aconseguir persones",
"failed_to_keep_this_delete_others": "No s'ha pogut conservar aquest element i suprimir els altres",
"failed_to_load_asset": "No s'ha pogut carregar l'element",
"failed_to_load_assets": "No s'han pogut carregar els elements",
"failed_to_load_people": "No s'han pogut carregar les persones",
"failed_to_remove_product_key": "No s'ha pogut eliminar la clau del producte",
"failed_to_stack_assets": "No s'han pogut apilar els elements",
"failed_to_unstack_assets": "No s'han pogut desapilar els elements",
"import_path_already_exists": "Aquest camí d'importació ja existeix.",
"import_path_already_exists": "Aquesta ruta d'importació ja existeix.",
"incorrect_email_or_password": "Correu electrònic o contrasenya incorrectes",
"paths_validation_failed": "{paths, plural, one {# ruta} other {# rutes}} no ha pogut validar",
"profile_picture_transparent_pixels": "Les fotos de perfil no poden tenir píxels transparents. Per favor, feu zoom in, mogueu la imatge o ambdues.",
@ -644,7 +624,7 @@
"unable_to_add_assets_to_shared_link": "No s'han pogut afegir els elements a l'enllaç compartit",
"unable_to_add_comment": "No es pot afegir el comentari",
"unable_to_add_exclusion_pattern": "No s'ha pogut afegir el patró dexclusió",
"unable_to_add_import_path": "No s'ha pogut afegir el camí d'importació",
"unable_to_add_import_path": "No s'ha pogut afegir la ruta d'importació",
"unable_to_add_partners": "No es poden afegir companys",
"unable_to_add_remove_archive": "No s'ha pogut {archived, select, true {eliminar l'element de} other {afegir l'element a}} l'arxiu",
"unable_to_add_remove_favorites": "No s'ha pogut {favorite, select, true {afegir l'element als} other {eliminar l'element dels}} preferits",
@ -655,8 +635,6 @@
"unable_to_change_location": "No es pot canviar la ubicació",
"unable_to_change_password": "No es pot canviar la contrasenya",
"unable_to_change_visibility": "No es pot canviar la visibilitat de {count, plural, one {# persona} other {# persones}}",
"unable_to_check_item": "",
"unable_to_check_items": "",
"unable_to_complete_oauth_login": "No es pot completar l'inici de sessió OAuth",
"unable_to_connect": "No pot connectar",
"unable_to_connect_to_server": "No es pot connectar al servidor",
@ -697,12 +675,10 @@
"unable_to_remove_album_users": "No es poden eliminar usuaris de l'àlbum",
"unable_to_remove_api_key": "No es pot eliminar la clau de l'API",
"unable_to_remove_assets_from_shared_link": "No es poden eliminar recursos de l'enllaç compartit",
"unable_to_remove_comment": "",
"unable_to_remove_deleted_assets": "No es poden eliminar els fitxers fora de línia",
"unable_to_remove_library": "No es pot eliminar la biblioteca",
"unable_to_remove_partner": "No es pot eliminar company/a",
"unable_to_remove_reaction": "No es pot eliminar la reacció",
"unable_to_remove_user": "",
"unable_to_repair_items": "No es poden reparar els elements",
"unable_to_reset_password": "No es pot restablir la contrasenya",
"unable_to_resolve_duplicate": "No es pot resoldre el duplicat",
@ -732,10 +708,6 @@
"unable_to_update_user": "No es pot actualitzar l'usuari",
"unable_to_upload_file": "No es pot carregar el fitxer"
},
"every_day_at_onepm": "",
"every_night_at_midnight": "",
"every_night_at_twoam": "",
"every_six_hours": "",
"exif": "Exif",
"exit_slideshow": "Surt de la presentació de diapositives",
"expand_all": "Ampliar-ho tot",
@ -750,33 +722,27 @@
"external": "Extern",
"external_libraries": "Llibreries externes",
"face_unassigned": "Sense assignar",
"failed_to_get_people": "",
"favorite": "Preferit",
"favorite_or_unfavorite_photo": "Foto preferida o no preferida",
"favorites": "Preferits",
"feature": "",
"feature_photo_updated": "Foto destacada actualitzada",
"featurecollection": "",
"features": "Característiques",
"features_setting_description": "Administrar les funcions de l'aplicació",
"file_name": "Nom de l'arxiu",
"file_name_or_extension": "Nom de l'arxiu o extensió",
"filename": "Nom del fitxer",
"files": "",
"filetype": "Tipus d'arxiu",
"filter_people": "Filtra persones",
"find_them_fast": "Trobeu-los ràpidament pel nom amb la cerca",
"fix_incorrect_match": "Corregiu la coincidència incorrecta",
"folders": "Carpetes",
"folders_feature_description": "Explorar la vista de carpetes per les fotos i vídeos del sistema d'arxius",
"force_re-scan_library_files": "Força a tornar a escanejar tots els fitxers de la biblioteca",
"forward": "Endavant",
"general": "General",
"get_help": "Aconseguir ajuda",
"getting_started": "Començant",
"go_back": "Torna",
"go_to_search": "Vés a cercar",
"go_to_share_page": "Vés a la pàgina de compartir",
"group_albums_by": "Agrupa àlbums per...",
"group_no": "Cap agrupació",
"group_owner": "Agrupar per propietari",
@ -802,7 +768,6 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} pres/a a {city}, {country} amb {person1} i {person2} el {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} pres/a a {city}, {country} amb {person1}, {person2}, i {person3} el {date}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} pres/a a {city}, {country} amb {person1}, {person2}, i {additionalCount, number} altres el {date}",
"img": "",
"immich_logo": "Logotip d'Immich",
"immich_web_interface": "Interfície web Immich",
"import_from_json": "Importar des de JSON",
@ -823,10 +788,11 @@
"invite_people": "Convida gent",
"invite_to_album": "Convida a l'àlbum",
"items_count": "{count, plural, one {# element} other {# elements}}",
"job_settings_description": "",
"jobs": "Tasques",
"keep": "Mantenir",
"keep_all": "Mantenir-ho tot",
"keep_this_delete_others": "Conserveu-ho, suprimiu-ne els altres",
"kept_this_deleted_others": "S'ha conservat aquest element i s'han suprimit {count, plural, one {# asset} other {# assets}}",
"keyboard_shortcuts": "Dreceres de teclat",
"language": "Idioma",
"language_setting_description": "Seleccioneu el vostre idioma",
@ -838,19 +804,6 @@
"level": "Nivell",
"library": "Bibilioteca",
"library_options": "Opcions de biblioteca",
"license_activated_title": "La vostra llicència ha estat activada amb èxit",
"license_button_activate": "Activar",
"license_button_buy": "Comprar",
"license_button_select": "Seleccionar",
"license_individual_title": "Llicència individual",
"license_info_unlicensed": "Sense llicència",
"license_license_title": "LLICÈNCIA",
"license_per_server": "Per servidor",
"license_per_user": "Per usuari",
"license_server_description_1": "1 llicència per servidor",
"license_server_title": "Llicència de servidor",
"license_trial_info_2": "Heu utilitzat l'Immich durant uns",
"license_trial_info_3": "{accountAge, plural, one {# dia} other {# dies}}",
"light": "Llum",
"like_deleted": "M'agrada suprimit",
"link_motion_video": "Enllaçar vídeo en moviment",
@ -955,7 +908,6 @@
"onboarding_welcome_user": "Benvingut, {user}",
"online": "En línia",
"only_favorites": "Només preferits",
"only_refreshes_modified_files": "Només actualitza els fitxers modificats",
"open_in_map_view": "Obrir a la vista del mapa",
"open_in_openstreetmap": "Obre a OpenStreetMap",
"open_the_search_filters": "Obriu els filtres de cerca",
@ -993,7 +945,6 @@
"people_edits_count": "{count, plural, one {# persona editada} other {# persones editades}}",
"people_feature_description": "Explorar fotos i vídeos agrupades per persona",
"people_sidebar_description": "Mostrar un enllaç a Persones a la barra lateral",
"perform_library_tasks": "",
"permanent_deletion_warning": "Avís d'eliminació permanent",
"permanent_deletion_warning_setting_description": "Mostrar un avís quan s'eliminin els elements permanentment",
"permanently_delete": "Eliminar permanentment",
@ -1015,7 +966,6 @@
"play_memories": "Reproduir records",
"play_motion_photo": "Reproduir Fotos en Moviment",
"play_or_pause_video": "Reproduir o posar en pausa el vídeo",
"point": "",
"port": "Port",
"preset": "Preestablert",
"preview": "Previsualització",
@ -1060,12 +1010,10 @@
"purchase_server_description_2": "Estat del contribuent",
"purchase_server_title": "Servidor",
"purchase_settings_server_activated": "La clau de producte del servidor la gestiona l'administrador",
"range": "",
"rating": "Valoració",
"rating_clear": "Esborrar valoració",
"rating_count": "{count, plural, one {# estrella} other {# estrelles}}",
"rating_description": "Mostrar la valoració EXIF al panell d'informació",
"raw": "",
"reaction_options": "Opcions de reacció",
"read_changelog": "Llegeix el registre de canvis",
"reassign": "Reassignar",
@ -1110,7 +1058,6 @@
"reset": "Restablir",
"reset_password": "Restablir contrasenya",
"reset_people_visibility": "Restablir la visibilitat de les persones",
"reset_settings_to_default": "",
"reset_to_default": "Restableix els valors predeterminats",
"resolve_duplicates": "Resoldre duplicats",
"resolved_all_duplicates": "Tots els duplicats resolts",
@ -1130,9 +1077,7 @@
"saved_settings": "Configuració guardada",
"say_something": "Digues quelcom",
"scan_all_libraries": "Escanejar totes les llibreries",
"scan_all_library_files": "Re-escanejar tots els fitxers de la llibreria",
"scan_library": "Escaneja",
"scan_new_library_files": "Escanejar nous fitxers de la llibreria",
"scan_settings": "Configuració d'escaneig",
"scanning_for_album": "S'està buscant l'àlbum...",
"search": "Cerca",
@ -1175,7 +1120,6 @@
"selected_count": "{count, plural, one {# seleccionat} other {# seleccionats}}",
"send_message": "Envia missatge",
"send_welcome_email": "Envia correu de benvinguda",
"server": "Servidor",
"server_offline": "Servidor fora de línia",
"server_online": "Servidor en línia",
"server_stats": "Estadístiques del servidor",
@ -1289,7 +1233,6 @@
"to_trash": "Paperera",
"toggle_settings": "Canvia configuració",
"toggle_theme": "Alternar tema",
"toggle_visibility": "Canvia visibilitat",
"total_usage": "Ús total",
"trash": "Paperera",
"trash_all": "Envia-ho tot a la paperera",
@ -1299,12 +1242,10 @@
"trashed_items_will_be_permanently_deleted_after": "Els elements que s'enviïn a la paperera s'eliminaran permanentment després de {days, plural, one {# dia} other {# dies}}.",
"type": "Tipus",
"unarchive": "Desarxivar",
"unarchived": "Desarxivat",
"unarchived_count": "{count, plural, other {# elements desarxivats}}",
"unfavorite": "Reverteix preferit",
"unhide_person": "Mostra persona",
"unknown": "Desconegut",
"unknown_album": "Àlbum desconegut",
"unknown_year": "Any desconegut",
"unlimited": "Il·limitat",
"unlink_motion_video": "Desvincular vídeo en moviment",
@ -1336,12 +1277,13 @@
"use_custom_date_range": "Fes servir un rang de dates personalitzat",
"user": "Usuari",
"user_id": "ID d'usuari",
"user_license_settings": "Llicència",
"user_liked": "A {user} li ha agradat {type, select, photo {aquesta foto} video {aquest vídeo} asset {aquest recurs} other {}}",
"user_purchase_settings": "Compra",
"user_purchase_settings_description": "Gestiona la teva compra",
"user_role_set": "Establir {user} com a {role}",
"user_usage_detail": "Detall d'ús d'usuari",
"user_usage_stats": "Estadístiques d'ús de del compte",
"user_usage_stats_description": "Veure les estadístiques d'ús del compte",
"username": "Nom d'usuari",
"users": "Usuaris",
"utilities": "Utilitats",
@ -1349,7 +1291,7 @@
"variables": "Variables",
"version": "Versió",
"version_announcement_closing": "El teu amic Alex",
"version_announcement_message": "Hola amic, hi ha una nova versió de l'aplicació, si us plau, preneu-vos el temps per visitar les <link>release notes</link> i assegureu-vos que el vostre <code>docker-compose.yml</code> i <code>.env</code> estàn actualitzats per evitar qualsevol configuració incorrecta, especialment si utilitzeu WatchTower o qualsevol mecanisme que gestioni l'actualització automàtica de la vostra aplicació.",
"version_announcement_message": "Hola! Hi ha una nova versió d'Immich, si us plau, preneu-vos una estona per llegir les <link>notes de llançament</link> per assegurar que la teva configuració estigui actualitzada per evitar qualsevol error de configuració, especialment si utilitzeu WatchTower o qualsevol mecanisme que gestioni l'actualització automàtica de la vostra instància Immich.",
"version_history": "Historial de versions",
"version_history_item": "Instal·lat {version} el {date}",
"video": "Vídeo",
@ -1366,7 +1308,6 @@
"view_next_asset": "Mostra el següent element",
"view_previous_asset": "Mostra l'element anterior",
"view_stack": "Veure la pila",
"viewer": "Visualitzador",
"visibility_changed": "La visibilitat ha canviat per {count, plural, one {# persona} other {# persones}}",
"waiting": "Esperant",
"warning": "Avís",

View file

@ -23,6 +23,7 @@
"add_to": "Přidat do...",
"add_to_album": "Přidat do alba",
"add_to_shared_album": "Přidat do sdíleného alba",
"add_url": "Přidat URL",
"added_to_archive": "Přidáno do archivu",
"added_to_favorites": "Přidáno do oblíbených",
"added_to_favorites_count": "Přidáno {count, number} do oblíbených",
@ -34,6 +35,11 @@
"authentication_settings_disable_all": "Opravdu chcete zakázat všechny metody přihlášení? Přihlašování bude úplně zakázáno.",
"authentication_settings_reenable": "Pro opětovné povolení použijte příkaz <link>Příkaz serveru</link>.",
"background_task_job": "Úkoly na pozadí",
"backup_database": "Zálohování databáze",
"backup_database_enable_description": "Povolit zálohování databáze",
"backup_keep_last_amount": "Počet předchozích záloh k uchování",
"backup_settings": "Nastavení zálohování",
"backup_settings_description": "Správa nastavení zálohování databáze",
"check_all": "Vše zkontrolovat",
"cleared_jobs": "Hotové úlohy pro: {job}",
"config_set_by_file": "Konfigurace je aktuálně prováděna konfiguračním souborem",
@ -43,9 +49,10 @@
"confirm_reprocess_all_faces": "Opravdu chcete znovu zpracovat všechny obličeje? Tím se vymažou i pojmenované osoby.",
"confirm_user_password_reset": "Opravdu chcete obnovit heslo uživatele {user}?",
"create_job": "Vytvořit úlohu",
"crontab_guru": "Crontab Guru",
"cron_expression": "Výraz cron",
"cron_expression_description": "Nastavte interval prohledávání pomocí cron formátu. Další informace naleznete např. v <link>Crontab Guru</link>",
"cron_expression_presets": "Předvolby výrazů cron",
"disable_login": "Zakázat přihlášení",
"disabled": "Zakázáno",
"duplicate_detection_job_description": "Spuštění strojového učení na položkách za účelem detekce podobných obrázků. Spoléhá na Chytré vyhledávání",
"exclusion_pattern_description": "Vzory vyloučení umožňují při prohledávání knihovny ignorovat soubory a složky. To je užitečné, pokud máte složky obsahující soubory, které nechcete importovat, například RAW soubory.",
"external_library_created_at": "Externí knihovna (vytvořena {date})",
@ -63,22 +70,15 @@
"image_prefer_wide_gamut": "Preferovat široký gamut",
"image_prefer_wide_gamut_setting_description": "Použít Display P3 pro miniatury. To lépe zachovává živost obrázků s širokým barevným prostorem, ale obrázky se mohou na starých zařízeních se starou verzí prohlížeče zobrazovat jinak. sRGB obrázky jsou ponechány jako sRGB, aby se zabránilo posunům barev.",
"image_preview_description": "Středně velký obrázek se zbavenými metadaty, který se používá při prohlížení jedné položky a pro strojové učení",
"image_preview_format": "Formát náhledů",
"image_preview_quality_description": "Kvalita náhledu od 1 do 100. Vyšší je lepší, ale vytváří větší soubory a může snížit responzivitu aplikace. Nastavení nízké hodnoty může ovlivnit kvalitu strojového učení.",
"image_preview_resolution": "Rozlišení náhledů",
"image_preview_resolution_description": "Používá se při prohlížení jedné fotografie a pro strojové učení. Vyšší rozlišení mohou zachovat více detailů, ale jejich kódování trvá déle, mají větší velikost souboru a mohou snížit odezvu aplikace.",
"image_preview_title": "Náhledy",
"image_quality": "Kvalita",
"image_quality_description": "Kvalita obrazu od 1 do 100. Vyšší kvalita je lepší, ale vytváří větší soubory, tato volba ovlivňuje náhled a miniatury obrázků.",
"image_resolution": "Rozlišení",
"image_resolution_description": "Vyšší rozlišení mohou zachovat více detailů, ale jejich kódování trvá déle, mají větší velikost souboru a mohou snížit odezvu aplikace.",
"image_settings": "Obrázky",
"image_settings_description": "Správa kvality a rozlišení generovaných obrázků",
"image_thumbnail_description": "Malá miniatura s odstraněnými metadaty, který se používá při prohlížení skupin fotografií, jako je hlavní časová osa",
"image_thumbnail_format": "Formát miniatur",
"image_thumbnail_quality_description": "Kvalita miniatur od 1 do 100. Vyšší je lepší, ale vytváří větší soubory a může snížit odezvu aplikace.",
"image_thumbnail_resolution": "Rozlišení miniatur",
"image_thumbnail_resolution_description": "Používá se při prohlížení skupin fotografií (hlavní časová osa, zobrazení alba atd.). Vyšší rozlišení může zachovat více detailů, ale trvá déle, než se zakóduje, má větší velikost souboru a může snížit odezvu aplikace.",
"image_thumbnail_title": "Miniatury",
"job_concurrency": "Souběžnost úlohy {job}",
"job_created": "Úloha vytvořena",
@ -89,9 +89,6 @@
"jobs_delayed": "{jobCount, plural, one {# zpožděný} few {# zpožděné} other {# zpožděných}}",
"jobs_failed": "{jobCount, plural, one {# neúspěšný} few {# neúspěšné} other {# neúspěšných}}",
"library_created": "Vytvořena knihovna: {library}",
"library_cron_expression": "Výraz pro Cron",
"library_cron_expression_description": "Nastavte interval prohledávání pomocí formátu cron. Další informace naleznete např. v <link>Crontab Guru</link>",
"library_cron_expression_presets": "Předvolby výrazu pro Cron",
"library_deleted": "Knihovna smazána",
"library_import_path_description": "Zadejte složku, kterou chcete importovat. Tato složka bude prohledána včetně podsložek a budou v ní hledány obrázky a videa.",
"library_scanning": "Pravidelné prohledávání",
@ -134,7 +131,7 @@
"machine_learning_smart_search_description": "Sémantické vyhledávání obrázků pomocí CLIP embeddings",
"machine_learning_smart_search_enabled": "Povolit chytré vyhledávání",
"machine_learning_smart_search_enabled_description": "Pokud je vypnuto, obrázky nebudou kódovány pro inteligentní vyhledávání.",
"machine_learning_url_description": "URL serveru pro strojové učení",
"machine_learning_url_description": "URL serveru strojového učení. Pokud je zadáno více URL adres, budou jednotlivé servery zkoušeny postupně, dokud jeden z nich neodpoví úspěšně, a to v pořadí od prvního k poslednímu.",
"manage_concurrency": "Správa souběžnosti",
"manage_log_settings": "Správa nastavení protokolu",
"map_dark_style": "Tmavý motiv",
@ -160,11 +157,11 @@
"migration_job_description": "Migrace miniatur snímků a obličejů do nejnovější struktury složek",
"no_paths_added": "Nebyly přidány žádné cesty",
"no_pattern_added": "Nebyl přidán žádný vzor",
"note_apply_storage_label_previous_assets": "Upozornění: Pro uplatnění Štítku úložiště na dříve nahrané položky, spusťte",
"note_apply_storage_label_previous_assets": "Upozornění: Pro uplatnění Štítku úložiště na dříve nahrané položky spusťte",
"note_cannot_be_changed_later": "UPOZORNĚNÍ: Toto nelze později změnit!",
"note_unlimited_quota": "Upozornění: Pro neomezenou kvótu zadejte 0",
"notification_email_from_address": "Adresa Od",
"notification_email_from_address_description": "E-mailová adresa odesílatele, např.: \"Immich Photo Server <noreply@example.com>\"",
"notification_email_from_address_description": "E-mailová adresa odesílatele, např.: „Immich Photo Server <noreply@example.com>“",
"notification_email_host_description": "Adresa e-mailového serveru (např. smtp.immich.app)",
"notification_email_ignore_certificate_errors": "Ignorovat chyby certifikátů",
"notification_email_ignore_certificate_errors_description": "Ignorovat chyby ověření certifikátu TLS (nedoporučuje se)",
@ -215,7 +212,6 @@
"refreshing_all_libraries": "Obnovení všech knihoven",
"registration": "Registrace správce",
"registration_description": "Vzhledem k tomu, že jste prvním uživatelem v systému, budete přiřazen jako správce a budete zodpovědný za úkoly správy a další uživatelé budou vytvořeni vámi.",
"removing_deleted_files": "Odstranění offline souborů",
"repair_all": "Opravit vše",
"repair_matched_items": "Shoda {count, plural, one {# položky} other {# položek}}",
"repaired_items": "{count, plural, one {Opravena # položka} few {Opraveny # položky} other {Opraveno # položek}}",
@ -223,12 +219,12 @@
"reset_settings_to_default": "Obnovení výchozího nastavení",
"reset_settings_to_recent_saved": "Obnovit poslední uložené nastavení",
"scanning_library": "Prohledat knihovnu",
"scanning_library_for_changed_files": "Hledání změněných souborů v knihovně",
"scanning_library_for_new_files": "Hledání nových souborů v knihovně",
"search_jobs": "Hledat úlohy...",
"send_welcome_email": "Odeslat uvítací e-mail",
"server_external_domain_settings": "Externí doména",
"server_external_domain_settings_description": "Doména pro veřejně sdílené odkazy, včetně http(s)://",
"server_public_users": "Veřejní uživatelé",
"server_public_users_description": "Všichni uživatelé (jméno a e-mail) jsou uvedeni při přidávání uživatele do sdílených alb. Pokud je tato funkce vypnuta, bude seznam uživatelů dostupný pouze uživatelům z řad správců.",
"server_settings": "Server",
"server_settings_description": "Správa nastavení serveru",
"server_welcome_message": "Uvítací zpráva",
@ -254,6 +250,16 @@
"storage_template_user_label": "<code>{label}</code> je štítek úložiště uživatele",
"system_settings": "Systémová nastavení",
"tag_cleanup_job": "Promazání značek",
"template_email_available_tags": "V šabloně můžete použít následující proměnné: {tags}",
"template_email_if_empty": "Pokud je šablona prázdná, použije se výchozí e-mail.",
"template_email_invite_album": "Šablona pozvánky do alba",
"template_email_preview": "Náhled",
"template_email_settings": "Šablony e-mailů",
"template_email_settings_description": "Správa vlastních šablon e-mailových oznámení",
"template_email_update_album": "Šablona aktualizace alba",
"template_email_welcome": "Šablona uvítacího e-mailu",
"template_settings": "Šablony oznámení",
"template_settings_description": "Správa vlastních šablon oznámení.",
"theme_custom_css_settings": "Vlastní CSS",
"theme_custom_css_settings_description": "Kaskádové styly umožňují přizpůsobit design aplikace Immich.",
"theme_settings": "Motivy",
@ -261,7 +267,6 @@
"these_files_matched_by_checksum": "Tyto soubory jsou porovnávány podle jejich kontrolních součtů",
"thumbnail_generation_job": "Generování miniatur",
"thumbnail_generation_job_description": "Generování velkých, malých a rozmazaných miniatur pro každý obrázek a miniatur pro každou osobu",
"transcode_policy_description": "Zásady, kdy má být video překódováno. Videa HDR budou překódována vždy (kromě případů, kdy je překódování zakázáno).",
"transcoding_acceleration_api": "API pro akceleraci",
"transcoding_acceleration_api_description": "Rozhraní, které bude komunikovat se zařízením a urychlovat překódování. Toto nastavení je 'best effort': při selhání se vrátí k softwarovému překódování. VP9 může, ale nemusí fungovat v závislosti na vašem hardwaru.",
"transcoding_acceleration_nvenc": "NVENC (vyžaduje NVIDIA GPU)",
@ -313,8 +318,6 @@
"transcoding_threads_description": "Vyšší hodnoty vedou k rychlejšímu kódování, ale ponechávají serveru méně prostoru pro zpracování jiných úloh. Tato hodnota by neměla být vyšší než počet jader procesoru. Maximalizuje využití, pokud je nastavena na 0.",
"transcoding_tone_mapping": "Tone-mapping",
"transcoding_tone_mapping_description": "Snaží se zachovat vzhled videí HDR při převodu na SDR. Každý algoritmus dělá různé kompromisy v oblasti barev, detailů a jasu. Hable zachovává detaily, Mobius zachovává barvy a Reinhard zachovává jas.",
"transcoding_tone_mapping_npl": "Tone-mapping NPL",
"transcoding_tone_mapping_npl_description": "Barvy budou upraveny tak, aby vypadaly normálně pro displej s tímto jasem. Nižší hodnoty naopak zvyšují jas videa a naopak, protože kompenzují jas displeje. Hodnota 0 nastavuje tuto hodnotu automaticky.",
"transcoding_transcode_policy": "Zásady překódování",
"transcoding_transcode_policy_description": "Zásady, kdy má být video překódováno. Videa HDR budou překódována vždy (kromě případů, kdy je překódování zakázáno).",
"transcoding_two_pass_encoding": "Dvouprůchodové kódování",
@ -395,7 +398,6 @@
"archive_or_unarchive_photo": "Archivovat nebo odarchivovat fotku",
"archive_size": "Velikost archivu",
"archive_size_description": "Nastavte velikost archivu pro stahování (v GiB)",
"archived": "Archivováno",
"archived_count": "{count, plural, other {Archivováno #}}",
"are_these_the_same_person": "Jedná se o stejnou osobu?",
"are_you_sure_to_do_this": "Opravdu to chcete udělat?",
@ -416,7 +418,6 @@
"assets_added_to_album_count": "Do alba {count, plural, one {byla přidána # položka} few {byly přidány # položky} other {bylo přidáno # položek}}",
"assets_added_to_name_count": "{count, plural, one {Přidána # položka} few {Přidány # položky} other {Přidáno # položek}} do {hasName, select, true {alba <b>{name}</b>} other {nového alba}}",
"assets_count": "{count, plural, one {# položka} few {# položky} other {# položek}}",
"assets_moved_to_trash": "{count, plural, one {# položka přesunuta} few {# položky přesunuty} other {# položek přesunuto}} do koše",
"assets_moved_to_trash_count": "Do koše {count, plural, one {přesunuta # položka} few {přesunuty # položky} other {přesunuto # položek}}",
"assets_permanently_deleted_count": "Trvale {count, plural, one {smazána # položka} few {smazány # položky} other {smazáno # položek}}",
"assets_removed_count": "{count, plural, one {Odstraněna # položka} few {Odstraněny # položky} other {Odstraněno # položek}}",
@ -446,10 +447,6 @@
"cannot_merge_people": "Nelze sloučit osoby",
"cannot_undo_this_action": "Tuto akci nelze vrátit zpět!",
"cannot_update_the_description": "Nelze aktualizovat popis",
"cant_apply_changes": "Nelze uplatnit změny",
"cant_get_faces": "Nelze získat obličeje",
"cant_search_people": "Nelze vyhledávat lidi",
"cant_search_places": "Nelze vyhledávat místa",
"change_date": "Změnit datum",
"change_expiration_time": "Změna konce platnosti",
"change_location": "Změna polohy",
@ -481,6 +478,7 @@
"confirm": "Potvrdit",
"confirm_admin_password": "Potvrzení hesla správce",
"confirm_delete_shared_link": "Opravdu chcete odstranit tento sdílený odkaz?",
"confirm_keep_this_delete_others": "Všechny ostatní položky v tomto uskupení mimo této budou odstraněny. Opravdu chcete pokračovat?",
"confirm_password": "Potvrzení hesla",
"contain": "Obsah",
"context": "Kontext",
@ -530,6 +528,7 @@
"delete_key": "Smazat klíč",
"delete_library": "Smazat knihovnu",
"delete_link": "Smazat odkaz",
"delete_others": "Odstranit ostatní",
"delete_shared_link": "Smazat sdílený odkaz",
"delete_tag": "Smazat značku",
"delete_tag_confirmation_prompt": "Opravdu chcete odstranit značku {tagName}?",
@ -563,13 +562,6 @@
"duplicates": "Duplicity",
"duplicates_description": "Vyřešte každou skupinu tak, že uvedete, které skupiny jsou duplicitní",
"duration": "Doba trvání",
"durations": {
"days": "{days, plural, one {den} few {{days, number} dny} other {{days, number} dní}}",
"hours": "{hours, plural, one {hodina} few {{hours, number} hodiny} other {{hours, number} hodin}}",
"minutes": "{minutes, plural, one {minuta} few {{minutes, number} minuty} other {{minutes, number} minut}}",
"months": "{months, plural, one {měsíc} few {{months, number} měsíce} other {{months, number} měsíců}}",
"years": "{years, plural, one {rok} few {{years, number} roky} other {{years, number} let}}"
},
"edit": "Upravit",
"edit_album": "Upravit album",
"edit_avatar": "Upravit avatar",
@ -594,8 +586,6 @@
"editor_crop_tool_h2_aspect_ratios": "Poměr stran",
"editor_crop_tool_h2_rotation": "Otočení",
"email": "E-mail",
"empty": "Prázdné",
"empty_album": "Prázdné album",
"empty_trash": "Vyprázdnit koš",
"empty_trash_confirmation": "Opravdu chcete vysypat koš? Tím se z Immiche trvale odstraní všechny položky v koši.\nTuto akci nelze vrátit zpět!",
"enable": "Povolit",
@ -629,6 +619,7 @@
"failed_to_create_shared_link": "Nepodařilo se vytvořit sdílený odkaz",
"failed_to_edit_shared_link": "Nepodařilo se upravit sdílený odkaz",
"failed_to_get_people": "Nepodařilo se načíst lidi",
"failed_to_keep_this_delete_others": "Nepodařilo se zachovat tuto položku a odstranit ostatní položky",
"failed_to_load_asset": "Nepodařilo se načíst položku",
"failed_to_load_assets": "Nepodařilo se načíst položky",
"failed_to_load_people": "Chyba načítání osob",
@ -656,8 +647,6 @@
"unable_to_change_location": "Nelze změnit polohu",
"unable_to_change_password": "Nelze změnit heslo",
"unable_to_change_visibility": "Nelze změnit viditelnost u {count, plural, one {# osoby} few {# osob} other {# lidí}}",
"unable_to_check_item": "Nelze zkontrolovat položku",
"unable_to_check_items": "Nelze zkontrolovat položky",
"unable_to_complete_oauth_login": "Nelze dokončit OAuth přihlášení",
"unable_to_connect": "Nelze se připojit",
"unable_to_connect_to_server": "Nepodařilo se připojit k serveru",
@ -698,12 +687,10 @@
"unable_to_remove_album_users": "Nelze odebrat uživatele z alba",
"unable_to_remove_api_key": "Nelze odstranit API klíč",
"unable_to_remove_assets_from_shared_link": "Nelze odstranit položky ze sdíleného odkazu",
"unable_to_remove_comment": "Nelze odstranit komentář",
"unable_to_remove_deleted_assets": "Nelze odstranit offline soubory",
"unable_to_remove_library": "Nelze odstranit knihovnu",
"unable_to_remove_partner": "Nelze odebrat partnera",
"unable_to_remove_reaction": "Nelze odstranit reakci",
"unable_to_remove_user": "Nelze odebrat uživatele",
"unable_to_repair_items": "Nelze opravit položky",
"unable_to_reset_password": "Nelze obnovit heslo",
"unable_to_resolve_duplicate": "Nelze vyřešit duplicitu",
@ -733,10 +720,6 @@
"unable_to_update_user": "Nelze aktualizovat uživatele",
"unable_to_upload_file": "Nepodařilo se nahrát soubor"
},
"every_day_at_onepm": "Každý den ve 13:00",
"every_night_at_midnight": "Každý den o půlnoci",
"every_night_at_twoam": "Každou noc ve 2:00",
"every_six_hours": "Každých 6 hodin",
"exif": "Exif",
"exit_slideshow": "Ukončit prezentaci",
"expand_all": "Rozbalit vše",
@ -751,33 +734,28 @@
"external": "Externí",
"external_libraries": "Externí knihovny",
"face_unassigned": "Nepřiřazena",
"failed_to_get_people": "Nepodařilo se načíst lidi",
"failed_to_load_assets": "Nepodařilo se načíst položky",
"favorite": "Oblíbit",
"favorite_or_unfavorite_photo": "Oblíbit nebo zrušit oblíbení fotky",
"favorites": "Oblíbené",
"feature": "Funkce",
"feature_photo_updated": "Hlavní fotka aktualizována",
"featurecollection": "Kolekce Funkcí",
"features": "Funkce",
"features_setting_description": "Správa funkcí aplikace",
"file_name": "Název souboru",
"file_name_or_extension": "Název nebo přípona souboru",
"filename": "Filename",
"files": "",
"filetype": "Filetype",
"filter_people": "Filtrovat lidi",
"find_them_fast": "Najděte je rychle vyhledáním jejich jména",
"fix_incorrect_match": "Opravit nesprávnou shodu",
"folders": "Složky",
"folders_feature_description": "Procházení zobrazení složek s fotografiemi a videi v souborovém systému",
"force_re-scan_library_files": "Vynucené prohledání všech souborů knihovny",
"forward": "Dopředu",
"general": "Obecné",
"get_help": "Získat pomoc",
"getting_started": "Začínáme",
"go_back": "Přejít zpět",
"go_to_search": "Přejít na vyhledávání",
"go_to_share_page": "Přejít na stránku sdílení",
"group_albums_by": "Seskupit alba podle...",
"group_no": "Neseskupovat",
"group_owner": "Seskupit podle uživatele",
@ -803,10 +781,6 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video pořízeno} other {Obrázek požízen}} {date} v místě {city}, {country} uživateli {person1} a {person2}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video pořízeno} other {Obrázek požízen}} {date} v místě {city}, {country} uživateli {person1}, {person2} a {person3}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video pořízeno} other {Obrázek požízen}} {date} v místě {city}, {country} uživateli {person1}, {person2} a {additionalCount, plural, one {dalším # uživatelem} other {dalšími # uživateli}}",
"image_alt_text_people": "{count, plural, =1 {a {person1}} =2 {s {person1} a {person2}} =3 {s {person1}, {person2}, a {person3}} other {s {person1}, {person2}, a {others, number} dalšími}}",
"image_alt_text_place": "v {city}, {country}",
"image_taken": "{isVideo, select, true {Video pořízeno} other {Obrázek požízen}}",
"img": "Img",
"immich_logo": "Immich Logo",
"immich_web_interface": "Webové rozhraní Immich",
"import_from_json": "Import z JSONu",
@ -827,10 +801,11 @@
"invite_people": "Pozvat lidi",
"invite_to_album": "Pozvat do alba",
"items_count": "{count, plural, one {# položka} few {# položky} other {# položek}}",
"job_settings_description": "Správa souběhu úloh",
"jobs": "Úlohy",
"keep": "Ponechat",
"keep_all": "Ponechat vše",
"keep_this_delete_others": "Ponechat tuto, odstranit ostatní",
"kept_this_deleted_others": "Ponechána tato položka a {count, plural, one {odstraněna # položka} few {odstraněny # položky} other {odstraněno # položek}}",
"keyboard_shortcuts": "Klávesové zkratky",
"language": "Jazyk",
"language_setting_description": "Vyberte upřednostňovaný jazyk",
@ -842,31 +817,6 @@
"level": "Úroveň",
"library": "Knihovna",
"library_options": "Možnosti knihovny",
"license_account_info": "Váš účet je licencován",
"license_activated_subtitle": "Děkujeme vám za podporu aplikace Immich a open-source softwaru",
"license_activated_title": "Vaše licence byla úspěšně aktivována",
"license_button_activate": "Aktivovat",
"license_button_buy": "Koupit",
"license_button_buy_license": "Koupit licenci",
"license_button_select": "Vybrat",
"license_failed_activation": "Nepodařilo se aktivovat licenci. Zkontrolujte prosím svůj e-mail pro správný licenční klíč!",
"license_individual_description_1": "1 licence za uživatele na libovolném serveru",
"license_individual_title": "Individuální licence",
"license_info_licensed": "Licencováno",
"license_info_unlicensed": "Nelicencováno",
"license_input_suggestion": "Máte licenci? Zadejte klíč níže",
"license_license_subtitle": "Koupí licence podpoříte Immich",
"license_license_title": "LICENCE",
"license_lifetime_description": "Doživotní licence",
"license_per_server": "Za server",
"license_per_user": "Za uživatele",
"license_server_description_1": "1 licence za každý server",
"license_server_description_2": "Licence za všechny uživatele na serveru",
"license_server_title": "Serverová licence",
"license_trial_info_1": "Používáte nelicencovanou verzi aplikace Immich",
"license_trial_info_2": "Immich používáte přibližně",
"license_trial_info_3": "{accountAge, plural, one {# den} few {# dny} other {# dní}}",
"license_trial_info_4": "Zvažte prosím zakoupení licence na podporu dalšího rozvoje služby",
"light": "Světlý",
"like_deleted": "Lajk smazán",
"link_motion_video": "Připojit pohyblivé video",
@ -966,13 +916,11 @@
"oldest_first": "Nejstarší první",
"onboarding": "Zahájení",
"onboarding_privacy_description": "Následující (volitelné) funkce jsou závislé na externích službách a lze je kdykoli zakázat v nastavení správy.",
"onboarding_storage_template_description": "Pokud je tato funkce povolena, automaticky uspořádá soubory na základě uživatelem definované šablony. Vzhledem k problémům se stabilitou byla tato funkce ve výchozím nastavení vypnuta. Další informace naleznete v [dokumentaci].",
"onboarding_theme_description": "Zvolte si barevné téma pro svou instanci. Můžete to později změnit v nastavení.",
"onboarding_welcome_description": "Nastavíme vaši instanci pomocí několika běžných nastavení.",
"onboarding_welcome_user": "Vítej, {user}",
"online": "Online",
"only_favorites": "Pouze oblíbené",
"only_refreshes_modified_files": "Obnovuje pouze změněné soubory",
"open_in_map_view": "Otevřít v zobrazení mapy",
"open_in_openstreetmap": "Otevřít v OpenStreetMap",
"open_the_search_filters": "Otevřít vyhledávací filtry",
@ -989,7 +937,7 @@
"partner_can_access": "{partner} má přístup",
"partner_can_access_assets": "Všechny vaše fotky a videa kromě těch, které jsou v sekcích Archivováno a Smazáno",
"partner_can_access_location": "Místo, kde byly vaše fotografie pořízeny",
"partner_sharing": "Sdílení partnerů",
"partner_sharing": "Sdílení mezi partnery",
"partners": "Partneři",
"password": "Heslo",
"password_does_not_match": "Heslo se neshoduje",
@ -1010,14 +958,12 @@
"people_edits_count": "Upraveno {count, plural, one {# osoba} few {# osoby} other {# lidí}}",
"people_feature_description": "Procházení fotografií a videí seskupených podle osob",
"people_sidebar_description": "Zobrazit sekci Lidé v postranním panelu",
"perform_library_tasks": "",
"permanent_deletion_warning": "Upozornění na trvalé smazání",
"permanent_deletion_warning_setting_description": "Zobrazit varování při trvalém odstranění položek",
"permanently_delete": "Trvale odstranit",
"permanently_delete_assets_count": "Trvale vymazat {count, plural, one {položku} other {položky}}",
"permanently_delete_assets_count": "Trvale smazat {count, plural, one {položku} other {položky}}",
"permanently_delete_assets_prompt": "Opravdu chcete trvale smazat {count, plural, one {tuto položku} few {tyto <b>#</b> položky} other {těchto <b>#</b> položek}}? Tím {count, plural, one {ji také odstraníte z jejích} other {je také odstraníte z jejich}} alb.",
"permanently_deleted_asset": "Položka trvale odstraněna",
"permanently_deleted_assets": "Trvale {count, plural, one {odstraněna # položka} few {odstraněny # položky} other {odstraněno # položek}}",
"permanently_deleted_assets_count": "{count, plural, one {Položka trvale vymazána} other {Položky trvale vymazány}}",
"person": "Osoba",
"person_hidden": "{name}{hidden, select, true { (skryto)} other {}}",
@ -1033,7 +979,6 @@
"play_memories": "Přehrát vzpomníky",
"play_motion_photo": "Přehrát pohybovou fotografii",
"play_or_pause_video": "Přehrát nebo pozastavit video",
"point": "Bod",
"port": "Port",
"preset": "Přednastavení",
"preview": "Náhled",
@ -1057,19 +1002,19 @@
"purchase_button_reminder": "Připomenout za 30 dní",
"purchase_button_remove_key": "Odstranit klíč",
"purchase_button_select": "Vybrat",
"purchase_failed_activation": "Aktivace se nezdařila! Zkontrolujte prosím svůj e-mail pro správný produktový klíč!",
"purchase_failed_activation": "Aktivace se nezdařila! Zkontrolujte prosím svůj e-mail zda je zadaný produktový klíč bez chyb!",
"purchase_individual_description_1": "Pro jednotlivce",
"purchase_individual_description_2": "Stav podporovatele",
"purchase_individual_title": "Individuální",
"purchase_input_suggestion": "Máte produktový klíč? Zadejte klíč níže",
"purchase_license_subtitle": "Koupit Immich na podporu dalšího rozvoje služby",
"purchase_input_suggestion": "Máte produktový klíč? Zadejte ho níže",
"purchase_license_subtitle": "Koupit Immich a podpořit další rozvoj služby",
"purchase_lifetime_description": "Doživotní platnost",
"purchase_option_title": "MOŽNOSTI NÁKUPU",
"purchase_option_title": "MOŽNOSTI ZAKOUPENÍ",
"purchase_panel_info_1": "Tvorba aplikace Immich vyžaduje spoustu času a úsilí, a proto na ní pracují vývojáři na plný úvazek, aby byla co nejlepší. Naším cílem je, aby se software s otevřeným zdrojovým kódem a etické obchodní postupy staly udržitelným zdrojem příjmů pro vývojáře a aby vznikl ekosystém respektující soukromí se skutečnými alternativami k ziskuchtivým službám.",
"purchase_panel_info_2": "Protože jsme se zavázali, že nebudeme zavádět paywally, nezískáte tímto nákupem žádné další funkce v aplikaci Immich. Spoléháme na uživatele, jako jste vy, že podpoří neustálý vývoj aplikace.",
"purchase_panel_title": "Podpora projektu",
"purchase_per_server": "Na server",
"purchase_per_user": "Na uživatele",
"purchase_panel_title": "Podpořit projekt",
"purchase_per_server": "Za server",
"purchase_per_user": "Za uživatele",
"purchase_remove_product_key": "Odstranění produktového klíče",
"purchase_remove_product_key_prompt": "Opravdu chcete odebrat produktový klíč?",
"purchase_remove_server_product_key": "Odstranění serverového produktového klíče",
@ -1078,12 +1023,10 @@
"purchase_server_description_2": "Stav podporovatele",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Produktový klíč serveru spravuje správce",
"range": "Rozsah",
"rating": "Hodnocení hvězdičkami",
"rating_clear": "Vyčistit hodnocení",
"rating_count": "{count, plural, one {# hvězdička} few {# hvězdičky} other {# hvězdček}}",
"rating_description": "Zobrazit EXIF hodnocení v informačním panelu",
"raw": "Raw",
"reaction_options": "Možnosti reakce",
"read_changelog": "Přečtěte si seznam změn",
"reassign": "Přeřadit",
@ -1091,6 +1034,7 @@
"reassigned_assets_to_new_person": "{count, plural, one {Přeřazena # položka} few {Přeřazeny # položky} other {Přeřazeno # položek}} na novou osobu",
"reassing_hint": "Přiřazení vybraných položek existující osobě",
"recent": "Nedávné",
"recent-albums": "Nedávná alba",
"recent_searches": "Nedávná vyhledávání",
"refresh": "Obnovit",
"refresh_encoded_videos": "Obnovit kódovaná videa",
@ -1112,6 +1056,7 @@
"remove_from_album": "Odstranit z alba",
"remove_from_favorites": "Odstranit z oblíbených",
"remove_from_shared_link": "Odstranit ze sdíleného odkazu",
"remove_url": "Odstranit URL",
"remove_user": "Odebrat uživatele",
"removed_api_key": "Odstraněn API klíč: {name}",
"removed_from_archive": "Odstraněno z archivu",
@ -1128,7 +1073,6 @@
"reset": "Výchozí",
"reset_password": "Obnovit heslo",
"reset_people_visibility": "Obnovit viditelnost lidí",
"reset_settings_to_default": "Obnovit výchozí nastavení",
"reset_to_default": "Obnovit výchozí nastavení",
"resolve_duplicates": "Vyřešit duplicity",
"resolved_all_duplicates": "Vyřešeny všechny duplicity",
@ -1148,9 +1092,7 @@
"saved_settings": "Nastavení uloženo",
"say_something": "Řekněte něco",
"scan_all_libraries": "Prohledat všechny knihovny",
"scan_all_library_files": "Prohledání všech souborů knihovny",
"scan_library": "Prohledat",
"scan_new_library_files": "Hledat nové soubory v knihovně",
"scan_settings": "Nastavení prohledávání",
"scanning_for_album": "Prohledávání alba...",
"search": "Hledat",
@ -1193,7 +1135,6 @@
"selected_count": "{count, plural, one {# vybraný} few {# vybrané} other {# vybraných}}",
"send_message": "Odeslat zprávu",
"send_welcome_email": "Poslat uvítací e-mail",
"server": "Server",
"server_offline": "Server offline",
"server_online": "Server online",
"server_stats": "Statistiky serveru",
@ -1298,17 +1239,17 @@
"they_will_be_merged_together": "Budou sloučeny dohromady",
"third_party_resources": "Zdroje třetích stran",
"time_based_memories": "Časové vzpomínky",
"timeline": "Časová osa",
"timezone": "Časové pásmo",
"to_archive": "Archivovat",
"to_change_password": "Změnit heslo",
"to_favorite": "Oblíbit",
"to_login": "Přihlásit",
"to_parent": "Přejít k rodiči",
"to_root": "Přejít ke kořenu",
"to_trash": "Vyhodit",
"toggle_settings": "Přepnout nastavení",
"toggle_theme": "Přepnout tmavý motiv",
"toggle_visibility": "Přepnout viditelnost",
"total": "Celkem",
"total_usage": "Celkové využití",
"trash": "Koš",
"trash_all": "Vyhodit vše",
@ -1318,12 +1259,10 @@
"trashed_items_will_be_permanently_deleted_after": "Smazané položky budou trvale odstraněny po {days, plural, one {# dni} other {# dnech}}.",
"type": "Typ",
"unarchive": "Odarchivovat",
"unarchived": "Odarchivováno",
"unarchived_count": "{count, plural, one {Odarchivována #} few {Odarchivovány #} other {Odarchivováno #}}",
"unfavorite": "Zrušit oblíbení",
"unhide_person": "Zrušit skrytí osoby",
"unknown": "Neznámý",
"unknown_album": "Neznámé album",
"unknown_year": "Neznámý rok",
"unlimited": "Neomezeně",
"unlink_motion_video": "Odpojit pohyblivé video",
@ -1331,7 +1270,7 @@
"unlinked_oauth_account": "OAuth účet odpojen",
"unnamed_album": "Nepojmenované album",
"unnamed_album_delete_confirmation": "Opravdu chcete toto album smazat?",
"unnamed_share": "Nejmenované sdílení",
"unnamed_share": "Nepojmenované sdílení",
"unsaved_change": "Neuložená změna",
"unselect_all": "Zrušit výběr všech",
"unselect_all_duplicates": "Zrušit výběr všech duplicit",
@ -1355,13 +1294,13 @@
"use_custom_date_range": "Použít vlastní rozsah dat",
"user": "Uživatel",
"user_id": "ID uživatele",
"user_license_settings": "Licence",
"user_license_settings_description": "Správa licence",
"user_liked": "Uživateli {user} se {type, select, photo {líbila tato fotka} video {líbilo toto video} asset {líbila tato položka} other {to líbilo}}",
"user_purchase_settings": "Nákup",
"user_purchase_settings_description": "Správa vašeho nákupu",
"user_role_set": "Uživatel {user} nastaven jako {role}",
"user_usage_detail": "Podrobnosti využití uživatelů",
"user_usage_stats": "Statistiky používání účtu",
"user_usage_stats_description": "Zobrazit statistiky používání účtu",
"username": "Uživateleské jméno",
"users": "Uživatelé",
"utilities": "Nástroje",
@ -1369,7 +1308,7 @@
"variables": "Proměnné",
"version": "Verze",
"version_announcement_closing": "Váš přítel Alex",
"version_announcement_message": "Ahoj příteli, je tu nová verze aplikace, věnuj prosím čas přečtení <link>poznámek k vydání</link> a zajisti si, aby <code>docker-compose.yml</code> a nastavení <code>.env</code> bylo aktuální, a aby nedošlo k chybné konfiguraci, zejména pokud používáš WatchTower nebo jiný mechanismus, který se stará o automatickou aktualizaci aplikace.",
"version_announcement_message": "Ahoj! K dispozici je nová verze aplikace Immich. Věnujte prosím chvíli přečtení <link>poznámek k vydání</link> a ujistěte se, že je vaše nastavení aktuální, abyste předešli případným chybným konfiguracím, zejména pokud používáte WatchTower nebo jiný mechanismus, který se stará o automatickou aktualizaci instance aplikace Immich.",
"version_history": "Historie verzí",
"version_history_item": "Nainstalováno {version} dne {date}",
"video": "Video",
@ -1383,10 +1322,10 @@
"view_all_users": "Zobrazit všechny uživatele",
"view_in_timeline": "Zobrazit na časové ose",
"view_links": "Zobrazit odkazy",
"view_name": "Zobrazit",
"view_next_asset": "Zobrazit další položku",
"view_previous_asset": "Zobrazit předchozí položku",
"view_stack": "Zobrazit seskupení",
"viewer": "Prohlížeč",
"visibility_changed": "Viditelnost změněna u {count, plural, one {# osoby} few {# osob} other {# lidí}}",
"waiting": "Čekající",
"warning": "Upozornění",

View file

@ -23,6 +23,7 @@
"add_to": "Мӗн те пулин хуш...",
"add_to_album": "Альбома хуш",
"add_to_shared_album": "Пӗрлехи альбома хуш",
"add_url": "URL хушӑр",
"added_to_archive": "Архива хушнӑ",
"added_to_favorites": "Суйласа илнине хушнӑ",
"added_to_favorites_count": "Суйласа илнине {count, number} хушнӑ",
@ -45,5 +46,7 @@
"image_preview_title": "Малтанлӑха пӑхмалли ӗнерлевсем",
"image_quality": "Пахалӑх",
"image_resolution": "Виҫе"
}
},
"user_usage_stats": "Шута ҫырни усӑ курмалли статистика",
"user_usage_stats_description": "Шута ҫырни усӑ курмалли статистикӑна пӑхасси"
}

View file

@ -2,12 +2,12 @@
"about": "Om",
"account": "Konto",
"account_settings": "Kontoindstillinger",
"acknowledge": "Anerkend",
"acknowledge": "Godkend",
"action": "Handling",
"actions": "Handlinger",
"active": "Aktive",
"activity": "Aktivitet",
"activity_changed": "Aktivitet er {enabled, select, true {aktiveret} other {deaktiveret}}",
"activity_changed": "Aktivitet er {aktiveret, valg, sand {aktiveret} andet {deaktiveret}}",
"add": "Tilføj",
"add_a_description": "Tilføj en beskrivelse",
"add_a_location": "Tilføj en placering",
@ -23,16 +23,23 @@
"add_to": "Tilføj til...",
"add_to_album": "Tilføj til album",
"add_to_shared_album": "Tilføj til delt album",
"add_url": "Tilføj URL",
"added_to_archive": "Tilføjet til arkiv",
"added_to_favorites": "Tilføjet til favoritter",
"added_to_favorites_count": "Tilføjet {count, number} til favoritter",
"admin": {
"add_exclusion_pattern_description": "Tilføj udelukkelsesmønstre. Globbing ved hjælp af *, ** og ? understøttes. For at ignorere alle filer i enhver mappe med navnet \"Raw\", brug \"**/Raw/**\". For at ignorere alle filer, der slutter på \".tif\", brug \"**/*.tif\". For at ignorere en absolut sti, brug \"/sti/til/ignoreret/**\".",
"asset_offline_description": "Denne eksterne biblioteksressource findes ikke længere på disken og er blevet flyttet til papirkurven. Hvis filen blev flyttet inde i biblioteket, skal du tjekke din tidslinje for den nye tilsvarende ressource. For at gendanne denne ressource skal du sikre, at filstien nedenfor kan tilgås af Immich og scanne biblioteket.",
"authentication_settings": "Godkendelsesindstillinger",
"authentication_settings_description": "Administrer adgangskode, OAuth og andre godkendelsesindstillinger",
"authentication_settings_disable_all": "Er du sikker på at du vil deaktivere alle loginmuligheder? Login vil blive helt deaktiveret.",
"authentication_settings_reenable": "Brug en <link>server-kommando</link> for at genaktivere.",
"background_task_job": "Baggrundsopgaver",
"backup_database": "Backup Database",
"backup_database_enable_description": "Slå database-backup til",
"backup_keep_last_amount": "Mængde af tidligere backups, der skal gemmes",
"backup_settings": "Backup-indstillinger",
"backup_settings_description": "Administrer backupindstillinger for database",
"check_all": "Tjek Alle",
"cleared_jobs": "Ryddet jobs til: {job}",
"config_set_by_file": "konfigurationen er i øjeblikket indstillet af en konfigurations fil",
@ -41,9 +48,10 @@
"confirm_email_below": "For at bekræfte, skriv \"{email}\" herunder",
"confirm_reprocess_all_faces": "Er du sikker på, at du vil genbehandle alle ansigter? Dette vil også rydde navngivne personer.",
"confirm_user_password_reset": "Er du sikker på, at du vil nulstille {user}s adgangskode?",
"crontab_guru": "Crontab Guru",
"create_job": "Opret job",
"cron_expression": "Cron formel",
"cron_expression_description": "Indstil skannings intervallet i cron format. For mere information se: <link>Crontab Guru</link>",
"disable_login": "Deaktiver login",
"disabled": "",
"duplicate_detection_job_description": "Kør maskinlæring på mediefiler for at opdage lignende billeder. Er afhængig af Smart Søgning",
"exclusion_pattern_description": "Ekskluderingsmønstre lader dig ignorere filer og mapper, når du scanner dit bibliotek. Dette er nyttigt, hvis du har mapper, der indeholder filer, du ikke vil importere, såsom RAW-filer.",
"external_library_created_at": "Eksternt bibliotek (oprettet {date})",
@ -54,21 +62,20 @@
"failed_job_command": "Kommando {command} mislykkedes for job: {job}",
"force_delete_user_warning": "ADVARSEL: Dette vil øjeblikkeligt fjerne brugeren og alle Billeder/Videoer. Dette kan ikke fortrydes, og filerne kan ikke gendannes.",
"forcing_refresh_library_files": "Tvinger genopfriskning af alle biblioteksfiler",
"image_format": "Format",
"image_format_description": "WebP producerer mindre filer end JPEG, men er langsommere at komprimere.",
"image_prefer_embedded_preview": "Foretræk indlejret forhåndsvisning",
"image_prefer_embedded_preview_setting_description": "Brug indlejrede forhåndsvisninger i RAW fotos som input til billedbehandling, når det er tilgængeligt. Dette kan give mere nøjagtige farver for nogle billeder, men kvaliteten af forhåndsvisningen er kameraafhængig, og billedet kan have flere komprimeringsartefakter.",
"image_prefer_wide_gamut": "Foretrækker bred farveskala",
"image_prefer_wide_gamut_setting_description": "Brug Display P3 til miniaturebilleder. Dette bevarer billeder med brede farveskalaers dynamik bedre, men billeder kan komme til at se anderledes ud på gamle enheder med en gammel browserversion. sRGB-billeder bliver beholdt som sRGB for at undgå farveskift.",
"image_preview_format": "Forhåndsvisningsformat",
"image_preview_resolution": "Forhåndsvisnings opløsning",
"image_preview_resolution_description": "Bliver brugt når et enkelt billede betragtes og ved maskinlæring. Højere opløsninger kan bevare flere detaljer, men tager længere tid at indkode, har større filstørrelser, og kan gøre appoplevelsen sløvere.",
"image_preview_description": "Mellemstørrelse billede med fjernet metadata, der bruges, når du ser en enkelt mediefil og til machine learning",
"image_preview_quality_description": "Kvalitet af forhåndsvisning fra 1-100. Højere er bedre, men producerer større filer og kan reducere apprespons. Valg af en lav værdi kan påvirke kvaliteten af machine learning.",
"image_preview_title": "Indstillinger for forhåndsvisning",
"image_quality": "Kvalitet",
"image_quality_description": "Billedkvalitet fra 1-100. Højere er bedre for kvaliteten, men producerer større filer. Denne indstilling påvirker forhåndsvisningen og miniaturebillederne.",
"image_resolution": "Opløsning",
"image_settings": "Billedindstillinger",
"image_settings_description": "Administrer kvaliteten og opløsningen af genererede billeder",
"image_thumbnail_format": "Miniatureformat",
"image_thumbnail_resolution": "Miniature opløsning",
"image_thumbnail_resolution_description": "Bruges ved visning af grupper af billeder (hovedtidslinje, albumvisning osv.). Højere opløsninger kan bevare flere detaljer, men det tager længere tid at kode, har større filstørrelser og kan reducere appens reaktionsevne.",
"image_thumbnail_title": "Thumbnail-indstillinger",
"job_concurrency": "{job} samtidighed",
"job_not_concurrency_safe": "Denne opgave er ikke sikker at køre samtidigt med andre.",
"job_settings": "Jobindstillinger",
@ -77,9 +84,6 @@
"jobs_delayed": "{jobCount, plural, one {# forsinket} other {# forsinkede}}",
"jobs_failed": "{jobCount, plural, one {# fejlet} other {# fejlede}}",
"library_created": "Skabte bibliotek: {library}",
"library_cron_expression": "Cron-udtryk",
"library_cron_expression_description": "Sæt skannings interval ved at bruge cron formatet. For mere information se dokumentation her <link>Crontab Guru</link>",
"library_cron_expression_presets": "Cron-udtryksforudindstillinger",
"library_deleted": "Bibliotek slettet",
"library_import_path_description": "Angiv en mappe, der skal importeres. Denne mappe, inklusive undermapper, vil blive scannet for billeder og videoer.",
"library_scanning": "Periodisk scanning",
@ -198,19 +202,18 @@
"password_settings": "Adgangskodelogin",
"password_settings_description": "Administrer indstillinger for adgangskodelogin",
"paths_validated_successfully": "Alle stier valideret med succes",
"person_cleanup_job": "Person-oprydning",
"quota_size_gib": "Kvotestørrelse (GiB)",
"refreshing_all_libraries": "Opdaterer alle biblioteker",
"registration": "Administratorregistrering",
"registration_description": "Da du er den første bruger i systemet, får du tildelt rollen som administrator og ansvar for administration og oprettelsen af nye brugere.",
"removing_deleted_files": "Fjerner offline-filer",
"repair_all": "Reparér alle",
"repair_matched_items": "Har parret {count, plural, one {# element} other {# elementer}}",
"repaired_items": "Reparerede {count, plural, one {# element} other {# elementer}}",
"require_password_change_on_login": "Kræv at brugeren skifter adgangskode ved første login",
"reset_settings_to_default": "Nulstil indstillingerne til standard",
"reset_settings_to_recent_saved": "Nulstil indstillinger til de senest gemte indstillinger",
"scanning_library_for_changed_files": "Skanner bibliotek efter ændrede filer",
"scanning_library_for_new_files": "Skanner bibliotek efter nye filer",
"scanning_library": "Scanner bibliotek",
"send_welcome_email": "Send velkomst-email",
"server_external_domain_settings": "Eksternt domæne",
"server_external_domain_settings_description": "Domæne til offentligt delte links, inklusiv http(s)://",
@ -245,7 +248,6 @@
"these_files_matched_by_checksum": "Disse filer er blevet matchet med deres checksummer",
"thumbnail_generation_job": "Generér miniaturebilleder",
"thumbnail_generation_job_description": "Generér store, små og slørede miniaturebilleder for hver mediefil, såvel som miniaturebilleder for hver person",
"transcode_policy_description": "",
"transcoding_acceleration_api": "Accelerations-API",
"transcoding_acceleration_api_description": "API'en som interagerer med din enhed for at accelerere transkodning. Denne er indstilling er \"i bedste fald\": Den vil falde tilbage til software-transkodning ved svigt. VP9 virker måske, måske ikke, afhængigt af dit hardware.",
"transcoding_acceleration_nvenc": "NVENC (kræver NVIDIA GPU)",
@ -297,8 +299,6 @@
"transcoding_threads_description": "Højere værdier medfører hurtigere indkodning, men efterlader mindre plads til at serveren kan foretage andre opgaver når aktiv. Denne værdi bør ikke være større end antallet af CPU-kerner. Maksimerer udnyttelse hvis sat til 0.",
"transcoding_tone_mapping": "Tone-kortlægning",
"transcoding_tone_mapping_description": "Forsøger at bevare HDR-videoers udseende når konverteret til SDR. Hver algoritme har forskellige afvejninger af farve, detalje og lysstyrke. Hable bevarer farve og Reinhard bevarer lysstyrke.",
"transcoding_tone_mapping_npl": "Tone-kortlægning NPL",
"transcoding_tone_mapping_npl_description": "Farver vil blive justeret til at se normale ud for en skærm med denne lysstyrke. Ulogisk nok øger lavere værdier videoens lysstyrke og omvendt, siden det kompenserer for skærmens lysstyrke. 0 sætter debbe værdi automatisk.",
"transcoding_transcode_policy": "Transkodningspolitik",
"transcoding_transcode_policy_description": "Politik for hvornår en video skal transkodes. HDR videoer vil altid blive transkodet (bortset fra, hvis transkodning er slået fra).",
"transcoding_two_pass_encoding": "To-omgangsindkodning",
@ -312,6 +312,7 @@
"trash_settings_description": "Administrér skraldeindstillinger",
"untracked_files": "Utrackede filer",
"untracked_files_description": "Applikationen holder ikke styr på disse filer. De kan være resultatet af mislykkede flytninger, afbrudte uploads eller være efterladt på grund af en fejl",
"user_cleanup_job": "Bruger-oprydning",
"user_delete_delay": "<b>{user}</b>'s konto og mediefiler vil blive planlagt til permanent sletning om {delay, plural, one {# dag} other {# dage}}.",
"user_delete_delay_settings": "Slet forsinkelse",
"user_delete_delay_settings_description": "Antal dage efter fjernelse for permanent at slette en brugers konto og mediefiler. Opgaven for sletning af brugere kører ved midnat for at tjekke efter brugere, der er klar til sletning. Ændringer i denne indstilling vil blive evalueret ved næste udførelse.",
@ -356,6 +357,7 @@
"album_updated_setting_description": "Modtag en emailnotifikation når et delt album får nye mediefiler",
"album_user_left": "Forlod {album}",
"album_user_removed": "Fjernede {user}",
"album_with_link_access": "Lad alle med linket se billeder og personer i dette album.",
"albums": "Albummer",
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albummer}}",
"all": "Alt",
@ -377,8 +379,17 @@
"archive_or_unarchive_photo": "Arkivér eller dearkivér billede",
"archive_size": "Arkiv størelse",
"archive_size_description": "Konfigurer arkivstørrelsen for downloads (i GiB)",
"archived": "Arkiveret",
"are_these_the_same_person": "Er disse den samme person?",
"are_you_sure_to_do_this": "Er du sikker på, at du vil gøre det her?",
"asset_added_to_album": "Tilføjet til album",
"asset_adding_to_album": "Tilføjer til album...",
"asset_description_updated": "Mediefilsbeskrivelse er blevet opdateret",
"asset_filename_is_offline": "Mediefil {filename} er offline",
"asset_offline": "Mediefil offline",
"asset_offline_description": "Denne eksterne mediefil kan ikke længere findes på drevet. Kontakt venligst din Immich-administrator for hjælp.",
"asset_skipped": "Sprunget over",
"asset_uploaded": "Uploaded",
"asset_uploading": "Uploader...",
"assets": "elementer",
"authorized_devices": "Tilladte enheder",
"back": "Tilbage",
@ -389,6 +400,7 @@
"build_image": "Byggefil",
"bulk_delete_duplicates_confirmation": "Er du sikker på, at du vil slette alle {count, plural, one {# duplicate asset} other {# duplicate assets}}? Dette vil beholde den største fil i hver gruppe og slette alle dubletter. Denne handling kan ikke fortrydes!",
"bulk_keep_duplicates_confirmation": "Er du sikker på, at du vil beholde {count, plural, one {# duplicate asset} other {# duplicate assets}}? Dette vil løse alle dubletgrupper uden at slette noget.",
"buy": "Køb Immich",
"camera": "Kamera",
"camera_brand": "Kameramærke",
"camera_model": "Kameramodel",
@ -397,10 +409,6 @@
"cannot_merge_people": "Kan ikke sammenflette personer",
"cannot_undo_this_action": "Du kan ikke fortryde denne handling!",
"cannot_update_the_description": "Kan ikke opdatere beskrivelsen",
"cant_apply_changes": "Kan ikke anvende ændringer",
"cant_get_faces": "Kan ikke hente ansigter",
"cant_search_people": "Kan ikke søge i personer",
"cant_search_places": "Kan ikke søge i steder",
"change_date": "Ændr dato",
"change_expiration_time": "Ændr udløbstidspunkt",
"change_location": "Ændr sted",
@ -425,7 +433,9 @@
"collapse_all": "Klap alle sammen",
"color": "Farve",
"color_theme": "Farvetema",
"comment_deleted": "Kommentar slettet",
"comment_options": "Kommentarindstillinger",
"comments_and_likes": "Kommentarer og likes",
"comments_are_disabled": "Kommentarer er slået fra",
"confirm": "Bekræft",
"confirm_admin_password": "Bekræft administratoradgangskode",
@ -481,6 +491,7 @@
"direction": "Retning",
"disabled": "Deaktiveret",
"disallow_edits": "Deaktivér redigeringer",
"discord": "Discord",
"discover": "Opdag",
"dismiss_all_errors": "Afvis alle fejl",
"dismiss_error": "Afvis fejl",
@ -488,6 +499,7 @@
"display_order": "Display-rækkefølge",
"display_original_photos": "Vis originale billeder",
"display_original_photos_setting_description": "Foretræk at vise det originale billede frem for miniaturebilleder når den originale fil er web-kompatibelt. Dette kan gøre billedvisning langsommere.",
"do_not_show_again": "Vis ikke denne besked igen",
"done": "Færdig",
"download": "Hent",
"download_settings": "Download",
@ -495,13 +507,7 @@
"downloading": "Downloader",
"duplicates": "Duplikater",
"duration": "Varighed",
"durations": {
"days": "{days, plural, one {dag} other {{days, number} dage}}",
"hours": "{hours, plural, one {time} other {{hours, number} timer}}",
"minutes": "{minutes, plural, one {minut} other {{minutes, number} minutter}}",
"months": "{months, plural, one {måned} other {{months, number} måneder}}",
"years": "{years, plural, one {år} other {{years, number} år}}"
},
"edit": "Rediger",
"edit_album": "Redigér album",
"edit_avatar": "Redigér avatar",
"edit_date": "Redigér dato",
@ -519,21 +525,40 @@
"edit_user": "Redigér bruger",
"edited": "Redigeret",
"editor": "Redaktør",
"editor_close_without_save_prompt": "Ændringerne vil ikke blive gemt",
"editor_close_without_save_title": "Luk editor?",
"editor_crop_tool_h2_rotation": "Rotation",
"email": "E-mail",
"empty": "",
"empty_album": "Tomt album",
"empty_trash": "Tøm papirkurv",
"enable": "Aktivér",
"enabled": "Aktiveret",
"end_date": "Slutdato",
"error": "Fejl",
"error_loading_image": "Fejl ved indlæsning af billede",
"error_title": "Fejl - Noget gik galt",
"errors": {
"cannot_navigate_next_asset": "Kan ikke navigere til næste mediefil",
"cannot_navigate_previous_asset": "Kan ikke navigere til forrige mediefil",
"cleared_jobs": "Ryddede opgaver for: {job}",
"error_adding_assets_to_album": "Fejl i tilføjelse af mediefiler til album",
"error_adding_users_to_album": "Fejl i tilføjelse af brugere til album",
"error_deleting_shared_user": "Fejl i sletning af delt bruger",
"error_downloading": "Fejl i download af {filename}",
"error_hiding_buy_button": "Fejl i skjulning af køb-knap",
"error_removing_assets_from_album": "Fejl i fjernelse af mediefiler fra album. Tjek konsol for flere detaljer",
"exclusion_pattern_already_exists": "Denne udelukkelsesmønster findes allerede.",
"failed_job_command": "Kommando {command} slog fejl for opgave: {job}",
"failed_to_create_album": "Oprettelse af album mislykkedes",
"failed_to_create_shared_link": "Oprettelse af delt link mislykkedes",
"failed_to_edit_shared_link": "Redigering af delt link mislykkedes",
"failed_to_load_asset": "Indlæsning af mediefil mislykkedes",
"failed_to_load_assets": "Indlæsning af mediefiler mislykkedes",
"failed_to_load_people": "Indlæsning af personer mislykkedes",
"failed_to_remove_product_key": "Fjernelse af produktnøgle mislykkedes",
"import_path_already_exists": "Denne importsti findes allerede.",
"incorrect_email_or_password": "Forkert email eller kodeord",
"paths_validation_failed": "{paths, plural, one {# sti} other {# stier}} slog fejl ved validering",
"profile_picture_transparent_pixels": "Profilbilleder kan ikke have gennemsigtige pixels. Zoom venligst ind og/eller flyt billedet.",
"quota_higher_than_disk_size": "Du har sat en kvote der er større end disken",
"repair_unable_to_check_items": "Kunne ikke tjekke {count, select, one {element} other {elementer}}",
"unable_to_add_album_users": "Ikke i stand til at tilføje brugere til album",
@ -545,8 +570,6 @@
"unable_to_change_date": "Ikke i stand til at ændre dato",
"unable_to_change_location": "Ikke i stand til at ændre sted",
"unable_to_change_password": "Kunne ikke ændre adgangskode",
"unable_to_check_item": "",
"unable_to_check_items": "",
"unable_to_copy_to_clipboard": "Kan ikke kopiere til udklipsholder, sørg for at du tilgår siden gennem https",
"unable_to_create_admin_account": "",
"unable_to_create_api_key": "Kunne ikke oprette ny API-nøgle",
@ -554,6 +577,7 @@
"unable_to_create_user": "Ikke i stand til at oprette bruger",
"unable_to_delete_album": "Ikke i stand til at slette album",
"unable_to_delete_asset": "Kan ikke slette mediefil",
"unable_to_delete_assets": "Fejl i sletning af mediefiler",
"unable_to_delete_exclusion_pattern": "Kunne ikke slette udelukkelsesmønster",
"unable_to_delete_import_path": "Kunne ikke slette importsti",
"unable_to_delete_shared_link": "Kunne ikke slette delt link",
@ -573,12 +597,10 @@
"unable_to_refresh_user": "Ikke i stand til at genopfriske bruger",
"unable_to_remove_album_users": "Ikke i stand til at fjerne brugere fra album",
"unable_to_remove_api_key": "Kunne ikke fjerne API-nøgle",
"unable_to_remove_comment": "",
"unable_to_remove_deleted_assets": "Kunne ikke fjerne offlinefiler",
"unable_to_remove_library": "Ikke i stand til at fjerne bibliotek",
"unable_to_remove_partner": "Ikke i stand til at fjerne partner",
"unable_to_remove_reaction": "Ikke i stand til at reaktion",
"unable_to_remove_user": "",
"unable_to_repair_items": "Ikke i stand til at reparere ting",
"unable_to_reset_password": "Ikke i stand til at nulstille adgangskode",
"unable_to_resolve_duplicate": "Kunne ikke opklare duplikat",
@ -602,52 +624,51 @@
"unable_to_update_timeline_display_status": "Kunne ikke opdate status for tidslinjevisning",
"unable_to_update_user": "Ikke i stand til at opdatere bruger"
},
"every_day_at_onepm": "",
"every_night_at_midnight": "",
"every_night_at_twoam": "",
"every_six_hours": "",
"exif": "Exif",
"exit_slideshow": "Forlad slideshow",
"expand_all": "Udvid alle",
"expire_after": "Udløb efter",
"expired": "Udløbet",
"expires_date": "Udløber {date}",
"explore": "Udforsk",
"export": "Eksportér",
"export_as_json": "Eksportér som JSON",
"extension": "Udvidelse",
"external": "Ekstern",
"external_libraries": "Eksterne biblioteker",
"failed_to_get_people": "At hente personer slog fejl",
"favorite": "Favorit",
"favorite_or_unfavorite_photo": "Tilføj eller fjern fra yndlingsbilleder",
"favorites": "Favoritter",
"feature": "",
"feature_photo_updated": "Forsidebillede uploadet",
"featurecollection": "",
"features": "Funktioner",
"features_setting_description": "Administrer app-funktioner",
"file_name": "Filnavn",
"file_name_or_extension": "Filnavn eller filtype",
"filename": "Filnavn",
"files": "",
"filetype": "Filtype",
"filter_people": "Filtrér personer",
"find_them_fast": "Find dem hurtigt med søgning via navn",
"fix_incorrect_match": "Fix forkert match",
"force_re-scan_library_files": "Tving genskanning af alle biblioteksfiler",
"folders": "Mapper",
"forward": "Fremad",
"general": "Generel",
"get_help": "Få hjælp",
"getting_started": "Kom godt i gang",
"go_back": "Gå tilbage",
"go_to_search": "Gå til søgning",
"go_to_share_page": "Gå til delingsside",
"group_albums_by": "Gruppér albummer efter...",
"group_no": "Ingen gruppering",
"has_quota": "Har kvote",
"hi_user": "Hej {name} ({email})",
"hide_all_people": "Skjul alle personer",
"hide_gallery": "Gem galleri",
"hide_named_person": "Skjul person {name}",
"hide_password": "Gem adgangskode",
"hide_person": "Gem person",
"hide_unnamed_people": "Skjul unavngivne personer",
"host": "Host",
"hour": "Time",
"image": "Billede",
"img": "",
"immich_logo": "Immich logo",
"immich_web_interface": "Immich webinterface",
"import_from_json": "Importér fra JSON",
@ -666,13 +687,14 @@
},
"invite_people": "Inviter personer",
"invite_to_album": "Inviter til album",
"job_settings_description": "",
"jobs": "Opgaver",
"keep": "Behold",
"keep_all": "Behold alle",
"keyboard_shortcuts": "Tastaturgenveje",
"language": "Sprog",
"language_setting_description": "Vælg dit foretrukne sprog",
"last_seen": "Sidst set",
"latest_version": "Seneste version",
"leave": "Forlad",
"let_others_respond": "Lad andre svare",
"level": "Niveau",
@ -687,7 +709,12 @@
"loading_search_results_failed": "At loade søgeresultater slog fejl",
"log_out": "Log ud",
"log_out_all_devices": "Log ud af alle enheder",
"logged_out_all_devices": "Logget ud af alle enheder",
"logged_out_device": "Logget ud af enhed",
"login": "Log ind",
"login_has_been_disabled": "Login er blevet deaktiveret.",
"logout_all_device_confirmation": "Er du sikker på, at du vil logge ud af alle enheder?",
"logout_this_device_confirmation": "Er du sikker på, at du vil logge denne enhed ud?",
"look": "Kig",
"loop_videos": "Gentag videoer",
"loop_videos_description": "Aktivér for at genafspille videoer automatisk i detaljeret visning.",
@ -721,15 +748,19 @@
"name": "Navn",
"name_or_nickname": "Navn eller kælenavn",
"never": "aldrig",
"new_album": "Nyt album",
"new_api_key": "Ny API-nøgle",
"new_password": "Ny adgangskode",
"new_person": "Ny person",
"new_user_created": "Ny bruger oprettet",
"new_version_available": "NY VERSION TILGÆNGELIG",
"newest_first": "Nyeste først",
"next": "Næste",
"next_memory": "Næste minde",
"no": "Nej",
"no_albums_message": "Opret et album for at organisere dine billeder og videoer",
"no_albums_with_name_yet": "Det ser ud til, at du ikke har noget album med dette navn endnu.",
"no_albums_yet": "Det ser ud til, at du ikke har nogen album endnu.",
"no_archived_assets_message": "Arkivér billeder og fotos for at gemme dem væk fra dit Billed-view",
"no_assets_message": "KLIK FOR AT UPLOADE DIT FØRSTE BILLEDE",
"no_duplicates_found": "Ingen duplikater fundet.",
@ -740,6 +771,7 @@
"no_name": "Intet navn",
"no_places": "Ingen steder",
"no_results": "Ingen resultater",
"no_results_description": "Prøv et synonym eller et mere generelt søgeord",
"no_shared_albums_message": "Opret et album for at dele billeder og videoer med personer i dit netværk",
"not_in_any_album": "Ikke i noget album",
"note_apply_storage_label_to_previously_uploaded assets": "Bemærk: For at anvende Lagringsmærkat på tidligere uploadede medier, kør",
@ -749,17 +781,23 @@
"notifications": "Notifikationer",
"notifications_setting_description": "Administrér notifikationer",
"oauth": "OAuth",
"official_immich_resources": "Officielle Immich-ressourcer",
"offline": "Offline",
"offline_paths": "Offline-stier",
"offline_paths_description": "Disse resultater kan være på grund af manuel sletning af filer, som ikke er en del af et eksternt bibliotek.",
"ok": "Ok",
"oldest_first": "Ældste først",
"onboarding_privacy_description": "Følgende (valgfrie) funktioner er afhængige af eksterne tjenester, og kan til enhver tid deaktiveres i administrationsindstillingerne.",
"onboarding_welcome_user": "Velkommen, {user}",
"online": "Online",
"only_favorites": "Kun favoritter",
"only_refreshes_modified_files": "Kun genopfrisk ændrede filer",
"open_in_map_view": "Åben i kortvisning",
"open_in_openstreetmap": "Åben i OpenStreetMap",
"open_the_search_filters": "Åbn søgefiltre",
"options": "Handlinger",
"or": "eller",
"organize_your_library": "Organisér dit bibliotek",
"original": "original",
"other": "Andet",
"other_devices": "Andre enheder",
"other_variables": "Andre variable",
@ -787,11 +825,11 @@
"pending": "Afventer",
"people": "Personer",
"people_sidebar_description": "Vis et link til Personer i sidepanelet",
"perform_library_tasks": "",
"permanent_deletion_warning": "Advarsel om permanent sletning",
"permanent_deletion_warning_setting_description": "Vis en advarsel, når medier slettes permanent",
"permanently_delete": "Slet permanent",
"permanently_deleted_asset": "Permanent slettet medie",
"person": "Person",
"photos": "Billeder",
"photos_count": "{count, plural, one {{count, number} Billede} other {{count, number} Billeder}}",
"photos_from_previous_years": "Billeder fra tidligere år",
@ -802,7 +840,6 @@
"play_memories": "Afspil minder",
"play_motion_photo": "Afspil bevægelsesbillede",
"play_or_pause_video": "Afspil eller paus video",
"point": "",
"port": "Port",
"preset": "Forudindstilling",
"preview": "Forhåndsvisning",
@ -812,8 +849,6 @@
"primary": "Primære",
"profile_picture_set": "Profilbillede sat.",
"public_share": "Offentlig deling",
"range": "",
"raw": "",
"reaction_options": "Reaktionsindstillinger",
"read_changelog": "Læs ændringslog",
"recent": "For nylig",
@ -836,7 +871,6 @@
"reset": "Nulstil",
"reset_password": "Nulstil adgangskode",
"reset_people_visibility": "Nulstil personsynlighed",
"reset_settings_to_default": "",
"restore": "Gendan",
"restore_all": "Gendan alle",
"restore_user": "Gendan bruger",
@ -850,8 +884,6 @@
"saved_settings": "Gemte indstillinger",
"say_something": "Skriv noget",
"scan_all_libraries": "Skan gennem alle biblioteker",
"scan_all_library_files": "Genskan alle biblioteksfiler",
"scan_new_library_files": "Skan nye biblioteksfiler",
"scan_settings": "Skanningsindstillinger",
"search": "Søg",
"search_albums": "Søg i albummer",
@ -882,7 +914,6 @@
"selected": "Valgt",
"send_message": "Send besked",
"send_welcome_email": "Send velkomstemail",
"server": "Server",
"server_stats": "Serverstatus",
"set": "Sæt",
"set_as_album_cover": "Sæt som albumcover",
@ -953,7 +984,6 @@
"to_favorite": "Gør til favorit",
"toggle_settings": "Slå indstillinger til eller fra",
"toggle_theme": "Slå mørkt tema til eller fra",
"toggle_visibility": "Slå synlighed til eller fra",
"total_usage": "Samlet forbrug",
"trash": "Papirkurv",
"trash_all": "Smid alle ud",
@ -961,11 +991,9 @@
"trashed_items_will_be_permanently_deleted_after": "Mediefiler i skraldespanden vil blive slettet permanent efter {days, plural, one {# dag} other {# dage}}.",
"type": "Type",
"unarchive": "Afakivér",
"unarchived": "Uarkiveret",
"unfavorite": "Fjern favorit",
"unhide_person": "Hold op med at gemme person væk",
"unknown": "Ukendt",
"unknown_album": "Ukendt album",
"unknown_year": "Ukendt år",
"unlimited": "Ubegrænset",
"unlink_oauth": "Frakobl OAuth",
@ -983,6 +1011,8 @@
"user": "Bruger",
"user_id": "Bruger-ID",
"user_usage_detail": "Detaljer om brugers forbrug",
"user_usage_stats": "Konto anvendelsesstatistik",
"user_usage_stats_description": "Vis konto anvendelsesstatistik",
"username": "Brugernavn",
"users": "Brugere",
"utilities": "Værktøjer",
@ -999,7 +1029,6 @@
"view_links": "Vis links",
"view_next_asset": "Se næste medie",
"view_previous_asset": "Se forrige medie",
"viewer": "Viewer",
"waiting": "Venter",
"week": "Uge",
"welcome": "Velkommen",

View file

@ -11,7 +11,7 @@
"add": "Hinzufügen",
"add_a_description": "Beschreibung hinzufügen",
"add_a_location": "Standort hinzufügen",
"add_a_name": "Namen hinzufügen",
"add_a_name": "Name hinzufügen",
"add_a_title": "Titel hinzufügen",
"add_exclusion_pattern": "Ausschlussmuster hinzufügen",
"add_import_path": "Importpfad hinzufügen",
@ -23,6 +23,7 @@
"add_to": "Hinzufügen zu ...",
"add_to_album": "Zu Album hinzufügen",
"add_to_shared_album": "Zu geteiltem Album hinzufügen",
"add_url": "URL hinzufügen",
"added_to_archive": "Zum Archiv hinzugefügt",
"added_to_favorites": "Zu Favoriten hinzugefügt",
"added_to_favorites_count": "{count, number} zu Favoriten hinzugefügt",
@ -34,6 +35,11 @@
"authentication_settings_disable_all": "Bist du sicher, dass du alle Anmeldemethoden deaktivieren willst? Die Anmeldung wird vollständig deaktiviert.",
"authentication_settings_reenable": "Nutze einen <link>Server-Befehl</link> zur Reaktivierung.",
"background_task_job": "Hintergrund-Aufgaben",
"backup_database": "Datenbank sichern",
"backup_database_enable_description": "Sicherung der Datenbank aktivieren",
"backup_keep_last_amount": "Anzahl der aufzubewahrenden früheren Sicherungen",
"backup_settings": "Datensicherungs-Einstellungen",
"backup_settings_description": "Datensicherungs-Einstellungen verwalten",
"check_all": "Alle überprüfen",
"cleared_jobs": "Folgende Aufgaben zurückgesetzt: {job}",
"config_set_by_file": "Ist derzeit in einer Konfigurationsdatei festgelegt",
@ -43,9 +49,10 @@
"confirm_reprocess_all_faces": "Bist du sicher, dass du alle Gesichter erneut verarbeiten möchtest? Dies löscht auch alle bereits benannten Personen.",
"confirm_user_password_reset": "Bist du sicher, dass du das Passwort für {user} zurücksetzen möchtest?",
"create_job": "Aufgabe erstellen",
"crontab_guru": "Crontab Guru",
"cron_expression": "Cron-Ausdruck",
"cron_expression_description": "Stellen Sie das Scanintervall im Cron-Format ein. Weitere Informationen finden Sie beispielsweise unter <link>Crontab Guru</link>",
"cron_expression_presets": "Cron-Ausdruck-Vorlagen",
"disable_login": "Login deaktvieren",
"disabled": "Deaktiviert",
"duplicate_detection_job_description": "Diese Aufgabe führt das maschinelle Lernen für jede Datei aus, um Duplikate zu finden. Diese Aufgabe beruht auf der intelligenten Suche",
"exclusion_pattern_description": "Mit Ausschlussmustern können Dateien und Ordner beim Scannen Ihrer Bibliothek ignoriert werden. Dies ist nützlich, wenn du Ordner hast, die Dateien enthalten, die du nicht importieren möchtest, wie z. B. RAW-Dateien.",
"external_library_created_at": "Externe Bibliothek (erstellt am {date})",
@ -63,22 +70,15 @@
"image_prefer_wide_gamut": "Breites Spektrum bevorzugen",
"image_prefer_wide_gamut_setting_description": "Verwendung von Display P3 (DCI-P3) für Miniaturansichten. Dadurch bleibt die Lebendigkeit von Bildern mit breiten Farbräumen besser erhalten, aber die Bilder können auf älteren Geräten mit einer älteren Browserversion etwas anders aussehen. sRGB-Bilder werden im sRGB-Format belassen, um Farbverschiebungen zu vermeiden.",
"image_preview_description": "Mittelgroßes Bild mit entfernten Metadaten, das bei der Betrachtung einer einzelnen Datei und für maschinelles Lernen verwendet wird",
"image_preview_format": "Vorschauformat",
"image_preview_quality_description": "Vorschauqualität von 1-100. Ein höherer Wert ist besser, erzeugt dadurch aber größere Dateien und kann die Reaktionsfähigkeit der App beeinträchtigen. Die Einstellung eines niedrigen Wertes kann dafür aber die Qualität des maschinellen Lernens beeinträchtigen.",
"image_preview_resolution": "Vorschau-Auflösung",
"image_preview_resolution_description": "Dies wird beim Anzeigen eines einzelnen Fotos und für das maschinelle Lernen verwendet. Höhere Auflösungen können mehr Details beibehalten, benötigen aber mehr Zeit für die Kodierung, haben größere Dateigrößen und können die Reaktionsfähigkeit der App beeinträchtigen.",
"image_preview_title": "Vorschaueinstellungen",
"image_quality": "Qualität",
"image_quality_description": "Bildqualität von 1-100. Höher bedeutet bessere Qualität, erzeugt aber größere Dateien. Diese Option betrifft die Vorschaubilder und Miniaturansichten.",
"image_resolution": "Auflösung",
"image_resolution_description": "Höhere Auflösungen können mehr Details erhalten, benötigen aber mehr Zeit für die Kodierung, haben größere Dateigrößen und können die Reaktionsfähigkeit von Anwendungen beeinträchtigen.",
"image_settings": "Bildeinstellungen",
"image_settings_description": "Qualität und Auflösung von generierten Bildern verwalten",
"image_thumbnail_description": "Kleine Miniaturansicht mit entfernten Metadaten, die bei der Anzeige von Sammlungen von Fotos wie der Zeitleiste verwendet wird",
"image_thumbnail_format": "Miniaturansichts-Format",
"image_thumbnail_quality_description": "Qualität der Miniaturansicht von 1-100. Höher ist besser, erzeugt aber größere Dateien und kann die Reaktionsfähigkeit der App beeinträchtigen.",
"image_thumbnail_resolution": "Miniaturansichts-Auflösung",
"image_thumbnail_resolution_description": "Dies wird bei der Anzeige von Bildergruppen („Zeitleiste“, „Albumansicht“ usw.) verwendet. Höhere Auflösungen können mehr Details beibehalten, benötigen aber mehr Zeit für die Kodierung, haben größere Dateigrößen und können die Reaktionsfähigkeit der App beeinträchtigen.",
"image_thumbnail_title": "Miniaturansicht-Einstellungen",
"job_concurrency": "{job} (Anzahl gleichzeitiger Prozesse)",
"job_created": "Aufgabe erstellt",
@ -89,9 +89,6 @@
"jobs_delayed": "{jobCount, plural, other {# verzögert}}",
"jobs_failed": "{jobCount, plural, other {# fehlgeschlagen}}",
"library_created": "Bibliothek erstellt: {library}",
"library_cron_expression": "Cron-Ausdruck",
"library_cron_expression_description": "Lege das Überprüfungsintervall mit Hilfe des cron-Formats fest. Für weitere Informationen siehe z.B. <link>Crontab Guru</link>",
"library_cron_expression_presets": "Cron-Expression Voreinstellungen",
"library_deleted": "Bibliothek gelöscht",
"library_import_path_description": "Gib einen Ordner für den Import an. Dieser Ordner, einschließlich der Unterordner, wird nach Bildern und Videos durchsucht.",
"library_scanning": "Periodisches Scannen",
@ -134,7 +131,7 @@
"machine_learning_smart_search_description": "Semantische Bildsuche mittels CLIP-Einbettungen",
"machine_learning_smart_search_enabled": "Intelligente Suche aktivieren",
"machine_learning_smart_search_enabled_description": "Ist diese Option deaktiviert, werden die Bilder nicht für die intelligente Suche verwendet.",
"machine_learning_url_description": "Server-URL für maschinelles Lernen",
"machine_learning_url_description": "Die URL des Servers für maschinelles Lernen. Wenn mehr als eine URL angegeben wird, wird jeder Server einzeln ausprobiert, bis einer erfolgreich antwortet, und zwar in der Reihenfolge vom ersten bis zum letzten.",
"manage_concurrency": "Gleichzeitige Ausführungen verwalten",
"manage_log_settings": "Log-Einstellungen verwalten",
"map_dark_style": "Dunkler Stil",
@ -215,7 +212,6 @@
"refreshing_all_libraries": "Alle Bibliotheken aktualisieren",
"registration": "Admin-Registrierung",
"registration_description": "Da du der erste Benutzer im System bist, wirst du als Admin zugewiesen und bist für administrative Aufgaben zuständig. Weitere Benutzer werden von dir erstellt.",
"removing_deleted_files": "Offline-Dateien entfernen",
"repair_all": "Alle reparieren",
"repair_matched_items": "{count, plural, one {# Eintrag} other {# Einträge}} gefunden",
"repaired_items": "{count, plural, one {# Eintrag} other {# Einträge}} repariert",
@ -223,12 +219,12 @@
"reset_settings_to_default": "Einstellungen auf Standard zurücksetzen",
"reset_settings_to_recent_saved": "Einstellungen auf die zuletzt gespeicherten Einstellungen zurücksetzen",
"scanning_library": "Bibliothek scannen",
"scanning_library_for_changed_files": "Untersuche Bibliothek auf geänderte Dateien",
"scanning_library_for_new_files": "Untersuche Bibliothek auf neue Dateien",
"search_jobs": "Aufgaben suchen...",
"send_welcome_email": "Begrüssungsmail senden",
"server_external_domain_settings": "Externe Domain",
"server_external_domain_settings_description": "Domäne für öffentlich freigegebene Links, einschließlich http(s)://",
"server_public_users": "Öffentliche Benutzer",
"server_public_users_description": "Beim Hinzufügen eines Benutzers zu freigegebenen Alben werden alle Benutzer (Name und E-Mail) aufgelistet. Wenn diese Option deaktiviert ist, steht die Benutzerliste nur Administratoren zur Verfügung.",
"server_settings": "Servereinstellungen",
"server_settings_description": "Servereinstellungen verwalten",
"server_welcome_message": "Willkommensnachricht",
@ -254,6 +250,16 @@
"storage_template_user_label": "<code>{label}</code> is die Speicherpfadbezeichnung des Benutzers",
"system_settings": "Systemeinstellungen",
"tag_cleanup_job": "Tags aufräumen",
"template_email_available_tags": "In deiner Vorlage kannst du die folgenden Variablen verwenden: {tags}",
"template_email_if_empty": "Wenn die Vorlage leer ist, wird die Standard-E-Mail verwendet.",
"template_email_invite_album": "E-Mail-Vorlage: Einladung zu Album",
"template_email_preview": "Vorschau",
"template_email_settings": "E-Mail Vorlagen",
"template_email_settings_description": "Benutzerdefinierte E-Mail Benachrichtigungsvorlagen verwalten",
"template_email_update_album": "Album Vorlage aktualisieren",
"template_email_welcome": "Willkommen bei den E-Mail Vorlagen",
"template_settings": "Benachrichtigungsvorlagen",
"template_settings_description": "Benutzerdefinierte Vorlagen für Benachrichtigungen verwalten",
"theme_custom_css_settings": "Benutzerdefiniertes CSS",
"theme_custom_css_settings_description": "Mit Cascading Style Sheets (CSS) kann das Design von Immich angepasst werden.",
"theme_settings": "Theme-Einstellungen",
@ -261,7 +267,6 @@
"these_files_matched_by_checksum": "Diese Dateien wurden anhand ihrer Prüfsummen abgeglichen",
"thumbnail_generation_job": "Miniaturansichten generieren",
"thumbnail_generation_job_description": "Diese Aufgabe erzeugt große, kleine und unscharfe Miniaturansichten für jede einzelne Datei, sowie Miniaturansichten für jede Person",
"transcode_policy_description": "Richtlinien, wann ein Video transkodiert werden soll. HDR-Videos werden immer transkodiert (außer wenn die Transkodierung deaktiviert ist).",
"transcoding_acceleration_api": "Beschleunigungs-API",
"transcoding_acceleration_api_description": "Die Schnittstelle welche mit dem Gerät interagiert, um die Transkodierung zu beschleunigen. Bei dieser Einstellung handelt es sich um die \"bestmögliche Lösung\": Bei einem Fehler wird auf die Software-Transkodierung zurückgegriffen. Abhängig von der verwendeten Hardware kann VP9 funktionieren oder auch nicht.",
"transcoding_acceleration_nvenc": "NVENC (NVIDIA-GPU erforderlich)",
@ -313,8 +318,6 @@
"transcoding_threads_description": "Höhere Werte führen zu einer schnelleren Codierung, lassen dem Server aber weniger Spielraum für die Verarbeitung anderer Aufgaben, solange dies aktiv ist. Dieser Wert sollte nicht höher sein als die Anzahl der CPU-Kerne. Nutzt die maximale Auslastung, wenn der Wert auf 0 gesetzt ist.",
"transcoding_tone_mapping": "Farbton-Mapping",
"transcoding_tone_mapping_description": "Versucht, das Aussehen von HDR-Videos bei der Konvertierung in SDR beizubehalten. Jeder Algorithmus geht unterschiedliche Kompromisse bei Farbe, Details und Helligkeit ein. Hable bewahrt Details, Mobius bewahrt die Farbe und Reinhard bewahrt die Helligkeit.",
"transcoding_tone_mapping_npl": "Farbton-Mapping NPL",
"transcoding_tone_mapping_npl_description": "Die Farben werden so angepasst, dass sie für einen Bildschirm mit entsprechender Helligkeit normal aussehen. Entgegen der Annahme, dass niedrigere Werte die Helligkeit des Videos erhöhen und umgekehrt, wird die Helligkeit des Bildschirms ausgeglichen. Mit 0 wird dieser Wert automatisch eingestellt.",
"transcoding_transcode_policy": "Transcodierungsrichtlinie",
"transcoding_transcode_policy_description": "Richtlinie, wann ein Video transkodiert werden soll. HDR-Videos werden immer transkodiert (außer wenn die Transkodierung deaktiviert ist).",
"transcoding_two_pass_encoding": "Two-Pass Codierung",
@ -395,7 +398,6 @@
"archive_or_unarchive_photo": "Foto archivieren bzw. Archivierung aufheben",
"archive_size": "Archivgröße",
"archive_size_description": "Archivgröße für Downloads konfigurieren (in GiB)",
"archived": "Archiviert",
"archived_count": "{count, plural, other {# archiviert}}",
"are_these_the_same_person": "Ist das dieselbe Person?",
"are_you_sure_to_do_this": "Bist du sicher, dass du das tun willst?",
@ -416,9 +418,8 @@
"assets_added_to_album_count": "{count, plural, one {# Datei} other {# Dateien}} zum Album hinzugefügt",
"assets_added_to_name_count": "{count, plural, one {# Element} other {# Elemente}} zu {hasName, select, true {<b>{name}</b>} other {neuem Album}} hinzugefügt",
"assets_count": "{count, plural, one {# Datei} other {# Dateien}}",
"assets_moved_to_trash": "{count, plural, one {# Datei} other {# Dateien}} in den Papierkorb verschoben",
"assets_moved_to_trash_count": "{count, plural, one {# Datei} other {# Dateien}} in den Papierkorb verschoben",
"assets_permanently_deleted_count": "{count, plural, one {# Datei} other {# Dateien}} dauerhaft gelöscht",
"assets_permanently_deleted_count": "{count, plural, one {# Datei} other {# Dateien}} endgültig gelöscht",
"assets_removed_count": "{count, plural, one {# Datei} other {# Dateien}} entfernt",
"assets_restore_confirmation": "Bist du sicher, dass du alle Dateien aus dem Papierkorb wiederherstellen willst? Diese Aktion kann nicht rückgängig gemacht werden! Beachte, dass Offline-Dateien auf diese Weise nicht wiederhergestellt werden können.",
"assets_restored_count": "{count, plural, one {# Datei} other {# Dateien}} wiederhergestellt",
@ -434,7 +435,7 @@
"bugs_and_feature_requests": "Fehler & Verbesserungsvorschläge",
"build": "Build",
"build_image": "Build Abbild",
"bulk_delete_duplicates_confirmation": "Bist du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateien gemeinsam}} löschen möchtest? Dabei wird die größte Datei jeder Gruppe behalten und alle anderen Duplikate dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden!",
"bulk_delete_duplicates_confirmation": "Bist du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateien gemeinsam}} löschen möchtest? Dabei wird die größte Datei jeder Gruppe behalten und alle anderen Duplikate endgültig gelöscht. Diese Aktion kann nicht rückgängig gemacht werden!",
"bulk_keep_duplicates_confirmation": "Bist du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateien}} behalten möchtest? Dies wird alle Duplikat-Gruppen auflösen ohne etwas zu löschen.",
"bulk_trash_duplicates_confirmation": "Bist du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateien gemeinsam}} in den Papierkorb verschieben möchtest? Dies wird die größte Datei jeder Gruppe behalten und alle anderen Duplikate in den Papierkorb verschieben.",
"buy": "Immich erwerben",
@ -446,10 +447,6 @@
"cannot_merge_people": "Personen können nicht zusammengeführt werden",
"cannot_undo_this_action": "Diese Aktion kann nicht rückgängig gemacht werden!",
"cannot_update_the_description": "Beschreibung kann nicht aktualisiert werden",
"cant_apply_changes": "Änderungen können nicht übernommen werden",
"cant_get_faces": "Es konnten keine Gesichter festgestellt werden",
"cant_search_people": "Es konnte nicht nach Personen gesucht werden",
"cant_search_places": "Es konnte nicht nach Orten gesucht werden",
"change_date": "Datum ändern",
"change_expiration_time": "Verfallszeitpunkt ändern",
"change_location": "Ort ändern",
@ -481,6 +478,7 @@
"confirm": "Bestätigen",
"confirm_admin_password": "Administrator Passwort bestätigen",
"confirm_delete_shared_link": "Bist du sicher, dass du diesen geteilten Link löschen willst?",
"confirm_keep_this_delete_others": "Alle anderen Dateien im Stapel bis auf diese werden gelöscht. Bist du sicher, dass du fortfahren möchten?",
"confirm_password": "Passwort bestätigen",
"contain": "Vollständig",
"context": "Kontext",
@ -526,10 +524,11 @@
"delete": "Löschen",
"delete_album": "Album löschen",
"delete_api_key_prompt": "Bist du sicher, dass du diesen API-Schlüssel löschen willst?",
"delete_duplicates_confirmation": "Bist du sicher, dass du diese Duplikate dauerhaft löschen willst?",
"delete_duplicates_confirmation": "Bist du sicher, dass du diese Duplikate endgültig löschen willst?",
"delete_key": "Schlüssel löschen",
"delete_library": "Bibliothek löschen",
"delete_link": "Link löschen",
"delete_others": "Andere löschen",
"delete_shared_link": "geteilten Link löschen",
"delete_tag": "Tag löschen",
"delete_tag_confirmation_prompt": "Bist du sicher, dass der Tag {tagName} gelöscht werden soll?",
@ -563,13 +562,6 @@
"duplicates": "Duplikate",
"duplicates_description": "Löse jede Gruppe auf, indem du angibst, welche, wenn überhaupt, Duplikate sind",
"duration": "Dauer",
"durations": {
"days": "{days, plural, one {Tag} other {{days, number} Tage}}",
"hours": "{hours, plural, one {eine Stunde} other {{hours, number} Stunden}}",
"minutes": "{minutes, plural, one {eine minute} other {{minutes, number} minuten}}",
"months": "{months, plural, one {ein Monat} other {{months, number} Monate}}",
"years": "{years, plural, one {ein Jahr} other {{years, number} Jahre}}"
},
"edit": "Bearbeiten",
"edit_album": "Album bearbeiten",
"edit_avatar": "Avatar bearbeiten",
@ -594,10 +586,8 @@
"editor_crop_tool_h2_aspect_ratios": "Seitenverhältnisse",
"editor_crop_tool_h2_rotation": "Drehung",
"email": "E-Mail",
"empty": "Leer",
"empty_album": "Leeres Album",
"empty_trash": "Papierkorb leeren",
"empty_trash_confirmation": "Bist du sicher, dass du den Papierkorb leeren willst?\nDies entfernt alle Dateien im Papierkorb permanent aus Immich und kann nicht rückgängig gemacht werden!",
"empty_trash_confirmation": "Bist du sicher, dass du den Papierkorb leeren willst?\nDies entfernt alle Dateien im Papierkorb endgültig aus Immich und kann nicht rückgängig gemacht werden!",
"enable": "Aktivieren",
"enabled": "Aktiviert",
"end_date": "Enddatum",
@ -629,6 +619,7 @@
"failed_to_create_shared_link": "Geteilter Link konnte nicht erstellt werden",
"failed_to_edit_shared_link": "Geteilter Link konnte nicht bearbeitet werden",
"failed_to_get_people": "Personen konnten nicht abgerufen werden",
"failed_to_keep_this_delete_others": "Fehler beim Löschen der anderen Dateien",
"failed_to_load_asset": "Fehler beim Laden der Datei",
"failed_to_load_assets": "Fehler beim Laden der Dateien",
"failed_to_load_people": "Fehler beim Laden von Personen",
@ -656,8 +647,6 @@
"unable_to_change_location": "Ort kann nicht verändert werden",
"unable_to_change_password": "Passwort konnte nicht geändert werden",
"unable_to_change_visibility": "Sichtbarkeit von {count, plural, one {einer Person} other {# Personen}} konnte nicht geändert werden",
"unable_to_check_item": "Objekt kann nicht überprüft werden",
"unable_to_check_items": "Objekte konnten nicht überprüft werden",
"unable_to_complete_oauth_login": "OAuth-Anmeldung konnte nicht abgeschlossen werden",
"unable_to_connect": "Verbindung konnte nicht hergestellt werden",
"unable_to_connect_to_server": "Verbindung zum Server konnte nicht hergestellt werden",
@ -698,12 +687,10 @@
"unable_to_remove_album_users": "Mitglieder der Alben können nicht entfernt werden",
"unable_to_remove_api_key": "API-Schlüssel konnte nicht entfernt werden",
"unable_to_remove_assets_from_shared_link": "Dateien konnten nicht von geteiltem Link entfernt werden",
"unable_to_remove_comment": "Kommentar kann nicht entfernt werden",
"unable_to_remove_deleted_assets": "Offline-Dateien konnten nicht entfernt werden",
"unable_to_remove_library": "Bibliothek kann nicht entfernt werden",
"unable_to_remove_partner": "Partner kann nicht entfernt werden",
"unable_to_remove_reaction": "Reaktion kann nicht entfernt werden",
"unable_to_remove_user": "Benutzer kann nicht entfernt werden",
"unable_to_repair_items": "Objekte können nicht repariert werden",
"unable_to_reset_password": "Passwort kann nicht zurückgesetzt werden",
"unable_to_resolve_duplicate": "Duplikate können nicht aufgelöst werden",
@ -733,16 +720,12 @@
"unable_to_update_user": "Der Nutzer konnte nicht aktualisiert werden",
"unable_to_upload_file": "Datei konnte nicht hochgeladen werden"
},
"every_day_at_onepm": "Täglich 13.00 Uhr",
"every_night_at_midnight": "Täglich um Mitternacht",
"every_night_at_twoam": "Jede Nacht um 2.00 Uhr",
"every_six_hours": "Alle 6 Stunden",
"exif": "EXIF",
"exit_slideshow": "Diashow beenden",
"expand_all": "Alle aufklappen",
"expire_after": "Verfällt nach",
"expired": "Verfallen",
"expires_date": "Läuft am {date} ab",
"expires_date": "Läuft {date} ab",
"explore": "Erkunden",
"explorer": "Datei-Explorer",
"export": "Exportieren",
@ -751,33 +734,28 @@
"external": "Extern",
"external_libraries": "Externe Bibliotheken",
"face_unassigned": "Nicht zugewiesen",
"failed_to_get_people": "Personen konnten nicht ermittelt werden",
"failed_to_load_assets": "Laden der Assets fehlgeschlagen",
"favorite": "Favorit",
"favorite_or_unfavorite_photo": "Favorisiertes oder nicht favorisiertes Foto",
"favorites": "Favoriten",
"feature": "Funktion",
"feature_photo_updated": "Profilbild aktualisiert",
"featurecollection": "Funktionssammlung",
"features": "Funktionen",
"features_setting_description": "Funktionen der App verwalten",
"file_name": "Dateiname",
"file_name_or_extension": "Dateiname oder -erweiterung",
"filename": "Dateiname",
"files": "",
"filetype": "Dateityp",
"filter_people": "Personen filtern",
"find_them_fast": "Finde sie schneller mit der Suche nach Namen",
"fix_incorrect_match": "Fehlerhafte Übereinstimmung beheben",
"folders": "Ordner",
"folders_feature_description": "Durchsuchen der Ordneransicht für Fotos und Videos im Dateisystem",
"force_re-scan_library_files": "Erzwingen des erneuten Scannens aller Bibliotheksdateien",
"forward": "Vorwärts",
"general": "Allgemein",
"get_help": "Hilfe erhalten",
"getting_started": "Erste Schritte",
"go_back": "Zurück",
"go_to_search": "Zur Suche gehen",
"go_to_share_page": "Zur Freigabeseite gehen",
"group_albums_by": "Alben gruppieren nach...",
"group_no": "Keine Gruppierung",
"group_owner": "Gruppierung nach Besitzer",
@ -803,10 +781,6 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Bild}} aufgenommen in {city}, {country} mit {person1} und {person2} am {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Bild}} aufgenommen in {city}, {country} mit {person1}, {person2}, und {person3} am {date}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Bild}} aufgenommen in {city}, {country} mit {person1}, {person2}, und {additionalCount, number} anderen am {date}",
"image_alt_text_people": "{count, plural, =1 {mit {person1}} =2 {mit {person1} und {person2}} =3 {mit {person1}, {person2} und {person3}} other {mit {person1}, {person2} und {others, number} anderen}}",
"image_alt_text_place": "in {city}, {country}",
"image_taken": "{isVideo, select, true {Video aufgenommen} other {Bild aufgenommen}}",
"img": "Img",
"immich_logo": "Immich-Logo",
"immich_web_interface": "Immich-Web-Oberfläche",
"import_from_json": "Aus JSON importieren",
@ -827,10 +801,11 @@
"invite_people": "Personen einladen",
"invite_to_album": "Zum Album einladen",
"items_count": "{count, plural, one {# Eintrag} other {# Einträge}}",
"job_settings_description": "Parallelität von Jobs verwalten",
"jobs": "Aufgaben",
"keep": "Behalten",
"keep_all": "Alle behalten",
"keep_this_delete_others": "Dieses behalten, andere löschen",
"kept_this_deleted_others": "Diese Datei behalten und {count, plural, one {# Datei} other {# Dateien}} gelöscht",
"keyboard_shortcuts": "Tastenkürzel",
"language": "Sprache",
"language_setting_description": "Wähle deine bevorzugte Sprache",
@ -842,31 +817,6 @@
"level": "Level",
"library": "Bibliothek",
"library_options": "Bibliotheksoptionen",
"license_account_info": "Dein Account ist lizensiert",
"license_activated_subtitle": "Wir danken dir für die Unterstützung von Immich und Open-Source-Software",
"license_activated_title": "Deine Lizenz wurde erfolgreich aktiviert",
"license_button_activate": "Aktivieren",
"license_button_buy": "Kaufen",
"license_button_buy_license": "Lizenz erwerben",
"license_button_select": "Auswählen",
"license_failed_activation": "Die Aktivierung der Lizenz ist fehlgeschlagen. Bitte überprüfe deine E-Mail, um den korrekten Lizenzschlüssel zu finden!",
"license_individual_description_1": "1 Lizenz pro Benutzer auf einem beliebigen Server",
"license_individual_title": "Individuelle Lizenz",
"license_info_licensed": "Lizensiert",
"license_info_unlicensed": "Unlizensiert",
"license_input_suggestion": "Hast du bereits eine Lizenz? Gib den Key unten ein",
"license_license_subtitle": "Erwerbe eine Lizenz zur Unterstützung von Immich",
"license_license_title": "LIZENZ",
"license_lifetime_description": "Lebenslange Lizenz",
"license_per_server": "Pro Server",
"license_per_user": "Pro Nutzer",
"license_server_description_1": "1 Lizenz pro Server",
"license_server_description_2": "Lizenz für alle Nutzer des Servers",
"license_server_title": "Serverlizenz",
"license_trial_info_1": "Du verwendest eine unlizenzierte Version von Immich",
"license_trial_info_2": "Du benutzt Immich seit ungefähr",
"license_trial_info_3": "{accountAge, plural, one {# Tag} other {# Tage}}",
"license_trial_info_4": "Bitte erwäge den Kauf einer Lizenz, um die kontinuierliche Weiterentwicklung des Dienstes zu unterstützen",
"light": "Hell",
"like_deleted": "Like gelöscht",
"link_motion_video": "Bewegungsvideo verknüpfen",
@ -971,7 +921,6 @@
"onboarding_welcome_user": "Willkommen, {user}",
"online": "Online",
"only_favorites": "Nur Favoriten",
"only_refreshes_modified_files": "Nur geänderte Dateien aktualisieren",
"open_in_map_view": "In Kartenansicht öffnen",
"open_in_openstreetmap": "In OpenStreetMap öffnen",
"open_the_search_filters": "Die Suchfilter öffnen",
@ -1009,15 +958,13 @@
"people_edits_count": "{count, plural, one {# Person} other {# Personen}} bearbeitet",
"people_feature_description": "Fotos und Videos nach Personen gruppiert durchsuchen",
"people_sidebar_description": "Eine Verknüpfung zu Personen in der Seitenleiste anzeigen",
"perform_library_tasks": "",
"permanent_deletion_warning": "Warnung vor endgültiger Löschung",
"permanent_deletion_warning_setting_description": "Anzeige einer Warnung beim permanenten Löschen von Objekten",
"permanently_delete": "Dauerhaft löschen",
"permanently_delete_assets_count": "{count, plural, one {Datei} other {Dateien}} dauerhaft gelöscht",
"permanently_delete_assets_prompt": "Bist du sicher, dass {count, plural, one {diese Datei} other {diese <b>#</b> Dateien}} dauerhaft gelöscht werden soll? Dadurch {count, plural, one {wird} other {werden}} diese auch aus deinen Alben entfernt.",
"permanently_deleted_asset": "Dauerhaft gelöschtes Objekt",
"permanently_deleted_assets": "{count, plural, one {# Objekt} other {# Objekte}} dauerhaft gelöscht",
"permanently_deleted_assets_count": "{count, plural, one {# Datei} other {# Dateien}} dauerhaft gelöscht",
"permanent_deletion_warning_setting_description": "Anzeige einer Warnung beim endgültigen Löschen von Objekten",
"permanently_delete": "Endgültig löschen",
"permanently_delete_assets_count": "{count, plural, one {Datei} other {Dateien}} endgültig löschen",
"permanently_delete_assets_prompt": "Bist du sicher, dass {count, plural, one {diese Datei} other {diese <b>#</b> Dateien}} endgültig gelöscht werden soll? Dadurch {count, plural, one {wird} other {werden}} diese auch aus deinen Alben entfernt.",
"permanently_deleted_asset": "Endgültig gelöschtes Objekt",
"permanently_deleted_assets_count": "{count, plural, one {# Datei} other {# Dateien}} endgültig gelöscht",
"person": "Person",
"person_hidden": "{name}{hidden, select, true { (verborgen)} other {}}",
"photo_shared_all_users": "Es sieht so aus, als hättest du deine Fotos mit allen Benutzern geteilt oder du hast keine Benutzer, mit denen du teilen kannst.",
@ -1032,7 +979,6 @@
"play_memories": "Erinnerungen abspielen",
"play_motion_photo": "Bewegte Bilder abspielen",
"play_or_pause_video": "Video abspielen oder pausieren",
"point": "Hinweis",
"port": "Port",
"preset": "Voreinstellung",
"preview": "Vorschau",
@ -1077,12 +1023,10 @@
"purchase_server_description_2": "Unterstützerstatus",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Der Server-Produktschlüssel wird durch den Administrator verwaltet",
"range": "Reichweite",
"rating": "Bewertung",
"rating_clear": "Bewertung löschen",
"rating_count": "{count, plural, one {# Stern} other {# Sterne}}",
"rating_description": "Stellt die EXIF-Bewertung im Informationsbereich dar",
"raw": "RAW",
"reaction_options": "Reaktionsmöglichkeiten",
"read_changelog": "Changelog lesen",
"reassign": "Neu zuweisen",
@ -1090,6 +1034,7 @@
"reassigned_assets_to_new_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} einer neuen Person zugewiesen",
"reassing_hint": "Markierte Dateien einer vorhandenen Person zuweisen",
"recent": "Neuste",
"recent-albums": "Neuste Alben",
"recent_searches": "Letzte Suchen",
"refresh": "Aktualisieren",
"refresh_encoded_videos": "Kodierte Videos aktualisieren",
@ -1111,6 +1056,7 @@
"remove_from_album": "Aus Album entfernen",
"remove_from_favorites": "Aus Favoriten entfernen",
"remove_from_shared_link": "Aus geteiltem Link entfernen",
"remove_url": "URL entfernen",
"remove_user": "Nutzer entfernen",
"removed_api_key": "API-Schlüssel {name} wurde entfernt",
"removed_from_archive": "Aus dem Archiv entfernt",
@ -1127,7 +1073,6 @@
"reset": "Zurücksetzen",
"reset_password": "Passwort zurücksetzen",
"reset_people_visibility": "Sichtbarkeit von Personen zurücksetzen",
"reset_settings_to_default": "Einstellungen auf Standardwerte zurücksetzen",
"reset_to_default": "Auf Standard zurücksetzen",
"resolve_duplicates": "Duplikate entfernen",
"resolved_all_duplicates": "Alle Duplikate aufgelöst",
@ -1147,9 +1092,7 @@
"saved_settings": "Einstellungen gespeichert",
"say_something": "Etwas sagen",
"scan_all_libraries": "Alle Bibliotheken scannen",
"scan_all_library_files": "Alle Bibliotheksdateien erneut scannen",
"scan_library": "Scannen",
"scan_new_library_files": "Neue Bibliotheksdateien scannen",
"scan_settings": "Scan-Einstellungen",
"scanning_for_album": "Nach Alben scannen...",
"search": "Suche",
@ -1192,7 +1135,6 @@
"selected_count": "{count, plural, other {# ausgewählt}}",
"send_message": "Nachricht senden",
"send_welcome_email": "Begrüssungsmail senden",
"server": "Server",
"server_offline": "Server offline",
"server_online": "Server online",
"server_stats": "Server-Statistiken",
@ -1297,17 +1239,17 @@
"they_will_be_merged_together": "Sie werden zusammengeführt",
"third_party_resources": "Drittanbieter-Quellen",
"time_based_memories": "Zeitbasierte Erinnerungen",
"timeline": "Zeitleiste",
"timezone": "Zeitzone",
"to_archive": "Archivieren",
"to_change_password": "Passwort ändern",
"to_favorite": "Zu Favoriten hinzufügen",
"to_login": "Anmelden",
"to_parent": "Gehe zum Übergeordneten",
"to_root": "Zur Wurzel",
"to_trash": "In den Papierkorb verschieben",
"toggle_settings": "Einstellungen umschalten",
"toggle_theme": "Dunkles Theme umschalten",
"toggle_visibility": "Sichtbarkeit umschalten",
"total": "Gesamt",
"total_usage": "Gesamtnutzung",
"trash": "Papierkorb",
"trash_all": "Alle löschen",
@ -1317,12 +1259,10 @@
"trashed_items_will_be_permanently_deleted_after": "Gelöschte Objekte werden nach {days, plural, one {# Tag} other {# Tagen}} endgültig gelöscht.",
"type": "Typ",
"unarchive": "Entarchivieren",
"unarchived": "Unarchiviert",
"unarchived_count": "{count, plural, other {# entarchiviert}}",
"unfavorite": "Entfavorisieren",
"unhide_person": "Person einblenden",
"unknown": "Unbekannt",
"unknown_album": "Unbekanntes Album",
"unknown_year": "Unbekanntes Jahr",
"unlimited": "Unlimitiert",
"unlink_motion_video": "Verknüpfung zum Bewegungsvideo aufheben",
@ -1354,13 +1294,13 @@
"use_custom_date_range": "Stattdessen einen benutzerdefinierten Datumsbereich verwenden",
"user": "Nutzer",
"user_id": "Nutzer-ID",
"user_license_settings": "Lizenz",
"user_license_settings_description": "Verwalte deine Lizenz",
"user_liked": "{type, select, photo {Dieses Foto} video {Dieses Video} asset {Diese Datei} other {Dies}} gefällt {user}",
"user_purchase_settings": "Kauf",
"user_purchase_settings_description": "Kauf verwalten",
"user_role_set": "{user} als {role} festlegen",
"user_usage_detail": "Nutzungsdetails der Nutzer",
"user_usage_stats": "Statistiken zur Kontonutzung",
"user_usage_stats_description": "Statistiken zur Kontonutzung anzeigen",
"username": "Nutzername",
"users": "Benutzer",
"utilities": "Hilfsmittel",
@ -1368,7 +1308,7 @@
"variables": "Variablen",
"version": "Version",
"version_announcement_closing": "Dein Freund, Alex",
"version_announcement_message": "Hallo Freund, es gibt eine neue Version dieser Anwendung. Bitte nimm dir Zeit, die <link>Versionshinweise</link> zu lesen und stelle sicher, dass deine <code>docker-compose.yml</code>- und <code>.env</code>-Konfiguration auf dem neuesten Stand ist, um Fehlkonfigurationen zu vermeiden, insbesondere wenn du WatchTower oder ein anderes Verfahren verwendest, das deine Anwendung automatisch aktualisiert.",
"version_announcement_message": "Hi! Es gibt eine neue Version von Immich. Bitte nimm dir Zeit, die <link>Versionshinweise</link> zu lesen, um Fehlkonfigurationen zu vermeiden, insbesondere wenn du WatchTower oder ein anderes Verfahren verwendest, das Immich automatisch aktualisiert.",
"version_history": "Versionshistorie",
"version_history_item": "{version} am {date} installiert",
"video": "Video",
@ -1382,10 +1322,10 @@
"view_all_users": "Alle Nutzer anzeigen",
"view_in_timeline": "In Zeitleiste anzeigen",
"view_links": "Links anzeigen",
"view_name": "Ansicht",
"view_next_asset": "Nächste Datei anzeigen",
"view_previous_asset": "Vorherige Datei anzeigen",
"view_stack": "Stapel anzeigen",
"viewer": "Zuschauer",
"visibility_changed": "Sichtbarkeit für {count, plural, one {# Person} other {# Personen}} geändert",
"waiting": "Wartend",
"warning": "Warnung",

File diff suppressed because it is too large Load diff

View file

@ -23,6 +23,7 @@
"add_to": "Add to...",
"add_to_album": "Add to album",
"add_to_shared_album": "Add to shared album",
"add_url": "Add URL",
"added_to_archive": "Added to archive",
"added_to_favorites": "Added to favorites",
"added_to_favorites_count": "Added {count, number} to favorites",
@ -130,7 +131,7 @@
"machine_learning_smart_search_description": "Search for images semantically using CLIP embeddings",
"machine_learning_smart_search_enabled": "Enable smart search",
"machine_learning_smart_search_enabled_description": "If disabled, images will not be encoded for smart search.",
"machine_learning_url_description": "URL of the machine learning server",
"machine_learning_url_description": "The URL of the machine learning server. If more than one URL is provided, each server will be attempted one-at-a-time until one responds successfully, in order from first to last.",
"manage_concurrency": "Manage Concurrency",
"manage_log_settings": "Manage log settings",
"map_dark_style": "Dark style",
@ -222,6 +223,8 @@
"send_welcome_email": "Send welcome email",
"server_external_domain_settings": "External domain",
"server_external_domain_settings_description": "Domain for public shared links, including http(s)://",
"server_public_users": "Public Users",
"server_public_users_description": "All users (name and email) are listed when adding a user to shared albums. When disabled, the user list will only be available to admin users.",
"server_settings": "Server Settings",
"server_settings_description": "Manage server settings",
"server_welcome_message": "Welcome message",
@ -247,6 +250,16 @@
"storage_template_user_label": "<code>{label}</code> is the user's Storage Label",
"system_settings": "System Settings",
"tag_cleanup_job": "Tag cleanup",
"template_email_available_tags": "You can use the following variables in your template: {tags}",
"template_email_if_empty": "If the template is empty, the default email will be used.",
"template_email_invite_album": "Invite Album Template",
"template_email_preview": "Preview",
"template_email_settings": "Email Templates",
"template_email_settings_description": "Manage custom email notification templates",
"template_email_update_album": "Update Album Template",
"template_email_welcome": "Welcome email template",
"template_settings": "Notification Templates",
"template_settings_description": "Manage custom templates for notifications.",
"theme_custom_css_settings": "Custom CSS",
"theme_custom_css_settings_description": "Cascading Style Sheets allow the design of Immich to be customized.",
"theme_settings": "Theme Settings",
@ -305,8 +318,6 @@
"transcoding_threads_description": "Higher values lead to faster encoding, but leave less room for the server to process other tasks while active. This value should not be more than the number of CPU cores. Maximizes utilization if set to 0.",
"transcoding_tone_mapping": "Tone-mapping",
"transcoding_tone_mapping_description": "Attempts to preserve the appearance of HDR videos when converted to SDR. Each algorithm makes different tradeoffs for color, detail and brightness. Hable preserves detail, Mobius preserves color, and Reinhard preserves brightness.",
"transcoding_tone_mapping_npl": "Tone-mapping NPL",
"transcoding_tone_mapping_npl_description": "Colors will be adjusted to look normal for a display of this brightness. Counter-intuitively, lower values increase the brightness of the video and vice versa since it compensates for the brightness of the display. 0 sets this value automatically.",
"transcoding_transcode_policy": "Transcode policy",
"transcoding_transcode_policy_description": "Policy for when a video should be transcoded. HDR videos will always be transcoded (except if transcoding is disabled).",
"transcoding_two_pass_encoding": "Two-pass encoding",
@ -467,6 +478,7 @@
"confirm": "Confirm",
"confirm_admin_password": "Confirm Admin Password",
"confirm_delete_shared_link": "Are you sure you want to delete this shared link?",
"confirm_keep_this_delete_others": "All other assets in the stack will be deleted except for this asset. Are you sure you want to continue?",
"confirm_password": "Confirm password",
"contain": "Contain",
"context": "Context",
@ -516,6 +528,7 @@
"delete_key": "Delete key",
"delete_library": "Delete Library",
"delete_link": "Delete link",
"delete_others": "Delete others",
"delete_shared_link": "Delete shared link",
"delete_tag": "Delete tag",
"delete_tag_confirmation_prompt": "Are you sure you want to delete {tagName} tag?",
@ -606,6 +619,7 @@
"failed_to_create_shared_link": "Failed to create shared link",
"failed_to_edit_shared_link": "Failed to edit shared link",
"failed_to_get_people": "Failed to get people",
"failed_to_keep_this_delete_others": "Failed to keep this asset and delete the other assets",
"failed_to_load_asset": "Failed to load asset",
"failed_to_load_assets": "Failed to load assets",
"failed_to_load_people": "Failed to load people",
@ -720,6 +734,7 @@
"external": "External",
"external_libraries": "External Libraries",
"face_unassigned": "Unassigned",
"failed_to_load_assets": "Failed to load assets",
"favorite": "Favorite",
"favorite_or_unfavorite_photo": "Favorite or unfavorite photo",
"favorites": "Favorites",
@ -789,6 +804,8 @@
"jobs": "Jobs",
"keep": "Keep",
"keep_all": "Keep All",
"keep_this_delete_others": "Keep this, delete others",
"kept_this_deleted_others": "Kept this asset and deleted {count, plural, one {# asset} other {# assets}}",
"keyboard_shortcuts": "Keyboard shortcuts",
"language": "Language",
"language_setting_description": "Select your preferred language",
@ -1017,6 +1034,7 @@
"reassigned_assets_to_new_person": "Re-assigned {count, plural, one {# asset} other {# assets}} to a new person",
"reassing_hint": "Assign selected assets to an existing person",
"recent": "Recent",
"recent-albums": "Recent albums",
"recent_searches": "Recent searches",
"refresh": "Refresh",
"refresh_encoded_videos": "Refresh encoded videos",
@ -1038,6 +1056,7 @@
"remove_from_album": "Remove from album",
"remove_from_favorites": "Remove from favorites",
"remove_from_shared_link": "Remove from shared link",
"remove_url": "Remove URL",
"remove_user": "Remove user",
"removed_api_key": "Removed API Key: {name}",
"removed_from_archive": "Removed from archive",
@ -1123,6 +1142,7 @@
"set": "Set",
"set_as_album_cover": "Set as album cover",
"set_as_profile_picture": "Set as profile picture",
"set_as_featured_photo": "Set as featured photo",
"set_date_of_birth": "Set date of birth",
"set_profile_picture": "Set profile picture",
"set_slideshow_to_fullscreen": "Set Slideshow to fullscreen",
@ -1177,6 +1197,7 @@
"sort_items": "Number of items",
"sort_modified": "Date modified",
"sort_oldest": "Oldest photo",
"sort_people_by_similarity": "Sort people by similarity",
"sort_recent": "Most recent photo",
"sort_title": "Title",
"source": "Source",
@ -1220,6 +1241,7 @@
"they_will_be_merged_together": "They will be merged together",
"third_party_resources": "Third-Party Resources",
"time_based_memories": "Time-based memories",
"timeline": "Timeline",
"timezone": "Timezone",
"to_archive": "Archive",
"to_change_password": "Change password",
@ -1229,6 +1251,7 @@
"to_trash": "Trash",
"toggle_settings": "Toggle settings",
"toggle_theme": "Toggle dark theme",
"total": "Total",
"total_usage": "Total usage",
"trash": "Trash",
"trash_all": "Trash All",
@ -1278,6 +1301,8 @@
"user_purchase_settings_description": "Manage your purchase",
"user_role_set": "Set {user} as {role}",
"user_usage_detail": "User usage detail",
"user_usage_stats": "Account usage statistics",
"user_usage_stats_description": "View account usage statistics",
"username": "Username",
"users": "Users",
"utilities": "Utilities",
@ -1285,7 +1310,7 @@
"variables": "Variables",
"version": "Version",
"version_announcement_closing": "Your friend, Alex",
"version_announcement_message": "Hi friend, there is a new version of the application please take your time to visit the <link>release notes</link> and ensure your <code>docker-compose.yml</code>, and <code>.env</code> setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your application automatically.",
"version_announcement_message": "Hi there! A new version of Immich is available. Please take some time to read the <link>release notes</link> to ensure your setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your Immich instance automatically.",
"version_history": "Version History",
"version_history_item": "Installed {version} on {date}",
"video": "Video",
@ -1299,6 +1324,7 @@
"view_all_users": "View all users",
"view_in_timeline": "View in timeline",
"view_links": "View links",
"view_name": "View",
"view_next_asset": "View next asset",
"view_previous_asset": "View previous asset",
"view_stack": "View Stack",

View file

@ -1,5 +1,5 @@
{
"about": "Acerca de",
"about": "Acercade",
"account": "Cuenta",
"account_settings": "Ajustes de la cuenta",
"acknowledge": "De acuerdo",
@ -17,68 +17,68 @@
"add_import_path": "Agregar ruta de importación",
"add_location": "Agregar ubicación",
"add_more_users": "Agregar más usuarios",
"add_partner": "Agregar invitado",
"add_path": "Agregar ruta",
"add_partner": "Agregar compañero",
"add_path": "Agregar carpeta",
"add_photos": "Agregar fotos",
"add_to": "Agregar a...",
"add_to_album": "Agregar a un álbum",
"add_to_shared_album": "Agregar a un álbum compartido",
"add_to_album": "Incluir en álbum",
"add_to_shared_album": "Incluir en álbum compartido",
"add_url": "Añadir URL",
"added_to_archive": "Archivado",
"added_to_favorites": "Agregado a favoritos",
"added_to_favorites_count": "Agregado {count, number} a favoritos",
"admin": {
"add_exclusion_pattern_description": "Agrega patrones de exclusión. Puedes utilizar los caracteres *, ** y ? (globbing). Para ignorar todos los archivos en cualquier directorio llamado \"Raw\", utiliza \"**/Raw/**\". Para ignorar todos los archivos que terminan en \".tif\", utiliza \"**/*.tif\". Para ignorar una ruta absoluta, utiliza \"/carpeta/a/ignorar/**\".",
"asset_offline_description": "Este recurso externo de la biblioteca ya no se encuentra en el disco y se ha movido a la papelera. Si el archivo se movió dentro de la biblioteca, comprueba la línea de tiempo para el nuevo recurso correspondiente. Para restaurar este recurso, asegúrate de que Immich puede acceder a la siguiente ruta de archivo y escanear la biblioteca.",
"add_exclusion_pattern_description": "Agrega patrones de exclusión. Puedes utilizar los caracteres *, ** y ? (globbing). Ejemplos: para ignorar todos los archivos en cualquier directorio llamado \"Raw\", utiliza \"**/Raw/**\". Para ignorar todos los archivos que terminan en \".tif\", utiliza \"**/*.tif\". Para ignorar una ruta absoluta, utiliza \"/carpeta/a/ignorar/**\".",
"asset_offline_description": "Este recurso externo de la biblioteca ya no se encuentra en el disco y se ha movido a la papelera. Si el archivo se movió dentro de la biblioteca, comprueba la línea temporal para el nuevo recurso correspondiente. Para restaurar este recurso, asegúrate de que Immich puede acceder a la siguiente ruta de archivo y escanear la biblioteca.",
"authentication_settings": "Parámetros de autenticación",
"authentication_settings_description": "Gestionar contraseñas, OAuth y otros parámetros de autenticación",
"authentication_settings_disable_all": "¿Está seguro de que deseas desactivar todos los métodos de inicio de sesión? El inicio de sesión se desactivará por completo.",
"authentication_settings_reenable": "Para volver a activarlo, utiliza un <link> Comando del servidor </link>.",
"authentication_settings_disable_all": "¿Estás seguro de que deseas desactivar todos los métodos de inicio de sesión? Esto desactivará por completo el inicio de sesión.",
"authentication_settings_reenable": "Para reactivarlo, utiliza un <link>Comando del servidor</link>.",
"background_task_job": "Tareas en segundo plano",
"backup_database": "Respaldar base de datos",
"backup_database_enable_description": "Activar respaldo de base de datos",
"backup_keep_last_amount": "Cantidad de respaldos previos a mantener",
"backup_settings": "Ajustes de respaldo",
"backup_settings_description": "Administrar configuración de respaldo de base de datos",
"check_all": "Verificar todo",
"cleared_jobs": "Trabajos borrados para: {job}",
"config_set_by_file": "La configuración está definida por un archivo de configuración",
"confirm_delete_library": "¿Estás seguro de que quieres eliminar la biblioteca {library}?",
"confirm_delete_library_assets": "¿Estás seguro de que quieras eliminar esta biblioteca? Esto eliminará los {count, plural, one {# contained asset} other {all # contained assets}} elementos en Immich y no puede deshacerse. Los archivos permanecerán en tu almacenamiento.",
"confirm_delete_library_assets": "¿Estás seguro de que quieras eliminar esta biblioteca? Esto eliminará los {count, plural, one {# contained asset} other {all # contained assets}} elementos en Immich y no puede deshacerse. Los archivos permanecerán en disco.",
"confirm_email_below": "Para confirmar, escribe \"{email}\" a continuación",
"confirm_reprocess_all_faces": "¿Estás seguro de que deseas reprocesar todas las caras? Esto borrará a todas las personas que nombraste.",
"confirm_user_password_reset": "¿Estás seguro de que quieres restablecer la contraseña de {user}?",
"create_job": "Crear trabajo",
"crontab_guru": "Crontab Guru",
"cron_expression": "Expresión CRON",
"cron_expression_description": "Establece el intervalo de escaneo utilizando el formato CRON. Para más información puedes consultar, por ejemplo, <link> Crontab Guru</link>",
"cron_expression_presets": "Valores predefinidos de expresión CRON",
"disable_login": "Deshabilitar inicio de sesión",
"disabled": "Deshabilitado",
"duplicate_detection_job_description": "Ejecuta aprendizaje automático sobre los activos para detectar imágenes similares. Se basa en la búsqueda inteligente",
"exclusion_pattern_description": "Los patrones de exclusión te permiten ignorar archivos y carpetas al escanear tu biblioteca. Esto es útil si tienes carpetas que contienen archivos que no deseas importar, como archivos RAW.",
"duplicate_detection_job_description": "Lanza el aprendizaje automático para detectar imágenes similares. Necesita tener activado \"Búsqueda Inteligente\"",
"exclusion_pattern_description": "Los patrones de exclusión te permiten ignorar archivos y carpetas al escanear tu biblioteca. Es útil si tienes carpetas que contienen archivos que no deseas importar, por ejemplo archivos RAW.",
"external_library_created_at": "Biblioteca externa (creada el {date})",
"external_library_management": "Gestión de bibliotecas externas",
"face_detection": "Detección de rostros",
"face_detection_description": "Detectar las caras en los activos mediante aprendizaje automático. En el caso de los vídeos, solo se tiene en cuenta la miniatura. \"Actualizar\" (re)procesar todos los activos. \"Restablecer\" borra además todos los datos de caras actuales. \"Falta\" pone en cola los activos que aún no se han procesado. Los rostros detectados se pondrán en cola para el reconocimiento facial una vez finalizada la detección facial, agrupándolos en personas existentes o nuevas.",
"facial_recognition_job_description": "Agrupa los rostros detectados en personas. Este paso se ejecuta una vez finalizada la detección de caras. \"Restablecer\" (re)agrupa todas las caras. \"Falta\" pone en cola los rostros que no tienen asignada una persona.",
"face_detection": "Detección de caras",
"face_detection_description": "Detecta las caras en los activos mediante aprendizaje automático. En el caso de los vídeos, solo se tiene en cuenta la miniatura. \"Actualizar\" (re)procesará todos los elementos. \"Restablecer\" borra además todos los datos de caras actuales. \"Falta\" pone en cola los elementos que aún no se han procesado. Las caras detectadas se pondrán en cola para el reconocimiento facial una vez finalizada la detección, agrupándolos en personas existentes o nuevas.",
"facial_recognition_job_description": "Agrupa las caras detectadas en personas. Este paso se ejecuta una vez finalizada la detección de caras. \"Restablecer\" (re)agrupa todas las caras. \"Falta\" pone en cola las caras que no tienen asignada una persona.",
"failed_job_command": "El comando {command} ha fallado para la tarea: {job}",
"force_delete_user_warning": "CUIDADO: Esta acción eliminará inmediatamente el usuario y los elementos. Esta accion no se puede deshacer y los archivos no pueden ser recuperados.",
"forcing_refresh_library_files": "Forzar la recarga de todos los archivos de la biblioteca",
"force_delete_user_warning": "CUIDADO: Esta acción eliminará inmediatamente el usuario y todos los elementos. Esta accion no se puede deshacer y los archivos no pueden ser recuperados.",
"forcing_refresh_library_files": "Forzando la recarga de todos los elementos en la biblioteca",
"image_format": "Formato",
"image_format_description": "WebP genera archivos más pequeños que JPEG, pero es más lento al codificar.",
"image_prefer_embedded_preview": "Preferir vista previa incrustada",
"image_prefer_embedded_preview_setting_description": "Usar vistas previas incrustadas en fotos RAW como entrada para el procesamiento de imágenes cuando estén disponibles. Esto puede producir colores más precisos en algunas imágenes, pero la calidad de la vista previa depende de la cámara y la imagen puede tener más artefactos de compresión.",
"image_prefer_wide_gamut": "Preferir gama amplia",
"image_prefer_wide_gamut_setting_description": "Usar \"Display P3\" para las miniaturas. Esto preserva mejor la vivacidad de las imágenes con espacios de color amplios, pero las imágenes pueden aparecer de manera diferente en dispositivos antiguos con una versión antigua del navegador. Las imágenes sRGB se mantienen como sRGB para evitar cambios de color.",
"image_preview_description": "Imagen de tamaño mediano con metadatos eliminados, utilizada al visualizar un solo activo y para aprendizaje automático",
"image_preview_format": "Formato de previsualización",
"image_preview_quality_description": "Calidad de vista previa de 1 a 100. Cuanto más alta sea la calidad, mejor, pero genera archivos más grandes y puede reducir la capacidad de respuesta de la aplicación. Establecer un valor bajo puede afectar la calidad del aprendizaje automático.",
"image_preview_resolution": "Resolución de previsualización",
"image_preview_resolution_description": "Se utiliza al ver una sola foto y para el aprendizaje automático. Las resoluciones más altas pueden preservar más detalles, pero tardan más en codificarse, tienen tamaños de archivo más grandes y pueden reducir la capacidad de respuesta de la aplicación.",
"image_format_description": "WebP genera archivos más pequeños que JPEG, pero es más lento al codificarlos.",
"image_prefer_embedded_preview": "Preferir vista previa embebida",
"image_prefer_embedded_preview_setting_description": "Usar vistas previas embebidas en fotos RAW como entrada para el procesamiento de imágenes cuando estén disponibles. Esto puede producir colores más precisos en algunas imágenes, pero la calidad de la vista previa depende de la cámara y la imagen puede tener más artefactos de compresión.",
"image_prefer_wide_gamut": "Preferir 'gamut' amplio",
"image_prefer_wide_gamut_setting_description": "Usar \"Display P3\" para las miniaturas. Preserva mejor la vivacidad de las imágenes con espacios de color amplios pero las imágenes pueden aparecer de manera diferente en dispositivos antiguos con una versión antigua del navegador. Las imágenes sRGB se mantienen como sRGB para evitar cambios de color.",
"image_preview_description": "Imagen de tamaño mediano con metadatos eliminados. Es utilizado al visualizar un solo activo y para el aprendizaje automático",
"image_preview_quality_description": "Calidad de vista previa de 1 a 100. Es mejor cuanto más alta sea la calidad pero genera archivos más grandes y puede reducir la capacidad de respuesta de la aplicación. Establecer un valor bajo puede afectar la calidad del aprendizaje automático.",
"image_preview_title": "Ajustes de la vista previa",
"image_quality": "Calidad",
"image_quality_description": "Calidad de imagen de 1 a 100. Un valor más alto mejora la calidad pero genera archivos más grandes.",
"image_resolution": "Resolución",
"image_resolution_description": "Las resoluciones más altas pueden conservar más detalles, pero requieren más tiempo para codificar, tienen tamaños de archivo más grandes y pueden afectar la capacidad de respuesta de la aplicación.",
"image_resolution_description": "Las resoluciones más altas pueden conservar más detalles pero requieren más tiempo para codificar, tienen tamaños de archivo más grandes y pueden afectar la capacidad de respuesta de la aplicación.",
"image_settings": "Ajustes de imagen",
"image_settings_description": "Administrar la calidad y resolución de las imágenes generadas",
"image_thumbnail_description": "Miniatura pequeña con metadatos eliminados, que se utiliza al visualizar grupos de fotos como la línea de tiempo principal",
"image_thumbnail_format": "Formato de las miniaturas",
"image_thumbnail_quality_description": "Calidad de miniatura de 1 a 100. Cuanto más alta, mejor, pero genera archivos más grandes y puede reducir la capacidad de respuesta de la aplicación.",
"image_thumbnail_resolution": "Resolución de las miniaturas",
"image_thumbnail_resolution_description": "Se utiliza para ver grupos de fotos (cronología, vista de álbum, etc.). Las resoluciones más altas pueden conservar más detalles, pero tardan más en codificarse, tienen archivos de mayor tamaño y pueden reducir la reactividad de la aplicación.",
"image_thumbnail_description": "Miniatura pequeña con metadatos eliminados. Se utiliza al visualizar grupos de fotos como la línea temporal principal",
"image_thumbnail_quality_description": "Calidad de miniatura de 1 a 100. Es mejor cuanto más alto es el valor pero genera archivos más grandes y puede reducir la capacidad de respuesta de la aplicación.",
"image_thumbnail_title": "Ajustes de las miniaturas",
"job_concurrency": "{job}: Procesos simultáneos",
"job_created": "Trabajo creado",
@ -89,52 +89,49 @@
"jobs_delayed": "{jobCount, plural, one {# retrasado} other {# retrasados}}",
"jobs_failed": "{jobCount, plural, one {# fallido} other {# fallidos}}",
"library_created": "La biblioteca ha sido creada: {library}",
"library_cron_expression": "Expresión cron",
"library_cron_expression_description": "Establece el intervalo de escaneo utilizando el formato cron. Para más información puede consultar, por ejemplo, <link> Crontab Guru</link>",
"library_cron_expression_presets": "Valores predefinidos de expresión cron",
"library_deleted": "Biblioteca eliminada",
"library_import_path_description": "Indica una carpeta para importar. Esta carpeta, incluidas las subcarpetas, serán escaneadas en busca de multimedia.",
"library_scanning": "Escaneado periódico",
"library_scanning_description": "Configura el escaneo periódico de la biblioteca",
"library_import_path_description": "Indica una carpeta para importar. Esta carpeta y sus subcarpetas serán escaneadas en busca de elementos multimedia.",
"library_scanning": "Escaneo periódico",
"library_scanning_description": "Configurar el escaneo periódico de la biblioteca",
"library_scanning_enable_description": "Activar el escaneo periódico de la biblioteca",
"library_settings": "Biblioteca externa",
"library_settings_description": "Administrar configuración biblioteca externa",
"library_tasks_description": "Realizar tareas de biblioteca",
"library_watching_enable_description": "Ver las bibliotecas externas para detectar cambios en los archivos",
"library_watching_enable_description": "Vigilar las bibliotecas externas para detectar cambios en los archivos",
"library_watching_settings": "Vigilancia de la biblioteca (EXPERIMENTAL)",
"library_watching_settings_description": "Vigilar automaticamente en busca de archivos modificados",
"logging_enable_description": "Habilitar registro",
"logging_level_description": "Cuando está habilitado, qué nivel de registro utilizar.",
"logging_level_description": "Indica el nivel de registro a utilizar cuando está habilitado.",
"logging_settings": "Registro",
"machine_learning_clip_model": "Modelo de CLIP",
"machine_learning_clip_model_description": "El nombre de un modelo CLIP listado <link>aquí</link>. Tenga en cuenta que debe volver a ejecutar el trabajo 'Smart Search' para todas las imágenes al cambiar un modelo.",
"machine_learning_duplicate_detection": "Detección duplicados",
"machine_learning_clip_model": "Modelo CLIP (Contrastive Language-Image Pre-Training)",
"machine_learning_clip_model_description": "El nombre de un modelo CLIP listado <link>aquí</link>. Tendrás que relanzar el trabajo 'Búsqueda Inteligente' para todos los elementos al cambiar de modelo.",
"machine_learning_duplicate_detection": "Detección de duplicados",
"machine_learning_duplicate_detection_enabled": "Habilitar detección de duplicados",
"machine_learning_duplicate_detection_enabled_description": "Si está deshabilitado, los activos exactamente idénticos seguirán siendo eliminados.",
"machine_learning_duplicate_detection_setting_description": "Utilice incrustaciones de CLIP para encontrar posibles duplicados",
"machine_learning_duplicate_detection_setting_description": "Usa incrustaciones de CLIP (Contrastive Language-Image Pre-Training) para encontrar posibles duplicados",
"machine_learning_enabled": "Habilitar aprendizaje automático",
"machine_learning_enabled_description": "Si está deshabilitada, todas las funciones de ML se deshabilitarán independientemente de la configuración a continuación.",
"machine_learning_enabled_description": "Al desactivarla todas las funciones de ML se deshabilitarán independientemente de la configuración a continuación.",
"machine_learning_facial_recognition": "Reconocimiento facial",
"machine_learning_facial_recognition_description": "Detecta, reconoce y agrupa las caras en imágenes",
"machine_learning_facial_recognition_description": "Detecta, reconoce y agrupa las caras en las imágenes",
"machine_learning_facial_recognition_model": "Modelo de reconocimiento facial",
"machine_learning_facial_recognition_model_description": "Los modelos se enumeran en orden descendente de tamaño. Los modelos más grandes son más lentos y utilizan más memoria, pero producen mejores resultados. Tenga en cuenta que debe volver a ejecutar la tarea de reconocimiento facial para todas las imágenes al cambiar un modelo.",
"machine_learning_facial_recognition_setting": "Habilitar reconocimiento de caras",
"machine_learning_facial_recognition_setting_description": "Si está deshabilitada, las imágenes no se procesarán para el reconocimiento facial y no se incluirán en la sección Personas en la página Explorar.",
"machine_learning_max_detection_distance": "Distancia máxima de detección",
"machine_learning_max_detection_distance_description": "Distancia máxima entre dos imágenes para considerarlas duplicadas, oscilando entre 0,001-0,1. Los valores más altos detectarán más duplicados, pero pueden generar falsos positivos.",
"machine_learning_max_recognition_distance": "Distancia máxima de reconocimiento",
"machine_learning_max_recognition_distance_description": "Distancia máxima entre dos rostros para que se consideren una misma persona, oscilando entre 0-2. Reducirlo puede evitar etiquetar a dos personas como la misma persona, mientras que aumentarlo puede evitar etiquetar a la misma persona como dos personas diferentes. Tenga en cuenta que es más fácil fusionar a dos personas que dividir a una en dos, así que opte por un umbral más bajo cuando sea posible.",
"machine_learning_facial_recognition_model_description": "Los modelos se muestran en orden descendente de tamaño. Los modelos más grandes son más lentos y utilizan más memoria pero producen mejores resultados. Ten en cuenta que debes volver a ejecutar la tarea de reconocimiento facial para todas las imágenes al cambiar de modelo.",
"machine_learning_facial_recognition_setting": "Habilitar reconocimiento facial",
"machine_learning_facial_recognition_setting_description": "Cuando está desactivado no se utlizará reconocimiento facial y no aparecerán nuevas caras en la sección Personas en la página Explorar.",
"machine_learning_max_detection_distance": "Máxima distancia de detección",
"machine_learning_max_detection_distance_description": "Distancia máxima entre dos imágenes para considerarlas duplicadas, oscilando entre 0,001-0,1. Los valores más altos detectarán más duplicados pero pueden generar falsos positivos.",
"machine_learning_max_recognition_distance": "Máxima distancia de reconocimiento",
"machine_learning_max_recognition_distance_description": "Distancia máxima entre dos caras para que se consideren una misma persona, oscilando entre 0-2. Reducirlo puede evitar etiquetar a dos personas como la misma persona, mientras que aumentarlo puede evitar etiquetar a la misma persona como dos personas diferentes. Ten en cuenta que es más fácil fusionar a dos personas que dividir a una en dos, así que opta por un umbral más bajo cuando sea posible.",
"machine_learning_min_detection_score": "Puntuación mínima de detección",
"machine_learning_min_detection_score_description": "Puntuación de confianza mínima para que se detecte una cara de 0 a 1. Los valores más bajos detectarán más rostros, pero pueden generar falsos positivos.",
"machine_learning_min_detection_score_description": "Puntuación de confianza mínima para que se detecte una cara de 0 a 1. Los valores más bajos detectarán más rostros pero pueden generar falsos positivos.",
"machine_learning_min_recognized_faces": "Rostros mínimos reconocidos",
"machine_learning_min_recognized_faces_description": "El número mínimo de rostros reconocidos para que se cree una persona. Aumentar esto hace que el reconocimiento facial sea más preciso a costa de aumentar la posibilidad de que no se asigne una cara a una persona.",
"machine_learning_min_recognized_faces_description": "El número mínimo de rostros reconocidos para que se cree una persona. Aumentar esto permite que el reconocimiento facial sea más preciso a costa de aumentar la posibilidad de que no se asigne una cara a una persona.",
"machine_learning_settings": "Configuración de aprendizaje automático",
"machine_learning_settings_description": "Administrar funciones y configuraciones de aprendizaje automático",
"machine_learning_smart_search": "Busqueda inteligente",
"machine_learning_smart_search_description": "Busque imágenes semánticamente utilizando incrustaciones CLIP",
"machine_learning_smart_search_description": "Busque imágenes semánticamente utilizando incrustaciones CLIP (Contrastive Language-Image Pre-Training)",
"machine_learning_smart_search_enabled": "Habilitar búsqueda inteligente",
"machine_learning_smart_search_enabled_description": "Si está deshabilitado, las imágenes no se codificarán para la búsqueda inteligente.",
"machine_learning_url_description": "URL del servidor de aprendizaje automático",
"machine_learning_smart_search_enabled_description": "Al desactivarlo las imágenes no se procesarán para usar la búsqueda inteligente.",
"machine_learning_url_description": "La URL del servidor de aprendizaje automático. Si se proporciona más de una URL se intentará acceder a cada servidor sucesivamente hasta que uno responda correctamente en el orden especificado.",
"manage_concurrency": "Ajustes de concurrencia",
"manage_log_settings": "Administrar la configuración de los registros",
"map_dark_style": "Estilo oscuro",
@ -215,7 +212,6 @@
"refreshing_all_libraries": "Actualizar todas las bibliotecas",
"registration": "Registrar administrador",
"registration_description": "Dado que eres el primer usuario del sistema, se te asignará como Admin y serás responsable de las tareas administrativas, y de crear a los usuarios adicionales.",
"removing_deleted_files": "Eliminando archivos sin conexión",
"repair_all": "Reparar todo",
"repair_matched_items": "Coincidencia {count, plural, one {# elemento} other {# elementos}}",
"repaired_items": "Reparado {count, plural, one {# elemento} other {# elementos}}",
@ -223,12 +219,12 @@
"reset_settings_to_default": "Restablecer la configuración predeterminada",
"reset_settings_to_recent_saved": "Restablecer la configuración a la configuración guardada recientemente",
"scanning_library": "Escaneando la biblioteca",
"scanning_library_for_changed_files": "Escanear archivos modificados en biblioteca",
"scanning_library_for_new_files": "Escanear nuevos archivos en biblioteca",
"search_jobs": "Buscar trabajo...",
"send_welcome_email": "Enviar correo de bienvenida",
"server_external_domain_settings": "Dominio externo",
"server_external_domain_settings_description": "Dominio para enlaces públicos compartidos, incluidos http(s)://",
"server_public_users": "Usuarios públicos",
"server_public_users_description": "Todos los usuarios (nombre y correo electrónico) aparecen en la lista cuando se añade un usuario a los álbumes compartidos. Si se desactiva, la lista de usuarios sólo estará disponible para los usuarios administradores.",
"server_settings": "Configuración del servidor",
"server_settings_description": "Administrar la configuración del servidor",
"server_welcome_message": "Mensaje de bienvenida",
@ -254,6 +250,16 @@
"storage_template_user_label": "<code>{label}</code> es la etiqueta de almacenamiento del usuario",
"system_settings": "Ajustes del Sistema",
"tag_cleanup_job": "Limpieza de etiquetas",
"template_email_available_tags": "Puede utilizar las siguientes variables en su plantilla: {tags}",
"template_email_if_empty": "Si la plantilla está vacía, se utilizará el correo electrónico predeterminado.",
"template_email_invite_album": "Plantilla de álbum de invitaciones",
"template_email_preview": "Vista previa",
"template_email_settings": "Modelos de correo electrónico",
"template_email_settings_description": "Gestionar plantillas de notificación por correo electrónico personalizadas",
"template_email_update_album": "Actualizar plantilla del álbum",
"template_email_welcome": "Plantilla de correo electrónico de bienvenida",
"template_settings": "Plantillas de notificación",
"template_settings_description": "Gestione plantillas personalizadas para las notificaciones.",
"theme_custom_css_settings": "CSS Personalizado",
"theme_custom_css_settings_description": "Las Hojas de Estilo (CSS) permiten personalizar el diseño de Immich.",
"theme_settings": "Ajustes Tema",
@ -261,7 +267,6 @@
"these_files_matched_by_checksum": "Estos archivos coinciden con sus checksums",
"thumbnail_generation_job": "Generar Miniaturas",
"thumbnail_generation_job_description": "Genere miniaturas grandes, pequeñas y borrosas para cada archivo, así como miniaturas para cada persona",
"transcode_policy_description": "Política sobre cuándo se debe transcodificar un vídeo. Los vídeos HDR siempre se transcodificarán (excepto si la transcodificación está desactivada).",
"transcoding_acceleration_api": "API Aceleración",
"transcoding_acceleration_api_description": "La API que interactuará con su dispositivo para acelerar la transcodificación. Esta configuración es el \"mejor esfuerzo\": recurrirá a la transcodificación del software en caso de error. VP9 puede funcionar o no dependiendo de su hardware.",
"transcoding_acceleration_nvenc": "NVENC (requiere GPU NVIDIA)",
@ -313,8 +318,6 @@
"transcoding_threads_description": "Los valores más altos conducen a una codificación más rápida, pero dejan menos espacio para que el servidor procese otras tareas mientras está activo. Este valor no debe ser mayor que la cantidad de núcleos de CPU. Maximiza la utilización si se establece en 0.",
"transcoding_tone_mapping": "Mapeo de tonos",
"transcoding_tone_mapping_description": "Intenta preservar la apariencia de los videos HDR cuando se convierten a SDR. Cada algoritmo realiza diferentes compensaciones en cuanto a color, detalle y brillo. Hable conserva los detalles, Mobius conserva el color y Reinhard conserva el brillo.",
"transcoding_tone_mapping_npl": "Mapeo de tonos NPL",
"transcoding_tone_mapping_npl_description": "Los colores se ajustarán para que parezcan normales en una pantalla con este brillo. Contrariamente a la intuición, los valores más bajos aumentan el brillo del vídeo y viceversa, ya que compensan el brillo de la pantalla. 0 establece este valor automáticamente.",
"transcoding_transcode_policy": "Políticas de transcodificación",
"transcoding_transcode_policy_description": "Política sobre cuándo se debe transcodificar un vídeo. Los vídeos HDR siempre se transcodificarán (excepto si la transcodificación está desactivada).",
"transcoding_two_pass_encoding": "Codificación en dos pasadas",
@ -395,7 +398,6 @@
"archive_or_unarchive_photo": "Archivar o restaurar foto",
"archive_size": "Tamaño del archivo",
"archive_size_description": "Configure el tamaño del archivo para descargas (en GB)",
"archived": "Archivado",
"archived_count": "{count, plural, one {# archivado} other {# archivados}}",
"are_these_the_same_person": "¿Son la misma persona?",
"are_you_sure_to_do_this": "¿Estas seguro de que quieres hacer esto?",
@ -416,7 +418,6 @@
"assets_added_to_album_count": "Añadido {count, plural, one {# asset} other {# assets}} al álbum",
"assets_added_to_name_count": "Añadido {count, plural, one {# asset} other {# assets}} a {hasName, select, true {<b>{name}</b>} other {new album}}",
"assets_count": "{count, plural, one {# activo} other {# activos}}",
"assets_moved_to_trash": "Se movió {count, plural, one {# activo} other {# activos}} a la papelera",
"assets_moved_to_trash_count": "{count, plural, one {# elemento movido} other {# elementos movidos}} a la papelera",
"assets_permanently_deleted_count": "Eliminado permanentemente {count, plural, one {# elemento} other {# elementos}}",
"assets_removed_count": "Eliminado {count, plural, one {# elemento} other {# elementos}}",
@ -446,10 +447,6 @@
"cannot_merge_people": "No se pueden fusionar personas",
"cannot_undo_this_action": "¡No puedes deshacer esta acción!",
"cannot_update_the_description": "No se puede actualizar la descripción",
"cant_apply_changes": "No se pueden aplicar los cambios",
"cant_get_faces": "No se encuentran rostros",
"cant_search_people": "No se pueden buscar personas",
"cant_search_places": "No se pueden buscar lugares",
"change_date": "Cambiar fecha",
"change_expiration_time": "Cambiar fecha de caducidad",
"change_location": "Cambiar ubicación",
@ -481,6 +478,7 @@
"confirm": "Confirmar",
"confirm_admin_password": "Confirmar Contraseña de Administrador",
"confirm_delete_shared_link": "¿Estás seguro de que deseas eliminar este enlace compartido?",
"confirm_keep_this_delete_others": "Todos los demás activos de la pila se eliminarán excepto este activo. ¿Está seguro de que quiere continuar?",
"confirm_password": "Confirmar contraseña",
"contain": "Incluido",
"context": "Contexto",
@ -530,6 +528,7 @@
"delete_key": "Eliminar clave",
"delete_library": "Eliminar biblioteca",
"delete_link": "Eliminar enlace",
"delete_others": "Eliminar otros",
"delete_shared_link": "Eliminar enlace compartido",
"delete_tag": "Eliminar etiqueta",
"delete_tag_confirmation_prompt": "¿Estás seguro de que deseas eliminar la etiqueta {tagName} ?",
@ -563,13 +562,6 @@
"duplicates": "Duplicados",
"duplicates_description": "Resuelva cada grupo indicando, en cada caso, cuales están duplicados",
"duration": "Duración",
"durations": {
"days": "{days, plural, one {día} other {{days, number} días}}",
"hours": "{hours, plural, one {hora} other {{hours, number} horas}}",
"minutes": "{minutes, plural, one {minuto} other {{minutes, number} minutos}}",
"months": "{months, plural, one {mes} other {{months, number} meses}}",
"years": "{years, plural, one {año} other {{years, number} años}}"
},
"edit": "Editar",
"edit_album": "Editar album",
"edit_avatar": "Editar avatar",
@ -594,8 +586,6 @@
"editor_crop_tool_h2_aspect_ratios": "Proporciones del aspecto",
"editor_crop_tool_h2_rotation": "Rotación",
"email": "Correo",
"empty": "",
"empty_album": "Álbum vacío",
"empty_trash": "Vaciar papelera",
"empty_trash_confirmation": "¿Estás seguro de que quieres vaciar la papelera? Esto eliminará permanentemente todos los archivos de la basura de Immich.\n¡No puedes deshacer esta acción!",
"enable": "Habilitar",
@ -629,6 +619,7 @@
"failed_to_create_shared_link": "Error al crear el enlace compartido",
"failed_to_edit_shared_link": "Error al editar el enlace compartido",
"failed_to_get_people": "Error al obtener personas",
"failed_to_keep_this_delete_others": "No se pudo conservar este activo y eliminar los demás",
"failed_to_load_asset": "Error al cargar el elemento",
"failed_to_load_assets": "Error al cargar los elementos",
"failed_to_load_people": "Error al cargar a los usuarios",
@ -656,8 +647,6 @@
"unable_to_change_location": "No se puede cambiar de ubicación",
"unable_to_change_password": "No se puede cambiar la contraseña",
"unable_to_change_visibility": "No se puede cambiar la visibilidad de {count, plural, one {# persona} other {# personas}}",
"unable_to_check_item": "",
"unable_to_check_items": "",
"unable_to_complete_oauth_login": "No se puede completar el inicio de sesión de OAuth",
"unable_to_connect": "No puede conectarse",
"unable_to_connect_to_server": "Error al conectar al servidor",
@ -698,12 +687,10 @@
"unable_to_remove_album_users": "No se pueden eliminar usuarios del álbum",
"unable_to_remove_api_key": "No se puede eliminar la clave API",
"unable_to_remove_assets_from_shared_link": "No se pueden eliminar archivos desde el enlace compartido",
"unable_to_remove_comment": "",
"unable_to_remove_deleted_assets": "No se pueden eliminar archivos sin conexión",
"unable_to_remove_library": "No se puede eliminar la biblioteca",
"unable_to_remove_partner": "No se puede eliminar el invitado",
"unable_to_remove_reaction": "No se puede eliminar la reacción",
"unable_to_remove_user": "",
"unable_to_repair_items": "No se pueden reparar los items",
"unable_to_reset_password": "No se puede restablecer la contraseña",
"unable_to_resolve_duplicate": "No se resolver duplicado",
@ -733,10 +720,6 @@
"unable_to_update_user": "No se puede actualizar el usuario",
"unable_to_upload_file": "Error al subir el archivo"
},
"every_day_at_onepm": "",
"every_night_at_midnight": "",
"every_night_at_twoam": "",
"every_six_hours": "",
"exif": "EXIF",
"exit_slideshow": "Salir de la presentación",
"expand_all": "Expandir todo",
@ -751,33 +734,28 @@
"external": "Externo",
"external_libraries": "Bibliotecas Externas",
"face_unassigned": "Sin asignar",
"failed_to_get_people": "No se pudo encontrar a personas",
"failed_to_load_assets": "Error al cargar los activos",
"favorite": "Favorito",
"favorite_or_unfavorite_photo": "Foto favorita o no favorita",
"favorites": "Favoritos",
"feature": "",
"feature_photo_updated": "Foto destacada actualizada",
"featurecollection": "",
"features": "Características",
"features_setting_description": "Administrar las funciones de la aplicación",
"file_name": "Nombre de archivo",
"file_name_or_extension": "Nombre del archivo o extensión",
"filename": "Nombre del archivo",
"files": "",
"filetype": "Tipo de archivo",
"filter_people": "Filtrar personas",
"find_them_fast": "Encuéntrelos rápidamente por nombre con la búsqueda",
"fix_incorrect_match": "Corregir coincidencia incorrecta",
"folders": "Carpetas",
"folders_feature_description": "Explorar la vista de carpetas para las fotos y los videos en el sistema de archivos",
"force_re-scan_library_files": "Forzar reescaneo de todos los archivos de la biblioteca",
"forward": "Reenviar",
"general": "General",
"get_help": "Solicitar ayuda",
"getting_started": "Comenzamos",
"go_back": "Volver atrás",
"go_to_search": "Ir a búsqueda",
"go_to_share_page": "Ir a compartir página",
"group_albums_by": "Agrupar albums por...",
"group_no": "Sin agrupación",
"group_owner": "Agrupar por propietario",
@ -803,10 +781,6 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} tomada en {city}, {country} con {person1} y {person2} el {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} tomada en {city}, {country} con {person1}, {person2}, y {person3} el {date}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} tomada en {city}, {country} con {person1}, {person2}, y {additionalCount, number} más el {date}",
"image_alt_text_people": "{count, plural, =1 {with {person1}} =2 {with {person1} and {person2}} =3 {with {person1}, {person2}, and {person3}} other {with {person1}, {person2}, y {others, number} others}}",
"image_alt_text_place": "En {city}, {country}",
"image_taken": "{isVideo, select, true {Video taken} other {Image taken}}",
"img": "",
"immich_logo": "Logo de Immich",
"immich_web_interface": "Interfaz Web de Immich",
"import_from_json": "Importar desde JSON",
@ -827,10 +801,11 @@
"invite_people": "Invitar a Personas",
"invite_to_album": "Invitar al álbum",
"items_count": "{count, plural, one {# elemento} other {# elementos}}",
"job_settings_description": "",
"jobs": "Tareas",
"keep": "Conservar",
"keep_all": "Conservar Todo",
"keep_this_delete_others": "Mantener este, eliminar los otros",
"kept_this_deleted_others": "Mantuvo este activo y eliminó {count, plural, one {# activo} other {# activos}}",
"keyboard_shortcuts": "Atajos de teclado",
"language": "Idioma",
"language_setting_description": "Selecciona tu idioma preferido",
@ -842,31 +817,6 @@
"level": "Nivel",
"library": "Biblioteca",
"library_options": "Opciones de biblioteca",
"license_account_info": "Tu cuenta tiene licencia",
"license_activated_subtitle": "Gracias por apoyar a Immich y al software de código abierto",
"license_activated_title": "Tu licencia ha sido activada exitosamente",
"license_button_activate": "Activar",
"license_button_buy": "Comprar",
"license_button_buy_license": "Comprar una licencia",
"license_button_select": "Seleccionar",
"license_failed_activation": "No se pudo activar la licencia. ¡Por favor, revisa tu correo electrónico para obtener la clave de licencia correcta!",
"license_individual_description_1": "1 licencia por usuario en cualquier servidor",
"license_individual_title": "Licencia individual",
"license_info_licensed": "Con licencia",
"license_info_unlicensed": "Sin licencia",
"license_input_suggestion": "¿Tienes una licencia? Introduzca la clave a continuación",
"license_license_subtitle": "Comprar una licencia para apoyar a Immich",
"license_license_title": "LICENCIA",
"license_lifetime_description": "Licencia de por vida",
"license_per_server": "Por servidor",
"license_per_user": "Por usuario",
"license_server_description_1": "1 licencia por servidor",
"license_server_description_2": "Licencia para todos los usuarios del servidor",
"license_server_title": "Licencia del servidor",
"license_trial_info_1": "Está ejecutando una versión sin licencia de Immich",
"license_trial_info_2": "Llevas utilizando Immich aproximadamente",
"license_trial_info_3": "{accountAge, plural, one {# día} other {# días}}",
"license_trial_info_4": "Por favor, considera la compra de una licencia para apoyar el desarrollo continuo del servicio",
"light": "Claro",
"like_deleted": "Me gusta eliminado",
"link_motion_video": "Enlazar vídeo en movimiento",
@ -971,7 +921,6 @@
"onboarding_welcome_user": "Bienvenido, {user}",
"online": "En línea",
"only_favorites": "Solo favoritos",
"only_refreshes_modified_files": "Solo actualiza los archivos modificados",
"open_in_map_view": "Abrir en la vista del mapa",
"open_in_openstreetmap": "Abrir en OpenStreetMap",
"open_the_search_filters": "Abre los filtros de búsqueda",
@ -1009,14 +958,12 @@
"people_edits_count": "Editada {count, plural, one {# persona} other {# personas}}",
"people_feature_description": "Explorar fotos y vídeos agrupados por personas",
"people_sidebar_description": "Mostrar un enlace a Personas en la barra lateral",
"perform_library_tasks": "",
"permanent_deletion_warning": "Advertencia de eliminación permanente",
"permanent_deletion_warning_setting_description": "Mostrar una advertencia al eliminar archivos permanentemente",
"permanently_delete": "Borrar permanentemente",
"permanently_delete_assets_count": "Eliminar permanentemente {count, plural, one {elemento} other {elementos}}",
"permanently_delete_assets_prompt": "¿Está seguro de que desea eliminar permanentemente {count, plural, one {este activo?} other {estos <b>#</b> activos?}} Esto también eliminará {count, plural, one {de tu} other {de tus}} álbum(es).",
"permanently_deleted_asset": "Archivo eliminado permanentemente",
"permanently_deleted_assets": "Eliminado permanentemente {count, plural, one {# activo} other {# activos}}",
"permanently_deleted_assets_count": "Eliminado permanentemente {count, plural, one {# elemento} other {# elementos}}",
"person": "Persona",
"person_hidden": "{name}{hidden, select, true { (oculto)} other {}}",
@ -1032,7 +979,6 @@
"play_memories": "Reproducir recuerdos",
"play_motion_photo": "Reproducir foto en movimiento",
"play_or_pause_video": "Reproducir o pausar vídeo",
"point": "",
"port": "Puerto",
"preset": "Preestablecido",
"preview": "Posterior",
@ -1077,12 +1023,10 @@
"purchase_server_description_2": "Estado del soporte",
"purchase_server_title": "Servidor",
"purchase_settings_server_activated": "La clave del producto del servidor la administra el administrador",
"range": "",
"rating": "Valoración",
"rating_clear": "Borrar calificación",
"rating_count": "{count, plural, one {# estrella} other {# estrellas}}",
"rating_description": "Mostrar la clasificación exif en el panel de información",
"raw": "",
"reaction_options": "Opciones de reacción",
"read_changelog": "Leer registro de cambios",
"reassign": "Reasignar",
@ -1090,6 +1034,7 @@
"reassigned_assets_to_new_person": "Reasignado {count, plural, one {# elemento} other {# elementos}} a un nuevo usuario",
"reassing_hint": "Asignar archivos seleccionados a una persona existente",
"recent": "Reciente",
"recent-albums": "Últimos álbumes",
"recent_searches": "Búsquedas recientes",
"refresh": "Actualizar",
"refresh_encoded_videos": "Recargar los vídeos codificados",
@ -1111,6 +1056,7 @@
"remove_from_album": "Eliminar del álbum",
"remove_from_favorites": "Quitar de favoritos",
"remove_from_shared_link": "Eliminar desde enlace compartido",
"remove_url": "Eliminar URL",
"remove_user": "Eliminar usuario",
"removed_api_key": "Clave API eliminada: {name}",
"removed_from_archive": "Eliminado del archivo",
@ -1127,7 +1073,6 @@
"reset": "Reiniciar",
"reset_password": "Restablecer la contraseña",
"reset_people_visibility": "Restablecer la visibilidad de las personas",
"reset_settings_to_default": "",
"reset_to_default": "Restablecer los valores predeterminados",
"resolve_duplicates": "Resolver duplicados",
"resolved_all_duplicates": "Todos los duplicados resueltos",
@ -1147,9 +1092,7 @@
"saved_settings": "Configuraciones guardadas",
"say_something": "Comenta algo",
"scan_all_libraries": "Escanear todas las bibliotecas",
"scan_all_library_files": "Vuelva a escanear todos los archivos de la biblioteca",
"scan_library": "Escanear",
"scan_new_library_files": "Escanear nuevos archivos de biblioteca",
"scan_settings": "Configuración de escaneo",
"scanning_for_album": "Buscando álbum...",
"search": "Buscar",
@ -1192,7 +1135,6 @@
"selected_count": "{count, plural, one {# seleccionado} other {# seleccionados}}",
"send_message": "Enviar mensaje",
"send_welcome_email": "Enviar correo de bienvenida",
"server": "Servidor",
"server_offline": "Servidor desconectado",
"server_online": "Servidor en línea",
"server_stats": "Estadísticas del servidor",
@ -1297,17 +1239,17 @@
"they_will_be_merged_together": "Se fusionarán entre sí",
"third_party_resources": "Recursos de terceros",
"time_based_memories": "Recuerdos basados en tiempo",
"timeline": "Cronología",
"timezone": "Zona horaria",
"to_archive": "Archivar",
"to_change_password": "Cambiar contraseña",
"to_favorite": "A los favoritos",
"to_login": "Iniciar Sesión",
"to_parent": "Ir a los padres",
"to_root": "Para root",
"to_trash": "Descartar",
"toggle_settings": "Alternar ajustes",
"toggle_theme": "Alternar tema oscuro",
"toggle_visibility": "Alternar visibilidad",
"total": "Total",
"total_usage": "Uso total",
"trash": "Papelera",
"trash_all": "Descartar todo",
@ -1317,12 +1259,10 @@
"trashed_items_will_be_permanently_deleted_after": "Los elementos en la papelera serán eliminados permanentemente tras {days, plural, one {# día} other {# días}}.",
"type": "Tipo",
"unarchive": "Desarchivar",
"unarchived": "Restaurado",
"unarchived_count": "{count, plural, one {# No archivado} other {# No archivados}}",
"unfavorite": "Retirar favorito",
"unhide_person": "Mostrar persona",
"unknown": "Desconocido",
"unknown_album": "Álbum desconocido",
"unknown_year": "Año desconocido",
"unlimited": "Ilimitado",
"unlink_motion_video": "Desvincular vídeo en movimiento",
@ -1354,13 +1294,13 @@
"use_custom_date_range": "Usa un intervalo de fechas personalizado",
"user": "Usuario",
"user_id": "ID de usuario",
"user_license_settings": "Licencia",
"user_license_settings_description": "Gestionar tu licencia",
"user_liked": "{user} le gustó {type, select, photo {this photo} video {this video} asset {this asset} other {it}}",
"user_purchase_settings": "Compra",
"user_purchase_settings_description": "Gestiona tu compra",
"user_role_set": "Carbiar {user} a {role}",
"user_usage_detail": "Detalle del uso del usuario",
"user_usage_stats": "Estadísticas de uso de la cuenta",
"user_usage_stats_description": "Ver estadísticas de uso de la cuenta",
"username": "Nombre de usuario",
"users": "Usuarios",
"utilities": "Utilidades",
@ -1368,7 +1308,7 @@
"variables": "Variables",
"version": "Versión",
"version_announcement_closing": "Tu amigo, Alex",
"version_announcement_message": "Hola Amigo: Hay una nueva versión de la aplicación, por favor, tómate tu tiempo para visitar las notas de la <link>versión</link> y asegúrate de que tu <code>docker-compose.yml</code> y la configuración <code>.env</code> estén actualizadas para evitar cualquier configuración incorrecta, especialmente si usas WatchTower o cualquier mecanismo que maneje la actualización automática de tu aplicación.",
"version_announcement_message": "¡Hola! Hay una nueva versión de Immich disponible. Tómese un tiempo para leer las <link> notas de la versión </link> para asegurarse de que su configuración esté actualizada y evitar errores de configuración, especialmente si utiliza WatchTower o cualquier mecanismo que se encargue de actualizar su instancia de Immich automáticamente.",
"version_history": "Historial de versiones",
"version_history_item": "Instalada la {version} el {date}",
"video": "Vídeo",
@ -1382,10 +1322,10 @@
"view_all_users": "Mostrar todos los usuarios",
"view_in_timeline": "Mostrar en la línea de tiempo",
"view_links": "Mostrar enlaces",
"view_name": "Ver",
"view_next_asset": "Mostrar siguiente elemento",
"view_previous_asset": "Mostrar elemento anterior",
"view_stack": "Ver Pila",
"viewer": "Visualizador",
"visibility_changed": "Visibilidad cambiada para {count, plural, one {# persona} other {# personas}}",
"waiting": "Esperando",
"warning": "Advertencia",

View file

@ -1,5 +1,5 @@
{
"about": "Teave",
"about": "Värskenda",
"account": "Konto",
"account_settings": "Konto seaded",
"acknowledge": "Sain aru",
@ -23,6 +23,7 @@
"add_to": "Lisa kohta...",
"add_to_album": "Lisa albumisse",
"add_to_shared_album": "Lisa jagatud albumisse",
"add_url": "Lisa URL",
"added_to_archive": "Lisatud arhiivi",
"added_to_favorites": "Lisatud lemmikutesse",
"added_to_favorites_count": "{count, number} pilti lisatud lemmikutesse",
@ -34,6 +35,11 @@
"authentication_settings_disable_all": "Kas oled kindel, et soovid kõik sisselogimismeetodid välja lülitada? Sisselogimine lülitatakse täielikult välja.",
"authentication_settings_reenable": "Et taas lubada, kasuta <link>serveri käsku</link>.",
"background_task_job": "Tausttegumid",
"backup_database": "Varunda andmebaas",
"backup_database_enable_description": "Luba andmebaasi varundamine",
"backup_keep_last_amount": "Varukoopiate arv, mida alles hoida",
"backup_settings": "Varundamise seaded",
"backup_settings_description": "Halda andmebaasi varundamise seadeid",
"check_all": "Märgi kõik",
"cleared_jobs": "Tööted eemaldatud: {job}",
"config_set_by_file": "Konfiguratsioon on määratud konfifaili abil",
@ -43,6 +49,9 @@
"confirm_reprocess_all_faces": "Kas oled kindel, et soovid kõik näod uuesti töödelda? See eemaldab kõik nimega isikud.",
"confirm_user_password_reset": "Kas oled kindel, et soovid kasutaja {user} parooli lähtestada?",
"create_job": "Lisa tööde",
"cron_expression": "Cron avaldis",
"cron_expression_description": "Sea skaneerimise intervall cron formaadis. Rohkema info jaoks vaata nt. <link>Crontab Guru</link>",
"cron_expression_presets": "Eelseadistatud cron avaldised",
"disable_login": "Keela sisselogimine",
"duplicate_detection_job_description": "Rakenda üksustele masinõpet, et leida sarnaseid pilte. Kasutab nutiotsingut",
"exclusion_pattern_description": "Välistamismustrid võimaldavad ignoreerida faile ja kaustu kogu skaneerimisel. See on kasulik, kui sul on kaustu, mis sisaldavad faile, mida sa ei soovi importida, nagu RAW failid.",
@ -61,22 +70,15 @@
"image_prefer_wide_gamut": "Eelista laia värvigammat",
"image_prefer_wide_gamut_setting_description": "Kasuta pisipiltide jaoks Display P3. See säilitab paremini laia värviruumiga piltide erksuse, aga vanematel seadmetel ja vanemate brauseritega võivad pildid teistsugused välja näha. sRGB pildid säilitatakse värvinihete vältimiseks.",
"image_preview_description": "Keskmise suurusega pilt ilma metaandmeteta, kasutusel üksiku üksuse vaatamise ja masinõppe jaoks",
"image_preview_format": "Eelvaate formaat",
"image_preview_quality_description": "Eelvaate kvaliteet vahemikus 1-100. Kõrgem väärtus on parem, aga tekitab suuremaid faile ning võib mõjutada rakenduse töökiirust. Madala väärtuse seadmine võib mõjutada masinõppe kvaliteeti.",
"image_preview_resolution": "Eelvaate resolutsioon",
"image_preview_resolution_description": "Kasutusel üksiku foto vaatamisel ja masinõppe jaoks. Kõrgem resolutsioon säilitab rohkem detaile, aga kodeerimine võtab rohkem aega, tekitab suurema faili ning võib mõjutada rakenduse töökiirust.",
"image_preview_title": "Eelvaate seaded",
"image_quality": "Kvaliteet",
"image_quality_description": "Pildikvaliteet vahemikus 1-100. Kõrgem väärtus tähendab paremat kvaliteeti ja suuremaid faile. See valik mõjutab eelvaateid ja pisipilte.",
"image_resolution": "Resolutsioon",
"image_resolution_description": "Kõrgemad resolutsioonid säilitavad rohkem detaile, aga kodeerimine võtab kauem aega, tekitab suuremaid faile ning võib mõjutada rakenduse töökiirust.",
"image_settings": "Pildi seaded",
"image_settings_description": "Halda genereeritud piltide kvaliteeti ja resolutsiooni",
"image_thumbnail_description": "Väike pisipilt ilma metaandmeteta, kasutusel fotode grupikaupa vaatamisel, näiteks ajajoonel",
"image_thumbnail_format": "Pisipildi formaat",
"image_thumbnail_quality_description": "Pisipildi kvaliteet vahemikus 1-100. Kõrgem väärtus on parem, aga tekitab suuremaid faile ning võib mõjutada rakenduse töökiirust.",
"image_thumbnail_resolution": "Pisipildi resolutsioon",
"image_thumbnail_resolution_description": "Kasutusel fotode mitmekaupa vaatamisel (ajajoon, albumi vaade, jne). Kõrgem resolutsioon säilitab rohkem detaile, aga kodeerimine võtab rohkem aega, tekitab suurema faili ning võib mõjutada rakenduse töökiirust.",
"image_thumbnail_title": "Pisipildi seaded",
"job_concurrency": "{job} samaaegsus",
"job_created": "Tööde lisatud",
@ -87,9 +89,6 @@
"jobs_delayed": "{jobCount, plural, other {# edasi lükatud}}",
"jobs_failed": "{jobCount, plural, other {# ebaõnnestus}}",
"library_created": "Lisatud kogu: {library}",
"library_cron_expression": "Cron avaldis",
"library_cron_expression_description": "Sea skaneerimise intervall cron formaadis. Rohkema info jaoks vaata nt. <link>Crontab Guru</link>",
"library_cron_expression_presets": "Eelseadistatud cron avaldised",
"library_deleted": "Kogu kustutatud",
"library_import_path_description": "Määra kaust, mida importida. Sellest kaustast ning alamkaustadest otsitakse pilte ja videosid.",
"library_scanning": "Perioodiline skaneerimine",
@ -132,7 +131,7 @@
"machine_learning_smart_search_description": "Otsi pilte semantiliselt CLIP-manuste abil",
"machine_learning_smart_search_enabled": "Luba nutiotsing",
"machine_learning_smart_search_enabled_description": "Kui keelatud, siis ei kodeerita pilte nutiotsingu jaoks.",
"machine_learning_url_description": "Masinõppe serveri URL",
"machine_learning_url_description": "Masinõppe serveri URL. Kui ette on antud rohkem kui üks URL, proovitakse neid järjest ükshaaval, kuni üks edukalt vastab.",
"manage_concurrency": "Halda samaaegsust",
"manage_log_settings": "Halda logi seadeid",
"map_dark_style": "Tume stiil",
@ -220,12 +219,12 @@
"reset_settings_to_default": "Lähtesta seaded",
"reset_settings_to_recent_saved": "Taasta hiljuti salvestatud seaded",
"scanning_library": "Kogu skaneerimine",
"scanning_library_for_changed_files": "Kogu muutunud failide skaneerimine",
"scanning_library_for_new_files": "Kogu uute failide skaneerimine",
"search_jobs": "Otsi töödet...",
"send_welcome_email": "Saada tervituskiri",
"server_external_domain_settings": "Väline domeen",
"server_external_domain_settings_description": "Domeen avalikult jagatud linkide jaoks, k.a. http(s)://",
"server_public_users": "Avalikud kasutajad",
"server_public_users_description": "Kasutaja jagatud albumisse lisamisel kuvatakse kõiki kasutajaid (nime ja e-posti aadressiga). Kui keelatud, kuvatakse kasutajate nimekirja ainult administraatoritele.",
"server_settings": "Serveri seaded",
"server_settings_description": "Halda serveri seadeid",
"server_welcome_message": "Tervitusteade",
@ -251,6 +250,16 @@
"storage_template_user_label": "<code>{label}</code> on kasutaja talletussilt",
"system_settings": "Süsteemi seaded",
"tag_cleanup_job": "Siltide korrastamine",
"template_email_available_tags": "Saad mallis kasutada järgmisi muutujaid: {tags}",
"template_email_if_empty": "Kui mall on tühi, kasutatakse vaikimisi e-kirja.",
"template_email_invite_album": "Albumisse kutse mall",
"template_email_preview": "Eelvaade",
"template_email_settings": "E-posti mallid",
"template_email_settings_description": "Halda e-posti teavitusmalle",
"template_email_update_album": "Albumi muutmise mall",
"template_email_welcome": "Tervituskirja mall",
"template_settings": "Teavituse mallid",
"template_settings_description": "Teavituste mallide haldamine.",
"theme_custom_css_settings": "Kohandatud CSS",
"theme_custom_css_settings_description": "Cascading Style Sheets lubab Immich'i kujunduse kohandamist.",
"theme_settings": "Teema seaded",
@ -309,8 +318,6 @@
"transcoding_threads_description": "Kõrgem väärtus tähendab kiiremat kodeerimist, aga jätab serverile muude tegevuste jaoks vähem ressursse. See väärtus ei tohiks olla suurem kui protsessori tuumade arv. Väärtus 0 tähendab maksimaalset kasutust.",
"transcoding_tone_mapping": "Toonivastendus",
"transcoding_tone_mapping_description": "Üritab säilitada HDR videote kvaliteeti SDR-iks teisendamisel. Iga algoritm teeb värvi, detailide ja ereduse osas erinevaid kompromisse. Hable säilitab detaile, Mobius säilitab värve ning Reinhard säilitab eredust.",
"transcoding_tone_mapping_npl": "Toonivastendus NPL",
"transcoding_tone_mapping_npl_description": "Muudab värve, et need paistaksid sellise eredusega ekraanil normaalsed. Madalamad väärtused suurendavad video eredust ja vastupidi, kuna see kompenseerib ekraani eredust. 0 määrab väärtuse automaatselt.",
"transcoding_transcode_policy": "Transkodeerimise reegel",
"transcoding_transcode_policy_description": "Reegel, millal tuleks videot transkodeerida. HDR-videosid transkodeeritakse alati (v.a. kui transkodeerimine on keelatud).",
"transcoding_two_pass_encoding": "Kahekäiguline kodeerimine",
@ -386,7 +393,7 @@
"api_key_empty": "Su API võtme nimi ei tohiks olla tühi",
"api_keys": "API võtmed",
"app_settings": "Rakenduse seaded",
"appears_in": "Kuvatud",
"appears_in": "Albumid",
"archive": "Arhiiv",
"archive_or_unarchive_photo": "Arhiveeri või taasta foto",
"archive_size": "Arhiivi suurus",
@ -471,6 +478,7 @@
"confirm": "Kinnita",
"confirm_admin_password": "Kinnita administraatori parool",
"confirm_delete_shared_link": "Kas oled kindel, et soovid selle jagatud lingi kustutada?",
"confirm_keep_this_delete_others": "Kõik muud üksused selles virnas kustutatakse. Kas oled kindel, et soovid jätkata?",
"confirm_password": "Kinnita parool",
"contain": "Mahuta ära",
"context": "Kontekst",
@ -520,6 +528,7 @@
"delete_key": "Kustuta võti",
"delete_library": "Kustuta kogu",
"delete_link": "Kustuta link",
"delete_others": "Kustuta teised",
"delete_shared_link": "Kustuta jagatud link",
"delete_tag": "Kustuta silt",
"delete_tag_confirmation_prompt": "Kas oled kindel, et soovid sildi {tagName} kustutada?",
@ -610,6 +619,7 @@
"failed_to_create_shared_link": "Jagatud lingi lisamine ebaõnnestus",
"failed_to_edit_shared_link": "Jagatud lingi muutmine ebaõnnestus",
"failed_to_get_people": "Isikute pärimine ebaõnnestus",
"failed_to_keep_this_delete_others": "Selle üksuse säilitamine ja ülejäänute kustutamine ebaõnnestus",
"failed_to_load_asset": "Üksuse laadimine ebaõnnestus",
"failed_to_load_assets": "Üksuste laadimine ebaõnnestus",
"failed_to_load_people": "Isikute laadimine ebaõnnestus",
@ -722,6 +732,7 @@
"external": "Väline",
"external_libraries": "Välised kogud",
"face_unassigned": "Seostamata",
"failed_to_load_assets": "Üksuste laadimine ebaõnnestus",
"favorite": "Lemmik",
"favorites": "Lemmikud",
"feature_photo_updated": "Esiletõstetud foto muudetud",
@ -735,7 +746,6 @@
"find_them_fast": "Leia teda kiiresti nime järgi otsides",
"folders": "Kaustad",
"folders_feature_description": "Kaustavaate abil failisüsteemis olevate fotode ja videote sirvimine",
"force_re-scan_library_files": "Sundskaneeri kogu kõik failid uuesti",
"forward": "Edasi",
"general": "Üldine",
"get_help": "Küsi abi",
@ -790,6 +800,8 @@
"jobs": "Tööted",
"keep": "Jäta alles",
"keep_all": "Jäta kõik alles",
"keep_this_delete_others": "Säilita see, kustuta ülejäänud",
"kept_this_deleted_others": "See üksus säilitatud ning {count, plural, one {# üksus} other {# üksust}} kustutatud",
"keyboard_shortcuts": "Kiirklahvid",
"language": "Keel",
"language_setting_description": "Vali oma eelistatud keel",
@ -903,7 +915,6 @@
"onboarding_welcome_user": "Tere tulemast, {user}",
"online": "Ühendatud",
"only_favorites": "Ainult lemmikud",
"only_refreshes_modified_files": "Värskendab ainult muudetud failid",
"open_in_map_view": "Ava kaardi vaates",
"open_in_openstreetmap": "Ava OpenStreetMap",
"open_the_search_filters": "Ava otsingufiltrid",
@ -1014,6 +1025,7 @@
"reassigned_assets_to_existing_person": "{count, plural, one {# üksus} other {# üksust}} seostatud {name, select, null {olemasoleva isikuga} other {isikuga {name}}}",
"reassigned_assets_to_new_person": "{count, plural, one {# üksus} other {# üksust}} seostatud uue isikuga",
"reassing_hint": "Seosta valitud üksused olemasoleva isikuga",
"recent-albums": "Hiljutised albumid",
"recent_searches": "Hiljutised otsingud",
"refresh": "Värskenda",
"refresh_encoded_videos": "Värskenda kodeeritud videod",
@ -1035,6 +1047,7 @@
"remove_from_album": "Eemalda albumist",
"remove_from_favorites": "Eemalda lemmikutest",
"remove_from_shared_link": "Eemalda jagatud lingist",
"remove_url": "Eemalda URL",
"remove_user": "Eemalda kasutaja",
"removed_api_key": "API võti eemaldatud: {name}",
"removed_from_archive": "Arhiivist eemaldatud",
@ -1069,9 +1082,7 @@
"saved_settings": "Seaded salvestatud",
"say_something": "Ütle midagi",
"scan_all_libraries": "Skaneeri kõik kogud",
"scan_all_library_files": "Skaneeri kogu kõik failid uuesti",
"scan_library": "Skaneeri",
"scan_new_library_files": "Skaneeri kogu uued failid",
"scan_settings": "Skaneerimise seaded",
"scanning_for_album": "Albumi skaneerimine...",
"search": "Otsi",
@ -1116,6 +1127,7 @@
"server_online": "Server ühendatud",
"server_stats": "Serveri statistika",
"server_version": "Serveri versioon",
"set": "Määra",
"set_as_album_cover": "Sea albumi kaanepildiks",
"set_as_profile_picture": "Sea profiilipildiks",
"set_date_of_birth": "Määra sünnikuupäev",
@ -1214,13 +1226,16 @@
"they_will_be_merged_together": "Nad ühendatakse kokku",
"third_party_resources": "Kolmanda osapoole ressursid",
"time_based_memories": "Ajapõhised mälestused",
"timeline": "Ajajoon",
"timezone": "Ajavöönd",
"to_archive": "Arhiivi",
"to_change_password": "Muuda parool",
"to_favorite": "Lemmik",
"to_login": "Logi sisse",
"to_trash": "Prügikasti",
"toggle_settings": "Kuva/peida seaded",
"toggle_theme": "Lülita tume teema",
"total": "Kokku",
"total_usage": "Kogukasutus",
"trash": "Prügikast",
"trash_all": "Kõik prügikasti",
@ -1266,6 +1281,8 @@
"user_purchase_settings_description": "Halda oma ostu",
"user_role_set": "Määra kasutajale {user} roll {role}",
"user_usage_detail": "Kasutajate kasutusandmed",
"user_usage_stats": "Konto kasutuse statistika",
"user_usage_stats_description": "Vaata konto kasutuse statistikat",
"username": "Kasutajanimi",
"users": "Kasutajad",
"utilities": "Tööriistad",
@ -1273,7 +1290,7 @@
"variables": "Muutujad",
"version": "Versioon",
"version_announcement_closing": "Sinu sõber, Alex",
"version_announcement_message": "Hei sõber, saadaval on rakenduse uus versioon. Palun võta aega, et lugeda <link>väljalasketeadet</link> ning veendu, et su <code>docker-compose.yml</code> ja <code>.env</code> failid on ajakohased, et vältida konfiguratsiooniprobleeme, eriti kui kasutad WatchTower'it või muud mehhanismi, mis rakendust automaatselt uuendab.",
"version_announcement_message": "Hei! Saadaval on uus Immich'i versioon. Palun võta aega, et lugeda <link>väljalasketeadet</link> ning veendu, et su seadistus on ajakohane, et vältida konfiguratsiooniprobleeme, eriti kui kasutad WatchTower'it või muud mehhanismi, mis Immich'it automaatselt uuendab.",
"version_history": "Versiooniajalugu",
"version_history_item": "Versioon {version} paigaldatud {date}",
"video": "Video",

View file

@ -56,16 +56,9 @@
"image_prefer_embedded_preview_setting_description": "استفاده از پیش‌نمایش داخلی در عکس‌های RAW به عنوان ورودی پردازش تصویر هنگامی که در دسترس باشد. این می‌تواند رنگ‌های دقیق‌تری را برای برخی تصاویر تولید کند، اما کیفیت پیش‌نمایش به دوربین بستگی دارد و ممکن است تصویر آثار فشرده‌سازی بیشتری داشته باشد.",
"image_prefer_wide_gamut": "ترجیحات گستره رنگی وسیع",
"image_prefer_wide_gamut_setting_description": "برای تصاویر کوچک از فضای رنگی Display P3 استفاده کنید. این کار باعث حفظ زنده بودن رنگ‌ها در تصاویر با گستره رنگی وسیع می‌شود، اما ممکن است تصاویر در دستگاه‌های قدیمی با نسخه‌های قدیمی مرورگر به شکل متفاوتی نمایش داده شوند. تصاویر با فضای رنگی sRGB به همان حالت sRGB نگه داشته می‌شوند تا از تغییرات رنگی جلوگیری شود.",
"image_preview_format": "فرمت نمایش",
"image_preview_resolution": "وضوح پیش نمایش",
"image_preview_resolution_description": "از این فرمت برای مشاهده یک عکس و همچنین برای یادگیری ماشین استفاده می‌شود. وضوح بالاتر می‌تواند جزئیات بیشتری را حفظ کند، اما زمان بیشتری برای رمزگذاری نیاز دارد، حجم فایل‌ها را بزرگتر می‌کند و ممکن است باعث کاهش پاسخگویی برنامه شود.",
"image_quality": "کیفیت",
"image_quality_description": "کیفیت تصویر از 1 تا 100. هرچه بالاتر باشد، کیفیت بهتر است اما فایل‌های بزرگ‌تری تولید می‌کند. این گزینه بر روی تصاویر پیش‌نمایش و بندانگشتی تأثیر می‌گذارد.",
"image_settings": "تنظیمات عکس",
"image_settings_description": "مدیریت کیفیت و وضوح تصاویر تولید شده",
"image_thumbnail_format": "قالب تصویر بندانگشتی",
"image_thumbnail_resolution": "وضوح تصویر بندانگشتی",
"image_thumbnail_resolution_description": "از این فرمت برای مشاهده گروهی عکس‌ها (مانند صفحه اصلی، نمایش آلبوم و غیره) استفاده می‌شود. وضوح بالاتر می‌تواند جزئیات بیشتری را حفظ کند، اما زمان بیشتری برای رمزگذاری نیاز دارد، حجم فایل‌ها را بزرگتر می‌کند و ممکن است باعث کاهش پاسخگویی برنامه شود.",
"job_concurrency": "همزمانی {job}",
"job_not_concurrency_safe": "این کار ایمنی همزمانی را تضمین نمی‌کند.",
"job_settings": "تنظیمات کار",
@ -74,9 +67,6 @@
"jobs_delayed": "",
"jobs_failed": "",
"library_created": "کتابخانه ایجاد شده: {library}",
"library_cron_expression": "عبارت کرون",
"library_cron_expression_description": "تنظیم فاصله زمانی اسکن با استفاده از فرمت کرون. برای اطلاعات بیشتر لطفا به مثال‌های <link>Crontab Guru</link> مراجعه کنید",
"library_cron_expression_presets": "پیش‌تنظیمات عبارت Cron",
"library_deleted": "کتابخانه حذف شد",
"library_import_path_description": "یک پوشه برای وارد کردن مشخص کنید. این پوشه، به همراه زیرپوشه‌ها، برای یافتن تصاویر و ویدیوها اسکن خواهد شد.",
"library_scanning": "اسکن دوره ای",
@ -194,15 +184,12 @@
"refreshing_all_libraries": "بروز رسانی همه کتابخانه ها",
"registration": "ثبت نام مدیر",
"registration_description": "از آنجایی که شما اولین کاربر در سیستم هستید، به عنوان مدیر تعیین شده‌اید و مسئولیت انجام وظایف مدیریتی بر عهده شما خواهد بود و کاربران اضافی توسط شما ایجاد خواهند شد.",
"removing_deleted_files": "حذف فایل‌های آفلاین",
"repair_all": "بازسازی همه",
"repair_matched_items": "",
"repaired_items": "",
"require_password_change_on_login": "الزام کاربر به تغییر گذرواژه در اولین ورود",
"reset_settings_to_default": "بازنشانی تنظیمات به حالت پیش‌فرض",
"reset_settings_to_recent_saved": "بازنشانی تنظیمات به آخرین تنظیمات ذخیره شده",
"scanning_library_for_changed_files": "اسکن کتابخانه برای فایل‌های تغییر یافته",
"scanning_library_for_new_files": "اسکن کتابخانه برای یافتن فایل های جدید",
"send_welcome_email": "ارسال ایمیل خوش آمد گویی",
"server_external_domain_settings": "دامنه خارجی",
"server_external_domain_settings_description": "دامنه برای لینک های عمومی به اشتراک گذاشته شده، شامل //:(s)http",
@ -288,8 +275,6 @@
"transcoding_threads_description": "مقادیر بالاتر منجر به رمزگذاری سریع تر می شود، اما فضای کمتری برای پردازش سایر وظایف سرور در حین فعالیت باقی می گذارد. این مقدار نباید بیشتر از تعداد هسته های CPU باشد. اگر روی 0 تنظیم شود، بیشترین استفاده را خواهد داشت.",
"transcoding_tone_mapping": "",
"transcoding_tone_mapping_description": "تلاش برای حفظ ظاهر ویدیوهای HDR هنگام تبدیل به SDR. هر الگوریتم تعادل های متفاوتی را برای رنگ، جزئیات و روشنایی ایجاد می کند. Hable جزئیات را حفظ می کند، Mobius رنگ را حفظ می کند و Reinhard روشنایی را حفظ می کند.",
"transcoding_tone_mapping_npl": "",
"transcoding_tone_mapping_npl_description": "رنگ ها برای ظاهر طبیعی در یک نمایشگر با این روشنایی تنظیم خواهند شد. برخلاف انتظار، مقادیر پایین تر باعث افزایش روشنایی ویدیو و برعکس می شوند، زیرا آن را برای روشنایی نمایشگر جبران می کند. مقدار 0 این مقدار را به طور خودکار تنظیم می کند.",
"transcoding_transcode_policy": "سیاست رمزگذاری",
"transcoding_transcode_policy_description": "سیاست برای زمانی که ویدیویی باید مجددا تبدیل (رمزگذاری) شود. ویدیوهای HDR همیشه تبدیل (رمزگذاری) مجدد خواهند شد (مگر رمزگذاری مجدد غیرفعال باشد).",
"transcoding_two_pass_encoding": "تبدیل (رمزگذاری) دو مرحله ای",
@ -349,10 +334,8 @@
"archive_or_unarchive_photo": "",
"archive_size": "",
"archive_size_description": "",
"archived": "",
"asset_offline": "",
"assets": "",
"assets_moved_to_trash": "",
"authorized_devices": "",
"back": "",
"backward": "",
@ -367,10 +350,6 @@
"cancel_search": "",
"cannot_merge_people": "",
"cannot_update_the_description": "",
"cant_apply_changes": "",
"cant_get_faces": "",
"cant_search_people": "",
"cant_search_places": "",
"change_date": "",
"change_expiration_time": "",
"change_location": "",
@ -561,7 +540,6 @@
"extension": "",
"external": "",
"external_libraries": "",
"failed_to_get_people": "",
"favorite": "",
"favorite_or_unfavorite_photo": "",
"favorites": "",
@ -573,14 +551,12 @@
"filter_people": "",
"find_them_fast": "",
"fix_incorrect_match": "",
"force_re-scan_library_files": "",
"forward": "",
"general": "",
"get_help": "",
"getting_started": "",
"go_back": "",
"go_to_search": "",
"go_to_share_page": "",
"group_albums_by": "",
"has_quota": "",
"hide_gallery": "",
@ -701,7 +677,6 @@
"oldest_first": "",
"online": "",
"only_favorites": "",
"only_refreshes_modified_files": "",
"open_the_search_filters": "",
"options": "",
"organize_your_library": "",
@ -737,7 +712,6 @@
"permanent_deletion_warning_setting_description": "",
"permanently_delete": "",
"permanently_deleted_asset": "",
"permanently_deleted_assets": "",
"person": "",
"photos": "",
"photos_count": "",
@ -794,8 +768,6 @@
"saved_settings": "",
"say_something": "",
"scan_all_libraries": "",
"scan_all_library_files": "",
"scan_new_library_files": "",
"scan_settings": "",
"scanning_for_album": "",
"search": "",
@ -827,7 +799,6 @@
"selected": "",
"send_message": "",
"send_welcome_email": "",
"server": "",
"server_stats": "",
"set": "",
"set_as_album_cover": "",
@ -899,7 +870,6 @@
"to_trash": "",
"toggle_settings": "",
"toggle_theme": "",
"toggle_visibility": "",
"total_usage": "",
"trash": "",
"trash_all": "",
@ -908,7 +878,6 @@
"trashed_items_will_be_permanently_deleted_after": "",
"type": "",
"unarchive": "",
"unarchived": "",
"unfavorite": "",
"unhide_person": "",
"unknown": "",
@ -949,7 +918,6 @@
"view_links": "",
"view_next_asset": "",
"view_previous_asset": "",
"viewer": "",
"waiting": "",
"week": "",
"welcome": "",

View file

@ -1,5 +1,5 @@
{
"about": "Tietoja",
"about": "Päivitä",
"account": "Tili",
"account_settings": "Tilin asetukset",
"acknowledge": "Tiedostan",
@ -23,6 +23,7 @@
"add_to": "Lisää...",
"add_to_album": "Lisää albumiin",
"add_to_shared_album": "Lisää jaettuun albumiin",
"add_url": "Lisää URL",
"added_to_archive": "Arkistoitu",
"added_to_favorites": "Lisätty suosikkeihin",
"added_to_favorites_count": "{count, number} lisätty suosikkeihin",
@ -34,6 +35,11 @@
"authentication_settings_disable_all": "Haluatko varmasti poistaa kaikki kirjautumistavat käytöstä? Kirjautuminen on tämän jälkeen mahdotonta.",
"authentication_settings_reenable": "Ottaaksesi uudestaan käyttöön, käytä <link>Palvelin Komentoa</link>.",
"background_task_job": "Taustatyöt",
"backup_database": "Varmuuskopioi Tietokanta",
"backup_database_enable_description": "Ota käyttöön tietokannan varmuuskopiointi",
"backup_keep_last_amount": "Varmuuskopioiden lukumäärä",
"backup_settings": "Varmuuskopioinnin asetukset",
"backup_settings_description": "Hallitse tietokannan varmuuskopioiden asetuksia",
"check_all": "Tarkista kaikki",
"cleared_jobs": "Työn {job} tehtävät tyhjennetty",
"config_set_by_file": "Asetukset on tällä hetkellä määritelty tiedostosta",
@ -43,9 +49,10 @@
"confirm_reprocess_all_faces": "Haluatko varmasti käsitellä uudelleen kaikki kasvot? Tämä poistaa myös nimetyt henkilöt.",
"confirm_user_password_reset": "Haluatko varmasti nollata käyttäjän {user} salasanan?",
"create_job": "Luo tehtävä",
"crontab_guru": "Crontab Guru",
"cron_expression": "Cron-lauseke",
"cron_expression_description": "Aseta skannausväli käyttämällä cron-formaattia. Lisätietoja linkistä. <link>Crontab Guru</link>",
"cron_expression_presets": "Esiasetetut Cron-lausekkeet",
"disable_login": "Poista kirjautuminen käytöstä",
"disabled": "Ei käytössä",
"duplicate_detection_job_description": "Tunnista samankaltaiset kuvat käyttäen koneoppimista. Tukeutuu Smart Search:iin",
"exclusion_pattern_description": "Poissulkemismallit mahdollistavat tiettyjen tiedostojen ja kansioiden jättämisen pois kirjastoasi skannatessa. Tästä on hyötyä jos kansiot sisältävät tiedostoja mitä et halua tuoda, kuten RAW-tiedostot.",
"external_library_created_at": "Ulkoinen kirjasto (luotu {date})",
@ -63,22 +70,15 @@
"image_prefer_wide_gamut": "Suosi laajaa väriskaalaa",
"image_prefer_wide_gamut_setting_description": "Käytä Display P3 -nimiavaruutta pikkukuville. Tämä säilöö värien vivahteet paremmin, mutta kuvat saattavat näyttää erilaisilta vanhemmissa laitteissa. sRGB-kuvat pidetään muuttumattomina, jottei värit muuttuisi.",
"image_preview_description": "Keskikokoinen kuva, josta metatiedot on poistettu, käytetään yksittäisen resurssin katseluun ja koneoppimiseen",
"image_preview_format": "Esikatselun muoto",
"image_preview_quality_description": "Esikatselulaatu 1-100. Korkeampi arvo on parempi, mutta tuottaa suurempia tiedostoja ja voi heikentää sovelluksen reagointikykyä. Matalan arvon asettaminen voi vaikuttaa koneoppimisen laatuun.",
"image_preview_resolution": "Esikatselun resoluutio",
"image_preview_resolution_description": "Käytetään kun katsellaan yksittäisiä kuvia, tai koneoppimiseen. Suurempi resoluutio voi säilyttää paremmin yksityiskohtia. Tosin koodaus kestää kauemmin, tiedostokoko kasvaa, ja se saattaa hidastaa sovelluksen responsiivisuutta.",
"image_preview_title": "Esikatselun asetukset",
"image_quality": "Laatu",
"image_quality_description": "Kuvan laatu välillä 1-100. Suurempi arvo on paremman laatuinen, mutta tuottaa kookkaampia tiedostoja. Tämä asetus vaikuttaa esikatselu- ja pikkukuviin.",
"image_resolution": "Resoluutio",
"image_resolution_description": "Korkeammat resoluutiot voivat säilyttää enemmän yksityiskohtia, mutta niiden koodaus kestää kauemmin, tiedostokoot ovat suurempia ja ne voivat heikentää sovelluksen reagointikykyä.",
"image_settings": "Kuva-asetukset",
"image_settings_description": "Hallitse luotujen kuvien laatua ja resoluutiota",
"image_thumbnail_description": "Pieni pikkukuva, josta metatiedot on poistettu, käytetään valokuvaryhmien katseluun, kuten pääaikajanalla",
"image_thumbnail_format": "Pikkukuvien muoto",
"image_thumbnail_quality_description": "Pikkukuvan laatu 1-100. Korkeampi arvo on parempi, mutta tuottaa suurempia tiedostoja ja voi heikentää sovelluksen reagointikykyä.",
"image_thumbnail_resolution": "Pikkukuvien resoluutio",
"image_thumbnail_resolution_description": "Käytetään katsottaessa useita kuvia kerralla (aikajana, albuminäkymä, jne.) Korkeampi resoluutio antaa enemmän yksityiskohtia, mutta niiden luonti kestää kauemmin, tiedostokoot ovat isompia ja voivat heikentää sovelluksen responsiivisuutta.",
"image_thumbnail_title": "Pikkukuva-asetukset",
"job_concurrency": "Tehtävän \"{job}\" samanaikaisuus",
"job_created": "Tehtävä luotu",
@ -89,9 +89,6 @@
"jobs_delayed": "{jobCount, plural, other {# viivästynyttä}}",
"jobs_failed": "{jobCount, plural, other {# epäonnistunutta}}",
"library_created": "Kirjasto {library} luotu",
"library_cron_expression": "Cron-lauseke",
"library_cron_expression_description": "Anna skannaustiheys cron-formaatissa. Saadaksesi lisätietoja katso esimerkiksi <link>Crontab Guru</link>",
"library_cron_expression_presets": "Cron-lausekkeen esiasetukset",
"library_deleted": "Kirjasto poistettu",
"library_import_path_description": "Määritä kansio joka tuodaan. Kuvat ja videot skannataan tästä kansiosta, sekä alikansioista.",
"library_scanning": "Ajoittainen skannaus",
@ -215,7 +212,6 @@
"refreshing_all_libraries": "Virkistetään kaikki kirjastot",
"registration": "Pääkäyttäjän rekisteröinti",
"registration_description": "Pääkäyttäjänä olet vastuussa järjestelmän hallinnallisista tehtävistä ja uusien käyttäjien luomisesta.",
"removing_deleted_files": "Poistetaan Offline-tiedostot",
"repair_all": "Korjaa kaikki",
"repair_matched_items": "Löytyi {count, plural, one {# osuma} other {# osumaa}}",
"repaired_items": "Korjattiin {count, plural, one {# kohta} other {# kohtaa}}",
@ -223,12 +219,12 @@
"reset_settings_to_default": "Nollaa asetukset oletuksille",
"reset_settings_to_recent_saved": "Palauta aiemmin tallennetut asetukset",
"scanning_library": "Kirjastoa skannataan",
"scanning_library_for_changed_files": "Etsitään kirjaston muuttuneita tiedostoja",
"scanning_library_for_new_files": "Etsitään uusia tiedostoja",
"search_jobs": "Etsi tehtäviä...",
"send_welcome_email": "Lähetä tervetuloviesti",
"server_external_domain_settings": "Ulkoinen osoite",
"server_external_domain_settings_description": "Osoite julkisille linkeille, http(s):// mukaan lukien",
"server_public_users": "Julkiset käyttäjät",
"server_public_users_description": "Kaikki käyttäjät (nimi ja sähköpostiosoite) luetellaan, kun käyttäjä lisätään jaettuihin albumeihin. Kun toiminto on poistettu käytöstä, käyttäjäluettelo on vain pääkäyttäjien käytettävissä.",
"server_settings": "Palvelimen asetukset",
"server_settings_description": "Ylläpidä palvelimen asetuksia",
"server_welcome_message": "Tervetuloviesti",
@ -254,6 +250,7 @@
"storage_template_user_label": "<code>{label}</code> on käyttäjän Tallennustilan Tunniste",
"system_settings": "Järjestelmäasetukset",
"tag_cleanup_job": "Merkintäpuhdistus",
"template_email_preview": "Esikatselu",
"theme_custom_css_settings": "Mukautettu CSS",
"theme_custom_css_settings_description": "Mukauta Immichin ulkoasua CSS:llä.",
"theme_settings": "Teeman asetukset",
@ -261,7 +258,6 @@
"these_files_matched_by_checksum": "Näillä tiedostoilla on yhteinen tarkistussumma",
"thumbnail_generation_job": "Generoi pikkukuvat",
"thumbnail_generation_job_description": "Generoi isot, pienet sekä sumeat pikkukuvat jokaisesta aineistosta, kuten myös henkilöistä",
"transcode_policy_description": "",
"transcoding_acceleration_api": "Kiihdytysrajapinta",
"transcoding_acceleration_api_description": "Rajapinta, jolla keskustellaan laittesi kanssa nopeuttaaksemme koodausta. Tämä asetus on paras mahdollinen: Mikäli ongelmia ilmenee, palataan käyttämään ohjelmistopohjaista koodausta. VP9 voi toimia tai ei, riippuen laitteistosi kokoonpanosta.",
"transcoding_acceleration_nvenc": "NVENC (vaatii NVIDIA:n grafiikkasuorittimen)",
@ -313,8 +309,6 @@
"transcoding_threads_description": "Korkeampi arvo nopeuttaa enkoodausta, mutta vie tilaa palvelimen muilta tehtäviltä. Tämä arvo ei tulisi olla suurempi mitä suorittimen ytimien määrä. Suurin mahdollinen käyttö, mikäli arvo on 0.",
"transcoding_tone_mapping": "Sävykartoitus",
"transcoding_tone_mapping_description": "Pyrkii säilömään HDR-kuvien ulkonäön, kun muunnetaan peruskuvaksi. Jokaisella algoritmilla on omat heikkoutensa värien, yksityiskohtien tai kirkkauksien kesken. Hable säilöö yksityiskohdat, Mobius värit ja Reinhard kirkkaudet.",
"transcoding_tone_mapping_npl": "Sävykartoitus (NPL)",
"transcoding_tone_mapping_npl_description": "Värejä säädetään niin, että ne näyttävät luonnollisilta tällä kirkkaudella. Päinvastoin kuin luulisi, alempi arvo nostaa kirkkautta ja päinvastoin, koska se kompensoi näytön kirkkautta. 0 määrittää tason automaattisesti.",
"transcoding_transcode_policy": "Transkoodauskäytäntö",
"transcoding_transcode_policy_description": "Käytäntö miten video tulisi transkoodata. HDR videot transkoodataan aina, paitsi jos transkoodaus on poistettu käytöstä.",
"transcoding_two_pass_encoding": "Two-pass enkoodaus",
@ -395,7 +389,6 @@
"archive_or_unarchive_photo": "Arkistoi kuva tai palauta arkistosta",
"archive_size": "Arkiston koko",
"archive_size_description": "Määritä arkiston koko latauksissa (Gt)",
"archived": "Arkistoitu",
"archived_count": "{count, plural, other {Arkistoitu #}}",
"are_these_the_same_person": "Ovatko he sama henkilö?",
"are_you_sure_to_do_this": "Haluatko varmasti tehdä tämän?",
@ -416,7 +409,6 @@
"assets_added_to_album_count": "Albumiin lisätty {count, plural, one {# kohde} other {# kohdetta}}",
"assets_added_to_name_count": "Lisätty {count, plural, one {# kohde} other {# kohdetta}} {hasName, select, true {<b>{name}</b>} other {uuteen albumiin}}",
"assets_count": "{count, plural, one {# media} other {# mediaa}}",
"assets_moved_to_trash": "Siirretty {count, plural, one {# aineisto} other {# aineistoa}} roskakoriin",
"assets_moved_to_trash_count": "Siirretty {count, plural, one {# media} other {# mediaa}} roskakoriin",
"assets_permanently_deleted_count": "{count, plural, one {# media} other {# mediaa}} poistettu pysyvästi",
"assets_removed_count": "{count, plural, one {# media} other {# mediaa}} poistettu",
@ -446,10 +438,6 @@
"cannot_merge_people": "Ihmisiä ei voitu yhdistää",
"cannot_undo_this_action": "Et voi perua tätä toimintoa!",
"cannot_update_the_description": "Kuvausta ei voi päivittää",
"cant_apply_changes": "Asetuksia ei voitu määrittää",
"cant_get_faces": "Kasvoja ei voinut hakea",
"cant_search_people": "Ihmisiä ei voinut etsiä",
"cant_search_places": "Sijainteja ei voinut etsiä",
"change_date": "Vaihda päiväys",
"change_expiration_time": "Muuta erääntymisaikaa",
"change_location": "Vaihda sijainti",
@ -481,6 +469,7 @@
"confirm": "Vahvista",
"confirm_admin_password": "Vahvista ylläpitäjän salasana",
"confirm_delete_shared_link": "Haluatko varmasti poistaa tämän jaetun linkin?",
"confirm_keep_this_delete_others": "Kuvapinon muut kuvat tätä lukuunottamatta poistetaan. Oletko varma, että haluat jatkaa?",
"confirm_password": "Vahvista salasana",
"contain": "Mahduta",
"context": "Konteksti",
@ -530,6 +519,7 @@
"delete_key": "Poista avain",
"delete_library": "Poista kirjasto",
"delete_link": "Poista linkki",
"delete_others": "Poista muut",
"delete_shared_link": "Poista jaettu linkki",
"delete_tag": "Poista tunniste",
"delete_tag_confirmation_prompt": "Haluatko varmasti poistaa tunnisteen {tagName}?",
@ -563,13 +553,6 @@
"duplicates": "Kaksoiskappaleet",
"duplicates_description": "Selvitä jokaisen kohdalla mitkä (jos yksikään) ovat kaksoiskappaleita",
"duration": "Kesto",
"durations": {
"days": "",
"hours": "",
"minutes": "",
"months": "",
"years": ""
},
"edit": "Muokkaa",
"edit_album": "Muokkaa albumia",
"edit_avatar": "Muokkaa avataria",
@ -594,8 +577,6 @@
"editor_crop_tool_h2_aspect_ratios": "Kuvasuhteet",
"editor_crop_tool_h2_rotation": "Rotaatio",
"email": "Sähköposti",
"empty": "",
"empty_album": "",
"empty_trash": "Tyhjennä roskakori",
"empty_trash_confirmation": "Haluatko varmasti tyhjentää roskakorin? Tämä poistaa pysyvästi kaikki tiedostot Immich:stä.\nToimintoa ei voi perua!",
"enable": "Ota käyttöön",
@ -629,6 +610,7 @@
"failed_to_create_shared_link": "Jaetun linkin luonti epäonnistui",
"failed_to_edit_shared_link": "Jaetun linkin muokkaus epäonnistui",
"failed_to_get_people": "Henkilöiden haku epäonnistui",
"failed_to_keep_this_delete_others": "Muiden kohteiden poisto epäonnistui",
"failed_to_load_asset": "Kohteen lataus epäonnistui",
"failed_to_load_assets": "Kohteiden lataus epäonnistui",
"failed_to_load_people": "Henkilöiden lataus epäonnistui",
@ -656,8 +638,6 @@
"unable_to_change_location": "Sijainnin muuttaminen epäonnistui",
"unable_to_change_password": "Salasanan vaihto epäonnistui",
"unable_to_change_visibility": "Ei voida muuttaa näkyvyyttä {count, plural, one {# henkilölle} other {# henkilölle}}",
"unable_to_check_item": "",
"unable_to_check_items": "",
"unable_to_complete_oauth_login": "OAuth-kirjautumista ei voitu suorittaa loppuun",
"unable_to_connect": "Yhteyttä ei voitu muodostaa",
"unable_to_connect_to_server": "Palvelimeen ei saatu yhteyttä",
@ -698,13 +678,10 @@
"unable_to_remove_album_users": "Käyttäjien poistaminen albumista epäonnistui",
"unable_to_remove_api_key": "API-avaimen poistaminen epäonnistui",
"unable_to_remove_assets_from_shared_link": "kohteiden poistaminen jaetusta linkistä epäonnistui",
"unable_to_remove_comment": "",
"unable_to_remove_deleted_assets": "Offline-tiedostoja ei voitu poistaa",
"unable_to_remove_library": "Kirjaston poistaminen epäonnistui",
"unable_to_remove_offline_files": "Offline-tiedostojen poistaminen epäonnistui",
"unable_to_remove_partner": "Kumppanin poistaminen epäonnistui",
"unable_to_remove_reaction": "Reaktion poistaminen epäonnistui",
"unable_to_remove_user": "",
"unable_to_repair_items": "Kohteiden korjaaminen epäonnistui",
"unable_to_reset_password": "Salasanan nollaaminen epäonnistui",
"unable_to_resolve_duplicate": "Virheilmoitus näkyy, kun palvelin palauttaa virheen painettaessa roskakorin tai säilytä-painiketta.",
@ -734,10 +711,6 @@
"unable_to_update_user": "Käyttäjän muokkaus epäonnistui",
"unable_to_upload_file": "Tiedostoa ei voitu ladata"
},
"every_day_at_onepm": "",
"every_night_at_midnight": "",
"every_night_at_twoam": "",
"every_six_hours": "",
"exif": "Exif",
"exit_slideshow": "Poistu diaesityksestä",
"expand_all": "Laajenna kaikki",
@ -752,33 +725,27 @@
"external": "Ulkoisesta",
"external_libraries": "Ulkoiset kirjastot",
"face_unassigned": "Ei määritelty",
"failed_to_get_people": "",
"favorite": "Suosikki",
"favorite_or_unfavorite_photo": "Suosikki- tai ei-suosikkikuva",
"favorites": "Suosikit",
"feature": "",
"feature_photo_updated": "Kansikuva ladattu",
"featurecollection": "",
"features": "Ominaisuudet",
"features_setting_description": "Hallitse sovelluksen ominaisuuksia",
"file_name": "Tiedoston nimi",
"file_name_or_extension": "Tiedostonimi tai tiedostopääte",
"filename": "Tiedostonimi",
"files": "",
"filetype": "Tiedostotyyppi",
"filter_people": "Suodata henkilöt",
"find_them_fast": "Löydä nopeasti hakemalla nimellä",
"fix_incorrect_match": "Korjaa virheellinen osuma",
"folders": "Kansiot",
"folders_feature_description": "Käytetään kansionäkymää valokuvien ja videoiden selaamiseen järjestelmässä",
"force_re-scan_library_files": "Pakota kaikkien kirjastotiedostojen uudelleenskannaus",
"forward": "Eteenpäin",
"general": "Yleinen",
"get_help": "Hae apua",
"getting_started": "Aloittaminen",
"go_back": "Palaa",
"go_to_search": "Siirry hakuun",
"go_to_share_page": "",
"group_albums_by": "Ryhmitä albumi...",
"group_no": "Ei ryhmitystä",
"group_owner": "Ryhmitä omistajan mukaan",
@ -804,7 +771,6 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Kuva}} otettu {city}ssä, {country}ssä {person1}n ja {person2}n kanssa {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Kuva}} otettu {city}ssä, {country}ssä {person1}n, {person2}n ja {person3}n kanssa {date}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Kuva}} otettu {city}ssä, {country}ssä {person1}n, {person2}n ja {additionalCount, number} muun kanssa {date}",
"img": "",
"immich_logo": "Immich-logo",
"immich_web_interface": "Immich-verkkokäyttöliittymä",
"import_from_json": "Tuo JSON-tiedostosta",
@ -825,10 +791,11 @@
"invite_people": "Kutsu ihmisiä",
"invite_to_album": "Kutsu albumiin",
"items_count": "{count, plural, one {# kpl} other {# kpl}}",
"job_settings_description": "",
"jobs": "Taustatehtävät",
"keep": "Säilytä",
"keep_all": "Säilytä kaikki",
"keep_this_delete_others": "Säilytä tämä, poista muut",
"kept_this_deleted_others": "Tämä kohde säilytettiin. {count, plural, one {# asset} other {# assets}} poistettiin",
"keyboard_shortcuts": "Pikanäppäimet",
"language": "Kieli",
"language_setting_description": "Valitse suosimasi kieli",
@ -840,8 +807,6 @@
"level": "Taso",
"library": "Kirjasto",
"library_options": "Kirjastovaihtoehdot",
"license_button_buy": "Osta",
"license_button_select": "Valitse",
"light": "Vaalea",
"like_deleted": "Tykkäys poistettu",
"link_motion_video": "Linkitä liikevideo",
@ -946,7 +911,6 @@
"onboarding_welcome_user": "Tervetuloa {user}",
"online": "Online",
"only_favorites": "Vain suosikit",
"only_refreshes_modified_files": "Päivittää vain muakatut tiedostot",
"open_in_map_view": "Avaa karttanäkymässä",
"open_in_openstreetmap": "Avaa OpenStreetMapissa",
"open_the_search_filters": "Avaa hakusuodattimet",
@ -984,7 +948,6 @@
"people_edits_count": "Muokattu {count, plural, one {# henkilö} other {# henkilöä}}",
"people_feature_description": "Selataan valokuvia ja videoita, jotka on ryhmitelty henkilöiden mukaan",
"people_sidebar_description": "Näytä linkki Henkilöihin sivupalkissa",
"perform_library_tasks": "",
"permanent_deletion_warning": "Pysyvän poiston varoitus",
"permanent_deletion_warning_setting_description": "Näytä varoitus, kun poistat kohteita pysyvästi",
"permanently_delete": "Poista pysyvästi",
@ -1006,7 +969,6 @@
"play_memories": "Toista muistot",
"play_motion_photo": "Toista Liikekuva",
"play_or_pause_video": "Toista tai keskeytä video",
"point": "",
"port": "Portti",
"preset": "Asetus",
"preview": "Esikatselu",
@ -1051,12 +1013,10 @@
"purchase_server_description_2": "Tukijan tila",
"purchase_server_title": "Palvelin",
"purchase_settings_server_activated": "Palvelimen tuoteavainta hallinnoi ylläpitäjä",
"range": "",
"rating": "Tähtiarvostelu",
"rating_clear": "Tyhjennä arvostelu",
"rating_count": "{count, plural, one {# tähti} other {# tähteä}}",
"rating_description": "Näytä EXIF-arvosana lisätietopaneelissa",
"raw": "",
"reaction_options": "Reaktioasetukset",
"read_changelog": "Lue muutosloki",
"reassign": "Määritä uudelleen",
@ -1101,7 +1061,6 @@
"reset": "Nollaa",
"reset_password": "Nollaa salasana",
"reset_people_visibility": "Nollaa henkilöiden näkyvyysasetukset",
"reset_settings_to_default": "",
"reset_to_default": "Palauta oletusasetukset",
"resolve_duplicates": "Ratkaise kaksoiskappaleet",
"resolved_all_duplicates": "Kaikki kaksoiskappaleet selvitetty",
@ -1121,9 +1080,7 @@
"saved_settings": "Asetukset tallennettu",
"say_something": "Sano jotain",
"scan_all_libraries": "Skannaa kaikki kirjastot",
"scan_all_library_files": "Skannaa uudelleen kaikki kirjastotiedostot",
"scan_library": "Skannaa",
"scan_new_library_files": "Skannaa uusia kirjastotiedostoja",
"scan_settings": "Skannausasetukset",
"scanning_for_album": "Etsitään albumia...",
"search": "Haku",
@ -1166,7 +1123,6 @@
"selected_count": "{count, plural, other {# valittu}}",
"send_message": "Lähetä viesti",
"send_welcome_email": "Lähetä tervetuloviesti",
"server": "Palvelin",
"server_offline": "Palvelin Offline-tilassa",
"server_online": "Palvelin Online-tilassa",
"server_stats": "Palvelimen tilastot",
@ -1271,6 +1227,7 @@
"they_will_be_merged_together": "Nämä tullaan yhdistämään",
"third_party_resources": "Kolmannen osapuolen resurssit",
"time_based_memories": "Aikaan perustuvat muistot",
"timeline": "Aikajana",
"timezone": "Aikavyöhyke",
"to_archive": "Arkistoi",
"to_change_password": "Vaihda salasana",
@ -1280,7 +1237,7 @@
"to_trash": "Roskakoriin",
"toggle_settings": "Määritä asetukset",
"toggle_theme": "Aseta tumma teema",
"toggle_visibility": "Aseta näkyvyys",
"total": "Yhteensä",
"total_usage": "Käyttö yhteensä",
"trash": "Roskakori",
"trash_all": "Vie kaikki roskakoriin",
@ -1290,12 +1247,10 @@
"trashed_items_will_be_permanently_deleted_after": "Roskakorin kohteet poistetaan pysyvästi {days, plural, one {# päivän} other {# päivän}} päästä.",
"type": "Tyyppi",
"unarchive": "Palauta arkistosta",
"unarchived": "",
"unarchived_count": "{count, plural, other {# poistettu arkistosta}}",
"unfavorite": "Poista suosikeista",
"unhide_person": "Poista henkilö piilosta",
"unknown": "Tuntematon",
"unknown_album": "",
"unknown_year": "Tuntematon vuosi",
"unlimited": "Rajoittamaton",
"unlink_motion_video": "Poista liikevideon linkitys",
@ -1332,6 +1287,8 @@
"user_purchase_settings_description": "Hallitse ostostasi",
"user_role_set": "Tee käyttäjästä {user} {role}",
"user_usage_detail": "Käyttäjän käytön tiedot",
"user_usage_stats": "Tilin käyttötilastot",
"user_usage_stats_description": "Näytä tilin käyttötilastot",
"username": "Käyttäjänimi",
"users": "Käyttäjät",
"utilities": "Apuohjelmat",
@ -1339,7 +1296,7 @@
"variables": "Muuttujat",
"version": "Versio",
"version_announcement_closing": "Ystäväsi Alex",
"version_announcement_message": "Hei! Sovelluksen uusi versio on saatavilla. Käythän vilkaisemassa <link>julkaisun tiedot</link> ja varmistathan, että <code>docker-compose.yml</code> ja <code>.env</code> määritykset ovat ajan tasalla. Näin varmistat järjestelmän toimivuuden, varsinkin jos käytät WatchToweria tai muuta automaattista päivitysjärjestelmää.",
"version_announcement_message": "Hei! Sovelluksen uusi versio on saatavilla. Käythän vilkaisemassa <link>julkaisun tiedot</link> ja varmistathan, että ohjelman määritykset ovat ajan tasalla. Erityisesti, jos käytössä on Watchtower tai jokin muu mekanismi Immich-sovelluksen automaattista päivitystä varten.",
"version_history": "Versiohistoria",
"version_history_item": "Asennettu {version} päivänä {date}",
"video": "Video",
@ -1353,10 +1310,10 @@
"view_all_users": "Näytä kaikki käyttäjät",
"view_in_timeline": "Näytä aikajanalla",
"view_links": "Näytä linkit",
"view_name": "Näkymä",
"view_next_asset": "Näytä seuraava",
"view_previous_asset": "Näytä edellinen",
"view_stack": "Näytä pinona",
"viewer": "",
"visibility_changed": "{count, plural, one {# henkilön} other {# henkilöiden}} näkyvyys vaihdettu",
"waiting": "Odottaa",
"warning": "Varoitus",

25
i18n/fil.json Normal file
View file

@ -0,0 +1,25 @@
{
"about": "I-refresh",
"account": "Account",
"account_settings": "Mga Setting ng Account",
"acknowledge": "Tanggapin",
"action": "Aksyon",
"actions": "Mga Aksyon",
"active": "Tumatakbo",
"activity": "Mga Aktibidad",
"activity_changed": "Ang aktibidad ay {enabled, select, true {naka-enable} other {hindi naka-enable}}",
"add": "Mag dagdag",
"add_a_description": "Dagdagan ng deskripsyon",
"add_a_location": "Dagdagan ng lugar",
"add_a_name": "Dagdagan ng pangalan",
"add_a_title": "Dagdagan ng pamagat",
"add_location": "Magdagdag ng lugar",
"add_more_users": "Magdagdag ng mga user",
"add_photos": "Magdagdag ng litrato",
"add_to": "Idagdag sa...",
"add_to_album": "Idagdag sa album",
"add_to_shared_album": "Idagdag sa shared album",
"added_to_archive": "Idinagdag sa archive",
"added_to_favorites": "Idinagdag sa mga paborito",
"added_to_favorites_count": "Idinagdag ang {count, number} sa mga paborito"
}

View file

@ -5,12 +5,12 @@
"acknowledge": "Compris",
"action": "Action",
"actions": "Actions",
"active": "En cours d'exécution",
"active": "En cours",
"activity": "Activité",
"activity_changed": "Activité {enabled, select, true {autorisée} other {interdite}}",
"add": "Ajouter",
"add_a_description": "Ajouter une description",
"add_a_location": "Ajouter un emplacement",
"add_a_location": "Ajouter une localisation",
"add_a_name": "Ajouter un nom",
"add_a_title": "Ajouter un titre",
"add_exclusion_pattern": "Ajouter un schéma d'exclusion",
@ -23,6 +23,7 @@
"add_to": "Ajouter à…",
"add_to_album": "Ajouter à l'album",
"add_to_shared_album": "Ajouter à l'album partagé",
"add_url": "Ajouter l'URL",
"added_to_archive": "Ajouté à l'archive",
"added_to_favorites": "Ajouté aux favoris",
"added_to_favorites_count": "{count, number} ajouté(s) aux favoris",
@ -30,12 +31,17 @@
"add_exclusion_pattern_description": "Ajouter des schémas d'exclusion. Les caractères génériques *, ** et? sont pris en charge. Pour ignorer tous les fichiers dans un répertoire nommé « Raw », utilisez « **/Raw/** ». Pour ignorer tous les fichiers se terminant par « .tif », utilisez « **/*.tif ». Pour ignorer un chemin absolu, utilisez « /chemin/à/ignorer/** ».",
"asset_offline_description": "Ce média de la bibliothèque externe n'est plus présent sur le disque et a été déplacé vers la corbeille. Si le fichier a été déplacé dans la bibliothèque, vérifiez votre chronologie pour le nouveau média correspondant. Pour restaurer ce média, veuillez vous assurer que le chemin du fichier ci-dessous peut être accédé par Immich et lancez l'analyse de la bibliothèque.",
"authentication_settings": "Paramètres d'authentification",
"authentication_settings_description": "Gérer le mot de passe, la délégation d'authentification OAuth et d'autres paramètres d'authentification",
"authentication_settings_description": "Gérer le mot de passe, l'authentification OAuth et d'autres paramètres d'authentification",
"authentication_settings_disable_all": "Êtes-vous sûr de vouloir désactiver toutes les méthodes de connexion? La connexion sera complètement désactivée.",
"authentication_settings_reenable": "Pour réactiver, utilisez une <link>Commande Serveur</link>.",
"background_task_job": "Tâches de fond",
"check_all": "Vérifier tout",
"cleared_jobs": "Tâches supprimées pour: {job}",
"backup_database": "Sauvegarde de la base de données",
"backup_database_enable_description": "Activer la sauvegarde",
"backup_keep_last_amount": "Nombre de sauvegardes à conserver",
"backup_settings": "Paramètres de la sauvegarde",
"backup_settings_description": "Gérer les paramètres de la sauvegarde",
"check_all": "Tout cocher",
"cleared_jobs": "Tâches supprimées pour : {job}",
"config_set_by_file": "La configuration est actuellement définie par un fichier de configuration",
"confirm_delete_library": "Êtes-vous sûr de vouloir supprimer la bibliothèque {library}?",
"confirm_delete_library_assets": "Êtes-vous sûr de vouloir supprimer cette bibliothèque? Cette opération supprimera d'Immich {count, plural, one {le média} other {les # médias}} qu'elle contient et ne pourra pas être annulée. Les fichiers resteront sur le disque.",
@ -43,15 +49,16 @@
"confirm_reprocess_all_faces": "Êtes-vous sûr de vouloir retraiter tous les visages? Cela effacera également les personnes déjà identifiées.",
"confirm_user_password_reset": "Êtes-vous sûr de vouloir réinitialiser le mot de passe de {user}?",
"create_job": "Créer une tâche",
"crontab_guru": "Générateur de règles Cron",
"cron_expression": "Expression cron",
"cron_expression_description": "Définir l'intervalle d'analyse à l'aide d'une expression cron. Pour plus d'informations, voir <link>Crontab Guru</link>",
"cron_expression_presets": "Préréglages d'expression cron",
"disable_login": "Désactiver la connexion",
"disabled": "Désactivé",
"duplicate_detection_job_description": "Exécution de l'apprentissage automatique sur les médias pour détecter les images similaires. S'appuie sur la recherche intelligente",
"duplicate_detection_job_description": "Lancement de l'apprentissage automatique sur les médias pour détecter les images similaires. Se base sur la recherche intelligente",
"exclusion_pattern_description": "Les schémas d'exclusion vous permettent d'ignorer des fichiers et des dossiers lors de l'analyse de votre bibliothèque. Cette fonction est utile si des dossiers contiennent des fichiers que vous ne souhaitez pas importer, tels que des fichiers RAW.",
"external_library_created_at": "Bibliothèque externe (créée le {date})",
"external_library_management": "Gestion de la bibliothèque externe",
"face_detection": "Détection des visages",
"face_detection_description": "Détection des visages dans les médias à l'aide de l'apprentissage automatique. Pour les vidéos, seule la miniature est prise en compte. « Rafraichir» (re)traite tous les médias. « Réinitialise» met en file d'attente les médias qui n'ont pas encore été traités. Les visages détectés seront mis en file d'attente pour la reconnaissance faciale une fois la détection des visages terminée, les regroupant en personnes existantes ou nouvelles.",
"face_detection_description": "Détection des visages dans les médias à l'aide de l'apprentissage automatique. Pour les vidéos, seule la miniature est prise en compte. « Actualiser » (re)traite tous les médias. « Réinitialiser » efface en plus toutes les données actuelles de visages. « Manquants » Les visages détectés seront mis en file d'attente pour la reconnaissance faciale. Une fois la détection des visages terminée, les regroupant en personnes existantes ou nouvelles.",
"facial_recognition_job_description": "Regrouper les visages détectés en personnes. Cette étape est exécutée une fois la détection des visages terminée. « Rafraichir» (re)regroupe tous les visages. « Manquant» met en file d'attente les visages auxquels aucune personne n'a été attribuée.",
"failed_job_command": "La commande {command} a échoué pour la tâche: {job}",
"force_delete_user_warning": "ATTENTION: Cette opération entraîne la suppression immédiate de l'utilisateur et de tous ses médias. Cette opération ne peut être annulée et les fichiers ne peuvent être récupérés.",
@ -63,22 +70,15 @@
"image_prefer_wide_gamut": "Préférer une gamme de couleurs étendue",
"image_prefer_wide_gamut_setting_description": "Utiliser Display P3 pour les miniatures. Cela préserve mieux la vivacité des images avec des espaces colorimétriques étendus, mais les images peuvent apparaître différemment sur les anciens appareils avec une ancienne version du navigateur. Conserver les images sRGB en sRGB pour éviter les décalages de couleur.",
"image_preview_description": "Image de taille moyenne avec métadonnées retirées, utilisée lors de la visualisation d'un seul média et pour l'apprentissage automatique",
"image_preview_format": "Format des aperçus",
"image_preview_quality_description": "Qualité de l'aperçu : de 1 à 100. Une valeur plus élevée produit de meilleurs résultats, mais elle produit des fichiers plus volumineux et peut réduire la réactivité de l'application. Une valeur trop basse peut affecter la qualité de l'apprentissage automatique.",
"image_preview_resolution": "Résolution des aperçus",
"image_preview_resolution_description": "Utilisé lors de l'affichage d'une seule photo et pour l'apprentissage automatique. Des résolutions plus élevées peuvent préserver plus de détails mais prennent plus de temps à encoder, ont des tailles de fichiers plus importantes et peuvent réduire la réactivité de l'application.",
"image_preview_title": "Paramètres de prévisualisation",
"image_quality": "Qualité",
"image_quality_description": "Qualité d'image de 1 à 100. Une valeur plus élevée offre une meilleure qualité mais produit des fichiers plus volumineux. Cette option affecte les images d'aperçu et de miniature.",
"image_resolution": "Résolution",
"image_resolution_description": "Les résolutions plus élevées permettent de préserver davantage de détails, mais l'encodage est plus long, les fichiers sont plus volumineux et la réactivité de l'application peut s'en trouver réduite.",
"image_settings": "Paramètres d'image",
"image_settings_description": "Gestion de la qualité et résolution des images générées",
"image_thumbnail_description": "Petite vignette avec métadonnées retirées, utilisée lors de la visualisation de groupes de photos comme sur la vue chronologique principale",
"image_thumbnail_format": "Format des miniatures",
"image_thumbnail_quality_description": "Qualité des vignettes : de 1 à 100. Une valeur élevée produit de meilleurs résultats, mais elle produit des fichiers plus volumineux et peut réduire la réactivité de l'application.",
"image_thumbnail_resolution": "Résolution des miniatures",
"image_thumbnail_resolution_description": "Utilisée lors du visionnage de groupes de photos (vue chronologique principale, albums, etc.). Une résolution plus élevée préserve davantage de détails, mais est plus longue à encoder, produit des fichiers plus lourds, et peut réduire la réactivité de l'application.",
"image_thumbnail_title": "Paramètres des vignettes",
"job_concurrency": "{job}: nombre de tâches simultanées",
"job_created": "Tâche créée",
@ -89,11 +89,8 @@
"jobs_delayed": "{jobCount, plural, other {# retardés}}",
"jobs_failed": "{jobCount, plural, other {# en échec}}",
"library_created": "Bibliothèque créée: {library}",
"library_cron_expression": "Expression Cron",
"library_cron_expression_description": "Réglez l'intervalle d'analyse en utilisant le format cron. Pour plus d'informations, veuillez consulter par exemple <link>Crontab Guru</link>",
"library_cron_expression_presets": "Préréglages d'expressions Cron",
"library_deleted": "Bibliothèque supprimée",
"library_import_path_description": "Spécifier un dossier à importer. Ce dossier, y compris les sous-dossiers, sera analysé à la recherche d'images et de vidéos.",
"library_import_path_description": "Spécifier un dossier à importer. Ce dossier, y compris ses sous-dossiers, sera analysé à la recherche d'images et de vidéos.",
"library_scanning": "Analyse périodique",
"library_scanning_description": "Configurer l'analyse périodique de la bibliothèque",
"library_scanning_enable_description": "Activer l'analyse périodique de la bibliothèque",
@ -134,7 +131,7 @@
"machine_learning_smart_search_description": "Rechercher des images de manière sémantique en utilisant les intégrations CLIP",
"machine_learning_smart_search_enabled": "Activer la recherche intelligente",
"machine_learning_smart_search_enabled_description": "Si cette option est désactivée, les images ne seront pas encodées pour la recherche intelligente.",
"machine_learning_url_description": "URL du serveur d'apprentissage automatique",
"machine_learning_url_description": "LURL du serveur d'apprentissage automatique. Si plusieurs URL sont fournies, chaque serveur sera essayé un par un jusquà ce que lun deux réponde avec succès, dans lordre de la première à la dernière.",
"manage_concurrency": "Gérer du multitâche",
"manage_log_settings": "Gérer les paramètres de journalisation",
"map_dark_style": "Thème sombre",
@ -193,7 +190,7 @@
"oauth_mobile_redirect_uri_override_description": "Activer quand le fournisseur d'OAuth ne permet pas un URI mobile, comme '{callback} '",
"oauth_profile_signing_algorithm": "Algorithme de signature de profil",
"oauth_profile_signing_algorithm_description": "Algorithme utilisé pour signer le profil utilisateur.",
"oauth_scope": "Portée",
"oauth_scope": "Périmètre",
"oauth_settings": "OAuth",
"oauth_settings_description": "Gérer les paramètres de connexion OAuth",
"oauth_settings_more_details": "Pour plus de détails sur cette fonctionnalité, consultez <link>ce lien</link>.",
@ -215,7 +212,6 @@
"refreshing_all_libraries": "Actualisation de toutes les bibliothèques",
"registration": "Enregistrement de l'administrateur",
"registration_description": "Puisque vous êtes le premier utilisateur sur le système, vous serez désigné en tant qu'administrateur et responsable des tâches administratives, et vous pourrez alors créer d'autres utilisateurs.",
"removing_deleted_files": "Suppression des fichiers hors ligne",
"repair_all": "Réparer tout",
"repair_matched_items": "{count, plural, one {# Élément correspondant} other {# Éléments correspondants}}",
"repaired_items": "{count, plural, one {# Élément corrigé} other {# Éléments corrigés}}",
@ -223,12 +219,12 @@
"reset_settings_to_default": "Réinitialiser les paramètres par défaut",
"reset_settings_to_recent_saved": "Paramètres réinitialisés avec les derniers paramètres enregistrés",
"scanning_library": "Analyse de la bibliothèque",
"scanning_library_for_changed_files": "Recherche de fichiers modifiés dans la bibliothèque",
"scanning_library_for_new_files": "Recherche de nouveaux fichiers dans la bibliothèque",
"search_jobs": "Recherche des tâches ...",
"send_welcome_email": "Envoyer un courriel de bienvenue",
"server_external_domain_settings": "Domaine externe",
"server_external_domain_settings_description": "Nom de domaine pour les liens partagés publics, y compris http(s)://",
"server_public_users": "Utilisateurs publics",
"server_public_users_description": "Tous les utilisateurs (nom et courriel) sont listés lors de l'ajout d'un utilisateur à des albums partagés. Quand cela est désactivé, la liste des utilisateurs est uniquement disponible pour les comptes administrateurs.",
"server_settings": "Paramètres du serveur",
"server_settings_description": "Gérer les paramètres du serveur",
"server_welcome_message": "Message de bienvenue",
@ -254,14 +250,23 @@
"storage_template_user_label": "<code>{label}</code> est l'étiquette de stockage de l'utilisateur",
"system_settings": "Paramètres du système",
"tag_cleanup_job": "Nettoyage des étiquettes",
"template_email_available_tags": "Vous pouvez utiliser les variables suivantes dans votre modèle : {tags}",
"template_email_if_empty": "Si le modèle est vide, le-mail par défaut sera utilisé.",
"template_email_invite_album": "Modèle d'invitation à un album",
"template_email_preview": "Prévisualiser",
"template_email_settings": "Modèles de courriel",
"template_email_settings_description": "Gérer les modèles de notifications par courriel personnalisés",
"template_email_update_album": "Mettre à jour le modèle dalbum",
"template_email_welcome": "Modèle de courriel de bienvenue",
"template_settings": "Modèles de notifications",
"template_settings_description": "Gérer les modèles personnalisés pour les notifications.",
"theme_custom_css_settings": "CSS personnalisé",
"theme_custom_css_settings_description": "Les feuilles de style en cascade (CSS) permettent de personnaliser l'apparence d'Immich.",
"theme_settings": "Paramètres du thème",
"theme_settings_description": "Gérer la personnalisation de l'interface web d'Immich",
"these_files_matched_by_checksum": "Ces fichiers correspondent par leur somme de contrôle",
"these_files_matched_by_checksum": "Ces fichiers sont identiques d'après leur somme de contrôle",
"thumbnail_generation_job": "Génération des miniatures",
"thumbnail_generation_job_description": "Génération des miniatures pour chaque média ainsi que pour les visages détectés",
"transcode_policy_description": "",
"transcoding_acceleration_api": "API d'accélération",
"transcoding_acceleration_api_description": "Il s'agit de l'API qui interagira avec votre appareil pour accélérer le transcodage. Ce paramètre fait au mieux: il basculera vers le transcodage logiciel en cas d'échec. Le codec vidéo VP9 peut fonctionner ou non selon votre matériel.",
"transcoding_acceleration_nvenc": "NVENC (nécessite un GPU NVIDIA)",
@ -270,7 +275,7 @@
"transcoding_acceleration_vaapi": "VAAPI",
"transcoding_accepted_audio_codecs": "Codecs audio acceptés",
"transcoding_accepted_audio_codecs_description": "Sélectionnez les codecs audio qui n'ont pas besoin d'être transcodés. Utilisé uniquement pour certaines politiques de transcodage.",
"transcoding_accepted_containers": "Containers acceptés",
"transcoding_accepted_containers": "Conteneurs acceptés",
"transcoding_accepted_containers_description": "Sélectionnez les formats de conteneurs qui n'ont pas besoin d'être remuxés en MP4. Utilisé uniquement pour certaines politiques de transcodage.",
"transcoding_accepted_video_codecs": "Codecs vidéo acceptés",
"transcoding_accepted_video_codecs_description": "Sélectionnez les codecs vidéo qui n'ont pas besoin d'être transcodés. Utilisé uniquement pour certaines politiques de transcodage.",
@ -307,14 +312,12 @@
"transcoding_settings_description": "Gérer les informations de résolution et d'encodage des fichiers vidéo",
"transcoding_target_resolution": "Résolution cible",
"transcoding_target_resolution_description": "Des résolutions plus élevées peuvent préserver plus de détails, mais prennent plus de temps à encoder, ont de plus grandes tailles de fichiers, et peuvent réduire la réactivité de l'application.",
"transcoding_temporal_aq": "AQ temporelle",
"transcoding_temporal_aq": "Quantification adaptative temporelle (temporal AQ)",
"transcoding_temporal_aq_description": "S'applique uniquement à NVENC. Améliore la qualité des scènes riches en détails et à faible mouvement. Peut ne pas être compatible avec les anciens appareils.",
"transcoding_threads": "Processus",
"transcoding_threads_description": "Une valeur plus élevée entraîne un encodage plus rapide, mais laisse moins de place au serveur pour traiter d'autres tâches pendant son activité. Cette valeur ne doit pas être supérieure au nombre de cœurs de CPU. Une valeur égale à 0 maximise l'utilisation.",
"transcoding_tone_mapping": "Mappage tonal",
"transcoding_tone_mapping_description": "Tente de préserver l'apparence des vidéos HDR lorsqu'elles sont converties en SDR. Chaque algorithme effectue différents compromis pour la couleur, les détails et la luminosité. Hable préserve les détails, Mobius préserve la couleur, et Reinhard préserve la luminosité.",
"transcoding_tone_mapping_npl": "Mappage tonal NPL",
"transcoding_tone_mapping_npl_description": "Les couleurs seront ajustées pour paraître normales sur un écran de cette luminosité. De manière contre-intuitive, des valeurs plus basses augmentent la luminosité de la vidéo et vice versa, car cela compense la luminosité de l'écran. 0 configure cette valeur automatiquement.",
"transcoding_transcode_policy": "Politique de transcodage",
"transcoding_transcode_policy_description": "Politique indiquant quand une vidéo doit être transcodée. Les vidéos HDR seront toujours transcodées (sauf si le transcodage est désactivé).",
"transcoding_two_pass_encoding": "Encodage en deux passes",
@ -395,7 +398,6 @@
"archive_or_unarchive_photo": "Archiver ou désarchiver une photo",
"archive_size": "Taille de l'archive",
"archive_size_description": "Configurer la taille de l'archive maximale pour les téléchargements (en Go)",
"archived": "Archivé",
"archived_count": "{count, plural, one {# archivé} other {# archivés}}",
"are_these_the_same_person": "Est-ce la même personne?",
"are_you_sure_to_do_this": "Êtes-vous sûr de vouloir faire ceci?",
@ -403,7 +405,7 @@
"asset_adding_to_album": "Ajout à l'album...",
"asset_description_updated": "La description du média a été mise à jour",
"asset_filename_is_offline": "Le média {filename} est hors ligne",
"asset_has_unassigned_faces": "Le média a des visages non assignés",
"asset_has_unassigned_faces": "Le média a des visages non attribués",
"asset_hashing": "Hachage...",
"asset_offline": "Média hors ligne",
"asset_offline_description": "Ce média externe n'est plus accessible sur le disque. Veuillez contacter votre administrateur Immich pour obtenir de l'aide.",
@ -416,7 +418,6 @@
"assets_added_to_album_count": "{count, plural, one {# média ajouté} other {# médias ajoutés}} à l'album",
"assets_added_to_name_count": "{count, plural, one {# média ajouté} other {# médias ajoutés}} à {hasName, select, true {<b>{name}</b>} other {new album}}",
"assets_count": "{count, plural, one {# média} other {# médias}}",
"assets_moved_to_trash": "{count, plural, one {# média déplacé} other {# médias déplacés}} vers la corbeille",
"assets_moved_to_trash_count": "{count, plural, one {# média déplacé} other {# médias déplacés}} dans la corbeille",
"assets_permanently_deleted_count": "{count, plural, one {# média supprimé} other {# médias supprimés}} définitivement",
"assets_removed_count": "{count, plural, one {# média supprimé} other {# médias supprimés}}",
@ -446,10 +447,6 @@
"cannot_merge_people": "Impossible de fusionner les personnes",
"cannot_undo_this_action": "Vous ne pouvez pas annuler cette action!",
"cannot_update_the_description": "Impossible de mettre à jour la description",
"cant_apply_changes": "Impossible d'enregistrer les changements",
"cant_get_faces": "Aucun visage détecté",
"cant_search_people": "Impossible de rechercher des personnes",
"cant_search_places": "Impossible de rechercher des lieux",
"change_date": "Changer la date",
"change_expiration_time": "Modifier le délai d'expiration",
"change_location": "Changer la localisation",
@ -481,6 +478,7 @@
"confirm": "Confirmer",
"confirm_admin_password": "Confirmer le mot de passe Admin",
"confirm_delete_shared_link": "Voulez-vous vraiment supprimer ce lien partagé?",
"confirm_keep_this_delete_others": "Tous les autres médias dans la pile seront supprimés sauf celui-ci. Êtes-vous sûr de vouloir continuer?",
"confirm_password": "Confirmer le mot de passe",
"contain": "Contenu",
"context": "Contexte",
@ -530,6 +528,7 @@
"delete_key": "Supprimer la clé",
"delete_library": "Supprimer la bibliothèque",
"delete_link": "Supprimer le lien",
"delete_others": "Supprimer les autres",
"delete_shared_link": "Supprimer le lien partagé",
"delete_tag": "Supprimer l'étiquette",
"delete_tag_confirmation_prompt": "Êtes-vous sûr de vouloir supprimer l'étiquette {tagName}?",
@ -548,12 +547,12 @@
"display_options": "Afficher les options",
"display_order": "Ordre d'affichage",
"display_original_photos": "Afficher les photos originales",
"display_original_photos_setting_description": "Préférer afficher la photo originale lors de la visualisation d'un média plutôt que sa miniature lorsque cela est possible. Cela peut entraîner des vitesses d'affichage plus lentes.",
"display_original_photos_setting_description": "Afficher de préférence la photo originale lors de la visualisation d'un média plutôt que sa miniature lorsque cela est possible. Cela peut entraîner des vitesses d'affichage plus lentes.",
"do_not_show_again": "Ne plus afficher ce message",
"documentation": "Documentation",
"done": "Terminé",
"download": "Télécharger",
"download_include_embedded_motion_videos": "Vidéos embarquées",
"download_include_embedded_motion_videos": "Vidéos intégrées",
"download_include_embedded_motion_videos_description": "Inclure des vidéos intégrées dans les photos de mouvement comme un fichier séparé",
"download_settings": "Télécharger",
"download_settings_description": "Gérer les paramètres de téléchargement des médias",
@ -563,13 +562,6 @@
"duplicates": "Doublons",
"duplicates_description": "Examiner chaque groupe et indiquer s'il y a des doublons",
"duration": "Durée",
"durations": {
"days": "{days, plural, one {jour} other {{days, number} jours}}",
"hours": "{hours, plural, one{une heure} other {{hours, number} heures}}",
"minutes": "{minutes, plural, one {minute} other {{minutes, number} minutes}}",
"months": "{months, plural, one {mois} other {{months, number} mois}}",
"years": "{years, plural, one {an} other {{years, number} ans}}"
},
"edit": "Modifier",
"edit_album": "Modifier l'album",
"edit_avatar": "Modifier l'avatar",
@ -585,7 +577,7 @@
"edit_name": "Modifier le nom",
"edit_people": "Modifier les personnes",
"edit_tag": "Modifier l'étiquette",
"edit_title": "Modifier le title",
"edit_title": "Modifier le titre",
"edit_user": "Modifier l'utilisateur",
"edited": "Modifié",
"editor": "Editeur",
@ -594,8 +586,6 @@
"editor_crop_tool_h2_aspect_ratios": "Rapports hauteur/largeur",
"editor_crop_tool_h2_rotation": "Rotation",
"email": "Courriel",
"empty": "",
"empty_album": "Album vide",
"empty_trash": "Vider la corbeille",
"empty_trash_confirmation": "Êtes-vous sûr de vouloir vider la corbeille? Cela supprimera définitivement de Immich tous les médias qu'elle contient.\nVous ne pouvez pas annuler cette action!",
"enable": "Active",
@ -610,15 +600,15 @@
"cant_apply_changes": "Impossible d'appliquer les changements",
"cant_change_activity": "Impossible {enabled, select, true {d'interdire} other {d'autoriser}} l'activité",
"cant_change_asset_favorite": "Impossible de changer le favori du média",
"cant_change_metadata_assets_count": "Impossible de modifier les métadonnées de {count, plural, one {# média} other {# médias}}",
"cant_get_faces": "Impossible d'obtenir de visages",
"cant_change_metadata_assets_count": "Impossible de modifier les métadonnées {count, plural, one {d'un média} other {de # médias}}",
"cant_get_faces": "Impossible d'obtenir des visages",
"cant_get_number_of_comments": "Impossible d'obtenir le nombre de commentaires",
"cant_search_people": "Impossible de rechercher des personnes",
"cant_search_places": "Impossible de rechercher des lieux",
"cleared_jobs": "Tâches supprimées pour: {job}",
"error_adding_assets_to_album": "Erreur lors de l'ajout des médias à l'album",
"error_adding_users_to_album": "Erreur lors de l'ajout d'utilisateurs à l'album",
"error_deleting_shared_user": "Erreur lors de la suppression l'utilisateur partagé",
"error_deleting_shared_user": "Erreur lors de la suppression de l'utilisateur partagé",
"error_downloading": "Erreur lors du téléchargement de {filename}",
"error_hiding_buy_button": "Impossible de masquer le bouton d'achat",
"error_removing_assets_from_album": "Erreur lors de la suppression des médias de l'album, vérifier la console pour plus de détails",
@ -629,6 +619,7 @@
"failed_to_create_shared_link": "Impossible de créer le lien partagé",
"failed_to_edit_shared_link": "Impossible de modifier le lien partagé",
"failed_to_get_people": "Impossible d'obtenir les personnes",
"failed_to_keep_this_delete_others": "Impossible de conserver ce média et de supprimer les autres médias",
"failed_to_load_asset": "Impossible de charger le média",
"failed_to_load_assets": "Impossible de charger les médias",
"failed_to_load_people": "Impossible de charger les personnes",
@ -656,29 +647,27 @@
"unable_to_change_location": "Impossible de changer la localisation",
"unable_to_change_password": "Impossible de changer le mot de passe",
"unable_to_change_visibility": "Impossible de changer la visibilité pour {count, plural, one {# personne} other {# personnes}}",
"unable_to_check_item": "",
"unable_to_check_items": "",
"unable_to_complete_oauth_login": "Impossible de terminer la connexion OAuth",
"unable_to_connect": "Impossible de se connecter",
"unable_to_connect_to_server": "Impossible de se connecter au serveur",
"unable_to_copy_to_clipboard": "Impossible de copier dans le presse-papiers, assurez-vous que vous accédez à la page via https",
"unable_to_create_admin_account": "Impossible de créer le compte administrateur",
"unable_to_create_api_key": "Impossible de créer une nouvelle clé API",
"unable_to_create_library": "Création de bibliothèque impossible",
"unable_to_create_user": "Création de l'utilisateur impossible",
"unable_to_delete_album": "Suppression de l'album impossible",
"unable_to_delete_asset": "Suppression du média impossible",
"unable_to_create_library": "Impossible de créer la bibliothèque",
"unable_to_create_user": "Impossible de créer l'utilisateur",
"unable_to_delete_album": "Impossible de supprimer l'album",
"unable_to_delete_asset": "Impossible de supprimer le média",
"unable_to_delete_assets": "Erreur lors de la suppression des médias",
"unable_to_delete_exclusion_pattern": "Suppression du modèle d'exclusion impossible",
"unable_to_delete_import_path": "Suppression du chemin d'importation impossible",
"unable_to_delete_shared_link": "Suppression du lien de partage impossible",
"unable_to_delete_user": "Suppression de l'utilisateur impossible",
"unable_to_delete_exclusion_pattern": "Impossible de supprimer le modèle d'exclusion",
"unable_to_delete_import_path": "Impossible de supprimer le chemin d'importation",
"unable_to_delete_shared_link": "Impossible de supprimer le lien de partage",
"unable_to_delete_user": "Impossible de supprimer l'utilisateur",
"unable_to_download_files": "Impossible de télécharger les fichiers",
"unable_to_edit_exclusion_pattern": "Modification du modèle d'exclusion impossible",
"unable_to_edit_import_path": "Modification du chemin d'importation impossible",
"unable_to_edit_exclusion_pattern": "Impossible de modifier le modèle d'exclusion",
"unable_to_edit_import_path": "Impossible de modifier le chemin d'importation",
"unable_to_empty_trash": "Impossible de vider la corbeille",
"unable_to_enter_fullscreen": "Mode plein écran indisponible",
"unable_to_exit_fullscreen": "Sortie du mode plein écran impossible",
"unable_to_exit_fullscreen": "Impossible de sortir du mode plein écran",
"unable_to_get_comments_number": "Impossible d'obtenir le nombre de commentaires",
"unable_to_get_shared_link": "Échec de la récupération du lien partagé",
"unable_to_hide_person": "Impossible de cacher la personne",
@ -692,18 +681,16 @@
"unable_to_log_out_device": "Impossible de déconnecter l'appareil",
"unable_to_login_with_oauth": "Impossible de se connecter avec OAuth",
"unable_to_play_video": "Impossible de jouer la vidéo",
"unable_to_reassign_assets_existing_person": "Incapable de réaffecter des médias à {name, select, null {une personne existante} other {{name}}}",
"unable_to_reassign_assets_new_person": "Impossible de réaffecter les médias à une nouvelle personne",
"unable_to_reassign_assets_existing_person": "Impossible de réattribuer les médias à {name, select, null {une personne existante} other {{name}}}",
"unable_to_reassign_assets_new_person": "Impossible de réattribuer les médias à une nouvelle personne",
"unable_to_refresh_user": "Impossible d'actualiser l'utilisateur",
"unable_to_remove_album_users": "Impossible de supprimer les utilisateurs de l'album",
"unable_to_remove_api_key": "Impossible de supprimer la clé API",
"unable_to_remove_assets_from_shared_link": "Impossible de supprimer des médias du lien partagé",
"unable_to_remove_comment": "",
"unable_to_remove_deleted_assets": "Impossible de supprimer les fichiers hors ligne",
"unable_to_remove_library": "Impossible de supprimer la bibliothèque",
"unable_to_remove_partner": "Impossible de supprimer le partenaire",
"unable_to_remove_reaction": "Impossible de supprimer la réaction",
"unable_to_remove_user": "",
"unable_to_repair_items": "Impossible de réparer les éléments",
"unable_to_reset_password": "Impossible de réinitialiser le mot de passe",
"unable_to_resolve_duplicate": "Impossible de résoudre le doublon",
@ -714,7 +701,7 @@
"unable_to_save_api_key": "Impossible de sauvegarder la clé API",
"unable_to_save_date_of_birth": "Impossible de sauvegarder la date de naissance",
"unable_to_save_name": "Impossible de sauvegarder le nom",
"unable_to_save_profile": "Impossible de sauvegarder le profile",
"unable_to_save_profile": "Impossible de sauvegarder le profil",
"unable_to_save_settings": "Impossible d'enregistrer les préférences",
"unable_to_scan_libraries": "Impossible de scanner les bibliothèques",
"unable_to_scan_library": "Impossible de scanner la bibliothèque",
@ -733,10 +720,6 @@
"unable_to_update_user": "Impossible de mettre à jour l'utilisateur",
"unable_to_upload_file": "Impossible d'envoyer le fichier"
},
"every_day_at_onepm": "",
"every_night_at_midnight": "",
"every_night_at_twoam": "",
"every_six_hours": "",
"exif": "Exif",
"exit_slideshow": "Quitter le diaporama",
"expand_all": "Tout développer",
@ -749,35 +732,30 @@
"export_as_json": "Exporter en JSON",
"extension": "Extension",
"external": "Externe",
"external_libraries": "Bibliothèques ext.",
"external_libraries": "Bibliothèques externes",
"face_unassigned": "Non attribué",
"failed_to_get_people": "Impossible d'obtenir les personnes",
"failed_to_load_assets": "Échec du chargement des ressources",
"favorite": "Favori",
"favorite_or_unfavorite_photo": "Ajouter ou supprimer des favoris",
"favorites": "Favoris",
"feature": "",
"feature_photo_updated": "Photo de la personne mise à jour",
"featurecollection": "",
"features": "Fonctionnalités",
"features_setting_description": "Gérer les fonctionnalités de l'application",
"file_name": "Nom du fichier",
"file_name_or_extension": "Nom du fichier ou extension",
"filename": "Nom du fichier",
"files": "",
"filetype": "Type de fichier",
"filter_people": "Filtrer les personnes",
"find_them_fast": "Pour les retrouver rapidement par leur nom",
"fix_incorrect_match": "Corriger une association incorrecte",
"folders": "Dossiers",
"folders_feature_description": "Parcourir l'affichage par dossiers pour les photos et les vidéos sur le système de fichiers",
"force_re-scan_library_files": "Forcer la réactualisation de tous les fichiers de la bibliothèque",
"forward": "Avant",
"general": "Général",
"get_help": "Obtenir de l'aide",
"getting_started": "Commencer",
"go_back": "Retour",
"go_to_search": "Faire une recherche",
"go_to_share_page": "Aller sur la page des Partages",
"group_albums_by": "Grouper les albums par...",
"group_no": "Pas de groupe",
"group_owner": "Groupe par propriétaire",
@ -803,10 +781,6 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} prise à {city}, {country} avec {person1} et {person2} le {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} prise à {city}, {country} avec {person1}, {person2}, et {person3} le {date}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} prise à {city}, {country} avec {person1}, {person2} et {additionalCount, number} autres personnes le {date}",
"image_alt_text_people": "{count, plural, =1 {with {person1}} =2 {with {person1} and {person2}} =3 {with {person1}, {person2}, and {person3}} other {with {person1}, {person2}, and {others, number} others}}",
"image_alt_text_place": "à {city}, {country}",
"image_taken": "{isVideo, select, true {Video prise} other {Image prise}}",
"img": "",
"immich_logo": "Logo Immich",
"immich_web_interface": "Interface Web Immich",
"import_from_json": "Importer depuis un fichier JSON",
@ -827,10 +801,11 @@
"invite_people": "Inviter une personne",
"invite_to_album": "Inviter à l'album",
"items_count": "{count, plural, one {# élément} other {# éléments}}",
"job_settings_description": "",
"jobs": "Tâches",
"keep": "Conserver",
"keep_all": "Les conserver tous",
"keep_this_delete_others": "Conserver celui-ci, supprimer les autres",
"kept_this_deleted_others": "Ce média a été conservé, et {count, plural, one {un autre a été supprimé} other {# autres ont été supprimés}}",
"keyboard_shortcuts": "Raccourcis clavier",
"language": "Langue",
"language_setting_description": "Sélectionnez votre langue préférée",
@ -842,31 +817,6 @@
"level": "Niveau",
"library": "Bibliothèque",
"library_options": "Options de bibliothèque",
"license_account_info": "Ton compte a une licence",
"license_activated_subtitle": "Merci de soutenir Immich ainsi que les logiciels open source",
"license_activated_title": "Votre licence a été activée avec succès",
"license_button_activate": "Activer",
"license_button_buy": "Acheter",
"license_button_buy_license": "Acheter une licence",
"license_button_select": "Sélectionner",
"license_failed_activation": "Echec lors de l'activation de la licence. Merci de vérifier la clef reçu par mail!",
"license_individual_description_1": "1 licence par utilisateur sur n'importe quel serveur",
"license_individual_title": "Licence individuelle",
"license_info_licensed": "Licence active",
"license_info_unlicensed": "Sans licence",
"license_input_suggestion": "Vous avez une licence? Renseignez la clef ci-dessous",
"license_license_subtitle": "Acheter une licence pour soutenir Immich",
"license_license_title": "LICENCE",
"license_lifetime_description": "Licence à vie",
"license_per_server": "Par serveur",
"license_per_user": "Par utilisateur",
"license_server_description_1": "1 licence par serveur",
"license_server_description_2": "Licence pour tous les utilisateurs du serveur",
"license_server_title": "Licence serveur",
"license_trial_info_1": "Vous utilisez une version Sans Licence de Immich",
"license_trial_info_2": "Vous utilisez Immich depuis approximativement",
"license_trial_info_3": "{accountAge, plural, one {# jour} other {# jours}}",
"license_trial_info_4": "Pensez à acheter une licence pour soutenir le développement du service",
"light": "Clair",
"like_deleted": "Réaction « j'aime » supprimée",
"link_motion_video": "Lier la photo animée",
@ -905,7 +855,7 @@
"media_type": "Type de média",
"memories": "Souvenirs",
"memories_setting_description": "Gérer ce que vous voyez dans vos souvenirs",
"memory": "Mémoire",
"memory": "Souvenir",
"memory_lane_title": "Fil de souvenirs {title}",
"menu": "Menu",
"merge": "Fusionner",
@ -971,7 +921,6 @@
"onboarding_welcome_user": "Bienvenue {user}",
"online": "En ligne",
"only_favorites": "Uniquement les favoris",
"only_refreshes_modified_files": "Actualise les fichiers modifiés uniquement",
"open_in_map_view": "Montrer sur la carte",
"open_in_openstreetmap": "Ouvrir dans OpenStreetMap",
"open_the_search_filters": "Ouvrir les filtres de recherche",
@ -1009,14 +958,12 @@
"people_edits_count": "{count, plural, one {# personne éditée} other {# personnes éditées}}",
"people_feature_description": "Parcourir les photos et vidéos groupées par personnes",
"people_sidebar_description": "Afficher le menu Personnes dans la barre latérale",
"perform_library_tasks": "",
"permanent_deletion_warning": "Avertissement avant suppression définitive",
"permanent_deletion_warning_setting_description": "Afficher un avertissement avant la suppression définitive d'un média",
"permanently_delete": "Supprimer définitivement",
"permanently_delete_assets_count": "Suppression définitive de {count, plural, one {média} other {médias}}",
"permanently_delete_assets_count": "Suppression définitive {count, plural, one {du média} other {des médias}}",
"permanently_delete_assets_prompt": "Êtes-vous sûr de vouloir supprimer définitivement {count, plural, one {ce média?} other {ces <b>#</b> médias?}} Cela {count, plural, one {le} other {les}} supprimera aussi de {count, plural, one {son (ses)} other {leur(s)}} album(s).",
"permanently_deleted_asset": "Média supprimé définitivement",
"permanently_deleted_assets": "{count, plural, one {# média supprimé} other {# médias supprimés}} définitivement",
"permanently_deleted_assets_count": "{count, plural, one {# média définitivement supprimé} other {# médias définitivement supprimés}}",
"person": "Personne",
"person_hidden": "{name}{hidden, select, true { (caché)} other {}}",
@ -1032,7 +979,6 @@
"play_memories": "Lancer les souvenirs",
"play_motion_photo": "Jouer la photo animée",
"play_or_pause_video": "Jouer ou mettre en pause la vidéo",
"point": "",
"port": "Port",
"preset": "Préréglage",
"preview": "Aperçu",
@ -1046,7 +992,7 @@
"public_album": "Album public",
"public_share": "Partage public",
"purchase_account_info": "Contributeur",
"purchase_activated_subtitle": "Merci d'avoir apporté votre soutien à Immich et les logiciels open source",
"purchase_activated_subtitle": "Merci d'avoir apporté votre soutien à Immich et aux logiciels open source",
"purchase_activated_time": "Activé le {date, date}",
"purchase_activated_title": "Votre clé a été activée avec succès",
"purchase_button_activate": "Activer",
@ -1056,7 +1002,7 @@
"purchase_button_reminder": "Me le rappeler dans 30 jours",
"purchase_button_remove_key": "Supprimer la clé",
"purchase_button_select": "Sélectionner",
"purchase_failed_activation": "Erreur à l'activation. Veuillez vérifier votre e-mail pour obtenir la clé du produit correcte!",
"purchase_failed_activation": "Erreur à l'activation. Veuillez vérifier votre courriel pour obtenir la clé du produit correcte!",
"purchase_individual_description_1": "Pour un utilisateur",
"purchase_individual_description_2": "Statut de contributeur",
"purchase_individual_title": "Utilisateur",
@ -1065,43 +1011,42 @@
"purchase_lifetime_description": "Achat à vie",
"purchase_option_title": "OPTIONS D'ACHAT",
"purchase_panel_info_1": "Développer Immich nécessite du temps et de l'énergie, et nous avons des ingénieurs qui travaillent à plein temps pour en faire le meilleur produit possible. Notre mission est de générer, pour les logiciels open source et les pratiques de travail éthique, une source de revenus suffisante pour les développeurs et de créer un écosystème respectueux de la vie privée grâce a des alternatives crédibles aux services cloud peu scrupuleux.",
"purchase_panel_info_2": "Étant donné que nous nous engageons à ne pas ajouter de murs de paiement, cet achat ne vous donnera pas de fonctionnalités supplémentaires dans Immich. Nous comptons sur des utilisateurs comme vous pour soutenir le développement continu d'Immich.",
"purchase_panel_info_2": "Étant donné que nous nous engageons à ne pas ajouter de fonctionnalités payantes, cet achat ne vous donnera pas de fonctionnalités supplémentaires dans Immich. Nous comptons sur des utilisateurs comme vous pour soutenir le développement continu d'Immich.",
"purchase_panel_title": "Soutenir le projet",
"purchase_per_server": "Par serveur",
"purchase_per_user": "Par utilisateur",
"purchase_remove_product_key": "Supprimer la clé du produit",
"purchase_remove_product_key_prompt": "Êtes-vous sûr de vouloir supprimer la clé du produit?",
"purchase_remove_server_product_key": "Supprimer la clé du produit pour le Serveur",
"purchase_remove_server_product_key_prompt": "Êtes-vous sûr de vouloir supprimer la clé du produit pour le serveur?",
"purchase_remove_server_product_key_prompt": "Êtes-vous sûr de vouloir supprimer la clé du produit pour le Serveur?",
"purchase_server_description_1": "Pour l'ensemble du serveur",
"purchase_server_description_2": "Statut de contributeur",
"purchase_server_title": "Serveur",
"purchase_settings_server_activated": "La clé du produit pour le Serveur est gérée par l'administrateur",
"range": "",
"rating": "Étoile d'évaluation",
"rating_clear": "Effacer l'évaluation",
"rating_count": "{count, plural, one {# étoile} other {# étoiles}}",
"rating_description": "Afficher l'évaluation EXIF dans le panneau d'information",
"raw": "",
"reaction_options": "Options de réaction",
"read_changelog": "Lire les changements",
"reassign": "Réaffecter",
"reassigned_assets_to_existing_person": "{count, plural, one {# média réaffecté} other {# médias réaffectés}} à {name, select, null {une personne existante} other {{name}}}",
"reassigned_assets_to_new_person": "{count, plural, one {# média réassigné} other {# médias réassignés}} à une nouvelle personne",
"reassign": "Réattribuer",
"reassigned_assets_to_existing_person": "{count, plural, one {# média réattribué} other {# médias réattribués}} à {name, select, null {une personne existante} other {{name}}}",
"reassigned_assets_to_new_person": "{count, plural, one {# média réattribué} other {# médias réattribués}} à une nouvelle personne",
"reassing_hint": "Attribuer ces médias à une personne existante",
"recent": "Récent",
"recent-albums": "Albums récents",
"recent_searches": "Recherches récentes",
"refresh": "Actualiser",
"refresh_encoded_videos": "Actualiser les vidéos encodées",
"refresh_faces": "Mettre à jour les visages",
"refresh_faces": "Actualiser les visages",
"refresh_metadata": "Actualiser les métadonnées",
"refresh_thumbnails": "Actualiser les vignettes",
"refreshed": "Actualisé",
"refreshes_every_file": "Actualise tous les fichiers (existants et nouveaux)",
"refreshing_encoded_video": "Actualisation de la vidéo encodée",
"refreshing_faces": "Actualiser les visages",
"refreshing_faces": "Actualisation des visages",
"refreshing_metadata": "Actualisation des métadonnées",
"regenerating_thumbnails": "Régénération des vignettes",
"regenerating_thumbnails": "Regénération des vignettes",
"remove": "Supprimer",
"remove_assets_album_confirmation": "Êtes-vous sûr de vouloir supprimer {count, plural, one {# média} other {# médias}} de l'album?",
"remove_assets_shared_link_confirmation": "Êtes-vous sûr de vouloir supprimer {count, plural, one {# média} other {# médias}} de ce lien partagé?",
@ -1111,6 +1056,7 @@
"remove_from_album": "Supprimer de l'album",
"remove_from_favorites": "Supprimer des favoris",
"remove_from_shared_link": "Supprimer des liens partagés",
"remove_url": "Supprimer l'URL",
"remove_user": "Supprimer l'utilisateur",
"removed_api_key": "Clé API supprimée: {name}",
"removed_from_archive": "Supprimé de l'archive",
@ -1127,7 +1073,6 @@
"reset": "Réinitialiser",
"reset_password": "Réinitialiser le mot de passe",
"reset_people_visibility": "Réinitialiser la visibilité des personnes",
"reset_settings_to_default": "",
"reset_to_default": "Rétablir les valeurs par défaut",
"resolve_duplicates": "Résoudre les doublons",
"resolved_all_duplicates": "Résolution de tous les doublons",
@ -1147,9 +1092,7 @@
"saved_settings": "Paramètres enregistrés",
"say_something": "Réagir",
"scan_all_libraries": "Analyser toutes les bibliothèques",
"scan_all_library_files": "Analyser tous les fichiers",
"scan_library": "Analyser",
"scan_new_library_files": "Analyser les nouveaux fichiers",
"scan_settings": "Paramètres d'analyse",
"scanning_for_album": "Recherche d'albums en cours...",
"search": "Recherche",
@ -1192,10 +1135,9 @@
"selected_count": "{count, plural, one {# sélectionné} other {# sélectionnés}}",
"send_message": "Envoyer un message",
"send_welcome_email": "Envoyer un courriel de bienvenue",
"server": "Serveur",
"server_offline": "Serveur hors ligne",
"server_online": "Serveur en ligne",
"server_stats": "Statistiques Serveur",
"server_stats": "Statistiques du serveur",
"server_version": "Version du serveur",
"set": "Définir",
"set_as_album_cover": "Définir comme couverture d'album",
@ -1217,14 +1159,14 @@
"shared_with_partner": "Partagé avec {partner}",
"sharing": "Partage",
"sharing_enter_password": "Veuillez saisir le mot de passe pour visualiser cette page.",
"sharing_sidebar_description": "Afficher un lien vers Partage dans la barre latérale",
"sharing_sidebar_description": "Afficher un lien vers Partager dans la barre latérale",
"shift_to_permanent_delete": "appuyez sur ⇧ pour supprimer définitivement le média",
"show_album_options": "Afficher les options de l'album",
"show_albums": "Montrer les albums",
"show_all_people": "Montrer toutes les personnes",
"show_and_hide_people": "Afficher / Masquer les personnes",
"show_file_location": "Afficher l'emplacement du fichier",
"show_gallery": "Afficher la gallerie",
"show_gallery": "Afficher la galerie",
"show_hidden_people": "Afficher les personnes masquées",
"show_in_timeline": "Afficher dans la vue chronologique",
"show_in_timeline_setting_description": "Afficher les photos et vidéos de cet utilisateur dans votre vue chronologique",
@ -1276,19 +1218,19 @@
"storage_usage": "{used} sur {available} utilisé",
"submit": "Soumettre",
"suggestions": "Suggestions",
"sunrise_on_the_beach": "Aurore sur la plage",
"sunrise_on_the_beach": "Lever de soleil sur la plage",
"support": "Support",
"support_and_feedback": "Support & Retours",
"support_third_party_description": "Votre installation d'Immich est packagée via une application tierce. Si vous rencontrez des anomalies, elles peuvent venir de ce packaging tiers, merci de créer les anomalies avec ces tiers en premier lieu en utilisant les liens ci-dessous.",
"swap_merge_direction": "Inverser la direction de fusion",
"sync": "Synchroniser",
"tag": "Tag",
"tag_assets": "Taguer les médias",
"tag": "Étiquette",
"tag_assets": "Étiqueter les médias",
"tag_created": "Étiquette créée: {tag}",
"tag_feature_description": "Parcourir les photos et vidéos groupées par thèmes logiques",
"tag_not_found_question": "Vous ne trouvez pas une étiquette? <link>Créer une nouvelle étiquette.</link>",
"tag_updated": "Étiquette mise à jour: {tag}",
"tagged_assets": "Tag ajouté à {count, plural, one {# média} other {# médias}}",
"tagged_assets": "Étiquette ajoutée à {count, plural, one {# média} other {# médias}}",
"tags": "Étiquettes",
"template": "Modèle",
"theme": "Thème",
@ -1297,32 +1239,30 @@
"they_will_be_merged_together": "Elles seront fusionnées ensemble",
"third_party_resources": "Ressources tierces",
"time_based_memories": "Souvenirs basés sur la date",
"timeline": "Vue chronologique",
"timezone": "Fuseau horaire",
"to_archive": "Archiver",
"to_change_password": "Modifier le mot de passe",
"to_favorite": "Ajouter aux favoris",
"to_login": "Se connecter",
"to_parent": "Aller au dossier parent",
"to_root": "Vers la racine",
"to_trash": "Corbeille",
"toggle_settings": "Inverser les paramètres",
"toggle_theme": "Inverser le thème sombre",
"toggle_visibility": "Modifier la visibilité",
"total": "Total",
"total_usage": "Utilisation globale",
"trash": "Corbeille",
"trash_all": "Tout supprimer",
"trash_count": "Corbeille {count, number}",
"trash_delete_asset": "Corbeille/Suppression d'un média",
"trash_delete_asset": "Mettre à la corbeille/Supprimer un média",
"trash_no_results_message": "Les photos et vidéos supprimées s'afficheront ici.",
"trashed_items_will_be_permanently_deleted_after": "Les éléments dans la corbeille seront supprimés définitivement après {days, plural, one {# jour} other {# jours}}.",
"type": "Type",
"unarchive": "Désarchiver",
"unarchived": "Non archivé",
"unarchived_count": "{count, plural, one {# supprimé} other {# supprimés}} de l'archive",
"unfavorite": "Enlever des favoris",
"unhide_person": "Afficher la personne",
"unknown": "Inconnu",
"unknown_album": "",
"unknown_year": "Année inconnue",
"unlimited": "Illimité",
"unlink_motion_video": "Détacher la photo animée",
@ -1354,13 +1294,13 @@
"use_custom_date_range": "Utilisez une plage de date personnalisée à la place",
"user": "Utilisateur",
"user_id": "ID Utilisateur",
"user_license_settings": "Licence",
"user_license_settings_description": "Gérer votre licence",
"user_liked": "{user} a aimé {type, select, photo {cette photo} video {cette vidéo} asset {ce média} other {ceci}}",
"user_purchase_settings": "Achat",
"user_purchase_settings_description": "Gérer votre achat",
"user_role_set": "Définir {user} comme {role}",
"user_usage_detail": "Détail de l'utilisation des utilisateurs",
"user_usage_stats": "Statistiques d'utilisation du compte",
"user_usage_stats_description": "Voir les statistiques d'utilisation du compte",
"username": "Nom d'utilisateur",
"users": "Utilisateurs",
"utilities": "Utilitaires",
@ -1368,7 +1308,7 @@
"variables": "Variables",
"version": "Version",
"version_announcement_closing": "Ton ami, Alex",
"version_announcement_message": "Bonjour, il y a une nouvelle version de l'application. Prenez le temps de consulter les <link>notes de version</link> et assurez-vous que vos fichiers <code>docker-compose.yml</code> et <code>.env</code> sont à jour pour éviter toute erreur de configuration, surtout si vous utilisez WatchTower ou tout autre mécanisme qui gère la mise à jour de votre application automatiquement.",
"version_announcement_message": "Bonjour, il y a une nouvelle version de l'application. Prenez le temps de consulter les <link>notes de version</link> et assurez vous que votre installation est à jour pour éviter toute erreur de configuration, surtout si vous utilisez WatchTower ou tout autre mécanisme qui gère automatiquement la mise à jour de votre application.",
"version_history": "Historique de version",
"version_history_item": "Version {version} installée le {date}",
"video": "Vidéo",
@ -1382,16 +1322,16 @@
"view_all_users": "Voir tous les utilisateurs",
"view_in_timeline": "Voir dans la vue chronologique",
"view_links": "Voir les liens",
"view_name": "Vue",
"view_next_asset": "Voir le média suivant",
"view_previous_asset": "Voir le média précédent",
"view_stack": "Afficher la pile",
"viewer": "Vue",
"visibility_changed": "Visibilité changée pour {count, plural, one {# personne} other {# personnes}}",
"waiting": "En attente",
"warning": "Attention",
"week": "Semaine",
"welcome": "Bienvenue",
"welcome_to_immich": "Bienvenue sur immich",
"welcome_to_immich": "Bienvenue sur Immich",
"year": "Année",
"years_ago": "Il y a {years, plural, one {# an} other {# ans}}",
"yes": "Oui",

View file

@ -23,6 +23,7 @@
"add_to": "הוסף ל..",
"add_to_album": "הוסף לאלבום",
"add_to_shared_album": "הוסף לאלבום משותף",
"add_url": "הוספת קישור",
"added_to_archive": "נוסף לארכיון",
"added_to_favorites": "נוסף למועדפים",
"added_to_favorites_count": "{count, number} נוספו למועדפים",
@ -34,6 +35,11 @@
"authentication_settings_disable_all": "האם ברצונך להשבית את כל שיטות ההתחברות? כניסה למערכת תהיה מושבתת לחלוטין.",
"authentication_settings_reenable": "כדי לאפשר מחדש, השתמש ב<link>פקודת שרת</link>.",
"background_task_job": "משימות רקע",
"backup_database": "גיבוי מסד נתונים",
"backup_database_enable_description": "אפשר גיבויי מסד נתונים",
"backup_keep_last_amount": "כמות של גיבויים קודמים שיש לשמור",
"backup_settings": "הגדרות גיבוי",
"backup_settings_description": "נהל הגדרות גיבוי מסד נתונים",
"check_all": "סמן הכל",
"cleared_jobs": "נוקו משימות עבור: {job}",
"config_set_by_file": "התצורה מוגדרת כעת על ידי קובץ תצורה",
@ -43,9 +49,10 @@
"confirm_reprocess_all_faces": "האם את/ה בטוח/ה שברצונך לעבד מחדש את כל הפנים? זה גם ינקה אנשים בעלי שם.",
"confirm_user_password_reset": "האם את/ה בטוח/ה שברצונך לאפס את הסיסמה של המשתמש {user}?",
"create_job": "צור עבודה",
"crontab_guru": "Crontab Guru",
"cron_expression": "ביטוי cron",
"cron_expression_description": "הגדר את מרווח הסריקה באמצעות תבנית ה- cron. למידע נוסף נא לפנות למשל אל <link>Crontab Guru</link>",
"cron_expression_presets": "הגדרות קבועות מראש של ביטוי cron",
"disable_login": "השבת כניסה",
"disabled": "מושבת",
"duplicate_detection_job_description": "הפעל למידת מכונה על נכסים כדי לזהות תמונות דומות. נשען על חיפוש חכם",
"exclusion_pattern_description": "דפוסי החרגה מאפשרים לך להתעלם מקבצים ומתיקיות בעת סריקת הספרייה שלך. זה שימושי אם יש לך תיקיות המכילות קבצים שאינך רוצה לייבא, כגון קובצי RAW.",
"external_library_created_at": "ספרייה חיצונית (נוצרה ב-{date})",
@ -63,22 +70,15 @@
"image_prefer_wide_gamut": "העדף סולם צבעים רחב",
"image_prefer_wide_gamut_setting_description": "השתמש ב-Display P3 לתמונות ממוזערות. זה משמר טוב יותר את החיוניות של תמונות עם מרחבי צבע רחבים, אבל תמונות עשויות להופיע אחרת במכשירים ישנים עם גרסת דפדפן ישנה. תמונות sRGB נשמרות כ-sRGB כדי למנוע שינויי צבע.",
"image_preview_description": "תמונה בגודל בינוני עם מטא-נתונים שהוסרו, משמשת בעת צפייה בנכס בודד ועבור למידת מכונה",
"image_preview_format": "פורמט תצוגה מקדימה",
"image_preview_quality_description": "איכות תצוגה מקדימה בין 1-100. גבוה יותר הוא טוב יותר, אבל מייצר קבצים גדולים יותר ויכול להפחית את תגובתיות היישום. הגדרת ערך נמוך עשויה להשפיע על איכות תוצאות של למידת מכונה.",
"image_preview_resolution": "רזולוציית תצוגה מקדימה",
"image_preview_resolution_description": "משמש בעת צפייה בתמונה בודדת ועבור למידת מכונה. רזולוציות גבוהות יותר יכולות לשמר פירוט רב יותר אך לוקחות יותר זמן לקידוד, יש להן גדלי קבצים גדולים יותר, ויכולות להפחית את תגובתיות היישום.",
"image_preview_title": "הגדרות תצוגה מקדימה",
"image_quality": "איכות",
"image_quality_description": "איכות תמונה מ-1 עד 100. ערך גבוה יותר עדיף לאיכות אך מייצר קבצים גדולים יותר, אפשרות זו משפיעה על התצוגה המקדימה ותמונות ממוזערות.",
"image_resolution": "רזולוציה",
"image_resolution_description": "רזולוציות גבוהות יותר יכולות לשמר פרטים רבים יותר אך לוקחות זמן רב יותר לקידוד, יש להן גדלי קבצים גדולים יותר ויכולות להפחית את תגובתיות היישום.",
"image_settings": "הגדרות תמונה",
"image_settings_description": "נהל את האיכות והרזולוציה של תמונות שנוצרו",
"image_thumbnail_description": "תמונה ממוזערת קטנה עם מטא-נתונים שהוסרו, משמשת בעת צפייה בקבוצות של תמונות כמו ציר הזמן הראשי",
"image_thumbnail_format": "פורמט תמונה ממוזערת",
"image_thumbnail_quality_description": "איכות תמונה ממוזערת בין 1-100. גבוה יותר הוא טוב יותר, אבל מייצר קבצים גדולים יותר ויכול להפחית את תגובתיות היישום.",
"image_thumbnail_resolution": "רזולוציית תמונה ממוזערת",
"image_thumbnail_resolution_description": "משמש בעת צפייה בקבוצות של תמונות (ציר זמן ראשי, תצוגת אלבום וכו'). רזולוציות גבוהות יותר יכולות לשמר פירוט רב יותר אך לוקחות יותר זמן לקידוד, יש להן גדלי קבצים גדולים יותר, ויכולות להפחית את תגובתיות היישום.",
"image_thumbnail_title": "הגדרות תמונה ממוזערת",
"job_concurrency": "בו-זמניות של {job}",
"job_created": "עבודה נוצרה",
@ -89,9 +89,6 @@
"jobs_delayed": "{jobCount, plural, other {# עוכבו}}",
"jobs_failed": "{jobCount, plural, other {# נכשלו}}",
"library_created": "נוצרה ספרייה: {library}",
"library_cron_expression": "ביטוי cron",
"library_cron_expression_description": "הגדר את מרווח הסריקה באמצעות פורמט ה-cron. למידע נוסף אנא פנה למשל אל <link>Crontab Guru</link>",
"library_cron_expression_presets": "הגדרות ביטוי cron קבועות מראש",
"library_deleted": "ספרייה נמחקה",
"library_import_path_description": "ציין תיקיה לייבוא. תיקייה זו, כולל תיקיות משנה, תיסרק עבור תמונות וסרטונים.",
"library_scanning": "סריקה תקופתית",
@ -134,7 +131,7 @@
"machine_learning_smart_search_description": "חפש תמונות באופן סמנטי באמצעות הטמעות של CLIP",
"machine_learning_smart_search_enabled": "אפשר חיפוש חכם",
"machine_learning_smart_search_enabled_description": "אם מושבת, תמונות לא יקודדו לחיפוש חכם.",
"machine_learning_url_description": "כתובת האתר של שרת למידת המכונה",
"machine_learning_url_description": "כתובת האתר של שרת למידת המכונה. אם ניתן יותר מכתובת אחת, כל שרת ינסה בתורו עד אשר יענה בחיוב, בסדר התחלתי.",
"manage_concurrency": "נהל בו-זמניות",
"manage_log_settings": "נהל הגדרות רישום ביומן",
"map_dark_style": "עיצוב כהה",
@ -215,7 +212,6 @@
"refreshing_all_libraries": "מרענן את כל הספריות",
"registration": "רישום מנהל מערכת",
"registration_description": "מכיוון שאתה המשתמש הראשון במערכת, אתה תוקצה כמנהל ואתה אחראי על משימות ניהול, ומשתמשים נוספים ייווצרו על ידך.",
"removing_deleted_files": "הסרת קבצים לא מקוונים",
"repair_all": "תקן הכל",
"repair_matched_items": "{count, plural, one {פריט # תואם} other {# פריטים תואמים}}",
"repaired_items": "{count, plural, one {פריט # תוקן} other {# פריטים תוקנו}}",
@ -223,12 +219,12 @@
"reset_settings_to_default": "אפס הגדרות לברירת המחדל",
"reset_settings_to_recent_saved": "אפס הגדרות להגדרות שנשמרו לאחרונה",
"scanning_library": "סורק ספרייה",
"scanning_library_for_changed_files": "סורק ספרייה לאיתור קבצים שהשתנו",
"scanning_library_for_new_files": "סורק ספרייה לאיתור קבצים חדשים",
"search_jobs": "חיפוש עבודות...",
"send_welcome_email": "שלח דוא\"ל ברוכים הבאים",
"server_external_domain_settings": "דומיין חיצוני",
"server_external_domain_settings_description": "דומיין עבור קישורים משותפים ציבוריים, כולל http(s)://",
"server_public_users": "משתמשים ציבוריים",
"server_public_users_description": "כל המשתמשים (שם ודוא\"ל) מופיעים בעת הוספת משתמש לאלבומים משותפים. כאשר התכונה מושבתת, רשימת המשתמשים תהיה זמינה רק למשתמשים בעלי הרשאות מנהל.",
"server_settings": "הגדרות שרת",
"server_settings_description": "נהל הגדרות שרת",
"server_welcome_message": "הודעת פתיחה",
@ -254,6 +250,16 @@
"storage_template_user_label": "<code>{label}</code> היא תווית האחסון של המשתמש",
"system_settings": "הגדרות מערכת",
"tag_cleanup_job": "ניקוי תגים",
"template_email_available_tags": "ניתן להשתמש במשתנים הבאים בתבנית שלך: {tags}",
"template_email_if_empty": "אם התבנית ריקה, ייעשה שימוש בדוא\"ל ברירת המחדל.",
"template_email_invite_album": "תבנית הזמנת אלבום",
"template_email_preview": "תצוגה מקדימה",
"template_email_settings": "תבניות דוא\"ל",
"template_email_settings_description": "נהל תבניות התראת דוא\"ל מותאמות אישית",
"template_email_update_album": "עדכון תבנית אלבום",
"template_email_welcome": "תבנית דוא\"ל ברוכים הבאים",
"template_settings": "תבניות התראה",
"template_settings_description": "נהל תבניות מותאמות אישית עבור התראות.",
"theme_custom_css_settings": "CSS בהתאמה אישית",
"theme_custom_css_settings_description": "גיליונות סגנון מדורגים (CSS) מאפשרים התאמה אישית של העיצוב של Immich.",
"theme_settings": "הגדרות ערכת נושא",
@ -261,7 +267,6 @@
"these_files_matched_by_checksum": "קבצים אלה תואמים לפי סיכומי הביקורת שלהם",
"thumbnail_generation_job": "צור תמונות ממוזערות",
"thumbnail_generation_job_description": "יוצר תמונות ממוזערות גדולות, קטנות ומטושטשות עבור כל נכס, כמו גם תמונות ממוזערות עבור כל אדם",
"transcode_policy_description": "",
"transcoding_acceleration_api": "API האצה",
"transcoding_acceleration_api_description": "ה-API שייצור אינטראקציה עם המכשיר שלך כדי להאיץ את המרת הקידוד. הגדרה זו היא 'המאמץ הטוב ביותר': היא תחזור לקידוד תוכנה במקרה של כשל. VP9 עשוי לעבוד או לא, תלוי בחומרה שלך.",
"transcoding_acceleration_nvenc": "NVENC (דורש כרטיס מסך של NVIDIA)",
@ -313,8 +318,6 @@
"transcoding_threads_description": "ערכים גבוהים יותר מובילים לקידוד מהיר יותר, אך משאירים פחות מקום לשרת לעבד משימות אחרות בעודו פעיל. ערך זה לא אמור להיות יותר ממספר ליבות המעבד. ממקסם את הניצול אם מוגדר ל-0.",
"transcoding_tone_mapping": "מיפוי גוונים",
"transcoding_tone_mapping_description": "מנסה לשמר את המראה של סרטוני HDR כשהם מומרים ל-SDR. כל אלגוריתם עושה פשרות שונות עבור צבע, פירוט ובהירות. Hable משמר פרטים, Mobius משמר צבע, ו-Reinhard משמר בהירות.",
"transcoding_tone_mapping_npl": "בהירות שיא נומינלית למיפוי גוונים",
"transcoding_tone_mapping_npl_description": "הצבעים יותאמו כך שיראו נורמליים לתצוגה של בהירות זו. באופן מנוגד לאינטואיציה, ערכים נמוכים מגבירים את בהירות הווידאו ולהפך מכיוון שזה מפצה על בהירות התצוגה. 0 מגדיר ערך זה באופן אוטומטי.",
"transcoding_transcode_policy": "מדיניות המרת קידוד",
"transcoding_transcode_policy_description": "מדיניות לגבי מתי יש להמיר קידוד של סרטון. תמיד יומר הקידוד של סרטוני HDR (למעט אם המרת קידוד מושבתת).",
"transcoding_two_pass_encoding": "קידוד בשני מעברים",
@ -395,7 +398,6 @@
"archive_or_unarchive_photo": "העבר תמונה לארכיון או הוצא אותה משם",
"archive_size": "גודל הארכיון",
"archive_size_description": "הגדר את גודל הארכיון להורדות (ב-GiB)",
"archived": "בארכיון",
"archived_count": "{count, plural, other {# הועברו לארכיון}}",
"are_these_the_same_person": "האם אלה אותו האדם?",
"are_you_sure_to_do_this": "האם את/ה בטוח/ה שברצונך לעשות את זה?",
@ -416,7 +418,6 @@
"assets_added_to_album_count": "{count, plural, one {נוסף נכס #} other {נוספו # נכסים}} לאלבום",
"assets_added_to_name_count": "{count, plural, one {נכס # נוסף} other {# נכסים נוספו}} אל {hasName, select, true {<b>{name}</b>} other {אלבום חדש}}",
"assets_count": "{count, plural, one {נכס #} other {# נכסים}}",
"assets_moved_to_trash": "Moved {count, plural, one {# asset} other {# assets}} to trash",
"assets_moved_to_trash_count": "{count, plural, one {נכס # הועבר} other {# נכסים הועברו}} לאשפה",
"assets_permanently_deleted_count": "{count, plural, one {נכס # נמחק} other {# נכסים נמחקו}} לצמיתות",
"assets_removed_count": "{count, plural, one {נכס # הוסר} other {# נכסים הוסרו}}",
@ -446,10 +447,6 @@
"cannot_merge_people": "לא ניתן למזג אנשים",
"cannot_undo_this_action": "את/ה לא יכול/ה לבטל את הפעולה הזו!",
"cannot_update_the_description": "לא ניתן לעדכן את התיאור",
"cant_apply_changes": "לא ניתן להחיל שינויים",
"cant_get_faces": "לא ניתן לאחזר פרצופים",
"cant_search_people": "לא ניתן לחפש אנשים",
"cant_search_places": "לא ניתן לחפש מקומות",
"change_date": "שנה תאריך",
"change_expiration_time": "שנה את זמן התפוגה",
"change_location": "שנה מיקום",
@ -481,6 +478,7 @@
"confirm": "אישור",
"confirm_admin_password": "אשר סיסמת מנהל",
"confirm_delete_shared_link": "האם את/ה בטוח/ה שברצונך למחוק את הקישור המשותף הזה?",
"confirm_keep_this_delete_others": "כל שאר הנכסים בערימה יימחקו למעט נכס זה. האם את/ה בטוח/ה שברצונך להמשיך?",
"confirm_password": "אשר סיסמה",
"contain": "מכיל",
"context": "הקשר",
@ -530,6 +528,7 @@
"delete_key": "מחק מפתח",
"delete_library": "מחק ספרייה",
"delete_link": "מחק קישור",
"delete_others": "מחק אחרים",
"delete_shared_link": "מחק קישור משותף",
"delete_tag": "מחק תג",
"delete_tag_confirmation_prompt": "האם את/ה בטוח/ה שברצונך למחוק תג {tagName}?",
@ -563,13 +562,6 @@
"duplicates": "כפילויות",
"duplicates_description": "הפרד כל קבוצה על ידי ציון אילו, אם בכלל, הן כפילויות",
"duration": "משך זמן",
"durations": {
"days": "{days, plural, one {day} other {{days, number} days}}",
"hours": "{hours, plural, one {hour} other {{hours, number} hours}}",
"minutes": "{minutes, plural, one {minute} other {{minutes, number} minutes}}",
"months": "{months, plural, one {month} other {{months, number} months}}",
"years": "{years, plural, one {year} other {{years, number} years}}"
},
"edit": "ערוך",
"edit_album": "ערוך אלבום",
"edit_avatar": "ערוך תמונת פרופיל",
@ -594,8 +586,6 @@
"editor_crop_tool_h2_aspect_ratios": "יחסי רוחב גובה",
"editor_crop_tool_h2_rotation": "סיבוב",
"email": "דוא\"ל",
"empty": "",
"empty_album": "אלבום ריק",
"empty_trash": "רוקן אשפה",
"empty_trash_confirmation": "האם את/ה בטוח/ה שברצונך לרוקן את האשפה? זה יסיר לצמיתות את כל הנכסים באשפה מImmich.\nאת/ה לא יכול/ה לבטל פעולה זו!",
"enable": "אפשר",
@ -629,6 +619,7 @@
"failed_to_create_shared_link": "יצירת קישור משותף נכשלה",
"failed_to_edit_shared_link": "עריכת קישור משותף נכשלה",
"failed_to_get_people": "קבלת אנשים נכשלה",
"failed_to_keep_this_delete_others": "נכשל לשמור את הנכס הזה ולמחוק את הנכסים האחרים",
"failed_to_load_asset": "טעינת נכס נכשלה",
"failed_to_load_assets": "טעינת נכסים נכשלה",
"failed_to_load_people": "נכשל באחזור אנשים",
@ -656,8 +647,6 @@
"unable_to_change_location": "לא ניתן לשנות מיקום",
"unable_to_change_password": "לא ניתן לשנות סיסמה",
"unable_to_change_visibility": "לא ניתן לשנות את הנראות עבור {count, plural, one {אדם #} other {# אנשים}}",
"unable_to_check_item": "",
"unable_to_check_items": "",
"unable_to_complete_oauth_login": "לא ניתן להשלים התחברות OAuth",
"unable_to_connect": "לא ניתן להתחבר",
"unable_to_connect_to_server": "לא ניתן להתחבר לשרת",
@ -698,12 +687,10 @@
"unable_to_remove_album_users": "לא ניתן להסיר משתמשים מהאלבום",
"unable_to_remove_api_key": "לא ניתן להסיר מפתח API",
"unable_to_remove_assets_from_shared_link": "לא ניתן להסיר נכסים מקישור משותף",
"unable_to_remove_comment": "",
"unable_to_remove_deleted_assets": "לא ניתן להסיר קבצים לא מקוונים",
"unable_to_remove_library": "לא ניתן להסיר ספרייה",
"unable_to_remove_partner": "לא ניתן להסיר שותף",
"unable_to_remove_reaction": "לא ניתן להסיר תגובה",
"unable_to_remove_user": "",
"unable_to_repair_items": "לא ניתן לתקן פריטים",
"unable_to_reset_password": "לא ניתן לאפס סיסמה",
"unable_to_resolve_duplicate": "לא ניתן לפתור כפילות",
@ -733,10 +720,6 @@
"unable_to_update_user": "לא ניתן לעדכן משתמש",
"unable_to_upload_file": "לא ניתן להעלות קובץ"
},
"every_day_at_onepm": "",
"every_night_at_midnight": "",
"every_night_at_twoam": "",
"every_six_hours": "",
"exif": "Exif",
"exit_slideshow": "צא ממצגת שקופיות",
"expand_all": "הרחב הכל",
@ -751,33 +734,28 @@
"external": "חיצוני",
"external_libraries": "ספריות חיצוניות",
"face_unassigned": "לא מוקצה",
"failed_to_get_people": "נכשל באחזור אנשים",
"failed_to_load_assets": "טעינת נכסים נכשלה",
"favorite": "מועדף",
"favorite_or_unfavorite_photo": "הוסף או הסר תמונה מהמועדפים",
"favorites": "מועדפים",
"feature": "",
"feature_photo_updated": "תמונה מייצגת עודכנה",
"featurecollection": "",
"features": "תכונות",
"features_setting_description": "נהל את תכונות היישום",
"file_name": "שם הקובץ",
"file_name_or_extension": "שם קובץ או סיומת",
"filename": "שם קובץ",
"files": "",
"filetype": "סוג קובץ",
"filter_people": "סנן אנשים",
"find_them_fast": "מצא אותם מהר לפי שם עם חיפוש",
"fix_incorrect_match": "תקן התאמה שגויה",
"folders": "תיקיות",
"folders_feature_description": "עיון בתצוגת התיקייה עבור התמונות והסרטונים שבמערכת הקבצים",
"force_re-scan_library_files": "כפה סריקה מחדש של כל קבצי הספרייה",
"forward": "קדימה",
"general": "כללי",
"get_help": "קבל עזרה",
"getting_started": "תחילת העבודה",
"go_back": "חזור",
"go_to_search": "עבור לחיפוש",
"go_to_share_page": "עבור לדף השיתוף",
"group_albums_by": "קבץ אלבומים לפי..",
"group_no": "אין קיבוץ",
"group_owner": "קבץ לפי בעלים",
@ -803,10 +781,6 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {סרטון שצולם} other {תמונה שצולמה}} ב-{city}, {country} עם {person1} ו-{person2} ב-{date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {סרטון שצולם} other {תמונה שצולמה}} ב-{city}, {country} עם {person1}, {person2}, ו-{person3} ב-{date}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {סרטון שצולם} other {תמונה שצולמה}} ב-{city}, {country} עם {person1}, {person2}, ו-{additionalCount, number} אחרים ב-{date}",
"image_alt_text_people": "{count, plural, =1 {עם {person1}} =2 {עם {person1} ו{person2}} =3 {עם {person1}, {person2}, ו{person3}} other {עם {person1}, {person2}, ו{others, number} אחרים}}",
"image_alt_text_place": "ב{city}, {country}",
"image_taken": "{isVideo, select, true {סרטון שצולם} other {תמונה שצולמה}}",
"img": "",
"immich_logo": "הלוגו של Immich",
"immich_web_interface": "ממשק האינטרנט של Immich",
"import_from_json": "ייבוא מ-JSON",
@ -827,10 +801,11 @@
"invite_people": "הזמן אנשים",
"invite_to_album": "הזמן לאלבום",
"items_count": "{count, plural, one {פריט #} other {# פריטים}}",
"job_settings_description": "",
"jobs": "משימות",
"keep": "שמור",
"keep_all": "שמור הכל",
"keep_this_delete_others": "שמור על זה, מחק אחרים",
"kept_this_deleted_others": "נכס זה נשמר ונמחקו {count, plural, one {נכס #} other {# נכסים}}",
"keyboard_shortcuts": "קיצורי מקלדת",
"language": "שפה",
"language_setting_description": "בחר/י את השפה המועדפת עליך",
@ -842,31 +817,6 @@
"level": "רמה",
"library": "ספרייה",
"library_options": "אפשרויות ספרייה",
"license_account_info": "החשבון שלך מורשה",
"license_activated_subtitle": "תודה לך על התמיכה ב-Immich ובתוכנות קוד פתוח",
"license_activated_title": "הרישיון שלך הופעל בהצלחה",
"license_button_activate": "הפעל",
"license_button_buy": "קנה",
"license_button_buy_license": "קנה רישיון",
"license_button_select": "בחר",
"license_failed_activation": "הפעלת הרישיון נכשלה. נא לבדוק את הדוא\"ל שלך כדי למצוא את מפתח הרישיון הנכון!",
"license_individual_description_1": "רישיון 1 למשתמש בכל שרת",
"license_individual_title": "רישיון אישי",
"license_info_licensed": "מורשה",
"license_info_unlicensed": "ללא רשיון",
"license_input_suggestion": "יש לך רישיון? הזן את המפתח למטה",
"license_license_subtitle": "רכוש רישיון כדי לתמוך ב Immich",
"license_license_title": "רישיון",
"license_lifetime_description": "רישיון לכל החיים",
"license_per_server": "עבור שרת",
"license_per_user": "עבור משתמש",
"license_server_description_1": "רישיון 1 עבור שרת",
"license_server_description_2": "רישיון לכל המשתמשים בשרת",
"license_server_title": "רישיון שרת",
"license_trial_info_1": "אתה מפעיל גרסה ללא רישיון של Immich",
"license_trial_info_2": "אתה משתמש ב Immich קרוב ל",
"license_trial_info_3": "{accountAge, plural, one {יום #} other {# ימים}}",
"license_trial_info_4": "אנא שקול לרכוש רישיון כדי לתמוך בפיתוח המתמשך של השירות",
"light": "בהיר",
"like_deleted": "לייק נמחק",
"link_motion_video": "קשר סרטון תנועה",
@ -971,7 +921,6 @@
"onboarding_welcome_user": "ברוכ/ה הבא/ה, {user}",
"online": "מקוון",
"only_favorites": "רק מועדפים",
"only_refreshes_modified_files": "מרענן רק קבצים שהשתנו",
"open_in_map_view": "פתח בתצוגת מפה",
"open_in_openstreetmap": "פתח ב-OpenStreetMap",
"open_the_search_filters": "פתח את מסנני החיפוש",
@ -1009,14 +958,12 @@
"people_edits_count": "{count, plural, one {אדם # נערך} other {# אנשים נערכו}}",
"people_feature_description": "עיון בתמונות וסרטונים שקובצו על ידי אנשים",
"people_sidebar_description": "הצג קישור אל אנשים בסרגל הצד",
"perform_library_tasks": "",
"permanent_deletion_warning": "אזהרת מחיקה לצמיתות",
"permanent_deletion_warning_setting_description": "הצג אזהרה בעת מחיקת נכסים לצמיתות",
"permanently_delete": "מחק לצמיתות",
"permanently_delete_assets_count": "מחק לצמיתות {count, plural, one {נכס} other {נכסים}}",
"permanently_delete_assets_prompt": "האם את/ה בטוח/ה שברצונך למחוק לצמיתות {count, plural, one {נכס זה?} other {<b>#</b> נכסים אלה?}}זה גם יסיר {count, plural, one {אותו מאלבומו} other {אותם מאלבומם}}.",
"permanently_deleted_asset": "נכס נמחק לצמיתות",
"permanently_deleted_assets": "Permanently deleted {count, plural, one {# asset} other {# assets}}",
"permanently_deleted_assets_count": "{count, plural, one {נכס # נמחק} other {# נכסים נמחקו}} לצמיתות",
"person": "אדם",
"person_hidden": "{name}{hidden, select, true { (מוסתר)} other {}}",
@ -1032,7 +979,6 @@
"play_memories": "נגן זכרונות",
"play_motion_photo": "הפעל תמונה עם תנועה",
"play_or_pause_video": "הפעל או השהה סרטון",
"point": "",
"port": "יציאה",
"preset": "הגדרות קבועות מראש",
"preview": "תצוגה מקדימה",
@ -1077,12 +1023,10 @@
"purchase_server_description_2": "מעמד תומך",
"purchase_server_title": "שרת",
"purchase_settings_server_activated": "מפתח המוצר של השרת מנוהל על ידי מנהל המערכת",
"range": "",
"rating": "דירוג כוכב",
"rating_clear": "נקה דירוג",
"rating_count": "{count, plural, one {כוכב #} other {# כוכבים}}",
"rating_description": "הצג את דירוג ה-EXIF בלוח המידע",
"raw": "",
"reaction_options": "אפשרויות הגבה",
"read_changelog": "קרא את יומן השינויים",
"reassign": "הקצה מחדש",
@ -1090,6 +1034,7 @@
"reassigned_assets_to_new_person": "{count, plural, one {נכס # הוקצה} other {# נכסים הוקצו}} מחדש לאדם חדש",
"reassing_hint": "הקצה נכסים שנבחרו לאדם קיים",
"recent": "חדש",
"recent-albums": "אלבומים אחרונים",
"recent_searches": "חיפושים אחרונים",
"refresh": "רענן",
"refresh_encoded_videos": "רענן סרטונים מקודדים",
@ -1111,6 +1056,7 @@
"remove_from_album": "הסר מאלבום",
"remove_from_favorites": "הסר מהמועדפים",
"remove_from_shared_link": "הסר מקישור משותף",
"remove_url": "הסר URL",
"remove_user": "הסר משתמש",
"removed_api_key": "מפתח API הוסר: {name}",
"removed_from_archive": "הוסר מארכיון",
@ -1127,7 +1073,6 @@
"reset": "איפוס",
"reset_password": "איפוס סיסמה",
"reset_people_visibility": "אפס את נראות האנשים",
"reset_settings_to_default": "",
"reset_to_default": "אפס לברירת מחדל",
"resolve_duplicates": "פתור כפילויות",
"resolved_all_duplicates": "כל הכפילויות נפתרו",
@ -1147,9 +1092,7 @@
"saved_settings": "הגדרות שמורות",
"say_something": "תגיד/י משהו",
"scan_all_libraries": "סרוק את כל הספריות",
"scan_all_library_files": "סרוק מחדש את כל קבצי הספרייה",
"scan_library": "סרוק",
"scan_new_library_files": "סרוק קבצי ספרייה חדשים",
"scan_settings": "הגדרות סריקה",
"scanning_for_album": "סורק אחר אלבום...",
"search": "חפש",
@ -1192,7 +1135,6 @@
"selected_count": "{count, plural, other {# נבחרו}}",
"send_message": "שלח הודעה",
"send_welcome_email": "שלח דוא\"ל קבלת פנים",
"server": "שרת",
"server_offline": "שרת לא מקוון",
"server_online": "שרת מקוון",
"server_stats": "סטטיסטיקות שרת",
@ -1297,17 +1239,17 @@
"they_will_be_merged_together": "הם יתמזגו יחד",
"third_party_resources": "משאבי צד שלישי",
"time_based_memories": "זכרונות מבוססי זמן",
"timeline": "ציר זמן",
"timezone": "אזור זמן",
"to_archive": "העבר לארכיון",
"to_change_password": "שנה סיסמה",
"to_favorite": "מועדף",
"to_login": "כניסה",
"to_parent": "לך להורה",
"to_root": "לשורש",
"to_trash": "אשפה",
"toggle_settings": "החלף מצב הגדרות",
"toggle_theme": "החלף ערכת נושא כהה",
"toggle_visibility": "החלף נראות",
"total": "סה\"כ",
"total_usage": "שימוש כולל",
"trash": "אשפה",
"trash_all": "העבר הכל לאשפה",
@ -1317,12 +1259,10 @@
"trashed_items_will_be_permanently_deleted_after": "פריטים באשפה ימחקו לצמיתות לאחר {days, plural, one {יום #} other {# ימים}}.",
"type": "סוג",
"unarchive": "הוצא מארכיון",
"unarchived": "הוצא מהארכיון",
"unarchived_count": "{count, plural, other {# הוצאו מהארכיון}}",
"unfavorite": "לא מועדף",
"unhide_person": "בטל הסתרת אדם",
"unknown": "לא ידוע",
"unknown_album": "אלבום לא ידוע",
"unknown_year": "שנה לא ידועה",
"unlimited": "בלתי מוגבל",
"unlink_motion_video": "בטל קישור סרטון תנועה",
@ -1354,13 +1294,13 @@
"use_custom_date_range": "השתמש בטווח תאריכים מותאם במקום",
"user": "משתמש",
"user_id": "מזהה משתמש",
"user_license_settings": "רישיון",
"user_license_settings_description": "נהל את הרישיון שלך",
"user_liked": "{user} אהב את {type, select, photo {התמונה הזאת} video {הסרטון הזה} asset {הנכס הזה} other {זה}}",
"user_purchase_settings": "רכישה",
"user_purchase_settings_description": "נהל את הרכישה שלך",
"user_role_set": "הגדר את {user} בתור {role}",
"user_usage_detail": "פרטי השימוש של המשתמש",
"user_usage_stats": "סטטיסטיקות שימוש בחשבון",
"user_usage_stats_description": "הצג סטטיסטיקות שימוש בחשבון",
"username": "שם משתמש",
"users": "משתמשים",
"utilities": "כלים",
@ -1368,7 +1308,7 @@
"variables": "משתנים",
"version": "גרסה",
"version_announcement_closing": "החבר שלך, אלכס",
"version_announcement_message": "הי חבר/ה, יש מהדורה חדשה של היישום, אנא קח/י את הזמן שלך לבקר ב <link>הערות פרסום</link> ולוודא שמבנה ה-<code>docker-compose.yml</code>, וה-<code>.env</code> שלך עדכני כדי למנוע תצורות שגויות, במיוחד אם את/ה משתמש/ת ב-WatchTower או בכל מנגנון שמטפל בעדכון היישום שלך באופן אוטומטי.",
"version_announcement_message": "שלום לך! זמינה גרסה חדשה של Immich. אנא קח/י זמן מה לקרוא את <link>הערות הפרסום</link> כדי לוודא שההתקנה שלך עדכנית על מנת למנוע תצורות שגויות, במיוחד אם את/ה משתמש/ת ב-WatchTower או בכל מנגנון שמטפל בעדכון מופע ה-Immich שלך באופן אוטומטי.",
"version_history": "היסטוריית גרסאות",
"version_history_item": "{version} הותקנה ב-{date}",
"video": "סרטון",
@ -1382,10 +1322,10 @@
"view_all_users": "הצג את כל המשתמשים",
"view_in_timeline": "ראה בציר הזמן",
"view_links": "הצג קישורים",
"view_name": "הצג",
"view_next_asset": "הצג את הנכס הבא",
"view_previous_asset": "הצג את הנכס הקודם",
"view_stack": "הצג ערימה",
"viewer": "מציג",
"visibility_changed": "הנראות השתנתה עבור {count, plural, one {אדם #} other {# אנשים}}",
"waiting": "ממתין",
"warning": "אזהרה",

View file

@ -23,6 +23,7 @@
"add_to": "इसमें जोड़ें..।",
"add_to_album": "एल्बम में जोड़ें",
"add_to_shared_album": "साझा एल्बम में जोड़ें",
"add_url": "URL जोड़ें",
"added_to_archive": "संग्रहीत कर दिया गया है",
"added_to_favorites": "पसंदीदा में जोड़ा गया",
"added_to_favorites_count": "पसंदीदा में {count, number} जोड़ा गया",
@ -41,9 +42,7 @@
"confirm_email_below": "पुष्टि करने के लिए नीचे \"{email}\" टाइप करें",
"confirm_reprocess_all_faces": "क्या आप वाकई सभी चेहरों को दोबारा संसाधित करना चाहते हैं? इससे नामित लोग भी साफ हो जायेंगे।",
"confirm_user_password_reset": "क्या आप वाकई {user} का पासवर्ड रीसेट करना चाहते हैं?",
"crontab_guru": "",
"disable_login": "लॉगिन अक्षम करें",
"disabled": "",
"duplicate_detection_job_description": "समान छवियों का पता लगाने के लिए संपत्तियों पर मशीन लर्निंग चलाएं। यह कार्यक्षमता स्मार्ट खोज पर निर्भर करती है",
"exclusion_pattern_description": "Exclusion पैटर्न आपको अपनी लाइब्रेरी को स्कैन करते समय फ़ाइलों और फ़ोल्डरों को अनदेखा करने देता है। यह उपयोगी है यदि आपके पास ऐसे फ़ोल्डर हैं जिनमें ऐसी फ़ाइलें हैं जिन्हें आप आयात नहीं करना चाहते हैं, जैसे RAW फ़ाइलें।",
"external_library_created_at": "बाहरी लाइब्रेरी ({date} को बनाई गई)",
@ -59,16 +58,9 @@
"image_prefer_embedded_preview_setting_description": "जब उपलब्ध हो तो RAW फ़ोटो में एम्बेडेड पूर्वावलोकन का उपयोग इमेज प्रोसेसिंग के इनपुट के रूप में करें। यह कुछ छवियों के लिए अधिक सटीक रंग उत्पन्न कर सकता है, लेकिन पूर्वावलोकन की गुणवत्ता कैमरे पर निर्भर करती है और छवि में अधिक संपीड़न कलाकृतियाँ हो सकती हैं।",
"image_prefer_wide_gamut": "विस्तृत सरगम को प्राथमिकता दें",
"image_prefer_wide_gamut_setting_description": "थंबनेल के लिए डिस्प्ले P3 का उपयोग करें। यह विस्तृत कलरस्पेस वाली छवियों की जीवंतता को बेहतर ढंग से संरक्षित करता है, लेकिन पुराने ब्राउज़र संस्करण वाले पुराने डिवाइस पर छवियां अलग-अलग दिखाई दे सकती हैं। रंग परिवर्तन से बचने के लिए sRGB छवियों को sRGB के रूप में रखा जाता है।",
"image_preview_format": "पूर्वावलोकन प्रारूप",
"image_preview_resolution": "पूर्वावलोकन रिज़ॉल्यूशन",
"image_preview_resolution_description": "एकल फ़ोटो देखते समय और मशीन लर्निंग के लिए उपयोग किया जाता है। उच्च रिज़ॉल्यूशन अधिक विवरण को संरक्षित कर सकता है लेकिन एन्कोड करने में अधिक समय लेता है, फ़ाइल आकार बड़ा होता है, और ऐप की प्रतिक्रियाशीलता कम हो सकती है।",
"image_quality": "गुणवत्ता",
"image_quality_description": "छवि गुणवत्ता 1-100 तक। उच्च गुणवत्ता बेहतर है लेकिन बड़ी फ़ाइलें बनाती है, यह विकल्प पूर्वावलोकन और थंबनेल छवियों को प्रभावित करता है।",
"image_settings": "छवि सेटिंग्स",
"image_settings_description": "उत्पन्न छवियों की गुणवत्ता और रिज़ॉल्यूशन प्रबंधित करें",
"image_thumbnail_format": "थंबनेल प्रारूप",
"image_thumbnail_resolution": "थंबनेल रिज़ॉल्यूशन",
"image_thumbnail_resolution_description": "फ़ोटो के समूह (मुख्य टाइमलाइन, एल्बम दृश्य, आदि) देखते समय उपयोग किया जाता है। उच्च रिज़ॉल्यूशन अधिक विवरण को संरक्षित कर सकता है लेकिन एन्कोड करने में अधिक समय लेता है, फ़ाइल आकार बड़ा होता है, और ऐप की प्रतिक्रियाशीलता कम हो सकती है।",
"job_concurrency": "{job} समरूपता",
"job_not_concurrency_safe": "यह कार्य (जॉब) समवर्ती-सुरक्षित नहीं है।",
"job_settings": "कार्य (जॉब) सेटिंग्स",
@ -77,9 +69,6 @@
"jobs_delayed": "{jobCount, plural, other {# विलंबित}}",
"jobs_failed": "{jobCount, plural, other {# असफल}}",
"library_created": "निर्मित संग्रह: {library}",
"library_cron_expression": "क्रॉन व्यंजक",
"library_cron_expression_description": "क्रॉन प्रारूप का उपयोग करके स्कैनिंग अंतराल सेट करें। अधिक जानकारी के लिए कृपया उदाहरण के लिए <link>Crontab Guru</link> देखें",
"library_cron_expression_presets": "क्रॉन व्यंजक प्रीसेट",
"library_deleted": "संग्रह हटा दिया गया",
"library_import_path_description": "आयात करने के लिए एक फ़ोल्डर निर्दिष्ट करें। सबफ़ोल्डर्स सहित इस फ़ोल्डर को छवियों और वीडियो के लिए स्कैन किया जाएगा।",
"library_scanning": "सामयिक स्कैनिंग",
@ -197,13 +186,10 @@
"refreshing_all_libraries": "सभी पुस्तकालयों को ताज़ा किया जा रहा है",
"registration": "व्यवस्थापक पंजीकरण",
"registration_description": "चूंकि आप सिस्टम पर पहले उपयोगकर्ता हैं, इसलिए आपको व्यवस्थापक के रूप में नियुक्त किया जाएगा और आप प्रशासनिक कार्यों के लिए जिम्मेदार होंगे, और अतिरिक्त उपयोगकर्ता आपके द्वारा बनाए जाएंगे।",
"removing_deleted_files": "ऑफ़लाइन फ़ाइलें हटाना",
"repair_all": "सभी की मरम्मत",
"require_password_change_on_login": "उपयोगकर्ता को पहले लॉगिन पर पासवर्ड बदलने की आवश्यकता है",
"reset_settings_to_default": "सेटिंग्स को डिफ़ॉल्ट पर रीसेट करें",
"reset_settings_to_recent_saved": "सेटिंग्स को हाल ही में सहेजी गई सेटिंग्स पर रीसेट करें",
"scanning_library_for_changed_files": "परिवर्तित फ़ाइलों के लिए लाइब्रेरी को स्कैन करना",
"scanning_library_for_new_files": "नई फ़ाइलों के लिए लाइब्रेरी को स्कैन करना",
"send_welcome_email": "स्वागत ईमेल भेजें",
"server_external_domain_settings": "बाहरी डोमेन",
"server_external_domain_settings_description": "सार्वजनिक साझा लिंक के लिए डोमेन, जिसमें http(s):// शामिल है",
@ -233,7 +219,6 @@
"these_files_matched_by_checksum": "इन फ़ाइलों का मिलान उनके चेकसम से किया जाता है",
"thumbnail_generation_job": "थंबनेल उत्पन्न करें",
"thumbnail_generation_job_description": "प्रत्येक संपत्ति के लिए बड़े, छोटे और धुंधले थंबनेल, साथ ही प्रत्येक व्यक्ति के लिए थंबनेल बनाएं",
"transcode_policy_description": "",
"transcoding_acceleration_api": "त्वरण एपीआई",
"transcoding_acceleration_api_description": "एपीआई जो ट्रांसकोडिंग को तेज करने के लिए आपके डिवाइस के साथ इंटरैक्ट करेगा।",
"transcoding_acceleration_nvenc": "NVENC (NVIDIA GPU की आवश्यकता है)",
@ -285,8 +270,6 @@
"transcoding_threads_description": "उच्च मान तेज़ एन्कोडिंग की ओर ले जाते हैं, लेकिन सक्रिय रहते हुए सर्वर के लिए अन्य कार्यों को संसाधित करने के लिए कम जगह छोड़ते हैं।",
"transcoding_tone_mapping": "टोन-मैपिंग",
"transcoding_tone_mapping_description": "एसडीआर में परिवर्तित होने पर एचडीआर वीडियो की उपस्थिति को संरक्षित करने का प्रयास।",
"transcoding_tone_mapping_npl": "टोन-मैपिंग एनपीएल",
"transcoding_tone_mapping_npl_description": "इस चमक के प्रदर्शन को सामान्य दिखाने के लिए रंगों को समायोजित किया जाएगा।",
"transcoding_transcode_policy": "ट्रांसकोड नीति",
"transcoding_transcode_policy_description": "किसी वीडियो को कब ट्रांसकोड किया जाना चाहिए, इसके लिए नीति।",
"transcoding_two_pass_encoding": "दो-पास एन्कोडिंग",
@ -349,7 +332,6 @@
"archive_or_unarchive_photo": "फ़ोटो को संग्रहीत या असंग्रहीत करें",
"archive_size": "पुरालेख आकार",
"archive_size_description": "डाउनलोड के लिए संग्रह आकार कॉन्फ़िगर करें (GiB में)",
"archived": "",
"are_these_the_same_person": "क्या ये वही व्यक्ति हैं?",
"are_you_sure_to_do_this": "क्या आप वास्तव में इसे करना चाहते हैं?",
"asset_added_to_album": "एल्बम में जोड़ा गया",
@ -382,10 +364,6 @@
"cannot_merge_people": "लोगों का विलय नहीं हो सकता",
"cannot_undo_this_action": "आप इस क्रिया को पूर्ववत नहीं कर सकते!",
"cannot_update_the_description": "विवरण अद्यतन नहीं किया जा सकता",
"cant_apply_changes": "",
"cant_get_faces": "",
"cant_search_people": "",
"cant_search_places": "",
"change_date": "बदलाव दिनांक",
"change_expiration_time": "समाप्ति समय बदलें",
"change_location": "स्थान बदलें",
@ -487,13 +465,6 @@
"duplicates": "डुप्लिकेट",
"duplicates_description": "प्रत्येक समूह को यह इंगित करके हल करें कि कौन सा, यदि कोई है, डुप्लिकेट है",
"duration": "अवधि",
"durations": {
"days": "",
"hours": "",
"minutes": "",
"months": "",
"years": ""
},
"edit": "संपादन करना",
"edit_album": "एल्बम संपादित करें",
"edit_avatar": "अवतार को एडिट करें",
@ -513,8 +484,6 @@
"edited": "संपादित",
"editor": "",
"email": "ईमेल",
"empty": "",
"empty_album": "",
"empty_trash": "कूड़ेदान खाली करें",
"empty_trash_confirmation": "क्या आपको यकीन है कि आप कचरा खाली करना चाहते हैं? यह इमिच से स्थायी रूप से कचरा में सभी संपत्तियों को हटा देगा।\nआप इस कार्रवाई को नहीं रोक सकते!",
"enable": "सक्षम",
@ -564,8 +533,6 @@
"unable_to_change_favorite": "संपत्ति के लिए पसंदीदा बदलने में असमर्थ",
"unable_to_change_location": "स्थान बदलने में असमर्थ",
"unable_to_change_password": "पासवर्ड बदलने में असमर्थ",
"unable_to_check_item": "",
"unable_to_check_items": "",
"unable_to_complete_oauth_login": "OAuth लॉगिन पूर्ण करने में असमर्थ",
"unable_to_connect": "कनेक्ट करने में असमर्थ",
"unable_to_connect_to_server": "सर्वर से कनेक्ट करने में असमर्थ है",
@ -604,12 +571,10 @@
"unable_to_remove_album_users": "उपयोगकर्ताओं को एल्बम से निकालने में असमर्थ",
"unable_to_remove_api_key": "API कुंजी निकालने में असमर्थ",
"unable_to_remove_assets_from_shared_link": "साझा लिंक से संपत्तियों को निकालने में असमर्थ",
"unable_to_remove_comment": "",
"unable_to_remove_deleted_assets": "ऑफ़लाइन फ़ाइलें निकालने में असमर्थ",
"unable_to_remove_library": "लाइब्रेरी हटाने में असमर्थ",
"unable_to_remove_partner": "पार्टनर को हटाने में असमर्थ",
"unable_to_remove_reaction": "प्रतिक्रिया निकालने में असमर्थ",
"unable_to_remove_user": "",
"unable_to_repair_items": "वस्तुओं की मरम्मत करने में असमर्थ",
"unable_to_reset_password": "पासवर्ड रीसेट करने में असमर्थ",
"unable_to_resolve_duplicate": "डुप्लिकेट का समाधान करने में असमर्थ",
@ -638,10 +603,6 @@
"unable_to_update_user": "उपयोगकर्ता को अद्यतन करने में असमर्थ",
"unable_to_upload_file": "फाइल अपलोड करने में असमर्थ"
},
"every_day_at_onepm": "",
"every_night_at_midnight": "",
"every_night_at_twoam": "",
"every_six_hours": "",
"exif": "एक्सिफ",
"exit_slideshow": "स्लाइड शो से बाहर निकलें",
"expand_all": "सभी का विस्तार",
@ -654,29 +615,23 @@
"external": "बाहरी",
"external_libraries": "बाहरी पुस्तकालय",
"face_unassigned": "सौंपे नहीं गए",
"failed_to_get_people": "",
"favorite": "पसंदीदा",
"favorite_or_unfavorite_photo": "पसंदीदा या नापसंद फोटो",
"favorites": "पसंदीदा",
"feature": "",
"feature_photo_updated": "फ़ीचर फ़ोटो अपडेट किया गया",
"featurecollection": "",
"file_name": "फ़ाइल का नाम",
"file_name_or_extension": "फ़ाइल का नाम या एक्सटेंशन",
"filename": "फ़ाइल का नाम",
"files": "",
"filetype": "फाइल का प्रकार",
"filter_people": "लोगों को फ़िल्टर करें",
"find_them_fast": "खोज के साथ नाम से उन्हें तेजी से ढूंढें",
"fix_incorrect_match": "ग़लत मिलान ठीक करें",
"force_re-scan_library_files": "सभी लाइब्रेरी फ़ाइलों को बलपूर्वक पुनः स्कैन करें",
"forward": "आगे",
"general": "सामान्य",
"get_help": "मदद लें",
"getting_started": "शुरू करना",
"go_back": "वापस जाओ",
"go_to_search": "खोज पर जाएँ",
"go_to_share_page": "शेयर पेज पर जाएं",
"group_albums_by": "इनके द्वारा समूह एल्बम..।",
"group_no": "कोई समूहीकरण नहीं",
"group_owner": "स्वामी द्वारा समूह",
@ -690,7 +645,6 @@
"host": "मेज़बान",
"hour": "घंटा",
"image": "छवि",
"img": "",
"immich_logo": "Immich लोगो",
"immich_web_interface": "इमिच वेब इंटरफ़ेस",
"import_from_json": "JSON से आयात करें",
@ -709,7 +663,6 @@
},
"invite_people": "लोगो को निमंत्रण भेजो",
"invite_to_album": "एल्बम के लिए आमंत्रित करें",
"job_settings_description": "",
"jobs": "नौकरियां",
"keep": "रखना",
"keep_all": "सभी रखना",
@ -820,7 +773,6 @@
"onboarding_welcome_description": "आइए कुछ सामान्य सेटिंग्स के साथ अपना इंस्टेंस सेट अप करें।",
"online": "ऑनलाइन",
"only_favorites": "केवल पसंदीदा",
"only_refreshes_modified_files": "केवल संशोधित फ़ाइलों को ताज़ा करता है",
"open_in_openstreetmap": "OpenStreetMap में खोलें",
"open_the_search_filters": "खोज फ़िल्टर खोलें",
"options": "विकल्प",
@ -854,7 +806,6 @@
"pending": "लंबित",
"people": "लोग",
"people_sidebar_description": "साइडबार में लोगों के लिए एक लिंक प्रदर्शित करें",
"perform_library_tasks": "",
"permanent_deletion_warning": "स्थायी विलोपन चेतावनी",
"permanent_deletion_warning_setting_description": "संपत्तियों को स्थायी रूप से हटाते समय एक चेतावनी दिखाएं",
"permanently_delete": "स्थायी रूप से हटाना",
@ -871,7 +822,6 @@
"play_memories": "यादें खेलें",
"play_motion_photo": "मोशन फ़ोटो चलाएं",
"play_or_pause_video": "वीडियो चलाएं या रोकें",
"point": "",
"port": "पत्तन",
"preset": "प्रीसेट",
"preview": "पूर्व दर्शन",
@ -913,8 +863,6 @@
"purchase_server_description_2": "समर्थक स्थिति",
"purchase_server_title": "सर्वर",
"purchase_settings_server_activated": "सर्वर उत्पाद कुंजी व्यवस्थापक द्वारा प्रबंधित की जाती है",
"range": "",
"raw": "",
"reaction_options": "प्रतिक्रिया विकल्प",
"read_changelog": "चेंजलॉग पढ़ें",
"reassign": "पुनः असाइन",
@ -950,7 +898,6 @@
"reset": "रीसेट",
"reset_password": "पासवर्ड रीसेट",
"reset_people_visibility": "लोगों की दृश्यता रीसेट करें",
"reset_settings_to_default": "",
"reset_to_default": "वितथ पर ले जाएं",
"resolve_duplicates": "डुप्लिकेट का समाधान करें",
"resolved_all_duplicates": "सभी डुप्लिकेट का समाधान किया गया",
@ -970,8 +917,6 @@
"saved_settings": "सहेजी गई सेटिंग्स",
"say_something": "कुछ कहें",
"scan_all_libraries": "सभी पुस्तकालयों को स्कैन करें",
"scan_all_library_files": "सभी लाइब्रेरी फ़ाइलों को पुनः स्कैन करें",
"scan_new_library_files": "नई लाइब्रेरी फ़ाइलें स्कैन करें",
"scan_settings": "सेटिंग्स स्कैन करें",
"scanning_for_album": "एल्बम के लिए स्कैन किया जा रहा है..।",
"search": "खोज",
@ -1009,7 +954,6 @@
"selected": "चयनित",
"send_message": "मेसेज भेजें",
"send_welcome_email": "स्वागत ईमेल भेजें",
"server": "",
"server_offline": "सर्वर ऑफ़लाइन",
"server_online": "सर्वर ऑनलाइन",
"server_stats": "सर्वर आँकड़े",
@ -1094,7 +1038,6 @@
"to_trash": "कचरा",
"toggle_settings": "सेटिंग्स टॉगल करें",
"toggle_theme": "थीम टॉगल करें",
"toggle_visibility": "",
"total_usage": "कुल उपयोग",
"trash": "कचरा",
"trash_all": "सब कचरा",
@ -1102,11 +1045,9 @@
"trash_no_results_message": "ट्रैश की गई फ़ोटो और वीडियो यहां दिखाई देंगे।",
"type": "प्रकार",
"unarchive": "संग्रह से निकालें",
"unarchived": "",
"unfavorite": "नापसंद करें",
"unhide_person": "व्यक्ति को उजागर करें",
"unknown": "अज्ञात",
"unknown_album": "",
"unknown_year": "अज्ञात वर्ष",
"unlimited": "असीमित",
"unlink_oauth": "OAuth को अनलिंक करें",
@ -1155,7 +1096,6 @@
"view_next_asset": "अगली संपत्ति देखें",
"view_previous_asset": "पिछली संपत्ति देखें",
"view_stack": "ढेर देखें",
"viewer": "",
"waiting": "इंतज़ार में",
"warning": "चेतावनी",
"week": "सप्ताह",

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