Compare commits
75 Commits
v1.122.2
...
feat/docke
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
23373f39cb | ||
|
|
34ce61d03a | ||
|
|
0250a7a23a | ||
|
|
b91f39d1af | ||
|
|
139090715e | ||
|
|
05cea0fc69 | ||
|
|
2255f3e966 | ||
|
|
2be1cb7de2 | ||
|
|
227eb4b0a6 | ||
|
|
23461e98fb | ||
|
|
ef0070c3fd | ||
|
|
6b08e82cf7 | ||
|
|
b88f98bf66 | ||
|
|
c3be74c450 | ||
|
|
4bc2aa5451 | ||
|
|
6080e6e827 | ||
|
|
d5906c2efe | ||
|
|
b3821c50d7 | ||
|
|
1cec3af98c | ||
|
|
da70a1e457 | ||
|
|
a14735846c | ||
|
|
79a780e8d9 | ||
|
|
556c59f12f | ||
|
|
8e724c3c27 | ||
|
|
207bb527bb | ||
|
|
b034cb1861 | ||
|
|
6a855f6331 | ||
|
|
a03f4f5610 | ||
|
|
e0fc8734bf | ||
|
|
0d060ebb32 | ||
|
|
f58b2572e6 | ||
|
|
fd34a914a6 | ||
|
|
b81470a383 | ||
|
|
6f3b6365e5 | ||
|
|
2948b9ed29 | ||
|
|
a2dd9622a3 | ||
|
|
c7b44bef81 | ||
|
|
95f300f8d2 | ||
|
|
9503bf479b | ||
|
|
364b717fde | ||
|
|
f180ae70f9 | ||
|
|
4edeed9739 | ||
|
|
e52774553f | ||
|
|
12e55f5bf0 | ||
|
|
8945a5d862 | ||
|
|
6b0f9ec46c | ||
|
|
fe554c3a5b | ||
|
|
dd9feeec45 | ||
|
|
cc111a1fcb | ||
|
|
b5022d80d6 | ||
|
|
525840b040 | ||
|
|
bccf2f60b2 | ||
|
|
39732f3371 | ||
|
|
40a0bf6ad5 | ||
|
|
6abe696d0b | ||
|
|
59d6af54c7 | ||
|
|
58d63d9f1c | ||
|
|
11be85feb3 | ||
|
|
c52f1bae81 | ||
|
|
0c03753642 | ||
|
|
71b48b11e6 | ||
|
|
3053d84e49 | ||
|
|
e40c7c51ee | ||
|
|
11f585d0ad | ||
|
|
5814a1b223 | ||
|
|
bcc438eafb | ||
|
|
7cae25c28b | ||
|
|
f6909a3b11 | ||
|
|
70b4647a21 | ||
|
|
345f918784 | ||
|
|
9eff1c4b34 | ||
|
|
25ca3b1124 | ||
|
|
60c783bbe9 | ||
|
|
1ba622adc9 | ||
|
|
e4b76e8efe |
@@ -1,2 +1,2 @@
|
|||||||
ARG BASEIMAGE=mcr.microsoft.com/devcontainers/typescript-node:22@sha256:dc2c3654370fe92a55daeefe9d2d95839d85bdc1f68f7fd4ab86621f49e5818a
|
ARG BASEIMAGE=mcr.microsoft.com/devcontainers/typescript-node:22@sha256:9791f4aa527774bc370c6bd2f6705ce5a686f1e6f204badd8dfaacce28c631ae
|
||||||
FROM ${BASEIMAGE}
|
FROM ${BASEIMAGE}
|
||||||
|
|||||||
4
.github/workflows/cli.yml
vendored
4
.github/workflows/cli.yml
vendored
@@ -59,7 +59,7 @@ jobs:
|
|||||||
uses: docker/setup-qemu-action@v3.2.0
|
uses: docker/setup-qemu-action@v3.2.0
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- 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
|
- name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
@@ -88,7 +88,7 @@ jobs:
|
|||||||
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
|
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
|
||||||
|
|
||||||
- name: Build and push image
|
- name: Build and push image
|
||||||
uses: docker/build-push-action@v6.9.0
|
uses: docker/build-push-action@v6.10.0
|
||||||
with:
|
with:
|
||||||
file: cli/Dockerfile
|
file: cli/Dockerfile
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
|
|||||||
8
.github/workflows/docker.yml
vendored
8
.github/workflows/docker.yml
vendored
@@ -125,7 +125,7 @@ jobs:
|
|||||||
uses: docker/setup-qemu-action@v3.2.0
|
uses: docker/setup-qemu-action@v3.2.0
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- 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
|
- name: Login to Docker Hub
|
||||||
# Only push to Docker Hub when making a release
|
# Only push to Docker Hub when making a release
|
||||||
@@ -174,7 +174,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Build and push image
|
- name: Build and push image
|
||||||
uses: docker/build-push-action@v6.9.0
|
uses: docker/build-push-action@v6.10.0
|
||||||
with:
|
with:
|
||||||
context: ${{ env.context }}
|
context: ${{ env.context }}
|
||||||
file: ${{ env.file }}
|
file: ${{ env.file }}
|
||||||
@@ -216,7 +216,7 @@ jobs:
|
|||||||
uses: docker/setup-qemu-action@v3.2.0
|
uses: docker/setup-qemu-action@v3.2.0
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- 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
|
- name: Login to Docker Hub
|
||||||
# Only push to Docker Hub when making a release
|
# Only push to Docker Hub when making a release
|
||||||
@@ -265,7 +265,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Build and push image
|
- name: Build and push image
|
||||||
uses: docker/build-push-action@v6.9.0
|
uses: docker/build-push-action@v6.10.0
|
||||||
with:
|
with:
|
||||||
context: ${{ env.context }}
|
context: ${{ env.context }}
|
||||||
file: ${{ env.file }}
|
file: ${{ env.file }}
|
||||||
|
|||||||
1
.github/workflows/pr-label-validation.yml
vendored
1
.github/workflows/pr-label-validation.yml
vendored
@@ -19,3 +19,4 @@ jobs:
|
|||||||
use_regex: true
|
use_regex: true
|
||||||
labels: "changelog:.*"
|
labels: "changelog:.*"
|
||||||
add_comment: true
|
add_comment: true
|
||||||
|
message: "Label error. Requires {{errorString}} {{count}} of: {{ provided }}. Found: {{ applied }}. A maintainer will add the required label."
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
22.11.0
|
22.12.0
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM node:22.11.0-alpine3.20@sha256:b64ced2e7cd0a4816699fe308ce6e8a08ccba463c757c00c14cd372e3d2c763e AS core
|
FROM node:22.12.0-alpine3.20@sha256:96cc8323e25c8cc6ddcb8b965e135cfd57846e8003ec0d7bcec16c5fd5f6d39f AS core
|
||||||
|
|
||||||
WORKDIR /usr/src/open-api/typescript-sdk
|
WORKDIR /usr/src/open-api/typescript-sdk
|
||||||
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./
|
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./
|
||||||
|
|||||||
125
cli/package-lock.json
generated
125
cli/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "@immich/cli",
|
"name": "@immich/cli",
|
||||||
"version": "2.2.35",
|
"version": "2.2.37",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "@immich/cli",
|
"name": "@immich/cli",
|
||||||
"version": "2.2.35",
|
"version": "2.2.37",
|
||||||
"license": "GNU Affero General Public License version 3",
|
"license": "GNU Affero General Public License version 3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fast-glob": "^3.3.2",
|
"fast-glob": "^3.3.2",
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
"@types/cli-progress": "^3.11.0",
|
"@types/cli-progress": "^3.11.0",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/mock-fs": "^4.13.1",
|
"@types/mock-fs": "^4.13.1",
|
||||||
"@types/node": "^22.9.0",
|
"@types/node": "^22.10.2",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
||||||
"@typescript-eslint/parser": "^8.15.0",
|
"@typescript-eslint/parser": "^8.15.0",
|
||||||
"@vitest/coverage-v8": "^2.0.5",
|
"@vitest/coverage-v8": "^2.0.5",
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
"eslint": "^9.14.0",
|
"eslint": "^9.14.0",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
"eslint-plugin-prettier": "^5.1.3",
|
||||||
"eslint-plugin-unicorn": "^55.0.0",
|
"eslint-plugin-unicorn": "^56.0.1",
|
||||||
"globals": "^15.9.0",
|
"globals": "^15.9.0",
|
||||||
"mock-fs": "^5.2.0",
|
"mock-fs": "^5.2.0",
|
||||||
"prettier": "^3.2.5",
|
"prettier": "^3.2.5",
|
||||||
@@ -52,14 +52,14 @@
|
|||||||
},
|
},
|
||||||
"../open-api/typescript-sdk": {
|
"../open-api/typescript-sdk": {
|
||||||
"name": "@immich/sdk",
|
"name": "@immich/sdk",
|
||||||
"version": "1.122.2",
|
"version": "1.123.0",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "GNU Affero General Public License version 3",
|
"license": "GNU Affero General Public License version 3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@oazapfts/runtime": "^1.0.2"
|
"@oazapfts/runtime": "^1.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^22.9.0",
|
"@types/node": "^22.10.2",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1397,13 +1397,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "22.9.0",
|
"version": "22.10.2",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz",
|
||||||
"integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==",
|
"integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~6.19.8"
|
"undici-types": "~6.20.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/normalize-package-data": {
|
"node_modules/@types/normalize-package-data": {
|
||||||
@@ -1876,9 +1876,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/browserslist": {
|
"node_modules/browserslist": {
|
||||||
"version": "4.23.0",
|
"version": "4.24.3",
|
||||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz",
|
||||||
"integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
|
"integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1894,11 +1894,12 @@
|
|||||||
"url": "https://github.com/sponsors/ai"
|
"url": "https://github.com/sponsors/ai"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"caniuse-lite": "^1.0.30001587",
|
"caniuse-lite": "^1.0.30001688",
|
||||||
"electron-to-chromium": "^1.4.668",
|
"electron-to-chromium": "^1.5.73",
|
||||||
"node-releases": "^2.0.14",
|
"node-releases": "^2.0.19",
|
||||||
"update-browserslist-db": "^1.0.13"
|
"update-browserslist-db": "^1.1.1"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"browserslist": "cli.js"
|
"browserslist": "cli.js"
|
||||||
@@ -1949,9 +1950,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001597",
|
"version": "1.0.30001689",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001689.tgz",
|
||||||
"integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==",
|
"integrity": "sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1966,7 +1967,8 @@
|
|||||||
"type": "github",
|
"type": "github",
|
||||||
"url": "https://github.com/sponsors/ai"
|
"url": "https://github.com/sponsors/ai"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"license": "CC-BY-4.0"
|
||||||
},
|
},
|
||||||
"node_modules/chai": {
|
"node_modules/chai": {
|
||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
@@ -2095,12 +2097,13 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/core-js-compat": {
|
"node_modules/core-js-compat": {
|
||||||
"version": "3.37.1",
|
"version": "3.39.0",
|
||||||
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz",
|
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz",
|
||||||
"integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==",
|
"integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"browserslist": "^4.23.0"
|
"browserslist": "^4.24.2"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -2163,10 +2166,11 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.4.705",
|
"version": "1.5.74",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.705.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.74.tgz",
|
||||||
"integrity": "sha512-LKqhpwJCLhYId2VVwEzFXWrqQI5n5zBppz1W9ehhTlfYU8CUUW6kClbN8LHF/v7flMgRdETS772nqywJ+ckVAw==",
|
"integrity": "sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/emoji-regex": {
|
"node_modules/emoji-regex": {
|
||||||
"version": "8.0.0",
|
"version": "8.0.0",
|
||||||
@@ -2230,10 +2234,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/escalade": {
|
"node_modules/escalade": {
|
||||||
"version": "3.1.2",
|
"version": "3.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
||||||
"integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
|
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
@@ -2355,19 +2360,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-unicorn": {
|
"node_modules/eslint-plugin-unicorn": {
|
||||||
"version": "55.0.0",
|
"version": "56.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-55.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.1.tgz",
|
||||||
"integrity": "sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==",
|
"integrity": "sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-validator-identifier": "^7.24.5",
|
"@babel/helper-validator-identifier": "^7.24.7",
|
||||||
"@eslint-community/eslint-utils": "^4.4.0",
|
"@eslint-community/eslint-utils": "^4.4.0",
|
||||||
"ci-info": "^4.0.0",
|
"ci-info": "^4.0.0",
|
||||||
"clean-regexp": "^1.0.0",
|
"clean-regexp": "^1.0.0",
|
||||||
"core-js-compat": "^3.37.0",
|
"core-js-compat": "^3.38.1",
|
||||||
"esquery": "^1.5.0",
|
"esquery": "^1.6.0",
|
||||||
"globals": "^15.7.0",
|
"globals": "^15.9.0",
|
||||||
"indent-string": "^4.0.0",
|
"indent-string": "^4.0.0",
|
||||||
"is-builtin-module": "^3.2.1",
|
"is-builtin-module": "^3.2.1",
|
||||||
"jsesc": "^3.0.2",
|
"jsesc": "^3.0.2",
|
||||||
@@ -2375,7 +2380,7 @@
|
|||||||
"read-pkg-up": "^7.0.1",
|
"read-pkg-up": "^7.0.1",
|
||||||
"regexp-tree": "^0.1.27",
|
"regexp-tree": "^0.1.27",
|
||||||
"regjsparser": "^0.10.0",
|
"regjsparser": "^0.10.0",
|
||||||
"semver": "^7.6.1",
|
"semver": "^7.6.3",
|
||||||
"strip-indent": "^3.0.0"
|
"strip-indent": "^3.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -2503,10 +2508,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esquery": {
|
"node_modules/esquery": {
|
||||||
"version": "1.5.0",
|
"version": "1.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
|
||||||
"integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
|
"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"estraverse": "^5.1.0"
|
"estraverse": "^5.1.0"
|
||||||
},
|
},
|
||||||
@@ -3253,10 +3259,11 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/node-releases": {
|
"node_modules/node-releases": {
|
||||||
"version": "2.0.14",
|
"version": "2.0.19",
|
||||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
|
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
|
||||||
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
|
"integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/normalize-package-data": {
|
"node_modules/normalize-package-data": {
|
||||||
"version": "2.5.0",
|
"version": "2.5.0",
|
||||||
@@ -3792,10 +3799,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "7.6.2",
|
"version": "7.6.3",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
|
||||||
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
|
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "ISC",
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
},
|
},
|
||||||
@@ -4156,16 +4164,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/undici-types": {
|
"node_modules/undici-types": {
|
||||||
"version": "6.19.8",
|
"version": "6.20.0",
|
||||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
|
||||||
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
|
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/update-browserslist-db": {
|
"node_modules/update-browserslist-db": {
|
||||||
"version": "1.0.13",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
|
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
|
||||||
"integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
|
"integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -4181,9 +4189,10 @@
|
|||||||
"url": "https://github.com/sponsors/ai"
|
"url": "https://github.com/sponsors/ai"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"escalade": "^3.1.1",
|
"escalade": "^3.2.0",
|
||||||
"picocolors": "^1.0.0"
|
"picocolors": "^1.1.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"update-browserslist-db": "cli.js"
|
"update-browserslist-db": "cli.js"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@immich/cli",
|
"name": "@immich/cli",
|
||||||
"version": "2.2.35",
|
"version": "2.2.37",
|
||||||
"description": "Command Line Interface (CLI) for Immich",
|
"description": "Command Line Interface (CLI) for Immich",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": "./dist/index.js",
|
"exports": "./dist/index.js",
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
"@types/cli-progress": "^3.11.0",
|
"@types/cli-progress": "^3.11.0",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/mock-fs": "^4.13.1",
|
"@types/mock-fs": "^4.13.1",
|
||||||
"@types/node": "^22.9.0",
|
"@types/node": "^22.10.2",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
||||||
"@typescript-eslint/parser": "^8.15.0",
|
"@typescript-eslint/parser": "^8.15.0",
|
||||||
"@vitest/coverage-v8": "^2.0.5",
|
"@vitest/coverage-v8": "^2.0.5",
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
"eslint": "^9.14.0",
|
"eslint": "^9.14.0",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
"eslint-plugin-prettier": "^5.1.3",
|
||||||
"eslint-plugin-unicorn": "^55.0.0",
|
"eslint-plugin-unicorn": "^56.0.1",
|
||||||
"globals": "^15.9.0",
|
"globals": "^15.9.0",
|
||||||
"mock-fs": "^5.2.0",
|
"mock-fs": "^5.2.0",
|
||||||
"prettier": "^3.2.5",
|
"prettier": "^3.2.5",
|
||||||
@@ -67,6 +67,6 @@
|
|||||||
"lodash-es": "^4.17.21"
|
"lodash-es": "^4.17.21"
|
||||||
},
|
},
|
||||||
"volta": {
|
"volta": {
|
||||||
"node": "22.11.0"
|
"node": "22.12.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,37 +2,37 @@
|
|||||||
# Manual edits may be lost in future updates.
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
||||||
version = "4.46.0"
|
version = "4.48.0"
|
||||||
constraints = "4.46.0"
|
constraints = "4.48.0"
|
||||||
hashes = [
|
hashes = [
|
||||||
"h1:3U4N3bbMacXTAdyaEwT305kETMETh1jZmGApmN6gdyE=",
|
"h1:0IKUOR32xEI1suS5QCOjfxjQ2mRd058btXk8hVnaOJ4=",
|
||||||
"h1:3fhZhGNgtS9ugcZ2CIH6kk8LzN6yPxqOdkDUZqkP3+w=",
|
"h1:3YG6vu/bFPcYOeLdSUZhiAWiWKaFlOAR34z2o8cbE9k=",
|
||||||
"h1:JWluJxBRSr8GVUhWVv83xse9SmbpwCLctCDddMXUnVk=",
|
"h1:FvGy06/i9AMtVkSIUnCrXNv5xF6jqBqMH8oPVLyeeAg=",
|
||||||
"h1:KDHwakGt+3iBKXaoALCCAolPaJgpEHbkh3BfjnpuqoM=",
|
"h1:GXH7nIF0ocMqebbA41+fSGIYfM+VAM/PvTe7fJr8UrQ=",
|
||||||
"h1:QFFZshAvwr9L5TQmsNQC6/sDqokk5pjbP8Ae4BQqMLQ=",
|
"h1:H0ll0ph4404vFE868W3qJ3zhOyy4jbXrOMtdkViEZsU=",
|
||||||
"h1:Qdi+vXwzDNii7ytSaOQtnlqhjZ3ZlRoUkFoi6CD2COI=",
|
"h1:SX42e3k73IcFcrQlZ2e/Veqt2tvCMy6fwlo5yNUktCE=",
|
||||||
"h1:TPcJXcVb/+C91hUuu8CEn98QUoNgLtnHfd4sgAOV+5k=",
|
"h1:Uu/gjBc99GefdPdSrlBwU75DWU0ZcwGcrd3ZFyTeL0s=",
|
||||||
"h1:WDy5wiNroXaCnw+r8rJnCP+J1RVsm2Qu3AOZ/iV4lLo=",
|
"h1:VZw0uN41PWRmNlhg7Ze0Eh7cdoklX1oZbfNAXNYnU1I=",
|
||||||
"h1:hMuL+dwHj3JbePqYcDrn/ZQN9R0WzeJX0AIDJ02Iteo=",
|
"h1:cMdV7ql6PsFa4qtb0EoZSctvTaTqV7yplBSDwcLRCLc=",
|
||||||
"h1:hQKCaUEARzJKbFt1CePP06E/+CiHWe/H6lc1AwK7y6w=",
|
"h1:ePGvSurmlqOCkD761vkhRmz7bsK36/EnIvx2Xy8TdXo=",
|
||||||
"h1:l4DQ3WXmSzR/GBel3m2CRKWtaziVjBoxvUgL63t1GK0=",
|
"h1:fOYufF+1bzw2N3aHLpkLB6E8VbZ4ysXDODYQOlwhwd4=",
|
||||||
"h1:nN9uVSLyrb/DjfZl6rPtCq5j0TX+6WypzNDexdzCQ08=",
|
"h1:qe8RbnWq0T4xhqjn9QcbO6YW5YDx47P+eJ0NUMIfwCc=",
|
||||||
"h1:rAX7njl6lKT9XIKMk6pLjVi7u/42wafRolWWgMHMkI0=",
|
"h1:tRD2av6PafHDP/b9jDQsG5/aX+lHeKxpbIEHYYLBVUc=",
|
||||||
"h1:t2IQYNu8YNykqYlEB+TTX+XpUd5z2flwGw8km9UgbnQ=",
|
"h1:zyl6Gvx/CFpwYW8pFFDesfO8Lxv+a6CopyAsIMhp54s=",
|
||||||
"zh:2ee426ef3389022db0026792fdc4f2980dcf2600e31adf5a31b4bddfa8d68343",
|
"zh:04c0a49c2b23140b2f21cfd0d52f9798d70d3bdae3831613e156aabe519bbc6c",
|
||||||
"zh:2f993edb23df55dc1c18150fa187d80aa7d87e6439698ee34b6a6aad23ac2dd7",
|
"zh:185f21b4834ba63e8df1f84aa34639d8a7e126429a4007bb5f9ad82f2602a997",
|
||||||
"zh:3d6601333975e55979b1b454e50ff9a482ce4e0269dd6c72a50202163a8f4463",
|
"zh:234724f52cb4c0c3f7313d3b2697caef26d921d134f26ae14801e7afac522f7b",
|
||||||
"zh:4e5f48dce22f7a6d618018d65d1d443bb718defa23f514d5c6385860541fbe79",
|
"zh:38a56fcd1b3e40706af995611c977816543b53f1e55fe2720944aae2b6828fcb",
|
||||||
"zh:5ebf5aea960fc30de381ffd6db20876d249673cf938fe67f1dfb6b9caa1db418",
|
"zh:419938f5430fc78eff933470aefbf94a460a478f867cf7761a3dea177b4eb153",
|
||||||
"zh:80ed3fb901141f53b4b56ddb7eea5f2e0c0830d501387539d2c2b8e0cc7e587a",
|
"zh:4b46d92bfde1deab7de7ba1a6bbf4ba7c711e4fd925341ddf09d4cc28dae03d8",
|
||||||
|
"zh:537acd4a31c752f1bae305ba7190f60b71ad1a459f22d464f3f914336c9e919f",
|
||||||
|
"zh:5ff36b005aad07697dd0b30d4f0c35dbcdc30dc52b41722552060792fa87ce04",
|
||||||
|
"zh:635c5ee419daea098060f794d9d7d999275301181e49562c4e4c08f043076937",
|
||||||
|
"zh:859277c330d61f91abe9e799389467ca11b77131bf34bedbef52f8da68b2bb49",
|
||||||
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
||||||
"zh:9aeae8b3be4a577ced46987fd9159262c5b4c54a510f66592fbcdb40fef55b10",
|
"zh:927dfdb8d9aef37ead03fceaa29e87ba076a3dd24e19b6cefdbb0efe9987ff8c",
|
||||||
"zh:a0479ef2d308c4a7894f1fe77467cd07e04c7b40d281088f4f204af1bdf94ac6",
|
"zh:bbf2226f07f6b1e721877328e69ded4b64f9c196634d2e2429e3cfabbe41e532",
|
||||||
"zh:a2bdc0c25130665af0b9559942b9813a1ba4889513e7185d4abc9c02e9bb99bd",
|
"zh:daeed873d6f38604232b46ee4a5830c85d195b967f8dbcafe2fcffa98daf9c5f",
|
||||||
"zh:b10be9755fe80395ced6f0bbda38b8c8681714cf1eca1d895be239c75c2ffc2a",
|
"zh:f8f2fc4646c1ba44085612fa7f4dbb7cbcead43b4e661f2b98ddfb4f68afc758",
|
||||||
"zh:ba3d55e722d9f48646574ce7c448f0084fe21fa884b5f8b6d6146a82a99c4baa",
|
|
||||||
"zh:ec1fd0ecaedc787a77d5342b51ae8dea8362a67f1e19123f6521a0e8e012d9e8",
|
|
||||||
"zh:ed49590e69faef14550179f965b4451b31415b8f6be6d33427ad48f65c76b6cf",
|
|
||||||
"zh:f4baa3a2dac719ad20dcfa525bc3f737ad95650b8d0de0c648dc9a87f993b2c3",
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
cloudflare = {
|
cloudflare = {
|
||||||
source = "cloudflare/cloudflare"
|
source = "cloudflare/cloudflare"
|
||||||
version = "4.46.0"
|
version = "4.48.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,37 +2,37 @@
|
|||||||
# Manual edits may be lost in future updates.
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
||||||
version = "4.46.0"
|
version = "4.48.0"
|
||||||
constraints = "4.46.0"
|
constraints = "4.48.0"
|
||||||
hashes = [
|
hashes = [
|
||||||
"h1:3U4N3bbMacXTAdyaEwT305kETMETh1jZmGApmN6gdyE=",
|
"h1:0IKUOR32xEI1suS5QCOjfxjQ2mRd058btXk8hVnaOJ4=",
|
||||||
"h1:3fhZhGNgtS9ugcZ2CIH6kk8LzN6yPxqOdkDUZqkP3+w=",
|
"h1:3YG6vu/bFPcYOeLdSUZhiAWiWKaFlOAR34z2o8cbE9k=",
|
||||||
"h1:JWluJxBRSr8GVUhWVv83xse9SmbpwCLctCDddMXUnVk=",
|
"h1:FvGy06/i9AMtVkSIUnCrXNv5xF6jqBqMH8oPVLyeeAg=",
|
||||||
"h1:KDHwakGt+3iBKXaoALCCAolPaJgpEHbkh3BfjnpuqoM=",
|
"h1:GXH7nIF0ocMqebbA41+fSGIYfM+VAM/PvTe7fJr8UrQ=",
|
||||||
"h1:QFFZshAvwr9L5TQmsNQC6/sDqokk5pjbP8Ae4BQqMLQ=",
|
"h1:H0ll0ph4404vFE868W3qJ3zhOyy4jbXrOMtdkViEZsU=",
|
||||||
"h1:Qdi+vXwzDNii7ytSaOQtnlqhjZ3ZlRoUkFoi6CD2COI=",
|
"h1:SX42e3k73IcFcrQlZ2e/Veqt2tvCMy6fwlo5yNUktCE=",
|
||||||
"h1:TPcJXcVb/+C91hUuu8CEn98QUoNgLtnHfd4sgAOV+5k=",
|
"h1:Uu/gjBc99GefdPdSrlBwU75DWU0ZcwGcrd3ZFyTeL0s=",
|
||||||
"h1:WDy5wiNroXaCnw+r8rJnCP+J1RVsm2Qu3AOZ/iV4lLo=",
|
"h1:VZw0uN41PWRmNlhg7Ze0Eh7cdoklX1oZbfNAXNYnU1I=",
|
||||||
"h1:hMuL+dwHj3JbePqYcDrn/ZQN9R0WzeJX0AIDJ02Iteo=",
|
"h1:cMdV7ql6PsFa4qtb0EoZSctvTaTqV7yplBSDwcLRCLc=",
|
||||||
"h1:hQKCaUEARzJKbFt1CePP06E/+CiHWe/H6lc1AwK7y6w=",
|
"h1:ePGvSurmlqOCkD761vkhRmz7bsK36/EnIvx2Xy8TdXo=",
|
||||||
"h1:l4DQ3WXmSzR/GBel3m2CRKWtaziVjBoxvUgL63t1GK0=",
|
"h1:fOYufF+1bzw2N3aHLpkLB6E8VbZ4ysXDODYQOlwhwd4=",
|
||||||
"h1:nN9uVSLyrb/DjfZl6rPtCq5j0TX+6WypzNDexdzCQ08=",
|
"h1:qe8RbnWq0T4xhqjn9QcbO6YW5YDx47P+eJ0NUMIfwCc=",
|
||||||
"h1:rAX7njl6lKT9XIKMk6pLjVi7u/42wafRolWWgMHMkI0=",
|
"h1:tRD2av6PafHDP/b9jDQsG5/aX+lHeKxpbIEHYYLBVUc=",
|
||||||
"h1:t2IQYNu8YNykqYlEB+TTX+XpUd5z2flwGw8km9UgbnQ=",
|
"h1:zyl6Gvx/CFpwYW8pFFDesfO8Lxv+a6CopyAsIMhp54s=",
|
||||||
"zh:2ee426ef3389022db0026792fdc4f2980dcf2600e31adf5a31b4bddfa8d68343",
|
"zh:04c0a49c2b23140b2f21cfd0d52f9798d70d3bdae3831613e156aabe519bbc6c",
|
||||||
"zh:2f993edb23df55dc1c18150fa187d80aa7d87e6439698ee34b6a6aad23ac2dd7",
|
"zh:185f21b4834ba63e8df1f84aa34639d8a7e126429a4007bb5f9ad82f2602a997",
|
||||||
"zh:3d6601333975e55979b1b454e50ff9a482ce4e0269dd6c72a50202163a8f4463",
|
"zh:234724f52cb4c0c3f7313d3b2697caef26d921d134f26ae14801e7afac522f7b",
|
||||||
"zh:4e5f48dce22f7a6d618018d65d1d443bb718defa23f514d5c6385860541fbe79",
|
"zh:38a56fcd1b3e40706af995611c977816543b53f1e55fe2720944aae2b6828fcb",
|
||||||
"zh:5ebf5aea960fc30de381ffd6db20876d249673cf938fe67f1dfb6b9caa1db418",
|
"zh:419938f5430fc78eff933470aefbf94a460a478f867cf7761a3dea177b4eb153",
|
||||||
"zh:80ed3fb901141f53b4b56ddb7eea5f2e0c0830d501387539d2c2b8e0cc7e587a",
|
"zh:4b46d92bfde1deab7de7ba1a6bbf4ba7c711e4fd925341ddf09d4cc28dae03d8",
|
||||||
|
"zh:537acd4a31c752f1bae305ba7190f60b71ad1a459f22d464f3f914336c9e919f",
|
||||||
|
"zh:5ff36b005aad07697dd0b30d4f0c35dbcdc30dc52b41722552060792fa87ce04",
|
||||||
|
"zh:635c5ee419daea098060f794d9d7d999275301181e49562c4e4c08f043076937",
|
||||||
|
"zh:859277c330d61f91abe9e799389467ca11b77131bf34bedbef52f8da68b2bb49",
|
||||||
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
||||||
"zh:9aeae8b3be4a577ced46987fd9159262c5b4c54a510f66592fbcdb40fef55b10",
|
"zh:927dfdb8d9aef37ead03fceaa29e87ba076a3dd24e19b6cefdbb0efe9987ff8c",
|
||||||
"zh:a0479ef2d308c4a7894f1fe77467cd07e04c7b40d281088f4f204af1bdf94ac6",
|
"zh:bbf2226f07f6b1e721877328e69ded4b64f9c196634d2e2429e3cfabbe41e532",
|
||||||
"zh:a2bdc0c25130665af0b9559942b9813a1ba4889513e7185d4abc9c02e9bb99bd",
|
"zh:daeed873d6f38604232b46ee4a5830c85d195b967f8dbcafe2fcffa98daf9c5f",
|
||||||
"zh:b10be9755fe80395ced6f0bbda38b8c8681714cf1eca1d895be239c75c2ffc2a",
|
"zh:f8f2fc4646c1ba44085612fa7f4dbb7cbcead43b4e661f2b98ddfb4f68afc758",
|
||||||
"zh:ba3d55e722d9f48646574ce7c448f0084fe21fa884b5f8b6d6146a82a99c4baa",
|
|
||||||
"zh:ec1fd0ecaedc787a77d5342b51ae8dea8362a67f1e19123f6521a0e8e012d9e8",
|
|
||||||
"zh:ed49590e69faef14550179f965b4451b31415b8f6be6d33427ad48f65c76b6cf",
|
|
||||||
"zh:f4baa3a2dac719ad20dcfa525bc3f737ad95650b8d0de0c648dc9a87f993b2c3",
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
cloudflare = {
|
cloudflare = {
|
||||||
source = "cloudflare/cloudflare"
|
source = "cloudflare/cloudflare"
|
||||||
version = "4.46.0"
|
version = "4.48.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
10
docker/.gitignore
vendored
10
docker/.gitignore
vendored
@@ -1 +1,9 @@
|
|||||||
.env
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
/build
|
||||||
|
/.svelte-kit
|
||||||
|
/dist
|
||||||
|
/package
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
|||||||
1
docker/.npmrc
Normal file
1
docker/.npmrc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
engine-strict=true
|
||||||
1
docker/.nvmrc
Normal file
1
docker/.nvmrc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
22.11.0
|
||||||
14
docker/.prettierignore
Normal file
14
docker/.prettierignore
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
/build
|
||||||
|
/package
|
||||||
|
/coverage
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
*.md
|
||||||
|
|
||||||
|
# Ignore files for PNPM, NPM and YARN
|
||||||
|
pnpm-lock.yaml
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
||||||
9
docker/.prettierrc
Normal file
9
docker/.prettierrc
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"jsonRecursiveSort": true,
|
||||||
|
"organizeImportsSkipDestructiveCodeActions": true,
|
||||||
|
"plugins": ["prettier-plugin-organize-imports", "prettier-plugin-sort-json"],
|
||||||
|
"printWidth": 120,
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "all"
|
||||||
|
}
|
||||||
@@ -91,7 +91,7 @@ services:
|
|||||||
container_name: immich_prometheus
|
container_name: immich_prometheus
|
||||||
ports:
|
ports:
|
||||||
- 9090:9090
|
- 9090:9090
|
||||||
image: prom/prometheus@sha256:3b9b2a15d376334da8c286d995777d3b9315aa666d2311170ada6059a517b74f
|
image: prom/prometheus@sha256:565ee86501224ebbb98fc10b332fa54440b100469924003359edf49cbce374bd
|
||||||
volumes:
|
volumes:
|
||||||
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
||||||
- prometheus-data:/prometheus
|
- prometheus-data:/prometheus
|
||||||
@@ -103,7 +103,7 @@ services:
|
|||||||
command: ['./run.sh', '-disable-reporting']
|
command: ['./run.sh', '-disable-reporting']
|
||||||
ports:
|
ports:
|
||||||
- 3000:3000
|
- 3000:3000
|
||||||
image: grafana/grafana:11.3.1-ubuntu@sha256:7ca40d20250157abd70a907a93617a70c9b0ad9d7e59e8e6b5c8140781350d6a
|
image: grafana/grafana:11.4.0-ubuntu@sha256:afccec22ba0e4815cca1d2bf3836e414322390dc78d77f1851976ffa8d61051c
|
||||||
volumes:
|
volumes:
|
||||||
- grafana-data:/var/lib/grafana
|
- grafana-data:/var/lib/grafana
|
||||||
|
|
||||||
|
|||||||
86
docker/eslint.config.mjs
Normal file
86
docker/eslint.config.mjs
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
import { FlatCompat } from '@eslint/eslintrc';
|
||||||
|
import js from '@eslint/js';
|
||||||
|
import typescriptEslint from '@typescript-eslint/eslint-plugin';
|
||||||
|
import tsParser from '@typescript-eslint/parser';
|
||||||
|
import globals from 'globals';
|
||||||
|
import path from 'node:path';
|
||||||
|
import { fileURLToPath } from 'node:url';
|
||||||
|
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = path.dirname(__filename);
|
||||||
|
const compat = new FlatCompat({
|
||||||
|
baseDirectory: __dirname,
|
||||||
|
recommendedConfig: js.configs.recommended,
|
||||||
|
allConfig: js.configs.all,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default [
|
||||||
|
{
|
||||||
|
ignores: [
|
||||||
|
'**/.DS_Store',
|
||||||
|
'**/node_modules',
|
||||||
|
'dist',
|
||||||
|
'lib/docker-compose/types.ts',
|
||||||
|
'build',
|
||||||
|
'package',
|
||||||
|
'**/.env',
|
||||||
|
'**/.env.*',
|
||||||
|
'!**/.env.example',
|
||||||
|
'**/pnpm-lock.yaml',
|
||||||
|
'**/package-lock.json',
|
||||||
|
'**/yarn.lock',
|
||||||
|
'eslint.config.mjs',
|
||||||
|
'vite.config.js',
|
||||||
|
'coverage',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
...compat.extends('eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:unicorn/recommended'),
|
||||||
|
{
|
||||||
|
ignores: ['src/**'],
|
||||||
|
plugins: {
|
||||||
|
'@typescript-eslint': typescriptEslint,
|
||||||
|
},
|
||||||
|
|
||||||
|
languageOptions: {
|
||||||
|
globals: {
|
||||||
|
...globals.browser,
|
||||||
|
...globals.node,
|
||||||
|
NodeJS: true,
|
||||||
|
},
|
||||||
|
|
||||||
|
parser: tsParser,
|
||||||
|
ecmaVersion: 2022,
|
||||||
|
sourceType: 'module',
|
||||||
|
|
||||||
|
parserOptions: {
|
||||||
|
tsconfigRootDir: __dirname,
|
||||||
|
project: ['./tsconfig.json'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
rules: {
|
||||||
|
'@typescript-eslint/no-unused-vars': [
|
||||||
|
'warn',
|
||||||
|
{
|
||||||
|
argsIgnorePattern: '^_$',
|
||||||
|
varsIgnorePattern: '^_$',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
curly: 2,
|
||||||
|
'unicorn/no-useless-undefined': 'off',
|
||||||
|
'unicorn/prefer-spread': 'off',
|
||||||
|
'unicorn/no-null': 'off',
|
||||||
|
'unicorn/prevent-abbreviations': 'off',
|
||||||
|
'unicorn/no-nested-ternary': 'off',
|
||||||
|
'unicorn/consistent-function-scoping': 'off',
|
||||||
|
'unicorn/prefer-top-level-await': 'off',
|
||||||
|
'unicorn/import-style': 'off',
|
||||||
|
'@typescript-eslint/await-thenable': 'error',
|
||||||
|
'@typescript-eslint/no-floating-promises': 'error',
|
||||||
|
'@typescript-eslint/no-misused-promises': 'error',
|
||||||
|
'@typescript-eslint/require-await': 'error',
|
||||||
|
'object-shorthand': ['error', 'always'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
87
docker/lib/build.ts
Normal file
87
docker/lib/build.ts
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
import { dump as dumpYaml } from 'js-yaml';
|
||||||
|
import { ComposeBuilder, ServiceBuilder } from 'lib/docker-compose/builder';
|
||||||
|
import { ContainerName, GeneratorOptions, ServiceName } from 'lib/types';
|
||||||
|
import { asQueryParams, getImmichEnvironment, getImmichVolumes, isExternalPostgres, isIoRedis } from 'lib/utils';
|
||||||
|
|
||||||
|
const RELEASE_VERSION = 'v1.122.0';
|
||||||
|
const postgresHealthCheck = [
|
||||||
|
'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\n`,
|
||||||
|
].join(' ');
|
||||||
|
const postgresCommand = [
|
||||||
|
`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`,
|
||||||
|
].join(' ');
|
||||||
|
|
||||||
|
const build = (options: GeneratorOptions) => {
|
||||||
|
const healthchecksEnabled = options.healthchecks ?? true;
|
||||||
|
const containerNames = options.containerNames ?? true;
|
||||||
|
|
||||||
|
const immichService = ServiceBuilder.create(ServiceName.ImmichServer)
|
||||||
|
.setImage(`ghcr.io/immich-app/immich-server:${RELEASE_VERSION}`)
|
||||||
|
.setContainerName(containerNames && ContainerName.ImmichServer)
|
||||||
|
.setRestartPolicy('always')
|
||||||
|
.setHealthcheck(healthchecksEnabled)
|
||||||
|
.setEnvironment(getImmichEnvironment(options))
|
||||||
|
.addExposedPort(2283)
|
||||||
|
.addVolumes(getImmichVolumes(options));
|
||||||
|
|
||||||
|
const machineLearningEnabled = options.machineLearning;
|
||||||
|
const modelCacheVolume = 'model-cache';
|
||||||
|
const machineLearningService =
|
||||||
|
machineLearningEnabled &&
|
||||||
|
ServiceBuilder.create(ServiceName.ImmichMachineLearning)
|
||||||
|
.setImage(`ghcr.io/immich-app/immich-machine-learning:${RELEASE_VERSION}-cuda`)
|
||||||
|
.setContainerName(containerNames && ContainerName.ImmichMachineLearning)
|
||||||
|
.setRestartPolicy('always')
|
||||||
|
.setHealthcheck(healthchecksEnabled)
|
||||||
|
.addVolume(`${modelCacheVolume}:/cache`);
|
||||||
|
|
||||||
|
const redisService = isIoRedis(options)
|
||||||
|
? false
|
||||||
|
: ServiceBuilder.create(ServiceName.Redis)
|
||||||
|
.setImage('docker.io/redis:6.2-alpine')
|
||||||
|
.setContainerName(containerNames && ContainerName.Redis)
|
||||||
|
.setRestartPolicy('always')
|
||||||
|
.setHealthcheck(healthchecksEnabled && 'redis-cli ping || exit 1');
|
||||||
|
|
||||||
|
const postgresService = isExternalPostgres(options)
|
||||||
|
? false
|
||||||
|
: ServiceBuilder.create(ServiceName.Postgres)
|
||||||
|
.setImage('docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0')
|
||||||
|
.setContainerName(containerNames && ContainerName.Postgres)
|
||||||
|
.setRestartPolicy('always')
|
||||||
|
.setEnvironment({
|
||||||
|
POSTGRES_PASSWORD: options.postgresPassword,
|
||||||
|
POSTGRES_USER: options.postgresUser,
|
||||||
|
POSTGRES_DB: options.postgresDatabase,
|
||||||
|
POSTGRES_INITDB_ARGS: '--data-checksums',
|
||||||
|
})
|
||||||
|
.setHealthcheck(healthchecksEnabled && postgresHealthCheck)
|
||||||
|
.setCommand(postgresCommand)
|
||||||
|
.addVolume(`${options.postgresDataLocation}:/var/lib/postgresql/data`);
|
||||||
|
|
||||||
|
const domain = 'https://get.immich.app';
|
||||||
|
const url = `${domain}/compose?${asQueryParams(options)}`;
|
||||||
|
|
||||||
|
return ComposeBuilder.create('immich')
|
||||||
|
.addComment(`This docker compose file was originally generated at https://get.immich.app/compose`)
|
||||||
|
.addComment(url)
|
||||||
|
.addComment(`${dumpYaml({ options }, { indent: 2 })}`)
|
||||||
|
.addService(immichService.addDependsOn(redisService).addDependsOn(postgresService))
|
||||||
|
.addService(machineLearningService)
|
||||||
|
.addService(redisService)
|
||||||
|
.addService(postgresService)
|
||||||
|
.addVolume(modelCacheVolume, machineLearningEnabled && {});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const buildSpec = (options: GeneratorOptions) => build(options).asSpec();
|
||||||
|
export const buildYaml = (options: GeneratorOptions) => build(options).asYaml();
|
||||||
208
docker/lib/docker-compose/builder.ts
Normal file
208
docker/lib/docker-compose/builder.ts
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
import { dump as dumpYaml } from 'js-yaml';
|
||||||
|
import {
|
||||||
|
Command,
|
||||||
|
ComposeSpecification,
|
||||||
|
DefinitionsService,
|
||||||
|
DefinitionsVolume,
|
||||||
|
ListOfStrings,
|
||||||
|
} from 'lib/docker-compose/types';
|
||||||
|
|
||||||
|
type ServiceNameAccessor = { getName: () => string };
|
||||||
|
type ServiceBuildAccessor = { build: () => DefinitionsService };
|
||||||
|
|
||||||
|
const withNewLines = (yaml: string) =>
|
||||||
|
yaml.replaceAll(/(?<leading>[^:]\n)(?<key>[ ]{0,2}\S+:)$/gm, '$<leading>\n$<key>');
|
||||||
|
|
||||||
|
export class ComposeBuilder {
|
||||||
|
private spec: ComposeSpecification = {};
|
||||||
|
private comments: string[] = [];
|
||||||
|
|
||||||
|
private constructor(projectName?: string) {
|
||||||
|
if (projectName) {
|
||||||
|
this.setProjectName(projectName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static create(projectName?: string) {
|
||||||
|
return new ComposeBuilder(projectName);
|
||||||
|
}
|
||||||
|
|
||||||
|
setProjectName(name: string) {
|
||||||
|
this.spec.name = name;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
addComment(comment: string) {
|
||||||
|
this.comments.push(comment + '\n');
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
addService(spec: false | (ServiceNameAccessor & ServiceBuildAccessor)) {
|
||||||
|
if (!spec) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.spec.services) {
|
||||||
|
this.spec.services = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
this.spec.services[spec.getName()] = spec.build();
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
addVolume(name: string, volume: false | DefinitionsVolume) {
|
||||||
|
if (volume === false) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.spec.volumes) {
|
||||||
|
this.spec.volumes = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
this.spec.volumes[name] = volume;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
asSpec() {
|
||||||
|
return this.spec;
|
||||||
|
}
|
||||||
|
|
||||||
|
asYaml() {
|
||||||
|
let prefix = '';
|
||||||
|
if (this.comments.length > 0) {
|
||||||
|
const comments =
|
||||||
|
this.comments
|
||||||
|
.flatMap((comment) => comment.split('\n'))
|
||||||
|
.join('\n')
|
||||||
|
.trim()
|
||||||
|
.split('\n')
|
||||||
|
.map((comment) => `# ${comment}`)
|
||||||
|
.join('\n') + '\n\n';
|
||||||
|
|
||||||
|
prefix += comments;
|
||||||
|
}
|
||||||
|
|
||||||
|
const spec = withNewLines(dumpYaml(this.spec, { indent: 2, lineWidth: 140 })).trim();
|
||||||
|
|
||||||
|
return prefix + spec;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ServiceBuilder {
|
||||||
|
private spec: DefinitionsService = {};
|
||||||
|
|
||||||
|
private constructor(private name: string) {}
|
||||||
|
|
||||||
|
static create(name: string) {
|
||||||
|
return new ServiceBuilder(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
setImage(image: string) {
|
||||||
|
this.spec.image = image;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
setContainerName(name: false | string) {
|
||||||
|
if (name === false) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.spec.container_name = name;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
addExposedPort(port: number | { internal: number; external: number }) {
|
||||||
|
if (typeof port === 'number') {
|
||||||
|
port = { internal: port, external: port };
|
||||||
|
}
|
||||||
|
|
||||||
|
const { internal, external } = port;
|
||||||
|
|
||||||
|
if (!this.spec.ports) {
|
||||||
|
this.spec.ports = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
this.spec.ports.push(`${external}:${internal}`);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
addDependsOn(service: false | string | ServiceNameAccessor) {
|
||||||
|
if (service === false) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
let serviceName = service as string;
|
||||||
|
if ('getName' in (service as ServiceNameAccessor)) {
|
||||||
|
serviceName = (service as ServiceNameAccessor).getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.spec.depends_on) {
|
||||||
|
this.spec.depends_on = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
(this.spec.depends_on as ListOfStrings).push(serviceName);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
setRestartPolicy(restart: string) {
|
||||||
|
this.spec.restart = restart;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
setEnvironment(env: Record<string, string | number | undefined>) {
|
||||||
|
this.spec.environment = env;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
setHealthcheck(test: boolean | string) {
|
||||||
|
if (test === true) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (test === false) {
|
||||||
|
this.spec.healthcheck = { disable: true };
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.spec.healthcheck = { test };
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
setCommand(command: Command) {
|
||||||
|
this.spec.command = command;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
addVolume(volume: string) {
|
||||||
|
if (!this.spec.volumes) {
|
||||||
|
this.spec.volumes = [];
|
||||||
|
}
|
||||||
|
this.spec.volumes.push(volume);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
addVolumes(volumes: string[]) {
|
||||||
|
for (const volume of volumes) {
|
||||||
|
this.addVolume(volume);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
return this.spec;
|
||||||
|
}
|
||||||
|
}
|
||||||
937
docker/lib/docker-compose/types.ts
Normal file
937
docker/lib/docker-compose/types.ts
Normal file
@@ -0,0 +1,937 @@
|
|||||||
|
export type DefinitionsInclude =
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
path?: StringOrList;
|
||||||
|
env_file?: StringOrList;
|
||||||
|
project_directory?: string;
|
||||||
|
};
|
||||||
|
export type StringOrList = string | ListOfStrings;
|
||||||
|
export type ListOfStrings = string[];
|
||||||
|
export type DefinitionsDevelopment = {
|
||||||
|
watch?: {
|
||||||
|
ignore?: string[];
|
||||||
|
path: string;
|
||||||
|
action: 'rebuild' | 'sync' | 'sync+restart';
|
||||||
|
target?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}[];
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
} & Development;
|
||||||
|
export type Development = {
|
||||||
|
watch?: {
|
||||||
|
ignore?: string[];
|
||||||
|
path: string;
|
||||||
|
action: 'rebuild' | 'sync' | 'sync+restart';
|
||||||
|
target?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}[];
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
} | null;
|
||||||
|
export type DefinitionsDeployment = {
|
||||||
|
mode?: string;
|
||||||
|
endpoint_mode?: string;
|
||||||
|
replicas?: number | string;
|
||||||
|
labels?: ListOrDict;
|
||||||
|
rollback_config?: {
|
||||||
|
parallelism?: number | string;
|
||||||
|
delay?: string;
|
||||||
|
failure_action?: string;
|
||||||
|
monitor?: string;
|
||||||
|
max_failure_ratio?: number | string;
|
||||||
|
order?: 'start-first' | 'stop-first';
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
update_config?: {
|
||||||
|
parallelism?: number | string;
|
||||||
|
delay?: string;
|
||||||
|
failure_action?: string;
|
||||||
|
monitor?: string;
|
||||||
|
max_failure_ratio?: number | string;
|
||||||
|
order?: 'start-first' | 'stop-first';
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
resources?: {
|
||||||
|
limits?: {
|
||||||
|
cpus?: number | string;
|
||||||
|
memory?: string;
|
||||||
|
pids?: number | string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
reservations?: {
|
||||||
|
cpus?: number | string;
|
||||||
|
memory?: string;
|
||||||
|
generic_resources?: DefinitionsGenericResources;
|
||||||
|
devices?: DefinitionsDevices;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
restart_policy?: {
|
||||||
|
condition?: string;
|
||||||
|
delay?: string;
|
||||||
|
max_attempts?: number | string;
|
||||||
|
window?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
placement?: {
|
||||||
|
constraints?: string[];
|
||||||
|
preferences?: {
|
||||||
|
spread?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}[];
|
||||||
|
max_replicas_per_node?: number | string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
} & Deployment;
|
||||||
|
export type ListOrDict =
|
||||||
|
| {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` ".+".
|
||||||
|
*/
|
||||||
|
[k: string]: undefined | string | number | boolean | null;
|
||||||
|
}
|
||||||
|
| string[];
|
||||||
|
export type DefinitionsGenericResources = {
|
||||||
|
discrete_resource_spec?: {
|
||||||
|
kind?: string;
|
||||||
|
value?: number | string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}[];
|
||||||
|
export type DefinitionsDevices = {
|
||||||
|
capabilities: ListOfStrings;
|
||||||
|
count?: string | number;
|
||||||
|
device_ids?: ListOfStrings;
|
||||||
|
driver?: string;
|
||||||
|
options?: ListOrDict;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}[];
|
||||||
|
export type Deployment = {
|
||||||
|
mode?: string;
|
||||||
|
endpoint_mode?: string;
|
||||||
|
replicas?: number | string;
|
||||||
|
labels?: ListOrDict;
|
||||||
|
rollback_config?: {
|
||||||
|
parallelism?: number | string;
|
||||||
|
delay?: string;
|
||||||
|
failure_action?: string;
|
||||||
|
monitor?: string;
|
||||||
|
max_failure_ratio?: number | string;
|
||||||
|
order?: 'start-first' | 'stop-first';
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
update_config?: {
|
||||||
|
parallelism?: number | string;
|
||||||
|
delay?: string;
|
||||||
|
failure_action?: string;
|
||||||
|
monitor?: string;
|
||||||
|
max_failure_ratio?: number | string;
|
||||||
|
order?: 'start-first' | 'stop-first';
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
resources?: {
|
||||||
|
limits?: {
|
||||||
|
cpus?: number | string;
|
||||||
|
memory?: string;
|
||||||
|
pids?: number | string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
reservations?: {
|
||||||
|
cpus?: number | string;
|
||||||
|
memory?: string;
|
||||||
|
generic_resources?: DefinitionsGenericResources;
|
||||||
|
devices?: DefinitionsDevices;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
restart_policy?: {
|
||||||
|
condition?: string;
|
||||||
|
delay?: string;
|
||||||
|
max_attempts?: number | string;
|
||||||
|
window?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
placement?: {
|
||||||
|
constraints?: string[];
|
||||||
|
preferences?: {
|
||||||
|
spread?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}[];
|
||||||
|
max_replicas_per_node?: number | string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
} | null;
|
||||||
|
export type ExtraHosts = {} | string[];
|
||||||
|
export type ServiceConfigOrSecret = (
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
source?: string;
|
||||||
|
target?: string;
|
||||||
|
uid?: string;
|
||||||
|
gid?: string;
|
||||||
|
mode?: number | string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
)[];
|
||||||
|
export type Command = null | string | string[];
|
||||||
|
export type EnvFile =
|
||||||
|
| string
|
||||||
|
| (
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
path: string;
|
||||||
|
format?: string;
|
||||||
|
required?: boolean | string;
|
||||||
|
}
|
||||||
|
)[];
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `PropertiesNetworks`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^[a-zA-Z0-9._-]+$".
|
||||||
|
*/
|
||||||
|
export type DefinitionsNetwork = {
|
||||||
|
name?: string;
|
||||||
|
driver?: string;
|
||||||
|
driver_opts?: {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^.+$".
|
||||||
|
*/
|
||||||
|
[k: string]: string | number;
|
||||||
|
};
|
||||||
|
ipam?: {
|
||||||
|
driver?: string;
|
||||||
|
config?: {
|
||||||
|
subnet?: string;
|
||||||
|
ip_range?: string;
|
||||||
|
gateway?: string;
|
||||||
|
aux_addresses?: {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^.+$".
|
||||||
|
*/
|
||||||
|
[k: string]: string;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}[];
|
||||||
|
options?: {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^.+$".
|
||||||
|
*/
|
||||||
|
[k: string]: string;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
external?:
|
||||||
|
| boolean
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
name?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
internal?: boolean | string;
|
||||||
|
enable_ipv6?: boolean | string;
|
||||||
|
attachable?: boolean | string;
|
||||||
|
labels?: ListOrDict;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
} & Network;
|
||||||
|
export type Network = {
|
||||||
|
name?: string;
|
||||||
|
driver?: string;
|
||||||
|
driver_opts?: {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^.+$".
|
||||||
|
*/
|
||||||
|
[k: string]: string | number;
|
||||||
|
};
|
||||||
|
ipam?: {
|
||||||
|
driver?: string;
|
||||||
|
config?: {
|
||||||
|
subnet?: string;
|
||||||
|
ip_range?: string;
|
||||||
|
gateway?: string;
|
||||||
|
aux_addresses?: {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^.+$".
|
||||||
|
*/
|
||||||
|
[k: string]: string;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}[];
|
||||||
|
options?: {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^.+$".
|
||||||
|
*/
|
||||||
|
[k: string]: string;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
external?:
|
||||||
|
| boolean
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
name?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
internal?: boolean | string;
|
||||||
|
enable_ipv6?: boolean | string;
|
||||||
|
attachable?: boolean | string;
|
||||||
|
labels?: ListOrDict;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
} | null;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `PropertiesVolumes`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^[a-zA-Z0-9._-]+$".
|
||||||
|
*/
|
||||||
|
export type DefinitionsVolume = {
|
||||||
|
name?: string;
|
||||||
|
driver?: string;
|
||||||
|
driver_opts?: {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^.+$".
|
||||||
|
*/
|
||||||
|
[k: string]: string | number;
|
||||||
|
};
|
||||||
|
external?:
|
||||||
|
| boolean
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
name?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
labels?: ListOrDict;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
} & Volume;
|
||||||
|
export type Volume = {
|
||||||
|
name?: string;
|
||||||
|
driver?: string;
|
||||||
|
driver_opts?: {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^.+$".
|
||||||
|
*/
|
||||||
|
[k: string]: string | number;
|
||||||
|
};
|
||||||
|
external?:
|
||||||
|
| boolean
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
name?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
labels?: ListOrDict;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
} | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Compose file is a YAML file defining a multi-containers based application.
|
||||||
|
*/
|
||||||
|
export interface ComposeSpecification {
|
||||||
|
/**
|
||||||
|
* declared for backward compatibility, ignored.
|
||||||
|
*/
|
||||||
|
version?: string;
|
||||||
|
/**
|
||||||
|
* define the Compose project name, until user defines one explicitly.
|
||||||
|
*/
|
||||||
|
name?: string;
|
||||||
|
/**
|
||||||
|
* compose sub-projects to be included.
|
||||||
|
*/
|
||||||
|
include?: DefinitionsInclude[];
|
||||||
|
services?: PropertiesServices;
|
||||||
|
networks?: PropertiesNetworks;
|
||||||
|
volumes?: PropertiesVolumes;
|
||||||
|
secrets?: PropertiesSecrets;
|
||||||
|
configs?: PropertiesConfigs;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `ComposeSpecification`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
export interface PropertiesServices {
|
||||||
|
[k: string]: DefinitionsService;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `PropertiesServices`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^[a-zA-Z0-9._-]+$".
|
||||||
|
*/
|
||||||
|
export interface DefinitionsService {
|
||||||
|
develop?: DefinitionsDevelopment;
|
||||||
|
deploy?: DefinitionsDeployment;
|
||||||
|
annotations?: ListOrDict;
|
||||||
|
attach?: boolean | string;
|
||||||
|
build?:
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
context?: string;
|
||||||
|
dockerfile?: string;
|
||||||
|
dockerfile_inline?: string;
|
||||||
|
entitlements?: string[];
|
||||||
|
args?: ListOrDict;
|
||||||
|
ssh?: ListOrDict;
|
||||||
|
labels?: ListOrDict;
|
||||||
|
cache_from?: string[];
|
||||||
|
cache_to?: string[];
|
||||||
|
no_cache?: boolean | string;
|
||||||
|
additional_contexts?: ListOrDict;
|
||||||
|
network?: string;
|
||||||
|
pull?: boolean | string;
|
||||||
|
target?: string;
|
||||||
|
shm_size?: number | string;
|
||||||
|
extra_hosts?: ExtraHosts;
|
||||||
|
isolation?: string;
|
||||||
|
privileged?: boolean | string;
|
||||||
|
secrets?: ServiceConfigOrSecret;
|
||||||
|
tags?: string[];
|
||||||
|
ulimits?: Ulimits;
|
||||||
|
platforms?: string[];
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
blkio_config?: {
|
||||||
|
device_read_bps?: BlkioLimit[];
|
||||||
|
device_read_iops?: BlkioLimit[];
|
||||||
|
device_write_bps?: BlkioLimit[];
|
||||||
|
device_write_iops?: BlkioLimit[];
|
||||||
|
weight?: number | string;
|
||||||
|
weight_device?: BlkioWeight[];
|
||||||
|
};
|
||||||
|
cap_add?: string[];
|
||||||
|
cap_drop?: string[];
|
||||||
|
cgroup?: 'host' | 'private';
|
||||||
|
cgroup_parent?: string;
|
||||||
|
command?: Command;
|
||||||
|
configs?: ServiceConfigOrSecret;
|
||||||
|
container_name?: string;
|
||||||
|
cpu_count?: string | number;
|
||||||
|
cpu_percent?: string | number;
|
||||||
|
cpu_shares?: number | string;
|
||||||
|
cpu_quota?: number | string;
|
||||||
|
cpu_period?: number | string;
|
||||||
|
cpu_rt_period?: number | string;
|
||||||
|
cpu_rt_runtime?: number | string;
|
||||||
|
cpus?: number | string;
|
||||||
|
cpuset?: string;
|
||||||
|
credential_spec?: {
|
||||||
|
config?: string;
|
||||||
|
file?: string;
|
||||||
|
registry?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
depends_on?:
|
||||||
|
| ListOfStrings
|
||||||
|
| {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^[a-zA-Z0-9._-]+$".
|
||||||
|
*/
|
||||||
|
[k: string]: {
|
||||||
|
restart?: boolean | string;
|
||||||
|
required?: boolean;
|
||||||
|
condition: 'service_started' | 'service_healthy' | 'service_completed_successfully';
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
device_cgroup_rules?: ListOfStrings;
|
||||||
|
devices?: (
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
source: string;
|
||||||
|
target?: string;
|
||||||
|
permissions?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
)[];
|
||||||
|
dns?: StringOrList;
|
||||||
|
dns_opt?: string[];
|
||||||
|
dns_search?: StringOrList;
|
||||||
|
domainname?: string;
|
||||||
|
entrypoint?: Command;
|
||||||
|
env_file?: EnvFile;
|
||||||
|
environment?: ListOrDict;
|
||||||
|
expose?: (string | number)[];
|
||||||
|
extends?:
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
service: string;
|
||||||
|
file?: string;
|
||||||
|
};
|
||||||
|
external_links?: string[];
|
||||||
|
extra_hosts?: ExtraHosts;
|
||||||
|
group_add?: (string | number)[];
|
||||||
|
healthcheck?: DefinitionsHealthcheck;
|
||||||
|
hostname?: string;
|
||||||
|
image?: string;
|
||||||
|
init?: boolean | string;
|
||||||
|
ipc?: string;
|
||||||
|
isolation?: string;
|
||||||
|
labels?: ListOrDict;
|
||||||
|
links?: string[];
|
||||||
|
logging?: {
|
||||||
|
driver?: string;
|
||||||
|
options?: {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^.+$".
|
||||||
|
*/
|
||||||
|
[k: string]: string | number | null;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
mac_address?: string;
|
||||||
|
mem_limit?: number | string;
|
||||||
|
mem_reservation?: string | number;
|
||||||
|
mem_swappiness?: number | string;
|
||||||
|
memswap_limit?: number | string;
|
||||||
|
network_mode?: string;
|
||||||
|
networks?:
|
||||||
|
| ListOfStrings
|
||||||
|
| {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^[a-zA-Z0-9._-]+$".
|
||||||
|
*/
|
||||||
|
[k: string]: {
|
||||||
|
aliases?: ListOfStrings;
|
||||||
|
ipv4_address?: string;
|
||||||
|
ipv6_address?: string;
|
||||||
|
link_local_ips?: ListOfStrings;
|
||||||
|
mac_address?: string;
|
||||||
|
driver_opts?: {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^.+$".
|
||||||
|
*/
|
||||||
|
[k: string]: string | number;
|
||||||
|
};
|
||||||
|
priority?: number;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
} | null;
|
||||||
|
};
|
||||||
|
oom_kill_disable?: boolean | string;
|
||||||
|
oom_score_adj?: string | number;
|
||||||
|
pid?: string | null;
|
||||||
|
pids_limit?: number | string;
|
||||||
|
platform?: string;
|
||||||
|
ports?: (
|
||||||
|
| number
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
name?: string;
|
||||||
|
mode?: string;
|
||||||
|
host_ip?: string;
|
||||||
|
target?: number | string;
|
||||||
|
published?: string | number;
|
||||||
|
protocol?: string;
|
||||||
|
app_protocol?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
)[];
|
||||||
|
post_start?: DefinitionsServiceHook[];
|
||||||
|
pre_stop?: DefinitionsServiceHook[];
|
||||||
|
privileged?: boolean | string;
|
||||||
|
profiles?: ListOfStrings;
|
||||||
|
pull_policy?: 'always' | 'never' | 'if_not_present' | 'build' | 'missing';
|
||||||
|
read_only?: boolean | string;
|
||||||
|
restart?: string;
|
||||||
|
runtime?: string;
|
||||||
|
scale?: number | string;
|
||||||
|
security_opt?: string[];
|
||||||
|
shm_size?: number | string;
|
||||||
|
secrets?: ServiceConfigOrSecret;
|
||||||
|
sysctls?: ListOrDict;
|
||||||
|
stdin_open?: boolean | string;
|
||||||
|
stop_grace_period?: string;
|
||||||
|
stop_signal?: string;
|
||||||
|
storage_opt?: {
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
tmpfs?: StringOrList;
|
||||||
|
tty?: boolean | string;
|
||||||
|
ulimits?: Ulimits;
|
||||||
|
user?: string;
|
||||||
|
uts?: string;
|
||||||
|
userns_mode?: string;
|
||||||
|
volumes?: (
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
type: string;
|
||||||
|
source?: string;
|
||||||
|
target?: string;
|
||||||
|
read_only?: boolean | string;
|
||||||
|
consistency?: string;
|
||||||
|
bind?: {
|
||||||
|
propagation?: string;
|
||||||
|
create_host_path?: boolean | string;
|
||||||
|
selinux?: 'z' | 'Z';
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
volume?: {
|
||||||
|
nocopy?: boolean | string;
|
||||||
|
subpath?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
tmpfs?: {
|
||||||
|
size?: number | string;
|
||||||
|
mode?: number | string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
)[];
|
||||||
|
volumes_from?: string[];
|
||||||
|
working_dir?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `DefinitionsService`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
export interface Ulimits {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Ulimits`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^[a-z]+$".
|
||||||
|
*/
|
||||||
|
[k: string]:
|
||||||
|
| (number | string)
|
||||||
|
| {
|
||||||
|
hard: number | string;
|
||||||
|
soft: number | string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export interface BlkioLimit {
|
||||||
|
path?: string;
|
||||||
|
rate?: number | string;
|
||||||
|
}
|
||||||
|
export interface BlkioWeight {
|
||||||
|
path?: string;
|
||||||
|
weight?: number | string;
|
||||||
|
}
|
||||||
|
export interface DefinitionsHealthcheck {
|
||||||
|
disable?: boolean | string;
|
||||||
|
interval?: string;
|
||||||
|
retries?: number | string;
|
||||||
|
test?: string | string[];
|
||||||
|
timeout?: string;
|
||||||
|
start_period?: string;
|
||||||
|
start_interval?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `DefinitionsHealthcheck`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
export interface DefinitionsServiceHook {
|
||||||
|
command?: Command;
|
||||||
|
user?: string;
|
||||||
|
privileged?: boolean | string;
|
||||||
|
working_dir?: string;
|
||||||
|
environment?: ListOrDict;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `DefinitionsServiceHook`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
export interface PropertiesNetworks {
|
||||||
|
[k: string]: DefinitionsNetwork;
|
||||||
|
}
|
||||||
|
export interface PropertiesVolumes {
|
||||||
|
[k: string]: DefinitionsVolume;
|
||||||
|
}
|
||||||
|
export interface PropertiesSecrets {
|
||||||
|
[k: string]: DefinitionsSecret;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `PropertiesSecrets`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^[a-zA-Z0-9._-]+$".
|
||||||
|
*/
|
||||||
|
export interface DefinitionsSecret {
|
||||||
|
name?: string;
|
||||||
|
environment?: string;
|
||||||
|
file?: string;
|
||||||
|
external?:
|
||||||
|
| boolean
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
name?: string;
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
labels?: ListOrDict;
|
||||||
|
driver?: string;
|
||||||
|
driver_opts?: {
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^.+$".
|
||||||
|
*/
|
||||||
|
[k: string]: string | number;
|
||||||
|
};
|
||||||
|
template_driver?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `DefinitionsSecret`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
export interface PropertiesConfigs {
|
||||||
|
[k: string]: DefinitionsConfig;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `PropertiesConfigs`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^[a-zA-Z0-9._-]+$".
|
||||||
|
*/
|
||||||
|
export interface DefinitionsConfig {
|
||||||
|
name?: string;
|
||||||
|
content?: string;
|
||||||
|
environment?: string;
|
||||||
|
file?: string;
|
||||||
|
external?:
|
||||||
|
| boolean
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
name?: string;
|
||||||
|
[k: string]: unknown;
|
||||||
|
};
|
||||||
|
labels?: ListOrDict;
|
||||||
|
template_driver?: string;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `DefinitionsConfig`'s JSON-Schema definition
|
||||||
|
* via the `patternProperty` "^x-".
|
||||||
|
*/
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
2
docker/lib/index.ts
Normal file
2
docker/lib/index.ts
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
export * from 'lib/build';
|
||||||
|
export * from 'lib/types';
|
||||||
57
docker/lib/types.ts
Normal file
57
docker/lib/types.ts
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
export enum ServiceName {
|
||||||
|
ImmichServer = 'immich-server',
|
||||||
|
ImmichMachineLearning = 'immich-machine-learning',
|
||||||
|
Postgres = 'immich-postgres',
|
||||||
|
Redis = 'immich-redis',
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum ContainerName {
|
||||||
|
ImmichServer = 'immich-server',
|
||||||
|
ImmichMachineLearning = 'immich-machine-learning',
|
||||||
|
Postgres = 'immich-postgres',
|
||||||
|
Redis = 'immich-redis',
|
||||||
|
}
|
||||||
|
|
||||||
|
export type BaseOptions = {
|
||||||
|
releaseVersion: string;
|
||||||
|
healthchecks?: boolean;
|
||||||
|
machineLearning: boolean;
|
||||||
|
containerNames?: boolean;
|
||||||
|
serverTimeZone?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type GeneratorOptions = (BaseOptions & FolderOptions & PostgresOptions) & RedisOptions;
|
||||||
|
|
||||||
|
export type FolderOptions = {
|
||||||
|
baseLocation: string;
|
||||||
|
encodedVideoLocation?: string;
|
||||||
|
libraryLocation?: string;
|
||||||
|
uploadLocation?: string;
|
||||||
|
profileLocation?: string;
|
||||||
|
thumbnailsLocation?: string;
|
||||||
|
backupsLocation?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type PostgresOptions = InternalPostgresOptions | ExternalPostgresOptions;
|
||||||
|
export type InternalPostgresOptions = {
|
||||||
|
postgresUser: string;
|
||||||
|
postgresPassword: string;
|
||||||
|
postgresDatabase: string;
|
||||||
|
postgresDataLocation: string;
|
||||||
|
};
|
||||||
|
export type ExternalPostgresOptions = { postgresUrl: string; postgresVectorExtension?: VectorExtension };
|
||||||
|
|
||||||
|
export type RedisOptions = ExternalRedisOptions | IoRedisOptions | { redis: true };
|
||||||
|
export type ExternalRedisOptions = {
|
||||||
|
redisHost: string;
|
||||||
|
redisPort: number;
|
||||||
|
redisDbIndex?: number;
|
||||||
|
redisUsername?: string;
|
||||||
|
redisPassword?: string;
|
||||||
|
redisSocket?: string;
|
||||||
|
};
|
||||||
|
export type IoRedisOptions = { redisUrl: string };
|
||||||
|
|
||||||
|
export type VectorExtension = 'pgvector' | 'pgvecto.rs';
|
||||||
|
|
||||||
|
export type HardwareAccelerationPlatform = 'nvenc' | 'quicksync' | 'rkmpp' | 'vappi' | 'vaapi-wsl';
|
||||||
84
docker/lib/utils.ts
Normal file
84
docker/lib/utils.ts
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
import {
|
||||||
|
ExternalPostgresOptions,
|
||||||
|
ExternalRedisOptions,
|
||||||
|
GeneratorOptions,
|
||||||
|
IoRedisOptions,
|
||||||
|
PostgresOptions,
|
||||||
|
RedisOptions,
|
||||||
|
ServiceName,
|
||||||
|
} from 'lib/types';
|
||||||
|
|
||||||
|
export const isExternalPostgres = (options: PostgresOptions): options is ExternalPostgresOptions =>
|
||||||
|
'postgresUrl' in options;
|
||||||
|
|
||||||
|
export const isIoRedis = (options: RedisOptions): options is IoRedisOptions => 'redisUrl' in options;
|
||||||
|
export const isExternalRedis = (options: RedisOptions): options is ExternalRedisOptions => 'redisHost' in options;
|
||||||
|
|
||||||
|
export const asQueryParams = (values: Record<string, string | number | boolean | undefined>) => {
|
||||||
|
return new URLSearchParams(
|
||||||
|
Object.entries(values)
|
||||||
|
.filter(Boolean)
|
||||||
|
.map(([key, value]) => [key, String(value)]),
|
||||||
|
).toString();
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getImmichVolumes = (options: GeneratorOptions) => {
|
||||||
|
const {
|
||||||
|
baseLocation,
|
||||||
|
encodedVideoLocation,
|
||||||
|
uploadLocation,
|
||||||
|
backupsLocation,
|
||||||
|
profileLocation,
|
||||||
|
libraryLocation,
|
||||||
|
thumbnailsLocation,
|
||||||
|
} = options;
|
||||||
|
|
||||||
|
const internalBaseLocation = '/usr/src/app/upload';
|
||||||
|
|
||||||
|
const volumes = [`${baseLocation}:${internalBaseLocation}`];
|
||||||
|
|
||||||
|
for (const { override, folder } of [
|
||||||
|
{ override: encodedVideoLocation, folder: 'encoded-video' },
|
||||||
|
{ override: libraryLocation, folder: 'library' },
|
||||||
|
{ override: uploadLocation, folder: 'upload' },
|
||||||
|
{ override: profileLocation, folder: 'profile' },
|
||||||
|
{ override: thumbnailsLocation, folder: 'thumbs' },
|
||||||
|
{ override: backupsLocation, folder: 'backups' },
|
||||||
|
]) {
|
||||||
|
if (override) {
|
||||||
|
volumes.push(`${override}:${internalBaseLocation}/${folder}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
volumes.push(`/etc/localtime:/etc/localtime:ro`);
|
||||||
|
|
||||||
|
return volumes;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getImmichEnvironment = (options: GeneratorOptions) => {
|
||||||
|
const env: Record<string, string | number | undefined> = {};
|
||||||
|
if (isExternalPostgres(options)) {
|
||||||
|
env.DB_URL = options.postgresUrl;
|
||||||
|
env.DB_VECTOR_EXTENSION = options.postgresVectorExtension;
|
||||||
|
} else {
|
||||||
|
const { postgresUser, postgresPassword, postgresDatabase } = options;
|
||||||
|
env.DB_URL = `postgres://${postgresUser}:${postgresPassword}@${ServiceName.Postgres}:5432/${postgresDatabase}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isIoRedis(options)) {
|
||||||
|
env.REDIS_URL = options.redisUrl;
|
||||||
|
} else if (isExternalRedis(options)) {
|
||||||
|
env.REDIS_HOSTNAME = options.redisHost;
|
||||||
|
env.REDIS_PORT = options.redisPort;
|
||||||
|
env.REDIS_DBINDEX = options.redisDbIndex;
|
||||||
|
env.REDIS_USERNAME = options.redisUsername;
|
||||||
|
env.REDIS_PASSWORD = options.redisPassword;
|
||||||
|
env.REDIS_SOCKET = options.redisSocket;
|
||||||
|
} else {
|
||||||
|
env.REDIS_HOSTNAME = ServiceName.Redis;
|
||||||
|
}
|
||||||
|
|
||||||
|
env.TZ = options.serverTimeZone;
|
||||||
|
|
||||||
|
return env;
|
||||||
|
};
|
||||||
4555
docker/package-lock.json
generated
Normal file
4555
docker/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
38
docker/package.json
Normal file
38
docker/package.json
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"name": "immich-docker",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"description": "A docker-compose generator for Immich",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"build": "vite build",
|
||||||
|
"generate": "npx tsx src/index.ts",
|
||||||
|
"lint": "eslint . --max-warnings 0",
|
||||||
|
"lint:fix": "npm run lint -- --fix",
|
||||||
|
"format": "prettier --check .",
|
||||||
|
"format:fix": "prettier --write ."
|
||||||
|
},
|
||||||
|
"type": "module",
|
||||||
|
"exports": "./dist/immich-docker.js",
|
||||||
|
"author": "team@immich.app",
|
||||||
|
"private": true,
|
||||||
|
"license": "GNU Affero General Public License version 3",
|
||||||
|
"dependencies": {
|
||||||
|
"js-yaml": "^4.1.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@eslint/eslintrc": "^3.2.0",
|
||||||
|
"@eslint/js": "^9.16.0",
|
||||||
|
"@types/js-yaml": "^4.0.9",
|
||||||
|
"@types/node": "^22.10.2",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^8.18.0",
|
||||||
|
"@typescript-eslint/parser": "^8.18.0",
|
||||||
|
"eslint-plugin-unicorn": "^56.0.1",
|
||||||
|
"globals": "^15.13.0",
|
||||||
|
"json-schema-to-ts": "^3.1.1",
|
||||||
|
"prettier-plugin-organize-imports": "^4.1.0",
|
||||||
|
"prettier-plugin-sort-json": "^4.0.0",
|
||||||
|
"vite": "^6.0.3",
|
||||||
|
"vitest": "^2.1.8"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
global:
|
global:
|
||||||
scrape_interval: 15s
|
scrape_interval: 15s
|
||||||
evaluation_interval: 15s
|
evaluation_interval: 15s
|
||||||
|
|
||||||
scrape_configs:
|
scrape_configs:
|
||||||
|
|||||||
60
docker/src/index.ts
Normal file
60
docker/src/index.ts
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
import { mkdirSync, writeFileSync } from 'node:fs';
|
||||||
|
import { buildYaml } from '../lib/index';
|
||||||
|
import { GeneratorOptions } from '../lib/types';
|
||||||
|
|
||||||
|
const main = () => {
|
||||||
|
const commonOptions = {
|
||||||
|
releaseVersion: 'v1.122.0',
|
||||||
|
baseLocation: '/home/immich/library',
|
||||||
|
serverTimeZone: 'America/New_York',
|
||||||
|
healthchecks: true,
|
||||||
|
machineLearning: true,
|
||||||
|
containerNames: true,
|
||||||
|
// hardwareAcceleration: 'nvenc',
|
||||||
|
};
|
||||||
|
|
||||||
|
const postgresOptions = {
|
||||||
|
postgresUser: 'postgres',
|
||||||
|
postgresPassword: 'postgres',
|
||||||
|
postgresDatabase: 'immich',
|
||||||
|
postgresDataLocation: '/home/immich/database',
|
||||||
|
};
|
||||||
|
|
||||||
|
const defaultOptions: GeneratorOptions = { ...commonOptions, ...postgresOptions, redis: true };
|
||||||
|
|
||||||
|
const samples: Array<{ name: string; options: GeneratorOptions }> = [
|
||||||
|
{ name: 'defaults', options: defaultOptions },
|
||||||
|
{ name: 'no-names', options: { ...defaultOptions, containerNames: false } },
|
||||||
|
{ name: 'no-healthchecks', options: { ...defaultOptions, healthchecks: false } },
|
||||||
|
{ name: 'external-ioredis', options: { ...defaultOptions, redisUrl: 'ioredis://<base64>' } },
|
||||||
|
{ name: 'external-redis', options: { ...defaultOptions, redisHost: '192.168.0.5', redisPort: 1234 } },
|
||||||
|
{
|
||||||
|
name: 'external-postgres',
|
||||||
|
options: {
|
||||||
|
...defaultOptions,
|
||||||
|
postgresUrl: 'postgres://immich:immich@localhost:5432/immich',
|
||||||
|
postgresVectorExtension: 'pgvector',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'split-storage',
|
||||||
|
options: {
|
||||||
|
...defaultOptions,
|
||||||
|
thumbnailsLocation: '/home/fast/thumbs',
|
||||||
|
encodedVideoLocation: '/home/fast/encoded-videos',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
// TODO replace with vitest test files/scripts
|
||||||
|
mkdirSync('./examples', { recursive: true });
|
||||||
|
for (const { name, options } of samples) {
|
||||||
|
const spec = buildYaml(options);
|
||||||
|
|
||||||
|
const filename = `./examples/docker-compose.${name}.yaml`;
|
||||||
|
writeFileSync(filename, spec);
|
||||||
|
console.log(`Wrote ${filename}`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
main();
|
||||||
19
docker/tsconfig.json
Normal file
19
docker/tsconfig.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"allowJs": true,
|
||||||
|
"baseUrl": "./",
|
||||||
|
"checkJs": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"module": "es2020",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"outDir": "./dist",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"strict": true,
|
||||||
|
"target": "es2022",
|
||||||
|
"types": []
|
||||||
|
},
|
||||||
|
"include": ["lib"]
|
||||||
|
}
|
||||||
25
docker/tsconfig.src.json
Normal file
25
docker/tsconfig.src.json
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"baseUrl": "./",
|
||||||
|
"declaration": true,
|
||||||
|
"emitDecoratorMetadata": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"incremental": true,
|
||||||
|
"jsx": "react",
|
||||||
|
"lib": ["dom", "es2023"],
|
||||||
|
"module": "node16",
|
||||||
|
"moduleResolution": "node16",
|
||||||
|
"outDir": "./dist",
|
||||||
|
"preserveWatchOutput": true,
|
||||||
|
"removeComments": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"strict": true,
|
||||||
|
"target": "es2022"
|
||||||
|
},
|
||||||
|
"include": ["src", "lib"]
|
||||||
|
}
|
||||||
20
docker/vite.config.js
Normal file
20
docker/vite.config.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import { resolve } from 'node:path';
|
||||||
|
import { defineConfig } from 'vite';
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
resolve: {
|
||||||
|
alias: {
|
||||||
|
lib: resolve('lib'),
|
||||||
|
src: resolve('src'),
|
||||||
|
test: resolve('test'),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
build: {
|
||||||
|
lib: {
|
||||||
|
entry: resolve(__dirname, 'lib/index.ts'),
|
||||||
|
name: 'immich-docker',
|
||||||
|
// the proper extensions will be added
|
||||||
|
fileName: 'immich-docker',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -1 +1 @@
|
|||||||
22.11.0
|
22.12.0
|
||||||
|
|||||||
@@ -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?
|
### 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.
|
It is recommended to read about [Storage Template](https://immich.app/docs/administration/storage-template) before activation.
|
||||||
|
|
||||||
### Can I add my existing photo library?
|
### 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?
|
### 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?
|
### 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?
|
### 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?
|
### 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?
|
### 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?
|
### 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.
|
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>
|
<details>
|
||||||
<summary>docker-compose.yml</summary>
|
<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.
|
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 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.
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
## Database
|
## Database
|
||||||
|
|
||||||
### Why am I getting database ownership errors?
|
### 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.
|
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?
|
### 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.
|
A result of `on` means that checksums are enabled.
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@@ -419,7 +429,7 @@ docker exec -it immich_postgres psql --dbname=immich --username=<DB_USERNAME> --
|
|||||||
|
|
||||||
</details>
|
</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>
|
<details>
|
||||||
<summary>Check for database corruption</summary>
|
<summary>Check for database corruption</summary>
|
||||||
|
|||||||
@@ -65,12 +65,17 @@ docker compose up -d # Start remainder of Immich apps
|
|||||||
docker compose down -v # CAUTION! Deletes all Immich data to start from scratch
|
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
|
## 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
|
# 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 pull # Update to latest version of Immich (if desired)
|
||||||
docker compose create # Create Docker containers for Immich apps without running them
|
docker compose create # Create Docker containers for Immich apps without running them
|
||||||
docker start immich_postgres # Start Postgres server
|
docker start immich_postgres # Start Postgres server
|
||||||
sleep 10 # Wait for Postgres server to start up
|
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
|
# 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
|
docker compose up -d # Start remainder of Immich apps
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -209,4 +209,68 @@ When this option is enabled the `immich-server` will periodically make requests
|
|||||||
|
|
||||||
## Video Transcoding Settings
|
## 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).
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ The default configuration looks like this:
|
|||||||
},
|
},
|
||||||
"machineLearning": {
|
"machineLearning": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"url": ["http://immich-machine-learning:3003"],
|
"urls": ["http://immich-machine-learning:3003"],
|
||||||
"clip": {
|
"clip": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"modelName": "ViT-B-32__openai"
|
"modelName": "ViT-B-32__openai"
|
||||||
|
|||||||
@@ -7,10 +7,9 @@ import ExampleEnv from '!!raw-loader!../../../docker/example.env';
|
|||||||
|
|
||||||
# Docker Compose [Recommended]
|
# Docker Compose [Recommended]
|
||||||
|
|
||||||
Docker Compose is the recommended method to run Immich in production. Below are the steps to deploy Immich with Docker Compose.
|
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.
|
|
||||||
|
|
||||||
### 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.
|
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
|
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"
|
```bash title="Get docker-compose.yml file"
|
||||||
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
|
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
|
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"
|
```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
|
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
|
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>
|
<details>
|
||||||
<summary>
|
<summary>
|
||||||
@@ -54,31 +52,37 @@ Optionally, you can enable hardware acceleration for machine learning and transc
|
|||||||
<CodeBlock language="bash">{ExampleEnv}</CodeBlock>
|
<CodeBlock language="bash">{ExampleEnv}</CodeBlock>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
- Populate custom database information if necessary.
|
- Populate `UPLOAD_LOCATION` with your preferred location for storing backup assets. It should be a new directory on the server with enough free space.
|
||||||
- Populate `UPLOAD_LOCATION` with your preferred location for storing backup assets.
|
|
||||||
- Consider changing `DB_PASSWORD` to a custom value. Postgres is not publically exposed, so this password is only used for local authentication.
|
- 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.
|
- 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"
|
```bash title="Start the containers using docker compose command"
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
:::info Docker version
|
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`).
|
||||||
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].
|
|
||||||
|
|
||||||
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:
|
The Compose file './docker-compose.yml' is invalid because:
|
||||||
'name' does not match any of the regexes: '^x-'
|
'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
|
:::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]).
|
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
|
:::danger Breaking Changes
|
||||||
It is important to follow breaking updates to avoid problems. You can see versions that had breaking changes [here][breaking].
|
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.
|
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
|
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
|
:::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].
|
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
|
[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
|
[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
|
[releases]: https://github.com/immich-app/immich/releases
|
||||||
[docker-repo]: https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
|
|
||||||
|
|||||||
@@ -8,18 +8,25 @@ Hardware and software requirements for Immich:
|
|||||||
|
|
||||||
## Software
|
## Software
|
||||||
|
|
||||||
- [Docker](https://docs.docker.com/engine/install/)
|
Immich requires [**Docker**](https://docs.docker.com/get-started/get-docker/) with the **Docker Compose plugin**:
|
||||||
- [Docker Compose](https://docs.docker.com/compose/install/)
|
|
||||||
|
- **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
|
:::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
|
## Hardware
|
||||||
|
|
||||||
- **OS**: Recommended Linux operating system (Ubuntu, Debian, etc).
|
- **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/).
|
- Non-Linux OSes tend to provide a poor Docker experience and are strongly discouraged.
|
||||||
- macOS is supported with [Docker Desktop on Mac](https://docs.docker.com/desktop/install/mac-install/).
|
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.
|
- **RAM**: Minimum 4GB, recommended 6GB.
|
||||||
- **CPU**: Minimum 2 cores, recommended 4 cores.
|
- **CPU**: Minimum 2 cores, recommended 4 cores.
|
||||||
- **Storage**: Recommended Unix-compatible filesystem (EXT4, ZFS, APFS, etc.) with support for user/group ownership and permissions.
|
- **Storage**: Recommended Unix-compatible filesystem (EXT4, ZFS, APFS, etc.) with support for user/group ownership and permissions.
|
||||||
|
|||||||
@@ -14,13 +14,7 @@ Check the [requirements page](/docs/install/requirements) to get started.
|
|||||||
|
|
||||||
## Install and Launch via Docker Compose
|
## Install and Launch via Docker Compose
|
||||||
|
|
||||||
Follow the [Docker Compose (Recommended)](/docs/install/docker-compose) instructions
|
Follow the [Docker Compose (Recommended)](/docs/install/docker-compose) instructions to install the server.
|
||||||
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".
|
|
||||||
|
|
||||||
## Try the Web UI
|
## Try the Web UI
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,6 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@docusaurus/module-type-aliases": "~3.5.2",
|
"@docusaurus/module-type-aliases": "~3.5.2",
|
||||||
"@tsconfig/docusaurus": "^2.0.2",
|
|
||||||
"prettier": "^3.2.4",
|
"prettier": "^3.2.4",
|
||||||
"typescript": "^5.1.6"
|
"typescript": "^5.1.6"
|
||||||
},
|
},
|
||||||
@@ -56,6 +55,6 @@
|
|||||||
"node": ">=20"
|
"node": ">=20"
|
||||||
},
|
},
|
||||||
"volta": {
|
"volta": {
|
||||||
"node": "22.11.0"
|
"node": "22.12.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,6 +89,11 @@ const projects: CommunityProjectProps[] = [
|
|||||||
'Share your Immich photos and albums in a safe way without exposing your Immich instance to the public.',
|
'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',
|
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 {
|
function CommunityProject({ title, description, url }: CommunityProjectProps): JSX.Element {
|
||||||
|
|||||||
8
docs/static/archived-versions.json
vendored
8
docs/static/archived-versions.json
vendored
@@ -1,4 +1,12 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"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",
|
"label": "v1.122.2",
|
||||||
"url": "https://v1.122.2.archive.immich.app"
|
"url": "https://v1.122.2.archive.immich.app"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
22.11.0
|
22.12.0
|
||||||
|
|||||||
153
e2e/package-lock.json
generated
153
e2e/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "immich-e2e",
|
"name": "immich-e2e",
|
||||||
"version": "1.122.2",
|
"version": "1.123.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "immich-e2e",
|
"name": "immich-e2e",
|
||||||
"version": "1.122.2",
|
"version": "1.123.0",
|
||||||
"license": "GNU Affero General Public License version 3",
|
"license": "GNU Affero General Public License version 3",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/eslintrc": "^3.1.0",
|
"@eslint/eslintrc": "^3.1.0",
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
"@immich/sdk": "file:../open-api/typescript-sdk",
|
"@immich/sdk": "file:../open-api/typescript-sdk",
|
||||||
"@playwright/test": "^1.44.1",
|
"@playwright/test": "^1.44.1",
|
||||||
"@types/luxon": "^3.4.2",
|
"@types/luxon": "^3.4.2",
|
||||||
"@types/node": "^22.9.0",
|
"@types/node": "^22.10.2",
|
||||||
"@types/oidc-provider": "^8.5.1",
|
"@types/oidc-provider": "^8.5.1",
|
||||||
"@types/pg": "^8.11.0",
|
"@types/pg": "^8.11.0",
|
||||||
"@types/pngjs": "^6.0.4",
|
"@types/pngjs": "^6.0.4",
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
"eslint": "^9.14.0",
|
"eslint": "^9.14.0",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
"eslint-plugin-prettier": "^5.1.3",
|
||||||
"eslint-plugin-unicorn": "^55.0.0",
|
"eslint-plugin-unicorn": "^56.0.1",
|
||||||
"exiftool-vendored": "^28.3.1",
|
"exiftool-vendored": "^28.3.1",
|
||||||
"globals": "^15.9.0",
|
"globals": "^15.9.0",
|
||||||
"jose": "^5.6.3",
|
"jose": "^5.6.3",
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
},
|
},
|
||||||
"../cli": {
|
"../cli": {
|
||||||
"name": "@immich/cli",
|
"name": "@immich/cli",
|
||||||
"version": "2.2.35",
|
"version": "2.2.37",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "GNU Affero General Public License version 3",
|
"license": "GNU Affero General Public License version 3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
"@types/cli-progress": "^3.11.0",
|
"@types/cli-progress": "^3.11.0",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/mock-fs": "^4.13.1",
|
"@types/mock-fs": "^4.13.1",
|
||||||
"@types/node": "^22.9.0",
|
"@types/node": "^22.10.2",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
||||||
"@typescript-eslint/parser": "^8.15.0",
|
"@typescript-eslint/parser": "^8.15.0",
|
||||||
"@vitest/coverage-v8": "^2.0.5",
|
"@vitest/coverage-v8": "^2.0.5",
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
"eslint": "^9.14.0",
|
"eslint": "^9.14.0",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
"eslint-plugin-prettier": "^5.1.3",
|
||||||
"eslint-plugin-unicorn": "^55.0.0",
|
"eslint-plugin-unicorn": "^56.0.1",
|
||||||
"globals": "^15.9.0",
|
"globals": "^15.9.0",
|
||||||
"mock-fs": "^5.2.0",
|
"mock-fs": "^5.2.0",
|
||||||
"prettier": "^3.2.5",
|
"prettier": "^3.2.5",
|
||||||
@@ -92,14 +92,14 @@
|
|||||||
},
|
},
|
||||||
"../open-api/typescript-sdk": {
|
"../open-api/typescript-sdk": {
|
||||||
"name": "@immich/sdk",
|
"name": "@immich/sdk",
|
||||||
"version": "1.122.2",
|
"version": "1.123.0",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "GNU Affero General Public License version 3",
|
"license": "GNU Affero General Public License version 3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@oazapfts/runtime": "^1.0.2"
|
"@oazapfts/runtime": "^1.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^22.9.0",
|
"@types/node": "^22.10.2",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1658,13 +1658,13 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "22.9.0",
|
"version": "22.10.2",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz",
|
||||||
"integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==",
|
"integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~6.19.8"
|
"undici-types": "~6.20.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/normalize-package-data": {
|
"node_modules/@types/normalize-package-data": {
|
||||||
@@ -2381,9 +2381,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/browserslist": {
|
"node_modules/browserslist": {
|
||||||
"version": "4.23.0",
|
"version": "4.24.3",
|
||||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz",
|
||||||
"integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
|
"integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2399,11 +2399,12 @@
|
|||||||
"url": "https://github.com/sponsors/ai"
|
"url": "https://github.com/sponsors/ai"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"caniuse-lite": "^1.0.30001587",
|
"caniuse-lite": "^1.0.30001688",
|
||||||
"electron-to-chromium": "^1.4.668",
|
"electron-to-chromium": "^1.5.73",
|
||||||
"node-releases": "^2.0.14",
|
"node-releases": "^2.0.19",
|
||||||
"update-browserslist-db": "^1.0.13"
|
"update-browserslist-db": "^1.1.1"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"browserslist": "cli.js"
|
"browserslist": "cli.js"
|
||||||
@@ -2524,9 +2525,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001591",
|
"version": "1.0.30001689",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001591.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001689.tgz",
|
||||||
"integrity": "sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==",
|
"integrity": "sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2541,7 +2542,8 @@
|
|||||||
"type": "github",
|
"type": "github",
|
||||||
"url": "https://github.com/sponsors/ai"
|
"url": "https://github.com/sponsors/ai"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"license": "CC-BY-4.0"
|
||||||
},
|
},
|
||||||
"node_modules/chai": {
|
"node_modules/chai": {
|
||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
@@ -2757,12 +2759,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/core-js-compat": {
|
"node_modules/core-js-compat": {
|
||||||
"version": "3.37.1",
|
"version": "3.39.0",
|
||||||
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz",
|
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz",
|
||||||
"integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==",
|
"integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"browserslist": "^4.23.0"
|
"browserslist": "^4.24.2"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -2943,10 +2946,11 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.4.687",
|
"version": "1.5.74",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.687.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.74.tgz",
|
||||||
"integrity": "sha512-Ic85cOuXSP6h7KM0AIJ2hpJ98Bo4hyTUjc4yjMbkvD+8yTxEhfK9+8exT2KKYsSjnCn2tGsKVSZwE7ZgTORQCw==",
|
"integrity": "sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/emoji-regex": {
|
"node_modules/emoji-regex": {
|
||||||
"version": "8.0.0",
|
"version": "8.0.0",
|
||||||
@@ -3063,10 +3067,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/escalade": {
|
"node_modules/escalade": {
|
||||||
"version": "3.1.2",
|
"version": "3.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
||||||
"integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
|
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
@@ -3194,19 +3199,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-unicorn": {
|
"node_modules/eslint-plugin-unicorn": {
|
||||||
"version": "55.0.0",
|
"version": "56.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-55.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.1.tgz",
|
||||||
"integrity": "sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==",
|
"integrity": "sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-validator-identifier": "^7.24.5",
|
"@babel/helper-validator-identifier": "^7.24.7",
|
||||||
"@eslint-community/eslint-utils": "^4.4.0",
|
"@eslint-community/eslint-utils": "^4.4.0",
|
||||||
"ci-info": "^4.0.0",
|
"ci-info": "^4.0.0",
|
||||||
"clean-regexp": "^1.0.0",
|
"clean-regexp": "^1.0.0",
|
||||||
"core-js-compat": "^3.37.0",
|
"core-js-compat": "^3.38.1",
|
||||||
"esquery": "^1.5.0",
|
"esquery": "^1.6.0",
|
||||||
"globals": "^15.7.0",
|
"globals": "^15.9.0",
|
||||||
"indent-string": "^4.0.0",
|
"indent-string": "^4.0.0",
|
||||||
"is-builtin-module": "^3.2.1",
|
"is-builtin-module": "^3.2.1",
|
||||||
"jsesc": "^3.0.2",
|
"jsesc": "^3.0.2",
|
||||||
@@ -3214,7 +3219,7 @@
|
|||||||
"read-pkg-up": "^7.0.1",
|
"read-pkg-up": "^7.0.1",
|
||||||
"regexp-tree": "^0.1.27",
|
"regexp-tree": "^0.1.27",
|
||||||
"regjsparser": "^0.10.0",
|
"regjsparser": "^0.10.0",
|
||||||
"semver": "^7.6.1",
|
"semver": "^7.6.3",
|
||||||
"strip-indent": "^3.0.0"
|
"strip-indent": "^3.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -3311,10 +3316,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esquery": {
|
"node_modules/esquery": {
|
||||||
"version": "1.5.0",
|
"version": "1.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
|
||||||
"integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
|
"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"estraverse": "^5.1.0"
|
"estraverse": "^5.1.0"
|
||||||
},
|
},
|
||||||
@@ -3377,9 +3383,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/exiftool-vendored": {
|
"node_modules/exiftool-vendored": {
|
||||||
"version": "28.7.0",
|
"version": "28.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/exiftool-vendored/-/exiftool-vendored-28.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/exiftool-vendored/-/exiftool-vendored-28.8.0.tgz",
|
||||||
"integrity": "sha512-0zoq6kBS1yPjzJs+p0qZDinWEA72PTKoRk5ETYKfmeRcZAkhv83Y3HCpbb/LdgJJywfm8BcIJGezrBHvL7dVnQ==",
|
"integrity": "sha512-R7tirJLr9fWuH9JS/KFFLB+O7jNGKuPXGxREc6YybYangEudGb+X8ERsYXk9AifMiAWh/2agNfbgkbcQcF+MxA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -3390,14 +3396,14 @@
|
|||||||
"luxon": "^3.5.0"
|
"luxon": "^3.5.0"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"exiftool-vendored.exe": "12.99.0",
|
"exiftool-vendored.exe": "13.0.0",
|
||||||
"exiftool-vendored.pl": "12.99.0"
|
"exiftool-vendored.pl": "13.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/exiftool-vendored.exe": {
|
"node_modules/exiftool-vendored.exe": {
|
||||||
"version": "12.99.0",
|
"version": "13.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.exe/-/exiftool-vendored.exe-12.99.0.tgz",
|
"resolved": "https://registry.npmjs.org/exiftool-vendored.exe/-/exiftool-vendored.exe-13.0.0.tgz",
|
||||||
"integrity": "sha512-ffpJHCzC9OYJqw4JlPNtCwRy02jwhmnSJEF/QqEjpuIWDEnlRBQP/yWRh1Nw21K1R4FB4yG5PlCgEDu09VQz/w==",
|
"integrity": "sha512-4zAMuFGgxZkOoyQIzZMHv1HlvgyJK3AkNqjAgm8A8V0UmOZO7yv3pH49cDV1OduzFJqgs6yQ6eG4OGydhKtxlg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
@@ -3406,9 +3412,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/exiftool-vendored.pl": {
|
"node_modules/exiftool-vendored.pl": {
|
||||||
"version": "12.99.0",
|
"version": "13.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.pl/-/exiftool-vendored.pl-12.99.0.tgz",
|
"resolved": "https://registry.npmjs.org/exiftool-vendored.pl/-/exiftool-vendored.pl-13.0.1.tgz",
|
||||||
"integrity": "sha512-qRVEPQxtoerXF+izJ0O7jGAr5o0Uyvnyu7ao5DTKzF+V7Fv3SurE0l43oCeZPFKo/Ld4V7vEylhFCm4IHVZKWA==",
|
"integrity": "sha512-+BRRzjselpWudKR0ltAW5SUt9T82D+gzQN8DdOQUgnSVWWp7oLCeTGBRptbQz+436Ihn/mPzmo/xnf0cv/Qw1A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
@@ -4765,10 +4771,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/node-releases": {
|
"node_modules/node-releases": {
|
||||||
"version": "2.0.14",
|
"version": "2.0.19",
|
||||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
|
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
|
||||||
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
|
"integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/nopt": {
|
"node_modules/nopt": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
@@ -5819,10 +5826,11 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "7.6.2",
|
"version": "7.6.3",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
|
||||||
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
|
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "ISC",
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
},
|
},
|
||||||
@@ -6409,9 +6417,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/undici-types": {
|
"node_modules/undici-types": {
|
||||||
"version": "6.19.8",
|
"version": "6.20.0",
|
||||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
|
||||||
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
|
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
@@ -6425,9 +6433,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/update-browserslist-db": {
|
"node_modules/update-browserslist-db": {
|
||||||
"version": "1.0.13",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
|
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
|
||||||
"integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
|
"integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -6443,9 +6451,10 @@
|
|||||||
"url": "https://github.com/sponsors/ai"
|
"url": "https://github.com/sponsors/ai"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"escalade": "^3.1.1",
|
"escalade": "^3.2.0",
|
||||||
"picocolors": "^1.0.0"
|
"picocolors": "^1.1.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"update-browserslist-db": "cli.js"
|
"update-browserslist-db": "cli.js"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "immich-e2e",
|
"name": "immich-e2e",
|
||||||
"version": "1.122.2",
|
"version": "1.123.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
"@immich/sdk": "file:../open-api/typescript-sdk",
|
"@immich/sdk": "file:../open-api/typescript-sdk",
|
||||||
"@playwright/test": "^1.44.1",
|
"@playwright/test": "^1.44.1",
|
||||||
"@types/luxon": "^3.4.2",
|
"@types/luxon": "^3.4.2",
|
||||||
"@types/node": "^22.9.0",
|
"@types/node": "^22.10.2",
|
||||||
"@types/oidc-provider": "^8.5.1",
|
"@types/oidc-provider": "^8.5.1",
|
||||||
"@types/pg": "^8.11.0",
|
"@types/pg": "^8.11.0",
|
||||||
"@types/pngjs": "^6.0.4",
|
"@types/pngjs": "^6.0.4",
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
"eslint": "^9.14.0",
|
"eslint": "^9.14.0",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
"eslint-plugin-prettier": "^5.1.3",
|
||||||
"eslint-plugin-unicorn": "^55.0.0",
|
"eslint-plugin-unicorn": "^56.0.1",
|
||||||
"exiftool-vendored": "^28.3.1",
|
"exiftool-vendored": "^28.3.1",
|
||||||
"globals": "^15.9.0",
|
"globals": "^15.9.0",
|
||||||
"jose": "^5.6.3",
|
"jose": "^5.6.3",
|
||||||
@@ -53,6 +53,6 @@
|
|||||||
"vitest": "^2.0.5"
|
"vitest": "^2.0.5"
|
||||||
},
|
},
|
||||||
"volta": {
|
"volta": {
|
||||||
"node": "22.11.0"
|
"node": "22.12.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { LibraryResponseDto, LoginResponseDto, getAllLibraries, scanLibrary } from '@immich/sdk';
|
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 { Socket } from 'socket.io-client';
|
||||||
import { userDto, uuidDto } from 'src/fixtures';
|
import { userDto, uuidDto } from 'src/fixtures';
|
||||||
import { errorDto } from 'src/responses';
|
import { errorDto } from 'src/responses';
|
||||||
@@ -403,68 +403,157 @@ describe('/libraries', () => {
|
|||||||
utils.removeImageFile(`${testAssetDir}/temp/folder} b/assetB.png`);
|
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, {
|
const library = await utils.createLibrary(admin.accessToken, {
|
||||||
ownerId: admin.userId,
|
ownerId: admin.userId,
|
||||||
importPaths: [`${testAssetDirInternal}/temp`],
|
importPaths: [`${testAssetDirInternal}/temp/folder${char}1`, `${testAssetDirInternal}/temp/folder${char}2`],
|
||||||
});
|
});
|
||||||
|
|
||||||
utils.createImageFile(`${testAssetDir}/temp/directoryA/assetB.jpg`);
|
utils.createImageFile(`${testAssetDir}/temp/folder${char}1/asset1.png`);
|
||||||
await utimes(`${testAssetDir}/temp/directoryA/assetB.jpg`, 447_775_200_000);
|
utils.createImageFile(`${testAssetDir}/temp/folder${char}2/asset2.png`);
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
const { status } = await request(app)
|
const { status } = await request(app)
|
||||||
.post(`/libraries/${library.id}/scan`)
|
.post(`/libraries/${library.id}/scan`)
|
||||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
.send({ refreshModifiedFiles: true });
|
.send();
|
||||||
expect(status).toBe(204);
|
expect(status).toBe(204);
|
||||||
|
|
||||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
|
||||||
|
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`],
|
||||||
|
});
|
||||||
|
|
||||||
|
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');
|
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||||
utils.removeImageFile(`${testAssetDir}/temp/directoryA/assetB.jpg`);
|
|
||||||
|
|
||||||
const { assets } = await utils.searchAssets(admin.accessToken, {
|
const { assets } = await utils.searchAssets(admin.accessToken, {
|
||||||
libraryId: library.id,
|
libraryId: library.id,
|
||||||
model: 'NIKON D750',
|
|
||||||
});
|
});
|
||||||
expect(assets.count).toBe(1);
|
|
||||||
|
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 () => {
|
it('should not reimport unmodified files', async () => {
|
||||||
const library = await utils.createLibrary(admin.accessToken, {
|
const library = await utils.createLibrary(admin.accessToken, {
|
||||||
ownerId: admin.userId,
|
ownerId: admin.userId,
|
||||||
importPaths: [`${testAssetDirInternal}/temp`],
|
importPaths: [`${testAssetDirInternal}/temp/reimport`],
|
||||||
});
|
});
|
||||||
|
|
||||||
utils.createImageFile(`${testAssetDir}/temp/directoryA/assetB.jpg`);
|
utils.createImageFile(`${testAssetDir}/temp/reimport/asset.jpg`);
|
||||||
await utimes(`${testAssetDir}/temp/directoryA/assetB.jpg`, 447_775_200_000);
|
await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_000);
|
||||||
|
|
||||||
await scan(admin.accessToken, library.id);
|
await scan(admin.accessToken, library.id);
|
||||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
|
||||||
cpSync(`${testAssetDir}/albums/nature/tanners_ridge.jpg`, `${testAssetDir}/temp/directoryA/assetB.jpg`);
|
cpSync(`${testAssetDir}/albums/nature/tanners_ridge.jpg`, `${testAssetDir}/temp/reimport/asset.jpg`);
|
||||||
await utimes(`${testAssetDir}/temp/directoryA/assetB.jpg`, 447_775_200_000);
|
await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_000);
|
||||||
|
|
||||||
const { status } = await request(app)
|
const { status } = await request(app)
|
||||||
.post(`/libraries/${library.id}/scan`)
|
.post(`/libraries/${library.id}/scan`)
|
||||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
.send({ refreshModifiedFiles: true });
|
.send();
|
||||||
expect(status).toBe(204);
|
expect(status).toBe(204);
|
||||||
|
|
||||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||||
utils.removeImageFile(`${testAssetDir}/temp/directoryA/assetB.jpg`);
|
|
||||||
|
|
||||||
const { assets } = await utils.searchAssets(admin.accessToken, {
|
const { assets } = await utils.searchAssets(admin.accessToken, {
|
||||||
libraryId: library.id,
|
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 () => {
|
it('should set an asset offline if its file is missing', async () => {
|
||||||
@@ -601,6 +690,298 @@ describe('/libraries', () => {
|
|||||||
|
|
||||||
expect(assets).toEqual(assetsBefore);
|
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', () => {
|
describe('POST /libraries/:id/validate', () => {
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ describe('/search', () => {
|
|||||||
{ latitude: 31.634_16, longitude: -7.999_94 }, // marrakesh
|
{ latitude: 31.634_16, longitude: -7.999_94 }, // marrakesh
|
||||||
{ latitude: 38.523_735_4, longitude: -78.488_619_4 }, // tanners ridge
|
{ latitude: 38.523_735_4, longitude: -78.488_619_4 }, // tanners ridge
|
||||||
{ latitude: 59.938_63, longitude: 30.314_13 }, // st. petersburg
|
{ latitude: 59.938_63, longitude: 30.314_13 }, // st. petersburg
|
||||||
|
{ latitude: 0, longitude: 0 }, // null island
|
||||||
];
|
];
|
||||||
|
|
||||||
const updates = coordinates.map((dto, i) =>
|
const updates = coordinates.map((dto, i) =>
|
||||||
@@ -532,7 +533,7 @@ describe('/search', () => {
|
|||||||
expect(body).toEqual(errorDto.unauthorized);
|
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)
|
const { status, body } = await request(app)
|
||||||
.get('/search/suggestions?type=country&includeNull=true')
|
.get('/search/suggestions?type=country&includeNull=true')
|
||||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
@@ -555,7 +556,29 @@ describe('/search', () => {
|
|||||||
expect(status).toBe(200);
|
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)
|
const { status, body } = await request(app)
|
||||||
.get('/search/suggestions?type=state&includeNull=true')
|
.get('/search/suggestions?type=state&includeNull=true')
|
||||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
@@ -579,7 +602,30 @@ describe('/search', () => {
|
|||||||
expect(status).toBe(200);
|
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)
|
const { status, body } = await request(app)
|
||||||
.get('/search/suggestions?type=city&includeNull=true')
|
.get('/search/suggestions?type=city&includeNull=true')
|
||||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
@@ -604,7 +650,31 @@ describe('/search', () => {
|
|||||||
expect(status).toBe(200);
|
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)
|
const { status, body } = await request(app)
|
||||||
.get('/search/suggestions?type=camera-make&includeNull=true')
|
.get('/search/suggestions?type=camera-make&includeNull=true')
|
||||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
@@ -621,7 +691,23 @@ describe('/search', () => {
|
|||||||
expect(status).toBe(200);
|
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)
|
const { status, body } = await request(app)
|
||||||
.get('/search/suggestions?type=camera-model&includeNull=true')
|
.get('/search/suggestions?type=camera-model&includeNull=true')
|
||||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
@@ -642,5 +728,26 @@ describe('/search', () => {
|
|||||||
]);
|
]);
|
||||||
expect(status).toBe(200);
|
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);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Submodule e2e/test-assets updated: 99544a2004...9e3b964b08
38
i18n/be.json
38
i18n/be.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Аднавіць",
|
"about": "Аб",
|
||||||
"account": "Уліковы запіс",
|
"account": "Уліковы запіс",
|
||||||
"account_settings": "Налады ўліковага запісу",
|
"account_settings": "Налады ўліковага запісу",
|
||||||
"acknowledge": "Пацвердзіць",
|
"acknowledge": "Пацвердзіць",
|
||||||
@@ -23,11 +23,13 @@
|
|||||||
"add_to": "Дадаць у...",
|
"add_to": "Дадаць у...",
|
||||||
"add_to_album": "Дадаць у альбом",
|
"add_to_album": "Дадаць у альбом",
|
||||||
"add_to_shared_album": "Дадаць у агульны альбом",
|
"add_to_shared_album": "Дадаць у агульны альбом",
|
||||||
|
"add_url": "Дадаць URL",
|
||||||
"added_to_archive": "Дададзена ў архіў",
|
"added_to_archive": "Дададзена ў архіў",
|
||||||
"added_to_favorites": "Дададзена ў абраныя",
|
"added_to_favorites": "Дададзена ў абраныя",
|
||||||
"added_to_favorites_count": "Дададзена {count, number} да абранага",
|
"added_to_favorites_count": "Дададзена {count, number} да абранага",
|
||||||
"admin": {
|
"admin": {
|
||||||
"add_exclusion_pattern_description": "Дадайце шаблоны выключэнняў. Падтрымліваецца выкарыстанне сімвалаў * , ** і ?. Каб ігнараваць усе файлы ў любой дырэкторыі з назвай \"Raw\", выкарыстоўвайце \"**/Raw/**\". Каб ігнараваць усе файлы, якія заканчваюцца на \".tif\", выкарыстоўвайце \"**/.tif\". Каб ігнараваць абсолютны шлях, выкарыстоўвайце \"/path/to/ignore/**\".",
|
"add_exclusion_pattern_description": "Дадайце шаблоны выключэнняў. Падтрымліваецца выкарыстанне сімвалаў * , ** і ?. Каб ігнараваць усе файлы ў любой дырэкторыі з назвай \"Raw\", выкарыстоўвайце \"**/Raw/**\". Каб ігнараваць усе файлы, якія заканчваюцца на \".tif\", выкарыстоўвайце \"**/.tif\". Каб ігнараваць абсолютны шлях, выкарыстоўвайце \"/path/to/ignore/**\".",
|
||||||
|
"asset_offline_description": "Гэты знешні бібліятэчны актыў больш не знойдзены на дыску і быў перамешчаны ў сметніцу. Калі файл быў перамешчаны ў межах бібліятэкі, праверце вашу хроніку для новага адпаведнага актыва. Каб аднавіць гэты актыў, пераканайцеся, што шлях да файла ніжэй даступны для Immich і адскануйце бібліятэку.",
|
||||||
"authentication_settings": "Налады праверкі сапраўднасці",
|
"authentication_settings": "Налады праверкі сапраўднасці",
|
||||||
"authentication_settings_description": "Кіраванне паролямі, OAuth, і іншыя налады праверкі сапраўднасці",
|
"authentication_settings_description": "Кіраванне паролямі, OAuth, і іншыя налады праверкі сапраўднасці",
|
||||||
"authentication_settings_disable_all": "Вы ўпэўнены, што жадаеце адключыць усе спосабы логіну? Логін будзе цалкам адключаны.",
|
"authentication_settings_disable_all": "Вы ўпэўнены, што жадаеце адключыць усе спосабы логіну? Логін будзе цалкам адключаны.",
|
||||||
@@ -35,12 +37,27 @@
|
|||||||
"background_task_job": "Фонавыя заданні",
|
"background_task_job": "Фонавыя заданні",
|
||||||
"backup_database": "Рэзервовая копія базы даных",
|
"backup_database": "Рэзервовая копія базы даных",
|
||||||
"backup_database_enable_description": "Уключыць рэзерваванне базы даных",
|
"backup_database_enable_description": "Уключыць рэзерваванне базы даных",
|
||||||
|
"backup_keep_last_amount": "Колькасць папярэдніх рэзервовых копій для захавання",
|
||||||
"backup_settings": "Налады рэзервовага капіявання",
|
"backup_settings": "Налады рэзервовага капіявання",
|
||||||
|
"backup_settings_description": "Кіраванне наладкамі рэзервовага капіявання базы даных",
|
||||||
"check_all": "Праверыць усе",
|
"check_all": "Праверыць усе",
|
||||||
|
"cleared_jobs": "Ачышчаны заданні для: {job}",
|
||||||
|
"config_set_by_file": "Канфігурацыя ў зараз усталявана праз файл канфігурацыі",
|
||||||
"confirm_delete_library": "Вы ўпэўнены што жадаеце выдаліць {library} бібліятэку?",
|
"confirm_delete_library": "Вы ўпэўнены што жадаеце выдаліць {library} бібліятэку?",
|
||||||
|
"confirm_delete_library_assets": "Вы ўпэўнены, што хочаце выдаліць гэтую бібліятэку? Гэта прывядзе да выдалення {count, plural, one {# актыву} other {усіх # актываў}}, якія змяшчаюцца ў Immich, і гэта дзеянне немагчыма будзе адмяніць. Файлы застануцца на дыску.",
|
||||||
"confirm_email_below": "Каб пацвердзіць, увядзіце \"{email}\" ніжэй",
|
"confirm_email_below": "Каб пацвердзіць, увядзіце \"{email}\" ніжэй",
|
||||||
|
"confirm_reprocess_all_faces": "Вы ўпэўнены, што хочаце пераапрацаваць усе твары? Гэта таксама прывядзе да выдалення імя людзей.",
|
||||||
"confirm_user_password_reset": "Вы ўпэўнены ў тым, што жадаеце скінуць пароль {user}?",
|
"confirm_user_password_reset": "Вы ўпэўнены ў тым, што жадаеце скінуць пароль {user}?",
|
||||||
|
"create_job": "Стварыць заданне",
|
||||||
|
"cron_expression": "Выраз Cron",
|
||||||
|
"cron_expression_description": "Усталюйце інтэрвал сканавання, выкарыстоўваючы фармат cron. Для атрымання дадатковай інфармацыі, калі ласка, звярніцеся, напрыклад, да <link>Crontab Guru</link>",
|
||||||
|
"cron_expression_presets": "Прадустановкі выразаў Cron",
|
||||||
"disable_login": "Адключыць уваход",
|
"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": "ПАПЯРЭДЖАННЕ: Гэта дзеянне неадкладна выдаліць карыстальніка і ўсе аб'екты. Гэта дзеянне не можа быць адроблена і файлы немагчыма будзе аднавіць.",
|
"force_delete_user_warning": "ПАПЯРЭДЖАННЕ: Гэта дзеянне неадкладна выдаліць карыстальніка і ўсе аб'екты. Гэта дзеянне не можа быць адроблена і файлы немагчыма будзе аднавіць.",
|
||||||
"image_format": "Фармат",
|
"image_format": "Фармат",
|
||||||
"image_preview_title": "Налады папярэдняга прагляду",
|
"image_preview_title": "Налады папярэдняга прагляду",
|
||||||
@@ -53,6 +70,10 @@
|
|||||||
"total": "Усяго",
|
"total": "Усяго",
|
||||||
"user": "Карыстальнік",
|
"user": "Карыстальнік",
|
||||||
"user_id": "ID карыстальніка",
|
"user_id": "ID карыстальніка",
|
||||||
|
"user_purchase_settings": "Купля",
|
||||||
|
"user_purchase_settings_description": "Кіруйце пакупкамі",
|
||||||
|
"user_role_set": "Прызначыць {user} як {role}",
|
||||||
|
"user_usage_detail": "Падрабязнасці выкарыстання карыстальнікам",
|
||||||
"user_usage_stats": "Статыстыка карыстання ўліковага запісу",
|
"user_usage_stats": "Статыстыка карыстання ўліковага запісу",
|
||||||
"user_usage_stats_description": "Прагледзець статыстыку карыстання ўліковага запісу",
|
"user_usage_stats_description": "Прагледзець статыстыку карыстання ўліковага запісу",
|
||||||
"username": "Імя карыстальніка",
|
"username": "Імя карыстальніка",
|
||||||
@@ -61,15 +82,26 @@
|
|||||||
"validate": "Праверыць",
|
"validate": "Праверыць",
|
||||||
"variables": "Пераменныя",
|
"variables": "Пераменныя",
|
||||||
"version": "Версія",
|
"version": "Версія",
|
||||||
|
"version_announcement_closing": "Твой сябар, Алекс",
|
||||||
|
"version_announcement_message": "Вітаем! Даступная новая версія Immich. Калі ласка, знайдзіце час, каб прачытаць <link>нататкі да выпуску</link>, каб пераканацца, што ваша налада актуальная і пазбегнуць магчымых памылак канфігурацыі, асабліва калі вы карыстаецеся WatchTower або іншымі механізмамі, якія аўтаматычна абнаўляюць вашу інстанцыю Immich.",
|
||||||
|
"version_history": "Гісторыя версій",
|
||||||
|
"version_history_item": "Усталявана версія {version} на {date}",
|
||||||
"video": "Відэа",
|
"video": "Відэа",
|
||||||
|
"video_hover_setting": "Прайграванне мініяцюры відэа пры навядзенні курсора",
|
||||||
|
"video_hover_setting_description": "Прайграванне мініяцюры відэа пры навядзенні курсора на элемент. Нават калі функцыя адключана, прайграванне можна пачаць, навёўшы курсор на значок прайгравання.",
|
||||||
"videos": "Відэа",
|
"videos": "Відэа",
|
||||||
|
"videos_count": "{count, plural, one {# відэа} астатнія {# відэа}}",
|
||||||
"view": "Прагляд",
|
"view": "Прагляд",
|
||||||
"view_album": "Праглядзець альбом",
|
"view_album": "Праглядзець альбом",
|
||||||
"view_all": "Праглядзець усё",
|
"view_all": "Праглядзець усё",
|
||||||
"view_all_users": "Праглядзець усех карыстальнікаў",
|
"view_all_users": "Праглядзець усех карыстальнікаў",
|
||||||
"view_in_timeline": "Паглядзець на хроніцы",
|
"view_in_timeline": "Паглядзець хроніку",
|
||||||
"view_links": "Праглядзець спасылкі",
|
"view_links": "Праглядзець спасылкі",
|
||||||
"view_name": "Прагледзець",
|
"view_name": "Прагледзець",
|
||||||
|
"view_next_asset": "Паказаць наступны аб'ект",
|
||||||
|
"view_previous_asset": "Праглядзець папярэдні аб'ект",
|
||||||
|
"view_stack": "Прагляд стэка",
|
||||||
|
"visibility_changed": "Відзімасць змянілася для {count, plural, one {# чалавек(-аў)} астатніх {# чалавек}}",
|
||||||
"waiting": "Чакаюць",
|
"waiting": "Чакаюць",
|
||||||
"warning": "Папярэджанне",
|
"warning": "Папярэджанне",
|
||||||
"week": "Тыдзень",
|
"week": "Тыдзень",
|
||||||
@@ -79,5 +111,5 @@
|
|||||||
"years_ago": "{years, plural, one {# год} other {# гадоў}} таму",
|
"years_ago": "{years, plural, one {# год} other {# гадоў}} таму",
|
||||||
"yes": "Так",
|
"yes": "Так",
|
||||||
"you_dont_have_any_shared_links": "У вас няма абагуленых спасылак",
|
"you_dont_have_any_shared_links": "У вас няма абагуленых спасылак",
|
||||||
"zoom_image": "Павелічэнне відарыса"
|
"zoom_image": "Павялічыць відарыс"
|
||||||
}
|
}
|
||||||
|
|||||||
145
i18n/bg.json
145
i18n/bg.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Обновяване",
|
"about": "За Immich",
|
||||||
"account": "Акаунт",
|
"account": "Акаунт",
|
||||||
"account_settings": "Настройки на профила",
|
"account_settings": "Настройки на профила",
|
||||||
"acknowledge": "Потвърждавам",
|
"acknowledge": "Потвърждавам",
|
||||||
@@ -23,18 +23,23 @@
|
|||||||
"add_to": "Добави към...",
|
"add_to": "Добави към...",
|
||||||
"add_to_album": "Добави към албум",
|
"add_to_album": "Добави към албум",
|
||||||
"add_to_shared_album": "Добави към споделен албум",
|
"add_to_shared_album": "Добави към споделен албум",
|
||||||
|
"add_url": "Добави URL",
|
||||||
"added_to_archive": "Добавено към архива",
|
"added_to_archive": "Добавено към архива",
|
||||||
"added_to_favorites": "Добавени към любимите ви",
|
"added_to_favorites": "Добавени към любимите ви",
|
||||||
"added_to_favorites_count": "Добавени {count, number} към любими",
|
"added_to_favorites_count": "Добавени {count, number} към любими",
|
||||||
"admin": {
|
"admin": {
|
||||||
"add_exclusion_pattern_description": "Добави модели за изключване. Поддържа се \"globbing\" с помощта на *, ** и ?. За да игнорирате всички файлове в директория с име \"Raw\", използвайте \"**/Raw/**\". За да игнорирате всички файлове, завършващи на \".tif\", използвайте \"**/*.tif\". За да игнорирате абсолютен път, използвайте \"/path/to/ignore/**\".",
|
"add_exclusion_pattern_description": "Добави модели за изключване. Поддържа се \"globbing\" с помощта на *, ** и ?. За да игнорирате всички файлове в директория с име \"Raw\", използвайте \"**/Raw/**\". За да игнорирате всички файлове, завършващи на \".tif\", използвайте \"**/*.tif\". За да игнорирате абсолютен път, използвайте \"/path/to/ignore/**\".",
|
||||||
"asset_offline_description": "Този външен библиотечен елемент не може да бъде открит на диска и е преместен в кошчето за боклук. Ако файлът е преместен в библиотеката, проверете вашата история за нов съответстващ елемент. За да възстановите елемента, моля проверете дали файловият път отдолу може да бъде достъпен от Immich и сканирайте библиотеката.",
|
"asset_offline_description": "Този външен библиотечен елемент не може да бъде открит на диска и е преместен в кошчето за боклук. Ако файлът е преместен в библиотеката, проверете вашата история за нов съответстващ елемент. За да възстановите елемента, моля проверете дали файловият път отдолу може да бъде достъпен от Immich и сканирайте библиотеката.",
|
||||||
"authentication_settings": "Настройки за удостоверяване",
|
"authentication_settings": "Настройки за удостоверяване",
|
||||||
"authentication_settings_description": "Управление на парола, OAuth и други настройки за удостоверяване",
|
"authentication_settings_description": "Управление на парола, OAuth и други настройки за удостоверяване",
|
||||||
"authentication_settings_disable_all": "Сигурни ли сте, че искате да деактивирате всички методи за вписване? Вписването ще бъде напълно деактивирано.",
|
"authentication_settings_disable_all": "Сигурни ли сте, че искате да деактивирате всички методи за вписване? Вписването ще бъде напълно деактивирано.",
|
||||||
"authentication_settings_reenable": "За да реактивирате, изполвайте <link>Server Command</link>.",
|
"authentication_settings_reenable": "За да реактивирате, изполвайте <link>Server Command</link>.",
|
||||||
"background_task_job": "Процеси на заден фон",
|
"background_task_job": "Процеси на заден фон",
|
||||||
"backup_database": "Резервна База данни",
|
"backup_database": "Резервна База данни",
|
||||||
|
"backup_database_enable_description": "Разрешаване на резервни копия на базата данни",
|
||||||
|
"backup_keep_last_amount": "Брой резервни копия за запазване",
|
||||||
|
"backup_settings": "Настройка на резервни копия",
|
||||||
|
"backup_settings_description": "Управление на настройките за резервно копие на базата данни",
|
||||||
"check_all": "Провери всичко",
|
"check_all": "Провери всичко",
|
||||||
"cleared_jobs": "Изчистени задачи от тип: {job}",
|
"cleared_jobs": "Изчистени задачи от тип: {job}",
|
||||||
"config_set_by_file": "Конфигурацията е зададена от файл",
|
"config_set_by_file": "Конфигурацията е зададена от файл",
|
||||||
@@ -44,6 +49,9 @@
|
|||||||
"confirm_reprocess_all_faces": "Сигурни ли сте, че искате да се обработят лицата отново? Това ще изчисти всички именувани хора.",
|
"confirm_reprocess_all_faces": "Сигурни ли сте, че искате да се обработят лицата отново? Това ще изчисти всички именувани хора.",
|
||||||
"confirm_user_password_reset": "Сигурни ли сте, че искате да нулирате паролата на {user}?",
|
"confirm_user_password_reset": "Сигурни ли сте, че искате да нулирате паролата на {user}?",
|
||||||
"create_job": "Създайте задача",
|
"create_job": "Създайте задача",
|
||||||
|
"cron_expression": "Cron израз",
|
||||||
|
"cron_expression_description": "Настрой интервала на сканиране използвайки cron формата. За повече информация <link>Crontab Guru</link>",
|
||||||
|
"cron_expression_presets": "Примерни Cron изрази",
|
||||||
"disable_login": "Изключете вписването",
|
"disable_login": "Изключете вписването",
|
||||||
"duplicate_detection_job_description": "Стартиране машинно обучение на ресурси, за откриване на подобни изображения. Разчита на Интелигентно Търсене",
|
"duplicate_detection_job_description": "Стартиране машинно обучение на ресурси, за откриване на подобни изображения. Разчита на Интелигентно Търсене",
|
||||||
"exclusion_pattern_description": "Модели за изключване позволяват да игнорирате файлове и папки, когато сканирате вашата библиотека. Това е потребно, ако имате папки, които съдържат файлове, които не искате да импортирате. Примерно - RAW файлове.",
|
"exclusion_pattern_description": "Модели за изключване позволяват да игнорирате файлове и папки, когато сканирате вашата библиотека. Това е потребно, ако имате папки, които съдържат файлове, които не искате да импортирате. Примерно - RAW файлове.",
|
||||||
@@ -55,14 +63,23 @@
|
|||||||
"failed_job_command": "Командата {command} е неуспешна за задача: {job}",
|
"failed_job_command": "Командата {command} е неуспешна за задача: {job}",
|
||||||
"force_delete_user_warning": "ВНИМАНИЕ: Това веднага ще изтрие потребителя и всичките му ресурси. Действието е необратимо и файловете не могат да бъдат възстановени.",
|
"force_delete_user_warning": "ВНИМАНИЕ: Това веднага ще изтрие потребителя и всичките му ресурси. Действието е необратимо и файловете не могат да бъдат възстановени.",
|
||||||
"forcing_refresh_library_files": "Принуждаване обновяване на всички файлове в библиотеката",
|
"forcing_refresh_library_files": "Принуждаване обновяване на всички файлове в библиотеката",
|
||||||
|
"image_format": "Формат",
|
||||||
"image_format_description": "WebP създава по-малки файлове от JPEG, но ги кодира по-бавно.",
|
"image_format_description": "WebP създава по-малки файлове от JPEG, но ги кодира по-бавно.",
|
||||||
"image_prefer_embedded_preview": "Предпочитане на вградените прегледи",
|
"image_prefer_embedded_preview": "Предпочитане на вградените прегледи",
|
||||||
"image_prefer_embedded_preview_setting_description": "Използване на вградените прегледи в RAW снимките като вход за обработка на изображенията, когато има такива. Това може да доведе до по-точни цветове за някои изображения, но качеството на прегледите зависи от камерата и изображението може да има повече компресионни артефакти.",
|
"image_prefer_embedded_preview_setting_description": "Използване на вградените прегледи в RAW снимките като вход за обработка на изображенията, когато има такива. Това може да доведе до по-точни цветове за някои изображения, но качеството на прегледите зависи от камерата и изображението може да има повече компресионни артефакти.",
|
||||||
"image_prefer_wide_gamut": "Предпочитане на широка гама",
|
"image_prefer_wide_gamut": "Предпочитане на широка гама",
|
||||||
"image_prefer_wide_gamut_setting_description": "Използване на Display P3 за миниатюри. Това запазва по-добре жизнеността на изображенията с широки цветови пространства, но изображенията може да изглеждат по различен начин на стари устройства със стара версия на браузъра. sRGB изображенията се запазват като sRGB, за да се избегнат цветови промени.",
|
"image_prefer_wide_gamut_setting_description": "Използване на Display P3 за миниатюри. Това запазва по-добре жизнеността на изображенията с широки цветови пространства, но изображенията може да изглеждат по различен начин на стари устройства със стара версия на браузъра. sRGB изображенията се запазват като sRGB, за да се избегнат цветови промени.",
|
||||||
|
"image_preview_description": "Среден размер на изображението с премахнати метаданни, използвано при преглед на един актив и за машинно обучение",
|
||||||
|
"image_preview_quality_description": "Качество на предварителния преглед от 1 до 100. По-високата стойност е по-добра, но води до по-големи файлове и може да намали бързодействието на приложението. Задаването на ниска стойност може да повлияе на качеството на машинното обучение.",
|
||||||
|
"image_preview_title": "Настойки на прегледа",
|
||||||
"image_quality": "Качество",
|
"image_quality": "Качество",
|
||||||
|
"image_resolution": "Резолюция",
|
||||||
|
"image_resolution_description": "По-високите резолюции могат да запазят повече детайли, но изискват повече време за кодиране, имат по-големи размери на файловете и могат да намалят бързодействието на приложението.",
|
||||||
"image_settings": "Настройки за изображенията",
|
"image_settings": "Настройки за изображенията",
|
||||||
"image_settings_description": "Управляване качеството и резолюцията на създадените изображения",
|
"image_settings_description": "Управляване качеството и резолюцията на създадените изображения",
|
||||||
|
"image_thumbnail_description": "Малка миниатюра с премахнати метаданни, използвана при преглед на групи снимки, като основния екран",
|
||||||
|
"image_thumbnail_quality_description": "Качество на миниатюрата от 1 до 100. По-високата стойност е по-добра, но води до по-големи файлове и може да намали бързодействието на приложението.",
|
||||||
|
"image_thumbnail_title": "Настройки на миниатюрите",
|
||||||
"job_concurrency": "Паралелност на {job}",
|
"job_concurrency": "Паралелност на {job}",
|
||||||
"job_created": "Задачата е създадена",
|
"job_created": "Задачата е създадена",
|
||||||
"job_not_concurrency_safe": "Тази задача не е безопасна за паралелно изпълнение.",
|
"job_not_concurrency_safe": "Тази задача не е безопасна за паралелно изпълнение.",
|
||||||
@@ -114,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Семантично търсене на изображения с помощта на CLIP вграждания",
|
"machine_learning_smart_search_description": "Семантично търсене на изображения с помощта на CLIP вграждания",
|
||||||
"machine_learning_smart_search_enabled": "Включване на Интелигентно Търсене",
|
"machine_learning_smart_search_enabled": "Включване на Интелигентно Търсене",
|
||||||
"machine_learning_smart_search_enabled_description": "Ако е деактивирано, изображенията няма да бъдат кодирани за Интелигентно Търсене.",
|
"machine_learning_smart_search_enabled_description": "Ако е деактивирано, изображенията няма да бъдат кодирани за Интелигентно Търсене.",
|
||||||
"machine_learning_url_description": "URL адрес на сървъра за машинно обучение",
|
"machine_learning_url_description": "URL на сървъра за машинно обучение. Ако са предоставени повече от един URL, всеки сървър ще бъде опитан един по един, докато един не отговори успешно, в реда от първия до последния",
|
||||||
"manage_concurrency": "Управление на паралелност",
|
"manage_concurrency": "Управление на паралелност",
|
||||||
"manage_log_settings": "Управление на настройките на записване",
|
"manage_log_settings": "Управление на настройките на записване",
|
||||||
"map_dark_style": "Тъмен стил",
|
"map_dark_style": "Тъмен стил",
|
||||||
@@ -190,6 +207,7 @@
|
|||||||
"password_settings": "Вписване с парола",
|
"password_settings": "Вписване с парола",
|
||||||
"password_settings_description": "Управление на настройките за влизане с парола",
|
"password_settings_description": "Управление на настройките за влизане с парола",
|
||||||
"paths_validated_successfully": "Всички пътища са валидирани успешно",
|
"paths_validated_successfully": "Всички пътища са валидирани успешно",
|
||||||
|
"person_cleanup_job": "Почистване на лица",
|
||||||
"quota_size_gib": "Размер на квотата (GiB)",
|
"quota_size_gib": "Размер на квотата (GiB)",
|
||||||
"refreshing_all_libraries": "Опресняване на всички библиотеки",
|
"refreshing_all_libraries": "Опресняване на всички библиотеки",
|
||||||
"registration": "Администраторска регистрация",
|
"registration": "Администраторска регистрация",
|
||||||
@@ -205,6 +223,8 @@
|
|||||||
"send_welcome_email": "Изпращане на имейл за добре дошли",
|
"send_welcome_email": "Изпращане на имейл за добре дошли",
|
||||||
"server_external_domain_settings": "Външен домейн",
|
"server_external_domain_settings": "Външен домейн",
|
||||||
"server_external_domain_settings_description": "Домейн за публични споделени връзки, включително http(s)://",
|
"server_external_domain_settings_description": "Домейн за публични споделени връзки, включително http(s)://",
|
||||||
|
"server_public_users": "Публични потребители",
|
||||||
|
"server_public_users_description": "Всички потребители (име и имейл) са изброени при добавяне на потребител в споделени албуми. Когато е деактивирано, списъкът с потребители ще бъде достъпен само за администраторите.",
|
||||||
"server_settings": "Настройки на сървъра",
|
"server_settings": "Настройки на сървъра",
|
||||||
"server_settings_description": "Управление на настройките на сървъра",
|
"server_settings_description": "Управление на настройките на сървъра",
|
||||||
"server_welcome_message": "Поздравително съобщение",
|
"server_welcome_message": "Поздравително съобщение",
|
||||||
@@ -229,6 +249,17 @@
|
|||||||
"storage_template_settings_description": "Управление на структурата на папките и името на файла за качване",
|
"storage_template_settings_description": "Управление на структурата на папките и името на файла за качване",
|
||||||
"storage_template_user_label": "<code>{label}</code> е етикетът за съхранение на потребителя",
|
"storage_template_user_label": "<code>{label}</code> е етикетът за съхранение на потребителя",
|
||||||
"system_settings": "Системни настройки",
|
"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": "Персонализиран CSS",
|
||||||
"theme_custom_css_settings_description": "Каскадните стилови таблици позволяват персонализиране на дизайна на Immich.",
|
"theme_custom_css_settings_description": "Каскадните стилови таблици позволяват персонализиране на дизайна на Immich.",
|
||||||
"theme_settings": "Настройки на темата",
|
"theme_settings": "Настройки на темата",
|
||||||
@@ -285,7 +316,7 @@
|
|||||||
"transcoding_temporal_aq_description": "Само за NVENC. Повишава качеството на сцени с висока детайлност и ниско ниво на движение. Може да не е съвместимо с по-стари устройства.",
|
"transcoding_temporal_aq_description": "Само за NVENC. Повишава качеството на сцени с висока детайлност и ниско ниво на движение. Може да не е съвместимо с по-стари устройства.",
|
||||||
"transcoding_threads": "Нишки",
|
"transcoding_threads": "Нишки",
|
||||||
"transcoding_threads_description": "По-високите стойности водят до по-бързо разкодиране, но оставят по-малко място за сървъра да обработва други задачи, докато е активен. Тази стойност не трябва да надвишава броя на процесорните ядра. Увеличава максимално използването, ако е зададено на 0.",
|
"transcoding_threads_description": "По-високите стойности водят до по-бързо разкодиране, но оставят по-малко място за сървъра да обработва други задачи, докато е активен. Тази стойност не трябва да надвишава броя на процесорните ядра. Увеличава максимално използването, ако е зададено на 0.",
|
||||||
"transcoding_tone_mapping": "",
|
"transcoding_tone_mapping": "Tone-mapping",
|
||||||
"transcoding_tone_mapping_description": "Опитва се да запази външния вид на HDR видеоклипове, когато се преобразува в SDR. Всеки алгоритъм прави различни компромиси за цвят, детайлност и яркост. Hable запазва детайлите, Mobius запазва цвета, а Reinhard запазва яркостта.",
|
"transcoding_tone_mapping_description": "Опитва се да запази външния вид на HDR видеоклипове, когато се преобразува в SDR. Всеки алгоритъм прави различни компромиси за цвят, детайлност и яркост. Hable запазва детайлите, Mobius запазва цвета, а Reinhard запазва яркостта.",
|
||||||
"transcoding_transcode_policy": "Правила за транскодиране",
|
"transcoding_transcode_policy": "Правила за транскодиране",
|
||||||
"transcoding_transcode_policy_description": "Правила за това кога видеоклипът трябва да бъде транскодиран. HDR видеоклиповете винаги ще бъдат транскодирани (освен ако транскодирането е деактивирано).",
|
"transcoding_transcode_policy_description": "Правила за това кога видеоклипът трябва да бъде транскодиран. HDR видеоклиповете винаги ще бъдат транскодирани (освен ако транскодирането е деактивирано).",
|
||||||
@@ -300,6 +331,7 @@
|
|||||||
"trash_settings_description": "Управление на настройките на кошчето",
|
"trash_settings_description": "Управление на настройките на кошчето",
|
||||||
"untracked_files": "Непроследени файлове",
|
"untracked_files": "Непроследени файлове",
|
||||||
"untracked_files_description": "Тези файлове не се проследяват от приложението. Те могат да бъдат резултат от неуспешни премествания, прекъснати качвания или оставени поради грешка",
|
"untracked_files_description": "Тези файлове не се проследяват от приложението. Те могат да бъдат резултат от неуспешни премествания, прекъснати качвания или оставени поради грешка",
|
||||||
|
"user_cleanup_job": "Почистване на потребители",
|
||||||
"user_delete_delay": "<b>{user}</b> aкаунтът и файловете на потребителя ще бъдат планирани за постоянно изтриване след {delay, plural, one {# ден} other {# дни}}.",
|
"user_delete_delay": "<b>{user}</b> aкаунтът и файловете на потребителя ще бъдат планирани за постоянно изтриване след {delay, plural, one {# ден} other {# дни}}.",
|
||||||
"user_delete_delay_settings": "Забавяне на изтриване",
|
"user_delete_delay_settings": "Забавяне на изтриване",
|
||||||
"user_delete_delay_settings_description": "Брой дни след окончателно изтриване акаунта на потребителя. Задачата за изтриване на потребител се изпълнява в полунощ, за да се провери за потребители, които са готови за изтриване. Промените на тази настройка ще влязат в сила при следващото изпълнение.",
|
"user_delete_delay_settings_description": "Брой дни след окончателно изтриване акаунта на потребителя. Задачата за изтриване на потребител се изпълнява в полунощ, за да се провери за потребители, които са готови за изтриване. Промените на тази настройка ще влязат в сила при следващото изпълнение.",
|
||||||
@@ -324,6 +356,9 @@
|
|||||||
"admin_password": "Администраторска парола",
|
"admin_password": "Администраторска парола",
|
||||||
"administration": "Администрация",
|
"administration": "Администрация",
|
||||||
"advanced": "Разширено",
|
"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": "Албумът е добавен",
|
||||||
"album_added_notification_setting_description": "Получавайте известие по имейл, когато бъдете добавени към споделен албум",
|
"album_added_notification_setting_description": "Получавайте известие по имейл, когато бъдете добавени към споделен албум",
|
||||||
"album_cover_updated": "Обложката на албума е актуализирана",
|
"album_cover_updated": "Обложката на албума е актуализирана",
|
||||||
@@ -343,7 +378,7 @@
|
|||||||
"album_user_removed": "Премахнат {user}",
|
"album_user_removed": "Премахнат {user}",
|
||||||
"album_with_link_access": "Нека всеки с линк вижда снимки и хора в този албум.",
|
"album_with_link_access": "Нека всеки с линк вижда снимки и хора в този албум.",
|
||||||
"albums": "Албуми",
|
"albums": "Албуми",
|
||||||
"albums_count": "",
|
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albums}}",
|
||||||
"all": "Всички",
|
"all": "Всички",
|
||||||
"all_albums": "Всички албуми",
|
"all_albums": "Всички албуми",
|
||||||
"all_people": "Всички хора",
|
"all_people": "Всички хора",
|
||||||
@@ -352,22 +387,44 @@
|
|||||||
"allow_edits": "Позволяване на редакции",
|
"allow_edits": "Позволяване на редакции",
|
||||||
"allow_public_user_to_download": "Позволете на публичен потребител да може да изтегля",
|
"allow_public_user_to_download": "Позволете на публичен потребител да може да изтегля",
|
||||||
"allow_public_user_to_upload": "Позволете на публичния потребител да може да качва",
|
"allow_public_user_to_upload": "Позволете на публичния потребител да може да качва",
|
||||||
|
"anti_clockwise": "Обратно на часовниковата стрелка",
|
||||||
"api_key": "API ключ",
|
"api_key": "API ключ",
|
||||||
"api_key_description": "Тази стойност ще бъде показана само веднъж. Моля, не забравяйте да го копирате, преди да затворите прозореца.",
|
"api_key_description": "Тази стойност ще бъде показана само веднъж. Моля, не забравяйте да го копирате, преди да затворите прозореца.",
|
||||||
"api_key_empty": "Името на вашия API ключ не трябва да е празно",
|
"api_key_empty": "Името на вашия API ключ не трябва да е празно",
|
||||||
"api_keys": "API ключове",
|
"api_keys": "API ключове",
|
||||||
"app_settings": "Настройки ма приложението",
|
"app_settings": "Настройки ма приложението",
|
||||||
"appears_in": "",
|
"appears_in": "Излиза в",
|
||||||
"archive": "Архив",
|
"archive": "Архив",
|
||||||
"archive_or_unarchive_photo": "Архивиране или деархивиране на снимка",
|
"archive_or_unarchive_photo": "Архивиране или деархивиране на снимка",
|
||||||
"archive_size": "Размер на архива",
|
"archive_size": "Размер на архива",
|
||||||
"archive_size_description": "Конфигурирайте размера на архива за изтегляния (в GiB)",
|
"archive_size_description": "Конфигурирайте размера на архива за изтегляния (в GiB)",
|
||||||
|
"archived_count": "{count, plural, other {Archived #}}",
|
||||||
"are_these_the_same_person": "Това едно и също лице ли е?",
|
"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": "Ресурсът е офлайн",
|
||||||
|
"asset_offline_description": "Този външен актив вече не се намира на диска. Моля, свържете се с администратора на Immich за помощ.",
|
||||||
"asset_skipped": "Пропуснато",
|
"asset_skipped": "Пропуснато",
|
||||||
|
"asset_skipped_in_trash": "В кошчето",
|
||||||
"asset_uploaded": "Качено",
|
"asset_uploaded": "Качено",
|
||||||
"asset_uploading": "Качване...",
|
"asset_uploading": "Качване...",
|
||||||
"assets": "Ресурси",
|
"assets": "Ресурси",
|
||||||
|
"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": "Удостоверени устройства",
|
"authorized_devices": "Удостоверени устройства",
|
||||||
"back": "Назад",
|
"back": "Назад",
|
||||||
"back_close_deselect": "Назад, затваряне или премахване на избора",
|
"back_close_deselect": "Назад, затваряне или премахване на избора",
|
||||||
@@ -375,9 +432,12 @@
|
|||||||
"birthdate_saved": "Датата на раждане е запазена успешно",
|
"birthdate_saved": "Датата на раждане е запазена успешно",
|
||||||
"birthdate_set_description": "Датата на раждане се използва за изчисляване на възрастта на този човек към момента на снимката.",
|
"birthdate_set_description": "Датата на раждане се използва за изчисляване на възрастта на този човек към момента на снимката.",
|
||||||
"blurred_background": "Замъглен заден фон",
|
"blurred_background": "Замъглен заден фон",
|
||||||
"bulk_delete_duplicates_confirmation": "",
|
"bugs_and_feature_requests": "Бъгове и заявки за функции",
|
||||||
"bulk_keep_duplicates_confirmation": "",
|
"build": "Build",
|
||||||
"bulk_trash_duplicates_confirmation": "",
|
"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",
|
"buy": "Купете Immich",
|
||||||
"camera": "Камера",
|
"camera": "Камера",
|
||||||
"camera_brand": "Марка на камерата",
|
"camera_brand": "Марка на камерата",
|
||||||
@@ -405,9 +465,11 @@
|
|||||||
"clear_all_recent_searches": "Изчистете всички скорошни търсения",
|
"clear_all_recent_searches": "Изчистете всички скорошни търсения",
|
||||||
"clear_message": "Изчисти съобщението",
|
"clear_message": "Изчисти съобщението",
|
||||||
"clear_value": "Изчисти стойността",
|
"clear_value": "Изчисти стойността",
|
||||||
|
"clockwise": "По часовниковата стрелка",
|
||||||
"close": "Затвори",
|
"close": "Затвори",
|
||||||
"collapse": "Свиване",
|
"collapse": "Свиване",
|
||||||
"collapse_all": "Свиване на всичко",
|
"collapse_all": "Свиване на всичко",
|
||||||
|
"color": "Цвят",
|
||||||
"color_theme": "Цветова тема",
|
"color_theme": "Цветова тема",
|
||||||
"comment_deleted": "Коментарът е изтрит",
|
"comment_deleted": "Коментарът е изтрит",
|
||||||
"comment_options": "Опции за коментар",
|
"comment_options": "Опции за коментар",
|
||||||
@@ -416,8 +478,9 @@
|
|||||||
"confirm": "Потвърди",
|
"confirm": "Потвърди",
|
||||||
"confirm_admin_password": "Потвърждаване на паролата на администратора",
|
"confirm_admin_password": "Потвърждаване на паролата на администратора",
|
||||||
"confirm_delete_shared_link": "Сигурни ли сте, че искате да изтриете тази споделена връзка?",
|
"confirm_delete_shared_link": "Сигурни ли сте, че искате да изтриете тази споделена връзка?",
|
||||||
|
"confirm_keep_this_delete_others": "Всички останали файлове в стека ще бъдат изтрити, с изключение на този файл. Сигурни ли сте, че искате да продължите?",
|
||||||
"confirm_password": "Потвърдете паролата",
|
"confirm_password": "Потвърдете паролата",
|
||||||
"contain": "",
|
"contain": "В рамките на",
|
||||||
"context": "Контекст",
|
"context": "Контекст",
|
||||||
"continue": "Продължи",
|
"continue": "Продължи",
|
||||||
"copied_image_to_clipboard": "Изображението е копирано в клипборда.",
|
"copied_image_to_clipboard": "Изображението е копирано в клипборда.",
|
||||||
@@ -430,7 +493,7 @@
|
|||||||
"copy_password": "Копиране на парола",
|
"copy_password": "Копиране на парола",
|
||||||
"copy_to_clipboard": "Копиране в клипборда",
|
"copy_to_clipboard": "Копиране в клипборда",
|
||||||
"country": "Държава",
|
"country": "Държава",
|
||||||
"cover": "",
|
"cover": "Cover",
|
||||||
"covers": "Обложка",
|
"covers": "Обложка",
|
||||||
"create": "Създай",
|
"create": "Създай",
|
||||||
"create_album": "Създай албум",
|
"create_album": "Създай албум",
|
||||||
@@ -439,7 +502,10 @@
|
|||||||
"create_link_to_share": "Създаване на линк за споделяне",
|
"create_link_to_share": "Създаване на линк за споделяне",
|
||||||
"create_link_to_share_description": "Позволете на всеки, който има линк, да види избраната(ите) снимка(и)",
|
"create_link_to_share_description": "Позволете на всеки, който има линк, да види избраната(ите) снимка(и)",
|
||||||
"create_new_person": "Създаване на ново лице",
|
"create_new_person": "Създаване на ново лице",
|
||||||
|
"create_new_person_hint": "Присвойте избраните файлове на нов човек",
|
||||||
"create_new_user": "Създаване на нов потребител",
|
"create_new_user": "Създаване на нов потребител",
|
||||||
|
"create_tag": "Създай таг",
|
||||||
|
"create_tag_description": "Създайте нов таг. За вложени тагове, моля, въведете пълния път на тага, включително наклонените черти.",
|
||||||
"create_user": "Създай потребител",
|
"create_user": "Създай потребител",
|
||||||
"created": "Създадено",
|
"created": "Създадено",
|
||||||
"current_device": "Текущо устройство",
|
"current_device": "Текущо устройство",
|
||||||
@@ -453,7 +519,7 @@
|
|||||||
"date_range": "Период от време",
|
"date_range": "Период от време",
|
||||||
"day": "Ден",
|
"day": "Ден",
|
||||||
"deduplicate_all": "Дедупликиране на всички",
|
"deduplicate_all": "Дедупликиране на всички",
|
||||||
"default_locale": "",
|
"default_locale": "Локализация по подразбиране",
|
||||||
"default_locale_description": "Форматиране на дати и числа в зависимост от местоположението на браузъра",
|
"default_locale_description": "Форматиране на дати и числа в зависимост от местоположението на браузъра",
|
||||||
"delete": "Изтрий",
|
"delete": "Изтрий",
|
||||||
"delete_album": "Изтрий албум",
|
"delete_album": "Изтрий албум",
|
||||||
@@ -462,14 +528,19 @@
|
|||||||
"delete_key": "Изтрий ключ",
|
"delete_key": "Изтрий ключ",
|
||||||
"delete_library": "Изтрий библиотека",
|
"delete_library": "Изтрий библиотека",
|
||||||
"delete_link": "Изтрий линк",
|
"delete_link": "Изтрий линк",
|
||||||
|
"delete_others": "Изтрий останалите",
|
||||||
"delete_shared_link": "Изтриване на споделен линк",
|
"delete_shared_link": "Изтриване на споделен линк",
|
||||||
|
"delete_tag": "Изтрий таг",
|
||||||
|
"delete_tag_confirmation_prompt": "Сигурни ли сте, че искате да изтриете таг {tagName}?",
|
||||||
"delete_user": "Изтрий потребител",
|
"delete_user": "Изтрий потребител",
|
||||||
"deleted_shared_link": "Изтрит споделен линк",
|
"deleted_shared_link": "Изтрит споделен линк",
|
||||||
|
"deletes_missing_assets": "Изтрива файлове, които липсват на диска",
|
||||||
"description": "Описание",
|
"description": "Описание",
|
||||||
"details": "Детайли",
|
"details": "Детайли",
|
||||||
"direction": "Посока",
|
"direction": "Посока",
|
||||||
"disabled": "Изключено",
|
"disabled": "Изключено",
|
||||||
"disallow_edits": "Забраняване на редакциите",
|
"disallow_edits": "Забраняване на редакциите",
|
||||||
|
"discord": "Discord",
|
||||||
"discover": "Открий",
|
"discover": "Открий",
|
||||||
"dismiss_all_errors": "Отхвърляне на всички грешки",
|
"dismiss_all_errors": "Отхвърляне на всички грешки",
|
||||||
"dismiss_error": "Отхвърляне на грешка",
|
"dismiss_error": "Отхвърляне на грешка",
|
||||||
@@ -478,15 +549,18 @@
|
|||||||
"display_original_photos": "Показване на оригинални снимки",
|
"display_original_photos": "Показване на оригинални снимки",
|
||||||
"display_original_photos_setting_description": "Показване на оригиналната снимка вместо миниатюри, когато оригиналният актив е съвместим с мрежата. Това може да доведе до по-бавни скорости на показване на снимки.",
|
"display_original_photos_setting_description": "Показване на оригиналната снимка вместо миниатюри, когато оригиналният актив е съвместим с мрежата. Това може да доведе до по-бавни скорости на показване на снимки.",
|
||||||
"do_not_show_again": "Не показвайте това съобщение отново",
|
"do_not_show_again": "Не показвайте това съобщение отново",
|
||||||
|
"documentation": "Документация",
|
||||||
"done": "Готово",
|
"done": "Готово",
|
||||||
"download": "Изтегли",
|
"download": "Изтегли",
|
||||||
|
"download_include_embedded_motion_videos": "Вградени видеа",
|
||||||
|
"download_include_embedded_motion_videos_description": "Включете видеата, вградени в динамични снимки, като отделен файл",
|
||||||
"download_settings": "Изтегли",
|
"download_settings": "Изтегли",
|
||||||
"download_settings_description": "Управление на настройките, свързани с изтеглянето на файлове",
|
"download_settings_description": "Управление на настройките, свързани с изтеглянето на файлове",
|
||||||
"downloading": "Изтегляне",
|
"downloading": "Изтегляне",
|
||||||
"downloading_asset_filename": "Изтегляне на файл {filename}",
|
"downloading_asset_filename": "Изтегляне на файл {filename}",
|
||||||
"drop_files_to_upload": "Пуснете файловете, за да ги качите",
|
"drop_files_to_upload": "Пуснете файловете, за да ги качите",
|
||||||
"duplicates": "Дубликати",
|
"duplicates": "Дубликати",
|
||||||
"duplicates_description": "",
|
"duplicates_description": "Изберете всяка група, като посочите кои, ако има такива, са дубликати",
|
||||||
"duration": "Продължителност",
|
"duration": "Продължителност",
|
||||||
"edit": "Редактиране",
|
"edit": "Редактиране",
|
||||||
"edit_album": "Редактиране на албум",
|
"edit_album": "Редактиране на албум",
|
||||||
@@ -502,10 +576,15 @@
|
|||||||
"edit_location": "Редактиране на местоположението",
|
"edit_location": "Редактиране на местоположението",
|
||||||
"edit_name": "Редактиране на име",
|
"edit_name": "Редактиране на име",
|
||||||
"edit_people": "Редактиране на хора",
|
"edit_people": "Редактиране на хора",
|
||||||
|
"edit_tag": "Редактирай таг",
|
||||||
"edit_title": "Редактиране на заглавието",
|
"edit_title": "Редактиране на заглавието",
|
||||||
"edit_user": "Редактиране на потребител",
|
"edit_user": "Редактиране на потребител",
|
||||||
"edited": "Редактирано",
|
"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": "Имейл",
|
"email": "Имейл",
|
||||||
"empty_trash": "Изпразване на кош",
|
"empty_trash": "Изпразване на кош",
|
||||||
"empty_trash_confirmation": "Сигурни ли сте, че искате да изпразните кошчето? Това ще премахне всичко в кошчето за постоянно от Immich.\nНе можете да отмените това действие!",
|
"empty_trash_confirmation": "Сигурни ли сте, че искате да изпразните кошчето? Това ще премахне всичко в кошчето за постоянно от Immich.\nНе можете да отмените това действие!",
|
||||||
@@ -519,7 +598,9 @@
|
|||||||
"cannot_navigate_next_asset": "Не можете да преминете към следващия файл",
|
"cannot_navigate_next_asset": "Не можете да преминете към следващия файл",
|
||||||
"cannot_navigate_previous_asset": "Не можете да преминете към предишния актив",
|
"cannot_navigate_previous_asset": "Не можете да преминете към предишния актив",
|
||||||
"cant_apply_changes": "Не могат да се приложат промение",
|
"cant_apply_changes": "Не могат да се приложат промение",
|
||||||
|
"cant_change_activity": "Не може {enabled, select, true {да се деактивира} other {да се активира}} дейността",
|
||||||
"cant_change_asset_favorite": "Не може да промени любими за файл",
|
"cant_change_asset_favorite": "Не може да промени любими за файл",
|
||||||
|
"cant_change_metadata_assets_count": "Не може да се промени метаданните на {count, plural, one {# обект} other {# обекта}}",
|
||||||
"cant_get_faces": "Не мога да намеря лица",
|
"cant_get_faces": "Не мога да намеря лица",
|
||||||
"cant_get_number_of_comments": "Не може да получи броя на коментарите",
|
"cant_get_number_of_comments": "Не може да получи броя на коментарите",
|
||||||
"cant_search_people": "Не може да търси хора",
|
"cant_search_people": "Не може да търси хора",
|
||||||
@@ -538,19 +619,28 @@
|
|||||||
"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_load_asset": "Неуспешно зареждане на файл",
|
"failed_to_load_asset": "Неуспешно зареждане на файл",
|
||||||
"failed_to_load_assets": "Неуспешно зареждане на файлове",
|
"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": "Неправилен имейл или парола",
|
"incorrect_email_or_password": "Неправилен имейл или парола",
|
||||||
"paths_validation_failed": "",
|
"paths_validation_failed": "{paths, plural, one {# път} other {# пътища}} не преминаха валидация",
|
||||||
"profile_picture_transparent_pixels": "Профилните снимки не могат да имат прозрачни пиксели. Моля, увеличете и/или преместете изображението.",
|
"profile_picture_transparent_pixels": "Профилните снимки не могат да имат прозрачни пиксели. Моля, увеличете и/или преместете изображението.",
|
||||||
"quota_higher_than_disk_size": "Зададена е квота, по-голяма от размера на диска",
|
"quota_higher_than_disk_size": "Зададена е квота, по-голяма от размера на диска",
|
||||||
"repair_unable_to_check_items": "",
|
"repair_unable_to_check_items": "Неуспешно проверяване на {count, select, one {обект} other {обекти}}",
|
||||||
"unable_to_add_album_users": "",
|
"unable_to_add_album_users": "Неуспешно добавяне на потребители в албум",
|
||||||
"unable_to_add_comment": "",
|
"unable_to_add_assets_to_shared_link": "Неуспешно добавяне на обекти в споделен линк",
|
||||||
"unable_to_add_exclusion_pattern": "",
|
"unable_to_add_comment": "Неуспешно добавяне на коментар",
|
||||||
"unable_to_add_import_path": "",
|
"unable_to_add_exclusion_pattern": "Неуспешно добавяне на шаблон за изключение",
|
||||||
"unable_to_add_partners": "",
|
"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_album_user_role": "Не може да се промени ролята на потребителя на албума",
|
||||||
"unable_to_change_date": "Не може да се промени датата",
|
"unable_to_change_date": "Не може да се промени датата",
|
||||||
"unable_to_change_favorite": "Не може да промени фаворит за актив",
|
"unable_to_change_favorite": "Не може да промени фаворит за актив",
|
||||||
@@ -581,11 +671,12 @@
|
|||||||
"unable_to_get_comments_number": "Не може да получи брой коментари",
|
"unable_to_get_comments_number": "Не може да получи брой коментари",
|
||||||
"unable_to_get_shared_link": "Неуспешно създаване на споделена връзка",
|
"unable_to_get_shared_link": "Неуспешно създаване на споделена връзка",
|
||||||
"unable_to_hide_person": "Не може да скрие човек",
|
"unable_to_hide_person": "Не може да скрие човек",
|
||||||
"unable_to_link_oauth_account": "",
|
"unable_to_link_motion_video": "Неуспешно свързване на видео с движение",
|
||||||
"unable_to_load_album": "",
|
"unable_to_link_oauth_account": "Неуспешно свързване на OAuth акаунт",
|
||||||
"unable_to_load_asset_activity": "",
|
"unable_to_load_album": "Неуспешно зареждане на албум",
|
||||||
"unable_to_load_items": "",
|
"unable_to_load_asset_activity": "Неуспешно зареждане на активност на обект",
|
||||||
"unable_to_load_liked_status": "",
|
"unable_to_load_items": "Неуспешно зареждане на обекти",
|
||||||
|
"unable_to_load_liked_status": "Неуспешно зареждане на статус на харесване",
|
||||||
"unable_to_play_video": "",
|
"unable_to_play_video": "",
|
||||||
"unable_to_refresh_user": "",
|
"unable_to_refresh_user": "",
|
||||||
"unable_to_remove_album_users": "",
|
"unable_to_remove_album_users": "",
|
||||||
|
|||||||
1
i18n/bn.json
Normal file
1
i18n/bn.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"about": "Refrescar",
|
"about": "Sobre",
|
||||||
"account": "Compte",
|
"account": "Compte",
|
||||||
"account_settings": "Configuració del compte",
|
"account_settings": "Configuració del compte",
|
||||||
"acknowledge": "Reconeix",
|
"acknowledge": "Confirmar",
|
||||||
"action": "Acció",
|
"action": "Acció",
|
||||||
"actions": "Accions",
|
"actions": "Accions",
|
||||||
"active": "Actiu",
|
"active": "Actiu",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Afegir a...",
|
"add_to": "Afegir a...",
|
||||||
"add_to_album": "Afegir a un l'àlbum",
|
"add_to_album": "Afegir a un l'àlbum",
|
||||||
"add_to_shared_album": "Afegir a un àlbum compartit",
|
"add_to_shared_album": "Afegir a un àlbum compartit",
|
||||||
|
"add_url": "Afegir URL",
|
||||||
"added_to_archive": "Afegit als arxivats",
|
"added_to_archive": "Afegit als arxivats",
|
||||||
"added_to_favorites": "Afegit als preferits",
|
"added_to_favorites": "Afegit als preferits",
|
||||||
"added_to_favorites_count": "{count, number} afegits als preferits",
|
"added_to_favorites_count": "{count, number} afegits als preferits",
|
||||||
@@ -1281,6 +1282,8 @@
|
|||||||
"user_purchase_settings_description": "Gestiona la teva compra",
|
"user_purchase_settings_description": "Gestiona la teva compra",
|
||||||
"user_role_set": "Establir {user} com a {role}",
|
"user_role_set": "Establir {user} com a {role}",
|
||||||
"user_usage_detail": "Detall d'ús d'usuari",
|
"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",
|
"username": "Nom d'usuari",
|
||||||
"users": "Usuaris",
|
"users": "Usuaris",
|
||||||
"utilities": "Utilitats",
|
"utilities": "Utilitats",
|
||||||
|
|||||||
@@ -157,11 +157,11 @@
|
|||||||
"migration_job_description": "Migrace miniatur snímků a obličejů do nejnovější struktury složek",
|
"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_paths_added": "Nebyly přidány žádné cesty",
|
||||||
"no_pattern_added": "Nebyl přidán žádný vzor",
|
"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_cannot_be_changed_later": "UPOZORNĚNÍ: Toto nelze později změnit!",
|
||||||
"note_unlimited_quota": "Upozornění: Pro neomezenou kvótu zadejte 0",
|
"note_unlimited_quota": "Upozornění: Pro neomezenou kvótu zadejte 0",
|
||||||
"notification_email_from_address": "Adresa Od",
|
"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_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": "Ignorovat chyby certifikátů",
|
||||||
"notification_email_ignore_certificate_errors_description": "Ignorovat chyby ověření certifikátu TLS (nedoporučuje se)",
|
"notification_email_ignore_certificate_errors_description": "Ignorovat chyby ověření certifikátu TLS (nedoporučuje se)",
|
||||||
@@ -256,7 +256,7 @@
|
|||||||
"template_email_preview": "Náhled",
|
"template_email_preview": "Náhled",
|
||||||
"template_email_settings": "Šablony e-mailů",
|
"template_email_settings": "Šablony e-mailů",
|
||||||
"template_email_settings_description": "Správa vlastních šablon e-mailových oznámení",
|
"template_email_settings_description": "Správa vlastních šablon e-mailových oznámení",
|
||||||
"template_email_update_album": "Aktualizace šablony alba",
|
"template_email_update_album": "Šablona aktualizace alba",
|
||||||
"template_email_welcome": "Šablona uvítacího e-mailu",
|
"template_email_welcome": "Šablona uvítacího e-mailu",
|
||||||
"template_settings": "Šablony oznámení",
|
"template_settings": "Šablony oznámení",
|
||||||
"template_settings_description": "Správa vlastních šablon oznámení.",
|
"template_settings_description": "Správa vlastních šablon oznámení.",
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
"actions": "Handlinger",
|
"actions": "Handlinger",
|
||||||
"active": "Aktive",
|
"active": "Aktive",
|
||||||
"activity": "Aktivitet",
|
"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": "Tilføj",
|
||||||
"add_a_description": "Tilføj en beskrivelse",
|
"add_a_description": "Tilføj en beskrivelse",
|
||||||
"add_a_location": "Tilføj en placering",
|
"add_a_location": "Tilføj en placering",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Tilføj til...",
|
"add_to": "Tilføj til...",
|
||||||
"add_to_album": "Tilføj til album",
|
"add_to_album": "Tilføj til album",
|
||||||
"add_to_shared_album": "Tilføj til delt album",
|
"add_to_shared_album": "Tilføj til delt album",
|
||||||
|
"add_url": "Tilføj URL",
|
||||||
"added_to_archive": "Tilføjet til arkiv",
|
"added_to_archive": "Tilføjet til arkiv",
|
||||||
"added_to_favorites": "Tilføjet til favoritter",
|
"added_to_favorites": "Tilføjet til favoritter",
|
||||||
"added_to_favorites_count": "Tilføjet {count, number} til favoritter",
|
"added_to_favorites_count": "Tilføjet {count, number} til favoritter",
|
||||||
@@ -48,6 +49,8 @@
|
|||||||
"confirm_reprocess_all_faces": "Er du sikker på, at du vil genbehandle alle ansigter? Dette vil også rydde navngivne personer.",
|
"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?",
|
"confirm_user_password_reset": "Er du sikker på, at du vil nulstille {user}s adgangskode?",
|
||||||
"create_job": "Opret job",
|
"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",
|
"disable_login": "Deaktiver login",
|
||||||
"duplicate_detection_job_description": "Kør maskinlæring på mediefiler for at opdage lignende billeder. Er afhængig af Smart Søgning",
|
"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.",
|
"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.",
|
||||||
@@ -1008,6 +1011,8 @@
|
|||||||
"user": "Bruger",
|
"user": "Bruger",
|
||||||
"user_id": "Bruger-ID",
|
"user_id": "Bruger-ID",
|
||||||
"user_usage_detail": "Detaljer om brugers forbrug",
|
"user_usage_detail": "Detaljer om brugers forbrug",
|
||||||
|
"user_usage_stats": "Konto anvendelsesstatistik",
|
||||||
|
"user_usage_stats_description": "Vis konto anvendelsesstatistik",
|
||||||
"username": "Brugernavn",
|
"username": "Brugernavn",
|
||||||
"users": "Brugere",
|
"users": "Brugere",
|
||||||
"utilities": "Værktøjer",
|
"utilities": "Værktøjer",
|
||||||
|
|||||||
28
i18n/de.json
28
i18n/de.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Aktualisieren",
|
"about": "Über Immich",
|
||||||
"account": "Konto",
|
"account": "Konto",
|
||||||
"account_settings": "Kontoeinstellungen",
|
"account_settings": "Kontoeinstellungen",
|
||||||
"acknowledge": "Bestätigen",
|
"acknowledge": "Bestätigen",
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
"add": "Hinzufügen",
|
"add": "Hinzufügen",
|
||||||
"add_a_description": "Beschreibung hinzufügen",
|
"add_a_description": "Beschreibung hinzufügen",
|
||||||
"add_a_location": "Standort 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_a_title": "Titel hinzufügen",
|
||||||
"add_exclusion_pattern": "Ausschlussmuster hinzufügen",
|
"add_exclusion_pattern": "Ausschlussmuster hinzufügen",
|
||||||
"add_import_path": "Importpfad hinzufügen",
|
"add_import_path": "Importpfad hinzufügen",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Hinzufügen zu ...",
|
"add_to": "Hinzufügen zu ...",
|
||||||
"add_to_album": "Zu Album hinzufügen",
|
"add_to_album": "Zu Album hinzufügen",
|
||||||
"add_to_shared_album": "Zu geteiltem 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_archive": "Zum Archiv hinzugefügt",
|
||||||
"added_to_favorites": "Zu Favoriten hinzugefügt",
|
"added_to_favorites": "Zu Favoriten hinzugefügt",
|
||||||
"added_to_favorites_count": "{count, number} zu Favoriten hinzugefügt",
|
"added_to_favorites_count": "{count, number} zu Favoriten hinzugefügt",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Semantische Bildsuche mittels CLIP-Einbettungen",
|
"machine_learning_smart_search_description": "Semantische Bildsuche mittels CLIP-Einbettungen",
|
||||||
"machine_learning_smart_search_enabled": "Intelligente Suche aktivieren",
|
"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_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_concurrency": "Gleichzeitige Ausführungen verwalten",
|
||||||
"manage_log_settings": "Log-Einstellungen verwalten",
|
"manage_log_settings": "Log-Einstellungen verwalten",
|
||||||
"map_dark_style": "Dunkler Stil",
|
"map_dark_style": "Dunkler Stil",
|
||||||
@@ -223,7 +224,7 @@
|
|||||||
"server_external_domain_settings": "Externe Domain",
|
"server_external_domain_settings": "Externe Domain",
|
||||||
"server_external_domain_settings_description": "Domäne für öffentlich freigegebene Links, einschließlich http(s)://",
|
"server_external_domain_settings_description": "Domäne für öffentlich freigegebene Links, einschließlich http(s)://",
|
||||||
"server_public_users": "Öffentliche Benutzer",
|
"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 administratorbenutzern zur verfügung.",
|
"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": "Servereinstellungen",
|
||||||
"server_settings_description": "Servereinstellungen verwalten",
|
"server_settings_description": "Servereinstellungen verwalten",
|
||||||
"server_welcome_message": "Willkommensnachricht",
|
"server_welcome_message": "Willkommensnachricht",
|
||||||
@@ -249,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> is die Speicherpfadbezeichnung des Benutzers",
|
"storage_template_user_label": "<code>{label}</code> is die Speicherpfadbezeichnung des Benutzers",
|
||||||
"system_settings": "Systemeinstellungen",
|
"system_settings": "Systemeinstellungen",
|
||||||
"tag_cleanup_job": "Tags aufräumen",
|
"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": "Benutzerdefiniertes CSS",
|
||||||
"theme_custom_css_settings_description": "Mit Cascading Style Sheets (CSS) kann das Design von Immich angepasst werden.",
|
"theme_custom_css_settings_description": "Mit Cascading Style Sheets (CSS) kann das Design von Immich angepasst werden.",
|
||||||
"theme_settings": "Theme-Einstellungen",
|
"theme_settings": "Theme-Einstellungen",
|
||||||
@@ -714,7 +725,7 @@
|
|||||||
"expand_all": "Alle aufklappen",
|
"expand_all": "Alle aufklappen",
|
||||||
"expire_after": "Verfällt nach",
|
"expire_after": "Verfällt nach",
|
||||||
"expired": "Verfallen",
|
"expired": "Verfallen",
|
||||||
"expires_date": "Läuft am {date} ab",
|
"expires_date": "Läuft {date} ab",
|
||||||
"explore": "Erkunden",
|
"explore": "Erkunden",
|
||||||
"explorer": "Datei-Explorer",
|
"explorer": "Datei-Explorer",
|
||||||
"export": "Exportieren",
|
"export": "Exportieren",
|
||||||
@@ -723,6 +734,7 @@
|
|||||||
"external": "Extern",
|
"external": "Extern",
|
||||||
"external_libraries": "Externe Bibliotheken",
|
"external_libraries": "Externe Bibliotheken",
|
||||||
"face_unassigned": "Nicht zugewiesen",
|
"face_unassigned": "Nicht zugewiesen",
|
||||||
|
"failed_to_load_assets": "Laden der Assets fehlgeschlagen",
|
||||||
"favorite": "Favorit",
|
"favorite": "Favorit",
|
||||||
"favorite_or_unfavorite_photo": "Favorisiertes oder nicht favorisiertes Foto",
|
"favorite_or_unfavorite_photo": "Favorisiertes oder nicht favorisiertes Foto",
|
||||||
"favorites": "Favoriten",
|
"favorites": "Favoriten",
|
||||||
@@ -1022,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} einer neuen Person zugewiesen",
|
"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",
|
"reassing_hint": "Markierte Dateien einer vorhandenen Person zuweisen",
|
||||||
"recent": "Neuste",
|
"recent": "Neuste",
|
||||||
|
"recent-albums": "Neuste Alben",
|
||||||
"recent_searches": "Letzte Suchen",
|
"recent_searches": "Letzte Suchen",
|
||||||
"refresh": "Aktualisieren",
|
"refresh": "Aktualisieren",
|
||||||
"refresh_encoded_videos": "Kodierte Videos aktualisieren",
|
"refresh_encoded_videos": "Kodierte Videos aktualisieren",
|
||||||
@@ -1043,6 +1056,7 @@
|
|||||||
"remove_from_album": "Aus Album entfernen",
|
"remove_from_album": "Aus Album entfernen",
|
||||||
"remove_from_favorites": "Aus Favoriten entfernen",
|
"remove_from_favorites": "Aus Favoriten entfernen",
|
||||||
"remove_from_shared_link": "Aus geteiltem Link entfernen",
|
"remove_from_shared_link": "Aus geteiltem Link entfernen",
|
||||||
|
"remove_url": "URL entfernen",
|
||||||
"remove_user": "Nutzer entfernen",
|
"remove_user": "Nutzer entfernen",
|
||||||
"removed_api_key": "API-Schlüssel {name} wurde entfernt",
|
"removed_api_key": "API-Schlüssel {name} wurde entfernt",
|
||||||
"removed_from_archive": "Aus dem Archiv entfernt",
|
"removed_from_archive": "Aus dem Archiv entfernt",
|
||||||
@@ -1285,8 +1299,8 @@
|
|||||||
"user_purchase_settings_description": "Kauf verwalten",
|
"user_purchase_settings_description": "Kauf verwalten",
|
||||||
"user_role_set": "{user} als {role} festlegen",
|
"user_role_set": "{user} als {role} festlegen",
|
||||||
"user_usage_detail": "Nutzungsdetails der Nutzer",
|
"user_usage_detail": "Nutzungsdetails der Nutzer",
|
||||||
"user_usage_stats": "Statistiken über die Kontonutzung",
|
"user_usage_stats": "Statistiken zur Kontonutzung",
|
||||||
"user_usage_stats_description": "Statistiken über die Kontonutzung anzeigen",
|
"user_usage_stats_description": "Statistiken zur Kontonutzung anzeigen",
|
||||||
"username": "Nutzername",
|
"username": "Nutzername",
|
||||||
"users": "Benutzer",
|
"users": "Benutzer",
|
||||||
"utilities": "Hilfsmittel",
|
"utilities": "Hilfsmittel",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Επαναφόρτωση",
|
"about": "Σχετικά",
|
||||||
"account": "Λογαριασμός",
|
"account": "Λογαριασμός",
|
||||||
"account_settings": "Ρυθμίσεις Λογαριασμού",
|
"account_settings": "Ρυθμίσεις Λογαριασμού",
|
||||||
"acknowledge": "Έλαβα γνώση",
|
"acknowledge": "Έλαβα γνώση",
|
||||||
|
|||||||
26
i18n/en.json
26
i18n/en.json
@@ -1,7 +1,5 @@
|
|||||||
{
|
{
|
||||||
"user_usage_stats": "Account usage statistics",
|
"about": "About",
|
||||||
"user_usage_stats_description": "View account usage statistics",
|
|
||||||
"about": "Refresh",
|
|
||||||
"account": "Account",
|
"account": "Account",
|
||||||
"account_settings": "Account Settings",
|
"account_settings": "Account Settings",
|
||||||
"acknowledge": "Acknowledge",
|
"acknowledge": "Acknowledge",
|
||||||
@@ -252,16 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> is the user's Storage Label",
|
"storage_template_user_label": "<code>{label}</code> is the user's Storage Label",
|
||||||
"system_settings": "System Settings",
|
"system_settings": "System Settings",
|
||||||
"tag_cleanup_job": "Tag cleanup",
|
"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_preview": "Preview",
|
||||||
"template_email_settings": "Email Templates",
|
"template_email_settings": "Email Templates",
|
||||||
"template_email_settings_description": "Manage custom email notification templates",
|
"template_email_settings_description": "Manage custom email notification templates",
|
||||||
"template_email_welcome": "Welcome email template",
|
|
||||||
"template_email_invite_album": "Invite Album Template",
|
|
||||||
"template_email_update_album": "Update Album Template",
|
"template_email_update_album": "Update Album Template",
|
||||||
|
"template_email_welcome": "Welcome email template",
|
||||||
"template_settings": "Notification Templates",
|
"template_settings": "Notification Templates",
|
||||||
"template_settings_description": "Manage custom templates for notifications.",
|
"template_settings_description": "Manage custom templates for notifications.",
|
||||||
"template_email_if_empty": "If the template is empty, the default email will be used.",
|
|
||||||
"template_email_available_tags": "You can use the following variables in your template: {tags}",
|
|
||||||
"theme_custom_css_settings": "Custom CSS",
|
"theme_custom_css_settings": "Custom CSS",
|
||||||
"theme_custom_css_settings_description": "Cascading Style Sheets allow the design of Immich to be customized.",
|
"theme_custom_css_settings_description": "Cascading Style Sheets allow the design of Immich to be customized.",
|
||||||
"theme_settings": "Theme Settings",
|
"theme_settings": "Theme Settings",
|
||||||
@@ -1036,8 +1034,8 @@
|
|||||||
"reassigned_assets_to_new_person": "Re-assigned {count, plural, one {# asset} other {# assets}} to a new person",
|
"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",
|
"reassing_hint": "Assign selected assets to an existing person",
|
||||||
"recent": "Recent",
|
"recent": "Recent",
|
||||||
"recent_searches": "Recent searches",
|
|
||||||
"recent-albums": "Recent albums",
|
"recent-albums": "Recent albums",
|
||||||
|
"recent_searches": "Recent searches",
|
||||||
"refresh": "Refresh",
|
"refresh": "Refresh",
|
||||||
"refresh_encoded_videos": "Refresh encoded videos",
|
"refresh_encoded_videos": "Refresh encoded videos",
|
||||||
"refresh_faces": "Refresh faces",
|
"refresh_faces": "Refresh faces",
|
||||||
@@ -1144,6 +1142,7 @@
|
|||||||
"set": "Set",
|
"set": "Set",
|
||||||
"set_as_album_cover": "Set as album cover",
|
"set_as_album_cover": "Set as album cover",
|
||||||
"set_as_profile_picture": "Set as profile picture",
|
"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_date_of_birth": "Set date of birth",
|
||||||
"set_profile_picture": "Set profile picture",
|
"set_profile_picture": "Set profile picture",
|
||||||
"set_slideshow_to_fullscreen": "Set Slideshow to fullscreen",
|
"set_slideshow_to_fullscreen": "Set Slideshow to fullscreen",
|
||||||
@@ -1198,6 +1197,7 @@
|
|||||||
"sort_items": "Number of items",
|
"sort_items": "Number of items",
|
||||||
"sort_modified": "Date modified",
|
"sort_modified": "Date modified",
|
||||||
"sort_oldest": "Oldest photo",
|
"sort_oldest": "Oldest photo",
|
||||||
|
"sort_people_by_similarity": "Sort people by similarity",
|
||||||
"sort_recent": "Most recent photo",
|
"sort_recent": "Most recent photo",
|
||||||
"sort_title": "Title",
|
"sort_title": "Title",
|
||||||
"source": "Source",
|
"source": "Source",
|
||||||
@@ -1241,6 +1241,7 @@
|
|||||||
"they_will_be_merged_together": "They will be merged together",
|
"they_will_be_merged_together": "They will be merged together",
|
||||||
"third_party_resources": "Third-Party Resources",
|
"third_party_resources": "Third-Party Resources",
|
||||||
"time_based_memories": "Time-based memories",
|
"time_based_memories": "Time-based memories",
|
||||||
|
"timeline": "Timeline",
|
||||||
"timezone": "Timezone",
|
"timezone": "Timezone",
|
||||||
"to_archive": "Archive",
|
"to_archive": "Archive",
|
||||||
"to_change_password": "Change password",
|
"to_change_password": "Change password",
|
||||||
@@ -1250,6 +1251,7 @@
|
|||||||
"to_trash": "Trash",
|
"to_trash": "Trash",
|
||||||
"toggle_settings": "Toggle settings",
|
"toggle_settings": "Toggle settings",
|
||||||
"toggle_theme": "Toggle dark theme",
|
"toggle_theme": "Toggle dark theme",
|
||||||
|
"total": "Total",
|
||||||
"total_usage": "Total usage",
|
"total_usage": "Total usage",
|
||||||
"trash": "Trash",
|
"trash": "Trash",
|
||||||
"trash_all": "Trash All",
|
"trash_all": "Trash All",
|
||||||
@@ -1299,6 +1301,8 @@
|
|||||||
"user_purchase_settings_description": "Manage your purchase",
|
"user_purchase_settings_description": "Manage your purchase",
|
||||||
"user_role_set": "Set {user} as {role}",
|
"user_role_set": "Set {user} as {role}",
|
||||||
"user_usage_detail": "User usage detail",
|
"user_usage_detail": "User usage detail",
|
||||||
|
"user_usage_stats": "Account usage statistics",
|
||||||
|
"user_usage_stats_description": "View account usage statistics",
|
||||||
"username": "Username",
|
"username": "Username",
|
||||||
"users": "Users",
|
"users": "Users",
|
||||||
"utilities": "Utilities",
|
"utilities": "Utilities",
|
||||||
@@ -1334,7 +1338,5 @@
|
|||||||
"years_ago": "{years, plural, one {# year} other {# years}} ago",
|
"years_ago": "{years, plural, one {# year} other {# years}} ago",
|
||||||
"yes": "Yes",
|
"yes": "Yes",
|
||||||
"you_dont_have_any_shared_links": "You don't have any shared links",
|
"you_dont_have_any_shared_links": "You don't have any shared links",
|
||||||
"zoom_image": "Zoom Image",
|
"zoom_image": "Zoom Image"
|
||||||
"timeline": "Timeline",
|
}
|
||||||
"total": "Total"
|
|
||||||
}
|
|
||||||
|
|||||||
104
i18n/es.json
104
i18n/es.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Actualizar",
|
"about": "Acercade",
|
||||||
"account": "Cuenta",
|
"account": "Cuenta",
|
||||||
"account_settings": "Ajustes de la cuenta",
|
"account_settings": "Ajustes de la cuenta",
|
||||||
"acknowledge": "De acuerdo",
|
"acknowledge": "De acuerdo",
|
||||||
@@ -17,23 +17,23 @@
|
|||||||
"add_import_path": "Agregar ruta de importación",
|
"add_import_path": "Agregar ruta de importación",
|
||||||
"add_location": "Agregar ubicación",
|
"add_location": "Agregar ubicación",
|
||||||
"add_more_users": "Agregar más usuarios",
|
"add_more_users": "Agregar más usuarios",
|
||||||
"add_partner": "Agregar invitado",
|
"add_partner": "Agregar compañero",
|
||||||
"add_path": "Agregar ruta",
|
"add_path": "Agregar carpeta",
|
||||||
"add_photos": "Agregar fotos",
|
"add_photos": "Agregar fotos",
|
||||||
"add_to": "Agregar a...",
|
"add_to": "Agregar a...",
|
||||||
"add_to_album": "Agregar a un álbum",
|
"add_to_album": "Incluir en álbum",
|
||||||
"add_to_shared_album": "Agregar a un álbum compartido",
|
"add_to_shared_album": "Incluir en álbum compartido",
|
||||||
"add_url": "Añadir URL",
|
"add_url": "Añadir URL",
|
||||||
"added_to_archive": "Archivado",
|
"added_to_archive": "Archivado",
|
||||||
"added_to_favorites": "Agregado a favoritos",
|
"added_to_favorites": "Agregado a favoritos",
|
||||||
"added_to_favorites_count": "Agregado {count, number} a favoritos",
|
"added_to_favorites_count": "Agregado {count, number} a favoritos",
|
||||||
"admin": {
|
"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/**\".",
|
"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 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.",
|
"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": "Parámetros de autenticación",
|
||||||
"authentication_settings_description": "Gestionar contraseñas, OAuth y otros 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_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 volver a activarlo, utiliza un <link> Comando del servidor </link>.",
|
"authentication_settings_reenable": "Para reactivarlo, utiliza un <link>Comando del servidor</link>.",
|
||||||
"background_task_job": "Tareas en segundo plano",
|
"background_task_job": "Tareas en segundo plano",
|
||||||
"backup_database": "Respaldar base de datos",
|
"backup_database": "Respaldar base de datos",
|
||||||
"backup_database_enable_description": "Activar respaldo de base de datos",
|
"backup_database_enable_description": "Activar respaldo de base de datos",
|
||||||
@@ -44,41 +44,41 @@
|
|||||||
"cleared_jobs": "Trabajos borrados para: {job}",
|
"cleared_jobs": "Trabajos borrados para: {job}",
|
||||||
"config_set_by_file": "La configuración está definida por un archivo de configuración",
|
"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": "¿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_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_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}?",
|
"confirm_user_password_reset": "¿Estás seguro de que quieres restablecer la contraseña de {user}?",
|
||||||
"create_job": "Crear trabajo",
|
"create_job": "Crear trabajo",
|
||||||
"cron_expression": "Expresión CRON",
|
"cron_expression": "Expresión CRON",
|
||||||
"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>",
|
"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",
|
"cron_expression_presets": "Valores predefinidos de expresión CRON",
|
||||||
"disable_login": "Deshabilitar inicio de sesión",
|
"disable_login": "Deshabilitar inicio de sesión",
|
||||||
"duplicate_detection_job_description": "Ejecuta aprendizaje automático sobre los activos para detectar imágenes similares. Se basa en la búsqueda inteligente",
|
"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. Esto es útil si tienes carpetas que contienen archivos que no deseas importar, como archivos RAW.",
|
"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_created_at": "Biblioteca externa (creada el {date})",
|
||||||
"external_library_management": "Gestión de bibliotecas externas",
|
"external_library_management": "Gestión de bibliotecas externas",
|
||||||
"face_detection": "Detección de rostros",
|
"face_detection": "Detección de caras",
|
||||||
"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.",
|
"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 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.",
|
"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}",
|
"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.",
|
"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": "Forzar la recarga de todos los archivos de la biblioteca",
|
"forcing_refresh_library_files": "Forzando la recarga de todos los elementos en la biblioteca",
|
||||||
"image_format": "Formato",
|
"image_format": "Formato",
|
||||||
"image_format_description": "WebP genera archivos más pequeños que JPEG, pero es más lento al codificar.",
|
"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 incrustada",
|
"image_prefer_embedded_preview": "Preferir vista previa embebida",
|
||||||
"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_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 gama amplia",
|
"image_prefer_wide_gamut": "Preferir 'gamut' amplio",
|
||||||
"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_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, utilizada al visualizar un solo activo y para aprendizaje automático",
|
"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. 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_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_preview_title": "Ajustes de la vista previa",
|
||||||
"image_quality": "Calidad",
|
"image_quality": "Calidad",
|
||||||
"image_resolution": "Resolución",
|
"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": "Ajustes de imagen",
|
||||||
"image_settings_description": "Administrar la calidad y resolución de las imágenes generadas",
|
"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_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. Cuanto más alta, mejor, pero genera archivos más grandes y puede reducir la capacidad de respuesta de la aplicación.",
|
"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",
|
"image_thumbnail_title": "Ajustes de las miniaturas",
|
||||||
"job_concurrency": "{job}: Procesos simultáneos",
|
"job_concurrency": "{job}: Procesos simultáneos",
|
||||||
"job_created": "Trabajo creado",
|
"job_created": "Trabajo creado",
|
||||||
@@ -90,48 +90,48 @@
|
|||||||
"jobs_failed": "{jobCount, plural, one {# fallido} other {# fallidos}}",
|
"jobs_failed": "{jobCount, plural, one {# fallido} other {# fallidos}}",
|
||||||
"library_created": "La biblioteca ha sido creada: {library}",
|
"library_created": "La biblioteca ha sido creada: {library}",
|
||||||
"library_deleted": "Biblioteca eliminada",
|
"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_import_path_description": "Indica una carpeta para importar. Esta carpeta y sus subcarpetas serán escaneadas en busca de elementos multimedia.",
|
||||||
"library_scanning": "Escaneado periódico",
|
"library_scanning": "Escaneo periódico",
|
||||||
"library_scanning_description": "Configura el escaneo periódico de la biblioteca",
|
"library_scanning_description": "Configurar el escaneo periódico de la biblioteca",
|
||||||
"library_scanning_enable_description": "Activar 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": "Biblioteca externa",
|
||||||
"library_settings_description": "Administrar configuración biblioteca externa",
|
"library_settings_description": "Administrar configuración biblioteca externa",
|
||||||
"library_tasks_description": "Realizar tareas de biblioteca",
|
"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": "Vigilancia de la biblioteca (EXPERIMENTAL)",
|
||||||
"library_watching_settings_description": "Vigilar automaticamente en busca de archivos modificados",
|
"library_watching_settings_description": "Vigilar automaticamente en busca de archivos modificados",
|
||||||
"logging_enable_description": "Habilitar registro",
|
"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",
|
"logging_settings": "Registro",
|
||||||
"machine_learning_clip_model": "Modelo de CLIP",
|
"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>. Tenga en cuenta que debe volver a ejecutar el trabajo 'Smart Search' para todas las imágenes al cambiar un modelo.",
|
"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 duplicados",
|
"machine_learning_duplicate_detection": "Detección de duplicados",
|
||||||
"machine_learning_duplicate_detection_enabled": "Habilitar 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_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": "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": "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": "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_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 de caras",
|
"machine_learning_facial_recognition_setting": "Habilitar reconocimiento facial",
|
||||||
"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_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": "Distancia máxima de detección",
|
"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_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": "Máxima distancia 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_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": "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": "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": "Configuración de aprendizaje automático",
|
||||||
"machine_learning_settings_description": "Administrar funciones y configuraciones 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": "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": "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_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 de uno en uno hasta que uno responda correctamente, en orden del primero al último.",
|
"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_concurrency": "Ajustes de concurrencia",
|
||||||
"manage_log_settings": "Administrar la configuración de los registros",
|
"manage_log_settings": "Administrar la configuración de los registros",
|
||||||
"map_dark_style": "Estilo oscuro",
|
"map_dark_style": "Estilo oscuro",
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Lisää...",
|
"add_to": "Lisää...",
|
||||||
"add_to_album": "Lisää albumiin",
|
"add_to_album": "Lisää albumiin",
|
||||||
"add_to_shared_album": "Lisää jaettuun albumiin",
|
"add_to_shared_album": "Lisää jaettuun albumiin",
|
||||||
|
"add_url": "Lisää URL",
|
||||||
"added_to_archive": "Arkistoitu",
|
"added_to_archive": "Arkistoitu",
|
||||||
"added_to_favorites": "Lisätty suosikkeihin",
|
"added_to_favorites": "Lisätty suosikkeihin",
|
||||||
"added_to_favorites_count": "{count, number} lisätty suosikkeihin",
|
"added_to_favorites_count": "{count, number} lisätty suosikkeihin",
|
||||||
@@ -249,6 +250,7 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> on käyttäjän Tallennustilan Tunniste",
|
"storage_template_user_label": "<code>{label}</code> on käyttäjän Tallennustilan Tunniste",
|
||||||
"system_settings": "Järjestelmäasetukset",
|
"system_settings": "Järjestelmäasetukset",
|
||||||
"tag_cleanup_job": "Merkintäpuhdistus",
|
"tag_cleanup_job": "Merkintäpuhdistus",
|
||||||
|
"template_email_preview": "Esikatselu",
|
||||||
"theme_custom_css_settings": "Mukautettu CSS",
|
"theme_custom_css_settings": "Mukautettu CSS",
|
||||||
"theme_custom_css_settings_description": "Mukauta Immichin ulkoasua CSS:llä.",
|
"theme_custom_css_settings_description": "Mukauta Immichin ulkoasua CSS:llä.",
|
||||||
"theme_settings": "Teeman asetukset",
|
"theme_settings": "Teeman asetukset",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Actualiser",
|
"about": "À propos",
|
||||||
"account": "Compte",
|
"account": "Compte",
|
||||||
"account_settings": "Paramètres du compte",
|
"account_settings": "Paramètres du compte",
|
||||||
"acknowledge": "Compris",
|
"acknowledge": "Compris",
|
||||||
|
|||||||
21
i18n/he.json
21
i18n/he.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "רענן",
|
"about": "אודות",
|
||||||
"account": "חשבון",
|
"account": "חשבון",
|
||||||
"account_settings": "הגדרות חשבון",
|
"account_settings": "הגדרות חשבון",
|
||||||
"acknowledge": "הבנתי",
|
"acknowledge": "הבנתי",
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "חפש תמונות באופן סמנטי באמצעות הטמעות של CLIP",
|
"machine_learning_smart_search_description": "חפש תמונות באופן סמנטי באמצעות הטמעות של CLIP",
|
||||||
"machine_learning_smart_search_enabled": "אפשר חיפוש חכם",
|
"machine_learning_smart_search_enabled": "אפשר חיפוש חכם",
|
||||||
"machine_learning_smart_search_enabled_description": "אם מושבת, תמונות לא יקודדו לחיפוש חכם.",
|
"machine_learning_smart_search_enabled_description": "אם מושבת, תמונות לא יקודדו לחיפוש חכם.",
|
||||||
"machine_learning_url_description": "כתובת האתר של שרת למידת המכונה. אם ניתן יותר מכתוובת אחת, כל שרת ינסה בתורו עד אשר יענה בחיוב, בסדר התחלתי.",
|
"machine_learning_url_description": "כתובת האתר של שרת למידת המכונה. אם ניתן יותר מכתובת אחת, כל שרת ינסה בתורו עד אשר יענה בחיוב, בסדר התחלתי.",
|
||||||
"manage_concurrency": "נהל בו-זמניות",
|
"manage_concurrency": "נהל בו-זמניות",
|
||||||
"manage_log_settings": "נהל הגדרות רישום ביומן",
|
"manage_log_settings": "נהל הגדרות רישום ביומן",
|
||||||
"map_dark_style": "עיצוב כהה",
|
"map_dark_style": "עיצוב כהה",
|
||||||
@@ -250,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> היא תווית האחסון של המשתמש",
|
"storage_template_user_label": "<code>{label}</code> היא תווית האחסון של המשתמש",
|
||||||
"system_settings": "הגדרות מערכת",
|
"system_settings": "הגדרות מערכת",
|
||||||
"tag_cleanup_job": "ניקוי תגים",
|
"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": "CSS בהתאמה אישית",
|
||||||
"theme_custom_css_settings_description": "גיליונות סגנון מדורגים (CSS) מאפשרים התאמה אישית של העיצוב של Immich.",
|
"theme_custom_css_settings_description": "גיליונות סגנון מדורגים (CSS) מאפשרים התאמה אישית של העיצוב של Immich.",
|
||||||
"theme_settings": "הגדרות ערכת נושא",
|
"theme_settings": "הגדרות ערכת נושא",
|
||||||
@@ -424,7 +434,7 @@
|
|||||||
"blurred_background": "רקע מטושטש",
|
"blurred_background": "רקע מטושטש",
|
||||||
"bugs_and_feature_requests": "באגים & בקשות לתכונות",
|
"bugs_and_feature_requests": "באגים & בקשות לתכונות",
|
||||||
"build": "Build",
|
"build": "Build",
|
||||||
"build_image": "בניית גרסה",
|
"build_image": "Build Image",
|
||||||
"bulk_delete_duplicates_confirmation": "האם את/ה בטוח/ה שברצונך למחוק בכמות גדולה {count, plural, one {נכס # כפול} other {# נכסים כפולים}}? זה ישמור על הנכס הכי גדול של כל קבוצה וימחק לצמיתות את כל שאר הכפילויות. את/ה לא יכול/ה לבטל את הפעולה הזו!",
|
"bulk_delete_duplicates_confirmation": "האם את/ה בטוח/ה שברצונך למחוק בכמות גדולה {count, plural, one {נכס # כפול} other {# נכסים כפולים}}? זה ישמור על הנכס הכי גדול של כל קבוצה וימחק לצמיתות את כל שאר הכפילויות. את/ה לא יכול/ה לבטל את הפעולה הזו!",
|
||||||
"bulk_keep_duplicates_confirmation": "האם את/ה בטוח/ה שברצונך להשאיר {count, plural, one {נכס # כפול} other {# נכסים כפולים}}? זה יפתור את כל הקבוצות הכפולות מבלי למחוק דבר.",
|
"bulk_keep_duplicates_confirmation": "האם את/ה בטוח/ה שברצונך להשאיר {count, plural, one {נכס # כפול} other {# נכסים כפולים}}? זה יפתור את כל הקבוצות הכפולות מבלי למחוק דבר.",
|
||||||
"bulk_trash_duplicates_confirmation": "האם את/ה בטוח/ה שברצונך להעביר לאשפה בכמות גדולה {count, plural, one {נכס # כפול} other {# נכסים כפולים}}? זה ישמור על הנכס הגדול ביותר של כל קבוצה ויעביר לאשפה את כל שאר הכפילויות.",
|
"bulk_trash_duplicates_confirmation": "האם את/ה בטוח/ה שברצונך להעביר לאשפה בכמות גדולה {count, plural, one {נכס # כפול} other {# נכסים כפולים}}? זה ישמור על הנכס הגדול ביותר של כל קבוצה ויעביר לאשפה את כל שאר הכפילויות.",
|
||||||
@@ -724,6 +734,7 @@
|
|||||||
"external": "חיצוני",
|
"external": "חיצוני",
|
||||||
"external_libraries": "ספריות חיצוניות",
|
"external_libraries": "ספריות חיצוניות",
|
||||||
"face_unassigned": "לא מוקצה",
|
"face_unassigned": "לא מוקצה",
|
||||||
|
"failed_to_load_assets": "טעינת נכסים נכשלה",
|
||||||
"favorite": "מועדף",
|
"favorite": "מועדף",
|
||||||
"favorite_or_unfavorite_photo": "הוסף או הסר תמונה מהמועדפים",
|
"favorite_or_unfavorite_photo": "הוסף או הסר תמונה מהמועדפים",
|
||||||
"favorites": "מועדפים",
|
"favorites": "מועדפים",
|
||||||
@@ -1023,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {נכס # הוקצה} other {# נכסים הוקצו}} מחדש לאדם חדש",
|
"reassigned_assets_to_new_person": "{count, plural, one {נכס # הוקצה} other {# נכסים הוקצו}} מחדש לאדם חדש",
|
||||||
"reassing_hint": "הקצה נכסים שנבחרו לאדם קיים",
|
"reassing_hint": "הקצה נכסים שנבחרו לאדם קיים",
|
||||||
"recent": "חדש",
|
"recent": "חדש",
|
||||||
|
"recent-albums": "אלבומים אחרונים",
|
||||||
"recent_searches": "חיפושים אחרונים",
|
"recent_searches": "חיפושים אחרונים",
|
||||||
"refresh": "רענן",
|
"refresh": "רענן",
|
||||||
"refresh_encoded_videos": "רענן סרטונים מקודדים",
|
"refresh_encoded_videos": "רענן סרטונים מקודדים",
|
||||||
@@ -1044,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": "הסר URL",
|
||||||
"remove_user": "הסר משתמש",
|
"remove_user": "הסר משתמש",
|
||||||
"removed_api_key": "מפתח API הוסר: {name}",
|
"removed_api_key": "מפתח API הוסר: {name}",
|
||||||
"removed_from_archive": "הוסר מארכיון",
|
"removed_from_archive": "הוסר מארכיון",
|
||||||
@@ -1309,7 +1322,7 @@
|
|||||||
"view_all_users": "הצג את כל המשתמשים",
|
"view_all_users": "הצג את כל המשתמשים",
|
||||||
"view_in_timeline": "ראה בציר הזמן",
|
"view_in_timeline": "ראה בציר הזמן",
|
||||||
"view_links": "הצג קישורים",
|
"view_links": "הצג קישורים",
|
||||||
"view_name": "לצפות",
|
"view_name": "הצג",
|
||||||
"view_next_asset": "הצג את הנכס הבא",
|
"view_next_asset": "הצג את הנכס הבא",
|
||||||
"view_previous_asset": "הצג את הנכס הקודם",
|
"view_previous_asset": "הצג את הנכס הקודם",
|
||||||
"view_stack": "הצג ערימה",
|
"view_stack": "הצג ערימה",
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "इसमें जोड़ें..।",
|
"add_to": "इसमें जोड़ें..।",
|
||||||
"add_to_album": "एल्बम में जोड़ें",
|
"add_to_album": "एल्बम में जोड़ें",
|
||||||
"add_to_shared_album": "साझा एल्बम में जोड़ें",
|
"add_to_shared_album": "साझा एल्बम में जोड़ें",
|
||||||
|
"add_url": "URL जोड़ें",
|
||||||
"added_to_archive": "संग्रहीत कर दिया गया है",
|
"added_to_archive": "संग्रहीत कर दिया गया है",
|
||||||
"added_to_favorites": "पसंदीदा में जोड़ा गया",
|
"added_to_favorites": "पसंदीदा में जोड़ा गया",
|
||||||
"added_to_favorites_count": "पसंदीदा में {count, number} जोड़ा गया",
|
"added_to_favorites_count": "पसंदीदा में {count, number} जोड़ा गया",
|
||||||
|
|||||||
24
i18n/hu.json
24
i18n/hu.json
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Hozzáadás ide...",
|
"add_to": "Hozzáadás ide...",
|
||||||
"add_to_album": "Felvétel albumba",
|
"add_to_album": "Felvétel albumba",
|
||||||
"add_to_shared_album": "Felvétel megosztott albumba",
|
"add_to_shared_album": "Felvétel megosztott albumba",
|
||||||
|
"add_url": "URL hozzáadása",
|
||||||
"added_to_archive": "Hozzáadva az archívumhoz",
|
"added_to_archive": "Hozzáadva az archívumhoz",
|
||||||
"added_to_favorites": "Hozzáadva a kedvencekhez",
|
"added_to_favorites": "Hozzáadva a kedvencekhez",
|
||||||
"added_to_favorites_count": "{count, number} hozzáadva a kedvencekhez",
|
"added_to_favorites_count": "{count, number} hozzáadva a kedvencekhez",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Képek szemantikai keresése CLIP beágyazások segítségével",
|
"machine_learning_smart_search_description": "Képek szemantikai keresése CLIP beágyazások segítségével",
|
||||||
"machine_learning_smart_search_enabled": "Okos keresés engedélyezése",
|
"machine_learning_smart_search_enabled": "Okos keresés engedélyezése",
|
||||||
"machine_learning_smart_search_enabled_description": "Ha ki van kapcsolva, a képek nem lesznek átalakítva okos kereséshez.",
|
"machine_learning_smart_search_enabled_description": "Ha ki van kapcsolva, a képek nem lesznek átalakítva okos kereséshez.",
|
||||||
"machine_learning_url_description": "Gépi tanulás szerver URL címe",
|
"machine_learning_url_description": "Gépi tanulás szerver URL címe. Ha többi, mint egy URL van megadva, mindegyik szervert egyenként próbálja meg, amíg az egyik sikeresen nem válaszol, sorrendben az elsőtől az utólsóig.",
|
||||||
"manage_concurrency": "Párhuzamos Feladatok Kezelése",
|
"manage_concurrency": "Párhuzamos Feladatok Kezelése",
|
||||||
"manage_log_settings": "Naplózási beállítások kezelése",
|
"manage_log_settings": "Naplózási beállítások kezelése",
|
||||||
"map_dark_style": "Sötét stílus",
|
"map_dark_style": "Sötét stílus",
|
||||||
@@ -249,6 +250,16 @@
|
|||||||
"storage_template_user_label": "A felhasználó Tárhely Címkéje <code>{label}</code>",
|
"storage_template_user_label": "A felhasználó Tárhely Címkéje <code>{label}</code>",
|
||||||
"system_settings": "Rendszerbeállítások",
|
"system_settings": "Rendszerbeállítások",
|
||||||
"tag_cleanup_job": "Címkék kipucolása",
|
"tag_cleanup_job": "Címkék kipucolása",
|
||||||
|
"template_email_available_tags": "Használthatod a következő változókat a sablonodban: {tags}",
|
||||||
|
"template_email_if_empty": "Ha a sablon üres, akkor az alapértelmezett email lesz használva.",
|
||||||
|
"template_email_invite_album": "Album meghívás sablon",
|
||||||
|
"template_email_preview": "Előnézet",
|
||||||
|
"template_email_settings": "Email sablonok",
|
||||||
|
"template_email_settings_description": "Saját email értesítések kezelése",
|
||||||
|
"template_email_update_album": "Album frissítve sablon",
|
||||||
|
"template_email_welcome": "Üdvözlő email sablon",
|
||||||
|
"template_settings": "Értesítés sablon",
|
||||||
|
"template_settings_description": "Egyéni sablonok kezelése az értesítésekhez.",
|
||||||
"theme_custom_css_settings": "Egyedi CSS",
|
"theme_custom_css_settings": "Egyedi CSS",
|
||||||
"theme_custom_css_settings_description": "CSS Stíluslapokkal az Immich stílusa megváltoztatható.",
|
"theme_custom_css_settings_description": "CSS Stíluslapokkal az Immich stílusa megváltoztatható.",
|
||||||
"theme_settings": "Téma Beállítások",
|
"theme_settings": "Téma Beállítások",
|
||||||
@@ -306,7 +317,7 @@
|
|||||||
"transcoding_threads": "Folyamatok száma",
|
"transcoding_threads": "Folyamatok száma",
|
||||||
"transcoding_threads_description": "Magas értékek esetén gyorsabban kódol, viszont kevesebb erőforrást hagy a szerver többi folyamatának. Nem ajánlott a CPU magjainak számánál nagyobb érték beállítása. A 0 érték maximalizálja a processzor kihasználását.",
|
"transcoding_threads_description": "Magas értékek esetén gyorsabban kódol, viszont kevesebb erőforrást hagy a szerver többi folyamatának. Nem ajánlott a CPU magjainak számánál nagyobb érték beállítása. A 0 érték maximalizálja a processzor kihasználását.",
|
||||||
"transcoding_tone_mapping": "Tónusleképezés (tone-mapping)",
|
"transcoding_tone_mapping": "Tónusleképezés (tone-mapping)",
|
||||||
"transcoding_tone_mapping_description": "Megpróbálja megőrizni a HDR videók kinézetét SDR-re való konvertálás során. Minden algoritmus különböző módon tesz kompromisszumot a színek, részletek, és a fényerő megőrzésében. A Hable inkább a részletek őrzi meg, a Mobius a színeket, a Reinhard pedig a fényerőt.",
|
"transcoding_tone_mapping_description": "Megpróbálja megőrizni a HDR videók kinézetét SDR-re való konvertálás során. Minden algoritmus különböző módon tesz kompromisszumot a színek, részletek, és a fényerő megőrzésében. A Hable inkább a részleteket őrzi meg, a Mobius a színeket, a Reinhard pedig a fényerőt.",
|
||||||
"transcoding_transcode_policy": "Átkódolási szabályzat",
|
"transcoding_transcode_policy": "Átkódolási szabályzat",
|
||||||
"transcoding_transcode_policy_description": "Videó átkódolási szabályzat . HDR videók mindig átkódolásra kerülnek (kivéve, ha az átkódolás ki van kapcsolva).",
|
"transcoding_transcode_policy_description": "Videó átkódolási szabályzat . HDR videók mindig átkódolásra kerülnek (kivéve, ha az átkódolás ki van kapcsolva).",
|
||||||
"transcoding_two_pass_encoding": "Átkódolás két menetben",
|
"transcoding_two_pass_encoding": "Átkódolás két menetben",
|
||||||
@@ -723,6 +734,7 @@
|
|||||||
"external": "Külső Képtár",
|
"external": "Külső Képtár",
|
||||||
"external_libraries": "Külső Képtárak",
|
"external_libraries": "Külső Képtárak",
|
||||||
"face_unassigned": "Nincs hozzárendelve",
|
"face_unassigned": "Nincs hozzárendelve",
|
||||||
|
"failed_to_load_assets": "Nem sikerült betölteni az elemeket",
|
||||||
"favorite": "Kedvenc",
|
"favorite": "Kedvenc",
|
||||||
"favorite_or_unfavorite_photo": "Fotó kedvencnek jelölése vagy annak visszavonása",
|
"favorite_or_unfavorite_photo": "Fotó kedvencnek jelölése vagy annak visszavonása",
|
||||||
"favorites": "Kedvencek",
|
"favorites": "Kedvencek",
|
||||||
@@ -748,7 +760,7 @@
|
|||||||
"group_no": "Nincs csoportosítás",
|
"group_no": "Nincs csoportosítás",
|
||||||
"group_owner": "Csoportosítás tulajdonos szerint",
|
"group_owner": "Csoportosítás tulajdonos szerint",
|
||||||
"group_year": "Csoportosítás év szerint",
|
"group_year": "Csoportosítás év szerint",
|
||||||
"has_quota": "Van kvótája",
|
"has_quota": "Kvóta",
|
||||||
"hi_user": "Szia {name} ({email})",
|
"hi_user": "Szia {name} ({email})",
|
||||||
"hide_all_people": "Minden személy elrejtése",
|
"hide_all_people": "Minden személy elrejtése",
|
||||||
"hide_gallery": "Galéria elrejtése",
|
"hide_gallery": "Galéria elrejtése",
|
||||||
@@ -793,7 +805,7 @@
|
|||||||
"keep": "Megtart",
|
"keep": "Megtart",
|
||||||
"keep_all": "Összeset Megtart",
|
"keep_all": "Összeset Megtart",
|
||||||
"keep_this_delete_others": "Ennek a meghagyása, a többi törlése",
|
"keep_this_delete_others": "Ennek a meghagyása, a többi törlése",
|
||||||
"kept_this_deleted_others": "Ennek az elemnek és a törölteknek meghagyása {count, plural, one {# asset} other {# assets}}",
|
"kept_this_deleted_others": "Ez az elem és a töröltek meg lettek hagyva {count, plural, one {# asset} other {# assets}}",
|
||||||
"keyboard_shortcuts": "Billentyűparancsok",
|
"keyboard_shortcuts": "Billentyűparancsok",
|
||||||
"language": "Nyelv",
|
"language": "Nyelv",
|
||||||
"language_setting_description": "Válaszd ki preferált nyelvet",
|
"language_setting_description": "Válaszd ki preferált nyelvet",
|
||||||
@@ -1022,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, other {# elem}} hozzárendelve egy új személyhez",
|
"reassigned_assets_to_new_person": "{count, plural, other {# elem}} hozzárendelve egy új személyhez",
|
||||||
"reassing_hint": "Kijelölt elemek létező személyhez rendelése",
|
"reassing_hint": "Kijelölt elemek létező személyhez rendelése",
|
||||||
"recent": "Friss",
|
"recent": "Friss",
|
||||||
|
"recent-albums": "Legutóbbi albumok",
|
||||||
"recent_searches": "Legutóbbi keresések",
|
"recent_searches": "Legutóbbi keresések",
|
||||||
"refresh": "Frissítés",
|
"refresh": "Frissítés",
|
||||||
"refresh_encoded_videos": "Átkódolt videók frissítése",
|
"refresh_encoded_videos": "Átkódolt videók frissítése",
|
||||||
@@ -1043,6 +1056,7 @@
|
|||||||
"remove_from_album": "Eltávolítás az albumból",
|
"remove_from_album": "Eltávolítás az albumból",
|
||||||
"remove_from_favorites": "Eltávolítás a kedvencekből",
|
"remove_from_favorites": "Eltávolítás a kedvencekből",
|
||||||
"remove_from_shared_link": "Eltávolítás a megosztott linkből",
|
"remove_from_shared_link": "Eltávolítás a megosztott linkből",
|
||||||
|
"remove_url": "URL eltávolítása",
|
||||||
"remove_user": "Felhasználó eltávolítása",
|
"remove_user": "Felhasználó eltávolítása",
|
||||||
"removed_api_key": "API Kulcs eltávolítva: {name}",
|
"removed_api_key": "API Kulcs eltávolítva: {name}",
|
||||||
"removed_from_archive": "Archívumból eltávolítva",
|
"removed_from_archive": "Archívumból eltávolítva",
|
||||||
@@ -1170,7 +1184,7 @@
|
|||||||
"sidebar": "Oldalsáv",
|
"sidebar": "Oldalsáv",
|
||||||
"sidebar_display_description": "Nézet link megjelenítése az oldalsávban",
|
"sidebar_display_description": "Nézet link megjelenítése az oldalsávban",
|
||||||
"sign_out": "Kijelentkezés",
|
"sign_out": "Kijelentkezés",
|
||||||
"sign_up": "Feliratkozás",
|
"sign_up": "Regisztráció",
|
||||||
"size": "Méret",
|
"size": "Méret",
|
||||||
"skip_to_content": "Ugrás a tartalomhoz",
|
"skip_to_content": "Ugrás a tartalomhoz",
|
||||||
"skip_to_folders": "Ugrás a mappákhoz",
|
"skip_to_folders": "Ugrás a mappákhoz",
|
||||||
|
|||||||
18
i18n/id.json
18
i18n/id.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Segarkan",
|
"about": "Tentang",
|
||||||
"account": "Akun",
|
"account": "Akun",
|
||||||
"account_settings": "Pengaturan Akun",
|
"account_settings": "Pengaturan Akun",
|
||||||
"acknowledge": "Pernyataan",
|
"acknowledge": "Pernyataan",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Tambahkan ke...",
|
"add_to": "Tambahkan ke...",
|
||||||
"add_to_album": "Tambahkan ke album",
|
"add_to_album": "Tambahkan ke album",
|
||||||
"add_to_shared_album": "Tambahkan ke album terbagi",
|
"add_to_shared_album": "Tambahkan ke album terbagi",
|
||||||
|
"add_url": "Tambahkan URL",
|
||||||
"added_to_archive": "Ditambahkan ke arsip",
|
"added_to_archive": "Ditambahkan ke arsip",
|
||||||
"added_to_favorites": "Ditambahkan ke favorit",
|
"added_to_favorites": "Ditambahkan ke favorit",
|
||||||
"added_to_favorites_count": "Ditambahkan {count, number} ke favorit",
|
"added_to_favorites_count": "Ditambahkan {count, number} ke favorit",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Cari gambar secara semantik menggunakan penyematan CLIP",
|
"machine_learning_smart_search_description": "Cari gambar secara semantik menggunakan penyematan CLIP",
|
||||||
"machine_learning_smart_search_enabled": "Aktifkan pencarian pintar",
|
"machine_learning_smart_search_enabled": "Aktifkan pencarian pintar",
|
||||||
"machine_learning_smart_search_enabled_description": "Jika dinonaktifkan, gambar tidak akan dienkode untuk pencarian pintar.",
|
"machine_learning_smart_search_enabled_description": "Jika dinonaktifkan, gambar tidak akan dienkode untuk pencarian pintar.",
|
||||||
"machine_learning_url_description": "URL server pembelajaran mesin",
|
"machine_learning_url_description": "URL server pembelajaran mesin. Jika lebih dari satu URL disediakan, setiap server akan dicoba satu per satu sampai salah satu berhasil merespons, dari urutan pertama sampai terakhir.",
|
||||||
"manage_concurrency": "Kelola Konkurensi",
|
"manage_concurrency": "Kelola Konkurensi",
|
||||||
"manage_log_settings": "Kelola pengaturan log",
|
"manage_log_settings": "Kelola pengaturan log",
|
||||||
"map_dark_style": "Gaya gelap",
|
"map_dark_style": "Gaya gelap",
|
||||||
@@ -249,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> adalah Label Penyimpanan pengguna",
|
"storage_template_user_label": "<code>{label}</code> adalah Label Penyimpanan pengguna",
|
||||||
"system_settings": "Pengaturan Sistem",
|
"system_settings": "Pengaturan Sistem",
|
||||||
"tag_cleanup_job": "Pembersihan tag",
|
"tag_cleanup_job": "Pembersihan tag",
|
||||||
|
"template_email_available_tags": "Anda dapat menggunakan variabel berikut dalam templat Anda: {tags}",
|
||||||
|
"template_email_if_empty": "Jika templat kosong, surel bawaan akan digunakan.",
|
||||||
|
"template_email_invite_album": "Templat Undangan Album",
|
||||||
|
"template_email_preview": "Pratinjau",
|
||||||
|
"template_email_settings": "Templat Surel",
|
||||||
|
"template_email_settings_description": "Kelola templat notifikasi surel kustom",
|
||||||
|
"template_email_update_album": "Perbarui Templat Album",
|
||||||
|
"template_email_welcome": "Templat surel selamat datang",
|
||||||
|
"template_settings": "Templat Notifikasi",
|
||||||
|
"template_settings_description": "Kelola templat kustom untuk notifikasi.",
|
||||||
"theme_custom_css_settings": "CSS Kustom",
|
"theme_custom_css_settings": "CSS Kustom",
|
||||||
"theme_custom_css_settings_description": "CSS memungkinkan desain Immich untuk diubah.",
|
"theme_custom_css_settings_description": "CSS memungkinkan desain Immich untuk diubah.",
|
||||||
"theme_settings": "Pengaturan Tema",
|
"theme_settings": "Pengaturan Tema",
|
||||||
@@ -723,6 +734,7 @@
|
|||||||
"external": "Eksternal",
|
"external": "Eksternal",
|
||||||
"external_libraries": "Pustaka Eksternal",
|
"external_libraries": "Pustaka Eksternal",
|
||||||
"face_unassigned": "Tidak ada nama",
|
"face_unassigned": "Tidak ada nama",
|
||||||
|
"failed_to_load_assets": "Gagal memuat aset",
|
||||||
"favorite": "Favorit",
|
"favorite": "Favorit",
|
||||||
"favorite_or_unfavorite_photo": "Favorit atau batalkan pemfavoritan foto",
|
"favorite_or_unfavorite_photo": "Favorit atau batalkan pemfavoritan foto",
|
||||||
"favorites": "Favorit",
|
"favorites": "Favorit",
|
||||||
@@ -1022,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Menetapkan ulang {count, plural, one {# aset} other {# aset}} kepada orang baru",
|
"reassigned_assets_to_new_person": "Menetapkan ulang {count, plural, one {# aset} other {# aset}} kepada orang baru",
|
||||||
"reassing_hint": "Tetapkan aset yang dipilih ke orang yang sudah ada",
|
"reassing_hint": "Tetapkan aset yang dipilih ke orang yang sudah ada",
|
||||||
"recent": "Terkini",
|
"recent": "Terkini",
|
||||||
|
"recent-albums": "Album terkini",
|
||||||
"recent_searches": "Pencarian terkini",
|
"recent_searches": "Pencarian terkini",
|
||||||
"refresh": "Segarkan",
|
"refresh": "Segarkan",
|
||||||
"refresh_encoded_videos": "Segarkan video terenkode",
|
"refresh_encoded_videos": "Segarkan video terenkode",
|
||||||
@@ -1043,6 +1056,7 @@
|
|||||||
"remove_from_album": "Hapus dari album",
|
"remove_from_album": "Hapus dari album",
|
||||||
"remove_from_favorites": "Hapus dari favorit",
|
"remove_from_favorites": "Hapus dari favorit",
|
||||||
"remove_from_shared_link": "Hapus dari tautan terbagi",
|
"remove_from_shared_link": "Hapus dari tautan terbagi",
|
||||||
|
"remove_url": "Hapus URL",
|
||||||
"remove_user": "Keluarkan pengguna",
|
"remove_user": "Keluarkan pengguna",
|
||||||
"removed_api_key": "Kunci API Dihapus: {name}",
|
"removed_api_key": "Kunci API Dihapus: {name}",
|
||||||
"removed_from_archive": "Dihapus dari arsip",
|
"removed_from_archive": "Dihapus dari arsip",
|
||||||
|
|||||||
20
i18n/it.json
20
i18n/it.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Aggiorna",
|
"about": "Informazioni su",
|
||||||
"account": "Profilo",
|
"account": "Profilo",
|
||||||
"account_settings": "Impostazioni Account",
|
"account_settings": "Impostazioni Account",
|
||||||
"acknowledge": "Acconsento",
|
"acknowledge": "Acconsento",
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Cerca immagini semanticamente utilizzato gli embedding CLIP",
|
"machine_learning_smart_search_description": "Cerca immagini semanticamente utilizzato gli embedding CLIP",
|
||||||
"machine_learning_smart_search_enabled": "Attiva ricerca intelligente",
|
"machine_learning_smart_search_enabled": "Attiva ricerca intelligente",
|
||||||
"machine_learning_smart_search_enabled_description": "Se disabilitato le immagini non saranno codificate per la ricerca intelligente.",
|
"machine_learning_smart_search_enabled_description": "Se disabilitato le immagini non saranno codificate per la ricerca intelligente.",
|
||||||
"machine_learning_url_description": "URL del server machine learning",
|
"machine_learning_url_description": "URL del server machine learning. Se sono stati forniti più di un URL, verrà testato un server alla volta finché uno non risponderà, in ordine dal primo all'ultimo.",
|
||||||
"manage_concurrency": "Gestisci Concorrenza",
|
"manage_concurrency": "Gestisci Concorrenza",
|
||||||
"manage_log_settings": "Gestisci le impostazioni dei log",
|
"manage_log_settings": "Gestisci le impostazioni dei log",
|
||||||
"map_dark_style": "Tema scuro",
|
"map_dark_style": "Tema scuro",
|
||||||
@@ -250,9 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> è l'etichetta di archiviazione dell'utente",
|
"storage_template_user_label": "<code>{label}</code> è l'etichetta di archiviazione dell'utente",
|
||||||
"system_settings": "Impostazioni di sistema",
|
"system_settings": "Impostazioni di sistema",
|
||||||
"tag_cleanup_job": "Pulisci Tag",
|
"tag_cleanup_job": "Pulisci Tag",
|
||||||
|
"template_email_available_tags": "Puoi usare le seguenti variabili nel tuo modello: {tags}",
|
||||||
|
"template_email_if_empty": "Se il modello è vuoto, verrà usata l'email di default.",
|
||||||
|
"template_email_invite_album": "Modello di invito all'album",
|
||||||
"template_email_preview": "Anteprima",
|
"template_email_preview": "Anteprima",
|
||||||
"template_email_settings": "Template Email",
|
"template_email_settings": "Template Email",
|
||||||
|
"template_email_settings_description": "Gestisci i modelli personalizzati di notifiche email",
|
||||||
|
"template_email_update_album": "Modello di aggiornamento dell'album",
|
||||||
|
"template_email_welcome": "Modello di email di benvenuto",
|
||||||
"template_settings": "Templates Notifiche",
|
"template_settings": "Templates Notifiche",
|
||||||
|
"template_settings_description": "Gestisci i modelli personalizzati per le notifiche.",
|
||||||
"theme_custom_css_settings": "CSS Personalizzato",
|
"theme_custom_css_settings": "CSS Personalizzato",
|
||||||
"theme_custom_css_settings_description": "I Cascading Style Sheets (CSS) permettono di personalizzare l'interfaccia di Immich.",
|
"theme_custom_css_settings_description": "I Cascading Style Sheets (CSS) permettono di personalizzare l'interfaccia di Immich.",
|
||||||
"theme_settings": "Impostazioni Tema",
|
"theme_settings": "Impostazioni Tema",
|
||||||
@@ -521,7 +528,7 @@
|
|||||||
"delete_key": "Elimina chiave",
|
"delete_key": "Elimina chiave",
|
||||||
"delete_library": "Elimina Libreria",
|
"delete_library": "Elimina Libreria",
|
||||||
"delete_link": "Elimina link",
|
"delete_link": "Elimina link",
|
||||||
"delete_others": "Elimina altri",
|
"delete_others": "Elimina gli altri",
|
||||||
"delete_shared_link": "Elimina link condiviso",
|
"delete_shared_link": "Elimina link condiviso",
|
||||||
"delete_tag": "Elimina tag",
|
"delete_tag": "Elimina tag",
|
||||||
"delete_tag_confirmation_prompt": "Sei sicuro di voler cancellare il tag {tagName}?",
|
"delete_tag_confirmation_prompt": "Sei sicuro di voler cancellare il tag {tagName}?",
|
||||||
@@ -727,6 +734,7 @@
|
|||||||
"external": "Esterno",
|
"external": "Esterno",
|
||||||
"external_libraries": "Librerie esterne",
|
"external_libraries": "Librerie esterne",
|
||||||
"face_unassigned": "Non assegnata",
|
"face_unassigned": "Non assegnata",
|
||||||
|
"failed_to_load_assets": "Impossibile caricare gli asset",
|
||||||
"favorite": "Preferito",
|
"favorite": "Preferito",
|
||||||
"favorite_or_unfavorite_photo": "Aggiungi o rimuovi foto da preferiti",
|
"favorite_or_unfavorite_photo": "Aggiungi o rimuovi foto da preferiti",
|
||||||
"favorites": "Preferiti",
|
"favorites": "Preferiti",
|
||||||
@@ -797,6 +805,7 @@
|
|||||||
"keep": "Mantieni",
|
"keep": "Mantieni",
|
||||||
"keep_all": "Tieni tutto",
|
"keep_all": "Tieni tutto",
|
||||||
"keep_this_delete_others": "Tieni questo, elimina gli altri",
|
"keep_this_delete_others": "Tieni questo, elimina gli altri",
|
||||||
|
"kept_this_deleted_others": "Mantenuto questo asset ed eliminati {count, plural, one {# asset} other {# assets}}",
|
||||||
"keyboard_shortcuts": "Scorciatoie da tastiera",
|
"keyboard_shortcuts": "Scorciatoie da tastiera",
|
||||||
"language": "Lingua",
|
"language": "Lingua",
|
||||||
"language_setting_description": "Seleziona la tua lingua predefinita",
|
"language_setting_description": "Seleziona la tua lingua predefinita",
|
||||||
@@ -1025,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {Riassegnato # asset} other {Riassegnati # assets}} ad una nuova persona",
|
"reassigned_assets_to_new_person": "{count, plural, one {Riassegnato # asset} other {Riassegnati # assets}} ad una nuova persona",
|
||||||
"reassing_hint": "Assegna gli assets selezionati ad una persona esistente",
|
"reassing_hint": "Assegna gli assets selezionati ad una persona esistente",
|
||||||
"recent": "Recenti",
|
"recent": "Recenti",
|
||||||
|
"recent-albums": "Album recenti",
|
||||||
"recent_searches": "Ricerche recenti",
|
"recent_searches": "Ricerche recenti",
|
||||||
"refresh": "Aggiorna",
|
"refresh": "Aggiorna",
|
||||||
"refresh_encoded_videos": "Ricarica video codificati",
|
"refresh_encoded_videos": "Ricarica video codificati",
|
||||||
@@ -1046,6 +1056,7 @@
|
|||||||
"remove_from_album": "Rimuovere dall'album",
|
"remove_from_album": "Rimuovere dall'album",
|
||||||
"remove_from_favorites": "Rimuovi dai preferiti",
|
"remove_from_favorites": "Rimuovi dai preferiti",
|
||||||
"remove_from_shared_link": "Rimuovi dal link condiviso",
|
"remove_from_shared_link": "Rimuovi dal link condiviso",
|
||||||
|
"remove_url": "Rimuovi URL",
|
||||||
"remove_user": "Rimuovi utente",
|
"remove_user": "Rimuovi utente",
|
||||||
"removed_api_key": "Rimossa chiave API: {name}",
|
"removed_api_key": "Rimossa chiave API: {name}",
|
||||||
"removed_from_archive": "Rimosso dall'archivio",
|
"removed_from_archive": "Rimosso dall'archivio",
|
||||||
@@ -1228,6 +1239,7 @@
|
|||||||
"they_will_be_merged_together": "Verranno uniti insieme",
|
"they_will_be_merged_together": "Verranno uniti insieme",
|
||||||
"third_party_resources": "Risorse di Terze Parti",
|
"third_party_resources": "Risorse di Terze Parti",
|
||||||
"time_based_memories": "Ricordi basati sul tempo",
|
"time_based_memories": "Ricordi basati sul tempo",
|
||||||
|
"timeline": "Linea temporale",
|
||||||
"timezone": "Fuso orario",
|
"timezone": "Fuso orario",
|
||||||
"to_archive": "Archivio",
|
"to_archive": "Archivio",
|
||||||
"to_change_password": "Modifica password",
|
"to_change_password": "Modifica password",
|
||||||
@@ -1237,6 +1249,7 @@
|
|||||||
"to_trash": "Cancella",
|
"to_trash": "Cancella",
|
||||||
"toggle_settings": "Attiva/disattiva impostazioni",
|
"toggle_settings": "Attiva/disattiva impostazioni",
|
||||||
"toggle_theme": "Abilita tema scuro",
|
"toggle_theme": "Abilita tema scuro",
|
||||||
|
"total": "Totale",
|
||||||
"total_usage": "Utilizzo totale",
|
"total_usage": "Utilizzo totale",
|
||||||
"trash": "Cestino",
|
"trash": "Cestino",
|
||||||
"trash_all": "Cestina Tutto",
|
"trash_all": "Cestina Tutto",
|
||||||
@@ -1309,6 +1322,7 @@
|
|||||||
"view_all_users": "Visualizza tutti gli utenti",
|
"view_all_users": "Visualizza tutti gli utenti",
|
||||||
"view_in_timeline": "Visualizza in timeline",
|
"view_in_timeline": "Visualizza in timeline",
|
||||||
"view_links": "Visualizza i link",
|
"view_links": "Visualizza i link",
|
||||||
|
"view_name": "Visualizza",
|
||||||
"view_next_asset": "Visualizza risorsa successiva",
|
"view_next_asset": "Visualizza risorsa successiva",
|
||||||
"view_previous_asset": "Visualizza risorsa precedente",
|
"view_previous_asset": "Visualizza risorsa precedente",
|
||||||
"view_stack": "Visualizza Raggruppamento",
|
"view_stack": "Visualizza Raggruppamento",
|
||||||
|
|||||||
10
i18n/lt.json
10
i18n/lt.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Apie",
|
"about": "Atnaujinti",
|
||||||
"account": "Paskyra",
|
"account": "Paskyra",
|
||||||
"account_settings": "Paskyros nustatymai",
|
"account_settings": "Paskyros nustatymai",
|
||||||
"acknowledge": "Patvirtinti",
|
"acknowledge": "Patvirtinti",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Pridėti į ...",
|
"add_to": "Pridėti į ...",
|
||||||
"add_to_album": "Pridėti į albumą",
|
"add_to_album": "Pridėti į albumą",
|
||||||
"add_to_shared_album": "Pridėti į bendrinamą albumą",
|
"add_to_shared_album": "Pridėti į bendrinamą albumą",
|
||||||
|
"add_url": "Pridėti URL",
|
||||||
"added_to_archive": "Pridėta į archyvą",
|
"added_to_archive": "Pridėta į archyvą",
|
||||||
"added_to_favorites": "Pridėta prie mėgstamiausių",
|
"added_to_favorites": "Pridėta prie mėgstamiausių",
|
||||||
"added_to_favorites_count": "{count, plural, one {# pridėtas} few {# pridėti} other {# pridėta}} prie mėgstamiausių",
|
"added_to_favorites_count": "{count, plural, one {# pridėtas} few {# pridėti} other {# pridėta}} prie mėgstamiausių",
|
||||||
@@ -30,7 +31,12 @@
|
|||||||
"authentication_settings": "Autentifikavimo nustatymai",
|
"authentication_settings": "Autentifikavimo nustatymai",
|
||||||
"authentication_settings_description": "Tvarkyti slaptažodžių, OAuth ir kitus autentifikavimo parametrus",
|
"authentication_settings_description": "Tvarkyti slaptažodžių, OAuth ir kitus autentifikavimo parametrus",
|
||||||
"authentication_settings_disable_all": "Ar tikrai norite išjungti visus prisijungimo būdus? Prisijungimas bus visiškai išjungtas.",
|
"authentication_settings_disable_all": "Ar tikrai norite išjungti visus prisijungimo būdus? Prisijungimas bus visiškai išjungtas.",
|
||||||
|
"authentication_settings_reenable": "Norėdami vėl įjungti, naudokite <link>Serverio komandą</link>.",
|
||||||
"background_task_job": "Foninės užduotys",
|
"background_task_job": "Foninės užduotys",
|
||||||
|
"backup_database": "Duomenų bazės atsarginė kopija",
|
||||||
|
"backup_database_enable_description": "Įgalinti duomenų bazės atsarginė kopijas",
|
||||||
|
"backup_keep_last_amount": "Išsaugomų ankstesnių atsarginių duomenų bazės kopijų skaičius",
|
||||||
|
"backup_settings": "Atsarginės kopijos nustatymai",
|
||||||
"check_all": "Pažymėti viską",
|
"check_all": "Pažymėti viską",
|
||||||
"config_set_by_file": "Konfigūracija dabar nustatyta konfigūracinio failo",
|
"config_set_by_file": "Konfigūracija dabar nustatyta konfigūracinio failo",
|
||||||
"confirm_delete_library": "Ar tikrai norite ištrinti {library} biblioteką?",
|
"confirm_delete_library": "Ar tikrai norite ištrinti {library} biblioteką?",
|
||||||
@@ -1021,6 +1027,8 @@
|
|||||||
"user": "Naudotojas",
|
"user": "Naudotojas",
|
||||||
"user_id": "Naudotojo ID",
|
"user_id": "Naudotojo ID",
|
||||||
"user_usage_detail": "",
|
"user_usage_detail": "",
|
||||||
|
"user_usage_stats": "Paskyros naudojimo statistika",
|
||||||
|
"user_usage_stats_description": "Žiūrėti paskyros naudojimo statistiką",
|
||||||
"username": "Naudotojo vardas",
|
"username": "Naudotojo vardas",
|
||||||
"users": "Naudotojai",
|
"users": "Naudotojai",
|
||||||
"utilities": "Priemonės",
|
"utilities": "Priemonės",
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Pievienot ..",
|
"add_to": "Pievienot ..",
|
||||||
"add_to_album": "Pievienot albumam",
|
"add_to_album": "Pievienot albumam",
|
||||||
"add_to_shared_album": "Pievienot koplietotam albumam",
|
"add_to_shared_album": "Pievienot koplietotam albumam",
|
||||||
|
"add_url": "Pievienot URL",
|
||||||
"added_to_archive": "Pievienots arhīvam",
|
"added_to_archive": "Pievienots arhīvam",
|
||||||
"added_to_favorites": "Pievienots izlasei",
|
"added_to_favorites": "Pievienots izlasei",
|
||||||
"added_to_favorites_count": "Pievienots {count, number} izlasei",
|
"added_to_favorites_count": "Pievienots {count, number} izlasei",
|
||||||
@@ -41,6 +42,7 @@
|
|||||||
"confirm_reprocess_all_faces": "Vai tiešām vēlaties atkārtoti apstrādāt visas sejas? Tas arī atiestatīs cilvēkus ar vārdiem.",
|
"confirm_reprocess_all_faces": "Vai tiešām vēlaties atkārtoti apstrādāt visas sejas? Tas arī atiestatīs cilvēkus ar vārdiem.",
|
||||||
"confirm_user_password_reset": "Vai tiešām vēlaties atiestatīt lietotāja {user} paroli?",
|
"confirm_user_password_reset": "Vai tiešām vēlaties atiestatīt lietotāja {user} paroli?",
|
||||||
"create_job": "Izveidot darbu",
|
"create_job": "Izveidot darbu",
|
||||||
|
"cron_expression": "Cron izteiksme",
|
||||||
"disable_login": "Atspējot pieteikšanos",
|
"disable_login": "Atspējot pieteikšanos",
|
||||||
"duplicate_detection_job_description": "Palaidiet mašīnmācīšanos uz līdzekļiem, lai noteiktu līdzīgus attēlus. Paļaujas uz Viedo Meklēšanu",
|
"duplicate_detection_job_description": "Palaidiet mašīnmācīšanos uz līdzekļiem, lai noteiktu līdzīgus attēlus. Paļaujas uz Viedo Meklēšanu",
|
||||||
"external_library_created_at": "Ārēja bibliotēka (izveidota {date})",
|
"external_library_created_at": "Ārēja bibliotēka (izveidota {date})",
|
||||||
@@ -110,12 +112,14 @@
|
|||||||
"map_settings": "Karte",
|
"map_settings": "Karte",
|
||||||
"map_settings_description": "",
|
"map_settings_description": "",
|
||||||
"map_style_description": "",
|
"map_style_description": "",
|
||||||
|
"metadata_extraction_job": "Metadatu iegūšana",
|
||||||
"metadata_extraction_job_description": "",
|
"metadata_extraction_job_description": "",
|
||||||
"metadata_settings": "Metadatu iestatījumi",
|
"metadata_settings": "Metadatu iestatījumi",
|
||||||
"migration_job": "Migrācija",
|
"migration_job": "Migrācija",
|
||||||
"migration_job_description": "",
|
"migration_job_description": "",
|
||||||
|
"note_cannot_be_changed_later": "PIEZĪME: Vēlāk to vairs nevar mainīt!",
|
||||||
"notification_email_from_address": "No adreses",
|
"notification_email_from_address": "No adreses",
|
||||||
"notification_email_from_address_description": "",
|
"notification_email_from_address_description": "Sūtītāja e-pasta adrese, piemēram: “Immich foto serveris <noreply@example.com>”",
|
||||||
"notification_email_host_description": "",
|
"notification_email_host_description": "",
|
||||||
"notification_email_ignore_certificate_errors": "Ignorēt sertifikātu kļūdas",
|
"notification_email_ignore_certificate_errors": "Ignorēt sertifikātu kļūdas",
|
||||||
"notification_email_ignore_certificate_errors_description": "Ignorēt TLS sertifikāta apstiprināšanas kļūdas (nav ieteicams)",
|
"notification_email_ignore_certificate_errors_description": "Ignorēt TLS sertifikāta apstiprināšanas kļūdas (nav ieteicams)",
|
||||||
|
|||||||
65
i18n/ms.json
65
i18n/ms.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Kemaskini",
|
"about": "Tentang",
|
||||||
"account": "Akaun",
|
"account": "Akaun",
|
||||||
"account_settings": "Tetapan Akaun",
|
"account_settings": "Tetapan Akaun",
|
||||||
"acknowledge": "Akui",
|
"acknowledge": "Akui",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Tambah ke...",
|
"add_to": "Tambah ke...",
|
||||||
"add_to_album": "Tambah ke album",
|
"add_to_album": "Tambah ke album",
|
||||||
"add_to_shared_album": "Tambah ke album yang dikongsi",
|
"add_to_shared_album": "Tambah ke album yang dikongsi",
|
||||||
|
"add_url": "Tambah URL",
|
||||||
"added_to_archive": "Tambah ke arkib",
|
"added_to_archive": "Tambah ke arkib",
|
||||||
"added_to_favorites": "Ditambah pada favorit",
|
"added_to_favorites": "Ditambah pada favorit",
|
||||||
"added_to_favorites_count": "Menambahkan {count, number} ke favorit",
|
"added_to_favorites_count": "Menambahkan {count, number} ke favorit",
|
||||||
@@ -49,6 +50,7 @@
|
|||||||
"confirm_user_password_reset": "Adakah anda pasti mahu menetapkan semula kata laluan {user}?",
|
"confirm_user_password_reset": "Adakah anda pasti mahu menetapkan semula kata laluan {user}?",
|
||||||
"create_job": "Cipta tugas",
|
"create_job": "Cipta tugas",
|
||||||
"cron_expression": "Ungkapan cron",
|
"cron_expression": "Ungkapan cron",
|
||||||
|
"cron_expression_description": "Tetapkan selang imbasan menggunakan format cron. Untuk maklumat lanjut, sila rujuk ke sebagai contoh <link>Crontab Guru</link>",
|
||||||
"cron_expression_presets": "Pratetap-pratetap ungkapan Cron",
|
"cron_expression_presets": "Pratetap-pratetap ungkapan Cron",
|
||||||
"disable_login": "Lumpuhkan fungsi log masuk",
|
"disable_login": "Lumpuhkan fungsi log masuk",
|
||||||
"duplicate_detection_job_description": "Jalankan pembelajaran mesin pada aset untuk mengesan imej yang serupa. Bergantung pada Carian Pintar",
|
"duplicate_detection_job_description": "Jalankan pembelajaran mesin pada aset untuk mengesan imej yang serupa. Bergantung pada Carian Pintar",
|
||||||
@@ -124,16 +126,73 @@
|
|||||||
"machine_learning_min_recognized_faces": "Minimum mengenali wajah",
|
"machine_learning_min_recognized_faces": "Minimum mengenali wajah",
|
||||||
"machine_learning_min_recognized_faces_description": "Bilangan minima wajah yang dikenali untuk seseorang dicipta. Peningkatan ini menjadikan Pengecaman Wajah lebih tepat atas kos meningkatkan peluang wajah tidak diberikan kepada seseorang.",
|
"machine_learning_min_recognized_faces_description": "Bilangan minima wajah yang dikenali untuk seseorang dicipta. Peningkatan ini menjadikan Pengecaman Wajah lebih tepat atas kos meningkatkan peluang wajah tidak diberikan kepada seseorang.",
|
||||||
"machine_learning_settings": "Tetapan Pembelajaran Mesin",
|
"machine_learning_settings": "Tetapan Pembelajaran Mesin",
|
||||||
|
"machine_learning_smart_search_enabled_description": "Jika ditutup, gambar-gambar tidak akan dikodkan untuk carian pintar.",
|
||||||
"map_dark_style": "Tema gelap",
|
"map_dark_style": "Tema gelap",
|
||||||
"map_enable_description": "Aktifkan ciri peta",
|
"map_enable_description": "Aktifkan ciri peta",
|
||||||
"map_gps_settings": "Tetapan Peta & GPS",
|
"map_gps_settings": "Tetapan Peta & GPS",
|
||||||
"map_light_style": "Tema terang",
|
"map_light_style": "Tema terang",
|
||||||
|
"map_reverse_geocoding_enable_description": "Dayakan pengekodan geo terbalik",
|
||||||
|
"map_reverse_geocoding_settings": "Tetapan Pengekodan Geo Terbalik",
|
||||||
"map_settings": "Peta",
|
"map_settings": "Peta",
|
||||||
"map_settings_description": "Urus tetapan peta",
|
"map_settings_description": "Urus tetapan peta",
|
||||||
|
"metadata_extraction_job": "Sari metadata",
|
||||||
|
"metadata_extraction_job_description": "Sari maklumat metadata dari setiap aset, seperti GPS, muka-muka, dan pelaraian",
|
||||||
|
"metadata_faces_import_setting": "Dayakan import muka",
|
||||||
|
"metadata_settings": "Tetapan Metadata",
|
||||||
|
"metadata_settings_description": "Urus tetapan metadata",
|
||||||
|
"migration_job": "Migrasi",
|
||||||
|
"migration_job_description": "Pindahkan imej kecil untuk aset-aset dan muka-muka kepada struktur folder terkini",
|
||||||
|
"no_paths_added": "Tiada laluan yang ditambah",
|
||||||
|
"no_pattern_added": "Tiada corak ditambah",
|
||||||
|
"note_cannot_be_changed_later": "NOTA: Ini tidak boleh diubah kemudian!",
|
||||||
|
"note_unlimited_quota": "Nota: Masukkan 0 untuk kuota tanpa had",
|
||||||
"notification_email_from_address": "Dari alamat",
|
"notification_email_from_address": "Dari alamat",
|
||||||
"notification_email_from_address_description": "Alamat e-mel penghantar, sebagai contoh: \"Immich Photo Server <noreply@example.com>\"",
|
"notification_email_from_address_description": "Alamat e-mel penghantar, sebagai contoh: \"Immich Photo Server <noreply@example.com>\"",
|
||||||
"notification_settings": "Tetapan Pemberitahuan"
|
"notification_email_host_description": "Hos e-mel pelayan (cth. smtp.immich.app)",
|
||||||
|
"notification_email_ignore_certificate_errors": "Abaikan ralat-ralat sijil",
|
||||||
|
"notification_email_password_description": "Kata laluan untuk digunakan semasa membuat pengesahan dengan pelayan e-mel",
|
||||||
|
"notification_email_port_description": "Port pelayan e-mel (cth 25, 465 atau 587)",
|
||||||
|
"notification_email_sent_test_email_button": "Hantar e-mel ujian dan simpan",
|
||||||
|
"notification_email_setting_description": "Tetapan-tetapan untuk menghantar notifikasi e-mel",
|
||||||
|
"notification_email_test_email": "Hantar e-mel ujian",
|
||||||
|
"notification_email_test_email_failed": "Gagal untuk menghantar e-mel ujian, sila semak nilai-nilai anda",
|
||||||
|
"notification_email_test_email_sent": "E-mel ujian telah dihantar ke {email}. Sila semak peti masuk anda.",
|
||||||
|
"notification_email_username_description": "Nama pengguna untuk digunakan semasa mengesahkan dengan pelayan e-mel",
|
||||||
|
"notification_enable_email_notifications": "Dayakan notifikasi-notifikasi e-mel",
|
||||||
|
"notification_settings": "Tetapan Pemberitahuan",
|
||||||
|
"notification_settings_description": "Urus tetapan-tetapan notifikasi, termasuk e-mel",
|
||||||
|
"oauth_auto_launch": "Pelancaran automatik",
|
||||||
|
"oauth_auto_register": "Daftar secara automatik",
|
||||||
|
"oauth_auto_register_description": "Daftar secara automatik pengguna-pengguna baharu selepas mendaftar masuk dengan OAuth",
|
||||||
|
"oauth_button_text": "Teks butang",
|
||||||
|
"oauth_client_id": "ID Pelanggan",
|
||||||
|
"oauth_client_secret": "Rahsia Pelanggan",
|
||||||
|
"oauth_enable_description": "Log masuk dengan OAuth",
|
||||||
|
"oauth_issuer_url": "URL Pengeluar",
|
||||||
|
"oauth_mobile_redirect_uri": "URI ubah hala mudah alih",
|
||||||
|
"oauth_scope": "Skop",
|
||||||
|
"oauth_settings": "OAuth",
|
||||||
|
"oauth_settings_description": "Urus tetapan-tetapan log masuk OAuth",
|
||||||
|
"oauth_settings_more_details": "Untuk maklumat lanjut tentang ciri ini, rujuk ke <link>dokumen</link>.",
|
||||||
|
"oauth_storage_quota_default": "Kuota storan lalai (GiB)",
|
||||||
|
"password_enable_description": "Log masuk dengan e-mel dan kata laluan",
|
||||||
|
"password_settings": "Kata Laluan Log Masuk",
|
||||||
|
"password_settings_description": "Urus tetapan-tetapan kata laluan log masuk",
|
||||||
|
"paths_validated_successfully": "Semua laluan berjaya disahkan",
|
||||||
|
"quota_size_gib": "Saiz Kuota (GiB)",
|
||||||
|
"registration": "Pendaftaran Admin",
|
||||||
|
"registration_description": "Memandangkan anda adalah pengguna pertama pada sistem, anda akan ditugaskan sebagai Admin dan bertanggungjawab untuk tugas pentadbiran, serta pengguna tambahan yang akan anda tambah.",
|
||||||
|
"repair_all": "Baiki Semua",
|
||||||
|
"require_password_change_on_login": "Perlukan pengguna menukar kata laluan ketika log masuk pertama",
|
||||||
|
"reset_settings_to_default": "Tetapkan semula tetapan kepada lalai",
|
||||||
|
"reset_settings_to_recent_saved": "Tetapkan semula tetapan kepada tetapan yang disimpan baru-baru ini"
|
||||||
},
|
},
|
||||||
|
"timeline": "Garis masa",
|
||||||
|
"total": "Jumlah",
|
||||||
"user_usage_stats": "Statistik penggunaan akaun",
|
"user_usage_stats": "Statistik penggunaan akaun",
|
||||||
"user_usage_stats_description": "Papar statistik penggunaan akaun"
|
"user_usage_stats_description": "Papar statistik penggunaan akaun",
|
||||||
|
"year": "Tahun",
|
||||||
|
"yes": "Ya",
|
||||||
|
"you_dont_have_any_shared_links": "Anda tidak mempunyai apa-apa pautan yang dikongsi",
|
||||||
|
"zoom_image": "Zum Gambar"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Oppdater",
|
"about": "Om",
|
||||||
"account": "Konto",
|
"account": "Konto",
|
||||||
"account_settings": "Konto Innstillinger",
|
"account_settings": "Konto Innstillinger",
|
||||||
"acknowledge": "Bekreft",
|
"acknowledge": "Bekreft",
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
"machine_learning_smart_search_description": "Søk etter bilder semantisk ved å bruke CLIP-embeddings",
|
"machine_learning_smart_search_description": "Søk etter bilder semantisk ved å bruke CLIP-embeddings",
|
||||||
"machine_learning_smart_search_enabled": "Aktiver smart søk",
|
"machine_learning_smart_search_enabled": "Aktiver smart søk",
|
||||||
"machine_learning_smart_search_enabled_description": "Hvis deaktivert, vil bilder ikke bli enkodet for smart søk.",
|
"machine_learning_smart_search_enabled_description": "Hvis deaktivert, vil bilder ikke bli enkodet for smart søk.",
|
||||||
"machine_learning_url_description": "URL til maskinlærings-serveren",
|
"machine_learning_url_description": "URL til maskinlærings-serveren. Hvis mer enn en URL er lagt inn, hver server vill bli forsøkt en om gangen frem til en svarer suksessfullt, i rekkefølge fra først til sist.",
|
||||||
"manage_concurrency": "Administrer samtidighet",
|
"manage_concurrency": "Administrer samtidighet",
|
||||||
"manage_log_settings": "Administrer logginnstillinger",
|
"manage_log_settings": "Administrer logginnstillinger",
|
||||||
"map_dark_style": "Mørk stil",
|
"map_dark_style": "Mørk stil",
|
||||||
@@ -974,7 +974,7 @@
|
|||||||
"waiting": "Venter",
|
"waiting": "Venter",
|
||||||
"week": "Uke",
|
"week": "Uke",
|
||||||
"welcome": "Velkommen",
|
"welcome": "Velkommen",
|
||||||
"welcome_to_immich": "Velkommen til immich",
|
"welcome_to_immich": "Velkommen til Immich",
|
||||||
"year": "År",
|
"year": "År",
|
||||||
"yes": "Ja",
|
"yes": "Ja",
|
||||||
"you_dont_have_any_shared_links": "Du har ingen delte lenker",
|
"you_dont_have_any_shared_links": "Du har ingen delte lenker",
|
||||||
|
|||||||
18
i18n/nl.json
18
i18n/nl.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Verversen",
|
"about": "Over",
|
||||||
"account": "Account",
|
"account": "Account",
|
||||||
"account_settings": "Accountinstellingen",
|
"account_settings": "Accountinstellingen",
|
||||||
"acknowledge": "Begrepen",
|
"acknowledge": "Begrepen",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Toevoegen aan...",
|
"add_to": "Toevoegen aan...",
|
||||||
"add_to_album": "Aan album toevoegen",
|
"add_to_album": "Aan album toevoegen",
|
||||||
"add_to_shared_album": "Aan gedeeld album toevoegen",
|
"add_to_shared_album": "Aan gedeeld album toevoegen",
|
||||||
|
"add_url": "URL toevoegen",
|
||||||
"added_to_archive": "Toegevoegd aan archief",
|
"added_to_archive": "Toegevoegd aan archief",
|
||||||
"added_to_favorites": "Toegevoegd aan favorieten",
|
"added_to_favorites": "Toegevoegd aan favorieten",
|
||||||
"added_to_favorites_count": "{count, number} toegevoegd aan favorieten",
|
"added_to_favorites_count": "{count, number} toegevoegd aan favorieten",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Semantisch zoeken naar afbeeldingen met CLIP-embeddings",
|
"machine_learning_smart_search_description": "Semantisch zoeken naar afbeeldingen met CLIP-embeddings",
|
||||||
"machine_learning_smart_search_enabled": "Slim zoeken inschakelen",
|
"machine_learning_smart_search_enabled": "Slim zoeken inschakelen",
|
||||||
"machine_learning_smart_search_enabled_description": "Indien uitgeschakeld, worden afbeeldingen niet verwerkt voor slim zoeken.",
|
"machine_learning_smart_search_enabled_description": "Indien uitgeschakeld, worden afbeeldingen niet verwerkt voor slim zoeken.",
|
||||||
"machine_learning_url_description": "URL van de machine learning server",
|
"machine_learning_url_description": "De URL van de machine learning server. Als er meer dan één URL is opgegeven, wordt elke server geprobeerd totdat er een succesvol reageert, op volgorde van eerste tot laatste.",
|
||||||
"manage_concurrency": "Beheer gelijktijdigheid",
|
"manage_concurrency": "Beheer gelijktijdigheid",
|
||||||
"manage_log_settings": "Beheer logboekinstellingen",
|
"manage_log_settings": "Beheer logboekinstellingen",
|
||||||
"map_dark_style": "Donkere stijl",
|
"map_dark_style": "Donkere stijl",
|
||||||
@@ -249,16 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> is het opslaglabel van de gebruiker",
|
"storage_template_user_label": "<code>{label}</code> is het opslaglabel van de gebruiker",
|
||||||
"system_settings": "Systeeminstellingen",
|
"system_settings": "Systeeminstellingen",
|
||||||
"tag_cleanup_job": "Tag opschoning",
|
"tag_cleanup_job": "Tag opschoning",
|
||||||
|
"template_email_available_tags": "Je kan de volgende tags gebruiken in een template: {tags}",
|
||||||
|
"template_email_if_empty": "Wanneer het sjabloon leeg is, wordt de standaard mail gebruikt.",
|
||||||
|
"template_email_invite_album": "Uitgenodigd in album sjabloon",
|
||||||
|
"template_email_preview": "Voorbeeld",
|
||||||
"template_email_settings": "Email",
|
"template_email_settings": "Email",
|
||||||
"template_email_settings_description": "Beheer aangepaste email melding sjablonen",
|
"template_email_settings_description": "Beheer aangepaste email melding sjablonen",
|
||||||
"template_email_preview": "Voorbeeld",
|
|
||||||
"template_email_welcome": "Welkom email sjabloon",
|
|
||||||
"template_email_invite_album": "Uitgenodigd in album sjabloon",
|
|
||||||
"template_email_update_album": "Update in album sjabloon",
|
"template_email_update_album": "Update in album sjabloon",
|
||||||
|
"template_email_welcome": "Welkom email sjabloon",
|
||||||
"template_settings": "Melding sjablonen",
|
"template_settings": "Melding sjablonen",
|
||||||
"template_settings_description": "Beheer aangepast sjablonen voor meldingen.",
|
"template_settings_description": "Beheer aangepast sjablonen voor meldingen.",
|
||||||
"template_email_if_empty": "Wanneer het sjabloon leeg is, wordt de standaard mail gebruikt.",
|
|
||||||
"template_email_available_tags": "Je kan de volgende tags gebruiken in een template: {tags}",
|
|
||||||
"theme_custom_css_settings": "Aangepaste CSS",
|
"theme_custom_css_settings": "Aangepaste CSS",
|
||||||
"theme_custom_css_settings_description": "Met Cascading Style Sheets kan het ontwerp van Immich worden aangepast.",
|
"theme_custom_css_settings_description": "Met Cascading Style Sheets kan het ontwerp van Immich worden aangepast.",
|
||||||
"theme_settings": "Thema instellingen",
|
"theme_settings": "Thema instellingen",
|
||||||
@@ -733,6 +734,7 @@
|
|||||||
"external": "Extern",
|
"external": "Extern",
|
||||||
"external_libraries": "Externe bibliotheken",
|
"external_libraries": "Externe bibliotheken",
|
||||||
"face_unassigned": "Niet toegewezen",
|
"face_unassigned": "Niet toegewezen",
|
||||||
|
"failed_to_load_assets": "Kan assets niet laden",
|
||||||
"favorite": "Favoriet",
|
"favorite": "Favoriet",
|
||||||
"favorite_or_unfavorite_photo": "Foto markeren als of verwijderen uit favorieten",
|
"favorite_or_unfavorite_photo": "Foto markeren als of verwijderen uit favorieten",
|
||||||
"favorites": "Favorieten",
|
"favorites": "Favorieten",
|
||||||
@@ -1032,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {# asset} other {# assets}} opnieuw toegewezen aan een nieuw persoon",
|
"reassigned_assets_to_new_person": "{count, plural, one {# asset} other {# assets}} opnieuw toegewezen aan een nieuw persoon",
|
||||||
"reassing_hint": "Geselecteerde assets toewijzen aan een bestaand persoon",
|
"reassing_hint": "Geselecteerde assets toewijzen aan een bestaand persoon",
|
||||||
"recent": "Recent",
|
"recent": "Recent",
|
||||||
|
"recent-albums": "Recente albums",
|
||||||
"recent_searches": "Recente zoekopdrachten",
|
"recent_searches": "Recente zoekopdrachten",
|
||||||
"refresh": "Vernieuwen",
|
"refresh": "Vernieuwen",
|
||||||
"refresh_encoded_videos": "Vernieuw gecodeerde video's",
|
"refresh_encoded_videos": "Vernieuw gecodeerde video's",
|
||||||
@@ -1053,6 +1056,7 @@
|
|||||||
"remove_from_album": "Verwijder uit album",
|
"remove_from_album": "Verwijder uit album",
|
||||||
"remove_from_favorites": "Verwijderen uit favorieten",
|
"remove_from_favorites": "Verwijderen uit favorieten",
|
||||||
"remove_from_shared_link": "Verwijderen uit gedeelde link",
|
"remove_from_shared_link": "Verwijderen uit gedeelde link",
|
||||||
|
"remove_url": "Verwijder URL",
|
||||||
"remove_user": "Gebruiker verwijderen",
|
"remove_user": "Gebruiker verwijderen",
|
||||||
"removed_api_key": "API sleutel verwijderd: {name}",
|
"removed_api_key": "API sleutel verwijderd: {name}",
|
||||||
"removed_from_archive": "Verwijderd uit archief",
|
"removed_from_archive": "Verwijderd uit archief",
|
||||||
|
|||||||
32
i18n/nn.json
32
i18n/nn.json
@@ -1,3 +1,33 @@
|
|||||||
{
|
{
|
||||||
"about": "Oppdater"
|
"about": "Om",
|
||||||
|
"account": "Konto",
|
||||||
|
"account_settings": "Kontoinnstillingar",
|
||||||
|
"acknowledge": "Godkjenn",
|
||||||
|
"action": "Handling",
|
||||||
|
"actions": "Handlingar",
|
||||||
|
"active": "Aktiv",
|
||||||
|
"activity": "Aktivitet",
|
||||||
|
"activity_changed": "Aktivitet er {enabled, select, true {aktivert} other {deaktivert}}",
|
||||||
|
"add": "Legg til",
|
||||||
|
"add_a_description": "Legg til ei skildring",
|
||||||
|
"add_a_location": "Legg til ein stad",
|
||||||
|
"add_a_name": "Legg til eit namn",
|
||||||
|
"add_a_title": "Legg til ein tittel",
|
||||||
|
"add_exclusion_pattern": "Legg til ekskluderingsmønster",
|
||||||
|
"add_import_path": "Legg til sti for importering",
|
||||||
|
"add_location": "Legg til stad",
|
||||||
|
"add_more_users": "Legg til fleire brukarar",
|
||||||
|
"add_partner": "Legg til partnar",
|
||||||
|
"add_path": "Legg til sti",
|
||||||
|
"add_photos": "Legg til bilete",
|
||||||
|
"add_to": "Legg til...",
|
||||||
|
"add_to_album": "Legg til album",
|
||||||
|
"add_to_shared_album": "Legg til delt album",
|
||||||
|
"add_url": "Legg til URL",
|
||||||
|
"added_to_archive": "Lagt til arkiv",
|
||||||
|
"added_to_favorites": "Lagt til favorittar",
|
||||||
|
"added_to_favorites_count": "Lagt {count, number} til favorittar",
|
||||||
|
"admin": {
|
||||||
|
"confirm_delete_library": "Er du sikker på at du vil slette biblioteket {library}?"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
20
i18n/pl.json
20
i18n/pl.json
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"about": "Odśwież",
|
"about": "O",
|
||||||
"account": "Konto",
|
"account": "Konto",
|
||||||
"account_settings": "Ustawienia konta",
|
"account_settings": "Ustawienia konta",
|
||||||
"acknowledge": "Rozumiem",
|
"acknowledge": "Zrozumiałem/łam",
|
||||||
"action": "Akcja",
|
"action": "Akcja",
|
||||||
"actions": "Akcje/i",
|
"actions": "Akcje/i",
|
||||||
"active": "Aktywne",
|
"active": "Aktywne",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Dodaj do...",
|
"add_to": "Dodaj do...",
|
||||||
"add_to_album": "Dodaj do albumu",
|
"add_to_album": "Dodaj do albumu",
|
||||||
"add_to_shared_album": "Dodaj do udostępnionego albumu",
|
"add_to_shared_album": "Dodaj do udostępnionego albumu",
|
||||||
|
"add_url": "Dodaj URL",
|
||||||
"added_to_archive": "Dodano do archiwum",
|
"added_to_archive": "Dodano do archiwum",
|
||||||
"added_to_favorites": "Dodano do ulubionych",
|
"added_to_favorites": "Dodano do ulubionych",
|
||||||
"added_to_favorites_count": "Dodano {count, number} do ulubionych",
|
"added_to_favorites_count": "Dodano {count, number} do ulubionych",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Szukaj obrazów semantycznie za pomocą CLIP",
|
"machine_learning_smart_search_description": "Szukaj obrazów semantycznie za pomocą CLIP",
|
||||||
"machine_learning_smart_search_enabled": "Włącz inteligentne wyszukiwanie",
|
"machine_learning_smart_search_enabled": "Włącz inteligentne wyszukiwanie",
|
||||||
"machine_learning_smart_search_enabled_description": "Jeżeli wyłączone, obrazy nie będą przygotowywane do inteligentnego wyszukiwania.",
|
"machine_learning_smart_search_enabled_description": "Jeżeli wyłączone, obrazy nie będą przygotowywane do inteligentnego wyszukiwania.",
|
||||||
"machine_learning_url_description": "URL serwera uczenia maszynowego",
|
"machine_learning_url_description": "URL serwera uczenia maszynowego. Jeżeli podano więcej niż jeden URL, do każdego serwera będzie wysłane żądanie do tej pory dopóki chociaż jeden nie odpowie, w kolejności od pierwszego do ostatniego.",
|
||||||
"manage_concurrency": "Zarządzaj współbieżnością zadań",
|
"manage_concurrency": "Zarządzaj współbieżnością zadań",
|
||||||
"manage_log_settings": "Zarządzaj ustawieniami logów",
|
"manage_log_settings": "Zarządzaj ustawieniami logów",
|
||||||
"map_dark_style": "Styl ciemny",
|
"map_dark_style": "Styl ciemny",
|
||||||
@@ -249,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> to jest etykieta przechowywania użytkownika",
|
"storage_template_user_label": "<code>{label}</code> to jest etykieta przechowywania użytkownika",
|
||||||
"system_settings": "Ustawienia Systemowe",
|
"system_settings": "Ustawienia Systemowe",
|
||||||
"tag_cleanup_job": "Porządkowanie etykiet",
|
"tag_cleanup_job": "Porządkowanie etykiet",
|
||||||
|
"template_email_available_tags": "Możesz uzyć tych zmiennych w swoim szablonie: {tags}",
|
||||||
|
"template_email_if_empty": "Zostaw puste, aby użyć domyślny adres e-mail.",
|
||||||
|
"template_email_invite_album": "Szablon zaproszenia do albumu",
|
||||||
|
"template_email_preview": "Podgląd",
|
||||||
|
"template_email_settings": "Szablony e-mail",
|
||||||
|
"template_email_settings_description": "Zarządzaj niestandardowymi e-mail powiadomieniami",
|
||||||
|
"template_email_update_album": "Szablon aktualizacji albumu",
|
||||||
|
"template_email_welcome": "Szablon powitalnego e-mail",
|
||||||
|
"template_settings": "Szablony Powiadomień",
|
||||||
|
"template_settings_description": "Zarządzaj niestandardowymi szablonami powiadomień e-mail.",
|
||||||
"theme_custom_css_settings": "Własny CSS",
|
"theme_custom_css_settings": "Własny CSS",
|
||||||
"theme_custom_css_settings_description": "Właśny CSS pozwala na zmianę wyglądu aplikacji Immich.",
|
"theme_custom_css_settings_description": "Właśny CSS pozwala na zmianę wyglądu aplikacji Immich.",
|
||||||
"theme_settings": "Ustawienia Motywu",
|
"theme_settings": "Ustawienia Motywu",
|
||||||
@@ -723,6 +734,7 @@
|
|||||||
"external": "Zewnętrzny",
|
"external": "Zewnętrzny",
|
||||||
"external_libraries": "Biblioteki Zewnętrzne",
|
"external_libraries": "Biblioteki Zewnętrzne",
|
||||||
"face_unassigned": "Nieprzypisany",
|
"face_unassigned": "Nieprzypisany",
|
||||||
|
"failed_to_load_assets": "Nie udało się załadować zasobów",
|
||||||
"favorite": "Ulubione",
|
"favorite": "Ulubione",
|
||||||
"favorite_or_unfavorite_photo": "Dodaj lub usuń z ulubionych",
|
"favorite_or_unfavorite_photo": "Dodaj lub usuń z ulubionych",
|
||||||
"favorites": "Ulubione",
|
"favorites": "Ulubione",
|
||||||
@@ -1022,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Przypisano ponownie {count, plural, one {# zasób} other {# zasobów}} do nowej osoby",
|
"reassigned_assets_to_new_person": "Przypisano ponownie {count, plural, one {# zasób} other {# zasobów}} do nowej osoby",
|
||||||
"reassing_hint": "Przypisz wybrane zasoby do istniejącej osoby",
|
"reassing_hint": "Przypisz wybrane zasoby do istniejącej osoby",
|
||||||
"recent": "Ostatnie",
|
"recent": "Ostatnie",
|
||||||
|
"recent-albums": "Ostatnie albumy",
|
||||||
"recent_searches": "Ostatnie wyszukiwania",
|
"recent_searches": "Ostatnie wyszukiwania",
|
||||||
"refresh": "Odśwież",
|
"refresh": "Odśwież",
|
||||||
"refresh_encoded_videos": "Odśwież enkodowane wideo",
|
"refresh_encoded_videos": "Odśwież enkodowane wideo",
|
||||||
@@ -1043,6 +1056,7 @@
|
|||||||
"remove_from_album": "Usuń z albumu",
|
"remove_from_album": "Usuń z albumu",
|
||||||
"remove_from_favorites": "Usuń z ulubionych",
|
"remove_from_favorites": "Usuń z ulubionych",
|
||||||
"remove_from_shared_link": "Usuń z udostępnionego linku",
|
"remove_from_shared_link": "Usuń z udostępnionego linku",
|
||||||
|
"remove_url": "Usuń URL",
|
||||||
"remove_user": "Usuń użytkownika",
|
"remove_user": "Usuń użytkownika",
|
||||||
"removed_api_key": "Usunięto Klucz API: {name}",
|
"removed_api_key": "Usunięto Klucz API: {name}",
|
||||||
"removed_from_archive": "Usunięto z archiwum",
|
"removed_from_archive": "Usunięto z archiwum",
|
||||||
|
|||||||
18
i18n/pt.json
18
i18n/pt.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Atualizar",
|
"about": "Sobre",
|
||||||
"account": "Conta",
|
"account": "Conta",
|
||||||
"account_settings": "Definições de Conta",
|
"account_settings": "Definições de Conta",
|
||||||
"acknowledge": "Aceitar",
|
"acknowledge": "Aceitar",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Adicionar a...",
|
"add_to": "Adicionar a...",
|
||||||
"add_to_album": "Adicionar ao álbum",
|
"add_to_album": "Adicionar ao álbum",
|
||||||
"add_to_shared_album": "Adicionar ao álbum partilhado",
|
"add_to_shared_album": "Adicionar ao álbum partilhado",
|
||||||
|
"add_url": "Adicionar URL",
|
||||||
"added_to_archive": "Adicionado ao arquivo",
|
"added_to_archive": "Adicionado ao arquivo",
|
||||||
"added_to_favorites": "Adicionado aos favoritos",
|
"added_to_favorites": "Adicionado aos favoritos",
|
||||||
"added_to_favorites_count": "{count, plural, one {{count, number} adicionado aos favoritos} other {{count, number} adicionados aos favoritos}}",
|
"added_to_favorites_count": "{count, plural, one {{count, number} adicionado aos favoritos} other {{count, number} adicionados aos favoritos}}",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Pesquise imagens semanticamente utilizando embeddings CLIP",
|
"machine_learning_smart_search_description": "Pesquise imagens semanticamente utilizando embeddings CLIP",
|
||||||
"machine_learning_smart_search_enabled": "Ativar a Pesquisa Inteligente",
|
"machine_learning_smart_search_enabled": "Ativar a Pesquisa Inteligente",
|
||||||
"machine_learning_smart_search_enabled_description": "Se desativado, as imagens não serão codificadas para Pesquisa Inteligente.",
|
"machine_learning_smart_search_enabled_description": "Se desativado, as imagens não serão codificadas para Pesquisa Inteligente.",
|
||||||
"machine_learning_url_description": "URL do servidor de aprendizagem de máquina",
|
"machine_learning_url_description": "A URL do servidor de aprendizagem de máquina. Se for fornecido mais do que um URL, cada servidor será testado, um a um, até um deles responder com sucesso, por ordem do primeiro ao último.",
|
||||||
"manage_concurrency": "Gerir simultaneidade",
|
"manage_concurrency": "Gerir simultaneidade",
|
||||||
"manage_log_settings": "Gerir definições de registo",
|
"manage_log_settings": "Gerir definições de registo",
|
||||||
"map_dark_style": "Tema Escuro",
|
"map_dark_style": "Tema Escuro",
|
||||||
@@ -249,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> é o Rótulo do Armazenamento do utilizador",
|
"storage_template_user_label": "<code>{label}</code> é o Rótulo do Armazenamento do utilizador",
|
||||||
"system_settings": "Definições de Sistema",
|
"system_settings": "Definições de Sistema",
|
||||||
"tag_cleanup_job": "Limpeza de etiquetas",
|
"tag_cleanup_job": "Limpeza de etiquetas",
|
||||||
|
"template_email_available_tags": "Pode usar as seguintes variáveis no modelo: {tags}",
|
||||||
|
"template_email_if_empty": "Se o modelo estiver em branco, o modelo de e-mail padrão será utilizado.",
|
||||||
|
"template_email_invite_album": "Modelo do e-mail de convite para álbum",
|
||||||
|
"template_email_preview": "Pré-visualizar",
|
||||||
|
"template_email_settings": "Modelos de e-mail",
|
||||||
|
"template_email_settings_description": "Gerir modelos personalizados de e-mail de notificação",
|
||||||
|
"template_email_update_album": "Modelo do e-mail de atualização do álbum",
|
||||||
|
"template_email_welcome": "Modelos do email de boas vindas",
|
||||||
|
"template_settings": "Modelos de notificação",
|
||||||
|
"template_settings_description": "Gerir modelos personalizados para notificações.",
|
||||||
"theme_custom_css_settings": "CSS Personalizado",
|
"theme_custom_css_settings": "CSS Personalizado",
|
||||||
"theme_custom_css_settings_description": "Folhas de estilo em cascata (CSS) permitem que o design do Immich seja personalizado.",
|
"theme_custom_css_settings_description": "Folhas de estilo em cascata (CSS) permitem que o design do Immich seja personalizado.",
|
||||||
"theme_settings": "Definições de Tema",
|
"theme_settings": "Definições de Tema",
|
||||||
@@ -723,6 +734,7 @@
|
|||||||
"external": "Externo",
|
"external": "Externo",
|
||||||
"external_libraries": "Bibliotecas externas",
|
"external_libraries": "Bibliotecas externas",
|
||||||
"face_unassigned": "Sem atribuição",
|
"face_unassigned": "Sem atribuição",
|
||||||
|
"failed_to_load_assets": "Falha ao carregar ficheiros",
|
||||||
"favorite": "Favorito",
|
"favorite": "Favorito",
|
||||||
"favorite_or_unfavorite_photo": "Marcar ou desmarcar a foto como favorita",
|
"favorite_or_unfavorite_photo": "Marcar ou desmarcar a foto como favorita",
|
||||||
"favorites": "Favoritos",
|
"favorites": "Favoritos",
|
||||||
@@ -1022,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Reatribuído {count, plural, one {# ficheiro} other {# ficheiros}} a uma nova pessoa",
|
"reassigned_assets_to_new_person": "Reatribuído {count, plural, one {# ficheiro} other {# ficheiros}} a uma nova pessoa",
|
||||||
"reassing_hint": "Atribuir ficheiros selecionados a uma pessoa existente",
|
"reassing_hint": "Atribuir ficheiros selecionados a uma pessoa existente",
|
||||||
"recent": "Recentes",
|
"recent": "Recentes",
|
||||||
|
"recent-albums": "Álbuns recentes",
|
||||||
"recent_searches": "Pesquisas recentes",
|
"recent_searches": "Pesquisas recentes",
|
||||||
"refresh": "Atualizar",
|
"refresh": "Atualizar",
|
||||||
"refresh_encoded_videos": "Atualizar vídeos codificados",
|
"refresh_encoded_videos": "Atualizar vídeos codificados",
|
||||||
@@ -1043,6 +1056,7 @@
|
|||||||
"remove_from_album": "Remover do álbum",
|
"remove_from_album": "Remover do álbum",
|
||||||
"remove_from_favorites": "Remover dos favoritos",
|
"remove_from_favorites": "Remover dos favoritos",
|
||||||
"remove_from_shared_link": "Remover do link partilhado",
|
"remove_from_shared_link": "Remover do link partilhado",
|
||||||
|
"remove_url": "Remover URL",
|
||||||
"remove_user": "Remover utilizador",
|
"remove_user": "Remover utilizador",
|
||||||
"removed_api_key": "Foi removida a Chave de API: {name}",
|
"removed_api_key": "Foi removida a Chave de API: {name}",
|
||||||
"removed_from_archive": "Removido do arquivo",
|
"removed_from_archive": "Removido do arquivo",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Atualizar",
|
"about": "Sobre",
|
||||||
"account": "Conta",
|
"account": "Conta",
|
||||||
"account_settings": "Configurações da Conta",
|
"account_settings": "Configurações da Conta",
|
||||||
"acknowledge": "Entendi",
|
"acknowledge": "Entendi",
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
"forcing_refresh_library_files": "Forçando a atualização de todos os arquivos da biblioteca",
|
"forcing_refresh_library_files": "Forçando a atualização de todos os arquivos da biblioteca",
|
||||||
"image_format": "Formato",
|
"image_format": "Formato",
|
||||||
"image_format_description": "WebP produz arquivos menores que JPEG, mas é mais lento para codificar.",
|
"image_format_description": "WebP produz arquivos menores que JPEG, mas é mais lento para codificar.",
|
||||||
"image_prefer_embedded_preview": "Prefira visualização incorporada",
|
"image_prefer_embedded_preview": "Preferir visualização incorporada",
|
||||||
"image_prefer_embedded_preview_setting_description": "Use visualizações incorporadas em fotos RAW como entrada para processamento de imagem, quando disponível. Isso pode produzir cores mais precisas para algumas imagens, mas a qualidade da visualização depende da câmera e a imagem pode ter mais artefatos de compactação.",
|
"image_prefer_embedded_preview_setting_description": "Use visualizações incorporadas em fotos RAW como entrada para processamento de imagem, quando disponível. Isso pode produzir cores mais precisas para algumas imagens, mas a qualidade da visualização depende da câmera e a imagem pode ter mais artefatos de compactação.",
|
||||||
"image_prefer_wide_gamut": "Prefira ampla gama",
|
"image_prefer_wide_gamut": "Prefira ampla gama",
|
||||||
"image_prefer_wide_gamut_setting_description": "Use o Display P3 para miniaturas. Isso preserva melhor a vibração das imagens com espaços de cores amplos, mas as imagens podem aparecer de maneira diferente em dispositivos antigos com uma versão antiga do navegador. As imagens sRGB são mantidas como sRGB para evitar mudanças de cores.",
|
"image_prefer_wide_gamut_setting_description": "Use o Display P3 para miniaturas. Isso preserva melhor a vibração das imagens com espaços de cores amplos, mas as imagens podem aparecer de maneira diferente em dispositivos antigos com uma versão antiga do navegador. As imagens sRGB são mantidas como sRGB para evitar mudanças de cores.",
|
||||||
@@ -91,9 +91,9 @@
|
|||||||
"library_created": "Criado biblioteca: {library}",
|
"library_created": "Criado biblioteca: {library}",
|
||||||
"library_deleted": "Biblioteca excluída",
|
"library_deleted": "Biblioteca excluída",
|
||||||
"library_import_path_description": "Especifique uma pasta para importar. Esta pasta, incluindo subpastas, será escaneada em busca de imagens e vídeos.",
|
"library_import_path_description": "Especifique uma pasta para importar. Esta pasta, incluindo subpastas, será escaneada em busca de imagens e vídeos.",
|
||||||
"library_scanning": "Escanear periódicamente",
|
"library_scanning": "Verificação Periódica",
|
||||||
"library_scanning_description": "Configurar o escaneamento periódico da biblioteca",
|
"library_scanning_description": "Configurar verificação periódica da biblioteca",
|
||||||
"library_scanning_enable_description": "Habilitar escaneamento periódico da biblioteca",
|
"library_scanning_enable_description": "Habilitar verificação periódica da biblioteca",
|
||||||
"library_settings": "Biblioteca Externa",
|
"library_settings": "Biblioteca Externa",
|
||||||
"library_settings_description": "Gerenciar configurações de biblioteca externa",
|
"library_settings_description": "Gerenciar configurações de biblioteca externa",
|
||||||
"library_tasks_description": "Execute tarefas de biblioteca",
|
"library_tasks_description": "Execute tarefas de biblioteca",
|
||||||
|
|||||||
29
i18n/ro.json
29
i18n/ro.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Reîmprospătare",
|
"about": "Despre",
|
||||||
"account": "Cont",
|
"account": "Cont",
|
||||||
"account_settings": "Setări Cont",
|
"account_settings": "Setări Cont",
|
||||||
"acknowledge": "Văzut",
|
"acknowledge": "Văzut",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Adaugă la...",
|
"add_to": "Adaugă la...",
|
||||||
"add_to_album": "Adaugă în album",
|
"add_to_album": "Adaugă în album",
|
||||||
"add_to_shared_album": "Adaugă la album partajat",
|
"add_to_shared_album": "Adaugă la album partajat",
|
||||||
|
"add_url": "Adăugați adresa URL",
|
||||||
"added_to_archive": "Adăugat la arhivă",
|
"added_to_archive": "Adăugat la arhivă",
|
||||||
"added_to_favorites": "Adaugă la favorite",
|
"added_to_favorites": "Adaugă la favorite",
|
||||||
"added_to_favorites_count": "Adăugat {count, number} la favorite",
|
"added_to_favorites_count": "Adăugat {count, number} la favorite",
|
||||||
@@ -130,8 +131,8 @@
|
|||||||
"machine_learning_smart_search_description": "Căutarea semantică a imaginilor utilizând încorporările CLIP",
|
"machine_learning_smart_search_description": "Căutarea semantică a imaginilor utilizând încorporările CLIP",
|
||||||
"machine_learning_smart_search_enabled": "Activați căutarea inteligentă",
|
"machine_learning_smart_search_enabled": "Activați căutarea inteligentă",
|
||||||
"machine_learning_smart_search_enabled_description": "Dacă este dezactivată, imaginile nu vor fi codificate pentru căutarea inteligentă.",
|
"machine_learning_smart_search_enabled_description": "Dacă este dezactivată, imaginile nu vor fi codificate pentru căutarea inteligentă.",
|
||||||
"machine_learning_url_description": "Adresa URL a serverului de învățare automată",
|
"machine_learning_url_description": "Adresa URL a serverului de învățare automată. Dacă sunt furnizate mai multe adrese URL, fiecare server va fi încercat unul câte unul până când unul răspunde cu succes, în ordine de la primul până la ultimul.",
|
||||||
"manage_concurrency": "Gestionarea simultaneității",
|
"manage_concurrency": "Gestionarea Simultaneității",
|
||||||
"manage_log_settings": "Administrați setările jurnalului",
|
"manage_log_settings": "Administrați setările jurnalului",
|
||||||
"map_dark_style": "Mod întunecat",
|
"map_dark_style": "Mod întunecat",
|
||||||
"map_enable_description": "Activați funcțiile hărții",
|
"map_enable_description": "Activați funcțiile hărții",
|
||||||
@@ -150,7 +151,7 @@
|
|||||||
"metadata_extraction_job_description": "Extragere informații metadate din fiecare fișier cum ar fi localizare GPS, fețe și rezoluție,",
|
"metadata_extraction_job_description": "Extragere informații metadate din fiecare fișier cum ar fi localizare GPS, fețe și rezoluție,",
|
||||||
"metadata_faces_import_setting": "Activare import fețe",
|
"metadata_faces_import_setting": "Activare import fețe",
|
||||||
"metadata_faces_import_setting_description": "Importă fețe din datele EXIF ale imaginii și din fișiere tip \"sidecar\"",
|
"metadata_faces_import_setting_description": "Importă fețe din datele EXIF ale imaginii și din fișiere tip \"sidecar\"",
|
||||||
"metadata_settings": "Setări metadate",
|
"metadata_settings": "Setări Metadate",
|
||||||
"metadata_settings_description": "Gestionează setările pentru metadate",
|
"metadata_settings_description": "Gestionează setările pentru metadate",
|
||||||
"migration_job": "Migrare",
|
"migration_job": "Migrare",
|
||||||
"migration_job_description": "Migrați miniaturile pentru elemente și fețe la cea mai recentă structură de foldere",
|
"migration_job_description": "Migrați miniaturile pentru elemente și fețe la cea mai recentă structură de foldere",
|
||||||
@@ -222,6 +223,8 @@
|
|||||||
"send_welcome_email": "Trimite email de bun-venit",
|
"send_welcome_email": "Trimite email de bun-venit",
|
||||||
"server_external_domain_settings": "Domeniu extern",
|
"server_external_domain_settings": "Domeniu extern",
|
||||||
"server_external_domain_settings_description": "Domeniu pentru distribuire publicǎ a scurtǎturilor, incluzând http(s)://",
|
"server_external_domain_settings_description": "Domeniu pentru distribuire publicǎ a scurtǎturilor, incluzând http(s)://",
|
||||||
|
"server_public_users": "Utilizatori Publici",
|
||||||
|
"server_public_users_description": "Toți utilizatorii (nume și e-mail) sunt listați atunci când adăugați un utilizator la albumele partajate. Când este dezactivată, lista de utilizatori va fi disponibilă numai pentru utilizatorii admin.",
|
||||||
"server_settings": "Setǎri Server",
|
"server_settings": "Setǎri Server",
|
||||||
"server_settings_description": "Gestioneazǎ setǎrile serverului",
|
"server_settings_description": "Gestioneazǎ setǎrile serverului",
|
||||||
"server_welcome_message": "Mesaj de bun-venit",
|
"server_welcome_message": "Mesaj de bun-venit",
|
||||||
@@ -247,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> este eticheta de stocare a utilizatorului",
|
"storage_template_user_label": "<code>{label}</code> este eticheta de stocare a utilizatorului",
|
||||||
"system_settings": "Setǎri de Sistem",
|
"system_settings": "Setǎri de Sistem",
|
||||||
"tag_cleanup_job": "Curățare etichete",
|
"tag_cleanup_job": "Curățare etichete",
|
||||||
|
"template_email_available_tags": "Puteți utiliza următoarele variabile în șablonul dvs.: {tags}",
|
||||||
|
"template_email_if_empty": "Dacă șablonul este gol, va fi folosit e-mailul implicit.",
|
||||||
|
"template_email_invite_album": "Șablon de Album de Invitație",
|
||||||
|
"template_email_preview": "Previzualizare",
|
||||||
|
"template_email_settings": "Șabloane de E-mail",
|
||||||
|
"template_email_settings_description": "Gestionați șabloanele personalizate de notificare prin e-mail",
|
||||||
|
"template_email_update_album": "Actualizați Șablonul de Album",
|
||||||
|
"template_email_welcome": "Șablon de e-mail de bun venit",
|
||||||
|
"template_settings": "Șabloane de Notificare",
|
||||||
|
"template_settings_description": "Gestionați șabloanele personalizate pentru notificări.",
|
||||||
"theme_custom_css_settings": "CSS personalizat",
|
"theme_custom_css_settings": "CSS personalizat",
|
||||||
"theme_custom_css_settings_description": "Foile de stil în cascadă (CSS) permit personalizarea designului Immich.",
|
"theme_custom_css_settings_description": "Foile de stil în cascadă (CSS) permit personalizarea designului Immich.",
|
||||||
"theme_settings": "Setări Temă",
|
"theme_settings": "Setări Temă",
|
||||||
@@ -721,6 +734,7 @@
|
|||||||
"external": "Extern",
|
"external": "Extern",
|
||||||
"external_libraries": "Biblioteci Externe",
|
"external_libraries": "Biblioteci Externe",
|
||||||
"face_unassigned": "Nealocat",
|
"face_unassigned": "Nealocat",
|
||||||
|
"failed_to_load_assets": "Nu s-au încărcat activele",
|
||||||
"favorite": "Favorit",
|
"favorite": "Favorit",
|
||||||
"favorite_or_unfavorite_photo": "Fotografie preferată sau nepreferată",
|
"favorite_or_unfavorite_photo": "Fotografie preferată sau nepreferată",
|
||||||
"favorites": "Favorite",
|
"favorites": "Favorite",
|
||||||
@@ -1020,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Re-alocat {count, plural, one {# resursă} other {# resurse}} unei noi persoane",
|
"reassigned_assets_to_new_person": "Re-alocat {count, plural, one {# resursă} other {# resurse}} unei noi persoane",
|
||||||
"reassing_hint": "Atribuiți resursele selectate unei persoane existente",
|
"reassing_hint": "Atribuiți resursele selectate unei persoane existente",
|
||||||
"recent": "Recent",
|
"recent": "Recent",
|
||||||
|
"recent-albums": "Albume recente",
|
||||||
"recent_searches": "Căutări recente",
|
"recent_searches": "Căutări recente",
|
||||||
"refresh": "Reîmprospătare",
|
"refresh": "Reîmprospătare",
|
||||||
"refresh_encoded_videos": "Actualizează videoclipurile codificate",
|
"refresh_encoded_videos": "Actualizează videoclipurile codificate",
|
||||||
@@ -1041,6 +1056,7 @@
|
|||||||
"remove_from_album": "Ștergeți din album",
|
"remove_from_album": "Ștergeți din album",
|
||||||
"remove_from_favorites": "Eliminați din favorite",
|
"remove_from_favorites": "Eliminați din favorite",
|
||||||
"remove_from_shared_link": "Eliminați din linkul partajat",
|
"remove_from_shared_link": "Eliminați din linkul partajat",
|
||||||
|
"remove_url": "Eliminați adresa URL",
|
||||||
"remove_user": "Eliminați utilizatorul",
|
"remove_user": "Eliminați utilizatorul",
|
||||||
"removed_api_key": "Cheie API eliminată: {name}",
|
"removed_api_key": "Cheie API eliminată: {name}",
|
||||||
"removed_from_archive": "Eliminat din arhivă",
|
"removed_from_archive": "Eliminat din arhivă",
|
||||||
@@ -1223,6 +1239,7 @@
|
|||||||
"they_will_be_merged_together": "Vor fi îmbinate împreună",
|
"they_will_be_merged_together": "Vor fi îmbinate împreună",
|
||||||
"third_party_resources": "Resurse Terță Parte",
|
"third_party_resources": "Resurse Terță Parte",
|
||||||
"time_based_memories": "Amintiri bazate pe timp",
|
"time_based_memories": "Amintiri bazate pe timp",
|
||||||
|
"timeline": "Cronologie",
|
||||||
"timezone": "Fus orar",
|
"timezone": "Fus orar",
|
||||||
"to_archive": "Arhivă",
|
"to_archive": "Arhivă",
|
||||||
"to_change_password": "Schimbaţi parola",
|
"to_change_password": "Schimbaţi parola",
|
||||||
@@ -1232,6 +1249,7 @@
|
|||||||
"to_trash": "Coș de gunoi",
|
"to_trash": "Coș de gunoi",
|
||||||
"toggle_settings": "Activați setările",
|
"toggle_settings": "Activați setările",
|
||||||
"toggle_theme": "Activați tema întunecată",
|
"toggle_theme": "Activați tema întunecată",
|
||||||
|
"total": "Total",
|
||||||
"total_usage": "Utilizare totală",
|
"total_usage": "Utilizare totală",
|
||||||
"trash": "Coș de gunoi",
|
"trash": "Coș de gunoi",
|
||||||
"trash_all": "Ștergeți Tot",
|
"trash_all": "Ștergeți Tot",
|
||||||
@@ -1281,6 +1299,8 @@
|
|||||||
"user_purchase_settings_description": "Gestionați-vă achiziția",
|
"user_purchase_settings_description": "Gestionați-vă achiziția",
|
||||||
"user_role_set": "Setați {user} ca {role}",
|
"user_role_set": "Setați {user} ca {role}",
|
||||||
"user_usage_detail": "Detalii despre utilizare",
|
"user_usage_detail": "Detalii despre utilizare",
|
||||||
|
"user_usage_stats": "Statistici de utilizare a contului",
|
||||||
|
"user_usage_stats_description": "Vedeți statisticile de utilizare a contului",
|
||||||
"username": "Nume de utilizator",
|
"username": "Nume de utilizator",
|
||||||
"users": "Utilizatori",
|
"users": "Utilizatori",
|
||||||
"utilities": "Utilitǎți",
|
"utilities": "Utilitǎți",
|
||||||
@@ -1302,6 +1322,7 @@
|
|||||||
"view_all_users": "Vizulizați toți utilizatorii",
|
"view_all_users": "Vizulizați toți utilizatorii",
|
||||||
"view_in_timeline": "Vizualizați în cronologie",
|
"view_in_timeline": "Vizualizați în cronologie",
|
||||||
"view_links": "Vizualizați scurtǎturi",
|
"view_links": "Vizualizați scurtǎturi",
|
||||||
|
"view_name": "Vizualizare",
|
||||||
"view_next_asset": "Vizualizați următoarea resursă",
|
"view_next_asset": "Vizualizați următoarea resursă",
|
||||||
"view_previous_asset": "Vizualizați resursa anterioară",
|
"view_previous_asset": "Vizualizați resursa anterioară",
|
||||||
"view_stack": "Vizualizați Stiva",
|
"view_stack": "Vizualizați Stiva",
|
||||||
|
|||||||
18
i18n/ru.json
18
i18n/ru.json
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Добавить в...",
|
"add_to": "Добавить в...",
|
||||||
"add_to_album": "Добавить в альбом",
|
"add_to_album": "Добавить в альбом",
|
||||||
"add_to_shared_album": "Добавить в общий альбом",
|
"add_to_shared_album": "Добавить в общий альбом",
|
||||||
|
"add_url": "Добавить URL",
|
||||||
"added_to_archive": "Добавлено в архив",
|
"added_to_archive": "Добавлено в архив",
|
||||||
"added_to_favorites": "Добавлено в избранное",
|
"added_to_favorites": "Добавлено в избранное",
|
||||||
"added_to_favorites_count": "Добавлено{count, number} в избранное",
|
"added_to_favorites_count": "Добавлено{count, number} в избранное",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Семантический поиск изображений с использованием вложений CLIP",
|
"machine_learning_smart_search_description": "Семантический поиск изображений с использованием вложений CLIP",
|
||||||
"machine_learning_smart_search_enabled": "Включить интеллектуальный поиск",
|
"machine_learning_smart_search_enabled": "Включить интеллектуальный поиск",
|
||||||
"machine_learning_smart_search_enabled_description": "Если этот параметр отключен, изображения не будут кодироваться для интеллектуального поиска.",
|
"machine_learning_smart_search_enabled_description": "Если этот параметр отключен, изображения не будут кодироваться для интеллектуального поиска.",
|
||||||
"machine_learning_url_description": "URL-адрес сервера машинного обучения",
|
"machine_learning_url_description": "URL-адрес сервера машинного обучения. Если указаны несколько, запросы будут посланы на каждый, с первого до последнего, по очереди, пока не будет получен успешный ответ.",
|
||||||
"manage_concurrency": "Управление параллельностью заданий",
|
"manage_concurrency": "Управление параллельностью заданий",
|
||||||
"manage_log_settings": "Управление настройками журнала",
|
"manage_log_settings": "Управление настройками журнала",
|
||||||
"map_dark_style": "Тёмный стиль",
|
"map_dark_style": "Тёмный стиль",
|
||||||
@@ -249,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> - это метка хранилища пользователя",
|
"storage_template_user_label": "<code>{label}</code> - это метка хранилища пользователя",
|
||||||
"system_settings": "Системные настройки",
|
"system_settings": "Системные настройки",
|
||||||
"tag_cleanup_job": "Очистка тега",
|
"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": "Пользовательские CSS",
|
||||||
"theme_custom_css_settings_description": "Каскадные таблицы стилей позволяют настраивать дизайн Immich.",
|
"theme_custom_css_settings_description": "Каскадные таблицы стилей позволяют настраивать дизайн Immich.",
|
||||||
"theme_settings": "Настройки темы",
|
"theme_settings": "Настройки темы",
|
||||||
@@ -610,7 +621,7 @@
|
|||||||
"failed_to_get_people": "Не удалось получить информацию о людях",
|
"failed_to_get_people": "Не удалось получить информацию о людях",
|
||||||
"failed_to_keep_this_delete_others": "Не удалось сохранить этот объект и удалить другие объекты",
|
"failed_to_keep_this_delete_others": "Не удалось сохранить этот объект и удалить другие объекты",
|
||||||
"failed_to_load_asset": "Ошибка загрузки объекта",
|
"failed_to_load_asset": "Ошибка загрузки объекта",
|
||||||
"failed_to_load_assets": "Ошибка загрузки объектов",
|
"failed_to_load_assets": "Не удалось загрузить объекты",
|
||||||
"failed_to_load_people": "Не удалось загрузить людей",
|
"failed_to_load_people": "Не удалось загрузить людей",
|
||||||
"failed_to_remove_product_key": "Не удалось удалить ключ продукта",
|
"failed_to_remove_product_key": "Не удалось удалить ключ продукта",
|
||||||
"failed_to_stack_assets": "Не удалось сгруппировать объекты",
|
"failed_to_stack_assets": "Не удалось сгруппировать объекты",
|
||||||
@@ -723,6 +734,7 @@
|
|||||||
"external": "Внешний",
|
"external": "Внешний",
|
||||||
"external_libraries": "Внешние библиотеки",
|
"external_libraries": "Внешние библиотеки",
|
||||||
"face_unassigned": "Не назначено",
|
"face_unassigned": "Не назначено",
|
||||||
|
"failed_to_load_assets": "Не удалось загрузить объекты",
|
||||||
"favorite": "Избранное",
|
"favorite": "Избранное",
|
||||||
"favorite_or_unfavorite_photo": "Добавить или удалить фотографию из избранного",
|
"favorite_or_unfavorite_photo": "Добавить или удалить фотографию из избранного",
|
||||||
"favorites": "Избранное",
|
"favorites": "Избранное",
|
||||||
@@ -1022,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Переназначен{count, plural, one { # ресурс} few {о # ресурса} many {о # ресурсов} other {о # ресурсов}} новому человеку",
|
"reassigned_assets_to_new_person": "Переназначен{count, plural, one { # ресурс} few {о # ресурса} many {о # ресурсов} other {о # ресурсов}} новому человеку",
|
||||||
"reassing_hint": "Назначить выбранные ресурсы существующему пользователю",
|
"reassing_hint": "Назначить выбранные ресурсы существующему пользователю",
|
||||||
"recent": "Недавние",
|
"recent": "Недавние",
|
||||||
|
"recent-albums": "Недавние альбомы",
|
||||||
"recent_searches": "Недавние поисковые запросы",
|
"recent_searches": "Недавние поисковые запросы",
|
||||||
"refresh": "Обновить",
|
"refresh": "Обновить",
|
||||||
"refresh_encoded_videos": "Обновить закодированные видео",
|
"refresh_encoded_videos": "Обновить закодированные видео",
|
||||||
@@ -1043,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": "Удалить URL",
|
||||||
"remove_user": "Удалить пользователя",
|
"remove_user": "Удалить пользователя",
|
||||||
"removed_api_key": "Удален ключ API: {name}",
|
"removed_api_key": "Удален ключ API: {name}",
|
||||||
"removed_from_archive": "Удален из архива",
|
"removed_from_archive": "Удален из архива",
|
||||||
|
|||||||
15
i18n/sk.json
15
i18n/sk.json
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Pridať do...",
|
"add_to": "Pridať do...",
|
||||||
"add_to_album": "Pridať do albumu",
|
"add_to_album": "Pridať do albumu",
|
||||||
"add_to_shared_album": "Pridať do zdieľaného albumu",
|
"add_to_shared_album": "Pridať do zdieľaného albumu",
|
||||||
|
"add_url": "Pridaj URL",
|
||||||
"added_to_archive": "Pridané do archívu",
|
"added_to_archive": "Pridané do archívu",
|
||||||
"added_to_favorites": "Pridané do obľúbených",
|
"added_to_favorites": "Pridané do obľúbených",
|
||||||
"added_to_favorites_count": "Pridané {count, number} do obľúbených",
|
"added_to_favorites_count": "Pridané {count, number} do obľúbených",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Významové vyhľadávanie v obrázkoch pomocou CLIP vzorov",
|
"machine_learning_smart_search_description": "Významové vyhľadávanie v obrázkoch pomocou CLIP vzorov",
|
||||||
"machine_learning_smart_search_enabled": "Povoliť inteligentné vyhľadávanie",
|
"machine_learning_smart_search_enabled": "Povoliť inteligentné vyhľadávanie",
|
||||||
"machine_learning_smart_search_enabled_description": "Ak je vypnuté, obrázky nebudú spracované pre inteligentné vyhľadávanie.",
|
"machine_learning_smart_search_enabled_description": "Ak je vypnuté, obrázky nebudú spracované pre inteligentné vyhľadávanie.",
|
||||||
"machine_learning_url_description": "URL adresa servera pre strojové učenie",
|
"machine_learning_url_description": "URL adresa machine-learning servera. Ak je poskytnutých viacero URL adries, budú servery postupne testované od prvého po posledný, až kým jeden z nich úspešne odpovie.",
|
||||||
"manage_concurrency": "Správa súbežnosti",
|
"manage_concurrency": "Správa súbežnosti",
|
||||||
"manage_log_settings": "Spravovať nastavenia logovania",
|
"manage_log_settings": "Spravovať nastavenia logovania",
|
||||||
"map_dark_style": "Tmavý štýl",
|
"map_dark_style": "Tmavý štýl",
|
||||||
@@ -249,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> je Štítok úložiska používateľa",
|
"storage_template_user_label": "<code>{label}</code> je Štítok úložiska používateľa",
|
||||||
"system_settings": "Nastavenia systému",
|
"system_settings": "Nastavenia systému",
|
||||||
"tag_cleanup_job": "Premazanie značiek",
|
"tag_cleanup_job": "Premazanie značiek",
|
||||||
|
"template_email_available_tags": "V šablóne môžeš použiť nasledujúce premenné: {tags}",
|
||||||
|
"template_email_if_empty": "Ak nie je zadaná žiadna šablóna, bude použitá predvolená šablóna.",
|
||||||
|
"template_email_invite_album": "Šablóna pre Pozvánka do albumu",
|
||||||
|
"template_email_preview": "Ukážka",
|
||||||
|
"template_email_settings": "Emailové šablóny",
|
||||||
|
"template_email_settings_description": "Spravovanie vlastných šablón pre emailové upozornenia",
|
||||||
|
"template_email_update_album": "Upraviť šablónu albumu",
|
||||||
|
"template_email_welcome": "Šablóna uvítajúceho emailu",
|
||||||
|
"template_settings": "Šablóna upozornení",
|
||||||
|
"template_settings_description": "Spravovanie vlastných šablón upozornení.",
|
||||||
"theme_custom_css_settings": "Vlastné CSS",
|
"theme_custom_css_settings": "Vlastné CSS",
|
||||||
"theme_custom_css_settings_description": "CSS štýly umožňujú prispôsobiť dizajn Immich.",
|
"theme_custom_css_settings_description": "CSS štýly umožňujú prispôsobiť dizajn Immich.",
|
||||||
"theme_settings": "Nastavenia témovania",
|
"theme_settings": "Nastavenia témovania",
|
||||||
@@ -425,6 +436,8 @@
|
|||||||
"build": "Budovať",
|
"build": "Budovať",
|
||||||
"build_image": "Vytvoriť obrázok",
|
"build_image": "Vytvoriť obrázok",
|
||||||
"bulk_delete_duplicates_confirmation": "Naozaj chcete hromadne odstrániť {count, plural, one {# duplikátnu položku} few {# duplikáte položky} other {# duplikátnych položiek}}? Týmto sa zachová najväčšia položka z každej skupiny a všetky ostatné duplikáty sa natrvalo odstránia. Túto akciu nie je možné vrátiť späť!",
|
"bulk_delete_duplicates_confirmation": "Naozaj chcete hromadne odstrániť {count, plural, one {# duplikátnu položku} few {# duplikáte položky} other {# duplikátnych položiek}}? Týmto sa zachová najväčšia položka z každej skupiny a všetky ostatné duplikáty sa natrvalo odstránia. Túto akciu nie je možné vrátiť späť!",
|
||||||
|
"bulk_keep_duplicates_confirmation": "Naozaj chceš ponechať {count, plural, one {# duplicitný súbor} other {# duplicitné súbory}}? Týmto sa vysporiadaš so všetkými duplicitnými skupinami bez mazania súborov.",
|
||||||
|
"bulk_trash_duplicates_confirmation": "Naozaj chcete hromadne vymazať {count, plural, one {# duplicitný súbor} other {# duplicitné súbory}}? Týmto si ponecháš z každej skupiny najväčší súbor a vymažeš všetky ostatné duplicitné súbory v skupine.",
|
||||||
"buy": "Kúpiť Immich",
|
"buy": "Kúpiť Immich",
|
||||||
"camera": "Fotoaparát",
|
"camera": "Fotoaparát",
|
||||||
"camera_brand": "Výrobca fotoaparátu",
|
"camera_brand": "Výrobca fotoaparátu",
|
||||||
|
|||||||
66
i18n/sl.json
66
i18n/sl.json
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"about": "Osveži",
|
"about": "O programu",
|
||||||
"account": "Račun",
|
"account": "Račun",
|
||||||
"account_settings": "Nastavitve računa",
|
"account_settings": "Nastavitve računa",
|
||||||
"acknowledge": "Priznati",
|
"acknowledge": "Sem seznanjen",
|
||||||
"action": "Dejanje",
|
"action": "Dejanje",
|
||||||
"actions": "Dejanja",
|
"actions": "Dejanja",
|
||||||
"active": "Aktivno",
|
"active": "Aktivno",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Dodaj v...",
|
"add_to": "Dodaj v...",
|
||||||
"add_to_album": "Dodaj v album",
|
"add_to_album": "Dodaj v album",
|
||||||
"add_to_shared_album": "Dodaj k deljenemu albumu",
|
"add_to_shared_album": "Dodaj k deljenemu albumu",
|
||||||
|
"add_url": "Dodaj URL",
|
||||||
"added_to_archive": "Dodano v arhiv",
|
"added_to_archive": "Dodano v arhiv",
|
||||||
"added_to_favorites": "Dodano med priljubljene",
|
"added_to_favorites": "Dodano med priljubljene",
|
||||||
"added_to_favorites_count": "{count, number} dodanih med priljubljene",
|
"added_to_favorites_count": "{count, number} dodanih med priljubljene",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Semantično poiščite slike z uporabo vdelav CLIP",
|
"machine_learning_smart_search_description": "Semantično poiščite slike z uporabo vdelav CLIP",
|
||||||
"machine_learning_smart_search_enabled": "Omogoči pametno iskanje",
|
"machine_learning_smart_search_enabled": "Omogoči pametno iskanje",
|
||||||
"machine_learning_smart_search_enabled_description": "Če je onemogočeno, slike ne bodo kodirane za pametno iskanje.",
|
"machine_learning_smart_search_enabled_description": "Če je onemogočeno, slike ne bodo kodirane za pametno iskanje.",
|
||||||
"machine_learning_url_description": "URL strežnika za strojno učenje",
|
"machine_learning_url_description": "URL strežnika za strojno učenje. Če je na voljo več kot en URL, bo vsak strežnik poskusen posamično, dokler se eden ne odzove uspešno, v vrstnem redu od prvega do zadnjega.",
|
||||||
"manage_concurrency": "Upravljanje sočasnosti",
|
"manage_concurrency": "Upravljanje sočasnosti",
|
||||||
"manage_log_settings": "Upravljanje nastavitev dnevnika",
|
"manage_log_settings": "Upravljanje nastavitev dnevnika",
|
||||||
"map_dark_style": "Temni način",
|
"map_dark_style": "Temni način",
|
||||||
@@ -212,8 +213,8 @@
|
|||||||
"registration": "Administratorska registracija",
|
"registration": "Administratorska registracija",
|
||||||
"registration_description": "Ker ste prvi uporabnik v sistemu, boste dodeljeni kot skrbnik in ste odgovorni za skrbniška opravila, dodatne uporabnike pa boste ustvarili sami.",
|
"registration_description": "Ker ste prvi uporabnik v sistemu, boste dodeljeni kot skrbnik in ste odgovorni za skrbniška opravila, dodatne uporabnike pa boste ustvarili sami.",
|
||||||
"repair_all": "Popravi vse",
|
"repair_all": "Popravi vse",
|
||||||
"repair_matched_items": "Ujemanje {count, plural, one {# item} other {# items}}",
|
"repair_matched_items": "Ujemanje {count, plural, one {# predmet} two {# predmeta} few {# predmeti} other {# predmetov}}",
|
||||||
"repaired_items": "Popravljeno {count, plural, one {# item} other {# items}}",
|
"repaired_items": "Popravljeno {count, plural, one {# predmet} two {# predmeta} few {# predmeti} other {# predmetov}}",
|
||||||
"require_password_change_on_login": "Od uporabnika zahtevajte spremembo gesla ob prvi prijavi",
|
"require_password_change_on_login": "Od uporabnika zahtevajte spremembo gesla ob prvi prijavi",
|
||||||
"reset_settings_to_default": "Ponastavi nastavitve na privzete",
|
"reset_settings_to_default": "Ponastavi nastavitve na privzete",
|
||||||
"reset_settings_to_recent_saved": "Ponastavite nastavitve na nedavno shranjene nastavitve",
|
"reset_settings_to_recent_saved": "Ponastavite nastavitve na nedavno shranjene nastavitve",
|
||||||
@@ -249,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> je uporabniška oznaka za shranjevanje",
|
"storage_template_user_label": "<code>{label}</code> je uporabniška oznaka za shranjevanje",
|
||||||
"system_settings": "Sistemske nastavitve",
|
"system_settings": "Sistemske nastavitve",
|
||||||
"tag_cleanup_job": "Čiščenje oznak",
|
"tag_cleanup_job": "Čiščenje oznak",
|
||||||
|
"template_email_available_tags": "V svoji predlogi lahko uporabite naslednje spremenljivke: {tags}",
|
||||||
|
"template_email_if_empty": "Če je predloga prazna, bo uporabljena privzeta e-pošta.",
|
||||||
|
"template_email_invite_album": "Predloga povabila v album",
|
||||||
|
"template_email_preview": "Predogled",
|
||||||
|
"template_email_settings": "E-poštne predloge",
|
||||||
|
"template_email_settings_description": "Upravljajte predloge e-poštnih obvestil po meri",
|
||||||
|
"template_email_update_album": "Predloga posodobitve albuma",
|
||||||
|
"template_email_welcome": "Predloga pozdravnega e-poštnega sporočila",
|
||||||
|
"template_settings": "Predloge obvestil",
|
||||||
|
"template_settings_description": "Upravljajte predloge po meri za obvestila.",
|
||||||
"theme_custom_css_settings": "CSS po meri",
|
"theme_custom_css_settings": "CSS po meri",
|
||||||
"theme_custom_css_settings_description": "Kaskadni slogovni listi (CSS) omogočajo prilagajanje oblikovanja Immicha.",
|
"theme_custom_css_settings_description": "Kaskadni slogovni listi (CSS) omogočajo prilagajanje oblikovanja Immicha.",
|
||||||
"theme_settings": "Nastavitve teme",
|
"theme_settings": "Nastavitve teme",
|
||||||
@@ -589,7 +600,7 @@
|
|||||||
"cant_apply_changes": "Sprememb ni mogoče uporabiti",
|
"cant_apply_changes": "Sprememb ni mogoče uporabiti",
|
||||||
"cant_change_activity": "Ni mogoče {enabled, select, true {disable} other {enable}} dejavnosti",
|
"cant_change_activity": "Ni mogoče {enabled, select, true {disable} other {enable}} dejavnosti",
|
||||||
"cant_change_asset_favorite": "Ni možno spremeniti priljubljeno za sredstvo",
|
"cant_change_asset_favorite": "Ni možno spremeniti priljubljeno za sredstvo",
|
||||||
"cant_change_metadata_assets_count": "Ni mogoče spremeniti metapodatkov za {count, plural, one {# sredstvo} other {# sredstev}}",
|
"cant_change_metadata_assets_count": "Ni mogoče spremeniti metapodatkov za {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}}",
|
||||||
"cant_get_faces": "Ne morem dobiti obrazov",
|
"cant_get_faces": "Ne morem dobiti obrazov",
|
||||||
"cant_get_number_of_comments": "Ni mogoče pridobiti števila komentarjev",
|
"cant_get_number_of_comments": "Ni mogoče pridobiti števila komentarjev",
|
||||||
"cant_search_people": "Ni mogoče iskati ljudi",
|
"cant_search_people": "Ni mogoče iskati ljudi",
|
||||||
@@ -723,6 +734,7 @@
|
|||||||
"external": "Zunanji",
|
"external": "Zunanji",
|
||||||
"external_libraries": "Zunanje knjižnice",
|
"external_libraries": "Zunanje knjižnice",
|
||||||
"face_unassigned": "Nedodeljen",
|
"face_unassigned": "Nedodeljen",
|
||||||
|
"failed_to_load_assets": "Sredstev ni bilo mogoče naložiti",
|
||||||
"favorite": "Priljubljen",
|
"favorite": "Priljubljen",
|
||||||
"favorite_or_unfavorite_photo": "Priljubljena ali nepriljubljena fotografija",
|
"favorite_or_unfavorite_photo": "Priljubljena ali nepriljubljena fotografija",
|
||||||
"favorites": "Priljubljene",
|
"favorites": "Priljubljene",
|
||||||
@@ -847,11 +859,11 @@
|
|||||||
"memory_lane_title": "Spominski trak {title}",
|
"memory_lane_title": "Spominski trak {title}",
|
||||||
"menu": "Meni",
|
"menu": "Meni",
|
||||||
"merge": "Združi",
|
"merge": "Združi",
|
||||||
"merge_people": "Združi ljudi",
|
"merge_people": "Združi osebe",
|
||||||
"merge_people_limit": "Hkrati lahko združite največ 5 obrazov",
|
"merge_people_limit": "Hkrati lahko združite največ 5 obrazov",
|
||||||
"merge_people_prompt": "Ali želite združiti te osebe? To dejanje je nepovratno.",
|
"merge_people_prompt": "Ali želite združiti te osebe? To dejanje je nepovratno.",
|
||||||
"merge_people_successfully": "Združitev ljudi uspešno",
|
"merge_people_successfully": "Združitev ljudi uspešno",
|
||||||
"merged_people_count": "Združeno {count, plural, one {# oseba} other {# oseb}}",
|
"merged_people_count": "Združeno {count, plural, one {# oseba} two {# osebi} few {# osebe} other {# oseb}}",
|
||||||
"minimize": "Zmanjšaj",
|
"minimize": "Zmanjšaj",
|
||||||
"minute": "minuta",
|
"minute": "minuta",
|
||||||
"missing": "manjka",
|
"missing": "manjka",
|
||||||
@@ -942,7 +954,7 @@
|
|||||||
"pause_memories": "Zaustavi spomine",
|
"pause_memories": "Zaustavi spomine",
|
||||||
"paused": "Zaustavljeno",
|
"paused": "Zaustavljeno",
|
||||||
"pending": "V teku",
|
"pending": "V teku",
|
||||||
"people": "Ljudje",
|
"people": "Osebe",
|
||||||
"people_edits_count": "Urejen-a/-ih {count, plural, one {# oseba} other {# oseb}}",
|
"people_edits_count": "Urejen-a/-ih {count, plural, one {# oseba} other {# oseb}}",
|
||||||
"people_feature_description": "Brskanje po fotografijah in videoposnetkih, razvrščenih po osebah",
|
"people_feature_description": "Brskanje po fotografijah in videoposnetkih, razvrščenih po osebah",
|
||||||
"people_sidebar_description": "Prikažite povezavo do Ljudje v stranski vrstici",
|
"people_sidebar_description": "Prikažite povezavo do Ljudje v stranski vrstici",
|
||||||
@@ -952,7 +964,7 @@
|
|||||||
"permanently_delete_assets_count": "Trajno izbriši {count, plural, one {sredstvo} other {sredstev}}",
|
"permanently_delete_assets_count": "Trajno izbriši {count, plural, one {sredstvo} other {sredstev}}",
|
||||||
"permanently_delete_assets_prompt": "Ali ste prepričani, da želite trajno izbrisati {count, plural, one {to sredstvo?} other {ta <b>#</b> sredstva?}} S tem boste odstranili tudi {count, plural, one {tega od teh} other {telih iz telih}} album- /-ov.",
|
"permanently_delete_assets_prompt": "Ali ste prepričani, da želite trajno izbrisati {count, plural, one {to sredstvo?} other {ta <b>#</b> sredstva?}} S tem boste odstranili tudi {count, plural, one {tega od teh} other {telih iz telih}} album- /-ov.",
|
||||||
"permanently_deleted_asset": "Trajno izbrisano sredstvo",
|
"permanently_deleted_asset": "Trajno izbrisano sredstvo",
|
||||||
"permanently_deleted_assets_count": "Trajno izbrisano {count, plural, one {# sredstvo} other {# sredstev}}",
|
"permanently_deleted_assets_count": "Trajno izbrisano {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}}",
|
||||||
"person": "Oseba",
|
"person": "Oseba",
|
||||||
"person_hidden": "{name}{hidden, select, true { (skrita)} other {}}",
|
"person_hidden": "{name}{hidden, select, true { (skrita)} other {}}",
|
||||||
"photo_shared_all_users": "Videti je, da ste svoje fotografije delili z vsemi uporabniki ali pa nimate nobenega uporabnika, s katerim bi jih delili.",
|
"photo_shared_all_users": "Videti je, da ste svoje fotografije delili z vsemi uporabniki ali pa nimate nobenega uporabnika, s katerim bi jih delili.",
|
||||||
@@ -1013,15 +1025,16 @@
|
|||||||
"purchase_settings_server_activated": "Ključ izdelka strežnika upravlja skrbnik",
|
"purchase_settings_server_activated": "Ključ izdelka strežnika upravlja skrbnik",
|
||||||
"rating": "Ocena z zvezdicami",
|
"rating": "Ocena z zvezdicami",
|
||||||
"rating_clear": "Počisti oceno",
|
"rating_clear": "Počisti oceno",
|
||||||
"rating_count": "{count, plural, one {# zvezdica} other {# zvezdic}}",
|
"rating_count": "{count, plural, one {# zvezdica} two {# zvezdici} few {# zvezdice} other {# zvezdic}}",
|
||||||
"rating_description": "Prikažite oceno EXIF v informacijski plošči",
|
"rating_description": "Prikažite oceno EXIF v informacijski plošči",
|
||||||
"reaction_options": "Možnosti reakcije",
|
"reaction_options": "Možnosti reakcije",
|
||||||
"read_changelog": "Preberi dnevnik sprememb",
|
"read_changelog": "Preberi dnevnik sprememb",
|
||||||
"reassign": "Prerazporedi",
|
"reassign": "Prerazporedi",
|
||||||
"reassigned_assets_to_existing_person": "Ponovno dodeljeno {count, plural, one {# sredstvo} other {# sredstev}} za {name, select, null {an existing person} other {{name}}}",
|
"reassigned_assets_to_existing_person": "Ponovno dodeljeno {count, plural, one {# sredstvo} other {# sredstev}} za {name, select, null {an existing person} other {{name}}}",
|
||||||
"reassigned_assets_to_new_person": "Ponovno dodeljeno {count, plural, one {# sredstvo} other {# sredstev}} za novo osebo",
|
"reassigned_assets_to_new_person": "Ponovno dodeljeno {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}} za novo osebo",
|
||||||
"reassing_hint": "Dodeli izbrana sredstva obstoječi osebi",
|
"reassing_hint": "Dodeli izbrana sredstva obstoječi osebi",
|
||||||
"recent": "Nedavno",
|
"recent": "Nedavno",
|
||||||
|
"recent-albums": "Zadnji albumi",
|
||||||
"recent_searches": "Nedavna iskanja",
|
"recent_searches": "Nedavna iskanja",
|
||||||
"refresh": "Osveži",
|
"refresh": "Osveži",
|
||||||
"refresh_encoded_videos": "Osveži kodirane videoposnetke",
|
"refresh_encoded_videos": "Osveži kodirane videoposnetke",
|
||||||
@@ -1035,14 +1048,15 @@
|
|||||||
"refreshing_metadata": "Osveževanje metapodatkov",
|
"refreshing_metadata": "Osveževanje metapodatkov",
|
||||||
"regenerating_thumbnails": "Obnavljanje sličic",
|
"regenerating_thumbnails": "Obnavljanje sličic",
|
||||||
"remove": "Odstrani",
|
"remove": "Odstrani",
|
||||||
"remove_assets_album_confirmation": "Ali ste prepričani, da želite odstraniti {count, plural, one {# sredstvo} other {# sredstev}} iz albuma?",
|
"remove_assets_album_confirmation": "Ali ste prepričani, da želite odstraniti {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}} iz albuma?",
|
||||||
"remove_assets_shared_link_confirmation": "Ali ste prepričani, da želite odstraniti {count, plural, one {# sredstvo} other {# sredstev}} iz te skupne povezave?",
|
"remove_assets_shared_link_confirmation": "Ali ste prepričani, da želite odstraniti {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}} iz te skupne povezave?",
|
||||||
"remove_assets_title": "Odstrani sredstva?",
|
"remove_assets_title": "Odstrani sredstva?",
|
||||||
"remove_custom_date_range": "Odstrani časovno obdobje po meri",
|
"remove_custom_date_range": "Odstrani časovno obdobje po meri",
|
||||||
"remove_deleted_assets": "Odstrani izbrisana sredstva",
|
"remove_deleted_assets": "Odstrani izbrisana sredstva",
|
||||||
"remove_from_album": "Odstrani iz albuma",
|
"remove_from_album": "Odstrani iz albuma",
|
||||||
"remove_from_favorites": "Odstrani iz priljubljenih",
|
"remove_from_favorites": "Odstrani iz priljubljenih",
|
||||||
"remove_from_shared_link": "Odstrani iz skupne povezave",
|
"remove_from_shared_link": "Odstrani iz skupne povezave",
|
||||||
|
"remove_url": "Odstrani URL",
|
||||||
"remove_user": "Odstrani uporabnika",
|
"remove_user": "Odstrani uporabnika",
|
||||||
"removed_api_key": "Odstranjen ključ API-ja: {name}",
|
"removed_api_key": "Odstranjen ključ API-ja: {name}",
|
||||||
"removed_from_archive": "Odstranjeno iz arhiva",
|
"removed_from_archive": "Odstranjeno iz arhiva",
|
||||||
@@ -1180,7 +1194,7 @@
|
|||||||
"sort_albums_by": "Razvrsti albume po...",
|
"sort_albums_by": "Razvrsti albume po...",
|
||||||
"sort_created": "Datum nastanka",
|
"sort_created": "Datum nastanka",
|
||||||
"sort_items": "Število predmetov",
|
"sort_items": "Število predmetov",
|
||||||
"sort_modified": "Datum sprememb",
|
"sort_modified": "Datum spremembe",
|
||||||
"sort_oldest": "Najstarejša fotografija",
|
"sort_oldest": "Najstarejša fotografija",
|
||||||
"sort_recent": "Najnovejša fotografija",
|
"sort_recent": "Najnovejša fotografija",
|
||||||
"sort_title": "Naslov",
|
"sort_title": "Naslov",
|
||||||
@@ -1189,7 +1203,7 @@
|
|||||||
"stack_duplicates": "Nabor dvojnikov",
|
"stack_duplicates": "Nabor dvojnikov",
|
||||||
"stack_select_one_photo": "Izberite eno glavno fotografijo za nabor",
|
"stack_select_one_photo": "Izberite eno glavno fotografijo za nabor",
|
||||||
"stack_selected_photos": "Nabor izbranih fotografij",
|
"stack_selected_photos": "Nabor izbranih fotografij",
|
||||||
"stacked_assets_count": "Nabor {count, plural, one {# sredstvo} other {# sredstev}}",
|
"stacked_assets_count": "Nabor {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}}",
|
||||||
"stacktrace": "Sled nabora",
|
"stacktrace": "Sled nabora",
|
||||||
"start": "Začetek",
|
"start": "Začetek",
|
||||||
"start_date": "Datum začetka",
|
"start_date": "Datum začetka",
|
||||||
@@ -1216,7 +1230,7 @@
|
|||||||
"tag_feature_description": "Brskanje po fotografijah in videoposnetkih, razvrščenih po temah logičnih oznak",
|
"tag_feature_description": "Brskanje po fotografijah in videoposnetkih, razvrščenih po temah logičnih oznak",
|
||||||
"tag_not_found_question": "Ne najdete oznake? <link>Ustvarite novo oznako.</link>",
|
"tag_not_found_question": "Ne najdete oznake? <link>Ustvarite novo oznako.</link>",
|
||||||
"tag_updated": "Posodobljena oznaka: {tag}",
|
"tag_updated": "Posodobljena oznaka: {tag}",
|
||||||
"tagged_assets": "Označeno {count, plural, one {# sredstvo} other {# sredstev}}",
|
"tagged_assets": "Označeno {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}}",
|
||||||
"tags": "Oznake",
|
"tags": "Oznake",
|
||||||
"template": "Predloga",
|
"template": "Predloga",
|
||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
@@ -1242,11 +1256,11 @@
|
|||||||
"trash_count": "Smetnjak {count, number}",
|
"trash_count": "Smetnjak {count, number}",
|
||||||
"trash_delete_asset": "V smetnjak/izbriši sredstvo",
|
"trash_delete_asset": "V smetnjak/izbriši sredstvo",
|
||||||
"trash_no_results_message": "Fotografije in videoposnetki, ki so v smetnjaku, bodo prikazani tukaj.",
|
"trash_no_results_message": "Fotografije in videoposnetki, ki so v smetnjaku, bodo prikazani tukaj.",
|
||||||
"trashed_items_will_be_permanently_deleted_after": "Elementi v smetnjaku bodo trajno izbrisani po {days, plural, one {# dnevu} other {# dneh}}.",
|
"trashed_items_will_be_permanently_deleted_after": "Elementi v smetnjaku bodo trajno izbrisani po {days, plural, one {# dnevu} two {# dnevih} few {# dnevih} other {# dneh}}.",
|
||||||
"type": "Vrsta",
|
"type": "Vrsta",
|
||||||
"unarchive": "Odstrani iz arhiva",
|
"unarchive": "Odstrani iz arhiva",
|
||||||
"unarchived_count": "{count, plural, other {nearhiviranih #}}",
|
"unarchived_count": "{count, plural, other {nearhiviranih #}}",
|
||||||
"unfavorite": "Odstrani iz priljubljeno",
|
"unfavorite": "Odznači priljubljeno",
|
||||||
"unhide_person": "Prikaži osebo",
|
"unhide_person": "Prikaži osebo",
|
||||||
"unknown": "Neznano",
|
"unknown": "Neznano",
|
||||||
"unknown_year": "Neznano leto",
|
"unknown_year": "Neznano leto",
|
||||||
@@ -1260,17 +1274,17 @@
|
|||||||
"unsaved_change": "Neshranjena sprememba",
|
"unsaved_change": "Neshranjena sprememba",
|
||||||
"unselect_all": "Odznači vse",
|
"unselect_all": "Odznači vse",
|
||||||
"unselect_all_duplicates": "Odznači vse dvojnike",
|
"unselect_all_duplicates": "Odznači vse dvojnike",
|
||||||
"unstack": "Razkladi",
|
"unstack": "Razklad",
|
||||||
"unstacked_assets_count": "Razloži {count, plural, one {# sredstvo} other {# sredstev}}",
|
"unstacked_assets_count": "Razloži {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}}",
|
||||||
"untracked_files": "Nesledene datoteke",
|
"untracked_files": "Nesledene datoteke",
|
||||||
"untracked_files_decription": "Tem datotekam aplikacija ne sledi. Lahko so posledica neuspelih premikov, prekinjenih ali zaostalih nalaganj zaradi hrošča",
|
"untracked_files_decription": "Tem datotekam aplikacija ne sledi. Lahko so posledica neuspelih premikov, prekinjenih ali zaostalih nalaganj zaradi hrošča",
|
||||||
"up_next": "Naslednja",
|
"up_next": "Naslednja",
|
||||||
"updated_password": "Posodobljeno geslo",
|
"updated_password": "Posodobljeno geslo",
|
||||||
"upload": "Naloži",
|
"upload": "Naloži",
|
||||||
"upload_concurrency": "Sočasnost nalaganja",
|
"upload_concurrency": "Sočasnost nalaganja",
|
||||||
"upload_errors": "Nalaganje je končano z {count, plural, one {# napako} other {# napakami}}, osvežite stran, da vidite nova sredstva za nalaganje.",
|
"upload_errors": "Nalaganje je končano s/z {count, plural, one {# napako} two {# napakama} other {# napakami}}, osvežite stran, da vidite nova sredstva za nalaganje.",
|
||||||
"upload_progress": "Preostalo {remaining, number} - Obdelano {processed, number}/{total, number}",
|
"upload_progress": "Preostalo {remaining, number} - Obdelano {processed, number}/{total, number}",
|
||||||
"upload_skipped_duplicates": "Preskočeno {count, plural, one {# podvojeno sredstvo} other {# podvojena sredstva}}",
|
"upload_skipped_duplicates": "Preskočeno {count, plural, one {# podvojeno sredstvo} two {# podvojeni sredstvi} few {# podvojena sredstva} other {# podvojenih sredstev}}",
|
||||||
"upload_status_duplicates": "Dvojniki",
|
"upload_status_duplicates": "Dvojniki",
|
||||||
"upload_status_errors": "Napake",
|
"upload_status_errors": "Napake",
|
||||||
"upload_status_uploaded": "Naloženo",
|
"upload_status_uploaded": "Naloženo",
|
||||||
@@ -1301,7 +1315,7 @@
|
|||||||
"video_hover_setting": "Predvajaj sličico videoposnetka ob lebdenju",
|
"video_hover_setting": "Predvajaj sličico videoposnetka ob lebdenju",
|
||||||
"video_hover_setting_description": "Predvajaj sličico videoposnetka, ko se miška pomakne nad element. Tudi ko je onemogočeno, lahko predvajanje začnete tako, da miškin kazalec premaknete nad ikono za predvajanje.",
|
"video_hover_setting_description": "Predvajaj sličico videoposnetka, ko se miška pomakne nad element. Tudi ko je onemogočeno, lahko predvajanje začnete tako, da miškin kazalec premaknete nad ikono za predvajanje.",
|
||||||
"videos": "Videoposnetki",
|
"videos": "Videoposnetki",
|
||||||
"videos_count": "{count, plural, one {# video} other {# videov}}",
|
"videos_count": "{count, plural, one {# video} two {# videa} few {# videi} other {# videov}}",
|
||||||
"view": "Ogled",
|
"view": "Ogled",
|
||||||
"view_album": "Ogled albuma",
|
"view_album": "Ogled albuma",
|
||||||
"view_all": "Poglej vse",
|
"view_all": "Poglej vse",
|
||||||
@@ -1312,14 +1326,14 @@
|
|||||||
"view_next_asset": "Ogled naslednjega sredstva",
|
"view_next_asset": "Ogled naslednjega sredstva",
|
||||||
"view_previous_asset": "Ogled prejšnjega sredstva",
|
"view_previous_asset": "Ogled prejšnjega sredstva",
|
||||||
"view_stack": "Ogled sklada",
|
"view_stack": "Ogled sklada",
|
||||||
"visibility_changed": "Vidnost spremenjena za {count, plural, one {# osebo} other {# oseb}}",
|
"visibility_changed": "Vidnost spremenjena za {count, plural, one {# osebo} two {# osebi} few {# osebe} other {# oseb}}",
|
||||||
"waiting": "Čakanje",
|
"waiting": "Čakanje",
|
||||||
"warning": "Opozorilo",
|
"warning": "Opozorilo",
|
||||||
"week": "Teden",
|
"week": "Teden",
|
||||||
"welcome": "Dobrodošli",
|
"welcome": "Dobrodošli",
|
||||||
"welcome_to_immich": "Dobrodošli v Immich",
|
"welcome_to_immich": "Dobrodošli v Immich",
|
||||||
"year": "Leto",
|
"year": "Leto",
|
||||||
"years_ago": "{years, plural, one {# leto} other {# let}} nazaj",
|
"years_ago": "{years, plural, one {# leto} two {# leti} few {# leta} other {# let}} nazaj",
|
||||||
"yes": "Da",
|
"yes": "Da",
|
||||||
"you_dont_have_any_shared_links": "Nimate nobenih skupnih povezav",
|
"you_dont_have_any_shared_links": "Nimate nobenih skupnih povezav",
|
||||||
"zoom_image": "Povečava slike"
|
"zoom_image": "Povečava slike"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Освежи",
|
"about": "О Апликацији",
|
||||||
"account": "Профил",
|
"account": "Профил",
|
||||||
"account_settings": "Подешавања за Профил",
|
"account_settings": "Подешавања за Профил",
|
||||||
"acknowledge": "Потврди",
|
"acknowledge": "Потврди",
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Потражите слике семантички користећи уграђени ЦЛИП",
|
"machine_learning_smart_search_description": "Потражите слике семантички користећи уграђени ЦЛИП",
|
||||||
"machine_learning_smart_search_enabled": "Омогућите паметну претрагу",
|
"machine_learning_smart_search_enabled": "Омогућите паметну претрагу",
|
||||||
"machine_learning_smart_search_enabled_description": "Ако је oneмогућено, слике неће бити кодиране за паметну претрагу.",
|
"machine_learning_smart_search_enabled_description": "Ако је oneмогућено, слике неће бити кодиране за паметну претрагу.",
|
||||||
"machine_learning_url_description": "УРЛ сервера за машинско учење",
|
"machine_learning_url_description": "URL сервера за машинско учење. Ако је наведено више од једне URL адресе, сваки сервер ће се покушавати један по један док један не одговори успешно, редом од првог до последњег.",
|
||||||
"manage_concurrency": "Управљање паралелношћу",
|
"manage_concurrency": "Управљање паралелношћу",
|
||||||
"manage_log_settings": "Управљајте подешавањима евиденције",
|
"manage_log_settings": "Управљајте подешавањима евиденције",
|
||||||
"map_dark_style": "Тамни стил",
|
"map_dark_style": "Тамни стил",
|
||||||
@@ -250,11 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> је ознака за складиштење корисника",
|
"storage_template_user_label": "<code>{label}</code> је ознака за складиштење корисника",
|
||||||
"system_settings": "Подешавања система",
|
"system_settings": "Подешавања система",
|
||||||
"tag_cleanup_job": "Чишћење ознака (tags)",
|
"tag_cleanup_job": "Чишћење ознака (tags)",
|
||||||
|
"template_email_available_tags": "Можете да користите следеће променљиве у свом шаблону: {tags}",
|
||||||
|
"template_email_if_empty": "Ако је шаблон празан, користиће се подразумевана адреса е-поште.",
|
||||||
"template_email_invite_album": "Шаблон албума позива",
|
"template_email_invite_album": "Шаблон албума позива",
|
||||||
"template_email_preview": "Преглед",
|
"template_email_preview": "Преглед",
|
||||||
"template_email_settings": "Шаблони е-поште",
|
"template_email_settings": "Шаблони е-поште",
|
||||||
"template_email_settings_description": "Управљајте прилагођеним шаблонима обавештења путем е-поште",
|
"template_email_settings_description": "Управљајте прилагођеним шаблонима обавештења путем е-поште",
|
||||||
|
"template_email_update_album": "Ажурирајте шаблон албума",
|
||||||
"template_email_welcome": "Шаблон е-поште добродошлице",
|
"template_email_welcome": "Шаблон е-поште добродошлице",
|
||||||
|
"template_settings": "Шаблони обавештења",
|
||||||
|
"template_settings_description": "Управљајте прилагођеним шаблонима за обавештења.",
|
||||||
"theme_custom_css_settings": "Прилагођени CSS",
|
"theme_custom_css_settings": "Прилагођени CSS",
|
||||||
"theme_custom_css_settings_description": "Каскадни листови стилова (CSS) омогућавају прилагођавање дизајна Immich-a.",
|
"theme_custom_css_settings_description": "Каскадни листови стилова (CSS) омогућавају прилагођавање дизајна Immich-a.",
|
||||||
"theme_settings": "Подешавање тема",
|
"theme_settings": "Подешавање тема",
|
||||||
@@ -729,6 +734,7 @@
|
|||||||
"external": "Спољашњи",
|
"external": "Спољашњи",
|
||||||
"external_libraries": "Спољашње Библиотеке",
|
"external_libraries": "Спољашње Библиотеке",
|
||||||
"face_unassigned": "Нераспоређени",
|
"face_unassigned": "Нераспоређени",
|
||||||
|
"failed_to_load_assets": "Учитавање средстава није успело",
|
||||||
"favorite": "Фаворит",
|
"favorite": "Фаворит",
|
||||||
"favorite_or_unfavorite_photo": "Омиљена или неомиљена фотографија",
|
"favorite_or_unfavorite_photo": "Омиљена или неомиљена фотографија",
|
||||||
"favorites": "Фаворити",
|
"favorites": "Фаворити",
|
||||||
@@ -1028,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Поново додељено {count, plural, one {# датотека} other {# датотеке}} новој особи",
|
"reassigned_assets_to_new_person": "Поново додељено {count, plural, one {# датотека} other {# датотеке}} новој особи",
|
||||||
"reassing_hint": "Доделите изабрана средства постојећој особи",
|
"reassing_hint": "Доделите изабрана средства постојећој особи",
|
||||||
"recent": "Скорашњи",
|
"recent": "Скорашњи",
|
||||||
|
"recent-albums": "Недавни албуми",
|
||||||
"recent_searches": "Скорашње претраге",
|
"recent_searches": "Скорашње претраге",
|
||||||
"refresh": "Освежи",
|
"refresh": "Освежи",
|
||||||
"refresh_encoded_videos": "Освежите кодиране (енцодед) видео записе",
|
"refresh_encoded_videos": "Освежите кодиране (енцодед) видео записе",
|
||||||
@@ -1049,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": "Уклони URL",
|
||||||
"remove_user": "Уклони корисника",
|
"remove_user": "Уклони корисника",
|
||||||
"removed_api_key": "Уклоњен АПИ кључ (key): {name}",
|
"removed_api_key": "Уклоњен АПИ кључ (key): {name}",
|
||||||
"removed_from_archive": "Уклоњено из архиве",
|
"removed_from_archive": "Уклоњено из архиве",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Osveži",
|
"about": "O Aplikaciji",
|
||||||
"account": "Profil",
|
"account": "Profil",
|
||||||
"account_settings": "Podešavanja za Profil",
|
"account_settings": "Podešavanja za Profil",
|
||||||
"acknowledge": "Potvrdi",
|
"acknowledge": "Potvrdi",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Dodaj u...",
|
"add_to": "Dodaj u...",
|
||||||
"add_to_album": "Dodaj u album",
|
"add_to_album": "Dodaj u album",
|
||||||
"add_to_shared_album": "Dodaj u deljen album",
|
"add_to_shared_album": "Dodaj u deljen album",
|
||||||
|
"add_url": "Dodajte URL",
|
||||||
"added_to_archive": "Dodato u arhivu",
|
"added_to_archive": "Dodato u arhivu",
|
||||||
"added_to_favorites": "Dodato u favorite",
|
"added_to_favorites": "Dodato u favorite",
|
||||||
"added_to_favorites_count": "Dodato {count, number} u favorite",
|
"added_to_favorites_count": "Dodato {count, number} u favorite",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Potražite slike semantički koristeći ugrađeni CLIP",
|
"machine_learning_smart_search_description": "Potražite slike semantički koristeći ugrađeni CLIP",
|
||||||
"machine_learning_smart_search_enabled": "Omogućite pametnu pretragu",
|
"machine_learning_smart_search_enabled": "Omogućite pametnu pretragu",
|
||||||
"machine_learning_smart_search_enabled_description": "Ako je onemogućeno, slike neće biti kodirane za pametnu pretragu.",
|
"machine_learning_smart_search_enabled_description": "Ako je onemogućeno, slike neće biti kodirane za pametnu pretragu.",
|
||||||
"machine_learning_url_description": "URL servera za mašinsko učenje",
|
"machine_learning_url_description": "URL servera za mašinsko učenje. Ako je obezbeđeno više URL-ova, svaki server će biti pokušan redom, jedan po jedan, dok jedan ne odgovori uspešno, po redosledu od prvog do poslednjeg.",
|
||||||
"manage_concurrency": "Upravljanje paralelnošću",
|
"manage_concurrency": "Upravljanje paralelnošću",
|
||||||
"manage_log_settings": "Upravljajte podešavanjima evidencije",
|
"manage_log_settings": "Upravljajte podešavanjima evidencije",
|
||||||
"map_dark_style": "Tamni stil",
|
"map_dark_style": "Tamni stil",
|
||||||
@@ -249,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> je oznaka za skladištenje korisnika",
|
"storage_template_user_label": "<code>{label}</code> je oznaka za skladištenje korisnika",
|
||||||
"system_settings": "Podešavanja sistema",
|
"system_settings": "Podešavanja sistema",
|
||||||
"tag_cleanup_job": "Čišćenje oznaka (tags)",
|
"tag_cleanup_job": "Čišćenje oznaka (tags)",
|
||||||
|
"template_email_available_tags": "Možete da koristite sledeće promenljive u svom šablonu: {tags}",
|
||||||
|
"template_email_if_empty": "Ako je šablon prazan, koristiće se podrazumevana adresa e-pošte.",
|
||||||
|
"template_email_invite_album": "Šablon za poziv u album",
|
||||||
|
"template_email_preview": "Pregled",
|
||||||
|
"template_email_settings": "Šabloni e-pošte",
|
||||||
|
"template_email_settings_description": "Upravljajte prilagođenim šablonima obaveštenja putem e-pošte",
|
||||||
|
"template_email_update_album": "Ažurirajte šablon albuma",
|
||||||
|
"template_email_welcome": "Šablon e-pošte dobrodošlice",
|
||||||
|
"template_settings": "Šabloni obaveštenja",
|
||||||
|
"template_settings_description": "Upravljajte prilagođenim šablonima za obaveštenja.",
|
||||||
"theme_custom_css_settings": "Prilagođeni CSS",
|
"theme_custom_css_settings": "Prilagođeni CSS",
|
||||||
"theme_custom_css_settings_description": "Kaskadni listovi stilova (CSS) omogućavaju prilagođavanje dizajna Immich-a.",
|
"theme_custom_css_settings_description": "Kaskadni listovi stilova (CSS) omogućavaju prilagođavanje dizajna Immich-a.",
|
||||||
"theme_settings": "Podešavanje tema",
|
"theme_settings": "Podešavanje tema",
|
||||||
@@ -723,6 +734,7 @@
|
|||||||
"external": "Spoljašnji",
|
"external": "Spoljašnji",
|
||||||
"external_libraries": "Spoljašnje Biblioteke",
|
"external_libraries": "Spoljašnje Biblioteke",
|
||||||
"face_unassigned": "Neraspoređeni",
|
"face_unassigned": "Neraspoređeni",
|
||||||
|
"failed_to_load_assets": "Datoteke nisu uspešno učitane",
|
||||||
"favorite": "Favorit",
|
"favorite": "Favorit",
|
||||||
"favorite_or_unfavorite_photo": "Omiljena ili neomiljena fotografija",
|
"favorite_or_unfavorite_photo": "Omiljena ili neomiljena fotografija",
|
||||||
"favorites": "Favoriti",
|
"favorites": "Favoriti",
|
||||||
@@ -1022,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Ponovo dodeljeno {count, plural, one {# datoteka} other {# datoteke}} novoj osobi",
|
"reassigned_assets_to_new_person": "Ponovo dodeljeno {count, plural, one {# datoteka} other {# datoteke}} novoj osobi",
|
||||||
"reassing_hint": "Dodelite izabrana sredstva postojećoj osobi",
|
"reassing_hint": "Dodelite izabrana sredstva postojećoj osobi",
|
||||||
"recent": "Skorašnji",
|
"recent": "Skorašnji",
|
||||||
|
"recent-albums": "Nedavni albumi",
|
||||||
"recent_searches": "Skorašnje pretrage",
|
"recent_searches": "Skorašnje pretrage",
|
||||||
"refresh": "Osveži",
|
"refresh": "Osveži",
|
||||||
"refresh_encoded_videos": "Osvežite kodirane (encoded) video zapise",
|
"refresh_encoded_videos": "Osvežite kodirane (encoded) video zapise",
|
||||||
@@ -1043,6 +1056,7 @@
|
|||||||
"remove_from_album": "Obriši iz albuma",
|
"remove_from_album": "Obriši iz albuma",
|
||||||
"remove_from_favorites": "Ukloni iz favorita",
|
"remove_from_favorites": "Ukloni iz favorita",
|
||||||
"remove_from_shared_link": "Uklonite sa deljene veze",
|
"remove_from_shared_link": "Uklonite sa deljene veze",
|
||||||
|
"remove_url": "Ukloni URL",
|
||||||
"remove_user": "Ukloni korisnika",
|
"remove_user": "Ukloni korisnika",
|
||||||
"removed_api_key": "Uklonjen API ključ (key): {name}",
|
"removed_api_key": "Uklonjen API ključ (key): {name}",
|
||||||
"removed_from_archive": "Uklonjeno iz arhive",
|
"removed_from_archive": "Uklonjeno iz arhive",
|
||||||
|
|||||||
175
i18n/sv.json
175
i18n/sv.json
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Lägg till...",
|
"add_to": "Lägg till...",
|
||||||
"add_to_album": "Lägg till i album",
|
"add_to_album": "Lägg till i album",
|
||||||
"add_to_shared_album": "Lägg till i delat album",
|
"add_to_shared_album": "Lägg till i delat album",
|
||||||
|
"add_url": "Lägg till URL",
|
||||||
"added_to_archive": "Tillagd i arkiv",
|
"added_to_archive": "Tillagd i arkiv",
|
||||||
"added_to_favorites": "Tillagd till favoriter",
|
"added_to_favorites": "Tillagd till favoriter",
|
||||||
"added_to_favorites_count": "{count, number} tillagda till favoriter",
|
"added_to_favorites_count": "{count, number} tillagda till favoriter",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Sök semantiskt efter bilder med hjälp av CLIP-inbäddningar",
|
"machine_learning_smart_search_description": "Sök semantiskt efter bilder med hjälp av CLIP-inbäddningar",
|
||||||
"machine_learning_smart_search_enabled": "Aktivera smart sökning",
|
"machine_learning_smart_search_enabled": "Aktivera smart sökning",
|
||||||
"machine_learning_smart_search_enabled_description": "Om inaktiverat kommer bilder inte att kodas för smart sökning.",
|
"machine_learning_smart_search_enabled_description": "Om inaktiverat kommer bilder inte att kodas för smart sökning.",
|
||||||
"machine_learning_url_description": "Maskininlärningsserverns URL",
|
"machine_learning_url_description": "Maskininlärningsserverns URL. Om det är mer än en URL tillagd så kommer ett försök per URL att utföras tills någon av dom svarar, försöken görs i kronologisk ordning.",
|
||||||
"manage_concurrency": "Hantera samtidighet",
|
"manage_concurrency": "Hantera samtidighet",
|
||||||
"manage_log_settings": "Hantera logginställningar",
|
"manage_log_settings": "Hantera logginställningar",
|
||||||
"map_dark_style": "Mörk stil",
|
"map_dark_style": "Mörk stil",
|
||||||
@@ -222,6 +223,8 @@
|
|||||||
"send_welcome_email": "Skicka välkomstmail",
|
"send_welcome_email": "Skicka välkomstmail",
|
||||||
"server_external_domain_settings": "Extern domän",
|
"server_external_domain_settings": "Extern domän",
|
||||||
"server_external_domain_settings_description": "Domän för publikt delade länkar, inklusive http(s)://",
|
"server_external_domain_settings_description": "Domän för publikt delade länkar, inklusive http(s)://",
|
||||||
|
"server_public_users": "Vanlig användare",
|
||||||
|
"server_public_users_description": "Alla användare (namn och e-post) är listade när man lägger till en användare till ett delat album. Om inaktiverat, kommer användarlistan endast vara synlig för administratörer.",
|
||||||
"server_settings": "Serverinställningar",
|
"server_settings": "Serverinställningar",
|
||||||
"server_settings_description": "Hantera serverinställningar",
|
"server_settings_description": "Hantera serverinställningar",
|
||||||
"server_welcome_message": "Välkomstmeddelande",
|
"server_welcome_message": "Välkomstmeddelande",
|
||||||
@@ -247,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> är användarens lagringsmärkning",
|
"storage_template_user_label": "<code>{label}</code> är användarens lagringsmärkning",
|
||||||
"system_settings": "Systeminställningar",
|
"system_settings": "Systeminställningar",
|
||||||
"tag_cleanup_job": "Markera för rensning",
|
"tag_cleanup_job": "Markera för rensning",
|
||||||
|
"template_email_available_tags": "Du kan använda följande variablar i din mall: {tags}",
|
||||||
|
"template_email_if_empty": "Om mallen är tom, kommer standard e-post att användas.",
|
||||||
|
"template_email_invite_album": "Inbjudan Album Mall",
|
||||||
|
"template_email_preview": "Förhandsgranskning",
|
||||||
|
"template_email_settings": "E-post mall",
|
||||||
|
"template_email_settings_description": "Hantera anpassad e-postavisering mall.",
|
||||||
|
"template_email_update_album": "Uppdatera Album Mall",
|
||||||
|
"template_email_welcome": "Välkommen e-post mall",
|
||||||
|
"template_settings": "Notifikations Mall",
|
||||||
|
"template_settings_description": "Hantera anpassade mallar för notifikationer.",
|
||||||
"theme_custom_css_settings": "Anpassad CSS",
|
"theme_custom_css_settings": "Anpassad CSS",
|
||||||
"theme_custom_css_settings_description": "Cascading Style Sheets möjliggör designanpassningar av Immich",
|
"theme_custom_css_settings_description": "Cascading Style Sheets möjliggör designanpassningar av Immich",
|
||||||
"theme_settings": "Temainställningar",
|
"theme_settings": "Temainställningar",
|
||||||
@@ -299,7 +312,7 @@
|
|||||||
"transcoding_settings_description": "Hantera upplösningen och kodningen av videofiler",
|
"transcoding_settings_description": "Hantera upplösningen och kodningen av videofiler",
|
||||||
"transcoding_target_resolution": "Förväntad upplösning",
|
"transcoding_target_resolution": "Förväntad upplösning",
|
||||||
"transcoding_target_resolution_description": "En högre upplösning kan bevara fler detaljer men kan ta längre tid at koda, ha större fil storlek och kan försämra appens svarstid.",
|
"transcoding_target_resolution_description": "En högre upplösning kan bevara fler detaljer men kan ta längre tid at koda, ha större fil storlek och kan försämra appens svarstid.",
|
||||||
"transcoding_temporal_aq": "",
|
"transcoding_temporal_aq": "Temporär AQ",
|
||||||
"transcoding_temporal_aq_description": "Gäller endast NVENC. Ökar kvaliteten på scener med hög detaljrikedom och låg rörelse. Kanske inte är kompatibel med äldre enheter.",
|
"transcoding_temporal_aq_description": "Gäller endast NVENC. Ökar kvaliteten på scener med hög detaljrikedom och låg rörelse. Kanske inte är kompatibel med äldre enheter.",
|
||||||
"transcoding_threads": "Trådar",
|
"transcoding_threads": "Trådar",
|
||||||
"transcoding_threads_description": "Högre värden leder till snabbare kodning, men lämnar mindre utrymme för servern att bearbeta andra uppgifter medan den är aktiv. Detta värde bör inte vara mer än antalet CPU-kärnor. Maximerar användningen om den är inställd på 0.",
|
"transcoding_threads_description": "Högre värden leder till snabbare kodning, men lämnar mindre utrymme för servern att bearbeta andra uppgifter medan den är aktiv. Detta värde bör inte vara mer än antalet CPU-kärnor. Maximerar användningen om den är inställd på 0.",
|
||||||
@@ -345,6 +358,7 @@
|
|||||||
"advanced": "Avancerat",
|
"advanced": "Avancerat",
|
||||||
"age_months": "Ålder {months, plural, one {# month} other {# months}}",
|
"age_months": "Ålder {months, plural, one {# month} other {# months}}",
|
||||||
"age_year_months": "Ålder 1 år, {months, plural, one {# month} other {# months}}",
|
"age_year_months": "Ålder 1 år, {months, plural, one {# month} other {# months}}",
|
||||||
|
"age_years": "{years, plural, other {Age #}}",
|
||||||
"album_added": "Albumet har lagts till",
|
"album_added": "Albumet har lagts till",
|
||||||
"album_added_notification_setting_description": "Få ett e-postmeddelande när du läggs till i ett delat album",
|
"album_added_notification_setting_description": "Få ett e-postmeddelande när du läggs till i ett delat album",
|
||||||
"album_cover_updated": "Albumomslaget uppdaterat",
|
"album_cover_updated": "Albumomslaget uppdaterat",
|
||||||
@@ -364,6 +378,7 @@
|
|||||||
"album_user_removed": "Tog bort {user}",
|
"album_user_removed": "Tog bort {user}",
|
||||||
"album_with_link_access": "Låt alla med länken se foton och personer i det här albumet.",
|
"album_with_link_access": "Låt alla med länken se foton och personer i det här albumet.",
|
||||||
"albums": "Album",
|
"albums": "Album",
|
||||||
|
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albums}}",
|
||||||
"all": "Allt",
|
"all": "Allt",
|
||||||
"all_albums": "Alla album",
|
"all_albums": "Alla album",
|
||||||
"all_people": "Alla personer",
|
"all_people": "Alla personer",
|
||||||
@@ -383,6 +398,7 @@
|
|||||||
"archive_or_unarchive_photo": "Arkivera eller oarkivera fotot",
|
"archive_or_unarchive_photo": "Arkivera eller oarkivera fotot",
|
||||||
"archive_size": "Arkivstorlek",
|
"archive_size": "Arkivstorlek",
|
||||||
"archive_size_description": "Konfigurera arkivstorleken för nedladdningar (i GiB)",
|
"archive_size_description": "Konfigurera arkivstorleken för nedladdningar (i GiB)",
|
||||||
|
"archived_count": "{count, plural, other {Archived #}}",
|
||||||
"are_these_the_same_person": "Är det samma person?",
|
"are_these_the_same_person": "Är det samma person?",
|
||||||
"are_you_sure_to_do_this": "Är du säker på att du vill göra det här?",
|
"are_you_sure_to_do_this": "Är du säker på att du vill göra det här?",
|
||||||
"asset_added_to_album": "Lades till i album",
|
"asset_added_to_album": "Lades till i album",
|
||||||
@@ -401,6 +417,7 @@
|
|||||||
"assets_added_count": "La till {count, plural, one {# asset} other {# assets}}",
|
"assets_added_count": "La till {count, plural, one {# asset} other {# assets}}",
|
||||||
"assets_added_to_album_count": "Lade till {count, plural, one {# asset} other {# assets}} i albumet",
|
"assets_added_to_album_count": "Lade till {count, plural, one {# asset} other {# assets}} i albumet",
|
||||||
"assets_added_to_name_count": "Lade till {count, plural, one {# asset} other {# assets}} till {hasName, select, true {<b>{name}</b>} other {new album}}",
|
"assets_added_to_name_count": "Lade till {count, plural, one {# asset} other {# assets}} till {hasName, select, true {<b>{name}</b>} other {new album}}",
|
||||||
|
"assets_count": "{count, plural, one {# asset} other {# assets}}",
|
||||||
"assets_moved_to_trash_count": "Flyttade {count, plural, one {# asset} other {# assets}} till papperskorgen",
|
"assets_moved_to_trash_count": "Flyttade {count, plural, one {# asset} other {# assets}} till papperskorgen",
|
||||||
"assets_permanently_deleted_count": "Raderad permanent {count, plural, one {# asset} other {# assets}}",
|
"assets_permanently_deleted_count": "Raderad permanent {count, plural, one {# asset} other {# assets}}",
|
||||||
"assets_removed_count": "Tog bort {count, plural, one {# asset} other {# assets}}",
|
"assets_removed_count": "Tog bort {count, plural, one {# asset} other {# assets}}",
|
||||||
@@ -461,6 +478,7 @@
|
|||||||
"confirm": "Bekräfta",
|
"confirm": "Bekräfta",
|
||||||
"confirm_admin_password": "Bekräfta administratörslösenord",
|
"confirm_admin_password": "Bekräfta administratörslösenord",
|
||||||
"confirm_delete_shared_link": "Är du säker på att du vill ta bort den här delade länken?",
|
"confirm_delete_shared_link": "Är du säker på att du vill ta bort den här delade länken?",
|
||||||
|
"confirm_keep_this_delete_others": "Alla andra tillgångar i stacken tas bort förutom den här tillgången. Är du säker på att du vill fortsätta.",
|
||||||
"confirm_password": "Bekräfta lösenord",
|
"confirm_password": "Bekräfta lösenord",
|
||||||
"contain": "Anpassa",
|
"contain": "Anpassa",
|
||||||
"context": "Sammanhang",
|
"context": "Sammanhang",
|
||||||
@@ -510,6 +528,7 @@
|
|||||||
"delete_key": "Ta bort nyckel",
|
"delete_key": "Ta bort nyckel",
|
||||||
"delete_library": "Ta bort bibliotek",
|
"delete_library": "Ta bort bibliotek",
|
||||||
"delete_link": "Ta bort länk",
|
"delete_link": "Ta bort länk",
|
||||||
|
"delete_others": "Radera fler",
|
||||||
"delete_shared_link": "Ta bort delad länk",
|
"delete_shared_link": "Ta bort delad länk",
|
||||||
"delete_tag": "Ta bort tagg",
|
"delete_tag": "Ta bort tagg",
|
||||||
"delete_tag_confirmation_prompt": "Är du säker på att du vill ta bort {tagName}-taggen?",
|
"delete_tag_confirmation_prompt": "Är du säker på att du vill ta bort {tagName}-taggen?",
|
||||||
@@ -600,6 +619,7 @@
|
|||||||
"failed_to_create_shared_link": "Det gick inte att skapa delad länk",
|
"failed_to_create_shared_link": "Det gick inte att skapa delad länk",
|
||||||
"failed_to_edit_shared_link": "Det gick inte att redigera delad länk",
|
"failed_to_edit_shared_link": "Det gick inte att redigera delad länk",
|
||||||
"failed_to_get_people": "Det gick inte att hämta personer",
|
"failed_to_get_people": "Det gick inte att hämta personer",
|
||||||
|
"failed_to_keep_this_delete_others": "Misslyckades att behålla detta objekt radera övriga objekt",
|
||||||
"failed_to_load_asset": "Det gick inte att ladda objekt",
|
"failed_to_load_asset": "Det gick inte att ladda objekt",
|
||||||
"failed_to_load_assets": "Det gick inte att ladda objekten",
|
"failed_to_load_assets": "Det gick inte att ladda objekten",
|
||||||
"failed_to_load_people": "Det gick inte att ladda personer",
|
"failed_to_load_people": "Det gick inte att ladda personer",
|
||||||
@@ -654,13 +674,14 @@
|
|||||||
"unable_to_link_motion_video": "Det går inte att länka rörlig video",
|
"unable_to_link_motion_video": "Det går inte att länka rörlig video",
|
||||||
"unable_to_link_oauth_account": "Det gick inte att länka OAuth-kontot",
|
"unable_to_link_oauth_account": "Det gick inte att länka OAuth-kontot",
|
||||||
"unable_to_load_album": "Det gick inte att ladda albumet",
|
"unable_to_load_album": "Det gick inte att ladda albumet",
|
||||||
"unable_to_load_asset_activity": "",
|
"unable_to_load_asset_activity": "Det går inte att läsa in tillgångsaktivitet",
|
||||||
"unable_to_load_items": "Kunde inte ladda objekt",
|
"unable_to_load_items": "Kunde inte ladda objekt",
|
||||||
"unable_to_load_liked_status": "kunde inte ladda gillade status",
|
"unable_to_load_liked_status": "kunde inte ladda gillade status",
|
||||||
"unable_to_log_out_all_devices": "Det gick inte att logga ut alla enheter",
|
"unable_to_log_out_all_devices": "Det gick inte att logga ut alla enheter",
|
||||||
"unable_to_log_out_device": "Det gick inte att logga ut enheten",
|
"unable_to_log_out_device": "Det gick inte att logga ut enheten",
|
||||||
"unable_to_login_with_oauth": "Det gick inte att logga in med OAuth",
|
"unable_to_login_with_oauth": "Det gick inte att logga in med OAuth",
|
||||||
"unable_to_play_video": "Kunde inte spela upp video",
|
"unable_to_play_video": "Kunde inte spela upp video",
|
||||||
|
"unable_to_reassign_assets_existing_person": "Det går inte att tilldela om tillgångar till {name, select, null {an existing person} other {{name}}}",
|
||||||
"unable_to_reassign_assets_new_person": "Kunde inte tilldela objekt till en annan person",
|
"unable_to_reassign_assets_new_person": "Kunde inte tilldela objekt till en annan person",
|
||||||
"unable_to_refresh_user": "Kunde inte ladda om användaren",
|
"unable_to_refresh_user": "Kunde inte ladda om användaren",
|
||||||
"unable_to_remove_album_users": "Kunde inte ta bort personen från albumet",
|
"unable_to_remove_album_users": "Kunde inte ta bort personen från albumet",
|
||||||
@@ -672,24 +693,32 @@
|
|||||||
"unable_to_remove_reaction": "Kunde inte ta bort reaktion",
|
"unable_to_remove_reaction": "Kunde inte ta bort reaktion",
|
||||||
"unable_to_repair_items": "kunde inte reparera objekt",
|
"unable_to_repair_items": "kunde inte reparera objekt",
|
||||||
"unable_to_reset_password": "Kunde inte återställa lösenord",
|
"unable_to_reset_password": "Kunde inte återställa lösenord",
|
||||||
"unable_to_resolve_duplicate": "",
|
"unable_to_resolve_duplicate": "Det går inte att lösa dubbletter",
|
||||||
"unable_to_restore_assets": "",
|
"unable_to_restore_assets": "Det går inte att återställa tillgångar",
|
||||||
"unable_to_restore_trash": "",
|
"unable_to_restore_trash": "Det gick inte att återställa papperskorgen",
|
||||||
"unable_to_restore_user": "Kunde inte återställa användare",
|
"unable_to_restore_user": "Kunde inte återställa användare",
|
||||||
"unable_to_save_album": "Kunde inte spara album",
|
"unable_to_save_album": "Kunde inte spara album",
|
||||||
|
"unable_to_save_api_key": "Det går inte att spara API Nyckel",
|
||||||
|
"unable_to_save_date_of_birth": "Det går inte att spara födelsedatum",
|
||||||
"unable_to_save_name": "Kunde inte spara namn",
|
"unable_to_save_name": "Kunde inte spara namn",
|
||||||
"unable_to_save_profile": "Kunde inte spara profil",
|
"unable_to_save_profile": "Kunde inte spara profil",
|
||||||
"unable_to_save_settings": "Kunde inte spara inställningar",
|
"unable_to_save_settings": "Kunde inte spara inställningar",
|
||||||
"unable_to_scan_libraries": "",
|
"unable_to_scan_libraries": "Det går inte att söka igenom bibliotek",
|
||||||
"unable_to_scan_library": "",
|
"unable_to_scan_library": "Det går inte att skanna biblioteket",
|
||||||
"unable_to_set_profile_picture": "",
|
"unable_to_set_feature_photo": "Det går inte att ställa in funktionsfoto",
|
||||||
"unable_to_submit_job": "",
|
"unable_to_set_profile_picture": "Det går inte att ställa in profilbilden",
|
||||||
"unable_to_trash_asset": "",
|
"unable_to_submit_job": "Det går inte att skicka jobbet",
|
||||||
"unable_to_unlink_account": "",
|
"unable_to_trash_asset": "Det går inte att slänga resursen",
|
||||||
|
"unable_to_unlink_account": "Det går inte att ta bort länken till kontot",
|
||||||
|
"unable_to_unlink_motion_video": "Det går inte att ta bort länken till rörelsevideo",
|
||||||
|
"unable_to_update_album_cover": "Det går inte att uppdatera albumomslaget",
|
||||||
|
"unable_to_update_album_info": "Det går inte att uppdatera albuminformationen",
|
||||||
"unable_to_update_library": "Kunde inte uppdatera bibliotek",
|
"unable_to_update_library": "Kunde inte uppdatera bibliotek",
|
||||||
"unable_to_update_location": "Kunde inte uppdatera plats",
|
"unable_to_update_location": "Kunde inte uppdatera plats",
|
||||||
"unable_to_update_settings": "Kunde inte uppdatera inställningar",
|
"unable_to_update_settings": "Kunde inte uppdatera inställningar",
|
||||||
"unable_to_update_user": "Kunde inte uppdatera användare"
|
"unable_to_update_timeline_display_status": "Det går inte att uppdatera visningsstatus för tidslinjen",
|
||||||
|
"unable_to_update_user": "Kunde inte uppdatera användare",
|
||||||
|
"unable_to_upload_file": "Det går inte att ladda upp filen"
|
||||||
},
|
},
|
||||||
"exif": "Exif",
|
"exif": "Exif",
|
||||||
"exit_slideshow": "Avsluta bildspel",
|
"exit_slideshow": "Avsluta bildspel",
|
||||||
@@ -701,76 +730,118 @@
|
|||||||
"explorer": "Utforskare",
|
"explorer": "Utforskare",
|
||||||
"export": "Exportera",
|
"export": "Exportera",
|
||||||
"export_as_json": "Exportera som JSON",
|
"export_as_json": "Exportera som JSON",
|
||||||
"extension": "",
|
"extension": "Tillägg",
|
||||||
|
"external": "Externt",
|
||||||
"external_libraries": "Externa Bibliotek",
|
"external_libraries": "Externa Bibliotek",
|
||||||
|
"face_unassigned": "Otilldelade",
|
||||||
|
"failed_to_load_assets": "Det gick inte att läsa in resurser",
|
||||||
"favorite": "Favorit",
|
"favorite": "Favorit",
|
||||||
"favorite_or_unfavorite_photo": "",
|
"favorite_or_unfavorite_photo": "Favoritfoto eller icke-favoritfoto",
|
||||||
"favorites": "Favoriter",
|
"favorites": "Favoriter",
|
||||||
"feature_photo_updated": "",
|
"feature_photo_updated": "Funktionsfoto uppdaterad",
|
||||||
|
"features": "Funktioner",
|
||||||
|
"features_setting_description": "Hantera appens funktioner",
|
||||||
"file_name": "Filnamn",
|
"file_name": "Filnamn",
|
||||||
"file_name_or_extension": "Filnamn eller -tillägg",
|
"file_name_or_extension": "Filnamn eller -tillägg",
|
||||||
"filename": "Filnamn",
|
"filename": "Filnamn",
|
||||||
"filetype": "Filtyp",
|
"filetype": "Filtyp",
|
||||||
"filter_people": "Filtrera personer",
|
"filter_people": "Filtrera personer",
|
||||||
"fix_incorrect_match": "",
|
"find_them_fast": "Hitta dem snabbt efter namn med sök",
|
||||||
|
"fix_incorrect_match": "Fixa inkorrekt matchning",
|
||||||
|
"folders": "Mappar",
|
||||||
|
"folders_feature_description": "Bläddra i mappvyn för foton och videoklipp i filsystemet",
|
||||||
"forward": "Framåt",
|
"forward": "Framåt",
|
||||||
"general": "",
|
"general": "Allmänt",
|
||||||
"get_help": "",
|
"get_help": "Få hjälp",
|
||||||
"getting_started": "",
|
"getting_started": "Komma igång",
|
||||||
"go_back": "Gå tillbaka",
|
"go_back": "Gå tillbaka",
|
||||||
"go_to_search": "Gå till sök",
|
"go_to_search": "Gå till sök",
|
||||||
"group_albums_by": "",
|
"group_albums_by": "Gruppera album efter...",
|
||||||
"has_quota": "",
|
"group_no": "Ingen gruppering",
|
||||||
|
"group_owner": "Grupper efter ägare",
|
||||||
|
"group_year": "Gruppera efter årtal",
|
||||||
|
"has_quota": "Har kvot",
|
||||||
|
"hi_user": "Hej {name} ({email})",
|
||||||
|
"hide_all_people": "Göm alla personer",
|
||||||
"hide_gallery": "Dölj galleri",
|
"hide_gallery": "Dölj galleri",
|
||||||
|
"hide_named_person": "Göm personen {name}",
|
||||||
"hide_password": "Dölj lösenord",
|
"hide_password": "Dölj lösenord",
|
||||||
"hide_person": "Dölj person",
|
"hide_person": "Dölj person",
|
||||||
|
"hide_unnamed_people": "Göm personer utan namn",
|
||||||
"host": "Värd",
|
"host": "Värd",
|
||||||
"hour": "Timme",
|
"hour": "Timme",
|
||||||
"image": "Bild",
|
"image": "Bild",
|
||||||
|
"image_alt_text_date": "{isVideo, select, true {Video} other {Image}} tagen {date}",
|
||||||
|
"image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Image}} tagen med {person1} den {date}",
|
||||||
|
"image_alt_text_date_2_people": "{isVideo, select, true {Video} other {Image}} tagen med {person1} och {person2} den {date}",
|
||||||
|
"image_alt_text_date_3_people": "{isVideo, select, true {Video} other {Image}} tagen med {person1}, {person2}, och {person3} den {date}",
|
||||||
|
"image_alt_text_date_4_or_more_people": "{isVideo, select, true {Video} other {Image}} tagen med {person1}, {person2}, och {additionalCount, number} andra den {date}",
|
||||||
|
"image_alt_text_date_place": "{isVideo, select, true {Video} other {Image}} tagen i {city}, {country} den {date}",
|
||||||
|
"image_alt_text_date_place_1_person": "{isVideo, select, true {Video} other {Image}} tagen i {city}, {country} med {person1} den {date}",
|
||||||
|
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} tagen i {city}, {country} med {person1} och {person2} den {date}",
|
||||||
|
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} tagen i {city}, {country} med {person1}, {person2}, och {person3} den {date}",
|
||||||
|
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} tagen i {city}, {country} med {person1}, {person2}, och {additionalCount, number} andre den {date}",
|
||||||
"immich_logo": "Immich Logo",
|
"immich_logo": "Immich Logo",
|
||||||
|
"immich_web_interface": "Immich Web gränssnitt",
|
||||||
"import_from_json": "Importera från JSON",
|
"import_from_json": "Importera från JSON",
|
||||||
"import_path": "Importsökväg",
|
"import_path": "Importsökväg",
|
||||||
"in_archive": "",
|
"in_albums": "I {count, plural, one {# album} other {# albums}}",
|
||||||
|
"in_archive": "I arkivet",
|
||||||
"include_archived": "Inkludera arkiverade",
|
"include_archived": "Inkludera arkiverade",
|
||||||
"include_shared_albums": "Inkludera delade album",
|
"include_shared_albums": "Inkludera delade album",
|
||||||
"include_shared_partner_assets": "",
|
"include_shared_partner_assets": "Inkludera delade partners tillgångar",
|
||||||
"individual_share": "",
|
"individual_share": "Enskild delning",
|
||||||
"info": "",
|
"info": "Information",
|
||||||
"interval": {
|
"interval": {
|
||||||
"day_at_onepm": "",
|
"day_at_onepm": "Alla dagar vid kl 13.00",
|
||||||
"hours": "",
|
"hours": "Vid varje {hours, plural, one {hour} other {{hours, number} hours}}",
|
||||||
"night_at_midnight": "",
|
"night_at_midnight": "Varje natt vid midnatt.",
|
||||||
"night_at_twoam": ""
|
"night_at_twoam": "Varje natt vid kl 02.00"
|
||||||
},
|
},
|
||||||
"invite_people": "",
|
"invite_people": "Bjud in personer",
|
||||||
"invite_to_album": "Bjuder in till album",
|
"invite_to_album": "Bjuder in till album",
|
||||||
|
"items_count": "{count, plural, one {# item} other {# items}}",
|
||||||
"jobs": "Jobb",
|
"jobs": "Jobb",
|
||||||
"keep": "",
|
"keep": "Behåll",
|
||||||
"keyboard_shortcuts": "",
|
"keep_all": "Behåll alla",
|
||||||
"language": "",
|
"keep_this_delete_others": "Behåll denna, radera övriga",
|
||||||
"language_setting_description": "",
|
"kept_this_deleted_others": "Behåll denna tillgång och borttagna {count, plural, one {# asset} other {# assets}}",
|
||||||
"last_seen": "",
|
"keyboard_shortcuts": "Kortkommandon",
|
||||||
"leave": "",
|
"language": "Språk",
|
||||||
|
"language_setting_description": "Välj önskat språk",
|
||||||
|
"last_seen": "Senast sedd",
|
||||||
|
"latest_version": "Senaste versionen",
|
||||||
|
"latitude": "Latitud",
|
||||||
|
"leave": "Lämna",
|
||||||
"let_others_respond": "Låt andra svara",
|
"let_others_respond": "Låt andra svara",
|
||||||
"level": "",
|
"level": "Nivå",
|
||||||
"library": "Bibliotek",
|
"library": "Bibliotek",
|
||||||
"library_options": "",
|
"library_options": "Nivå alternativ",
|
||||||
"light": "",
|
"light": "Ljus",
|
||||||
"link_options": "",
|
"like_deleted": "Gilla borttagen",
|
||||||
"link_to_oauth": "",
|
"link_motion_video": "Länka rörlig video",
|
||||||
"linked_oauth_account": "",
|
"link_options": "Alternativ för länk",
|
||||||
"list": "",
|
"link_to_oauth": "Länk till OAuth",
|
||||||
"loading": "",
|
"linked_oauth_account": "Länkat OAuth konto",
|
||||||
"loading_search_results_failed": "",
|
"list": "Lista",
|
||||||
|
"loading": "Laddar",
|
||||||
|
"loading_search_results_failed": "Det gick inte att läsa in sökresultat",
|
||||||
"log_out": "Logga ut",
|
"log_out": "Logga ut",
|
||||||
"log_out_all_devices": "",
|
"log_out_all_devices": "Logga ut alla enheter",
|
||||||
"login_has_been_disabled": "",
|
"logged_out_all_devices": "Loggat ut från alla enheter",
|
||||||
"look": "",
|
"logged_out_device": "Loggat ut enheten",
|
||||||
"loop_videos": "",
|
"login": "Logga in",
|
||||||
|
"login_has_been_disabled": "Inloggning har blivit inaktiverat.",
|
||||||
|
"logout_all_device_confirmation": "Är du säker på att du vill logga ut från alla enheter?",
|
||||||
|
"logout_this_device_confirmation": "Är du säker på att du vill logga ut från denna enhet?",
|
||||||
|
"longitude": "Longitud",
|
||||||
|
"look": "Titta",
|
||||||
|
"loop_videos": "Loopa videor",
|
||||||
"loop_videos_description": "Aktivera för att automatiskt loopa en video i detaljvisaren.",
|
"loop_videos_description": "Aktivera för att automatiskt loopa en video i detaljvisaren.",
|
||||||
|
"main_branch_warning": "Du använder en utvecklingsversion. Vi rekommenderar starkt att du använder en utgiven version!",
|
||||||
"make": "Tillverkare",
|
"make": "Tillverkare",
|
||||||
"manage_shared_links": "Hantera Delade länkar",
|
"manage_shared_links": "Hantera Delade länkar",
|
||||||
"manage_sharing_with_partners": "",
|
"manage_sharing_with_partners": "Hantera delning med partner",
|
||||||
"manage_the_app_settings": "",
|
"manage_the_app_settings": "",
|
||||||
"manage_your_account": "Hantera ditt konto",
|
"manage_your_account": "Hantera ditt konto",
|
||||||
"manage_your_api_keys": "",
|
"manage_your_api_keys": "",
|
||||||
@@ -1033,6 +1104,8 @@
|
|||||||
"user_purchase_settings": "Köp",
|
"user_purchase_settings": "Köp",
|
||||||
"user_purchase_settings_description": "Hantera dina köp",
|
"user_purchase_settings_description": "Hantera dina köp",
|
||||||
"user_usage_detail": "",
|
"user_usage_detail": "",
|
||||||
|
"user_usage_stats": "Kontoinformation - statistik",
|
||||||
|
"user_usage_stats_description": "Se statistik - kontoanvändande",
|
||||||
"username": "Användarnamn",
|
"username": "Användarnamn",
|
||||||
"users": "Användare",
|
"users": "Användare",
|
||||||
"utilities": "Verktyg",
|
"utilities": "Verktyg",
|
||||||
|
|||||||
75
i18n/th.json
75
i18n/th.json
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "เพิ่มเข้า...",
|
"add_to": "เพิ่มเข้า...",
|
||||||
"add_to_album": "เพิ่มเข้าอัลบั้ม",
|
"add_to_album": "เพิ่มเข้าอัลบั้ม",
|
||||||
"add_to_shared_album": "เพิ่มลงในอัลบั้มที่แชร์กัน",
|
"add_to_shared_album": "เพิ่มลงในอัลบั้มที่แชร์กัน",
|
||||||
|
"add_url": "เพิ่ม URL",
|
||||||
"added_to_archive": "เพิ่มเข้าที่เก็บถาวร",
|
"added_to_archive": "เพิ่มเข้าที่เก็บถาวร",
|
||||||
"added_to_favorites": "เพิ่มเข้ารายการโปรด",
|
"added_to_favorites": "เพิ่มเข้ารายการโปรด",
|
||||||
"added_to_favorites_count": "{count, number} รูปถูกเพิ่มเข้ารายการโปรด",
|
"added_to_favorites_count": "{count, number} รูปถูกเพิ่มเข้ารายการโปรด",
|
||||||
@@ -36,17 +37,21 @@
|
|||||||
"background_task_job": "งานเบื้องหลัง",
|
"background_task_job": "งานเบื้องหลัง",
|
||||||
"backup_database": "สำรองฐานข้อมูล",
|
"backup_database": "สำรองฐานข้อมูล",
|
||||||
"backup_database_enable_description": "เปิดใช้งานการสำรองฐานข้อมูล",
|
"backup_database_enable_description": "เปิดใช้งานการสำรองฐานข้อมูล",
|
||||||
"backup_keep_last_amount": "จำนวนการสำรองข้อมูลที่ต้องการเก็บ",
|
"backup_keep_last_amount": "จำนวนข้อมูลสำรองก่อนหน้าที่ต้องเก็บไว้",
|
||||||
"backup_settings": "ตั้งค่ารการสำรองข้อมูล",
|
"backup_settings": "ตั้งค่ารการสำรองข้อมูล",
|
||||||
"backup_settings_description": "จัดการการตั้งค่าการสำรองฐานข้อมูล",
|
"backup_settings_description": "จัดการการตั้งค่าการสำรองฐานข้อมูล",
|
||||||
"check_all": "ตรวจสอบทั้งหมด",
|
"check_all": "ตรวจสอบทั้งหมด",
|
||||||
"cleared_jobs": "เคลียร์งานสำหรับ: {job}",
|
"cleared_jobs": "เคลียร์งานสำหรับ: {job}",
|
||||||
"config_set_by_file": "ปัจจุบันการกำหนดค่าถูกตั้งค่าโดยไฟล์กำหนดค่า",
|
"config_set_by_file": "ปัจจุบันการกำหนดค่าถูกตั้งค่าโดยไฟล์กำหนดค่า",
|
||||||
"confirm_delete_library": "คุณแน่ใจว่าอยากลบคลังภาพ {library} หรือไม่?",
|
"confirm_delete_library": "คุณแน่ใจว่าอยากลบคลังภาพ {library} หรือไม่?",
|
||||||
"confirm_delete_library_assets": "คุณแน่ใจว่าอยากลบคลังภาพนี้หรือไม่? สี่อทั้งหมด {count} สี่อในคลังจะถูกลบออกจาก Immich โดยถาวร ไฟล์จะยังคงอยู่บนดิสก์",
|
"confirm_delete_library_assets": "คุณแน่ใจว่าอยากลบคลังภาพนี้หรือไม่? สี่อทั้งหมด {count, plural, one {# สื่อ} other {all # สื่อ}} สี่อในคลังจะถูกลบออกจาก Immich โดยถาวร ไฟล์จะยังคงอยู่บนดิสก์",
|
||||||
"confirm_email_below": "เพื่อยืนยัน พิมพ์ \"{email}\" ข้างล่าง",
|
"confirm_email_below": "เพื่อยืนยัน พิมพ์ \"{email}\" ข้างล่าง",
|
||||||
"confirm_reprocess_all_faces": "คุณแน่ใจว่าคุณต้องการประมวลผลใบหน้าทั้งหมดใหม่? ชื่อคนจะถูกลบไปด้วย",
|
"confirm_reprocess_all_faces": "คุณแน่ใจว่าคุณต้องการประมวลผลใบหน้าทั้งหมดใหม่? ชื่อคนจะถูกลบไปด้วย",
|
||||||
"confirm_user_password_reset": "คุณแน่ใจว่าต้องการรีเซ็ตรหัสผ่านของ {user} หรือไม่?",
|
"confirm_user_password_reset": "คุณแน่ใจว่าต้องการรีเซ็ตรหัสผ่านของ {user} หรือไม่?",
|
||||||
|
"create_job": "สร้างงาน",
|
||||||
|
"cron_expression": "รูปแบบ cron",
|
||||||
|
"cron_expression_description": "ตั้งช่วงเวลาในการสแกนโดยใช้รูปแบบ cron สำหรับข้อมูลเพิ่มเติมกรุณาอิง <link>Crontab Guru</link>",
|
||||||
|
"cron_expression_presets": "พรีเซ็ตรูปแบบ cron",
|
||||||
"disable_login": "ปิดการล็อกอิน",
|
"disable_login": "ปิดการล็อกอิน",
|
||||||
"duplicate_detection_job_description": "ใช้ machine learning กับสี่อเพื่อตรวจจับรูปภาพที่คล้ายกัน โดยใช้การค้นหาอัจฉริยะ",
|
"duplicate_detection_job_description": "ใช้ machine learning กับสี่อเพื่อตรวจจับรูปภาพที่คล้ายกัน โดยใช้การค้นหาอัจฉริยะ",
|
||||||
"exclusion_pattern_description": "ข้อยกเว้นสามารถละเว้นไฟล์และโฟลเดอร์ขณะสแกนคลังภาพของคุณ มีประโยชน์เมื่อโฟลเดอร์มีไฟล์ที่ไม่อยากนำเข้า เช่นไฟล์ RAW",
|
"exclusion_pattern_description": "ข้อยกเว้นสามารถละเว้นไฟล์และโฟลเดอร์ขณะสแกนคลังภาพของคุณ มีประโยชน์เมื่อโฟลเดอร์มีไฟล์ที่ไม่อยากนำเข้า เช่นไฟล์ RAW",
|
||||||
@@ -64,16 +69,22 @@
|
|||||||
"image_prefer_embedded_preview_setting_description": "ใช้พรีวิวฝังตัวในรูปภาพ RAW ในการวิเคราะห์รูปภาพถ้ามี แต่คุณภาพรูปภาพขึ้นอยู่กับกล้อง และอาจจะมีสิ่งตกค้างจากการย่อขนาดไฟล์",
|
"image_prefer_embedded_preview_setting_description": "ใช้พรีวิวฝังตัวในรูปภาพ RAW ในการวิเคราะห์รูปภาพถ้ามี แต่คุณภาพรูปภาพขึ้นอยู่กับกล้อง และอาจจะมีสิ่งตกค้างจากการย่อขนาดไฟล์",
|
||||||
"image_prefer_wide_gamut": "ใช้ช่วงสีกว้าง",
|
"image_prefer_wide_gamut": "ใช้ช่วงสีกว้าง",
|
||||||
"image_prefer_wide_gamut_setting_description": "ใช้การแสดงผลแบบ P3 สําหรับภาพตัวอย่าง คงความเข้มและความกว้างขอบเขตสี แต่ภาพอาจดูแตกต่างกันในอุปกรณ์เก่าที่มีเว็บเบราว์เซอร์รุ่นเก่า ภาพ sRGB จะถูกเก็บในรูปแบบ sRGB เพื่อลดการเคลื่อนของสี",
|
"image_prefer_wide_gamut_setting_description": "ใช้การแสดงผลแบบ P3 สําหรับภาพตัวอย่าง คงความเข้มและความกว้างขอบเขตสี แต่ภาพอาจดูแตกต่างกันในอุปกรณ์เก่าที่มีเว็บเบราว์เซอร์รุ่นเก่า ภาพ sRGB จะถูกเก็บในรูปแบบ sRGB เพื่อลดการเคลื่อนของสี",
|
||||||
|
"image_preview_quality_description": "คุณภาพการแสดงตัวอย่างตั้งแต่ 1-100 ยิ่งสูงก็ยิ่งดี แต่จะทำให้ไฟล์มีขนาดใหญ่ขึ้นและอาจทำให้แอปตอบสนองช้าลง การตั้งค่าต่ำอาจส่งผลต่อคุณภาพ Machine Learning",
|
||||||
|
"image_preview_title": "ตั้งค่าพรีวิว",
|
||||||
"image_quality": "คุณภาพ",
|
"image_quality": "คุณภาพ",
|
||||||
|
"image_resolution": "ความละเอียด",
|
||||||
|
"image_resolution_description": "ความละเอียดสูกว่าสามารถเก็บรายละเอียดได้มากกว่าแต่ใช้เวลา encode นานกว่า ไฟล์ใหญ่กว่า และลดความตอบสนองของแอป",
|
||||||
"image_settings": "การตั้งค่ารูปภาพ",
|
"image_settings": "การตั้งค่ารูปภาพ",
|
||||||
"image_settings_description": "จัดการคุณภาพและความคมชัดของภาพที่สร้างขึ้น",
|
"image_settings_description": "จัดการคุณภาพและความคมชัดของภาพที่สร้างขึ้น",
|
||||||
|
"image_thumbnail_title": "ตั้งค่า Thumbnail",
|
||||||
"job_concurrency": "{job} งานพร้อมกัน",
|
"job_concurrency": "{job} งานพร้อมกัน",
|
||||||
|
"job_created": "สร้างงานเรียบร้อย",
|
||||||
"job_not_concurrency_safe": "งานนี้ทำงานพร้อมกันแบบปลอดภัยไม่ได้",
|
"job_not_concurrency_safe": "งานนี้ทำงานพร้อมกันแบบปลอดภัยไม่ได้",
|
||||||
"job_settings": "การตั้งค่างาน",
|
"job_settings": "การตั้งค่างาน",
|
||||||
"job_settings_description": "จัดการการทำหลายงานพร้อมกัน",
|
"job_settings_description": "จัดการการทำหลายงานพร้อมกัน",
|
||||||
"job_status": "สถานะงาน",
|
"job_status": "สถานะงาน",
|
||||||
"jobs_delayed": "{jobCount} งานล่าช้า",
|
"jobs_delayed": "{jobCount, plural, other {# ล่าช้า}}",
|
||||||
"jobs_failed": "{jobCount} งานล้มเหลว",
|
"jobs_failed": "{jobCount, plural, other {# ล้มเหลว}}",
|
||||||
"library_created": "สร้างคลังภาพ: {library}",
|
"library_created": "สร้างคลังภาพ: {library}",
|
||||||
"library_deleted": "คลังภาพถูกลบ",
|
"library_deleted": "คลังภาพถูกลบ",
|
||||||
"library_import_path_description": "ระบุโฟลเดอร์เพื่อนําเข้า โฟลเดอร์นี้และโฟลเดอร์ย่อยจะถูกค้นหาภาพและวิดีโอ.",
|
"library_import_path_description": "ระบุโฟลเดอร์เพื่อนําเข้า โฟลเดอร์นี้และโฟลเดอร์ย่อยจะถูกค้นหาภาพและวิดีโอ.",
|
||||||
@@ -203,9 +214,12 @@
|
|||||||
"require_password_change_on_login": "บังคับผู้ใช้งานให้เปลี่ยนรหัสผ่านเมื่อเข้าสู่ระบบครั้งแรก",
|
"require_password_change_on_login": "บังคับผู้ใช้งานให้เปลี่ยนรหัสผ่านเมื่อเข้าสู่ระบบครั้งแรก",
|
||||||
"reset_settings_to_default": "ตั้งค่าการตั้งค่าเป็นค่าเริ่มต้น",
|
"reset_settings_to_default": "ตั้งค่าการตั้งค่าเป็นค่าเริ่มต้น",
|
||||||
"reset_settings_to_recent_saved": "ตั้งค่าการตั้งค่าเป็นค่าล่าสุด",
|
"reset_settings_to_recent_saved": "ตั้งค่าการตั้งค่าเป็นค่าล่าสุด",
|
||||||
|
"scanning_library": "แสกนคลัง",
|
||||||
|
"search_jobs": "ค้นหางาน",
|
||||||
"send_welcome_email": "ส่งอีเมลต้อนรับ",
|
"send_welcome_email": "ส่งอีเมลต้อนรับ",
|
||||||
"server_external_domain_settings": "โดเมนภายนอก",
|
"server_external_domain_settings": "โดเมนภายนอก",
|
||||||
"server_external_domain_settings_description": "โดเมนสำหรับลิงก์แชร์สาธารณะ แบบมี http(s)://",
|
"server_external_domain_settings_description": "โดเมนสำหรับลิงก์แชร์สาธารณะ แบบมี http(s)://",
|
||||||
|
"server_public_users": "ผู้ใช้สาธารณะ",
|
||||||
"server_settings": "การตั้งค่าเซิร์ฟเวอร์",
|
"server_settings": "การตั้งค่าเซิร์ฟเวอร์",
|
||||||
"server_settings_description": "จัดการการตั้งค่าเซิร์ฟเวอร์",
|
"server_settings_description": "จัดการการตั้งค่าเซิร์ฟเวอร์",
|
||||||
"server_welcome_message": "ข้อความต้อนรับ",
|
"server_welcome_message": "ข้อความต้อนรับ",
|
||||||
@@ -273,7 +287,7 @@
|
|||||||
"transcoding_settings": "",
|
"transcoding_settings": "",
|
||||||
"transcoding_settings_description": "จัดการข้อมูลความคมชัดและแบบไฟล์วิดีโอ",
|
"transcoding_settings_description": "จัดการข้อมูลความคมชัดและแบบไฟล์วิดีโอ",
|
||||||
"transcoding_target_resolution": "เป้าหมายความคมชัด",
|
"transcoding_target_resolution": "เป้าหมายความคมชัด",
|
||||||
"transcoding_target_resolution_description": "ความคมชัดที่สูงกว่าจะเก็บรายละเอียดดีกว่าแต่ใช้เวลาแปลงไฟล์นานกว่า ขนาดไฟล์ใหญ่กว่า และลดการตอบสนองของแอพ",
|
"transcoding_target_resolution_description": "ความคมชัดที่สูงกว่าจะเก็บรายละเอียดดีกว่าแต่ใช้เวลาแปลงไฟล์นานกว่า ขนาดไฟล์ใหญ่กว่า และลดการตอบสนองของแอป",
|
||||||
"transcoding_temporal_aq": "",
|
"transcoding_temporal_aq": "",
|
||||||
"transcoding_temporal_aq_description": "",
|
"transcoding_temporal_aq_description": "",
|
||||||
"transcoding_threads": "เธรด",
|
"transcoding_threads": "เธรด",
|
||||||
@@ -323,7 +337,7 @@
|
|||||||
"allow_edits": "อนุญาตให้แก้ไขได้",
|
"allow_edits": "อนุญาตให้แก้ไขได้",
|
||||||
"api_key": "กุญแจ API",
|
"api_key": "กุญแจ API",
|
||||||
"api_keys": "กุญแจ API",
|
"api_keys": "กุญแจ API",
|
||||||
"app_settings": "การตั้งค่าแอพ",
|
"app_settings": "การตั้งค่าแอป",
|
||||||
"appears_in": "อยู่ใน",
|
"appears_in": "อยู่ใน",
|
||||||
"archive": "เก็บถาวร",
|
"archive": "เก็บถาวร",
|
||||||
"archive_or_unarchive_photo": "เก็บ/ไม่เก็บภาพถาวร",
|
"archive_or_unarchive_photo": "เก็บ/ไม่เก็บภาพถาวร",
|
||||||
@@ -549,6 +563,7 @@
|
|||||||
"language": "ภาษา",
|
"language": "ภาษา",
|
||||||
"language_setting_description": "เลือกภาษาที่ต้องการ",
|
"language_setting_description": "เลือกภาษาที่ต้องการ",
|
||||||
"last_seen": "เห็นล่าสุด",
|
"last_seen": "เห็นล่าสุด",
|
||||||
|
"latest_version": "เวอร์ชันล่าสุด",
|
||||||
"leave": "ทิ้ง",
|
"leave": "ทิ้ง",
|
||||||
"let_others_respond": "ให้คนอื่นตอบ",
|
"let_others_respond": "ให้คนอื่นตอบ",
|
||||||
"level": "ระดับ",
|
"level": "ระดับ",
|
||||||
@@ -570,20 +585,26 @@
|
|||||||
"make": "สร้าง",
|
"make": "สร้าง",
|
||||||
"manage_shared_links": "จัดการลิงก์ที่แชร์",
|
"manage_shared_links": "จัดการลิงก์ที่แชร์",
|
||||||
"manage_sharing_with_partners": "จัดการการแชร์กับคู่หู",
|
"manage_sharing_with_partners": "จัดการการแชร์กับคู่หู",
|
||||||
"manage_the_app_settings": "จัดการการตั้งค่าแอพ",
|
"manage_the_app_settings": "จัดการการตั้งค่าแอป",
|
||||||
"manage_your_account": "จัดการบัญชีของคุณ",
|
"manage_your_account": "จัดการบัญชีของคุณ",
|
||||||
"manage_your_api_keys": "จัดการกุญแจ API ของคุณ",
|
"manage_your_api_keys": "จัดการกุญแจ API ของคุณ",
|
||||||
"manage_your_devices": "จัดการอุปกรณ์ของคุณ",
|
"manage_your_devices": "จัดการอุปกรณ์ของคุณ",
|
||||||
"manage_your_oauth_connection": "จัดการการเชื่อมต่อ OAuth ของคุณ",
|
"manage_your_oauth_connection": "จัดการการเชื่อมต่อ OAuth ของคุณ",
|
||||||
"map": "แผนที่",
|
"map": "แผนที่",
|
||||||
"map_marker_with_image": "",
|
"map_marker_for_images": "หมุดแผนที่สำหรับรูปถ่ายที่ {city}, {country}",
|
||||||
|
"map_marker_with_image": "หมุดแผนที่กับรูปถ่าย",
|
||||||
"map_settings": "การตั้งค่าแผนที่",
|
"map_settings": "การตั้งค่าแผนที่",
|
||||||
|
"matches": "ตรงกัน",
|
||||||
"media_type": "ชนิดสื่อ",
|
"media_type": "ชนิดสื่อ",
|
||||||
"memories": "ความทรงจำ",
|
"memories": "ความทรงจำ",
|
||||||
"memories_setting_description": "จัดการสิ่งที่คุณเห็นในความทรงจําของคุณ",
|
"memories_setting_description": "จัดการสิ่งที่คุณเห็นในความทรงจําของคุณ",
|
||||||
|
"memory": "ความทรงจำ",
|
||||||
|
"memory_lane_title": "ความทรงจำ {title}",
|
||||||
"menu": "เมนู",
|
"menu": "เมนู",
|
||||||
"merge": "รวม",
|
"merge": "รวม",
|
||||||
"merge_people": "รวมผู้คน",
|
"merge_people": "รวมผู้คน",
|
||||||
|
"merge_people_limit": "คุณรวมใบหน้าได้มากถึง 5 รูปต่อครั้ง",
|
||||||
|
"merge_people_prompt": "คุณต้องการรวมคนพวกนี้หรือไม่ การกระทำนี้ไม่สามารถย้อนกลับได้",
|
||||||
"merge_people_successfully": "รวมผู้คนเรียบร้อยแล้ว",
|
"merge_people_successfully": "รวมผู้คนเรียบร้อยแล้ว",
|
||||||
"minimize": "ย่อลง",
|
"minimize": "ย่อลง",
|
||||||
"minute": "นาที",
|
"minute": "นาที",
|
||||||
@@ -596,18 +617,22 @@
|
|||||||
"name": "ชื่อ",
|
"name": "ชื่อ",
|
||||||
"name_or_nickname": "ชื่อหรือชื่อเล่น",
|
"name_or_nickname": "ชื่อหรือชื่อเล่น",
|
||||||
"never": "ไม่เคย",
|
"never": "ไม่เคย",
|
||||||
|
"new_album": "อัลบั้มใหม่",
|
||||||
"new_api_key": "กุญแจ API ใหม่",
|
"new_api_key": "กุญแจ API ใหม่",
|
||||||
"new_password": "รหัสผ่านใหม่",
|
"new_password": "รหัสผ่านใหม่",
|
||||||
"new_person": "คนใหม่",
|
"new_person": "คนใหม่",
|
||||||
"new_user_created": "สร้างผู้ใช้ใหม่แล้ว",
|
"new_user_created": "สร้างผู้ใช้ใหม่แล้ว",
|
||||||
|
"new_version_available": "มีเวอร์ชันใหม่ให้ใช้งาน",
|
||||||
"newest_first": "ใหม่สุดก่อน",
|
"newest_first": "ใหม่สุดก่อน",
|
||||||
"next": "ต่อไป",
|
"next": "ต่อไป",
|
||||||
"next_memory": "",
|
"next_memory": "ความทรงจำต่อไป",
|
||||||
"no": "ไม่",
|
"no": "ไม่",
|
||||||
"no_albums_message": "",
|
"no_albums_message": "สร้างอัลบั้มเพื่อจัดการรูปภาพและวิดีโอของคุณ",
|
||||||
|
"no_albums_with_name_yet": "ดูเหมือนว่าไม่มีอัลบั้มไหนที่ใช้ชื่อนี้",
|
||||||
"no_archived_assets_message": "จัดเก็บรูปภาพและวีดิโอถาวรเพื่อซ่อนจากมุมมองคุณ",
|
"no_archived_assets_message": "จัดเก็บรูปภาพและวีดิโอถาวรเพื่อซ่อนจากมุมมองคุณ",
|
||||||
"no_assets_message": "กดเพื่อใส่ภาพคุณภาพแรก",
|
"no_assets_message": "กดเพื่อใส่ภาพคุณภาพแรก",
|
||||||
"no_exif_info_available": "",
|
"no_duplicates_found": "ไม่พบรายการที่ซ้ำกัน",
|
||||||
|
"no_exif_info_available": "ไม่มีข้อมูล exif",
|
||||||
"no_explore_results_message": "",
|
"no_explore_results_message": "",
|
||||||
"no_favorites_message": "เพิ่มรายการโปรดเพื่อค้นหาภาพและวิดีโอที่ดีที่สุดของคุณอย่างรวดเร็ว",
|
"no_favorites_message": "เพิ่มรายการโปรดเพื่อค้นหาภาพและวิดีโอที่ดีที่สุดของคุณอย่างรวดเร็ว",
|
||||||
"no_libraries_message": "สร้างคลังภาพภายนอกเพื่อดูภาพถ่ายและวิดีโอต่าง ๆ ของคุณ",
|
"no_libraries_message": "สร้างคลังภาพภายนอกเพื่อดูภาพถ่ายและวิดีโอต่าง ๆ ของคุณ",
|
||||||
@@ -616,34 +641,44 @@
|
|||||||
"no_results": "ไม่มีผลลัพธ์",
|
"no_results": "ไม่มีผลลัพธ์",
|
||||||
"no_shared_albums_message": "สร้างอัลบั้มเพื่อแชร์รูปภาพและวิดีโอกับคนในเครือข่ายของคุณ",
|
"no_shared_albums_message": "สร้างอัลบั้มเพื่อแชร์รูปภาพและวิดีโอกับคนในเครือข่ายของคุณ",
|
||||||
"not_in_any_album": "ไม่อยู่ในอัลบั้มใด ๆ",
|
"not_in_any_album": "ไม่อยู่ในอัลบั้มใด ๆ",
|
||||||
|
"note_unlimited_quota": "หมายเหตุ: กรอก 0 สำหรับโควตาแบบไม่จำกัด",
|
||||||
"notes": "หมายเหตุ",
|
"notes": "หมายเหตุ",
|
||||||
"notification_toggle_setting_description": "เปิด/ปิด การแจ้งเตือนอีเมล",
|
"notification_toggle_setting_description": "เปิด/ปิด การแจ้งเตือนอีเมล",
|
||||||
"notifications": "การแจ้งเตือน",
|
"notifications": "การแจ้งเตือน",
|
||||||
"notifications_setting_description": "จัดการการแจ้งเตือน",
|
"notifications_setting_description": "จัดการการแจ้งเตือน",
|
||||||
"oauth": "OAuth",
|
"oauth": "OAuth",
|
||||||
|
"official_immich_resources": "แหล่งข้อมูล Immich อย่างเป็นทางการ",
|
||||||
"offline": "ออฟไลน์",
|
"offline": "ออฟไลน์",
|
||||||
"ok": "โอเค",
|
"ok": "โอเค",
|
||||||
"oldest_first": "เก่าสุดก่อน",
|
"oldest_first": "เก่าสุดก่อน",
|
||||||
|
"onboarding_welcome_user": "ยินดีต้อนรับ {user}",
|
||||||
"online": "ออนไลน์",
|
"online": "ออนไลน์",
|
||||||
"only_favorites": "รายการโปรดเท่านั้น",
|
"only_favorites": "รายการโปรดเท่านั้น",
|
||||||
|
"open_in_openstreetmap": "เปิดใน OpenStreetMap",
|
||||||
"open_the_search_filters": "เปิดตัวกรองการค้นหา",
|
"open_the_search_filters": "เปิดตัวกรองการค้นหา",
|
||||||
"options": "ตัวเลือก",
|
"options": "ตัวเลือก",
|
||||||
|
"or": "หรือ",
|
||||||
"organize_your_library": "จัดเรียงคลังภาพของคุณ",
|
"organize_your_library": "จัดเรียงคลังภาพของคุณ",
|
||||||
|
"original": "ต้นฉบับ",
|
||||||
"other": "อื่น ๆ",
|
"other": "อื่น ๆ",
|
||||||
"other_devices": "",
|
"other_devices": "เครื่องอื่น",
|
||||||
"other_variables": "",
|
"other_variables": "ตัวแปรอื่น",
|
||||||
"owned": "เป็นเจ้าของ",
|
"owned": "เป็นเจ้าของ",
|
||||||
"owner": "เจ้าของ",
|
"owner": "เจ้าของ",
|
||||||
|
"partner": "คู่หู",
|
||||||
|
"partner_can_access": "{partner} สามารถเข้าถึง",
|
||||||
|
"partner_can_access_assets": "รูปภาพและวิดีโอทั้งหมดยกเว้นที่อยู่ในเก็บถาวรและถูกลบทิ้ง",
|
||||||
|
"partner_can_access_location": "ตำแหน่งที่รูปถูกถ่าย",
|
||||||
"partner_sharing": "การแชร์แบบคู่หู",
|
"partner_sharing": "การแชร์แบบคู่หู",
|
||||||
"partners": "คู่หู",
|
"partners": "คู่หู",
|
||||||
"password": "รหัสผ่าน",
|
"password": "รหัสผ่าน",
|
||||||
"password_does_not_match": "",
|
"password_does_not_match": "รหัสผ่านไม่ตรงกัน",
|
||||||
"password_required": "",
|
"password_required": "จำเป็นต้องมีรหัสผ่าน",
|
||||||
"password_reset_success": "",
|
"password_reset_success": "รีเซ็ตรหัสผ่านสำเร็จ",
|
||||||
"past_durations": {
|
"past_durations": {
|
||||||
"days": "",
|
"days": "{days, plural, one {วัน} other {# วัน}}ที่ผ่านมา",
|
||||||
"hours": "",
|
"hours": "{hours, plural, one {ชั่วโมง} other {# ชั่วโมง}}ที่ผ่านมา",
|
||||||
"years": ""
|
"years": "{years, plural, one {ปี} other {# ปี}}ที่ผ่านมา"
|
||||||
},
|
},
|
||||||
"path": "",
|
"path": "",
|
||||||
"pattern": "",
|
"pattern": "",
|
||||||
@@ -813,6 +848,8 @@
|
|||||||
"user": "ผู้ใช้",
|
"user": "ผู้ใช้",
|
||||||
"user_id": "ไอดีผู้ใช้",
|
"user_id": "ไอดีผู้ใช้",
|
||||||
"user_usage_detail": "รายละเอียดการใช้งานของผู้ใช้",
|
"user_usage_detail": "รายละเอียดการใช้งานของผู้ใช้",
|
||||||
|
"user_usage_stats": "สถิติการใช้งานบัญชี",
|
||||||
|
"user_usage_stats_description": "ดูสถิติการใช้งานบัญชี",
|
||||||
"username": "ชื่อผู้ใช้",
|
"username": "ชื่อผู้ใช้",
|
||||||
"users": "ผู้ใช้",
|
"users": "ผู้ใช้",
|
||||||
"utilities": "",
|
"utilities": "",
|
||||||
|
|||||||
12
i18n/tr.json
12
i18n/tr.json
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Şuraya ekle...",
|
"add_to": "Şuraya ekle...",
|
||||||
"add_to_album": "Albüme ekle",
|
"add_to_album": "Albüme ekle",
|
||||||
"add_to_shared_album": "Paylaşılan albüme ekle",
|
"add_to_shared_album": "Paylaşılan albüme ekle",
|
||||||
|
"add_url": "URL ekle",
|
||||||
"added_to_archive": "Arşive eklendi",
|
"added_to_archive": "Arşive eklendi",
|
||||||
"added_to_favorites": "Favorilere eklendi",
|
"added_to_favorites": "Favorilere eklendi",
|
||||||
"added_to_favorites_count": "{count, number} fotoğraf favorilere eklendi",
|
"added_to_favorites_count": "{count, number} fotoğraf favorilere eklendi",
|
||||||
@@ -249,6 +250,14 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> kullanıcını dosyaları için kullanılan alt klasördür",
|
"storage_template_user_label": "<code>{label}</code> kullanıcını dosyaları için kullanılan alt klasördür",
|
||||||
"system_settings": "Sistem Ayarları",
|
"system_settings": "Sistem Ayarları",
|
||||||
"tag_cleanup_job": "Etiket temizleme",
|
"tag_cleanup_job": "Etiket temizleme",
|
||||||
|
"template_email_available_tags": "Şablonunuzda şu değişkenler kullanılabilir: {tags}",
|
||||||
|
"template_email_if_empty": "Şablon boş ise, varsayılan e-posta kullanılacak.",
|
||||||
|
"template_email_preview": "Ön izleme",
|
||||||
|
"template_email_settings": "Eposta Taslakları",
|
||||||
|
"template_email_settings_description": "Özel e-posta bildirim şablonlarını yönet",
|
||||||
|
"template_email_update_album": "Albüm Şablonunu Güncelle",
|
||||||
|
"template_settings": "Bildirim Şablonları",
|
||||||
|
"template_settings_description": "Bildirim şablonlarını yönet.",
|
||||||
"theme_custom_css_settings": "Özel CSS",
|
"theme_custom_css_settings": "Özel CSS",
|
||||||
"theme_custom_css_settings_description": "CSS (Cascading Style Sheets) kullanılarak Immich'in tasarımı değiştirilebilir.",
|
"theme_custom_css_settings_description": "CSS (Cascading Style Sheets) kullanılarak Immich'in tasarımı değiştirilebilir.",
|
||||||
"theme_settings": "Tema ayarları",
|
"theme_settings": "Tema ayarları",
|
||||||
@@ -723,6 +732,7 @@
|
|||||||
"external": "Harici",
|
"external": "Harici",
|
||||||
"external_libraries": "Harici kütüphaneler",
|
"external_libraries": "Harici kütüphaneler",
|
||||||
"face_unassigned": "Yüz atanmadı",
|
"face_unassigned": "Yüz atanmadı",
|
||||||
|
"failed_to_load_assets": "Varlıklar yüklenemedi",
|
||||||
"favorite": "Favori",
|
"favorite": "Favori",
|
||||||
"favorite_or_unfavorite_photo": "Favoriye ekle veya çıkar",
|
"favorite_or_unfavorite_photo": "Favoriye ekle veya çıkar",
|
||||||
"favorites": "Favoriler",
|
"favorites": "Favoriler",
|
||||||
@@ -1022,6 +1032,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {# dosya} other {# dosya}} yeni bir kişiye atandı",
|
"reassigned_assets_to_new_person": "{count, plural, one {# dosya} other {# dosya}} yeni bir kişiye atandı",
|
||||||
"reassing_hint": "Seçili dosyaları mevcut bir kişiye atayın",
|
"reassing_hint": "Seçili dosyaları mevcut bir kişiye atayın",
|
||||||
"recent": "Son",
|
"recent": "Son",
|
||||||
|
"recent-albums": "Son kaydedilen albümler",
|
||||||
"recent_searches": "Son aramalar",
|
"recent_searches": "Son aramalar",
|
||||||
"refresh": "Yenile",
|
"refresh": "Yenile",
|
||||||
"refresh_encoded_videos": "Kodlanmış videoları yenile",
|
"refresh_encoded_videos": "Kodlanmış videoları yenile",
|
||||||
@@ -1043,6 +1054,7 @@
|
|||||||
"remove_from_album": "Albümden çıkar",
|
"remove_from_album": "Albümden çıkar",
|
||||||
"remove_from_favorites": "Favorilerden çıkar",
|
"remove_from_favorites": "Favorilerden çıkar",
|
||||||
"remove_from_shared_link": "Paylaşılan bağlantıdan çıkar",
|
"remove_from_shared_link": "Paylaşılan bağlantıdan çıkar",
|
||||||
|
"remove_url": "Bağlantıyı kaldır",
|
||||||
"remove_user": "Kullanıcıyı çıkar",
|
"remove_user": "Kullanıcıyı çıkar",
|
||||||
"removed_api_key": "API anahtarı {name} kaldırıldı",
|
"removed_api_key": "API anahtarı {name} kaldırıldı",
|
||||||
"removed_from_archive": "Arşivden çıkarıldı",
|
"removed_from_archive": "Arşivden çıkarıldı",
|
||||||
|
|||||||
22
i18n/uk.json
22
i18n/uk.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Оновити",
|
"about": "Про програму",
|
||||||
"account": "Обліковий запис",
|
"account": "Обліковий запис",
|
||||||
"account_settings": "Налаштування профілю",
|
"account_settings": "Налаштування профілю",
|
||||||
"acknowledge": "Прийняти",
|
"acknowledge": "Прийняти",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "Додати у...",
|
"add_to": "Додати у...",
|
||||||
"add_to_album": "Додати у альбом",
|
"add_to_album": "Додати у альбом",
|
||||||
"add_to_shared_album": "Додати у спільний альбом",
|
"add_to_shared_album": "Додати у спільний альбом",
|
||||||
|
"add_url": "Додати URL",
|
||||||
"added_to_archive": "Додано до архіву",
|
"added_to_archive": "Додано до архіву",
|
||||||
"added_to_favorites": "Додано до обраного",
|
"added_to_favorites": "Додано до обраного",
|
||||||
"added_to_favorites_count": "Додано {count, number} до обраного",
|
"added_to_favorites_count": "Додано {count, number} до обраного",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "Пошук зображень за допомогою семантичних вбудовувань CLIP",
|
"machine_learning_smart_search_description": "Пошук зображень за допомогою семантичних вбудовувань CLIP",
|
||||||
"machine_learning_smart_search_enabled": "Увімкнути розумний пошук",
|
"machine_learning_smart_search_enabled": "Увімкнути розумний пошук",
|
||||||
"machine_learning_smart_search_enabled_description": "Якщо ця функція вимкнена, зображення не будуть кодуватися для розумного пошуку.",
|
"machine_learning_smart_search_enabled_description": "Якщо ця функція вимкнена, зображення не будуть кодуватися для розумного пошуку.",
|
||||||
"machine_learning_url_description": "URL сервера машинного навчання",
|
"machine_learning_url_description": "URL сервера машинного навчання. Якщо надано більше одного URL, сервери будуть опитуватися по черзі, поки один з них не відповість успішно, у порядку від першого до останнього.",
|
||||||
"manage_concurrency": "Керування паралельністю завдань",
|
"manage_concurrency": "Керування паралельністю завдань",
|
||||||
"manage_log_settings": "Керування налаштуваннями журналу",
|
"manage_log_settings": "Керування налаштуваннями журналу",
|
||||||
"map_dark_style": "Темний стиль",
|
"map_dark_style": "Темний стиль",
|
||||||
@@ -249,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> - це мітка зберігання користувача",
|
"storage_template_user_label": "<code>{label}</code> - це мітка зберігання користувача",
|
||||||
"system_settings": "Системні налаштування",
|
"system_settings": "Системні налаштування",
|
||||||
"tag_cleanup_job": "Очистити тег",
|
"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": "Власний CSS",
|
||||||
"theme_custom_css_settings_description": "Каскадні таблиці стилів дозволяють настроювати дизайн Immich.",
|
"theme_custom_css_settings_description": "Каскадні таблиці стилів дозволяють настроювати дизайн Immich.",
|
||||||
"theme_settings": "Налаштування теми",
|
"theme_settings": "Налаштування теми",
|
||||||
@@ -322,7 +333,7 @@
|
|||||||
"untracked_files_description": "Ці файли не відстежуються програмою. Вони можуть бути результатом невдалого переміщення, перерваного завантаження або залишитися через помилку програми",
|
"untracked_files_description": "Ці файли не відстежуються програмою. Вони можуть бути результатом невдалого переміщення, перерваного завантаження або залишитися через помилку програми",
|
||||||
"user_cleanup_job": "Очищення користувача",
|
"user_cleanup_job": "Очищення користувача",
|
||||||
"user_delete_delay": "Акаунт <b>{user}</b> і його ресурси будуть заплановані для остаточного видалення через {delay, plural, one {# день} few {# дні} many {# днів} other {# днів}}.",
|
"user_delete_delay": "Акаунт <b>{user}</b> і його ресурси будуть заплановані для остаточного видалення через {delay, plural, one {# день} few {# дні} many {# днів} other {# днів}}.",
|
||||||
"user_delete_delay_settings": "Видалити затримку",
|
"user_delete_delay_settings": "Відкладене видалення",
|
||||||
"user_delete_delay_settings_description": "Кількість днів після видалення для остаточного видалення акаунта користувача та його ресурсів. Задача видалення користувача запускається опівночі для перевірки користувачів, готових до видалення. Зміни цього налаштування будуть оцінені під час наступного виконання.",
|
"user_delete_delay_settings_description": "Кількість днів після видалення для остаточного видалення акаунта користувача та його ресурсів. Задача видалення користувача запускається опівночі для перевірки користувачів, готових до видалення. Зміни цього налаштування будуть оцінені під час наступного виконання.",
|
||||||
"user_delete_immediately": "Акаунт та ресурси користувача <b>{user}</b> будуть <b>негайно</b> поставлені в чергу на остаточне видалення.",
|
"user_delete_immediately": "Акаунт та ресурси користувача <b>{user}</b> будуть <b>негайно</b> поставлені в чергу на остаточне видалення.",
|
||||||
"user_delete_immediately_checkbox": "Поставити користувача та ресурси в чергу для негайного видалення",
|
"user_delete_immediately_checkbox": "Поставити користувача та ресурси в чергу для негайного видалення",
|
||||||
@@ -723,6 +734,7 @@
|
|||||||
"external": "Зовнішні",
|
"external": "Зовнішні",
|
||||||
"external_libraries": "Зовнішні бібліотеки",
|
"external_libraries": "Зовнішні бібліотеки",
|
||||||
"face_unassigned": "Не призначено",
|
"face_unassigned": "Не призначено",
|
||||||
|
"failed_to_load_assets": "Не вдалося завантажити ресурси",
|
||||||
"favorite": "До улюблених",
|
"favorite": "До улюблених",
|
||||||
"favorite_or_unfavorite_photo": "Додати до обраних або видалити з обраних фото",
|
"favorite_or_unfavorite_photo": "Додати до обраних або видалити з обраних фото",
|
||||||
"favorites": "Улюблені",
|
"favorites": "Улюблені",
|
||||||
@@ -951,7 +963,7 @@
|
|||||||
"permanently_delete": "Видалити назавжди",
|
"permanently_delete": "Видалити назавжди",
|
||||||
"permanently_delete_assets_count": "Остаточно видалити {count, plural, one {ресурс} other {ресурси}}",
|
"permanently_delete_assets_count": "Остаточно видалити {count, plural, one {ресурс} other {ресурси}}",
|
||||||
"permanently_delete_assets_prompt": "Ви впевнені, що хочете назавжди видалити {count, plural, one {цей ресурс?} other {ці <b>#</b> ресурси?}} Це також видалить {count, plural, one {його з його} other {їх з їхніх}} альбому(ів).",
|
"permanently_delete_assets_prompt": "Ви впевнені, що хочете назавжди видалити {count, plural, one {цей ресурс?} other {ці <b>#</b> ресурси?}} Це також видалить {count, plural, one {його з його} other {їх з їхніх}} альбому(ів).",
|
||||||
"permanently_deleted_asset": "Видалити об'єкт назавжди",
|
"permanently_deleted_asset": "Видалити назавжди",
|
||||||
"permanently_deleted_assets_count": "Видалено остаточно {count, plural, one {# ресурс} few {# ресурси} many {# ресурсів} other {# ресурсів}}",
|
"permanently_deleted_assets_count": "Видалено остаточно {count, plural, one {# ресурс} few {# ресурси} many {# ресурсів} other {# ресурсів}}",
|
||||||
"person": "Людина",
|
"person": "Людина",
|
||||||
"person_hidden": "{name}{hidden, select, true { (приховано)} other {}}",
|
"person_hidden": "{name}{hidden, select, true { (приховано)} other {}}",
|
||||||
@@ -1022,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Перепризначено {count, plural, one {# ресурс} other {# ресурси}} новій особі",
|
"reassigned_assets_to_new_person": "Перепризначено {count, plural, one {# ресурс} other {# ресурси}} новій особі",
|
||||||
"reassing_hint": "Призначити обрані ресурси існуючій особі",
|
"reassing_hint": "Призначити обрані ресурси існуючій особі",
|
||||||
"recent": "Нещодавно",
|
"recent": "Нещодавно",
|
||||||
|
"recent-albums": "Останні альбоми",
|
||||||
"recent_searches": "Нещодавні пошукові запити",
|
"recent_searches": "Нещодавні пошукові запити",
|
||||||
"refresh": "Оновити",
|
"refresh": "Оновити",
|
||||||
"refresh_encoded_videos": "Оновити закодовані відео",
|
"refresh_encoded_videos": "Оновити закодовані відео",
|
||||||
@@ -1043,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": "Видалити URL",
|
||||||
"remove_user": "Видалити користувача",
|
"remove_user": "Видалити користувача",
|
||||||
"removed_api_key": "Видалено ключ API: {name}",
|
"removed_api_key": "Видалено ключ API: {name}",
|
||||||
"removed_from_archive": "Видалено з архіву",
|
"removed_from_archive": "Видалено з архіву",
|
||||||
|
|||||||
1
i18n/ur.json
Normal file
1
i18n/ur.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "加入到…",
|
"add_to": "加入到…",
|
||||||
"add_to_album": "加入到相簿",
|
"add_to_album": "加入到相簿",
|
||||||
"add_to_shared_album": "加到共享相簿",
|
"add_to_shared_album": "加到共享相簿",
|
||||||
|
"add_url": "新增URL",
|
||||||
"added_to_archive": "封存",
|
"added_to_archive": "封存",
|
||||||
"added_to_favorites": "加入收藏",
|
"added_to_favorites": "加入收藏",
|
||||||
"added_to_favorites_count": "將 {count, number} 個項目加入收藏",
|
"added_to_favorites_count": "將 {count, number} 個項目加入收藏",
|
||||||
@@ -68,7 +69,7 @@
|
|||||||
"image_prefer_embedded_preview_setting_description": "優先使用 RAW 的嵌入預覧作影像處理。可以提升某些影像的顏色精確度,但嵌入預覧的影像品質依相機而異,且可能壓縮較多。",
|
"image_prefer_embedded_preview_setting_description": "優先使用 RAW 的嵌入預覧作影像處理。可以提升某些影像的顏色精確度,但嵌入預覧的影像品質依相機而異,且可能壓縮較多。",
|
||||||
"image_prefer_wide_gamut": "偏好廣色域",
|
"image_prefer_wide_gamut": "偏好廣色域",
|
||||||
"image_prefer_wide_gamut_setting_description": "使用 Display P3 來製作縮圖。這可以更好地保留廣色域圖片的鮮豔度,但在舊版瀏覽器或舊設備上,圖片可能會顯示不同。sRGB 圖片會維持 sRGB 以避免顏色變化。",
|
"image_prefer_wide_gamut_setting_description": "使用 Display P3 來製作縮圖。這可以更好地保留廣色域圖片的鮮豔度,但在舊版瀏覽器或舊設備上,圖片可能會顯示不同。sRGB 圖片會維持 sRGB 以避免顏色變化。",
|
||||||
"image_preview_description": "除去元資料的中型圖片,在查看單一檔案和機器學習時使用",
|
"image_preview_description": "刪除中等尺寸圖片的詳細資料,當選擇看指定項目和機器學習時使用",
|
||||||
"image_preview_quality_description": "預覽品質爲 1 ~ 100。數值越大品質越高,但會產生較大的檔案,且可能降低應用程式的響應速度。而數值較小可能會影響機器學習品質。",
|
"image_preview_quality_description": "預覽品質爲 1 ~ 100。數值越大品質越高,但會產生較大的檔案,且可能降低應用程式的響應速度。而數值較小可能會影響機器學習品質。",
|
||||||
"image_preview_title": "預覽設定",
|
"image_preview_title": "預覽設定",
|
||||||
"image_quality": "品質",
|
"image_quality": "品質",
|
||||||
@@ -76,7 +77,7 @@
|
|||||||
"image_resolution_description": "較高的解析度可以保留更多細節,但編碼時間較長,檔案較大且可能降低應用程式的響應速度。",
|
"image_resolution_description": "較高的解析度可以保留更多細節,但編碼時間較長,檔案較大且可能降低應用程式的響應速度。",
|
||||||
"image_settings": "圖片設定",
|
"image_settings": "圖片設定",
|
||||||
"image_settings_description": "管理產生圖片的品質和解析度",
|
"image_settings_description": "管理產生圖片的品質和解析度",
|
||||||
"image_thumbnail_description": "除去元資料的小型縮圖,在查看主時間軸等大量照片時使用",
|
"image_thumbnail_description": "刪除縮圖的詳細資料,在快速瀏覽重要時間軸時或大量照片時使用",
|
||||||
"image_thumbnail_quality_description": "縮圖品質爲 1 ~ 100。數值越大品質越高,但會產生較大的檔案,且可能降低應用程式的響應速度。",
|
"image_thumbnail_quality_description": "縮圖品質爲 1 ~ 100。數值越大品質越高,但會產生較大的檔案,且可能降低應用程式的響應速度。",
|
||||||
"image_thumbnail_title": "縮圖設定",
|
"image_thumbnail_title": "縮圖設定",
|
||||||
"job_concurrency": "{job}並行",
|
"job_concurrency": "{job}並行",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "使用 CLIP 嵌入進行語義圖像搜尋",
|
"machine_learning_smart_search_description": "使用 CLIP 嵌入進行語義圖像搜尋",
|
||||||
"machine_learning_smart_search_enabled": "啟用智慧搜尋",
|
"machine_learning_smart_search_enabled": "啟用智慧搜尋",
|
||||||
"machine_learning_smart_search_enabled_description": "如果停用,圖片將不會被編碼以進行智能搜尋。",
|
"machine_learning_smart_search_enabled_description": "如果停用,圖片將不會被編碼以進行智能搜尋。",
|
||||||
"machine_learning_url_description": "機器學習伺服器的網址",
|
"machine_learning_url_description": "機器學習伺服器的網址,如果提供多個 URL,則將按依序嘗試連接每個伺服器,直到有一個伺服器成功回應為止。",
|
||||||
"manage_concurrency": "管理並行",
|
"manage_concurrency": "管理並行",
|
||||||
"manage_log_settings": "管理日誌設定",
|
"manage_log_settings": "管理日誌設定",
|
||||||
"map_dark_style": "深色樣式",
|
"map_dark_style": "深色樣式",
|
||||||
@@ -147,11 +148,11 @@
|
|||||||
"map_settings_description": "管理地圖設定",
|
"map_settings_description": "管理地圖設定",
|
||||||
"map_style_description": "地圖主題(style.json)的網址",
|
"map_style_description": "地圖主題(style.json)的網址",
|
||||||
"metadata_extraction_job": "擷取元資料",
|
"metadata_extraction_job": "擷取元資料",
|
||||||
"metadata_extraction_job_description": "擷取每個檔案的 GPS、臉孔、解析度等元資料資訊",
|
"metadata_extraction_job_description": "擷取所有檔案的 GPS、臉孔、解析度等原始詳細資料",
|
||||||
"metadata_faces_import_setting": "啟用臉孔匯入",
|
"metadata_faces_import_setting": "啟用臉孔匯入",
|
||||||
"metadata_faces_import_setting_description": "從圖片的 EXIF 資料和側接檔案匯入臉孔",
|
"metadata_faces_import_setting_description": "從圖片的 EXIF 資料和側接檔案匯入臉孔",
|
||||||
"metadata_settings": "元資料設定",
|
"metadata_settings": "詳細資料設定",
|
||||||
"metadata_settings_description": "管理元資料設定",
|
"metadata_settings_description": "管理詮釋資料設定",
|
||||||
"migration_job": "遷移",
|
"migration_job": "遷移",
|
||||||
"migration_job_description": "將照片和人臉的縮圖遷移到最新的文件夾結構",
|
"migration_job_description": "將照片和人臉的縮圖遷移到最新的文件夾結構",
|
||||||
"no_paths_added": "未添加路徑",
|
"no_paths_added": "未添加路徑",
|
||||||
@@ -228,8 +229,8 @@
|
|||||||
"server_settings_description": "管理伺服器設定",
|
"server_settings_description": "管理伺服器設定",
|
||||||
"server_welcome_message": "歡迎訊息",
|
"server_welcome_message": "歡迎訊息",
|
||||||
"server_welcome_message_description": "在登入頁面顯示的訊息。",
|
"server_welcome_message_description": "在登入頁面顯示的訊息。",
|
||||||
"sidecar_job": "側接元資料",
|
"sidecar_job": "邊車模式詮釋資料",
|
||||||
"sidecar_job_description": "從檔案系統探索或同步側接(Sidecar)元資料",
|
"sidecar_job_description": "從檔案系統搜索或同步邊車模式詮釋資料",
|
||||||
"slideshow_duration_description": "每張圖片放映的秒數",
|
"slideshow_duration_description": "每張圖片放映的秒數",
|
||||||
"smart_search_job_description": "對檔案執行機器學習,以利智慧搜尋",
|
"smart_search_job_description": "對檔案執行機器學習,以利智慧搜尋",
|
||||||
"storage_template_date_time_description": "檔案的創建時戳會用於判斷時間資訊",
|
"storage_template_date_time_description": "檔案的創建時戳會用於判斷時間資訊",
|
||||||
@@ -249,6 +250,13 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code> 是使用者的儲存標籤",
|
"storage_template_user_label": "<code>{label}</code> 是使用者的儲存標籤",
|
||||||
"system_settings": "系統設定",
|
"system_settings": "系統設定",
|
||||||
"tag_cleanup_job": "清理標記",
|
"tag_cleanup_job": "清理標記",
|
||||||
|
"template_email_invite_album": "邀請項目範本",
|
||||||
|
"template_email_preview": "預覽",
|
||||||
|
"template_email_settings": "Email範本",
|
||||||
|
"template_email_settings_description": "管理自定義Email通知模板",
|
||||||
|
"template_email_update_album": "更新向本範本",
|
||||||
|
"template_email_welcome": "歡迎Email範本",
|
||||||
|
"template_settings": "通知範本",
|
||||||
"theme_custom_css_settings": "自訂 CSS",
|
"theme_custom_css_settings": "自訂 CSS",
|
||||||
"theme_custom_css_settings_description": "可以用層疊樣式表(CSS)來自訂 Immich 的設計。",
|
"theme_custom_css_settings_description": "可以用層疊樣式表(CSS)來自訂 Immich 的設計。",
|
||||||
"theme_settings": "主題",
|
"theme_settings": "主題",
|
||||||
@@ -589,7 +597,7 @@
|
|||||||
"cant_apply_changes": "無法套用更改",
|
"cant_apply_changes": "無法套用更改",
|
||||||
"cant_change_activity": "無法{enabled, select, true {禁用} other {啟用}}活動",
|
"cant_change_activity": "無法{enabled, select, true {禁用} other {啟用}}活動",
|
||||||
"cant_change_asset_favorite": "無法更改檔案的收藏狀態",
|
"cant_change_asset_favorite": "無法更改檔案的收藏狀態",
|
||||||
"cant_change_metadata_assets_count": "無法更改 {count, plural, other {# 個檔案}}的元資料",
|
"cant_change_metadata_assets_count": "無法更改 {count, plural, other {# 個檔案}}的詳細資料",
|
||||||
"cant_get_faces": "無法取得臉孔",
|
"cant_get_faces": "無法取得臉孔",
|
||||||
"cant_get_number_of_comments": "無法獲取評論數量",
|
"cant_get_number_of_comments": "無法獲取評論數量",
|
||||||
"cant_search_people": "無法搜尋人",
|
"cant_search_people": "無法搜尋人",
|
||||||
@@ -1026,13 +1034,13 @@
|
|||||||
"refresh": "重新整理",
|
"refresh": "重新整理",
|
||||||
"refresh_encoded_videos": "重新整理已編碼的影片",
|
"refresh_encoded_videos": "重新整理已編碼的影片",
|
||||||
"refresh_faces": "重整面部資料",
|
"refresh_faces": "重整面部資料",
|
||||||
"refresh_metadata": "重新整理元資料",
|
"refresh_metadata": "重新整理詳細資料",
|
||||||
"refresh_thumbnails": "重新整理縮圖",
|
"refresh_thumbnails": "重新整理縮圖",
|
||||||
"refreshed": "重新整理完畢",
|
"refreshed": "重新整理完畢",
|
||||||
"refreshes_every_file": "重新讀取現有的所有檔案和新檔案",
|
"refreshes_every_file": "重新讀取現有的所有檔案和新檔案",
|
||||||
"refreshing_encoded_video": "正在重新整理已編碼的影片",
|
"refreshing_encoded_video": "正在重新整理已編碼的影片",
|
||||||
"refreshing_faces": "重整面部資料中",
|
"refreshing_faces": "重整面部資料中",
|
||||||
"refreshing_metadata": "正在重新整理元資料",
|
"refreshing_metadata": "正在重新整理詳細資料",
|
||||||
"regenerating_thumbnails": "重新產生縮圖中",
|
"regenerating_thumbnails": "重新產生縮圖中",
|
||||||
"remove": "移除",
|
"remove": "移除",
|
||||||
"remove_assets_album_confirmation": "確定要從相簿中移除 {count, plural, other {# 個檔案}}嗎?",
|
"remove_assets_album_confirmation": "確定要從相簿中移除 {count, plural, other {# 個檔案}}嗎?",
|
||||||
@@ -1157,7 +1165,7 @@
|
|||||||
"show_in_timeline": "在時間軸中顯示",
|
"show_in_timeline": "在時間軸中顯示",
|
||||||
"show_in_timeline_setting_description": "在您的時間軸中顯示這位使用者的照片和影片",
|
"show_in_timeline_setting_description": "在您的時間軸中顯示這位使用者的照片和影片",
|
||||||
"show_keyboard_shortcuts": "顯示鍵盤快捷鍵",
|
"show_keyboard_shortcuts": "顯示鍵盤快捷鍵",
|
||||||
"show_metadata": "顯示元資料",
|
"show_metadata": "顯示詳細資料",
|
||||||
"show_or_hide_info": "顯示或隱藏資訊",
|
"show_or_hide_info": "顯示或隱藏資訊",
|
||||||
"show_password": "顯示密碼",
|
"show_password": "顯示密碼",
|
||||||
"show_person_options": "顯示人物選項",
|
"show_person_options": "顯示人物選項",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "刷新",
|
"about": "关于",
|
||||||
"account": "账户",
|
"account": "账户",
|
||||||
"account_settings": "账户设置",
|
"account_settings": "账户设置",
|
||||||
"acknowledge": "确认",
|
"acknowledge": "确认",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"add_to": "添加到...",
|
"add_to": "添加到...",
|
||||||
"add_to_album": "添加到相册",
|
"add_to_album": "添加到相册",
|
||||||
"add_to_shared_album": "添加到共享相册",
|
"add_to_shared_album": "添加到共享相册",
|
||||||
|
"add_url": "添加URL",
|
||||||
"added_to_archive": "添加到归档",
|
"added_to_archive": "添加到归档",
|
||||||
"added_to_favorites": "添加到收藏",
|
"added_to_favorites": "添加到收藏",
|
||||||
"added_to_favorites_count": "添加{count, number}项到收藏",
|
"added_to_favorites_count": "添加{count, number}项到收藏",
|
||||||
@@ -130,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "使用CLIP以文搜图、智能搜图",
|
"machine_learning_smart_search_description": "使用CLIP以文搜图、智能搜图",
|
||||||
"machine_learning_smart_search_enabled": "启用智能搜索",
|
"machine_learning_smart_search_enabled": "启用智能搜索",
|
||||||
"machine_learning_smart_search_enabled_description": "如果禁用,则不会对图像编码以用于智能搜索。",
|
"machine_learning_smart_search_enabled_description": "如果禁用,则不会对图像编码以用于智能搜索。",
|
||||||
"machine_learning_url_description": "机器学习服务器的URL",
|
"machine_learning_url_description": "机器学习服务器的 URL。如果提供多个 URL,则将按依次尝试连接每个服务器,直到有一个服务器成功响应为止。",
|
||||||
"manage_concurrency": "管理任务并发",
|
"manage_concurrency": "管理任务并发",
|
||||||
"manage_log_settings": "管理日志设置",
|
"manage_log_settings": "管理日志设置",
|
||||||
"map_dark_style": "深色模式",
|
"map_dark_style": "深色模式",
|
||||||
@@ -223,7 +224,7 @@
|
|||||||
"server_external_domain_settings": "外部域名",
|
"server_external_domain_settings": "外部域名",
|
||||||
"server_external_domain_settings_description": "共享链接域名,包括 http(s)://",
|
"server_external_domain_settings_description": "共享链接域名,包括 http(s)://",
|
||||||
"server_public_users": "公共用户",
|
"server_public_users": "公共用户",
|
||||||
"server_public_users_description": "将用户添加到共享相册时,会列出所有用户(姓名和电子邮件)。禁用后,用户列表将仅对管理员用户可用。",
|
"server_public_users_description": "将用户添加到共享相册时,会列出所有用户(姓名和邮箱)。禁用后,用户列表将仅对管理员用户可用。",
|
||||||
"server_settings": "服务器设置",
|
"server_settings": "服务器设置",
|
||||||
"server_settings_description": "管理服务器设置",
|
"server_settings_description": "管理服务器设置",
|
||||||
"server_welcome_message": "欢迎消息",
|
"server_welcome_message": "欢迎消息",
|
||||||
@@ -249,6 +250,16 @@
|
|||||||
"storage_template_user_label": "<code>{label}</code>是用户的存储标签",
|
"storage_template_user_label": "<code>{label}</code>是用户的存储标签",
|
||||||
"system_settings": "系统设置",
|
"system_settings": "系统设置",
|
||||||
"tag_cleanup_job": "清理标签",
|
"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": "自定义CSS",
|
||||||
"theme_custom_css_settings_description": "可以通过CSS自定义Immich外观。",
|
"theme_custom_css_settings_description": "可以通过CSS自定义Immich外观。",
|
||||||
"theme_settings": "主题设置",
|
"theme_settings": "主题设置",
|
||||||
@@ -349,7 +360,7 @@
|
|||||||
"age_year_months": "1岁{months, plural, one {#个月} other {#个月}}",
|
"age_year_months": "1岁{months, plural, one {#个月} other {#个月}}",
|
||||||
"age_years": "{years, plural, other {#岁}}",
|
"age_years": "{years, plural, other {#岁}}",
|
||||||
"album_added": "相册已添加",
|
"album_added": "相册已添加",
|
||||||
"album_added_notification_setting_description": "当您被添加到共享相册时,接收电子邮件通知",
|
"album_added_notification_setting_description": "当您被添加到共享相册时,接收邮箱通知",
|
||||||
"album_cover_updated": "相册封面已更新",
|
"album_cover_updated": "相册封面已更新",
|
||||||
"album_delete_confirmation": "确定要删除相册“{album}”吗?",
|
"album_delete_confirmation": "确定要删除相册“{album}”吗?",
|
||||||
"album_delete_confirmation_description": "如果该相册是共享的,其他用户将无法再访问它。",
|
"album_delete_confirmation_description": "如果该相册是共享的,其他用户将无法再访问它。",
|
||||||
@@ -723,6 +734,7 @@
|
|||||||
"external": "外部的",
|
"external": "外部的",
|
||||||
"external_libraries": "外部图库",
|
"external_libraries": "外部图库",
|
||||||
"face_unassigned": "未指派",
|
"face_unassigned": "未指派",
|
||||||
|
"failed_to_load_assets": "加载项目失败",
|
||||||
"favorite": "收藏",
|
"favorite": "收藏",
|
||||||
"favorite_or_unfavorite_photo": "收藏或取消收藏照片",
|
"favorite_or_unfavorite_photo": "收藏或取消收藏照片",
|
||||||
"favorites": "收藏夹",
|
"favorites": "收藏夹",
|
||||||
@@ -1022,6 +1034,7 @@
|
|||||||
"reassigned_assets_to_new_person": "重新指派{count, plural, one {#个项目} other {#个项目}}到新的人物",
|
"reassigned_assets_to_new_person": "重新指派{count, plural, one {#个项目} other {#个项目}}到新的人物",
|
||||||
"reassing_hint": "指派选择的项目到已存在的人物",
|
"reassing_hint": "指派选择的项目到已存在的人物",
|
||||||
"recent": "最近",
|
"recent": "最近",
|
||||||
|
"recent-albums": "最近的相册",
|
||||||
"recent_searches": "最近搜索",
|
"recent_searches": "最近搜索",
|
||||||
"refresh": "刷新",
|
"refresh": "刷新",
|
||||||
"refresh_encoded_videos": "刷新已编码的视频",
|
"refresh_encoded_videos": "刷新已编码的视频",
|
||||||
@@ -1043,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": "移除URL",
|
||||||
"remove_user": "移除用户",
|
"remove_user": "移除用户",
|
||||||
"removed_api_key": "移除的API Key:{name}",
|
"removed_api_key": "移除的API Key:{name}",
|
||||||
"removed_from_archive": "从归档中移除",
|
"removed_from_archive": "从归档中移除",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
ARG DEVICE=cpu
|
ARG DEVICE=cpu
|
||||||
|
|
||||||
FROM python:3.11-bookworm@sha256:706d1233c61a31507c4f8939cfd6a924610b51174c095f33e2c537fb904a1e76 AS builder-cpu
|
FROM python:3.11-bookworm@sha256:2c80c66d876952e04fa74113864903198b7cfb36b839acb7a8fef82e94ed067c AS builder-cpu
|
||||||
|
|
||||||
FROM builder-cpu AS builder-openvino
|
FROM builder-cpu AS builder-openvino
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ RUN python3 -m venv /opt/venv
|
|||||||
COPY poetry.lock pyproject.toml ./
|
COPY poetry.lock pyproject.toml ./
|
||||||
RUN poetry install --sync --no-interaction --no-ansi --no-root --with ${DEVICE} --without dev
|
RUN poetry install --sync --no-interaction --no-ansi --no-root --with ${DEVICE} --without dev
|
||||||
|
|
||||||
FROM python:3.11-slim-bookworm@sha256:e8381c802593deb0c4d25bd3f4e05e94382f6bf33090de22679fc7488cd68bbb AS prod-cpu
|
FROM python:3.11-slim-bookworm@sha256:370c586a6ffc8c619e6d652f81c094b34b14b8f2fb9251f092de23f16e299b78 AS prod-cpu
|
||||||
|
|
||||||
FROM prod-cpu AS prod-openvino
|
FROM prod-cpu AS prod-openvino
|
||||||
|
|
||||||
|
|||||||
828
machine-learning/poetry.lock
generated
828
machine-learning/poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "machine-learning"
|
name = "machine-learning"
|
||||||
version = "1.122.2"
|
version = "1.123.0"
|
||||||
description = ""
|
description = ""
|
||||||
authors = ["Hau Tran <alex.tran1502@gmail.com>"]
|
authors = ["Hau Tran <alex.tran1502@gmail.com>"]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ custom_lint:
|
|||||||
# acceptable exceptions for the time being (until Isar is fully replaced)
|
# acceptable exceptions for the time being (until Isar is fully replaced)
|
||||||
- integration_test/test_utils/general_helper.dart
|
- integration_test/test_utils/general_helper.dart
|
||||||
- lib/main.dart
|
- lib/main.dart
|
||||||
- lib/pages/common/album_asset_selection.page.dart
|
- lib/pages/album/album_asset_selection.page.dart
|
||||||
- lib/routing/router.dart
|
- lib/routing/router.dart
|
||||||
- lib/services/immich_logger.service.dart # not really a service... more a util
|
- lib/services/immich_logger.service.dart # not really a service... more a util
|
||||||
- lib/utils/{db,migration,renderlist_generator}.dart
|
- lib/utils/{db,migration,renderlist_generator}.dart
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ platform :android do
|
|||||||
task: 'bundle',
|
task: 'bundle',
|
||||||
build_type: 'Release',
|
build_type: 'Release',
|
||||||
properties: {
|
properties: {
|
||||||
"android.injected.version.code" => 170,
|
"android.injected.version.code" => 172,
|
||||||
"android.injected.version.name" => "1.122.2",
|
"android.injected.version.name" => "1.123.0",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')
|
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')
|
||||||
|
|||||||
@@ -157,6 +157,7 @@
|
|||||||
"cache_settings_tile_title": "التخزين المحلي",
|
"cache_settings_tile_title": "التخزين المحلي",
|
||||||
"cache_settings_title": "إعدادات التخزين المؤقت",
|
"cache_settings_title": "إعدادات التخزين المؤقت",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
|
"change_display_order": "Change display order",
|
||||||
"change_password_form_confirm_password": "تأكيد كلمة المرور",
|
"change_password_form_confirm_password": "تأكيد كلمة المرور",
|
||||||
"change_password_form_description": "مرحبًا ،هذه هي المرة الأولى التي تقوم فيها بالتسجيل في النظام أو تم تقديم طلب لتغيير كلمة المرور الخاصة بك.الرجاء إدخال كلمة المرور الجديدة أدناه",
|
"change_password_form_description": "مرحبًا ،هذه هي المرة الأولى التي تقوم فيها بالتسجيل في النظام أو تم تقديم طلب لتغيير كلمة المرور الخاصة بك.الرجاء إدخال كلمة المرور الجديدة أدناه",
|
||||||
"change_password_form_new_password": "كلمة المرور الجديدة",
|
"change_password_form_new_password": "كلمة المرور الجديدة",
|
||||||
@@ -248,6 +249,7 @@
|
|||||||
"edit_image_title": "Edit",
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "موقع",
|
"edit_location_dialog_title": "موقع",
|
||||||
"enter_wifi_name": "Enter WiFi name",
|
"enter_wifi_name": "Enter WiFi name",
|
||||||
|
"error_change_sort_album": "Failed to change album sort order",
|
||||||
"error_saving_image": "Error: {}",
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "اضف وصفا...",
|
"exif_bottom_sheet_description": "اضف وصفا...",
|
||||||
"exif_bottom_sheet_details": "تفاصيل",
|
"exif_bottom_sheet_details": "تفاصيل",
|
||||||
@@ -482,6 +484,7 @@
|
|||||||
"search_page_places": "أماكن",
|
"search_page_places": "أماكن",
|
||||||
"search_page_recently_added": "أضيف مؤخرا",
|
"search_page_recently_added": "أضيف مؤخرا",
|
||||||
"search_page_screenshots": "لقطات الشاشة",
|
"search_page_screenshots": "لقطات الشاشة",
|
||||||
|
"search_page_search_photos_videos": "Search for your photos and videos",
|
||||||
"search_page_selfies": " صور ذاتيه",
|
"search_page_selfies": " صور ذاتيه",
|
||||||
"search_page_things": "أشياء",
|
"search_page_things": "أشياء",
|
||||||
"search_page_videos": "أشرطة فيديو",
|
"search_page_videos": "أشرطة فيديو",
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
"action_common_select": "Vybrat",
|
"action_common_select": "Vybrat",
|
||||||
"action_common_update": "Aktualizovat",
|
"action_common_update": "Aktualizovat",
|
||||||
"add_a_name": "Přidat název",
|
"add_a_name": "Přidat název",
|
||||||
"add_endpoint": "Add endpoint",
|
"add_endpoint": "Přidat koncový bod",
|
||||||
"add_to_album_bottom_sheet_added": "Přidáno do {album}",
|
"add_to_album_bottom_sheet_added": "Přidáno do {album}",
|
||||||
"add_to_album_bottom_sheet_already_exists": "Je již v {album}",
|
"add_to_album_bottom_sheet_already_exists": "Je již v {album}",
|
||||||
"advanced_settings_log_level_title": "Úroveň protokolování: {}",
|
"advanced_settings_log_level_title": "Úroveň protokolování: {}",
|
||||||
@@ -66,12 +66,12 @@
|
|||||||
"assets_restored_successfully": "{} položek úspěšně obnoveno",
|
"assets_restored_successfully": "{} položek úspěšně obnoveno",
|
||||||
"assets_trashed": "{} položek vyhozeno do koše",
|
"assets_trashed": "{} položek vyhozeno do koše",
|
||||||
"assets_trashed_from_server": "{} položek vyhozeno do koše na Immich serveru",
|
"assets_trashed_from_server": "{} položek vyhozeno do koše na Immich serveru",
|
||||||
"asset_viewer_settings_subtitle": "Manage your gallery viewer settings",
|
"asset_viewer_settings_subtitle": "Správa nastavení prohlížeče galerie",
|
||||||
"asset_viewer_settings_title": "Prohlížeč",
|
"asset_viewer_settings_title": "Prohlížeč",
|
||||||
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
|
"automatic_endpoint_switching_subtitle": "Připojit se místně přes určenou Wi-Fi, pokud je k dispozici, a používat alternativní připojení jinde",
|
||||||
"automatic_endpoint_switching_title": "Automatic URL switching",
|
"automatic_endpoint_switching_title": "Automatické přepínání URL",
|
||||||
"background_location_permission": "Background location permission",
|
"background_location_permission": "Povolení polohy na pozadí",
|
||||||
"background_location_permission_content": "In order to switch networks when running in the background, Immich must *always* have precise location access so the app can read the Wi-Fi network's name",
|
"background_location_permission_content": "Aby bylo možné přepínat sítě při běhu na pozadí, musí mít Immich *vždy* přístup k přesné poloze, aby mohl zjistit název Wi-Fi sítě",
|
||||||
"backup_album_selection_page_albums_device": "Alba v zařízení ({})",
|
"backup_album_selection_page_albums_device": "Alba v zařízení ({})",
|
||||||
"backup_album_selection_page_albums_tap": "Klepnutím na položku ji zahrnete, opětovným klepnutím ji vyloučíte",
|
"backup_album_selection_page_albums_tap": "Klepnutím na položku ji zahrnete, opětovným klepnutím ji vyloučíte",
|
||||||
"backup_album_selection_page_assets_scatter": "Položky mohou být roztroušeny ve více albech. To umožňuje zahrnout nebo vyloučit alba během procesu zálohování.",
|
"backup_album_selection_page_assets_scatter": "Položky mohou být roztroušeny ve více albech. To umožňuje zahrnout nebo vyloučit alba během procesu zálohování.",
|
||||||
@@ -137,7 +137,7 @@
|
|||||||
"backup_manual_success": "Úspěch",
|
"backup_manual_success": "Úspěch",
|
||||||
"backup_manual_title": "Stav nahrávání",
|
"backup_manual_title": "Stav nahrávání",
|
||||||
"backup_options_page_title": "Nastavení záloh",
|
"backup_options_page_title": "Nastavení záloh",
|
||||||
"backup_setting_subtitle": "Manage background and foreground upload settings",
|
"backup_setting_subtitle": "Správa nastavení zálohování na pozadí a na popředí",
|
||||||
"cache_settings_album_thumbnails": "Náhledy stránek knihovny (položek {})",
|
"cache_settings_album_thumbnails": "Náhledy stránek knihovny (položek {})",
|
||||||
"cache_settings_clear_cache_button": "Vymazat vyrovnávací paměť",
|
"cache_settings_clear_cache_button": "Vymazat vyrovnávací paměť",
|
||||||
"cache_settings_clear_cache_button_title": "Vymaže vyrovnávací paměť aplikace. To výrazně ovlivní výkon aplikace, dokud se vyrovnávací paměť neobnoví.",
|
"cache_settings_clear_cache_button_title": "Vymaže vyrovnávací paměť aplikace. To výrazně ovlivní výkon aplikace, dokud se vyrovnávací paměť neobnoví.",
|
||||||
@@ -156,7 +156,8 @@
|
|||||||
"cache_settings_tile_subtitle": "Ovládání chování místního úložiště",
|
"cache_settings_tile_subtitle": "Ovládání chování místního úložiště",
|
||||||
"cache_settings_tile_title": "Místní úložiště",
|
"cache_settings_tile_title": "Místní úložiště",
|
||||||
"cache_settings_title": "Nastavení vyrovnávací paměti",
|
"cache_settings_title": "Nastavení vyrovnávací paměti",
|
||||||
"cancel": "Cancel",
|
"cancel": "Zrušit",
|
||||||
|
"change_display_order": "Změnit pořadí zobrazení",
|
||||||
"change_password_form_confirm_password": "Potvrďte heslo",
|
"change_password_form_confirm_password": "Potvrďte heslo",
|
||||||
"change_password_form_description": "Dobrý den, {name}\n\nje to buď poprvé, co se přihlašujete do systému, nebo byl vytvořen požadavek na změnu hesla. Níže zadejte nové heslo.",
|
"change_password_form_description": "Dobrý den, {name}\n\nje to buď poprvé, co se přihlašujete do systému, nebo byl vytvořen požadavek na změnu hesla. Níže zadejte nové heslo.",
|
||||||
"change_password_form_new_password": "Nové heslo",
|
"change_password_form_new_password": "Nové heslo",
|
||||||
@@ -210,7 +211,7 @@
|
|||||||
"crop": "Oříznout",
|
"crop": "Oříznout",
|
||||||
"curated_location_page_title": "Místa",
|
"curated_location_page_title": "Místa",
|
||||||
"curated_object_page_title": "Věci",
|
"curated_object_page_title": "Věci",
|
||||||
"current_server_address": "Current server address",
|
"current_server_address": "Aktuální adresa serveru",
|
||||||
"daily_title_text_date": "EEEE, d. MMMM",
|
"daily_title_text_date": "EEEE, d. MMMM",
|
||||||
"daily_title_text_date_year": "EEEE, d. MMMM y",
|
"daily_title_text_date_year": "EEEE, d. MMMM y",
|
||||||
"date_format": "EEEE, d. MMMM y • H:mm",
|
"date_format": "EEEE, d. MMMM y • H:mm",
|
||||||
@@ -247,7 +248,8 @@
|
|||||||
"edit_date_time_dialog_timezone": "Časové pásmo",
|
"edit_date_time_dialog_timezone": "Časové pásmo",
|
||||||
"edit_image_title": "Upravit",
|
"edit_image_title": "Upravit",
|
||||||
"edit_location_dialog_title": "Poloha",
|
"edit_location_dialog_title": "Poloha",
|
||||||
"enter_wifi_name": "Enter WiFi name",
|
"enter_wifi_name": "Zadejte název WiFi",
|
||||||
|
"error_change_sort_album": "Nepodařilo se změnit pořadí alba",
|
||||||
"error_saving_image": "Chyba: {}",
|
"error_saving_image": "Chyba: {}",
|
||||||
"exif_bottom_sheet_description": "Přidat popis...",
|
"exif_bottom_sheet_description": "Přidat popis...",
|
||||||
"exif_bottom_sheet_details": "PODROBNOSTI",
|
"exif_bottom_sheet_details": "PODROBNOSTI",
|
||||||
@@ -259,15 +261,15 @@
|
|||||||
"experimental_settings_new_asset_list_title": "Povolení experimentální mřížky fotografií",
|
"experimental_settings_new_asset_list_title": "Povolení experimentální mřížky fotografií",
|
||||||
"experimental_settings_subtitle": "Používejte na vlastní riziko!",
|
"experimental_settings_subtitle": "Používejte na vlastní riziko!",
|
||||||
"experimental_settings_title": "Experimentální",
|
"experimental_settings_title": "Experimentální",
|
||||||
"external_network": "External network",
|
"external_network": "Externí síť",
|
||||||
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
|
"external_network_sheet_info": "Pokud nejste v preferované síti WiFi, aplikace se připojí k serveru prostřednictvím první z níže uvedených adres URL, které může dosáhnout, počínaje shora dolů",
|
||||||
"favorites": "Oblíbené",
|
"favorites": "Oblíbené",
|
||||||
"favorites_page_no_favorites": "Nebyla nalezena žádná oblíbená média",
|
"favorites_page_no_favorites": "Nebyla nalezena žádná oblíbená média",
|
||||||
"favorites_page_title": "Oblíbené",
|
"favorites_page_title": "Oblíbené",
|
||||||
"filename_search": "Název nebo přípona souboru",
|
"filename_search": "Název nebo přípona souboru",
|
||||||
"filter": "Filtr",
|
"filter": "Filtr",
|
||||||
"get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network",
|
"get_wifiname_error": "Nepodařilo se získat název Wi-Fi. Zkontrolujte, zda jste udělili potřebná oprávnění a zda jste připojeni k Wi-Fi síti",
|
||||||
"grant_permission": "Grant permission",
|
"grant_permission": "Udělit oprávnění",
|
||||||
"haptic_feedback_switch": "Povolit dotykovou zpětnou vazbu",
|
"haptic_feedback_switch": "Povolit dotykovou zpětnou vazbu",
|
||||||
"haptic_feedback_title": "Dotyková zpětná vazba",
|
"haptic_feedback_title": "Dotyková zpětná vazba",
|
||||||
"header_settings_add_header_tip": "Přidat hlavičku",
|
"header_settings_add_header_tip": "Přidat hlavičku",
|
||||||
@@ -313,10 +315,10 @@
|
|||||||
"library_page_sort_most_oldest_photo": "Nejstarší fotografie",
|
"library_page_sort_most_oldest_photo": "Nejstarší fotografie",
|
||||||
"library_page_sort_most_recent_photo": "Nejnovější fotografie",
|
"library_page_sort_most_recent_photo": "Nejnovější fotografie",
|
||||||
"library_page_sort_title": "Podle názvu alba",
|
"library_page_sort_title": "Podle názvu alba",
|
||||||
"local_network": "Local network",
|
"local_network": "Místní síť",
|
||||||
"local_network_sheet_info": "The app will connect to the server through this URL when using the specified Wi-Fi network",
|
"local_network_sheet_info": "Aplikace se při použití zadané sítě Wi-Fi připojí k serveru prostřednictvím tohoto URL",
|
||||||
"location_permission": "Location permission",
|
"location_permission": "Oprávnění polohy",
|
||||||
"location_permission_content": "In order to use the auto-switching feature, Immich needs precise location permission so it can read the current WiFi network's name",
|
"location_permission_content": "Aby bylo možné používat funkci automatického přepínání, potřebuje Immich oprávnění k přesné poloze, aby mohl přečíst název aktuální WiFi sítě",
|
||||||
"location_picker_choose_on_map": "Vyberte na mapě",
|
"location_picker_choose_on_map": "Vyberte na mapě",
|
||||||
"location_picker_latitude": "Zeměpisná šířka",
|
"location_picker_latitude": "Zeměpisná šířka",
|
||||||
"location_picker_latitude_error": "Zadejte platnou zeměpisnou šířku",
|
"location_picker_latitude_error": "Zadejte platnou zeměpisnou šířku",
|
||||||
@@ -386,8 +388,8 @@
|
|||||||
"multiselect_grid_edit_date_time_err_read_only": "Nelze upravit datum položek pouze pro čtení, přeskakuji",
|
"multiselect_grid_edit_date_time_err_read_only": "Nelze upravit datum položek pouze pro čtení, přeskakuji",
|
||||||
"multiselect_grid_edit_gps_err_read_only": "Nelze upravit polohu položek pouze pro čtení, přeskakuji",
|
"multiselect_grid_edit_gps_err_read_only": "Nelze upravit polohu položek pouze pro čtení, přeskakuji",
|
||||||
"my_albums": "Moje alba",
|
"my_albums": "Moje alba",
|
||||||
"networking_settings": "Networking",
|
"networking_settings": "Síť",
|
||||||
"networking_subtitle": "Manage the server endpoint settings",
|
"networking_subtitle": "Správa nastavení koncového bodu serveru",
|
||||||
"no_assets_to_show": "Žádné položky k zobrazení",
|
"no_assets_to_show": "Žádné položky k zobrazení",
|
||||||
"no_name": "Bez jména",
|
"no_name": "Bez jména",
|
||||||
"notification_permission_dialog_cancel": "Zrušit",
|
"notification_permission_dialog_cancel": "Zrušit",
|
||||||
@@ -421,7 +423,7 @@
|
|||||||
"permission_onboarding_permission_limited": "Přístup omezen. Chcete-li používat Immich k zálohování a správě celé vaší kolekce galerií, povolte v nastavení přístup k fotkám a videím.",
|
"permission_onboarding_permission_limited": "Přístup omezen. Chcete-li používat Immich k zálohování a správě celé vaší kolekce galerií, povolte v nastavení přístup k fotkám a videím.",
|
||||||
"permission_onboarding_request": "Immich potřebuje přístup k zobrazení vašich fotek a videí.",
|
"permission_onboarding_request": "Immich potřebuje přístup k zobrazení vašich fotek a videí.",
|
||||||
"places": "Místa",
|
"places": "Místa",
|
||||||
"preferences_settings_subtitle": "Manage the app's preferences",
|
"preferences_settings_subtitle": "Správa předvoleb aplikace",
|
||||||
"preferences_settings_title": "Předvolby",
|
"preferences_settings_title": "Předvolby",
|
||||||
"profile_drawer_app_logs": "Logy",
|
"profile_drawer_app_logs": "Logy",
|
||||||
"profile_drawer_client_out_of_date_major": "Mobilní aplikace je zastaralá. Aktualizujte ji na nejnovější hlavní verzi.",
|
"profile_drawer_client_out_of_date_major": "Mobilní aplikace je zastaralá. Aktualizujte ji na nejnovější hlavní verzi.",
|
||||||
@@ -436,7 +438,7 @@
|
|||||||
"profile_drawer_trash": "Vyhodit",
|
"profile_drawer_trash": "Vyhodit",
|
||||||
"recently_added": "Nedávno přidané",
|
"recently_added": "Nedávno přidané",
|
||||||
"recently_added_page_title": "Nedávno přidané",
|
"recently_added_page_title": "Nedávno přidané",
|
||||||
"save": "Save",
|
"save": "Uložit",
|
||||||
"save_to_gallery": "Uložit do galerie",
|
"save_to_gallery": "Uložit do galerie",
|
||||||
"scaffold_body_error_occurred": "Došlo k chybě",
|
"scaffold_body_error_occurred": "Došlo k chybě",
|
||||||
"search_albums": "Vyhledávejte alba",
|
"search_albums": "Vyhledávejte alba",
|
||||||
@@ -482,6 +484,7 @@
|
|||||||
"search_page_places": "Místa",
|
"search_page_places": "Místa",
|
||||||
"search_page_recently_added": "Nedávno přidané",
|
"search_page_recently_added": "Nedávno přidané",
|
||||||
"search_page_screenshots": "Snímky obrazovky",
|
"search_page_screenshots": "Snímky obrazovky",
|
||||||
|
"search_page_search_photos_videos": "Vyhledávejte svoje fotky a videa",
|
||||||
"search_page_selfies": "Autoportréty",
|
"search_page_selfies": "Autoportréty",
|
||||||
"search_page_things": "Věci",
|
"search_page_things": "Věci",
|
||||||
"search_page_videos": "Videa",
|
"search_page_videos": "Videa",
|
||||||
@@ -494,7 +497,7 @@
|
|||||||
"select_additional_user_for_sharing_page_suggestions": "Návrhy",
|
"select_additional_user_for_sharing_page_suggestions": "Návrhy",
|
||||||
"select_user_for_sharing_page_err_album": "Nepodařilo se vytvořit album",
|
"select_user_for_sharing_page_err_album": "Nepodařilo se vytvořit album",
|
||||||
"select_user_for_sharing_page_share_suggestions": "Návrhy",
|
"select_user_for_sharing_page_share_suggestions": "Návrhy",
|
||||||
"server_endpoint": "Server Endpoint",
|
"server_endpoint": "Koncový bod serveru",
|
||||||
"server_info_box_app_version": "Verze aplikace",
|
"server_info_box_app_version": "Verze aplikace",
|
||||||
"server_info_box_latest_release": "Nejnovější verze",
|
"server_info_box_latest_release": "Nejnovější verze",
|
||||||
"server_info_box_server_url": "URL serveru",
|
"server_info_box_server_url": "URL serveru",
|
||||||
@@ -506,7 +509,7 @@
|
|||||||
"setting_image_viewer_preview_title": "Načíst náhled obrázku",
|
"setting_image_viewer_preview_title": "Načíst náhled obrázku",
|
||||||
"setting_image_viewer_title": "Obrázky",
|
"setting_image_viewer_title": "Obrázky",
|
||||||
"setting_languages_apply": "Použít",
|
"setting_languages_apply": "Použít",
|
||||||
"setting_languages_subtitle": "Change the app's language",
|
"setting_languages_subtitle": "Změna jazyka aplikace",
|
||||||
"setting_languages_title": "Jazyk",
|
"setting_languages_title": "Jazyk",
|
||||||
"setting_notifications_notify_failures_grace_period": "Oznámení o selhání zálohování na pozadí: {}",
|
"setting_notifications_notify_failures_grace_period": "Oznámení o selhání zálohování na pozadí: {}",
|
||||||
"setting_notifications_notify_hours": "{} hodin",
|
"setting_notifications_notify_hours": "{} hodin",
|
||||||
@@ -639,8 +642,8 @@
|
|||||||
"upload_dialog_info": "Chcete zálohovat vybrané položky na server?",
|
"upload_dialog_info": "Chcete zálohovat vybrané položky na server?",
|
||||||
"upload_dialog_ok": "Nahrát",
|
"upload_dialog_ok": "Nahrát",
|
||||||
"upload_dialog_title": "Nahrát položku",
|
"upload_dialog_title": "Nahrát položku",
|
||||||
"use_current_connection": "use current connection",
|
"use_current_connection": "použít aktuální připojení",
|
||||||
"validate_endpoint_error": "Please enter a valid URL",
|
"validate_endpoint_error": "Zadejte platné URL",
|
||||||
"version_announcement_overlay_ack": "Potvrdit",
|
"version_announcement_overlay_ack": "Potvrdit",
|
||||||
"version_announcement_overlay_release_notes": "poznámky k vydání",
|
"version_announcement_overlay_release_notes": "poznámky k vydání",
|
||||||
"version_announcement_overlay_text_1": "Ahoj, k dispozici je nová verze",
|
"version_announcement_overlay_text_1": "Ahoj, k dispozici je nová verze",
|
||||||
@@ -651,6 +654,6 @@
|
|||||||
"viewer_remove_from_stack": "Odstranit ze zásobníku",
|
"viewer_remove_from_stack": "Odstranit ze zásobníku",
|
||||||
"viewer_stack_use_as_main_asset": "Použít jako hlavní položku",
|
"viewer_stack_use_as_main_asset": "Použít jako hlavní položku",
|
||||||
"viewer_unstack": "Rozbalit zásobník",
|
"viewer_unstack": "Rozbalit zásobník",
|
||||||
"wifi_name": "WiFi Name",
|
"wifi_name": "Název WiFi",
|
||||||
"your_wifi_name": "Your WiFi name"
|
"your_wifi_name": "Váš název WiFi"
|
||||||
}
|
}
|
||||||
@@ -157,6 +157,7 @@
|
|||||||
"cache_settings_tile_title": "Lokal lagerplads",
|
"cache_settings_tile_title": "Lokal lagerplads",
|
||||||
"cache_settings_title": "Cache-indstillinger",
|
"cache_settings_title": "Cache-indstillinger",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
|
"change_display_order": "Change display order",
|
||||||
"change_password_form_confirm_password": "Bekræft kodeord",
|
"change_password_form_confirm_password": "Bekræft kodeord",
|
||||||
"change_password_form_description": "Hej {name},\n\nDette er enten første gang du logger ind eller også er der lavet en anmodning om at ændre dit kodeord. Indtast venligst et nyt kodeord nedenfor.",
|
"change_password_form_description": "Hej {name},\n\nDette er enten første gang du logger ind eller også er der lavet en anmodning om at ændre dit kodeord. Indtast venligst et nyt kodeord nedenfor.",
|
||||||
"change_password_form_new_password": "Nyt kodeord",
|
"change_password_form_new_password": "Nyt kodeord",
|
||||||
@@ -248,6 +249,7 @@
|
|||||||
"edit_image_title": "Rediger",
|
"edit_image_title": "Rediger",
|
||||||
"edit_location_dialog_title": "Placering",
|
"edit_location_dialog_title": "Placering",
|
||||||
"enter_wifi_name": "Enter WiFi name",
|
"enter_wifi_name": "Enter WiFi name",
|
||||||
|
"error_change_sort_album": "Failed to change album sort order",
|
||||||
"error_saving_image": "Fejl: {}",
|
"error_saving_image": "Fejl: {}",
|
||||||
"exif_bottom_sheet_description": "Tilføj beskrivelse...",
|
"exif_bottom_sheet_description": "Tilføj beskrivelse...",
|
||||||
"exif_bottom_sheet_details": "DETALJER",
|
"exif_bottom_sheet_details": "DETALJER",
|
||||||
@@ -482,6 +484,7 @@
|
|||||||
"search_page_places": "Steder",
|
"search_page_places": "Steder",
|
||||||
"search_page_recently_added": "Nyligt tilføjet",
|
"search_page_recently_added": "Nyligt tilføjet",
|
||||||
"search_page_screenshots": "Skærmbilleder",
|
"search_page_screenshots": "Skærmbilleder",
|
||||||
|
"search_page_search_photos_videos": "Search for your photos and videos",
|
||||||
"search_page_selfies": "Selfier",
|
"search_page_selfies": "Selfier",
|
||||||
"search_page_things": "Ting",
|
"search_page_things": "Ting",
|
||||||
"search_page_videos": "Videoer",
|
"search_page_videos": "Videoer",
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
"action_common_save": "Speichern",
|
"action_common_save": "Speichern",
|
||||||
"action_common_select": "Auswählen ",
|
"action_common_select": "Auswählen ",
|
||||||
"action_common_update": "Aktualisieren",
|
"action_common_update": "Aktualisieren",
|
||||||
"add_a_name": "Einen Namen hinzufügen",
|
"add_a_name": "Name hinzufügen",
|
||||||
"add_endpoint": "Add endpoint",
|
"add_endpoint": "Endpunkt hinzufügen",
|
||||||
"add_to_album_bottom_sheet_added": "Zu {album} hinzugefügt",
|
"add_to_album_bottom_sheet_added": "Zu {album} hinzugefügt",
|
||||||
"add_to_album_bottom_sheet_already_exists": "Bereits in {album}",
|
"add_to_album_bottom_sheet_already_exists": "Bereits in {album}",
|
||||||
"advanced_settings_log_level_title": "Log-Level: {}",
|
"advanced_settings_log_level_title": "Log-Level: {}",
|
||||||
@@ -66,12 +66,12 @@
|
|||||||
"assets_restored_successfully": "{} Datei/en erfolgreich wiederhergestellt",
|
"assets_restored_successfully": "{} Datei/en erfolgreich wiederhergestellt",
|
||||||
"assets_trashed": "{} Datei/en gelöscht",
|
"assets_trashed": "{} Datei/en gelöscht",
|
||||||
"assets_trashed_from_server": "{} Datei/en vom Immich-Server gelöscht",
|
"assets_trashed_from_server": "{} Datei/en vom Immich-Server gelöscht",
|
||||||
"asset_viewer_settings_subtitle": "Manage your gallery viewer settings",
|
"asset_viewer_settings_subtitle": "Verwaltung der Einstellungen für den Galerie-Viewer",
|
||||||
"asset_viewer_settings_title": "Fotoanzeige",
|
"asset_viewer_settings_title": "Fotoanzeige",
|
||||||
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
|
"automatic_endpoint_switching_subtitle": "Verbinden Sie sich lokal über ein bestimmtes WLAN, wenn es verfügbar ist, und verwenden Sie andere Verbindungsmöglichkeiten anderswo.",
|
||||||
"automatic_endpoint_switching_title": "Automatic URL switching",
|
"automatic_endpoint_switching_title": "Automatische URL-Umschaltung",
|
||||||
"background_location_permission": "Background location permission",
|
"background_location_permission": "Hintergrund Standortfreigabe",
|
||||||
"background_location_permission_content": "In order to switch networks when running in the background, Immich must *always* have precise location access so the app can read the Wi-Fi network's name",
|
"background_location_permission_content": "Um im Hintergrund zwischen den Netzwerken wechseln zu können, muss Immich *immer* Zugriff auf den genauen Standort haben, damit die App den Namen des WLAN-Netzwerks ermitteln kann",
|
||||||
"backup_album_selection_page_albums_device": "Alben auf dem Gerät ({})",
|
"backup_album_selection_page_albums_device": "Alben auf dem Gerät ({})",
|
||||||
"backup_album_selection_page_albums_tap": "Einmalig das Album antippen um es zu sichern, doppelt antippen um es nicht mehr zu sichern.",
|
"backup_album_selection_page_albums_tap": "Einmalig das Album antippen um es zu sichern, doppelt antippen um es nicht mehr zu sichern.",
|
||||||
"backup_album_selection_page_assets_scatter": "Elemente (Fotos / Videos) können sich über mehrere Alben verteilen. Daher können diese vor der Sicherung eingeschlossen oder ausgeschlossen werden.",
|
"backup_album_selection_page_assets_scatter": "Elemente (Fotos / Videos) können sich über mehrere Alben verteilen. Daher können diese vor der Sicherung eingeschlossen oder ausgeschlossen werden.",
|
||||||
@@ -137,7 +137,7 @@
|
|||||||
"backup_manual_success": "Erfolgreich",
|
"backup_manual_success": "Erfolgreich",
|
||||||
"backup_manual_title": "Sicherungsstatus",
|
"backup_manual_title": "Sicherungsstatus",
|
||||||
"backup_options_page_title": "Sicherungsoptionen",
|
"backup_options_page_title": "Sicherungsoptionen",
|
||||||
"backup_setting_subtitle": "Manage background and foreground upload settings",
|
"backup_setting_subtitle": "Verwaltung der Upload-Einstellungen im Hintergrund und im Vordergrund",
|
||||||
"cache_settings_album_thumbnails": "Vorschaubilder der Bibliothek ({} Elemente)",
|
"cache_settings_album_thumbnails": "Vorschaubilder der Bibliothek ({} Elemente)",
|
||||||
"cache_settings_clear_cache_button": "Zwischenspeicher löschen",
|
"cache_settings_clear_cache_button": "Zwischenspeicher löschen",
|
||||||
"cache_settings_clear_cache_button_title": "Löscht den Zwischenspeicher der App. Dies wird die Leistungsfähigkeit der App deutlich einschränken, bis der Zwischenspeicher wieder aufgebaut wurde.",
|
"cache_settings_clear_cache_button_title": "Löscht den Zwischenspeicher der App. Dies wird die Leistungsfähigkeit der App deutlich einschränken, bis der Zwischenspeicher wieder aufgebaut wurde.",
|
||||||
@@ -156,15 +156,16 @@
|
|||||||
"cache_settings_tile_subtitle": "Lokalen Speicher verwalten",
|
"cache_settings_tile_subtitle": "Lokalen Speicher verwalten",
|
||||||
"cache_settings_tile_title": "Lokaler Speicher",
|
"cache_settings_tile_title": "Lokaler Speicher",
|
||||||
"cache_settings_title": "Zwischenspeicher Einstellungen",
|
"cache_settings_title": "Zwischenspeicher Einstellungen",
|
||||||
"cancel": "Cancel",
|
"cancel": "Abbrechen",
|
||||||
|
"change_display_order": "Change display order",
|
||||||
"change_password_form_confirm_password": "Passwort bestätigen",
|
"change_password_form_confirm_password": "Passwort bestätigen",
|
||||||
"change_password_form_description": "Hallo {name}\n\nDas ist entweder das erste Mal dass du dich einloggst oder es wurde eine Anfrage zur Änderung deines Passwortes gestellt. Bitte gib das neue Passwort ein.",
|
"change_password_form_description": "Hallo {name}\n\nDas ist entweder das erste Mal dass du dich einloggst oder es wurde eine Anfrage zur Änderung deines Passwortes gestellt. Bitte gib das neue Passwort ein.",
|
||||||
"change_password_form_new_password": "Neues Passwort",
|
"change_password_form_new_password": "Neues Passwort",
|
||||||
"change_password_form_password_mismatch": "Passwörter stimmen nicht überein",
|
"change_password_form_password_mismatch": "Passwörter stimmen nicht überein",
|
||||||
"change_password_form_reenter_new_password": "Passwort erneut eingeben",
|
"change_password_form_reenter_new_password": "Passwort erneut eingeben",
|
||||||
"check_corrupt_asset_backup": "Check for corrupt asset backups",
|
"check_corrupt_asset_backup": "Auf beschädigte Asset-Backups überprüfen",
|
||||||
"check_corrupt_asset_backup_button": "Perform check",
|
"check_corrupt_asset_backup_button": "Überprüfung durchführen",
|
||||||
"check_corrupt_asset_backup_description": "Run this check only over Wi-Fi and once all assets have been backed-up. The procedure might take a few minutes.",
|
"check_corrupt_asset_backup_description": "Führe diese Prüfung nur mit aktivierten WLAN durch, nachdem alle Dateien gesichert worden sind. Dieser Vorgang kann ein paar Minuten dauern.",
|
||||||
"client_cert_dialog_msg_confirm": "OK",
|
"client_cert_dialog_msg_confirm": "OK",
|
||||||
"client_cert_enter_password": "Passwort eingeben",
|
"client_cert_enter_password": "Passwort eingeben",
|
||||||
"client_cert_import": "Importieren",
|
"client_cert_import": "Importieren",
|
||||||
@@ -210,7 +211,7 @@
|
|||||||
"crop": "Zuschneiden",
|
"crop": "Zuschneiden",
|
||||||
"curated_location_page_title": "Orte",
|
"curated_location_page_title": "Orte",
|
||||||
"curated_object_page_title": "Dinge",
|
"curated_object_page_title": "Dinge",
|
||||||
"current_server_address": "Current server address",
|
"current_server_address": "Aktuelle Server-Adresse",
|
||||||
"daily_title_text_date": "E, dd MMM",
|
"daily_title_text_date": "E, dd MMM",
|
||||||
"daily_title_text_date_year": "E, dd MMM, yyyy",
|
"daily_title_text_date_year": "E, dd MMM, yyyy",
|
||||||
"date_format": "E d. LLL y • hh:mm",
|
"date_format": "E d. LLL y • hh:mm",
|
||||||
@@ -247,7 +248,8 @@
|
|||||||
"edit_date_time_dialog_timezone": "Zeitzone",
|
"edit_date_time_dialog_timezone": "Zeitzone",
|
||||||
"edit_image_title": "Bearbeiten",
|
"edit_image_title": "Bearbeiten",
|
||||||
"edit_location_dialog_title": "Ort bearbeiten",
|
"edit_location_dialog_title": "Ort bearbeiten",
|
||||||
"enter_wifi_name": "Enter WiFi name",
|
"enter_wifi_name": "WLAN-Name eingeben",
|
||||||
|
"error_change_sort_album": "Failed to change album sort order",
|
||||||
"error_saving_image": "Fehler: {}",
|
"error_saving_image": "Fehler: {}",
|
||||||
"exif_bottom_sheet_description": "Beschreibung hinzufügen...",
|
"exif_bottom_sheet_description": "Beschreibung hinzufügen...",
|
||||||
"exif_bottom_sheet_details": "DETAILS",
|
"exif_bottom_sheet_details": "DETAILS",
|
||||||
@@ -259,15 +261,15 @@
|
|||||||
"experimental_settings_new_asset_list_title": "Experimentelles Fotogitter aktivieren",
|
"experimental_settings_new_asset_list_title": "Experimentelles Fotogitter aktivieren",
|
||||||
"experimental_settings_subtitle": "Benutzung auf eigene Gefahr!",
|
"experimental_settings_subtitle": "Benutzung auf eigene Gefahr!",
|
||||||
"experimental_settings_title": "Experimentell",
|
"experimental_settings_title": "Experimentell",
|
||||||
"external_network": "External network",
|
"external_network": "Externes Netzwerk",
|
||||||
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
|
"external_network_sheet_info": "Wenn sich die App nicht im bevorzugten WLAN-Netzwerk befindet, verbindet sie sich mit dem Server über die erste der folgenden URLs, die sie erreichen kann (von oben nach unten)",
|
||||||
"favorites": "Favoriten",
|
"favorites": "Favoriten",
|
||||||
"favorites_page_no_favorites": "Keine favorisierten Inhalte gefunden",
|
"favorites_page_no_favorites": "Keine favorisierten Inhalte gefunden",
|
||||||
"favorites_page_title": "Favoriten",
|
"favorites_page_title": "Favoriten",
|
||||||
"filename_search": "Dateiname oder Dateityp",
|
"filename_search": "Dateiname oder Dateityp",
|
||||||
"filter": "Filter",
|
"filter": "Filter",
|
||||||
"get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network",
|
"get_wifiname_error": "WLAN-Name konnte nicht ermittelt werden. Vergewissere dich, dass die erforderlichen Berechtigungen erteilt wurden und du mit einem WLAN-Netzwerk verbunden bist.\n",
|
||||||
"grant_permission": "Grant permission",
|
"grant_permission": "Erlaubnis gewähren",
|
||||||
"haptic_feedback_switch": "Haptisches Feedback aktivieren",
|
"haptic_feedback_switch": "Haptisches Feedback aktivieren",
|
||||||
"haptic_feedback_title": "Haptisches Feedback",
|
"haptic_feedback_title": "Haptisches Feedback",
|
||||||
"header_settings_add_header_tip": "Header hinzufügen",
|
"header_settings_add_header_tip": "Header hinzufügen",
|
||||||
@@ -313,10 +315,10 @@
|
|||||||
"library_page_sort_most_oldest_photo": "Ältestes Foto",
|
"library_page_sort_most_oldest_photo": "Ältestes Foto",
|
||||||
"library_page_sort_most_recent_photo": "Neuestes Foto",
|
"library_page_sort_most_recent_photo": "Neuestes Foto",
|
||||||
"library_page_sort_title": "Titel des Albums",
|
"library_page_sort_title": "Titel des Albums",
|
||||||
"local_network": "Local network",
|
"local_network": "Lokales Netzwerk",
|
||||||
"local_network_sheet_info": "The app will connect to the server through this URL when using the specified Wi-Fi network",
|
"local_network_sheet_info": "Die App stellt über diese URL eine Verbindung zum Server her, wenn sie das angegebene WLAN-Netzwerk verwendet",
|
||||||
"location_permission": "Location permission",
|
"location_permission": "Standort Genehmigung",
|
||||||
"location_permission_content": "In order to use the auto-switching feature, Immich needs precise location permission so it can read the current WiFi network's name",
|
"location_permission_content": "Um die automatische Umschaltfunktion nutzen zu können, benötigt Immich eine genaue Standortberechtigung, damit es den Namen des aktuellen WLAN-Netzwerks ermitteln kann",
|
||||||
"location_picker_choose_on_map": "Auf der Karte auswählen",
|
"location_picker_choose_on_map": "Auf der Karte auswählen",
|
||||||
"location_picker_latitude": "Breitengrad",
|
"location_picker_latitude": "Breitengrad",
|
||||||
"location_picker_latitude_error": "Gültigen Breitengrad eingeben",
|
"location_picker_latitude_error": "Gültigen Breitengrad eingeben",
|
||||||
@@ -386,8 +388,8 @@
|
|||||||
"multiselect_grid_edit_date_time_err_read_only": "Das Datum und die Uhrzeit von schreibgeschützten Inhalten kann nicht verändert werden, überspringen...",
|
"multiselect_grid_edit_date_time_err_read_only": "Das Datum und die Uhrzeit von schreibgeschützten Inhalten kann nicht verändert werden, überspringen...",
|
||||||
"multiselect_grid_edit_gps_err_read_only": "Der Aufnahmeort von schreibgeschützten Inhalten kann nicht verändert werden, überspringen...",
|
"multiselect_grid_edit_gps_err_read_only": "Der Aufnahmeort von schreibgeschützten Inhalten kann nicht verändert werden, überspringen...",
|
||||||
"my_albums": "Meine Alben",
|
"my_albums": "Meine Alben",
|
||||||
"networking_settings": "Networking",
|
"networking_settings": "Netzwerk",
|
||||||
"networking_subtitle": "Manage the server endpoint settings",
|
"networking_subtitle": "Verwaltung von Server-Endpunkt-Einstellungen",
|
||||||
"no_assets_to_show": "Keine Vorschau vorhanden",
|
"no_assets_to_show": "Keine Vorschau vorhanden",
|
||||||
"no_name": "Kein Name",
|
"no_name": "Kein Name",
|
||||||
"notification_permission_dialog_cancel": "Abbrechen",
|
"notification_permission_dialog_cancel": "Abbrechen",
|
||||||
@@ -421,7 +423,7 @@
|
|||||||
"permission_onboarding_permission_limited": "Berechtigungen unzureichend. Um Immich das Sichern von ganzen Sammlungen zu ermöglichen, muss der Zugriff auf alle Fotos und Videos in den Einstellungen erlaubt werden.",
|
"permission_onboarding_permission_limited": "Berechtigungen unzureichend. Um Immich das Sichern von ganzen Sammlungen zu ermöglichen, muss der Zugriff auf alle Fotos und Videos in den Einstellungen erlaubt werden.",
|
||||||
"permission_onboarding_request": "Immich benötigt Berechtigung um auf deine Fotos und Videos zuzugreifen.",
|
"permission_onboarding_request": "Immich benötigt Berechtigung um auf deine Fotos und Videos zuzugreifen.",
|
||||||
"places": "Orte",
|
"places": "Orte",
|
||||||
"preferences_settings_subtitle": "Manage the app's preferences",
|
"preferences_settings_subtitle": "App-Einstellungen verwalten",
|
||||||
"preferences_settings_title": "Voreinstellungen",
|
"preferences_settings_title": "Voreinstellungen",
|
||||||
"profile_drawer_app_logs": "Logs",
|
"profile_drawer_app_logs": "Logs",
|
||||||
"profile_drawer_client_out_of_date_major": "Mobile-App ist veraltet. Bitte aktualisiere auf die neueste Major-Version.",
|
"profile_drawer_client_out_of_date_major": "Mobile-App ist veraltet. Bitte aktualisiere auf die neueste Major-Version.",
|
||||||
@@ -436,7 +438,7 @@
|
|||||||
"profile_drawer_trash": "Papierkorb",
|
"profile_drawer_trash": "Papierkorb",
|
||||||
"recently_added": "Kürzlich hinzugefügt",
|
"recently_added": "Kürzlich hinzugefügt",
|
||||||
"recently_added_page_title": "Zuletzt hinzugefügt",
|
"recently_added_page_title": "Zuletzt hinzugefügt",
|
||||||
"save": "Save",
|
"save": "Speichern",
|
||||||
"save_to_gallery": "In Galerie speichern",
|
"save_to_gallery": "In Galerie speichern",
|
||||||
"scaffold_body_error_occurred": "Ein Fehler ist aufgetreten",
|
"scaffold_body_error_occurred": "Ein Fehler ist aufgetreten",
|
||||||
"search_albums": "nach Album suchen",
|
"search_albums": "nach Album suchen",
|
||||||
@@ -482,6 +484,7 @@
|
|||||||
"search_page_places": "Orte",
|
"search_page_places": "Orte",
|
||||||
"search_page_recently_added": "Zuletzt hinzugefügt",
|
"search_page_recently_added": "Zuletzt hinzugefügt",
|
||||||
"search_page_screenshots": "Bildschirmfotos",
|
"search_page_screenshots": "Bildschirmfotos",
|
||||||
|
"search_page_search_photos_videos": "Nach deinen Fotos und Videos suchen",
|
||||||
"search_page_selfies": "Selfies",
|
"search_page_selfies": "Selfies",
|
||||||
"search_page_things": "Gegenstände und Tiere",
|
"search_page_things": "Gegenstände und Tiere",
|
||||||
"search_page_videos": "Videos",
|
"search_page_videos": "Videos",
|
||||||
@@ -494,7 +497,7 @@
|
|||||||
"select_additional_user_for_sharing_page_suggestions": "Vorschläge",
|
"select_additional_user_for_sharing_page_suggestions": "Vorschläge",
|
||||||
"select_user_for_sharing_page_err_album": "Album konnte nicht erstellt werden",
|
"select_user_for_sharing_page_err_album": "Album konnte nicht erstellt werden",
|
||||||
"select_user_for_sharing_page_share_suggestions": "Empfehlungen",
|
"select_user_for_sharing_page_share_suggestions": "Empfehlungen",
|
||||||
"server_endpoint": "Server Endpoint",
|
"server_endpoint": "Server-Endpunkt",
|
||||||
"server_info_box_app_version": "App-Version",
|
"server_info_box_app_version": "App-Version",
|
||||||
"server_info_box_latest_release": "Neueste Version",
|
"server_info_box_latest_release": "Neueste Version",
|
||||||
"server_info_box_server_url": "Server-URL",
|
"server_info_box_server_url": "Server-URL",
|
||||||
@@ -506,7 +509,7 @@
|
|||||||
"setting_image_viewer_preview_title": "Vorschaubild laden",
|
"setting_image_viewer_preview_title": "Vorschaubild laden",
|
||||||
"setting_image_viewer_title": "Bilder",
|
"setting_image_viewer_title": "Bilder",
|
||||||
"setting_languages_apply": "Anwenden",
|
"setting_languages_apply": "Anwenden",
|
||||||
"setting_languages_subtitle": "Change the app's language",
|
"setting_languages_subtitle": "App-Sprache ändern",
|
||||||
"setting_languages_title": "Sprachen",
|
"setting_languages_title": "Sprachen",
|
||||||
"setting_notifications_notify_failures_grace_period": "Benachrichtigung bei Fehler/n in der Hintergrundsicherung: {}",
|
"setting_notifications_notify_failures_grace_period": "Benachrichtigung bei Fehler/n in der Hintergrundsicherung: {}",
|
||||||
"setting_notifications_notify_hours": "{} Stunden",
|
"setting_notifications_notify_hours": "{} Stunden",
|
||||||
@@ -639,8 +642,8 @@
|
|||||||
"upload_dialog_info": "Willst du die ausgewählten Elemente auf dem Server sichern?",
|
"upload_dialog_info": "Willst du die ausgewählten Elemente auf dem Server sichern?",
|
||||||
"upload_dialog_ok": "Hochladen",
|
"upload_dialog_ok": "Hochladen",
|
||||||
"upload_dialog_title": "Element hochladen",
|
"upload_dialog_title": "Element hochladen",
|
||||||
"use_current_connection": "use current connection",
|
"use_current_connection": "aktuelle Verbindung verwenden",
|
||||||
"validate_endpoint_error": "Please enter a valid URL",
|
"validate_endpoint_error": "Bitte gib eine gültige URL ein",
|
||||||
"version_announcement_overlay_ack": "Ich habe verstanden",
|
"version_announcement_overlay_ack": "Ich habe verstanden",
|
||||||
"version_announcement_overlay_release_notes": "Änderungsprotokoll",
|
"version_announcement_overlay_release_notes": "Änderungsprotokoll",
|
||||||
"version_announcement_overlay_text_1": "Hallo mein Freund! Es gibt eine neue Version von",
|
"version_announcement_overlay_text_1": "Hallo mein Freund! Es gibt eine neue Version von",
|
||||||
@@ -651,6 +654,6 @@
|
|||||||
"viewer_remove_from_stack": "Aus Stapel entfernen",
|
"viewer_remove_from_stack": "Aus Stapel entfernen",
|
||||||
"viewer_stack_use_as_main_asset": "An Stapelanfang",
|
"viewer_stack_use_as_main_asset": "An Stapelanfang",
|
||||||
"viewer_unstack": "Stapel aufheben",
|
"viewer_unstack": "Stapel aufheben",
|
||||||
"wifi_name": "WiFi Name",
|
"wifi_name": "WLAN-Name",
|
||||||
"your_wifi_name": "Your WiFi name"
|
"your_wifi_name": "Dein WLAN-Name"
|
||||||
}
|
}
|
||||||
@@ -157,6 +157,7 @@
|
|||||||
"cache_settings_tile_title": "Τοπική Αποθήκευση",
|
"cache_settings_tile_title": "Τοπική Αποθήκευση",
|
||||||
"cache_settings_title": "Ρυθμίσεις Προσωρινής Μνήμης",
|
"cache_settings_title": "Ρυθμίσεις Προσωρινής Μνήμης",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
|
"change_display_order": "Change display order",
|
||||||
"change_password_form_confirm_password": "Επιβεβαίωση Κωδικού",
|
"change_password_form_confirm_password": "Επιβεβαίωση Κωδικού",
|
||||||
"change_password_form_description": "Γεια σας {name},\n\nΕίτε είναι η πρώτη φορά που συνδέεστε στο σύστημα είτε έχει γίνει αίτηση για αλλαγή του κωδικού σας. Παρακαλώ εισάγετε τον νέο κωδικό.",
|
"change_password_form_description": "Γεια σας {name},\n\nΕίτε είναι η πρώτη φορά που συνδέεστε στο σύστημα είτε έχει γίνει αίτηση για αλλαγή του κωδικού σας. Παρακαλώ εισάγετε τον νέο κωδικό.",
|
||||||
"change_password_form_new_password": "Νέος Κωδικός",
|
"change_password_form_new_password": "Νέος Κωδικός",
|
||||||
@@ -248,6 +249,7 @@
|
|||||||
"edit_image_title": "Επεξεργασία",
|
"edit_image_title": "Επεξεργασία",
|
||||||
"edit_location_dialog_title": "Τοποθεσία",
|
"edit_location_dialog_title": "Τοποθεσία",
|
||||||
"enter_wifi_name": "Enter WiFi name",
|
"enter_wifi_name": "Enter WiFi name",
|
||||||
|
"error_change_sort_album": "Failed to change album sort order",
|
||||||
"error_saving_image": "Σφάλμα: {}",
|
"error_saving_image": "Σφάλμα: {}",
|
||||||
"exif_bottom_sheet_description": "Προσθήκη Περιγραφής...",
|
"exif_bottom_sheet_description": "Προσθήκη Περιγραφής...",
|
||||||
"exif_bottom_sheet_details": "ΛΕΠΤΟΜΕΡΕΙΕΣ",
|
"exif_bottom_sheet_details": "ΛΕΠΤΟΜΕΡΕΙΕΣ",
|
||||||
@@ -482,6 +484,7 @@
|
|||||||
"search_page_places": "Μέρη",
|
"search_page_places": "Μέρη",
|
||||||
"search_page_recently_added": "Προστέθηκε πρόσφατα",
|
"search_page_recently_added": "Προστέθηκε πρόσφατα",
|
||||||
"search_page_screenshots": "Στιγμιότυπα οθόνης",
|
"search_page_screenshots": "Στιγμιότυπα οθόνης",
|
||||||
|
"search_page_search_photos_videos": "Search for your photos and videos",
|
||||||
"search_page_selfies": "Σέλφι",
|
"search_page_selfies": "Σέλφι",
|
||||||
"search_page_things": "Πράγματα",
|
"search_page_things": "Πράγματα",
|
||||||
"search_page_videos": "Βίντεο",
|
"search_page_videos": "Βίντεο",
|
||||||
|
|||||||
@@ -157,6 +157,7 @@
|
|||||||
"cache_settings_tile_title": "Local Storage",
|
"cache_settings_tile_title": "Local Storage",
|
||||||
"cache_settings_title": "Caching Settings",
|
"cache_settings_title": "Caching Settings",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
|
"change_display_order": "Change display order",
|
||||||
"change_password_form_confirm_password": "Confirm Password",
|
"change_password_form_confirm_password": "Confirm Password",
|
||||||
"change_password_form_description": "Hi {name},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.",
|
"change_password_form_description": "Hi {name},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.",
|
||||||
"change_password_form_new_password": "New Password",
|
"change_password_form_new_password": "New Password",
|
||||||
@@ -248,6 +249,7 @@
|
|||||||
"edit_image_title": "Edit",
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Location",
|
"edit_location_dialog_title": "Location",
|
||||||
"enter_wifi_name": "Enter WiFi name",
|
"enter_wifi_name": "Enter WiFi name",
|
||||||
|
"error_change_sort_album": "Failed to change album sort order",
|
||||||
"error_saving_image": "Error: {}",
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Add Description...",
|
"exif_bottom_sheet_description": "Add Description...",
|
||||||
"exif_bottom_sheet_details": "DETAILS",
|
"exif_bottom_sheet_details": "DETAILS",
|
||||||
@@ -654,4 +656,4 @@
|
|||||||
"viewer_unstack": "Un-Stack",
|
"viewer_unstack": "Un-Stack",
|
||||||
"wifi_name": "WiFi Name",
|
"wifi_name": "WiFi Name",
|
||||||
"your_wifi_name": "Your WiFi name"
|
"your_wifi_name": "Your WiFi name"
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
"advanced_settings_log_level_title": "Nivel de registro: {}",
|
"advanced_settings_log_level_title": "Nivel de registro: {}",
|
||||||
"advanced_settings_prefer_remote_subtitle": "Algunos dispositivos tardan mucho en cargar las miniaturas de los elementos encontrados en el dispositivo. Activa esta opción para cargar imágenes remotas en su lugar.",
|
"advanced_settings_prefer_remote_subtitle": "Algunos dispositivos tardan mucho en cargar las miniaturas de los elementos encontrados en el dispositivo. Activa esta opción para cargar imágenes remotas en su lugar.",
|
||||||
"advanced_settings_prefer_remote_title": "Preferir imágenes remotas",
|
"advanced_settings_prefer_remote_title": "Preferir imágenes remotas",
|
||||||
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
|
"advanced_settings_proxy_headers_subtitle": "Configura headers HTTP que Immich incluirá en cada petición de red",
|
||||||
"advanced_settings_proxy_headers_title": "Proxy Headers",
|
"advanced_settings_proxy_headers_title": "Proxy Headers",
|
||||||
"advanced_settings_self_signed_ssl_subtitle": "Omitir verificación del certificado SSL del servidor. Requerido para certificados autofirmados",
|
"advanced_settings_self_signed_ssl_subtitle": "Omitir verificación del certificado SSL del servidor. Requerido para certificados autofirmados",
|
||||||
"advanced_settings_self_signed_ssl_title": "Permitir certificados autofirmados",
|
"advanced_settings_self_signed_ssl_title": "Permitir certificados autofirmados",
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
"assets_restored_successfully": "{} elemento(s) restaurado(s) exitosamente",
|
"assets_restored_successfully": "{} elemento(s) restaurado(s) exitosamente",
|
||||||
"assets_trashed": "{} elemento(s) eliminado(s)",
|
"assets_trashed": "{} elemento(s) eliminado(s)",
|
||||||
"assets_trashed_from_server": "{} elemento(s) movido a la papelera en Immich",
|
"assets_trashed_from_server": "{} elemento(s) movido a la papelera en Immich",
|
||||||
"asset_viewer_settings_subtitle": "Manage your gallery viewer settings",
|
"asset_viewer_settings_subtitle": "Administra las configuracioens de tu visor de fotos",
|
||||||
"asset_viewer_settings_title": "Visor de Archivos",
|
"asset_viewer_settings_title": "Visor de Archivos",
|
||||||
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
|
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
|
||||||
"automatic_endpoint_switching_title": "Automatic URL switching",
|
"automatic_endpoint_switching_title": "Automatic URL switching",
|
||||||
@@ -137,7 +137,7 @@
|
|||||||
"backup_manual_success": "Éxito",
|
"backup_manual_success": "Éxito",
|
||||||
"backup_manual_title": "Estado de la subida",
|
"backup_manual_title": "Estado de la subida",
|
||||||
"backup_options_page_title": "Opciones de Copia de Seguridad",
|
"backup_options_page_title": "Opciones de Copia de Seguridad",
|
||||||
"backup_setting_subtitle": "Manage background and foreground upload settings",
|
"backup_setting_subtitle": "Administra las configuraciones de respaldo en segundo y primer plano",
|
||||||
"cache_settings_album_thumbnails": "Miniaturas de la página de la biblioteca ({} elementos)",
|
"cache_settings_album_thumbnails": "Miniaturas de la página de la biblioteca ({} elementos)",
|
||||||
"cache_settings_clear_cache_button": "Borrar caché",
|
"cache_settings_clear_cache_button": "Borrar caché",
|
||||||
"cache_settings_clear_cache_button_title": "Borra la caché de la aplicación. Esto afectará significativamente el rendimiento de la aplicación hasta que se reconstruya la caché.",
|
"cache_settings_clear_cache_button_title": "Borra la caché de la aplicación. Esto afectará significativamente el rendimiento de la aplicación hasta que se reconstruya la caché.",
|
||||||
@@ -157,6 +157,7 @@
|
|||||||
"cache_settings_tile_title": "Almacenamiento local",
|
"cache_settings_tile_title": "Almacenamiento local",
|
||||||
"cache_settings_title": "Configuración de la caché",
|
"cache_settings_title": "Configuración de la caché",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
|
"change_display_order": "Change display order",
|
||||||
"change_password_form_confirm_password": "Confirmar Contraseña",
|
"change_password_form_confirm_password": "Confirmar Contraseña",
|
||||||
"change_password_form_description": "Hola {name},\n\nEsta es la primera vez que inicias sesión en el sistema o se ha solicitado cambiar tu contraseña. Por favor, introduce la nueva contraseña a continuación.",
|
"change_password_form_description": "Hola {name},\n\nEsta es la primera vez que inicias sesión en el sistema o se ha solicitado cambiar tu contraseña. Por favor, introduce la nueva contraseña a continuación.",
|
||||||
"change_password_form_new_password": "Nueva Contraseña",
|
"change_password_form_new_password": "Nueva Contraseña",
|
||||||
@@ -224,7 +225,7 @@
|
|||||||
"delete_dialog_title": "Eliminar Permanentemente",
|
"delete_dialog_title": "Eliminar Permanentemente",
|
||||||
"delete_local_dialog_ok_backed_up_only": "Borrar solo las que tengan copia de seguridad",
|
"delete_local_dialog_ok_backed_up_only": "Borrar solo las que tengan copia de seguridad",
|
||||||
"delete_local_dialog_ok_force": "Borrar de todos modos",
|
"delete_local_dialog_ok_force": "Borrar de todos modos",
|
||||||
"delete_shared_link_dialog_content": "Estás seguro que quieres eliminar este enlace compartido",
|
"delete_shared_link_dialog_content": "¿Estás seguro que quieres eliminar este enlace compartido?",
|
||||||
"delete_shared_link_dialog_title": "Eliminar enlace compartido",
|
"delete_shared_link_dialog_title": "Eliminar enlace compartido",
|
||||||
"description_input_hint_text": "Agregar descripción...",
|
"description_input_hint_text": "Agregar descripción...",
|
||||||
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
|
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
|
||||||
@@ -248,6 +249,7 @@
|
|||||||
"edit_image_title": "Editar",
|
"edit_image_title": "Editar",
|
||||||
"edit_location_dialog_title": "Ubicación",
|
"edit_location_dialog_title": "Ubicación",
|
||||||
"enter_wifi_name": "Enter WiFi name",
|
"enter_wifi_name": "Enter WiFi name",
|
||||||
|
"error_change_sort_album": "Failed to change album sort order",
|
||||||
"error_saving_image": "Error: {}",
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Agregar Descripción...",
|
"exif_bottom_sheet_description": "Agregar Descripción...",
|
||||||
"exif_bottom_sheet_details": "DETALLES",
|
"exif_bottom_sheet_details": "DETALLES",
|
||||||
@@ -275,7 +277,7 @@
|
|||||||
"header_settings_header_name_input": "Nombre de la cabecera",
|
"header_settings_header_name_input": "Nombre de la cabecera",
|
||||||
"header_settings_header_value_input": "Valor de la cabecera",
|
"header_settings_header_value_input": "Valor de la cabecera",
|
||||||
"header_settings_page_title": "Proxy Headers",
|
"header_settings_page_title": "Proxy Headers",
|
||||||
"headers_settings_tile_subtitle": "Define proxy headers the app should send with each network request",
|
"headers_settings_tile_subtitle": "Configura headers HTTP que la aplicación incluirá en cada petición de red",
|
||||||
"headers_settings_tile_title": "Cabeceras de proxy personalizadas",
|
"headers_settings_tile_title": "Cabeceras de proxy personalizadas",
|
||||||
"home_page_add_to_album_conflicts": "{added} elementos agregados al álbum {album}.{failed} elementos ya existen en el álbum.",
|
"home_page_add_to_album_conflicts": "{added} elementos agregados al álbum {album}.{failed} elementos ya existen en el álbum.",
|
||||||
"home_page_add_to_album_err_local": "Aún no se pueden agregar elementos locales a álbumes, omitiendo",
|
"home_page_add_to_album_err_local": "Aún no se pueden agregar elementos locales a álbumes, omitiendo",
|
||||||
@@ -355,10 +357,10 @@
|
|||||||
"map_location_dialog_cancel": "Cancelar",
|
"map_location_dialog_cancel": "Cancelar",
|
||||||
"map_location_dialog_yes": "Sí",
|
"map_location_dialog_yes": "Sí",
|
||||||
"map_location_picker_page_use_location": "Usar esta ubicación",
|
"map_location_picker_page_use_location": "Usar esta ubicación",
|
||||||
"map_location_service_disabled_content": "Los servicios de ubicación deben estar activados para mostrar elementos de tu ubicación actual. Deseas activarlos ahora?",
|
"map_location_service_disabled_content": "Los servicios de ubicación deben estar activados para mostrar elementos de tu ubicación actual. ¿Deseas activarlos ahora?",
|
||||||
"map_location_service_disabled_title": "Servicios de ubicación desactivados",
|
"map_location_service_disabled_title": "Servicios de ubicación desactivados",
|
||||||
"map_no_assets_in_bounds": "No hay fotos en esta zona",
|
"map_no_assets_in_bounds": "No hay fotos en esta zona",
|
||||||
"map_no_location_permission_content": "Se necesitan permisos de ubicación para mostrar elementos de tu ubicación actual. Deseas activarlos ahora?",
|
"map_no_location_permission_content": "Se necesitan permisos de ubicación para mostrar elementos de tu ubicación actual. ¿Deseas activarlos ahora?",
|
||||||
"map_no_location_permission_title": "Permisos de ubicación denegados",
|
"map_no_location_permission_title": "Permisos de ubicación denegados",
|
||||||
"map_settings_dark_mode": "Modo oscuro",
|
"map_settings_dark_mode": "Modo oscuro",
|
||||||
"map_settings_date_range_option_all": "Todo",
|
"map_settings_date_range_option_all": "Todo",
|
||||||
@@ -386,8 +388,8 @@
|
|||||||
"multiselect_grid_edit_date_time_err_read_only": "No se puede cambiar la fecha del archivo(s) de solo lectura, omitiendo",
|
"multiselect_grid_edit_date_time_err_read_only": "No se puede cambiar la fecha del archivo(s) de solo lectura, omitiendo",
|
||||||
"multiselect_grid_edit_gps_err_read_only": "No se puede cambiar la localización de archivos de solo lectura. Saltando.",
|
"multiselect_grid_edit_gps_err_read_only": "No se puede cambiar la localización de archivos de solo lectura. Saltando.",
|
||||||
"my_albums": "Mis álbumes",
|
"my_albums": "Mis álbumes",
|
||||||
"networking_settings": "Networking",
|
"networking_settings": "Red",
|
||||||
"networking_subtitle": "Manage the server endpoint settings",
|
"networking_subtitle": "Configuraciones de acceso por URL al servidor",
|
||||||
"no_assets_to_show": "No hay elementos a mostrar",
|
"no_assets_to_show": "No hay elementos a mostrar",
|
||||||
"no_name": "Sin nombre",
|
"no_name": "Sin nombre",
|
||||||
"notification_permission_dialog_cancel": "Cancelar",
|
"notification_permission_dialog_cancel": "Cancelar",
|
||||||
@@ -421,7 +423,7 @@
|
|||||||
"permission_onboarding_permission_limited": "Permiso limitado. Para permitir que Immich haga copia de seguridad y gestione toda tu colección de galería, concede permisos de fotos y videos en Configuración.",
|
"permission_onboarding_permission_limited": "Permiso limitado. Para permitir que Immich haga copia de seguridad y gestione toda tu colección de galería, concede permisos de fotos y videos en Configuración.",
|
||||||
"permission_onboarding_request": "Immich requiere permiso para ver tus fotos y videos.",
|
"permission_onboarding_request": "Immich requiere permiso para ver tus fotos y videos.",
|
||||||
"places": "Lugares",
|
"places": "Lugares",
|
||||||
"preferences_settings_subtitle": "Manage the app's preferences",
|
"preferences_settings_subtitle": "Configuraciones de la aplicación",
|
||||||
"preferences_settings_title": "Preferencias",
|
"preferences_settings_title": "Preferencias",
|
||||||
"profile_drawer_app_logs": "Registros",
|
"profile_drawer_app_logs": "Registros",
|
||||||
"profile_drawer_client_out_of_date_major": "La app está desactualizada. Por favor actualiza a la última versión principal.",
|
"profile_drawer_client_out_of_date_major": "La app está desactualizada. Por favor actualiza a la última versión principal.",
|
||||||
@@ -459,10 +461,10 @@
|
|||||||
"search_filter_location_country": "País",
|
"search_filter_location_country": "País",
|
||||||
"search_filter_location_state": "Estado",
|
"search_filter_location_state": "Estado",
|
||||||
"search_filter_location_title": "Seleccionar una ubicación",
|
"search_filter_location_title": "Seleccionar una ubicación",
|
||||||
"search_filter_media_type": "Media Type",
|
"search_filter_media_type": "Tipo de archivo",
|
||||||
"search_filter_media_type_all": "Todos",
|
"search_filter_media_type_all": "Todos",
|
||||||
"search_filter_media_type_image": "Imagen",
|
"search_filter_media_type_image": "Imagen",
|
||||||
"search_filter_media_type_title": "Select media type",
|
"search_filter_media_type_title": "Selecciona el tipo de archivo",
|
||||||
"search_filter_media_type_video": "Vídeo",
|
"search_filter_media_type_video": "Vídeo",
|
||||||
"search_filter_people": "Personas",
|
"search_filter_people": "Personas",
|
||||||
"search_filter_people_title": "Seleccionar personas",
|
"search_filter_people_title": "Seleccionar personas",
|
||||||
@@ -482,6 +484,7 @@
|
|||||||
"search_page_places": "Lugares",
|
"search_page_places": "Lugares",
|
||||||
"search_page_recently_added": "Recién agregadas",
|
"search_page_recently_added": "Recién agregadas",
|
||||||
"search_page_screenshots": "Capturas de pantalla",
|
"search_page_screenshots": "Capturas de pantalla",
|
||||||
|
"search_page_search_photos_videos": "Busca tus fotos y videos",
|
||||||
"search_page_selfies": "Selfies",
|
"search_page_selfies": "Selfies",
|
||||||
"search_page_things": "Cosas",
|
"search_page_things": "Cosas",
|
||||||
"search_page_videos": "Videos",
|
"search_page_videos": "Videos",
|
||||||
@@ -506,7 +509,7 @@
|
|||||||
"setting_image_viewer_preview_title": "Cargar imagen de previsualización",
|
"setting_image_viewer_preview_title": "Cargar imagen de previsualización",
|
||||||
"setting_image_viewer_title": "Imágenes",
|
"setting_image_viewer_title": "Imágenes",
|
||||||
"setting_languages_apply": "Aplicar",
|
"setting_languages_apply": "Aplicar",
|
||||||
"setting_languages_subtitle": "Change the app's language",
|
"setting_languages_subtitle": "Cambia el idioma de la aplicación",
|
||||||
"setting_languages_title": "Idiomas",
|
"setting_languages_title": "Idiomas",
|
||||||
"setting_notifications_notify_failures_grace_period": "Notificar fallos de copia de seguridad en segundo plano: {}",
|
"setting_notifications_notify_failures_grace_period": "Notificar fallos de copia de seguridad en segundo plano: {}",
|
||||||
"setting_notifications_notify_hours": "{} horas",
|
"setting_notifications_notify_hours": "{} horas",
|
||||||
@@ -532,13 +535,13 @@
|
|||||||
"share_create_album": "Crear álbum",
|
"share_create_album": "Crear álbum",
|
||||||
"shared_album_activities_input_disable": "Los comentarios están deshabilitados",
|
"shared_album_activities_input_disable": "Los comentarios están deshabilitados",
|
||||||
"shared_album_activities_input_hint": "Comenta algo",
|
"shared_album_activities_input_hint": "Comenta algo",
|
||||||
"shared_album_activity_remove_content": "Deseas eliminar esta actividad?",
|
"shared_album_activity_remove_content": "¿Deseas eliminar esta actividad?",
|
||||||
"shared_album_activity_remove_title": "Eliminar Actividad",
|
"shared_album_activity_remove_title": "Eliminar Actividad",
|
||||||
"shared_album_activity_setting_subtitle": "Permitir que otros respondan",
|
"shared_album_activity_setting_subtitle": "Permitir que otros respondan",
|
||||||
"shared_album_activity_setting_title": "Comentarios y me gusta",
|
"shared_album_activity_setting_title": "Comentarios y me gusta",
|
||||||
"shared_album_section_people_action_error": "Error retirando/eliminando del album",
|
"shared_album_section_people_action_error": "Error retirando/eliminando del album",
|
||||||
"shared_album_section_people_action_leave": "Eliminar usuario del album",
|
"shared_album_section_people_action_leave": "Eliminar usuario del álbum",
|
||||||
"shared_album_section_people_action_remove_user": "Eliminar usuario del album",
|
"shared_album_section_people_action_remove_user": "Eliminar usuario del álbum",
|
||||||
"shared_album_section_people_owner_label": "Propietario",
|
"shared_album_section_people_owner_label": "Propietario",
|
||||||
"shared_album_section_people_title": "PERSONAS",
|
"shared_album_section_people_title": "PERSONAS",
|
||||||
"share_dialog_preparing": "Preparando...",
|
"share_dialog_preparing": "Preparando...",
|
||||||
@@ -599,7 +602,7 @@
|
|||||||
"sharing_silver_appbar_share_partner": "Compartir con el compañero",
|
"sharing_silver_appbar_share_partner": "Compartir con el compañero",
|
||||||
"sync": "Sincronizar",
|
"sync": "Sincronizar",
|
||||||
"sync_albums": "Sincronizar álbumes",
|
"sync_albums": "Sincronizar álbumes",
|
||||||
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
"sync_albums_manual_subtitle": "Sincroniza todos los videos y fotos subidos con los álbumes seleccionados a respaldar",
|
||||||
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Biblioteca",
|
"tab_controller_nav_library": "Biblioteca",
|
||||||
"tab_controller_nav_photos": "Fotos",
|
"tab_controller_nav_photos": "Fotos",
|
||||||
@@ -636,7 +639,7 @@
|
|||||||
"trash_page_select_btn": "Seleccionar",
|
"trash_page_select_btn": "Seleccionar",
|
||||||
"trash_page_title": "Papelera ({})",
|
"trash_page_title": "Papelera ({})",
|
||||||
"upload_dialog_cancel": "Cancelar",
|
"upload_dialog_cancel": "Cancelar",
|
||||||
"upload_dialog_info": "Quieres hacer una copia de seguridad al servidor de los elementos seleccionados?",
|
"upload_dialog_info": "¿Quieres hacer una copia de seguridad al servidor de los elementos seleccionados?",
|
||||||
"upload_dialog_ok": "Subir",
|
"upload_dialog_ok": "Subir",
|
||||||
"upload_dialog_title": "Subir elementos",
|
"upload_dialog_title": "Subir elementos",
|
||||||
"use_current_connection": "use current connection",
|
"use_current_connection": "use current connection",
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user