Compare commits
247 Commits
v1.124.2
...
feat/graph
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1f5393d02c | ||
|
|
bf1f8da884 | ||
|
|
2271984dbd | ||
|
|
b40963ec52 | ||
|
|
735f8d661e | ||
|
|
8794c84e9d | ||
|
|
cef19eed97 | ||
|
|
90c607c1a6 | ||
|
|
52b650093d | ||
|
|
fe4c49c8e3 | ||
|
|
4cad23aaa3 | ||
|
|
feba590de7 | ||
|
|
64f0333306 | ||
|
|
758bcd1e97 | ||
|
|
fb21950ad8 | ||
|
|
758449e9f0 | ||
|
|
d7d4d22fe0 | ||
|
|
03948a69e2 | ||
|
|
61b8eb85b5 | ||
|
|
c5360e78c5 | ||
|
|
23014c263b | ||
|
|
2e5007adef | ||
|
|
c4531fc4d3 | ||
|
|
252d3f5f2c | ||
|
|
ef6c2bf547 | ||
|
|
6aad9fae8e | ||
|
|
45f7401513 | ||
|
|
3c7edba388 | ||
|
|
76a70703a5 | ||
|
|
f78066d4b9 | ||
|
|
48d421e28c | ||
|
|
1492b55c07 | ||
|
|
1d6a4e9318 | ||
|
|
fe42e7410b | ||
|
|
58bf58b393 | ||
|
|
99de52479e | ||
|
|
97574d7296 | ||
|
|
5015210f37 | ||
|
|
0bb1219b5f | ||
|
|
b730aa60ed | ||
|
|
7ec3610753 | ||
|
|
69e88ef985 | ||
|
|
9358b4dc7e | ||
|
|
06f077bac2 | ||
|
|
47f6181d42 | ||
|
|
aac029d92b | ||
|
|
ef245ea2d2 | ||
|
|
e8d05e78ad | ||
|
|
52c9fbea5f | ||
|
|
882163f545 | ||
|
|
96a6cc20b7 | ||
|
|
4efacfbb91 | ||
|
|
a808a840c8 | ||
|
|
3f18acdb1a | ||
|
|
2b41b5efe1 | ||
|
|
9ac95d6845 | ||
|
|
221e197633 | ||
|
|
1b141d5ca9 | ||
|
|
098bab7c9b | ||
|
|
4fccc09fc1 | ||
|
|
c016b65ef2 | ||
|
|
844eed8707 | ||
|
|
6e31ac4c75 | ||
|
|
b287c0cbe8 | ||
|
|
1fcc75fb44 | ||
|
|
ca79e25a6e | ||
|
|
4fd8c1b3c1 | ||
|
|
f3ba994186 | ||
|
|
b4a4abbf51 | ||
|
|
a0aea021a1 | ||
|
|
9033a99587 | ||
|
|
cc0cbd705e | ||
|
|
da580d4685 | ||
|
|
cb6d94c7a7 | ||
|
|
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 | ||
|
|
1489d69f81 |
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
|
ARG BASEIMAGE=mcr.microsoft.com/devcontainers/typescript-node:22@sha256:9791f4aa527774bc370c6bd2f6705ce5a686f1e6f204badd8dfaacce28c631ae
|
||||||
FROM ${BASEIMAGE}
|
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",
|
"name": "Immich",
|
||||||
"build": {
|
"service": "immich-devcontainer",
|
||||||
"dockerfile": "Dockerfile",
|
"dockerComposeFile": [
|
||||||
"args": {
|
"docker-compose.yml",
|
||||||
"BASEIMAGE": "mcr.microsoft.com/devcontainers/typescript-node:22"
|
"../docker/docker-compose.dev.yml"
|
||||||
}
|
],
|
||||||
},
|
"customizations": {
|
||||||
"customizations": {
|
"vscode": {
|
||||||
"vscode": {
|
"extensions": [
|
||||||
"extensions": [
|
"Dart-Code.dart-code",
|
||||||
"svelte.svelte-vscode"
|
"Dart-Code.flutter",
|
||||||
]
|
"dbaeumer.vscode-eslint",
|
||||||
}
|
"dcmdev.dcm-vscode-extension",
|
||||||
},
|
"esbenp.prettier-vscode",
|
||||||
"forwardPorts": [],
|
"svelte.svelte-vscode"
|
||||||
"postCreateCommand": "make install-all",
|
]
|
||||||
"remoteUser": "node"
|
}
|
||||||
|
},
|
||||||
|
"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
|
||||||
1
.github/PULL_REQUEST_TEMPLATE/config.yml
vendored
1
.github/PULL_REQUEST_TEMPLATE/config.yml
vendored
@@ -1,2 +1 @@
|
|||||||
blank_issues_enabled: false
|
|
||||||
blank_pull_request_template_enabled: false
|
blank_pull_request_template_enabled: false
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
## Description
|
|
||||||
<!--- Describe your changes in detail -->
|
|
||||||
<!--- Why is this change required? What problem does it solve? -->
|
|
||||||
<!--- If it fixes an open issue, please link to the issue here. -->
|
|
||||||
|
|
||||||
Fixes # (issue)
|
|
||||||
|
|
||||||
|
|
||||||
## How Has This Been Tested?
|
|
||||||
|
|
||||||
<!-- Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration -->
|
|
||||||
|
|
||||||
- [ ] Test A
|
|
||||||
- [ ] Test B
|
|
||||||
|
|
||||||
## Screenshots (if appropriate):
|
|
||||||
|
|
||||||
|
|
||||||
## Checklist:
|
|
||||||
|
|
||||||
- [ ] I have performed a self-review of my own code
|
|
||||||
- [ ] I have made corresponding changes to the documentation if applicable
|
|
||||||
36
.github/pull_request_template.md
vendored
Normal file
36
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
## Description
|
||||||
|
|
||||||
|
<!--- Describe your changes in detail -->
|
||||||
|
<!--- Why is this change required? What problem does it solve? -->
|
||||||
|
<!--- If it fixes an open issue, please link to the issue here. -->
|
||||||
|
|
||||||
|
Fixes # (issue)
|
||||||
|
|
||||||
|
## How Has This Been Tested?
|
||||||
|
|
||||||
|
<!-- Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration -->
|
||||||
|
|
||||||
|
- [ ] Test A
|
||||||
|
- [ ] Test B
|
||||||
|
|
||||||
|
<details><summary><h2>Screenshots (if appropriate)</h2></summary>
|
||||||
|
|
||||||
|
<!-- Images go below this line. -->
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<!-- API endpoint changes (if relevant)
|
||||||
|
## API Changes
|
||||||
|
The `/api/something` endpoint is now `/api/something-else`
|
||||||
|
-->
|
||||||
|
|
||||||
|
## Checklist:
|
||||||
|
|
||||||
|
- [ ] I have performed a self-review of my own code
|
||||||
|
- [ ] I have made corresponding changes to the documentation if applicable
|
||||||
|
- [ ] I have no unrelated changes in the PR.
|
||||||
|
- [ ] I have confirmed that any new dependencies are strictly necessary.
|
||||||
|
- [ ] I have written tests for new code (if applicable)
|
||||||
|
- [ ] I have followed naming conventions/patterns in the surrounding code
|
||||||
|
- [ ] All code in `src/services` uses repositories implementations for database calls, filesystem operations, etc.
|
||||||
|
- [ ] All code in `src/repositories/` is pretty basic/simple and does not have any immich specific logic (that belongs in `src/services`)
|
||||||
4
.github/workflows/cli.yml
vendored
4
.github/workflows/cli.yml
vendored
@@ -56,7 +56,7 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Set up QEMU
|
- 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
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3.8.0
|
uses: docker/setup-buildx-action@v3.8.0
|
||||||
@@ -88,7 +88,7 @@ jobs:
|
|||||||
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
|
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
|
||||||
|
|
||||||
- name: Build and push image
|
- name: Build and push image
|
||||||
uses: docker/build-push-action@v6.10.0
|
uses: docker/build-push-action@v6.13.0
|
||||||
with:
|
with:
|
||||||
file: cli/Dockerfile
|
file: cli/Dockerfile
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
|
|||||||
8
.github/workflows/docker.yml
vendored
8
.github/workflows/docker.yml
vendored
@@ -122,7 +122,7 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Set up QEMU
|
- 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
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3.8.0
|
uses: docker/setup-buildx-action@v3.8.0
|
||||||
@@ -174,7 +174,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Build and push image
|
- name: Build and push image
|
||||||
uses: docker/build-push-action@v6.10.0
|
uses: docker/build-push-action@v6.13.0
|
||||||
with:
|
with:
|
||||||
context: ${{ env.context }}
|
context: ${{ env.context }}
|
||||||
file: ${{ env.file }}
|
file: ${{ env.file }}
|
||||||
@@ -213,7 +213,7 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Set up QEMU
|
- 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
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3.8.0
|
uses: docker/setup-buildx-action@v3.8.0
|
||||||
@@ -265,7 +265,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Build and push image
|
- name: Build and push image
|
||||||
uses: docker/build-push-action@v6.10.0
|
uses: docker/build-push-action@v6.13.0
|
||||||
with:
|
with:
|
||||||
context: ${{ env.context }}
|
context: ${{ env.context }}
|
||||||
file: ${{ env.file }}
|
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
|
needs: build_mobile
|
||||||
|
|
||||||
steps:
|
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
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.ORG_RELEASE_TOKEN }}
|
token: ${{ steps.generate-token.outputs.token }}
|
||||||
|
|
||||||
- name: Download APK
|
- name: Download APK
|
||||||
uses: actions/download-artifact@v4
|
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
|
WORKDIR /usr/src/open-api/typescript-sdk
|
||||||
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./
|
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./
|
||||||
|
|||||||
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",
|
"name": "@immich/cli",
|
||||||
"version": "2.2.40",
|
"version": "2.2.50",
|
||||||
"description": "Command Line Interface (CLI) for Immich",
|
"description": "Command Line Interface (CLI) for Immich",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": "./dist/index.js",
|
"exports": "./dist/index.js",
|
||||||
@@ -20,15 +20,15 @@
|
|||||||
"@types/cli-progress": "^3.11.0",
|
"@types/cli-progress": "^3.11.0",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/mock-fs": "^4.13.1",
|
"@types/mock-fs": "^4.13.1",
|
||||||
"@types/node": "^22.10.2",
|
"@types/node": "^22.13.1",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
||||||
"@typescript-eslint/parser": "^8.15.0",
|
"@typescript-eslint/parser": "^8.15.0",
|
||||||
"@vitest/coverage-v8": "^2.0.5",
|
"@vitest/coverage-v8": "^3.0.0",
|
||||||
"byte-size": "^9.0.0",
|
"byte-size": "^9.0.0",
|
||||||
"cli-progress": "^3.12.0",
|
"cli-progress": "^3.12.0",
|
||||||
"commander": "^12.0.0",
|
"commander": "^12.0.0",
|
||||||
"eslint": "^9.14.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-prettier": "^5.1.3",
|
||||||
"eslint-plugin-unicorn": "^56.0.1",
|
"eslint-plugin-unicorn": "^56.0.1",
|
||||||
"globals": "^15.9.0",
|
"globals": "^15.9.0",
|
||||||
@@ -36,9 +36,9 @@
|
|||||||
"prettier": "^3.2.5",
|
"prettier": "^3.2.5",
|
||||||
"prettier-plugin-organize-imports": "^4.0.0",
|
"prettier-plugin-organize-imports": "^4.0.0",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
"vite": "^5.0.12",
|
"vite": "^6.0.0",
|
||||||
"vite-tsconfig-paths": "^5.0.0",
|
"vite-tsconfig-paths": "^5.0.0",
|
||||||
"vitest": "^2.0.5",
|
"vitest": "^3.0.0",
|
||||||
"vitest-fetch-mock": "^0.4.0",
|
"vitest-fetch-mock": "^0.4.0",
|
||||||
"yaml": "^2.3.1"
|
"yaml": "^2.3.1"
|
||||||
},
|
},
|
||||||
@@ -67,6 +67,6 @@
|
|||||||
"lodash-es": "^4.17.21"
|
"lodash-es": "^4.17.21"
|
||||||
},
|
},
|
||||||
"volta": {
|
"volta": {
|
||||||
"node": "22.12.0"
|
"node": "22.13.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ interface Test {
|
|||||||
test: string;
|
test: string;
|
||||||
options: Omit<CrawlOptions, 'extensions'>;
|
options: Omit<CrawlOptions, 'extensions'>;
|
||||||
files: Record<string, boolean>;
|
files: Record<string, boolean>;
|
||||||
|
skipOnWin32?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const cwd = process.cwd();
|
const cwd = process.cwd();
|
||||||
@@ -48,6 +49,18 @@ const tests: Test[] = [
|
|||||||
'/photos/image.jpg': true,
|
'/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',
|
test: 'should crawl a single file',
|
||||||
options: {
|
options: {
|
||||||
@@ -270,8 +283,12 @@ describe('crawl', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('crawl', () => {
|
describe('crawl', () => {
|
||||||
for (const { test, options, files } of tests) {
|
for (const { test: name, options, files, skipOnWin32 } of tests) {
|
||||||
it(test, async () => {
|
if (process.platform === 'win32' && skipOnWin32) {
|
||||||
|
test.skip(name);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
it(name, async () => {
|
||||||
// The file contents is the same as the path.
|
// The file contents is the same as the path.
|
||||||
mockfs(Object.fromEntries(Object.keys(files).map((file) => [file, file])));
|
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) => {
|
const searchPatterns = patterns.map((pattern) => {
|
||||||
let escapedPattern = pattern;
|
let escapedPattern = pattern.replaceAll("'", "[']").replaceAll('"', '["]').replaceAll('`', '[`]');
|
||||||
if (recursive) {
|
if (recursive) {
|
||||||
escapedPattern = escapedPattern + '/**';
|
escapedPattern = escapedPattern + '/**';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,37 +2,37 @@
|
|||||||
# Manual edits may be lost in future updates.
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
||||||
version = "4.48.0"
|
version = "4.52.0"
|
||||||
constraints = "4.48.0"
|
constraints = "4.52.0"
|
||||||
hashes = [
|
hashes = [
|
||||||
"h1:0IKUOR32xEI1suS5QCOjfxjQ2mRd058btXk8hVnaOJ4=",
|
"h1:2BEJyXJtYC4B4nda/WCYUmuJYDaYk88F8t1pwPzr0iQ=",
|
||||||
"h1:3YG6vu/bFPcYOeLdSUZhiAWiWKaFlOAR34z2o8cbE9k=",
|
"h1:4IASk5SESeWKQ7JU0+M7KApuF5mZyklvwMXPBabim3c=",
|
||||||
"h1:FvGy06/i9AMtVkSIUnCrXNv5xF6jqBqMH8oPVLyeeAg=",
|
"h1:5ImZxxALSnWfH/4EXw/wFirSmk5Tr0ACmcysy51AafE=",
|
||||||
"h1:GXH7nIF0ocMqebbA41+fSGIYfM+VAM/PvTe7fJr8UrQ=",
|
"h1:6TJ3dxLSin4ZKBJLsZDn95H2ZYnGm8S7GGHvvXuuMQU=",
|
||||||
"h1:H0ll0ph4404vFE868W3qJ3zhOyy4jbXrOMtdkViEZsU=",
|
"h1:IzTUjg9kQ4N3qizP9CjYLeHwjsuGgtxwXvfUQWyOLcA=",
|
||||||
"h1:SX42e3k73IcFcrQlZ2e/Veqt2tvCMy6fwlo5yNUktCE=",
|
"h1:NTaOQfYINA0YTG/V1/9+SYtgX1it63+cBugj4WK4FWc=",
|
||||||
"h1:Uu/gjBc99GefdPdSrlBwU75DWU0ZcwGcrd3ZFyTeL0s=",
|
"h1:PXH48LuJn329sCfMXprdMDk51EZaWFyajVvS03qhQLs=",
|
||||||
"h1:VZw0uN41PWRmNlhg7Ze0Eh7cdoklX1oZbfNAXNYnU1I=",
|
"h1:Pi5M+GeoMSN2eJ6QnIeXjBf19O+rby/74CfB2ocpv20=",
|
||||||
"h1:cMdV7ql6PsFa4qtb0EoZSctvTaTqV7yplBSDwcLRCLc=",
|
"h1:ShXZ2ZjBvm3thfoPPzPT8+OhyismnydQVkUAfI8X12w=",
|
||||||
"h1:ePGvSurmlqOCkD761vkhRmz7bsK36/EnIvx2Xy8TdXo=",
|
"h1:WQ9hu0Wge2msBbODfottCSKgu8oKUrw4Opz+fDPVVHk=",
|
||||||
"h1:fOYufF+1bzw2N3aHLpkLB6E8VbZ4ysXDODYQOlwhwd4=",
|
"h1:Z5yXML2DE0uH9UU+M0ut9JMQAORcwVZz1CxBHzeBmao=",
|
||||||
"h1:qe8RbnWq0T4xhqjn9QcbO6YW5YDx47P+eJ0NUMIfwCc=",
|
"h1:jqI2qKknpleS3JDSplyGYHMu0u9K/tor1ZOjFwDgEMk=",
|
||||||
"h1:tRD2av6PafHDP/b9jDQsG5/aX+lHeKxpbIEHYYLBVUc=",
|
"h1:kgfutDh14Q5nw4eg6qGFamFxIiY8Ae0FPKRBLDOzpcI=",
|
||||||
"h1:zyl6Gvx/CFpwYW8pFFDesfO8Lxv+a6CopyAsIMhp54s=",
|
"h1:zCAO7GZmfYhWb+i6TfqlqhMeDyPZWGio2IzEzAh3YTs=",
|
||||||
"zh:04c0a49c2b23140b2f21cfd0d52f9798d70d3bdae3831613e156aabe519bbc6c",
|
"zh:19be1a91c982b902c42aba47766860dfa5dc151eed1e95fd39ca642229381ef0",
|
||||||
"zh:185f21b4834ba63e8df1f84aa34639d8a7e126429a4007bb5f9ad82f2602a997",
|
"zh:1de451c4d1ecf7efbe67b6dace3426ba810711afdd644b0f1b870364c8ae91f8",
|
||||||
"zh:234724f52cb4c0c3f7313d3b2697caef26d921d134f26ae14801e7afac522f7b",
|
"zh:352b4a2120173298622e669258744554339d959ac3a95607b117a48ee4a83238",
|
||||||
"zh:38a56fcd1b3e40706af995611c977816543b53f1e55fe2720944aae2b6828fcb",
|
"zh:3c6f1346d9154afbd2d558fabb4b0150fc8d559aa961254144fe1bc17fe6032f",
|
||||||
"zh:419938f5430fc78eff933470aefbf94a460a478f867cf7761a3dea177b4eb153",
|
"zh:4c4c92d53fb535b1e0eff26f222bbd627b97d3b4c891ec9c321268676d06152f",
|
||||||
"zh:4b46d92bfde1deab7de7ba1a6bbf4ba7c711e4fd925341ddf09d4cc28dae03d8",
|
"zh:53276f68006c9ceb7cdb10a6ccf91a5c1eadd1407a28edb5741e84e88d7e29e8",
|
||||||
"zh:537acd4a31c752f1bae305ba7190f60b71ad1a459f22d464f3f914336c9e919f",
|
"zh:7925a97773948171a63d4f65bb81ee92fd6d07a447e36012977313293a5435c9",
|
||||||
"zh:5ff36b005aad07697dd0b30d4f0c35dbcdc30dc52b41722552060792fa87ce04",
|
"zh:7dfb0a4496cfe032437386d0a2cd9229a1956e9c30bd920923c141b0f0440060",
|
||||||
"zh:635c5ee419daea098060f794d9d7d999275301181e49562c4e4c08f043076937",
|
|
||||||
"zh:859277c330d61f91abe9e799389467ca11b77131bf34bedbef52f8da68b2bb49",
|
|
||||||
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
||||||
"zh:927dfdb8d9aef37ead03fceaa29e87ba076a3dd24e19b6cefdbb0efe9987ff8c",
|
"zh:8d4aa79f0a414bb4163d771063c70cd991c8fac6c766e685bac2ee12903c5bd6",
|
||||||
"zh:bbf2226f07f6b1e721877328e69ded4b64f9c196634d2e2429e3cfabbe41e532",
|
"zh:a67540c13565616a7e7e51ee9366e88b0dc60046e1d75c72680e150bd02725bb",
|
||||||
"zh:daeed873d6f38604232b46ee4a5830c85d195b967f8dbcafe2fcffa98daf9c5f",
|
"zh:a936383a4767f5393f38f622e92bf2d0c03fe04b69c284951f27345766c7b31b",
|
||||||
"zh:f8f2fc4646c1ba44085612fa7f4dbb7cbcead43b4e661f2b98ddfb4f68afc758",
|
"zh:d4887d73c466ff036eecf50ad6404ba38fd82ea4855296b1846d244b0f13c380",
|
||||||
|
"zh:e9093c8bd5b6cd99c81666e315197791781b8f93afa14fc2e0f732d1bb2a44b7",
|
||||||
|
"zh:efd3b3f1ec59a37f635aa1d4efcf178734c2fcf8ddb0d56ea690bec342da8672",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
cloudflare = {
|
cloudflare = {
|
||||||
source = "cloudflare/cloudflare"
|
source = "cloudflare/cloudflare"
|
||||||
version = "4.48.0"
|
version = "4.52.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,37 +2,37 @@
|
|||||||
# Manual edits may be lost in future updates.
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
||||||
version = "4.48.0"
|
version = "4.52.0"
|
||||||
constraints = "4.48.0"
|
constraints = "4.52.0"
|
||||||
hashes = [
|
hashes = [
|
||||||
"h1:0IKUOR32xEI1suS5QCOjfxjQ2mRd058btXk8hVnaOJ4=",
|
"h1:2BEJyXJtYC4B4nda/WCYUmuJYDaYk88F8t1pwPzr0iQ=",
|
||||||
"h1:3YG6vu/bFPcYOeLdSUZhiAWiWKaFlOAR34z2o8cbE9k=",
|
"h1:4IASk5SESeWKQ7JU0+M7KApuF5mZyklvwMXPBabim3c=",
|
||||||
"h1:FvGy06/i9AMtVkSIUnCrXNv5xF6jqBqMH8oPVLyeeAg=",
|
"h1:5ImZxxALSnWfH/4EXw/wFirSmk5Tr0ACmcysy51AafE=",
|
||||||
"h1:GXH7nIF0ocMqebbA41+fSGIYfM+VAM/PvTe7fJr8UrQ=",
|
"h1:6TJ3dxLSin4ZKBJLsZDn95H2ZYnGm8S7GGHvvXuuMQU=",
|
||||||
"h1:H0ll0ph4404vFE868W3qJ3zhOyy4jbXrOMtdkViEZsU=",
|
"h1:IzTUjg9kQ4N3qizP9CjYLeHwjsuGgtxwXvfUQWyOLcA=",
|
||||||
"h1:SX42e3k73IcFcrQlZ2e/Veqt2tvCMy6fwlo5yNUktCE=",
|
"h1:NTaOQfYINA0YTG/V1/9+SYtgX1it63+cBugj4WK4FWc=",
|
||||||
"h1:Uu/gjBc99GefdPdSrlBwU75DWU0ZcwGcrd3ZFyTeL0s=",
|
"h1:PXH48LuJn329sCfMXprdMDk51EZaWFyajVvS03qhQLs=",
|
||||||
"h1:VZw0uN41PWRmNlhg7Ze0Eh7cdoklX1oZbfNAXNYnU1I=",
|
"h1:Pi5M+GeoMSN2eJ6QnIeXjBf19O+rby/74CfB2ocpv20=",
|
||||||
"h1:cMdV7ql6PsFa4qtb0EoZSctvTaTqV7yplBSDwcLRCLc=",
|
"h1:ShXZ2ZjBvm3thfoPPzPT8+OhyismnydQVkUAfI8X12w=",
|
||||||
"h1:ePGvSurmlqOCkD761vkhRmz7bsK36/EnIvx2Xy8TdXo=",
|
"h1:WQ9hu0Wge2msBbODfottCSKgu8oKUrw4Opz+fDPVVHk=",
|
||||||
"h1:fOYufF+1bzw2N3aHLpkLB6E8VbZ4ysXDODYQOlwhwd4=",
|
"h1:Z5yXML2DE0uH9UU+M0ut9JMQAORcwVZz1CxBHzeBmao=",
|
||||||
"h1:qe8RbnWq0T4xhqjn9QcbO6YW5YDx47P+eJ0NUMIfwCc=",
|
"h1:jqI2qKknpleS3JDSplyGYHMu0u9K/tor1ZOjFwDgEMk=",
|
||||||
"h1:tRD2av6PafHDP/b9jDQsG5/aX+lHeKxpbIEHYYLBVUc=",
|
"h1:kgfutDh14Q5nw4eg6qGFamFxIiY8Ae0FPKRBLDOzpcI=",
|
||||||
"h1:zyl6Gvx/CFpwYW8pFFDesfO8Lxv+a6CopyAsIMhp54s=",
|
"h1:zCAO7GZmfYhWb+i6TfqlqhMeDyPZWGio2IzEzAh3YTs=",
|
||||||
"zh:04c0a49c2b23140b2f21cfd0d52f9798d70d3bdae3831613e156aabe519bbc6c",
|
"zh:19be1a91c982b902c42aba47766860dfa5dc151eed1e95fd39ca642229381ef0",
|
||||||
"zh:185f21b4834ba63e8df1f84aa34639d8a7e126429a4007bb5f9ad82f2602a997",
|
"zh:1de451c4d1ecf7efbe67b6dace3426ba810711afdd644b0f1b870364c8ae91f8",
|
||||||
"zh:234724f52cb4c0c3f7313d3b2697caef26d921d134f26ae14801e7afac522f7b",
|
"zh:352b4a2120173298622e669258744554339d959ac3a95607b117a48ee4a83238",
|
||||||
"zh:38a56fcd1b3e40706af995611c977816543b53f1e55fe2720944aae2b6828fcb",
|
"zh:3c6f1346d9154afbd2d558fabb4b0150fc8d559aa961254144fe1bc17fe6032f",
|
||||||
"zh:419938f5430fc78eff933470aefbf94a460a478f867cf7761a3dea177b4eb153",
|
"zh:4c4c92d53fb535b1e0eff26f222bbd627b97d3b4c891ec9c321268676d06152f",
|
||||||
"zh:4b46d92bfde1deab7de7ba1a6bbf4ba7c711e4fd925341ddf09d4cc28dae03d8",
|
"zh:53276f68006c9ceb7cdb10a6ccf91a5c1eadd1407a28edb5741e84e88d7e29e8",
|
||||||
"zh:537acd4a31c752f1bae305ba7190f60b71ad1a459f22d464f3f914336c9e919f",
|
"zh:7925a97773948171a63d4f65bb81ee92fd6d07a447e36012977313293a5435c9",
|
||||||
"zh:5ff36b005aad07697dd0b30d4f0c35dbcdc30dc52b41722552060792fa87ce04",
|
"zh:7dfb0a4496cfe032437386d0a2cd9229a1956e9c30bd920923c141b0f0440060",
|
||||||
"zh:635c5ee419daea098060f794d9d7d999275301181e49562c4e4c08f043076937",
|
|
||||||
"zh:859277c330d61f91abe9e799389467ca11b77131bf34bedbef52f8da68b2bb49",
|
|
||||||
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
||||||
"zh:927dfdb8d9aef37ead03fceaa29e87ba076a3dd24e19b6cefdbb0efe9987ff8c",
|
"zh:8d4aa79f0a414bb4163d771063c70cd991c8fac6c766e685bac2ee12903c5bd6",
|
||||||
"zh:bbf2226f07f6b1e721877328e69ded4b64f9c196634d2e2429e3cfabbe41e532",
|
"zh:a67540c13565616a7e7e51ee9366e88b0dc60046e1d75c72680e150bd02725bb",
|
||||||
"zh:daeed873d6f38604232b46ee4a5830c85d195b967f8dbcafe2fcffa98daf9c5f",
|
"zh:a936383a4767f5393f38f622e92bf2d0c03fe04b69c284951f27345766c7b31b",
|
||||||
"zh:f8f2fc4646c1ba44085612fa7f4dbb7cbcead43b4e661f2b98ddfb4f68afc758",
|
"zh:d4887d73c466ff036eecf50ad6404ba38fd82ea4855296b1846d244b0f13c380",
|
||||||
|
"zh:e9093c8bd5b6cd99c81666e315197791781b8f93afa14fc2e0f732d1bb2a44b7",
|
||||||
|
"zh:efd3b3f1ec59a37f635aa1d4efcf178734c2fcf8ddb0d56ea690bec342da8672",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
cloudflare = {
|
cloudflare = {
|
||||||
source = "cloudflare/cloudflare"
|
source = "cloudflare/cloudflare"
|
||||||
version = "4.48.0"
|
version = "4.52.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ services:
|
|||||||
- ../web:/usr/src/app
|
- ../web:/usr/src/app
|
||||||
- ../i18n:/usr/src/i18n
|
- ../i18n:/usr/src/i18n
|
||||||
- ../open-api/:/usr/src/open-api/
|
- ../open-api/:/usr/src/open-api/
|
||||||
|
# - ../../ui:/usr/ui
|
||||||
- /usr/src/app/node_modules
|
- /usr/src/app/node_modules
|
||||||
ulimits:
|
ulimits:
|
||||||
nofile:
|
nofile:
|
||||||
@@ -106,7 +107,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
|
image: redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
|
image: redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
restart: always
|
restart: always
|
||||||
@@ -91,7 +91,7 @@ services:
|
|||||||
container_name: immich_prometheus
|
container_name: immich_prometheus
|
||||||
ports:
|
ports:
|
||||||
- 9090:9090
|
- 9090:9090
|
||||||
image: prom/prometheus@sha256:565ee86501224ebbb98fc10b332fa54440b100469924003359edf49cbce374bd
|
image: prom/prometheus@sha256:6559acbd5d770b15bb3c954629ce190ac3cbbdb2b7f1c30f0385c4e05104e218
|
||||||
volumes:
|
volumes:
|
||||||
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
||||||
- prometheus-data:/prometheus
|
- prometheus-data:/prometheus
|
||||||
@@ -103,7 +103,7 @@ services:
|
|||||||
command: ['./run.sh', '-disable-reporting']
|
command: ['./run.sh', '-disable-reporting']
|
||||||
ports:
|
ports:
|
||||||
- 3000:3000
|
- 3000:3000
|
||||||
image: grafana/grafana:11.4.0-ubuntu@sha256:afccec22ba0e4815cca1d2bf3836e414322390dc78d77f1851976ffa8d61051c
|
image: grafana/grafana:11.5.1-ubuntu@sha256:9a4ab78cec1a2ec7d1ca5dfd5aacec6412706a1bc9e971fc7184e2f6696a63f5
|
||||||
volumes:
|
volumes:
|
||||||
- grafana-data:/var/lib/grafana
|
- grafana-data:/var/lib/grafana
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: docker.io/redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
|
image: docker.io/redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
restart: always
|
restart: always
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ services:
|
|||||||
vaapi-wsl: # use this for VAAPI if you're running Immich in WSL2
|
vaapi-wsl: # use this for VAAPI if you're running Immich in WSL2
|
||||||
devices:
|
devices:
|
||||||
- /dev/dri:/dev/dri
|
- /dev/dri:/dev/dri
|
||||||
|
- /dev/dxg:/dev/dxg
|
||||||
volumes:
|
volumes:
|
||||||
- /usr/lib/wsl:/usr/lib/wsl
|
- /usr/lib/wsl:/usr/lib/wsl
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -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.
|
- 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.
|
- 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).
|
These network features are experimental. They often do not work with video playback, asset upload or download, and other features.
|
||||||
We recommend using a real SSL certificate from a free provider, for example [Let's Encrypt](https://letsencrypt.org/).
|
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.
|
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
|
## 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.
|
- 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.
|
- 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.
|
- 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?
|
### 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>
|
<summary>Check if checksums are enabled</summary>
|
||||||
|
|
||||||
```bash
|
```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
|
data_checksums
|
||||||
----------------
|
----------------
|
||||||
on
|
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>
|
<summary>Check for database corruption</summary>
|
||||||
|
|
||||||
```bash
|
```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
|
datname | checksum_failures | checksum_last_failure
|
||||||
-----------+-------------------+-----------------------
|
-----------+-------------------+-----------------------
|
||||||
postgres | 0 |
|
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
|
# Check the database user if you deviated from the default
|
||||||
gunzip < "/path/to/backup/dump.sql.gz" \
|
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" \
|
| 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
|
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
|
docker compose down -v # CAUTION! Deletes all Immich data to start from scratch
|
||||||
## Uncomment the next line and replace DB_DATA_LOCATION with your Postgres path to permanently reset the Postgres database
|
## Uncomment the next line and replace DB_DATA_LOCATION with your Postgres path to permanently reset the Postgres database
|
||||||
# Remove-Item -Recurse -Force DB_DATA_LOCATION # CAUTION! Deletes all Immich data to start from scratch
|
# Remove-Item -Recurse -Force DB_DATA_LOCATION # CAUTION! Deletes all Immich data to start from scratch
|
||||||
## You should mount the backup (as a volume, example: - 'C:\path\to\backup\dump.sql':/dump.sql) into the immich_postgres container using the docker-compose.yml
|
## You should mount the backup (as a volume, example: `- 'C:\path\to\backup\dump.sql:/dump.sql'`) into the immich_postgres container using the docker-compose.yml
|
||||||
docker compose pull # Update to latest version of Immich (if desired)
|
docker compose pull # Update to latest version of Immich (if desired)
|
||||||
docker compose create # Create Docker containers for Immich apps without running them
|
docker compose create # Create Docker containers for Immich apps without running them
|
||||||
docker start immich_postgres # Start Postgres server
|
docker start immich_postgres # Start Postgres server
|
||||||
sleep 10 # Wait for Postgres server to start up
|
sleep 10 # Wait for Postgres server to start up
|
||||||
docker exec -it immich_postgres bash # Enter the Docker shell and run the following command
|
docker exec -it immich_postgres bash # Enter the Docker shell and run the following command
|
||||||
# Check the database user if you deviated from the default
|
# Check the database user if you deviated from the default. If your backup ends in `.gz`, replace `cat` with `gunzip`
|
||||||
cat "/dump.sql" \
|
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" \
|
| 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
|
| psql --dbname=postgres --username=<DB_USERNAME> # Restore Backup
|
||||||
exit # Exit the Docker shell
|
exit # Exit the Docker shell
|
||||||
docker compose up -d # Start remainder of Immich apps
|
docker compose up -d # Start remainder of Immich apps
|
||||||
```
|
```
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
@@ -95,12 +95,14 @@ Some deployment methods make it difficult to start the database without also sta
|
|||||||
|
|
||||||
## Filesystem
|
## 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`
|
1. `UPLOAD_LOCATION/library`
|
||||||
2. `UPLOAD_LOCATION/upload`
|
2. `UPLOAD_LOCATION/upload`
|
||||||
3. `UPLOAD_LOCATION/profile`
|
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
|
:::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
|
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
|
||||||
:::
|
:::
|
||||||
|
|||||||
@@ -50,19 +50,18 @@ The Immich CLI is an [npm](https://www.npmjs.com/) package that lets users contr
|
|||||||
|
|
||||||
The Immich backend is divided into several services, which are run as individual docker containers.
|
The Immich backend is divided into several services, which are run as individual docker containers.
|
||||||
|
|
||||||
1. `immich-server` - Handle and respond to REST API requests
|
1. `immich-server` - Handle and respond to REST API requests, execute background jobs (thumbnail generation, metadata extraction, transcoding, etc.)
|
||||||
1. `immich-microservices` - Execute background jobs (thumbnail generation, metadata extraction, transcoding, etc.)
|
|
||||||
1. `immich-machine-learning` - Execute machine learning models
|
1. `immich-machine-learning` - Execute machine learning models
|
||||||
1. `postgres` - Persistent data storage
|
1. `postgres` - Persistent data storage
|
||||||
1. `redis`- Queue management for `immich-microservices`
|
1. `redis`- Queue management for background jobs
|
||||||
|
|
||||||
### Immich Server
|
### Immich Server
|
||||||
|
|
||||||
The Immich Server is a [TypeScript](https://www.typescriptlang.org/) project written for [Node.js](https://nodejs.org/). It uses the [Nest.js](https://nestjs.com) framework, with [TypeORM](https://typeorm.io/) for database management. The server codebase also loosely follows the [Hexagonal Architecture](<https://en.wikipedia.org/wiki/Hexagonal_architecture_(software)>). Specifically, we aim to separate technology specific implementations (`infra/`) from core business logic (`domain/`).
|
The Immich Server is a [TypeScript](https://www.typescriptlang.org/) project written for [Node.js](https://nodejs.org/). It uses the [Nest.js](https://nestjs.com) framework, [Express](https://expressjs.com/) server, and the query builder [Kysely](https://kysely.dev/). The server codebase also loosely follows the [Hexagonal Architecture](<https://en.wikipedia.org/wiki/Hexagonal_architecture_(software)>). Specifically, we aim to separate technology specific implementations (`src/repositories`) from core business logic (`src/services`).
|
||||||
|
|
||||||
#### REST Endpoints
|
### API Endpoints
|
||||||
|
|
||||||
The server is a list of HTTP endpoints and associated handlers (controllers). Each controller usually implements the following CRUD operations:
|
An incoming HTTP request is mapped to a controller (`src/controllers`). Controllers are collections of HTTP endpoints. Each controller usually implements the following CRUD operations for its respective resource type:
|
||||||
|
|
||||||
- `POST` `/<type>` - **Create**
|
- `POST` `/<type>` - **Create**
|
||||||
- `GET` `/<type>` - **Read** (all)
|
- `GET` `/<type>` - **Read** (all)
|
||||||
@@ -70,13 +69,13 @@ The server is a list of HTTP endpoints and associated handlers (controllers). Ea
|
|||||||
- `PUT` `/<type>/:id` - **Updated** (by id)
|
- `PUT` `/<type>/:id` - **Updated** (by id)
|
||||||
- `DELETE` `/<type>/:id` - **Delete** (by id)
|
- `DELETE` `/<type>/:id` - **Delete** (by id)
|
||||||
|
|
||||||
#### DTOs
|
### Domain Transfer Objects (DTOs)
|
||||||
|
|
||||||
The server uses [Domain Transfer Objects](https://en.wikipedia.org/wiki/Data_transfer_object) as public interfaces for the inputs (query, params, and body) and outputs (response) for each endpoint. DTOs translate to [OpenAPI](./open-api.md) schemas and control the generated code used by each client.
|
The server uses [Domain Transfer Objects](https://en.wikipedia.org/wiki/Data_transfer_object) as public interfaces for the inputs (query, params, and body) and outputs (response) for each endpoint. DTOs translate to [OpenAPI](./open-api.md) schemas and control the generated code used by each client.
|
||||||
|
|
||||||
### Microservices
|
### Background Jobs
|
||||||
|
|
||||||
The Immich Microservices image uses the same `Dockerfile` as the Immich Server, but with a different entrypoint. The Immich Microservices service mainly handles executing jobs, which include the following:
|
Immich uses a [worker](https://github.com/immich-app/immich/blob/main/server/src/utils/misc.ts#L266) to run background jobs. These jobs include:
|
||||||
|
|
||||||
- Thumbnail Generation
|
- Thumbnail Generation
|
||||||
- Metadata Extraction
|
- Metadata Extraction
|
||||||
|
|||||||
@@ -63,9 +63,20 @@ 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_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
|
### Mobile app
|
||||||
|
|
||||||
The mobile app `(/mobile)` will required Flutter toolchain 3.13.x to be installed on your system.
|
The mobile app `(/mobile)` will required Flutter toolchain 3.13.x and FVM to be installed on your system.
|
||||||
|
|
||||||
Please refer to the [Flutter's official documentation](https://flutter.dev/docs/get-started/install) for more information on setting up the toolchain on your machine.
|
Please refer to the [Flutter's official documentation](https://flutter.dev/docs/get-started/install) for more information on setting up the toolchain on your machine.
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ If your photos are on a network drive, automatic file watching likely won't work
|
|||||||
|
|
||||||
#### Troubleshooting
|
#### Troubleshooting
|
||||||
|
|
||||||
If you encounter an `ENOSPC` error, you need to increase your file watcher limit. In sysctl, this key is called `fs.inotify.max_user_watched` and has a default value of 8192. Increase this number to a suitable value greater than the number of files you will be watching. Note that Immich has to watch all files in your import paths including any ignored files.
|
If you encounter an `ENOSPC` error, you need to increase your file watcher limit. In sysctl, this key is called `fs.inotify.max_user_watches` and has a default value of 8192. Increase this number to a suitable value greater than the number of files you will be watching. Note that Immich has to watch all files in your import paths including any ignored files.
|
||||||
|
|
||||||
```
|
```
|
||||||
ERROR [LibraryService] Library watcher for library c69faf55-f96d-4aa0-b83b-2d80cbc27d98 encountered error: Error: ENOSPC: System limit for number of file watchers reached, watch '/media/photo.jpg'
|
ERROR [LibraryService] Library watcher for library c69faf55-f96d-4aa0-b83b-2d80cbc27d98 encountered error: Error: ENOSPC: System limit for number of file watchers reached, watch '/media/photo.jpg'
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ You do not need to redo any machine learning jobs after enabling hardware accele
|
|||||||
|
|
||||||
- ARM NN (Mali)
|
- ARM NN (Mali)
|
||||||
- CUDA (NVIDIA GPUs with [compute capability](https://developer.nvidia.com/cuda-gpus) 5.2 or higher)
|
- CUDA (NVIDIA GPUs with [compute capability](https://developer.nvidia.com/cuda-gpus) 5.2 or higher)
|
||||||
- OpenVINO (Intel discrete GPUs such as Iris Xe and Arc)
|
- OpenVINO (Intel GPUs such as Iris Xe and Arc)
|
||||||
|
|
||||||
## Limitations
|
## Limitations
|
||||||
|
|
||||||
@@ -43,8 +43,9 @@ You do not need to redo any machine learning jobs after enabling hardware accele
|
|||||||
|
|
||||||
#### OpenVINO
|
#### OpenVINO
|
||||||
|
|
||||||
- The server must have a discrete GPU, i.e. Iris Xe or Arc. Expect issues when attempting to use integrated graphics.
|
- Integrated GPUs are more likely to experience issues than discrete GPUs, especially for older processors or servers with low RAM.
|
||||||
- Ensure the server's kernel version is new enough to use the device for hardware accceleration.
|
- Ensure the server's kernel version is new enough to use the device for hardware accceleration.
|
||||||
|
- Expect higher RAM usage when using OpenVINO compared to CPU processing.
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
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.
|
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
|
:::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:
|
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
|
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.
|
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
|
:::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.
|
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.
|
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
|
### Usage
|
||||||
|
|||||||
@@ -8,22 +8,23 @@ For the full list, refer to the [Immich source code](https://github.com/immich-a
|
|||||||
|
|
||||||
## Image formats
|
## Image formats
|
||||||
|
|
||||||
| Format | Extension(s) | Supported? | Notes |
|
| Format | Extension(s) | Supported? | Notes |
|
||||||
| :-------- | :---------------------------- | :----------------: | :-------------- |
|
| :---------- | :---------------------------- | :----------------: | :-------------- |
|
||||||
| `AVIF` | `.avif` | :white_check_mark: | |
|
| `AVIF` | `.avif` | :white_check_mark: | |
|
||||||
| `BMP` | `.bmp` | :white_check_mark: | |
|
| `BMP` | `.bmp` | :white_check_mark: | |
|
||||||
| `GIF` | `.gif` | :white_check_mark: | |
|
| `GIF` | `.gif` | :white_check_mark: | |
|
||||||
| `HEIC` | `.heic` | :white_check_mark: | |
|
| `HEIC` | `.heic` | :white_check_mark: | |
|
||||||
| `HEIF` | `.heif` | :white_check_mark: | |
|
| `HEIF` | `.heif` | :white_check_mark: | |
|
||||||
| `JPEG` | `.webp` `.jpg` `.jpe` `.insp` | :white_check_mark: | |
|
| `JPEG 2000` | `.jp2` | :white_check_mark: | |
|
||||||
| `JPEG XL` | `.jxl` | :white_check_mark: | |
|
| `JPEG` | `.webp` `.jpg` `.jpe` `.insp` | :white_check_mark: | |
|
||||||
| `PNG` | `.webp` | :white_check_mark: | |
|
| `JPEG XL` | `.jxl` | :white_check_mark: | |
|
||||||
| `PSD` | `.psd` | :white_check_mark: | Adobe Photoshop |
|
| `PNG` | `.webp` | :white_check_mark: | |
|
||||||
| `RAW` | `.raw` | :white_check_mark: | |
|
| `PSD` | `.psd` | :white_check_mark: | Adobe Photoshop |
|
||||||
| `RW2` | `.rw2` | :white_check_mark: | |
|
| `RAW` | `.raw` | :white_check_mark: | |
|
||||||
| `SVG` | `.svg` | :white_check_mark: | |
|
| `RW2` | `.rw2` | :white_check_mark: | |
|
||||||
| `TIFF` | `.tif` `.tiff` | :white_check_mark: | |
|
| `SVG` | `.svg` | :white_check_mark: | |
|
||||||
| `WEBP` | `.webp` | :white_check_mark: | |
|
| `TIFF` | `.tif` `.tiff` | :white_check_mark: | |
|
||||||
|
| `WEBP` | `.webp` | :white_check_mark: | |
|
||||||
|
|
||||||
## Video formats
|
## Video formats
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
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
|
:::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
|
## Assets
|
||||||
@@ -27,6 +27,10 @@ SELECT * FROM "assets" WHERE "originalPath" = 'upload/library/admin/2023/2023-09
|
|||||||
SELECT * FROM "assets" WHERE "originalPath" LIKE 'upload/library/admin/2023/%';
|
SELECT * FROM "assets" WHERE "originalPath" LIKE 'upload/library/admin/2023/%';
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sql title="Find by ID"
|
||||||
|
SELECT * FROM "assets" WHERE "id" = '9f94e60f-65b6-47b7-ae44-a4df7b57f0e9';
|
||||||
|
```
|
||||||
|
|
||||||
:::note
|
:::note
|
||||||
You can calculate the checksum for a particular file by using the command `sha1sum <filename>`.
|
You can calculate the checksum for a particular file by using the command `sha1sum <filename>`.
|
||||||
:::
|
:::
|
||||||
|
|||||||
@@ -148,24 +148,26 @@ Redis (Sentinel) URL example JSON before encoding:
|
|||||||
|
|
||||||
## Machine Learning
|
## Machine Learning
|
||||||
|
|
||||||
| Variable | Description | Default | Containers |
|
| 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` | 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_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_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_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_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_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_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_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_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__CLIP__TEXTUAL` | Comma-separated list of (textual) CLIP model(s) to preload and 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_PRELOAD__CLIP__VISUAL` | Comma-separated list of (visual) CLIP model(s) to preload and cache | | machine learning |
|
||||||
| `MACHINE_LEARNING_ANN` | Enable ARM-NN hardware acceleration if supported | `True` | 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_ANN_FP16_TURBO` | Execute operations in FP16 precision: increasing speed, reducing precision (applies only to ARM-NN) | `False` | 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_TUNING_LEVEL` | ARM-NN GPU tuning level (1: rapid, 2: normal, 3: exhaustive) | `2` | machine learning |
|
| `MACHINE_LEARNING_ANN` | Enable ARM-NN hardware acceleration if supported | `True` | machine learning |
|
||||||
| `MACHINE_LEARNING_DEVICE_IDS`<sup>\*4</sup> | Device IDs to use in multi-GPU environments | `0` | 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_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 |
|
| `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.
|
\*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).
|
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.
|
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.
|
The directory which is used to store the library files is `./immich-app` relative to the current directory.
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ className="border rounded-xl"
|
|||||||
:::info Permissions
|
:::info Permissions
|
||||||
The **pgData** dataset must be owned by the user `netdata` (UID 999) for postgres to start. The other datasets must be owned by the user `root` (UID 0) or a group that includes the user `root` (UID 0) for immich to have the necessary permissions.
|
The **pgData** dataset must be owned by the user `netdata` (UID 999) for postgres to start. The other datasets must be owned by the user `root` (UID 0) or a group that includes the user `root` (UID 0) for immich to have the necessary permissions.
|
||||||
|
|
||||||
If the **library** dataset uses ACL it must have [ACL mode](https://www.truenas.com/docs/core/coretutorials/storage/pools/permissions/#access-control-lists) set to `Passthrough` if you plan on using a [storage template](/docs/administration/storage-template.mdx) and the dataset is configured for network sharing (its ACL type is set to `SMB/NFSv4`). When the template is applied and files need to be moved from **upload** to **library**, immich performs `chmod` internally and needs to be allowed to execute the command. [More info.](https://github.com/immich-app/immich/pull/13017)
|
If the **library** dataset uses ACL it must have [ACL mode](https://www.truenas.com/docs/core/coretutorials/storage/pools/permissions/#access-control-lists) set to `Passthrough` if you plan on using a [storage template](/docs/administration/storage-template.mdx) and the dataset is configured for network sharing (its ACL type is set to `SMB/NFSv4`). When the template is applied and files need to be moved from **upload** to **library**, Immich performs `chmod` internally and needs to be allowed to execute the command. [More info.](https://github.com/immich-app/immich/pull/13017)
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Installing the Immich Application
|
## Installing the Immich Application
|
||||||
@@ -160,6 +160,10 @@ The image above has example values.
|
|||||||
|
|
||||||
### Additional Storage [(External Libraries)](/docs/features/libraries)
|
### Additional Storage [(External Libraries)](/docs/features/libraries)
|
||||||
|
|
||||||
|
:::danger Advanced Users Only
|
||||||
|
This feature should only be used by advanced users. If this is your first time installing Immich, then DO NOT mount an external library until you have a working setup. Also, your mount path MUST be something unique and should NOT be your library or upload location or a Linux directory like `/lib`. The picture below shows a valid example.
|
||||||
|
:::
|
||||||
|
|
||||||
<img
|
<img
|
||||||
src={require('./img/truenas10.webp').default}
|
src={require('./img/truenas10.webp').default}
|
||||||
width="40%"
|
width="40%"
|
||||||
@@ -168,7 +172,7 @@ className="border rounded-xl"
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
You may configure [External Libraries](/docs/features/libraries) by mounting them using **Additional Storage**.
|
You may configure [External Libraries](/docs/features/libraries) by mounting them using **Additional Storage**.
|
||||||
The **Mount Path** is the loaction you will need to copy and paste into the External Library settings within Immich.
|
The **Mount Path** is the location you will need to copy and paste into the External Library settings within Immich.
|
||||||
The **Host Path** is the location on the TrueNAS SCALE server where your external library is located.
|
The **Host Path** is the location on the TrueNAS SCALE server where your external library is located.
|
||||||
|
|
||||||
<!-- A section for Labels would go here but I don't know what they do. -->
|
<!-- A section for Labels would go here but I don't know what they do. -->
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ alt="Select Plugins > Compose.Manager > Add New Stack > Label it Immich"
|
|||||||
</ul>
|
</ul>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
5. Click "**Save Changes**", you will be promoted to edit stack UI labels, just leave this blank and click "**Ok**"
|
5. Click "**Save Changes**", you will be prompted to edit stack UI labels, just leave this blank and click "**Ok**"
|
||||||
6. Select the cog ⚙️ next to Immich, click "**Edit Stack**", then click "**Env File**"
|
6. Select the cog ⚙️ next to Immich, click "**Edit Stack**", then click "**Env File**"
|
||||||
7. Paste the entire contents of the [Immich example.env](https://github.com/immich-app/immich/releases/latest/download/example.env) file into the Unraid editor, then **before saving** edit the following:
|
7. Paste the entire contents of the [Immich example.env](https://github.com/immich-app/immich/releases/latest/download/example.env) file into the Unraid editor, then **before saving** edit the following:
|
||||||
|
|
||||||
@@ -111,7 +111,7 @@ alt="Go to Docker Tab and visit the address listed next to immich-web"
|
|||||||
|
|
||||||
<details >
|
<details >
|
||||||
<summary>Using the FolderView plugin for organizing your Docker containers? Click me! Otherwise you're complete!</summary>
|
<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
|
<img
|
||||||
src={require('./img/unraid07.webp').default}
|
src={require('./img/unraid07.webp').default}
|
||||||
width="80%"
|
width="80%"
|
||||||
|
|||||||
@@ -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' />
|
<img src={require('./img/sign-in-phone.webp').default} width='50%' title='Mobile App Sign In' />
|
||||||
|
|||||||
@@ -110,9 +110,9 @@ const config = {
|
|||||||
label: 'API',
|
label: 'API',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
to: '/blog',
|
href: 'https://immich.store',
|
||||||
position: 'right',
|
position: 'right',
|
||||||
label: 'Blog',
|
label: 'Merch',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
href: 'https://github.com/immich-app/immich',
|
href: 'https://github.com/immich-app/immich',
|
||||||
|
|||||||
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"
|
"write-heading-ids": "docusaurus write-heading-ids"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "~3.5.2",
|
"@docusaurus/core": "~3.7.0",
|
||||||
"@docusaurus/preset-classic": "~3.5.2",
|
"@docusaurus/preset-classic": "~3.7.0",
|
||||||
"@mdi/js": "^7.3.67",
|
"@mdi/js": "^7.3.67",
|
||||||
"@mdi/react": "^1.6.1",
|
"@mdi/react": "^1.6.1",
|
||||||
"@mdx-js/react": "^3.0.0",
|
"@mdx-js/react": "^3.0.0",
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
"url": "^0.11.0"
|
"url": "^0.11.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@docusaurus/module-type-aliases": "~3.5.2",
|
"@docusaurus/module-type-aliases": "~3.7.0",
|
||||||
"prettier": "^3.2.4",
|
"prettier": "^3.2.4",
|
||||||
"typescript": "^5.1.6"
|
"typescript": "^5.1.6"
|
||||||
},
|
},
|
||||||
@@ -55,6 +55,6 @@
|
|||||||
"node": ">=20"
|
"node": ">=20"
|
||||||
},
|
},
|
||||||
"volta": {
|
"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.',
|
description: 'Downloads a configurable number of random photos based on people or album ID.',
|
||||||
url: 'https://github.com/jon6fingrs/immich-dl',
|
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 {
|
function CommunityProject({ title, description, url }: CommunityProjectProps): JSX.Element {
|
||||||
|
|||||||
@@ -44,12 +44,12 @@ export default function VersionSwitcher(): JSX.Element {
|
|||||||
return (
|
return (
|
||||||
versions.length > 0 && (
|
versions.length > 0 && (
|
||||||
<DropdownNavbarItem
|
<DropdownNavbarItem
|
||||||
className="navbar__item"
|
className="version-switcher-34ab39"
|
||||||
label={label}
|
label={label}
|
||||||
mobile={windowSize === 'mobile'}
|
mobile={windowSize === 'mobile'}
|
||||||
items={versions.map(({ label, url }) => ({
|
items={versions.map(({ label, url }) => ({
|
||||||
label,
|
label,
|
||||||
to: url,
|
to: url + location.pathname + location.hash,
|
||||||
target: '_self',
|
target: '_self',
|
||||||
}))}
|
}))}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -75,6 +75,11 @@ div[class^='announcementBar_'] {
|
|||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* workaround for version switcher PR 15894 */
|
||||||
|
div[class*='navbar__items'] > li:has(a[class*='version-switcher-34ab39']) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
code {
|
code {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,13 @@ function HomepageHeader() {
|
|||||||
>
|
>
|
||||||
Demo
|
Demo
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
|
<Link
|
||||||
|
className="flex place-items-center place-content-center py-3 px-8 border bg-immich-primary/10 dark:bg-gray-300 rounded-xl hover:no-underline text-immich-primary dark:text-immich-dark-bg font-bold uppercase"
|
||||||
|
to="https://immich.store"
|
||||||
|
>
|
||||||
|
Buy Merch
|
||||||
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="my-12 flex gap-1 font-medium place-items-center place-content-center text-immich-primary dark:text-immich-dark-primary">
|
<div className="my-12 flex gap-1 font-medium place-items-center place-content-center text-immich-primary dark:text-immich-dark-primary">
|
||||||
@@ -73,9 +80,9 @@ function HomepageHeader() {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<div>
|
<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">
|
<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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col sm:flex-row place-items-center place-content-center mt-4 gap-1">
|
<div className="flex flex-col sm:flex-row place-items-center place-content-center mt-4 gap-1">
|
||||||
|
|||||||
40
docs/static/archived-versions.json
vendored
40
docs/static/archived-versions.json
vendored
@@ -1,4 +1,44 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"label": "v1.126.1",
|
||||||
|
"url": "https://v1.126.1.archive.immich.app"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "v1.126.0",
|
||||||
|
"url": "https://v1.126.0.archive.immich.app"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "v1.125.7",
|
||||||
|
"url": "https://v1.125.7.archive.immich.app"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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",
|
"label": "v1.124.2",
|
||||||
"url": "https://v1.124.2.archive.immich.app"
|
"url": "https://v1.124.2.archive.immich.app"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
22.12.0
|
22.13.1
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ services:
|
|||||||
- 2285:2285
|
- 2285:2285
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
|
image: redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
|
||||||
|
|
||||||
database:
|
database:
|
||||||
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
|
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",
|
"name": "immich-e2e",
|
||||||
"version": "1.124.2",
|
"version": "1.126.1",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
@@ -25,16 +25,16 @@
|
|||||||
"@immich/sdk": "file:../open-api/typescript-sdk",
|
"@immich/sdk": "file:../open-api/typescript-sdk",
|
||||||
"@playwright/test": "^1.44.1",
|
"@playwright/test": "^1.44.1",
|
||||||
"@types/luxon": "^3.4.2",
|
"@types/luxon": "^3.4.2",
|
||||||
"@types/node": "^22.10.2",
|
"@types/node": "^22.13.1",
|
||||||
"@types/oidc-provider": "^8.5.1",
|
"@types/oidc-provider": "^8.5.1",
|
||||||
"@types/pg": "^8.11.0",
|
"@types/pg": "^8.11.0",
|
||||||
"@types/pngjs": "^6.0.4",
|
"@types/pngjs": "^6.0.4",
|
||||||
"@types/supertest": "^6.0.2",
|
"@types/supertest": "^6.0.2",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
||||||
"@typescript-eslint/parser": "^8.15.0",
|
"@typescript-eslint/parser": "^8.15.0",
|
||||||
"@vitest/coverage-v8": "^2.0.5",
|
"@vitest/coverage-v8": "^3.0.0",
|
||||||
"eslint": "^9.14.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-prettier": "^5.1.3",
|
||||||
"eslint-plugin-unicorn": "^56.0.1",
|
"eslint-plugin-unicorn": "^56.0.1",
|
||||||
"exiftool-vendored": "^28.3.1",
|
"exiftool-vendored": "^28.3.1",
|
||||||
@@ -50,9 +50,9 @@
|
|||||||
"supertest": "^7.0.0",
|
"supertest": "^7.0.0",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
"utimes": "^5.2.1",
|
"utimes": "^5.2.1",
|
||||||
"vitest": "^2.0.5"
|
"vitest": "^3.0.0"
|
||||||
},
|
},
|
||||||
"volta": {
|
"volta": {
|
||||||
"node": "22.12.0"
|
"node": "22.13.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,79 +22,92 @@ const user1NotShared = 'user1NotShared';
|
|||||||
const user2SharedUser = 'user2SharedUser';
|
const user2SharedUser = 'user2SharedUser';
|
||||||
const user2SharedLink = 'user2SharedLink';
|
const user2SharedLink = 'user2SharedLink';
|
||||||
const user2NotShared = 'user2NotShared';
|
const user2NotShared = 'user2NotShared';
|
||||||
|
const user4DeletedAsset = 'user4DeletedAsset';
|
||||||
|
const user4Empty = 'user4Empty';
|
||||||
|
|
||||||
describe('/albums', () => {
|
describe('/albums', () => {
|
||||||
let admin: LoginResponseDto;
|
let admin: LoginResponseDto;
|
||||||
let user1: LoginResponseDto;
|
let user1: LoginResponseDto;
|
||||||
let user1Asset1: AssetMediaResponseDto;
|
let user1Asset1: AssetMediaResponseDto;
|
||||||
let user1Asset2: AssetMediaResponseDto;
|
let user1Asset2: AssetMediaResponseDto;
|
||||||
|
let user4Asset1: AssetMediaResponseDto;
|
||||||
let user1Albums: AlbumResponseDto[];
|
let user1Albums: AlbumResponseDto[];
|
||||||
let user2: LoginResponseDto;
|
let user2: LoginResponseDto;
|
||||||
let user2Albums: AlbumResponseDto[];
|
let user2Albums: AlbumResponseDto[];
|
||||||
|
let deletedAssetAlbum: AlbumResponseDto;
|
||||||
let user3: LoginResponseDto; // deleted
|
let user3: LoginResponseDto; // deleted
|
||||||
|
let user4: LoginResponseDto;
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
await utils.resetDatabase();
|
await utils.resetDatabase();
|
||||||
|
|
||||||
admin = await utils.adminSetup();
|
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.user1),
|
||||||
utils.userSetup(admin.accessToken, createUserDto.user2),
|
utils.userSetup(admin.accessToken, createUserDto.user2),
|
||||||
utils.userSetup(admin.accessToken, createUserDto.user3),
|
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, { isFavorite: true }),
|
||||||
utils.createAsset(user1.accessToken),
|
utils.createAsset(user1.accessToken),
|
||||||
|
utils.createAsset(user1.accessToken),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
user1Albums = await Promise.all([
|
[user1Albums, user2Albums, deletedAssetAlbum] = await Promise.all([
|
||||||
utils.createAlbum(user1.accessToken, {
|
Promise.all([
|
||||||
albumName: user1SharedEditorUser,
|
utils.createAlbum(user1.accessToken, {
|
||||||
albumUsers: [{ userId: user2.userId, role: AlbumUserRole.Editor }],
|
albumName: user1SharedEditorUser,
|
||||||
assetIds: [user1Asset1.id],
|
albumUsers: [
|
||||||
}),
|
{ userId: admin.userId, role: AlbumUserRole.Editor },
|
||||||
utils.createAlbum(user1.accessToken, {
|
{ userId: user2.userId, role: AlbumUserRole.Editor },
|
||||||
albumName: user1SharedLink,
|
],
|
||||||
assetIds: [user1Asset1.id],
|
assetIds: [user1Asset1.id],
|
||||||
}),
|
}),
|
||||||
utils.createAlbum(user1.accessToken, {
|
utils.createAlbum(user1.accessToken, {
|
||||||
albumName: user1NotShared,
|
albumName: user1SharedLink,
|
||||||
assetIds: [user1Asset1.id, user1Asset2.id],
|
assetIds: [user1Asset1.id],
|
||||||
}),
|
}),
|
||||||
utils.createAlbum(user1.accessToken, {
|
utils.createAlbum(user1.accessToken, {
|
||||||
albumName: user1SharedViewerUser,
|
albumName: user1NotShared,
|
||||||
albumUsers: [{ userId: user2.userId, role: AlbumUserRole.Viewer }],
|
assetIds: [user1Asset1.id, user1Asset2.id],
|
||||||
assetIds: [user1Asset1.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([
|
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
|
// add shared link to user1SharedLink album
|
||||||
utils.createSharedLink(user1.accessToken, {
|
utils.createSharedLink(user1.accessToken, {
|
||||||
type: SharedLinkType.Album,
|
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', () => {
|
describe('GET /albums', () => {
|
||||||
@@ -142,6 +159,10 @@ describe('/albums', () => {
|
|||||||
...user1Albums[0],
|
...user1Albums[0],
|
||||||
assets: [expect.objectContaining({ isFavorite: false })],
|
assets: [expect.objectContaining({ isFavorite: false })],
|
||||||
lastModifiedAssetTimestamp: expect.any(String),
|
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(status).toBe(200);
|
||||||
expect(body).toHaveLength(5);
|
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', () => {
|
describe('GET /albums/:id', () => {
|
||||||
@@ -299,6 +339,10 @@ describe('/albums', () => {
|
|||||||
...user1Albums[0],
|
...user1Albums[0],
|
||||||
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
|
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
|
||||||
lastModifiedAssetTimestamp: expect.any(String),
|
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],
|
...user1Albums[0],
|
||||||
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
|
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
|
||||||
lastModifiedAssetTimestamp: expect.any(String),
|
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: [],
|
assets: [],
|
||||||
assetCount: 1,
|
assetCount: 1,
|
||||||
lastModifiedAssetTimestamp: expect.any(String),
|
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,
|
AssetMediaStatus,
|
||||||
AssetResponseDto,
|
AssetResponseDto,
|
||||||
AssetTypeEnum,
|
AssetTypeEnum,
|
||||||
LoginResponseDto,
|
|
||||||
SharedLinkType,
|
|
||||||
getAssetInfo,
|
getAssetInfo,
|
||||||
getConfig,
|
getConfig,
|
||||||
getMyUser,
|
getMyUser,
|
||||||
|
LoginResponseDto,
|
||||||
|
SharedLinkType,
|
||||||
updateConfig,
|
updateConfig,
|
||||||
} from '@immich/sdk';
|
} from '@immich/sdk';
|
||||||
import { exiftool } from 'exiftool-vendored';
|
import { exiftool } from 'exiftool-vendored';
|
||||||
@@ -19,7 +19,7 @@ import { Socket } from 'socket.io-client';
|
|||||||
import { createUserDto, uuidDto } from 'src/fixtures';
|
import { createUserDto, uuidDto } from 'src/fixtures';
|
||||||
import { makeRandomImage } from 'src/generators';
|
import { makeRandomImage } from 'src/generators';
|
||||||
import { errorDto } from 'src/responses';
|
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 request from 'supertest';
|
||||||
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
||||||
|
|
||||||
@@ -41,8 +41,6 @@ const makeUploadDto = (options?: { omit: string }): Record<string, any> => {
|
|||||||
return dto;
|
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 locationAssetFilepath = `${testAssetDir}/metadata/gps-position/thompson-springs.jpg`;
|
||||||
const ratingAssetFilepath = `${testAssetDir}/metadata/rating/mongolels.jpg`;
|
const ratingAssetFilepath = `${testAssetDir}/metadata/rating/mongolels.jpg`;
|
||||||
const facesAssetFilepath = `${testAssetDir}/metadata/faces/portrait.jpg`;
|
const facesAssetFilepath = `${testAssetDir}/metadata/faces/portrait.jpg`;
|
||||||
@@ -538,7 +536,7 @@ describe('/asset', () => {
|
|||||||
expect(body).toMatchObject({
|
expect(body).toMatchObject({
|
||||||
id: user1Assets[0].id,
|
id: user1Assets[0].id,
|
||||||
exifInfo: expect.objectContaining({
|
exifInfo: expect.objectContaining({
|
||||||
dateTimeOriginal: '2023-11-20T01:11:00.000Z',
|
dateTimeOriginal: '2023-11-20T01:11:00+00:00',
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
expect(status).toEqual(200);
|
expect(status).toEqual(200);
|
||||||
@@ -608,7 +606,7 @@ describe('/asset', () => {
|
|||||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||||
|
|
||||||
const assetInfo = await utils.getAssetInfo(user1.accessToken, id);
|
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)
|
const { status, body } = await request(app)
|
||||||
.put(`/assets/${id}`)
|
.put(`/assets/${id}`)
|
||||||
@@ -618,7 +616,7 @@ describe('/asset', () => {
|
|||||||
expect(body).toMatchObject({
|
expect(body).toMatchObject({
|
||||||
id,
|
id,
|
||||||
exifInfo: expect.objectContaining({
|
exifInfo: expect.objectContaining({
|
||||||
dateTimeOriginal: '2023-11-20T01:11:00.000Z',
|
dateTimeOriginal: '2023-11-20T01:11:00+00:00',
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
expect(status).toEqual(200);
|
expect(status).toEqual(200);
|
||||||
@@ -703,6 +701,20 @@ describe('/asset', () => {
|
|||||||
expect(status).toEqual(200);
|
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 () => {
|
it('should reject invalid rating', async () => {
|
||||||
for (const test of [{ rating: 7 }, { rating: 3.5 }, { rating: null }]) {
|
for (const test of [{ rating: 7 }, { rating: 3.5 }, { rating: null }]) {
|
||||||
const { status, body } = await request(app)
|
const { status, body } = await request(app)
|
||||||
@@ -985,8 +997,6 @@ describe('/asset', () => {
|
|||||||
exifImageHeight: 1080,
|
exifImageHeight: 1080,
|
||||||
exifImageWidth: 1617,
|
exifImageWidth: 1617,
|
||||||
fileSizeInByte: 862_424,
|
fileSizeInByte: 862_424,
|
||||||
latitude: null,
|
|
||||||
longitude: null,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -996,11 +1006,9 @@ describe('/asset', () => {
|
|||||||
type: AssetTypeEnum.Image,
|
type: AssetTypeEnum.Image,
|
||||||
originalFileName: 'el_torcal_rocks.jpg',
|
originalFileName: 'el_torcal_rocks.jpg',
|
||||||
exifInfo: {
|
exifInfo: {
|
||||||
dateTimeOriginal: '2012-08-05T11:39:59.000Z',
|
dateTimeOriginal: '2012-08-05T11:39:59+00:00',
|
||||||
exifImageWidth: 512,
|
exifImageWidth: 512,
|
||||||
exifImageHeight: 341,
|
exifImageHeight: 341,
|
||||||
latitude: null,
|
|
||||||
longitude: null,
|
|
||||||
focalLength: 75,
|
focalLength: 75,
|
||||||
iso: 200,
|
iso: 200,
|
||||||
fNumber: 11,
|
fNumber: 11,
|
||||||
@@ -1008,7 +1016,6 @@ describe('/asset', () => {
|
|||||||
fileSizeInByte: 53_493,
|
fileSizeInByte: 53_493,
|
||||||
make: 'SONY',
|
make: 'SONY',
|
||||||
model: 'DSLR-A550',
|
model: 'DSLR-A550',
|
||||||
orientation: null,
|
|
||||||
description: 'SONY DSC',
|
description: 'SONY DSC',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1023,8 +1030,6 @@ describe('/asset', () => {
|
|||||||
exifImageHeight: 1080,
|
exifImageHeight: 1080,
|
||||||
exifImageWidth: 1440,
|
exifImageWidth: 1440,
|
||||||
fileSizeInByte: 1_780_777,
|
fileSizeInByte: 1_780_777,
|
||||||
latitude: null,
|
|
||||||
longitude: null,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1035,7 +1040,7 @@ describe('/asset', () => {
|
|||||||
originalFileName: 'IMG_2682.heic',
|
originalFileName: 'IMG_2682.heic',
|
||||||
fileCreatedAt: '2019-03-21T16:04:22.348Z',
|
fileCreatedAt: '2019-03-21T16:04:22.348Z',
|
||||||
exifInfo: {
|
exifInfo: {
|
||||||
dateTimeOriginal: '2019-03-21T16:04:22.348Z',
|
dateTimeOriginal: '2019-03-21T16:04:22.348+00:00',
|
||||||
exifImageWidth: 4032,
|
exifImageWidth: 4032,
|
||||||
exifImageHeight: 3024,
|
exifImageHeight: 3024,
|
||||||
latitude: 41.2203,
|
latitude: 41.2203,
|
||||||
@@ -1060,8 +1065,6 @@ describe('/asset', () => {
|
|||||||
exifInfo: {
|
exifInfo: {
|
||||||
exifImageWidth: 800,
|
exifImageWidth: 800,
|
||||||
exifImageHeight: 800,
|
exifImageHeight: 800,
|
||||||
latitude: null,
|
|
||||||
longitude: null,
|
|
||||||
fileSizeInByte: 25_408,
|
fileSizeInByte: 25_408,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1080,9 +1083,7 @@ describe('/asset', () => {
|
|||||||
focalLength: 18,
|
focalLength: 18,
|
||||||
iso: 100,
|
iso: 100,
|
||||||
fileSizeInByte: 9_057_784,
|
fileSizeInByte: 9_057_784,
|
||||||
dateTimeOriginal: '2010-07-20T17:27:12.000Z',
|
dateTimeOriginal: '2010-07-20T17:27:12+00:00',
|
||||||
latitude: null,
|
|
||||||
longitude: null,
|
|
||||||
orientation: '1',
|
orientation: '1',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1101,9 +1102,7 @@ describe('/asset', () => {
|
|||||||
focalLength: 85,
|
focalLength: 85,
|
||||||
iso: 200,
|
iso: 200,
|
||||||
fileSizeInByte: 15_856_335,
|
fileSizeInByte: 15_856_335,
|
||||||
dateTimeOriginal: '2016-09-22T21:10:29.060Z',
|
dateTimeOriginal: '2016-09-22T21:10:29.06+00:00',
|
||||||
latitude: null,
|
|
||||||
longitude: null,
|
|
||||||
orientation: '1',
|
orientation: '1',
|
||||||
timeZone: 'UTC-4',
|
timeZone: 'UTC-4',
|
||||||
},
|
},
|
||||||
@@ -1125,9 +1124,7 @@ describe('/asset', () => {
|
|||||||
focalLength: 35,
|
focalLength: 35,
|
||||||
iso: 400,
|
iso: 400,
|
||||||
fileSizeInByte: 19_587_072,
|
fileSizeInByte: 19_587_072,
|
||||||
dateTimeOriginal: '2018-05-10T08:42:37.842Z',
|
dateTimeOriginal: '2018-05-10T08:42:37.842+00:00',
|
||||||
latitude: null,
|
|
||||||
longitude: null,
|
|
||||||
orientation: '1',
|
orientation: '1',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1149,9 +1146,7 @@ describe('/asset', () => {
|
|||||||
iso: 100,
|
iso: 100,
|
||||||
lensModel: 'E PZ 18-105mm F4 G OSS',
|
lensModel: 'E PZ 18-105mm F4 G OSS',
|
||||||
fileSizeInByte: 25_001_984,
|
fileSizeInByte: 25_001_984,
|
||||||
dateTimeOriginal: '2016-09-27T10:51:44.000Z',
|
dateTimeOriginal: '2016-09-27T10:51:44+00:00',
|
||||||
latitude: null,
|
|
||||||
longitude: null,
|
|
||||||
orientation: '1',
|
orientation: '1',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1173,9 +1168,7 @@ describe('/asset', () => {
|
|||||||
iso: 100,
|
iso: 100,
|
||||||
lensModel: 'E 25mm F2',
|
lensModel: 'E 25mm F2',
|
||||||
fileSizeInByte: 49_512_448,
|
fileSizeInByte: 49_512_448,
|
||||||
dateTimeOriginal: '2016-01-08T14:08:01.000Z',
|
dateTimeOriginal: '2016-01-08T14:08:01+00:00',
|
||||||
latitude: null,
|
|
||||||
longitude: null,
|
|
||||||
orientation: '1',
|
orientation: '1',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1197,7 +1190,7 @@ describe('/asset', () => {
|
|||||||
iso: 80,
|
iso: 80,
|
||||||
lensModel: null,
|
lensModel: null,
|
||||||
fileSizeInByte: 11_113_617,
|
fileSizeInByte: 11_113_617,
|
||||||
dateTimeOriginal: '2015-12-27T09:55:40.000Z',
|
dateTimeOriginal: '2015-12-27T09:55:40+00:00',
|
||||||
latitude: null,
|
latitude: null,
|
||||||
longitude: null,
|
longitude: null,
|
||||||
orientation: '1',
|
orientation: '1',
|
||||||
@@ -1221,7 +1214,7 @@ describe('/asset', () => {
|
|||||||
iso: 160,
|
iso: 160,
|
||||||
lensModel: null,
|
lensModel: null,
|
||||||
fileSizeInByte: 13_551_312,
|
fileSizeInByte: 13_551_312,
|
||||||
dateTimeOriginal: '2024-10-12T21:01:01.000Z',
|
dateTimeOriginal: '2024-10-12T21:01:01+00:00',
|
||||||
latitude: null,
|
latitude: null,
|
||||||
longitude: null,
|
longitude: null,
|
||||||
orientation: '6',
|
orientation: '6',
|
||||||
@@ -1235,7 +1228,7 @@ describe('/asset', () => {
|
|||||||
originalFileName: 'Ricoh_GR3-450.DNG',
|
originalFileName: 'Ricoh_GR3-450.DNG',
|
||||||
fileCreatedAt: '2024-06-08T13:48:39.000Z',
|
fileCreatedAt: '2024-06-08T13:48:39.000Z',
|
||||||
exifInfo: {
|
exifInfo: {
|
||||||
dateTimeOriginal: '2024-06-08T13:48:39.000Z',
|
dateTimeOriginal: '2024-06-08T13:48:39+00:00',
|
||||||
exifImageHeight: 4064,
|
exifImageHeight: 4064,
|
||||||
exifImageWidth: 6112,
|
exifImageWidth: 6112,
|
||||||
exposureTime: '1/400',
|
exposureTime: '1/400',
|
||||||
|
|||||||
86
e2e/src/api/specs/jobs.e2e-spec.ts
Normal file
86
e2e/src/api/specs/jobs.e2e-spec.ts
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
import { JobCommand, JobName, LoginResponseDto } from '@immich/sdk';
|
||||||
|
import { readFile } from 'node:fs/promises';
|
||||||
|
import { basename } from 'node:path';
|
||||||
|
import { errorDto } from 'src/responses';
|
||||||
|
import { app, testAssetDir, utils } from 'src/utils';
|
||||||
|
import request from 'supertest';
|
||||||
|
import { afterEach, beforeAll, describe, expect, it } from 'vitest';
|
||||||
|
|
||||||
|
describe('/jobs', () => {
|
||||||
|
let admin: LoginResponseDto;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
await utils.resetDatabase();
|
||||||
|
admin = await utils.adminSetup({ onboarding: false });
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('PUT /jobs', () => {
|
||||||
|
afterEach(async () => {
|
||||||
|
await utils.jobCommand(admin.accessToken, JobName.MetadataExtraction, {
|
||||||
|
command: JobCommand.Resume,
|
||||||
|
force: false,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authentication', async () => {
|
||||||
|
const { status, body } = await request(app).put('/jobs/metadataExtraction');
|
||||||
|
expect(status).toBe(401);
|
||||||
|
expect(body).toEqual(errorDto.unauthorized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should queue metadata extraction for missing assets', async () => {
|
||||||
|
const path1 = `${testAssetDir}/formats/raw/Nikon/D700/philadelphia.nef`;
|
||||||
|
const path2 = `${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`;
|
||||||
|
|
||||||
|
await utils.createAsset(admin.accessToken, {
|
||||||
|
assetData: { bytes: await readFile(path1), filename: basename(path1) },
|
||||||
|
});
|
||||||
|
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||||
|
|
||||||
|
await utils.jobCommand(admin.accessToken, JobName.MetadataExtraction, {
|
||||||
|
command: JobCommand.Pause,
|
||||||
|
force: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const { id } = await utils.createAsset(admin.accessToken, {
|
||||||
|
assetData: { bytes: await readFile(path2), filename: basename(path2) },
|
||||||
|
});
|
||||||
|
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||||
|
|
||||||
|
{
|
||||||
|
const asset = await utils.getAssetInfo(admin.accessToken, id);
|
||||||
|
|
||||||
|
expect(asset.exifInfo).toBeDefined();
|
||||||
|
expect(asset.exifInfo?.make).toBeNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
await utils.jobCommand(admin.accessToken, JobName.MetadataExtraction, {
|
||||||
|
command: JobCommand.Empty,
|
||||||
|
force: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||||
|
|
||||||
|
await utils.jobCommand(admin.accessToken, JobName.MetadataExtraction, {
|
||||||
|
command: JobCommand.Resume,
|
||||||
|
force: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
await utils.jobCommand(admin.accessToken, JobName.MetadataExtraction, {
|
||||||
|
command: JobCommand.Start,
|
||||||
|
force: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||||
|
|
||||||
|
{
|
||||||
|
const asset = await utils.getAssetInfo(admin.accessToken, id);
|
||||||
|
|
||||||
|
expect(asset.exifInfo).toBeDefined();
|
||||||
|
expect(asset.exifInfo?.make).toBe('NIKON CORPORATION');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -93,8 +93,6 @@ describe('/memories', () => {
|
|||||||
data: { year: 2021 },
|
data: { year: 2021 },
|
||||||
createdAt: expect.any(String),
|
createdAt: expect.any(String),
|
||||||
updatedAt: expect.any(String),
|
updatedAt: expect.any(String),
|
||||||
deletedAt: null,
|
|
||||||
seenAt: null,
|
|
||||||
isSaved: false,
|
isSaved: false,
|
||||||
memoryAt: expect.any(String),
|
memoryAt: expect.any(String),
|
||||||
ownerId: user.userId,
|
ownerId: user.userId,
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import request from 'supertest';
|
|||||||
import { beforeAll, describe, expect, it } from 'vitest';
|
import { beforeAll, describe, expect, it } from 'vitest';
|
||||||
|
|
||||||
const authServer = {
|
const authServer = {
|
||||||
internal: 'http://auth-server:3000',
|
internal: 'http://auth-server:2286',
|
||||||
external: 'http://127.0.0.1:3000',
|
external: 'http://127.0.0.1:2286',
|
||||||
};
|
};
|
||||||
|
|
||||||
const mobileOverrideRedirectUri = 'https://photos.immich.app/oauth/mobile-redirect';
|
const mobileOverrideRedirectUri = 'https://photos.immich.app/oauth/mobile-redirect';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { LoginResponseDto, PersonResponseDto } from '@immich/sdk';
|
import { getPerson, LoginResponseDto, PersonResponseDto } from '@immich/sdk';
|
||||||
import { uuidDto } from 'src/fixtures';
|
import { uuidDto } from 'src/fixtures';
|
||||||
import { errorDto } from 'src/responses';
|
import { errorDto } from 'src/responses';
|
||||||
import { app, utils } from 'src/utils';
|
import { app, asBearerAuth, utils } from 'src/utils';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
import { beforeAll, beforeEach, describe, expect, it } from 'vitest';
|
import { beforeAll, beforeEach, describe, expect, it } from 'vitest';
|
||||||
|
|
||||||
@@ -195,12 +195,29 @@ describe('/people', () => {
|
|||||||
.send({
|
.send({
|
||||||
name: 'New Person',
|
name: 'New Person',
|
||||||
birthDate: '1990-01-01',
|
birthDate: '1990-01-01',
|
||||||
|
color: '#333',
|
||||||
});
|
});
|
||||||
expect(status).toBe(201);
|
expect(status).toBe(201);
|
||||||
expect(body).toMatchObject({
|
expect(body).toMatchObject({
|
||||||
id: expect.any(String),
|
id: expect.any(String),
|
||||||
name: 'New Person',
|
name: 'New Person',
|
||||||
birthDate: '1990-01-01',
|
birthDate: '1990-01-01T00:00:00.000Z',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create a favorite person', async () => {
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.post(`/people`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
|
.send({
|
||||||
|
name: 'New Favorite Person',
|
||||||
|
isFavorite: true,
|
||||||
|
});
|
||||||
|
expect(status).toBe(201);
|
||||||
|
expect(body).toMatchObject({
|
||||||
|
id: expect.any(String),
|
||||||
|
name: 'New Favorite Person',
|
||||||
|
isFavorite: true,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -216,6 +233,7 @@ describe('/people', () => {
|
|||||||
{ key: 'name', type: 'string' },
|
{ key: 'name', type: 'string' },
|
||||||
{ key: 'featureFaceAssetId', type: 'string' },
|
{ key: 'featureFaceAssetId', type: 'string' },
|
||||||
{ key: 'isHidden', type: 'boolean value' },
|
{ key: 'isHidden', type: 'boolean value' },
|
||||||
|
{ key: 'isFavorite', type: 'boolean value' },
|
||||||
]) {
|
]) {
|
||||||
it(`should not allow null ${key}`, async () => {
|
it(`should not allow null ${key}`, async () => {
|
||||||
const { status, body } = await request(app)
|
const { status, body } = await request(app)
|
||||||
@@ -244,7 +262,7 @@ describe('/people', () => {
|
|||||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
.send({ birthDate: '1990-01-01' });
|
.send({ birthDate: '1990-01-01' });
|
||||||
expect(status).toBe(200);
|
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 () => {
|
it('should clear a date of birth', async () => {
|
||||||
@@ -255,6 +273,42 @@ describe('/people', () => {
|
|||||||
expect(status).toBe(200);
|
expect(status).toBe(200);
|
||||||
expect(body).toMatchObject({ birthDate: null });
|
expect(body).toMatchObject({ birthDate: null });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should set a color', async () => {
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/people/${visiblePerson.id}`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
|
.send({ color: '#555' });
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toMatchObject({ color: '#555' });
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should clear a color', async () => {
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/people/${visiblePerson.id}`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
|
.send({ color: null });
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body.color).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should mark a person as favorite', async () => {
|
||||||
|
const person = await utils.createPerson(admin.accessToken, {
|
||||||
|
name: 'visible_person',
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(person.isFavorite).toBe(false);
|
||||||
|
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/people/${person.id}`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
|
.send({ isFavorite: true });
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toMatchObject({ isFavorite: true });
|
||||||
|
|
||||||
|
const person2 = await getPerson({ id: person.id }, { headers: asBearerAuth(admin.accessToken) });
|
||||||
|
expect(person2).toMatchObject({ id: person.id, isFavorite: true });
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('POST /people/:id/merge', () => {
|
describe('POST /people/:id/merge', () => {
|
||||||
|
|||||||
@@ -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 { DateTime } from 'luxon';
|
||||||
import { readFile } from 'node:fs/promises';
|
import { readFile } from 'node:fs/promises';
|
||||||
import { join } from 'node:path';
|
import { join } from 'node:path';
|
||||||
import { Socket } from 'socket.io-client';
|
import { Socket } from 'socket.io-client';
|
||||||
import { errorDto } from 'src/responses';
|
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 request from 'supertest';
|
||||||
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
||||||
const today = DateTime.now();
|
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', () => {
|
describe('GET /search/explore', () => {
|
||||||
it('should require authentication', async () => {
|
it('should require authentication', async () => {
|
||||||
const { status, body } = await request(app).get('/search/explore');
|
const { status, body } = await request(app).get('/search/explore');
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ describe('/shared-links', () => {
|
|||||||
await deleteUserAdmin({ id: user2.userId, userAdminDeleteDto: {} }, { headers: asBearerAuth(admin.accessToken) });
|
await deleteUserAdmin({ id: user2.userId, userAdminDeleteDto: {} }, { headers: asBearerAuth(admin.accessToken) });
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('GET /share/${key}', () => {
|
describe('GET /share/:key', () => {
|
||||||
it('should have correct asset count in meta tag for non-empty album', async () => {
|
it('should have correct asset count in meta tag for non-empty album', async () => {
|
||||||
const resp = await request(shareUrl).get(`/${linkWithMetadata.key}`);
|
const resp = await request(shareUrl).get(`/${linkWithMetadata.key}`);
|
||||||
expect(resp.status).toBe(200);
|
expect(resp.status).toBe(200);
|
||||||
@@ -139,7 +139,10 @@ describe('/shared-links', () => {
|
|||||||
expect(body).toEqual(
|
expect(body).toEqual(
|
||||||
expect.arrayContaining([
|
expect.arrayContaining([
|
||||||
expect.objectContaining({ id: linkWithAlbum.id }),
|
expect.objectContaining({ id: linkWithAlbum.id }),
|
||||||
expect.objectContaining({ id: linkWithAssets.id }),
|
expect.objectContaining({
|
||||||
|
id: linkWithAssets.id,
|
||||||
|
assets: expect.arrayContaining([expect.objectContaining({ id: asset1.id })]),
|
||||||
|
}),
|
||||||
expect.objectContaining({ id: linkWithPassword.id }),
|
expect.objectContaining({ id: linkWithPassword.id }),
|
||||||
expect.objectContaining({ id: linkWithMetadata.id }),
|
expect.objectContaining({ id: linkWithMetadata.id }),
|
||||||
expect.objectContaining({ id: linkWithoutMetadata.id }),
|
expect.objectContaining({ id: linkWithoutMetadata.id }),
|
||||||
@@ -147,6 +150,30 @@ describe('/shared-links', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should filter on albumId', async () => {
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.get(`/shared-links?albumId=${album.id}`)
|
||||||
|
.set('Authorization', `Bearer ${user1.accessToken}`);
|
||||||
|
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toHaveLength(2);
|
||||||
|
expect(body).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({ id: linkWithAlbum.id }),
|
||||||
|
expect.objectContaining({ id: linkWithPassword.id }),
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should find 0 albums', async () => {
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.get(`/shared-links?albumId=${uuidDto.notFound}`)
|
||||||
|
.set('Authorization', `Bearer ${user1.accessToken}`);
|
||||||
|
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toHaveLength(0);
|
||||||
|
});
|
||||||
|
|
||||||
it('should not get shared links created by other users', async () => {
|
it('should not get shared links created by other users', async () => {
|
||||||
const { status, body } = await request(app)
|
const { status, body } = await request(app)
|
||||||
.get('/shared-links')
|
.get('/shared-links')
|
||||||
@@ -170,7 +197,7 @@ describe('/shared-links', () => {
|
|||||||
expect(status).toBe(200);
|
expect(status).toBe(200);
|
||||||
expect(body).toEqual(
|
expect(body).toEqual(
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
album,
|
album: expect.objectContaining({ id: album.id }),
|
||||||
userId: user1.userId,
|
userId: user1.userId,
|
||||||
type: SharedLinkType.Album,
|
type: SharedLinkType.Album,
|
||||||
}),
|
}),
|
||||||
@@ -208,7 +235,7 @@ describe('/shared-links', () => {
|
|||||||
expect(status).toBe(200);
|
expect(status).toBe(200);
|
||||||
expect(body).toEqual(
|
expect(body).toEqual(
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
album,
|
album: expect.objectContaining({ id: album.id }),
|
||||||
userId: user1.userId,
|
userId: user1.userId,
|
||||||
type: SharedLinkType.Album,
|
type: SharedLinkType.Album,
|
||||||
}),
|
}),
|
||||||
@@ -262,7 +289,7 @@ describe('/shared-links', () => {
|
|||||||
expect(status).toBe(200);
|
expect(status).toBe(200);
|
||||||
expect(body).toEqual(
|
expect(body).toEqual(
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
album,
|
album: expect.objectContaining({ id: album.id }),
|
||||||
userId: user1.userId,
|
userId: user1.userId,
|
||||||
type: SharedLinkType.Album,
|
type: SharedLinkType.Album,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -119,93 +119,84 @@ describe('/stacks', () => {
|
|||||||
const stacksAfter = await searchStacks({}, { headers: asBearerAuth(user1.accessToken) });
|
const stacksAfter = await searchStacks({}, { headers: asBearerAuth(user1.accessToken) });
|
||||||
expect(stacksAfter.length).toBe(stacksBefore.length);
|
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 () => {
|
describe('GET /assets/:id', () => {
|
||||||
// const { status, body } = await request(app)
|
it('should include stack details for the primary asset', async () => {
|
||||||
// .put('/assets')
|
const [asset1, asset2] = await Promise.all([
|
||||||
// .set('Authorization', `Bearer ${user1.accessToken}`)
|
utils.createAsset(user1.accessToken),
|
||||||
// .send({ stackParentId: stackAssets[3].id, ids: [user1Assets[0].id] });
|
utils.createAsset(user1.accessToken),
|
||||||
|
]);
|
||||||
|
|
||||||
// expect(status).toBe(400);
|
await utils.createStack(user1.accessToken, [asset1.id, asset2.id]);
|
||||||
// expect(body).toEqual(errorDto.noPermission);
|
|
||||||
// });
|
|
||||||
|
|
||||||
// it('should add stack children', async () => {
|
const { status, body } = await request(app)
|
||||||
// const { status } = await request(app)
|
.get(`/assets/${asset1.id}`)
|
||||||
// .put('/assets')
|
.set('Authorization', `Bearer ${user1.accessToken}`);
|
||||||
// .set('Authorization', `Bearer ${stackUser.accessToken}`)
|
|
||||||
// .send({ stackParentId: stackAssets[0].id, ids: [stackAssets[3].id] });
|
|
||||||
|
|
||||||
// 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) });
|
it('should include stack details for a non-primary asset', async () => {
|
||||||
// expect(asset.stack).not.toBeUndefined();
|
const [asset1, asset2] = await Promise.all([
|
||||||
// expect(asset.stack).toEqual(expect.arrayContaining([expect.objectContaining({ id: stackAssets[3].id })]));
|
utils.createAsset(user1.accessToken),
|
||||||
// });
|
utils.createAsset(user1.accessToken),
|
||||||
|
]);
|
||||||
|
|
||||||
// it('should remove stack children', async () => {
|
await utils.createStack(user1.accessToken, [asset1.id, asset2.id]);
|
||||||
// const { status } = await request(app)
|
|
||||||
// .put('/assets')
|
|
||||||
// .set('Authorization', `Bearer ${stackUser.accessToken}`)
|
|
||||||
// .send({ removeParent: true, ids: [stackAssets[1].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(status).toBe(200);
|
||||||
// expect(asset.stack).not.toBeUndefined();
|
expect(body).toEqual(
|
||||||
// expect(asset.stack).toEqual(
|
expect.objectContaining({
|
||||||
// expect.arrayContaining([
|
id: asset2.id,
|
||||||
// expect.objectContaining({ id: stackAssets[2].id }),
|
stack: {
|
||||||
// expect.objectContaining({ id: stackAssets[3].id }),
|
id: expect.any(String),
|
||||||
// ]),
|
assetCount: 2,
|
||||||
// );
|
primaryAssetId: asset1.id,
|
||||||
// });
|
},
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// it('should remove all stack children', async () => {
|
describe('GET /stacks/:id', () => {
|
||||||
// const { status } = await request(app)
|
it('should include exifInfo in stack assets', async () => {
|
||||||
// .put('/assets')
|
const [asset1, asset2] = await Promise.all([
|
||||||
// .set('Authorization', `Bearer ${stackUser.accessToken}`)
|
utils.createAsset(user1.accessToken),
|
||||||
// .send({ removeParent: true, ids: [stackAssets[2].id, stackAssets[3].id] });
|
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) });
|
const { status, body } = await request(app)
|
||||||
// expect(asset.stack).toBeUndefined();
|
.get(`/stacks/${stack.id}`)
|
||||||
// });
|
.set('Authorization', `Bearer ${user1.accessToken}`);
|
||||||
|
|
||||||
// it('should merge stack children', async () => {
|
expect(status).toBe(200);
|
||||||
// // create stack after previous test removed stack children
|
expect(body).toEqual(
|
||||||
// await updateAssets(
|
expect.objectContaining({
|
||||||
// { assetBulkUpdateDto: { stackParentId: stackAssets[0].id, ids: [stackAssets[1].id, stackAssets[2].id] } },
|
id: stack.id,
|
||||||
// { headers: asBearerAuth(stackUser.accessToken) },
|
primaryAssetId: asset1.id,
|
||||||
// );
|
assets: expect.arrayContaining([
|
||||||
|
expect.objectContaining({ id: asset1.id, exifInfo: expect.any(Object) }),
|
||||||
// const { status } = await request(app)
|
expect.objectContaining({ id: asset2.id, exifInfo: expect.any(Object) }),
|
||||||
// .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 }),
|
|
||||||
// ]),
|
|
||||||
// );
|
|
||||||
// });
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ describe('/timeline', () => {
|
|||||||
it('should require authentication', async () => {
|
it('should require authentication', async () => {
|
||||||
const { status, body } = await request(app).get('/timeline/bucket').query({
|
const { status, body } = await request(app).get('/timeline/bucket').query({
|
||||||
size: TimeBucketSize.Month,
|
size: TimeBucketSize.Month,
|
||||||
timeBucket: '1900-01-01T00:00:00.000Z',
|
timeBucket: '1900-01-01',
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(status).toBe(401);
|
expect(status).toBe(401);
|
||||||
@@ -161,7 +161,7 @@ describe('/timeline', () => {
|
|||||||
it('should handle 5 digit years', async () => {
|
it('should handle 5 digit years', async () => {
|
||||||
const { status, body } = await request(app)
|
const { status, body } = await request(app)
|
||||||
.get('/timeline/bucket')
|
.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}`);
|
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`);
|
||||||
|
|
||||||
expect(status).toBe(200);
|
expect(status).toBe(200);
|
||||||
@@ -183,7 +183,7 @@ describe('/timeline', () => {
|
|||||||
const { status, body } = await request(app)
|
const { status, body } = await request(app)
|
||||||
.get('/timeline/bucket')
|
.get('/timeline/bucket')
|
||||||
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`)
|
.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(status).toBe(200);
|
||||||
expect(body).toEqual([]);
|
expect(body).toEqual([]);
|
||||||
|
|||||||
@@ -356,5 +356,24 @@ describe('/admin/users', () => {
|
|||||||
expect(status).toBe(403);
|
expect(status).toBe(403);
|
||||||
expect(body).toEqual(errorDto.forbidden);
|
expect(body).toEqual(errorDto.forbidden);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should restore a user', async () => {
|
||||||
|
const user = await utils.userSetup(admin.accessToken, createUserDto.create('restore'));
|
||||||
|
|
||||||
|
await deleteUserAdmin({ id: user.userId, userAdminDeleteDto: {} }, { headers: asBearerAuth(admin.accessToken) });
|
||||||
|
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.post(`/admin/users/${user.userId}/restore`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
id: user.userId,
|
||||||
|
email: user.userEmail,
|
||||||
|
status: 'active',
|
||||||
|
deletedAt: null,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -129,6 +129,8 @@ describe('/users', () => {
|
|||||||
expect(body).toEqual({
|
expect(body).toEqual({
|
||||||
...before,
|
...before,
|
||||||
updatedAt: expect.any(String),
|
updatedAt: expect.any(String),
|
||||||
|
profileChangedAt: expect.any(String),
|
||||||
|
createdAt: expect.any(String),
|
||||||
name: 'Name',
|
name: 'Name',
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -177,6 +179,8 @@ describe('/users', () => {
|
|||||||
...before,
|
...before,
|
||||||
email: 'non-admin@immich.cloud',
|
email: 'non-admin@immich.cloud',
|
||||||
updatedAt: expect.anything(),
|
updatedAt: expect.anything(),
|
||||||
|
createdAt: expect.anything(),
|
||||||
|
profileChangedAt: expect.anything(),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ const setup = async () => {
|
|||||||
const { privateKey, publicKey } = await generateKeyPair('RS256');
|
const { privateKey, publicKey } = await generateKeyPair('RS256');
|
||||||
|
|
||||||
const redirectUris = ['http://127.0.0.1:2285/auth/login', 'https://photos.immich.app/oauth/mobile-redirect'];
|
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 host = '0.0.0.0';
|
||||||
const oidc = new Provider(`http://${host}:${port}`, {
|
const oidc = new Provider(`http://${host}:${port}`, {
|
||||||
renderError: async (ctx, out, error) => {
|
renderError: async (ctx, out, error) => {
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import {
|
|||||||
CheckExistingAssetsDto,
|
CheckExistingAssetsDto,
|
||||||
CreateAlbumDto,
|
CreateAlbumDto,
|
||||||
CreateLibraryDto,
|
CreateLibraryDto,
|
||||||
|
JobCommandDto,
|
||||||
|
JobName,
|
||||||
MetadataSearchDto,
|
MetadataSearchDto,
|
||||||
Permission,
|
Permission,
|
||||||
PersonCreateDto,
|
PersonCreateDto,
|
||||||
@@ -29,6 +31,7 @@ import {
|
|||||||
getConfigDefaults,
|
getConfigDefaults,
|
||||||
login,
|
login,
|
||||||
searchAssets,
|
searchAssets,
|
||||||
|
sendJobCommand,
|
||||||
setBaseUrl,
|
setBaseUrl,
|
||||||
signUpAdmin,
|
signUpAdmin,
|
||||||
tagAssets,
|
tagAssets,
|
||||||
@@ -76,6 +79,7 @@ export const immichCli = (args: string[]) =>
|
|||||||
export const immichAdmin = (args: string[]) =>
|
export const immichAdmin = (args: string[]) =>
|
||||||
executeCommand('docker', ['exec', '-i', 'immich-e2e-server', '/bin/bash', '-c', `immich-admin ${args.join(' ')}`]);
|
executeCommand('docker', ['exec', '-i', 'immich-e2e-server', '/bin/bash', '-c', `immich-admin ${args.join(' ')}`]);
|
||||||
export const specialCharStrings = ["'", '"', ',', '{', '}', '*'];
|
export const specialCharStrings = ["'", '"', ',', '{', '}', '*'];
|
||||||
|
export const TEN_TIMES = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
||||||
|
|
||||||
const executeCommand = (command: string, args: string[]) => {
|
const executeCommand = (command: string, args: string[]) => {
|
||||||
let _resolve: (value: CommandResponse) => void;
|
let _resolve: (value: CommandResponse) => void;
|
||||||
@@ -474,6 +478,9 @@ export const utils = {
|
|||||||
tagAssets: (accessToken: string, tagId: string, assetIds: string[]) =>
|
tagAssets: (accessToken: string, tagId: string, assetIds: string[]) =>
|
||||||
tagAssets({ id: tagId, bulkIdsDto: { ids: assetIds } }, { headers: asBearerAuth(accessToken) }),
|
tagAssets({ id: tagId, bulkIdsDto: { ids: assetIds } }, { headers: asBearerAuth(accessToken) }),
|
||||||
|
|
||||||
|
jobCommand: async (accessToken: string, jobName: JobName, jobCommandDto: JobCommandDto) =>
|
||||||
|
sendJobCommand({ id: jobName, jobCommandDto }, { headers: asBearerAuth(accessToken) }),
|
||||||
|
|
||||||
setAuthCookies: async (context: BrowserContext, accessToken: string, domain = '127.0.0.1') =>
|
setAuthCookies: async (context: BrowserContext, accessToken: string, domain = '127.0.0.1') =>
|
||||||
await context.addCookies([
|
await context.addCookies([
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import {
|
|||||||
SharedLinkType,
|
SharedLinkType,
|
||||||
createAlbum,
|
createAlbum,
|
||||||
} from '@immich/sdk';
|
} from '@immich/sdk';
|
||||||
import { test } from '@playwright/test';
|
import { expect, test } from '@playwright/test';
|
||||||
import { asBearerAuth, utils } from 'src/utils';
|
import { asBearerAuth, utils } from 'src/utils';
|
||||||
|
|
||||||
test.describe('Shared Links', () => {
|
test.describe('Shared Links', () => {
|
||||||
@@ -65,6 +65,38 @@ test.describe('Shared Links', () => {
|
|||||||
await page.getByRole('heading', { name: 'Test Album' }).waitFor();
|
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 }) => {
|
test('show error for invalid shared link', async ({ page }) => {
|
||||||
await page.goto('/share/invalid');
|
await page.goto('/share/invalid');
|
||||||
await page.getByRole('heading', { name: 'Invalid share key' }).waitFor();
|
await page.getByRole('heading', { name: 'Invalid share key' }).waitFor();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "حول",
|
"about": "من نحن",
|
||||||
"account": "الحساب",
|
"account": "الحساب",
|
||||||
"account_settings": "إعدادات الحساب",
|
"account_settings": "إعدادات الحساب",
|
||||||
"acknowledge": "أُدرك ذلك",
|
"acknowledge": "أُدرك ذلك",
|
||||||
|
|||||||
22
i18n/bg.json
22
i18n/bg.json
@@ -437,8 +437,8 @@
|
|||||||
"birthdate_set_description": "Датата на раждане се използва за изчисляване на възрастта на този човек към момента на снимката.",
|
"birthdate_set_description": "Датата на раждане се използва за изчисляване на възрастта на този човек към момента на снимката.",
|
||||||
"blurred_background": "Замъглен заден фон",
|
"blurred_background": "Замъглен заден фон",
|
||||||
"bugs_and_feature_requests": "Бъгове и заявки за функции",
|
"bugs_and_feature_requests": "Бъгове и заявки за функции",
|
||||||
"build": "Създаване",
|
"build": "Версия",
|
||||||
"build_image": "Създаване на изображение",
|
"build_image": "Docker версия",
|
||||||
"bulk_delete_duplicates_confirmation": "Сигурни ли сте, че искате да изтриете масово {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще запази най-големия файл от всяка група и ще изтрие трайно всички други дубликати. Не можете да отмените това действие!",
|
"bulk_delete_duplicates_confirmation": "Сигурни ли сте, че искате да изтриете масово {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще запази най-големия файл от всяка група и ще изтрие трайно всички други дубликати. Не можете да отмените това действие!",
|
||||||
"bulk_keep_duplicates_confirmation": "Сигурни ли сте, че искате да запазите {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще потвърди всички групи дубликати, без да изтрива нищо.",
|
"bulk_keep_duplicates_confirmation": "Сигурни ли сте, че искате да запазите {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще потвърди всички групи дубликати, без да изтрива нищо.",
|
||||||
"bulk_trash_duplicates_confirmation": "Сигурни ли сте, че искате да преместите в кошчето масово {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще запази най-големия файл от всяка група и ще премести в кошчето всички други дубликати.",
|
"bulk_trash_duplicates_confirmation": "Сигурни ли сте, че искате да преместите в кошчето масово {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще запази най-големия файл от всяка група и ще премести в кошчето всички други дубликати.",
|
||||||
@@ -523,6 +523,10 @@
|
|||||||
"date_range": "Период от време",
|
"date_range": "Период от време",
|
||||||
"day": "Ден",
|
"day": "Ден",
|
||||||
"deduplicate_all": "Дедупликиране на всички",
|
"deduplicate_all": "Дедупликиране на всички",
|
||||||
|
"deduplication_criteria_1": "Размер на снимката в байтове",
|
||||||
|
"deduplication_criteria_2": "Брой EXIF данни",
|
||||||
|
"deduplication_info": "Информация за дедупликацията",
|
||||||
|
"deduplication_info_description": "За автоматично предварително избиране на ресурси и премахване на дубликати на едро, разглеждаме:",
|
||||||
"default_locale": "Локализация по подразбиране",
|
"default_locale": "Локализация по подразбиране",
|
||||||
"default_locale_description": "Форматиране на дати и числа в зависимост от местоположението на браузъра",
|
"default_locale_description": "Форматиране на дати и числа в зависимост от местоположението на браузъра",
|
||||||
"delete": "Изтрий",
|
"delete": "Изтрий",
|
||||||
@@ -669,7 +673,7 @@
|
|||||||
"unable_to_download_files": "Не могат да се изтеглят файловете",
|
"unable_to_download_files": "Не могат да се изтеглят файловете",
|
||||||
"unable_to_edit_exclusion_pattern": "Не може да се редактира шаблон за изключване",
|
"unable_to_edit_exclusion_pattern": "Не може да се редактира шаблон за изключване",
|
||||||
"unable_to_edit_import_path": "Пътят за импортиране не може да се редактира",
|
"unable_to_edit_import_path": "Пътят за импортиране не може да се редактира",
|
||||||
"unable_to_empty_trash": "Не може да изпразни кошчето",
|
"unable_to_empty_trash": "Неуспешно изпразване на кошчето",
|
||||||
"unable_to_enter_fullscreen": "Не може да се отвори в цял екран",
|
"unable_to_enter_fullscreen": "Не може да се отвори в цял екран",
|
||||||
"unable_to_exit_fullscreen": "Не може да излезе от цял екран",
|
"unable_to_exit_fullscreen": "Не може да излезе от цял екран",
|
||||||
"unable_to_get_comments_number": "Не може да получи брой коментари",
|
"unable_to_get_comments_number": "Не може да получи брой коментари",
|
||||||
@@ -765,7 +769,7 @@
|
|||||||
"group_no": "Няма група",
|
"group_no": "Няма група",
|
||||||
"group_owner": "Групиране по собственик",
|
"group_owner": "Групиране по собственик",
|
||||||
"group_year": "Групиране по година",
|
"group_year": "Групиране по година",
|
||||||
"has_quota": "Има лимит",
|
"has_quota": "Лимит",
|
||||||
"hi_user": "Здравей, {name} {email}",
|
"hi_user": "Здравей, {name} {email}",
|
||||||
"hide_all_people": "Скрий всички хора",
|
"hide_all_people": "Скрий всички хора",
|
||||||
"hide_gallery": "Скрий галерия",
|
"hide_gallery": "Скрий галерия",
|
||||||
@@ -1009,7 +1013,7 @@
|
|||||||
"purchase_button_select": "Избери",
|
"purchase_button_select": "Избери",
|
||||||
"purchase_failed_activation": "Неуспешна активация! Моля, проверете имейла си за правилния продуктов ключ!",
|
"purchase_failed_activation": "Неуспешна активация! Моля, проверете имейла си за правилния продуктов ключ!",
|
||||||
"purchase_individual_description_1": "За индивидуален потребител",
|
"purchase_individual_description_1": "За индивидуален потребител",
|
||||||
"purchase_individual_description_2": "Поддръжнически статус",
|
"purchase_individual_description_2": "Статус на поддръжник",
|
||||||
"purchase_individual_title": "Индивидуален",
|
"purchase_individual_title": "Индивидуален",
|
||||||
"purchase_input_suggestion": "Имате продуктов ключ? Въведете ключа по-долу",
|
"purchase_input_suggestion": "Имате продуктов ключ? Въведете ключа по-долу",
|
||||||
"purchase_license_subtitle": "Закупете Immich, за да подкрепите продължаващото развитие на услугата",
|
"purchase_license_subtitle": "Закупете Immich, за да подкрепите продължаващото развитие на услугата",
|
||||||
@@ -1025,7 +1029,7 @@
|
|||||||
"purchase_remove_server_product_key": "Премахни продуктовия ключ на сървъра",
|
"purchase_remove_server_product_key": "Премахни продуктовия ключ на сървъра",
|
||||||
"purchase_remove_server_product_key_prompt": "Сигурни ли сте, че искате да премахнете продуктовия ключ на сървъра?",
|
"purchase_remove_server_product_key_prompt": "Сигурни ли сте, че искате да премахнете продуктовия ключ на сървъра?",
|
||||||
"purchase_server_description_1": "За целият сървър",
|
"purchase_server_description_1": "За целият сървър",
|
||||||
"purchase_server_description_2": "Статус на поддръжника",
|
"purchase_server_description_2": "Статус на поддръжник",
|
||||||
"purchase_server_title": "Сървър",
|
"purchase_server_title": "Сървър",
|
||||||
"purchase_settings_server_activated": "Продуктовият ключ на сървъра се управлява от администратора",
|
"purchase_settings_server_activated": "Продуктовият ключ на сървъра се управлява от администратора",
|
||||||
"rating": "Оценка със звезди",
|
"rating": "Оценка със звезди",
|
||||||
@@ -1205,7 +1209,7 @@
|
|||||||
"sort_people_by_similarity": "Сортиране на хора по прилика",
|
"sort_people_by_similarity": "Сортиране на хора по прилика",
|
||||||
"sort_recent": "Най-новата снимка",
|
"sort_recent": "Най-новата снимка",
|
||||||
"sort_title": "Заглавие",
|
"sort_title": "Заглавие",
|
||||||
"source": "Източник",
|
"source": "Код",
|
||||||
"stack": "Събери",
|
"stack": "Събери",
|
||||||
"stack_duplicates": "Подреждане на дубликати",
|
"stack_duplicates": "Подреждане на дубликати",
|
||||||
"stack_select_one_photo": "Избери една главна снимка за събраните снимки",
|
"stack_select_one_photo": "Избери една главна снимка за събраните снимки",
|
||||||
@@ -1258,9 +1262,9 @@
|
|||||||
"toggle_theme": "Превключване на тема",
|
"toggle_theme": "Превключване на тема",
|
||||||
"total": "Общо",
|
"total": "Общо",
|
||||||
"total_usage": "Общо използвано",
|
"total_usage": "Общо използвано",
|
||||||
"trash": "кошче",
|
"trash": "Кошче",
|
||||||
"trash_all": "Изхвърли всички",
|
"trash_all": "Изхвърли всички",
|
||||||
"trash_count": "Кошче {count, number}",
|
"trash_count": "В Кошчето {count, number}",
|
||||||
"trash_delete_asset": "Вкарай в Кошчето/Изтрий елемент",
|
"trash_delete_asset": "Вкарай в Кошчето/Изтрий елемент",
|
||||||
"trash_no_results_message": "Изтритите снимки и видеоклипове ще се показват тук.",
|
"trash_no_results_message": "Изтритите снимки и видеоклипове ще се показват тук.",
|
||||||
"trashed_items_will_be_permanently_deleted_after": "Изхвърлените в кошчето елементи ще бъдат изтрити за постоянно след {days, plural, one {# ден} other {# дни}}.",
|
"trashed_items_will_be_permanently_deleted_after": "Изхвърлените в кошчето елементи ще бъдат изтрити за постоянно след {days, plural, one {# ден} other {# дни}}.",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Sobre",
|
"about": "Quant a",
|
||||||
"account": "Compte",
|
"account": "Compte",
|
||||||
"account_settings": "Configuració del compte",
|
"account_settings": "Configuració del compte",
|
||||||
"acknowledge": "D'acord",
|
"acknowledge": "D'acord",
|
||||||
@@ -523,6 +523,10 @@
|
|||||||
"date_range": "Interval de dates",
|
"date_range": "Interval de dates",
|
||||||
"day": "Dia",
|
"day": "Dia",
|
||||||
"deduplicate_all": "Desduplica-ho tot",
|
"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": "Localització predeterminada",
|
||||||
"default_locale_description": "Format de dates i números segons la configuració del navegador",
|
"default_locale_description": "Format de dates i números segons la configuració del navegador",
|
||||||
"delete": "Esborra",
|
"delete": "Esborra",
|
||||||
|
|||||||
@@ -523,6 +523,10 @@
|
|||||||
"date_range": "Rozsah dat",
|
"date_range": "Rozsah dat",
|
||||||
"day": "Den",
|
"day": "Den",
|
||||||
"deduplicate_all": "Odstranit všechny duplicity",
|
"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": "Výchozí jazyk",
|
||||||
"default_locale_description": "Formátovat datumy a čísla podle místního prostředí prohlížeče",
|
"default_locale_description": "Formátovat datumy a čísla podle místního prostředí prohlížeče",
|
||||||
"delete": "Smazat",
|
"delete": "Smazat",
|
||||||
@@ -921,7 +925,7 @@
|
|||||||
"oldest_first": "Nejstarší první",
|
"oldest_first": "Nejstarší první",
|
||||||
"onboarding": "Zahájení",
|
"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_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_description": "Nastavíme vaši instanci pomocí několika běžných nastavení.",
|
||||||
"onboarding_welcome_user": "Vítej, {user}",
|
"onboarding_welcome_user": "Vítej, {user}",
|
||||||
"online": "Online",
|
"online": "Online",
|
||||||
@@ -1282,7 +1286,7 @@
|
|||||||
"unselect_all": "Zrušit výběr všech",
|
"unselect_all": "Zrušit výběr všech",
|
||||||
"unselect_all_duplicates": "Zrušit výběr všech duplicit",
|
"unselect_all_duplicates": "Zrušit výběr všech duplicit",
|
||||||
"unstack": "Zrušit seskupení",
|
"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": "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ě",
|
"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",
|
"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_gps_settings_description": "Карттӑпа GPS (каялла геоюмлани) ӗнерленисене йӗркелесе тӑрӑр",
|
||||||
"map_settings": "Карттӑ"
|
"map_settings": "Карттӑ"
|
||||||
},
|
},
|
||||||
|
"albums": "Албумсем",
|
||||||
|
"albums_count": "{count, plural, one {{count, number} албум} other {{count, number} албумсем}}",
|
||||||
|
"all": "Пурте",
|
||||||
|
"all_albums": "Пурте албумсем",
|
||||||
"explore": "Тишкер",
|
"explore": "Тишкер",
|
||||||
"explorer": "Тишкерӳҫӗ",
|
"explorer": "Тишкерӳҫӗ",
|
||||||
|
"favorite": "Юратнӑ",
|
||||||
|
"favorite_or_unfavorite_photo": "Юратнӑ е юратман сӑнӳкерчӗк",
|
||||||
|
"favorites": "Юратнисем",
|
||||||
|
"feature_photo_updated": "Уйрӑм сӑнӳкерчӗк ҫӗнетнӗ",
|
||||||
"manage_sharing_with_partners": "Партнерсемпе пайланассине йӗркелесе пырӑр",
|
"manage_sharing_with_partners": "Партнерсемпе пайланассине йӗркелесе пырӑр",
|
||||||
"map": "Карттӑ",
|
"map": "Карттӑ",
|
||||||
"map_marker_for_images": "{city}, {country} ҫинче ӳкернӗ ӳкерчӗксем валли карттӑ маркерӗ",
|
"map_marker_for_images": "{city}, {country} ҫинче ӳкернӗ ӳкерчӗксем валли карттӑ маркерӗ",
|
||||||
@@ -60,10 +68,15 @@
|
|||||||
"no_explore_results_message": "Хӑвӑр коллекципе киленмешкӗн сӑнӳкерчӗксем ытларах тийӗр.",
|
"no_explore_results_message": "Хӑвӑр коллекципе киленмешкӗн сӑнӳкерчӗксем ытларах тийӗр.",
|
||||||
"open_in_openstreetmap": "OpenStreetMap-па уҫ",
|
"open_in_openstreetmap": "OpenStreetMap-па уҫ",
|
||||||
"partner_sharing": "Партнер пайланӑвӗ",
|
"partner_sharing": "Партнер пайланӑвӗ",
|
||||||
|
"people": "Ҫынсем",
|
||||||
"photos": "Сӑнӳкерчӗксем",
|
"photos": "Сӑнӳкерчӗксем",
|
||||||
"photos_and_videos": "Сӑнӳкерчӗксем тете Видеосем",
|
"photos_and_videos": "Сӑнӳкерчӗксем тете Видеосем",
|
||||||
"photos_count": "{count, plural, one {{count, number} Сӑнӳкерчӗк} other {{count, number} Сӑнӳкерчӗксем}}",
|
"photos_count": "{count, plural, one {{count, number} Сӑнӳкерчӗк} other {{count, number} Сӑнӳкерчӗксем}}",
|
||||||
"photos_from_previous_years": "Иртнӗ ҫулсенчи сӑнӳкерчӗксем",
|
"photos_from_previous_years": "Иртнӗ ҫулсенчи сӑнӳкерчӗксем",
|
||||||
|
"place": "Тӗл",
|
||||||
|
"places": "Тӗлсем",
|
||||||
|
"play": "Выля",
|
||||||
|
"play_memories": "Асаилӳсем выля",
|
||||||
"search_your_photos": "Сӑнӳкерчӗксене шырӑр",
|
"search_your_photos": "Сӑнӳкерчӗксене шырӑр",
|
||||||
"select_photos": "Сӑнӳкерчӗксем суйлӑр",
|
"select_photos": "Сӑнӳкерчӗксем суйлӑр",
|
||||||
"sharing": "Пайлани",
|
"sharing": "Пайлани",
|
||||||
|
|||||||
10
i18n/da.json
10
i18n/da.json
@@ -523,6 +523,10 @@
|
|||||||
"date_range": "Datointerval",
|
"date_range": "Datointerval",
|
||||||
"day": "Dag",
|
"day": "Dag",
|
||||||
"deduplicate_all": "Dedupliker alle",
|
"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": "Standardlokalitet",
|
||||||
"default_locale_description": "Formatér datoer og tal",
|
"default_locale_description": "Formatér datoer og tal",
|
||||||
"delete": "Slet",
|
"delete": "Slet",
|
||||||
@@ -644,6 +648,7 @@
|
|||||||
"unable_to_add_partners": "Ikke i stand til at tilføje partnere",
|
"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_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_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_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_date": "Ikke i stand til at ændre dato",
|
||||||
"unable_to_change_favorite": "Kan ikke ændre favorit for aktiv",
|
"unable_to_change_favorite": "Kan ikke ændre favorit for aktiv",
|
||||||
@@ -730,6 +735,7 @@
|
|||||||
"expired": "Udløbet",
|
"expired": "Udløbet",
|
||||||
"expires_date": "Udløber {date}",
|
"expires_date": "Udløber {date}",
|
||||||
"explore": "Udforsk",
|
"explore": "Udforsk",
|
||||||
|
"explorer": "Udforske",
|
||||||
"export": "Eksportér",
|
"export": "Eksportér",
|
||||||
"export_as_json": "Eksportér som JSON",
|
"export_as_json": "Eksportér som JSON",
|
||||||
"extension": "Udvidelse",
|
"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.",
|
"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",
|
"ok": "Ok",
|
||||||
"oldest_first": "Ældste først",
|
"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_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_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.",
|
"onboarding_welcome_description": "Lad os få din instans sat op med nogle almindelige indstillinger.",
|
||||||
@@ -1249,6 +1256,7 @@
|
|||||||
"to_change_password": "Skift adgangskode",
|
"to_change_password": "Skift adgangskode",
|
||||||
"to_favorite": "Gør til favorit",
|
"to_favorite": "Gør til favorit",
|
||||||
"to_login": "Login",
|
"to_login": "Login",
|
||||||
|
"to_parent": "Gå op",
|
||||||
"to_trash": "Papirkurv",
|
"to_trash": "Papirkurv",
|
||||||
"toggle_settings": "Slå indstillinger til eller fra",
|
"toggle_settings": "Slå indstillinger til eller fra",
|
||||||
"toggle_theme": "Slå mørkt tema til eller fra",
|
"toggle_theme": "Slå mørkt tema til eller fra",
|
||||||
@@ -1334,7 +1342,7 @@
|
|||||||
"warning": "Advarsel",
|
"warning": "Advarsel",
|
||||||
"week": "Uge",
|
"week": "Uge",
|
||||||
"welcome": "Velkommen",
|
"welcome": "Velkommen",
|
||||||
"welcome_to_immich": "Velkommen til immich",
|
"welcome_to_immich": "Velkommen til Immich",
|
||||||
"year": "År",
|
"year": "År",
|
||||||
"years_ago": "{years, plural, one {# år} other {# år}} siden",
|
"years_ago": "{years, plural, one {# år} other {# år}} siden",
|
||||||
"yes": "Ja",
|
"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_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_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.",
|
"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": "Datenbank sichern",
|
||||||
"backup_database_enable_description": "Sicherung der Datenbank aktivieren",
|
"backup_database_enable_description": "Sicherung der Datenbank aktivieren",
|
||||||
"backup_keep_last_amount": "Anzahl der aufzubewahrenden früheren Sicherungen",
|
"backup_keep_last_amount": "Anzahl der aufzubewahrenden früheren Sicherungen",
|
||||||
@@ -83,9 +83,9 @@
|
|||||||
"job_concurrency": "{job} (Anzahl gleichzeitiger Prozesse)",
|
"job_concurrency": "{job} (Anzahl gleichzeitiger Prozesse)",
|
||||||
"job_created": "Aufgabe erstellt",
|
"job_created": "Aufgabe erstellt",
|
||||||
"job_not_concurrency_safe": "Diese Aufgabe ist nicht parallelisierungssicher.",
|
"job_not_concurrency_safe": "Diese Aufgabe ist nicht parallelisierungssicher.",
|
||||||
"job_settings": "Aufgaben-Einstellungen",
|
"job_settings": "Aufgabeneinstellungen",
|
||||||
"job_settings_description": "Gleichzeitige Aufgaben-Prozesse verwalten",
|
"job_settings_description": "Die gleichzeitige Ausführung von Aufgaben verwalten",
|
||||||
"job_status": "Aufgaben-Status",
|
"job_status": "Aufgabenstatus",
|
||||||
"jobs_delayed": "{jobCount, plural, other {# verzögert}}",
|
"jobs_delayed": "{jobCount, plural, other {# verzögert}}",
|
||||||
"jobs_failed": "{jobCount, plural, other {# fehlgeschlagen}}",
|
"jobs_failed": "{jobCount, plural, other {# fehlgeschlagen}}",
|
||||||
"library_created": "Bibliothek erstellt: {library}",
|
"library_created": "Bibliothek erstellt: {library}",
|
||||||
@@ -211,7 +211,7 @@
|
|||||||
"quota_size_gib": "Kontingent (GiB)",
|
"quota_size_gib": "Kontingent (GiB)",
|
||||||
"refreshing_all_libraries": "Alle Bibliotheken aktualisieren",
|
"refreshing_all_libraries": "Alle Bibliotheken aktualisieren",
|
||||||
"registration": "Admin-Registrierung",
|
"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_all": "Alle reparieren",
|
||||||
"repair_matched_items": "{count, plural, one {# Eintrag} other {# Einträge}} gefunden",
|
"repair_matched_items": "{count, plural, one {# Eintrag} other {# Einträge}} gefunden",
|
||||||
"repaired_items": "{count, plural, one {# Eintrag} other {# Einträge}} repariert",
|
"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": "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_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": "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_disabled_description": "Videos nicht transkodieren, dies kann die Wiedergabe auf manchen Geräten beeinträchtigen",
|
||||||
"transcoding_encoding_options": "Kodierungsoptionen",
|
"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": "Hardware-Beschleunigung",
|
||||||
"transcoding_hardware_acceleration_description": "Experimentell; viel schneller, aber bei gleicher Bitrate mit geringerer Qualität",
|
"transcoding_hardware_acceleration_description": "Experimentell; viel schneller, aber bei gleicher Bitrate mit geringerer Qualität",
|
||||||
"transcoding_hardware_decoding": "Hardware-Dekodierung",
|
"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_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_optimal_description": "Videos mit einer höheren Auflösung als der Zielauflösung oder in einem nicht akzeptierten Format",
|
||||||
"transcoding_policy": "Transkodierungsrichtlinie",
|
"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": "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_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)",
|
"transcoding_preset_preset": "Voreinstellung (-preset)",
|
||||||
@@ -312,14 +312,14 @@
|
|||||||
"transcoding_reference_frames": "Referenz-Frames",
|
"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_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_required_description": "Nur Videos in einem nicht akzeptierten Format",
|
||||||
"transcoding_settings": "Video-Transkodierungseinstellungen",
|
"transcoding_settings": "Einstellungen für die Videotranskodierung",
|
||||||
"transcoding_settings_description": "Auflösungs- und Kodierungsinformationen von Videodateien verwalten",
|
"transcoding_settings_description": "Verwalten welche Videos transkodiert werden und wie diese verarbeitet werden",
|
||||||
"transcoding_target_resolution": "Ziel-Auflösung",
|
"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_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": "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_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": "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": "Farbton-Mapping",
|
||||||
"transcoding_tone_mapping_description": "Versucht, das Aussehen von HDR-Videos bei der Konvertierung in SDR beizubehalten. Jeder Algorithmus geht unterschiedliche Kompromisse bei Farbe, Details und Helligkeit ein. Hable bewahrt Details, Mobius bewahrt die Farbe und Reinhard bewahrt die Helligkeit.",
|
"transcoding_tone_mapping_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",
|
"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_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": "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.",
|
"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": "Anzahl der Tage",
|
||||||
"trash_number_of_days_description": "Anzahl der Tage, welche die Objekte im Papierkorb verbleiben, bevor sie endgültig entfernt werden",
|
"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": "Papierkorbeinstellungen",
|
||||||
"trash_settings_description": "Papierkorb-Einstellungen verwalten",
|
"trash_settings_description": "Papierkorbeinstellungen verwalten",
|
||||||
"untracked_files": "Unverfolgte Dateien",
|
"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",
|
"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",
|
"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_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_description": "Das Konto von <b>{user}</b> wird wiederhergestellt.",
|
||||||
"user_restore_scheduled_removal": "Wiederherstellung des Benutzers - geplante Entfernung am {date, date, long}",
|
"user_restore_scheduled_removal": "Wiederherstellung des Benutzers - geplante Entfernung am {date, date, long}",
|
||||||
"user_settings": "Benutzer-Einstellungen",
|
"user_settings": "Benutzereinstellungen",
|
||||||
"user_settings_description": "Benutzer-Einstellungen verwalten",
|
"user_settings_description": "Benutzereinstellungen verwalten",
|
||||||
"user_successfully_removed": "Benutzer {email} wurde erfolgreich entfernt.",
|
"user_successfully_removed": "Benutzer {email} wurde erfolgreich entfernt.",
|
||||||
"version_check_enabled_description": "Versionsprüfung aktivieren",
|
"version_check_enabled_description": "Versionsprüfung aktivieren",
|
||||||
"version_check_implications": "Die Funktion zur Versionsprüfung basiert auf regelmäßiger Kommunikation mit GitHub.com",
|
"version_check_implications": "Die Funktion zur Versionsprüfung basiert auf regelmäßiger Kommunikation mit GitHub.com",
|
||||||
@@ -523,10 +523,10 @@
|
|||||||
"date_range": "Datumsbereich",
|
"date_range": "Datumsbereich",
|
||||||
"day": "Tag",
|
"day": "Tag",
|
||||||
"deduplicate_all": "Alle Duplikate entfernen",
|
"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_1": "Bildgröße in Bytes",
|
||||||
"deduplication_criteria_2": "Anzahl der EXIF-Daten",
|
"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": "Standard-Sprache",
|
||||||
"default_locale_description": "Datumsangaben und Zahlen basierend auf dem Gebietsschema des Browsers formatieren",
|
"default_locale_description": "Datumsangaben und Zahlen basierend auf dem Gebietsschema des Browsers formatieren",
|
||||||
"delete": "Löschen",
|
"delete": "Löschen",
|
||||||
@@ -1324,7 +1324,7 @@
|
|||||||
"version_history_item": "{version} am {date} installiert",
|
"version_history_item": "{version} am {date} installiert",
|
||||||
"video": "Video",
|
"video": "Video",
|
||||||
"video_hover_setting": "Videovorschau beim Hovern abspielen",
|
"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": "Videos",
|
||||||
"videos_count": "{count, plural, one {# Video} other {# Videos}}",
|
"videos_count": "{count, plural, one {# Video} other {# Videos}}",
|
||||||
"view": "Ansicht",
|
"view": "Ansicht",
|
||||||
|
|||||||
13
i18n/el.json
13
i18n/el.json
@@ -289,6 +289,8 @@
|
|||||||
"transcoding_constant_rate_factor": "Σταθερός παράγοντας ρυθμού (-crf)",
|
"transcoding_constant_rate_factor": "Σταθερός παράγοντας ρυθμού (-crf)",
|
||||||
"transcoding_constant_rate_factor_description": "Επίπεδο ποιότητας βίντεο. Οι τυπικές τιμές είναι οι, 23 για το H.264, 28 για το HEVC, 31 για το VP9 και 35 για το AV1. Χαμηλότερες τιμές σημαίνουν καλύτερη ποιότητα, αλλά παράγουν μεγαλύτερα αρχεία.",
|
"transcoding_constant_rate_factor_description": "Επίπεδο ποιότητας βίντεο. Οι τυπικές τιμές είναι οι, 23 για το H.264, 28 για το HEVC, 31 για το VP9 και 35 για το AV1. Χαμηλότερες τιμές σημαίνουν καλύτερη ποιότητα, αλλά παράγουν μεγαλύτερα αρχεία.",
|
||||||
"transcoding_disabled_description": "Να μην μετατραπεί κανένα βίντεο γιατί δύναται να προκαλέσει πρόβλημα αναπαραγωγής σε ορισμένες συσκευές/εφαρμογές",
|
"transcoding_disabled_description": "Να μην μετατραπεί κανένα βίντεο γιατί δύναται να προκαλέσει πρόβλημα αναπαραγωγής σε ορισμένες συσκευές/εφαρμογές",
|
||||||
|
"transcoding_encoding_options": "Επιλογές κωδικοποίησης",
|
||||||
|
"transcoding_encoding_options_description": "Ορίστε τους κωδικοποιητές, την ανάλυση, την ποιότητα και άλλες επιλογές για τα κωδικοποιημένα βίντεο",
|
||||||
"transcoding_hardware_acceleration": "Επιτάχυνση υλικού",
|
"transcoding_hardware_acceleration": "Επιτάχυνση υλικού",
|
||||||
"transcoding_hardware_acceleration_description": "Πειραματικό· πολύ πιο γρήγορο, αλλά θα έχει χαμηλότερη ποιότητα με τον ίδιο ρυθμό μετάδοσης (bitrate)",
|
"transcoding_hardware_acceleration_description": "Πειραματικό· πολύ πιο γρήγορο, αλλά θα έχει χαμηλότερη ποιότητα με τον ίδιο ρυθμό μετάδοσης (bitrate)",
|
||||||
"transcoding_hardware_decoding": "Αποκωδικοποίηση μέσω υλικού",
|
"transcoding_hardware_decoding": "Αποκωδικοποίηση μέσω υλικού",
|
||||||
@@ -301,6 +303,8 @@
|
|||||||
"transcoding_max_keyframe_interval": "Μέγιστο χρονικό διάστημα μεταξύ των καρέ αναφοράς (keyframe)",
|
"transcoding_max_keyframe_interval": "Μέγιστο χρονικό διάστημα μεταξύ των καρέ αναφοράς (keyframe)",
|
||||||
"transcoding_max_keyframe_interval_description": "Ορίζει το μέγιστο διάστημα μεταξύ των καρέ αναφοράς. Χαμηλότερες τιμές μειώνουν την αποδοτικότητα συμπίεσης, αλλά βελτιώνουν τον χρόνο αναζήτησης και μπορεί να βελτιώσουν την ποιότητα σε σκηνές με γρήγορη κίνηση. Η τιμή 0 ρυθμίζει αυτό το διάστημα αυτόματα.",
|
"transcoding_max_keyframe_interval_description": "Ορίζει το μέγιστο διάστημα μεταξύ των καρέ αναφοράς. Χαμηλότερες τιμές μειώνουν την αποδοτικότητα συμπίεσης, αλλά βελτιώνουν τον χρόνο αναζήτησης και μπορεί να βελτιώσουν την ποιότητα σε σκηνές με γρήγορη κίνηση. Η τιμή 0 ρυθμίζει αυτό το διάστημα αυτόματα.",
|
||||||
"transcoding_optimal_description": "Βίντεο με ανώτερη ανάλυση από την επιθυμητή ή σε μη αποδεκτή μορφή",
|
"transcoding_optimal_description": "Βίντεο με ανώτερη ανάλυση από την επιθυμητή ή σε μη αποδεκτή μορφή",
|
||||||
|
"transcoding_policy": "Πολιτική Μετακωδικοποίησης",
|
||||||
|
"transcoding_policy_description": "Ορίστε πότε θα γίνει η μετακωδικοποίηση ενός βίντεο",
|
||||||
"transcoding_preferred_hardware_device": "Προτιμώμενη συσκευή",
|
"transcoding_preferred_hardware_device": "Προτιμώμενη συσκευή",
|
||||||
"transcoding_preferred_hardware_device_description": "Ισχύει μόνο για VAAPI και QSV. Ορίζει τον κόμβο DRI που χρησιμοποιείται για την επιτάχυνση υλικού κατά την κωδικοποίηση.",
|
"transcoding_preferred_hardware_device_description": "Ισχύει μόνο για VAAPI και QSV. Ορίζει τον κόμβο DRI που χρησιμοποιείται για την επιτάχυνση υλικού κατά την κωδικοποίηση.",
|
||||||
"transcoding_preset_preset": "Προκαθορισμένη ρύθμιση (-preset)",
|
"transcoding_preset_preset": "Προκαθορισμένη ρύθμιση (-preset)",
|
||||||
@@ -309,7 +313,7 @@
|
|||||||
"transcoding_reference_frames_description": "Ο αριθμός των καρέ που χρησιμοποιούνται ως αναφορά κατά τη συμπίεση ενός δεδομένου καρέ. Υψηλότερες τιμές βελτιώνουν την αποδοτικότητα της συμπίεσης, αλλά επιβραδύνουν την κωδικοποίηση. Η τιμή 0 ρυθμίζει αυτό τον αριθμό, αυτόματα.",
|
"transcoding_reference_frames_description": "Ο αριθμός των καρέ που χρησιμοποιούνται ως αναφορά κατά τη συμπίεση ενός δεδομένου καρέ. Υψηλότερες τιμές βελτιώνουν την αποδοτικότητα της συμπίεσης, αλλά επιβραδύνουν την κωδικοποίηση. Η τιμή 0 ρυθμίζει αυτό τον αριθμό, αυτόματα.",
|
||||||
"transcoding_required_description": "Μόνο βίντεο που δεν είναι σε αποδεκτή μορφή",
|
"transcoding_required_description": "Μόνο βίντεο που δεν είναι σε αποδεκτή μορφή",
|
||||||
"transcoding_settings": "Ρυθμίσεις μετατροπής βίντεο",
|
"transcoding_settings": "Ρυθμίσεις μετατροπής βίντεο",
|
||||||
"transcoding_settings_description": "Διαχείριση της ανάλυσης και των πληροφοριών κωδικοποίησης των αρχείων βίντεο",
|
"transcoding_settings_description": "Διαχείριση των βίντεο που θα μετακωδικοποιηθούν και του τρόπου επεξεργασίας τους",
|
||||||
"transcoding_target_resolution": "Επιθυμητή ανάλυση",
|
"transcoding_target_resolution": "Επιθυμητή ανάλυση",
|
||||||
"transcoding_target_resolution_description": "Οι υψηλότερες αναλύσεις μπορούν να διατηρήσουν περισσότερες λεπτομέρειες, αλλά απαιτούν περισσότερο χρόνο για κωδικοποίηση, παράγουν μεγαλύτερα αρχεία και μπορεί να μειώσουν την απόκριση της εφαρμογής.",
|
"transcoding_target_resolution_description": "Οι υψηλότερες αναλύσεις μπορούν να διατηρήσουν περισσότερες λεπτομέρειες, αλλά απαιτούν περισσότερο χρόνο για κωδικοποίηση, παράγουν μεγαλύτερα αρχεία και μπορεί να μειώσουν την απόκριση της εφαρμογής.",
|
||||||
"transcoding_temporal_aq": "Χρονική Προσαρμοστική Ποιότητα AQ(Adaptive Quantization)",
|
"transcoding_temporal_aq": "Χρονική Προσαρμοστική Ποιότητα AQ(Adaptive Quantization)",
|
||||||
@@ -322,7 +326,7 @@
|
|||||||
"transcoding_transcode_policy_description": "Πολιτική για το πότε πρέπει να μετατραπεί ένα βίντεο. Τα βίντεο HDR θα μετατρέπονται πάντα (εκτός αν η μετατροπή είναι απενεργοποιημένη).",
|
"transcoding_transcode_policy_description": "Πολιτική για το πότε πρέπει να μετατραπεί ένα βίντεο. Τα βίντεο HDR θα μετατρέπονται πάντα (εκτός αν η μετατροπή είναι απενεργοποιημένη).",
|
||||||
"transcoding_two_pass_encoding": "Κωδικοποίηση δύο περασμάτων",
|
"transcoding_two_pass_encoding": "Κωδικοποίηση δύο περασμάτων",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Μετατροπή σε δύο περάσματα για την παραγωγή βίντεο με καλύτερη κωδικοποίηση. Όταν είναι ενεργοποιημένος ο μέγιστος ρυθμός μετάδοσης (απαραίτητος για λειτουργία με H.264 και HEVC), αυτή η λειτουργία χρησιμοποιεί ένα εύρος ρυθμού μετάδοσης βάσει του μέγιστου ρυθμού μετάδοσης και αγνοεί το CRF. Στον κωδικοποιητή VP9, το CRF μπορεί να χρησιμοποιηθεί εάν ο μέγιστος ρυθμός μετάδοσης είναι απενεργοποιημένος.",
|
"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 είναι ο πιο αποδοτικός κωδικοποιητής, αλλά δεν υποστηρίζεται σε παλαιότερες συσκευές.",
|
"transcoding_video_codec_description": "Ο VP9 έχει υψηλή απόδοση και συμβατότητα με τον ιστότοπο, αλλά απαιτεί περισσότερο χρόνο για μετατροπή. Ο HEVC έχει παρόμοια απόδοση, αλλά χαμηλότερη συμβατότητα με τον ιστότοπο. Ο H.264 είναι ευρέως συμβατός και γρήγορος στη μετατροπή, αλλά παράγει πολύ μεγαλύτερα αρχεία. Ο AV1 είναι ο πιο αποδοτικός κωδικοποιητής, αλλά δεν υποστηρίζεται σε παλαιότερες συσκευές.",
|
||||||
"trash_enabled_description": "Ενεργοποίηση λειτουργιών Κάδου Απορριμμάτων",
|
"trash_enabled_description": "Ενεργοποίηση λειτουργιών Κάδου Απορριμμάτων",
|
||||||
"trash_number_of_days": "Αριθμός ημερών",
|
"trash_number_of_days": "Αριθμός ημερών",
|
||||||
@@ -519,6 +523,10 @@
|
|||||||
"date_range": "Εύρος ημερομηνιών",
|
"date_range": "Εύρος ημερομηνιών",
|
||||||
"day": "Ημέρα",
|
"day": "Ημέρα",
|
||||||
"deduplicate_all": "Αφαίρεση όλων των διπλότυπων",
|
"deduplicate_all": "Αφαίρεση όλων των διπλότυπων",
|
||||||
|
"deduplication_criteria_1": "Μέγεθος εικόνας σε byte",
|
||||||
|
"deduplication_criteria_2": "Αριθμός δεδομένων EXIF",
|
||||||
|
"deduplication_info": "Πληροφορίες Αφαίρεσης Διπλοτύπων",
|
||||||
|
"deduplication_info_description": "Για να προεπιλέξουμε αυτόματα τα αρχεία και να αφαιρέσουμε τα διπλότυπα σε μαζική επεξεργασία, εξετάζουμε σε:",
|
||||||
"default_locale": "Προεπιλεγμένη Τοπική Ρύθμιση",
|
"default_locale": "Προεπιλεγμένη Τοπική Ρύθμιση",
|
||||||
"default_locale_description": "Μορφοποιήστε τις ημερομηνίες και τους αριθμούς με βάση την τοπική ρύθμιση του προγράμματος περιήγησής σας",
|
"default_locale_description": "Μορφοποιήστε τις ημερομηνίες και τους αριθμούς με βάση την τοπική ρύθμιση του προγράμματος περιήγησής σας",
|
||||||
"delete": "Διαγραφή",
|
"delete": "Διαγραφή",
|
||||||
@@ -755,6 +763,7 @@
|
|||||||
"get_help": "Ζητήστε βοήθεια",
|
"get_help": "Ζητήστε βοήθεια",
|
||||||
"getting_started": "Ξεκινώντας",
|
"getting_started": "Ξεκινώντας",
|
||||||
"go_back": "Πηγαίνετε πίσω",
|
"go_back": "Πηγαίνετε πίσω",
|
||||||
|
"go_to_folder": "Μετάβαση στο φάκελο",
|
||||||
"go_to_search": "Πηγαίνετε στην αναζήτηση",
|
"go_to_search": "Πηγαίνετε στην αναζήτηση",
|
||||||
"group_albums_by": "Ομαδοποίηση άλμπουμ κατά...",
|
"group_albums_by": "Ομαδοποίηση άλμπουμ κατά...",
|
||||||
"group_no": "Καμία ομοδοποίηση",
|
"group_no": "Καμία ομοδοποίηση",
|
||||||
|
|||||||
11
i18n/en.json
11
i18n/en.json
@@ -1,4 +1,6 @@
|
|||||||
{
|
{
|
||||||
|
"search_by_description_example": "Hiking day in Sapa",
|
||||||
|
"search_by_description": "Search by description",
|
||||||
"about": "About",
|
"about": "About",
|
||||||
"account": "Account",
|
"account": "Account",
|
||||||
"account_settings": "Account Settings",
|
"account_settings": "Account Settings",
|
||||||
@@ -434,6 +436,7 @@
|
|||||||
"back_close_deselect": "Back, close, or deselect",
|
"back_close_deselect": "Back, close, or deselect",
|
||||||
"backward": "Backward",
|
"backward": "Backward",
|
||||||
"birthdate_saved": "Date of birth saved successfully",
|
"birthdate_saved": "Date of birth saved successfully",
|
||||||
|
"show_shared_links": "Show shared links",
|
||||||
"birthdate_set_description": "Date of birth is used to calculate the age of this person at the time of a photo.",
|
"birthdate_set_description": "Date of birth is used to calculate the age of this person at the time of a photo.",
|
||||||
"blurred_background": "Blurred background",
|
"blurred_background": "Blurred background",
|
||||||
"bugs_and_feature_requests": "Bugs & Feature Requests",
|
"bugs_and_feature_requests": "Bugs & Feature Requests",
|
||||||
@@ -766,8 +769,10 @@
|
|||||||
"go_to_search": "Go to search",
|
"go_to_search": "Go to search",
|
||||||
"go_to_folder": "Go to folder",
|
"go_to_folder": "Go to folder",
|
||||||
"group_albums_by": "Group albums by...",
|
"group_albums_by": "Group albums by...",
|
||||||
|
"group_country": "Group by country",
|
||||||
"group_no": "No grouping",
|
"group_no": "No grouping",
|
||||||
"group_owner": "Group by owner",
|
"group_owner": "Group by owner",
|
||||||
|
"group_places_by": "Group places by...",
|
||||||
"group_year": "Group by year",
|
"group_year": "Group by year",
|
||||||
"has_quota": "Has quota",
|
"has_quota": "Has quota",
|
||||||
"hi_user": "Hi {name} ({email})",
|
"hi_user": "Hi {name} ({email})",
|
||||||
@@ -800,6 +805,7 @@
|
|||||||
"include_shared_albums": "Include shared albums",
|
"include_shared_albums": "Include shared albums",
|
||||||
"include_shared_partner_assets": "Include shared partner assets",
|
"include_shared_partner_assets": "Include shared partner assets",
|
||||||
"individual_share": "Individual share",
|
"individual_share": "Individual share",
|
||||||
|
"individual_shares": "Individual shares",
|
||||||
"info": "Info",
|
"info": "Info",
|
||||||
"interval": {
|
"interval": {
|
||||||
"day_at_onepm": "Every day at 1pm",
|
"day_at_onepm": "Every day at 1pm",
|
||||||
@@ -822,6 +828,7 @@
|
|||||||
"latest_version": "Latest Version",
|
"latest_version": "Latest Version",
|
||||||
"latitude": "Latitude",
|
"latitude": "Latitude",
|
||||||
"leave": "Leave",
|
"leave": "Leave",
|
||||||
|
"lens_model": "Lens model",
|
||||||
"let_others_respond": "Let others respond",
|
"let_others_respond": "Let others respond",
|
||||||
"level": "Level",
|
"level": "Level",
|
||||||
"library": "Library",
|
"library": "Library",
|
||||||
@@ -984,6 +991,7 @@
|
|||||||
"pick_a_location": "Pick a location",
|
"pick_a_location": "Pick a location",
|
||||||
"place": "Place",
|
"place": "Place",
|
||||||
"places": "Places",
|
"places": "Places",
|
||||||
|
"places_count": "{count, plural, one {{count, number} Place} other {{count, number} Places}}",
|
||||||
"play": "Play",
|
"play": "Play",
|
||||||
"play_memories": "Play memories",
|
"play_memories": "Play memories",
|
||||||
"play_motion_photo": "Play Motion Photo",
|
"play_motion_photo": "Play Motion Photo",
|
||||||
@@ -1113,6 +1121,7 @@
|
|||||||
"search_camera_model": "Search camera model...",
|
"search_camera_model": "Search camera model...",
|
||||||
"search_city": "Search city...",
|
"search_city": "Search city...",
|
||||||
"search_country": "Search country...",
|
"search_country": "Search country...",
|
||||||
|
"search_for": "Search for",
|
||||||
"search_for_existing_person": "Search for existing person",
|
"search_for_existing_person": "Search for existing person",
|
||||||
"search_no_people": "No people",
|
"search_no_people": "No people",
|
||||||
"search_no_people_named": "No people named \"{name}\"",
|
"search_no_people_named": "No people named \"{name}\"",
|
||||||
@@ -1165,6 +1174,7 @@
|
|||||||
"shared_from_partner": "Photos from {partner}",
|
"shared_from_partner": "Photos from {partner}",
|
||||||
"shared_link_options": "Shared link options",
|
"shared_link_options": "Shared link options",
|
||||||
"shared_links": "Shared links",
|
"shared_links": "Shared links",
|
||||||
|
"shared_links_description": "Share photos and videos with a link",
|
||||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# shared photos & videos.}}",
|
"shared_photos_and_videos_count": "{assetCount, plural, other {# shared photos & videos.}}",
|
||||||
"shared_with_partner": "Shared with {partner}",
|
"shared_with_partner": "Shared with {partner}",
|
||||||
"sharing": "Sharing",
|
"sharing": "Sharing",
|
||||||
@@ -1274,6 +1284,7 @@
|
|||||||
"unfavorite": "Unfavorite",
|
"unfavorite": "Unfavorite",
|
||||||
"unhide_person": "Unhide person",
|
"unhide_person": "Unhide person",
|
||||||
"unknown": "Unknown",
|
"unknown": "Unknown",
|
||||||
|
"unknown_country": "Unknown Country",
|
||||||
"unknown_year": "Unknown Year",
|
"unknown_year": "Unknown Year",
|
||||||
"unlimited": "Unlimited",
|
"unlimited": "Unlimited",
|
||||||
"unlink_motion_video": "Unlink motion video",
|
"unlink_motion_video": "Unlink motion video",
|
||||||
|
|||||||
@@ -523,6 +523,10 @@
|
|||||||
"date_range": "Rango de fechas",
|
"date_range": "Rango de fechas",
|
||||||
"day": "Día",
|
"day": "Día",
|
||||||
"deduplicate_all": "Deduplicar todo",
|
"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": "Configuración regional predeterminada",
|
||||||
"default_locale_description": "Formatee fechas y números según la configuración regional de su navegador",
|
"default_locale_description": "Formatee fechas y números según la configuración regional de su navegador",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
|
|||||||
@@ -523,6 +523,10 @@
|
|||||||
"date_range": "Kuupäevavahemik",
|
"date_range": "Kuupäevavahemik",
|
||||||
"day": "Päev",
|
"day": "Päev",
|
||||||
"deduplicate_all": "Dedubleeri kõik",
|
"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": "Vaikimisi lokaat",
|
||||||
"default_locale_description": "Vorminda kuupäevad ja numbrid vastavalt brauseri lokaadile",
|
"default_locale_description": "Vorminda kuupäevad ja numbrid vastavalt brauseri lokaadile",
|
||||||
"delete": "Kustuta",
|
"delete": "Kustuta",
|
||||||
@@ -748,6 +752,7 @@
|
|||||||
"filetype": "Failitüüp",
|
"filetype": "Failitüüp",
|
||||||
"filter_people": "Filtreeri isikuid",
|
"filter_people": "Filtreeri isikuid",
|
||||||
"find_them_fast": "Leia teda kiiresti nime järgi otsides",
|
"find_them_fast": "Leia teda kiiresti nime järgi otsides",
|
||||||
|
"fix_incorrect_match": "Paranda ebaõige vaste",
|
||||||
"folders": "Kaustad",
|
"folders": "Kaustad",
|
||||||
"folders_feature_description": "Kaustavaate abil failisüsteemis olevate fotode ja videote sirvimine",
|
"folders_feature_description": "Kaustavaate abil failisüsteemis olevate fotode ja videote sirvimine",
|
||||||
"forward": "Edasi",
|
"forward": "Edasi",
|
||||||
@@ -755,6 +760,7 @@
|
|||||||
"get_help": "Küsi abi",
|
"get_help": "Küsi abi",
|
||||||
"getting_started": "Alustamine",
|
"getting_started": "Alustamine",
|
||||||
"go_back": "Tagasi",
|
"go_back": "Tagasi",
|
||||||
|
"go_to_folder": "Mine kausta",
|
||||||
"go_to_search": "Otsingusse",
|
"go_to_search": "Otsingusse",
|
||||||
"group_albums_by": "Grupeeri albumid...",
|
"group_albums_by": "Grupeeri albumid...",
|
||||||
"group_no": "Ära grupeeri",
|
"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_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",
|
"reassigned_assets_to_new_person": "{count, plural, one {# üksus} other {# üksust}} seostatud uue isikuga",
|
||||||
"reassing_hint": "Seosta valitud üksused olemasoleva isikuga",
|
"reassing_hint": "Seosta valitud üksused olemasoleva isikuga",
|
||||||
|
"recent": "Hiljutine",
|
||||||
"recent-albums": "Hiljutised albumid",
|
"recent-albums": "Hiljutised albumid",
|
||||||
"recent_searches": "Hiljutised otsingud",
|
"recent_searches": "Hiljutised otsingud",
|
||||||
"refresh": "Värskenda",
|
"refresh": "Värskenda",
|
||||||
@@ -1189,6 +1196,7 @@
|
|||||||
"sort_items": "Üksuste arv",
|
"sort_items": "Üksuste arv",
|
||||||
"sort_modified": "Muutmise aeg",
|
"sort_modified": "Muutmise aeg",
|
||||||
"sort_oldest": "Vanim foto",
|
"sort_oldest": "Vanim foto",
|
||||||
|
"sort_people_by_similarity": "Sorteeri isikud sarnasuse järgi",
|
||||||
"sort_recent": "Uusim foto",
|
"sort_recent": "Uusim foto",
|
||||||
"sort_title": "Pealkiri",
|
"sort_title": "Pealkiri",
|
||||||
"source": "Lähtekood",
|
"source": "Lähtekood",
|
||||||
@@ -1309,6 +1317,7 @@
|
|||||||
"view_all_users": "Vaata kõiki kasutajaid",
|
"view_all_users": "Vaata kõiki kasutajaid",
|
||||||
"view_in_timeline": "Vaata ajajoonel",
|
"view_in_timeline": "Vaata ajajoonel",
|
||||||
"view_links": "Vaata linke",
|
"view_links": "Vaata linke",
|
||||||
|
"view_name": "Vaade",
|
||||||
"view_next_asset": "Vaata järgmist üksust",
|
"view_next_asset": "Vaata järgmist üksust",
|
||||||
"view_previous_asset": "Vaata eelmist üksust",
|
"view_previous_asset": "Vaata eelmist üksust",
|
||||||
"view_stack": "Vaata virna",
|
"view_stack": "Vaata virna",
|
||||||
|
|||||||
874
i18n/fa.json
874
i18n/fa.json
@@ -312,157 +312,157 @@
|
|||||||
"admin_password": "رمز عبور مدیر",
|
"admin_password": "رمز عبور مدیر",
|
||||||
"administration": "مدیریت",
|
"administration": "مدیریت",
|
||||||
"advanced": "پیشرفته",
|
"advanced": "پیشرفته",
|
||||||
"album_added": "",
|
"album_added": "آلبوم اضافه شد",
|
||||||
"album_added_notification_setting_description": "",
|
"album_added_notification_setting_description": "",
|
||||||
"album_cover_updated": "",
|
"album_cover_updated": "جلد آلبوم بهروزرسانی شد",
|
||||||
"album_info_updated": "",
|
"album_info_updated": "اطلاعات آلبوم بهروزرسانی شد",
|
||||||
"album_name": "",
|
"album_name": "نام آلبوم",
|
||||||
"album_options": "",
|
"album_options": "گزینههای آلبوم",
|
||||||
"album_updated": "",
|
"album_updated": "آلبوم بهروزرسانی شد",
|
||||||
"album_updated_setting_description": "",
|
"album_updated_setting_description": "",
|
||||||
"albums": "",
|
"albums": "آلبومها",
|
||||||
"albums_count": "",
|
"albums_count": "",
|
||||||
"all": "",
|
"all": "همه",
|
||||||
"all_people": "",
|
"all_people": "همه افراد",
|
||||||
"allow_dark_mode": "",
|
"allow_dark_mode": "اجازه دادن به حالت تاریک",
|
||||||
"allow_edits": "",
|
"allow_edits": "اجازه ویرایش",
|
||||||
"api_key": "",
|
"api_key": "کلید API",
|
||||||
"api_keys": "",
|
"api_keys": "کلیدهای API",
|
||||||
"app_settings": "",
|
"app_settings": "تنظیمات برنامه",
|
||||||
"appears_in": "",
|
"appears_in": "ظاهر میشود در",
|
||||||
"archive": "",
|
"archive": "بایگانی",
|
||||||
"archive_or_unarchive_photo": "",
|
"archive_or_unarchive_photo": "",
|
||||||
"archive_size": "",
|
"archive_size": "اندازه بایگانی",
|
||||||
"archive_size_description": "",
|
"archive_size_description": "",
|
||||||
"asset_offline": "",
|
"asset_offline": "محتوا آفلاین",
|
||||||
"assets": "",
|
"assets": "محتواها",
|
||||||
"authorized_devices": "",
|
"authorized_devices": "دستگاههای مجاز",
|
||||||
"back": "",
|
"back": "بازگشت",
|
||||||
"backward": "",
|
"backward": "عقب",
|
||||||
"blurred_background": "",
|
"blurred_background": "پسزمینه محو",
|
||||||
"bulk_delete_duplicates_confirmation": "",
|
"bulk_delete_duplicates_confirmation": "",
|
||||||
"bulk_keep_duplicates_confirmation": "",
|
"bulk_keep_duplicates_confirmation": "",
|
||||||
"bulk_trash_duplicates_confirmation": "",
|
"bulk_trash_duplicates_confirmation": "",
|
||||||
"camera": "",
|
"camera": "دوربین",
|
||||||
"camera_brand": "",
|
"camera_brand": "برند دوربین",
|
||||||
"camera_model": "",
|
"camera_model": "مدل دوربین",
|
||||||
"cancel": "",
|
"cancel": "لغو",
|
||||||
"cancel_search": "",
|
"cancel_search": "لغو جستجو",
|
||||||
"cannot_merge_people": "",
|
"cannot_merge_people": "نمیتوان افراد را ادغام کرد",
|
||||||
"cannot_update_the_description": "",
|
"cannot_update_the_description": "نمیتوان توضیحات را بهروزرسانی کرد",
|
||||||
"change_date": "",
|
"change_date": "تغییر تاریخ",
|
||||||
"change_expiration_time": "",
|
"change_expiration_time": "تغییر زمان انقضا",
|
||||||
"change_location": "",
|
"change_location": "تغییر مکان",
|
||||||
"change_name": "",
|
"change_name": "تغییر نام",
|
||||||
"change_name_successfully": "",
|
"change_name_successfully": "نام با موفقیت تغییر یافت",
|
||||||
"change_password": "",
|
"change_password": "تغییر رمز عبور",
|
||||||
"change_your_password": "",
|
"change_your_password": "رمز عبور خود را تغییر دهید",
|
||||||
"changed_visibility_successfully": "",
|
"changed_visibility_successfully": "",
|
||||||
"check_all": "",
|
"check_all": "انتخاب همه",
|
||||||
"check_logs": "",
|
"check_logs": "بررسی لاگها",
|
||||||
"choose_matching_people_to_merge": "",
|
"choose_matching_people_to_merge": "",
|
||||||
"city": "",
|
"city": "شهر",
|
||||||
"clear": "",
|
"clear": "پاک کردن",
|
||||||
"clear_all": "",
|
"clear_all": "پاک کردن همه",
|
||||||
"clear_message": "",
|
"clear_message": "پاک کردن پیام",
|
||||||
"clear_value": "",
|
"clear_value": "پاک کردن مقدار",
|
||||||
"close": "",
|
"close": "بستن",
|
||||||
"collapse_all": "",
|
"collapse_all": "جمع کردن همه",
|
||||||
"color_theme": "",
|
"color_theme": "تم رنگ",
|
||||||
"comment_options": "",
|
"comment_options": "گزینههای نظر",
|
||||||
"comments_are_disabled": "",
|
"comments_are_disabled": "نظرات غیرفعال هستند",
|
||||||
"confirm": "",
|
"confirm": "تأیید",
|
||||||
"confirm_admin_password": "",
|
"confirm_admin_password": "تأیید رمز عبور مدیر",
|
||||||
"confirm_delete_shared_link": "",
|
"confirm_delete_shared_link": "",
|
||||||
"confirm_password": "",
|
"confirm_password": "تأیید رمز عبور",
|
||||||
"contain": "",
|
"contain": "شامل",
|
||||||
"context": "",
|
"context": "زمینه",
|
||||||
"continue": "",
|
"continue": "ادامه",
|
||||||
"copied_image_to_clipboard": "",
|
"copied_image_to_clipboard": "تصویر به کلیپبورد کپی شد.",
|
||||||
"copied_to_clipboard": "",
|
"copied_to_clipboard": "به کلیپبورد کپی شد!",
|
||||||
"copy_error": "",
|
"copy_error": "خطا در کپی",
|
||||||
"copy_file_path": "",
|
"copy_file_path": "کپی مسیر فایل",
|
||||||
"copy_image": "",
|
"copy_image": "کپی تصویر",
|
||||||
"copy_link": "",
|
"copy_link": "کپی لینک",
|
||||||
"copy_link_to_clipboard": "",
|
"copy_link_to_clipboard": "کپی لینک به کلیپبورد",
|
||||||
"copy_password": "",
|
"copy_password": "کپی رمز عبور",
|
||||||
"copy_to_clipboard": "",
|
"copy_to_clipboard": "کپی به کلیپبورد",
|
||||||
"country": "",
|
"country": "کشور",
|
||||||
"cover": "",
|
"cover": "جلد",
|
||||||
"covers": "",
|
"covers": "جلدها",
|
||||||
"create": "",
|
"create": "ایجاد",
|
||||||
"create_album": "",
|
"create_album": "ایجاد آلبوم",
|
||||||
"create_library": "",
|
"create_library": "ایجاد کتابخانه",
|
||||||
"create_link": "",
|
"create_link": "ایجاد لینک",
|
||||||
"create_link_to_share": "",
|
"create_link_to_share": "ایجاد لینک برای اشتراکگذاری",
|
||||||
"create_new_person": "",
|
"create_new_person": "ایجاد فرد جدید",
|
||||||
"create_new_user": "",
|
"create_new_user": "ایجاد کاربر جدید",
|
||||||
"create_user": "",
|
"create_user": "ایجاد کاربر",
|
||||||
"created": "",
|
"created": "ایجاد شد",
|
||||||
"current_device": "",
|
"current_device": "دستگاه فعلی",
|
||||||
"custom_locale": "",
|
"custom_locale": "",
|
||||||
"custom_locale_description": "",
|
"custom_locale_description": "",
|
||||||
"dark": "",
|
"dark": "تاریک",
|
||||||
"date_after": "",
|
"date_after": "تاریخ پس از",
|
||||||
"date_and_time": "",
|
"date_and_time": "تاریخ و زمان",
|
||||||
"date_before": "",
|
"date_before": "تاریخ قبل از",
|
||||||
"date_range": "",
|
"date_range": "بازه زمانی",
|
||||||
"day": "",
|
"day": "روز",
|
||||||
"deduplicate_all": "",
|
"deduplicate_all": "حذف تکراریها به صورت کامل",
|
||||||
"default_locale": "",
|
"default_locale": "",
|
||||||
"default_locale_description": "",
|
"default_locale_description": "",
|
||||||
"delete": "",
|
"delete": "حذف",
|
||||||
"delete_album": "",
|
"delete_album": "حذف آلبوم",
|
||||||
"delete_api_key_prompt": "",
|
"delete_api_key_prompt": "",
|
||||||
"delete_duplicates_confirmation": "",
|
"delete_duplicates_confirmation": "",
|
||||||
"delete_key": "",
|
"delete_key": "حذف کلید",
|
||||||
"delete_library": "",
|
"delete_library": "حذف کتابخانه",
|
||||||
"delete_link": "",
|
"delete_link": "حذف لینک",
|
||||||
"delete_shared_link": "",
|
"delete_shared_link": "حذف لینک اشتراکی",
|
||||||
"delete_user": "",
|
"delete_user": "حذف کاربر",
|
||||||
"deleted_shared_link": "",
|
"deleted_shared_link": "لینک اشتراکی حذف شد",
|
||||||
"description": "",
|
"description": "توضیحات",
|
||||||
"details": "",
|
"details": "جزئیات",
|
||||||
"direction": "",
|
"direction": "جهت",
|
||||||
"disabled": "",
|
"disabled": "غیرفعال",
|
||||||
"disallow_edits": "",
|
"disallow_edits": "عدم اجازه ویرایش",
|
||||||
"discover": "",
|
"discover": "کشف کردن",
|
||||||
"dismiss_all_errors": "",
|
"dismiss_all_errors": "رد تمام خطاها",
|
||||||
"dismiss_error": "",
|
"dismiss_error": "رد خطا",
|
||||||
"display_options": "",
|
"display_options": "گزینههای نمایش",
|
||||||
"display_order": "",
|
"display_order": "ترتیب نمایش",
|
||||||
"display_original_photos": "",
|
"display_original_photos": "نمایش عکسهای اصلی",
|
||||||
"display_original_photos_setting_description": "",
|
"display_original_photos_setting_description": "",
|
||||||
"done": "",
|
"done": "انجام شد",
|
||||||
"download": "",
|
"download": "دانلود",
|
||||||
"download_settings": "",
|
"download_settings": "تنظیمات دانلود",
|
||||||
"download_settings_description": "",
|
"download_settings_description": "مدیریت تنظیمات مرتبط با دانلود محتوا",
|
||||||
"downloading": "",
|
"downloading": "در حال دانلود",
|
||||||
"duplicates": "",
|
"duplicates": "تکراریها",
|
||||||
"duplicates_description": "",
|
"duplicates_description": "",
|
||||||
"duration": "",
|
"duration": "مدت زمان",
|
||||||
"edit_album": "",
|
"edit_album": "ویرایش آلبوم",
|
||||||
"edit_avatar": "",
|
"edit_avatar": "ویرایش آواتار",
|
||||||
"edit_date": "",
|
"edit_date": "ویرایش تاریخ",
|
||||||
"edit_date_and_time": "",
|
"edit_date_and_time": "ویرایش تاریخ و زمان",
|
||||||
"edit_exclusion_pattern": "",
|
"edit_exclusion_pattern": "ویرایش الگوی استثناء",
|
||||||
"edit_faces": "",
|
"edit_faces": "ویرایش چهرهها",
|
||||||
"edit_import_path": "",
|
"edit_import_path": "",
|
||||||
"edit_import_paths": "",
|
"edit_import_paths": "",
|
||||||
"edit_key": "",
|
"edit_key": "ویرایش کلید",
|
||||||
"edit_link": "",
|
"edit_link": "ویرایش لینک",
|
||||||
"edit_location": "",
|
"edit_location": "ویرایش مکان",
|
||||||
"edit_name": "",
|
"edit_name": "ویرایش نام",
|
||||||
"edit_people": "",
|
"edit_people": "ویرایش افراد",
|
||||||
"edit_title": "",
|
"edit_title": "ویرایش عنوان",
|
||||||
"edit_user": "",
|
"edit_user": "ویرایش کاربر",
|
||||||
"edited": "",
|
"edited": "ویرایش شد",
|
||||||
"editor": "",
|
"editor": "ویرایشگر",
|
||||||
"email": "",
|
"email": "ایمیل",
|
||||||
"empty_trash": "",
|
"empty_trash": "خالی کردن سطل زباله",
|
||||||
"end_date": "",
|
"end_date": "تاریخ پایان",
|
||||||
"error": "",
|
"error": "خطا",
|
||||||
"error_loading_image": "",
|
"error_loading_image": "خطا در بارگذاری تصویر",
|
||||||
"errors": {
|
"errors": {
|
||||||
"exclusion_pattern_already_exists": "",
|
"exclusion_pattern_already_exists": "",
|
||||||
"import_path_already_exists": "",
|
"import_path_already_exists": "",
|
||||||
@@ -530,400 +530,400 @@
|
|||||||
"unable_to_update_timeline_display_status": "",
|
"unable_to_update_timeline_display_status": "",
|
||||||
"unable_to_update_user": ""
|
"unable_to_update_user": ""
|
||||||
},
|
},
|
||||||
"exit_slideshow": "",
|
"exit_slideshow": "خروج از نمایش اسلاید",
|
||||||
"expand_all": "",
|
"expand_all": "باز کردن همه",
|
||||||
"expire_after": "",
|
"expire_after": "منقضی شدن بعد از",
|
||||||
"expired": "",
|
"expired": "منقضی شده",
|
||||||
"explore": "",
|
"explore": "کاوش کردن",
|
||||||
"export": "",
|
"export": "صادر کردن",
|
||||||
"export_as_json": "",
|
"export_as_json": "صادر کردن بهصورت JSON",
|
||||||
"extension": "",
|
"extension": "پسوند",
|
||||||
"external": "",
|
"external": "خارجی",
|
||||||
"external_libraries": "",
|
"external_libraries": "کتابخانههای خارجی",
|
||||||
"favorite": "",
|
"favorite": "علاقهمندی",
|
||||||
"favorite_or_unfavorite_photo": "",
|
"favorite_or_unfavorite_photo": "",
|
||||||
"favorites": "",
|
"favorites": "علاقهمندیها",
|
||||||
"feature_photo_updated": "",
|
"feature_photo_updated": "",
|
||||||
"file_name": "",
|
"file_name": "نام فایل",
|
||||||
"file_name_or_extension": "",
|
"file_name_or_extension": "نام فایل یا پسوند",
|
||||||
"filename": "",
|
"filename": "نام فایل",
|
||||||
"filetype": "",
|
"filetype": "نوع فایل",
|
||||||
"filter_people": "",
|
"filter_people": "فیلتر افراد",
|
||||||
"find_them_fast": "",
|
"find_them_fast": "",
|
||||||
"fix_incorrect_match": "",
|
"fix_incorrect_match": "رفع تطابق نادرست",
|
||||||
"forward": "",
|
"forward": "جلو",
|
||||||
"general": "",
|
"general": "عمومی",
|
||||||
"get_help": "",
|
"get_help": "دریافت کمک",
|
||||||
"getting_started": "",
|
"getting_started": "شروع به کار",
|
||||||
"go_back": "",
|
"go_back": "بازگشت",
|
||||||
"go_to_search": "",
|
"go_to_search": "رفتن به جستجو",
|
||||||
"group_albums_by": "",
|
"group_albums_by": "گروهبندی آلبومها براساس...",
|
||||||
"has_quota": "",
|
"has_quota": "دارای سهمیه",
|
||||||
"hide_gallery": "",
|
"hide_gallery": "پنهان کردن گالری",
|
||||||
"hide_password": "",
|
"hide_password": "پنهان کردن رمز عبور",
|
||||||
"hide_person": "",
|
"hide_person": "پنهان کردن فرد",
|
||||||
"host": "",
|
"host": "میزبان",
|
||||||
"hour": "",
|
"hour": "ساعت",
|
||||||
"image": "",
|
"image": "تصویر",
|
||||||
"immich_logo": "",
|
"immich_logo": "لوگوی Immich",
|
||||||
"immich_web_interface": "",
|
"immich_web_interface": "رابط وب Immich",
|
||||||
"import_from_json": "",
|
"import_from_json": "وارد کردن از JSON",
|
||||||
"import_path": "",
|
"import_path": "مسیر وارد کردن",
|
||||||
"in_albums": "",
|
"in_albums": "",
|
||||||
"in_archive": "",
|
"in_archive": "در بایگانی",
|
||||||
"include_archived": "",
|
"include_archived": "شامل بایگانی شدهها",
|
||||||
"include_shared_albums": "",
|
"include_shared_albums": "شامل آلبومهای اشتراکی",
|
||||||
"include_shared_partner_assets": "",
|
"include_shared_partner_assets": "",
|
||||||
"individual_share": "",
|
"individual_share": "اشتراک فردی",
|
||||||
"info": "",
|
"info": "اطلاعات",
|
||||||
"interval": {
|
"interval": {
|
||||||
"day_at_onepm": "",
|
"day_at_onepm": "",
|
||||||
"hours": "",
|
"hours": "",
|
||||||
"night_at_midnight": "",
|
"night_at_midnight": "",
|
||||||
"night_at_twoam": ""
|
"night_at_twoam": ""
|
||||||
},
|
},
|
||||||
"invite_people": "",
|
"invite_people": "دعوت افراد",
|
||||||
"invite_to_album": "",
|
"invite_to_album": "دعوت به آلبوم",
|
||||||
"jobs": "",
|
"jobs": "وظایف",
|
||||||
"keep": "",
|
"keep": "نگه داشتن",
|
||||||
"keep_all": "",
|
"keep_all": "نگه داشتن همه",
|
||||||
"keyboard_shortcuts": "",
|
"keyboard_shortcuts": "میانبرهای صفحهکلید",
|
||||||
"language": "",
|
"language": "زبان",
|
||||||
"language_setting_description": "",
|
"language_setting_description": "انتخاب زبان دلخواه شما",
|
||||||
"last_seen": "",
|
"last_seen": "آخرین مشاهده",
|
||||||
"leave": "",
|
"leave": "ترک کردن",
|
||||||
"let_others_respond": "",
|
"let_others_respond": "اجازه به دیگران برای پاسخگویی",
|
||||||
"level": "",
|
"level": "سطح",
|
||||||
"library": "",
|
"library": "کتابخانه",
|
||||||
"library_options": "",
|
"library_options": "گزینههای کتابخانه",
|
||||||
"light": "",
|
"light": "روشن",
|
||||||
"link_options": "",
|
"link_options": "گزینههای لینک",
|
||||||
"link_to_oauth": "",
|
"link_to_oauth": "اتصال به OAuth",
|
||||||
"linked_oauth_account": "",
|
"linked_oauth_account": "حساب OAuth متصل شده",
|
||||||
"list": "",
|
"list": "لیست",
|
||||||
"loading": "",
|
"loading": "در حال بارگذاری",
|
||||||
"loading_search_results_failed": "",
|
"loading_search_results_failed": "بارگذاری نتایج جستجو ناموفق بود",
|
||||||
"log_out": "",
|
"log_out": "خروج از سیستم",
|
||||||
"log_out_all_devices": "",
|
"log_out_all_devices": "خروج از همه دستگاهها",
|
||||||
"login_has_been_disabled": "",
|
"login_has_been_disabled": "ورود غیرفعال شده است.",
|
||||||
"look": "",
|
"look": "نگاه کردن",
|
||||||
"loop_videos": "",
|
"loop_videos": "پخش مداوم ویدئوها",
|
||||||
"loop_videos_description": "",
|
"loop_videos_description": "",
|
||||||
"make": "",
|
"make": "ساختن",
|
||||||
"manage_shared_links": "",
|
"manage_shared_links": "مدیریت لینکهای اشتراکی",
|
||||||
"manage_sharing_with_partners": "",
|
"manage_sharing_with_partners": "",
|
||||||
"manage_the_app_settings": "",
|
"manage_the_app_settings": "مدیریت تنظیمات برنامه",
|
||||||
"manage_your_account": "",
|
"manage_your_account": "مدیریت حساب کاربری شما",
|
||||||
"manage_your_api_keys": "",
|
"manage_your_api_keys": "مدیریت کلیدهای API شما",
|
||||||
"manage_your_devices": "",
|
"manage_your_devices": "مدیریت دستگاههای متصل",
|
||||||
"manage_your_oauth_connection": "",
|
"manage_your_oauth_connection": "مدیریت اتصال OAuth شما",
|
||||||
"map": "",
|
"map": "نقشه",
|
||||||
"map_marker_with_image": "",
|
"map_marker_with_image": "",
|
||||||
"map_settings": "",
|
"map_settings": "تنظیمات نقشه",
|
||||||
"matches": "",
|
"matches": "تطابقها",
|
||||||
"media_type": "",
|
"media_type": "نوع رسانه",
|
||||||
"memories": "",
|
"memories": "خاطرات",
|
||||||
"memories_setting_description": "",
|
"memories_setting_description": "",
|
||||||
"memory": "",
|
"memory": "خاطره",
|
||||||
"menu": "",
|
"menu": "منو",
|
||||||
"merge": "",
|
"merge": "ادغام",
|
||||||
"merge_people": "",
|
"merge_people": "ادغام افراد",
|
||||||
"merge_people_limit": "",
|
"merge_people_limit": "",
|
||||||
"merge_people_prompt": "",
|
"merge_people_prompt": "",
|
||||||
"merge_people_successfully": "",
|
"merge_people_successfully": "ادغام افراد با موفقیت انجام شد",
|
||||||
"minimize": "",
|
"minimize": "کوچک کردن",
|
||||||
"minute": "",
|
"minute": "دقیقه",
|
||||||
"missing": "",
|
"missing": "گمشده",
|
||||||
"model": "",
|
"model": "مدل",
|
||||||
"month": "",
|
"month": "ماه",
|
||||||
"more": "",
|
"more": "بیشتر",
|
||||||
"moved_to_trash": "",
|
"moved_to_trash": "به سطل زباله منتقل شد",
|
||||||
"my_albums": "",
|
"my_albums": "آلبومهای من",
|
||||||
"name": "",
|
"name": "نام",
|
||||||
"name_or_nickname": "",
|
"name_or_nickname": "نام یا لقب",
|
||||||
"never": "",
|
"never": "هرگز",
|
||||||
"new_api_key": "",
|
"new_api_key": "کلید API جدید",
|
||||||
"new_password": "",
|
"new_password": "رمز عبور جدید",
|
||||||
"new_person": "",
|
"new_person": "فرد جدید",
|
||||||
"new_user_created": "",
|
"new_user_created": "کاربر جدید ایجاد شد",
|
||||||
"newest_first": "",
|
"newest_first": "جدیدترین ابتدا",
|
||||||
"next": "",
|
"next": "بعدی",
|
||||||
"next_memory": "",
|
"next_memory": "خاطره بعدی",
|
||||||
"no": "",
|
"no": "خیر",
|
||||||
"no_albums_message": "",
|
"no_albums_message": "",
|
||||||
"no_archived_assets_message": "",
|
"no_archived_assets_message": "",
|
||||||
"no_assets_message": "",
|
"no_assets_message": "",
|
||||||
"no_duplicates_found": "",
|
"no_duplicates_found": "هیچ تکراری یافت نشد.",
|
||||||
"no_exif_info_available": "",
|
"no_exif_info_available": "اطلاعات EXIF موجود نیست",
|
||||||
"no_explore_results_message": "",
|
"no_explore_results_message": "",
|
||||||
"no_favorites_message": "",
|
"no_favorites_message": "",
|
||||||
"no_libraries_message": "",
|
"no_libraries_message": "",
|
||||||
"no_name": "",
|
"no_name": "بدون نام",
|
||||||
"no_places": "",
|
"no_places": "مکانی یافت نشد",
|
||||||
"no_results": "",
|
"no_results": "نتیجهای یافت نشد",
|
||||||
"no_shared_albums_message": "",
|
"no_shared_albums_message": "",
|
||||||
"not_in_any_album": "",
|
"not_in_any_album": "در هیچ آلبومی نیست",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "",
|
"note_apply_storage_label_to_previously_uploaded assets": "",
|
||||||
"note_unlimited_quota": "",
|
"note_unlimited_quota": "",
|
||||||
"notes": "",
|
"notes": "یادداشتها",
|
||||||
"notification_toggle_setting_description": "",
|
"notification_toggle_setting_description": "اعلانهای ایمیلی را فعال کنید",
|
||||||
"notifications": "",
|
"notifications": "اعلانها",
|
||||||
"notifications_setting_description": "",
|
"notifications_setting_description": "مدیریت اعلانها",
|
||||||
"oauth": "",
|
"oauth": "OAuth",
|
||||||
"offline": "",
|
"offline": "آفلاین",
|
||||||
"offline_paths": "",
|
"offline_paths": "مسیرهای آفلاین",
|
||||||
"offline_paths_description": "",
|
"offline_paths_description": "",
|
||||||
"ok": "",
|
"ok": "تأیید",
|
||||||
"oldest_first": "",
|
"oldest_first": "قدیمیترین ابتدا",
|
||||||
"online": "",
|
"online": "آنلاین",
|
||||||
"only_favorites": "",
|
"only_favorites": "فقط علاقهمندیها",
|
||||||
"open_the_search_filters": "",
|
"open_the_search_filters": "باز کردن فیلترهای جستجو",
|
||||||
"options": "",
|
"options": "گزینهها",
|
||||||
"organize_your_library": "",
|
"organize_your_library": "کتابخانه خود را سازماندهی کنید",
|
||||||
"other": "",
|
"other": "دیگر",
|
||||||
"other_devices": "",
|
"other_devices": "دستگاههای دیگر",
|
||||||
"other_variables": "",
|
"other_variables": "متغیرهای دیگر",
|
||||||
"owned": "",
|
"owned": "مالکیت",
|
||||||
"owner": "",
|
"owner": "مالک",
|
||||||
"partner": "",
|
"partner": "شریک",
|
||||||
"partner_can_access": "",
|
"partner_can_access": "{partner} میتواند دسترسی داشته باشد",
|
||||||
"partner_can_access_assets": "",
|
"partner_can_access_assets": "",
|
||||||
"partner_can_access_location": "",
|
"partner_can_access_location": "مکانهایی که عکسهای شما گرفته شدهاند",
|
||||||
"partner_sharing": "",
|
"partner_sharing": "اشتراکگذاری با شریک",
|
||||||
"partners": "",
|
"partners": "شرکا",
|
||||||
"password": "",
|
"password": "رمز عبور",
|
||||||
"password_does_not_match": "",
|
"password_does_not_match": "رمز عبور مطابقت ندارد",
|
||||||
"password_required": "",
|
"password_required": "رمز عبور مورد نیاز است",
|
||||||
"password_reset_success": "",
|
"password_reset_success": "بازنشانی رمز عبور موفقیتآمیز بود",
|
||||||
"past_durations": {
|
"past_durations": {
|
||||||
"days": "",
|
"days": "",
|
||||||
"hours": "",
|
"hours": "",
|
||||||
"years": ""
|
"years": ""
|
||||||
},
|
},
|
||||||
"path": "",
|
"path": "مسیر",
|
||||||
"pattern": "",
|
"pattern": "الگو",
|
||||||
"pause": "",
|
"pause": "توقف",
|
||||||
"pause_memories": "",
|
"pause_memories": "توقف خاطرات",
|
||||||
"paused": "",
|
"paused": "متوقف شده",
|
||||||
"pending": "",
|
"pending": "در انتظار",
|
||||||
"people": "",
|
"people": "افراد",
|
||||||
"people_sidebar_description": "",
|
"people_sidebar_description": "",
|
||||||
"permanent_deletion_warning": "",
|
"permanent_deletion_warning": "هشدار حذف دائمی",
|
||||||
"permanent_deletion_warning_setting_description": "",
|
"permanent_deletion_warning_setting_description": "نمایش هشدار هنگام حذف دائمی محتواها",
|
||||||
"permanently_delete": "",
|
"permanently_delete": "حذف دائمی",
|
||||||
"permanently_deleted_asset": "",
|
"permanently_deleted_asset": "محتوای حذف شده دائمی",
|
||||||
"person": "",
|
"person": "فرد",
|
||||||
"photos": "",
|
"photos": "عکسها",
|
||||||
"photos_count": "",
|
"photos_count": "",
|
||||||
"photos_from_previous_years": "",
|
"photos_from_previous_years": "عکسهای سالهای گذشته",
|
||||||
"pick_a_location": "",
|
"pick_a_location": "یک مکان انتخاب کنید",
|
||||||
"place": "",
|
"place": "مکان",
|
||||||
"places": "",
|
"places": "مکانها",
|
||||||
"play": "",
|
"play": "پخش",
|
||||||
"play_memories": "",
|
"play_memories": "پخش خاطرات",
|
||||||
"play_motion_photo": "",
|
"play_motion_photo": "پخش عکس متحرک",
|
||||||
"play_or_pause_video": "",
|
"play_or_pause_video": "پخش یا توقف ویدیو",
|
||||||
"port": "",
|
"port": "پورت",
|
||||||
"preset": "",
|
"preset": "پیشفرض",
|
||||||
"preview": "",
|
"preview": "پیشنمایش",
|
||||||
"previous": "",
|
"previous": "قبلی",
|
||||||
"previous_memory": "",
|
"previous_memory": "خاطره قبلی",
|
||||||
"previous_or_next_photo": "",
|
"previous_or_next_photo": "عکس قبلی یا بعدی",
|
||||||
"primary": "",
|
"primary": "اصلی",
|
||||||
"profile_picture_set": "",
|
"profile_picture_set": "تصویر پروفایل تنظیم شد.",
|
||||||
"public_share": "",
|
"public_share": "اشتراک عمومی",
|
||||||
"reaction_options": "",
|
"reaction_options": "گزینههای واکنش",
|
||||||
"read_changelog": "",
|
"read_changelog": "مطالعه تغییرات نسخه",
|
||||||
"recent": "",
|
"recent": "اخیر",
|
||||||
"recent_searches": "",
|
"recent_searches": "جستجوهای اخیر",
|
||||||
"refresh": "",
|
"refresh": "تازه سازی",
|
||||||
"refreshed": "",
|
"refreshed": "تازه سازی شد",
|
||||||
"refreshes_every_file": "",
|
"refreshes_every_file": "",
|
||||||
"remove": "",
|
"remove": "حذف",
|
||||||
"remove_deleted_assets": "",
|
"remove_deleted_assets": "حذف محتواهای حذفشده",
|
||||||
"remove_from_album": "",
|
"remove_from_album": "حذف از آلبوم",
|
||||||
"remove_from_favorites": "",
|
"remove_from_favorites": "حذف از علاقهمندیها",
|
||||||
"remove_from_shared_link": "",
|
"remove_from_shared_link": "",
|
||||||
"removed_api_key": "",
|
"removed_api_key": "",
|
||||||
"rename": "",
|
"rename": "تغییر نام",
|
||||||
"repair": "",
|
"repair": "تعمیر",
|
||||||
"repair_no_results_message": "",
|
"repair_no_results_message": "",
|
||||||
"replace_with_upload": "",
|
"replace_with_upload": "جایگزینی با آپلود",
|
||||||
"require_password": "",
|
"require_password": "",
|
||||||
"require_user_to_change_password_on_first_login": "",
|
"require_user_to_change_password_on_first_login": "",
|
||||||
"reset": "",
|
"reset": "بازنشانی",
|
||||||
"reset_password": "",
|
"reset_password": "بازنشانی رمز عبور",
|
||||||
"reset_people_visibility": "",
|
"reset_people_visibility": "",
|
||||||
"resolved_all_duplicates": "",
|
"resolved_all_duplicates": "",
|
||||||
"restore": "",
|
"restore": "بازیابی",
|
||||||
"restore_all": "",
|
"restore_all": "بازیابی همه",
|
||||||
"restore_user": "",
|
"restore_user": "بازیابی کاربر",
|
||||||
"resume": "",
|
"resume": "ادامه",
|
||||||
"retry_upload": "",
|
"retry_upload": "",
|
||||||
"review_duplicates": "",
|
"review_duplicates": "بررسی تکراریها",
|
||||||
"role": "",
|
"role": "نقش",
|
||||||
"save": "",
|
"save": "ذخیره",
|
||||||
"saved_api_key": "",
|
"saved_api_key": "",
|
||||||
"saved_profile": "",
|
"saved_profile": "پروفایل ذخیره شد",
|
||||||
"saved_settings": "",
|
"saved_settings": "تنظیمات ذخیره شد",
|
||||||
"say_something": "",
|
"say_something": "چیزی بگویید",
|
||||||
"scan_all_libraries": "",
|
"scan_all_libraries": "اسکن همه کتابخانهها",
|
||||||
"scan_settings": "",
|
"scan_settings": "تنظیمات اسکن",
|
||||||
"scanning_for_album": "",
|
"scanning_for_album": "",
|
||||||
"search": "",
|
"search": "جستجو",
|
||||||
"search_albums": "",
|
"search_albums": "جستجوی آلبومها",
|
||||||
"search_by_context": "",
|
"search_by_context": "جستجو براساس زمینه",
|
||||||
"search_camera_make": "",
|
"search_camera_make": "جستجوی برند دوربین...",
|
||||||
"search_camera_model": "",
|
"search_camera_model": "جستجوی مدل دوربین...",
|
||||||
"search_city": "",
|
"search_city": "جستجوی شهر...",
|
||||||
"search_country": "",
|
"search_country": "جستجوی کشور...",
|
||||||
"search_for_existing_person": "",
|
"search_for_existing_person": "جستجوی فرد موجود",
|
||||||
"search_people": "",
|
"search_people": "جستجوی افراد",
|
||||||
"search_places": "",
|
"search_places": "جستجوی مکانها",
|
||||||
"search_state": "",
|
"search_state": "جستجوی ایالت...",
|
||||||
"search_timezone": "",
|
"search_timezone": "جستجوی منطقه زمانی...",
|
||||||
"search_type": "",
|
"search_type": "نوع جستجو",
|
||||||
"search_your_photos": "",
|
"search_your_photos": "",
|
||||||
"searching_locales": "",
|
"searching_locales": "",
|
||||||
"second": "",
|
"second": "ثانیه",
|
||||||
"select_album_cover": "",
|
"select_album_cover": "انتخاب جلد آلبوم",
|
||||||
"select_all": "",
|
"select_all": "انتخاب همه",
|
||||||
"select_avatar_color": "",
|
"select_avatar_color": "انتخاب رنگ آواتار",
|
||||||
"select_face": "",
|
"select_face": "انتخاب چهره",
|
||||||
"select_featured_photo": "",
|
"select_featured_photo": "انتخاب عکس ویژه",
|
||||||
"select_keep_all": "",
|
"select_keep_all": "انتخاب نگهداری همه",
|
||||||
"select_library_owner": "",
|
"select_library_owner": "انتخاب مالک کتابخانه",
|
||||||
"select_new_face": "",
|
"select_new_face": "انتخاب چهره جدید",
|
||||||
"select_photos": "",
|
"select_photos": "انتخاب عکسها",
|
||||||
"select_trash_all": "",
|
"select_trash_all": "",
|
||||||
"selected": "",
|
"selected": "انتخاب شده",
|
||||||
"send_message": "",
|
"send_message": "ارسال پیام",
|
||||||
"send_welcome_email": "",
|
"send_welcome_email": "ارسال ایمیل خوشآمدگویی",
|
||||||
"server_stats": "",
|
"server_stats": "آمار سرور",
|
||||||
"set": "",
|
"set": "تنظیم",
|
||||||
"set_as_album_cover": "",
|
"set_as_album_cover": "",
|
||||||
"set_as_profile_picture": "",
|
"set_as_profile_picture": "",
|
||||||
"set_date_of_birth": "",
|
"set_date_of_birth": "تنظیم تاریخ تولد",
|
||||||
"set_profile_picture": "",
|
"set_profile_picture": "تنظیم تصویر پروفایل",
|
||||||
"set_slideshow_to_fullscreen": "",
|
"set_slideshow_to_fullscreen": "",
|
||||||
"settings": "",
|
"settings": "تنظیمات",
|
||||||
"settings_saved": "",
|
"settings_saved": "تنظیمات ذخیره شد",
|
||||||
"share": "",
|
"share": "اشتراکگذاری",
|
||||||
"shared": "",
|
"shared": "مشترک",
|
||||||
"shared_by": "",
|
"shared_by": "مشترک توسط",
|
||||||
"shared_by_you": "",
|
"shared_by_you": "",
|
||||||
"shared_from_partner": "",
|
"shared_from_partner": "عکسها از {partner}",
|
||||||
"shared_links": "",
|
"shared_links": "لینکهای اشتراکی",
|
||||||
"shared_photos_and_videos_count": "",
|
"shared_photos_and_videos_count": "",
|
||||||
"shared_with_partner": "",
|
"shared_with_partner": "مشترک با {partner}",
|
||||||
"sharing": "",
|
"sharing": "اشتراکگذاری",
|
||||||
"sharing_sidebar_description": "",
|
"sharing_sidebar_description": "",
|
||||||
"show_album_options": "",
|
"show_album_options": "نمایش گزینههای آلبوم",
|
||||||
"show_and_hide_people": "",
|
"show_and_hide_people": "",
|
||||||
"show_file_location": "",
|
"show_file_location": "نمایش مسیر فایل",
|
||||||
"show_gallery": "",
|
"show_gallery": "نمایش گالری",
|
||||||
"show_hidden_people": "",
|
"show_hidden_people": "نمایش افراد پنهان",
|
||||||
"show_in_timeline": "",
|
"show_in_timeline": "",
|
||||||
"show_in_timeline_setting_description": "",
|
"show_in_timeline_setting_description": "",
|
||||||
"show_keyboard_shortcuts": "",
|
"show_keyboard_shortcuts": "",
|
||||||
"show_metadata": "",
|
"show_metadata": "نمایش اطلاعات متا",
|
||||||
"show_or_hide_info": "",
|
"show_or_hide_info": "",
|
||||||
"show_password": "",
|
"show_password": "نمایش رمز عبور",
|
||||||
"show_person_options": "",
|
"show_person_options": "",
|
||||||
"show_progress_bar": "",
|
"show_progress_bar": "نمایش نوار پیشرفت",
|
||||||
"show_search_options": "",
|
"show_search_options": "نمایش گزینههای جستجو",
|
||||||
"shuffle": "",
|
"shuffle": "تصادفی",
|
||||||
"sign_out": "",
|
"sign_out": "خروج",
|
||||||
"sign_up": "",
|
"sign_up": "ثبتنام",
|
||||||
"size": "",
|
"size": "اندازه",
|
||||||
"skip_to_content": "",
|
"skip_to_content": "رفتن به محتوا",
|
||||||
"slideshow": "",
|
"slideshow": "نمایش اسلاید",
|
||||||
"slideshow_settings": "",
|
"slideshow_settings": "تنظیمات نمایش اسلاید",
|
||||||
"sort_albums_by": "",
|
"sort_albums_by": "",
|
||||||
"stack": "",
|
"stack": "پشته",
|
||||||
"stack_selected_photos": "",
|
"stack_selected_photos": "",
|
||||||
"stacktrace": "",
|
"stacktrace": "",
|
||||||
"start": "",
|
"start": "شروع",
|
||||||
"start_date": "",
|
"start_date": "تاریخ شروع",
|
||||||
"state": "",
|
"state": "ایالت",
|
||||||
"status": "",
|
"status": "وضعیت",
|
||||||
"stop_motion_photo": "",
|
"stop_motion_photo": "توقف عکس متحرک",
|
||||||
"stop_photo_sharing": "",
|
"stop_photo_sharing": "",
|
||||||
"stop_photo_sharing_description": "",
|
"stop_photo_sharing_description": "",
|
||||||
"stop_sharing_photos_with_user": "",
|
"stop_sharing_photos_with_user": "",
|
||||||
"storage": "",
|
"storage": "فضای ذخیرهسازی",
|
||||||
"storage_label": "",
|
"storage_label": "برچسب فضای ذخیرهسازی",
|
||||||
"storage_usage": "",
|
"storage_usage": "",
|
||||||
"submit": "",
|
"submit": "ارسال",
|
||||||
"suggestions": "",
|
"suggestions": "پیشنهادات",
|
||||||
"sunrise_on_the_beach": "",
|
"sunrise_on_the_beach": "",
|
||||||
"swap_merge_direction": "",
|
"swap_merge_direction": "تغییر جهت ادغام",
|
||||||
"sync": "",
|
"sync": "همگامسازی",
|
||||||
"template": "",
|
"template": "الگو",
|
||||||
"theme": "",
|
"theme": "تم",
|
||||||
"theme_selection": "",
|
"theme_selection": "انتخاب تم",
|
||||||
"theme_selection_description": "",
|
"theme_selection_description": "",
|
||||||
"time_based_memories": "",
|
"time_based_memories": "",
|
||||||
"timezone": "",
|
"timezone": "منطقه زمانی",
|
||||||
"to_archive": "",
|
"to_archive": "بایگانی",
|
||||||
"to_favorite": "",
|
"to_favorite": "به علاقهمندیها",
|
||||||
"to_trash": "",
|
"to_trash": "",
|
||||||
"toggle_settings": "",
|
"toggle_settings": "تغییر تنظیمات",
|
||||||
"toggle_theme": "",
|
"toggle_theme": "تغییر تم تاریک",
|
||||||
"total_usage": "",
|
"total_usage": "استفاده کلی",
|
||||||
"trash": "",
|
"trash": "سطل زباله",
|
||||||
"trash_all": "",
|
"trash_all": "",
|
||||||
"trash_count": "",
|
"trash_count": "",
|
||||||
"trash_no_results_message": "",
|
"trash_no_results_message": "",
|
||||||
"trashed_items_will_be_permanently_deleted_after": "",
|
"trashed_items_will_be_permanently_deleted_after": "",
|
||||||
"type": "",
|
"type": "نوع",
|
||||||
"unarchive": "",
|
"unarchive": "",
|
||||||
"unfavorite": "",
|
"unfavorite": "حذف از علاقهمندیها",
|
||||||
"unhide_person": "",
|
"unhide_person": "آشکار کردن فرد",
|
||||||
"unknown": "",
|
"unknown": "ناشناخته",
|
||||||
"unknown_year": "",
|
"unknown_year": "سال نامشخص",
|
||||||
"unlimited": "",
|
"unlimited": "نامحدود",
|
||||||
"unlink_oauth": "",
|
"unlink_oauth": "لغو اتصال OAuth",
|
||||||
"unlinked_oauth_account": "",
|
"unlinked_oauth_account": "",
|
||||||
"unnamed_album": "",
|
"unnamed_album": "آلبوم بدون نام",
|
||||||
"unnamed_share": "",
|
"unnamed_share": "اشتراک بدون نام",
|
||||||
"unselect_all": "",
|
"unselect_all": "لغو انتخاب همه",
|
||||||
"unstack": "",
|
"unstack": "",
|
||||||
"untracked_files": "",
|
"untracked_files": "",
|
||||||
"untracked_files_decription": "",
|
"untracked_files_decription": "",
|
||||||
"up_next": "",
|
"up_next": "مورد بعدی",
|
||||||
"updated_password": "",
|
"updated_password": "",
|
||||||
"upload": "",
|
"upload": "آپلود",
|
||||||
"upload_concurrency": "",
|
"upload_concurrency": "تعداد آپلود همزمان",
|
||||||
"url": "",
|
"url": "آدرس",
|
||||||
"usage": "",
|
"usage": "استفاده",
|
||||||
"user": "",
|
"user": "کاربر",
|
||||||
"user_id": "",
|
"user_id": "شناسه کاربر",
|
||||||
"user_usage_detail": "",
|
"user_usage_detail": "جزئیات استفاده کاربر",
|
||||||
"username": "",
|
"username": "نام کاربری",
|
||||||
"users": "",
|
"users": "کاربران",
|
||||||
"utilities": "",
|
"utilities": "ابزارها",
|
||||||
"validate": "",
|
"validate": "اعتبارسنجی",
|
||||||
"variables": "",
|
"variables": "متغیرها",
|
||||||
"version": "",
|
"version": "نسخه",
|
||||||
"version_announcement_message": "",
|
"version_announcement_message": "",
|
||||||
"video": "",
|
"video": "ویدیو",
|
||||||
"video_hover_setting": "",
|
"video_hover_setting": "",
|
||||||
"video_hover_setting_description": "",
|
"video_hover_setting_description": "",
|
||||||
"videos": "",
|
"videos": "ویدیوها",
|
||||||
"videos_count": "",
|
"videos_count": "",
|
||||||
"view": "",
|
"view": "مشاهده",
|
||||||
"view_all": "",
|
"view_all": "مشاهده همه",
|
||||||
"view_all_users": "",
|
"view_all_users": "مشاهده همه کاربران",
|
||||||
"view_links": "",
|
"view_links": "مشاهده لینکها",
|
||||||
"view_next_asset": "",
|
"view_next_asset": "مشاهده محتوای بعدی",
|
||||||
"view_previous_asset": "",
|
"view_previous_asset": "مشاهده محتوای قبلی",
|
||||||
"waiting": "",
|
"waiting": "در انتظار",
|
||||||
"week": "",
|
"week": "هفته",
|
||||||
"welcome": "",
|
"welcome": "خوش آمدید",
|
||||||
"welcome_to_immich": "",
|
"welcome_to_immich": "",
|
||||||
"year": "",
|
"year": "سال",
|
||||||
"yes": "",
|
"yes": "بله",
|
||||||
"you_dont_have_any_shared_links": "",
|
"you_dont_have_any_shared_links": "",
|
||||||
"zoom_image": "بزرگنمایی تصویر"
|
"zoom_image": "بزرگنمایی تصویر"
|
||||||
}
|
}
|
||||||
|
|||||||
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_auto_register_description": "Rekisteröi uudet OAuth:lla kirjautuvat käyttäjät automaattisesti",
|
||||||
"oauth_button_text": "Painikkeen teksti",
|
"oauth_button_text": "Painikkeen teksti",
|
||||||
"oauth_client_id": "Client ID",
|
"oauth_client_id": "Client ID",
|
||||||
"oauth_client_secret": "Client Secret",
|
"oauth_client_secret": "Asiakassalaisuusavain",
|
||||||
"oauth_enable_description": "Kirjaudu käyttäen OAuthia",
|
"oauth_enable_description": "Kirjaudu käyttäen OAuthia",
|
||||||
"oauth_issuer_url": "Toimitsijan URL",
|
"oauth_issuer_url": "Toimitsijan URL",
|
||||||
"oauth_mobile_redirect_uri": "Mobiilin uudellenohjaus-URI",
|
"oauth_mobile_redirect_uri": "Mobiilin uudellenohjaus-URI",
|
||||||
@@ -289,11 +289,13 @@
|
|||||||
"transcoding_constant_rate_factor": "Vakionopeustekijä",
|
"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_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_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": "Laitteistokiihdytys",
|
||||||
"transcoding_hardware_acceleration_description": "Kokeellinen. Paljon nopeampi, mutta huonompaa laatua samalla bittinopeudella",
|
"transcoding_hardware_acceleration_description": "Kokeellinen. Paljon nopeampi, mutta huonompaa laatua samalla bittinopeudella",
|
||||||
"transcoding_hardware_decoding": "Laitteiston dekoodaus",
|
"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_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": "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_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",
|
"transcoding_max_bitrate": "Suurin bittinopeus",
|
||||||
@@ -301,6 +303,8 @@
|
|||||||
"transcoding_max_keyframe_interval": "Suurin avainkehysten väli",
|
"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_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_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": "Ensisijainen laite",
|
||||||
"transcoding_preferred_hardware_device_description": "On voimassa vain VAAPI ja QSV -määritteille. Asettaa laitteistokoodauksessa käytetyn DRI noodin.",
|
"transcoding_preferred_hardware_device_description": "On voimassa vain VAAPI ja QSV -määritteille. Asettaa laitteistokoodauksessa käytetyn DRI noodin.",
|
||||||
"transcoding_preset_preset": "Esiasetus (-asetus)",
|
"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_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_required_description": "Vain videoille, jotka eivät ole hyväksytyssä muodossa",
|
||||||
"transcoding_settings": "Videoiden transkoodausasetukset",
|
"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": "Kohderesoluutio",
|
||||||
"transcoding_target_resolution_description": "Korkeampi resoluutio on tarkempi, mutta kestää kauemmin enkoodata, vie enemmän tilaa ja voi hidastaa sovelluksen responsiivisuutta.",
|
"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",
|
"transcoding_temporal_aq": "Temporal AQ",
|
||||||
@@ -519,6 +523,10 @@
|
|||||||
"date_range": "Päivämäärän rajaus",
|
"date_range": "Päivämäärän rajaus",
|
||||||
"day": "Päivä",
|
"day": "Päivä",
|
||||||
"deduplicate_all": "Poista kaikkien kaksoiskappaleet",
|
"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": "Oletuskieliasetus",
|
||||||
"default_locale_description": "Muotoile päivämäärät ja numerot selaimesi kielen mukaan",
|
"default_locale_description": "Muotoile päivämäärät ja numerot selaimesi kielen mukaan",
|
||||||
"delete": "Poista",
|
"delete": "Poista",
|
||||||
@@ -532,7 +540,7 @@
|
|||||||
"delete_shared_link": "Poista jaettu linkki",
|
"delete_shared_link": "Poista jaettu linkki",
|
||||||
"delete_tag": "Poista tunniste",
|
"delete_tag": "Poista tunniste",
|
||||||
"delete_tag_confirmation_prompt": "Haluatko varmasti poistaa tunnisteen {tagName}?",
|
"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",
|
"deleted_shared_link": "Jaettu linkki poistettu",
|
||||||
"deletes_missing_assets": "Poistaa levyltä puuttuvat resurssit",
|
"deletes_missing_assets": "Poistaa levyltä puuttuvat resurssit",
|
||||||
"description": "Kuvaus",
|
"description": "Kuvaus",
|
||||||
@@ -755,6 +763,7 @@
|
|||||||
"get_help": "Hae apua",
|
"get_help": "Hae apua",
|
||||||
"getting_started": "Aloittaminen",
|
"getting_started": "Aloittaminen",
|
||||||
"go_back": "Palaa",
|
"go_back": "Palaa",
|
||||||
|
"go_to_folder": "Mene kansioon",
|
||||||
"go_to_search": "Siirry hakuun",
|
"go_to_search": "Siirry hakuun",
|
||||||
"group_albums_by": "Ryhmitä albumi...",
|
"group_albums_by": "Ryhmitä albumi...",
|
||||||
"group_no": "Ei ryhmitystä",
|
"group_no": "Ei ryhmitystä",
|
||||||
@@ -1141,6 +1150,7 @@
|
|||||||
"server_version": "Palvelimen versio",
|
"server_version": "Palvelimen versio",
|
||||||
"set": "Aseta",
|
"set": "Aseta",
|
||||||
"set_as_album_cover": "Aseta albumin kanneksi",
|
"set_as_album_cover": "Aseta albumin kanneksi",
|
||||||
|
"set_as_featured_photo": "Käytä esittelykuvana",
|
||||||
"set_as_profile_picture": "Aseta profiilikuvaksi",
|
"set_as_profile_picture": "Aseta profiilikuvaksi",
|
||||||
"set_date_of_birth": "Aseta syntymäaika",
|
"set_date_of_birth": "Aseta syntymäaika",
|
||||||
"set_profile_picture": "Aseta profiilikuva",
|
"set_profile_picture": "Aseta profiilikuva",
|
||||||
@@ -1196,6 +1206,7 @@
|
|||||||
"sort_items": "Tietueiden määrä",
|
"sort_items": "Tietueiden määrä",
|
||||||
"sort_modified": "Muokkauspäivä",
|
"sort_modified": "Muokkauspäivä",
|
||||||
"sort_oldest": "Vanhin kuva",
|
"sort_oldest": "Vanhin kuva",
|
||||||
|
"sort_people_by_similarity": "Lajittele ihmiset samankaltaisuuden mukaan",
|
||||||
"sort_recent": "Tuorein kuva",
|
"sort_recent": "Tuorein kuva",
|
||||||
"sort_title": "Otsikko",
|
"sort_title": "Otsikko",
|
||||||
"source": "Lähdekoodi",
|
"source": "Lähdekoodi",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "I-refresh",
|
"about": "Tungkol sa app na ito",
|
||||||
"account": "Account",
|
"account": "Account",
|
||||||
"account_settings": "Mga Setting ng Account",
|
"account_settings": "Mga Setting ng Account",
|
||||||
"acknowledge": "Tanggapin",
|
"acknowledge": "Tanggapin",
|
||||||
@@ -24,9 +24,15 @@
|
|||||||
"added_to_favorites_count": "Idinagdag ang {count, number} sa mga paborito",
|
"added_to_favorites_count": "Idinagdag ang {count, number} sa mga paborito",
|
||||||
"admin": {
|
"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.",
|
"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>.",
|
"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",
|
"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.",
|
"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!",
|
"note_cannot_be_changed_later": "TANDAAN: Hindi na ito pwede baguhin sa susunod!",
|
||||||
"repair_all": "Ayusin lahat",
|
"repair_all": "Ayusin lahat",
|
||||||
@@ -40,5 +46,22 @@
|
|||||||
"are_these_the_same_person": "Itong tao na ito ay parehas?",
|
"are_these_the_same_person": "Itong tao na ito ay parehas?",
|
||||||
"asset_adding_to_album": "Dinadagdag sa album...",
|
"asset_adding_to_album": "Dinadagdag sa album...",
|
||||||
"asset_filename_is_offline": "Offline ang asset {filename}",
|
"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",
|
"date_range": "Plage de dates",
|
||||||
"day": "Jour",
|
"day": "Jour",
|
||||||
"deduplicate_all": "Dédupliquer tout",
|
"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": "Région par défaut",
|
||||||
"default_locale_description": "Afficher les dates et nombres en fonction des paramètres de votre navigateur",
|
"default_locale_description": "Afficher les dates et nombres en fonction des paramètres de votre navigateur",
|
||||||
"delete": "Supprimer",
|
"delete": "Supprimer",
|
||||||
|
|||||||
36
i18n/he.json
36
i18n/he.json
@@ -131,7 +131,7 @@
|
|||||||
"machine_learning_smart_search_description": "חפש תמונות באופן סמנטי באמצעות הטמעות של CLIP",
|
"machine_learning_smart_search_description": "חפש תמונות באופן סמנטי באמצעות הטמעות של CLIP",
|
||||||
"machine_learning_smart_search_enabled": "אפשר חיפוש חכם",
|
"machine_learning_smart_search_enabled": "אפשר חיפוש חכם",
|
||||||
"machine_learning_smart_search_enabled_description": "אם מושבת, תמונות לא יקודדו לחיפוש חכם.",
|
"machine_learning_smart_search_enabled_description": "אם מושבת, תמונות לא יקודדו לחיפוש חכם.",
|
||||||
"machine_learning_url_description": "כתובת האתר של שרת למידת המכונה. אם ניתן יותר מכתובת אחת, כל שרת ינסה בתורו עד אשר יענה בחיוב, בסדר התחלתי.",
|
"machine_learning_url_description": "כתובת האתר של שרת למידת המכונה. אם ניתנת יותר מכתובת אחת, כל שרת ינסה בתורו עד אשר יענה בחיוב, בסדר התחלתי.",
|
||||||
"manage_concurrency": "נהל בו-זמניות",
|
"manage_concurrency": "נהל בו-זמניות",
|
||||||
"manage_log_settings": "נהל הגדרות רישום ביומן",
|
"manage_log_settings": "נהל הגדרות רישום ביומן",
|
||||||
"map_dark_style": "עיצוב כהה",
|
"map_dark_style": "עיצוב כהה",
|
||||||
@@ -289,8 +289,8 @@
|
|||||||
"transcoding_constant_rate_factor": "גורם קצב קבוע (-crf)",
|
"transcoding_constant_rate_factor": "גורם קצב קבוע (-crf)",
|
||||||
"transcoding_constant_rate_factor_description": "רמת איכות וידאו. ערכים אופייניים הם הערך 23 עבור H.264, הערך 28 עבור HEVC, הערך 31 עבור VP9, והערך 35 עבור AV1. נמוך יותר הוא טוב יותר, אבל מייצר קבצים גדולים יותר.",
|
"transcoding_constant_rate_factor_description": "רמת איכות וידאו. ערכים אופייניים הם הערך 23 עבור H.264, הערך 28 עבור HEVC, הערך 31 עבור VP9, והערך 35 עבור AV1. נמוך יותר הוא טוב יותר, אבל מייצר קבצים גדולים יותר.",
|
||||||
"transcoding_disabled_description": "אין להמיר את הקידוד של שום סרטון, עלול לגרום לכך שהניגון לא יפעל במכשירים מסוימים",
|
"transcoding_disabled_description": "אין להמיר את הקידוד של שום סרטון, עלול לגרום לכך שהניגון לא יפעל במכשירים מסוימים",
|
||||||
"transcoding_encoding_options": "אפשרויות הקידוד",
|
"transcoding_encoding_options": "אפשרויות קידוד",
|
||||||
"transcoding_encoding_options_description": "הגדר מקודדים, רזולוציה, איכות ואפשרויות נוספות עבור הסרטונים המקודדים",
|
"transcoding_encoding_options_description": "הגדר מקודדים, רזולוציה, איכות ואפשרויות אחרות עבור הסרטונים המקודדים",
|
||||||
"transcoding_hardware_acceleration": "האצת חומרה",
|
"transcoding_hardware_acceleration": "האצת חומרה",
|
||||||
"transcoding_hardware_acceleration_description": "ניסיוני; המרה הרבה יותר מהירה, אבל תהיה באיכות נמוכה יותר באותו קצב סיביות",
|
"transcoding_hardware_acceleration_description": "ניסיוני; המרה הרבה יותר מהירה, אבל תהיה באיכות נמוכה יותר באותו קצב סיביות",
|
||||||
"transcoding_hardware_decoding": "פענוח חומרה",
|
"transcoding_hardware_decoding": "פענוח חומרה",
|
||||||
@@ -304,7 +304,7 @@
|
|||||||
"transcoding_max_keyframe_interval_description": "מגדיר את מרחק הפריימים המרבי בין תמונות מפתח. ערכים נמוכים גורעים את יעילות הדחיסה, אך משפרים את זמני החיפוש ועשויים לשפר את האיכות בסצנות עם תנועה מהירה. 0 מגדיר ערך זה באופן אוטומטי.",
|
"transcoding_max_keyframe_interval_description": "מגדיר את מרחק הפריימים המרבי בין תמונות מפתח. ערכים נמוכים גורעים את יעילות הדחיסה, אך משפרים את זמני החיפוש ועשויים לשפר את האיכות בסצנות עם תנועה מהירה. 0 מגדיר ערך זה באופן אוטומטי.",
|
||||||
"transcoding_optimal_description": "סרטונים גבוהים מרזולוציית היעד או לא בפורמט מקובל",
|
"transcoding_optimal_description": "סרטונים גבוהים מרזולוציית היעד או לא בפורמט מקובל",
|
||||||
"transcoding_policy": "מדיניות המרה",
|
"transcoding_policy": "מדיניות המרה",
|
||||||
"transcoding_policy_description": "הגדר מתי וידאו יעבור המרה",
|
"transcoding_policy_description": "הגדר מתי סרטון יעבור המרת קידוד",
|
||||||
"transcoding_preferred_hardware_device": "מכשיר חומרה מועדף",
|
"transcoding_preferred_hardware_device": "מכשיר חומרה מועדף",
|
||||||
"transcoding_preferred_hardware_device_description": "חל רק על VAAPI ו-QSV. מגדיר את צומת ה-dri המשמש להמרת קידוד של חומרה.",
|
"transcoding_preferred_hardware_device_description": "חל רק על VAAPI ו-QSV. מגדיר את צומת ה-dri המשמש להמרת קידוד של חומרה.",
|
||||||
"transcoding_preset_preset": "הגדרות קבועות מראש (-preset)",
|
"transcoding_preset_preset": "הגדרות קבועות מראש (-preset)",
|
||||||
@@ -313,7 +313,7 @@
|
|||||||
"transcoding_reference_frames_description": "מספר הפריימים לייחוס בעת דחיסה של פריים נתון. ערכים גבוהים יותר משפרים את יעילות הדחיסה, אך מאטים את הקידוד. 0 מגדיר את הערך זה באופן אוטומטי.",
|
"transcoding_reference_frames_description": "מספר הפריימים לייחוס בעת דחיסה של פריים נתון. ערכים גבוהים יותר משפרים את יעילות הדחיסה, אך מאטים את הקידוד. 0 מגדיר את הערך זה באופן אוטומטי.",
|
||||||
"transcoding_required_description": "רק סרטונים שאינם בפורמט מקובל",
|
"transcoding_required_description": "רק סרטונים שאינם בפורמט מקובל",
|
||||||
"transcoding_settings": "הגדרות המרת קידוד סרטונים",
|
"transcoding_settings": "הגדרות המרת קידוד סרטונים",
|
||||||
"transcoding_settings_description": "נהל אילו סרטונים לעבד וכיצד לעבד אותם",
|
"transcoding_settings_description": "נהל אילו סרטונים להמיר וכיצד לעבד אותם",
|
||||||
"transcoding_target_resolution": "רזולוציה יעד",
|
"transcoding_target_resolution": "רזולוציה יעד",
|
||||||
"transcoding_target_resolution_description": "רזולוציות גבוהות יותר יכולות לשמר פרטים רבים יותר אך לוקחות זמן רב יותר לקידוד, יש להן גדלי קבצים גדולים יותר, ויכולות להפחית את תגובתיות היישום.",
|
"transcoding_target_resolution_description": "רזולוציות גבוהות יותר יכולות לשמר פרטים רבים יותר אך לוקחות זמן רב יותר לקידוד, יש להן גדלי קבצים גדולים יותר, ויכולות להפחית את תגובתיות היישום.",
|
||||||
"transcoding_temporal_aq": "Temporal AQ",
|
"transcoding_temporal_aq": "Temporal AQ",
|
||||||
@@ -326,7 +326,7 @@
|
|||||||
"transcoding_transcode_policy_description": "מדיניות לגבי מתי יש להמיר קידוד של סרטון. תמיד יומר הקידוד של סרטוני HDR (למעט אם המרת קידוד מושבתת).",
|
"transcoding_transcode_policy_description": "מדיניות לגבי מתי יש להמיר קידוד של סרטון. תמיד יומר הקידוד של סרטוני HDR (למעט אם המרת קידוד מושבתת).",
|
||||||
"transcoding_two_pass_encoding": "קידוד בשני מעברים",
|
"transcoding_two_pass_encoding": "קידוד בשני מעברים",
|
||||||
"transcoding_two_pass_encoding_setting_description": "המר קידוד בשני מעברים כדי לייצר סרטונים מקודדים טוב יותר. כאשר קצב סיביות מרבי מופעל (נדרש כדי שזה יעבוד עם H.264 ו-HEVC), מצב זה משתמש בטווח קצב סיביות המבוסס על קצב הסיביות המרבי ומתעלם מ-CRF. עבור VP9, ניתן להשתמש ב-CRF אם קצב סיביות מרבי מושבת.",
|
"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 הוא הקידוד היעיל ביותר אך לוקה בתמיכה במכשירים ישנים יותר.",
|
"transcoding_video_codec_description": "ל-VP9 יש יעילות גבוהה ותאימות רשת, אבל לוקח יותר זמן להמיר את הקידוד עבורו. HEVC מתפקד באופן דומה, אך בעל תאימות רשת נמוכה יותר. H.264 תואם באופן נרחב ומהיר להמיר את קידודו, אבל הוא מייצר קבצים גדולים בהרבה. AV1 הוא הקידוד היעיל ביותר אך לוקה בתמיכה במכשירים ישנים יותר.",
|
||||||
"trash_enabled_description": "הפעל את תכונות האשפה",
|
"trash_enabled_description": "הפעל את תכונות האשפה",
|
||||||
"trash_number_of_days": "מספר הימים",
|
"trash_number_of_days": "מספר הימים",
|
||||||
@@ -522,12 +522,16 @@
|
|||||||
"date_of_birth_saved": "תאריך לידה נשמר בהצלחה",
|
"date_of_birth_saved": "תאריך לידה נשמר בהצלחה",
|
||||||
"date_range": "טווח תאריכים",
|
"date_range": "טווח תאריכים",
|
||||||
"day": "יום",
|
"day": "יום",
|
||||||
"deduplicate_all": "בטל כפילויות של הכל",
|
"deduplicate_all": "ביטול כל הכפילויות",
|
||||||
"default_locale": "אזור שפה ברירת מחדל",
|
"deduplication_criteria_1": "גודל תמונה בבתים",
|
||||||
"default_locale_description": "עצב תאריכים ומספרים על סמך אזור השפה של הדפדפן שלך",
|
"deduplication_criteria_2": "ספירת נתוני EXIF",
|
||||||
|
"deduplication_info": "מידע על ביטול כפילויות",
|
||||||
|
"deduplication_info_description": "כדי לבחור מראש נכסים באופן אוטומטי ולהסיר כפילויות בכמות גדולה, אנו מסתכלים על:",
|
||||||
|
"default_locale": "שפת ברירת מחדל",
|
||||||
|
"default_locale_description": "פורמט תאריכים ומספרים מבוסס שפת הדפדפן שלך",
|
||||||
"delete": "מחק",
|
"delete": "מחק",
|
||||||
"delete_album": "מחק אלבום",
|
"delete_album": "מחק אלבום",
|
||||||
"delete_api_key_prompt": "האם את/ה בטוח/ה שברצונך למחוק מפתח API זה?",
|
"delete_api_key_prompt": "האם את/ה בטוח/ה שברצונך למחוק מפתח ה-API הזה?",
|
||||||
"delete_duplicates_confirmation": "האם את/ה בטוח/ה שברצונך למחוק לצמיתות את הכפילויות האלה?",
|
"delete_duplicates_confirmation": "האם את/ה בטוח/ה שברצונך למחוק לצמיתות את הכפילויות האלה?",
|
||||||
"delete_key": "מחק מפתח",
|
"delete_key": "מחק מפתח",
|
||||||
"delete_library": "מחק ספרייה",
|
"delete_library": "מחק ספרייה",
|
||||||
@@ -544,13 +548,13 @@
|
|||||||
"direction": "כיוון",
|
"direction": "כיוון",
|
||||||
"disabled": "מושבת",
|
"disabled": "מושבת",
|
||||||
"disallow_edits": "אל תאפשר עריכות",
|
"disallow_edits": "אל תאפשר עריכות",
|
||||||
"discord": "דיסקורד",
|
"discord": "Discord",
|
||||||
"discover": "גלה",
|
"discover": "גילוי",
|
||||||
"dismiss_all_errors": "התעלם מכל השגיאות",
|
"dismiss_all_errors": "התעלמות מכל השגיאות",
|
||||||
"dismiss_error": "התעלם מהשגיאה",
|
"dismiss_error": "התעלמות מהשגיאה",
|
||||||
"display_options": "הצג אפשרויות",
|
"display_options": "הצגת אפשרויות",
|
||||||
"display_order": "סדר תצוגה",
|
"display_order": "סדר תצוגה",
|
||||||
"display_original_photos": "הצג תמונות מקוריות",
|
"display_original_photos": "הצגת תמונות מקוריות",
|
||||||
"display_original_photos_setting_description": "העדף להציג את התמונה המקורית בעת צפיית נכס במקום תמונות ממוזערות כאשר הנכס המקורי תומך בתצוגה בדפדפן. זה עלול לגרום לתמונות להיות מוצגות באיטיות.",
|
"display_original_photos_setting_description": "העדף להציג את התמונה המקורית בעת צפיית נכס במקום תמונות ממוזערות כאשר הנכס המקורי תומך בתצוגה בדפדפן. זה עלול לגרום לתמונות להיות מוצגות באיטיות.",
|
||||||
"do_not_show_again": "אל תציג את ההודעה הזאת שוב",
|
"do_not_show_again": "אל תציג את ההודעה הזאת שוב",
|
||||||
"documentation": "תיעוד",
|
"documentation": "תיעוד",
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
"added_to_favorites_count": "{count, number} hozzáadva a kedvencekhez",
|
"added_to_favorites_count": "{count, number} hozzáadva a kedvencekhez",
|
||||||
"admin": {
|
"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/**\".",
|
"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": "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_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.",
|
"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",
|
"date_range": "Dátum intervallum",
|
||||||
"day": "Nap",
|
"day": "Nap",
|
||||||
"deduplicate_all": "Az Összes Deduplikálása",
|
"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": "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",
|
"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",
|
"delete": "Törlés",
|
||||||
|
|||||||
@@ -523,6 +523,10 @@
|
|||||||
"date_range": "Jangka tanggal",
|
"date_range": "Jangka tanggal",
|
||||||
"day": "Hari",
|
"day": "Hari",
|
||||||
"deduplicate_all": "Deduplikat Semua",
|
"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": "Lokal Bawaan",
|
||||||
"default_locale_description": "Format tanggal dan angka berdasarkan lokal peramban Anda",
|
"default_locale_description": "Format tanggal dan angka berdasarkan lokal peramban Anda",
|
||||||
"delete": "Hapus",
|
"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": "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_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_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": "Accelerazione Hardware",
|
||||||
"transcoding_hardware_acceleration_description": "Sperimentale; molto più veloce, ma avrà una qualità inferiore allo stesso bitrate",
|
"transcoding_hardware_acceleration_description": "Sperimentale; molto più veloce, ma avrà una qualità inferiore allo stesso bitrate",
|
||||||
"transcoding_hardware_decoding": "Decodifica hardware",
|
"transcoding_hardware_decoding": "Decodifica hardware",
|
||||||
@@ -301,6 +303,8 @@
|
|||||||
"transcoding_max_keyframe_interval": "Intervallo massimo dei keyframe",
|
"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_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_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": "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_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)",
|
"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_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_required_description": "Solo video che non sono in un formato accettato",
|
||||||
"transcoding_settings": "Impostazioni Trascodifica Video",
|
"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": "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_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",
|
"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_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": "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_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.",
|
"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_enabled_description": "Abilita Funzionalità Cestino",
|
||||||
"trash_number_of_days": "Numero di giorni",
|
"trash_number_of_days": "Numero di giorni",
|
||||||
@@ -519,14 +523,18 @@
|
|||||||
"date_range": "Intervallo di date",
|
"date_range": "Intervallo di date",
|
||||||
"day": "Giorno",
|
"day": "Giorno",
|
||||||
"deduplicate_all": "De-duplica Tutti",
|
"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": "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": "Elimina",
|
||||||
"delete_album": "Elimina album",
|
"delete_album": "Elimina album",
|
||||||
"delete_api_key_prompt": "Sei sicuro di voler eliminare questa chiave API?",
|
"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_duplicates_confirmation": "Sei sicuro di voler eliminare questi duplicati per sempre?",
|
||||||
"delete_key": "Elimina chiave",
|
"delete_key": "Elimina chiave",
|
||||||
"delete_library": "Elimina Libreria",
|
"delete_library": "Elimina libreria",
|
||||||
"delete_link": "Elimina link",
|
"delete_link": "Elimina link",
|
||||||
"delete_others": "Elimina gli altri",
|
"delete_others": "Elimina gli altri",
|
||||||
"delete_shared_link": "Elimina link condiviso",
|
"delete_shared_link": "Elimina link condiviso",
|
||||||
@@ -755,6 +763,7 @@
|
|||||||
"get_help": "Chiedi Aiuto",
|
"get_help": "Chiedi Aiuto",
|
||||||
"getting_started": "Iniziamo",
|
"getting_started": "Iniziamo",
|
||||||
"go_back": "Torna indietro",
|
"go_back": "Torna indietro",
|
||||||
|
"go_to_folder": "Vai alla cartella",
|
||||||
"go_to_search": "Vai alla ricerca",
|
"go_to_search": "Vai alla ricerca",
|
||||||
"group_albums_by": "Raggruppa album in base a...",
|
"group_albums_by": "Raggruppa album in base a...",
|
||||||
"group_no": "Nessun raggruppamento",
|
"group_no": "Nessun raggruppamento",
|
||||||
|
|||||||
242
i18n/lt.json
242
i18n/lt.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"about": "Atnaujinti",
|
"about": "Apie",
|
||||||
"account": "Paskyra",
|
"account": "Paskyra",
|
||||||
"account_settings": "Paskyros nustatymai",
|
"account_settings": "Paskyros nustatymai",
|
||||||
"acknowledge": "Patvirtinti",
|
"acknowledge": "Patvirtinti",
|
||||||
@@ -28,8 +28,9 @@
|
|||||||
"added_to_favorites": "Pridėta prie mėgstamiausių",
|
"added_to_favorites": "Pridėta prie mėgstamiausių",
|
||||||
"added_to_favorites_count": "{count, plural, one {# pridėtas} few {# pridėti} other {# pridėta}} prie mėgstamiausių",
|
"added_to_favorites_count": "{count, plural, one {# pridėtas} few {# pridėti} other {# pridėta}} prie mėgstamiausių",
|
||||||
"admin": {
|
"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": "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_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>.",
|
"authentication_settings_reenable": "Norėdami vėl įjungti, naudokite <link>Serverio komandą</link>.",
|
||||||
"background_task_job": "Foninės užduotys",
|
"background_task_job": "Foninės užduotys",
|
||||||
@@ -37,14 +38,20 @@
|
|||||||
"backup_database_enable_description": "Įgalinti duomenų bazės atsarginė kopijas",
|
"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_keep_last_amount": "Išsaugomų ankstesnių atsarginių duomenų bazės kopijų skaičius",
|
||||||
"backup_settings": "Atsarginės kopijos nustatymai",
|
"backup_settings": "Atsarginės kopijos nustatymai",
|
||||||
|
"backup_settings_description": "Tvarkyti duomenų bazės atsarginės kopijos nustatymus",
|
||||||
"check_all": "Pažymėti viską",
|
"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": "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_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_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į?",
|
"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ą",
|
"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.",
|
"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_created_at": "Išorinė biblioteka (sukurta {date})",
|
||||||
"external_library_management": "Išorinių bibliotekų tvarkymas",
|
"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.",
|
"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",
|
"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.",
|
"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": "Formatas",
|
||||||
"image_format_description": "WebP sukuria mažesnius failus nei JPEG, bet lėčiau juos apdoroja.",
|
"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": "Pageidautinai rodyti įterptą peržiūrą",
|
||||||
"image_prefer_embedded_preview_setting_description": "",
|
"image_prefer_embedded_preview_setting_description": "",
|
||||||
"image_prefer_wide_gamut": "Teikti pirmenybę plačiai gamai",
|
"image_prefer_wide_gamut": "Teikti pirmenybę plačiai gamai",
|
||||||
"image_prefer_wide_gamut_setting_description": "",
|
"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_quality": "Kokybė",
|
||||||
"image_resolution": "Rezoliucija",
|
"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": "Nuotraukos nustatymai",
|
||||||
"image_settings_description": "Keisti sugeneruotų nuotraukų kokybę ir rezoliuciją",
|
"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_concurrency": "{job} lygiagretumas",
|
||||||
|
"job_created": "Darbas sukurtas",
|
||||||
"job_not_concurrency_safe": "Šis darbas nėra saugus apdoroti lygiagrečiai.",
|
"job_not_concurrency_safe": "Šis darbas nėra saugus apdoroti lygiagrečiai.",
|
||||||
"job_settings": "Darbų nustatymai",
|
"job_settings": "Darbų nustatymai",
|
||||||
"job_settings_description": "Keisti darbų lygiagretumą",
|
"job_settings_description": "Keisti darbų lygiagretumą",
|
||||||
@@ -78,17 +93,17 @@
|
|||||||
"library_settings": "Išorinė biblioteka",
|
"library_settings": "Išorinė biblioteka",
|
||||||
"library_settings_description": "Tvarkyti išorinės bibliotekos parametrus",
|
"library_settings_description": "Tvarkyti išorinės bibliotekos parametrus",
|
||||||
"library_tasks_description": "Atlikit bibliotekos užduotis",
|
"library_tasks_description": "Atlikit bibliotekos užduotis",
|
||||||
"library_watching_enable_description": "",
|
"library_watching_enable_description": "Stebėti išorines bibliotekas dėl failų pakeitimų",
|
||||||
"library_watching_settings": "",
|
"library_watching_settings": "Bibliotekų stebėjimas (EKSPERIMENTINIS)",
|
||||||
"library_watching_settings_description": "",
|
"library_watching_settings_description": "Automatiškai stebėti dėl pakeistų failų",
|
||||||
"logging_enable_description": "",
|
"logging_enable_description": "Įjungti žurnalo vedimą",
|
||||||
"logging_level_description": "",
|
"logging_level_description": "Įjungus, kokį žurnalo vedimo lygį naudot.",
|
||||||
"logging_settings": "",
|
"logging_settings": "Žurnalo vedimas",
|
||||||
"machine_learning_clip_model": "CLIP modelis",
|
"machine_learning_clip_model": "CLIP modelis",
|
||||||
"machine_learning_duplicate_detection": "Dublikatų aptikimas",
|
"machine_learning_duplicate_detection": "Dublikatų aptikimas",
|
||||||
"machine_learning_duplicate_detection_enabled": "Įjungti dublikatų aptikimą",
|
"machine_learning_duplicate_detection_enabled": "Įjungti dublikatų aptikimą",
|
||||||
"machine_learning_duplicate_detection_enabled_description": "",
|
"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": "Įgalinti mašininį mokymąsi",
|
||||||
"machine_learning_enabled_description": "Jei išjungta, visos „ML“ funkcijos bus išjungtos, nepaisant toliau pateiktų nustatymų.",
|
"machine_learning_enabled_description": "Jei išjungta, visos „ML“ funkcijos bus išjungtos, nepaisant toliau pateiktų nustatymų.",
|
||||||
"machine_learning_facial_recognition": "Veidų atpažinimas",
|
"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": "Veidų atpažinimo modelis",
|
||||||
"machine_learning_facial_recognition_model_description": "",
|
"machine_learning_facial_recognition_model_description": "",
|
||||||
"machine_learning_facial_recognition_setting": "Įgalinti veidų atpažinimą",
|
"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": "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_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": "Maksimalus atpažinimo atstumas",
|
||||||
"machine_learning_max_recognition_distance_description": "",
|
"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_detection_score_description": "",
|
||||||
"machine_learning_min_recognized_faces": "Mažiausias atpažintų veidų skaičius",
|
"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_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": "Mašininio mokymosi nustatymai",
|
||||||
"machine_learning_settings_description": "Tvarkyti mašininio mokymosi funkcijas ir nustatymus",
|
"machine_learning_settings_description": "Tvarkyti mašininio mokymosi funkcijas ir nustatymus",
|
||||||
"machine_learning_smart_search": "Išmanioji paieška",
|
"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": "Į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_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_concurrency": "Tvarkyti lygiagretumą",
|
||||||
"manage_log_settings": "",
|
"manage_log_settings": "Valdyti žurnalo nuostatas",
|
||||||
"map_dark_style": "Tamsioji tema",
|
"map_dark_style": "Tamsioji tema",
|
||||||
"map_enable_description": "Įgalinti žemėlapio funkcijas",
|
"map_enable_description": "Įgalinti žemėlapio funkcijas",
|
||||||
"map_gps_settings": "Žemėlapio ir GPS nustatymai",
|
"map_gps_settings": "Žemėlapio ir GPS nustatymai",
|
||||||
"map_gps_settings_description": "Tvarkyti žemėlapio ir GPS (atvirkštinio geokodavimo) nustatymus",
|
"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_light_style": "Šviesioji tema",
|
||||||
"map_manage_reverse_geocoding_settings": "Tvarkyti <link>atvirkštinio geokodavimo</link> nustatymus",
|
"map_manage_reverse_geocoding_settings": "Tvarkyti <link>atvirkštinio geokodavimo</link> nustatymus",
|
||||||
"map_reverse_geocoding": "Atvirkštinis geokodavimas",
|
"map_reverse_geocoding": "Atvirkštinis geokodavimas",
|
||||||
@@ -125,47 +141,54 @@
|
|||||||
"map_reverse_geocoding_settings": "Atvirkštinio geokodavimo nustatymai",
|
"map_reverse_geocoding_settings": "Atvirkštinio geokodavimo nustatymai",
|
||||||
"map_settings": "Žemėlapis",
|
"map_settings": "Žemėlapis",
|
||||||
"map_settings_description": "Tvarkyti žemėlapio parametrus",
|
"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": "Metaduomenų nuskaitymas",
|
||||||
"metadata_extraction_job_description": "Kiekvieno bibliotekos elemento metaduomenų nuskaitymas, tokių kaip GPS koordinatės, veidai ar rezoliucija",
|
"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": "Metaduomenų nustatymai",
|
||||||
"metadata_settings_description": "Tvarkyti metaduomenų nustatymus",
|
"metadata_settings_description": "Tvarkyti metaduomenų nustatymus",
|
||||||
"migration_job": "Migracija",
|
"migration_job": "Migracija",
|
||||||
"migration_job_description": "",
|
"migration_job_description": "",
|
||||||
"no_paths_added": "Keliai nepridėti",
|
"no_paths_added": "Keliai nepridėti",
|
||||||
"no_pattern_added": "Šablonas nepridėtas",
|
"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!",
|
"note_cannot_be_changed_later": "PASTABA: Vėliau to pakeisti negalima!",
|
||||||
"notification_email_from_address": "",
|
"note_unlimited_quota": "Pastaba: įveskite 0 norint neribotos kvotos",
|
||||||
"notification_email_from_address_description": "",
|
"notification_email_from_address": "Iš adreso",
|
||||||
"notification_email_host_description": "",
|
"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": "Nepaisyti sertifikatų klaidų",
|
||||||
"notification_email_ignore_certificate_errors_description": "Nepaisyti TLS sertifikato patvirtinimo klaidų (nerekomenduojama)",
|
"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_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_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_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": "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_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_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_enable_email_notifications": "Įgalinti el. pašto pranešimus",
|
||||||
"notification_settings": "Pranešimų nustatymai",
|
"notification_settings": "Pranešimų nustatymai",
|
||||||
"notification_settings_description": "Tvarkyti pranešimų nustatymus, įskaitant el. pašto",
|
"notification_settings_description": "Tvarkyti pranešimų nustatymus, įskaitant el. pašto",
|
||||||
"oauth_auto_launch": "Paleisti automatiškai",
|
"oauth_auto_launch": "Paleisti automatiškai",
|
||||||
"oauth_auto_launch_description": "",
|
"oauth_auto_launch_description": "Prisijungimo puslapyje automatiškai pradėti OAuth prisijungimo procesą",
|
||||||
"oauth_auto_register": "",
|
"oauth_auto_register": "Automatinis registravimas",
|
||||||
"oauth_auto_register_description": "",
|
"oauth_auto_register_description": "Automatiškai užregistruoti naujus naudotojus po prisijungimo per OAuth",
|
||||||
"oauth_button_text": "Mygtuko tekstas",
|
"oauth_button_text": "Mygtuko tekstas",
|
||||||
"oauth_client_id": "Kliento ID",
|
"oauth_client_id": "Kliento ID",
|
||||||
"oauth_client_secret": "Kliento paslaptis",
|
"oauth_client_secret": "Kliento paslaptis",
|
||||||
"oauth_enable_description": "Prisijungti su OAuth",
|
"oauth_enable_description": "Prisijungti su OAuth",
|
||||||
"oauth_issuer_url": "",
|
"oauth_issuer_url": "Teikėjo URL",
|
||||||
"oauth_mobile_redirect_uri": "",
|
"oauth_mobile_redirect_uri": "Mobiliojo peradresavimo URI",
|
||||||
"oauth_mobile_redirect_uri_override": "",
|
"oauth_mobile_redirect_uri_override": "Mobiliojo peradresavimo URI pakeitimas",
|
||||||
"oauth_mobile_redirect_uri_override_description": "",
|
"oauth_mobile_redirect_uri_override_description": "Įjunkite, kai OAuth teikėjas nepalaiko mobiliojo URI, tokio kaip '{callback}'",
|
||||||
"oauth_scope": "",
|
"oauth_profile_signing_algorithm": "Profilio registracijos algoritmas",
|
||||||
"oauth_settings": "",
|
"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_description": "Tvarkyti OAuth prisijungimo nustatymus",
|
||||||
|
"oauth_settings_more_details": "Detaliau apie šią funkciją galite paskaityti <link>dokumentacijoje</link>.",
|
||||||
"oauth_signing_algorithm": "",
|
"oauth_signing_algorithm": "",
|
||||||
"oauth_storage_label_claim": "",
|
"oauth_storage_label_claim": "",
|
||||||
"oauth_storage_label_claim_description": "",
|
"oauth_storage_label_claim_description": "",
|
||||||
@@ -173,6 +196,7 @@
|
|||||||
"oauth_storage_quota_claim_description": "",
|
"oauth_storage_quota_claim_description": "",
|
||||||
"oauth_storage_quota_default": "",
|
"oauth_storage_quota_default": "",
|
||||||
"oauth_storage_quota_default_description": "",
|
"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.",
|
"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_enable_description": "Prisijungti su el. paštu ir slaptažodžiu",
|
||||||
"password_settings": "Prisijungimas slaptažodžiu",
|
"password_settings": "Prisijungimas slaptažodžiu",
|
||||||
@@ -187,13 +211,13 @@
|
|||||||
"reset_settings_to_recent_saved": "Nustatymų atstatymas į neseniai išsaugotus nustatymus",
|
"reset_settings_to_recent_saved": "Nustatymų atstatymas į neseniai išsaugotus nustatymus",
|
||||||
"send_welcome_email": "Siųsti sveikinimo el. laišką",
|
"send_welcome_email": "Siųsti sveikinimo el. laišką",
|
||||||
"server_external_domain_settings": "Išorinis domenas",
|
"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": "Serverio nustatymai",
|
||||||
"server_settings_description": "Tvarkyti serverio nustatymus",
|
"server_settings_description": "Tvarkyti serverio nustatymus",
|
||||||
"server_welcome_message": "Sveikinimo pranešimas",
|
"server_welcome_message": "Sveikinimo pranešimas",
|
||||||
"server_welcome_message_description": "Žinutė, rodoma prisijungimo puslapyje.",
|
"server_welcome_message_description": "Žinutė, rodoma prisijungimo puslapyje.",
|
||||||
"sidecar_job_description": "",
|
"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",
|
"smart_search_job_description": "Vykdykite mašininį mokymąsi bibliotekos elementų išmaniajai paieškai",
|
||||||
"storage_template_enable_description": "",
|
"storage_template_enable_description": "",
|
||||||
"storage_template_hash_verification_enabled": "",
|
"storage_template_hash_verification_enabled": "",
|
||||||
@@ -269,6 +293,7 @@
|
|||||||
"trash_settings": "Šiukšliadėžės nustatymai",
|
"trash_settings": "Šiukšliadėžės nustatymai",
|
||||||
"trash_settings_description": "Tvarkyti šiukšliadėžės nustatymus",
|
"trash_settings_description": "Tvarkyti šiukšliadėžės nustatymus",
|
||||||
"untracked_files": "Nesekami failai",
|
"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": "Ištrynimo delsa",
|
||||||
"user_delete_delay_settings_description": "",
|
"user_delete_delay_settings_description": "",
|
||||||
"user_management": "Naudotojų valdymas",
|
"user_management": "Naudotojų valdymas",
|
||||||
@@ -328,7 +353,9 @@
|
|||||||
"asset_added_to_album": "Pridėta į albumą",
|
"asset_added_to_album": "Pridėta į albumą",
|
||||||
"asset_adding_to_album": "Pridedama į albumą...",
|
"asset_adding_to_album": "Pridedama į albumą...",
|
||||||
"asset_description_updated": "Elemento aprašymas buvo atnaujintas",
|
"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_uploaded": "Įkelta",
|
||||||
"asset_uploading": "Įkeliama...",
|
"asset_uploading": "Įkeliama...",
|
||||||
"assets": "Elementai",
|
"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_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_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_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_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",
|
"assets_were_part_of_album_count": "{count, plural, one {# elementas} few {# elementai} other {# elementų}} jau prieš tai buvo albume",
|
||||||
"authorized_devices": "Autorizuoti įrenginiai",
|
"authorized_devices": "Autorizuoti įrenginiai",
|
||||||
@@ -348,6 +376,9 @@
|
|||||||
"birthdate_saved": "Sėkmingai išsaugota gimimo data",
|
"birthdate_saved": "Sėkmingai išsaugota gimimo data",
|
||||||
"blurred_background": "Neryškus fonas",
|
"blurred_background": "Neryškus fonas",
|
||||||
"bugs_and_feature_requests": "Klaidų ir funkcijų užklausos",
|
"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",
|
"buy": "Įsigyti Immich",
|
||||||
"camera": "Fotoaparatas",
|
"camera": "Fotoaparatas",
|
||||||
"camera_brand": "Fotoaparato prekės ženklas",
|
"camera_brand": "Fotoaparato prekės ženklas",
|
||||||
@@ -382,7 +413,7 @@
|
|||||||
"comments_are_disabled": "Komentarai yra išjungti",
|
"comments_are_disabled": "Komentarai yra išjungti",
|
||||||
"confirm": "Patvirtinti",
|
"confirm": "Patvirtinti",
|
||||||
"confirm_admin_password": "Patvirtinti administratoriaus slaptažodį",
|
"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į",
|
"confirm_password": "Patvirtinti slaptažodį",
|
||||||
"contain": "",
|
"contain": "",
|
||||||
"context": "Kontekstas",
|
"context": "Kontekstas",
|
||||||
@@ -422,6 +453,11 @@
|
|||||||
"date_of_birth_saved": "Gimimo data sėkmingai išsaugota",
|
"date_of_birth_saved": "Gimimo data sėkmingai išsaugota",
|
||||||
"date_range": "",
|
"date_range": "",
|
||||||
"day": "Diena",
|
"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": "",
|
||||||
"default_locale_description": "Formatuoti datas ir skaičius pagal jūsų naršyklės lokalę",
|
"default_locale_description": "Formatuoti datas ir skaičius pagal jūsų naršyklės lokalę",
|
||||||
"delete": "Ištrinti",
|
"delete": "Ištrinti",
|
||||||
@@ -431,11 +467,11 @@
|
|||||||
"delete_key": "Ištrinti raktą",
|
"delete_key": "Ištrinti raktą",
|
||||||
"delete_library": "Ištrinti biblioteką",
|
"delete_library": "Ištrinti biblioteką",
|
||||||
"delete_link": "Ištrinti nuorodą",
|
"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": "Ištrinti žymą",
|
||||||
"delete_tag_confirmation_prompt": "Ar tikrai norite ištrinti žymą {tagName}?",
|
"delete_tag_confirmation_prompt": "Ar tikrai norite ištrinti žymą {tagName}?",
|
||||||
"delete_user": "Ištrinti naudotoją",
|
"delete_user": "Ištrinti naudotoją",
|
||||||
"deleted_shared_link": "Bendrinama nuoroda ištrinta",
|
"deleted_shared_link": "Bendrinimo nuoroda ištrinta",
|
||||||
"description": "Aprašymas",
|
"description": "Aprašymas",
|
||||||
"details": "Detalės",
|
"details": "Detalės",
|
||||||
"direction": "Kryptis",
|
"direction": "Kryptis",
|
||||||
@@ -455,6 +491,7 @@
|
|||||||
"download_settings": "Atsisiųsti",
|
"download_settings": "Atsisiųsti",
|
||||||
"downloading": "Siunčiama",
|
"downloading": "Siunčiama",
|
||||||
"duplicates": "Dublikatai",
|
"duplicates": "Dublikatai",
|
||||||
|
"duplicates_description": "Sutvarkykite kiekvieną elementų grupę nurodydami elementus, kurie yra dublikatai (jei tokių yra)",
|
||||||
"duration": "Trukmė",
|
"duration": "Trukmė",
|
||||||
"edit": "Redaguoti",
|
"edit": "Redaguoti",
|
||||||
"edit_album": "Redaguoti albumą",
|
"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",
|
"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.",
|
"exclusion_pattern_already_exists": "Šis išimčių šablonas jau egzistuoja.",
|
||||||
"failed_to_create_album": "Nepavyko sukurti albumo",
|
"failed_to_create_album": "Nepavyko sukurti albumo",
|
||||||
"failed_to_create_shared_link": "Nepavyko sukurti bendrinamos nuorodos",
|
"failed_to_create_shared_link": "Nepavyko sukurti bendrinimo nuorodos",
|
||||||
"failed_to_edit_shared_link": "Nepavyko redaguoti bendrinamos nuorodos",
|
"failed_to_edit_shared_link": "Nepavyko redaguoti bendrinimo nuorodos",
|
||||||
"failed_to_load_people": "Nepavyko užkrauti žmonių",
|
"failed_to_load_people": "Nepavyko užkrauti žmonių",
|
||||||
"failed_to_remove_product_key": "Nepavyko pašalinti produkto rakto",
|
"failed_to_remove_product_key": "Nepavyko pašalinti produkto rakto",
|
||||||
"failed_to_stack_assets": "Nepavyko sugrupuoti elementų",
|
"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ą.",
|
"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į",
|
"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_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_comment": "Nepavyksta pridėti komentaro",
|
||||||
"unable_to_add_exclusion_pattern": "Nepavyksta pridėti išimčių šablono",
|
"unable_to_add_exclusion_pattern": "Nepavyksta pridėti išimčių šablono",
|
||||||
"unable_to_add_import_path": "Nepavyksta pridėti importavimo kelio",
|
"unable_to_add_import_path": "Nepavyksta pridėti importavimo kelio",
|
||||||
@@ -511,6 +549,7 @@
|
|||||||
"unable_to_change_date": "Negalima pakeisti datos",
|
"unable_to_change_date": "Negalima pakeisti datos",
|
||||||
"unable_to_change_location": "Negalima pakeisti vietos",
|
"unable_to_change_location": "Negalima pakeisti vietos",
|
||||||
"unable_to_change_password": "Negalima pakeisti slaptažodžio",
|
"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": "Nepavyko prisijungti",
|
||||||
"unable_to_connect_to_server": "Nepavyko prisijungti prie serverio",
|
"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",
|
"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_asset": "",
|
||||||
"unable_to_delete_exclusion_pattern": "Nepavyksta ištrinti išimčių šablono",
|
"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_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_delete_user": "Nepavyksta ištrinti naudotojo",
|
||||||
"unable_to_edit_exclusion_pattern": "Nepavyksta redaguoti išimčių šablono",
|
"unable_to_edit_exclusion_pattern": "Nepavyksta redaguoti išimčių šablono",
|
||||||
"unable_to_edit_import_path": "Nepavyksta redaguoti išimčių kelio",
|
"unable_to_edit_import_path": "Nepavyksta redaguoti išimčių kelio",
|
||||||
"unable_to_empty_trash": "",
|
"unable_to_empty_trash": "",
|
||||||
"unable_to_enter_fullscreen": "Nepavyksta pereiti į viso ekrano režimą",
|
"unable_to_enter_fullscreen": "Nepavyksta pereiti į viso ekrano režimą",
|
||||||
"unable_to_exit_fullscreen": "Nepavyksta išeiti iš viso ekrano režimo",
|
"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_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_album": "Nepavyksta užkrauti albumo",
|
||||||
"unable_to_load_asset_activity": "",
|
"unable_to_load_asset_activity": "",
|
||||||
"unable_to_load_items": "",
|
"unable_to_load_items": "",
|
||||||
"unable_to_load_liked_status": "",
|
"unable_to_load_liked_status": "",
|
||||||
"unable_to_log_out_all_devices": "Nepavyksta atjungti visų įrenginių",
|
"unable_to_log_out_all_devices": "Nepavyksta atjungti visų įrenginių",
|
||||||
"unable_to_log_out_device": "Nepavyksta atjungti įrenginio",
|
"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_play_video": "Nepavyksta paleisti vaizdo įrašo",
|
||||||
"unable_to_refresh_user": "Nepavyksta atnaujinti naudotojo",
|
"unable_to_refresh_user": "Nepavyksta atnaujinti naudotojo",
|
||||||
"unable_to_remove_album_users": "",
|
"unable_to_remove_album_users": "",
|
||||||
"unable_to_remove_api_key": "Nepavyko pašalinti API rakto",
|
"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_library": "Nepavyksta pašalinti bibliotekos",
|
||||||
"unable_to_remove_partner": "Nepavyksta pašalinti partnerio",
|
"unable_to_remove_partner": "Nepavyksta pašalinti partnerio",
|
||||||
"unable_to_remove_reaction": "Nepavyksta pašalinti reakcijos",
|
"unable_to_remove_reaction": "Nepavyksta pašalinti reakcijos",
|
||||||
"unable_to_repair_items": "",
|
"unable_to_repair_items": "",
|
||||||
"unable_to_reset_password": "",
|
"unable_to_reset_password": "",
|
||||||
"unable_to_resolve_duplicate": "",
|
"unable_to_resolve_duplicate": "Nepavyko sutvarkyti dublikatų",
|
||||||
"unable_to_restore_assets": "",
|
"unable_to_restore_assets": "",
|
||||||
"unable_to_restore_trash": "",
|
"unable_to_restore_trash": "",
|
||||||
"unable_to_restore_user": "",
|
"unable_to_restore_user": "",
|
||||||
"unable_to_save_album": "",
|
"unable_to_save_album": "",
|
||||||
"unable_to_save_name": "",
|
"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_save_settings": "Nepavyksta išsaugoti nustatymų",
|
||||||
"unable_to_scan_libraries": "Nepavyksta nuskaityti bibliotekų",
|
"unable_to_scan_libraries": "Nepavyksta nuskaityti bibliotekų",
|
||||||
"unable_to_scan_library": "Nepavyksta nuskaityti bibliotekos",
|
"unable_to_scan_library": "Nepavyksta nuskaityti bibliotekos",
|
||||||
"unable_to_set_feature_photo": "Nepavyksta nustatyti mėgstamiausios nuotraukos",
|
"unable_to_set_feature_photo": "Nepavyksta nustatyti mėgstamiausios nuotraukos",
|
||||||
"unable_to_set_profile_picture": "Nepavyksta nustatyti profilio nuotraukos",
|
"unable_to_set_profile_picture": "Nepavyksta nustatyti profilio nuotraukos",
|
||||||
"unable_to_submit_job": "",
|
"unable_to_submit_job": "",
|
||||||
"unable_to_trash_asset": "",
|
"unable_to_trash_asset": "Nepavyko perkelti į šiukšliadėžę",
|
||||||
"unable_to_unlink_account": "",
|
"unable_to_unlink_account": "",
|
||||||
"unable_to_update_library": "",
|
"unable_to_update_library": "",
|
||||||
"unable_to_update_location": "",
|
"unable_to_update_location": "",
|
||||||
@@ -569,7 +611,7 @@
|
|||||||
"unable_to_upload_file": "Nepavyksta įkelti failo"
|
"unable_to_upload_file": "Nepavyksta įkelti failo"
|
||||||
},
|
},
|
||||||
"exif": "Exif",
|
"exif": "Exif",
|
||||||
"exit_slideshow": "",
|
"exit_slideshow": "Išeiti iš skaidrių peržiūros",
|
||||||
"expand_all": "Išskleisti viską",
|
"expand_all": "Išskleisti viską",
|
||||||
"expire_after": "",
|
"expire_after": "",
|
||||||
"expired": "Nebegalioja",
|
"expired": "Nebegalioja",
|
||||||
@@ -581,10 +623,12 @@
|
|||||||
"external": "Išorinis",
|
"external": "Išorinis",
|
||||||
"external_libraries": "Išorinės bibliotekos",
|
"external_libraries": "Išorinės bibliotekos",
|
||||||
"face_unassigned": "Nepriskirta",
|
"face_unassigned": "Nepriskirta",
|
||||||
"favorite": "Mėgstamiausi",
|
"favorite": "Mėgstamiausias",
|
||||||
"favorite_or_unfavorite_photo": "Įtraukti prie arba pašalinti iš mėgstamiausių",
|
"favorite_or_unfavorite_photo": "Įtraukti prie arba pašalinti iš mėgstamiausių",
|
||||||
"favorites": "Mėgstamiausi",
|
"favorites": "Mėgstamiausi",
|
||||||
"feature_photo_updated": "",
|
"feature_photo_updated": "",
|
||||||
|
"features": "Funkcijos",
|
||||||
|
"features_setting_description": "Valdyti aplikacijos funkcijas",
|
||||||
"file_name": "Failo pavadinimas",
|
"file_name": "Failo pavadinimas",
|
||||||
"file_name_or_extension": "Failo pavadinimas arba plėtinys",
|
"file_name_or_extension": "Failo pavadinimas arba plėtinys",
|
||||||
"filename": "",
|
"filename": "",
|
||||||
@@ -592,6 +636,7 @@
|
|||||||
"filter_people": "Filtruoti žmones",
|
"filter_people": "Filtruoti žmones",
|
||||||
"fix_incorrect_match": "",
|
"fix_incorrect_match": "",
|
||||||
"folders": "Aplankai",
|
"folders": "Aplankai",
|
||||||
|
"folders_feature_description": "Peržiūrėkite failų sistemoje esančias nuotraukas ir vaizdo įrašus aplankų rodinyje",
|
||||||
"forward": "",
|
"forward": "",
|
||||||
"general": "",
|
"general": "",
|
||||||
"get_help": "Gauti pagalbos",
|
"get_help": "Gauti pagalbos",
|
||||||
@@ -619,7 +664,7 @@
|
|||||||
"in_archive": "Archyve",
|
"in_archive": "Archyve",
|
||||||
"include_archived": "Įtraukti archyvuotus",
|
"include_archived": "Įtraukti archyvuotus",
|
||||||
"include_shared_albums": "Įtraukti bendrinamus albumus",
|
"include_shared_albums": "Įtraukti bendrinamus albumus",
|
||||||
"include_shared_partner_assets": "",
|
"include_shared_partner_assets": "Įtraukti partnerio pasidalintus elementus",
|
||||||
"individual_share": "",
|
"individual_share": "",
|
||||||
"info": "Informacija",
|
"info": "Informacija",
|
||||||
"interval": {
|
"interval": {
|
||||||
@@ -647,8 +692,8 @@
|
|||||||
"library_options": "Bibliotekos pasirinktys",
|
"library_options": "Bibliotekos pasirinktys",
|
||||||
"light": "",
|
"light": "",
|
||||||
"link_options": "Nuorodų parinktys",
|
"link_options": "Nuorodų parinktys",
|
||||||
"link_to_oauth": "",
|
"link_to_oauth": "Susieti su OAuth",
|
||||||
"linked_oauth_account": "",
|
"linked_oauth_account": "Susieta OAuth paskyra",
|
||||||
"list": "Sąrašas",
|
"list": "Sąrašas",
|
||||||
"loading": "Kraunama",
|
"loading": "Kraunama",
|
||||||
"loading_search_results_failed": "Nepavyko užkrauti paieškos rezultatų",
|
"loading_search_results_failed": "Nepavyko užkrauti paieškos rezultatų",
|
||||||
@@ -664,13 +709,13 @@
|
|||||||
"loop_videos": "Kartoti vaizdo įrašus",
|
"loop_videos": "Kartoti vaizdo įrašus",
|
||||||
"loop_videos_description": "",
|
"loop_videos_description": "",
|
||||||
"make": "Gamintojas",
|
"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_sharing_with_partners": "Valdyti dalijimąsi su partneriais",
|
||||||
"manage_the_app_settings": "Valdyti programos nustatymus",
|
"manage_the_app_settings": "Valdyti programos nustatymus",
|
||||||
"manage_your_account": "Valdyti savo paskyrą",
|
"manage_your_account": "Valdyti savo paskyrą",
|
||||||
"manage_your_api_keys": "Valdyti savo API raktus",
|
"manage_your_api_keys": "Valdyti savo API raktus",
|
||||||
"manage_your_devices": "Valdyti prijungtus įrenginius",
|
"manage_your_devices": "Valdyti prijungtus įrenginius",
|
||||||
"manage_your_oauth_connection": "",
|
"manage_your_oauth_connection": "Tvarkyti OAuth prisijungimą",
|
||||||
"map": "Žemėlapis",
|
"map": "Žemėlapis",
|
||||||
"map_marker_with_image": "",
|
"map_marker_with_image": "",
|
||||||
"map_settings": "Žemėlapio nustatymai",
|
"map_settings": "Žemėlapio nustatymai",
|
||||||
@@ -710,7 +755,7 @@
|
|||||||
"no_albums_message": "Sukurkite albumą nuotraukoms ir vaizdo įrašams tvarkyti",
|
"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_with_name_yet": "Atrodo, kad dar neturite albumų su šiuo pavadinimu.",
|
||||||
"no_albums_yet": "Atrodo, kad dar neturite albumų.",
|
"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_assets_message": "SPUSTELĖKITE NORĖDAMI ĮKELTI PIRMĄJĄ NUOTRAUKĄ",
|
||||||
"no_duplicates_found": "Dublikatų nerasta.",
|
"no_duplicates_found": "Dublikatų nerasta.",
|
||||||
"no_exif_info_available": "",
|
"no_exif_info_available": "",
|
||||||
@@ -728,9 +773,10 @@
|
|||||||
"notification_toggle_setting_description": "Įjungti el. pašto pranešimus",
|
"notification_toggle_setting_description": "Įjungti el. pašto pranešimus",
|
||||||
"notifications": "Pranešimai",
|
"notifications": "Pranešimai",
|
||||||
"notifications_setting_description": "Tvarkyti pranešimus",
|
"notifications_setting_description": "Tvarkyti pranešimus",
|
||||||
"oauth": "",
|
"oauth": "OAuth",
|
||||||
"official_immich_resources": "Oficialūs Immich ištekliai",
|
"official_immich_resources": "Oficialūs Immich ištekliai",
|
||||||
"offline": "Neprisijungęs",
|
"offline": "Neprisijungęs",
|
||||||
|
"offline_paths": "Nepasiekiami adresai",
|
||||||
"ok": "Ok",
|
"ok": "Ok",
|
||||||
"oldest_first": "Seniausias pirmas",
|
"oldest_first": "Seniausias pirmas",
|
||||||
"onboarding_welcome_user": "Sveiki atvykę, {user}",
|
"onboarding_welcome_user": "Sveiki atvykę, {user}",
|
||||||
@@ -744,7 +790,7 @@
|
|||||||
"other": "",
|
"other": "",
|
||||||
"other_devices": "Kiti įrenginiai",
|
"other_devices": "Kiti įrenginiai",
|
||||||
"other_variables": "Kiti kintamieji",
|
"other_variables": "Kiti kintamieji",
|
||||||
"owned": "",
|
"owned": "Nuosavi",
|
||||||
"owner": "Savininkas",
|
"owner": "Savininkas",
|
||||||
"partner": "Partneris",
|
"partner": "Partneris",
|
||||||
"partner_can_access": "{partner} gali naudotis",
|
"partner_can_access": "{partner} gali naudotis",
|
||||||
@@ -764,12 +810,13 @@
|
|||||||
"path": "Kelias",
|
"path": "Kelias",
|
||||||
"pattern": "",
|
"pattern": "",
|
||||||
"pause": "Sustabdyti",
|
"pause": "Sustabdyti",
|
||||||
"pause_memories": "",
|
"pause_memories": "Pristabdyti atsiminimus",
|
||||||
"paused": "Sustabdyta",
|
"paused": "Sustabdyta",
|
||||||
"pending": "Laukiama",
|
"pending": "Laukiama",
|
||||||
"people": "Asmenys",
|
"people": "Asmenys",
|
||||||
"people_edits_count": "{count, plural, one {Redaguotas # asmuo} few {Redaguoti # asmenys} other {Redaguota # asmenų}}",
|
"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": "",
|
||||||
"permanent_deletion_warning_setting_description": "",
|
"permanent_deletion_warning_setting_description": "",
|
||||||
"permanently_delete": "Ištrinti visam laikui",
|
"permanently_delete": "Ištrinti visam laikui",
|
||||||
@@ -784,7 +831,7 @@
|
|||||||
"place": "Vieta",
|
"place": "Vieta",
|
||||||
"places": "Vietos",
|
"places": "Vietos",
|
||||||
"play": "",
|
"play": "",
|
||||||
"play_memories": "",
|
"play_memories": "Leisti atsiminimus",
|
||||||
"play_motion_photo": "",
|
"play_motion_photo": "",
|
||||||
"play_or_pause_video": "",
|
"play_or_pause_video": "",
|
||||||
"port": "",
|
"port": "",
|
||||||
@@ -794,6 +841,7 @@
|
|||||||
"previous_memory": "",
|
"previous_memory": "",
|
||||||
"previous_or_next_photo": "",
|
"previous_or_next_photo": "",
|
||||||
"primary": "",
|
"primary": "",
|
||||||
|
"profile_image_of_user": "{user} profilio nuotrauka",
|
||||||
"profile_picture_set": "Profilio nuotrauka nustatyta.",
|
"profile_picture_set": "Profilio nuotrauka nustatyta.",
|
||||||
"public_album": "Viešas albumas",
|
"public_album": "Viešas albumas",
|
||||||
"public_share": "",
|
"public_share": "",
|
||||||
@@ -830,18 +878,27 @@
|
|||||||
"purchase_settings_server_activated": "Serverio produkto raktas yra tvarkomas administratoriaus",
|
"purchase_settings_server_activated": "Serverio produkto raktas yra tvarkomas administratoriaus",
|
||||||
"rating": "Įvertinimas žvaigždutėmis",
|
"rating": "Įvertinimas žvaigždutėmis",
|
||||||
"rating_count": "{count, plural, one {# įvertinimas} few {# įvertinimai} other {# įvertinimų}}",
|
"rating_count": "{count, plural, one {# įvertinimas} few {# įvertinimai} other {# įvertinimų}}",
|
||||||
|
"rating_description": "Rodyti EXIF įvertinimus informacijos skydelyje",
|
||||||
"reaction_options": "",
|
"reaction_options": "",
|
||||||
"read_changelog": "",
|
"read_changelog": "",
|
||||||
"recent": "",
|
"recent": "",
|
||||||
"recent_searches": "",
|
"recent_searches": "",
|
||||||
"refresh": "Atnaujinti",
|
"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",
|
"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": "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_deleted_assets": "",
|
||||||
"remove_from_album": "Pašalinti iš albumo",
|
"remove_from_album": "Pašalinti iš albumo",
|
||||||
"remove_from_favorites": "Pašalinti iš mėgstamiausių",
|
"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ą",
|
"remove_user": "Pašalinti naudotoją",
|
||||||
"removed_api_key": "Pašalintas API Raktas: {name}",
|
"removed_api_key": "Pašalintas API Raktas: {name}",
|
||||||
"removed_from_archive": "Pašalinta iš archyvo",
|
"removed_from_archive": "Pašalinta iš archyvo",
|
||||||
@@ -850,18 +907,19 @@
|
|||||||
"removed_tagged_assets": "Žyma pašalinta iš {count, plural, one {# elemento} other {# elementų}}",
|
"removed_tagged_assets": "Žyma pašalinta iš {count, plural, one {# elemento} other {# elementų}}",
|
||||||
"rename": "Pervadinti",
|
"rename": "Pervadinti",
|
||||||
"repair": "Pataisyti",
|
"repair": "Pataisyti",
|
||||||
"repair_no_results_message": "",
|
"repair_no_results_message": "Nesekami ir trūkstami failai bus rodomi čia",
|
||||||
"replace_with_upload": "",
|
"replace_with_upload": "Pakeisti naujai įkeltu failu",
|
||||||
"require_password": "Reikalauti slaptažodžio",
|
"require_password": "Reikalauti slaptažodžio",
|
||||||
"reset": "Atstatyti",
|
"reset": "Atstatyti",
|
||||||
"reset_password": "",
|
"reset_password": "",
|
||||||
"reset_people_visibility": "",
|
"reset_people_visibility": "",
|
||||||
"resolved_all_duplicates": "Išspręsti visi dublikatai",
|
"resolve_duplicates": "Sutvarkyti dublikatus",
|
||||||
|
"resolved_all_duplicates": "Sutvarkyti visi dublikatai",
|
||||||
"restore": "Atkurti",
|
"restore": "Atkurti",
|
||||||
"restore_all": "Atkurti visus",
|
"restore_all": "Atkurti visus",
|
||||||
"restore_user": "Atkurti naudotoją",
|
"restore_user": "Atkurti naudotoją",
|
||||||
"retry_upload": "",
|
"retry_upload": "",
|
||||||
"review_duplicates": "",
|
"review_duplicates": "Peržiūrėti dublikatus",
|
||||||
"role": "",
|
"role": "",
|
||||||
"save": "Išsaugoti",
|
"save": "Išsaugoti",
|
||||||
"saved_api_key": "Išsaugotas API raktas",
|
"saved_api_key": "Išsaugotas API raktas",
|
||||||
@@ -898,9 +956,11 @@
|
|||||||
"select_avatar_color": "Pasirinkti avataro spalvą",
|
"select_avatar_color": "Pasirinkti avataro spalvą",
|
||||||
"select_face": "Pasirinkti veidą",
|
"select_face": "Pasirinkti veidą",
|
||||||
"select_featured_photo": "Pasirinkti rodomą nuotrauką",
|
"select_featured_photo": "Pasirinkti rodomą nuotrauką",
|
||||||
|
"select_keep_all": "Visus pažymėti \"Palikti\"",
|
||||||
"select_library_owner": "Pasirinkti bibliotekos savininką",
|
"select_library_owner": "Pasirinkti bibliotekos savininką",
|
||||||
"select_new_face": "",
|
"select_new_face": "",
|
||||||
"select_photos": "",
|
"select_photos": "",
|
||||||
|
"select_trash_all": "Visus pažymėti \"Išmesti\"",
|
||||||
"selected": "Pasirinkta",
|
"selected": "Pasirinkta",
|
||||||
"selected_count": "{count, plural, one {# pasirinktas} few {# pasirinkti} other {# pasirinktų}}",
|
"selected_count": "{count, plural, one {# pasirinktas} few {# pasirinkti} other {# pasirinktų}}",
|
||||||
"send_message": "Siųsti žinutę",
|
"send_message": "Siųsti žinutę",
|
||||||
@@ -911,28 +971,29 @@
|
|||||||
"server_version": "Serverio versija",
|
"server_version": "Serverio versija",
|
||||||
"set": "Nustatyti",
|
"set": "Nustatyti",
|
||||||
"set_as_album_cover": "",
|
"set_as_album_cover": "",
|
||||||
"set_as_profile_picture": "",
|
"set_as_profile_picture": "Nustatyti kaip profilio nuotrauką",
|
||||||
"set_date_of_birth": "Nustatyti gimimo datą",
|
"set_date_of_birth": "Nustatyti gimimo datą",
|
||||||
"set_profile_picture": "Nustatyti profilio nuotrauką",
|
"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": "Nustatymai",
|
||||||
"settings_saved": "",
|
"settings_saved": "",
|
||||||
"share": "Dalintis",
|
"share": "Dalintis",
|
||||||
"shared": "",
|
"shared": "Bendrinami",
|
||||||
"shared_by": "",
|
"shared_by": "",
|
||||||
"shared_by_you": "",
|
"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_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}",
|
"shared_with_partner": "Pasidalinta su {partner}",
|
||||||
"sharing": "Dalijimasis",
|
"sharing": "Dalijimasis",
|
||||||
"sharing_enter_password": "Norėdami peržiūrėti šį puslapį, įveskite slaptažodį.",
|
"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_album_options": "Rodyti albumo parinktis",
|
||||||
"show_file_location": "Rodyti rinkmenos vietą",
|
"show_file_location": "Rodyti rinkmenos vietą",
|
||||||
"show_gallery": "Rodyti galeriją",
|
"show_gallery": "Rodyti galeriją",
|
||||||
"show_hidden_people": "",
|
"show_hidden_people": "",
|
||||||
"show_in_timeline": "",
|
"show_in_timeline": "Rodyti laiko skalėje",
|
||||||
"show_in_timeline_setting_description": "",
|
"show_in_timeline_setting_description": "Rodyti šio naudotojo nuotraukas ir vaizdo įrašus mano laiko skalėje",
|
||||||
"show_keyboard_shortcuts": "",
|
"show_keyboard_shortcuts": "",
|
||||||
"show_metadata": "Rodyti metaduomenis",
|
"show_metadata": "Rodyti metaduomenis",
|
||||||
"show_or_hide_info": "Rodyti arba slėpti informaciją",
|
"show_or_hide_info": "Rodyti arba slėpti informaciją",
|
||||||
@@ -940,15 +1001,18 @@
|
|||||||
"show_person_options": "",
|
"show_person_options": "",
|
||||||
"show_progress_bar": "",
|
"show_progress_bar": "",
|
||||||
"show_search_options": "Rodyti paieškos parinktis",
|
"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": "Rėmėjo ženklelis",
|
||||||
"show_supporter_badge_description": "Rodyti rėmėjo ženklelį",
|
"show_supporter_badge_description": "Rodyti rėmėjo ženklelį",
|
||||||
"shuffle": "",
|
"shuffle": "",
|
||||||
|
"sidebar": "Šoninė juosta",
|
||||||
|
"sidebar_display_description": "Rodyti rodinio nuorodą šoninėje juostoje",
|
||||||
"sign_out": "Atsijungti",
|
"sign_out": "Atsijungti",
|
||||||
"sign_up": "Užsiregistruoti",
|
"sign_up": "Užsiregistruoti",
|
||||||
"size": "Dydis",
|
"size": "Dydis",
|
||||||
"skip_to_content": "Pereiti prie turinio",
|
"skip_to_content": "Pereiti prie turinio",
|
||||||
"slideshow": "Skaidrės",
|
"slideshow": "Skaidrių peržiūra",
|
||||||
"slideshow_settings": "",
|
"slideshow_settings": "Skaidrių peržiūros nustatymai",
|
||||||
"sort_albums_by": "",
|
"sort_albums_by": "",
|
||||||
"sort_created": "Sukūrimo data",
|
"sort_created": "Sukūrimo data",
|
||||||
"sort_modified": "Keitimo data",
|
"sort_modified": "Keitimo data",
|
||||||
@@ -978,6 +1042,7 @@
|
|||||||
"sync": "Sinchronizuoti",
|
"sync": "Sinchronizuoti",
|
||||||
"tag": "Žyma",
|
"tag": "Žyma",
|
||||||
"tag_created": "Sukurta žyma: {tag}",
|
"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_not_found_question": "Nerandate žymos? <link>Sukurti naują žymą.</link>",
|
||||||
"tag_updated": "Atnaujinta žyma: {tag}",
|
"tag_updated": "Atnaujinta žyma: {tag}",
|
||||||
"tagged_assets": "Žyma pridėta prie {count, plural, one {# elemento} other {# elementų}}",
|
"tagged_assets": "Žyma pridėta prie {count, plural, one {# elemento} other {# elementų}}",
|
||||||
@@ -986,18 +1051,20 @@
|
|||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"theme_selection": "",
|
"theme_selection": "",
|
||||||
"theme_selection_description": "",
|
"theme_selection_description": "",
|
||||||
"time_based_memories": "",
|
"time_based_memories": "Atsiminimai pagal laiką",
|
||||||
|
"timeline": "Laiko skalė",
|
||||||
"timezone": "Laiko juosta",
|
"timezone": "Laiko juosta",
|
||||||
"to_archive": "Archyvuoti",
|
"to_archive": "Archyvuoti",
|
||||||
"to_change_password": "Pakeisti slaptažodį",
|
"to_change_password": "Pakeisti slaptažodį",
|
||||||
"to_favorite": "Įtraukti prie mėgstamiausių",
|
"to_favorite": "Įtraukti prie mėgstamiausių",
|
||||||
|
"to_trash": "Išmesti",
|
||||||
"toggle_settings": "",
|
"toggle_settings": "",
|
||||||
"toggle_theme": "",
|
"toggle_theme": "",
|
||||||
"total_usage": "",
|
"total_usage": "",
|
||||||
"trash": "Šiukšliadėžė",
|
"trash": "Šiukšliadėžė",
|
||||||
"trash_all": "Ištrinti visus",
|
"trash_all": "Perkelti visus į šiukšliadėžę",
|
||||||
"trash_count": "Šiukšliadėžė {count, number}",
|
"trash_count": "Perkelti {count, number} į šiukšliadėžę",
|
||||||
"trash_no_results_message": "",
|
"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ų}}.",
|
"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",
|
"type": "Tipas",
|
||||||
"unarchive": "Išarchyvuoti",
|
"unarchive": "Išarchyvuoti",
|
||||||
@@ -1006,22 +1073,26 @@
|
|||||||
"unhide_person": "",
|
"unhide_person": "",
|
||||||
"unknown": "",
|
"unknown": "",
|
||||||
"unknown_year": "Nežinomi metai",
|
"unknown_year": "Nežinomi metai",
|
||||||
"unlink_oauth": "",
|
"unlink_oauth": "Atsieti OAuth",
|
||||||
"unlinked_oauth_account": "",
|
"unlinked_oauth_account": "Atsieta OAuth paskyra",
|
||||||
"unnamed_album_delete_confirmation": "Ar tikrai norite ištrinti šį albumą?",
|
"unnamed_album_delete_confirmation": "Ar tikrai norite ištrinti šį albumą?",
|
||||||
"unsaved_change": "Neišsaugoti pakeitimai",
|
"unsaved_change": "Neišsaugoti pakeitimai",
|
||||||
"unselect_all": "",
|
"unselect_all": "",
|
||||||
"unselect_all_duplicates": "Atžymėti visus dublikatus",
|
"unselect_all_duplicates": "Atžymėti visus dublikatus",
|
||||||
"unstack": "Išgrupuoti",
|
"unstack": "Išgrupuoti",
|
||||||
"unstacked_assets_count": "{count, plural, one {Išgrupuotas # elementas} few {Išgrupuoti # elementai} other {Išgrupuota # elementų}}",
|
"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": "",
|
"up_next": "",
|
||||||
"updated_password": "Slaptažodis atnaujintas",
|
"updated_password": "Slaptažodis atnaujintas",
|
||||||
"upload": "Įkelti",
|
"upload": "Įkelti",
|
||||||
"upload_concurrency": "",
|
"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_progress": "Liko {remaining, number} - Apdorota {processed, number}/{total, number}",
|
||||||
"upload_status_duplicates": "Dublikatai",
|
"upload_status_duplicates": "Dublikatai",
|
||||||
"upload_status_errors": "Klaidos",
|
"upload_status_errors": "Klaidos",
|
||||||
"upload_status_uploaded": "Įkelta",
|
"upload_status_uploaded": "Įkelta",
|
||||||
|
"upload_success": "Įkėlimas pavyko, norėdami pamatyti naujai įkeltus elementus perkraukite puslapį.",
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "",
|
"usage": "",
|
||||||
"user": "Naudotojas",
|
"user": "Naudotojas",
|
||||||
@@ -1031,7 +1102,7 @@
|
|||||||
"user_usage_stats_description": "Žiūrėti paskyros naudojimo statistiką",
|
"user_usage_stats_description": "Žiūrėti paskyros naudojimo statistiką",
|
||||||
"username": "Naudotojo vardas",
|
"username": "Naudotojo vardas",
|
||||||
"users": "Naudotojai",
|
"users": "Naudotojai",
|
||||||
"utilities": "Priemonės",
|
"utilities": "Įrankiai",
|
||||||
"validate": "Validuoti",
|
"validate": "Validuoti",
|
||||||
"variables": "Kintamieji",
|
"variables": "Kintamieji",
|
||||||
"version": "Versija",
|
"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.",
|
"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": "Video",
|
||||||
"videos_count": "{count, plural, one {# vaizdo įrašas} few {# vaizdo įrašai} other {# vaizdo įrašų}}",
|
"videos_count": "{count, plural, one {# vaizdo įrašas} few {# vaizdo įrašai} other {# vaizdo įrašų}}",
|
||||||
"view": "Rodyti",
|
"view": "Žiūrėti",
|
||||||
"view_album": "Rodyti albumą",
|
"view_album": "Žiūrėti albumą",
|
||||||
"view_all": "Peržiūrėti viską",
|
"view_all": "Peržiūrėti viską",
|
||||||
"view_all_users": "Peržiūrėti visus naudotojus",
|
"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_next_asset": "",
|
||||||
"view_previous_asset": "",
|
"view_previous_asset": "",
|
||||||
"view_stack": "Peržiūrėti grupę",
|
"view_stack": "Peržiūrėti grupę",
|
||||||
@@ -1055,6 +1127,8 @@
|
|||||||
"week": "Savaitė",
|
"week": "Savaitė",
|
||||||
"welcome_to_immich": "Sveiki atvykę į Immich",
|
"welcome_to_immich": "Sveiki atvykę į Immich",
|
||||||
"year": "Metai",
|
"year": "Metai",
|
||||||
|
"years_ago": "Prieš {years, plural, one {# metus} other {# metų}}",
|
||||||
"yes": "Taip",
|
"yes": "Taip",
|
||||||
|
"you_dont_have_any_shared_links": "Bendrinimo nuorodų neturite",
|
||||||
"zoom_image": "Priartinti vaizdą"
|
"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>.",
|
"authentication_settings_reenable": "Lai atkārtoti iespējotu, izmantojiet <link>Servera Komandu</link>.",
|
||||||
"background_task_job": "Fona Uzdevumi",
|
"background_task_job": "Fona Uzdevumi",
|
||||||
"check_all": "Pārbaudīt Visu",
|
"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",
|
"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_delete_library": "Vai tiešām vēlaties dzēst {library} bibliotēku?",
|
||||||
"confirm_email_below": "Lai apstiprinātu, zemāk ierakstiet “{email}”",
|
"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_reprocess_all_faces": "Vai tiešām vēlaties atkārtoti apstrādāt visas sejas? Tas arī atiestatīs cilvēkus ar vārdiem.",
|
||||||
"confirm_user_password_reset": "Vai tiešām vēlaties atiestatīt lietotāja {user} paroli?",
|
"confirm_user_password_reset": "Vai tiešām vēlaties atiestatīt lietotāja {user} paroli?",
|
||||||
"create_job": "Izveidot darbu",
|
"create_job": "Izveidot uzdevumu",
|
||||||
"cron_expression": "Cron izteiksme",
|
"cron_expression": "Cron izteiksme",
|
||||||
"disable_login": "Atspējot pieteikšanos",
|
"disable_login": "Atspējot pieteikšanos",
|
||||||
"duplicate_detection_job_description": "Palaidiet mašīnmācīšanos uz līdzekļiem, lai noteiktu līdzīgus attēlus. Paļaujas uz Viedo Meklēšanu",
|
"duplicate_detection_job_description": "Palaidiet mašīnmācīšanos uz līdzekļiem, lai noteiktu līdzīgus attēlus. Paļaujas uz Viedo Meklēšanu",
|
||||||
@@ -59,10 +59,10 @@
|
|||||||
"image_settings": "Attēla Iestatījumi",
|
"image_settings": "Attēla Iestatījumi",
|
||||||
"image_settings_description": "Ģenerēto attēlu kvalitātes un izšķirtspējas pārvaldība",
|
"image_settings_description": "Ģenerēto attēlu kvalitātes un izšķirtspējas pārvaldība",
|
||||||
"image_thumbnail_title": "Sīktēlu iestatījumi",
|
"image_thumbnail_title": "Sīktēlu iestatījumi",
|
||||||
"job_created": "Darbs izveidots",
|
"job_created": "Uzdevums izveidots",
|
||||||
"job_settings": "",
|
"job_settings": "Uzdevumu iestatījumi",
|
||||||
"job_settings_description": "",
|
"job_settings_description": "Pārvaldīt uzdevumu izpildes vienlaicīgumu",
|
||||||
"job_status": "Darbu statuss",
|
"job_status": "Uzdevumu statuss",
|
||||||
"library_deleted": "Bibliotēka dzēsta",
|
"library_deleted": "Bibliotēka dzēsta",
|
||||||
"library_scanning": "",
|
"library_scanning": "",
|
||||||
"library_scanning_description": "",
|
"library_scanning_description": "",
|
||||||
@@ -167,6 +167,7 @@
|
|||||||
"repair_all": "Salabot visu",
|
"repair_all": "Salabot visu",
|
||||||
"require_password_change_on_login": "Pieprasīt lietotājam mainīt paroli pēc pirmās pieteikšanās",
|
"require_password_change_on_login": "Pieprasīt lietotājam mainīt paroli pēc pirmās pieteikšanās",
|
||||||
"scanning_library": "Skenē bibliotēku",
|
"scanning_library": "Skenē bibliotēku",
|
||||||
|
"search_jobs": "Meklēt uzdevumus...",
|
||||||
"server_external_domain_settings": "",
|
"server_external_domain_settings": "",
|
||||||
"server_external_domain_settings_description": "",
|
"server_external_domain_settings_description": "",
|
||||||
"server_settings": "Servera iestatījumi",
|
"server_settings": "Servera iestatījumi",
|
||||||
@@ -527,7 +528,7 @@
|
|||||||
},
|
},
|
||||||
"invite_people": "Ielūgt cilvēkus",
|
"invite_people": "Ielūgt cilvēkus",
|
||||||
"invite_to_album": "Uzaicināt albumā",
|
"invite_to_album": "Uzaicināt albumā",
|
||||||
"jobs": "Darbi",
|
"jobs": "Uzdevumi",
|
||||||
"keep": "Paturēt",
|
"keep": "Paturēt",
|
||||||
"keep_all": "Paturēt visus",
|
"keep_all": "Paturēt visus",
|
||||||
"keyboard_shortcuts": "Tastatūras saīsnes",
|
"keyboard_shortcuts": "Tastatūras saīsnes",
|
||||||
@@ -873,6 +874,8 @@
|
|||||||
"validate": "",
|
"validate": "",
|
||||||
"variables": "",
|
"variables": "",
|
||||||
"version": "Versija",
|
"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": "Videoklips",
|
||||||
"video_hover_setting_description": "",
|
"video_hover_setting_description": "",
|
||||||
"videos": "Videoklipi",
|
"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_implications": "Ciri peta bergantung pada perkhidmatan jubin luaran (tiles.immich.cloud)",
|
||||||
"map_light_style": "Tema terang",
|
"map_light_style": "Tema terang",
|
||||||
"map_manage_reverse_geocoding_settings": "Urus tetapan <link>Geocoding Songsang</link>",
|
"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_enable_description": "Dayakan pengekodan geo terbalik",
|
||||||
"map_reverse_geocoding_settings": "Tetapan Pengekodan Geo Terbalik",
|
"map_reverse_geocoding_settings": "Tetapan Pengekodan Geo Terbalik",
|
||||||
"map_settings": "Peta",
|
"map_settings": "Peta",
|
||||||
@@ -229,8 +229,63 @@
|
|||||||
"server_settings_description": "Urus tetapan pelayan",
|
"server_settings_description": "Urus tetapan pelayan",
|
||||||
"server_welcome_message": "Mesej alu-aluan",
|
"server_welcome_message": "Mesej alu-aluan",
|
||||||
"server_welcome_message_description": "Mesej yang dipaparkan pada halaman log masuk.",
|
"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",
|
"timeline": "Garis masa",
|
||||||
"total": "Jumlah",
|
"total": "Jumlah",
|
||||||
"user_usage_stats": "Statistik penggunaan akaun",
|
"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}",
|
"cleared_jobs": "Ryddet opp jobber for: {job}",
|
||||||
"config_set_by_file": "Konfigurasjonen er for øyeblikket satt av en konfigurasjonsfil",
|
"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": "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_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_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}?",
|
"confirm_user_password_reset": "Er du sikker på at du vil tilbakestille passordet til {user}?",
|
||||||
"create_job": "Lag jobb",
|
"create_job": "Lag jobb",
|
||||||
"cron_expression": "Cron uttrykk",
|
"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",
|
"disable_login": "Deaktiver innlogging",
|
||||||
"duplicate_detection_job_description": "Kjør maskinlæring på filer for å oppdage lignende bilder. Krever bruk av Smart Search",
|
"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.",
|
"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_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": "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_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_preview_title": "Forhåndsvisningsinnstillinger",
|
||||||
"image_quality": "Kvalitet",
|
"image_quality": "Kvalitet",
|
||||||
"image_resolution": "Oppløsning",
|
"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": "Bildeinnstilliinger",
|
||||||
"image_settings_description": "Administrer kvalitet og oppløsning på genererte bilder",
|
"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_concurrency": "{job} samtidighet",
|
||||||
|
"job_created": "Oppgave laget",
|
||||||
"job_not_concurrency_safe": "Denne jobben er ikke samtidlighet sikker.",
|
"job_not_concurrency_safe": "Denne jobben er ikke samtidlighet sikker.",
|
||||||
"job_settings": "Jobbinnstillinger",
|
"job_settings": "Jobbinnstillinger",
|
||||||
"job_settings_description": "Administrer parallellkjøring for jobber",
|
"job_settings_description": "Administrer parallellkjøring for jobber",
|
||||||
@@ -129,7 +138,9 @@
|
|||||||
"map_enable_description": "Aktiver kartfunksjoner",
|
"map_enable_description": "Aktiver kartfunksjoner",
|
||||||
"map_gps_settings": "Kart & GPS Innstillinger",
|
"map_gps_settings": "Kart & GPS Innstillinger",
|
||||||
"map_gps_settings_description": "Administrer innstillinger for kart og GPS (Reversert geokoding)",
|
"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_light_style": "Lys stil",
|
||||||
|
"map_manage_reverse_geocoding_settings": "Administrer instillinger for <link>Omvendt Geokoding</link>",
|
||||||
"map_reverse_geocoding": "Omvendt geokoding",
|
"map_reverse_geocoding": "Omvendt geokoding",
|
||||||
"map_reverse_geocoding_enable_description": "Aktiver omvendt geokoding",
|
"map_reverse_geocoding_enable_description": "Aktiver omvendt geokoding",
|
||||||
"map_reverse_geocoding_settings": "Innstillinger for omvendt geokoding",
|
"map_reverse_geocoding_settings": "Innstillinger for omvendt geokoding",
|
||||||
@@ -138,6 +149,8 @@
|
|||||||
"map_style_description": "URL til et style.json-karttema",
|
"map_style_description": "URL til et style.json-karttema",
|
||||||
"metadata_extraction_job": "Hent metadata",
|
"metadata_extraction_job": "Hent metadata",
|
||||||
"metadata_extraction_job_description": "Hent metadatainformasjon fra hver fil, for eksempel GPS-posisjon og oppløsning",
|
"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": "Metadatainnstillinger",
|
||||||
"metadata_settings_description": "Administrer metadatainnstillinger",
|
"metadata_settings_description": "Administrer metadatainnstillinger",
|
||||||
"migration_job": "Migrering",
|
"migration_job": "Migrering",
|
||||||
@@ -174,7 +187,7 @@
|
|||||||
"oauth_issuer_url": "Utgiverens URL",
|
"oauth_issuer_url": "Utgiverens URL",
|
||||||
"oauth_mobile_redirect_uri": "Mobil omdirigerings-URI",
|
"oauth_mobile_redirect_uri": "Mobil omdirigerings-URI",
|
||||||
"oauth_mobile_redirect_uri_override": "Mobil omdirigerings-URI overstyring",
|
"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": "Profilsigneringsalgoritme",
|
||||||
"oauth_profile_signing_algorithm_description": "Algoritme brukt for å signere brukerprofilen.",
|
"oauth_profile_signing_algorithm_description": "Algoritme brukt for å signere brukerprofilen.",
|
||||||
"oauth_scope": "Omfang",
|
"oauth_scope": "Omfang",
|
||||||
@@ -194,6 +207,7 @@
|
|||||||
"password_settings": "Passordinnlogging",
|
"password_settings": "Passordinnlogging",
|
||||||
"password_settings_description": "Administrer innstillinger for passordinnlogging",
|
"password_settings_description": "Administrer innstillinger for passordinnlogging",
|
||||||
"paths_validated_successfully": "Alle filbaner validert uten problemer",
|
"paths_validated_successfully": "Alle filbaner validert uten problemer",
|
||||||
|
"person_cleanup_job": "Person opprydding",
|
||||||
"quota_size_gib": "Kvotestørrelse (GiB)",
|
"quota_size_gib": "Kvotestørrelse (GiB)",
|
||||||
"refreshing_all_libraries": "Oppdaterer alle biblioteker",
|
"refreshing_all_libraries": "Oppdaterer alle biblioteker",
|
||||||
"registration": "Administrator registrering",
|
"registration": "Administrator registrering",
|
||||||
@@ -204,9 +218,13 @@
|
|||||||
"require_password_change_on_login": "Krev at brukeren endrer passord ved første pålogging",
|
"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_default": "Tilbakestill innstillinger til standard",
|
||||||
"reset_settings_to_recent_saved": "Tilbakestill innstillingene til de nylig lagrede innstillingene",
|
"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",
|
"send_welcome_email": "Send velkomst-e-post",
|
||||||
"server_external_domain_settings": "Eksternt domene",
|
"server_external_domain_settings": "Eksternt domene",
|
||||||
"server_external_domain_settings_description": "Domene for offentlige delingslenker, inkludert http(s)://",
|
"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": "Serverinstillinger",
|
||||||
"server_settings_description": "Administrer serverinnstillinger",
|
"server_settings_description": "Administrer serverinnstillinger",
|
||||||
"server_welcome_message": "Velkomstmelding",
|
"server_welcome_message": "Velkomstmelding",
|
||||||
@@ -221,7 +239,7 @@
|
|||||||
"storage_template_hash_verification_enabled": "Hash verifisering aktivert",
|
"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_hash_verification_enabled_description": "Aktiver hasjverifisering. Ikke deaktiver dette med mindre du er sikker på konsekvensene",
|
||||||
"storage_template_migration": "Lagringsmal migrering",
|
"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_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_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>",
|
"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_settings_description": "Administrer mappestrukturen og filnavnet til opplastede fil",
|
||||||
"storage_template_user_label": "<code>{label}</code> er brukerens Lagringsetikett",
|
"storage_template_user_label": "<code>{label}</code> er brukerens Lagringsetikett",
|
||||||
"system_settings": "Systeminstillinger",
|
"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": "Egendefinert CSS",
|
||||||
"theme_custom_css_settings_description": "Cascading Style Sheets gjør det mulig å tilpasse designet av Immich.",
|
"theme_custom_css_settings_description": "Cascading Style Sheets gjør det mulig å tilpasse designet av Immich.",
|
||||||
"theme_settings": "Tema innstillinger",
|
"theme_settings": "Tema innstillinger",
|
||||||
@@ -260,6 +289,8 @@
|
|||||||
"transcoding_constant_rate_factor": "Konstant ratefaktor (-crf)",
|
"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_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_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": "Maskinvareakselerasjon",
|
||||||
"transcoding_hardware_acceleration_description": "Eksperimentell; mye raskere, men vil ha lavere kvalitet ved samme bithastighet",
|
"transcoding_hardware_acceleration_description": "Eksperimentell; mye raskere, men vil ha lavere kvalitet ved samme bithastighet",
|
||||||
"transcoding_hardware_decoding": "Maskinvaredekoding",
|
"transcoding_hardware_decoding": "Maskinvaredekoding",
|
||||||
@@ -272,6 +303,8 @@
|
|||||||
"transcoding_max_keyframe_interval": "Maksimal referansebilde intervall",
|
"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_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_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": "Foretrukken maskinvareenhet",
|
||||||
"transcoding_preferred_hardware_device_description": "Gjelder bare for VAAPI og QSV. Angir DRI-node brukt for maskinvaretranscoding.",
|
"transcoding_preferred_hardware_device_description": "Gjelder bare for VAAPI og QSV. Angir DRI-node brukt for maskinvaretranscoding.",
|
||||||
"transcoding_preset_preset": "Forhåndsinnstilling (-preset)",
|
"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_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_required_description": "Bare videoer som ikke er i et akseptert format",
|
||||||
"transcoding_settings": "Innstillinger for videotranskoding",
|
"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": "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_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_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": "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.",
|
"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",
|
"trash_settings_description": "Administrer papirkurv-innstillinger",
|
||||||
"untracked_files": "Usporede filer",
|
"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",
|
"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": "<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": "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.",
|
"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",
|
"advanced": "Avansert",
|
||||||
"age_months": "Alder {months, plural, one {# måned} other {# måneder}}",
|
"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_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": "Album lagt til",
|
||||||
"album_added_notification_setting_description": "Motta en e-postvarsling når du legges til i et delt album",
|
"album_added_notification_setting_description": "Motta en e-postvarsling når du legges til i et delt album",
|
||||||
"album_cover_updated": "Albumomslag oppdatert",
|
"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_delete_confirmation_description": "Hvis dette albumet deles, vil andre brukere miste tilgangen til dette.",
|
||||||
"album_info_updated": "Albuminformasjon oppdatert",
|
"album_info_updated": "Albuminformasjon oppdatert",
|
||||||
"album_leave": "Forlate album?",
|
"album_leave": "Forlate album?",
|
||||||
@@ -384,16 +419,30 @@
|
|||||||
"asset_uploading": "Laster opp...",
|
"asset_uploading": "Laster opp...",
|
||||||
"assets": "Filer",
|
"assets": "Filer",
|
||||||
"assets_added_count": "Lagt til {count, plural, one {# element} other {# elementer}}",
|
"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",
|
"authorized_devices": "Autoriserte enheter",
|
||||||
"back": "Tilbake",
|
"back": "Tilbake",
|
||||||
|
"back_close_deselect": "Tilbake, lukk eller fjern merking",
|
||||||
"backward": "Bakover",
|
"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.",
|
"birthdate_set_description": "Fødelsdatoen er brukt for å beregne alderen til denne personen ved tidspunktet til bildet.",
|
||||||
"blurred_background": "Uskarp bakgrunn",
|
"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!",
|
"bugs_and_feature_requests": "Feil og funksjonsforespørsler",
|
||||||
"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.",
|
"build": "Bygg",
|
||||||
"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.",
|
"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": "Kamera",
|
||||||
"camera_brand": "Kameramerke",
|
"camera_brand": "Kameramerke",
|
||||||
"camera_model": "Kameramodell",
|
"camera_model": "Kameramodell",
|
||||||
@@ -420,8 +469,11 @@
|
|||||||
"clear_all_recent_searches": "Fjern alle nylige søk",
|
"clear_all_recent_searches": "Fjern alle nylige søk",
|
||||||
"clear_message": "Fjern melding",
|
"clear_message": "Fjern melding",
|
||||||
"clear_value": "Fjern verdi",
|
"clear_value": "Fjern verdi",
|
||||||
|
"clockwise": "Med urviseren",
|
||||||
"close": "Lukk",
|
"close": "Lukk",
|
||||||
|
"collapse": "Trekk sammen",
|
||||||
"collapse_all": "Kollaps alt",
|
"collapse_all": "Kollaps alt",
|
||||||
|
"color": "Farge",
|
||||||
"color_theme": "Fargetema",
|
"color_theme": "Fargetema",
|
||||||
"comment_deleted": "Kommentar slettet",
|
"comment_deleted": "Kommentar slettet",
|
||||||
"comment_options": "Kommentaralternativer",
|
"comment_options": "Kommentaralternativer",
|
||||||
@@ -430,6 +482,7 @@
|
|||||||
"confirm": "Bekreft",
|
"confirm": "Bekreft",
|
||||||
"confirm_admin_password": "Bekreft administratorpassord",
|
"confirm_admin_password": "Bekreft administratorpassord",
|
||||||
"confirm_delete_shared_link": "Er du sikker på at du vil slette denne delte lenken?",
|
"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",
|
"confirm_password": "Bekreft passord",
|
||||||
"contain": "Inneholder",
|
"contain": "Inneholder",
|
||||||
"context": "Kontekst",
|
"context": "Kontekst",
|
||||||
@@ -455,6 +508,8 @@
|
|||||||
"create_new_person": "Opprett ny person",
|
"create_new_person": "Opprett ny person",
|
||||||
"create_new_person_hint": "Tildel valgte eiendeler til en ny person",
|
"create_new_person_hint": "Tildel valgte eiendeler til en ny person",
|
||||||
"create_new_user": "Opprett ny bruker",
|
"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",
|
"create_user": "Opprett Bruker",
|
||||||
"created": "Opprettet",
|
"created": "Opprettet",
|
||||||
"current_device": "Nåværende enhet",
|
"current_device": "Nåværende enhet",
|
||||||
@@ -468,6 +523,10 @@
|
|||||||
"date_range": "Datoområde",
|
"date_range": "Datoområde",
|
||||||
"day": "Dag",
|
"day": "Dag",
|
||||||
"deduplicate_all": "De-dupliser alle",
|
"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": "Standard språkinnstilling",
|
||||||
"default_locale_description": "Formater datoer og tall basert på nettleserens språkinnstilling",
|
"default_locale_description": "Formater datoer og tall basert på nettleserens språkinnstilling",
|
||||||
"delete": "Slett",
|
"delete": "Slett",
|
||||||
@@ -477,14 +536,19 @@
|
|||||||
"delete_key": "Slett nøkkel",
|
"delete_key": "Slett nøkkel",
|
||||||
"delete_library": "Slett bibliotek",
|
"delete_library": "Slett bibliotek",
|
||||||
"delete_link": "Slett lenke",
|
"delete_link": "Slett lenke",
|
||||||
|
"delete_others": "Slett andre",
|
||||||
"delete_shared_link": "Slett delt lenke",
|
"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",
|
"delete_user": "Slett bruker",
|
||||||
"deleted_shared_link": "Slettet delt lenke",
|
"deleted_shared_link": "Slettet delt lenke",
|
||||||
|
"deletes_missing_assets": "Slett eiendeler som mangler fra disk",
|
||||||
"description": "Beskrivelse",
|
"description": "Beskrivelse",
|
||||||
"details": "Detaljer",
|
"details": "Detaljer",
|
||||||
"direction": "Retning",
|
"direction": "Retning",
|
||||||
"disabled": "Deaktivert",
|
"disabled": "Deaktivert",
|
||||||
"disallow_edits": "Forby redigering",
|
"disallow_edits": "Forby redigering",
|
||||||
|
"discord": "Discord",
|
||||||
"discover": "Oppdag",
|
"discover": "Oppdag",
|
||||||
"dismiss_all_errors": "Avvis alle feil",
|
"dismiss_all_errors": "Avvis alle feil",
|
||||||
"dismiss_error": "Avvis feil",
|
"dismiss_error": "Avvis feil",
|
||||||
@@ -493,14 +557,20 @@
|
|||||||
"display_original_photos": "Vis opprinnelige bilder",
|
"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.",
|
"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",
|
"do_not_show_again": "Ikke vis denne meldingen igjen",
|
||||||
|
"documentation": "Dokumentasjon",
|
||||||
"done": "Ferdig",
|
"done": "Ferdig",
|
||||||
"download": "Last ned",
|
"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": "Last ned",
|
||||||
"download_settings_description": "Administrer innstillinger relatert til nedlasting av filer",
|
"download_settings_description": "Administrer innstillinger relatert til nedlasting av filer",
|
||||||
"downloading": "Laster ned",
|
"downloading": "Laster ned",
|
||||||
|
"downloading_asset_filename": "Last ned {filename}",
|
||||||
|
"drop_files_to_upload": "Slipp filer hvor som helst for å laste opp",
|
||||||
"duplicates": "Duplikater",
|
"duplicates": "Duplikater",
|
||||||
"duplicates_description": "Løs hver gruppe ved å angi hvilke, hvis noen, er duplikater",
|
"duplicates_description": "Løs hver gruppe ved å angi hvilke, hvis noen, er duplikater",
|
||||||
"duration": "Varighet",
|
"duration": "Varighet",
|
||||||
|
"edit": "Rediger",
|
||||||
"edit_album": "Rediger album",
|
"edit_album": "Rediger album",
|
||||||
"edit_avatar": "Rediger avatar",
|
"edit_avatar": "Rediger avatar",
|
||||||
"edit_date": "Rediger dato",
|
"edit_date": "Rediger dato",
|
||||||
@@ -512,62 +582,119 @@
|
|||||||
"edit_key": "Rediger nøkkel",
|
"edit_key": "Rediger nøkkel",
|
||||||
"edit_link": "Endre lenke",
|
"edit_link": "Endre lenke",
|
||||||
"edit_location": "Endre lokasjon",
|
"edit_location": "Endre lokasjon",
|
||||||
"edit_name": "Endre navn",
|
"edit_name": "Redigere navn",
|
||||||
"edit_people": "Rediger personer",
|
"edit_people": "Rediger personer",
|
||||||
|
"edit_tag": "Rediger tag",
|
||||||
"edit_title": "Rediger Tittel",
|
"edit_title": "Rediger Tittel",
|
||||||
"edit_user": "Rediger bruker",
|
"edit_user": "Rediger bruker",
|
||||||
"edited": "Redigert",
|
"edited": "Redigert",
|
||||||
"editor": "Redaktør",
|
"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",
|
"email": "E-postadresse",
|
||||||
"empty_trash": "Tøm papirkurv",
|
"empty_trash": "Tøm papirkurv",
|
||||||
"enable": "",
|
"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!",
|
||||||
"enabled": "",
|
"enable": "Aktivere",
|
||||||
|
"enabled": "Aktivert",
|
||||||
"end_date": "Slutt dato",
|
"end_date": "Slutt dato",
|
||||||
"error": "Feil",
|
"error": "Feil",
|
||||||
"error_loading_image": "Feil ved lasting av bilde",
|
"error_loading_image": "Feil ved lasting av bilde",
|
||||||
|
"error_title": "Feil - Noe gikk galt",
|
||||||
"errors": {
|
"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}",
|
"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.",
|
"exclusion_pattern_already_exists": "Dette eksklusjonsmønsteret eksisterer allerede.",
|
||||||
"failed_job_command": "Kommandoen {command} mislyktes for jobben: {job}",
|
"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.",
|
"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",
|
"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",
|
"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}}",
|
"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_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_comment": "Kan ikke legge til kommentar",
|
||||||
"unable_to_add_exclusion_pattern": "Kan ikke legge til eksklusjonsmønster",
|
"unable_to_add_exclusion_pattern": "Kan ikke legge til eksklusjonsmønster",
|
||||||
"unable_to_add_import_path": "Kan ikke legge til importsti",
|
"unable_to_add_import_path": "Kan ikke legge til importsti",
|
||||||
"unable_to_add_partners": "Kan ikke legge til partnere",
|
"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_album_user_role": "Kan ikke endre brukerens rolle i albumet",
|
||||||
"unable_to_change_date": "Kan ikke endre dato",
|
"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_location": "Kan ikke endre plassering",
|
||||||
"unable_to_change_password": "Kan ikke endre passord",
|
"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_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_api_key": "Kan ikke opprette en ny API-nøkkel",
|
||||||
"unable_to_create_library": "Kan ikke opprette bibliotek",
|
"unable_to_create_library": "Kan ikke opprette bibliotek",
|
||||||
"unable_to_create_user": "Kan ikke opprette bruker",
|
"unable_to_create_user": "Kan ikke opprette bruker",
|
||||||
"unable_to_delete_album": "Kan ikke slette album",
|
"unable_to_delete_album": "Kan ikke slette album",
|
||||||
"unable_to_delete_asset": "Kan ikke slette filen",
|
"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_exclusion_pattern": "Kan ikke slette eksklusjonsmønster",
|
||||||
"unable_to_delete_import_path": "Kan ikke slette importsti",
|
"unable_to_delete_import_path": "Kan ikke slette importsti",
|
||||||
"unable_to_delete_shared_link": "Kan ikke slette delt lenke",
|
"unable_to_delete_shared_link": "Kan ikke slette delt lenke",
|
||||||
"unable_to_delete_user": "Kan ikke slette bruker",
|
"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_exclusion_pattern": "Kan ikke redigere eksklusjonsmønster",
|
||||||
"unable_to_edit_import_path": "Kan ikke redigere importsti",
|
"unable_to_edit_import_path": "Kan ikke redigere importsti",
|
||||||
"unable_to_empty_trash": "Kan ikke tømme papirkurven",
|
"unable_to_empty_trash": "Kan ikke tømme papirkurven",
|
||||||
"unable_to_enter_fullscreen": "Kan ikke gå inn i fullskjerm",
|
"unable_to_enter_fullscreen": "Kan ikke gå inn i fullskjerm",
|
||||||
"unable_to_exit_fullscreen": "Kan ikke gå ut fra 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_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_link_oauth_account": "Kan ikke lenke til OAuth-konto",
|
||||||
"unable_to_load_album": "Kan ikke laste inn album",
|
"unable_to_load_album": "Kan ikke laste inn album",
|
||||||
"unable_to_load_asset_activity": "Kan ikke laste inn aktivitet for filen",
|
"unable_to_load_asset_activity": "Kan ikke laste inn aktivitet for filen",
|
||||||
"unable_to_load_items": "Kan ikke laste inn elementer",
|
"unable_to_load_items": "Kan ikke laste inn elementer",
|
||||||
"unable_to_load_liked_status": "Kan ikke laste inn likt status",
|
"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_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_refresh_user": "Kan ikke oppdatere bruker",
|
||||||
"unable_to_remove_album_users": "Kan ikke fjerne brukere fra album",
|
"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_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_deleted_assets": "Kan ikke fjerne offlinefiler",
|
||||||
"unable_to_remove_library": "Kan ikke fjerne bibliotek",
|
"unable_to_remove_library": "Kan ikke fjerne bibliotek",
|
||||||
"unable_to_remove_partner": "Kan ikke fjerne partner",
|
"unable_to_remove_partner": "Kan ikke fjerne partner",
|
||||||
@@ -580,35 +707,48 @@
|
|||||||
"unable_to_restore_user": "Kan ikke gjenopprette bruker",
|
"unable_to_restore_user": "Kan ikke gjenopprette bruker",
|
||||||
"unable_to_save_album": "Kan ikke lagre album",
|
"unable_to_save_album": "Kan ikke lagre album",
|
||||||
"unable_to_save_api_key": "Kan ikke lagre API-nøkkel",
|
"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_name": "Kan ikke lagre navn",
|
||||||
"unable_to_save_profile": "Kan ikke lagre profil",
|
"unable_to_save_profile": "Kan ikke lagre profil",
|
||||||
"unable_to_save_settings": "Kan ikke lagre instillinger",
|
"unable_to_save_settings": "Kan ikke lagre instillinger",
|
||||||
"unable_to_scan_libraries": "Kan ikke skanne biblioteker",
|
"unable_to_scan_libraries": "Kan ikke skanne biblioteker",
|
||||||
"unable_to_scan_library": "Kan ikke skanne bibliotek",
|
"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_set_profile_picture": "Kan ikke sette profilbilde",
|
||||||
"unable_to_submit_job": "Kan ikke sende inn jobb",
|
"unable_to_submit_job": "Kan ikke sende inn jobb",
|
||||||
"unable_to_trash_asset": "Kan ikke flytte filen til papirkurven",
|
"unable_to_trash_asset": "Kan ikke flytte filen til papirkurven",
|
||||||
"unable_to_unlink_account": "Kan ikke fjerne kobling til konto",
|
"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_library": "Kan ikke oppdatere bibliotek",
|
||||||
"unable_to_update_location": "Kan ikke oppdatere plassering",
|
"unable_to_update_location": "Kan ikke oppdatere plassering",
|
||||||
"unable_to_update_settings": "Kan ikke oppdatere innstillinger",
|
"unable_to_update_settings": "Kan ikke oppdatere innstillinger",
|
||||||
"unable_to_update_timeline_display_status": "Kan ikke oppdatere visningsstatus for tidslinje",
|
"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",
|
"exit_slideshow": "Avslutt lysbildefremvisning",
|
||||||
"expand_all": "Utvid alle",
|
"expand_all": "Utvid alle",
|
||||||
"expire_after": "Utgå etter",
|
"expire_after": "Utgå etter",
|
||||||
"expired": "Utgått",
|
"expired": "Utgått",
|
||||||
|
"expires_date": "Utløper {date}",
|
||||||
"explore": "Utforsk",
|
"explore": "Utforsk",
|
||||||
|
"explorer": "Utforsker",
|
||||||
"export": "Eksporter",
|
"export": "Eksporter",
|
||||||
"export_as_json": "Eksporter som JSON",
|
"export_as_json": "Eksporter som JSON",
|
||||||
"extension": "Utvidelse",
|
"extension": "Utvidelse",
|
||||||
"external": "Ekstern",
|
"external": "Ekstern",
|
||||||
"external_libraries": "Eksterne Bibliotek",
|
"external_libraries": "Eksterne Bibliotek",
|
||||||
|
"face_unassigned": "Ikke tilordnet",
|
||||||
|
"failed_to_load_assets": "Feilet med å laste fil",
|
||||||
"favorite": "Favoritt",
|
"favorite": "Favoritt",
|
||||||
"favorite_or_unfavorite_photo": "Merk som favoritt eller fjern som favoritt",
|
"favorite_or_unfavorite_photo": "Merk som favoritt eller fjern som favoritt",
|
||||||
"favorites": "Favoritter",
|
"favorites": "Favoritter",
|
||||||
"feature_photo_updated": "Fremhevet bilde oppdatert",
|
"feature_photo_updated": "Fremhevet bilde oppdatert",
|
||||||
|
"features": "Funksjoner",
|
||||||
|
"features_setting_description": "Administrerer funksjoner for appen",
|
||||||
"file_name": "Filnavn",
|
"file_name": "Filnavn",
|
||||||
"file_name_or_extension": "Filnavn eller filtype",
|
"file_name_or_extension": "Filnavn eller filtype",
|
||||||
"filename": "Filnavn",
|
"filename": "Filnavn",
|
||||||
@@ -616,24 +756,45 @@
|
|||||||
"filter_people": "Filtrer personer",
|
"filter_people": "Filtrer personer",
|
||||||
"find_them_fast": "Finn dem raskt ved søking av navn",
|
"find_them_fast": "Finn dem raskt ved søking av navn",
|
||||||
"fix_incorrect_match": "Fiks feilaktig match",
|
"fix_incorrect_match": "Fiks feilaktig match",
|
||||||
|
"folders": "Mapper",
|
||||||
|
"folders_feature_description": "Utforsker mappe visning for bilder og videoer på fil systemet",
|
||||||
"forward": "Fremover",
|
"forward": "Fremover",
|
||||||
"general": "Generelt",
|
"general": "Generelt",
|
||||||
"get_help": "Få Hjelp",
|
"get_help": "Få Hjelp",
|
||||||
"getting_started": "Kom i gang",
|
"getting_started": "Kom i gang",
|
||||||
"go_back": "Gå tilbake",
|
"go_back": "Gå tilbake",
|
||||||
|
"go_to_folder": "Gå til mappe",
|
||||||
"go_to_search": "Gå til søk",
|
"go_to_search": "Gå til søk",
|
||||||
"group_albums_by": "Grupper album etter...",
|
"group_albums_by": "Grupper album etter...",
|
||||||
|
"group_no": "Ingen gruppering",
|
||||||
|
"group_owner": "Grupper etter eiere",
|
||||||
|
"group_year": "Grupper etter år",
|
||||||
"has_quota": "Har kvote",
|
"has_quota": "Har kvote",
|
||||||
|
"hi_user": "Hei {name} ({email})",
|
||||||
|
"hide_all_people": "Skjul alle mennesker",
|
||||||
"hide_gallery": "Skjul galleri",
|
"hide_gallery": "Skjul galleri",
|
||||||
|
"hide_named_person": "Skjul {name}",
|
||||||
"hide_password": "Skjul passord",
|
"hide_password": "Skjul passord",
|
||||||
"hide_person": "Skjul person",
|
"hide_person": "Skjul person",
|
||||||
|
"hide_unnamed_people": "Skjul mennesker uten navn",
|
||||||
"host": "Vert",
|
"host": "Vert",
|
||||||
"hour": "Time",
|
"hour": "Time",
|
||||||
"image": "Bilde",
|
"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_logo": "Immich Logo",
|
||||||
"immich_web_interface": "Immich webgrensesnitt",
|
"immich_web_interface": "Immich webgrensesnitt",
|
||||||
"import_from_json": "Importer fra JSON",
|
"import_from_json": "Importer fra JSON",
|
||||||
"import_path": "Import-sti",
|
"import_path": "Import-sti",
|
||||||
|
"in_albums": "I {count, plural, one {# album} other {# albums}}",
|
||||||
"in_archive": "I arkiv",
|
"in_archive": "I arkiv",
|
||||||
"include_archived": "Inkluder arkiverte",
|
"include_archived": "Inkluder arkiverte",
|
||||||
"include_shared_albums": "Inkluder delte album",
|
"include_shared_albums": "Inkluder delte album",
|
||||||
@@ -648,19 +809,26 @@
|
|||||||
},
|
},
|
||||||
"invite_people": "Inviter Personer",
|
"invite_people": "Inviter Personer",
|
||||||
"invite_to_album": "Inviter til album",
|
"invite_to_album": "Inviter til album",
|
||||||
|
"items_count": "{count, plural, one {# item} other {# items}}",
|
||||||
"jobs": "Oppgaver",
|
"jobs": "Oppgaver",
|
||||||
"keep": "Behold",
|
"keep": "Behold",
|
||||||
"keep_all": "Behold alle",
|
"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",
|
"keyboard_shortcuts": "Tastatursnarveier",
|
||||||
"language": "Språk",
|
"language": "Språk",
|
||||||
"language_setting_description": "Velg ditt foretrukket språk",
|
"language_setting_description": "Velg ditt foretrukket språk",
|
||||||
"last_seen": "Sist sett",
|
"last_seen": "Sist sett",
|
||||||
|
"latest_version": "Siste versjon",
|
||||||
|
"latitude": "Breddegrad",
|
||||||
"leave": "Forlat",
|
"leave": "Forlat",
|
||||||
"let_others_respond": "La andre respondere",
|
"let_others_respond": "La andre respondere",
|
||||||
"level": "Nivå",
|
"level": "Nivå",
|
||||||
"library": "Bibliotek",
|
"library": "Bibliotek",
|
||||||
"library_options": "Bibliotekalternativer",
|
"library_options": "Bibliotekalternativer",
|
||||||
"light": "Lys",
|
"light": "Lys",
|
||||||
|
"like_deleted": "Som slettede",
|
||||||
|
"link_motion_video": "Koble bevegelsesvideo",
|
||||||
"link_options": "Lenkealternativer",
|
"link_options": "Lenkealternativer",
|
||||||
"link_to_oauth": "Lenke til OAuth",
|
"link_to_oauth": "Lenke til OAuth",
|
||||||
"linked_oauth_account": "Lenket til OAuth-konto",
|
"linked_oauth_account": "Lenket til OAuth-konto",
|
||||||
@@ -669,10 +837,17 @@
|
|||||||
"loading_search_results_failed": "Klarte ikke å laste inn søkeresultater",
|
"loading_search_results_failed": "Klarte ikke å laste inn søkeresultater",
|
||||||
"log_out": "Logg ut",
|
"log_out": "Logg ut",
|
||||||
"log_out_all_devices": "Logg ut fra alle enheter",
|
"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.",
|
"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",
|
"look": "Se",
|
||||||
"loop_videos": "Gjenta Videoer",
|
"loop_videos": "Gjenta Videoer",
|
||||||
"loop_videos_description": "Aktiver for å automatisk loope en video i detaljeviseren.",
|
"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",
|
"make": "Merke",
|
||||||
"manage_shared_links": "Håndter delte linker",
|
"manage_shared_links": "Håndter delte linker",
|
||||||
"manage_sharing_with_partners": "Administrer deling med partnere",
|
"manage_sharing_with_partners": "Administrer deling med partnere",
|
||||||
@@ -682,18 +857,22 @@
|
|||||||
"manage_your_devices": "Administrer dine innloggede enheter",
|
"manage_your_devices": "Administrer dine innloggede enheter",
|
||||||
"manage_your_oauth_connection": "Administrer tilkoblingen din med OAuth",
|
"manage_your_oauth_connection": "Administrer tilkoblingen din med OAuth",
|
||||||
"map": "Kart",
|
"map": "Kart",
|
||||||
|
"map_marker_for_images": "Kart makeringer for bilder tatt i {city}, {country}",
|
||||||
"map_marker_with_image": "Kartmarkør med bilde",
|
"map_marker_with_image": "Kartmarkør med bilde",
|
||||||
"map_settings": "Kartinnstillinger",
|
"map_settings": "Kartinnstillinger",
|
||||||
"matches": "Samsvarende",
|
"matches": "Samsvarende",
|
||||||
"media_type": "Mediatype",
|
"media_type": "Mediatype",
|
||||||
"memories": "Minner",
|
"memories": "Minner",
|
||||||
"memories_setting_description": "Administrer hva du ser i minnene dine",
|
"memories_setting_description": "Administrer hva du ser i minnene dine",
|
||||||
|
"memory": "Minne",
|
||||||
|
"memory_lane_title": "Minnefelt {title}",
|
||||||
"menu": "Meny",
|
"menu": "Meny",
|
||||||
"merge": "Slå sammen",
|
"merge": "Slå sammen",
|
||||||
"merge_people": "Slå sammen personer",
|
"merge_people": "Slå sammen personer",
|
||||||
"merge_people_limit": "Du kan bare slå sammen opp til 5 fjes om gangen",
|
"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_prompt": "Vil du slå sammen disse personene? Denne handlingen kan ikke reverseres.",
|
||||||
"merge_people_successfully": "Personene ble vellykket slått sammen",
|
"merge_people_successfully": "Personene ble vellykket slått sammen",
|
||||||
|
"merged_people_count": "Sammenslått {count, plural, one {# person} other {# people}}",
|
||||||
"minimize": "Minimer",
|
"minimize": "Minimer",
|
||||||
"minute": "Minutt",
|
"minute": "Minutt",
|
||||||
"missing": "Mangler",
|
"missing": "Mangler",
|
||||||
@@ -705,15 +884,19 @@
|
|||||||
"name": "Navn",
|
"name": "Navn",
|
||||||
"name_or_nickname": "Navn eller kallenavn",
|
"name_or_nickname": "Navn eller kallenavn",
|
||||||
"never": "aldri",
|
"never": "aldri",
|
||||||
|
"new_album": "Nytt Album",
|
||||||
"new_api_key": "Ny API-nøkkel",
|
"new_api_key": "Ny API-nøkkel",
|
||||||
"new_password": "Nytt passord",
|
"new_password": "Nytt passord",
|
||||||
"new_person": "Ny person",
|
"new_person": "Ny person",
|
||||||
"new_user_created": "Ny bruker opprettet",
|
"new_user_created": "Ny bruker opprettet",
|
||||||
|
"new_version_available": "NY VERSJON TILGJENGELIG",
|
||||||
"newest_first": "Nyeste først",
|
"newest_first": "Nyeste først",
|
||||||
"next": "Neste",
|
"next": "Neste",
|
||||||
"next_memory": "Neste minne",
|
"next_memory": "Neste minne",
|
||||||
"no": "Nei",
|
"no": "Nei",
|
||||||
"no_albums_message": "Opprett et album for å organisere bildene og videoene dine",
|
"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_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_assets_message": "KLIKK FOR Å LASTE OPP DITT FØRSTE BILDE",
|
||||||
"no_duplicates_found": "Ingen duplikater ble funnet.",
|
"no_duplicates_found": "Ingen duplikater ble funnet.",
|
||||||
@@ -724,6 +907,7 @@
|
|||||||
"no_name": "Ingen navn",
|
"no_name": "Ingen navn",
|
||||||
"no_places": "Ingen steder",
|
"no_places": "Ingen steder",
|
||||||
"no_results": "Ingen resultater",
|
"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",
|
"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",
|
"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",
|
"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": "Notifikasjoner",
|
||||||
"notifications_setting_description": "Administrer varsler",
|
"notifications_setting_description": "Administrer varsler",
|
||||||
"oauth": "OAuth",
|
"oauth": "OAuth",
|
||||||
|
"official_immich_resources": "Offisielle Immich Resurser",
|
||||||
"offline": "Frakoblet",
|
"offline": "Frakoblet",
|
||||||
"offline_paths": "Frakoblede stier",
|
"offline_paths": "Frakoblede stier",
|
||||||
"offline_paths_description": "Disse resultatene kan skyldes manuell sletting av filer som ikke er en del av et eksternt bibliotek.",
|
"offline_paths_description": "Disse resultatene kan skyldes manuell sletting av filer som ikke er en del av et eksternt bibliotek.",
|
||||||
"ok": "Ok",
|
"ok": "Ok",
|
||||||
"oldest_first": "Eldste først",
|
"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",
|
"online": "Tilkoblet",
|
||||||
"only_favorites": "Bare favoritter",
|
"only_favorites": "Bare favoritter",
|
||||||
|
"open_in_map_view": "Åpne i kartvisning",
|
||||||
|
"open_in_openstreetmap": "Åpne i OpenStreetMap",
|
||||||
"open_the_search_filters": "Åpne søkefiltrene",
|
"open_the_search_filters": "Åpne søkefiltrene",
|
||||||
"options": "Valg",
|
"options": "Valg",
|
||||||
|
"or": "eller",
|
||||||
"organize_your_library": "Organiser biblioteket ditt",
|
"organize_your_library": "Organiser biblioteket ditt",
|
||||||
|
"original": "original",
|
||||||
"other": "Annet",
|
"other": "Annet",
|
||||||
"other_devices": "Andre enheter",
|
"other_devices": "Andre enheter",
|
||||||
"other_variables": "Andre variabler",
|
"other_variables": "Andre variabler",
|
||||||
"owned": "Ditt album",
|
"owned": "Ditt album",
|
||||||
"owner": "Eier",
|
"owner": "Eier",
|
||||||
|
"partner": "Partner",
|
||||||
"partner_can_access": "{partner} har tilgang",
|
"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_assets": "Alle bildene og videoene dine unntatt de i arkivert og slettet tilstand",
|
||||||
"partner_can_access_location": "Stedet der bildene dine ble tatt",
|
"partner_can_access_location": "Stedet der bildene dine ble tatt",
|
||||||
@@ -769,12 +964,21 @@
|
|||||||
"paused": "Satt på pause",
|
"paused": "Satt på pause",
|
||||||
"pending": "Avventer",
|
"pending": "Avventer",
|
||||||
"people": "Folk",
|
"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",
|
"people_sidebar_description": "Vis en lenke til Personer i sidepanelet",
|
||||||
"permanent_deletion_warning": "Advarsel om permanent sletting",
|
"permanent_deletion_warning": "Advarsel om permanent sletting",
|
||||||
"permanent_deletion_warning_setting_description": "Vis en advarsel ved permanent sletting av filer",
|
"permanent_deletion_warning_setting_description": "Vis en advarsel ved permanent sletting av filer",
|
||||||
"permanently_delete": "Slett permanent",
|
"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_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": "Bilder",
|
||||||
|
"photos_and_videos": "Bilder & Videoer",
|
||||||
"photos_count": "{count, plural, one {{count, number} Bilde} other {{count, number} Bilder}}",
|
"photos_count": "{count, plural, one {{count, number} Bilde} other {{count, number} Bilder}}",
|
||||||
"photos_from_previous_years": "Bilder fra tidliger år",
|
"photos_from_previous_years": "Bilder fra tidliger år",
|
||||||
"pick_a_location": "Velg et sted",
|
"pick_a_location": "Velg et sted",
|
||||||
@@ -791,77 +995,162 @@
|
|||||||
"previous_memory": "Forrige minne",
|
"previous_memory": "Forrige minne",
|
||||||
"previous_or_next_photo": "Forrige eller neste bilde",
|
"previous_or_next_photo": "Forrige eller neste bilde",
|
||||||
"primary": "Primær",
|
"primary": "Primær",
|
||||||
|
"privacy": "Privat",
|
||||||
|
"profile_image_of_user": "Profil bilde av {user}",
|
||||||
"profile_picture_set": "Profilbildet er satt.",
|
"profile_picture_set": "Profilbildet er satt.",
|
||||||
|
"public_album": "Offentlige album",
|
||||||
"public_share": "Offentlig deling",
|
"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",
|
"reaction_options": "Reaksjonsalternativer",
|
||||||
"read_changelog": "Les endringslogg",
|
"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": "Nylig",
|
||||||
|
"recent-albums": "Nylige album",
|
||||||
"recent_searches": "Nylige søk",
|
"recent_searches": "Nylige søk",
|
||||||
"refresh": "Oppdater",
|
"refresh": "Oppdater",
|
||||||
|
"refresh_encoded_videos": "Oppdater kodete videoer",
|
||||||
|
"refresh_faces": "Oppdater ansikter",
|
||||||
|
"refresh_metadata": "Oppdater metadata",
|
||||||
|
"refresh_thumbnails": "Oppdater miniatyrbilder",
|
||||||
"refreshed": "Oppdatert",
|
"refreshed": "Oppdatert",
|
||||||
"refreshes_every_file": "Oppdaterer alle filer",
|
"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": "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_deleted_assets": "Fjern fra frakoblede filer",
|
||||||
"remove_from_album": "Fjern fra album",
|
"remove_from_album": "Fjern fra album",
|
||||||
"remove_from_favorites": "Fjern fra favoritter",
|
"remove_from_favorites": "Fjern fra favoritter",
|
||||||
"remove_from_shared_link": "Fjern fra delt lenke",
|
"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_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",
|
"rename": "Gi nytt navn",
|
||||||
"repair": "Reparer",
|
"repair": "Reparer",
|
||||||
"repair_no_results_message": "Usporrede og savnede filer vil vises her",
|
"repair_no_results_message": "Usporrede og savnede filer vil vises her",
|
||||||
"replace_with_upload": "Erstatte med opplasting",
|
"replace_with_upload": "Erstatte med opplasting",
|
||||||
|
"repository": "Depot",
|
||||||
"require_password": "Krev passord",
|
"require_password": "Krev passord",
|
||||||
"require_user_to_change_password_on_first_login": "Krev at brukeren endrer passord ved første pålogging",
|
"require_user_to_change_password_on_first_login": "Krev at brukeren endrer passord ved første pålogging",
|
||||||
"reset": "Tilbakestill",
|
"reset": "Tilbakestill",
|
||||||
"reset_password": "Tilbakestill passord",
|
"reset_password": "Tilbakestill passord",
|
||||||
"reset_people_visibility": "Tilbakestill personsynlighet",
|
"reset_people_visibility": "Tilbakestill personsynlighet",
|
||||||
|
"reset_to_default": "Tilbakestill til standard",
|
||||||
|
"resolve_duplicates": "Løs duplikater",
|
||||||
"resolved_all_duplicates": "Løste alle duplikater",
|
"resolved_all_duplicates": "Løste alle duplikater",
|
||||||
"restore": "Gjenopprett",
|
"restore": "Gjenopprett",
|
||||||
"restore_all": "Gjenopprett alle",
|
"restore_all": "Gjenopprett alle",
|
||||||
"restore_user": "Gjenopprett bruker",
|
"restore_user": "Gjenopprett bruker",
|
||||||
|
"restored_asset": "Gjenopprettet ressurs",
|
||||||
"resume": "Fortsett",
|
"resume": "Fortsett",
|
||||||
"retry_upload": "Prøv opplasting på nytt",
|
"retry_upload": "Prøv opplasting på nytt",
|
||||||
"review_duplicates": "Gjennomgå duplikater",
|
"review_duplicates": "Gjennomgå duplikater",
|
||||||
"role": "Rolle",
|
"role": "Rolle",
|
||||||
|
"role_editor": "Editor",
|
||||||
|
"role_viewer": "Visning",
|
||||||
"save": "Lagre",
|
"save": "Lagre",
|
||||||
"saved_api_key": "Lagret API-nøkkel",
|
"saved_api_key": "Lagret API-nøkkel",
|
||||||
"saved_profile": "Lagret profil",
|
"saved_profile": "Lagret profil",
|
||||||
"saved_settings": "Lagret instillinger",
|
"saved_settings": "Lagret instillinger",
|
||||||
"say_something": "Si noe",
|
"say_something": "Si noe",
|
||||||
"scan_all_libraries": "Skann alle biblioteker",
|
"scan_all_libraries": "Skann alle biblioteker",
|
||||||
|
"scan_library": "Skann",
|
||||||
"scan_settings": "Skanneinnstillinger",
|
"scan_settings": "Skanneinnstillinger",
|
||||||
|
"scanning_for_album": "Skanner etter album...",
|
||||||
"search": "Søk",
|
"search": "Søk",
|
||||||
"search_albums": "Søk i album",
|
"search_albums": "Søk i album",
|
||||||
"search_by_context": "Søk etter kontekst",
|
"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_make": "Søk etter kameramerke...",
|
||||||
"search_camera_model": "Søk etter kamera modell...",
|
"search_camera_model": "Søk etter kamera modell...",
|
||||||
"search_city": "Søk etter by...",
|
"search_city": "Søk etter by...",
|
||||||
"search_country": "Søk etter land...",
|
"search_country": "Søk etter land...",
|
||||||
"search_for_existing_person": "Søk etter eksisterende person",
|
"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_people": "Søk personer",
|
||||||
"search_places": "Søk steder",
|
"search_places": "Søk steder",
|
||||||
|
"search_settings": "Søke instillinger",
|
||||||
"search_state": "Søk etter stat...",
|
"search_state": "Søk etter stat...",
|
||||||
|
"search_tags": "Søk tags...",
|
||||||
"search_timezone": "Søk etter tidssone....",
|
"search_timezone": "Søk etter tidssone....",
|
||||||
"search_type": "Søk etter type",
|
"search_type": "Søk etter type",
|
||||||
"search_your_photos": "Søk i dine bilder",
|
"search_your_photos": "Søk i dine bilder",
|
||||||
"searching_locales": "Søker lokaler...",
|
"searching_locales": "Søker lokaler...",
|
||||||
"second": "Sekund",
|
"second": "Sekund",
|
||||||
|
"see_all_people": "Vis alle mennesker",
|
||||||
"select_album_cover": "Velg albumomslag",
|
"select_album_cover": "Velg albumomslag",
|
||||||
"select_all": "Velg alle",
|
"select_all": "Velg alle",
|
||||||
|
"select_all_duplicates": "Velg alle duplikater",
|
||||||
"select_avatar_color": "Velg avatarfarge",
|
"select_avatar_color": "Velg avatarfarge",
|
||||||
"select_face": "Velg ansikt",
|
"select_face": "Velg ansikt",
|
||||||
"select_featured_photo": "Velg fremhevet bilde",
|
"select_featured_photo": "Velg fremhevet bilde",
|
||||||
|
"select_from_computer": "Velg fra datamaskin",
|
||||||
"select_keep_all": "Velg beholde alle",
|
"select_keep_all": "Velg beholde alle",
|
||||||
"select_library_owner": "Velg bibliotekseier",
|
"select_library_owner": "Velg bibliotekseier",
|
||||||
"select_new_face": "Velg nytt ansikt",
|
"select_new_face": "Velg nytt ansikt",
|
||||||
"select_photos": "Velg bilder",
|
"select_photos": "Velg bilder",
|
||||||
"select_trash_all": "Velg å flytte alt til papirkurven",
|
"select_trash_all": "Velg å flytte alt til papirkurven",
|
||||||
"selected": "Valgt",
|
"selected": "Valgt",
|
||||||
|
"selected_count": "{count, plural, other {# selected}}",
|
||||||
"send_message": "Send melding",
|
"send_message": "Send melding",
|
||||||
"send_welcome_email": "Send velkomstmelding",
|
"send_welcome_email": "Send velkomstmelding",
|
||||||
|
"server_offline": "Server frakoblet",
|
||||||
|
"server_online": "Server tilkoblet",
|
||||||
"server_stats": "Server Statistikk",
|
"server_stats": "Server Statistikk",
|
||||||
|
"server_version": "Server Versjon",
|
||||||
"set": "Sett",
|
"set": "Sett",
|
||||||
"set_as_album_cover": "Sett som albumomslag",
|
"set_as_album_cover": "Sett som albumomslag",
|
||||||
|
"set_as_featured_photo": "Angi som fremhevet bilde",
|
||||||
"set_as_profile_picture": "Sett som profilbilde",
|
"set_as_profile_picture": "Sett som profilbilde",
|
||||||
"set_date_of_birth": "Sett fødselsdato",
|
"set_date_of_birth": "Sett fødselsdato",
|
||||||
"set_profile_picture": "Sett profilbilde",
|
"set_profile_picture": "Sett profilbilde",
|
||||||
@@ -871,14 +1160,20 @@
|
|||||||
"share": "Del",
|
"share": "Del",
|
||||||
"shared": "Delt",
|
"shared": "Delt",
|
||||||
"shared_by": "Delt av",
|
"shared_by": "Delt av",
|
||||||
|
"shared_by_user": "Delt av {user}",
|
||||||
"shared_by_you": "Delt av deg",
|
"shared_by_you": "Delt av deg",
|
||||||
"shared_from_partner": "Bilder fra {partner}",
|
"shared_from_partner": "Bilder fra {partner}",
|
||||||
|
"shared_link_options": "Alternativer for delte lenke",
|
||||||
"shared_links": "Delte linker",
|
"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}",
|
"shared_with_partner": "Delt med {partner}",
|
||||||
"sharing": "Deling",
|
"sharing": "Deling",
|
||||||
|
"sharing_enter_password": "Vennligst skriv inn passordet for å se denne siden.",
|
||||||
"sharing_sidebar_description": "Vis en lenke til Deling i sidepanelet",
|
"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_album_options": "Vis albumalternativer",
|
||||||
|
"show_albums": "Vis album",
|
||||||
|
"show_all_people": "Vis alle mennesker",
|
||||||
"show_and_hide_people": "Vis og skjul personer",
|
"show_and_hide_people": "Vis og skjul personer",
|
||||||
"show_file_location": "Vis filplassering",
|
"show_file_location": "Vis filplassering",
|
||||||
"show_gallery": "Vis galleri",
|
"show_gallery": "Vis galleri",
|
||||||
@@ -892,16 +1187,34 @@
|
|||||||
"show_person_options": "Vis personalternativer",
|
"show_person_options": "Vis personalternativer",
|
||||||
"show_progress_bar": "Vis fremdriftslinje",
|
"show_progress_bar": "Vis fremdriftslinje",
|
||||||
"show_search_options": "Vis søkealternativer",
|
"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",
|
"shuffle": "Bland",
|
||||||
|
"sidebar": "Sidefelt",
|
||||||
|
"sidebar_display_description": "Vis en lenke for visningen i sidefeltet",
|
||||||
"sign_out": "Logg ut",
|
"sign_out": "Logg ut",
|
||||||
"sign_up": "Registrer deg",
|
"sign_up": "Registrer deg",
|
||||||
"size": "Størrelse",
|
"size": "Størrelse",
|
||||||
"skip_to_content": "Gå til innhold",
|
"skip_to_content": "Gå til innhold",
|
||||||
|
"skip_to_folders": "Hopp til mapper",
|
||||||
|
"skip_to_tags": "Hopp til tagger",
|
||||||
"slideshow": "Lysbildefremvisning",
|
"slideshow": "Lysbildefremvisning",
|
||||||
"slideshow_settings": "Lysbildefremvisning innstillinger",
|
"slideshow_settings": "Lysbildefremvisning innstillinger",
|
||||||
"sort_albums_by": "Sorter album etter...",
|
"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": "Stable",
|
||||||
|
"stack_duplicates": "Stable duplikater",
|
||||||
|
"stack_select_one_photo": "Velg hovedbilde for bildestabbel",
|
||||||
"stack_selected_photos": "Stable valgte bilder",
|
"stack_selected_photos": "Stable valgte bilder",
|
||||||
|
"stacked_assets_count": "Stable {count, plural, one {# asset} other {# assets}}",
|
||||||
"stacktrace": "Stakkspor",
|
"stacktrace": "Stakkspor",
|
||||||
"start": "Start",
|
"start": "Start",
|
||||||
"start_date": "Startdato",
|
"start_date": "Startdato",
|
||||||
@@ -917,68 +1230,121 @@
|
|||||||
"submit": "Send inn",
|
"submit": "Send inn",
|
||||||
"suggestions": "Forslag",
|
"suggestions": "Forslag",
|
||||||
"sunrise_on_the_beach": "Soloppgang på stranden",
|
"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",
|
"swap_merge_direction": "Bytt retning på sammenslåingen",
|
||||||
"sync": "Synkroniser",
|
"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",
|
"template": "Mal",
|
||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"theme_selection": "Temavalg",
|
"theme_selection": "Temavalg",
|
||||||
"theme_selection_description": "Automatisk sett tema til lys eller mørk basert på nettleserens systeminnstilling",
|
"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",
|
"time_based_memories": "Tidsbaserte minner",
|
||||||
|
"timeline": "Tidslinje",
|
||||||
"timezone": "Tidssone",
|
"timezone": "Tidssone",
|
||||||
"to_archive": "Arkiv",
|
"to_archive": "Arkiv",
|
||||||
|
"to_change_password": "Endre passord",
|
||||||
"to_favorite": "Favoritt",
|
"to_favorite": "Favoritt",
|
||||||
|
"to_login": "Logg inn",
|
||||||
|
"to_parent": "Gå til overodnet",
|
||||||
"to_trash": "Papirkurv",
|
"to_trash": "Papirkurv",
|
||||||
"toggle_settings": "Bytt innstillinger",
|
"toggle_settings": "Bytt innstillinger",
|
||||||
"toggle_theme": "Bytt tema",
|
"toggle_theme": "Bytt tema",
|
||||||
|
"total": "Total",
|
||||||
"total_usage": "Totalt brukt",
|
"total_usage": "Totalt brukt",
|
||||||
"trash": "Papirkurv",
|
"trash": "Papirkurv",
|
||||||
"trash_all": "Slett alt",
|
"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.",
|
"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}}.",
|
"trashed_items_will_be_permanently_deleted_after": "Elementer i papirkurven vil bli permanent slettet etter {days, plural, one {# dag} other {# dager}}.",
|
||||||
"type": "Type",
|
"type": "Type",
|
||||||
"unarchive": "Fjern fra arkiv",
|
"unarchive": "Fjern fra arkiv",
|
||||||
|
"unarchived_count": "{count, plural, other {Unarchived #}}",
|
||||||
"unfavorite": "Fjern favoritt",
|
"unfavorite": "Fjern favoritt",
|
||||||
"unhide_person": "Vis person",
|
"unhide_person": "Vis person",
|
||||||
"unknown": "Ukjent",
|
"unknown": "Ukjent",
|
||||||
"unknown_year": "Ukjent År",
|
"unknown_year": "Ukjent År",
|
||||||
"unlimited": "Ubegrenset",
|
"unlimited": "Ubegrenset",
|
||||||
|
"unlink_motion_video": "Koble fra bevegelsesvideo",
|
||||||
"unlink_oauth": "Fjern kobling til OAuth",
|
"unlink_oauth": "Fjern kobling til OAuth",
|
||||||
"unlinked_oauth_account": "Koblet fra OAuth-konto",
|
"unlinked_oauth_account": "Koblet fra OAuth-konto",
|
||||||
"unnamed_album": "Navnløst album",
|
"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": "Fjern alle valg",
|
||||||
|
"unselect_all_duplicates": "Fjern markeringen av alle duplikater",
|
||||||
"unstack": "avstable",
|
"unstack": "avstable",
|
||||||
|
"unstacked_assets_count": "Ikke stablet {count, plural, one {# asset} other {# assets}}",
|
||||||
"untracked_files": "Usporede Filer",
|
"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",
|
"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",
|
"up_next": "Neste",
|
||||||
"updated_password": "Passord oppdatert",
|
"updated_password": "Passord oppdatert",
|
||||||
"upload": "Last opp",
|
"upload": "Last opp",
|
||||||
"upload_concurrency": "Samtidig opplastning",
|
"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",
|
"url": "URL",
|
||||||
"usage": "Bruk",
|
"usage": "Bruk",
|
||||||
|
"use_custom_date_range": "Bruk egendefinert datoperiode i stedet",
|
||||||
"user": "Bruker",
|
"user": "Bruker",
|
||||||
"user_id": "Bruker ID",
|
"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_detail": "Detaljer av brukers forbruk",
|
||||||
|
"user_usage_stats": "Kontobruksstatistikk",
|
||||||
|
"user_usage_stats_description": "Vis kontobruksstatistikk",
|
||||||
"username": "Brukernavn",
|
"username": "Brukernavn",
|
||||||
"users": "Brukere",
|
"users": "Brukere",
|
||||||
"utilities": "Verktøy",
|
"utilities": "Verktøy",
|
||||||
"validate": "Valider",
|
"validate": "Valider",
|
||||||
"variables": "Variabler",
|
"variables": "Variabler",
|
||||||
"version": "Versjon",
|
"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": "Video",
|
||||||
"video_hover_setting": "Spill av forhåndsvisining mens du holder over musepekeren",
|
"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.",
|
"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": "Videoer",
|
||||||
"videos_count": "{count, plural, one {# Video} other {# Videoer}}",
|
"videos_count": "{count, plural, one {# Video} other {# Videoer}}",
|
||||||
|
"view": "Vis",
|
||||||
|
"view_album": "Vis Album",
|
||||||
"view_all": "Vis alle",
|
"view_all": "Vis alle",
|
||||||
"view_all_users": "Vis alle brukere",
|
"view_all_users": "Vis alle brukere",
|
||||||
|
"view_in_timeline": "Vis i tidslinje",
|
||||||
"view_links": "Vis lenker",
|
"view_links": "Vis lenker",
|
||||||
|
"view_name": "Vis",
|
||||||
"view_next_asset": "Vis neste fil",
|
"view_next_asset": "Vis neste fil",
|
||||||
"view_previous_asset": "Vis forrige fil",
|
"view_previous_asset": "Vis forrige fil",
|
||||||
|
"view_stack": "Vis Stabbel",
|
||||||
|
"visibility_changed": "Synlighet endret for {count, plural, one {# person} other {# people}}",
|
||||||
"waiting": "Venter",
|
"waiting": "Venter",
|
||||||
|
"warning": "Advarsel",
|
||||||
"week": "Uke",
|
"week": "Uke",
|
||||||
"welcome": "Velkommen",
|
"welcome": "Velkommen",
|
||||||
"welcome_to_immich": "Velkommen til Immich",
|
"welcome_to_immich": "Velkommen til Immich",
|
||||||
"year": "År",
|
"year": "År",
|
||||||
|
"years_ago": "{years, plural, one {# year} other {# years}} siden",
|
||||||
"yes": "Ja",
|
"yes": "Ja",
|
||||||
"you_dont_have_any_shared_links": "Du har ingen delte lenker",
|
"you_dont_have_any_shared_links": "Du har ingen delte lenker",
|
||||||
"zoom_image": "Zoom Bilde"
|
"zoom_image": "Zoom Bilde"
|
||||||
|
|||||||
@@ -523,6 +523,10 @@
|
|||||||
"date_range": "Datumbereik",
|
"date_range": "Datumbereik",
|
||||||
"day": "Dag",
|
"day": "Dag",
|
||||||
"deduplicate_all": "Alles dedupliceren",
|
"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": "Standaard landinstelling",
|
||||||
"default_locale_description": "Formatteer datums en getallen op basis van de landinstellingen van je browser",
|
"default_locale_description": "Formatteer datums en getallen op basis van de landinstellingen van je browser",
|
||||||
"delete": "Verwijderen",
|
"delete": "Verwijderen",
|
||||||
|
|||||||
262
i18n/nn.json
262
i18n/nn.json
@@ -28,6 +28,264 @@
|
|||||||
"added_to_favorites": "Lagt til favorittar",
|
"added_to_favorites": "Lagt til favorittar",
|
||||||
"added_to_favorites_count": "Lagt {count, number} til favorittar",
|
"added_to_favorites_count": "Lagt {count, number} til favorittar",
|
||||||
"admin": {
|
"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",
|
"date_range": "Zakres dat",
|
||||||
"day": "Dzień",
|
"day": "Dzień",
|
||||||
"deduplicate_all": "Usuń Zduplikowane",
|
"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": "Domyślny Region",
|
||||||
"default_locale_description": "Formatuj daty i liczby na podstawie ustawień Twojej przeglądarki",
|
"default_locale_description": "Formatuj daty i liczby na podstawie ustawień Twojej przeglądarki",
|
||||||
"delete": "Usuń",
|
"delete": "Usuń",
|
||||||
@@ -544,27 +548,27 @@
|
|||||||
"direction": "Kierunek",
|
"direction": "Kierunek",
|
||||||
"disabled": "Wyłączone",
|
"disabled": "Wyłączone",
|
||||||
"disallow_edits": "Nie pozwalaj edytować",
|
"disallow_edits": "Nie pozwalaj edytować",
|
||||||
"discord": "Discord",
|
"discord": "Konflikt",
|
||||||
"discover": "Odkryj",
|
"discover": "Odkryj",
|
||||||
"dismiss_all_errors": "Odrzuć wszystkie błędy",
|
"dismiss_all_errors": "Odrzuć wszystkie błędy",
|
||||||
"dismiss_error": "Odrzuć błąd",
|
"dismiss_error": "Odrzuć błąd",
|
||||||
"display_options": "Opcje wyświetlania",
|
"display_options": "Opcje wyświetlania",
|
||||||
"display_order": "Kolejność wyświetlania",
|
"display_order": "Kolejność wyświetlania",
|
||||||
"display_original_photos": "Wyświetlaj oryginalne zdjęcia",
|
"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",
|
"do_not_show_again": "Nie pokazuj więcej tej wiadomości",
|
||||||
"documentation": "Dokumentacja",
|
"documentation": "Dokumentacja",
|
||||||
"done": "Gotowe",
|
"done": "Gotowe",
|
||||||
"download": "Pobierz",
|
"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_include_embedded_motion_videos_description": "Dołącz filmy osadzone w ruchomych zdjęciach jako oddzielny plik",
|
||||||
"download_settings": "Pobieranie",
|
"download_settings": "Pobieranie",
|
||||||
"download_settings_description": "Zarządzaj pobieraniem zasobów",
|
"download_settings_description": "Zarządzaj pobieraniem zasobów",
|
||||||
"downloading": "Pobieranie",
|
"downloading": "Pobieranie",
|
||||||
"downloading_asset_filename": "Pobieranie zasobu {filename}",
|
"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": "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",
|
"duration": "Czas trwania",
|
||||||
"edit": "Edytuj",
|
"edit": "Edytuj",
|
||||||
"edit_album": "Edytuj album",
|
"edit_album": "Edytuj album",
|
||||||
@@ -578,7 +582,7 @@
|
|||||||
"edit_key": "Edytuj klucz",
|
"edit_key": "Edytuj klucz",
|
||||||
"edit_link": "Edytuj link",
|
"edit_link": "Edytuj link",
|
||||||
"edit_location": "Edytuj lokalizację",
|
"edit_location": "Edytuj lokalizację",
|
||||||
"edit_name": "Edytuj imię",
|
"edit_name": "Edytuj nazwę",
|
||||||
"edit_people": "Edytuj osoby",
|
"edit_people": "Edytuj osoby",
|
||||||
"edit_tag": "Edytuj etykietę",
|
"edit_tag": "Edytuj etykietę",
|
||||||
"edit_title": "Edytuj Tytuł",
|
"edit_title": "Edytuj Tytuł",
|
||||||
|
|||||||
@@ -522,7 +522,11 @@
|
|||||||
"date_of_birth_saved": "Data de nascimento guardada com sucesso",
|
"date_of_birth_saved": "Data de nascimento guardada com sucesso",
|
||||||
"date_range": "Intervalo de datas",
|
"date_range": "Intervalo de datas",
|
||||||
"day": "Dia",
|
"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": "Localização Padrão",
|
||||||
"default_locale_description": "Formatar datas e números baseados na linguagem do seu navegador",
|
"default_locale_description": "Formatar datas e números baseados na linguagem do seu navegador",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
|
|||||||
@@ -523,6 +523,10 @@
|
|||||||
"date_range": "Intervalo de datas",
|
"date_range": "Intervalo de datas",
|
||||||
"day": "Dia",
|
"day": "Dia",
|
||||||
"deduplicate_all": "Limpar todas Duplicidades",
|
"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": "Localização Padrão",
|
||||||
"default_locale_description": "Formatar datas e números baseados na linguagem do seu navegador",
|
"default_locale_description": "Formatar datas e números baseados na linguagem do seu navegador",
|
||||||
"delete": "Excluir",
|
"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": "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_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_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": "Accelerare Hardware",
|
||||||
"transcoding_hardware_acceleration_description": "Experimental; mult mai rapid, dar va avea o calitate mai scăzută la același bitrate",
|
"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",
|
"transcoding_hardware_decoding": "Decodare hardware",
|
||||||
@@ -301,6 +303,8 @@
|
|||||||
"transcoding_max_keyframe_interval": "Interval maxim între cadre cheie",
|
"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_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_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": "Dispozitiv hardware preferat",
|
||||||
"transcoding_preferred_hardware_device_description": "Se aplică doar la VAAPI și QSV. Setează nodul DRI utilizat pentru transcodarea hardware.",
|
"transcoding_preferred_hardware_device_description": "Se aplică doar la VAAPI și QSV. Setează nodul DRI utilizat pentru transcodarea hardware.",
|
||||||
"transcoding_preset_preset": "Presetare (-preset)",
|
"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_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_required_description": "Numai videoclipuri care nu sunt într-un format acceptat",
|
||||||
"transcoding_settings": "Setări de Transcodare Video",
|
"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": "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_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",
|
"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_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": "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_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.",
|
"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_enabled_description": "Activează funcțiile Coșului de Gunoi",
|
||||||
"trash_number_of_days": "Numǎr de zile",
|
"trash_number_of_days": "Numǎr de zile",
|
||||||
@@ -519,6 +523,10 @@
|
|||||||
"date_range": "Interval de date",
|
"date_range": "Interval de date",
|
||||||
"day": "Zi",
|
"day": "Zi",
|
||||||
"deduplicate_all": "Deduplicați Toate",
|
"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": "Setare Regională Implicită",
|
||||||
"default_locale_description": "Formatați datele și numerele în funcție de regiunea browserului dvs",
|
"default_locale_description": "Formatați datele și numerele în funcție de regiunea browserului dvs",
|
||||||
"delete": "Ștergere",
|
"delete": "Ștergere",
|
||||||
@@ -755,6 +763,7 @@
|
|||||||
"get_help": "Obțineți Ajutor",
|
"get_help": "Obțineți Ajutor",
|
||||||
"getting_started": "Noțiuni de Bază",
|
"getting_started": "Noțiuni de Bază",
|
||||||
"go_back": "Întoarcere",
|
"go_back": "Întoarcere",
|
||||||
|
"go_to_folder": "Accesați folderul",
|
||||||
"go_to_search": "Spre căutare",
|
"go_to_search": "Spre căutare",
|
||||||
"group_albums_by": "Grupați albume de...",
|
"group_albums_by": "Grupați albume de...",
|
||||||
"group_no": "Fără grupare",
|
"group_no": "Fără grupare",
|
||||||
|
|||||||
@@ -523,6 +523,10 @@
|
|||||||
"date_range": "Диапазон дат",
|
"date_range": "Диапазон дат",
|
||||||
"day": "День",
|
"day": "День",
|
||||||
"deduplicate_all": "Убрать все дубликаты",
|
"deduplicate_all": "Убрать все дубликаты",
|
||||||
|
"deduplication_criteria_1": "Размер изображения в байтах",
|
||||||
|
"deduplication_criteria_2": "Подсчет данных EXIF",
|
||||||
|
"deduplication_info": "Информация о дедупликации",
|
||||||
|
"deduplication_info_description": "Для автоматического предварительного выбора объектов и массового удаления дубликатов мы рассмотрим:",
|
||||||
"default_locale": "Дата и время по умолчанию",
|
"default_locale": "Дата и время по умолчанию",
|
||||||
"default_locale_description": "Использовать формат даты и времени в соответствии с языковым стандартом вашего браузера",
|
"default_locale_description": "Использовать формат даты и времени в соответствии с языковым стандартом вашего браузера",
|
||||||
"delete": "Удалить",
|
"delete": "Удалить",
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user