mirror of
https://github.com/immich-app/immich.git
synced 2025-02-03 01:22:44 +01:00
Compare commits
185 commits
452c0f389f
...
e42f5ddb20
Author | SHA1 | Date | |
---|---|---|---|
|
e42f5ddb20 | ||
|
da580d4685 | ||
|
cb6d94c7a7 | ||
|
8baa970146 | ||
|
46babca7f1 | ||
|
060300de8a | ||
|
c2ba1cc202 | ||
|
08db77db23 | ||
|
92dff839d0 | ||
|
fe1e09e51f | ||
|
f44669447f | ||
|
92412ca2f7 | ||
|
64d926581f | ||
|
c139e05170 | ||
|
0fe62298e1 | ||
|
e5794e6cfc | ||
|
f6cbc9db06 | ||
|
8dab5d3798 | ||
|
e864811a85 | ||
|
72a55c13b6 | ||
|
206412267a | ||
|
f780a56e24 | ||
|
7bbffccf76 | ||
|
05a446c259 | ||
|
4f725b95e1 | ||
|
64b92cb24c | ||
|
19f2f888ee | ||
|
d12b1c907d | ||
|
947c053c15 | ||
|
79592701dd | ||
|
39697cd973 | ||
|
10e518db42 | ||
|
72fa31f9e9 | ||
|
9871a04d54 | ||
|
ba01b40e7c | ||
|
f5a3d7ba23 | ||
|
d4a9eed4a1 | ||
|
9d8072b994 | ||
|
3c1fa22109 | ||
|
c0210bd6c0 | ||
|
a6ace5151c | ||
|
ede9c99adb | ||
|
ec7ab209f3 | ||
|
61bc24d7ea | ||
|
6c95eb22b7 | ||
|
aaea5cf1ad | ||
|
96d2e9b4c5 | ||
|
19740a3560 | ||
|
8a481e2ea1 | ||
|
ba105d9f19 | ||
|
065d885ca0 | ||
|
a07ae9b5b2 | ||
|
1869b1b41a | ||
|
995314446b | ||
|
a1691ddc0f | ||
|
071b271484 | ||
|
50a2f6193f | ||
|
907fed1081 | ||
|
49a16045bd | ||
|
a47aa86392 | ||
|
f32c5d97cd | ||
|
afc6e91c66 | ||
|
1311189fab | ||
|
fa3b5a4c8f | ||
|
d3446f3092 | ||
|
b31414af8f | ||
|
cf99dcb279 | ||
|
dc56ed5d45 | ||
|
d1d26c60d6 | ||
|
66849d0d45 | ||
|
30b8864d2d | ||
|
78464a4ba3 | ||
|
1f19a65d1a | ||
|
ca3619658b | ||
|
c7a1f2944f | ||
|
7b71c145c8 | ||
|
49a6961ec6 | ||
|
7b882b35e5 | ||
|
443aad5794 | ||
|
8d6cbb51e2 | ||
|
c8abe9a2fd | ||
|
58a75d59bd | ||
|
36058b9b59 | ||
|
8440f146e2 | ||
|
3da17da7b4 | ||
|
ccf6d71c3c | ||
|
5171630b98 | ||
|
9a27a99cab | ||
|
332a865ce6 | ||
|
0c152366ec | ||
|
c35fd6cbdb | ||
|
58d5cc1e4b | ||
|
9a1068c867 | ||
|
1745f48f3d | ||
|
b0cdd8f475 | ||
|
318dd32363 | ||
|
887267b133 | ||
|
1d0d4fc281 | ||
|
345791c0e6 | ||
|
07698f8a40 | ||
|
6fdb8f83f0 | ||
|
a0b2c69b99 | ||
|
70809c1465 | ||
|
97ec3b147c | ||
|
d249b63c99 | ||
|
0f803a4f5e | ||
|
8eac82c5a3 | ||
|
3d13da7f11 | ||
|
430d0b86ee | ||
|
f40fdce658 | ||
|
097183b31d | ||
|
d5a9294eeb | ||
|
c5582fc8d9 | ||
|
6993726d50 | ||
|
c821458e6c | ||
|
efbc0cb192 | ||
|
fd99bd05cf | ||
|
3a2bf91889 | ||
|
378bd3c993 | ||
|
89f40b311c | ||
|
6ce1533117 | ||
|
0ce62d8efd | ||
|
e151248b16 | ||
|
a2207f2eef | ||
|
81568dbda3 | ||
|
a60da1ccab | ||
|
2d2966caa0 | ||
|
7d087371b5 | ||
|
93e2545275 | ||
|
43b3181f45 | ||
|
2903ad8156 | ||
|
c5476a99b1 | ||
|
5d2e421800 | ||
|
b9000d8770 | ||
|
073fccb517 | ||
|
3e11b90851 | ||
|
19e2504583 | ||
|
4279cd6e1e | ||
|
f70ee3f350 | ||
|
9e1651ef66 | ||
|
a35af2b242 | ||
|
fc99c5f530 | ||
|
e978b8c685 | ||
|
3b06220219 | ||
|
dc53e2a9b9 | ||
|
28b08ed417 | ||
|
b74f013b53 | ||
|
79726acc72 | ||
|
36eef9807b | ||
|
3da750117f | ||
|
a6c8eb57f1 | ||
|
efe4396e54 | ||
|
c4a8fdf0f3 | ||
|
abf5b0afe1 | ||
|
77d4eb8787 | ||
|
e7abfe3067 | ||
|
be1187bc46 | ||
|
fef36e6a37 | ||
|
a39fbcb8ac | ||
|
ca75bba3b0 | ||
|
f3dbbfa16d | ||
|
8b4390c247 | ||
|
581d32269d | ||
|
2b76112014 | ||
|
2301affd7e | ||
|
2f9a66e961 | ||
|
0b8cfc6b82 | ||
|
cab201270c | ||
|
beb31cebed | ||
|
e51091b6e5 | ||
|
cc6a8b0c74 | ||
|
930f979960 | ||
|
3030e74fc3 | ||
|
f9db60f25b | ||
|
7d50d3032b | ||
|
1fb2b3f899 | ||
|
2e12c46980 | ||
|
af3f12ebba | ||
|
34c7405177 | ||
|
d052c0b8c6 | ||
|
169f0906f4 | ||
|
1ac916b2cd | ||
|
13f406d80b | ||
|
78c0cadd78 | ||
|
87fa163bdd |
547 changed files with 23644 additions and 15481 deletions
.devcontainer
.github/workflows
cli
docker
docs
.nvmrc
docs
package-lock.jsonpackage.jsonsrc
static
e2e
i18n
ar.jsonbg.jsonca.jsoncs.jsoncv.jsonda.jsonde.jsonel.jsonen.jsones.jsonet.jsonfi.jsonfil.jsonfr.jsonhe.jsonhu.jsonid.jsonit.jsonlt.jsonlv.jsonms.jsonnb_NO.jsonnl.jsonnn.jsonpl.jsonpt.jsonpt_BR.jsonro.jsonru.jsonsk.jsonsl.jsonsr_Cyrl.jsonsr_Latn.jsonsv.jsonta.jsontr.jsonuk.jsonzh_Hant.jsonzh_SIMPLIFIED.json
install.shlocalizely.ymlmachine-learning
2
.devcontainer/.gitignore
vendored
Normal file
2
.devcontainer/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
.env
|
||||
library
|
|
@ -1,2 +1,16 @@
|
|||
ARG BASEIMAGE=mcr.microsoft.com/devcontainers/typescript-node:22@sha256:9791f4aa527774bc370c6bd2f6705ce5a686f1e6f204badd8dfaacce28c631ae
|
||||
FROM ${BASEIMAGE}
|
||||
|
||||
# Flutter SDK
|
||||
# https://flutter.dev/docs/development/tools/sdk/releases?tab=linux
|
||||
ENV FLUTTER_CHANNEL="stable"
|
||||
ENV FLUTTER_VERSION="3.24.5"
|
||||
ENV FLUTTER_HOME=/flutter
|
||||
ENV PATH=${PATH}:${FLUTTER_HOME}/bin
|
||||
|
||||
# Flutter SDK
|
||||
RUN mkdir -p ${FLUTTER_HOME} \
|
||||
&& curl -C - --output flutter.tar.xz https://storage.googleapis.com/flutter_infra_release/releases/${FLUTTER_CHANNEL}/linux/flutter_linux_${FLUTTER_VERSION}-${FLUTTER_CHANNEL}.tar.xz \
|
||||
&& tar -xf flutter.tar.xz --strip-components=1 -C ${FLUTTER_HOME} \
|
||||
&& rm flutter.tar.xz \
|
||||
&& chown -R 1000:1000 ${FLUTTER_HOME}
|
||||
|
|
|
@ -1,20 +1,26 @@
|
|||
{
|
||||
"name": "Immich devcontainers",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile",
|
||||
"args": {
|
||||
"BASEIMAGE": "mcr.microsoft.com/devcontainers/typescript-node:22"
|
||||
}
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"svelte.svelte-vscode"
|
||||
]
|
||||
}
|
||||
},
|
||||
"forwardPorts": [],
|
||||
"postCreateCommand": "make install-all",
|
||||
"remoteUser": "node"
|
||||
"name": "Immich",
|
||||
"service": "immich-devcontainer",
|
||||
"dockerComposeFile": [
|
||||
"docker-compose.yml",
|
||||
"../docker/docker-compose.dev.yml"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"Dart-Code.dart-code",
|
||||
"Dart-Code.flutter",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"dcmdev.dcm-vscode-extension",
|
||||
"esbenp.prettier-vscode",
|
||||
"svelte.svelte-vscode"
|
||||
]
|
||||
}
|
||||
},
|
||||
"forwardPorts": [],
|
||||
"initializeCommand": "bash .devcontainer/scripts/initializeCommand.sh",
|
||||
"onCreateCommand": "bash .devcontainer/scripts/onCreateCommand.sh",
|
||||
"overrideCommand": true,
|
||||
"workspaceFolder": "/immich",
|
||||
"remoteUser": "node"
|
||||
}
|
||||
|
||||
|
|
8
.devcontainer/docker-compose.yml
Normal file
8
.devcontainer/docker-compose.yml
Normal file
|
@ -0,0 +1,8 @@
|
|||
services:
|
||||
immich-devcontainer:
|
||||
build:
|
||||
dockerfile: Dockerfile
|
||||
extra_hosts:
|
||||
- 'host.docker.internal:host-gateway'
|
||||
volumes:
|
||||
- ..:/immich:cached
|
6
.devcontainer/scripts/initializeCommand.sh
Normal file
6
.devcontainer/scripts/initializeCommand.sh
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
# If .env file does not exist, create it by copying example.env from the docker folder
|
||||
if [ ! -f ".devcontainer/.env" ]; then
|
||||
cp docker/example.env .devcontainer/.env
|
||||
fi
|
25
.devcontainer/scripts/onCreateCommand.sh
Normal file
25
.devcontainer/scripts/onCreateCommand.sh
Normal file
|
@ -0,0 +1,25 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Enable multiarch for arm64 if necessary
|
||||
if [ "$(dpkg --print-architecture)" = "arm64" ]; then
|
||||
sudo dpkg --add-architecture amd64 && \
|
||||
sudo apt-get update && \
|
||||
sudo apt-get install -y --no-install-recommends \
|
||||
qemu-user-static \
|
||||
libc6:amd64 \
|
||||
libstdc++6:amd64 \
|
||||
libgcc1:amd64
|
||||
fi
|
||||
|
||||
# Install DCM
|
||||
wget -qO- https://dcm.dev/pgp-key.public | sudo gpg --dearmor -o /usr/share/keyrings/dcm.gpg
|
||||
sudo echo 'deb [signed-by=/usr/share/keyrings/dcm.gpg arch=amd64] https://dcm.dev/debian stable main' | sudo tee /etc/apt/sources.list.d/dart_stable.list
|
||||
|
||||
sudo apt-get update
|
||||
sudo apt-get install dcm
|
||||
|
||||
dart --disable-analytics
|
||||
|
||||
# Install immich
|
||||
cd /immich || exit
|
||||
make install-all
|
4
.github/workflows/cli.yml
vendored
4
.github/workflows/cli.yml
vendored
|
@ -56,7 +56,7 @@ jobs:
|
|||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3.2.0
|
||||
uses: docker/setup-qemu-action@v3.3.0
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3.8.0
|
||||
|
@ -88,7 +88,7 @@ jobs:
|
|||
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
|
||||
|
||||
- name: Build and push image
|
||||
uses: docker/build-push-action@v6.10.0
|
||||
uses: docker/build-push-action@v6.12.0
|
||||
with:
|
||||
file: cli/Dockerfile
|
||||
platforms: linux/amd64,linux/arm64
|
||||
|
|
8
.github/workflows/docker.yml
vendored
8
.github/workflows/docker.yml
vendored
|
@ -122,7 +122,7 @@ jobs:
|
|||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3.2.0
|
||||
uses: docker/setup-qemu-action@v3.3.0
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3.8.0
|
||||
|
@ -174,7 +174,7 @@ jobs:
|
|||
fi
|
||||
|
||||
- name: Build and push image
|
||||
uses: docker/build-push-action@v6.10.0
|
||||
uses: docker/build-push-action@v6.12.0
|
||||
with:
|
||||
context: ${{ env.context }}
|
||||
file: ${{ env.file }}
|
||||
|
@ -213,7 +213,7 @@ jobs:
|
|||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3.2.0
|
||||
uses: docker/setup-qemu-action@v3.3.0
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3.8.0
|
||||
|
@ -265,7 +265,7 @@ jobs:
|
|||
fi
|
||||
|
||||
- name: Build and push image
|
||||
uses: docker/build-push-action@v6.10.0
|
||||
uses: docker/build-push-action@v6.12.0
|
||||
with:
|
||||
context: ${{ env.context }}
|
||||
file: ${{ env.file }}
|
||||
|
|
9
.github/workflows/prepare-release.yml
vendored
9
.github/workflows/prepare-release.yml
vendored
|
@ -68,10 +68,17 @@ jobs:
|
|||
needs: build_mobile
|
||||
|
||||
steps:
|
||||
- name: Generate a token
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@v1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ secrets.ORG_RELEASE_TOKEN }}
|
||||
token: ${{ steps.generate-token.outputs.token }}
|
||||
|
||||
- name: Download APK
|
||||
uses: actions/download-artifact@v4
|
||||
|
|
|
@ -1 +1 @@
|
|||
22.12.0
|
||||
22.13.1
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM node:22.12.0-alpine3.20@sha256:96cc8323e25c8cc6ddcb8b965e135cfd57846e8003ec0d7bcec16c5fd5f6d39f AS core
|
||||
FROM node:22.13.1-alpine3.20@sha256:c52e20859a92b3eccbd3a36c5e1a90adc20617d8d421d65e8a622e87b5dac963 AS core
|
||||
|
||||
WORKDIR /usr/src/open-api/typescript-sdk
|
||||
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./
|
||||
|
|
1111
cli/package-lock.json
generated
1111
cli/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@immich/cli",
|
||||
"version": "2.2.40",
|
||||
"version": "2.2.47",
|
||||
"description": "Command Line Interface (CLI) for Immich",
|
||||
"type": "module",
|
||||
"exports": "./dist/index.js",
|
||||
|
@ -20,15 +20,15 @@
|
|||
"@types/cli-progress": "^3.11.0",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/mock-fs": "^4.13.1",
|
||||
"@types/node": "^22.10.2",
|
||||
"@types/node": "^22.10.9",
|
||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
||||
"@typescript-eslint/parser": "^8.15.0",
|
||||
"@vitest/coverage-v8": "^2.0.5",
|
||||
"@vitest/coverage-v8": "^3.0.0",
|
||||
"byte-size": "^9.0.0",
|
||||
"cli-progress": "^3.12.0",
|
||||
"commander": "^12.0.0",
|
||||
"eslint": "^9.14.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-config-prettier": "^10.0.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"eslint-plugin-unicorn": "^56.0.1",
|
||||
"globals": "^15.9.0",
|
||||
|
@ -36,9 +36,9 @@
|
|||
"prettier": "^3.2.5",
|
||||
"prettier-plugin-organize-imports": "^4.0.0",
|
||||
"typescript": "^5.3.3",
|
||||
"vite": "^5.0.12",
|
||||
"vite": "^6.0.0",
|
||||
"vite-tsconfig-paths": "^5.0.0",
|
||||
"vitest": "^2.0.5",
|
||||
"vitest": "^3.0.0",
|
||||
"vitest-fetch-mock": "^0.4.0",
|
||||
"yaml": "^2.3.1"
|
||||
},
|
||||
|
@ -67,6 +67,6 @@
|
|||
"lodash-es": "^4.17.21"
|
||||
},
|
||||
"volta": {
|
||||
"node": "22.12.0"
|
||||
"node": "22.13.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ interface Test {
|
|||
test: string;
|
||||
options: Omit<CrawlOptions, 'extensions'>;
|
||||
files: Record<string, boolean>;
|
||||
skipOnWin32?: boolean;
|
||||
}
|
||||
|
||||
const cwd = process.cwd();
|
||||
|
@ -48,6 +49,18 @@ const tests: Test[] = [
|
|||
'/photos/image.jpg': true,
|
||||
},
|
||||
},
|
||||
{
|
||||
test: 'should crawl folders with quotes',
|
||||
options: {
|
||||
pathsToCrawl: ["/photo's/", '/photo"s/', '/photo`s/'],
|
||||
},
|
||||
files: {
|
||||
"/photo's/image1.jpg": true,
|
||||
'/photo"s/image2.jpg': true,
|
||||
'/photo`s/image3.jpg': true,
|
||||
},
|
||||
skipOnWin32: true, // single quote interferes with mockfs root on Windows
|
||||
},
|
||||
{
|
||||
test: 'should crawl a single file',
|
||||
options: {
|
||||
|
@ -270,8 +283,12 @@ describe('crawl', () => {
|
|||
});
|
||||
|
||||
describe('crawl', () => {
|
||||
for (const { test, options, files } of tests) {
|
||||
it(test, async () => {
|
||||
for (const { test: name, options, files, skipOnWin32 } of tests) {
|
||||
if (process.platform === 'win32' && skipOnWin32) {
|
||||
test.skip(name);
|
||||
continue;
|
||||
}
|
||||
it(name, async () => {
|
||||
// The file contents is the same as the path.
|
||||
mockfs(Object.fromEntries(Object.keys(files).map((file) => [file, file])));
|
||||
|
||||
|
|
|
@ -146,7 +146,7 @@ export const crawl = async (options: CrawlOptions): Promise<string[]> => {
|
|||
}
|
||||
|
||||
const searchPatterns = patterns.map((pattern) => {
|
||||
let escapedPattern = pattern;
|
||||
let escapedPattern = pattern.replaceAll("'", "[']").replaceAll('"', '["]').replaceAll('`', '[`]');
|
||||
if (recursive) {
|
||||
escapedPattern = escapedPattern + '/**';
|
||||
}
|
||||
|
|
|
@ -71,6 +71,7 @@ services:
|
|||
- ../web:/usr/src/app
|
||||
- ../i18n:/usr/src/i18n
|
||||
- ../open-api/:/usr/src/open-api/
|
||||
# - ../../ui:/usr/ui
|
||||
- /usr/src/app/node_modules
|
||||
ulimits:
|
||||
nofile:
|
||||
|
@ -106,7 +107,7 @@ services:
|
|||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
|
||||
image: redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ services:
|
|||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
|
||||
image: redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
|
@ -91,7 +91,7 @@ services:
|
|||
container_name: immich_prometheus
|
||||
ports:
|
||||
- 9090:9090
|
||||
image: prom/prometheus@sha256:565ee86501224ebbb98fc10b332fa54440b100469924003359edf49cbce374bd
|
||||
image: prom/prometheus@sha256:6559acbd5d770b15bb3c954629ce190ac3cbbdb2b7f1c30f0385c4e05104e218
|
||||
volumes:
|
||||
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
||||
- prometheus-data:/prometheus
|
||||
|
|
|
@ -48,7 +48,7 @@ services:
|
|||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
|
||||
image: docker.io/redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
|
|
|
@ -1 +1 @@
|
|||
22.12.0
|
||||
22.13.1
|
||||
|
|
|
@ -53,10 +53,18 @@ On iOS (iPhone and iPad), the operating system determines if a particular app ca
|
|||
- Disable Background App Refresh for apps that don't need background tasks to run. This will reduce the competition for background task invocation for Immich.
|
||||
- Use the Immich app more often.
|
||||
|
||||
### Why are features not working with a self-signed cert or mTLS?
|
||||
### Why are features in the mobile app not working with a self-signed certificate, Basic Auth, custom headers, or mutual TLS?
|
||||
|
||||
Due to limitations in the upstream app/video library, using a self-signed TLS certificate or mutual TLS may break video playback or asset upload (both foreground and/or background).
|
||||
We recommend using a real SSL certificate from a free provider, for example [Let's Encrypt](https://letsencrypt.org/).
|
||||
These network features are experimental. They often do not work with video playback, asset upload or download, and other features.
|
||||
Many of these limitations are tracked in [#15230](https://github.com/immich-app/immich/issues/15230).
|
||||
Instead of these experimental features, we recommend using the URL switching feature, a VPN, or a [free trusted SSL certificate](https://letsencrypt.org/) for your domain.
|
||||
|
||||
We are not actively developing these features and will not be able to provide support, but welcome contributions to improve them.
|
||||
Please discuss any large PRs with our dev team to ensure your time is not wasted.
|
||||
|
||||
### Why isn't the mobile app updated yet?
|
||||
|
||||
The app stores can take a few days to approve new builds of the app. If you're impatient, android APKs can be downloaded from the GitHub releases.
|
||||
|
||||
---
|
||||
|
||||
|
@ -156,6 +164,35 @@ For example, say you have existing transcodes with the policy "Videos higher tha
|
|||
|
||||
No. Our design principle is that the original assets should always be untouched.
|
||||
|
||||
### How can I mount a CIFS/Samba volume within Docker?
|
||||
|
||||
If you aren't able to or prefer not to mount Samba on the host (such as Windows environment), you can mount the volume within Docker.
|
||||
Below is an example in the `docker-compose.yml`.
|
||||
|
||||
Change your username, password, local IP, and share name, and see below where the line `- originals:/usr/src/app/originals`,
|
||||
corrolates to the section where the volume `originals` was created. You can call this whatever you like, and map it to the docker container as you like.
|
||||
For example you could change `originals:` to `Photos:`, and change `- originals:/usr/src/app/originals` to `Photos:/usr/src/app/photos`.
|
||||
|
||||
```diff
|
||||
...
|
||||
services:
|
||||
immich-server:
|
||||
...
|
||||
volumes:
|
||||
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
|
||||
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
+ - originals:/usr/src/app/originals
|
||||
...
|
||||
volumes:
|
||||
model-cache:
|
||||
+ originals:
|
||||
+ driver_opts:
|
||||
+ type: cifs
|
||||
+ o: 'iocharset=utf8,username=USERNAMEHERE,password=PASSWORDHERE,rw' # change to `ro` if read only desired
|
||||
+ device: '//localipaddress/sharename'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Albums
|
||||
|
@ -278,7 +315,7 @@ The initial backup is the most intensive due to the number of jobs running. The
|
|||
- For facial recognition on new images to work properly, You must re-run the Face Detection job for all images after this.
|
||||
- At the container level, you can [set resource constraints](/docs/FAQ#can-i-limit-cpu-and-ram-usage) to lower usage further.
|
||||
- It's recommended to only apply these constraints _after_ taking some of the measures here for best performance.
|
||||
- If these changes are not enough, see [below](/docs/FAQ#how-can-i-disable-machine-learning) for instructions on how to disable machine learning.
|
||||
- If these changes are not enough, see [above](/docs/FAQ#how-can-i-disable-machine-learning) for instructions on how to disable machine learning.
|
||||
|
||||
### Can I limit CPU and RAM usage?
|
||||
|
||||
|
@ -421,7 +458,7 @@ A result of `on` means that checksums are enabled.
|
|||
<summary>Check if checksums are enabled</summary>
|
||||
|
||||
```bash
|
||||
docker exec -it immich_postgres psql --dbname=immich --username=<DB_USERNAME> --command="show data_checksums"
|
||||
docker exec -it immich_postgres psql --dbname=postgres --username=<DB_USERNAME> --command="show data_checksums"
|
||||
data_checksums
|
||||
----------------
|
||||
on
|
||||
|
@ -436,7 +473,7 @@ If checksums are enabled, you can check the status of the database with the foll
|
|||
<summary>Check for database corruption</summary>
|
||||
|
||||
```bash
|
||||
docker exec -it immich_postgres psql --dbname=immich --username=<DB_USERNAME> --command="SELECT datname, checksum_failures, checksum_last_failure FROM pg_stat_database WHERE datname IS NOT NULL"
|
||||
docker exec -it immich_postgres psql --dbname=postgres --username=<DB_USERNAME> --command="SELECT datname, checksum_failures, checksum_last_failure FROM pg_stat_database WHERE datname IS NOT NULL"
|
||||
datname | checksum_failures | checksum_last_failure
|
||||
-----------+-------------------+-----------------------
|
||||
postgres | 0 |
|
||||
|
|
|
@ -55,7 +55,7 @@ sleep 10 # Wait for Postgres server to start up
|
|||
# Check the database user if you deviated from the default
|
||||
gunzip < "/path/to/backup/dump.sql.gz" \
|
||||
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
|
||||
| docker exec -i immich_postgres psql --username=postgres # Restore Backup
|
||||
| docker exec -i immich_postgres psql --dbname=postgres --username=<DB_USERNAME> # Restore Backup
|
||||
docker compose up -d # Start remainder of Immich apps
|
||||
```
|
||||
|
||||
|
@ -70,18 +70,18 @@ docker compose up -d # Start remainder of Immich apps
|
|||
docker compose down -v # CAUTION! Deletes all Immich data to start from scratch
|
||||
## Uncomment the next line and replace DB_DATA_LOCATION with your Postgres path to permanently reset the Postgres database
|
||||
# Remove-Item -Recurse -Force DB_DATA_LOCATION # CAUTION! Deletes all Immich data to start from scratch
|
||||
## You should mount the backup (as a volume, example: - 'C:\path\to\backup\dump.sql':/dump.sql) into the immich_postgres container using the docker-compose.yml
|
||||
docker compose pull # Update to latest version of Immich (if desired)
|
||||
docker compose create # Create Docker containers for Immich apps without running them
|
||||
docker start immich_postgres # Start Postgres server
|
||||
sleep 10 # Wait for Postgres server to start up
|
||||
docker exec -it immich_postgres bash # Enter the Docker shell and run the following command
|
||||
# Check the database user if you deviated from the default
|
||||
cat "/dump.sql" \
|
||||
## You should mount the backup (as a volume, example: `- 'C:\path\to\backup\dump.sql:/dump.sql'`) into the immich_postgres container using the docker-compose.yml
|
||||
docker compose pull # Update to latest version of Immich (if desired)
|
||||
docker compose create # Create Docker containers for Immich apps without running them
|
||||
docker start immich_postgres # Start Postgres server
|
||||
sleep 10 # Wait for Postgres server to start up
|
||||
docker exec -it immich_postgres bash # Enter the Docker shell and run the following command
|
||||
# Check the database user if you deviated from the default. If your backup ends in `.gz`, replace `cat` with `gunzip`
|
||||
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
|
||||
| psql --dbname=postgres --username=<DB_USERNAME> # Restore Backup
|
||||
exit # Exit the Docker shell
|
||||
docker compose up -d # Start remainder of Immich apps
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
@ -95,12 +95,14 @@ Some deployment methods make it difficult to start the database without also sta
|
|||
|
||||
## Filesystem
|
||||
|
||||
Immich stores two types of content in the filesystem: (1) original, unmodified assets (photos and videos), and (2) generated content. Only the original content needs to be backed-up, which is stored in the following folders:
|
||||
Immich stores two types of content in the filesystem: (a) original, unmodified assets (photos and videos), and (b) generated content. We recommend backing up the entire contents of `UPLOAD_LOCATION`, but only the original content is critical, which is stored in the following folders:
|
||||
|
||||
1. `UPLOAD_LOCATION/library`
|
||||
2. `UPLOAD_LOCATION/upload`
|
||||
3. `UPLOAD_LOCATION/profile`
|
||||
|
||||
If you choose to back up only those folders, you will need to rerun the transcoding and thumbnail generation jobs for all assets after you restore from a backup.
|
||||
|
||||
:::caution
|
||||
If you moved some of these folders onto a different storage device, such as `profile/`, make sure to adjust the backup path to match your setup
|
||||
:::
|
||||
|
|
|
@ -63,6 +63,17 @@ If you only want to do web development connected to an existing, remote backend,
|
|||
IMMICH_SERVER_URL=https://demo.immich.app/ npm run dev
|
||||
```
|
||||
|
||||
#### `@immich/ui`
|
||||
|
||||
To see local changes to `@immich/ui` in Immich, do the following:
|
||||
|
||||
1. Install `@immich/ui` as a sibling to `immich/`, for example `/home/user/immich` and `/home/user/ui`
|
||||
1. Build the `@immich/ui` project via `npm run build`
|
||||
1. Uncomment the corresponding volume in web service of the `docker/docker-compose.dev.yaml` file (`../../ui:/usr/ui`)
|
||||
1. Uncomment the corresponding alias in the `web/vite.config.js` file (`'@immich/ui': path.resolve(\_\_dirname, '../../ui')`)
|
||||
1. Start up the stack via `make dev`
|
||||
1. After making changes in `@immich/ui`, rebuild it (`npm run build`)
|
||||
|
||||
### Mobile app
|
||||
|
||||
The mobile app `(/mobile)` will required Flutter toolchain 3.13.x to be installed on your system.
|
||||
|
|
|
@ -36,11 +36,15 @@ You can enable automatic backup on supported devices. For more information see [
|
|||
If you have a large number of photos on the device, and you would prefer not to backup all the photos, then it might be prudent to only backup selected photos from device to the Immich server.
|
||||
|
||||
First, you need to enable the Storage Indicator in your app's settings. Navigate to **<ins>Settings -> Photo Grid</ins>** and enable **"Show Storage indicator on asset tiles"**; this makes it easy to distinguish local-only assets and synced assets.
|
||||
|
||||
:::note
|
||||
|
||||
This will enable a small cloud icon on the bottom right corner of the asset tile, indicating that the asset is synced to the server:
|
||||
|
||||
1. <Icon path={mdiCloudOffOutline} size={1} /> - Local-only asset; not synced to the server
|
||||
2. <Icon path={mdiCloudCheckOutline} size={1} /> - Asset is synced to the server :::
|
||||
2. <Icon path={mdiCloudCheckOutline} size={1} /> - Asset is synced to the server
|
||||
|
||||
:::
|
||||
|
||||
Now make sure that the local album is selected in the backup screen (steps 1-2 above). You can find these albums listed in **<ins>Library -> On this device</ins>**. To selectively upload photos from these albums, simply select the local-only photos and tap on "Upload" button in the dynamic bottom menu.
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ After bringing down the containers with `docker compose down` and back up with `
|
|||
:::note
|
||||
To see exactly what metrics are made available, you can additionally add `8081:8081` to the server container's ports and `8082:8082` to the microservices container's ports.
|
||||
Visiting the `/metrics` endpoint for these services will show the same raw data that Prometheus collects.
|
||||
To configure these ports see [`IMMICH_API_METRICS_PORT` & `IMMICH_MICROSERVICES_METRICS_PORT`](../install/environment-variables/#general).
|
||||
To configure these ports see [`IMMICH_API_METRICS_PORT` & `IMMICH_MICROSERVICES_METRICS_PORT`](/docs/install/environment-variables/#general).
|
||||
:::
|
||||
|
||||
### Usage
|
||||
|
|
|
@ -49,5 +49,3 @@ The `thumbs/` folder contains both the small thumbnails displayed in the timelin
|
|||
|
||||
The storage metrics of the Immich server will track available storage at `UPLOAD_LOCATION`, so the administrator must set up some sort of monitoring to ensure the storage does not run out of space. The `profile/` folder is much smaller, usually less than 1 MB.
|
||||
:::
|
||||
|
||||
Thanks to [Jrasm91](https://github.com/immich-app/immich/discussions/2110#discussioncomment-5477767) for writing the guide.
|
||||
|
|
|
@ -5,9 +5,9 @@ Keep in mind that mucking around in the database might set the moon on fire. Avo
|
|||
:::
|
||||
|
||||
:::tip
|
||||
Run `docker exec -it immich_postgres psql --dbname=immich --username=<DB_USERNAME>` to connect to the database via the container directly.
|
||||
Run `docker exec -it immich_postgres psql --dbname=<DB_DATABASE_NAME> --username=<DB_USERNAME>` to connect to the database via the container directly.
|
||||
|
||||
(Replace `<DB_USERNAME>` with the value from your [`.env` file](/docs/install/environment-variables#database)).
|
||||
(Replace `<DB_DATABASE_NAME>` and `<DB_USERNAME>` with the values from your [`.env` file](/docs/install/environment-variables#database)).
|
||||
:::
|
||||
|
||||
## Assets
|
||||
|
|
|
@ -148,24 +148,26 @@ Redis (Sentinel) URL example JSON before encoding:
|
|||
|
||||
## Machine Learning
|
||||
|
||||
| Variable | Description | Default | Containers |
|
||||
| :-------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- | :-----------------------------: | :--------------- |
|
||||
| `MACHINE_LEARNING_MODEL_TTL` | Inactivity time (s) before a model is unloaded (disabled if \<= 0) | `300` | machine learning |
|
||||
| `MACHINE_LEARNING_MODEL_TTL_POLL_S` | Interval (s) between checks for the model TTL (disabled if \<= 0) | `10` | machine learning |
|
||||
| `MACHINE_LEARNING_CACHE_FOLDER` | Directory where models are downloaded | `/cache` | machine learning |
|
||||
| `MACHINE_LEARNING_REQUEST_THREADS`<sup>\*1</sup> | Thread count of the request thread pool (disabled if \<= 0) | number of CPU cores | machine learning |
|
||||
| `MACHINE_LEARNING_MODEL_INTER_OP_THREADS` | Number of parallel model operations | `1` | machine learning |
|
||||
| `MACHINE_LEARNING_MODEL_INTRA_OP_THREADS` | Number of threads for each model operation | `2` | machine learning |
|
||||
| `MACHINE_LEARNING_WORKERS`<sup>\*2</sup> | Number of worker processes to spawn | `1` | machine learning |
|
||||
| `MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S`<sup>\*3</sup> | HTTP Keep-alive time in seconds | `2` | machine learning |
|
||||
| `MACHINE_LEARNING_WORKER_TIMEOUT` | Maximum time (s) of unresponsiveness before a worker is killed | `120` (`300` if using OpenVINO) | machine learning |
|
||||
| `MACHINE_LEARNING_PRELOAD__CLIP` | Name of a CLIP model to be preloaded and kept in cache | | machine learning |
|
||||
| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION` | Name of a facial recognition model to be preloaded and kept in cache | | machine learning |
|
||||
| `MACHINE_LEARNING_ANN` | Enable ARM-NN hardware acceleration if supported | `True` | machine learning |
|
||||
| `MACHINE_LEARNING_ANN_FP16_TURBO` | Execute operations in FP16 precision: increasing speed, reducing precision (applies only to ARM-NN) | `False` | machine learning |
|
||||
| `MACHINE_LEARNING_ANN_TUNING_LEVEL` | ARM-NN GPU tuning level (1: rapid, 2: normal, 3: exhaustive) | `2` | machine learning |
|
||||
| `MACHINE_LEARNING_DEVICE_IDS`<sup>\*4</sup> | Device IDs to use in multi-GPU environments | `0` | machine learning |
|
||||
| `MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITION` | Set the maximum number of faces that will be processed at once by the facial recognition model | None (`1` if using OpenVINO) | machine learning |
|
||||
| Variable | Description | Default | Containers |
|
||||
| :---------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- | :-----------------------------: | :--------------- |
|
||||
| `MACHINE_LEARNING_MODEL_TTL` | Inactivity time (s) before a model is unloaded (disabled if \<= 0) | `300` | machine learning |
|
||||
| `MACHINE_LEARNING_MODEL_TTL_POLL_S` | Interval (s) between checks for the model TTL (disabled if \<= 0) | `10` | machine learning |
|
||||
| `MACHINE_LEARNING_CACHE_FOLDER` | Directory where models are downloaded | `/cache` | machine learning |
|
||||
| `MACHINE_LEARNING_REQUEST_THREADS`<sup>\*1</sup> | Thread count of the request thread pool (disabled if \<= 0) | number of CPU cores | machine learning |
|
||||
| `MACHINE_LEARNING_MODEL_INTER_OP_THREADS` | Number of parallel model operations | `1` | machine learning |
|
||||
| `MACHINE_LEARNING_MODEL_INTRA_OP_THREADS` | Number of threads for each model operation | `2` | machine learning |
|
||||
| `MACHINE_LEARNING_WORKERS`<sup>\*2</sup> | Number of worker processes to spawn | `1` | machine learning |
|
||||
| `MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S`<sup>\*3</sup> | HTTP Keep-alive time in seconds | `2` | machine learning |
|
||||
| `MACHINE_LEARNING_WORKER_TIMEOUT` | Maximum time (s) of unresponsiveness before a worker is killed | `120` (`300` if using OpenVINO) | machine learning |
|
||||
| `MACHINE_LEARNING_PRELOAD__CLIP__TEXTUAL` | Comma-separated list of (textual) CLIP model(s) to preload and cache | | machine learning |
|
||||
| `MACHINE_LEARNING_PRELOAD__CLIP__VISUAL` | Comma-separated list of (visual) CLIP model(s) to preload and cache | | machine learning |
|
||||
| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION` | Comma-separated list of (recognition) facial recognition model(s) to preload and cache | | machine learning |
|
||||
| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION` | Comma-separated list of (detection) facial recognition model(s) to preload and cache | | machine learning |
|
||||
| `MACHINE_LEARNING_ANN` | Enable ARM-NN hardware acceleration if supported | `True` | machine learning |
|
||||
| `MACHINE_LEARNING_ANN_FP16_TURBO` | Execute operations in FP16 precision: increasing speed, reducing precision (applies only to ARM-NN) | `False` | machine learning |
|
||||
| `MACHINE_LEARNING_ANN_TUNING_LEVEL` | ARM-NN GPU tuning level (1: rapid, 2: normal, 3: exhaustive) | `2` | machine learning |
|
||||
| `MACHINE_LEARNING_DEVICE_IDS`<sup>\*4</sup> | Device IDs to use in multi-GPU environments | `0` | machine learning |
|
||||
| `MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITION` | Set the maximum number of faces that will be processed at once by the facial recognition model | None (`1` if using OpenVINO) | machine learning |
|
||||
|
||||
\*1: It is recommended to begin with this parameter when changing the concurrency levels of the machine learning service and then tune the other ones.
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ The script will perform the following actions:
|
|||
1. Download [docker-compose.yml](https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml), and the [.env](https://github.com/immich-app/immich/releases/latest/download/example.env) file from the main branch of the [repository](https://github.com/immich-app/immich).
|
||||
2. Start the containers.
|
||||
|
||||
The web application will be available at `http://<machine-ip-address>:2283`, and the server URL for the mobile app will be `http://<machine-ip-address>:2283/api`
|
||||
The web application and mobile app will be available at `http://<machine-ip-address>:2283`
|
||||
|
||||
The directory which is used to store the library files is `./immich-app` relative to the current directory.
|
||||
|
||||
|
|
|
@ -111,7 +111,7 @@ alt="Go to Docker Tab and visit the address listed next to immich-web"
|
|||
|
||||
<details >
|
||||
<summary>Using the FolderView plugin for organizing your Docker containers? Click me! Otherwise you're complete!</summary>
|
||||
<p>If you are using the FolderView plugin go the Docker tab and select "<b>New Folder</b>".<br />Label it <i>"Immich"</i> and use this URL as the logo: https://raw.githubusercontent.com/immich-app/immich/main/design/immich-logo.webp<br/>Then simply select all the Immich related containers before clicking "<b>Submit</b>"</p>
|
||||
<p>If you are using the FolderView plugin go the Docker tab and select "<b>New Folder</b>".<br />Label it <i>"Immich"</i> and use this URL as the logo: https://raw.githubusercontent.com/immich-app/immich/main/design/immich-logo.png<br/>Then simply select all the Immich related containers before clicking "<b>Submit</b>"</p>
|
||||
<img
|
||||
src={require('./img/unraid07.webp').default}
|
||||
width="80%"
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# Comparison
|
||||
|
||||
If you're new here and came from other asset self-hosting alternatives you might want to look at a comparison between Immich and your current solution.
|
||||
Here you can see a [comparison between the various OpenSource Photo Libraries](https://meichthys.github.io/foss_photo_libraries/) including Immich.
|
|
@ -1,3 +1,3 @@
|
|||
Login to the mobile app with the server endpoint URL at `http://<machine-ip-address>:2283/api`
|
||||
Login to the mobile app with the server endpoint URL at `http://<machine-ip-address>:2283`
|
||||
|
||||
<img src={require('./img/sign-in-phone.webp').default} width='50%' title='Mobile App Sign In' />
|
||||
|
|
6627
docs/package-lock.json
generated
6627
docs/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -16,8 +16,8 @@
|
|||
"write-heading-ids": "docusaurus write-heading-ids"
|
||||
},
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "~3.5.2",
|
||||
"@docusaurus/preset-classic": "~3.5.2",
|
||||
"@docusaurus/core": "~3.7.0",
|
||||
"@docusaurus/preset-classic": "~3.7.0",
|
||||
"@mdi/js": "^7.3.67",
|
||||
"@mdi/react": "^1.6.1",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
|
@ -35,7 +35,7 @@
|
|||
"url": "^0.11.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "~3.5.2",
|
||||
"@docusaurus/module-type-aliases": "~3.7.0",
|
||||
"prettier": "^3.2.4",
|
||||
"typescript": "^5.1.6"
|
||||
},
|
||||
|
@ -55,6 +55,6 @@
|
|||
"node": ">=20"
|
||||
},
|
||||
"volta": {
|
||||
"node": "22.12.0"
|
||||
"node": "22.13.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,6 +99,11 @@ const projects: CommunityProjectProps[] = [
|
|||
description: 'Downloads a configurable number of random photos based on people or album ID.',
|
||||
url: 'https://github.com/jon6fingrs/immich-dl',
|
||||
},
|
||||
{
|
||||
title: 'Immich Upload Optimizer',
|
||||
description: 'Automatically optimize files uploaded to Immich in order to save storage space',
|
||||
url: 'https://github.com/miguelangel-nubla/immich-upload-optimizer',
|
||||
},
|
||||
];
|
||||
|
||||
function CommunityProject({ title, description, url }: CommunityProjectProps): JSX.Element {
|
||||
|
|
|
@ -73,9 +73,9 @@ function HomepageHeader() {
|
|||
/>
|
||||
|
||||
<div>
|
||||
<p className="font-bold text-2xl md:text-5xl ">Download mobile app</p>
|
||||
<p className="font-bold text-2xl md:text-5xl ">Download the mobile app</p>
|
||||
<p className="text-lg">
|
||||
Download Immich app and start backing up your photos and videos securely to your own server
|
||||
Download the Immich app and start backing up your photos and videos securely to your own server
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex flex-col sm:flex-row place-items-center place-content-center mt-4 gap-1">
|
||||
|
|
28
docs/static/archived-versions.json
vendored
28
docs/static/archived-versions.json
vendored
|
@ -1,4 +1,32 @@
|
|||
[
|
||||
{
|
||||
"label": "v1.125.6",
|
||||
"url": "https://v1.125.6.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.125.5",
|
||||
"url": "https://v1.125.5.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.125.4",
|
||||
"url": "https://v1.125.4.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.125.3",
|
||||
"url": "https://v1.125.3.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.125.2",
|
||||
"url": "https://v1.125.2.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.125.1",
|
||||
"url": "https://v1.125.1.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.125.0",
|
||||
"url": "https://v1.125.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.124.2",
|
||||
"url": "https://v1.124.2.archive.immich.app"
|
||||
|
|
|
@ -1 +1 @@
|
|||
22.12.0
|
||||
22.13.1
|
||||
|
|
|
@ -34,7 +34,7 @@ services:
|
|||
- 2285:2285
|
||||
|
||||
redis:
|
||||
image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
|
||||
image: redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
|
||||
|
||||
database:
|
||||
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
|
||||
|
|
581
e2e/package-lock.json
generated
581
e2e/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "immich-e2e",
|
||||
"version": "1.124.2",
|
||||
"version": "1.125.6",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"type": "module",
|
||||
|
@ -25,16 +25,16 @@
|
|||
"@immich/sdk": "file:../open-api/typescript-sdk",
|
||||
"@playwright/test": "^1.44.1",
|
||||
"@types/luxon": "^3.4.2",
|
||||
"@types/node": "^22.10.2",
|
||||
"@types/node": "^22.10.9",
|
||||
"@types/oidc-provider": "^8.5.1",
|
||||
"@types/pg": "^8.11.0",
|
||||
"@types/pngjs": "^6.0.4",
|
||||
"@types/supertest": "^6.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
||||
"@typescript-eslint/parser": "^8.15.0",
|
||||
"@vitest/coverage-v8": "^2.0.5",
|
||||
"@vitest/coverage-v8": "^3.0.0",
|
||||
"eslint": "^9.14.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-config-prettier": "^10.0.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"eslint-plugin-unicorn": "^56.0.1",
|
||||
"exiftool-vendored": "^28.3.1",
|
||||
|
@ -50,9 +50,9 @@
|
|||
"supertest": "^7.0.0",
|
||||
"typescript": "^5.3.3",
|
||||
"utimes": "^5.2.1",
|
||||
"vitest": "^2.0.5"
|
||||
"vitest": "^3.0.0"
|
||||
},
|
||||
"volta": {
|
||||
"node": "22.12.0"
|
||||
"node": "22.13.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,79 +22,92 @@ const user1NotShared = 'user1NotShared';
|
|||
const user2SharedUser = 'user2SharedUser';
|
||||
const user2SharedLink = 'user2SharedLink';
|
||||
const user2NotShared = 'user2NotShared';
|
||||
const user4DeletedAsset = 'user4DeletedAsset';
|
||||
const user4Empty = 'user4Empty';
|
||||
|
||||
describe('/albums', () => {
|
||||
let admin: LoginResponseDto;
|
||||
let user1: LoginResponseDto;
|
||||
let user1Asset1: AssetMediaResponseDto;
|
||||
let user1Asset2: AssetMediaResponseDto;
|
||||
let user4Asset1: AssetMediaResponseDto;
|
||||
let user1Albums: AlbumResponseDto[];
|
||||
let user2: LoginResponseDto;
|
||||
let user2Albums: AlbumResponseDto[];
|
||||
let deletedAssetAlbum: AlbumResponseDto;
|
||||
let user3: LoginResponseDto; // deleted
|
||||
let user4: LoginResponseDto;
|
||||
|
||||
beforeAll(async () => {
|
||||
await utils.resetDatabase();
|
||||
|
||||
admin = await utils.adminSetup();
|
||||
|
||||
[user1, user2, user3] = await Promise.all([
|
||||
[user1, user2, user3, user4] = await Promise.all([
|
||||
utils.userSetup(admin.accessToken, createUserDto.user1),
|
||||
utils.userSetup(admin.accessToken, createUserDto.user2),
|
||||
utils.userSetup(admin.accessToken, createUserDto.user3),
|
||||
utils.userSetup(admin.accessToken, createUserDto.user4),
|
||||
]);
|
||||
|
||||
[user1Asset1, user1Asset2] = await Promise.all([
|
||||
[user1Asset1, user1Asset2, user4Asset1] = await Promise.all([
|
||||
utils.createAsset(user1.accessToken, { isFavorite: true }),
|
||||
utils.createAsset(user1.accessToken),
|
||||
utils.createAsset(user1.accessToken),
|
||||
]);
|
||||
|
||||
user1Albums = await Promise.all([
|
||||
utils.createAlbum(user1.accessToken, {
|
||||
albumName: user1SharedEditorUser,
|
||||
albumUsers: [{ userId: user2.userId, role: AlbumUserRole.Editor }],
|
||||
assetIds: [user1Asset1.id],
|
||||
}),
|
||||
utils.createAlbum(user1.accessToken, {
|
||||
albumName: user1SharedLink,
|
||||
assetIds: [user1Asset1.id],
|
||||
}),
|
||||
utils.createAlbum(user1.accessToken, {
|
||||
albumName: user1NotShared,
|
||||
assetIds: [user1Asset1.id, user1Asset2.id],
|
||||
}),
|
||||
utils.createAlbum(user1.accessToken, {
|
||||
albumName: user1SharedViewerUser,
|
||||
albumUsers: [{ userId: user2.userId, role: AlbumUserRole.Viewer }],
|
||||
assetIds: [user1Asset1.id],
|
||||
[user1Albums, user2Albums, deletedAssetAlbum] = await Promise.all([
|
||||
Promise.all([
|
||||
utils.createAlbum(user1.accessToken, {
|
||||
albumName: user1SharedEditorUser,
|
||||
albumUsers: [
|
||||
{ userId: admin.userId, role: AlbumUserRole.Editor },
|
||||
{ userId: user2.userId, role: AlbumUserRole.Editor },
|
||||
],
|
||||
assetIds: [user1Asset1.id],
|
||||
}),
|
||||
utils.createAlbum(user1.accessToken, {
|
||||
albumName: user1SharedLink,
|
||||
assetIds: [user1Asset1.id],
|
||||
}),
|
||||
utils.createAlbum(user1.accessToken, {
|
||||
albumName: user1NotShared,
|
||||
assetIds: [user1Asset1.id, user1Asset2.id],
|
||||
}),
|
||||
utils.createAlbum(user1.accessToken, {
|
||||
albumName: user1SharedViewerUser,
|
||||
albumUsers: [{ userId: user2.userId, role: AlbumUserRole.Viewer }],
|
||||
assetIds: [user1Asset1.id],
|
||||
}),
|
||||
]),
|
||||
Promise.all([
|
||||
utils.createAlbum(user2.accessToken, {
|
||||
albumName: user2SharedUser,
|
||||
albumUsers: [
|
||||
{ userId: user1.userId, role: AlbumUserRole.Editor },
|
||||
{ userId: user3.userId, role: AlbumUserRole.Editor },
|
||||
],
|
||||
}),
|
||||
utils.createAlbum(user2.accessToken, { albumName: user2SharedLink }),
|
||||
utils.createAlbum(user2.accessToken, { albumName: user2NotShared }),
|
||||
]),
|
||||
utils.createAlbum(user4.accessToken, { albumName: user4DeletedAsset }),
|
||||
utils.createAlbum(user4.accessToken, { albumName: user4Empty }),
|
||||
utils.createAlbum(user3.accessToken, {
|
||||
albumName: 'Deleted',
|
||||
albumUsers: [{ userId: user1.userId, role: AlbumUserRole.Editor }],
|
||||
}),
|
||||
]);
|
||||
|
||||
user2Albums = await Promise.all([
|
||||
utils.createAlbum(user2.accessToken, {
|
||||
albumName: user2SharedUser,
|
||||
albumUsers: [
|
||||
{ userId: user1.userId, role: AlbumUserRole.Editor },
|
||||
{ userId: user3.userId, role: AlbumUserRole.Editor },
|
||||
],
|
||||
}),
|
||||
utils.createAlbum(user2.accessToken, { albumName: user2SharedLink }),
|
||||
utils.createAlbum(user2.accessToken, { albumName: user2NotShared }),
|
||||
]);
|
||||
|
||||
await utils.createAlbum(user3.accessToken, {
|
||||
albumName: 'Deleted',
|
||||
albumUsers: [{ userId: user1.userId, role: AlbumUserRole.Editor }],
|
||||
});
|
||||
|
||||
await addAssetsToAlbum(
|
||||
{ id: user2Albums[0].id, bulkIdsDto: { ids: [user1Asset1.id, user1Asset2.id] } },
|
||||
{ headers: asBearerAuth(user1.accessToken) },
|
||||
);
|
||||
|
||||
user2Albums[0] = await getAlbumInfo({ id: user2Albums[0].id }, { headers: asBearerAuth(user2.accessToken) });
|
||||
|
||||
await Promise.all([
|
||||
addAssetsToAlbum(
|
||||
{ id: user2Albums[0].id, bulkIdsDto: { ids: [user1Asset1.id, user1Asset2.id] } },
|
||||
{ headers: asBearerAuth(user1.accessToken) },
|
||||
),
|
||||
addAssetsToAlbum(
|
||||
{ id: deletedAssetAlbum.id, bulkIdsDto: { ids: [user4Asset1.id] } },
|
||||
{ headers: asBearerAuth(user4.accessToken) },
|
||||
),
|
||||
// add shared link to user1SharedLink album
|
||||
utils.createSharedLink(user1.accessToken, {
|
||||
type: SharedLinkType.Album,
|
||||
|
@ -107,7 +120,11 @@ describe('/albums', () => {
|
|||
}),
|
||||
]);
|
||||
|
||||
await deleteUserAdmin({ id: user3.userId, userAdminDeleteDto: {} }, { headers: asBearerAuth(admin.accessToken) });
|
||||
[user2Albums[0]] = await Promise.all([
|
||||
getAlbumInfo({ id: user2Albums[0].id }, { headers: asBearerAuth(user2.accessToken) }),
|
||||
deleteUserAdmin({ id: user3.userId, userAdminDeleteDto: {} }, { headers: asBearerAuth(admin.accessToken) }),
|
||||
utils.deleteAssets(user1.accessToken, [user4Asset1.id]),
|
||||
]);
|
||||
});
|
||||
|
||||
describe('GET /albums', () => {
|
||||
|
@ -142,6 +159,10 @@ describe('/albums', () => {
|
|||
...user1Albums[0],
|
||||
assets: [expect.objectContaining({ isFavorite: false })],
|
||||
lastModifiedAssetTimestamp: expect.any(String),
|
||||
startDate: expect.any(String),
|
||||
endDate: expect.any(String),
|
||||
shared: true,
|
||||
albumUsers: expect.any(Array),
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -280,6 +301,25 @@ describe('/albums', () => {
|
|||
expect(status).toBe(200);
|
||||
expect(body).toHaveLength(5);
|
||||
});
|
||||
|
||||
it('should return empty albums and albums where all assets are deleted', async () => {
|
||||
const { status, body } = await request(app).get('/albums').set('Authorization', `Bearer ${user4.accessToken}`);
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({
|
||||
ownerId: user4.userId,
|
||||
albumName: user4DeletedAsset,
|
||||
shared: false,
|
||||
}),
|
||||
expect.objectContaining({
|
||||
ownerId: user4.userId,
|
||||
albumName: user4Empty,
|
||||
shared: false,
|
||||
}),
|
||||
]),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('GET /albums/:id', () => {
|
||||
|
@ -299,6 +339,10 @@ describe('/albums', () => {
|
|||
...user1Albums[0],
|
||||
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
|
||||
lastModifiedAssetTimestamp: expect.any(String),
|
||||
startDate: expect.any(String),
|
||||
endDate: expect.any(String),
|
||||
albumUsers: expect.any(Array),
|
||||
shared: true,
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -330,6 +374,10 @@ describe('/albums', () => {
|
|||
...user1Albums[0],
|
||||
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
|
||||
lastModifiedAssetTimestamp: expect.any(String),
|
||||
startDate: expect.any(String),
|
||||
endDate: expect.any(String),
|
||||
albumUsers: expect.any(Array),
|
||||
shared: true,
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -344,6 +392,30 @@ describe('/albums', () => {
|
|||
assets: [],
|
||||
assetCount: 1,
|
||||
lastModifiedAssetTimestamp: expect.any(String),
|
||||
endDate: expect.any(String),
|
||||
startDate: expect.any(String),
|
||||
albumUsers: expect.any(Array),
|
||||
shared: true,
|
||||
});
|
||||
});
|
||||
|
||||
it('should not count trashed assets', async () => {
|
||||
await utils.deleteAssets(user1.accessToken, [user1Asset2.id]);
|
||||
|
||||
const { status, body } = await request(app)
|
||||
.get(`/albums/${user2Albums[0].id}?withoutAssets=true`)
|
||||
.set('Authorization', `Bearer ${user1.accessToken}`);
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual({
|
||||
...user2Albums[0],
|
||||
assets: [],
|
||||
assetCount: 1,
|
||||
lastModifiedAssetTimestamp: expect.any(String),
|
||||
endDate: expect.any(String),
|
||||
startDate: expect.any(String),
|
||||
albumUsers: expect.any(Array),
|
||||
shared: true,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -3,11 +3,11 @@ import {
|
|||
AssetMediaStatus,
|
||||
AssetResponseDto,
|
||||
AssetTypeEnum,
|
||||
LoginResponseDto,
|
||||
SharedLinkType,
|
||||
getAssetInfo,
|
||||
getConfig,
|
||||
getMyUser,
|
||||
LoginResponseDto,
|
||||
SharedLinkType,
|
||||
updateConfig,
|
||||
} from '@immich/sdk';
|
||||
import { exiftool } from 'exiftool-vendored';
|
||||
|
@ -19,7 +19,7 @@ import { Socket } from 'socket.io-client';
|
|||
import { createUserDto, uuidDto } from 'src/fixtures';
|
||||
import { makeRandomImage } from 'src/generators';
|
||||
import { errorDto } from 'src/responses';
|
||||
import { app, asBearerAuth, tempDir, testAssetDir, utils } from 'src/utils';
|
||||
import { app, asBearerAuth, tempDir, TEN_TIMES, testAssetDir, utils } from 'src/utils';
|
||||
import request from 'supertest';
|
||||
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
||||
|
||||
|
@ -41,8 +41,6 @@ const makeUploadDto = (options?: { omit: string }): Record<string, any> => {
|
|||
return dto;
|
||||
};
|
||||
|
||||
const TEN_TIMES = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
||||
|
||||
const locationAssetFilepath = `${testAssetDir}/metadata/gps-position/thompson-springs.jpg`;
|
||||
const ratingAssetFilepath = `${testAssetDir}/metadata/rating/mongolels.jpg`;
|
||||
const facesAssetFilepath = `${testAssetDir}/metadata/faces/portrait.jpg`;
|
||||
|
@ -538,7 +536,7 @@ describe('/asset', () => {
|
|||
expect(body).toMatchObject({
|
||||
id: user1Assets[0].id,
|
||||
exifInfo: expect.objectContaining({
|
||||
dateTimeOriginal: '2023-11-20T01:11:00.000Z',
|
||||
dateTimeOriginal: '2023-11-20T01:11:00+00:00',
|
||||
}),
|
||||
});
|
||||
expect(status).toEqual(200);
|
||||
|
@ -608,7 +606,7 @@ describe('/asset', () => {
|
|||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
|
||||
const assetInfo = await utils.getAssetInfo(user1.accessToken, id);
|
||||
expect(assetInfo.exifInfo?.dateTimeOriginal).toBe('2024-07-11T10:32:52.000Z');
|
||||
expect(assetInfo.exifInfo?.dateTimeOriginal).toBe('2024-07-11T10:32:52+00:00');
|
||||
|
||||
const { status, body } = await request(app)
|
||||
.put(`/assets/${id}`)
|
||||
|
@ -618,7 +616,7 @@ describe('/asset', () => {
|
|||
expect(body).toMatchObject({
|
||||
id,
|
||||
exifInfo: expect.objectContaining({
|
||||
dateTimeOriginal: '2023-11-20T01:11:00.000Z',
|
||||
dateTimeOriginal: '2023-11-20T01:11:00+00:00',
|
||||
}),
|
||||
});
|
||||
expect(status).toEqual(200);
|
||||
|
@ -703,6 +701,20 @@ describe('/asset', () => {
|
|||
expect(status).toEqual(200);
|
||||
});
|
||||
|
||||
it('should set the negative rating', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.put(`/assets/${user1Assets[0].id}`)
|
||||
.set('Authorization', `Bearer ${user1.accessToken}`)
|
||||
.send({ rating: -1 });
|
||||
expect(body).toMatchObject({
|
||||
id: user1Assets[0].id,
|
||||
exifInfo: expect.objectContaining({
|
||||
rating: -1,
|
||||
}),
|
||||
});
|
||||
expect(status).toEqual(200);
|
||||
});
|
||||
|
||||
it('should reject invalid rating', async () => {
|
||||
for (const test of [{ rating: 7 }, { rating: 3.5 }, { rating: null }]) {
|
||||
const { status, body } = await request(app)
|
||||
|
@ -985,8 +997,6 @@ describe('/asset', () => {
|
|||
exifImageHeight: 1080,
|
||||
exifImageWidth: 1617,
|
||||
fileSizeInByte: 862_424,
|
||||
latitude: null,
|
||||
longitude: null,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -996,11 +1006,9 @@ describe('/asset', () => {
|
|||
type: AssetTypeEnum.Image,
|
||||
originalFileName: 'el_torcal_rocks.jpg',
|
||||
exifInfo: {
|
||||
dateTimeOriginal: '2012-08-05T11:39:59.000Z',
|
||||
dateTimeOriginal: '2012-08-05T11:39:59+00:00',
|
||||
exifImageWidth: 512,
|
||||
exifImageHeight: 341,
|
||||
latitude: null,
|
||||
longitude: null,
|
||||
focalLength: 75,
|
||||
iso: 200,
|
||||
fNumber: 11,
|
||||
|
@ -1008,7 +1016,6 @@ describe('/asset', () => {
|
|||
fileSizeInByte: 53_493,
|
||||
make: 'SONY',
|
||||
model: 'DSLR-A550',
|
||||
orientation: null,
|
||||
description: 'SONY DSC',
|
||||
},
|
||||
},
|
||||
|
@ -1023,8 +1030,6 @@ describe('/asset', () => {
|
|||
exifImageHeight: 1080,
|
||||
exifImageWidth: 1440,
|
||||
fileSizeInByte: 1_780_777,
|
||||
latitude: null,
|
||||
longitude: null,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -1035,7 +1040,7 @@ describe('/asset', () => {
|
|||
originalFileName: 'IMG_2682.heic',
|
||||
fileCreatedAt: '2019-03-21T16:04:22.348Z',
|
||||
exifInfo: {
|
||||
dateTimeOriginal: '2019-03-21T16:04:22.348Z',
|
||||
dateTimeOriginal: '2019-03-21T16:04:22.348+00:00',
|
||||
exifImageWidth: 4032,
|
||||
exifImageHeight: 3024,
|
||||
latitude: 41.2203,
|
||||
|
@ -1060,8 +1065,6 @@ describe('/asset', () => {
|
|||
exifInfo: {
|
||||
exifImageWidth: 800,
|
||||
exifImageHeight: 800,
|
||||
latitude: null,
|
||||
longitude: null,
|
||||
fileSizeInByte: 25_408,
|
||||
},
|
||||
},
|
||||
|
@ -1080,9 +1083,7 @@ describe('/asset', () => {
|
|||
focalLength: 18,
|
||||
iso: 100,
|
||||
fileSizeInByte: 9_057_784,
|
||||
dateTimeOriginal: '2010-07-20T17:27:12.000Z',
|
||||
latitude: null,
|
||||
longitude: null,
|
||||
dateTimeOriginal: '2010-07-20T17:27:12+00:00',
|
||||
orientation: '1',
|
||||
},
|
||||
},
|
||||
|
@ -1101,9 +1102,7 @@ describe('/asset', () => {
|
|||
focalLength: 85,
|
||||
iso: 200,
|
||||
fileSizeInByte: 15_856_335,
|
||||
dateTimeOriginal: '2016-09-22T21:10:29.060Z',
|
||||
latitude: null,
|
||||
longitude: null,
|
||||
dateTimeOriginal: '2016-09-22T21:10:29.06+00:00',
|
||||
orientation: '1',
|
||||
timeZone: 'UTC-4',
|
||||
},
|
||||
|
@ -1125,9 +1124,7 @@ describe('/asset', () => {
|
|||
focalLength: 35,
|
||||
iso: 400,
|
||||
fileSizeInByte: 19_587_072,
|
||||
dateTimeOriginal: '2018-05-10T08:42:37.842Z',
|
||||
latitude: null,
|
||||
longitude: null,
|
||||
dateTimeOriginal: '2018-05-10T08:42:37.842+00:00',
|
||||
orientation: '1',
|
||||
},
|
||||
},
|
||||
|
@ -1149,9 +1146,7 @@ describe('/asset', () => {
|
|||
iso: 100,
|
||||
lensModel: 'E PZ 18-105mm F4 G OSS',
|
||||
fileSizeInByte: 25_001_984,
|
||||
dateTimeOriginal: '2016-09-27T10:51:44.000Z',
|
||||
latitude: null,
|
||||
longitude: null,
|
||||
dateTimeOriginal: '2016-09-27T10:51:44+00:00',
|
||||
orientation: '1',
|
||||
},
|
||||
},
|
||||
|
@ -1173,9 +1168,7 @@ describe('/asset', () => {
|
|||
iso: 100,
|
||||
lensModel: 'E 25mm F2',
|
||||
fileSizeInByte: 49_512_448,
|
||||
dateTimeOriginal: '2016-01-08T14:08:01.000Z',
|
||||
latitude: null,
|
||||
longitude: null,
|
||||
dateTimeOriginal: '2016-01-08T14:08:01+00:00',
|
||||
orientation: '1',
|
||||
},
|
||||
},
|
||||
|
@ -1197,7 +1190,7 @@ describe('/asset', () => {
|
|||
iso: 80,
|
||||
lensModel: null,
|
||||
fileSizeInByte: 11_113_617,
|
||||
dateTimeOriginal: '2015-12-27T09:55:40.000Z',
|
||||
dateTimeOriginal: '2015-12-27T09:55:40+00:00',
|
||||
latitude: null,
|
||||
longitude: null,
|
||||
orientation: '1',
|
||||
|
@ -1221,7 +1214,7 @@ describe('/asset', () => {
|
|||
iso: 160,
|
||||
lensModel: null,
|
||||
fileSizeInByte: 13_551_312,
|
||||
dateTimeOriginal: '2024-10-12T21:01:01.000Z',
|
||||
dateTimeOriginal: '2024-10-12T21:01:01+00:00',
|
||||
latitude: null,
|
||||
longitude: null,
|
||||
orientation: '6',
|
||||
|
@ -1235,7 +1228,7 @@ describe('/asset', () => {
|
|||
originalFileName: 'Ricoh_GR3-450.DNG',
|
||||
fileCreatedAt: '2024-06-08T13:48:39.000Z',
|
||||
exifInfo: {
|
||||
dateTimeOriginal: '2024-06-08T13:48:39.000Z',
|
||||
dateTimeOriginal: '2024-06-08T13:48:39+00:00',
|
||||
exifImageHeight: 4064,
|
||||
exifImageWidth: 6112,
|
||||
exposureTime: '1/400',
|
||||
|
|
|
@ -93,8 +93,6 @@ describe('/memories', () => {
|
|||
data: { year: 2021 },
|
||||
createdAt: expect.any(String),
|
||||
updatedAt: expect.any(String),
|
||||
deletedAt: null,
|
||||
seenAt: null,
|
||||
isSaved: false,
|
||||
memoryAt: expect.any(String),
|
||||
ownerId: user.userId,
|
||||
|
|
|
@ -13,8 +13,8 @@ import request from 'supertest';
|
|||
import { beforeAll, describe, expect, it } from 'vitest';
|
||||
|
||||
const authServer = {
|
||||
internal: 'http://auth-server:3000',
|
||||
external: 'http://127.0.0.1:3000',
|
||||
internal: 'http://auth-server:2286',
|
||||
external: 'http://127.0.0.1:2286',
|
||||
};
|
||||
|
||||
const mobileOverrideRedirectUri = 'https://photos.immich.app/oauth/mobile-redirect';
|
||||
|
|
|
@ -200,7 +200,7 @@ describe('/people', () => {
|
|||
expect(body).toMatchObject({
|
||||
id: expect.any(String),
|
||||
name: 'New Person',
|
||||
birthDate: '1990-01-01',
|
||||
birthDate: '1990-01-01T00:00:00.000Z',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -244,7 +244,7 @@ describe('/people', () => {
|
|||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send({ birthDate: '1990-01-01' });
|
||||
expect(status).toBe(200);
|
||||
expect(body).toMatchObject({ birthDate: '1990-01-01' });
|
||||
expect(body).toMatchObject({ birthDate: '1990-01-01T00:00:00.000Z' });
|
||||
});
|
||||
|
||||
it('should clear a date of birth', async () => {
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import { AssetMediaResponseDto, LoginResponseDto, deleteAssets, updateAsset } from '@immich/sdk';
|
||||
import { AssetMediaResponseDto, AssetResponseDto, deleteAssets, LoginResponseDto, updateAsset } from '@immich/sdk';
|
||||
import { DateTime } from 'luxon';
|
||||
import { readFile } from 'node:fs/promises';
|
||||
import { join } from 'node:path';
|
||||
import { Socket } from 'socket.io-client';
|
||||
import { errorDto } from 'src/responses';
|
||||
import { app, asBearerAuth, testAssetDir, utils } from 'src/utils';
|
||||
import { app, asBearerAuth, TEN_TIMES, testAssetDir, utils } from 'src/utils';
|
||||
import request from 'supertest';
|
||||
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
||||
const today = DateTime.now();
|
||||
|
@ -462,6 +462,55 @@ describe('/search', () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe('POST /search/random', () => {
|
||||
beforeAll(async () => {
|
||||
await Promise.all([
|
||||
utils.createAsset(admin.accessToken),
|
||||
utils.createAsset(admin.accessToken),
|
||||
utils.createAsset(admin.accessToken),
|
||||
utils.createAsset(admin.accessToken),
|
||||
utils.createAsset(admin.accessToken),
|
||||
utils.createAsset(admin.accessToken),
|
||||
]);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'thumbnailGeneration');
|
||||
});
|
||||
|
||||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).post('/search/random').send({ size: 1 });
|
||||
|
||||
expect(status).toBe(401);
|
||||
expect(body).toEqual(errorDto.unauthorized);
|
||||
});
|
||||
|
||||
it.each(TEN_TIMES)('should return 1 random assets', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.post('/search/random')
|
||||
.send({ size: 1 })
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
|
||||
expect(status).toBe(200);
|
||||
|
||||
const assets: AssetResponseDto[] = body;
|
||||
expect(assets.length).toBe(1);
|
||||
expect(assets[0].ownerId).toBe(admin.userId);
|
||||
});
|
||||
|
||||
it.each(TEN_TIMES)('should return 2 random assets', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.post('/search/random')
|
||||
.send({ size: 2 })
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
|
||||
expect(status).toBe(200);
|
||||
|
||||
const assets: AssetResponseDto[] = body;
|
||||
expect(assets.length).toBe(2);
|
||||
expect(assets[0].ownerId).toBe(admin.userId);
|
||||
expect(assets[1].ownerId).toBe(admin.userId);
|
||||
});
|
||||
});
|
||||
|
||||
describe('GET /search/explore', () => {
|
||||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).get('/search/explore');
|
||||
|
|
|
@ -170,7 +170,7 @@ describe('/shared-links', () => {
|
|||
expect(status).toBe(200);
|
||||
expect(body).toEqual(
|
||||
expect.objectContaining({
|
||||
album,
|
||||
album: expect.objectContaining({ id: album.id }),
|
||||
userId: user1.userId,
|
||||
type: SharedLinkType.Album,
|
||||
}),
|
||||
|
@ -208,7 +208,7 @@ describe('/shared-links', () => {
|
|||
expect(status).toBe(200);
|
||||
expect(body).toEqual(
|
||||
expect.objectContaining({
|
||||
album,
|
||||
album: expect.objectContaining({ id: album.id }),
|
||||
userId: user1.userId,
|
||||
type: SharedLinkType.Album,
|
||||
}),
|
||||
|
@ -262,7 +262,7 @@ describe('/shared-links', () => {
|
|||
expect(status).toBe(200);
|
||||
expect(body).toEqual(
|
||||
expect.objectContaining({
|
||||
album,
|
||||
album: expect.objectContaining({ id: album.id }),
|
||||
userId: user1.userId,
|
||||
type: SharedLinkType.Album,
|
||||
}),
|
||||
|
|
|
@ -119,93 +119,84 @@ describe('/stacks', () => {
|
|||
const stacksAfter = await searchStacks({}, { headers: asBearerAuth(user1.accessToken) });
|
||||
expect(stacksAfter.length).toBe(stacksBefore.length);
|
||||
});
|
||||
|
||||
// it('should require a valid parent id', async () => {
|
||||
// const { status, body } = await request(app)
|
||||
// .put('/assets')
|
||||
// .set('Authorization', `Bearer ${user1.accessToken}`)
|
||||
// .send({ stackParentId: uuidDto.invalid, ids: [stackAssets[0].id] });
|
||||
|
||||
// expect(status).toBe(400);
|
||||
// expect(body).toEqual(errorDto.badRequest(['stackParentId must be a UUID']));
|
||||
// });
|
||||
});
|
||||
|
||||
// it('should require access to the parent', async () => {
|
||||
// const { status, body } = await request(app)
|
||||
// .put('/assets')
|
||||
// .set('Authorization', `Bearer ${user1.accessToken}`)
|
||||
// .send({ stackParentId: stackAssets[3].id, ids: [user1Assets[0].id] });
|
||||
describe('GET /assets/:id', () => {
|
||||
it('should include stack details for the primary asset', async () => {
|
||||
const [asset1, asset2] = await Promise.all([
|
||||
utils.createAsset(user1.accessToken),
|
||||
utils.createAsset(user1.accessToken),
|
||||
]);
|
||||
|
||||
// expect(status).toBe(400);
|
||||
// expect(body).toEqual(errorDto.noPermission);
|
||||
// });
|
||||
await utils.createStack(user1.accessToken, [asset1.id, asset2.id]);
|
||||
|
||||
// it('should add stack children', async () => {
|
||||
// const { status } = await request(app)
|
||||
// .put('/assets')
|
||||
// .set('Authorization', `Bearer ${stackUser.accessToken}`)
|
||||
// .send({ stackParentId: stackAssets[0].id, ids: [stackAssets[3].id] });
|
||||
const { status, body } = await request(app)
|
||||
.get(`/assets/${asset1.id}`)
|
||||
.set('Authorization', `Bearer ${user1.accessToken}`);
|
||||
|
||||
// expect(status).toBe(204);
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual(
|
||||
expect.objectContaining({
|
||||
id: asset1.id,
|
||||
stack: {
|
||||
id: expect.any(String),
|
||||
assetCount: 2,
|
||||
primaryAssetId: asset1.id,
|
||||
},
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
// const asset = await getAssetInfo({ id: stackAssets[0].id }, { headers: asBearerAuth(stackUser.accessToken) });
|
||||
// expect(asset.stack).not.toBeUndefined();
|
||||
// expect(asset.stack).toEqual(expect.arrayContaining([expect.objectContaining({ id: stackAssets[3].id })]));
|
||||
// });
|
||||
it('should include stack details for a non-primary asset', async () => {
|
||||
const [asset1, asset2] = await Promise.all([
|
||||
utils.createAsset(user1.accessToken),
|
||||
utils.createAsset(user1.accessToken),
|
||||
]);
|
||||
|
||||
// it('should remove stack children', async () => {
|
||||
// const { status } = await request(app)
|
||||
// .put('/assets')
|
||||
// .set('Authorization', `Bearer ${stackUser.accessToken}`)
|
||||
// .send({ removeParent: true, ids: [stackAssets[1].id] });
|
||||
await utils.createStack(user1.accessToken, [asset1.id, asset2.id]);
|
||||
|
||||
// expect(status).toBe(204);
|
||||
const { status, body } = await request(app)
|
||||
.get(`/assets/${asset2.id}`)
|
||||
.set('Authorization', `Bearer ${user1.accessToken}`);
|
||||
|
||||
// const asset = await getAssetInfo({ id: stackAssets[0].id }, { headers: asBearerAuth(stackUser.accessToken) });
|
||||
// expect(asset.stack).not.toBeUndefined();
|
||||
// expect(asset.stack).toEqual(
|
||||
// expect.arrayContaining([
|
||||
// expect.objectContaining({ id: stackAssets[2].id }),
|
||||
// expect.objectContaining({ id: stackAssets[3].id }),
|
||||
// ]),
|
||||
// );
|
||||
// });
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual(
|
||||
expect.objectContaining({
|
||||
id: asset2.id,
|
||||
stack: {
|
||||
id: expect.any(String),
|
||||
assetCount: 2,
|
||||
primaryAssetId: asset1.id,
|
||||
},
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
// it('should remove all stack children', async () => {
|
||||
// const { status } = await request(app)
|
||||
// .put('/assets')
|
||||
// .set('Authorization', `Bearer ${stackUser.accessToken}`)
|
||||
// .send({ removeParent: true, ids: [stackAssets[2].id, stackAssets[3].id] });
|
||||
describe('GET /stacks/:id', () => {
|
||||
it('should include exifInfo in stack assets', async () => {
|
||||
const [asset1, asset2] = await Promise.all([
|
||||
utils.createAsset(user1.accessToken),
|
||||
utils.createAsset(user1.accessToken),
|
||||
]);
|
||||
|
||||
// expect(status).toBe(204);
|
||||
const stack = await utils.createStack(user1.accessToken, [asset1.id, asset2.id]);
|
||||
|
||||
// const asset = await getAssetInfo({ id: stackAssets[0].id }, { headers: asBearerAuth(stackUser.accessToken) });
|
||||
// expect(asset.stack).toBeUndefined();
|
||||
// });
|
||||
const { status, body } = await request(app)
|
||||
.get(`/stacks/${stack.id}`)
|
||||
.set('Authorization', `Bearer ${user1.accessToken}`);
|
||||
|
||||
// it('should merge stack children', async () => {
|
||||
// // create stack after previous test removed stack children
|
||||
// await updateAssets(
|
||||
// { assetBulkUpdateDto: { stackParentId: stackAssets[0].id, ids: [stackAssets[1].id, stackAssets[2].id] } },
|
||||
// { headers: asBearerAuth(stackUser.accessToken) },
|
||||
// );
|
||||
|
||||
// const { status } = await request(app)
|
||||
// .put('/assets')
|
||||
// .set('Authorization', `Bearer ${stackUser.accessToken}`)
|
||||
// .send({ stackParentId: stackAssets[3].id, ids: [stackAssets[0].id] });
|
||||
|
||||
// expect(status).toBe(204);
|
||||
|
||||
// const asset = await getAssetInfo({ id: stackAssets[3].id }, { headers: asBearerAuth(stackUser.accessToken) });
|
||||
// expect(asset.stack).not.toBeUndefined();
|
||||
// expect(asset.stack).toEqual(
|
||||
// expect.arrayContaining([
|
||||
// expect.objectContaining({ id: stackAssets[0].id }),
|
||||
// expect.objectContaining({ id: stackAssets[1].id }),
|
||||
// expect.objectContaining({ id: stackAssets[2].id }),
|
||||
// ]),
|
||||
// );
|
||||
// });
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual(
|
||||
expect.objectContaining({
|
||||
id: stack.id,
|
||||
primaryAssetId: asset1.id,
|
||||
assets: expect.arrayContaining([
|
||||
expect.objectContaining({ id: asset1.id, exifInfo: expect.any(Object) }),
|
||||
expect.objectContaining({ id: asset2.id, exifInfo: expect.any(Object) }),
|
||||
]),
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -151,7 +151,7 @@ describe('/timeline', () => {
|
|||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).get('/timeline/bucket').query({
|
||||
size: TimeBucketSize.Month,
|
||||
timeBucket: '1900-01-01T00:00:00.000Z',
|
||||
timeBucket: '1900-01-01',
|
||||
});
|
||||
|
||||
expect(status).toBe(401);
|
||||
|
@ -161,7 +161,7 @@ describe('/timeline', () => {
|
|||
it('should handle 5 digit years', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/timeline/bucket')
|
||||
.query({ size: TimeBucketSize.Month, timeBucket: '+012345-01-01T00:00:00.000Z' })
|
||||
.query({ size: TimeBucketSize.Month, timeBucket: '012345-01-01' })
|
||||
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`);
|
||||
|
||||
expect(status).toBe(200);
|
||||
|
@ -183,7 +183,7 @@ describe('/timeline', () => {
|
|||
const { status, body } = await request(app)
|
||||
.get('/timeline/bucket')
|
||||
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`)
|
||||
.query({ size: TimeBucketSize.Month, timeBucket: '1970-02-10T00:00:00.000Z' });
|
||||
.query({ size: TimeBucketSize.Month, timeBucket: '1970-02-10' });
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual([]);
|
||||
|
|
|
@ -129,6 +129,8 @@ describe('/users', () => {
|
|||
expect(body).toEqual({
|
||||
...before,
|
||||
updatedAt: expect.any(String),
|
||||
profileChangedAt: expect.any(String),
|
||||
createdAt: expect.any(String),
|
||||
name: 'Name',
|
||||
});
|
||||
});
|
||||
|
@ -177,6 +179,8 @@ describe('/users', () => {
|
|||
...before,
|
||||
email: 'non-admin@immich.cloud',
|
||||
updatedAt: expect.anything(),
|
||||
createdAt: expect.anything(),
|
||||
profileChangedAt: expect.anything(),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -51,7 +51,7 @@ const setup = async () => {
|
|||
const { privateKey, publicKey } = await generateKeyPair('RS256');
|
||||
|
||||
const redirectUris = ['http://127.0.0.1:2285/auth/login', 'https://photos.immich.app/oauth/mobile-redirect'];
|
||||
const port = 3000;
|
||||
const port = 2286;
|
||||
const host = '0.0.0.0';
|
||||
const oidc = new Provider(`http://${host}:${port}`, {
|
||||
renderError: async (ctx, out, error) => {
|
||||
|
|
|
@ -76,6 +76,7 @@ export const immichCli = (args: string[]) =>
|
|||
export const immichAdmin = (args: string[]) =>
|
||||
executeCommand('docker', ['exec', '-i', 'immich-e2e-server', '/bin/bash', '-c', `immich-admin ${args.join(' ')}`]);
|
||||
export const specialCharStrings = ["'", '"', ',', '{', '}', '*'];
|
||||
export const TEN_TIMES = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
||||
|
||||
const executeCommand = (command: string, args: string[]) => {
|
||||
let _resolve: (value: CommandResponse) => void;
|
||||
|
|
|
@ -6,7 +6,7 @@ import {
|
|||
SharedLinkType,
|
||||
createAlbum,
|
||||
} from '@immich/sdk';
|
||||
import { test } from '@playwright/test';
|
||||
import { expect, test } from '@playwright/test';
|
||||
import { asBearerAuth, utils } from 'src/utils';
|
||||
|
||||
test.describe('Shared Links', () => {
|
||||
|
@ -65,6 +65,38 @@ test.describe('Shared Links', () => {
|
|||
await page.getByRole('heading', { name: 'Test Album' }).waitFor();
|
||||
});
|
||||
|
||||
test('show-password button visible', async ({ page }) => {
|
||||
await page.goto(`/share/${sharedLinkPassword.key}`);
|
||||
await page.getByPlaceholder('Password').fill('test-password');
|
||||
await page.getByRole('button', { name: 'Show password' }).waitFor();
|
||||
});
|
||||
|
||||
test('view password for shared link', async ({ page }) => {
|
||||
await page.goto(`/share/${sharedLinkPassword.key}`);
|
||||
const input = page.getByPlaceholder('Password');
|
||||
await input.fill('test-password');
|
||||
await page.getByRole('button', { name: 'Show password' }).click();
|
||||
// await page.getByText('test-password', { exact: true }).waitFor();
|
||||
await expect(input).toHaveAttribute('type', 'text');
|
||||
});
|
||||
|
||||
test('hide-password button visible', async ({ page }) => {
|
||||
await page.goto(`/share/${sharedLinkPassword.key}`);
|
||||
const input = page.getByPlaceholder('Password');
|
||||
await input.fill('test-password');
|
||||
await page.getByRole('button', { name: 'Show password' }).click();
|
||||
await page.getByRole('button', { name: 'Hide password' }).waitFor();
|
||||
});
|
||||
|
||||
test('hide password for shared link', async ({ page }) => {
|
||||
await page.goto(`/share/${sharedLinkPassword.key}`);
|
||||
const input = page.getByPlaceholder('Password');
|
||||
await input.fill('test-password');
|
||||
await page.getByRole('button', { name: 'Show password' }).click();
|
||||
await page.getByRole('button', { name: 'Hide password' }).click();
|
||||
await expect(input).toHaveAttribute('type', 'password');
|
||||
});
|
||||
|
||||
test('show error for invalid shared link', async ({ page }) => {
|
||||
await page.goto('/share/invalid');
|
||||
await page.getByRole('heading', { name: 'Invalid share key' }).waitFor();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"about": "حول",
|
||||
"about": "من نحن",
|
||||
"account": "الحساب",
|
||||
"account_settings": "إعدادات الحساب",
|
||||
"acknowledge": "أُدرك ذلك",
|
||||
|
|
22
i18n/bg.json
22
i18n/bg.json
|
@ -437,8 +437,8 @@
|
|||
"birthdate_set_description": "Датата на раждане се използва за изчисляване на възрастта на този човек към момента на снимката.",
|
||||
"blurred_background": "Замъглен заден фон",
|
||||
"bugs_and_feature_requests": "Бъгове и заявки за функции",
|
||||
"build": "Създаване",
|
||||
"build_image": "Създаване на изображение",
|
||||
"build": "Версия",
|
||||
"build_image": "Docker версия",
|
||||
"bulk_delete_duplicates_confirmation": "Сигурни ли сте, че искате да изтриете масово {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще запази най-големия файл от всяка група и ще изтрие трайно всички други дубликати. Не можете да отмените това действие!",
|
||||
"bulk_keep_duplicates_confirmation": "Сигурни ли сте, че искате да запазите {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще потвърди всички групи дубликати, без да изтрива нищо.",
|
||||
"bulk_trash_duplicates_confirmation": "Сигурни ли сте, че искате да преместите в кошчето масово {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще запази най-големия файл от всяка група и ще премести в кошчето всички други дубликати.",
|
||||
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Период от време",
|
||||
"day": "Ден",
|
||||
"deduplicate_all": "Дедупликиране на всички",
|
||||
"deduplication_criteria_1": "Размер на снимката в байтове",
|
||||
"deduplication_criteria_2": "Брой EXIF данни",
|
||||
"deduplication_info": "Информация за дедупликацията",
|
||||
"deduplication_info_description": "За автоматично предварително избиране на ресурси и премахване на дубликати на едро, разглеждаме:",
|
||||
"default_locale": "Локализация по подразбиране",
|
||||
"default_locale_description": "Форматиране на дати и числа в зависимост от местоположението на браузъра",
|
||||
"delete": "Изтрий",
|
||||
|
@ -669,7 +673,7 @@
|
|||
"unable_to_download_files": "Не могат да се изтеглят файловете",
|
||||
"unable_to_edit_exclusion_pattern": "Не може да се редактира шаблон за изключване",
|
||||
"unable_to_edit_import_path": "Пътят за импортиране не може да се редактира",
|
||||
"unable_to_empty_trash": "Не може да изпразни кошчето",
|
||||
"unable_to_empty_trash": "Неуспешно изпразване на кошчето",
|
||||
"unable_to_enter_fullscreen": "Не може да се отвори в цял екран",
|
||||
"unable_to_exit_fullscreen": "Не може да излезе от цял екран",
|
||||
"unable_to_get_comments_number": "Не може да получи брой коментари",
|
||||
|
@ -765,7 +769,7 @@
|
|||
"group_no": "Няма група",
|
||||
"group_owner": "Групиране по собственик",
|
||||
"group_year": "Групиране по година",
|
||||
"has_quota": "Има лимит",
|
||||
"has_quota": "Лимит",
|
||||
"hi_user": "Здравей, {name} {email}",
|
||||
"hide_all_people": "Скрий всички хора",
|
||||
"hide_gallery": "Скрий галерия",
|
||||
|
@ -1009,7 +1013,7 @@
|
|||
"purchase_button_select": "Избери",
|
||||
"purchase_failed_activation": "Неуспешна активация! Моля, проверете имейла си за правилния продуктов ключ!",
|
||||
"purchase_individual_description_1": "За индивидуален потребител",
|
||||
"purchase_individual_description_2": "Поддръжнически статус",
|
||||
"purchase_individual_description_2": "Статус на поддръжник",
|
||||
"purchase_individual_title": "Индивидуален",
|
||||
"purchase_input_suggestion": "Имате продуктов ключ? Въведете ключа по-долу",
|
||||
"purchase_license_subtitle": "Закупете Immich, за да подкрепите продължаващото развитие на услугата",
|
||||
|
@ -1025,7 +1029,7 @@
|
|||
"purchase_remove_server_product_key": "Премахни продуктовия ключ на сървъра",
|
||||
"purchase_remove_server_product_key_prompt": "Сигурни ли сте, че искате да премахнете продуктовия ключ на сървъра?",
|
||||
"purchase_server_description_1": "За целият сървър",
|
||||
"purchase_server_description_2": "Статус на поддръжника",
|
||||
"purchase_server_description_2": "Статус на поддръжник",
|
||||
"purchase_server_title": "Сървър",
|
||||
"purchase_settings_server_activated": "Продуктовият ключ на сървъра се управлява от администратора",
|
||||
"rating": "Оценка със звезди",
|
||||
|
@ -1205,7 +1209,7 @@
|
|||
"sort_people_by_similarity": "Сортиране на хора по прилика",
|
||||
"sort_recent": "Най-новата снимка",
|
||||
"sort_title": "Заглавие",
|
||||
"source": "Източник",
|
||||
"source": "Код",
|
||||
"stack": "Събери",
|
||||
"stack_duplicates": "Подреждане на дубликати",
|
||||
"stack_select_one_photo": "Избери една главна снимка за събраните снимки",
|
||||
|
@ -1258,9 +1262,9 @@
|
|||
"toggle_theme": "Превключване на тема",
|
||||
"total": "Общо",
|
||||
"total_usage": "Общо използвано",
|
||||
"trash": "кошче",
|
||||
"trash": "Кошче",
|
||||
"trash_all": "Изхвърли всички",
|
||||
"trash_count": "Кошче {count, number}",
|
||||
"trash_count": "В Кошчето {count, number}",
|
||||
"trash_delete_asset": "Вкарай в Кошчето/Изтрий елемент",
|
||||
"trash_no_results_message": "Изтритите снимки и видеоклипове ще се показват тук.",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Изхвърлените в кошчето елементи ще бъдат изтрити за постоянно след {days, plural, one {# ден} other {# дни}}.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"about": "Sobre",
|
||||
"about": "Quant a",
|
||||
"account": "Compte",
|
||||
"account_settings": "Configuració del compte",
|
||||
"acknowledge": "D'acord",
|
||||
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Interval de dates",
|
||||
"day": "Dia",
|
||||
"deduplicate_all": "Desduplica-ho tot",
|
||||
"deduplication_criteria_1": "Mida d'imatge en bytes",
|
||||
"deduplication_criteria_2": "Quantitat de dades EXIF",
|
||||
"deduplication_info": "Informació de deduplicació",
|
||||
"deduplication_info_description": "Per preseleccionar recursos automàticament i eliminar els duplicats de manera massiva, ens fixem en:",
|
||||
"default_locale": "Localització predeterminada",
|
||||
"default_locale_description": "Format de dates i números segons la configuració del navegador",
|
||||
"delete": "Esborra",
|
||||
|
|
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Rozsah dat",
|
||||
"day": "Den",
|
||||
"deduplicate_all": "Odstranit všechny duplicity",
|
||||
"deduplication_criteria_1": "Velikost obrázku v bajtech",
|
||||
"deduplication_criteria_2": "Počet EXIF dat",
|
||||
"deduplication_info": "Informace o deduplikaci",
|
||||
"deduplication_info_description": "Pro automatický předvýběr položek a hromadné odstranění duplicit se zohledňuje:",
|
||||
"default_locale": "Výchozí jazyk",
|
||||
"default_locale_description": "Formátovat datumy a čísla podle místního prostředí prohlížeče",
|
||||
"delete": "Smazat",
|
||||
|
@ -921,7 +925,7 @@
|
|||
"oldest_first": "Nejstarší první",
|
||||
"onboarding": "Zahájení",
|
||||
"onboarding_privacy_description": "Následující (volitelné) funkce jsou závislé na externích službách a lze je kdykoli zakázat v nastavení správy.",
|
||||
"onboarding_theme_description": "Zvolte si barevné téma pro svou instanci. Můžete to později změnit v nastavení.",
|
||||
"onboarding_theme_description": "Zvolte si barevný motiv pro svou instanci. Můžete to později změnit v nastavení.",
|
||||
"onboarding_welcome_description": "Nastavíme vaši instanci pomocí několika běžných nastavení.",
|
||||
"onboarding_welcome_user": "Vítej, {user}",
|
||||
"online": "Online",
|
||||
|
@ -1282,7 +1286,7 @@
|
|||
"unselect_all": "Zrušit výběr všech",
|
||||
"unselect_all_duplicates": "Zrušit výběr všech duplicit",
|
||||
"unstack": "Zrušit seskupení",
|
||||
"unstacked_assets_count": "{count, plural, one {Rozložena # položka} few {Rozloženy # položky} other {Rozloženo # položek}}",
|
||||
"unstacked_assets_count": "{count, plural, one {Rozložená # položka} few {Rozložené # položky} other {Rozložených # položiek}}",
|
||||
"untracked_files": "Nesledované soubory",
|
||||
"untracked_files_decription": "Tyto soubory nejsou aplikaci známy. Mohou být výsledkem neúspěšných přesunů, přerušeného nahrávání nebo mohou zůstat pozadu kvůli chybě",
|
||||
"up_next": "To je prozatím vše",
|
||||
|
|
13
i18n/cv.json
13
i18n/cv.json
|
@ -50,8 +50,16 @@
|
|||
"map_gps_settings_description": "Карттӑпа GPS (каялла геоюмлани) ӗнерленисене йӗркелесе тӑрӑр",
|
||||
"map_settings": "Карттӑ"
|
||||
},
|
||||
"albums": "Албумсем",
|
||||
"albums_count": "{count, plural, one {{count, number} албум} other {{count, number} албумсем}}",
|
||||
"all": "Пурте",
|
||||
"all_albums": "Пурте албумсем",
|
||||
"explore": "Тишкер",
|
||||
"explorer": "Тишкерӳҫӗ",
|
||||
"favorite": "Юратнӑ",
|
||||
"favorite_or_unfavorite_photo": "Юратнӑ е юратман сӑнӳкерчӗк",
|
||||
"favorites": "Юратнисем",
|
||||
"feature_photo_updated": "Уйрӑм сӑнӳкерчӗк ҫӗнетнӗ",
|
||||
"manage_sharing_with_partners": "Партнерсемпе пайланассине йӗркелесе пырӑр",
|
||||
"map": "Карттӑ",
|
||||
"map_marker_for_images": "{city}, {country} ҫинче ӳкернӗ ӳкерчӗксем валли карттӑ маркерӗ",
|
||||
|
@ -60,10 +68,15 @@
|
|||
"no_explore_results_message": "Хӑвӑр коллекципе киленмешкӗн сӑнӳкерчӗксем ытларах тийӗр.",
|
||||
"open_in_openstreetmap": "OpenStreetMap-па уҫ",
|
||||
"partner_sharing": "Партнер пайланӑвӗ",
|
||||
"people": "Ҫынсем",
|
||||
"photos": "Сӑнӳкерчӗксем",
|
||||
"photos_and_videos": "Сӑнӳкерчӗксем тете Видеосем",
|
||||
"photos_count": "{count, plural, one {{count, number} Сӑнӳкерчӗк} other {{count, number} Сӑнӳкерчӗксем}}",
|
||||
"photos_from_previous_years": "Иртнӗ ҫулсенчи сӑнӳкерчӗксем",
|
||||
"place": "Тӗл",
|
||||
"places": "Тӗлсем",
|
||||
"play": "Выля",
|
||||
"play_memories": "Асаилӳсем выля",
|
||||
"search_your_photos": "Сӑнӳкерчӗксене шырӑр",
|
||||
"select_photos": "Сӑнӳкерчӗксем суйлӑр",
|
||||
"sharing": "Пайлани",
|
||||
|
|
10
i18n/da.json
10
i18n/da.json
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Datointerval",
|
||||
"day": "Dag",
|
||||
"deduplicate_all": "Dedupliker alle",
|
||||
"deduplication_criteria_1": "Billedstørrelse i bytes",
|
||||
"deduplication_criteria_2": "Antal EXIF-data",
|
||||
"deduplication_info": "Deduplikerings info",
|
||||
"deduplication_info_description": "For automatisk at forudvælge emner og fjerne dubletter i bulk ser vi på:",
|
||||
"default_locale": "Standardlokalitet",
|
||||
"default_locale_description": "Formatér datoer og tal",
|
||||
"delete": "Slet",
|
||||
|
@ -644,6 +648,7 @@
|
|||
"unable_to_add_partners": "Ikke i stand til at tilføje partnere",
|
||||
"unable_to_add_remove_archive": "Kan Ikke {archived, select, true {fjerne aktiv fra} other {tilføje aktiv til}} Arkiv",
|
||||
"unable_to_add_remove_favorites": "Kan ikke {favorite, select, true {tilføje aktiv til} other {fjerne aktiv fra}} favoritter",
|
||||
"unable_to_archive_unarchive": "Ude af stand til at {arkiveret, vælg, sand {arkiv} andet {arkiv}}",
|
||||
"unable_to_change_album_user_role": "Ikke i stand til at ændre albumbrugerens rolle",
|
||||
"unable_to_change_date": "Ikke i stand til at ændre dato",
|
||||
"unable_to_change_favorite": "Kan ikke ændre favorit for aktiv",
|
||||
|
@ -730,6 +735,7 @@
|
|||
"expired": "Udløbet",
|
||||
"expires_date": "Udløber {date}",
|
||||
"explore": "Udforsk",
|
||||
"explorer": "Udforske",
|
||||
"export": "Eksportér",
|
||||
"export_as_json": "Eksportér som JSON",
|
||||
"extension": "Udvidelse",
|
||||
|
@ -917,6 +923,7 @@
|
|||
"offline_paths_description": "Disse resultater kan være på grund af manuel sletning af filer, som ikke er en del af et eksternt bibliotek.",
|
||||
"ok": "Ok",
|
||||
"oldest_first": "Ældste først",
|
||||
"onboarding": "Onboarding",
|
||||
"onboarding_privacy_description": "Følgende (valgfrie) funktioner er afhængige af eksterne tjenester, og kan til enhver tid deaktiveres i administrationsindstillingerne.",
|
||||
"onboarding_theme_description": "Vælg et farvetema til din forekomst. Du kan ændre dette senere i dine indstillinger.",
|
||||
"onboarding_welcome_description": "Lad os få din instans sat op med nogle almindelige indstillinger.",
|
||||
|
@ -1249,6 +1256,7 @@
|
|||
"to_change_password": "Skift adgangskode",
|
||||
"to_favorite": "Gør til favorit",
|
||||
"to_login": "Login",
|
||||
"to_parent": "Gå op",
|
||||
"to_trash": "Papirkurv",
|
||||
"toggle_settings": "Slå indstillinger til eller fra",
|
||||
"toggle_theme": "Slå mørkt tema til eller fra",
|
||||
|
@ -1334,7 +1342,7 @@
|
|||
"warning": "Advarsel",
|
||||
"week": "Uge",
|
||||
"welcome": "Velkommen",
|
||||
"welcome_to_immich": "Velkommen til immich",
|
||||
"welcome_to_immich": "Velkommen til Immich",
|
||||
"year": "År",
|
||||
"years_ago": "{years, plural, one {# år} other {# år}} siden",
|
||||
"yes": "Ja",
|
||||
|
|
38
i18n/de.json
38
i18n/de.json
|
@ -34,7 +34,7 @@
|
|||
"authentication_settings_description": "Passwort-, OAuth- und sonstigen Authentifizierungseinstellungen verwalten",
|
||||
"authentication_settings_disable_all": "Bist du sicher, dass du alle Anmeldemethoden deaktivieren willst? Die Anmeldung wird vollständig deaktiviert.",
|
||||
"authentication_settings_reenable": "Nutze einen <link>Server-Befehl</link> zur Reaktivierung.",
|
||||
"background_task_job": "Hintergrund-Aufgaben",
|
||||
"background_task_job": "Hintergrundaufgaben",
|
||||
"backup_database": "Datenbank sichern",
|
||||
"backup_database_enable_description": "Sicherung der Datenbank aktivieren",
|
||||
"backup_keep_last_amount": "Anzahl der aufzubewahrenden früheren Sicherungen",
|
||||
|
@ -83,9 +83,9 @@
|
|||
"job_concurrency": "{job} (Anzahl gleichzeitiger Prozesse)",
|
||||
"job_created": "Aufgabe erstellt",
|
||||
"job_not_concurrency_safe": "Diese Aufgabe ist nicht parallelisierungssicher.",
|
||||
"job_settings": "Aufgaben-Einstellungen",
|
||||
"job_settings_description": "Gleichzeitige Aufgaben-Prozesse verwalten",
|
||||
"job_status": "Aufgaben-Status",
|
||||
"job_settings": "Aufgabeneinstellungen",
|
||||
"job_settings_description": "Die gleichzeitige Ausführung von Aufgaben verwalten",
|
||||
"job_status": "Aufgabenstatus",
|
||||
"jobs_delayed": "{jobCount, plural, other {# verzögert}}",
|
||||
"jobs_failed": "{jobCount, plural, other {# fehlgeschlagen}}",
|
||||
"library_created": "Bibliothek erstellt: {library}",
|
||||
|
@ -211,7 +211,7 @@
|
|||
"quota_size_gib": "Kontingent (GiB)",
|
||||
"refreshing_all_libraries": "Alle Bibliotheken aktualisieren",
|
||||
"registration": "Admin-Registrierung",
|
||||
"registration_description": "Da du der erste Benutzer im System bist, wirst du als Admin zugewiesen und bist für administrative Aufgaben zuständig. Weitere Benutzer werden von dir erstellt.",
|
||||
"registration_description": "Da du der erste Benutzer im System bist, wird dir die Rolle des Administrators zugewiesen, womit du für die Verwaltungsaufgaben verantwortlich bist. Weitere Benutzer werden von dir erstellt.",
|
||||
"repair_all": "Alle reparieren",
|
||||
"repair_matched_items": "{count, plural, one {# Eintrag} other {# Einträge}} gefunden",
|
||||
"repaired_items": "{count, plural, one {# Eintrag} other {# Einträge}} repariert",
|
||||
|
@ -287,10 +287,10 @@
|
|||
"transcoding_constant_quality_mode": "Modus für konstante Qualität",
|
||||
"transcoding_constant_quality_mode_description": "ICQ ist besser als CQP, aber einige Hardware-Beschleunigungsgeräte unterstützen diesen Modus nicht. Wenn diese Option gesetzt wird, wird der angegebene Modus bevorzugt, sobald qualitätsbasierte Kodierung verwendet wird. Wird von NVENC ignoriert, da es ICQ nicht unterstützt.",
|
||||
"transcoding_constant_rate_factor": "Faktor der konstanten Rate (-crf)",
|
||||
"transcoding_constant_rate_factor_description": "Video-Qualitätsstufe. Typische Werte sind 23 für H.264, 28 für HEVC, 31 für VP9 und 35 für AV1. Ein niedrigerer Wert ist besser, erzeugt aber größere Dateien.",
|
||||
"transcoding_constant_rate_factor_description": "Videoqualitätsstufe. Typische Werte sind 23 für H.264, 28 für HEVC, 31 für VP9 und 35 für AV1. Ein niedrigerer Wert ist besser, erzeugt aber größere Dateien.",
|
||||
"transcoding_disabled_description": "Videos nicht transkodieren, dies kann die Wiedergabe auf manchen Geräten beeinträchtigen",
|
||||
"transcoding_encoding_options": "Kodierungsoptionen",
|
||||
"transcoding_encoding_options_description": "Setze Codec, Auflösung, Qualität und andere Optionen für Kodierte Videos",
|
||||
"transcoding_encoding_options_description": "Setze Codec, Auflösung, Qualität und andere Optionen für kodierte Videos",
|
||||
"transcoding_hardware_acceleration": "Hardware-Beschleunigung",
|
||||
"transcoding_hardware_acceleration_description": "Experimentell; viel schneller, aber bei gleicher Bitrate mit geringerer Qualität",
|
||||
"transcoding_hardware_decoding": "Hardware-Dekodierung",
|
||||
|
@ -304,7 +304,7 @@
|
|||
"transcoding_max_keyframe_interval_description": "Legt den maximalen Frame-Abstand zwischen Keyframes fest. Niedrigere Werte verschlechtern die Komprimierungseffizienz, verbessern aber die Suchzeiten und können die Qualität in Szenen mit schnellen Bewegungen verbessern. Bei 0 wird dieser Wert automatisch eingestellt.",
|
||||
"transcoding_optimal_description": "Videos mit einer höheren Auflösung als der Zielauflösung oder in einem nicht akzeptierten Format",
|
||||
"transcoding_policy": "Transkodierungsrichtlinie",
|
||||
"transcoding_policy_description": "Bestimme, wann ein Video Transkodiert wird",
|
||||
"transcoding_policy_description": "Bestimme, wann ein Video transkodiert wird",
|
||||
"transcoding_preferred_hardware_device": "Bevorzugtes Hardwaregerät",
|
||||
"transcoding_preferred_hardware_device_description": "Gilt nur für VAAPI und QSV. Legt den für die Hardware-Transkodierung verwendeten dri-Node fest.",
|
||||
"transcoding_preset_preset": "Voreinstellung (-preset)",
|
||||
|
@ -312,14 +312,14 @@
|
|||
"transcoding_reference_frames": "Referenz-Frames",
|
||||
"transcoding_reference_frames_description": "Die Anzahl der Bilder, auf die bei der Komprimierung eines bestimmten Bildes Bezug genommen wird. Höhere Werte verbessern die Komprimierungseffizienz, verlangsamen aber die Kodierung. 0 setzt diesen Wert automatisch.",
|
||||
"transcoding_required_description": "Nur Videos in einem nicht akzeptierten Format",
|
||||
"transcoding_settings": "Video-Transkodierungseinstellungen",
|
||||
"transcoding_settings_description": "Auflösungs- und Kodierungsinformationen von Videodateien verwalten",
|
||||
"transcoding_settings": "Einstellungen für die Videotranskodierung",
|
||||
"transcoding_settings_description": "Verwalten welche Videos transkodiert werden und wie diese verarbeitet werden",
|
||||
"transcoding_target_resolution": "Ziel-Auflösung",
|
||||
"transcoding_target_resolution_description": "Höhere Auflösungen können mehr Details erhalten, benötigen aber mehr Zeit für die Codierung, haben größere Dateigrößen und können die Reaktionszeit der Anwendung beeinträchtigen.",
|
||||
"transcoding_temporal_aq": "Temporäre AQ",
|
||||
"transcoding_temporal_aq_description": "Gilt nur für NVENC. Verbessert die Qualität von Szenen mit hohem Detailreichtum und geringen Bewegungen. Dies ist möglicherweise nicht mit älteren Geräten kompatibel.",
|
||||
"transcoding_threads": "Threads",
|
||||
"transcoding_threads_description": "Höhere Werte führen zu einer schnelleren Codierung, lassen dem Server aber weniger Spielraum für die Verarbeitung anderer Aufgaben, solange dies aktiv ist. Dieser Wert sollte nicht höher sein als die Anzahl der CPU-Kerne. Nutzt die maximale Auslastung, wenn der Wert auf 0 gesetzt ist.",
|
||||
"transcoding_threads_description": "Höhere Werte führen zu einer schnelleren Kodierung, lassen dem Server jedoch weniger Spielraum für die Verarbeitung anderer Aufgaben im aktiven Zustand. Dieser Wert sollte nicht höher sein als die Anzahl der CPU-Kerne. Maximiert die Auslastung, wenn der Wert auf 0 gesetzt wird.",
|
||||
"transcoding_tone_mapping": "Farbton-Mapping",
|
||||
"transcoding_tone_mapping_description": "Versucht, das Aussehen von HDR-Videos bei der Konvertierung in SDR beizubehalten. Jeder Algorithmus geht unterschiedliche Kompromisse bei Farbe, Details und Helligkeit ein. Hable bewahrt Details, Mobius bewahrt die Farbe und Reinhard bewahrt die Helligkeit.",
|
||||
"transcoding_transcode_policy": "Transcodierungsrichtlinie",
|
||||
|
@ -328,11 +328,11 @@
|
|||
"transcoding_two_pass_encoding_setting_description": "Führt eine Transkodierung in zwei Durchgängen durch, um besser kodierte Videos zu erzeugen. Wenn die maximale Bitrate aktiviert ist (erforderlich für die Verwendung mit H.264 und HEVC), verwendet dieser Modus einen Bitratenbereich, der auf der maximalen Bitrate basiert, und ignoriert CRF. Für VP9 kann CRF verwendet werden, wenn die maximale Bitrate deaktiviert ist.",
|
||||
"transcoding_video_codec": "Video-Codec",
|
||||
"transcoding_video_codec_description": "VP9 hat eine hohe Effizienz und Webkompatibilität, braucht aber länger für die Transkodierung. HEVC bietet eine ähnliche Leistung, ist aber weniger web-kompatibel. H.264 ist weitgehend kompatibel und lässt sich schnell transkodieren, erzeugt aber viel größere Dateien. AV1 ist der effizienteste Codec, wird aber von älteren Geräten nicht unterstützt.",
|
||||
"trash_enabled_description": "Papierkorb-Funktionen aktivieren",
|
||||
"trash_enabled_description": "Papierkorbfunktionen aktivieren",
|
||||
"trash_number_of_days": "Anzahl der Tage",
|
||||
"trash_number_of_days_description": "Anzahl der Tage, welche die Objekte im Papierkorb verbleiben, bevor sie endgültig entfernt werden",
|
||||
"trash_settings": "Papierkorb-Einstellungen",
|
||||
"trash_settings_description": "Papierkorb-Einstellungen verwalten",
|
||||
"trash_settings": "Papierkorbeinstellungen",
|
||||
"trash_settings_description": "Papierkorbeinstellungen verwalten",
|
||||
"untracked_files": "Unverfolgte Dateien",
|
||||
"untracked_files_description": "Diese Dateien werden nicht von der Anwendung getrackt. Sie können das Ergebnis fehlgeschlagener Verschiebungen, unterbrochener Uploads oder aufgrund eines Fehlers sein",
|
||||
"user_cleanup_job": "Benutzer aufräumen",
|
||||
|
@ -346,8 +346,8 @@
|
|||
"user_password_reset_description": "Bitte gib dem Benutzer das temporäre Passwort und informiere ihn, dass das Passwort beim nächsten Login geändert werden muss.",
|
||||
"user_restore_description": "Das Konto von <b>{user}</b> wird wiederhergestellt.",
|
||||
"user_restore_scheduled_removal": "Wiederherstellung des Benutzers - geplante Entfernung am {date, date, long}",
|
||||
"user_settings": "Benutzer-Einstellungen",
|
||||
"user_settings_description": "Benutzer-Einstellungen verwalten",
|
||||
"user_settings": "Benutzereinstellungen",
|
||||
"user_settings_description": "Benutzereinstellungen verwalten",
|
||||
"user_successfully_removed": "Benutzer {email} wurde erfolgreich entfernt.",
|
||||
"version_check_enabled_description": "Versionsprüfung aktivieren",
|
||||
"version_check_implications": "Die Funktion zur Versionsprüfung basiert auf regelmäßiger Kommunikation mit GitHub.com",
|
||||
|
@ -523,10 +523,10 @@
|
|||
"date_range": "Datumsbereich",
|
||||
"day": "Tag",
|
||||
"deduplicate_all": "Alle Duplikate entfernen",
|
||||
"deduplication_info": "Deduplizierungsinformationen",
|
||||
"deduplication_info_description": "Für die automatische Datei-Vorauswahl und das Deduplizieren aller Dateien berücksichtigen wir:",
|
||||
"deduplication_criteria_1": "Bildgröße in Bytes",
|
||||
"deduplication_criteria_2": "Anzahl der EXIF-Daten",
|
||||
"deduplication_info": "Deduplizierungsinformationen",
|
||||
"deduplication_info_description": "Für die automatische Datei-Vorauswahl und das Deduplizieren aller Dateien berücksichtigen wir:",
|
||||
"default_locale": "Standard-Sprache",
|
||||
"default_locale_description": "Datumsangaben und Zahlen basierend auf dem Gebietsschema des Browsers formatieren",
|
||||
"delete": "Löschen",
|
||||
|
@ -1324,7 +1324,7 @@
|
|||
"version_history_item": "{version} am {date} installiert",
|
||||
"video": "Video",
|
||||
"video_hover_setting": "Videovorschau beim Hovern abspielen",
|
||||
"video_hover_setting_description": "Video-Miniaturansicht wiedergeben, wenn der Mauszeiger über dem Element verweilt. Auch wenn diese Funktion deaktiviert ist, kann die Wiedergabe gestartet werden, indem der Mauszeiger auf das Wiedergabesymbol bewegt wird.",
|
||||
"video_hover_setting_description": "Spiele die Miniaturansicht des Videos ab, wenn sich die Maus über dem Element befindet. Auch wenn die Funktion deaktiviert ist, kann die Wiedergabe gestartet werden, indem du mit der Maus über das Wiedergabesymbol fährst.",
|
||||
"videos": "Videos",
|
||||
"videos_count": "{count, plural, one {# Video} other {# Videos}}",
|
||||
"view": "Ansicht",
|
||||
|
|
13
i18n/el.json
13
i18n/el.json
|
@ -289,6 +289,8 @@
|
|||
"transcoding_constant_rate_factor": "Σταθερός παράγοντας ρυθμού (-crf)",
|
||||
"transcoding_constant_rate_factor_description": "Επίπεδο ποιότητας βίντεο. Οι τυπικές τιμές είναι οι, 23 για το H.264, 28 για το HEVC, 31 για το VP9 και 35 για το AV1. Χαμηλότερες τιμές σημαίνουν καλύτερη ποιότητα, αλλά παράγουν μεγαλύτερα αρχεία.",
|
||||
"transcoding_disabled_description": "Να μην μετατραπεί κανένα βίντεο γιατί δύναται να προκαλέσει πρόβλημα αναπαραγωγής σε ορισμένες συσκευές/εφαρμογές",
|
||||
"transcoding_encoding_options": "Επιλογές κωδικοποίησης",
|
||||
"transcoding_encoding_options_description": "Ορίστε τους κωδικοποιητές, την ανάλυση, την ποιότητα και άλλες επιλογές για τα κωδικοποιημένα βίντεο",
|
||||
"transcoding_hardware_acceleration": "Επιτάχυνση υλικού",
|
||||
"transcoding_hardware_acceleration_description": "Πειραματικό· πολύ πιο γρήγορο, αλλά θα έχει χαμηλότερη ποιότητα με τον ίδιο ρυθμό μετάδοσης (bitrate)",
|
||||
"transcoding_hardware_decoding": "Αποκωδικοποίηση μέσω υλικού",
|
||||
|
@ -301,6 +303,8 @@
|
|||
"transcoding_max_keyframe_interval": "Μέγιστο χρονικό διάστημα μεταξύ των καρέ αναφοράς (keyframe)",
|
||||
"transcoding_max_keyframe_interval_description": "Ορίζει το μέγιστο διάστημα μεταξύ των καρέ αναφοράς. Χαμηλότερες τιμές μειώνουν την αποδοτικότητα συμπίεσης, αλλά βελτιώνουν τον χρόνο αναζήτησης και μπορεί να βελτιώσουν την ποιότητα σε σκηνές με γρήγορη κίνηση. Η τιμή 0 ρυθμίζει αυτό το διάστημα αυτόματα.",
|
||||
"transcoding_optimal_description": "Βίντεο με ανώτερη ανάλυση από την επιθυμητή ή σε μη αποδεκτή μορφή",
|
||||
"transcoding_policy": "Πολιτική Μετακωδικοποίησης",
|
||||
"transcoding_policy_description": "Ορίστε πότε θα γίνει η μετακωδικοποίηση ενός βίντεο",
|
||||
"transcoding_preferred_hardware_device": "Προτιμώμενη συσκευή",
|
||||
"transcoding_preferred_hardware_device_description": "Ισχύει μόνο για VAAPI και QSV. Ορίζει τον κόμβο DRI που χρησιμοποιείται για την επιτάχυνση υλικού κατά την κωδικοποίηση.",
|
||||
"transcoding_preset_preset": "Προκαθορισμένη ρύθμιση (-preset)",
|
||||
|
@ -309,7 +313,7 @@
|
|||
"transcoding_reference_frames_description": "Ο αριθμός των καρέ που χρησιμοποιούνται ως αναφορά κατά τη συμπίεση ενός δεδομένου καρέ. Υψηλότερες τιμές βελτιώνουν την αποδοτικότητα της συμπίεσης, αλλά επιβραδύνουν την κωδικοποίηση. Η τιμή 0 ρυθμίζει αυτό τον αριθμό, αυτόματα.",
|
||||
"transcoding_required_description": "Μόνο βίντεο που δεν είναι σε αποδεκτή μορφή",
|
||||
"transcoding_settings": "Ρυθμίσεις μετατροπής βίντεο",
|
||||
"transcoding_settings_description": "Διαχείριση της ανάλυσης και των πληροφοριών κωδικοποίησης των αρχείων βίντεο",
|
||||
"transcoding_settings_description": "Διαχείριση των βίντεο που θα μετακωδικοποιηθούν και του τρόπου επεξεργασίας τους",
|
||||
"transcoding_target_resolution": "Επιθυμητή ανάλυση",
|
||||
"transcoding_target_resolution_description": "Οι υψηλότερες αναλύσεις μπορούν να διατηρήσουν περισσότερες λεπτομέρειες, αλλά απαιτούν περισσότερο χρόνο για κωδικοποίηση, παράγουν μεγαλύτερα αρχεία και μπορεί να μειώσουν την απόκριση της εφαρμογής.",
|
||||
"transcoding_temporal_aq": "Χρονική Προσαρμοστική Ποιότητα AQ(Adaptive Quantization)",
|
||||
|
@ -322,7 +326,7 @@
|
|||
"transcoding_transcode_policy_description": "Πολιτική για το πότε πρέπει να μετατραπεί ένα βίντεο. Τα βίντεο HDR θα μετατρέπονται πάντα (εκτός αν η μετατροπή είναι απενεργοποιημένη).",
|
||||
"transcoding_two_pass_encoding": "Κωδικοποίηση δύο περασμάτων",
|
||||
"transcoding_two_pass_encoding_setting_description": "Μετατροπή σε δύο περάσματα για την παραγωγή βίντεο με καλύτερη κωδικοποίηση. Όταν είναι ενεργοποιημένος ο μέγιστος ρυθμός μετάδοσης (απαραίτητος για λειτουργία με H.264 και HEVC), αυτή η λειτουργία χρησιμοποιεί ένα εύρος ρυθμού μετάδοσης βάσει του μέγιστου ρυθμού μετάδοσης και αγνοεί το CRF. Στον κωδικοποιητή VP9, το CRF μπορεί να χρησιμοποιηθεί εάν ο μέγιστος ρυθμός μετάδοσης είναι απενεργοποιημένος.",
|
||||
"transcoding_video_codec": "Κωδικοποιητής Βίντεο",
|
||||
"transcoding_video_codec": "Κωδικοποιητής βίντεο",
|
||||
"transcoding_video_codec_description": "Ο VP9 έχει υψηλή απόδοση και συμβατότητα με τον ιστότοπο, αλλά απαιτεί περισσότερο χρόνο για μετατροπή. Ο HEVC έχει παρόμοια απόδοση, αλλά χαμηλότερη συμβατότητα με τον ιστότοπο. Ο H.264 είναι ευρέως συμβατός και γρήγορος στη μετατροπή, αλλά παράγει πολύ μεγαλύτερα αρχεία. Ο AV1 είναι ο πιο αποδοτικός κωδικοποιητής, αλλά δεν υποστηρίζεται σε παλαιότερες συσκευές.",
|
||||
"trash_enabled_description": "Ενεργοποίηση λειτουργιών Κάδου Απορριμμάτων",
|
||||
"trash_number_of_days": "Αριθμός ημερών",
|
||||
|
@ -519,6 +523,10 @@
|
|||
"date_range": "Εύρος ημερομηνιών",
|
||||
"day": "Ημέρα",
|
||||
"deduplicate_all": "Αφαίρεση όλων των διπλότυπων",
|
||||
"deduplication_criteria_1": "Μέγεθος εικόνας σε byte",
|
||||
"deduplication_criteria_2": "Αριθμός δεδομένων EXIF",
|
||||
"deduplication_info": "Πληροφορίες Αφαίρεσης Διπλοτύπων",
|
||||
"deduplication_info_description": "Για να προεπιλέξουμε αυτόματα τα αρχεία και να αφαιρέσουμε τα διπλότυπα σε μαζική επεξεργασία, εξετάζουμε σε:",
|
||||
"default_locale": "Προεπιλεγμένη Τοπική Ρύθμιση",
|
||||
"default_locale_description": "Μορφοποιήστε τις ημερομηνίες και τους αριθμούς με βάση την τοπική ρύθμιση του προγράμματος περιήγησής σας",
|
||||
"delete": "Διαγραφή",
|
||||
|
@ -755,6 +763,7 @@
|
|||
"get_help": "Ζητήστε βοήθεια",
|
||||
"getting_started": "Ξεκινώντας",
|
||||
"go_back": "Πηγαίνετε πίσω",
|
||||
"go_to_folder": "Μετάβαση στο φάκελο",
|
||||
"go_to_search": "Πηγαίνετε στην αναζήτηση",
|
||||
"group_albums_by": "Ομαδοποίηση άλμπουμ κατά...",
|
||||
"group_no": "Καμία ομοδοποίηση",
|
||||
|
|
|
@ -822,6 +822,7 @@
|
|||
"latest_version": "Latest Version",
|
||||
"latitude": "Latitude",
|
||||
"leave": "Leave",
|
||||
"lens_model": "Lens model",
|
||||
"let_others_respond": "Let others respond",
|
||||
"level": "Level",
|
||||
"library": "Library",
|
||||
|
@ -1113,6 +1114,7 @@
|
|||
"search_camera_model": "Search camera model...",
|
||||
"search_city": "Search city...",
|
||||
"search_country": "Search country...",
|
||||
"search_for": "Search for",
|
||||
"search_for_existing_person": "Search for existing person",
|
||||
"search_no_people": "No people",
|
||||
"search_no_people_named": "No people named \"{name}\"",
|
||||
|
|
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Rango de fechas",
|
||||
"day": "Día",
|
||||
"deduplicate_all": "Deduplicar todo",
|
||||
"deduplication_criteria_1": "Tamaño de imagen en bytes",
|
||||
"deduplication_criteria_2": "Conteo de datos EXIF",
|
||||
"deduplication_info": "Información de Deduplicación",
|
||||
"deduplication_info_description": "Para automáticamente preseleccionar recursos y eliminar duplicados en conjunto, nosotros consideramos lo siguiente:",
|
||||
"default_locale": "Configuración regional predeterminada",
|
||||
"default_locale_description": "Formatee fechas y números según la configuración regional de su navegador",
|
||||
"delete": "Eliminar",
|
||||
|
|
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Kuupäevavahemik",
|
||||
"day": "Päev",
|
||||
"deduplicate_all": "Dedubleeri kõik",
|
||||
"deduplication_criteria_1": "Pildi suurus baitides",
|
||||
"deduplication_criteria_2": "EXIF andmete hulk",
|
||||
"deduplication_info": "Dedubleerimise info",
|
||||
"deduplication_info_description": "Üksuste automaatsel eelvalimisel ja duplikaatide eemaldamisel võetakse arvesse:",
|
||||
"default_locale": "Vaikimisi lokaat",
|
||||
"default_locale_description": "Vorminda kuupäevad ja numbrid vastavalt brauseri lokaadile",
|
||||
"delete": "Kustuta",
|
||||
|
@ -748,6 +752,7 @@
|
|||
"filetype": "Failitüüp",
|
||||
"filter_people": "Filtreeri isikuid",
|
||||
"find_them_fast": "Leia teda kiiresti nime järgi otsides",
|
||||
"fix_incorrect_match": "Paranda ebaõige vaste",
|
||||
"folders": "Kaustad",
|
||||
"folders_feature_description": "Kaustavaate abil failisüsteemis olevate fotode ja videote sirvimine",
|
||||
"forward": "Edasi",
|
||||
|
@ -755,6 +760,7 @@
|
|||
"get_help": "Küsi abi",
|
||||
"getting_started": "Alustamine",
|
||||
"go_back": "Tagasi",
|
||||
"go_to_folder": "Mine kausta",
|
||||
"go_to_search": "Otsingusse",
|
||||
"group_albums_by": "Grupeeri albumid...",
|
||||
"group_no": "Ära grupeeri",
|
||||
|
@ -1029,6 +1035,7 @@
|
|||
"reassigned_assets_to_existing_person": "{count, plural, one {# üksus} other {# üksust}} seostatud {name, select, null {olemasoleva isikuga} other {isikuga {name}}}",
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {# üksus} other {# üksust}} seostatud uue isikuga",
|
||||
"reassing_hint": "Seosta valitud üksused olemasoleva isikuga",
|
||||
"recent": "Hiljutine",
|
||||
"recent-albums": "Hiljutised albumid",
|
||||
"recent_searches": "Hiljutised otsingud",
|
||||
"refresh": "Värskenda",
|
||||
|
@ -1189,6 +1196,7 @@
|
|||
"sort_items": "Üksuste arv",
|
||||
"sort_modified": "Muutmise aeg",
|
||||
"sort_oldest": "Vanim foto",
|
||||
"sort_people_by_similarity": "Sorteeri isikud sarnasuse järgi",
|
||||
"sort_recent": "Uusim foto",
|
||||
"sort_title": "Pealkiri",
|
||||
"source": "Lähtekood",
|
||||
|
@ -1309,6 +1317,7 @@
|
|||
"view_all_users": "Vaata kõiki kasutajaid",
|
||||
"view_in_timeline": "Vaata ajajoonel",
|
||||
"view_links": "Vaata linke",
|
||||
"view_name": "Vaade",
|
||||
"view_next_asset": "Vaata järgmist üksust",
|
||||
"view_previous_asset": "Vaata eelmist üksust",
|
||||
"view_stack": "Vaata virna",
|
||||
|
|
19
i18n/fi.json
19
i18n/fi.json
|
@ -182,7 +182,7 @@
|
|||
"oauth_auto_register_description": "Rekisteröi uudet OAuth:lla kirjautuvat käyttäjät automaattisesti",
|
||||
"oauth_button_text": "Painikkeen teksti",
|
||||
"oauth_client_id": "Client ID",
|
||||
"oauth_client_secret": "Client Secret",
|
||||
"oauth_client_secret": "Asiakassalaisuusavain",
|
||||
"oauth_enable_description": "Kirjaudu käyttäen OAuthia",
|
||||
"oauth_issuer_url": "Toimitsijan URL",
|
||||
"oauth_mobile_redirect_uri": "Mobiilin uudellenohjaus-URI",
|
||||
|
@ -289,11 +289,13 @@
|
|||
"transcoding_constant_rate_factor": "Vakionopeustekijä",
|
||||
"transcoding_constant_rate_factor_description": "Videon laatu. Yleisimmät arvot ovat 23 H.264:lle, 28 HEVC:lle, 31 VP9:lle ja 35 AV1:lle. Matalampi arvo on parempi, mutta tekee isompia tiedostoja.",
|
||||
"transcoding_disabled_description": "Älä muunna videoita. Voi joissakin päätelaitteissa aiheuttaa videotoiston toimimattomuutta",
|
||||
"transcoding_encoding_options": "Enkoodausasetukset",
|
||||
"transcoding_encoding_options_description": "Aseta koodekit, tarkkuus, laatu ja muut asetukset enkoodatuille videoille",
|
||||
"transcoding_hardware_acceleration": "Laitteistokiihdytys",
|
||||
"transcoding_hardware_acceleration_description": "Kokeellinen. Paljon nopeampi, mutta huonompaa laatua samalla bittinopeudella",
|
||||
"transcoding_hardware_decoding": "Laitteiston dekoodaus",
|
||||
"transcoding_hardware_decoding_setting_description": "Ottaa käyttöön end-to-end kiihdytyksen pelkän muuntamisen sijasta. Ei välttämättä toimi kaikissa videoissa.",
|
||||
"transcoding_hevc_codec": "HEVC koodekki",
|
||||
"transcoding_hevc_codec": "HEVC-koodekki",
|
||||
"transcoding_max_b_frames": "B-kehysten enimmäismäärä",
|
||||
"transcoding_max_b_frames_description": "Korkeampi arvo parantaa pakkausta, mutta hidastaa enkoodausta. Ei välttämättä ole yhteensopiva vanhempien laitteiden kanssa. 0 poistaa B-kehykset käytöstä, -1 määrittää arvon automaattisesti.",
|
||||
"transcoding_max_bitrate": "Suurin bittinopeus",
|
||||
|
@ -301,6 +303,8 @@
|
|||
"transcoding_max_keyframe_interval": "Suurin avainkehysten väli",
|
||||
"transcoding_max_keyframe_interval_description": "Asettaa avainkehysten välin maksimiarvon. Alempi arvo huonontaa pakkauksen tehoa, mutta parantaa hakuaikoja ja voi parantaa laatua nopealiikkeisissä kohtauksissa. 0 asettaa arvon automaattisesti.",
|
||||
"transcoding_optimal_description": "Videot, joiden resoluutio on korkeampi kuin kohteen, tai ei hyväksytyssä formaatissa",
|
||||
"transcoding_policy": "Transkoodauskäytäntö",
|
||||
"transcoding_policy_description": "Aseta milloin video transkoodataan",
|
||||
"transcoding_preferred_hardware_device": "Ensisijainen laite",
|
||||
"transcoding_preferred_hardware_device_description": "On voimassa vain VAAPI ja QSV -määritteille. Asettaa laitteistokoodauksessa käytetyn DRI noodin.",
|
||||
"transcoding_preset_preset": "Esiasetus (-asetus)",
|
||||
|
@ -309,7 +313,7 @@
|
|||
"transcoding_reference_frames_description": "Viittaavien kehysten määrä kun tiettyä kehystä pakataan. Korkeampi arvo parantaa pakkausta mutta hidastaa enkoodausta. 0 määrittää arvon automaattisesti.",
|
||||
"transcoding_required_description": "Vain videoille, jotka eivät ole hyväksytyssä muodossa",
|
||||
"transcoding_settings": "Videoiden transkoodausasetukset",
|
||||
"transcoding_settings_description": "Hallitse videoiden resoluutiota ja koodaustietueita",
|
||||
"transcoding_settings_description": "Hallitse, mitkä videot transkoodataan ja miten niitä käsitellään",
|
||||
"transcoding_target_resolution": "Kohderesoluutio",
|
||||
"transcoding_target_resolution_description": "Korkeampi resoluutio on tarkempi, mutta kestää kauemmin enkoodata, vie enemmän tilaa ja voi hidastaa sovelluksen responsiivisuutta.",
|
||||
"transcoding_temporal_aq": "Temporal AQ",
|
||||
|
@ -519,6 +523,10 @@
|
|||
"date_range": "Päivämäärän rajaus",
|
||||
"day": "Päivä",
|
||||
"deduplicate_all": "Poista kaikkien kaksoiskappaleet",
|
||||
"deduplication_criteria_1": "Kuvan koko tavuina",
|
||||
"deduplication_criteria_2": "EXIF-datan määrä",
|
||||
"deduplication_info": "Deduplikaatiotieto",
|
||||
"deduplication_info_description": "Jotta voimme automaattisesti esivalita aineistot ja poistaa duplikaatit suurina erinä, tarkastelemme:",
|
||||
"default_locale": "Oletuskieliasetus",
|
||||
"default_locale_description": "Muotoile päivämäärät ja numerot selaimesi kielen mukaan",
|
||||
"delete": "Poista",
|
||||
|
@ -532,7 +540,7 @@
|
|||
"delete_shared_link": "Poista jaettu linkki",
|
||||
"delete_tag": "Poista tunniste",
|
||||
"delete_tag_confirmation_prompt": "Haluatko varmasti poistaa tunnisteen {tagName}?",
|
||||
"delete_user": "Poista käyttäjä",
|
||||
"delete_user": "Poista käyttäjä pysyvästi",
|
||||
"deleted_shared_link": "Jaettu linkki poistettu",
|
||||
"deletes_missing_assets": "Poistaa levyltä puuttuvat resurssit",
|
||||
"description": "Kuvaus",
|
||||
|
@ -755,6 +763,7 @@
|
|||
"get_help": "Hae apua",
|
||||
"getting_started": "Aloittaminen",
|
||||
"go_back": "Palaa",
|
||||
"go_to_folder": "Mene kansioon",
|
||||
"go_to_search": "Siirry hakuun",
|
||||
"group_albums_by": "Ryhmitä albumi...",
|
||||
"group_no": "Ei ryhmitystä",
|
||||
|
@ -1141,6 +1150,7 @@
|
|||
"server_version": "Palvelimen versio",
|
||||
"set": "Aseta",
|
||||
"set_as_album_cover": "Aseta albumin kanneksi",
|
||||
"set_as_featured_photo": "Käytä esittelykuvana",
|
||||
"set_as_profile_picture": "Aseta profiilikuvaksi",
|
||||
"set_date_of_birth": "Aseta syntymäaika",
|
||||
"set_profile_picture": "Aseta profiilikuva",
|
||||
|
@ -1196,6 +1206,7 @@
|
|||
"sort_items": "Tietueiden määrä",
|
||||
"sort_modified": "Muokkauspäivä",
|
||||
"sort_oldest": "Vanhin kuva",
|
||||
"sort_people_by_similarity": "Lajittele ihmiset samankaltaisuuden mukaan",
|
||||
"sort_recent": "Tuorein kuva",
|
||||
"sort_title": "Otsikko",
|
||||
"source": "Lähdekoodi",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"about": "I-refresh",
|
||||
"about": "Tungkol sa app na ito",
|
||||
"account": "Account",
|
||||
"account_settings": "Mga Setting ng Account",
|
||||
"acknowledge": "Tanggapin",
|
||||
|
@ -24,9 +24,15 @@
|
|||
"added_to_favorites_count": "Idinagdag ang {count, number} sa mga paborito",
|
||||
"admin": {
|
||||
"asset_offline_description": "Ang external library asset na ito ay hindi na makikita sa disk at nailipat na sa trash. Kung ang file ay nailipat sa loob ng library, tignan ang iyong timeline para sa kaukulang asset. Para maibalik ang asset na ito, siguraduhin na ang file path ay maa-access ng Immich para iscan ang library.",
|
||||
"authentication_settings_disable_all": "Sigurado ka bang gusto mo patayin lahat ng paraan ng pag-login? Ang pag-login ay ganap na idi-disable.",
|
||||
"authentication_settings_reenable": "Para i-enable ulit, gamitin ang <link>Server Command</link>.",
|
||||
"cleared_jobs": "Lahat nang mga trabaho para sa {job} ay tinanggal na",
|
||||
"confirm_delete_library": "Sigurado ka na gusto mo tanggalin ang {library} library?",
|
||||
"confirm_email_below": "Para isigurado, i-type ito sa baba: \"{email}\"",
|
||||
"confirm_user_password_reset": "Sigurado ka na gusto mo i-reset ang password ni {user}?",
|
||||
"disable_login": "I-disable ang login",
|
||||
"force_delete_user_warning": "BABALA:",
|
||||
"force_delete_user_warning": "BABALA: Tatanggalin itong user at lahat ng asset nila, Hindi ito mababawi at ang kanilang files ay hindi na mababalik",
|
||||
"image_format": "Format",
|
||||
"library_import_path_description": "Tukuyin ang folder na i-import. Ang folder na ito, kasama ang subfolders, ay mag sa-scan para sa mga imahe at mga videos.",
|
||||
"note_cannot_be_changed_later": "TANDAAN: Hindi na ito pwede baguhin sa susunod!",
|
||||
"repair_all": "Ayusin lahat",
|
||||
|
@ -40,5 +46,22 @@
|
|||
"are_these_the_same_person": "Itong tao na ito ay parehas?",
|
||||
"asset_adding_to_album": "Dinadagdag sa album...",
|
||||
"asset_filename_is_offline": "Offline ang asset {filename}",
|
||||
"asset_uploading": "Ina-upload..."
|
||||
"asset_uploading": "Ina-upload...",
|
||||
"discord": "Discord",
|
||||
"documentation": "Dokumentasyion",
|
||||
"done": "Tapos na",
|
||||
"download": "I-download",
|
||||
"edit": "I-edit",
|
||||
"edited": "Inedit",
|
||||
"editor_close_without_save_title": "Isara ang editor?",
|
||||
"email": "Email",
|
||||
"exif": "Exif",
|
||||
"explore": "I-explore",
|
||||
"export": "I-export",
|
||||
"has_quota": "May quota",
|
||||
"hour": "Oras",
|
||||
"jobs": "Mga trabaho",
|
||||
"language": "Wika",
|
||||
"leave": "Umalis",
|
||||
"no_results": "Walang resulta"
|
||||
}
|
||||
|
|
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Plage de dates",
|
||||
"day": "Jour",
|
||||
"deduplicate_all": "Dédupliquer tout",
|
||||
"deduplication_criteria_1": "Taille de l'image en octets",
|
||||
"deduplication_criteria_2": "Nombre de données EXIF",
|
||||
"deduplication_info": "Info de déduplication",
|
||||
"deduplication_info_description": "Pour présélectionner automatiquement les médias et supprimer les doublons en masse, nous examinons :",
|
||||
"default_locale": "Région par défaut",
|
||||
"default_locale_description": "Afficher les dates et nombres en fonction des paramètres de votre navigateur",
|
||||
"delete": "Supprimer",
|
||||
|
|
36
i18n/he.json
36
i18n/he.json
|
@ -131,7 +131,7 @@
|
|||
"machine_learning_smart_search_description": "חפש תמונות באופן סמנטי באמצעות הטמעות של CLIP",
|
||||
"machine_learning_smart_search_enabled": "אפשר חיפוש חכם",
|
||||
"machine_learning_smart_search_enabled_description": "אם מושבת, תמונות לא יקודדו לחיפוש חכם.",
|
||||
"machine_learning_url_description": "כתובת האתר של שרת למידת המכונה. אם ניתן יותר מכתובת אחת, כל שרת ינסה בתורו עד אשר יענה בחיוב, בסדר התחלתי.",
|
||||
"machine_learning_url_description": "כתובת האתר של שרת למידת המכונה. אם ניתנת יותר מכתובת אחת, כל שרת ינסה בתורו עד אשר יענה בחיוב, בסדר התחלתי.",
|
||||
"manage_concurrency": "נהל בו-זמניות",
|
||||
"manage_log_settings": "נהל הגדרות רישום ביומן",
|
||||
"map_dark_style": "עיצוב כהה",
|
||||
|
@ -289,8 +289,8 @@
|
|||
"transcoding_constant_rate_factor": "גורם קצב קבוע (-crf)",
|
||||
"transcoding_constant_rate_factor_description": "רמת איכות וידאו. ערכים אופייניים הם הערך 23 עבור H.264, הערך 28 עבור HEVC, הערך 31 עבור VP9, והערך 35 עבור AV1. נמוך יותר הוא טוב יותר, אבל מייצר קבצים גדולים יותר.",
|
||||
"transcoding_disabled_description": "אין להמיר את הקידוד של שום סרטון, עלול לגרום לכך שהניגון לא יפעל במכשירים מסוימים",
|
||||
"transcoding_encoding_options": "אפשרויות הקידוד",
|
||||
"transcoding_encoding_options_description": "הגדר מקודדים, רזולוציה, איכות ואפשרויות נוספות עבור הסרטונים המקודדים",
|
||||
"transcoding_encoding_options": "אפשרויות קידוד",
|
||||
"transcoding_encoding_options_description": "הגדר מקודדים, רזולוציה, איכות ואפשרויות אחרות עבור הסרטונים המקודדים",
|
||||
"transcoding_hardware_acceleration": "האצת חומרה",
|
||||
"transcoding_hardware_acceleration_description": "ניסיוני; המרה הרבה יותר מהירה, אבל תהיה באיכות נמוכה יותר באותו קצב סיביות",
|
||||
"transcoding_hardware_decoding": "פענוח חומרה",
|
||||
|
@ -304,7 +304,7 @@
|
|||
"transcoding_max_keyframe_interval_description": "מגדיר את מרחק הפריימים המרבי בין תמונות מפתח. ערכים נמוכים גורעים את יעילות הדחיסה, אך משפרים את זמני החיפוש ועשויים לשפר את האיכות בסצנות עם תנועה מהירה. 0 מגדיר ערך זה באופן אוטומטי.",
|
||||
"transcoding_optimal_description": "סרטונים גבוהים מרזולוציית היעד או לא בפורמט מקובל",
|
||||
"transcoding_policy": "מדיניות המרה",
|
||||
"transcoding_policy_description": "הגדר מתי וידאו יעבור המרה",
|
||||
"transcoding_policy_description": "הגדר מתי סרטון יעבור המרת קידוד",
|
||||
"transcoding_preferred_hardware_device": "מכשיר חומרה מועדף",
|
||||
"transcoding_preferred_hardware_device_description": "חל רק על VAAPI ו-QSV. מגדיר את צומת ה-dri המשמש להמרת קידוד של חומרה.",
|
||||
"transcoding_preset_preset": "הגדרות קבועות מראש (-preset)",
|
||||
|
@ -313,7 +313,7 @@
|
|||
"transcoding_reference_frames_description": "מספר הפריימים לייחוס בעת דחיסה של פריים נתון. ערכים גבוהים יותר משפרים את יעילות הדחיסה, אך מאטים את הקידוד. 0 מגדיר את הערך זה באופן אוטומטי.",
|
||||
"transcoding_required_description": "רק סרטונים שאינם בפורמט מקובל",
|
||||
"transcoding_settings": "הגדרות המרת קידוד סרטונים",
|
||||
"transcoding_settings_description": "נהל אילו סרטונים לעבד וכיצד לעבד אותם",
|
||||
"transcoding_settings_description": "נהל אילו סרטונים להמיר וכיצד לעבד אותם",
|
||||
"transcoding_target_resolution": "רזולוציה יעד",
|
||||
"transcoding_target_resolution_description": "רזולוציות גבוהות יותר יכולות לשמר פרטים רבים יותר אך לוקחות זמן רב יותר לקידוד, יש להן גדלי קבצים גדולים יותר, ויכולות להפחית את תגובתיות היישום.",
|
||||
"transcoding_temporal_aq": "Temporal AQ",
|
||||
|
@ -326,7 +326,7 @@
|
|||
"transcoding_transcode_policy_description": "מדיניות לגבי מתי יש להמיר קידוד של סרטון. תמיד יומר הקידוד של סרטוני HDR (למעט אם המרת קידוד מושבתת).",
|
||||
"transcoding_two_pass_encoding": "קידוד בשני מעברים",
|
||||
"transcoding_two_pass_encoding_setting_description": "המר קידוד בשני מעברים כדי לייצר סרטונים מקודדים טוב יותר. כאשר קצב סיביות מרבי מופעל (נדרש כדי שזה יעבוד עם H.264 ו-HEVC), מצב זה משתמש בטווח קצב סיביות המבוסס על קצב הסיביות המרבי ומתעלם מ-CRF. עבור VP9, ניתן להשתמש ב-CRF אם קצב סיביות מרבי מושבת.",
|
||||
"transcoding_video_codec": "מקודדי וידאו",
|
||||
"transcoding_video_codec": "מקודד סרטון",
|
||||
"transcoding_video_codec_description": "ל-VP9 יש יעילות גבוהה ותאימות רשת, אבל לוקח יותר זמן להמיר את הקידוד עבורו. HEVC מתפקד באופן דומה, אך בעל תאימות רשת נמוכה יותר. H.264 תואם באופן נרחב ומהיר להמיר את קידודו, אבל הוא מייצר קבצים גדולים בהרבה. AV1 הוא הקידוד היעיל ביותר אך לוקה בתמיכה במכשירים ישנים יותר.",
|
||||
"trash_enabled_description": "הפעל את תכונות האשפה",
|
||||
"trash_number_of_days": "מספר הימים",
|
||||
|
@ -522,12 +522,16 @@
|
|||
"date_of_birth_saved": "תאריך לידה נשמר בהצלחה",
|
||||
"date_range": "טווח תאריכים",
|
||||
"day": "יום",
|
||||
"deduplicate_all": "בטל כפילויות של הכל",
|
||||
"default_locale": "אזור שפה ברירת מחדל",
|
||||
"default_locale_description": "עצב תאריכים ומספרים על סמך אזור השפה של הדפדפן שלך",
|
||||
"deduplicate_all": "ביטול כל הכפילויות",
|
||||
"deduplication_criteria_1": "גודל תמונה בבתים",
|
||||
"deduplication_criteria_2": "ספירת נתוני EXIF",
|
||||
"deduplication_info": "מידע על ביטול כפילויות",
|
||||
"deduplication_info_description": "כדי לבחור מראש נכסים באופן אוטומטי ולהסיר כפילויות בכמות גדולה, אנו מסתכלים על:",
|
||||
"default_locale": "שפת ברירת מחדל",
|
||||
"default_locale_description": "פורמט תאריכים ומספרים מבוסס שפת הדפדפן שלך",
|
||||
"delete": "מחק",
|
||||
"delete_album": "מחק אלבום",
|
||||
"delete_api_key_prompt": "האם את/ה בטוח/ה שברצונך למחוק מפתח API זה?",
|
||||
"delete_api_key_prompt": "האם את/ה בטוח/ה שברצונך למחוק מפתח ה-API הזה?",
|
||||
"delete_duplicates_confirmation": "האם את/ה בטוח/ה שברצונך למחוק לצמיתות את הכפילויות האלה?",
|
||||
"delete_key": "מחק מפתח",
|
||||
"delete_library": "מחק ספרייה",
|
||||
|
@ -544,13 +548,13 @@
|
|||
"direction": "כיוון",
|
||||
"disabled": "מושבת",
|
||||
"disallow_edits": "אל תאפשר עריכות",
|
||||
"discord": "דיסקורד",
|
||||
"discover": "גלה",
|
||||
"dismiss_all_errors": "התעלם מכל השגיאות",
|
||||
"dismiss_error": "התעלם מהשגיאה",
|
||||
"display_options": "הצג אפשרויות",
|
||||
"discord": "Discord",
|
||||
"discover": "גילוי",
|
||||
"dismiss_all_errors": "התעלמות מכל השגיאות",
|
||||
"dismiss_error": "התעלמות מהשגיאה",
|
||||
"display_options": "הצגת אפשרויות",
|
||||
"display_order": "סדר תצוגה",
|
||||
"display_original_photos": "הצג תמונות מקוריות",
|
||||
"display_original_photos": "הצגת תמונות מקוריות",
|
||||
"display_original_photos_setting_description": "העדף להציג את התמונה המקורית בעת צפיית נכס במקום תמונות ממוזערות כאשר הנכס המקורי תומך בתצוגה בדפדפן. זה עלול לגרום לתמונות להיות מוצגות באיטיות.",
|
||||
"do_not_show_again": "אל תציג את ההודעה הזאת שוב",
|
||||
"documentation": "תיעוד",
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
"added_to_favorites_count": "{count, number} hozzáadva a kedvencekhez",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "Kihagyási minták (pattern) megadása. A *, ** és ? helyettesítő karakterek engedélyezettek. Pl. a \"Raw\" könyvtárban tárolt összes fájl kihagyásához használható a \"**/Raw/**\". Minden \".tif\" fájl kihagyása az összes mappában: \"**/*.tif\". Abszolút elérési útvonal kihagyása: \"/kihagyni/kivant/mappa/**\".",
|
||||
"asset_offline_description": "Ez a külső képtárban lévő elem már nem található, ezért a lomtárba került. Ha a fájl a képtáron belül lett áthelyezve, akkor ellenőrizd, hogy továbbra is látható az idővonaladon. Az elem visszaállításához győződj meg róla, hogy az alábbi mappa az Immich számára elérhető, majd újra átfésültesd át a képtárat.",
|
||||
"asset_offline_description": "Ez a külső képtárban lévő elem már nem található, ezért a lomtárba került. Ha a fájl a képtáron belül lett áthelyezve, akkor ellenőrizd, hogy továbbra is látható az idővonaladon. Az elem visszaállításához győződj meg róla, hogy az alábbi mappa az Immich számára elérhető, majd újra fésüld át a képtárat.",
|
||||
"authentication_settings": "Hitelesítési beállítások",
|
||||
"authentication_settings_description": "Jelszó, OAuth és egyéb hitelesítési beállítások kezelése",
|
||||
"authentication_settings_disable_all": "Biztosan letiltod az összes bejelentkezési módot? A bejelentkezés teljesen le lesz tiltva.",
|
||||
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Dátum intervallum",
|
||||
"day": "Nap",
|
||||
"deduplicate_all": "Az Összes Deduplikálása",
|
||||
"deduplication_criteria_1": "Kép mérete bájtokban",
|
||||
"deduplication_criteria_2": "EXIF adatok mennyisége",
|
||||
"deduplication_info": "Deduplikációs Infó",
|
||||
"deduplication_info_description": "Az automatikus előválogatáshoz és a duplikátumok tömeges eltávolításához a következőket vizsgáljuk:",
|
||||
"default_locale": "Alapértelmezett Területi Beállítás",
|
||||
"default_locale_description": "Dátumok és számok formázása a böngésződ területi beállítása alapján",
|
||||
"delete": "Törlés",
|
||||
|
|
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Jangka tanggal",
|
||||
"day": "Hari",
|
||||
"deduplicate_all": "Deduplikat Semua",
|
||||
"deduplication_criteria_1": "Ukuran gambar dalam bita",
|
||||
"deduplication_criteria_2": "Hitungan data EXIF",
|
||||
"deduplication_info": "Info deduplikasi",
|
||||
"deduplication_info_description": "Untuk memilih aset secara otomatis dan menghapus duplikat secara massal, kami melihat:",
|
||||
"default_locale": "Lokal Bawaan",
|
||||
"default_locale_description": "Format tanggal dan angka berdasarkan lokal peramban Anda",
|
||||
"delete": "Hapus",
|
||||
|
|
17
i18n/it.json
17
i18n/it.json
|
@ -289,6 +289,8 @@
|
|||
"transcoding_constant_rate_factor": "Fattore di rateo costante (-crf)",
|
||||
"transcoding_constant_rate_factor_description": "Livello di qualità video. I valori tipici sono 23 per H.264, 28 per HEVC, 31 per VP9 e 35 per AV1. Un valore inferiore indica una qualità migliore, ma produce file di dimensioni maggiori.",
|
||||
"transcoding_disabled_description": "Non transcodificare alcun video, potrebbe rompere la riproduzione su alcuni client",
|
||||
"transcoding_encoding_options": "Opzioni di codifica",
|
||||
"transcoding_encoding_options_description": "Imposta codecs, risoluzione, qualità ed altre opzioni per i video codificati",
|
||||
"transcoding_hardware_acceleration": "Accelerazione Hardware",
|
||||
"transcoding_hardware_acceleration_description": "Sperimentale; molto più veloce, ma avrà una qualità inferiore allo stesso bitrate",
|
||||
"transcoding_hardware_decoding": "Decodifica hardware",
|
||||
|
@ -301,6 +303,8 @@
|
|||
"transcoding_max_keyframe_interval": "Intervallo massimo dei keyframe",
|
||||
"transcoding_max_keyframe_interval_description": "Imposta la distanza massima tra i keyframe. Valori più bassi peggiorano l'efficienza di compressione, però migliorano i tempi di ricerca e possono migliorare la qualità nelle scene con movimenti rapidi. 0 imposta questo valore automaticamente.",
|
||||
"transcoding_optimal_description": "Video con risoluzione più alta rispetto alla risoluzione desiderata o in formato non accettato",
|
||||
"transcoding_policy": "Politiche di transcodifica",
|
||||
"transcoding_policy_description": "Imposta quando un video sarà transcodificato",
|
||||
"transcoding_preferred_hardware_device": "Dispositivo hardware preferito",
|
||||
"transcoding_preferred_hardware_device_description": "Si applica solo a VAAPI e QSV. Imposta il nodo DRI utilizzato per la transcodifica hardware.",
|
||||
"transcoding_preset_preset": "Preset (-preset)",
|
||||
|
@ -309,7 +313,7 @@
|
|||
"transcoding_reference_frames_description": "Il numero di frame da prendere in considerazione nel comprimere un determinato frame. Valori più alti migliorano l'efficienza di compressione, ma rallentano la codifica. 0 imposta questo valore automaticamente.",
|
||||
"transcoding_required_description": "Solo video che non sono in un formato accettato",
|
||||
"transcoding_settings": "Impostazioni Trascodifica Video",
|
||||
"transcoding_settings_description": "Gestisci le impostazioni di risoluzione e codifica dei file video",
|
||||
"transcoding_settings_description": "Gestisci quali video transcodificare e come processarli",
|
||||
"transcoding_target_resolution": "Risoluzione desiderata",
|
||||
"transcoding_target_resolution_description": "Risoluzioni più elevate possono preservare più dettagli ma richiedono più tempo per la codifica, producono file di dimensioni maggiori e possono ridurre la reattività dell'applicazione.",
|
||||
"transcoding_temporal_aq": "AQ temporale",
|
||||
|
@ -322,7 +326,7 @@
|
|||
"transcoding_transcode_policy_description": "Politica che determina quando un video deve essere trascodificato. I video HDR verranno sempre trascodificati (eccetto quando la trascodifica è disabilitata).",
|
||||
"transcoding_two_pass_encoding": "Codifica a due passaggi",
|
||||
"transcoding_two_pass_encoding_setting_description": "Trascodifica in due passaggi per produrre video codificati migliori. Quando il bitrate massimo è abilitato (necessario affinché funzioni con H.264 e HEVC), questa modalità utilizza un intervallo di bitrate basato sul bitrate massimo e ignora CRF. Per VP9, CRF può essere utilizzato se il bitrate massimo è disabilitato.",
|
||||
"transcoding_video_codec": "Codifica Video",
|
||||
"transcoding_video_codec": "Codec video",
|
||||
"transcoding_video_codec_description": "VP9 ha alta efficienza e compatibilità web, ma richiede più tempo per la trascodifica. HEVC ha prestazioni simili, ma una minore compatibilità web. H.264 è ampiamente compatibile e veloce da transcodificare, ma produce file molto più grandi. AV1 è il codec più efficiente, ma non è supportato sui dispositivi più vecchi.",
|
||||
"trash_enabled_description": "Abilita Funzionalità Cestino",
|
||||
"trash_number_of_days": "Numero di giorni",
|
||||
|
@ -519,14 +523,18 @@
|
|||
"date_range": "Intervallo di date",
|
||||
"day": "Giorno",
|
||||
"deduplicate_all": "De-duplica Tutti",
|
||||
"deduplication_criteria_1": "Dimensione immagine in byte",
|
||||
"deduplication_criteria_2": "Numero di dati EXIF",
|
||||
"deduplication_info": "Informazioni di deduplicazione",
|
||||
"deduplication_info_description": "Per preselezionare automaticamente gli asset e rimuovere i duplicati in massa, verifichiamo:",
|
||||
"default_locale": "Localizzazione preimpostata",
|
||||
"default_locale_description": "Formatta la data e i numeri in base al locale del tuo browser",
|
||||
"default_locale_description": "Formatta la data e i numeri in base alle impostazioni del tuo browser",
|
||||
"delete": "Elimina",
|
||||
"delete_album": "Elimina album",
|
||||
"delete_api_key_prompt": "Sei sicuro di voler eliminare questa chiave API?",
|
||||
"delete_duplicates_confirmation": "Sei sicuro di voler eliminare questi duplicati per sempre?",
|
||||
"delete_key": "Elimina chiave",
|
||||
"delete_library": "Elimina Libreria",
|
||||
"delete_library": "Elimina libreria",
|
||||
"delete_link": "Elimina link",
|
||||
"delete_others": "Elimina gli altri",
|
||||
"delete_shared_link": "Elimina link condiviso",
|
||||
|
@ -755,6 +763,7 @@
|
|||
"get_help": "Chiedi Aiuto",
|
||||
"getting_started": "Iniziamo",
|
||||
"go_back": "Torna indietro",
|
||||
"go_to_folder": "Vai alla cartella",
|
||||
"go_to_search": "Vai alla ricerca",
|
||||
"group_albums_by": "Raggruppa album in base a...",
|
||||
"group_no": "Nessun raggruppamento",
|
||||
|
|
242
i18n/lt.json
242
i18n/lt.json
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"about": "Atnaujinti",
|
||||
"about": "Apie",
|
||||
"account": "Paskyra",
|
||||
"account_settings": "Paskyros nustatymai",
|
||||
"acknowledge": "Patvirtinti",
|
||||
|
@ -28,8 +28,9 @@
|
|||
"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ų",
|
||||
"admin": {
|
||||
"asset_offline_description": "Šis išorinės bibliotekos elementas nebepasiekiamas diske ir buvo perkeltas į šiukšliadėžę. Jei failas buvo perkeltas toje pačioje bibliotekoje, laiko skalėje rasite naują atitinkamą elementą. Jei norite šį elementą atkurti, įsitikinkite, kad Immich gali pasiekti failą žemiau nurodytu adresu, ir suvykdykite bibliotekos skanavimą.",
|
||||
"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 nustatymus",
|
||||
"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",
|
||||
|
@ -37,14 +38,20 @@
|
|||
"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",
|
||||
"backup_settings_description": "Tvarkyti duomenų bazės atsarginės kopijos nustatymus",
|
||||
"check_all": "Pažymėti viską",
|
||||
"config_set_by_file": "Konfigūracija dabar nustatyta konfigūracinio failo",
|
||||
"cleared_jobs": "Išvalyti darbai: {job}",
|
||||
"config_set_by_file": "Konfigūracija nustatyta pagal konfigūracinį failą",
|
||||
"confirm_delete_library": "Ar tikrai norite ištrinti {library} biblioteką?",
|
||||
"confirm_delete_library_assets": "Ar tikrai norite ištrinti šią biblioteką? Šis veiksmas ištrins {count, plural, one {# contained asset} other {all # contained assets}} iš Immich ir negali būti grąžintas. Failai liks diske.",
|
||||
"confirm_email_below": "Patvirtinimui įveskite \"{email}\" žemiau",
|
||||
"confirm_reprocess_all_faces": "Ar tikrai norite iš naujo apdoroti visus veidus? Tai taip pat ištrins įvardytus asmenis.",
|
||||
"confirm_user_password_reset": "Ar tikrai norite iš naujo nustatyti {user} slaptažodį?",
|
||||
"create_job": "Sukurti darbą",
|
||||
"cron_expression": "Cron išraiška",
|
||||
"cron_expression_description": "Nustatyti skanavimo intervalą naudojant cron formatą. Norėdami gauti daugiau informacijos žiūrėkite <link>Crontab Guru</link>",
|
||||
"disable_login": "Išjungti prisijungimą",
|
||||
"duplicate_detection_job_description": "Vykdykite mašininį mokymąsi tam, kad aptiktumėte panašius vaizdus. Nuo šios funkcijos priklauso išmanioji paieška",
|
||||
"duplicate_detection_job_description": "Vykdykite mašininį mokymąsi panašių vaizdų aptikimui. Priklauso nuo išmaniosios paieškos",
|
||||
"exclusion_pattern_description": "Išimčių šablonai leidžia nepaisyti failų ir aplankų skenuojant jūsų biblioteką. Tai yra naudinga, jei turite aplankų su failais, kurių nenorite importuoti, pavyzdžiui, RAW failai.",
|
||||
"external_library_created_at": "Išorinė biblioteka (sukurta {date})",
|
||||
"external_library_management": "Išorinių bibliotekų tvarkymas",
|
||||
|
@ -53,18 +60,26 @@
|
|||
"facial_recognition_job_description": "Aptiktų veidų atpažinimas ir priskyrimas žmonėms. Šis darbas vykdomas pasibaigus \"veidų aptikimo\" darbui. \"Atstatyti\" (per)grupuoja visus aptiktus veidus. \"Trūkstami\" apdoroja jokiam žmogui dar nepriskirtus aptiktus veidus.",
|
||||
"failed_job_command": "Darbo {job} komanda {command} nepavyko",
|
||||
"force_delete_user_warning": "ĮSPĖJIMAS: Šis veiksmas iš karto pašalins naudotoją ir visą jo informaciją. Šis žingsnis nesugrąžinamas ir failų nebus galima atkurti.",
|
||||
"forcing_refresh_library_files": "Priverstinai atnaujinami visi failai bilbiotekoje",
|
||||
"forcing_refresh_library_files": "Priverstinai atnaujinami visi failai bibliotekoje",
|
||||
"image_format": "Formatas",
|
||||
"image_format_description": "WebP sukuria mažesnius failus nei JPEG, bet lėčiau juos apdoroja.",
|
||||
"image_prefer_embedded_preview": "Pageidautinai rodyti įterptą peržiūrą",
|
||||
"image_prefer_embedded_preview_setting_description": "",
|
||||
"image_prefer_wide_gamut": "Teikti pirmenybę plačiai gamai",
|
||||
"image_prefer_wide_gamut_setting_description": "",
|
||||
"image_preview_description": "Vidutinio dydžio vaizdas su išvalytais metaduomenimis, naudojamas kai žiūrimas vienas objektas arba mašininiam mokymuisi",
|
||||
"image_preview_quality_description": "Peržiūros kokybė nuo 1-100. Aukštesnės reikšmės yra geriau, bet sukuriami didesni failai gali sumažinti programos reagavimo laiką. Mažos vertės nustatymas gali paveikti mašininio mokymo kokybę.",
|
||||
"image_preview_title": "Peržiūros nustatymai",
|
||||
"image_quality": "Kokybė",
|
||||
"image_resolution": "Rezoliucija",
|
||||
"image_resolution_description": "Didesnės rezoliucijos gali išsaugoti daugiau detalių, bet ilgiau užtrunka užkoduoti, failai yra didesni ir programos reagavimo laikas gali sumažėti.",
|
||||
"image_settings": "Nuotraukos nustatymai",
|
||||
"image_settings_description": "Keisti sugeneruotų nuotraukų kokybę ir rezoliuciją",
|
||||
"image_thumbnail_description": "Maža miniatiūra su išvalytais metaduomenimis, naudojama kai žiūrima nuotraukų grupės, kaip pagrindinėje laiko juostoje",
|
||||
"image_thumbnail_quality_description": "Miniatiūros kokybė nuo 1-100. Aukštesnės reikšmės yra geriau, bet pagaminami didesni failai ir gali būti sulėtintas programos reagavimo greitis.",
|
||||
"image_thumbnail_title": "Miniatiūros nustatymai",
|
||||
"job_concurrency": "{job} lygiagretumas",
|
||||
"job_created": "Darbas sukurtas",
|
||||
"job_not_concurrency_safe": "Šis darbas nėra saugus apdoroti lygiagrečiai.",
|
||||
"job_settings": "Darbų nustatymai",
|
||||
"job_settings_description": "Keisti darbų lygiagretumą",
|
||||
|
@ -78,17 +93,17 @@
|
|||
"library_settings": "Išorinė biblioteka",
|
||||
"library_settings_description": "Tvarkyti išorinės bibliotekos parametrus",
|
||||
"library_tasks_description": "Atlikit bibliotekos užduotis",
|
||||
"library_watching_enable_description": "",
|
||||
"library_watching_settings": "",
|
||||
"library_watching_settings_description": "",
|
||||
"logging_enable_description": "",
|
||||
"logging_level_description": "",
|
||||
"logging_settings": "",
|
||||
"library_watching_enable_description": "Stebėti išorines bibliotekas dėl failų pakeitimų",
|
||||
"library_watching_settings": "Bibliotekų stebėjimas (EKSPERIMENTINIS)",
|
||||
"library_watching_settings_description": "Automatiškai stebėti dėl pakeistų failų",
|
||||
"logging_enable_description": "Įjungti žurnalo vedimą",
|
||||
"logging_level_description": "Įjungus, kokį žurnalo vedimo lygį naudot.",
|
||||
"logging_settings": "Žurnalo vedimas",
|
||||
"machine_learning_clip_model": "CLIP modelis",
|
||||
"machine_learning_duplicate_detection": "Dublikatų aptikimas",
|
||||
"machine_learning_duplicate_detection_enabled": "Įjungti dublikatų aptikimą",
|
||||
"machine_learning_duplicate_detection_enabled_description": "",
|
||||
"machine_learning_duplicate_detection_setting_description": "",
|
||||
"machine_learning_duplicate_detection_setting_description": "Naudoti CLIP įterpimus, norint rasti galimus duplikatus",
|
||||
"machine_learning_enabled": "Įgalinti mašininį mokymąsi",
|
||||
"machine_learning_enabled_description": "Jei išjungta, visos „ML“ funkcijos bus išjungtos, nepaisant toliau pateiktų nustatymų.",
|
||||
"machine_learning_facial_recognition": "Veidų atpažinimas",
|
||||
|
@ -96,28 +111,29 @@
|
|||
"machine_learning_facial_recognition_model": "Veidų atpažinimo modelis",
|
||||
"machine_learning_facial_recognition_model_description": "",
|
||||
"machine_learning_facial_recognition_setting": "Įgalinti veidų atpažinimą",
|
||||
"machine_learning_facial_recognition_setting_description": "",
|
||||
"machine_learning_facial_recognition_setting_description": "Išjungus, vaizdai nebus užšifruoti veidų atpažinimui ir nebus naudojami Žmonių sekcijoje Naršymo puslapyje.",
|
||||
"machine_learning_max_detection_distance": "Maksimalus aptikimo atstumas",
|
||||
"machine_learning_max_detection_distance_description": "Didžiausias atstumas tarp dviejų vaizdų, kad jie būtų laikomi dublikatais, svyruoja nuo 0,001 iki 0,1. Didesnės vertės aptiks daugiau dublikatų, tačiau gali būti klaidingai teigiami.",
|
||||
"machine_learning_max_recognition_distance": "Maksimalus atpažinimo atstumas",
|
||||
"machine_learning_max_recognition_distance_description": "",
|
||||
"machine_learning_min_detection_score": "",
|
||||
"machine_learning_min_detection_score": "Minimalus aptikimo balas",
|
||||
"machine_learning_min_detection_score_description": "",
|
||||
"machine_learning_min_recognized_faces": "Mažiausias atpažintų veidų skaičius",
|
||||
"machine_learning_min_recognized_faces_description": "Mažiausias atpažintų veidų skaičius asmeniui, kurį reikia sukurti. Tai padidinus, veido atpažinimas tampa tikslesnis, bet padidėja tikimybė, kad veidas žmogui nepriskirtas.",
|
||||
"machine_learning_settings": "Mašininio mokymosi nustatymai",
|
||||
"machine_learning_settings_description": "Tvarkyti mašininio mokymosi funkcijas ir nustatymus",
|
||||
"machine_learning_smart_search": "Išmanioji paieška",
|
||||
"machine_learning_smart_search_description": "",
|
||||
"machine_learning_smart_search_description": "Semantiškai ieškoti vaizdų naudojant CLIP įtarpius",
|
||||
"machine_learning_smart_search_enabled": "Įjungti išmaniąją paiešką",
|
||||
"machine_learning_smart_search_enabled_description": "Jei išjungta, vaizdai nebus užkoduoti išmaniajai paieškai.",
|
||||
"machine_learning_url_description": "Mašininio mokymosi serverio URL",
|
||||
"machine_learning_url_description": "Mašininio mokymosi serverio URL. Jei pateikta daugiau nei vienas URL, serveriai bus bandomi eilės tvarka nuo pirmo iki paskutinio tol, kol bus rastas vienas veikiantis serveris.",
|
||||
"manage_concurrency": "Tvarkyti lygiagretumą",
|
||||
"manage_log_settings": "",
|
||||
"manage_log_settings": "Valdyti žurnalo nuostatas",
|
||||
"map_dark_style": "Tamsioji tema",
|
||||
"map_enable_description": "Įgalinti žemėlapio funkcijas",
|
||||
"map_gps_settings": "Žemėlapio ir GPS nustatymai",
|
||||
"map_gps_settings_description": "Tvarkyti žemėlapio ir GPS (atvirkštinio geokodavimo) nustatymus",
|
||||
"map_implications": "Žemėlapio funkcija naudojasi išoriniu plytelių servisu (tiles.immich.cloud)",
|
||||
"map_light_style": "Šviesioji tema",
|
||||
"map_manage_reverse_geocoding_settings": "Tvarkyti <link>atvirkštinio geokodavimo</link> nustatymus",
|
||||
"map_reverse_geocoding": "Atvirkštinis geokodavimas",
|
||||
|
@ -125,47 +141,54 @@
|
|||
"map_reverse_geocoding_settings": "Atvirkštinio geokodavimo nustatymai",
|
||||
"map_settings": "Žemėlapis",
|
||||
"map_settings_description": "Tvarkyti žemėlapio parametrus",
|
||||
"map_style_description": "",
|
||||
"map_style_description": "URL į style.json žemėlapio temą",
|
||||
"metadata_extraction_job": "Metaduomenų nuskaitymas",
|
||||
"metadata_extraction_job_description": "Kiekvieno bibliotekos elemento metaduomenų nuskaitymas, tokių kaip GPS koordinatės, veidai ar rezoliucija",
|
||||
"metadata_faces_import_setting": "Įjungti veidų importą",
|
||||
"metadata_faces_import_setting_description": "Importuoti veidus iš vaizdo EXIF duomenų ir papildomų failų",
|
||||
"metadata_settings": "Metaduomenų nustatymai",
|
||||
"metadata_settings_description": "Tvarkyti metaduomenų nustatymus",
|
||||
"migration_job": "Migracija",
|
||||
"migration_job_description": "",
|
||||
"no_paths_added": "Keliai nepridėti",
|
||||
"no_pattern_added": "Šablonas nepridėtas",
|
||||
"note_apply_storage_label_previous_assets": "Pastaba: norėdami pritaikyti saugyklos etiketę seniau įkeltiems ištekliams, paleiskite",
|
||||
"note_cannot_be_changed_later": "PASTABA: Vėliau to pakeisti negalima!",
|
||||
"notification_email_from_address": "",
|
||||
"notification_email_from_address_description": "",
|
||||
"notification_email_host_description": "",
|
||||
"note_unlimited_quota": "Pastaba: įveskite 0 norint neribotos kvotos",
|
||||
"notification_email_from_address": "Iš adreso",
|
||||
"notification_email_from_address_description": "Siuntėjo elektroninis adresas, pavyzdžiui: \"Immich Photo Server <noreply@example.com>\"",
|
||||
"notification_email_host_description": "Elektroninio pašto serverio savininkas (pvz. smtp.immich.app)",
|
||||
"notification_email_ignore_certificate_errors": "Nepaisyti sertifikatų klaidų",
|
||||
"notification_email_ignore_certificate_errors_description": "Nepaisyti TLS sertifikato patvirtinimo klaidų (nerekomenduojama)",
|
||||
"notification_email_password_description": "",
|
||||
"notification_email_password_description": "Slaptažodis, naudojant autentikacijai su elektroninio pašto serveriu",
|
||||
"notification_email_port_description": "El. pašto serverio prievadas (pvz. 25, 465 arba 587)",
|
||||
"notification_email_sent_test_email_button": "Siųsti bandomąjį el. laišką ir išsaugoti",
|
||||
"notification_email_setting_description": "El. pašto pranešimų siuntimo nustatymai",
|
||||
"notification_email_test_email": "Išsiųsti bandomąjį el. laišką",
|
||||
"notification_email_test_email_failed": "Nepavyko išsiųsti bandomojo el. laiško, patikrinkite savo nustatymus",
|
||||
"notification_email_test_email_sent": "Bandomasis el. laiškas buvo išsiųstas į {email}. Patikrinkite savo pašto dėžutę.",
|
||||
"notification_email_username_description": "",
|
||||
"notification_email_username_description": "Vartotojo vardas, naudojant autentikacijai su elektroninio pašto serveriu",
|
||||
"notification_enable_email_notifications": "Įgalinti el. pašto pranešimus",
|
||||
"notification_settings": "Pranešimų nustatymai",
|
||||
"notification_settings_description": "Tvarkyti pranešimų nustatymus, įskaitant el. pašto",
|
||||
"oauth_auto_launch": "Paleisti automatiškai",
|
||||
"oauth_auto_launch_description": "",
|
||||
"oauth_auto_register": "",
|
||||
"oauth_auto_register_description": "",
|
||||
"oauth_auto_launch_description": "Prisijungimo puslapyje automatiškai pradėti OAuth prisijungimo procesą",
|
||||
"oauth_auto_register": "Automatinis registravimas",
|
||||
"oauth_auto_register_description": "Automatiškai užregistruoti naujus naudotojus po prisijungimo per OAuth",
|
||||
"oauth_button_text": "Mygtuko tekstas",
|
||||
"oauth_client_id": "Kliento ID",
|
||||
"oauth_client_secret": "Kliento paslaptis",
|
||||
"oauth_enable_description": "Prisijungti su OAuth",
|
||||
"oauth_issuer_url": "",
|
||||
"oauth_mobile_redirect_uri": "",
|
||||
"oauth_mobile_redirect_uri_override": "",
|
||||
"oauth_mobile_redirect_uri_override_description": "",
|
||||
"oauth_scope": "",
|
||||
"oauth_settings": "",
|
||||
"oauth_issuer_url": "Teikėjo URL",
|
||||
"oauth_mobile_redirect_uri": "Mobiliojo peradresavimo URI",
|
||||
"oauth_mobile_redirect_uri_override": "Mobiliojo peradresavimo URI pakeitimas",
|
||||
"oauth_mobile_redirect_uri_override_description": "Įjunkite, kai OAuth teikėjas nepalaiko mobiliojo URI, tokio kaip '{callback}'",
|
||||
"oauth_profile_signing_algorithm": "Profilio registracijos algoritmas",
|
||||
"oauth_profile_signing_algorithm_description": "Algoritmas naudojamas vartotojo profilio registracijai.",
|
||||
"oauth_scope": "Apimtis",
|
||||
"oauth_settings": "OAuth",
|
||||
"oauth_settings_description": "Tvarkyti OAuth prisijungimo nustatymus",
|
||||
"oauth_settings_more_details": "Detaliau apie šią funkciją galite paskaityti <link>dokumentacijoje</link>.",
|
||||
"oauth_signing_algorithm": "",
|
||||
"oauth_storage_label_claim": "",
|
||||
"oauth_storage_label_claim_description": "",
|
||||
|
@ -173,6 +196,7 @@
|
|||
"oauth_storage_quota_claim_description": "",
|
||||
"oauth_storage_quota_default": "",
|
||||
"oauth_storage_quota_default_description": "",
|
||||
"offline_paths": "Nepasiekiami adresai",
|
||||
"offline_paths_description": "Šie rezultatai gali būti dėl rankinio failų ištrynimo, kurie nėra išorinės bibliotekos dalis.",
|
||||
"password_enable_description": "Prisijungti su el. paštu ir slaptažodžiu",
|
||||
"password_settings": "Prisijungimas slaptažodžiu",
|
||||
|
@ -187,13 +211,13 @@
|
|||
"reset_settings_to_recent_saved": "Nustatymų atstatymas į neseniai išsaugotus nustatymus",
|
||||
"send_welcome_email": "Siųsti sveikinimo el. laišką",
|
||||
"server_external_domain_settings": "Išorinis domenas",
|
||||
"server_external_domain_settings_description": "",
|
||||
"server_external_domain_settings_description": "Bendrinimo nuorodų domenas, įskaitant http(s)://",
|
||||
"server_settings": "Serverio nustatymai",
|
||||
"server_settings_description": "Tvarkyti serverio nustatymus",
|
||||
"server_welcome_message": "Sveikinimo pranešimas",
|
||||
"server_welcome_message_description": "Žinutė, rodoma prisijungimo puslapyje.",
|
||||
"sidecar_job_description": "",
|
||||
"slideshow_duration_description": "",
|
||||
"slideshow_duration_description": "Sekundžių skaičius, kiek viena nuotrauka rodoma",
|
||||
"smart_search_job_description": "Vykdykite mašininį mokymąsi bibliotekos elementų išmaniajai paieškai",
|
||||
"storage_template_enable_description": "",
|
||||
"storage_template_hash_verification_enabled": "",
|
||||
|
@ -269,6 +293,7 @@
|
|||
"trash_settings": "Šiukšliadėžės nustatymai",
|
||||
"trash_settings_description": "Tvarkyti šiukšliadėžės nustatymus",
|
||||
"untracked_files": "Nesekami failai",
|
||||
"untracked_files_description": "Šie failai aplikacijos nesekami. Jie galėjo atsirasti dėl nepavykusio perkėlimo, nutraukto įkėlimo ar palikti per klaidą",
|
||||
"user_delete_delay_settings": "Ištrynimo delsa",
|
||||
"user_delete_delay_settings_description": "",
|
||||
"user_management": "Naudotojų valdymas",
|
||||
|
@ -328,7 +353,9 @@
|
|||
"asset_added_to_album": "Pridėta į albumą",
|
||||
"asset_adding_to_album": "Pridedama į albumą...",
|
||||
"asset_description_updated": "Elemento aprašymas buvo atnaujintas",
|
||||
"asset_offline": "",
|
||||
"asset_filename_is_offline": "Elementas {filename} nepasiekiamas",
|
||||
"asset_offline": "Elementas nepasiekiamas",
|
||||
"asset_offline_description": "Šis išorinis elementas neberandamas diske. Dėl pagalbos susisiekite su savo Immich administratoriumi.",
|
||||
"asset_uploaded": "Įkelta",
|
||||
"asset_uploading": "Įkeliama...",
|
||||
"assets": "Elementai",
|
||||
|
@ -339,6 +366,7 @@
|
|||
"assets_moved_to_trash_count": "{count, plural, one {# elementas perkeltas} few {# elementai perkelti} other {# elementų perkelta}} į šiukšliadėžę",
|
||||
"assets_permanently_deleted_count": "{count, plural, one {# elementas ištrintas} few {# elementai ištrinti} other {# elementų ištrinta}} visam laikui",
|
||||
"assets_removed_count": "{count, plural, one {Pašalintas # elementas} few {Pašalinti # elementai} other {Pašalinta # elementų}}",
|
||||
"assets_restore_confirmation": "Ar tikrai norite atkurti visus šiukšliadėžėje esančius perkeltus elementus? Šio veiksmo atšaukti negalėsite! Pastaba: nepasiekiami elementai tokiu būdu atkurti nebus.",
|
||||
"assets_restored_count": "{count, plural, one {Atkurtas # elementas} few {Atkurti # elementai} other {Atkurta # elementų}}",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {# elementas} few {# elementai} other {# elementų}} jau prieš tai buvo albume",
|
||||
"authorized_devices": "Autorizuoti įrenginiai",
|
||||
|
@ -348,6 +376,9 @@
|
|||
"birthdate_saved": "Sėkmingai išsaugota gimimo data",
|
||||
"blurred_background": "Neryškus fonas",
|
||||
"bugs_and_feature_requests": "Klaidų ir funkcijų užklausos",
|
||||
"bulk_delete_duplicates_confirmation": "Ar tikrai norite ištrinti visus {count, plural, one {# besidubliuojantį elementą} few {# besidubliuojančius elementus} other {# besidubliuojančių elementų}}? Bus paliktas didžiausias kiekvienos grupės elementas ir negrįžtamai ištrinti kiti besidubliuojantys elementai. Šio veiksmo atšaukti negalėsite!",
|
||||
"bulk_keep_duplicates_confirmation": "Ar tikrai norite palikti visus {count, plural, one {# besidubliuojantį elementą} few {# besidubliuojančius elementus} other {# besidubliuojančių elementų}}? Tokiu būdu nieko netrinant bus sutvarkytos visos dublikatų grupės.",
|
||||
"bulk_trash_duplicates_confirmation": "Ar tikrai norite perkelti į šiukšliadėžę visus {count, plural, one {# besidubliuojantį elementą} few {# besidubliuojančius elementus} other {# besidubliuojančių elementų}}? Bus paliktas didžiausias kiekvienos grupės elementas ir į šiukšliadėžę perkelti kiti besidubliuojantys elementai.",
|
||||
"buy": "Įsigyti Immich",
|
||||
"camera": "Fotoaparatas",
|
||||
"camera_brand": "Fotoaparato prekės ženklas",
|
||||
|
@ -382,7 +413,7 @@
|
|||
"comments_are_disabled": "Komentarai yra išjungti",
|
||||
"confirm": "Patvirtinti",
|
||||
"confirm_admin_password": "Patvirtinti administratoriaus slaptažodį",
|
||||
"confirm_delete_shared_link": "Ar tikrai norite ištrinti šią bendrinamą nuorodą?",
|
||||
"confirm_delete_shared_link": "Ar tikrai norite ištrinti šią bendrinimo nuorodą?",
|
||||
"confirm_password": "Patvirtinti slaptažodį",
|
||||
"contain": "",
|
||||
"context": "Kontekstas",
|
||||
|
@ -422,6 +453,11 @@
|
|||
"date_of_birth_saved": "Gimimo data sėkmingai išsaugota",
|
||||
"date_range": "",
|
||||
"day": "Diena",
|
||||
"deduplicate_all": "Šalinti visus dublikatus",
|
||||
"deduplication_criteria_1": "Failo dydis baitais",
|
||||
"deduplication_criteria_2": "EXIF metaduomenų įrašų skaičius",
|
||||
"deduplication_info": "Dublikatų šalinimo informacija",
|
||||
"deduplication_info_description": "Automatinis elementų parinkimas ir masinis dublikatų šalinimas atliekamas atsižvelgiant į:",
|
||||
"default_locale": "",
|
||||
"default_locale_description": "Formatuoti datas ir skaičius pagal jūsų naršyklės lokalę",
|
||||
"delete": "Ištrinti",
|
||||
|
@ -431,11 +467,11 @@
|
|||
"delete_key": "Ištrinti raktą",
|
||||
"delete_library": "Ištrinti biblioteką",
|
||||
"delete_link": "Ištrinti nuorodą",
|
||||
"delete_shared_link": "Ištrinti bendrinamą nuorodą",
|
||||
"delete_shared_link": "Ištrinti bendrinimo nuorodą",
|
||||
"delete_tag": "Ištrinti žymą",
|
||||
"delete_tag_confirmation_prompt": "Ar tikrai norite ištrinti žymą {tagName}?",
|
||||
"delete_user": "Ištrinti naudotoją",
|
||||
"deleted_shared_link": "Bendrinama nuoroda ištrinta",
|
||||
"deleted_shared_link": "Bendrinimo nuoroda ištrinta",
|
||||
"description": "Aprašymas",
|
||||
"details": "Detalės",
|
||||
"direction": "Kryptis",
|
||||
|
@ -455,6 +491,7 @@
|
|||
"download_settings": "Atsisiųsti",
|
||||
"downloading": "Siunčiama",
|
||||
"duplicates": "Dublikatai",
|
||||
"duplicates_description": "Sutvarkykite kiekvieną elementų grupę nurodydami elementus, kurie yra dublikatai (jei tokių yra)",
|
||||
"duration": "Trukmė",
|
||||
"edit": "Redaguoti",
|
||||
"edit_album": "Redaguoti albumą",
|
||||
|
@ -492,8 +529,8 @@
|
|||
"error_removing_assets_from_album": "Klaida šalinant elementus iš albumo, patikrinkite konsolę dėl išsamesnės informacijos",
|
||||
"exclusion_pattern_already_exists": "Šis išimčių šablonas jau egzistuoja.",
|
||||
"failed_to_create_album": "Nepavyko sukurti albumo",
|
||||
"failed_to_create_shared_link": "Nepavyko sukurti bendrinamos nuorodos",
|
||||
"failed_to_edit_shared_link": "Nepavyko redaguoti bendrinamos nuorodos",
|
||||
"failed_to_create_shared_link": "Nepavyko sukurti bendrinimo nuorodos",
|
||||
"failed_to_edit_shared_link": "Nepavyko redaguoti bendrinimo nuorodos",
|
||||
"failed_to_load_people": "Nepavyko užkrauti žmonių",
|
||||
"failed_to_remove_product_key": "Nepavyko pašalinti produkto rakto",
|
||||
"failed_to_stack_assets": "Nepavyko sugrupuoti elementų",
|
||||
|
@ -503,6 +540,7 @@
|
|||
"profile_picture_transparent_pixels": "Profilio nuotrauka negali turėti permatomų pikselių. Prašome priartinti ir/arba perkelkite nuotrauką.",
|
||||
"quota_higher_than_disk_size": "Nustatyta kvota, viršija disko dydį",
|
||||
"unable_to_add_album_users": "Nepavyksta pridėti naudotojų prie albumo",
|
||||
"unable_to_add_assets_to_shared_link": "Nepavyko į bendrinimo nuorodą pridėti elementų",
|
||||
"unable_to_add_comment": "Nepavyksta pridėti komentaro",
|
||||
"unable_to_add_exclusion_pattern": "Nepavyksta pridėti išimčių šablono",
|
||||
"unable_to_add_import_path": "Nepavyksta pridėti importavimo kelio",
|
||||
|
@ -511,6 +549,7 @@
|
|||
"unable_to_change_date": "Negalima pakeisti datos",
|
||||
"unable_to_change_location": "Negalima pakeisti vietos",
|
||||
"unable_to_change_password": "Negalima pakeisti slaptažodžio",
|
||||
"unable_to_complete_oauth_login": "Nepavyko prisijungti su OAuth",
|
||||
"unable_to_connect": "Nepavyko prisijungti",
|
||||
"unable_to_connect_to_server": "Nepavyko prisijungti prie serverio",
|
||||
"unable_to_copy_to_clipboard": "Negalima kopijuoti į iškarpinę, įsitikinkite, kad prie puslapio prieinate per https",
|
||||
|
@ -522,45 +561,48 @@
|
|||
"unable_to_delete_asset": "",
|
||||
"unable_to_delete_exclusion_pattern": "Nepavyksta ištrinti išimčių šablono",
|
||||
"unable_to_delete_import_path": "Nepavyksta ištrinti importavimo kelio",
|
||||
"unable_to_delete_shared_link": "Nepavyksta ištrinti bendrinimo nuorodos",
|
||||
"unable_to_delete_shared_link": "Nepavyko ištrinti bendrinimo nuorodos",
|
||||
"unable_to_delete_user": "Nepavyksta ištrinti naudotojo",
|
||||
"unable_to_edit_exclusion_pattern": "Nepavyksta redaguoti išimčių šablono",
|
||||
"unable_to_edit_import_path": "Nepavyksta redaguoti išimčių kelio",
|
||||
"unable_to_empty_trash": "",
|
||||
"unable_to_enter_fullscreen": "Nepavyksta pereiti į viso ekrano režimą",
|
||||
"unable_to_exit_fullscreen": "Nepavyksta išeiti iš viso ekrano režimo",
|
||||
"unable_to_get_shared_link": "Nepavyksta gauti bendrinamos nuorodos",
|
||||
"unable_to_get_shared_link": "Nepavyko gauti bendrinimo nuorodos",
|
||||
"unable_to_hide_person": "Nepavyksta paslėpti žmogaus",
|
||||
"unable_to_link_oauth_account": "Nepavyko susieti su OAuth paskyra",
|
||||
"unable_to_load_album": "Nepavyksta užkrauti albumo",
|
||||
"unable_to_load_asset_activity": "",
|
||||
"unable_to_load_items": "",
|
||||
"unable_to_load_liked_status": "",
|
||||
"unable_to_log_out_all_devices": "Nepavyksta atjungti visų įrenginių",
|
||||
"unable_to_log_out_device": "Nepavyksta atjungti įrenginio",
|
||||
"unable_to_login_with_oauth": "Nepavyksta prisijungti su OAuth",
|
||||
"unable_to_login_with_oauth": "Nepavyko prisijungti su OAuth",
|
||||
"unable_to_play_video": "Nepavyksta paleisti vaizdo įrašo",
|
||||
"unable_to_refresh_user": "Nepavyksta atnaujinti naudotojo",
|
||||
"unable_to_remove_album_users": "",
|
||||
"unable_to_remove_api_key": "Nepavyko pašalinti API rakto",
|
||||
"unable_to_remove_assets_from_shared_link": "Nepavyko iš bendrinimo nuorodos pašalinti elementų",
|
||||
"unable_to_remove_deleted_assets": "Nepavyko pašalinti nepasiekiamų elementų",
|
||||
"unable_to_remove_library": "Nepavyksta pašalinti bibliotekos",
|
||||
"unable_to_remove_partner": "Nepavyksta pašalinti partnerio",
|
||||
"unable_to_remove_reaction": "Nepavyksta pašalinti reakcijos",
|
||||
"unable_to_repair_items": "",
|
||||
"unable_to_reset_password": "",
|
||||
"unable_to_resolve_duplicate": "",
|
||||
"unable_to_resolve_duplicate": "Nepavyko sutvarkyti dublikatų",
|
||||
"unable_to_restore_assets": "",
|
||||
"unable_to_restore_trash": "",
|
||||
"unable_to_restore_user": "",
|
||||
"unable_to_save_album": "",
|
||||
"unable_to_save_name": "",
|
||||
"unable_to_save_profile": "",
|
||||
"unable_to_save_profile": "Nepavyko išsaugoti profilio",
|
||||
"unable_to_save_settings": "Nepavyksta išsaugoti nustatymų",
|
||||
"unable_to_scan_libraries": "Nepavyksta nuskaityti bibliotekų",
|
||||
"unable_to_scan_library": "Nepavyksta nuskaityti bibliotekos",
|
||||
"unable_to_set_feature_photo": "Nepavyksta nustatyti mėgstamiausios nuotraukos",
|
||||
"unable_to_set_profile_picture": "Nepavyksta nustatyti profilio nuotraukos",
|
||||
"unable_to_submit_job": "",
|
||||
"unable_to_trash_asset": "",
|
||||
"unable_to_trash_asset": "Nepavyko perkelti į šiukšliadėžę",
|
||||
"unable_to_unlink_account": "",
|
||||
"unable_to_update_library": "",
|
||||
"unable_to_update_location": "",
|
||||
|
@ -569,7 +611,7 @@
|
|||
"unable_to_upload_file": "Nepavyksta įkelti failo"
|
||||
},
|
||||
"exif": "Exif",
|
||||
"exit_slideshow": "",
|
||||
"exit_slideshow": "Išeiti iš skaidrių peržiūros",
|
||||
"expand_all": "Išskleisti viską",
|
||||
"expire_after": "",
|
||||
"expired": "Nebegalioja",
|
||||
|
@ -581,10 +623,12 @@
|
|||
"external": "Išorinis",
|
||||
"external_libraries": "Išorinės bibliotekos",
|
||||
"face_unassigned": "Nepriskirta",
|
||||
"favorite": "Mėgstamiausi",
|
||||
"favorite": "Mėgstamiausias",
|
||||
"favorite_or_unfavorite_photo": "Įtraukti prie arba pašalinti iš mėgstamiausių",
|
||||
"favorites": "Mėgstamiausi",
|
||||
"feature_photo_updated": "",
|
||||
"features": "Funkcijos",
|
||||
"features_setting_description": "Valdyti aplikacijos funkcijas",
|
||||
"file_name": "Failo pavadinimas",
|
||||
"file_name_or_extension": "Failo pavadinimas arba plėtinys",
|
||||
"filename": "",
|
||||
|
@ -592,6 +636,7 @@
|
|||
"filter_people": "Filtruoti žmones",
|
||||
"fix_incorrect_match": "",
|
||||
"folders": "Aplankai",
|
||||
"folders_feature_description": "Peržiūrėkite failų sistemoje esančias nuotraukas ir vaizdo įrašus aplankų rodinyje",
|
||||
"forward": "",
|
||||
"general": "",
|
||||
"get_help": "Gauti pagalbos",
|
||||
|
@ -619,7 +664,7 @@
|
|||
"in_archive": "Archyve",
|
||||
"include_archived": "Įtraukti archyvuotus",
|
||||
"include_shared_albums": "Įtraukti bendrinamus albumus",
|
||||
"include_shared_partner_assets": "",
|
||||
"include_shared_partner_assets": "Įtraukti partnerio pasidalintus elementus",
|
||||
"individual_share": "",
|
||||
"info": "Informacija",
|
||||
"interval": {
|
||||
|
@ -647,8 +692,8 @@
|
|||
"library_options": "Bibliotekos pasirinktys",
|
||||
"light": "",
|
||||
"link_options": "Nuorodų parinktys",
|
||||
"link_to_oauth": "",
|
||||
"linked_oauth_account": "",
|
||||
"link_to_oauth": "Susieti su OAuth",
|
||||
"linked_oauth_account": "Susieta OAuth paskyra",
|
||||
"list": "Sąrašas",
|
||||
"loading": "Kraunama",
|
||||
"loading_search_results_failed": "Nepavyko užkrauti paieškos rezultatų",
|
||||
|
@ -664,13 +709,13 @@
|
|||
"loop_videos": "Kartoti vaizdo įrašus",
|
||||
"loop_videos_description": "",
|
||||
"make": "Gamintojas",
|
||||
"manage_shared_links": "Bendrai naudojamų nuorodų tvarkymas",
|
||||
"manage_shared_links": "Bendrinimo nuorodų tvarkymas",
|
||||
"manage_sharing_with_partners": "Valdyti dalijimąsi su partneriais",
|
||||
"manage_the_app_settings": "Valdyti programos nustatymus",
|
||||
"manage_your_account": "Valdyti savo paskyrą",
|
||||
"manage_your_api_keys": "Valdyti savo API raktus",
|
||||
"manage_your_devices": "Valdyti prijungtus įrenginius",
|
||||
"manage_your_oauth_connection": "",
|
||||
"manage_your_oauth_connection": "Tvarkyti OAuth prisijungimą",
|
||||
"map": "Žemėlapis",
|
||||
"map_marker_with_image": "",
|
||||
"map_settings": "Žemėlapio nustatymai",
|
||||
|
@ -710,7 +755,7 @@
|
|||
"no_albums_message": "Sukurkite albumą nuotraukoms ir vaizdo įrašams tvarkyti",
|
||||
"no_albums_with_name_yet": "Atrodo, kad dar neturite albumų su šiuo pavadinimu.",
|
||||
"no_albums_yet": "Atrodo, kad dar neturite albumų.",
|
||||
"no_archived_assets_message": "",
|
||||
"no_archived_assets_message": "Suarchyvuokite nuotraukas ir vaizdo įrašus, kad jie nebūtų rodomi nuotraukų rodinyje",
|
||||
"no_assets_message": "SPUSTELĖKITE NORĖDAMI ĮKELTI PIRMĄJĄ NUOTRAUKĄ",
|
||||
"no_duplicates_found": "Dublikatų nerasta.",
|
||||
"no_exif_info_available": "",
|
||||
|
@ -728,9 +773,10 @@
|
|||
"notification_toggle_setting_description": "Įjungti el. pašto pranešimus",
|
||||
"notifications": "Pranešimai",
|
||||
"notifications_setting_description": "Tvarkyti pranešimus",
|
||||
"oauth": "",
|
||||
"oauth": "OAuth",
|
||||
"official_immich_resources": "Oficialūs Immich ištekliai",
|
||||
"offline": "Neprisijungęs",
|
||||
"offline_paths": "Nepasiekiami adresai",
|
||||
"ok": "Ok",
|
||||
"oldest_first": "Seniausias pirmas",
|
||||
"onboarding_welcome_user": "Sveiki atvykę, {user}",
|
||||
|
@ -744,7 +790,7 @@
|
|||
"other": "",
|
||||
"other_devices": "Kiti įrenginiai",
|
||||
"other_variables": "Kiti kintamieji",
|
||||
"owned": "",
|
||||
"owned": "Nuosavi",
|
||||
"owner": "Savininkas",
|
||||
"partner": "Partneris",
|
||||
"partner_can_access": "{partner} gali naudotis",
|
||||
|
@ -764,12 +810,13 @@
|
|||
"path": "Kelias",
|
||||
"pattern": "",
|
||||
"pause": "Sustabdyti",
|
||||
"pause_memories": "",
|
||||
"pause_memories": "Pristabdyti atsiminimus",
|
||||
"paused": "Sustabdyta",
|
||||
"pending": "Laukiama",
|
||||
"people": "Asmenys",
|
||||
"people_edits_count": "{count, plural, one {Redaguotas # asmuo} few {Redaguoti # asmenys} other {Redaguota # asmenų}}",
|
||||
"people_sidebar_description": "",
|
||||
"people_feature_description": "Peržiūrėkite nuotraukas ir vaizdo įrašus sugrupuotus pagal asmenis",
|
||||
"people_sidebar_description": "Rodyti asmenų rodinio nuorodą šoninėje juostoje",
|
||||
"permanent_deletion_warning": "",
|
||||
"permanent_deletion_warning_setting_description": "",
|
||||
"permanently_delete": "Ištrinti visam laikui",
|
||||
|
@ -784,7 +831,7 @@
|
|||
"place": "Vieta",
|
||||
"places": "Vietos",
|
||||
"play": "",
|
||||
"play_memories": "",
|
||||
"play_memories": "Leisti atsiminimus",
|
||||
"play_motion_photo": "",
|
||||
"play_or_pause_video": "",
|
||||
"port": "",
|
||||
|
@ -794,6 +841,7 @@
|
|||
"previous_memory": "",
|
||||
"previous_or_next_photo": "",
|
||||
"primary": "",
|
||||
"profile_image_of_user": "{user} profilio nuotrauka",
|
||||
"profile_picture_set": "Profilio nuotrauka nustatyta.",
|
||||
"public_album": "Viešas albumas",
|
||||
"public_share": "",
|
||||
|
@ -830,18 +878,27 @@
|
|||
"purchase_settings_server_activated": "Serverio produkto raktas yra tvarkomas administratoriaus",
|
||||
"rating": "Įvertinimas žvaigždutėmis",
|
||||
"rating_count": "{count, plural, one {# įvertinimas} few {# įvertinimai} other {# įvertinimų}}",
|
||||
"rating_description": "Rodyti EXIF įvertinimus informacijos skydelyje",
|
||||
"reaction_options": "",
|
||||
"read_changelog": "",
|
||||
"recent": "",
|
||||
"recent_searches": "",
|
||||
"refresh": "Atnaujinti",
|
||||
"refresh_encoded_videos": "Perkrauti apdorotus vaizdo įrašus",
|
||||
"refresh_faces": "Perkrauti veidus",
|
||||
"refresh_metadata": "Perkrauti metaduomenis",
|
||||
"refresh_thumbnails": "Perkrauti miniatiūras",
|
||||
"refreshed": "Atnaujinta",
|
||||
"refreshes_every_file": "",
|
||||
"refreshes_every_file": "Iš naujo perskaito visus esamus ir naujai pridėtus failus",
|
||||
"refreshing_encoded_video": "Perkraunamas apdorotas vaizdo įrašas",
|
||||
"refreshing_faces": "Perkraunami veidai",
|
||||
"refreshing_metadata": "Perkraunami metaduomenys",
|
||||
"remove": "Pašalinti",
|
||||
"remove_assets_shared_link_confirmation": "Ar tikrai norite pašalinti {count, plural, one {# elementą} few {# elementus} other {# elementų}} iš šios bendrinimo nuorodos?",
|
||||
"remove_deleted_assets": "",
|
||||
"remove_from_album": "Pašalinti iš albumo",
|
||||
"remove_from_favorites": "Pašalinti iš mėgstamiausių",
|
||||
"remove_from_shared_link": "",
|
||||
"remove_from_shared_link": "Pašalinti iš bendrinimo nuorodos",
|
||||
"remove_user": "Pašalinti naudotoją",
|
||||
"removed_api_key": "Pašalintas API Raktas: {name}",
|
||||
"removed_from_archive": "Pašalinta iš archyvo",
|
||||
|
@ -850,18 +907,19 @@
|
|||
"removed_tagged_assets": "Žyma pašalinta iš {count, plural, one {# elemento} other {# elementų}}",
|
||||
"rename": "Pervadinti",
|
||||
"repair": "Pataisyti",
|
||||
"repair_no_results_message": "",
|
||||
"replace_with_upload": "",
|
||||
"repair_no_results_message": "Nesekami ir trūkstami failai bus rodomi čia",
|
||||
"replace_with_upload": "Pakeisti naujai įkeltu failu",
|
||||
"require_password": "Reikalauti slaptažodžio",
|
||||
"reset": "Atstatyti",
|
||||
"reset_password": "",
|
||||
"reset_people_visibility": "",
|
||||
"resolved_all_duplicates": "Išspręsti visi dublikatai",
|
||||
"resolve_duplicates": "Sutvarkyti dublikatus",
|
||||
"resolved_all_duplicates": "Sutvarkyti visi dublikatai",
|
||||
"restore": "Atkurti",
|
||||
"restore_all": "Atkurti visus",
|
||||
"restore_user": "Atkurti naudotoją",
|
||||
"retry_upload": "",
|
||||
"review_duplicates": "",
|
||||
"review_duplicates": "Peržiūrėti dublikatus",
|
||||
"role": "",
|
||||
"save": "Išsaugoti",
|
||||
"saved_api_key": "Išsaugotas API raktas",
|
||||
|
@ -898,9 +956,11 @@
|
|||
"select_avatar_color": "Pasirinkti avataro spalvą",
|
||||
"select_face": "Pasirinkti veidą",
|
||||
"select_featured_photo": "Pasirinkti rodomą nuotrauką",
|
||||
"select_keep_all": "Visus pažymėti \"Palikti\"",
|
||||
"select_library_owner": "Pasirinkti bibliotekos savininką",
|
||||
"select_new_face": "",
|
||||
"select_photos": "",
|
||||
"select_trash_all": "Visus pažymėti \"Išmesti\"",
|
||||
"selected": "Pasirinkta",
|
||||
"selected_count": "{count, plural, one {# pasirinktas} few {# pasirinkti} other {# pasirinktų}}",
|
||||
"send_message": "Siųsti žinutę",
|
||||
|
@ -911,28 +971,29 @@
|
|||
"server_version": "Serverio versija",
|
||||
"set": "Nustatyti",
|
||||
"set_as_album_cover": "",
|
||||
"set_as_profile_picture": "",
|
||||
"set_as_profile_picture": "Nustatyti kaip profilio nuotrauką",
|
||||
"set_date_of_birth": "Nustatyti gimimo datą",
|
||||
"set_profile_picture": "Nustatyti profilio nuotrauką",
|
||||
"set_slideshow_to_fullscreen": "",
|
||||
"set_slideshow_to_fullscreen": "Nustatyti skaidrių peržiūrą per visą ekraną",
|
||||
"settings": "Nustatymai",
|
||||
"settings_saved": "",
|
||||
"share": "Dalintis",
|
||||
"shared": "",
|
||||
"shared": "Bendrinami",
|
||||
"shared_by": "",
|
||||
"shared_by_you": "",
|
||||
"shared_links": "",
|
||||
"shared_link_options": "Bendrinimo nuorodos parametrai",
|
||||
"shared_links": "Bendrinimo nuorodos",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, one {# bendrinama nuotrauka ir vaizdo įrašas} few {# bendrinamos nuotraukos ir vaizdo įrašai} other {# bendrinamų nuotraukų ir vaizdo įrašų}}",
|
||||
"shared_with_partner": "Pasidalinta su {partner}",
|
||||
"sharing": "Dalijimasis",
|
||||
"sharing_enter_password": "Norėdami peržiūrėti šį puslapį, įveskite slaptažodį.",
|
||||
"sharing_sidebar_description": "",
|
||||
"sharing_sidebar_description": "Rodyti bendrinimo rodinio nuorodą šoninėje juostoje",
|
||||
"show_album_options": "Rodyti albumo parinktis",
|
||||
"show_file_location": "Rodyti rinkmenos vietą",
|
||||
"show_gallery": "Rodyti galeriją",
|
||||
"show_hidden_people": "",
|
||||
"show_in_timeline": "",
|
||||
"show_in_timeline_setting_description": "",
|
||||
"show_in_timeline": "Rodyti laiko skalėje",
|
||||
"show_in_timeline_setting_description": "Rodyti šio naudotojo nuotraukas ir vaizdo įrašus mano laiko skalėje",
|
||||
"show_keyboard_shortcuts": "",
|
||||
"show_metadata": "Rodyti metaduomenis",
|
||||
"show_or_hide_info": "Rodyti arba slėpti informaciją",
|
||||
|
@ -940,15 +1001,18 @@
|
|||
"show_person_options": "",
|
||||
"show_progress_bar": "",
|
||||
"show_search_options": "Rodyti paieškos parinktis",
|
||||
"show_slideshow_transition": "Rodyti perėjimą tarp skaidrių",
|
||||
"show_supporter_badge": "Rėmėjo ženklelis",
|
||||
"show_supporter_badge_description": "Rodyti rėmėjo ženklelį",
|
||||
"shuffle": "",
|
||||
"sidebar": "Šoninė juosta",
|
||||
"sidebar_display_description": "Rodyti rodinio nuorodą šoninėje juostoje",
|
||||
"sign_out": "Atsijungti",
|
||||
"sign_up": "Užsiregistruoti",
|
||||
"size": "Dydis",
|
||||
"skip_to_content": "Pereiti prie turinio",
|
||||
"slideshow": "Skaidrės",
|
||||
"slideshow_settings": "",
|
||||
"slideshow": "Skaidrių peržiūra",
|
||||
"slideshow_settings": "Skaidrių peržiūros nustatymai",
|
||||
"sort_albums_by": "",
|
||||
"sort_created": "Sukūrimo data",
|
||||
"sort_modified": "Keitimo data",
|
||||
|
@ -978,6 +1042,7 @@
|
|||
"sync": "Sinchronizuoti",
|
||||
"tag": "Žyma",
|
||||
"tag_created": "Sukurta žyma: {tag}",
|
||||
"tag_feature_description": "Peržiūrėkite nuotraukas ir vaizdo įrašus sugrupuotus pagal sužymėtas temas",
|
||||
"tag_not_found_question": "Nerandate žymos? <link>Sukurti naują žymą.</link>",
|
||||
"tag_updated": "Atnaujinta žyma: {tag}",
|
||||
"tagged_assets": "Žyma pridėta prie {count, plural, one {# elemento} other {# elementų}}",
|
||||
|
@ -986,18 +1051,20 @@
|
|||
"theme": "Tema",
|
||||
"theme_selection": "",
|
||||
"theme_selection_description": "",
|
||||
"time_based_memories": "",
|
||||
"time_based_memories": "Atsiminimai pagal laiką",
|
||||
"timeline": "Laiko skalė",
|
||||
"timezone": "Laiko juosta",
|
||||
"to_archive": "Archyvuoti",
|
||||
"to_change_password": "Pakeisti slaptažodį",
|
||||
"to_favorite": "Įtraukti prie mėgstamiausių",
|
||||
"to_trash": "Išmesti",
|
||||
"toggle_settings": "",
|
||||
"toggle_theme": "",
|
||||
"total_usage": "",
|
||||
"trash": "Šiukšliadėžė",
|
||||
"trash_all": "Ištrinti visus",
|
||||
"trash_count": "Šiukšliadėžė {count, number}",
|
||||
"trash_no_results_message": "",
|
||||
"trash_all": "Perkelti visus į šiukšliadėžę",
|
||||
"trash_count": "Perkelti {count, number} į šiukšliadėžę",
|
||||
"trash_no_results_message": "Į šiukšliadėžę perkeltos nuotraukos ir vaizdo įrašai bus rodomi čia.",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Į šiukšliadėžę perkelti elementai bus visam laikui ištrinti po {days, plural, one {# dienos} other {# dienų}}.",
|
||||
"type": "Tipas",
|
||||
"unarchive": "Išarchyvuoti",
|
||||
|
@ -1006,22 +1073,26 @@
|
|||
"unhide_person": "",
|
||||
"unknown": "",
|
||||
"unknown_year": "Nežinomi metai",
|
||||
"unlink_oauth": "",
|
||||
"unlinked_oauth_account": "",
|
||||
"unlink_oauth": "Atsieti OAuth",
|
||||
"unlinked_oauth_account": "Atsieta OAuth paskyra",
|
||||
"unnamed_album_delete_confirmation": "Ar tikrai norite ištrinti šį albumą?",
|
||||
"unsaved_change": "Neišsaugoti pakeitimai",
|
||||
"unselect_all": "",
|
||||
"unselect_all_duplicates": "Atžymėti visus dublikatus",
|
||||
"unstack": "Išgrupuoti",
|
||||
"unstacked_assets_count": "{count, plural, one {Išgrupuotas # elementas} few {Išgrupuoti # elementai} other {Išgrupuota # elementų}}",
|
||||
"untracked_files": "Nesekami failai",
|
||||
"untracked_files_decription": "Šie failai aplikacijos nesekami. Jie galėjo atsirasti dėl nepavykusio perkėlimo, nutraukto įkėlimo ar palikti per klaidą",
|
||||
"up_next": "",
|
||||
"updated_password": "Slaptažodis atnaujintas",
|
||||
"upload": "Įkelti",
|
||||
"upload_concurrency": "",
|
||||
"upload_errors": "Įkėlimas įvyko su {count, plural, one {# klaida} few {# klaidomis} other {# klaidų}}, norėdami pamatyti naujai įkeltus elementus perkraukite puslapį.",
|
||||
"upload_progress": "Liko {remaining, number} - Apdorota {processed, number}/{total, number}",
|
||||
"upload_status_duplicates": "Dublikatai",
|
||||
"upload_status_errors": "Klaidos",
|
||||
"upload_status_uploaded": "Įkelta",
|
||||
"upload_success": "Įkėlimas pavyko, norėdami pamatyti naujai įkeltus elementus perkraukite puslapį.",
|
||||
"url": "URL",
|
||||
"usage": "",
|
||||
"user": "Naudotojas",
|
||||
|
@ -1031,7 +1102,7 @@
|
|||
"user_usage_stats_description": "Žiūrėti paskyros naudojimo statistiką",
|
||||
"username": "Naudotojo vardas",
|
||||
"users": "Naudotojai",
|
||||
"utilities": "Priemonės",
|
||||
"utilities": "Įrankiai",
|
||||
"validate": "Validuoti",
|
||||
"variables": "Kintamieji",
|
||||
"version": "Versija",
|
||||
|
@ -1042,11 +1113,12 @@
|
|||
"video_hover_setting_description": "Atkurti vaizdo įrašo miniatiūrą, kai pelė užvedama ant elemento. Net ir išjungus, atkūrimą galima pradėti užvedus pelės žymeklį ant atkūrimo piktogramos.",
|
||||
"videos": "Video",
|
||||
"videos_count": "{count, plural, one {# vaizdo įrašas} few {# vaizdo įrašai} other {# vaizdo įrašų}}",
|
||||
"view": "Rodyti",
|
||||
"view_album": "Rodyti albumą",
|
||||
"view": "Žiūrėti",
|
||||
"view_album": "Žiūrėti albumą",
|
||||
"view_all": "Peržiūrėti viską",
|
||||
"view_all_users": "Peržiūrėti visus naudotojus",
|
||||
"view_links": "Rodyti nuorodas",
|
||||
"view_in_timeline": "Žiūrėti laiko skalėje",
|
||||
"view_links": "Žiūrėti nuorodas",
|
||||
"view_next_asset": "",
|
||||
"view_previous_asset": "",
|
||||
"view_stack": "Peržiūrėti grupę",
|
||||
|
@ -1055,6 +1127,8 @@
|
|||
"week": "Savaitė",
|
||||
"welcome_to_immich": "Sveiki atvykę į Immich",
|
||||
"year": "Metai",
|
||||
"years_ago": "Prieš {years, plural, one {# metus} other {# metų}}",
|
||||
"yes": "Taip",
|
||||
"you_dont_have_any_shared_links": "Bendrinimo nuorodų neturite",
|
||||
"zoom_image": "Priartinti vaizdą"
|
||||
}
|
||||
|
|
17
i18n/lv.json
17
i18n/lv.json
|
@ -35,13 +35,13 @@
|
|||
"authentication_settings_reenable": "Lai atkārtoti iespējotu, izmantojiet <link>Servera Komandu</link>.",
|
||||
"background_task_job": "Fona Uzdevumi",
|
||||
"check_all": "Pārbaudīt Visu",
|
||||
"cleared_jobs": "Notīrīti darbi priekš: {job}",
|
||||
"cleared_jobs": "Notīrīti uzdevumi priekš: {job}",
|
||||
"config_set_by_file": "Konfigurāciju pašlaik iestata konfigurācijas fails",
|
||||
"confirm_delete_library": "Vai tiešām vēlaties dzēst {library} bibliotēku?",
|
||||
"confirm_email_below": "Lai apstiprinātu, zemāk ierakstiet “{email}”",
|
||||
"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?",
|
||||
"create_job": "Izveidot darbu",
|
||||
"create_job": "Izveidot uzdevumu",
|
||||
"cron_expression": "Cron izteiksme",
|
||||
"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",
|
||||
|
@ -59,10 +59,10 @@
|
|||
"image_settings": "Attēla Iestatījumi",
|
||||
"image_settings_description": "Ģenerēto attēlu kvalitātes un izšķirtspējas pārvaldība",
|
||||
"image_thumbnail_title": "Sīktēlu iestatījumi",
|
||||
"job_created": "Darbs izveidots",
|
||||
"job_settings": "",
|
||||
"job_settings_description": "",
|
||||
"job_status": "Darbu statuss",
|
||||
"job_created": "Uzdevums izveidots",
|
||||
"job_settings": "Uzdevumu iestatījumi",
|
||||
"job_settings_description": "Pārvaldīt uzdevumu izpildes vienlaicīgumu",
|
||||
"job_status": "Uzdevumu statuss",
|
||||
"library_deleted": "Bibliotēka dzēsta",
|
||||
"library_scanning": "",
|
||||
"library_scanning_description": "",
|
||||
|
@ -167,6 +167,7 @@
|
|||
"repair_all": "Salabot visu",
|
||||
"require_password_change_on_login": "Pieprasīt lietotājam mainīt paroli pēc pirmās pieteikšanās",
|
||||
"scanning_library": "Skenē bibliotēku",
|
||||
"search_jobs": "Meklēt uzdevumus...",
|
||||
"server_external_domain_settings": "",
|
||||
"server_external_domain_settings_description": "",
|
||||
"server_settings": "Servera iestatījumi",
|
||||
|
@ -527,7 +528,7 @@
|
|||
},
|
||||
"invite_people": "Ielūgt cilvēkus",
|
||||
"invite_to_album": "Uzaicināt albumā",
|
||||
"jobs": "Darbi",
|
||||
"jobs": "Uzdevumi",
|
||||
"keep": "Paturēt",
|
||||
"keep_all": "Paturēt visus",
|
||||
"keyboard_shortcuts": "Tastatūras saīsnes",
|
||||
|
@ -873,6 +874,8 @@
|
|||
"validate": "",
|
||||
"variables": "",
|
||||
"version": "Versija",
|
||||
"version_announcement_message": "Sveiki! Ir pieejama jauna Immich versija. Lūdzu, veltiet laiku, lai izlasītu <link>laidiena piezīmes</link> un pārliecinātos, ka jūsu iestatījumi ir atjaunināti, lai novērstu jebkādu nepareizu konfigurāciju, jo īpaši, ja izmantojat WatchTower vai citu mehānismu, kas automātiski atjaunina jūsu Immich instanci.",
|
||||
"version_history": "Versiju vēsture",
|
||||
"video": "Videoklips",
|
||||
"video_hover_setting_description": "",
|
||||
"videos": "Videoklipi",
|
||||
|
|
59
i18n/ms.json
59
i18n/ms.json
|
@ -141,7 +141,7 @@
|
|||
"map_implications": "Ciri peta bergantung pada perkhidmatan jubin luaran (tiles.immich.cloud)",
|
||||
"map_light_style": "Tema terang",
|
||||
"map_manage_reverse_geocoding_settings": "Urus tetapan <link>Geocoding Songsang</link>",
|
||||
"map_reverse_geocoding": "Geocoding Terbalik",
|
||||
"map_reverse_geocoding": "Geokoding Sonsang",
|
||||
"map_reverse_geocoding_enable_description": "Dayakan pengekodan geo terbalik",
|
||||
"map_reverse_geocoding_settings": "Tetapan Pengekodan Geo Terbalik",
|
||||
"map_settings": "Peta",
|
||||
|
@ -229,8 +229,63 @@
|
|||
"server_settings_description": "Urus tetapan pelayan",
|
||||
"server_welcome_message": "Mesej alu-aluan",
|
||||
"server_welcome_message_description": "Mesej yang dipaparkan pada halaman log masuk.",
|
||||
"sidecar_job": "Metadata kereta sisi"
|
||||
"sidecar_job": "Metadata kereta sisi",
|
||||
"slideshow_duration_description": "Bilangan saat untuk memaparkan setiap imej",
|
||||
"smart_search_job_description": "Jalankan pembelajaran mesin pada aset-aset untuk menyokong carian pintar",
|
||||
"storage_template_date_time_description": "Cap masa penciptaan aset digunakan untuk maklumat masa dan tarikh",
|
||||
"storage_template_date_time_sample": "Contoh masa {date}",
|
||||
"storage_template_enable_description": "Dayakan enjin templat storan",
|
||||
"storage_template_hash_verification_enabled": "Pengesahan hac didayakan",
|
||||
"storage_template_hash_verification_enabled_description": "Mendayakan pengesahan hac, jangan lumpuhkan melainkan anda pasti akan implikasinya",
|
||||
"storage_template_migration": "Penghijrahan templat storan",
|
||||
"storage_template_migration_description": "Gunakan <link>{template}</link> semasa pada aset-aset yang dimuat naik sebelum ini",
|
||||
"storage_template_migration_info": "Perubahan templat hanya akan digunakan pada aset baharu. Untuk menggunakan templat secara retroaktif pada aset-aset yang dimuat naik sebelum ini, jalankan <link>{job}</link>.",
|
||||
"storage_template_migration_job": "Kerja Migrasi Templat Storan",
|
||||
"storage_template_more_details": "Untuk butiran lanjut tentang ciri ini, rujuk kepada <template-link>Templat Storan</template-link> dan <implications-link>implikasi</implications-link>",
|
||||
"storage_template_settings": "Templat Storan",
|
||||
"theme_settings_description": "Urus penyesuaian antara muka web Immich",
|
||||
"thumbnail_generation_job": "Jana Imej Kenit",
|
||||
"thumbnail_generation_job_description": "Janakan imej kenit yang besar, kecil, dan kabur untuk setiap aset, serta imej kenit untuk setiap orang"
|
||||
},
|
||||
"deduplication_criteria_1": "Saiz imej dalam bait",
|
||||
"deduplication_criteria_2": "Kiraan data EXIF",
|
||||
"deduplication_info": "Maklumat Pendeduplikasian",
|
||||
"deduplication_info_description": "Untuk prapilih aset secara automatik dan mengalih keluar pendua secara pukal, kami melihat pada:",
|
||||
"default_locale": "Tempatan Lalai",
|
||||
"delete": "Padam",
|
||||
"delete_album": "Padam album",
|
||||
"delete_api_key_prompt": "Adakah anda pasti mahu memadam kunci API ini?",
|
||||
"delete_duplicates_confirmation": "Adakah anda pasti mahu memadam pendua ini secara kekal?",
|
||||
"delete_key": "Padam kunci",
|
||||
"delete_library": "Padam Pustaka",
|
||||
"delete_link": "Padam pautan",
|
||||
"delete_others": "Padam yang lain",
|
||||
"delete_shared_link": "Padam pautan yang dikongsi",
|
||||
"delete_tag": "Padam tag",
|
||||
"delete_tag_confirmation_prompt": "Adakah anda pasti mahu memadam tag {tagName}?",
|
||||
"delete_user": "Padam pengguna",
|
||||
"deleted_shared_link": "Pautan kongsi yang dipadamkan",
|
||||
"deletes_missing_assets": "Memadamkan aset yang hilang daripada cakera",
|
||||
"description": "Penerangan",
|
||||
"details": "Butiran",
|
||||
"direction": "Arah",
|
||||
"disabled": "Dilumpuhkan",
|
||||
"disallow_edits": "Tolak pengeditan",
|
||||
"discord": "Perselisihan",
|
||||
"discover": "Terokai",
|
||||
"dismiss_all_errors": "Tolak semua ralat",
|
||||
"dismiss_error": "Tolak ralat",
|
||||
"display_options": "Pilihan paparan",
|
||||
"display_order": "Tertib paparan",
|
||||
"display_original_photos": "Paparkan foto asal",
|
||||
"display_original_photos_setting_description": "Mengutamakan pemaparan foto asal apabila melihat aset daripada imej kecil apabila aset asal serasi web. Ini boleh menyebabkan kelajuan paparan foto yang lebih perlahan.",
|
||||
"do_not_show_again": "Jangan tunjukkan mesej ini lagi",
|
||||
"documentation": "Dokumentasi",
|
||||
"done": "Selesai",
|
||||
"download": "Muat Turun",
|
||||
"download_settings": "Muat Turun",
|
||||
"download_settings_description": "Urus tetapan yang berkaitan dengan muat turun aset",
|
||||
"downloading": "Memuat turun",
|
||||
"timeline": "Garis masa",
|
||||
"total": "Jumlah",
|
||||
"user_usage_stats": "Statistik penggunaan akaun",
|
||||
|
|
400
i18n/nb_NO.json
400
i18n/nb_NO.json
|
@ -44,12 +44,14 @@
|
|||
"cleared_jobs": "Ryddet opp jobber for: {job}",
|
||||
"config_set_by_file": "Konfigurasjonen er for øyeblikket satt av en konfigurasjonsfil",
|
||||
"confirm_delete_library": "Er du sikker på at du vil slette biblioteket {library}?",
|
||||
"confirm_delete_library_assets": "Er du sikker på at du vil slette dette biblioteket? Dette vil slette alle {count} tilhørende eiendeler fra Immich og kan ikke angres. Filene vil forbli på disken.",
|
||||
"confirm_delete_library_assets": "Er du sikker på at du vil slette dette biblioteket? Dette vil slette alle {count, plural, one {# contained asset} other {all # contained assets}} tilhørende eiendeler fra Immich og kan ikke angres. Filene vil forbli på disken.",
|
||||
"confirm_email_below": "For å bekrefte, skriv inn \"{email}\" nedenfor",
|
||||
"confirm_reprocess_all_faces": "Er du sikker på at du vil behandle alle ansikter på nytt? Dette vil også fjerne navngitte personer.",
|
||||
"confirm_user_password_reset": "Er du sikker på at du vil tilbakestille passordet til {user}?",
|
||||
"create_job": "Lag jobb",
|
||||
"cron_expression": "Cron uttrykk",
|
||||
"cron_expression_description": "Still inn skanneintervallet med cron-formatet. For mer informasjon henvises til f.eks. <link>Crontab Guru</link>",
|
||||
"cron_expression_presets": "Forhåndsinnstillinger for Cron-uttrykk",
|
||||
"disable_login": "Deaktiver innlogging",
|
||||
"duplicate_detection_job_description": "Kjør maskinlæring på filer for å oppdage lignende bilder. Krever bruk av Smart Search",
|
||||
"exclusion_pattern_description": "Ekskluderingsmønstre lar deg ignorere filer og mapper når du skanner biblioteket ditt. Dette er nyttig hvis du har mapper som inneholder filer du ikke vil importere, for eksempel RAW-filer.",
|
||||
|
@ -67,12 +69,19 @@
|
|||
"image_prefer_embedded_preview_setting_description": "Bruk innebygd forhåndsvisning i RAW-bilder som inndata til bildebehandling når tilgjengelig. Dette kan gi mer nøyaktige farger for noen bilder, men kvaliteten er avhengig av kamera og bildet kan ha komprimeringsartefakter.",
|
||||
"image_prefer_wide_gamut": "Foretrekk bredt fargespekter",
|
||||
"image_prefer_wide_gamut_setting_description": "Bruk Display P3 for miniatyrbilder. Dette bevarer glød bedre i bilder med bredt fargerom, men det kan hende bilder ser annerledes ut på gamle enheter med en gammel nettleserversjon. sRBG bilder beholdes som sRGB for å unngå fargeforskyvninger.",
|
||||
"image_preview_description": "Mellomstort bilde med strippet metadata, brukt når du ser på en enkelt ressurs og for maskinlæring",
|
||||
"image_preview_quality_description": "Kvalitet på forhåndsvisning fra 1-100. Høyere er bedre, men genererer større filer og kan redusere hastigheten på systemet. Ved for lav verdi kan det påvirke kvaliteten på maskinlæringen.",
|
||||
"image_preview_title": "Forhåndsvisningsinnstillinger",
|
||||
"image_quality": "Kvalitet",
|
||||
"image_resolution": "Oppløsning",
|
||||
"image_resolution_description": "Høyere oppløsninger kan bevare flere detaljer, men det tar lengre tid å kode, har større filstørrelser og kan redusere appresponsen.",
|
||||
"image_settings": "Bildeinnstilliinger",
|
||||
"image_settings_description": "Administrer kvalitet og oppløsning på genererte bilder",
|
||||
"image_thumbnail_description": "Små miniatyrbilder med strippet metadata, brukt når du ser på grupper av bilder som hovedtidslinjen",
|
||||
"image_thumbnail_quality_description": "Miniatyrbildekvalitet fra 1-100. Høyere er bedre, men produserer større filer og kan redusere appens respons.",
|
||||
"image_thumbnail_title": "Miniatyrbilde oppsett",
|
||||
"job_concurrency": "{job} samtidighet",
|
||||
"job_created": "Oppgave laget",
|
||||
"job_not_concurrency_safe": "Denne jobben er ikke samtidlighet sikker.",
|
||||
"job_settings": "Jobbinnstillinger",
|
||||
"job_settings_description": "Administrer parallellkjøring for jobber",
|
||||
|
@ -129,7 +138,9 @@
|
|||
"map_enable_description": "Aktiver kartfunksjoner",
|
||||
"map_gps_settings": "Kart & GPS Innstillinger",
|
||||
"map_gps_settings_description": "Administrer innstillinger for kart og GPS (Reversert geokoding)",
|
||||
"map_implications": "Kartfunksjonen er avhengig av en ekstern bilde tjeneste (tiles.immich.cloud)",
|
||||
"map_light_style": "Lys stil",
|
||||
"map_manage_reverse_geocoding_settings": "Administrer instillinger for <link>Omvendt Geokoding</link>",
|
||||
"map_reverse_geocoding": "Omvendt geokoding",
|
||||
"map_reverse_geocoding_enable_description": "Aktiver omvendt geokoding",
|
||||
"map_reverse_geocoding_settings": "Innstillinger for omvendt geokoding",
|
||||
|
@ -138,6 +149,8 @@
|
|||
"map_style_description": "URL til et style.json-karttema",
|
||||
"metadata_extraction_job": "Hent metadata",
|
||||
"metadata_extraction_job_description": "Hent metadatainformasjon fra hver fil, for eksempel GPS-posisjon og oppløsning",
|
||||
"metadata_faces_import_setting": "Aktiver ansikts importering",
|
||||
"metadata_faces_import_setting_description": "Importer ansikt fra bilde EXIF data og tillegsfiler",
|
||||
"metadata_settings": "Metadatainnstillinger",
|
||||
"metadata_settings_description": "Administrer metadatainnstillinger",
|
||||
"migration_job": "Migrering",
|
||||
|
@ -174,7 +187,7 @@
|
|||
"oauth_issuer_url": "Utgiverens URL",
|
||||
"oauth_mobile_redirect_uri": "Mobil omdirigerings-URI",
|
||||
"oauth_mobile_redirect_uri_override": "Mobil omdirigerings-URI overstyring",
|
||||
"oauth_mobile_redirect_uri_override_description": "Aktiver når 'app.immich:/' er en ugyldig omdirigerings-URI.",
|
||||
"oauth_mobile_redirect_uri_override_description": "Aktiver når OAuth-leverandøren ikke tillater en mobil URI, som '{callback}'",
|
||||
"oauth_profile_signing_algorithm": "Profilsigneringsalgoritme",
|
||||
"oauth_profile_signing_algorithm_description": "Algoritme brukt for å signere brukerprofilen.",
|
||||
"oauth_scope": "Omfang",
|
||||
|
@ -194,6 +207,7 @@
|
|||
"password_settings": "Passordinnlogging",
|
||||
"password_settings_description": "Administrer innstillinger for passordinnlogging",
|
||||
"paths_validated_successfully": "Alle filbaner validert uten problemer",
|
||||
"person_cleanup_job": "Person opprydding",
|
||||
"quota_size_gib": "Kvotestørrelse (GiB)",
|
||||
"refreshing_all_libraries": "Oppdaterer alle biblioteker",
|
||||
"registration": "Administrator registrering",
|
||||
|
@ -204,9 +218,13 @@
|
|||
"require_password_change_on_login": "Krev at brukeren endrer passord ved første pålogging",
|
||||
"reset_settings_to_default": "Tilbakestill innstillinger til standard",
|
||||
"reset_settings_to_recent_saved": "Tilbakestill innstillingene til de nylig lagrede innstillingene",
|
||||
"scanning_library": "Søk biblioteket",
|
||||
"search_jobs": "Søk etter jobber...",
|
||||
"send_welcome_email": "Send velkomst-e-post",
|
||||
"server_external_domain_settings": "Eksternt domene",
|
||||
"server_external_domain_settings_description": "Domene for offentlige delingslenker, inkludert http(s)://",
|
||||
"server_public_users": "Offentlige brukere",
|
||||
"server_public_users_description": "Alle brukere (navn og epost) blir vist når en bruker blir lagt til et delt album. Når deaktivert, vil brukerne bare bli synlig for administratorer.",
|
||||
"server_settings": "Serverinstillinger",
|
||||
"server_settings_description": "Administrer serverinnstillinger",
|
||||
"server_welcome_message": "Velkomstmelding",
|
||||
|
@ -221,7 +239,7 @@
|
|||
"storage_template_hash_verification_enabled": "Hash verifisering aktivert",
|
||||
"storage_template_hash_verification_enabled_description": "Aktiver hasjverifisering. Ikke deaktiver dette med mindre du er sikker på konsekvensene",
|
||||
"storage_template_migration": "Lagringsmal migrering",
|
||||
"storage_template_migration_description": "Bruk gjeldende <link>{mal}</link> på tidligere opplastede bilder.",
|
||||
"storage_template_migration_description": "Bruk gjeldende <link>{template}</link> på tidligere opplastede bilder",
|
||||
"storage_template_migration_info": "Malendringer vil kun gjelde nye ressurser. For å anvende malen på tidligere opplastede ressurser, kjør <link>{job}</link>.",
|
||||
"storage_template_migration_job": "Migreringsjobb for lagringsmal",
|
||||
"storage_template_more_details": "For mer informasjon om denne funksjonen, se <template-link>lagringsmalen</template-link> og dens <implications-link>konsekvenser</implications-link>",
|
||||
|
@ -231,6 +249,17 @@
|
|||
"storage_template_settings_description": "Administrer mappestrukturen og filnavnet til opplastede fil",
|
||||
"storage_template_user_label": "<code>{label}</code> er brukerens Lagringsetikett",
|
||||
"system_settings": "Systeminstillinger",
|
||||
"tag_cleanup_job": "Tag opprydding",
|
||||
"template_email_available_tags": "Du kan bruke følgende variabler i din mal: {tags}",
|
||||
"template_email_if_empty": "Hvis malen er tom, vil standard epost bli brut.",
|
||||
"template_email_invite_album": "Inviter Album Mal",
|
||||
"template_email_preview": "Forhåndsvis",
|
||||
"template_email_settings": "Epost mal",
|
||||
"template_email_settings_description": "Administrer tilpasset mal for varslings maler",
|
||||
"template_email_update_album": "Oppdater Album Mal",
|
||||
"template_email_welcome": "Mal for velkomst epost",
|
||||
"template_settings": "Varslings Mal",
|
||||
"template_settings_description": "Administrer tilpassede maler for varsling.",
|
||||
"theme_custom_css_settings": "Egendefinert CSS",
|
||||
"theme_custom_css_settings_description": "Cascading Style Sheets gjør det mulig å tilpasse designet av Immich.",
|
||||
"theme_settings": "Tema innstillinger",
|
||||
|
@ -260,6 +289,8 @@
|
|||
"transcoding_constant_rate_factor": "Konstant ratefaktor (-crf)",
|
||||
"transcoding_constant_rate_factor_description": "Nivået på videokvaliteten. Typiske verdier er 23 for H.264, 28 for HEVC, 31 for VP9 og 35 for AV1. Lavere verdier gir bedre kvalitet, men større filstørrelser.",
|
||||
"transcoding_disabled_description": "Ikke transkoder noen videoer; dette kan føre til avspillingsproblemer på visse klienter",
|
||||
"transcoding_encoding_options": "Kodek Alternativer",
|
||||
"transcoding_encoding_options_description": "Sett kodeks, oppløsning, kvalitet og andre valg for koding av videoer",
|
||||
"transcoding_hardware_acceleration": "Maskinvareakselerasjon",
|
||||
"transcoding_hardware_acceleration_description": "Eksperimentell; mye raskere, men vil ha lavere kvalitet ved samme bithastighet",
|
||||
"transcoding_hardware_decoding": "Maskinvaredekoding",
|
||||
|
@ -272,6 +303,8 @@
|
|||
"transcoding_max_keyframe_interval": "Maksimal referansebilde intervall",
|
||||
"transcoding_max_keyframe_interval_description": "Setter maksimalt antall bilder mellom referansebilder. Lavere verdier reduserer kompresjonseffektiviteten, men forbedrer søketider og kan forbedre kvaliteten i scener med rask bevegelse. 0 setter verdien automatisk.",
|
||||
"transcoding_optimal_description": "Videoer som har høyere oppløsning enn målopppløsningen eller som ikke er i et akseptert format",
|
||||
"transcoding_policy": "Retningslinjer for omkoding",
|
||||
"transcoding_policy_description": "Velg når en video vil blir omkodet",
|
||||
"transcoding_preferred_hardware_device": "Foretrukken maskinvareenhet",
|
||||
"transcoding_preferred_hardware_device_description": "Gjelder bare for VAAPI og QSV. Angir DRI-node brukt for maskinvaretranscoding.",
|
||||
"transcoding_preset_preset": "Forhåndsinnstilling (-preset)",
|
||||
|
@ -280,10 +313,10 @@
|
|||
"transcoding_reference_frames_description": "Antall bilder som skal refereres til når en gitt ramme komprimeres. Høyere verdier forbedrer komprimeringseffektiviteten, men senker ned kodingen. 0 setter denne verdien automatisk.",
|
||||
"transcoding_required_description": "Bare videoer som ikke er i et akseptert format",
|
||||
"transcoding_settings": "Innstillinger for videotranskoding",
|
||||
"transcoding_settings_description": "Administrer oppløsning og kodinginformasjon for videofiler",
|
||||
"transcoding_settings_description": "Administrer hvilke videoer å omkode og hvordan behandle dem",
|
||||
"transcoding_target_resolution": "Endelig oppløsning",
|
||||
"transcoding_target_resolution_description": "Høyere oppløsninger kan bevare mer detaljer, men tar lengre tid å kode, resulterer i større filstørrelser, og kan redusere appens responsivitet.",
|
||||
"transcoding_temporal_aq": "Temporal AQ",
|
||||
"transcoding_temporal_aq": "Midlertidig AQ",
|
||||
"transcoding_temporal_aq_description": "Gjelder kun for NVENC. Øker kvaliteten på scener med høy detaljgrad og lav bevegelse. Kan være inkompatibelt med eldre enheter.",
|
||||
"transcoding_threads": "Tråder",
|
||||
"transcoding_threads_description": "Høyere verdier fører til raskere koding, men gir mindre plass for serveren til å behandle andre oppgaver mens den er aktiv. Verdien bør ikke være mer enn antall CPU-kjerner. Maksimerer utnyttelsen hvis satt til 0.",
|
||||
|
@ -302,6 +335,7 @@
|
|||
"trash_settings_description": "Administrer papirkurv-innstillinger",
|
||||
"untracked_files": "Usporede filer",
|
||||
"untracked_files_description": "Disse filene er ikke sporet av applikasjonen. De kan være resultatet av mislykkede flyttinger, avbrutte opplastninger eller etterlatt på grunn av en feil",
|
||||
"user_cleanup_job": "Bruker opprydning",
|
||||
"user_delete_delay": "<b>{user}</b>s konto og elementer vil legges i kø for permanent sletting om {delay, plural, one {# dag} other {# dager}}.",
|
||||
"user_delete_delay_settings": "Sletteforsinkelse",
|
||||
"user_delete_delay_settings_description": "Antall dager etter fjerning før en brukerkonto og dens filer permanent slettes. Brukerfjerningsjobben kjører ved midnatt for å sjekke etter brukere som er klare for sletting. Endringer i denne innstillingen vil bli evaluert ved neste utførelse.",
|
||||
|
@ -328,10 +362,11 @@
|
|||
"advanced": "Avansert",
|
||||
"age_months": "Alder {months, plural, one {# måned} other {# måneder}}",
|
||||
"age_year_months": "Alder 1 år, {months, plural, one {# måned} other {# måneder}}",
|
||||
"age_years": "{years, plural, other {Age #}}",
|
||||
"album_added": "Album lagt til",
|
||||
"album_added_notification_setting_description": "Motta en e-postvarsling når du legges til i et delt album",
|
||||
"album_cover_updated": "Albumomslag oppdatert",
|
||||
"album_delete_confirmation": "Er du sikker på at du vil slette albumet {album}?\nHvis dette albumet er delt, vil ikke andre brukere ha tilgang til det lenger.",
|
||||
"album_delete_confirmation": "Er du sikker på at du vil slette albumet {album}?",
|
||||
"album_delete_confirmation_description": "Hvis dette albumet deles, vil andre brukere miste tilgangen til dette.",
|
||||
"album_info_updated": "Albuminformasjon oppdatert",
|
||||
"album_leave": "Forlate album?",
|
||||
|
@ -384,16 +419,30 @@
|
|||
"asset_uploading": "Laster opp...",
|
||||
"assets": "Filer",
|
||||
"assets_added_count": "Lagt til {count, plural, one {# element} other {# elementer}}",
|
||||
"assets_restore_confirmation": "Er du sikker på at du vil gjenopprette alle slettede eiendeler? Denne handlingen kan ikke angres!",
|
||||
"assets_added_to_album_count": "Lagt til {count, plural, one {# asset} other {# assets}} i album",
|
||||
"assets_added_to_name_count": "Lagt til {count, plural, one {# asset} other {# assets}} i {hasName, select, true {<b>{name}</b>} other {new album}}",
|
||||
"assets_count": "{count, plural, one {# asset} other {# assets}}",
|
||||
"assets_moved_to_trash_count": "Flyttet {count, plural, one {# asset} other {# assets}} til søppel",
|
||||
"assets_permanently_deleted_count": "Permanent slettet {count, plural, one {# asset} other {# assets}}",
|
||||
"assets_removed_count": "Slettet {count, plural, one {# asset} other {# assets}}",
|
||||
"assets_restore_confirmation": "Er du sikker på at du vil gjenopprette alle slettede eiendeler? Denne handlingen kan ikke angres! Vær oppmerksom på at frakoblede ressurser ikke kan gjenopprettes på denne måten.",
|
||||
"assets_restored_count": "Gjenopprettet {count, plural, one {# asset} other {# assets}}",
|
||||
"assets_trashed_count": "Kastet {count, plural, one {# asset} other {# assets}}",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} er allerede lagt til i albumet",
|
||||
"authorized_devices": "Autoriserte enheter",
|
||||
"back": "Tilbake",
|
||||
"back_close_deselect": "Tilbake, lukk eller fjern merking",
|
||||
"backward": "Bakover",
|
||||
"birthdate_saved": "Fødselsdato er lagret vellykket.",
|
||||
"birthdate_saved": "Fødselsdato er vellykket lagret",
|
||||
"birthdate_set_description": "Fødelsdatoen er brukt for å beregne alderen til denne personen ved tidspunktet til bildet.",
|
||||
"blurred_background": "Uskarp bakgrunn",
|
||||
"bulk_delete_duplicates_confirmation": "Er du sikker på at du vil slette {count} dupliserte filer? Dette vil beholde største filen fra hver gruppe og vil permanent slette alle andre duplikater. Du kan ikke angre denne handlingen!",
|
||||
"bulk_keep_duplicates_confirmation": "Er du sikker på at du vil beholde {count} dupliserte filer? Dette vil løse alle dupliserte grupper uten å slette noe.",
|
||||
"bulk_trash_duplicates_confirmation": "Er du sikker på ønsker å slette {count} dupliserte filer? Dette vil beholde største filen fra hver gruppe, samt slette alle andre duplikater.",
|
||||
"bugs_and_feature_requests": "Feil og funksjonsforespørsler",
|
||||
"build": "Bygg",
|
||||
"build_image": "Lag Bilde",
|
||||
"bulk_delete_duplicates_confirmation": "Er du sikker på at du vil slette {count, plural, one {# duplicate asset} other {# duplicate assets}} dupliserte filer? Dette vil beholde største filen fra hver gruppe og vil permanent slette alle andre duplikater. Du kan ikke angre denne handlingen!",
|
||||
"bulk_keep_duplicates_confirmation": "Er du sikker på at du vil beholde {count, plural, one {# duplicate asset} other {# duplicate assets}} dupliserte filer? Dette vil løse alle dupliserte grupper uten å slette noe.",
|
||||
"bulk_trash_duplicates_confirmation": "Er du sikker på ønsker å slette {count, plural, one {# duplicate asset} other {# duplicate assets}} dupliserte filer? Dette vil beholde største filen fra hver gruppe, samt slette alle andre duplikater.",
|
||||
"buy": "Kjøp Immich",
|
||||
"camera": "Kamera",
|
||||
"camera_brand": "Kameramerke",
|
||||
"camera_model": "Kameramodell",
|
||||
|
@ -420,8 +469,11 @@
|
|||
"clear_all_recent_searches": "Fjern alle nylige søk",
|
||||
"clear_message": "Fjern melding",
|
||||
"clear_value": "Fjern verdi",
|
||||
"clockwise": "Med urviseren",
|
||||
"close": "Lukk",
|
||||
"collapse": "Trekk sammen",
|
||||
"collapse_all": "Kollaps alt",
|
||||
"color": "Farge",
|
||||
"color_theme": "Fargetema",
|
||||
"comment_deleted": "Kommentar slettet",
|
||||
"comment_options": "Kommentaralternativer",
|
||||
|
@ -430,6 +482,7 @@
|
|||
"confirm": "Bekreft",
|
||||
"confirm_admin_password": "Bekreft administratorpassord",
|
||||
"confirm_delete_shared_link": "Er du sikker på at du vil slette denne delte lenken?",
|
||||
"confirm_keep_this_delete_others": "Alle andre ressurser i denne stabelen vil bli slettet bortsett fra denne ressursen. Er du sikker på at du vil fortsette?",
|
||||
"confirm_password": "Bekreft passord",
|
||||
"contain": "Inneholder",
|
||||
"context": "Kontekst",
|
||||
|
@ -455,6 +508,8 @@
|
|||
"create_new_person": "Opprett ny person",
|
||||
"create_new_person_hint": "Tildel valgte eiendeler til en ny person",
|
||||
"create_new_user": "Opprett ny bruker",
|
||||
"create_tag": "Lag tag",
|
||||
"create_tag_description": "Lag en ny tag. For undertag, vennligst fullfør hele banen til taggen, inkludert forovervendt skråstrek.",
|
||||
"create_user": "Opprett Bruker",
|
||||
"created": "Opprettet",
|
||||
"current_device": "Nåværende enhet",
|
||||
|
@ -468,6 +523,10 @@
|
|||
"date_range": "Datoområde",
|
||||
"day": "Dag",
|
||||
"deduplicate_all": "De-dupliser alle",
|
||||
"deduplication_criteria_1": "Bilde størrelse i bytes",
|
||||
"deduplication_criteria_2": "Antall av EXIF data",
|
||||
"deduplication_info": "Dedupliseringsinformasjon",
|
||||
"deduplication_info_description": "For å automatisk forhåndsvelge eiendeler og fjerne duplikater samtidig, ser vi på:",
|
||||
"default_locale": "Standard språkinnstilling",
|
||||
"default_locale_description": "Formater datoer og tall basert på nettleserens språkinnstilling",
|
||||
"delete": "Slett",
|
||||
|
@ -477,14 +536,19 @@
|
|||
"delete_key": "Slett nøkkel",
|
||||
"delete_library": "Slett bibliotek",
|
||||
"delete_link": "Slett lenke",
|
||||
"delete_others": "Slett andre",
|
||||
"delete_shared_link": "Slett delt lenke",
|
||||
"delete_tag": "Slett tag",
|
||||
"delete_tag_confirmation_prompt": "Er du sikker på at du vil slette {tagName} tag?",
|
||||
"delete_user": "Slett bruker",
|
||||
"deleted_shared_link": "Slettet delt lenke",
|
||||
"deletes_missing_assets": "Slett eiendeler som mangler fra disk",
|
||||
"description": "Beskrivelse",
|
||||
"details": "Detaljer",
|
||||
"direction": "Retning",
|
||||
"disabled": "Deaktivert",
|
||||
"disallow_edits": "Forby redigering",
|
||||
"discord": "Discord",
|
||||
"discover": "Oppdag",
|
||||
"dismiss_all_errors": "Avvis alle feil",
|
||||
"dismiss_error": "Avvis feil",
|
||||
|
@ -493,14 +557,20 @@
|
|||
"display_original_photos": "Vis opprinnelige bilder",
|
||||
"display_original_photos_setting_description": "Foretrekk å vise det opprinnelige bildet når du ser på en fil i stedet for miniatyrbilder når den opprinnelige filen er kompatibel med nettet. Dette kan føre til tregere visning av bilder.",
|
||||
"do_not_show_again": "Ikke vis denne meldingen igjen",
|
||||
"documentation": "Dokumentasjon",
|
||||
"done": "Ferdig",
|
||||
"download": "Last ned",
|
||||
"download_include_embedded_motion_videos": "Innebygde videoer",
|
||||
"download_include_embedded_motion_videos_description": "Inkluder innebygde videoer i levende bilder som en egen fil",
|
||||
"download_settings": "Last ned",
|
||||
"download_settings_description": "Administrer innstillinger relatert til nedlasting av filer",
|
||||
"downloading": "Laster ned",
|
||||
"downloading_asset_filename": "Last ned {filename}",
|
||||
"drop_files_to_upload": "Slipp filer hvor som helst for å laste opp",
|
||||
"duplicates": "Duplikater",
|
||||
"duplicates_description": "Løs hver gruppe ved å angi hvilke, hvis noen, er duplikater",
|
||||
"duration": "Varighet",
|
||||
"edit": "Rediger",
|
||||
"edit_album": "Rediger album",
|
||||
"edit_avatar": "Rediger avatar",
|
||||
"edit_date": "Rediger dato",
|
||||
|
@ -512,62 +582,119 @@
|
|||
"edit_key": "Rediger nøkkel",
|
||||
"edit_link": "Endre lenke",
|
||||
"edit_location": "Endre lokasjon",
|
||||
"edit_name": "Endre navn",
|
||||
"edit_name": "Redigere navn",
|
||||
"edit_people": "Rediger personer",
|
||||
"edit_tag": "Rediger tag",
|
||||
"edit_title": "Rediger Tittel",
|
||||
"edit_user": "Rediger bruker",
|
||||
"edited": "Redigert",
|
||||
"editor": "Redaktør",
|
||||
"editor_close_without_save_prompt": "Endringene vil ikke bli lagret",
|
||||
"editor_close_without_save_title": "Lukk redigering?",
|
||||
"editor_crop_tool_h2_aspect_ratios": "Sideforhold",
|
||||
"editor_crop_tool_h2_rotation": "Rotasjon",
|
||||
"email": "E-postadresse",
|
||||
"empty_trash": "Tøm papirkurv",
|
||||
"enable": "",
|
||||
"enabled": "",
|
||||
"empty_trash_confirmation": "Er du sikker på at du vil tømme søppelbøtte ? Dette vil slette alle filene i søppelbøtta permanent fra Immich.\nDu kan ikke angre denne handlingen!",
|
||||
"enable": "Aktivere",
|
||||
"enabled": "Aktivert",
|
||||
"end_date": "Slutt dato",
|
||||
"error": "Feil",
|
||||
"error_loading_image": "Feil ved lasting av bilde",
|
||||
"error_title": "Feil - Noe gikk galt",
|
||||
"errors": {
|
||||
"cannot_navigate_next_asset": "Kan ikke navigere til neste fil",
|
||||
"cannot_navigate_previous_asset": "Kan ikke navigere til forrige fil",
|
||||
"cant_apply_changes": "Kan ikke legge til endringene",
|
||||
"cant_change_activity": "Kan ikke {enabled, select, true {disable} other {enable}} aktivitet",
|
||||
"cant_change_asset_favorite": "Kan ikke endre favoritt til filen",
|
||||
"cant_change_metadata_assets_count": "Kan ikke endre metadata for {count, plural, one {# asset} other {# assets}}",
|
||||
"cant_get_faces": "Kan ikke finne ansikter",
|
||||
"cant_get_number_of_comments": "Kan ikke hente antall kommentarer",
|
||||
"cant_search_people": "Kan ikke søke etter mennesker",
|
||||
"cant_search_places": "Kan ikke søke etter plasser",
|
||||
"cleared_jobs": "Fjernet jobber for: {job}",
|
||||
"error_adding_assets_to_album": "Feil med å legge til bilder til album",
|
||||
"error_adding_users_to_album": "Feil, kan ikke legge til brukere til album",
|
||||
"error_deleting_shared_user": "Feil med å slette delt bruker",
|
||||
"error_downloading": "Feil med å laste ned {filename}",
|
||||
"error_hiding_buy_button": "Feil med å skjule kjøp knapp",
|
||||
"error_removing_assets_from_album": "Feil med å fjerne bilder fra album, sjekk konsoll for mer detaljer",
|
||||
"error_selecting_all_assets": "Feil med å velge alle bilder",
|
||||
"exclusion_pattern_already_exists": "Dette eksklusjonsmønsteret eksisterer allerede.",
|
||||
"failed_job_command": "Kommandoen {command} mislyktes for jobben: {job}",
|
||||
"failed_to_create_album": "Feil med å lage album",
|
||||
"failed_to_create_shared_link": "Feil med å lage delt lenke",
|
||||
"failed_to_edit_shared_link": "Feilet med å redigere delt lenke",
|
||||
"failed_to_get_people": "Feilet med å finne mennesker",
|
||||
"failed_to_keep_this_delete_others": "Feilet med å beholde dette bilde og slette de andre",
|
||||
"failed_to_load_asset": "Feilet med å laste bilder",
|
||||
"failed_to_load_assets": "Feilet med å laste bilde",
|
||||
"failed_to_load_people": "Feilen med å laste mennesker",
|
||||
"failed_to_remove_product_key": "Feilet med å ta bort produkt nøkkel",
|
||||
"failed_to_stack_assets": "Feilet med å stable bilder",
|
||||
"failed_to_unstack_assets": "Feilet med å avstable bilder",
|
||||
"import_path_already_exists": "Denne importstien eksisterer allerede.",
|
||||
"incorrect_email_or_password": "Feil epost eller passord",
|
||||
"paths_validation_failed": "{paths, plural, one {# sti} other {# sti}} mislyktes validering",
|
||||
"profile_picture_transparent_pixels": "Profil bilde kan ikke ha gjennomsiktige piksler. Vennligst zoom inn og/eller flytt bilde.",
|
||||
"quota_higher_than_disk_size": "Du har satt en kvote høyere enn diskstørrelsen",
|
||||
"repair_unable_to_check_items": "Kan ikke sjekke {count, select, one {element} other {elementer}}",
|
||||
"unable_to_add_album_users": "Kan ikke legge til brukere i albumet",
|
||||
"unable_to_add_assets_to_shared_link": "Kan ikke legge til bilder til delt lenke",
|
||||
"unable_to_add_comment": "Kan ikke legge til kommentar",
|
||||
"unable_to_add_exclusion_pattern": "Kan ikke legge til eksklusjonsmønster",
|
||||
"unable_to_add_import_path": "Kan ikke legge til importsti",
|
||||
"unable_to_add_partners": "Kan ikke legge til partnere",
|
||||
"unable_to_add_remove_archive": "Kan ikke {archived, select, true {remove asset from} other {add asset to}} arkivet",
|
||||
"unable_to_add_remove_favorites": "Kan ikke {favorite, select, true {add asset to} other {remove asset from}} favoritter",
|
||||
"unable_to_archive_unarchive": "Kan ikke {archived, select, true {archive} other {unarchive}}",
|
||||
"unable_to_change_album_user_role": "Kan ikke endre brukerens rolle i albumet",
|
||||
"unable_to_change_date": "Kan ikke endre dato",
|
||||
"unable_to_change_favorite": "Kan ikke endre favoritt for bildet",
|
||||
"unable_to_change_location": "Kan ikke endre plassering",
|
||||
"unable_to_change_password": "Kan ikke endre passord",
|
||||
"unable_to_change_visibility": "Kan ikke endre synlighet for {count, plural, one {# person} other {# people}}",
|
||||
"unable_to_complete_oauth_login": "Kunne ikke fullføre OAuth innlogging",
|
||||
"unable_to_connect": "Kan ikke koble til",
|
||||
"unable_to_connect_to_server": "Kan ikke koble til server",
|
||||
"unable_to_copy_to_clipboard": "Kan ikke kopiere til utklippstavlen, sørg for at du får tilgang til siden via HTTPS",
|
||||
"unable_to_create_admin_account": "",
|
||||
"unable_to_create_admin_account": "Kan ikke opprette administrator bruker",
|
||||
"unable_to_create_api_key": "Kan ikke opprette en ny API-nøkkel",
|
||||
"unable_to_create_library": "Kan ikke opprette bibliotek",
|
||||
"unable_to_create_user": "Kan ikke opprette bruker",
|
||||
"unable_to_delete_album": "Kan ikke slette album",
|
||||
"unable_to_delete_asset": "Kan ikke slette filen",
|
||||
"unable_to_delete_assets": "Feil med å slette bilde",
|
||||
"unable_to_delete_exclusion_pattern": "Kan ikke slette eksklusjonsmønster",
|
||||
"unable_to_delete_import_path": "Kan ikke slette importsti",
|
||||
"unable_to_delete_shared_link": "Kan ikke slette delt lenke",
|
||||
"unable_to_delete_user": "Kan ikke slette bruker",
|
||||
"unable_to_download_files": "Kan ikke laste ned filer",
|
||||
"unable_to_edit_exclusion_pattern": "Kan ikke redigere eksklusjonsmønster",
|
||||
"unable_to_edit_import_path": "Kan ikke redigere importsti",
|
||||
"unable_to_empty_trash": "Kan ikke tømme papirkurven",
|
||||
"unable_to_enter_fullscreen": "Kan ikke gå inn i fullskjerm",
|
||||
"unable_to_exit_fullscreen": "Kan ikke gå ut fra fullskjerm",
|
||||
"unable_to_get_comments_number": "Kan ikke hente antall kommentarer",
|
||||
"unable_to_get_shared_link": "Kan ikke hente delt lenke",
|
||||
"unable_to_hide_person": "Kan ikke skjule person",
|
||||
"unable_to_link_motion_video": "Kan ikke lenke bevegelig video",
|
||||
"unable_to_link_oauth_account": "Kan ikke lenke til OAuth-konto",
|
||||
"unable_to_load_album": "Kan ikke laste inn album",
|
||||
"unable_to_load_asset_activity": "Kan ikke laste inn aktivitet for filen",
|
||||
"unable_to_load_items": "Kan ikke laste inn elementer",
|
||||
"unable_to_load_liked_status": "Kan ikke laste inn likt status",
|
||||
"unable_to_log_out_all_devices": "Kan ikke logge ut fra alle enheter",
|
||||
"unable_to_log_out_device": "Kan ikke logge ut av enhet",
|
||||
"unable_to_login_with_oauth": "Kan ikke logge inn med OAuth",
|
||||
"unable_to_play_video": "Kan ikke spille av video",
|
||||
"unable_to_reassign_assets_existing_person": "Kunne ikke endre bruker på bildene til {name, select, null {an existing person} other {{name}}}",
|
||||
"unable_to_reassign_assets_new_person": "Kunne ikke tildele bildene til en ny person",
|
||||
"unable_to_refresh_user": "Kan ikke oppdatere bruker",
|
||||
"unable_to_remove_album_users": "Kan ikke fjerne brukere fra album",
|
||||
"unable_to_remove_api_key": "Kan ikke fjerne API-nøkkel",
|
||||
"unable_to_remove_assets_from_shared_link": "Kunne ikke fjerne bilder fra delt lenke",
|
||||
"unable_to_remove_deleted_assets": "Kan ikke fjerne offlinefiler",
|
||||
"unable_to_remove_library": "Kan ikke fjerne bibliotek",
|
||||
"unable_to_remove_partner": "Kan ikke fjerne partner",
|
||||
|
@ -580,35 +707,48 @@
|
|||
"unable_to_restore_user": "Kan ikke gjenopprette bruker",
|
||||
"unable_to_save_album": "Kan ikke lagre album",
|
||||
"unable_to_save_api_key": "Kan ikke lagre API-nøkkel",
|
||||
"unable_to_save_date_of_birth": "Kunne ikke lagre bursdag",
|
||||
"unable_to_save_name": "Kan ikke lagre navn",
|
||||
"unable_to_save_profile": "Kan ikke lagre profil",
|
||||
"unable_to_save_settings": "Kan ikke lagre instillinger",
|
||||
"unable_to_scan_libraries": "Kan ikke skanne biblioteker",
|
||||
"unable_to_scan_library": "Kan ikke skanne bibliotek",
|
||||
"unable_to_set_feature_photo": "Kunne ikke sette funksjonsbilde",
|
||||
"unable_to_set_profile_picture": "Kan ikke sette profilbilde",
|
||||
"unable_to_submit_job": "Kan ikke sende inn jobb",
|
||||
"unable_to_trash_asset": "Kan ikke flytte filen til papirkurven",
|
||||
"unable_to_unlink_account": "Kan ikke fjerne kobling til konto",
|
||||
"unable_to_unlink_motion_video": "Kunne ikke ta på kobling på bevegelig video",
|
||||
"unable_to_update_album_cover": "Kunne ikke oppdatere album bilde",
|
||||
"unable_to_update_album_info": "Kunne ikke oppdatere informasjon i album",
|
||||
"unable_to_update_library": "Kan ikke oppdatere bibliotek",
|
||||
"unable_to_update_location": "Kan ikke oppdatere plassering",
|
||||
"unable_to_update_settings": "Kan ikke oppdatere innstillinger",
|
||||
"unable_to_update_timeline_display_status": "Kan ikke oppdatere visningsstatus for tidslinje",
|
||||
"unable_to_update_user": "Kan ikke oppdatere bruker"
|
||||
"unable_to_update_user": "Kan ikke oppdatere bruker",
|
||||
"unable_to_upload_file": "Kunne ikke laste opp fil"
|
||||
},
|
||||
"exif": "EXIF",
|
||||
"exit_slideshow": "Avslutt lysbildefremvisning",
|
||||
"expand_all": "Utvid alle",
|
||||
"expire_after": "Utgå etter",
|
||||
"expired": "Utgått",
|
||||
"expires_date": "Utløper {date}",
|
||||
"explore": "Utforsk",
|
||||
"explorer": "Utforsker",
|
||||
"export": "Eksporter",
|
||||
"export_as_json": "Eksporter som JSON",
|
||||
"extension": "Utvidelse",
|
||||
"external": "Ekstern",
|
||||
"external_libraries": "Eksterne Bibliotek",
|
||||
"face_unassigned": "Ikke tilordnet",
|
||||
"failed_to_load_assets": "Feilet med å laste fil",
|
||||
"favorite": "Favoritt",
|
||||
"favorite_or_unfavorite_photo": "Merk som favoritt eller fjern som favoritt",
|
||||
"favorites": "Favoritter",
|
||||
"feature_photo_updated": "Fremhevet bilde oppdatert",
|
||||
"features": "Funksjoner",
|
||||
"features_setting_description": "Administrerer funksjoner for appen",
|
||||
"file_name": "Filnavn",
|
||||
"file_name_or_extension": "Filnavn eller filtype",
|
||||
"filename": "Filnavn",
|
||||
|
@ -616,24 +756,45 @@
|
|||
"filter_people": "Filtrer personer",
|
||||
"find_them_fast": "Finn dem raskt ved søking av navn",
|
||||
"fix_incorrect_match": "Fiks feilaktig match",
|
||||
"folders": "Mapper",
|
||||
"folders_feature_description": "Utforsker mappe visning for bilder og videoer på fil systemet",
|
||||
"forward": "Fremover",
|
||||
"general": "Generelt",
|
||||
"get_help": "Få Hjelp",
|
||||
"getting_started": "Kom i gang",
|
||||
"go_back": "Gå tilbake",
|
||||
"go_to_folder": "Gå til mappe",
|
||||
"go_to_search": "Gå til søk",
|
||||
"group_albums_by": "Grupper album etter...",
|
||||
"group_no": "Ingen gruppering",
|
||||
"group_owner": "Grupper etter eiere",
|
||||
"group_year": "Grupper etter år",
|
||||
"has_quota": "Har kvote",
|
||||
"hi_user": "Hei {name} ({email})",
|
||||
"hide_all_people": "Skjul alle mennesker",
|
||||
"hide_gallery": "Skjul galleri",
|
||||
"hide_named_person": "Skjul {name}",
|
||||
"hide_password": "Skjul passord",
|
||||
"hide_person": "Skjul person",
|
||||
"hide_unnamed_people": "Skjul mennesker uten navn",
|
||||
"host": "Vert",
|
||||
"hour": "Time",
|
||||
"image": "Bilde",
|
||||
"image_alt_text_date": "{isVideo, select, true {Video} other {Image}} tatt på {date}",
|
||||
"image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Image}} tatt med {person1} den {date}",
|
||||
"image_alt_text_date_2_people": "{isVideo, select, true {Video} other {Image}} tatt med {person1} og {person2} den {date}",
|
||||
"image_alt_text_date_3_people": "{isVideo, select, true {Video} other {Image}} tatt med {person1}, {person2}, og {person3} den {date}",
|
||||
"image_alt_text_date_4_or_more_people": "{isVideo, select, true {Video} other {Image}} tatt med {person1}, {person2}, og {additionalCount, number} andre den {date}",
|
||||
"image_alt_text_date_place": "{isVideo, select, true {Video} other {Image}} tatt i {city}, {country} den {date}",
|
||||
"image_alt_text_date_place_1_person": "{isVideo, select, true {Video} other {Image}} tatt i {city}, {country} med {person1} den {date}",
|
||||
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} tatt i {city}, {country} med {person1} og {person2} den {date}",
|
||||
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} tatt i {city}, {country} med {person1}, {person2}, og {person3} den {date}",
|
||||
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} tatt i {city}, {country} med {person1}, {person2}, ok {additionalCount, number} andre den {date}",
|
||||
"immich_logo": "Immich Logo",
|
||||
"immich_web_interface": "Immich webgrensesnitt",
|
||||
"import_from_json": "Importer fra JSON",
|
||||
"import_path": "Import-sti",
|
||||
"in_albums": "I {count, plural, one {# album} other {# albums}}",
|
||||
"in_archive": "I arkiv",
|
||||
"include_archived": "Inkluder arkiverte",
|
||||
"include_shared_albums": "Inkluder delte album",
|
||||
|
@ -648,19 +809,26 @@
|
|||
},
|
||||
"invite_people": "Inviter Personer",
|
||||
"invite_to_album": "Inviter til album",
|
||||
"items_count": "{count, plural, one {# item} other {# items}}",
|
||||
"jobs": "Oppgaver",
|
||||
"keep": "Behold",
|
||||
"keep_all": "Behold alle",
|
||||
"keep_this_delete_others": "Behold denne, slett de andre",
|
||||
"kept_this_deleted_others": "Behold denne filen og slett {count, plural, one {# asset} other {# assets}}",
|
||||
"keyboard_shortcuts": "Tastatursnarveier",
|
||||
"language": "Språk",
|
||||
"language_setting_description": "Velg ditt foretrukket språk",
|
||||
"last_seen": "Sist sett",
|
||||
"latest_version": "Siste versjon",
|
||||
"latitude": "Breddegrad",
|
||||
"leave": "Forlat",
|
||||
"let_others_respond": "La andre respondere",
|
||||
"level": "Nivå",
|
||||
"library": "Bibliotek",
|
||||
"library_options": "Bibliotekalternativer",
|
||||
"light": "Lys",
|
||||
"like_deleted": "Som slettede",
|
||||
"link_motion_video": "Koble bevegelsesvideo",
|
||||
"link_options": "Lenkealternativer",
|
||||
"link_to_oauth": "Lenke til OAuth",
|
||||
"linked_oauth_account": "Lenket til OAuth-konto",
|
||||
|
@ -669,10 +837,17 @@
|
|||
"loading_search_results_failed": "Klarte ikke å laste inn søkeresultater",
|
||||
"log_out": "Logg ut",
|
||||
"log_out_all_devices": "Logg ut fra alle enheter",
|
||||
"logged_out_all_devices": "Logg ut av alle enheter",
|
||||
"logged_out_device": "Logg ut enhet",
|
||||
"login": "Logg inn",
|
||||
"login_has_been_disabled": "Login har blitt deaktivert.",
|
||||
"logout_all_device_confirmation": "Er du sikker på at du vil logge ut av alle enheter?",
|
||||
"logout_this_device_confirmation": "Er du sikker på at du vil logge ut av denne enheten?",
|
||||
"longitude": "Lengdegrad",
|
||||
"look": "Se",
|
||||
"loop_videos": "Gjenta Videoer",
|
||||
"loop_videos_description": "Aktiver for å automatisk loope en video i detaljeviseren.",
|
||||
"main_branch_warning": "Du bruker en utviklingsversjon; vi anbefaler på det sterkeste og bruke en utgitt versjon!",
|
||||
"make": "Merke",
|
||||
"manage_shared_links": "Håndter delte linker",
|
||||
"manage_sharing_with_partners": "Administrer deling med partnere",
|
||||
|
@ -682,18 +857,22 @@
|
|||
"manage_your_devices": "Administrer dine innloggede enheter",
|
||||
"manage_your_oauth_connection": "Administrer tilkoblingen din med OAuth",
|
||||
"map": "Kart",
|
||||
"map_marker_for_images": "Kart makeringer for bilder tatt i {city}, {country}",
|
||||
"map_marker_with_image": "Kartmarkør med bilde",
|
||||
"map_settings": "Kartinnstillinger",
|
||||
"matches": "Samsvarende",
|
||||
"media_type": "Mediatype",
|
||||
"memories": "Minner",
|
||||
"memories_setting_description": "Administrer hva du ser i minnene dine",
|
||||
"memory": "Minne",
|
||||
"memory_lane_title": "Minnefelt {title}",
|
||||
"menu": "Meny",
|
||||
"merge": "Slå sammen",
|
||||
"merge_people": "Slå sammen personer",
|
||||
"merge_people_limit": "Du kan bare slå sammen opp til 5 fjes om gangen",
|
||||
"merge_people_prompt": "Vil du slå sammen disse personene? Denne handlingen kan ikke reverseres.",
|
||||
"merge_people_successfully": "Personene ble vellykket slått sammen",
|
||||
"merged_people_count": "Sammenslått {count, plural, one {# person} other {# people}}",
|
||||
"minimize": "Minimer",
|
||||
"minute": "Minutt",
|
||||
"missing": "Mangler",
|
||||
|
@ -705,15 +884,19 @@
|
|||
"name": "Navn",
|
||||
"name_or_nickname": "Navn eller kallenavn",
|
||||
"never": "aldri",
|
||||
"new_album": "Nytt Album",
|
||||
"new_api_key": "Ny API-nøkkel",
|
||||
"new_password": "Nytt passord",
|
||||
"new_person": "Ny person",
|
||||
"new_user_created": "Ny bruker opprettet",
|
||||
"new_version_available": "NY VERSJON TILGJENGELIG",
|
||||
"newest_first": "Nyeste først",
|
||||
"next": "Neste",
|
||||
"next_memory": "Neste minne",
|
||||
"no": "Nei",
|
||||
"no_albums_message": "Opprett et album for å organisere bildene og videoene dine",
|
||||
"no_albums_with_name_yet": "Det ser ut som om det ikke finnes noen album med dette navnet enda.",
|
||||
"no_albums_yet": "Det ser ut som om du ikke har noen album enda.",
|
||||
"no_archived_assets_message": "Arkiver bilder og videoer for å skjule dem fra visningen av bildene dine",
|
||||
"no_assets_message": "KLIKK FOR Å LASTE OPP DITT FØRSTE BILDE",
|
||||
"no_duplicates_found": "Ingen duplikater ble funnet.",
|
||||
|
@ -724,6 +907,7 @@
|
|||
"no_name": "Ingen navn",
|
||||
"no_places": "Ingen steder",
|
||||
"no_results": "Ingen resultater",
|
||||
"no_results_description": "Prøv et synonym eller mer generelt søkeord",
|
||||
"no_shared_albums_message": "Opprett et album for å dele bilder og videoer med personer i nettverket ditt",
|
||||
"not_in_any_album": "Ikke i noen album",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Merk: For å bruke lagringsetiketten på tidligere opplastede filer, kjør",
|
||||
|
@ -733,21 +917,32 @@
|
|||
"notifications": "Notifikasjoner",
|
||||
"notifications_setting_description": "Administrer varsler",
|
||||
"oauth": "OAuth",
|
||||
"official_immich_resources": "Offisielle Immich Resurser",
|
||||
"offline": "Frakoblet",
|
||||
"offline_paths": "Frakoblede stier",
|
||||
"offline_paths_description": "Disse resultatene kan skyldes manuell sletting av filer som ikke er en del av et eksternt bibliotek.",
|
||||
"ok": "Ok",
|
||||
"oldest_first": "Eldste først",
|
||||
"onboarding": "Påmønstring",
|
||||
"onboarding_privacy_description": "Følgene (valgfrie) funksjoner er avhengige av eksterne tjeneste, og kan bli deaktivert når som helst under administrator instillinger.",
|
||||
"onboarding_theme_description": "Velg et fargetema for din bruker. Du kan endre denne senere under dine instillinger.",
|
||||
"onboarding_welcome_description": "La oss sette opp denne installasjonen med noen vanlige instillinger.",
|
||||
"onboarding_welcome_user": "Velkommen, {user}",
|
||||
"online": "Tilkoblet",
|
||||
"only_favorites": "Bare favoritter",
|
||||
"open_in_map_view": "Åpne i kartvisning",
|
||||
"open_in_openstreetmap": "Åpne i OpenStreetMap",
|
||||
"open_the_search_filters": "Åpne søkefiltrene",
|
||||
"options": "Valg",
|
||||
"or": "eller",
|
||||
"organize_your_library": "Organiser biblioteket ditt",
|
||||
"original": "original",
|
||||
"other": "Annet",
|
||||
"other_devices": "Andre enheter",
|
||||
"other_variables": "Andre variabler",
|
||||
"owned": "Ditt album",
|
||||
"owner": "Eier",
|
||||
"partner": "Partner",
|
||||
"partner_can_access": "{partner} har tilgang",
|
||||
"partner_can_access_assets": "Alle bildene og videoene dine unntatt de i arkivert og slettet tilstand",
|
||||
"partner_can_access_location": "Stedet der bildene dine ble tatt",
|
||||
|
@ -769,12 +964,21 @@
|
|||
"paused": "Satt på pause",
|
||||
"pending": "Avventer",
|
||||
"people": "Folk",
|
||||
"people_edits_count": "Endret {count, plural, one {# person} other {# people}}",
|
||||
"people_feature_description": "Utforsk bilder og videoer gruppert etter mennesker",
|
||||
"people_sidebar_description": "Vis en lenke til Personer i sidepanelet",
|
||||
"permanent_deletion_warning": "Advarsel om permanent sletting",
|
||||
"permanent_deletion_warning_setting_description": "Vis en advarsel ved permanent sletting av filer",
|
||||
"permanently_delete": "Slett permanent",
|
||||
"permanently_delete_assets_count": "Permanent slett {count, plural, one {asset} other {assets}}",
|
||||
"permanently_delete_assets_prompt": "Er du sikker på at du vil permanent slette {count, plural, one {this asset?} other {these <b>#</b> assets?}} Dette vil også slette {count, plural, one {it from its} other {them from their}} album.",
|
||||
"permanently_deleted_asset": "Filen har blitt permanent slettet",
|
||||
"permanently_deleted_assets_count": "Permanent slett {count, plural, one {# asset} other {# assets}}",
|
||||
"person": "Person",
|
||||
"person_hidden": "{name}{hidden, select, true { (hidden)} other {}}",
|
||||
"photo_shared_all_users": "Det ser ut som om du deler bildene med alle brukere eller det er ingen brukere å dele med.",
|
||||
"photos": "Bilder",
|
||||
"photos_and_videos": "Bilder & Videoer",
|
||||
"photos_count": "{count, plural, one {{count, number} Bilde} other {{count, number} Bilder}}",
|
||||
"photos_from_previous_years": "Bilder fra tidliger år",
|
||||
"pick_a_location": "Velg et sted",
|
||||
|
@ -791,77 +995,162 @@
|
|||
"previous_memory": "Forrige minne",
|
||||
"previous_or_next_photo": "Forrige eller neste bilde",
|
||||
"primary": "Primær",
|
||||
"privacy": "Privat",
|
||||
"profile_image_of_user": "Profil bilde av {user}",
|
||||
"profile_picture_set": "Profilbildet er satt.",
|
||||
"public_album": "Offentlige album",
|
||||
"public_share": "Offentlig deling",
|
||||
"purchase_account_info": "Støttespiller",
|
||||
"purchase_activated_subtitle": "Takk for at du støtter Immich og åpen kildekode programvare",
|
||||
"purchase_activated_time": "Aktiver den {date, date}",
|
||||
"purchase_activated_title": "Du produktnøkkel har vellyket blitt aktivert",
|
||||
"purchase_button_activate": "Aktiver",
|
||||
"purchase_button_buy": "Kjøp",
|
||||
"purchase_button_buy_immich": "Kjøp Immich",
|
||||
"purchase_button_never_show_again": "Aldri vis igjen",
|
||||
"purchase_button_reminder": "Påminn meg om 30 dager",
|
||||
"purchase_button_remove_key": "Ta bort produktnøkkel",
|
||||
"purchase_button_select": "Velg",
|
||||
"purchase_failed_activation": "Feilet med å aktivere! Vennligst sjekk eposten for riktig produktnøkkel!",
|
||||
"purchase_individual_description_1": "For en person",
|
||||
"purchase_individual_description_2": "Støttespiller status",
|
||||
"purchase_individual_title": "Individuell",
|
||||
"purchase_input_suggestion": "Har du en produktnøkkel? Legg til denne under",
|
||||
"purchase_license_subtitle": "Kjøp Immich for å støtte den videre utviklingen av systemet",
|
||||
"purchase_lifetime_description": "Kjøp for livstid",
|
||||
"purchase_option_title": "KJØPSVALG",
|
||||
"purchase_panel_info_1": "Å lage Immich tar mye tid og energi, og nå har vi en fulltidsansatt utvikler som jobber med å gjøre produktet så godt vi kan. Vårt oppdrag er for åpen-kildekode programvare og etisk virksomhets praktisk å kunne bli bærekraftig inntekt for utviklere og for å lage privat repekterte økesystem med mulighet for å tilby skytjeneste.",
|
||||
"purchase_panel_info_2": "Siden har forpliktet oss ikke å legge til betalingsmurer, vil dette kjøpet ikke gi deg noen tilleggsfunksjoner i Immich. Vi er avhengige av brukere som deg for å støtte Immichs pågående utvikling.",
|
||||
"purchase_panel_title": "Hjelp prosjektet",
|
||||
"purchase_per_server": "For hver server",
|
||||
"purchase_per_user": "For hver bruker",
|
||||
"purchase_remove_product_key": "Ta bor Produktnøkkel",
|
||||
"purchase_remove_product_key_prompt": "Er du sikker på at du vil ta bort produktnøkkelen?",
|
||||
"purchase_remove_server_product_key": "Ta bort Server Produktnøkkel",
|
||||
"purchase_remove_server_product_key_prompt": "Er du sikker på at du vil ta bort Server Produktnøkkelen?",
|
||||
"purchase_server_description_1": "For hele serveren",
|
||||
"purchase_server_description_2": "Støttespiller status",
|
||||
"purchase_server_title": "Server",
|
||||
"purchase_settings_server_activated": "Produktnøkkel for server er administrert av administratoren",
|
||||
"rating": "Stjernevurdering",
|
||||
"rating_clear": "Slett vurdering",
|
||||
"rating_count": "{count, plural, one {# star} other {# stars}}",
|
||||
"rating_description": "Hvis EXIF vurdering i informasjons panelet",
|
||||
"reaction_options": "Reaksjonsalternativer",
|
||||
"read_changelog": "Les endringslogg",
|
||||
"reassign": "Tilordne på nytt",
|
||||
"reassigned_assets_to_existing_person": "Tildelt på nytt {count, plural, one {# asset} other {# assets}} to {name, select, null {an existing person} other {{name}}}",
|
||||
"reassigned_assets_to_new_person": "Tildelt på nytt {count, plural, one {# asset} other {# assets}} til en ny person",
|
||||
"reassing_hint": "Tilordne valgte eiendeler til en eksisterende person",
|
||||
"recent": "Nylig",
|
||||
"recent-albums": "Nylige album",
|
||||
"recent_searches": "Nylige søk",
|
||||
"refresh": "Oppdater",
|
||||
"refresh_encoded_videos": "Oppdater kodete videoer",
|
||||
"refresh_faces": "Oppdater ansikter",
|
||||
"refresh_metadata": "Oppdater metadata",
|
||||
"refresh_thumbnails": "Oppdater miniatyrbilder",
|
||||
"refreshed": "Oppdatert",
|
||||
"refreshes_every_file": "Oppdaterer alle filer",
|
||||
"refreshing_encoded_video": "Oppdaterer kodete video",
|
||||
"refreshing_faces": "Oppdaterer ansikter",
|
||||
"refreshing_metadata": "Oppdaterer matadata",
|
||||
"regenerating_thumbnails": "Regenererer miniatyrbilder",
|
||||
"remove": "Fjern",
|
||||
"remove_assets_album_confirmation": "Er du sikker på at du fil slette {count, plural, one {# asset} other {# assets}} fra albumet?",
|
||||
"remove_assets_shared_link_confirmation": "Er du sikker på at du vil slette {count, plural, one {# asset} other {# assets}} fra den delte lenken?",
|
||||
"remove_assets_title": "Vil du fjerne eiendeler?",
|
||||
"remove_custom_date_range": "Fjern egendefinert datoperiode",
|
||||
"remove_deleted_assets": "Fjern fra frakoblede filer",
|
||||
"remove_from_album": "Fjern fra album",
|
||||
"remove_from_favorites": "Fjern fra favoritter",
|
||||
"remove_from_shared_link": "Fjern fra delt lenke",
|
||||
"remove_url": "Fjern URL",
|
||||
"remove_user": "Fjern bruker",
|
||||
"removed_api_key": "Fjernet API-nøkkel: {name}",
|
||||
"removed_from_archive": "Fjernet fra arkivet",
|
||||
"removed_from_favorites": "Fjernet fra favoritter",
|
||||
"removed_from_favorites_count": "{count, plural, other {Removed #}} fra favoritter",
|
||||
"removed_tagged_assets": "Fjern tag fra {count, plural, one {# asset} other {# assets}}",
|
||||
"rename": "Gi nytt navn",
|
||||
"repair": "Reparer",
|
||||
"repair_no_results_message": "Usporrede og savnede filer vil vises her",
|
||||
"replace_with_upload": "Erstatte med opplasting",
|
||||
"repository": "Depot",
|
||||
"require_password": "Krev passord",
|
||||
"require_user_to_change_password_on_first_login": "Krev at brukeren endrer passord ved første pålogging",
|
||||
"reset": "Tilbakestill",
|
||||
"reset_password": "Tilbakestill passord",
|
||||
"reset_people_visibility": "Tilbakestill personsynlighet",
|
||||
"reset_to_default": "Tilbakestill til standard",
|
||||
"resolve_duplicates": "Løs duplikater",
|
||||
"resolved_all_duplicates": "Løste alle duplikater",
|
||||
"restore": "Gjenopprett",
|
||||
"restore_all": "Gjenopprett alle",
|
||||
"restore_user": "Gjenopprett bruker",
|
||||
"restored_asset": "Gjenopprettet ressurs",
|
||||
"resume": "Fortsett",
|
||||
"retry_upload": "Prøv opplasting på nytt",
|
||||
"review_duplicates": "Gjennomgå duplikater",
|
||||
"role": "Rolle",
|
||||
"role_editor": "Editor",
|
||||
"role_viewer": "Visning",
|
||||
"save": "Lagre",
|
||||
"saved_api_key": "Lagret API-nøkkel",
|
||||
"saved_profile": "Lagret profil",
|
||||
"saved_settings": "Lagret instillinger",
|
||||
"say_something": "Si noe",
|
||||
"scan_all_libraries": "Skann alle biblioteker",
|
||||
"scan_library": "Skann",
|
||||
"scan_settings": "Skanneinnstillinger",
|
||||
"scanning_for_album": "Skanner etter album...",
|
||||
"search": "Søk",
|
||||
"search_albums": "Søk i album",
|
||||
"search_by_context": "Søk etter kontekst",
|
||||
"search_by_filename": "Søk etter filnavn og filtype",
|
||||
"search_by_filename_example": "f.eks. IMG_1234.JPG eller PNG",
|
||||
"search_camera_make": "Søk etter kameramerke...",
|
||||
"search_camera_model": "Søk etter kamera modell...",
|
||||
"search_city": "Søk etter by...",
|
||||
"search_country": "Søk etter land...",
|
||||
"search_for_existing_person": "Søk etter eksisterende person",
|
||||
"search_no_people": "Ingen personer",
|
||||
"search_no_people_named": "Ingen personer med navnet \"{name}\"",
|
||||
"search_options": "Søke alternativer",
|
||||
"search_people": "Søk personer",
|
||||
"search_places": "Søk steder",
|
||||
"search_settings": "Søke instillinger",
|
||||
"search_state": "Søk etter stat...",
|
||||
"search_tags": "Søk tags...",
|
||||
"search_timezone": "Søk etter tidssone....",
|
||||
"search_type": "Søk etter type",
|
||||
"search_your_photos": "Søk i dine bilder",
|
||||
"searching_locales": "Søker lokaler...",
|
||||
"second": "Sekund",
|
||||
"see_all_people": "Vis alle mennesker",
|
||||
"select_album_cover": "Velg albumomslag",
|
||||
"select_all": "Velg alle",
|
||||
"select_all_duplicates": "Velg alle duplikater",
|
||||
"select_avatar_color": "Velg avatarfarge",
|
||||
"select_face": "Velg ansikt",
|
||||
"select_featured_photo": "Velg fremhevet bilde",
|
||||
"select_from_computer": "Velg fra datamaskin",
|
||||
"select_keep_all": "Velg beholde alle",
|
||||
"select_library_owner": "Velg bibliotekseier",
|
||||
"select_new_face": "Velg nytt ansikt",
|
||||
"select_photos": "Velg bilder",
|
||||
"select_trash_all": "Velg å flytte alt til papirkurven",
|
||||
"selected": "Valgt",
|
||||
"selected_count": "{count, plural, other {# selected}}",
|
||||
"send_message": "Send melding",
|
||||
"send_welcome_email": "Send velkomstmelding",
|
||||
"server_offline": "Server frakoblet",
|
||||
"server_online": "Server tilkoblet",
|
||||
"server_stats": "Server Statistikk",
|
||||
"server_version": "Server Versjon",
|
||||
"set": "Sett",
|
||||
"set_as_album_cover": "Sett som albumomslag",
|
||||
"set_as_featured_photo": "Angi som fremhevet bilde",
|
||||
"set_as_profile_picture": "Sett som profilbilde",
|
||||
"set_date_of_birth": "Sett fødselsdato",
|
||||
"set_profile_picture": "Sett profilbilde",
|
||||
|
@ -871,14 +1160,20 @@
|
|||
"share": "Del",
|
||||
"shared": "Delt",
|
||||
"shared_by": "Delt av",
|
||||
"shared_by_user": "Delt av {user}",
|
||||
"shared_by_you": "Delt av deg",
|
||||
"shared_from_partner": "Bilder fra {partner}",
|
||||
"shared_link_options": "Alternativer for delte lenke",
|
||||
"shared_links": "Delte linker",
|
||||
"shared_photos_and_videos_count": "{assetCount} delte bilder og videoer.",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# delte bilder og videoer.}}",
|
||||
"shared_with_partner": "Delt med {partner}",
|
||||
"sharing": "Deling",
|
||||
"sharing_enter_password": "Vennligst skriv inn passordet for å se denne siden.",
|
||||
"sharing_sidebar_description": "Vis en lenke til Deling i sidepanelet",
|
||||
"shift_to_permanent_delete": "trykk ⇧ for å slette eiendeler permanent",
|
||||
"show_album_options": "Vis albumalternativer",
|
||||
"show_albums": "Vis album",
|
||||
"show_all_people": "Vis alle mennesker",
|
||||
"show_and_hide_people": "Vis og skjul personer",
|
||||
"show_file_location": "Vis filplassering",
|
||||
"show_gallery": "Vis galleri",
|
||||
|
@ -892,16 +1187,34 @@
|
|||
"show_person_options": "Vis personalternativer",
|
||||
"show_progress_bar": "Vis fremdriftslinje",
|
||||
"show_search_options": "Vis søkealternativer",
|
||||
"show_slideshow_transition": "Vis overgang til lysbildefremvisning",
|
||||
"show_supporter_badge": "Supportermerke",
|
||||
"show_supporter_badge_description": "Vis et supportermerke",
|
||||
"shuffle": "Bland",
|
||||
"sidebar": "Sidefelt",
|
||||
"sidebar_display_description": "Vis en lenke for visningen i sidefeltet",
|
||||
"sign_out": "Logg ut",
|
||||
"sign_up": "Registrer deg",
|
||||
"size": "Størrelse",
|
||||
"skip_to_content": "Gå til innhold",
|
||||
"skip_to_folders": "Hopp til mapper",
|
||||
"skip_to_tags": "Hopp til tagger",
|
||||
"slideshow": "Lysbildefremvisning",
|
||||
"slideshow_settings": "Lysbildefremvisning innstillinger",
|
||||
"sort_albums_by": "Sorter album etter...",
|
||||
"sort_created": "Dato opprettet",
|
||||
"sort_items": "Antall enheter",
|
||||
"sort_modified": "Dato modifisert",
|
||||
"sort_oldest": "Eldste bilde",
|
||||
"sort_people_by_similarity": "Sorter folk etter likhet",
|
||||
"sort_recent": "Nyeste bilde",
|
||||
"sort_title": "Tittel",
|
||||
"source": "Kilde",
|
||||
"stack": "Stable",
|
||||
"stack_duplicates": "Stable duplikater",
|
||||
"stack_select_one_photo": "Velg hovedbilde for bildestabbel",
|
||||
"stack_selected_photos": "Stable valgte bilder",
|
||||
"stacked_assets_count": "Stable {count, plural, one {# asset} other {# assets}}",
|
||||
"stacktrace": "Stakkspor",
|
||||
"start": "Start",
|
||||
"start_date": "Startdato",
|
||||
|
@ -917,68 +1230,121 @@
|
|||
"submit": "Send inn",
|
||||
"suggestions": "Forslag",
|
||||
"sunrise_on_the_beach": "Soloppgang på stranden",
|
||||
"support": "Støtte",
|
||||
"support_and_feedback": "Støtte og Tilbakemelding",
|
||||
"support_third_party_description": "Immich-installasjonen din ble pakket av en tredjepart. Problemer du opplever kan være forårsaket av den pakken, så vennligst ta opp problemer med dem i første omgang ved å bruke koblingene nedenfor.",
|
||||
"swap_merge_direction": "Bytt retning på sammenslåingen",
|
||||
"sync": "Synkroniser",
|
||||
"tag": "Tagg",
|
||||
"tag_assets": "Merk ressurser",
|
||||
"tag_created": "Lag merke: {tag}",
|
||||
"tag_feature_description": "Bla gjennom bilder og videoer gruppert etter logiske merke-emner",
|
||||
"tag_not_found_question": "Finner du ikke en merke? <link>Opprett en nytt merke.</link>",
|
||||
"tag_updated": "Oppdater merke: {tag}",
|
||||
"tagged_assets": "Merket {count, plural, one {# asset} other {# assets}}",
|
||||
"tags": "Merker",
|
||||
"template": "Mal",
|
||||
"theme": "Tema",
|
||||
"theme_selection": "Temavalg",
|
||||
"theme_selection_description": "Automatisk sett tema til lys eller mørk basert på nettleserens systeminnstilling",
|
||||
"they_will_be_merged_together": "De vil bli slått sammen",
|
||||
"third_party_resources": "Tredjeparts Ressurser",
|
||||
"time_based_memories": "Tidsbaserte minner",
|
||||
"timeline": "Tidslinje",
|
||||
"timezone": "Tidssone",
|
||||
"to_archive": "Arkiv",
|
||||
"to_change_password": "Endre passord",
|
||||
"to_favorite": "Favoritt",
|
||||
"to_login": "Logg inn",
|
||||
"to_parent": "Gå til overodnet",
|
||||
"to_trash": "Papirkurv",
|
||||
"toggle_settings": "Bytt innstillinger",
|
||||
"toggle_theme": "Bytt tema",
|
||||
"total": "Total",
|
||||
"total_usage": "Totalt brukt",
|
||||
"trash": "Papirkurv",
|
||||
"trash_all": "Slett alt",
|
||||
"trash_count": "Slett {count, number}",
|
||||
"trash_delete_asset": "Slett ressurs",
|
||||
"trash_no_results_message": "Her vises bilder og videoer som er flyttet til papirkurven.",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Elementer i papirkurven vil bli permanent slettet etter {days, plural, one {# dag} other {# dager}}.",
|
||||
"type": "Type",
|
||||
"unarchive": "Fjern fra arkiv",
|
||||
"unarchived_count": "{count, plural, other {Unarchived #}}",
|
||||
"unfavorite": "Fjern favoritt",
|
||||
"unhide_person": "Vis person",
|
||||
"unknown": "Ukjent",
|
||||
"unknown_year": "Ukjent År",
|
||||
"unlimited": "Ubegrenset",
|
||||
"unlink_motion_video": "Koble fra bevegelsesvideo",
|
||||
"unlink_oauth": "Fjern kobling til OAuth",
|
||||
"unlinked_oauth_account": "Koblet fra OAuth-konto",
|
||||
"unnamed_album": "Navnløst album",
|
||||
"unnamed_album_delete_confirmation": "Er du sikker på at du vil slette dette albumet?",
|
||||
"unnamed_share": "Deling uten navn",
|
||||
"unsaved_change": "Ulagrede endringer",
|
||||
"unselect_all": "Fjern alle valg",
|
||||
"unselect_all_duplicates": "Fjern markeringen av alle duplikater",
|
||||
"unstack": "avstable",
|
||||
"unstacked_assets_count": "Ikke stablet {count, plural, one {# asset} other {# assets}}",
|
||||
"untracked_files": "Usporede Filer",
|
||||
"untracked_files_decription": "Disse filene er ikke sporet av applikasjonen. De kan være resultatet av mislykkede flyttinger, avbrutte opplastinger eller etterlatt på grunn av en feil",
|
||||
"up_next": "Neste",
|
||||
"updated_password": "Passord oppdatert",
|
||||
"upload": "Last opp",
|
||||
"upload_concurrency": "Samtidig opplastning",
|
||||
"upload_errors": "Opplasting fullført med {count, plural, one {# error} other {# errors}}, oppdater siden for å se nye opplastingsressurser.",
|
||||
"upload_progress": "Gjenstående {remaining, number} – behandlet {processed, number}/{total, number}",
|
||||
"upload_skipped_duplicates": "Hoppet over {count, plural, one {# duplicate asset} other {# duplicate assets}}",
|
||||
"upload_status_duplicates": "Duplikater",
|
||||
"upload_status_errors": "Feil",
|
||||
"upload_status_uploaded": "Opplastet",
|
||||
"upload_success": "Opplasting vellykket, oppdater siden for å se nye opplastninger.",
|
||||
"url": "URL",
|
||||
"usage": "Bruk",
|
||||
"use_custom_date_range": "Bruk egendefinert datoperiode i stedet",
|
||||
"user": "Bruker",
|
||||
"user_id": "Bruker ID",
|
||||
"user_liked": "{user} likte {type, select, photo {this photo} video {this video} asset {this asset} other {it}}",
|
||||
"user_purchase_settings": "Kjøpe",
|
||||
"user_purchase_settings_description": "Administrer dine kjøp",
|
||||
"user_role_set": "Sett {user} som {role}",
|
||||
"user_usage_detail": "Detaljer av brukers forbruk",
|
||||
"user_usage_stats": "Kontobruksstatistikk",
|
||||
"user_usage_stats_description": "Vis kontobruksstatistikk",
|
||||
"username": "Brukernavn",
|
||||
"users": "Brukere",
|
||||
"utilities": "Verktøy",
|
||||
"validate": "Valider",
|
||||
"variables": "Variabler",
|
||||
"version": "Versjon",
|
||||
"version_announcement_closing": "Din venn, Alex",
|
||||
"version_announcement_message": "Hei! En ny versjon av Immich er tilgjengelig. Vennligst ta deg tid til å lese <link>utgivelsesnotatene</link> for å sikre at oppsettet ditt er oppdatert for å forhindre feilkonfigurasjoner, spesielt hvis du bruker WatchTower eller en annen mekanisme som håndterer oppdatering av Immich-forekomsten din automatisk.",
|
||||
"version_history": "Verson Historie",
|
||||
"version_history_item": "Installert {version} den {date}",
|
||||
"video": "Video",
|
||||
"video_hover_setting": "Spill av forhåndsvisining mens du holder over musepekeren",
|
||||
"video_hover_setting_description": "Spill av forhåndsvisning mens en musepeker er over elementet. Selv når den er deaktivert, kan avspilling startes ved å holde musepekeren over avspillingsikonet.",
|
||||
"videos": "Videoer",
|
||||
"videos_count": "{count, plural, one {# Video} other {# Videoer}}",
|
||||
"view": "Vis",
|
||||
"view_album": "Vis Album",
|
||||
"view_all": "Vis alle",
|
||||
"view_all_users": "Vis alle brukere",
|
||||
"view_in_timeline": "Vis i tidslinje",
|
||||
"view_links": "Vis lenker",
|
||||
"view_name": "Vis",
|
||||
"view_next_asset": "Vis neste fil",
|
||||
"view_previous_asset": "Vis forrige fil",
|
||||
"view_stack": "Vis Stabbel",
|
||||
"visibility_changed": "Synlighet endret for {count, plural, one {# person} other {# people}}",
|
||||
"waiting": "Venter",
|
||||
"warning": "Advarsel",
|
||||
"week": "Uke",
|
||||
"welcome": "Velkommen",
|
||||
"welcome_to_immich": "Velkommen til Immich",
|
||||
"year": "År",
|
||||
"years_ago": "{years, plural, one {# year} other {# years}} siden",
|
||||
"yes": "Ja",
|
||||
"you_dont_have_any_shared_links": "Du har ingen delte lenker",
|
||||
"zoom_image": "Zoom Bilde"
|
||||
|
|
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Datumbereik",
|
||||
"day": "Dag",
|
||||
"deduplicate_all": "Alles dedupliceren",
|
||||
"deduplication_criteria_1": "Grootte van afbeelding in bytes",
|
||||
"deduplication_criteria_2": "Aantal EXIF data",
|
||||
"deduplication_info": "Deduplicatie-info",
|
||||
"deduplication_info_description": "Om automatisch bezittingen te preselecteren en duplicaten te verwijderen in bulk, kijken we naar:",
|
||||
"default_locale": "Standaard landinstelling",
|
||||
"default_locale_description": "Formatteer datums en getallen op basis van de landinstellingen van je browser",
|
||||
"delete": "Verwijderen",
|
||||
|
|
262
i18n/nn.json
262
i18n/nn.json
|
@ -28,6 +28,264 @@
|
|||
"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}?"
|
||||
}
|
||||
"asset_offline_description": "Denne eksterne bibliotekressursen finst ikkje lenger på disk og har blitt flytta til papirkurven. Om fila blei flytta innad i biblioteket, sjekk tidslinja di for den tilsvarande ressursen. For å gjenopprette ressursen, vennligst sørg for at filstien under er tilgjengeleg for Immich og skann biblioteket.",
|
||||
"backup_settings": "Backupinnstillingar",
|
||||
"check_all": "Sjekk alle",
|
||||
"confirm_delete_library": "Er du sikker på at du vil slette biblioteket {library}?",
|
||||
"create_job": "Lag jobb",
|
||||
"disable_login": "Deaktiver innlogging",
|
||||
"face_detection": "Ansiktsdeteksjon",
|
||||
"image_format": "Format",
|
||||
"image_preview_title": "Forhandsvis innstillingar",
|
||||
"image_quality": "Kvalitet",
|
||||
"image_resolution": "Oppløysing",
|
||||
"image_thumbnail_description": "Lite miniatyrbilete med fjerna metadata, brukt når ein ser på grupper av bilete som hovudtidslinja",
|
||||
"job_created": "Jobb laga",
|
||||
"job_settings": "Jobbinnstillingar",
|
||||
"job_status": "Jobbstatus",
|
||||
"library_deleted": "Bibliotek sletta",
|
||||
"library_scanning": "Periodisk skanning",
|
||||
"library_settings": "Eksternt Bibliotek",
|
||||
"logging_settings": "Logging",
|
||||
"machine_learning_duplicate_detection": "Duplikatdeteksjon",
|
||||
"machine_learning_facial_recognition": "Ansiktsgjenkjenning",
|
||||
"machine_learning_smart_search": "Smart Søk",
|
||||
"map_dark_style": "Mørk modus",
|
||||
"map_light_style": "Lys modus",
|
||||
"map_settings": "Kart",
|
||||
"metadata_extraction_job": "Hent ut metadata",
|
||||
"metadata_settings": "Metadata Innstillinger",
|
||||
"migration_job": "Migrasjon",
|
||||
"notification_email_from_address": "Frå adresse",
|
||||
"notification_settings": "Varselinnstillingar",
|
||||
"oauth_auto_launch": "Autostart",
|
||||
"oauth_button_text": "Tekst på knapp",
|
||||
"password_settings": "Passord innlogging",
|
||||
"person_cleanup_job": "Personopprydding",
|
||||
"registration": "Administrator registrering",
|
||||
"registration_description": "Sidan du er den første brukaren på systemet, vil du bli utnevnt til administrator og ha ansvar for administrative oppgåver. Du vil òg opprette eventuelle nye brukarar.",
|
||||
"repair_all": "Reparer alle",
|
||||
"repair_matched_items": "Samsvarte med {count, plural, one {# element} other {# elementer}}",
|
||||
"repaired_items": "Reparerte {count, plural, one {# item} other {# items}}",
|
||||
"require_password_change_on_login": "Krev at brukaren endrar passord ved første pålogging",
|
||||
"reset_settings_to_default": "Tilbakestill innstillingar til standard",
|
||||
"reset_settings_to_recent_saved": "Tilbakestill innstillingane til de nyleg lagra innstillingane",
|
||||
"scanning_library": "Skann bibliotek",
|
||||
"search_jobs": "Søk etter jobbar",
|
||||
"send_welcome_email": "Send velkomst-e-post",
|
||||
"server_external_domain_settings": "Eksternt domene",
|
||||
"server_external_domain_settings_description": "Domene for offentlege delingslenkjer, inkludert http(s)://",
|
||||
"server_public_users": "Offentlege brukarar",
|
||||
"server_public_users_description": "Alle brukarar (namn og epost) blir vist når ein brukar blir lagt til eit delt album. Når deaktivert, vil brukarane berre bli synlege for administratorar.",
|
||||
"server_settings": "Serverinstillingar",
|
||||
"server_settings_description": "Administrer serverinnstillingar",
|
||||
"server_welcome_message": "Velkomstmelding",
|
||||
"server_welcome_message_description": "Ei melding som synast på innloggingssida.",
|
||||
"template_email_preview": "Førehandsvisning"
|
||||
},
|
||||
"administration": "Administrasjon",
|
||||
"advanced": "Avansert",
|
||||
"album_with_link_access": "Lat kven som helst med lenka sjå bilete og folk i dette albumet.",
|
||||
"albums": "Album",
|
||||
"all": "Alle",
|
||||
"anti_clockwise": "Mot klokka",
|
||||
"archive": "Arkiv",
|
||||
"asset_skipped": "Hoppa over",
|
||||
"asset_uploaded": "Opplasta",
|
||||
"asset_uploading": "Lastar opp...",
|
||||
"back": "Tilbake",
|
||||
"backward": "Bakover",
|
||||
"camera": "Kamera",
|
||||
"cancel": "Avbryt",
|
||||
"city": "By",
|
||||
"clear": "Fjern",
|
||||
"clockwise": "Med klokka",
|
||||
"close": "Lukk",
|
||||
"color": "Farge",
|
||||
"confirm": "Bekreft",
|
||||
"contain": "Inneheld",
|
||||
"continue": "Hald fram",
|
||||
"country": "Land",
|
||||
"cover": "Dekk",
|
||||
"covers": "Dekker",
|
||||
"create": "Opprett",
|
||||
"created": "Oppretta",
|
||||
"dark": "Mørk",
|
||||
"day": "Dag",
|
||||
"delete": "Slett",
|
||||
"description": "Beskrivelse",
|
||||
"details": "Detaljer",
|
||||
"direction": "Retning",
|
||||
"discover": "Oppdag",
|
||||
"display_original_photos": "Vis originale bilete",
|
||||
"display_original_photos_setting_description": "Føretrekk å vise det originale biletet når ein ser på eit aktivum i staden for miniatyrbilete når det originale aktivumet er nettkompatibelt. Dette kan føre til tregare biletvisingshastigheiter.",
|
||||
"documentation": "Dokumentasjon",
|
||||
"done": "Ferdig",
|
||||
"download": "Last ned",
|
||||
"download_include_embedded_motion_videos_description": "Inkluder videoar innebygd i rørslefoto som ein eigen fil",
|
||||
"download_settings": "Last ned",
|
||||
"downloading": "Laster ned",
|
||||
"duplicates": "Duplikat",
|
||||
"duration": "Lengde",
|
||||
"edit": "Rediger",
|
||||
"edited": "Redigert",
|
||||
"editor": "Redigeringsverktøy",
|
||||
"explore": "Utforsk",
|
||||
"explorer": "Utforsker",
|
||||
"folders_feature_description": "Bla gjennom mappe for bileta og videoane på filsystemet",
|
||||
"hour": "Time",
|
||||
"image": "Bilde",
|
||||
"info": "Info",
|
||||
"jobs": "Oppgåver",
|
||||
"keep": "Behald",
|
||||
"language": "Språk",
|
||||
"latitude": "Lengdegrad",
|
||||
"leave": "Forlat",
|
||||
"level": "Nivå",
|
||||
"library": "Bibliotek",
|
||||
"light": "Lys",
|
||||
"list": "Liste",
|
||||
"loading": "Lastar",
|
||||
"login": "Login",
|
||||
"longitude": "Lengdegrad",
|
||||
"look": "Utsjånad",
|
||||
"make": "Produsent",
|
||||
"map": "Kart",
|
||||
"matches": "Treff",
|
||||
"memories": "Minner",
|
||||
"memory": "Minne",
|
||||
"menu": "Meny",
|
||||
"merge": "Slå saman",
|
||||
"minimize": "Minimere",
|
||||
"minute": "Minutt",
|
||||
"missing": "Mangler",
|
||||
"model": "Modell",
|
||||
"month": "Månad",
|
||||
"more": "Meir",
|
||||
"name": "Namn",
|
||||
"never": "Aldri",
|
||||
"next": "Neste",
|
||||
"no": "Nei",
|
||||
"no_albums_message": "Lag eit album for å organisere bileta og videoane dine.",
|
||||
"no_archived_assets_message": "Arkiver bilder og videoar for å skjule dei frå bileta dine",
|
||||
"no_explore_results_message": "Last opp fleire bilete for å utforske samlinga di.",
|
||||
"no_libraries_message": "Lag eit eksternt bibliotek for å sjå bileta og videoane dine",
|
||||
"no_shared_albums_message": "Lag eit album for å dele bilete og videoar med folk i nettverket ditt",
|
||||
"notes": "Noter",
|
||||
"notifications": "Varsel",
|
||||
"ok": "Ok",
|
||||
"options": "Val",
|
||||
"or": "eller",
|
||||
"original": "original",
|
||||
"other": "Anna",
|
||||
"owner": "Eigar",
|
||||
"partner": "Partner",
|
||||
"partner_can_access_assets": "Alle bileta og videoane dine unntatt dei i Arkivert og Sletta",
|
||||
"partner_can_access_location": "Staden der bileta dine vart tekne",
|
||||
"password": "Passord",
|
||||
"path": "Sti",
|
||||
"pattern": "Mønster",
|
||||
"pause": "Pause",
|
||||
"paused": "Pausa",
|
||||
"pending": "Ventar",
|
||||
"people": "Folk",
|
||||
"people_feature_description": "Bla gjennom foto og videoar gruppert etter folk",
|
||||
"person": "Person",
|
||||
"photo_shared_all_users": "Ser ut som du delte bileta dine med alle brukarar eller at du ikkje har nokon brukar å dele med.",
|
||||
"photos": "Bilete",
|
||||
"photos_and_videos": "Foto og Video",
|
||||
"photos_from_previous_years": "Bilete frå tidlegare år",
|
||||
"place": "Stad",
|
||||
"places": "Stad",
|
||||
"play": "Spel av",
|
||||
"port": "Port",
|
||||
"preview": "Førehandsvisning",
|
||||
"previous": "Forrige",
|
||||
"primary": "Hoved",
|
||||
"privacy": "Personvern",
|
||||
"purchase_button_activate": "Aktiver",
|
||||
"purchase_button_buy": "Kjøp",
|
||||
"purchase_button_select": "Vel",
|
||||
"purchase_individual_title": "Induviduell",
|
||||
"purchase_server_title": "Server",
|
||||
"reassign": "Vel på nytt",
|
||||
"recent": "Nyleg",
|
||||
"refresh": "Oppdater",
|
||||
"refreshed": "Oppdatert",
|
||||
"remove": "Fjern",
|
||||
"rename": "Endre namn",
|
||||
"repair": "Reparasjon",
|
||||
"reset": "Tilbakestill",
|
||||
"restore": "Tilbakestill",
|
||||
"resume": "Fortsett",
|
||||
"role": "Rolle",
|
||||
"save": "Lagre",
|
||||
"scan_library": "Skann",
|
||||
"search": "Søk",
|
||||
"search_your_photos": "Søk i dine bilete",
|
||||
"second": "Sekund",
|
||||
"selected": "Valgt",
|
||||
"set": "Sett",
|
||||
"settings": "Innstillingar",
|
||||
"share": "Del",
|
||||
"shared": "Delt",
|
||||
"shared_from_partner": "Bilete frå {partner}",
|
||||
"sharing": "Deling",
|
||||
"show_in_timeline_setting_description": "Vis bilete og videoar frå denne brukaren i tidslinja di",
|
||||
"sidebar": "Sidebar",
|
||||
"size": "Størrelse",
|
||||
"slideshow": "Lysbildeframvisning",
|
||||
"sort_title": "Tittel",
|
||||
"source": "Kjelde",
|
||||
"stack": "Stabel",
|
||||
"start": "Start",
|
||||
"state": "Region",
|
||||
"status": "Status",
|
||||
"stop_photo_sharing": "Stopp å dele bileta dine?",
|
||||
"stop_photo_sharing_description": "{partner} vil ikkje lenger kunne få tilgang til bileta dine.",
|
||||
"stop_sharing_photos_with_user": "Stopp å dele bileta dine med denne brukaren",
|
||||
"storage": "Lagringsplass",
|
||||
"submit": "Send inn",
|
||||
"suggestions": "Forslag",
|
||||
"support": "Support",
|
||||
"sync": "Synk",
|
||||
"tag": "Tag",
|
||||
"tag_feature_description": "Bla gjennom bilete og videoar gruppert etter logiske tag-tema",
|
||||
"tags": "Tags",
|
||||
"theme": "Tema",
|
||||
"timeline": "Tidslinje",
|
||||
"timezone": "Tidssone",
|
||||
"to_archive": "Arkiv",
|
||||
"to_favorite": "Favoritt",
|
||||
"to_login": "Innlogging",
|
||||
"to_trash": "Søppel",
|
||||
"total": "Total",
|
||||
"trash": "Søppel",
|
||||
"trash_no_results_message": "Sletta foto og videoar vil dukke opp her.",
|
||||
"type": "Type",
|
||||
"unfavorite": "Fjern favoritt",
|
||||
"unknown": "Ukjent",
|
||||
"unlimited": "Ubegrensa",
|
||||
"upload": "Last opp",
|
||||
"upload_status_duplicates": "Duplikater",
|
||||
"upload_status_errors": "Feil",
|
||||
"upload_status_uploaded": "Opplasta",
|
||||
"url": "URL",
|
||||
"usage": "Bruk",
|
||||
"user": "Brukar",
|
||||
"user_purchase_settings": "Kjøp",
|
||||
"username": "Brukarnamn",
|
||||
"users": "Brukarar",
|
||||
"utilities": "Verktøy",
|
||||
"validate": "Validere",
|
||||
"variables": "Variablar",
|
||||
"version": "Versjon",
|
||||
"video": "Video",
|
||||
"videos": "Videoar",
|
||||
"waiting": "Ventar",
|
||||
"warning": "Advarsel",
|
||||
"week": "Veke",
|
||||
"welcome": "Velkomen",
|
||||
"year": "År",
|
||||
"yes": "Ja"
|
||||
}
|
||||
|
|
16
i18n/pl.json
16
i18n/pl.json
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Zakres dat",
|
||||
"day": "Dzień",
|
||||
"deduplicate_all": "Usuń Zduplikowane",
|
||||
"deduplication_criteria_1": "Rozmiar obrazu w bajtach",
|
||||
"deduplication_criteria_2": "Ilość plików EXIF",
|
||||
"deduplication_info": "Stan duplikatów",
|
||||
"deduplication_info_description": "Aby zakwalifikować elementy jako duplikaty do masowego usunięcia, sprawdzane jest:",
|
||||
"default_locale": "Domyślny Region",
|
||||
"default_locale_description": "Formatuj daty i liczby na podstawie ustawień Twojej przeglądarki",
|
||||
"delete": "Usuń",
|
||||
|
@ -544,27 +548,27 @@
|
|||
"direction": "Kierunek",
|
||||
"disabled": "Wyłączone",
|
||||
"disallow_edits": "Nie pozwalaj edytować",
|
||||
"discord": "Discord",
|
||||
"discord": "Konflikt",
|
||||
"discover": "Odkryj",
|
||||
"dismiss_all_errors": "Odrzuć wszystkie błędy",
|
||||
"dismiss_error": "Odrzuć błąd",
|
||||
"display_options": "Opcje wyświetlania",
|
||||
"display_order": "Kolejność wyświetlania",
|
||||
"display_original_photos": "Wyświetlaj oryginalne zdjęcia",
|
||||
"display_original_photos_setting_description": "Wyświetlając zdjęcia i filmy, preferuj oryginalny plik zamiast miniatur jeżeli jest działa on w przeglądarce. Może to skutkować wolniejszym ładowaniem zdjęć i filmów.",
|
||||
"display_original_photos_setting_description": "Wyświetlając zdjęcia i filmy, prezentuj oryginalny plik zamiast miniatur jeżeli działa on w przeglądarce. Może to skutkować wolniejszym ładowaniem zdjęć i filmów.",
|
||||
"do_not_show_again": "Nie pokazuj więcej tej wiadomości",
|
||||
"documentation": "Dokumentacja",
|
||||
"done": "Gotowe",
|
||||
"download": "Pobierz",
|
||||
"download_include_embedded_motion_videos": "Osadzone filmy",
|
||||
"download_include_embedded_motion_videos": "Pobierz filmy ruchomych zdjęć",
|
||||
"download_include_embedded_motion_videos_description": "Dołącz filmy osadzone w ruchomych zdjęciach jako oddzielny plik",
|
||||
"download_settings": "Pobieranie",
|
||||
"download_settings_description": "Zarządzaj pobieraniem zasobów",
|
||||
"downloading": "Pobieranie",
|
||||
"downloading_asset_filename": "Pobieranie zasobu {filename}",
|
||||
"drop_files_to_upload": "Upuść pliki gdziekolwiek, żeby je załadować",
|
||||
"drop_files_to_upload": "Upuść pliki gdziekolwiek, aby je załadować",
|
||||
"duplicates": "Duplikaty",
|
||||
"duplicates_description": "Rozstrzygnij każdą grupę, określając, które zasoby, jeśli takie istnieją, są duplikatami",
|
||||
"duplicates_description": "Rozstrzygnij każdą grupę, określając, które zasoby są duplikatami, jeżeli są duplikatami",
|
||||
"duration": "Czas trwania",
|
||||
"edit": "Edytuj",
|
||||
"edit_album": "Edytuj album",
|
||||
|
@ -578,7 +582,7 @@
|
|||
"edit_key": "Edytuj klucz",
|
||||
"edit_link": "Edytuj link",
|
||||
"edit_location": "Edytuj lokalizację",
|
||||
"edit_name": "Edytuj imię",
|
||||
"edit_name": "Edytuj nazwę",
|
||||
"edit_people": "Edytuj osoby",
|
||||
"edit_tag": "Edytuj etykietę",
|
||||
"edit_title": "Edytuj Tytuł",
|
||||
|
|
|
@ -522,7 +522,11 @@
|
|||
"date_of_birth_saved": "Data de nascimento guardada com sucesso",
|
||||
"date_range": "Intervalo de datas",
|
||||
"day": "Dia",
|
||||
"deduplicate_all": "Limpar todos os itens duplicados",
|
||||
"deduplicate_all": "Remover todos os duplicados",
|
||||
"deduplication_criteria_1": "Tamanho da imagem em bytes",
|
||||
"deduplication_criteria_2": "Quantidade de dados EXIF",
|
||||
"deduplication_info": "Informações sobre remoção de duplicados",
|
||||
"deduplication_info_description": "Para selecionar automaticamente itens e remover duplicados em massa, vemos o seguinte:",
|
||||
"default_locale": "Localização Padrão",
|
||||
"default_locale_description": "Formatar datas e números baseados na linguagem do seu navegador",
|
||||
"delete": "Eliminar",
|
||||
|
|
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Intervalo de datas",
|
||||
"day": "Dia",
|
||||
"deduplicate_all": "Limpar todas Duplicidades",
|
||||
"deduplication_criteria_1": "Tamanho do arquivo em bytes",
|
||||
"deduplication_criteria_2": "Quantidade de dados EXIF",
|
||||
"deduplication_info": "Informações",
|
||||
"deduplication_info_description": "Ao selecionar os arquivos que serão marcados para remoção por duplicidade, será considerado os parâmetros:",
|
||||
"default_locale": "Localização Padrão",
|
||||
"default_locale_description": "Formatar datas e números baseados na linguagem do seu navegador",
|
||||
"delete": "Excluir",
|
||||
|
|
13
i18n/ro.json
13
i18n/ro.json
|
@ -289,6 +289,8 @@
|
|||
"transcoding_constant_rate_factor": "Factor de rată constantă (-crf)",
|
||||
"transcoding_constant_rate_factor_description": "Nivelul de calitate al videoclipului. Valorile tipice sunt 23 pentru H.264, 28 pentru HEVC, 31 pentru VP9 și 35 pentru AV1. Cu cât valoarea este mai mică, cu atât calitatea este mai bună, dar se generează fișiere mai mari.",
|
||||
"transcoding_disabled_description": "Nu transcodifică niciun videoclip; acest lucru poate afecta redarea pe anumite dispozitive",
|
||||
"transcoding_encoding_options": "Opțiuni codificare",
|
||||
"transcoding_encoding_options_description": "Setează codecuri , calitatea, rezoluția și alte opțiuni pentru videoclipuri codificare",
|
||||
"transcoding_hardware_acceleration": "Accelerare Hardware",
|
||||
"transcoding_hardware_acceleration_description": "Experimental; mult mai rapid, dar va avea o calitate mai scăzută la același bitrate",
|
||||
"transcoding_hardware_decoding": "Decodare hardware",
|
||||
|
@ -301,6 +303,8 @@
|
|||
"transcoding_max_keyframe_interval": "Interval maxim între cadre cheie",
|
||||
"transcoding_max_keyframe_interval_description": "Setează distanța maximă între cadrele cheie. Valorile mai mici reduc eficiența compresiei, dar îmbunătățesc timpii de căutare și pot îmbunătăți calitatea în scenele cu mișcare rapidă. 0 setează această valoare automat.",
|
||||
"transcoding_optimal_description": "Videoclipuri cu rezoluție mai mare decât cea țintă sau care nu sunt într-un format acceptat",
|
||||
"transcoding_policy": "Politică de transcodare",
|
||||
"transcoding_policy_description": "Setează când un video va fi transcodat",
|
||||
"transcoding_preferred_hardware_device": "Dispozitiv hardware preferat",
|
||||
"transcoding_preferred_hardware_device_description": "Se aplică doar la VAAPI și QSV. Setează nodul DRI utilizat pentru transcodarea hardware.",
|
||||
"transcoding_preset_preset": "Presetare (-preset)",
|
||||
|
@ -309,7 +313,7 @@
|
|||
"transcoding_reference_frames_description": "Numărul de cadre de referință atunci când se comprimă un cadru dat. Valorile mai mari îmbunătățesc eficiența compresiei, dar încetinesc codarea. 0 setează această valoare automat.",
|
||||
"transcoding_required_description": "Numai videoclipuri care nu sunt într-un format acceptat",
|
||||
"transcoding_settings": "Setări de Transcodare Video",
|
||||
"transcoding_settings_description": "Gestionează rezoluția și informațiile de codare ale fișierelor video",
|
||||
"transcoding_settings_description": "Gestionează care videoclipuri să transcodam și cum să le procesam",
|
||||
"transcoding_target_resolution": "Rezoluția țintă",
|
||||
"transcoding_target_resolution_description": "Rezoluțiile mai mari pot păstra mai multe detalii, dar necesită mai mult timp pentru codare, au dimensiuni mai mari ale fișierelor și pot reduce răspunsul aplicației.",
|
||||
"transcoding_temporal_aq": "AQ temporal",
|
||||
|
@ -322,7 +326,7 @@
|
|||
"transcoding_transcode_policy_description": "Politica pentru momentul când un videoclip ar trebui să fie transcodificat. Videoclipurile HDR vor fi întotdeauna transcodificate (cu excepția cazului în care transcodarea este dezactivată).",
|
||||
"transcoding_two_pass_encoding": "Codare în doi pași",
|
||||
"transcoding_two_pass_encoding_setting_description": "Transcodificare în două treceri pentru a produce videoclipuri codificate mai bine. Când rata maximă de biți este activată (necesară pentru a funcționa cu H.264 și HEVC), acest mod utilizează un interval de rată de biți bazat pe rata maximă de biți și ignoră CRF. Pentru VP9, CRF poate fi utilizat dacă rata maximă de biți este dezactivată.",
|
||||
"transcoding_video_codec": "Codec Video",
|
||||
"transcoding_video_codec": "Codec video",
|
||||
"transcoding_video_codec_description": "VP9 are eficiențǎ mare și compatibilitate web, însǎ transcodarea este de duratǎ mai mare. HEVC se comportǎ asemǎnǎtor, însǎ are compatibilitate web mai micǎ. H.264 este foarte compatibil și rapid în transcodare, însǎ genereazǎ fișiere mult mai mari. AV1 este cel mai eficient codec dar nu este compatibil cu dispozitivele mai vechi.",
|
||||
"trash_enabled_description": "Activează funcțiile Coșului de Gunoi",
|
||||
"trash_number_of_days": "Numǎr de zile",
|
||||
|
@ -519,6 +523,10 @@
|
|||
"date_range": "Interval de date",
|
||||
"day": "Zi",
|
||||
"deduplicate_all": "Deduplicați Toate",
|
||||
"deduplication_criteria_1": "Marimea imagini în octeți",
|
||||
"deduplication_criteria_2": "Numărul de date EXIF",
|
||||
"deduplication_info": "Informați despre deduplicare",
|
||||
"deduplication_info_description": "Ca să preselecționăm activele și să scoatem duplicatele în vrac , ne uităm la:",
|
||||
"default_locale": "Setare Regională Implicită",
|
||||
"default_locale_description": "Formatați datele și numerele în funcție de regiunea browserului dvs",
|
||||
"delete": "Ștergere",
|
||||
|
@ -755,6 +763,7 @@
|
|||
"get_help": "Obțineți Ajutor",
|
||||
"getting_started": "Noțiuni de Bază",
|
||||
"go_back": "Întoarcere",
|
||||
"go_to_folder": "Accesați folderul",
|
||||
"go_to_search": "Spre căutare",
|
||||
"group_albums_by": "Grupați albume de...",
|
||||
"group_no": "Fără grupare",
|
||||
|
|
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Диапазон дат",
|
||||
"day": "День",
|
||||
"deduplicate_all": "Убрать все дубликаты",
|
||||
"deduplication_criteria_1": "Размер изображения в байтах",
|
||||
"deduplication_criteria_2": "Подсчет данных EXIF",
|
||||
"deduplication_info": "Информация о дедупликации",
|
||||
"deduplication_info_description": "Для автоматического предварительного выбора объектов и массового удаления дубликатов мы рассмотрим:",
|
||||
"default_locale": "Дата и время по умолчанию",
|
||||
"default_locale_description": "Использовать формат даты и времени в соответствии с языковым стандартом вашего браузера",
|
||||
"delete": "Удалить",
|
||||
|
|
475
i18n/sk.json
475
i18n/sk.json
|
@ -5,7 +5,7 @@
|
|||
"acknowledge": "Rozumiem",
|
||||
"action": "Akcia",
|
||||
"actions": "Akcie",
|
||||
"active": "Aktívny",
|
||||
"active": "Aktívne",
|
||||
"activity": "Aktivita",
|
||||
"activity_changed": "Aktivita je {enabled, select, true{povolená} other {zakázaná}}",
|
||||
"add": "Pridať",
|
||||
|
@ -23,7 +23,7 @@
|
|||
"add_to": "Pridať do...",
|
||||
"add_to_album": "Pridať do albumu",
|
||||
"add_to_shared_album": "Pridať do zdieľaného albumu",
|
||||
"add_url": "Pridaj URL",
|
||||
"add_url": "Pridať URL",
|
||||
"added_to_archive": "Pridané do archívu",
|
||||
"added_to_favorites": "Pridané do obľúbených",
|
||||
"added_to_favorites_count": "Pridané {count, number} do obľúbených",
|
||||
|
@ -100,9 +100,9 @@
|
|||
"library_watching_enable_description": "Sledovať externé knižnice pre zmeny v súboroch",
|
||||
"library_watching_settings": "Sledovanie knižnice (EXPERIMENTÁLNE)",
|
||||
"library_watching_settings_description": "Automaticky sledovať zmenené súbory",
|
||||
"logging_enable_description": "Povoliť zaznamenávanie",
|
||||
"logging_level_description": "Ak je povolené, akú úroveň zaznamenávania použiť.",
|
||||
"logging_settings": "Zaznamenávanie",
|
||||
"logging_enable_description": "Povoliť logovanie",
|
||||
"logging_level_description": "Ak je povolené, akú úroveň logovania použiť.",
|
||||
"logging_settings": "Logovanie",
|
||||
"machine_learning_clip_model": "Model CLIP",
|
||||
"machine_learning_clip_model_description": "Názov modelu CLIP je uvedený <link>tu</link>. Pamätajte, že pri zmene modelu je nutné znovu spustiť úlohu 'Inteligentné vyhľadávanie' pre všetky obrázky.",
|
||||
"machine_learning_duplicate_detection": "Detekcia duplikátov",
|
||||
|
@ -148,7 +148,7 @@
|
|||
"map_settings_description": "Spravovať nastavenia mapy",
|
||||
"map_style_description": "URL na motív style.json",
|
||||
"metadata_extraction_job": "Extrahovať metadáta",
|
||||
"metadata_extraction_job_description": "Získaj informácie metadátach z každej položky, ako napríklad GPS, tváre a rozlíšenie",
|
||||
"metadata_extraction_job_description": "Vytiahne metadáta z každej položky, ako napríklad GPS, tváre a rozlíšenie",
|
||||
"metadata_faces_import_setting": "Povoliť import tváre",
|
||||
"metadata_faces_import_setting_description": "Importuj tváre z EXIF dát obrázkov a sidecar súborov",
|
||||
"metadata_settings": "Metadáta",
|
||||
|
@ -233,7 +233,7 @@
|
|||
"sidecar_job_description": "Objavte alebo synchronizujte metadáta Sidecar zo súborového systému",
|
||||
"slideshow_duration_description": "Čas zobrazenia obrázku v sekundách",
|
||||
"smart_search_job_description": "Spustite strojové učenie na médiách na podporu inteligentného vyhľadávania",
|
||||
"storage_template_date_time_description": "Časová pečiatka vytvorenia médií sa používa pre informácie o dátume a čase",
|
||||
"storage_template_date_time_description": "Časová pečiatka vytvorenia položky sa používa pre informácie o dátume a čase",
|
||||
"storage_template_date_time_sample": "Čas vzorky {date}",
|
||||
"storage_template_enable_description": "Povoliť nástroj šablóny úložiska",
|
||||
"storage_template_hash_verification_enabled": "Overenie hash povolené",
|
||||
|
@ -252,7 +252,7 @@
|
|||
"tag_cleanup_job": "Premazanie značiek",
|
||||
"template_email_available_tags": "V šablóne môžeš použiť nasledujúce stítky: {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_invite_album": "Šablóna Pozvánky 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",
|
||||
|
@ -266,11 +266,11 @@
|
|||
"theme_settings_description": "Spravovať prispôsobenie webového rozhrania Immich",
|
||||
"these_files_matched_by_checksum": "Tieto súbory zodpovedajú kontrolným súčtom",
|
||||
"thumbnail_generation_job": "Generovať Miniatúry",
|
||||
"thumbnail_generation_job_description": "Generujte veľké, malé a rozmazané miniatúry pre každé médium, ako aj miniatúry pre každú osobu",
|
||||
"thumbnail_generation_job_description": "Generuje veľké, malé a rozostrení miniatúry pre každú položku, ako aj miniatúry pre každú osobu",
|
||||
"transcoding_acceleration_api": "API pre akceleráciu",
|
||||
"transcoding_acceleration_api_description": "Rozhranie API, ktoré bude interagovať s vaším zariadením s cieľom urýchliť prekódovanie. Toto nastavenie je „najlepšie úsilie“: pri zlyhaní sa vráti k softvérovému prekódovaniu. VP9 môže alebo nemusí fungovať v závislosti od vášho hardvéru.",
|
||||
"transcoding_acceleration_nvenc": "NVENC (vyžaduje grafickú kartu NVIDIA)",
|
||||
"transcoding_acceleration_qsv": "Quick Sync (vyžaduje 7. generáciu Intel procesora alebo novšie)",
|
||||
"transcoding_acceleration_nvenc": "NVENC (vyžaduje NVIDIA GPU)",
|
||||
"transcoding_acceleration_qsv": "Quick Sync (vyžaduje 7. generáciu Intel CPU alebo novšiu)",
|
||||
"transcoding_acceleration_rkmpp": "RKMPP (iba na Rockchip SOC)",
|
||||
"transcoding_acceleration_vaapi": "VAAPI",
|
||||
"transcoding_accepted_audio_codecs": "Akceptované zvukové kodeky",
|
||||
|
@ -496,7 +496,7 @@
|
|||
"copy_link_to_clipboard": "Skopírovať do schránky",
|
||||
"copy_password": "Skopírovať heslo",
|
||||
"copy_to_clipboard": "Skopírovať do schránky",
|
||||
"country": "Štát",
|
||||
"country": "Krajina",
|
||||
"cover": "Titulka",
|
||||
"covers": "Dlaždice",
|
||||
"create": "Vytvoriť",
|
||||
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Rozsah dátumu",
|
||||
"day": "Deň",
|
||||
"deduplicate_all": "Deduplikovať všetko",
|
||||
"deduplication_criteria_1": "Veľkosť obrázku v bajtoch",
|
||||
"deduplication_criteria_2": "Počet EXIF údajov",
|
||||
"deduplication_info": "Info o deduplikácii",
|
||||
"deduplication_info_description": "Na automatický predvýber položiek a hromadné odstránenie duplicít, sa pozeráme do:",
|
||||
"default_locale": "Predvolená Lokalizácia",
|
||||
"default_locale_description": "Formátovanie dátumu a čísel podľa lokalizácie vášho prehliadača",
|
||||
"delete": "Vymazať",
|
||||
|
@ -643,6 +647,8 @@
|
|||
"unable_to_add_import_path": "Nie je možné pridať cestu importu",
|
||||
"unable_to_add_partners": "Nie je možné pridať partnerov",
|
||||
"unable_to_add_remove_archive": "Nie je možné {archived, select, true {odstrániť položku z} other {pridať položku do}} archívu",
|
||||
"unable_to_add_remove_favorites": "Nepodarilo sa {favorite, select, true {pridať položku do} other {odstrániť položku z}} obľúbených",
|
||||
"unable_to_archive_unarchive": "Nepodarilo sa {archived, select, true {archivovať} other {odarchivovať}}",
|
||||
"unable_to_change_album_user_role": "Nie je možné zmeniť rolu používateľa pre album",
|
||||
"unable_to_change_date": "Nie je možné zmeniť dátum",
|
||||
"unable_to_change_favorite": "Nie je možné zmeniť obľúbené pre položku",
|
||||
|
@ -683,6 +689,7 @@
|
|||
"unable_to_log_out_device": "Nie je možné odhlásiť zariadenie",
|
||||
"unable_to_login_with_oauth": "Nie je možné prihlásiť sa cez OAuth",
|
||||
"unable_to_play_video": "Nie je možné prehrať video",
|
||||
"unable_to_reassign_assets_existing_person": "Nepodarilo sa priradiť položku k {name, select, null {existujúcej osobe} other {{name}}}",
|
||||
"unable_to_reassign_assets_new_person": "Nie je možné priradiť položky novej osobe",
|
||||
"unable_to_refresh_user": "Nie je možné aktualizovať používateľa",
|
||||
"unable_to_remove_album_users": "Nie je možné odstrániť používateľov z albumu",
|
||||
|
@ -778,11 +785,11 @@
|
|||
"image_alt_text_date_2_people": "{isVideo, select, true {Video} other {Image}} nasnímané s {person1} a {person2} dňa {date}",
|
||||
"image_alt_text_date_3_people": "{isVideo, select, true {Video} other {Image}} nasnímané s {person1}, {person2} a {person3} dňa {date}",
|
||||
"image_alt_text_date_4_or_more_people": "{isVideo, select, true {Video} other {Image}} nasnímané s {person1}, {person2} a {additionalCount, number} inými dňa {date}",
|
||||
"image_alt_text_date_place": "{isVideo, select, true {Video} other {Image}} nasnímané v {city}, {country} dňa {date}",
|
||||
"image_alt_text_date_place_1_person": "{isVideo, select, true {Video} other {Image}} nasnímané v {city}, {country} s {person1} dňa {date}",
|
||||
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} nasnímané v {city}, {country} s {person1} a {person2} dňa {date}",
|
||||
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} nasnímané v {city}, {country} s {person1}, {person2} a {person3} dňa {date}",
|
||||
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} nasnímané v {city}, {country} s {person1}, {person2} a {additionalCount, number} inými dňa {date}",
|
||||
"image_alt_text_date_place": "{isVideo, select, true {Video} other {Obrázok}} nasnímané v {city}, {country} dňa {date}",
|
||||
"image_alt_text_date_place_1_person": "{isVideo, select, true {Video} other {Obrázok}} zo dňa {date} v {city}, {country} s {person1}",
|
||||
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Obrázok}} v {city}, {country} s {person1} a {person2} zo dňa {date}",
|
||||
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Obrázok}} zo dňa {date} v {city}, {country} s {person1}, {person2} a {person3}",
|
||||
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Obrázok}} nasnímaný v {city}, {country} s {person1}, {person2} a {additionalCount, number} inými dňa {date}",
|
||||
"immich_logo": "Logo Immich",
|
||||
"immich_web_interface": "Webové rozhranie Immich",
|
||||
"import_from_json": "Importovať z JSON",
|
||||
|
@ -806,7 +813,9 @@
|
|||
"jobs": "Úlohy",
|
||||
"keep": "Ponechať",
|
||||
"keep_all": "Ponechať všetko",
|
||||
"keyboard_shortcuts": "",
|
||||
"keep_this_delete_others": "Ponechať toto, odstrániť ostatné",
|
||||
"kept_this_deleted_others": "Ponechá túto položku a odstráni {count, plural, one {# položku} other {# položiek}}",
|
||||
"keyboard_shortcuts": "Klávesové skratky",
|
||||
"language": "Jazyk",
|
||||
"language_setting_description": "Vyberte preferovaný jazyk",
|
||||
"last_seen": "Naposledy videné",
|
||||
|
@ -818,163 +827,264 @@
|
|||
"library": "Knižnica",
|
||||
"library_options": "Možnosti knižnice",
|
||||
"light": "Svetlý",
|
||||
"like_deleted": "Like odstránený",
|
||||
"link_motion_video": "Pripojiť pohyblivé video",
|
||||
"link_options": "Možnosti odkazu",
|
||||
"link_to_oauth": "Prepojiť s OAuth",
|
||||
"linked_oauth_account": "Pripojený OAuth účet",
|
||||
"list": "Zoznam",
|
||||
"loading": "Načítavanie",
|
||||
"loading_search_results_failed": "",
|
||||
"loading_search_results_failed": "Načítanie výsledkov hľadania sa nepodarilo",
|
||||
"log_out": "Odhlásiť sa",
|
||||
"log_out_all_devices": "Odhlásiť všetky zariadenia",
|
||||
"logged_out_all_devices": "Všetky zariadenia odhlásené",
|
||||
"logged_out_device": "Zariadenie odhlásené",
|
||||
"login": "Prihlásenie",
|
||||
"login_has_been_disabled": "Prihlásenie bolo vypnuté.",
|
||||
"logout_all_device_confirmation": "Ste si istý, že sa chcete odhlásiť zo všetkých zariadení?",
|
||||
"logout_this_device_confirmation": "Ste si istý, že sa chcete odhlásiť z tohoto zariadenia?",
|
||||
"longitude": "Zemepisná dĺžka",
|
||||
"look": "Zobrazenie",
|
||||
"loop_videos": "",
|
||||
"loop_videos_description": "",
|
||||
"make": "",
|
||||
"loop_videos": "Opakovať videá",
|
||||
"loop_videos_description": "Povolí prehrávanie videí v slučke v detailnom zobrazení.",
|
||||
"main_branch_warning": "Používate vývojársku verziu; silno odporúčame používať vydané verzie!",
|
||||
"make": "Výrobca",
|
||||
"manage_shared_links": "Spravovať zdieľané odkazy",
|
||||
"manage_sharing_with_partners": "",
|
||||
"manage_the_app_settings": "",
|
||||
"manage_your_account": "",
|
||||
"manage_your_api_keys": "",
|
||||
"manage_your_devices": "",
|
||||
"manage_your_oauth_connection": "",
|
||||
"manage_sharing_with_partners": "Spravovať zdieľanie s partnermi",
|
||||
"manage_the_app_settings": "Spravovať nastavenia aplikácie",
|
||||
"manage_your_account": "Spravovať váš účet",
|
||||
"manage_your_api_keys": "Spravovať vaše API kľúče",
|
||||
"manage_your_devices": "Spravovať vaše prihlásené zariadenia",
|
||||
"manage_your_oauth_connection": "Spravovať vaše OAuth spojenia",
|
||||
"map": "Mapa",
|
||||
"map_marker_with_image": "",
|
||||
"map_marker_for_images": "Značka na mape pre obrázky odfotené v {city}, {country}",
|
||||
"map_marker_with_image": "Mapová značka pre obrázok",
|
||||
"map_settings": "Nastavenia máp",
|
||||
"media_type": "",
|
||||
"memories": "",
|
||||
"memories_setting_description": "",
|
||||
"matches": "Zhody",
|
||||
"media_type": "Typ média",
|
||||
"memories": "Spomienky",
|
||||
"memories_setting_description": "Spravuje čo vidíte v spomienkach",
|
||||
"memory": "Pamäť",
|
||||
"memory_lane_title": "Pás spomienok {title}",
|
||||
"menu": "Menu",
|
||||
"merge": "",
|
||||
"merge_people": "",
|
||||
"merge_people_successfully": "",
|
||||
"minimize": "",
|
||||
"minute": "",
|
||||
"missing": "",
|
||||
"model": "",
|
||||
"merge": "Zlúčiť",
|
||||
"merge_people": "Zlúčiť ľudí",
|
||||
"merge_people_limit": "Zlúčiť môžete naraz najviac 5 tvárí",
|
||||
"merge_people_prompt": "Chcete zlúčiť týchto ľudí? Táto akcia sa nedá vrátiť.",
|
||||
"merge_people_successfully": "Zlúčenie ľudí sa podarilo",
|
||||
"merged_people_count": "Zlúčení {count, plural, one {# človek} other {# ľudia}}",
|
||||
"minimize": "Minimalizovať",
|
||||
"minute": "Minúta",
|
||||
"missing": "Chýbajúce",
|
||||
"model": "Model",
|
||||
"month": "Mesiac",
|
||||
"more": "",
|
||||
"moved_to_trash": "",
|
||||
"my_albums": "",
|
||||
"more": "Viac",
|
||||
"moved_to_trash": "Presunuté do koša",
|
||||
"my_albums": "Moje albumy",
|
||||
"name": "Meno",
|
||||
"name_or_nickname": "",
|
||||
"name_or_nickname": "Meno alebo prezývka",
|
||||
"never": "nikdy",
|
||||
"new_api_key": "",
|
||||
"new_album": "Nový album",
|
||||
"new_api_key": "Nový API kľúč",
|
||||
"new_password": "Nové heslo",
|
||||
"new_person": "",
|
||||
"new_user_created": "",
|
||||
"new_person": "Nová osoba",
|
||||
"new_user_created": "Nový používateľ vytvorený",
|
||||
"new_version_available": "JE DOSTUPNÁ NOVÁ VERZIA",
|
||||
"newest_first": "",
|
||||
"newest_first": "Najnovšie prvé",
|
||||
"next": "Ďalej",
|
||||
"next_memory": "",
|
||||
"no": "",
|
||||
"no_albums_message": "",
|
||||
"next_memory": "Ďalšia spomienka",
|
||||
"no": "Nie",
|
||||
"no_albums_message": "Vytvorí album na organizovanie fotiek a videí",
|
||||
"no_albums_with_name_yet": "Vyzerá, že zatiaľ nemáte album s týmto názvom.",
|
||||
"no_albums_yet": "Vyzerá, že zatiaľ nemáte žiadne albumy.",
|
||||
"no_archived_assets_message": "Archivovať fotografie a videá, aby sa skryli zo zobrazenia Fotografie",
|
||||
"no_assets_message": "",
|
||||
"no_exif_info_available": "",
|
||||
"no_explore_results_message": "",
|
||||
"no_favorites_message": "",
|
||||
"no_libraries_message": "",
|
||||
"no_name": "",
|
||||
"no_places": "",
|
||||
"no_results": "",
|
||||
"no_shared_albums_message": "",
|
||||
"not_in_any_album": "",
|
||||
"no_assets_message": "KLIKNITE A NAHRAJTE SVOJU PRVÚ FOTKU",
|
||||
"no_duplicates_found": "Nenašli sa žiadne duplicity.",
|
||||
"no_exif_info_available": "Nie sú dostupné exif údaje",
|
||||
"no_explore_results_message": "Nahrajte viac fotiek na objavovanie vašej zbierky.",
|
||||
"no_favorites_message": "Pridajte si obľúbené, aby ste rýchlo našli svoje najlepšie obrázky a videá",
|
||||
"no_libraries_message": "Vytvorí externú knižnicu na prezeranie fotiek a videí",
|
||||
"no_name": "Bez mena",
|
||||
"no_places": "Bez miesta",
|
||||
"no_results": "Žiadne výsledky",
|
||||
"no_results_description": "Skúste synonymum alebo všeobecnejší výraz",
|
||||
"no_shared_albums_message": "Vytvorí album na zdieľanie fotiek a videí s ľuďmi vo vašej sieti",
|
||||
"not_in_any_album": "Nie je v žiadnom albume",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Poznámka: Ak chcete použiť Štítok úložiska na predtým nahrané médiá, spustite príkaz",
|
||||
"notes": "",
|
||||
"note_unlimited_quota": "Poznámka: Zadajte 0 pre neobmedzenú kvótu",
|
||||
"notes": "Poznámky",
|
||||
"notification_toggle_setting_description": "Povoliť e-mailové upozornenia",
|
||||
"notifications": "Oznámenia",
|
||||
"notifications_setting_description": "Spravovať upozornenia",
|
||||
"oauth": "OAuth",
|
||||
"offline": "",
|
||||
"ok": "",
|
||||
"oldest_first": "",
|
||||
"official_immich_resources": "Oficiálne Immich zdroje",
|
||||
"offline": "Offline",
|
||||
"offline_paths": "Offline cesty",
|
||||
"offline_paths_description": "Tieto výsledky môžu byť kvôli ručnému vymazaniu súborov ktoré nie sú súčasťou externej knižnice.",
|
||||
"ok": "OK",
|
||||
"oldest_first": "Najstaršie prvé",
|
||||
"onboarding": "Na palube",
|
||||
"onboarding_privacy_description": "Nasledujúce (voliteľné) funkcie závisia na externých službách, a kedykoľvek ich môžete vypnúť v admin nastaveniach.",
|
||||
"onboarding_theme_description": "Vyberte farbu témy pre váš server. Môžete to aj neskôr zmeniť vo vašich nastaveniach.",
|
||||
"onboarding_welcome_description": "Poďme nastaviť pre váš server niekoľko základných nastavení.",
|
||||
"onboarding_welcome_user": "Vitaj, {user}",
|
||||
"online": "",
|
||||
"only_favorites": "",
|
||||
"open_the_search_filters": "",
|
||||
"online": "Online",
|
||||
"only_favorites": "Len obľúbené",
|
||||
"open_in_map_view": "Otvoriť v mape",
|
||||
"open_in_openstreetmap": "Otvoriť v OpenStreetMap",
|
||||
"open_the_search_filters": "Otvoriť vyhľadávacie filtre",
|
||||
"options": "Nastavenia",
|
||||
"or": "alebo",
|
||||
"organize_your_library": "Usporiadajte svoju knižnicu",
|
||||
"other": "",
|
||||
"original": "originál",
|
||||
"other": "Ostatné",
|
||||
"other_devices": "Ďalšie zariadenia",
|
||||
"other_variables": "",
|
||||
"other_variables": "Ostatné premenné",
|
||||
"owned": "Vlastnené",
|
||||
"owner": "Vlastník",
|
||||
"partner_sharing": "",
|
||||
"partners": "",
|
||||
"partner": "Partner",
|
||||
"partner_can_access": "{partner} môže pristupovať",
|
||||
"partner_can_access_assets": "Všetky vaše fotky a videá, okrem Archivovaných a Odstránených",
|
||||
"partner_can_access_location": "Miesto kde bola fotka spravená",
|
||||
"partner_sharing": "Zdieľanie s partnerom",
|
||||
"partners": "Partneri",
|
||||
"password": "Heslo",
|
||||
"password_does_not_match": "",
|
||||
"password_required": "",
|
||||
"password_reset_success": "",
|
||||
"password_does_not_match": "Heslá sa nezhodujú",
|
||||
"password_required": "Heslo je povinné",
|
||||
"password_reset_success": "Obnovenie hesla úspešné",
|
||||
"past_durations": {
|
||||
"days": "",
|
||||
"hours": "",
|
||||
"years": ""
|
||||
"days": "{days, plural, one {Posledný deň} other {Posledných # dní }}",
|
||||
"hours": "{hours, plural, one {Posledná hodina} other {Posledných # hodín}}",
|
||||
"years": "{years, plural, one {Posledný rok} other {Posledné # roky}}"
|
||||
},
|
||||
"path": "",
|
||||
"pattern": "",
|
||||
"pause": "",
|
||||
"pause_memories": "",
|
||||
"paused": "",
|
||||
"pending": "",
|
||||
"path": "Cesta",
|
||||
"pattern": "Vzor",
|
||||
"pause": "Pozastaviť",
|
||||
"pause_memories": "Pozastaviť spomienky",
|
||||
"paused": "Pozastavené",
|
||||
"pending": "Čakajúce",
|
||||
"people": "Ľudia",
|
||||
"people_sidebar_description": "",
|
||||
"permanent_deletion_warning": "",
|
||||
"permanent_deletion_warning_setting_description": "",
|
||||
"permanently_delete": "",
|
||||
"permanently_deleted_asset": "",
|
||||
"people_edits_count": "{count, plural, one {Upravená # osoba} other {Upravených # ľudí}}",
|
||||
"people_feature_description": "Prehliadanie fotiek a videí zoskupených podľa ľudí",
|
||||
"people_sidebar_description": "Zobrazí odkaz na Ľudí v bočnom paneli",
|
||||
"permanent_deletion_warning": "Varovanie o trvalom zmazaní",
|
||||
"permanent_deletion_warning_setting_description": "Zobraziť varovanie pri trvalom zmazaní položky",
|
||||
"permanently_delete": "Trvalo zmazať",
|
||||
"permanently_delete_assets_count": "Navždy zmazať {count, plural, one {položku} other {položky}}",
|
||||
"permanently_delete_assets_prompt": "Naozaj si prajete navždy zmazať {count, plural, one {túto položku?} other {týchto <b>#</b> položiek?}} Vymažú sa aj {count, plural, one {zo svojho albumu} other {zo svojich albumov}}.",
|
||||
"permanently_deleted_asset": "Navždy odstránená položka",
|
||||
"permanently_deleted_assets_count": "Navždy {count, plural, one {odstránená # položka} other {odstránené # položky}}",
|
||||
"person": "Osoba",
|
||||
"person_hidden": "{name}{hidden, select, true { (skryté)} other {}}",
|
||||
"photo_shared_all_users": "Vyzerá, že zdieľate svoje fotky so všetkými používateľmi alebo nemáte žiadnych používateľov.",
|
||||
"photos": "Fotografie",
|
||||
"photos_and_videos": "Fotografie & Videa",
|
||||
"photos_from_previous_years": "",
|
||||
"pick_a_location": "",
|
||||
"photos_count": "{count, plural, one {{count, number} Fotka} other {{count, number} Fotiek}}",
|
||||
"photos_from_previous_years": "Fotky z minulých rokov",
|
||||
"pick_a_location": "Vyberte miesto",
|
||||
"place": "Miesto",
|
||||
"places": "Miesta",
|
||||
"play": "Prehrať",
|
||||
"play_memories": "",
|
||||
"play_motion_photo": "",
|
||||
"play_or_pause_video": "",
|
||||
"port": "",
|
||||
"preset": "",
|
||||
"preview": "",
|
||||
"previous": "",
|
||||
"previous_memory": "",
|
||||
"previous_or_next_photo": "",
|
||||
"primary": "",
|
||||
"profile_picture_set": "",
|
||||
"play_memories": "Prehrať spomienky",
|
||||
"play_motion_photo": "Prehrať pohyblivú fotku",
|
||||
"play_or_pause_video": "Pustí alebo pozastaví video",
|
||||
"port": "Port",
|
||||
"preset": "Prednastavenie",
|
||||
"preview": "Náhľad",
|
||||
"previous": "Predošlé",
|
||||
"previous_memory": "Predošlá spomienka",
|
||||
"previous_or_next_photo": "Predošlá alebo ďalšia fotka",
|
||||
"primary": "Primárne",
|
||||
"privacy": "Súkromie",
|
||||
"profile_image_of_user": "Profilový obrázok používateľa {user}",
|
||||
"profile_picture_set": "Profilový obrázok nastavený.",
|
||||
"public_album": "Verejný album",
|
||||
"public_share": "",
|
||||
"public_share": "Verejné zdieľanie",
|
||||
"purchase_account_info": "Podporovateľ",
|
||||
"purchase_activated_subtitle": "Ďakujeme za podporu Immich a softvéru s otvorenými zdrojákmi",
|
||||
"purchase_activated_time": "Aktivované {date, date}",
|
||||
"purchase_activated_title": "Váš kľúč je úspešne aktivovaný",
|
||||
"purchase_button_activate": "Aktivovať",
|
||||
"purchase_button_buy": "Kúpiť",
|
||||
"purchase_button_buy_immich": "Kúpiť Immich",
|
||||
"purchase_button_never_show_again": "Už viac nezobrazovať",
|
||||
"purchase_button_reminder": "Pripomenúť mi o 30 dní",
|
||||
"purchase_button_remove_key": "Odobrať kľúč",
|
||||
"purchase_button_select": "Vybrať",
|
||||
"purchase_failed_activation": "Aktivácia sa nepodarila! Prosím skontrolujte email či je správny kľúč produktu!",
|
||||
"purchase_individual_description_1": "Pre jednotlivca",
|
||||
"purchase_individual_description_2": "Stav podporovateľa",
|
||||
"purchase_individual_title": "Jednotlivec",
|
||||
"purchase_input_suggestion": "Máte produktový kľúč? Zadajte ho nižšie",
|
||||
"purchase_license_subtitle": "Kúpte si Immich a podporte neustály vývoj tejto služby",
|
||||
"purchase_lifetime_description": "Doživotná platnosť",
|
||||
"purchase_option_title": "MOŽNOSTI NÁKUPU",
|
||||
"purchase_panel_info_1": "Vývoj Immich zaberá veľa času a úsilia, a máme zamestnaných fulltime inžinierov, aby ho spravili ako sa najlepšie dá. Naša misia je, aby sa open-source softvér a etické biznis praktiky stali udržateľným zdrojom príjmu pre vývojárov a vytvorili ekosystém rešpektujúci súkromie so skutočnými náhradami voči zneužívajúcim cloudovým službám.",
|
||||
"purchase_panel_info_2": "Keďže sme zaviazaní nezavádzať paywally, nezískate týmto nákupom žiadne prídavné funkcie. Spoliehame sa na používateľov ako vy na podporu neustáleho vývoja Immich.",
|
||||
"purchase_panel_title": "Podporiť projekt",
|
||||
"reaction_options": "",
|
||||
"read_changelog": "",
|
||||
"purchase_per_server": "Za server",
|
||||
"purchase_per_user": "Za používateľa",
|
||||
"purchase_remove_product_key": "Odstrániť produktový kľúč",
|
||||
"purchase_remove_product_key_prompt": "Naozaj chcete odstrániť produktový kľúč?",
|
||||
"purchase_remove_server_product_key": "Odstrániť produktový kľúč servera",
|
||||
"purchase_remove_server_product_key_prompt": "Naozaj chcete odstrániť produktový kľúč servera?",
|
||||
"purchase_server_description_1": "Pre celý server",
|
||||
"purchase_server_description_2": "Stav podporovateľa",
|
||||
"purchase_server_title": "Server",
|
||||
"purchase_settings_server_activated": "Produktový kľúč servera spravuje admin",
|
||||
"rating": "Hodnotenie hviezdičkami",
|
||||
"rating_clear": "Vyčistiť hodnotenie",
|
||||
"rating_count": "{count, plural, one {# hviezdička} other {# hviezdičky}}",
|
||||
"rating_description": "Zobrazí EXIF hodnotenie v info paneli",
|
||||
"reaction_options": "Možnosti reakcie",
|
||||
"read_changelog": "Prečítať zoznam zmien",
|
||||
"reassign": "Preradiť",
|
||||
"reassigned_assets_to_existing_person": "Preradené {count, plural, one {# položka} other {# položky}} k {name, select, null {existujúcej osobe} other {{name}}}",
|
||||
"reassigned_assets_to_new_person": "Preradené {count, plural, one {# položka} other {# položiek}} novej osobe",
|
||||
"reassing_hint": "Priradí zvolenú položku k existujúcej osobe",
|
||||
"recent": "Nedávne",
|
||||
"recent_searches": "",
|
||||
"recent-albums": "Posledné albumy",
|
||||
"recent_searches": "Posledné vyhľadávania",
|
||||
"refresh": "Obnoviť",
|
||||
"refresh_encoded_videos": "Obnoviť enkódované videá",
|
||||
"refresh_faces": "Obnoviť tváre",
|
||||
"refresh_metadata": "Obnoviť metadáta",
|
||||
"refresh_thumbnails": "Obnoviť miniatúry",
|
||||
"refreshed": "Aktualizované",
|
||||
"refreshes_every_file": "",
|
||||
"refreshes_every_file": "Znova prečíta všetky existujúce a nové súbory",
|
||||
"refreshing_encoded_video": "Obnovovanie enkódovaných videí",
|
||||
"refreshing_faces": "Obnovovnie tvárí",
|
||||
"refreshing_metadata": "Obnovovanie metadát",
|
||||
"regenerating_thumbnails": "Pregenerovanie náhľadov",
|
||||
"remove": "Odstrániť",
|
||||
"remove_deleted_assets": "",
|
||||
"remove_assets_album_confirmation": "Naozaj chcete odstrániť {count, plural, one {# položky} other {# položiek}} z albumu?",
|
||||
"remove_assets_shared_link_confirmation": "Naozaj chcete odstrániť {count, plural, one {# položku} other {# položiek}} z tohoto zdieľaného odkazu?",
|
||||
"remove_assets_title": "Odstrániť položky?",
|
||||
"remove_custom_date_range": "Odstrániť vlastný rozsah dátumov",
|
||||
"remove_deleted_assets": "Odstrániť vymazané položky",
|
||||
"remove_from_album": "Odstrániť z albumu",
|
||||
"remove_from_favorites": "",
|
||||
"remove_from_shared_link": "",
|
||||
"remove_from_favorites": "Odstrániť z obľúbených",
|
||||
"remove_from_shared_link": "Odstrániť zo zdieľaného odkazu",
|
||||
"remove_url": "Odstrániť URL",
|
||||
"remove_user": "Odstrániť používateľa",
|
||||
"removed_api_key": "Odstrániť API kľúč: {name}",
|
||||
"removed_from_archive": "Odstránené z archívu",
|
||||
"removed_from_favorites": "Odstránené z obľúbených",
|
||||
"removed_from_favorites_count": "{count, plural, other {Odstránených #}} z obľúbených",
|
||||
"removed_tagged_assets": "Odstránená značka z {count, plural, one {# položky} other {# položiek}}",
|
||||
"rename": "Premenovať",
|
||||
"repair": "Opraviť",
|
||||
"repair_no_results_message": "",
|
||||
"replace_with_upload": "",
|
||||
"repair_no_results_message": "Nesledované a chýbajúce súbory sa zobrazia tu",
|
||||
"replace_with_upload": "Nahradiť nahraním",
|
||||
"repository": "Repozitár",
|
||||
"require_password": "Vyžadovať heslo",
|
||||
"require_user_to_change_password_on_first_login": "Vyžadovať zmenu hesla po prvom prihlásení",
|
||||
"reset": "Resetovať",
|
||||
"reset_password": "Obnoviť heslo",
|
||||
"reset_people_visibility": "",
|
||||
"reset_people_visibility": "Resetovať viditeľnosť ľudí",
|
||||
"reset_to_default": "Resetovať na predvolené",
|
||||
"resolve_duplicates": "Vyriešiť duplicity",
|
||||
"resolved_all_duplicates": "Vyriešené všetky duplicity",
|
||||
"restore": "Navrátiť",
|
||||
"restore_all": "Navrátit všetko",
|
||||
"restore_user": "Navrátiť používateľa",
|
||||
|
@ -1017,7 +1127,7 @@
|
|||
"search_your_photos": "Hľadajte svoje fotky",
|
||||
"searching_locales": "Hľadám lokality...",
|
||||
"second": "Sekundy",
|
||||
"see_all_people": "Vydieť všetky osoby",
|
||||
"see_all_people": "Pozrieť všetky osoby",
|
||||
"select_album_cover": "Vyberte obal albumu",
|
||||
"select_all": "Vybrať všetko",
|
||||
"select_all_duplicates": "Vybrať všetky duplikáty",
|
||||
|
@ -1040,6 +1150,7 @@
|
|||
"server_version": "Verzia Servera",
|
||||
"set": "Nastaviť",
|
||||
"set_as_album_cover": "Nastaviť ako obal albumu",
|
||||
"set_as_featured_photo": "Nastaviť ako hlavnú fotku",
|
||||
"set_as_profile_picture": "Nastaviť ako profilový obrázok",
|
||||
"set_date_of_birth": "Nastaviť dátum narodenia",
|
||||
"set_profile_picture": "Nastaviť profilový obrázok",
|
||||
|
@ -1062,91 +1173,143 @@
|
|||
"shift_to_permanent_delete": "stlačte ⇧ pre nemenné zmazanie pložiek",
|
||||
"show_album_options": "Zobraziť možnosti albumu",
|
||||
"show_albums": "Zobraziť albumy",
|
||||
"show_file_location": "",
|
||||
"show_all_people": "Zobraziť všetkých ľudí",
|
||||
"show_and_hide_people": "Zobraziť a skryť ľudí",
|
||||
"show_file_location": "Zobrazí umiestnenie súboru",
|
||||
"show_gallery": "Zobraziť galériu",
|
||||
"show_hidden_people": "",
|
||||
"show_hidden_people": "Zobraziť skrytých ľudí",
|
||||
"show_in_timeline": "Zobraziť na časovej osi",
|
||||
"show_in_timeline_setting_description": "",
|
||||
"show_in_timeline_setting_description": "Zobrazí fotky a videá tohoto používateľa na časovej osi",
|
||||
"show_keyboard_shortcuts": "Zobraziť klávesové skratky",
|
||||
"show_metadata": "Zobraziť metadáta",
|
||||
"show_or_hide_info": "",
|
||||
"show_or_hide_info": "Zobrazí alebo skryje info",
|
||||
"show_password": "Zobraziť heslo",
|
||||
"show_person_options": "",
|
||||
"show_progress_bar": "",
|
||||
"show_person_options": "Zobrazí možnosti osoby",
|
||||
"show_progress_bar": "Zobrazí ukazovateľ priebehu",
|
||||
"show_search_options": "Zobraziť možnosti vyhľadávania",
|
||||
"shuffle": "",
|
||||
"show_slideshow_transition": "Zobrazí prechody v prezentácii",
|
||||
"show_supporter_badge": "Odznak podporovateľa",
|
||||
"show_supporter_badge_description": "Zobraziť odznak podporovateľa",
|
||||
"shuffle": "Náhodné poradie",
|
||||
"sidebar": "Bočný panel",
|
||||
"sidebar_display_description": "Zobrazí odkaz na pohľad v bočnom paneli",
|
||||
"sign_out": "Odhlásiť sa",
|
||||
"sign_up": "",
|
||||
"sign_up": "Registrovať",
|
||||
"size": "Veľkosť",
|
||||
"skip_to_content": "",
|
||||
"skip_to_content": "Preskočiť na obsah",
|
||||
"skip_to_folders": "Preskočiť do priečinkov",
|
||||
"skip_to_tags": "Preskočiť ku štítkom",
|
||||
"slideshow": "",
|
||||
"slideshow_settings": "",
|
||||
"slideshow": "Prezentácia",
|
||||
"slideshow_settings": "Nastavenia prezentácie",
|
||||
"sort_albums_by": "Zoradiť albumy podľa...",
|
||||
"sort_created": "Dátum vytvorenia",
|
||||
"sort_items": "Počet položiek",
|
||||
"sort_modified": "Dátum úpravy",
|
||||
"sort_oldest": "Najstaršia fotografia",
|
||||
"sort_people_by_similarity": "Zoradiť ľudí podľa podobnosti",
|
||||
"sort_recent": "Najnovšia fotografia",
|
||||
"sort_title": "Názov",
|
||||
"source": "Zdroj",
|
||||
"stack": "Zoskupenie",
|
||||
"stack_selected_photos": "",
|
||||
"stacktrace": "",
|
||||
"stack_duplicates": "Zoskupiť duplicity",
|
||||
"stack_select_one_photo": "Vyberte jednu hlavnú fotku pre zoskupenie",
|
||||
"stack_selected_photos": "Zoskupiť vybraté fotky",
|
||||
"stacked_assets_count": "{count, plural, one {Zoskupená # položka} other {Zoskupených # položiek}}",
|
||||
"stacktrace": "Výpis zásobníku",
|
||||
"start": "Štart",
|
||||
"start_date": "Začiatočný dátum",
|
||||
"state": "",
|
||||
"status": "",
|
||||
"stop_motion_photo": "",
|
||||
"state": "Stav",
|
||||
"status": "Stav",
|
||||
"stop_motion_photo": "Stopmotion fotka",
|
||||
"stop_photo_sharing": "Zastaviť zdieľanie vašich fotiek?",
|
||||
"stop_photo_sharing_description": "{partner} už nebude mať prístup k vašim fotkám.",
|
||||
"stop_sharing_photos_with_user": "Zastaviť zdieľanie týchto fotiek s týmto používateľom",
|
||||
"storage": "Ukladací priestor",
|
||||
"storage_label": "Štítok úložiska",
|
||||
"storage_usage": "Využitých {used} z {available}",
|
||||
"submit": "Odoslať",
|
||||
"suggestions": "Návrhy",
|
||||
"sunrise_on_the_beach": "",
|
||||
"swap_merge_direction": "",
|
||||
"sync": "",
|
||||
"sunrise_on_the_beach": "Východ slnka na pláži",
|
||||
"support": "Podpora",
|
||||
"support_and_feedback": "Podpora a spätná väzba",
|
||||
"support_third_party_description": "Vaša inštalácia Immich bola pripravená treťou stranou. Problémy, ktoré sa vyskytli, môžu byť spôsobené týmto balíčkom, preto sa na nich obráťte v prvom rade cez nasledujúce odkazy.",
|
||||
"swap_merge_direction": "Vymeniť smer zlúčenia",
|
||||
"sync": "Synchronizovať",
|
||||
"tag": "Značka",
|
||||
"tag_assets": "Pridať značku",
|
||||
"tag_created": "Vytvorená značka: {tag}",
|
||||
"tag_feature_description": "Prehliadanie fotiek a videá zoskupených podľa tematických značiek",
|
||||
"tag_not_found_question": "Neviete nájsť značku? <link>Vytvorte novú značku.</link>",
|
||||
"tag_updated": "Upravená značka: {tag}",
|
||||
"tagged_assets": "Značka priradená {count, plural, one {# položke} other {# položkám}}",
|
||||
"tags": "Štítky",
|
||||
"template": "",
|
||||
"template": "Šablóna",
|
||||
"theme": "Téma",
|
||||
"theme_selection": "",
|
||||
"theme_selection_description": "",
|
||||
"time_based_memories": "",
|
||||
"theme_selection": "Výber témy",
|
||||
"theme_selection_description": "Automaticky nastaví tému na svetlú alebo tmavú podľa systémových preferencií v prehliadači",
|
||||
"they_will_be_merged_together": "Zlúčia sa dokopy",
|
||||
"third_party_resources": "Zdroje tretích strán",
|
||||
"time_based_memories": "Časové spomienky",
|
||||
"timeline": "Časová os",
|
||||
"timezone": "Časové pásmo",
|
||||
"to_archive": "Archivovať",
|
||||
"to_change_password": "Zmeniť heslo",
|
||||
"to_favorite": "Obľúbiť",
|
||||
"to_login": "Prihlásiť",
|
||||
"to_parent": "Prejsť k nadradenému",
|
||||
"to_trash": "Kôš",
|
||||
"toggle_settings": "",
|
||||
"toggle_theme": "",
|
||||
"total_usage": "",
|
||||
"toggle_settings": "Prepnúť nastavenie",
|
||||
"toggle_theme": "Prepnúť tmavú tému",
|
||||
"total": "Celkom",
|
||||
"total_usage": "Celkové využitie",
|
||||
"trash": "Kôš",
|
||||
"trash_all": "",
|
||||
"trash_all": "Všetko do koša",
|
||||
"trash_count": "{count, number} do koša",
|
||||
"trash_delete_asset": "Položky do koša/odstrániť",
|
||||
"trash_no_results_message": "Vymazané fotografie a videá sa zobrazia tu.",
|
||||
"type": "",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Položky v koši sa natrvalo vymažú po {days, plural, one {# dni} other {# dňoch}}.",
|
||||
"type": "Typ",
|
||||
"unarchive": "Odarchivovať",
|
||||
"unarchived_count": "{count, plural, other {Odarchivovaných #}}",
|
||||
"unfavorite": "Odznačiť ako obľúbené",
|
||||
"unhide_person": "",
|
||||
"unknown": "",
|
||||
"unhide_person": "Odkryť osobu",
|
||||
"unknown": "Neznáme",
|
||||
"unknown_year": "Neznámy rok",
|
||||
"unlink_oauth": "",
|
||||
"unlinked_oauth_account": "",
|
||||
"unlimited": "Neobmedzené",
|
||||
"unlink_motion_video": "Odpojiť pohyblivé video",
|
||||
"unlink_oauth": "Odpojiť OAuth",
|
||||
"unlinked_oauth_account": "Odpojiť OAuth účet",
|
||||
"unnamed_album": "Nepomenovaný album",
|
||||
"unnamed_album_delete_confirmation": "Ste si istý, že chcete zmazať tento album?",
|
||||
"unnamed_share": "Nepomenované zdieľanie",
|
||||
"unsaved_change": "Neuložená zmena",
|
||||
"unselect_all": "",
|
||||
"unselect_all": "Zrušiť výber všetkých",
|
||||
"unselect_all_duplicates": "Zrušiť výber všetkých duplicít",
|
||||
"unstack": "Odskupiť",
|
||||
"up_next": "",
|
||||
"updated_password": "",
|
||||
"unstacked_assets_count": "{count, plural, one {Rozložená # položka} few {Rozložené # položky} other {Rozložených # položiek}}",
|
||||
"untracked_files": "Nesledované súbory",
|
||||
"untracked_files_decription": "Tieto súbory nie sú sledované aplikáciou. Dôvodom môže byť zlyhaný presun, prerušené nahrávanie, alebo výsledkom bugu",
|
||||
"up_next": "To je všetko",
|
||||
"updated_password": "Heslo zmenené",
|
||||
"upload": "Nahrať",
|
||||
"upload_concurrency": "",
|
||||
"upload_concurrency": "Súbežnosť nahrávania",
|
||||
"upload_errors": "Nahrávanie ukončené s {count, plural, one {# chybou} other {# chybami}}, obnovte stránku aby sa zobrazili nové položky.",
|
||||
"upload_progress": "Ostáva {remaining, number} - Spracovaných {processed, number}/{total, number}",
|
||||
"upload_skipped_duplicates": "{count, plural, one {Preskočená # duplicita} few {Preskočené # duplicity} other {Preskočených # duplicít}}",
|
||||
"upload_status_duplicates": "Duplikáty",
|
||||
"upload_status_errors": "Chyby",
|
||||
"upload_status_uploaded": "Nahrané",
|
||||
"upload_success": "Nahrávanie úspešné, pridané súbory sa zobrazia po obnovení stránky.",
|
||||
"url": "Odkaz URL",
|
||||
"usage": "Použitie",
|
||||
"use_custom_date_range": "Použite radšej vlastný rozsah dátumov",
|
||||
"user": "Používateľ",
|
||||
"user_id": "Používateľské ID",
|
||||
"user_liked": "Používateľovi {user} sa páči {type, select, photo {táto fotka} video {toto video} asset {táto položka} other {toto}}",
|
||||
"user_purchase_settings": "Nákup",
|
||||
"user_purchase_settings_description": "Správa vášho nákupu",
|
||||
"user_role_set": "Nastav {user} ako {role}",
|
||||
"user_usage_detail": "",
|
||||
"user_usage_detail": "Podrobnosti o využívaní používateľmi",
|
||||
"user_usage_stats": "Štatistiky využitia účtu",
|
||||
"user_usage_stats_description": "Zobraziť štatistiky využitia účtu",
|
||||
"username": "Používateľské meno",
|
||||
|
@ -1156,24 +1319,32 @@
|
|||
"variables": "Premenné",
|
||||
"version": "Verzia",
|
||||
"version_announcement_closing": "Tvoj kamarát, Alex",
|
||||
"version_announcement_message": "Ahoj! Nová verzia Immich je dostupná. Prosím prečítajte si <link>poznámky k vydaniu</link>, aby ste sa uistili, že inštalácia bude aktuálna bez problémov, najmä ak používate WatchTower alebo akýkoľvek spôsob automatickej aktualizácie Immich servera.",
|
||||
"version_history": "História verzií",
|
||||
"version_history_item": "Inštalovaná {version} dňa {date}",
|
||||
"video": "Video",
|
||||
"video_hover_setting_description": "",
|
||||
"video_hover_setting": "Prehrávať video náhľad pri nabehnutí myšou",
|
||||
"video_hover_setting_description": "Prehrá video náhľad keď kurzor myši prejde cez položku. Aj keď je vypnuté, prehrávanie sa môže spustiť nabehnutí cez ikonu Prehrať.",
|
||||
"videos": "Videá",
|
||||
"videos_count": "{count, plural, one {# Video} few {# Videá} other {# Videí}}",
|
||||
"view": "Zobraziť",
|
||||
"view_album": "Zobraziť Album",
|
||||
"view_all": "Zobraziť všetky",
|
||||
"view_all_users": "Zobraziť všetkých používateľov",
|
||||
"view_in_timeline": "Zobraziť v časovej osi",
|
||||
"view_links": "Zobraziť odkazy",
|
||||
"view_name": "Zobraziť",
|
||||
"view_next_asset": "Zobraziť nasledujúci súbor",
|
||||
"view_previous_asset": "Zobraziť predchádzajúci súbor",
|
||||
"waiting": "",
|
||||
"view_stack": "Zobraziť zoskupenie",
|
||||
"visibility_changed": "Viditeľnosť zmenená pre {count, plural, one {# osobu} other {# ľudí}}",
|
||||
"waiting": "Čaká",
|
||||
"warning": "Varovanie",
|
||||
"week": "Týždeň",
|
||||
"welcome": "Vitajte",
|
||||
"welcome_to_immich": "Vitajte v Immich",
|
||||
"year": "Rok",
|
||||
"years_ago": "pred {years, plural, one {# rokom} other {# rokmi}}",
|
||||
"yes": "Áno",
|
||||
"you_dont_have_any_shared_links": "Nemáte žiadne zdielané linky",
|
||||
"zoom_image": "Priblížiť obrázok"
|
||||
|
|
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Časovno obdobje",
|
||||
"day": "Dan",
|
||||
"deduplicate_all": "Odstrani vse podvojene",
|
||||
"deduplication_criteria_1": "Velikost slike v bajtih",
|
||||
"deduplication_criteria_2": "Število podatkov EXIF",
|
||||
"deduplication_info": "Informacije o deduplikaciji",
|
||||
"deduplication_info_description": "Za samodejno vnaprejšnjo izbiro sredstev in množično odstranjevanje dvojnikov si ogledamo:",
|
||||
"default_locale": "Privzeti jezik",
|
||||
"default_locale_description": "Oblikujte datume in številke glede na lokalne nastavitve brskalnika",
|
||||
"delete": "Izbriši",
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
"add_a_location": "Додај Локацију",
|
||||
"add_a_name": "Додај име",
|
||||
"add_a_title": "Додај наслов",
|
||||
"add_exclusion_pattern": "Додајте образац изузимања",
|
||||
"add_exclusion_pattern": "Додај образац изузимања",
|
||||
"add_import_path": "Додај путању за преузимање",
|
||||
"add_location": "Додај локацију",
|
||||
"add_more_users": "Додај кориснике",
|
||||
|
@ -23,7 +23,7 @@
|
|||
"add_to": "Додај у...",
|
||||
"add_to_album": "Додај у албум",
|
||||
"add_to_shared_album": "Додај у дељен албум",
|
||||
"add_url": "Додајте URL",
|
||||
"add_url": "Додај URL",
|
||||
"added_to_archive": "Додато у архиву",
|
||||
"added_to_favorites": "Додато у фаворите",
|
||||
"added_to_favorites_count": "Додато {count, number} у фаворите",
|
||||
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Распон датума",
|
||||
"day": "Дан",
|
||||
"deduplicate_all": "Де-дуплицирај све",
|
||||
"deduplication_criteria_1": "Величина слике у бајтовима",
|
||||
"deduplication_criteria_2": "Број EXIF података",
|
||||
"deduplication_info": "Информације о дедупликацији",
|
||||
"deduplication_info_description": "Да бисмо аутоматски унапред одабрали датотеке и уклонили дупликате групно, гледамо:",
|
||||
"default_locale": "Подразумевана локација (locale)",
|
||||
"default_locale_description": "Форматирајте датуме и бројеве на основу локализације вашег претраживача",
|
||||
"delete": "Обриши",
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
"add_a_location": "Dodaj Lokaciju",
|
||||
"add_a_name": "Dodaj ime",
|
||||
"add_a_title": "Dodaj naslov",
|
||||
"add_exclusion_pattern": "Dodajte obrazac izuzimanja",
|
||||
"add_exclusion_pattern": "Dodaj obrazac izuzimanja",
|
||||
"add_import_path": "Dodaj putanju za preuzimanje",
|
||||
"add_location": "Dodaj lokaciju",
|
||||
"add_more_users": "Dodaj korisnike",
|
||||
|
@ -23,7 +23,7 @@
|
|||
"add_to": "Dodaj u...",
|
||||
"add_to_album": "Dodaj u album",
|
||||
"add_to_shared_album": "Dodaj u deljen album",
|
||||
"add_url": "Dodajte URL",
|
||||
"add_url": "Dodaj URL",
|
||||
"added_to_archive": "Dodato u arhivu",
|
||||
"added_to_favorites": "Dodato u favorite",
|
||||
"added_to_favorites_count": "Dodato {count, number} u favorite",
|
||||
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Raspon datuma",
|
||||
"day": "Dan",
|
||||
"deduplicate_all": "De-dupliciraj sve",
|
||||
"deduplication_criteria_1": "Veličina slike u bajtovima",
|
||||
"deduplication_criteria_2": "Broj EXIF podataka",
|
||||
"deduplication_info": "Informacije o deduplikaciji",
|
||||
"deduplication_info_description": "Da bismo automatski unapred odabrali datoteke i uklonili duplikate grupno, gledamo:",
|
||||
"default_locale": "Podrazumevana lokacija (locale)",
|
||||
"default_locale_description": "Formatirajte datume i brojeve na osnovu lokalizacije vašeg pretraživača",
|
||||
"delete": "Obriši",
|
||||
|
|
17
i18n/sv.json
17
i18n/sv.json
|
@ -523,8 +523,11 @@
|
|||
"date_range": "Datumintervall",
|
||||
"day": "Dag",
|
||||
"deduplicate_all": "Deduplicera alla",
|
||||
"deduplication_criteria_1": "Bildstorlek i bytes",
|
||||
"deduplication_criteria_2": "Räkning av EXIF-data",
|
||||
"deduplication_info": "Dedupliceringsinformation",
|
||||
"default_locale": "Standardplats",
|
||||
"default_locale_description": "Formatera datum och siffror baserat på din webbläsares lokalitet",
|
||||
"default_locale_description": "Formatera datum och siffror baserat på din webbläsares språkversion",
|
||||
"delete": "Radera",
|
||||
"delete_album": "Ta bort album",
|
||||
"delete_api_key_prompt": "Är du säker på att du vill ta bort denna API-nyckel?",
|
||||
|
@ -906,13 +909,16 @@
|
|||
"no_results_description": "Pröva en synonym eller ett annat mer allmänt sökord",
|
||||
"no_shared_albums_message": "Skapa ett album för att dela bilder och videor med andra personer",
|
||||
"not_in_any_album": "Inte i något album",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Obs: Om du vill använda lagringsetiketten på tidigare uppladdade tillgångar kör du",
|
||||
"note_unlimited_quota": "Notera: Ange 0 för obegränsad mängd",
|
||||
"notes": "Notera",
|
||||
"notification_toggle_setting_description": "Aktivera e-postaviseringar",
|
||||
"notifications": "Notifikationer",
|
||||
"notifications_setting_description": "Hantera aviseringar",
|
||||
"oauth": "OAuth",
|
||||
"official_immich_resources": "Officiella Immich-resurser",
|
||||
"offline": "Frånkopplad",
|
||||
"offline_paths": "Offlinevägar",
|
||||
"offline_paths_description": "Dessa resultat kan bero på att filer som ej ingår i ett externt bibliotek har tagits bort manuellt.",
|
||||
"ok": "OK",
|
||||
"oldest_first": "Äldst först",
|
||||
|
@ -937,11 +943,12 @@
|
|||
"owner": "Ägare",
|
||||
"partner": "Partner",
|
||||
"partner_can_access": "{partner} har åtkomst",
|
||||
"partner_can_access_assets": "Alla dina foton och videoklipp förutom de i Arkiverade och Raderade",
|
||||
"partner_can_access_location": "Platsen där dina foton togs",
|
||||
"partner_sharing": "Partnerdelning",
|
||||
"partners": "Partners",
|
||||
"password": "Lösenord",
|
||||
"password_does_not_match": "",
|
||||
"password_does_not_match": "Lösenorden stämmer inte överens",
|
||||
"password_required": "Lösenord krävs",
|
||||
"password_reset_success": "Lösenord återställt",
|
||||
"past_durations": {
|
||||
|
@ -956,14 +963,14 @@
|
|||
"paused": "Pausad",
|
||||
"pending": "Väntande",
|
||||
"people": "Personer",
|
||||
"people_edits_count": "Redigerad {count, plural, one {# person} other {# people}}",
|
||||
"people_feature_description": "Visar foton och videor grupperade per personer",
|
||||
"people_edits_count": "Redigerad {count, plural, one {# person} other {# personer}}",
|
||||
"people_feature_description": "Visar foton och videor grupperade efter personer",
|
||||
"people_sidebar_description": "Visa en länk till Personer i sidopanelen",
|
||||
"permanent_deletion_warning": "Varning om permanent radering",
|
||||
"permanent_deletion_warning_setting_description": "Visa en varning när tillgångar raderas permanent",
|
||||
"permanently_delete": "Radera permanent",
|
||||
"permanently_delete_assets_count": "Radera {count, plural, one {asset} other {assets}} permanent",
|
||||
"permanently_deleted_asset": "",
|
||||
"permanently_deleted_asset": "Permanent raderad tillgång",
|
||||
"person": "Person",
|
||||
"photos": "Foton",
|
||||
"photos_and_videos": "Foton & videor",
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
"actions": "செயல்கள்",
|
||||
"active": "செயல்பாட்டில்",
|
||||
"activity": "செயல்பாடுகள்",
|
||||
"activity_changed": "செயல்பாடு {இயக்கப்பட்டது, தேர்ந்தெடு, சரி {இயக்கப்பட்டது} மற்றது {முடக்கப்பட்டது}}",
|
||||
"activity_changed": "செயல்பாடு {இயக்கப்பட்டது, தேர்ந்தெடு, சரி {enabled} மற்றது {disabled}}",
|
||||
"add": "சேர்",
|
||||
"add_a_description": "விவரம் சேர்",
|
||||
"add_a_location": "இடத்தை சேர்க்கவும்",
|
||||
|
|
11
i18n/tr.json
11
i18n/tr.json
|
@ -289,6 +289,8 @@
|
|||
"transcoding_constant_rate_factor": "Sabit oran faktörü (-SOF)",
|
||||
"transcoding_constant_rate_factor_description": "Video kalite seviyesi. Tipik değerler H.264 için 23, HEVC için 28, VP9 için 31 ve AV1 için 35'tir. Daha düşük değerler daha iyi kalite sağlar, ancak daha büyük dosyalar üretir.",
|
||||
"transcoding_disabled_description": "Videoları dönüştürmeyin, bazı istemcilerde oynatma bozulabilir",
|
||||
"transcoding_encoding_options": "Kodlama Seçenekleri",
|
||||
"transcoding_encoding_options_description": "Kodlanmış videolar için kodekleri, çözünürlüğü, kaliteyi ve diğer seçenekleri ayarlayın",
|
||||
"transcoding_hardware_acceleration": "Donanım Hızlandırma",
|
||||
"transcoding_hardware_acceleration_description": "Deneysel; daha hızlı, fakat aynı bitrate ayarlarında daha düşük kaliteye sahip",
|
||||
"transcoding_hardware_decoding": "Donanım çözücü",
|
||||
|
@ -301,6 +303,8 @@
|
|||
"transcoding_max_keyframe_interval": "Maksimum ana kare aralığı",
|
||||
"transcoding_max_keyframe_interval_description": "Ana kareler arasındaki maksimum kare mesafesini ayarlar. Düşük değerler sıkıştırma verimliliğini kötüleştirir, ancak arama sürelerini iyileştirir ve hızlı hareket içeren sahnelerde kaliteyi artırabilir. 0 bu değeri otomatik olarak ayarlar.",
|
||||
"transcoding_optimal_description": "Hedef çözünürlükten yüksek veya kabul edilen formatta olmayan videolar",
|
||||
"transcoding_policy": "Kod Dönüştürme Politikası",
|
||||
"transcoding_policy_description": "Bir videonun ne zaman kod dönüştürüleceğini ayarlama",
|
||||
"transcoding_preferred_hardware_device": "Tercih edilen donanım cihazı",
|
||||
"transcoding_preferred_hardware_device_description": "Sadece VAAPI ve QSV için uygulanır. Donanım kod çevrimi için DRI Node ayarlar.",
|
||||
"transcoding_preset_preset": "Ön ayar (-ön)",
|
||||
|
@ -309,7 +313,7 @@
|
|||
"transcoding_reference_frames_description": "Belirli bir kareyi sıkıştırırken referans alınacak kare sayısı. Daha yüksek değerler sıkıştırma verimliliğini artırır, ancak kodlamayı yavaşlatır. 0 bu değeri otomatik olarak ayarlar.",
|
||||
"transcoding_required_description": "Yalnızca kabul edilen formatta olmayan videolar",
|
||||
"transcoding_settings": "Video Dönüştürme Ayarları",
|
||||
"transcoding_settings_description": "Video dosyalarının çözünürlük ve kodlama bilgilerini yönetir",
|
||||
"transcoding_settings_description": "Hangi videoların dönüştürüleceğini ve nasıl işleneceğini yönetin",
|
||||
"transcoding_target_resolution": "Hedef çözünürlük",
|
||||
"transcoding_target_resolution_description": "Daha yüksek çözünürlükler daha fazla detayı koruyabilir fakat işlemesi daha uzun sürer, dosya boyutu daha yüksek olur ve uygulamanın akıcılığını etkileyebilir.",
|
||||
"transcoding_temporal_aq": "Zamansal AQ",
|
||||
|
@ -519,6 +523,10 @@
|
|||
"date_range": "Tarih aralığı",
|
||||
"day": "Gün",
|
||||
"deduplicate_all": "Tüm kopyaları kaldır",
|
||||
"deduplication_criteria_1": "Resim boyutu (bayt olarak)",
|
||||
"deduplication_criteria_2": "EXIF veri sayısı",
|
||||
"deduplication_info": "Tekilleştirme Bilgileri",
|
||||
"deduplication_info_description": "Varlıkları otomatik olarak önceden seçmek ve yinelenenleri toplu olarak kaldırmak için şunlara bakıyoruz:",
|
||||
"default_locale": "Varsayılan Yerel Ayar",
|
||||
"default_locale_description": "Tarihleri ve sayıları tarayıcınızın yerel ayarına göre biçimlendirin",
|
||||
"delete": "Sil",
|
||||
|
@ -755,6 +763,7 @@
|
|||
"get_help": "Yardım Al",
|
||||
"getting_started": "Başlarken",
|
||||
"go_back": "Geri git",
|
||||
"go_to_folder": "Klasöre git",
|
||||
"go_to_search": "Aramaya git",
|
||||
"group_albums_by": "Albümleri gruplandır...",
|
||||
"group_no": "Gruplama yok",
|
||||
|
|
|
@ -438,7 +438,7 @@
|
|||
"blurred_background": "Розмитий фон",
|
||||
"bugs_and_feature_requests": "Помилки та Запити",
|
||||
"build": "Збірка",
|
||||
"build_image": "Створити зображення",
|
||||
"build_image": "Версія збірки",
|
||||
"bulk_delete_duplicates_confirmation": "Ви впевнені, що хочете масово видалити {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}}? Це дія залишить найбільший ресурс у кожній групі і остаточно видалить всі інші дублікати. Цю дію неможливо скасувати!",
|
||||
"bulk_keep_duplicates_confirmation": "Ви впевнені, що хочете залишити {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}}? Це дозволить вирішити всі групи дублікатів без видалення чого-небудь.",
|
||||
"bulk_trash_duplicates_confirmation": "Ви впевнені, що хочете викинути в кошик {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}} масово? Це залишить найбільший ресурс у кожній групі і викине в кошик всі інші дублікати.",
|
||||
|
@ -523,6 +523,10 @@
|
|||
"date_range": "Проміжок часу",
|
||||
"day": "День",
|
||||
"deduplicate_all": "Видалити всі дублікати",
|
||||
"deduplication_criteria_1": "Розмір зображення в байтах",
|
||||
"deduplication_criteria_2": "Кількість даних EXIF",
|
||||
"deduplication_info": "Інформація про дедуплікацію",
|
||||
"deduplication_info_description": "Для автоматичного попереднього вибору файлів і масового видалення дублікатів ми враховуємо:",
|
||||
"default_locale": "Дата і час за замовчуванням",
|
||||
"default_locale_description": "Форматувати дати та числа з урахуванням мови вашого браузера",
|
||||
"delete": "Видалити",
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
"add_to_album": "加入到相簿",
|
||||
"add_to_shared_album": "加到共享相簿",
|
||||
"add_url": "新增URL",
|
||||
"added_to_archive": "封存",
|
||||
"added_to_archive": "已新增至封存",
|
||||
"added_to_favorites": "加入收藏",
|
||||
"added_to_favorites_count": "將 {count, number} 個項目加入收藏",
|
||||
"admin": {
|
||||
|
@ -289,6 +289,8 @@
|
|||
"transcoding_constant_rate_factor": "恆定速率因子(-crf)",
|
||||
"transcoding_constant_rate_factor_description": "視頻質量級別。典型值為 H.264 的 23、HEVC 的 28、VP9 的 31 和 AV1 的 35。數值越低,質量越高,但會產生較大的文件。",
|
||||
"transcoding_disabled_description": "不轉碼影片,可能會讓某些客戶端無法正常播放",
|
||||
"transcoding_encoding_options": "編碼選項",
|
||||
"transcoding_encoding_options_description": "設定編碼影片的編解碼器、解析度、品質和其他選項",
|
||||
"transcoding_hardware_acceleration": "硬體加速",
|
||||
"transcoding_hardware_acceleration_description": "實驗性功能;速度更快,但在相同比特率下質量較低",
|
||||
"transcoding_hardware_decoding": "硬體解碼",
|
||||
|
@ -301,6 +303,8 @@
|
|||
"transcoding_max_keyframe_interval": "最大關鍵幀間隔",
|
||||
"transcoding_max_keyframe_interval_description": "設置關鍵幀之間的最大幀距。較低的值會降低壓縮效率,但可以改善尋找時間,並可能改善快速運動場景中的質量。0 會自動設置此值。",
|
||||
"transcoding_optimal_description": "高於目標解析度或格式不被支援的影片",
|
||||
"transcoding_policy": "轉碼策略",
|
||||
"transcoding_policy_description": "設定影片進行轉碼的條件",
|
||||
"transcoding_preferred_hardware_device": "首選硬件設備",
|
||||
"transcoding_preferred_hardware_device_description": "僅適用於 VAAPI 和 QSV。設置用於硬件轉碼的 DRI 節點。",
|
||||
"transcoding_preset_preset": "預設值(-preset)",
|
||||
|
@ -519,6 +523,10 @@
|
|||
"date_range": "日期範圍",
|
||||
"day": "日",
|
||||
"deduplicate_all": "刪除所有重複項目",
|
||||
"deduplication_criteria_1": "圖像大小(以位元組為單位)",
|
||||
"deduplication_criteria_2": "EXIF 資料數量",
|
||||
"deduplication_info": "重複資料刪除資訊",
|
||||
"deduplication_info_description": "為了自動預選資產並大量刪除重複項,我們查看:",
|
||||
"default_locale": "預設區域",
|
||||
"default_locale_description": "依瀏覽器區域設定日期和數字格式",
|
||||
"delete": "刪除",
|
||||
|
@ -755,6 +763,7 @@
|
|||
"get_help": "線上求助",
|
||||
"getting_started": "開始使用",
|
||||
"go_back": "返回",
|
||||
"go_to_folder": "轉至資料夾",
|
||||
"go_to_search": "前往搜尋",
|
||||
"group_albums_by": "分類群組的方式...",
|
||||
"group_no": "無分組",
|
||||
|
@ -1141,6 +1150,7 @@
|
|||
"server_version": "目前版本",
|
||||
"set": "設定",
|
||||
"set_as_album_cover": "設爲相簿封面",
|
||||
"set_as_featured_photo": "設為特色照片",
|
||||
"set_as_profile_picture": "設為個人資料圖片",
|
||||
"set_date_of_birth": "設定出生日期",
|
||||
"set_profile_picture": "設置個人資料圖片",
|
||||
|
@ -1191,7 +1201,7 @@
|
|||
"skip_to_tags": "跳轉到標籤",
|
||||
"slideshow": "幻燈片",
|
||||
"slideshow_settings": "幻燈片設定",
|
||||
"sort_albums_by": "排序相簿",
|
||||
"sort_albums_by": "相簿排序依據...",
|
||||
"sort_created": "建立日期",
|
||||
"sort_items": "項目數量",
|
||||
"sort_modified": "日期已修改",
|
||||
|
|
|
@ -523,6 +523,10 @@
|
|||
"date_range": "日期范围",
|
||||
"day": "日",
|
||||
"deduplicate_all": "删除所有重复项",
|
||||
"deduplication_criteria_1": "图像大小(字节)",
|
||||
"deduplication_criteria_2": "EXIF 数据计数",
|
||||
"deduplication_info": "重复数据删除汇总",
|
||||
"deduplication_info_description": "要自动预选项目并批量删除重复项,我们会考虑:",
|
||||
"default_locale": "默认地区",
|
||||
"default_locale_description": "根据您的浏览器地区设置日期和数字显示格式",
|
||||
"delete": "删除",
|
||||
|
|
|
@ -53,7 +53,7 @@ show_friendly_message() {
|
|||
ip_address=$(hostname -I | awk '{print $1}')
|
||||
cat <<EOF
|
||||
Successfully deployed Immich!
|
||||
You can access the website at http://$ip_address:2283 and the server URL for the mobile app is http://$ip_address:2283/api
|
||||
You can access the website or the mobile app at http://$ip_address:2283
|
||||
---------------------------------------------------
|
||||
If you want to configure custom information of the server, including the database, Redis information, or the backup (or upload) location, etc.
|
||||
|
||||
|
|
|
@ -97,8 +97,8 @@ download:
|
|||
- file: mobile/assets/i18n/id-ID.json
|
||||
locale_code: id-ID
|
||||
- file: mobile/assets/i18n/gl.json
|
||||
locale_code: gl-ES
|
||||
locale_code: gl
|
||||
- file: mobile/assets/i18n/ga.json
|
||||
locale_code: ga-IE
|
||||
locale_code: ga
|
||||
- file: mobile/assets/i18n/tr-TR.json
|
||||
locale_code: tr-TR
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
ARG DEVICE=cpu
|
||||
|
||||
FROM python:3.11-bookworm@sha256:2c80c66d876952e04fa74113864903198b7cfb36b839acb7a8fef82e94ed067c AS builder-cpu
|
||||
FROM python:3.11-bookworm@sha256:adb581d8ed80edd03efd4dcad66db115b9ce8de8522b01720b9f3e6146f0884c AS builder-cpu
|
||||
|
||||
FROM builder-cpu AS builder-openvino
|
||||
|
||||
|
@ -34,7 +34,7 @@ RUN python3 -m venv /opt/venv
|
|||
COPY poetry.lock pyproject.toml ./
|
||||
RUN poetry install --sync --no-interaction --no-ansi --no-root --with ${DEVICE} --without dev
|
||||
|
||||
FROM python:3.11-slim-bookworm@sha256:370c586a6ffc8c619e6d652f81c094b34b14b8f2fb9251f092de23f16e299b78 AS prod-cpu
|
||||
FROM python:3.11-slim-bookworm@sha256:6ed5bff4d7d377e2a27d9285553b8c21cfccc4f00881de1b24c9bc8d90016e82 AS prod-cpu
|
||||
|
||||
FROM prod-cpu AS prod-openvino
|
||||
|
||||
|
|
|
@ -14,9 +14,29 @@ from uvicorn import Server
|
|||
from uvicorn.workers import UvicornWorker
|
||||
|
||||
|
||||
class ClipSettings(BaseModel):
|
||||
textual: str | None = None
|
||||
visual: str | None = None
|
||||
|
||||
|
||||
class FacialRecognitionSettings(BaseModel):
|
||||
recognition: str | None = None
|
||||
detection: str | None = None
|
||||
|
||||
|
||||
class PreloadModelData(BaseModel):
|
||||
clip: str | None = None
|
||||
facial_recognition: str | None = None
|
||||
clip_fallback: str | None = os.getenv("MACHINE_LEARNING_PRELOAD__CLIP", None)
|
||||
facial_recognition_fallback: str | None = os.getenv("MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION", None)
|
||||
if clip_fallback is not None:
|
||||
os.environ["MACHINE_LEARNING_PRELOAD__CLIP__TEXTUAL"] = clip_fallback
|
||||
os.environ["MACHINE_LEARNING_PRELOAD__CLIP__VISUAL"] = clip_fallback
|
||||
del os.environ["MACHINE_LEARNING_PRELOAD__CLIP"]
|
||||
if facial_recognition_fallback is not None:
|
||||
os.environ["MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION"] = facial_recognition_fallback
|
||||
os.environ["MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION"] = facial_recognition_fallback
|
||||
del os.environ["MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION"]
|
||||
clip: ClipSettings = ClipSettings()
|
||||
facial_recognition: FacialRecognitionSettings = FacialRecognitionSettings()
|
||||
|
||||
|
||||
class MaxBatchSize(BaseModel):
|
||||
|
|
|
@ -75,20 +75,47 @@ async def lifespan(_: FastAPI) -> AsyncGenerator[None, None]:
|
|||
|
||||
|
||||
async def preload_models(preload: PreloadModelData) -> None:
|
||||
log.info(f"Preloading models: {preload}")
|
||||
if preload.clip is not None:
|
||||
model = await model_cache.get(preload.clip, ModelType.TEXTUAL, ModelTask.SEARCH)
|
||||
await load(model)
|
||||
log.info(f"Preloading models: clip:{preload.clip} facial_recognition:{preload.facial_recognition}")
|
||||
|
||||
model = await model_cache.get(preload.clip, ModelType.VISUAL, ModelTask.SEARCH)
|
||||
await load(model)
|
||||
async def load_models(model_string: str, model_type: ModelType, model_task: ModelTask) -> None:
|
||||
for model_name in model_string.split(","):
|
||||
model_name = model_name.strip()
|
||||
model = await model_cache.get(model_name, model_type, model_task)
|
||||
await load(model)
|
||||
|
||||
if preload.facial_recognition is not None:
|
||||
model = await model_cache.get(preload.facial_recognition, ModelType.DETECTION, ModelTask.FACIAL_RECOGNITION)
|
||||
await load(model)
|
||||
if preload.clip.textual is not None:
|
||||
await load_models(preload.clip.textual, ModelType.TEXTUAL, ModelTask.SEARCH)
|
||||
|
||||
model = await model_cache.get(preload.facial_recognition, ModelType.RECOGNITION, ModelTask.FACIAL_RECOGNITION)
|
||||
await load(model)
|
||||
if preload.clip.visual is not None:
|
||||
await load_models(preload.clip.visual, ModelType.VISUAL, ModelTask.SEARCH)
|
||||
|
||||
if preload.facial_recognition.detection is not None:
|
||||
await load_models(
|
||||
preload.facial_recognition.detection,
|
||||
ModelType.DETECTION,
|
||||
ModelTask.FACIAL_RECOGNITION,
|
||||
)
|
||||
|
||||
if preload.facial_recognition.recognition is not None:
|
||||
await load_models(
|
||||
preload.facial_recognition.recognition,
|
||||
ModelType.RECOGNITION,
|
||||
ModelTask.FACIAL_RECOGNITION,
|
||||
)
|
||||
|
||||
if preload.clip_fallback is not None:
|
||||
log.warning(
|
||||
"Deprecated env variable: 'MACHINE_LEARNING_PRELOAD__CLIP'. "
|
||||
"Use 'MACHINE_LEARNING_PRELOAD__CLIP__TEXTUAL' and "
|
||||
"'MACHINE_LEARNING_PRELOAD__CLIP__VISUAL' instead."
|
||||
)
|
||||
|
||||
if preload.facial_recognition_fallback is not None:
|
||||
log.warning(
|
||||
"Deprecated env variable: 'MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION'. "
|
||||
"Use 'MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION' and "
|
||||
"'MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION' instead."
|
||||
)
|
||||
|
||||
|
||||
def update_state() -> Iterator[None]:
|
||||
|
|
|
@ -10,7 +10,7 @@ from tokenizers import Encoding, Tokenizer
|
|||
|
||||
from app.config import log
|
||||
from app.models.base import InferenceModel
|
||||
from app.models.transforms import clean_text
|
||||
from app.models.transforms import clean_text, serialize_np_array
|
||||
from app.schemas import ModelSession, ModelTask, ModelType
|
||||
|
||||
|
||||
|
@ -18,9 +18,9 @@ class BaseCLIPTextualEncoder(InferenceModel):
|
|||
depends = []
|
||||
identity = (ModelType.TEXTUAL, ModelTask.SEARCH)
|
||||
|
||||
def _predict(self, inputs: str, **kwargs: Any) -> NDArray[np.float32]:
|
||||
def _predict(self, inputs: str, **kwargs: Any) -> str:
|
||||
res: NDArray[np.float32] = self.session.run(None, self.tokenize(inputs))[0][0]
|
||||
return res
|
||||
return serialize_np_array(res)
|
||||
|
||||
def _load(self) -> ModelSession:
|
||||
session = super()._load()
|
||||
|
|
|
@ -10,7 +10,15 @@ from PIL import Image
|
|||
|
||||
from app.config import log
|
||||
from app.models.base import InferenceModel
|
||||
from app.models.transforms import crop_pil, decode_pil, get_pil_resampling, normalize, resize_pil, to_numpy
|
||||
from app.models.transforms import (
|
||||
crop_pil,
|
||||
decode_pil,
|
||||
get_pil_resampling,
|
||||
normalize,
|
||||
resize_pil,
|
||||
serialize_np_array,
|
||||
to_numpy,
|
||||
)
|
||||
from app.schemas import ModelSession, ModelTask, ModelType
|
||||
|
||||
|
||||
|
@ -18,10 +26,10 @@ class BaseCLIPVisualEncoder(InferenceModel):
|
|||
depends = []
|
||||
identity = (ModelType.VISUAL, ModelTask.SEARCH)
|
||||
|
||||
def _predict(self, inputs: Image.Image | bytes, **kwargs: Any) -> NDArray[np.float32]:
|
||||
def _predict(self, inputs: Image.Image | bytes, **kwargs: Any) -> str:
|
||||
image = decode_pil(inputs)
|
||||
res: NDArray[np.float32] = self.session.run(None, self.transform(image))[0][0]
|
||||
return res
|
||||
return serialize_np_array(res)
|
||||
|
||||
@abstractmethod
|
||||
def transform(self, image: Image.Image) -> dict[str, NDArray[np.float32]]:
|
||||
|
|
|
@ -12,7 +12,7 @@ from PIL import Image
|
|||
|
||||
from app.config import log, settings
|
||||
from app.models.base import InferenceModel
|
||||
from app.models.transforms import decode_cv2
|
||||
from app.models.transforms import decode_cv2, serialize_np_array
|
||||
from app.schemas import FaceDetectionOutput, FacialRecognitionOutput, ModelFormat, ModelSession, ModelTask, ModelType
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@ class FaceRecognizer(InferenceModel):
|
|||
return [
|
||||
{
|
||||
"boundingBox": {"x1": x1, "y1": y1, "x2": x2, "y2": y2},
|
||||
"embedding": embedding,
|
||||
"embedding": serialize_np_array(embedding),
|
||||
"score": score,
|
||||
}
|
||||
for (x1, y1, x2, y2), embedding, score in zip(faces["boxes"], embeddings, faces["scores"])
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue