mirror of
https://github.com/immich-app/immich.git
synced 2025-12-09 14:21:02 -08:00
Compare commits
21 Commits
timeline_e
...
dev/recogn
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
930961825e | ||
|
|
fdc8f91b18 | ||
|
|
016a760dda | ||
|
|
c15507baad | ||
|
|
1691706666 | ||
|
|
a96026c821 | ||
|
|
5740928843 | ||
|
|
6126ac77b5 | ||
|
|
8c166b9381 | ||
|
|
d656cc2198 | ||
|
|
32f25580ec | ||
|
|
34f72a8251 | ||
|
|
e851884f88 | ||
|
|
db2493d003 | ||
|
|
595f4c6d2e | ||
|
|
36481d037f | ||
|
|
217f6fe4fa | ||
|
|
e90f28985a | ||
|
|
0c9890b70f | ||
|
|
b750440f90 | ||
|
|
c80b16d24e |
2
.devcontainer/.gitignore
vendored
Normal file
2
.devcontainer/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
.env
|
||||
library
|
||||
16
.devcontainer/Dockerfile
Normal file
16
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,16 @@
|
||||
ARG BASEIMAGE=mcr.microsoft.com/devcontainers/typescript-node:22@sha256:a20b8a3538313487ac9266875bbf733e544c1aa2091df2bb99ab592a6d4f7399
|
||||
FROM ${BASEIMAGE}
|
||||
|
||||
# Flutter SDK
|
||||
# https://flutter.dev/docs/development/tools/sdk/releases?tab=linux
|
||||
ENV FLUTTER_CHANNEL="stable"
|
||||
ENV FLUTTER_VERSION="3.29.1"
|
||||
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,67 +1,26 @@
|
||||
{
|
||||
"name": "Immich - Backend, Frontend and ML",
|
||||
"service": "immich-server",
|
||||
"runServices": [
|
||||
"immich-server",
|
||||
"redis",
|
||||
"database",
|
||||
"immich-machine-learning"
|
||||
],
|
||||
"name": "Immich",
|
||||
"service": "immich-devcontainer",
|
||||
"dockerComposeFile": [
|
||||
"../docker/docker-compose.dev.yml",
|
||||
"./server/container-compose-overrides.yml"
|
||||
"docker-compose.yml",
|
||||
"../docker/docker-compose.dev.yml"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"Dart-Code.dart-code",
|
||||
"Dart-Code.flutter",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"dcmdev.dcm-vscode-extension",
|
||||
"esbenp.prettier-vscode",
|
||||
"svelte.svelte-vscode",
|
||||
"ms-vscode-remote.remote-containers",
|
||||
"foxundermoon.shell-format",
|
||||
"timonwong.shellcheck",
|
||||
"rvest.vs-code-prettier-eslint",
|
||||
"bluebrown.yamlfmt",
|
||||
"vkrishna04.cspell-sync",
|
||||
"vitest.explorer",
|
||||
"ms-playwright.playwright",
|
||||
"ms-azuretools.vscode-docker"
|
||||
"svelte.svelte-vscode"
|
||||
]
|
||||
}
|
||||
},
|
||||
"forwardPorts": [3000, 9231, 9230, 2283],
|
||||
"portsAttributes": {
|
||||
"3000": {
|
||||
"label": "Immich - Frontend HTTP",
|
||||
"description": "The frontend of the Immich project",
|
||||
"onAutoForward": "openBrowserOnce"
|
||||
},
|
||||
"2283": {
|
||||
"label": "Immich - API Server - HTTP",
|
||||
"description": "The API server of the Immich project"
|
||||
},
|
||||
"9231": {
|
||||
"label": "Immich - API Server - DEBUG",
|
||||
"description": "The API server of the Immich project"
|
||||
},
|
||||
"9230": {
|
||||
"label": "Immich - Workers - DEBUG",
|
||||
"description": "The workers of the Immich project"
|
||||
}
|
||||
},
|
||||
"forwardPorts": [],
|
||||
"initializeCommand": "bash .devcontainer/scripts/initializeCommand.sh",
|
||||
"onCreateCommand": "bash .devcontainer/scripts/onCreateCommand.sh",
|
||||
"overrideCommand": true,
|
||||
"workspaceFolder": "/workspaces/immich",
|
||||
"remoteUser": "node",
|
||||
"userEnvProbe": "loginInteractiveShell",
|
||||
"remoteEnv": {
|
||||
// The location where your uploaded files are stored
|
||||
"UPLOAD_LOCATION": "${localEnv:UPLOAD_LOCATION:./Library}",
|
||||
// Connection secret for postgres. You should change it to a random password
|
||||
// Please use only the characters `A-Za-z0-9`, without special characters or spaces
|
||||
"DB_PASSWORD": "${localEnv:DB_PASSWORD:postgres}",
|
||||
// The database username
|
||||
"DB_USERNAME": "${localEnv:DB_USERNAME:postgres}",
|
||||
// The database name
|
||||
"DB_DATABASE_NAME": "${localEnv:DB_DATABASE_NAME:immich}"
|
||||
}
|
||||
"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
|
||||
@@ -1,34 +0,0 @@
|
||||
services:
|
||||
immich-server:
|
||||
build:
|
||||
target: dev-container-mobile
|
||||
environment:
|
||||
- IMMICH_SERVER_URL=http://127.0.0.1:2283/
|
||||
volumes: !override # bind mount host to /workspaces/immich
|
||||
- ..:/workspaces/immich
|
||||
- cli_node_modules:/workspaces/immich/cli/node_modules
|
||||
- e2e_node_modules:/workspaces/immich/e2e/node_modules
|
||||
- open_api_node_modules:/workspaces/immich/open-api/typescript-sdk/node_modules
|
||||
- server_node_modules:/workspaces/immich/server/node_modules
|
||||
- web_node_modules:/workspaces/immich/web/node_modules
|
||||
- ${UPLOAD_LOCATION}/photos:/workspaces/immich/server/upload
|
||||
- ${UPLOAD_LOCATION}/photos/upload:/workspaces/immich/server/upload/upload
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
|
||||
database:
|
||||
volumes:
|
||||
- ${UPLOAD_LOCATION}/postgres:/var/lib/postgresql/data
|
||||
|
||||
volumes:
|
||||
# Node modules for each service to avoid conflicts and ensure consistent dependencies
|
||||
cli_node_modules:
|
||||
e2e_node_modules:
|
||||
open_api_node_modules:
|
||||
server_node_modules:
|
||||
web_node_modules:
|
||||
|
||||
# UPLOAD_LOCATION must be set to a absolute path or vol-upload
|
||||
vol-upload:
|
||||
|
||||
# DB_DATA_LOCATION must be set to a absolute path or vol-database
|
||||
vol-database:
|
||||
@@ -1,52 +0,0 @@
|
||||
{
|
||||
"name": "Immich - Mobile",
|
||||
"service": "immich-server",
|
||||
"runServices": [
|
||||
"immich-server",
|
||||
"redis",
|
||||
"database",
|
||||
"immich-machine-learning"
|
||||
],
|
||||
"dockerComposeFile": [
|
||||
"../../docker/docker-compose.dev.yml",
|
||||
"./container-compose-overrides.yml"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"Dart-Code.dart-code",
|
||||
"Dart-Code.flutter",
|
||||
"dcmdev.dcm-vscode-extension",
|
||||
"esbenp.prettier-vscode",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"esbenp.prettier-vscode",
|
||||
"svelte.svelte-vscode",
|
||||
"ms-vscode-remote.remote-containers",
|
||||
"foxundermoon.shell-format",
|
||||
"timonwong.shellcheck",
|
||||
"rvest.vs-code-prettier-eslint",
|
||||
"bluebrown.yamlfmt",
|
||||
"vkrishna04.cspell-sync",
|
||||
"vitest.explorer",
|
||||
"ms-playwright.playwright",
|
||||
"ms-azuretools.vscode-docker"
|
||||
]
|
||||
}
|
||||
},
|
||||
"forwardPorts": [],
|
||||
"overrideCommand": true,
|
||||
"workspaceFolder": "/workspaces/immich",
|
||||
"remoteUser": "node",
|
||||
"userEnvProbe": "loginInteractiveShell",
|
||||
"remoteEnv": {
|
||||
// The location where your uploaded files are stored
|
||||
"UPLOAD_LOCATION": "${localEnv:UPLOAD_LOCATION:./Library}",
|
||||
// Connection secret for postgres. You should change it to a random password
|
||||
// Please use only the characters `A-Za-z0-9`, without special characters or spaces
|
||||
"DB_PASSWORD": "${localEnv:DB_PASSWORD:postgres}",
|
||||
// The database username
|
||||
"DB_USERNAME": "${localEnv:DB_USERNAME:postgres}",
|
||||
// The database name
|
||||
"DB_DATABASE_NAME": "${localEnv:DB_DATABASE_NAME:immich}"
|
||||
}
|
||||
}
|
||||
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,57 +0,0 @@
|
||||
#!/bin/bash
|
||||
export IMMICH_PORT="${DEV_SERVER_PORT:-2283}"
|
||||
export DEV_PORT="${DEV_PORT:-3000}"
|
||||
|
||||
# search for immich directory inside workspace.
|
||||
# /workspaces/immich is the bind mount, but other directories can be mounted if runing
|
||||
# Devcontainer: Clone [repository|pull request] in container volumne
|
||||
WORKSPACES_DIR="/workspaces"
|
||||
IMMICH_DIR="$WORKSPACES_DIR/immich"
|
||||
|
||||
# Find directories excluding /workspaces/immich
|
||||
mapfile -t other_dirs < <(find "$WORKSPACES_DIR" -mindepth 1 -maxdepth 1 -type d ! -path "$IMMICH_DIR" ! -name ".*")
|
||||
|
||||
if [ ${#other_dirs[@]} -gt 1 ]; then
|
||||
echo "Error: More than one directory found in $WORKSPACES_DIR other than $IMMICH_DIR."
|
||||
exit 1
|
||||
elif [ ${#other_dirs[@]} -eq 1 ]; then
|
||||
export IMMICH_WORKSPACE="${other_dirs[0]}"
|
||||
else
|
||||
export IMMICH_WORKSPACE="$IMMICH_DIR"
|
||||
fi
|
||||
|
||||
echo "Found immich workspace in $IMMICH_WORKSPACE"
|
||||
|
||||
run_cmd() {
|
||||
echo "$@"
|
||||
"$@"
|
||||
}
|
||||
|
||||
fix_permissions() {
|
||||
|
||||
echo "Fixing permissions for ${IMMICH_WORKSPACE}"
|
||||
|
||||
run_cmd sudo find "${IMMICH_WORKSPACE}/server/upload" -not -path "${IMMICH_WORKSPACE}/server/upload/postgres/*" -not -path "${IMMICH_WORKSPACE}/server/upload/postgres" -exec chown node {} +
|
||||
|
||||
run_cmd sudo chown node -R "${IMMICH_WORKSPACE}/.vscode" \
|
||||
"${IMMICH_WORKSPACE}/cli/node_modules" \
|
||||
"${IMMICH_WORKSPACE}/e2e/node_modules" \
|
||||
"${IMMICH_WORKSPACE}/open-api/typescript-sdk/node_modules" \
|
||||
"${IMMICH_WORKSPACE}/server/node_modules" \
|
||||
"${IMMICH_WORKSPACE}/server/dist" \
|
||||
"${IMMICH_WORKSPACE}/web/node_modules" \
|
||||
"${IMMICH_WORKSPACE}/web/dist"
|
||||
}
|
||||
|
||||
install_dependencies() {
|
||||
|
||||
echo "Installing dependencies"
|
||||
|
||||
(
|
||||
cd "${IMMICH_WORKSPACE}" || exit 1
|
||||
run_cmd make install-server
|
||||
run_cmd make install-open-api
|
||||
run_cmd make build-open-api
|
||||
run_cmd make install-web
|
||||
)
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
services:
|
||||
immich-server:
|
||||
build:
|
||||
target: dev-container-server
|
||||
env_file: !reset []
|
||||
environment:
|
||||
- IMMICH_SERVER_URL=http://127.0.0.1:2283/
|
||||
volumes: !override
|
||||
- ..:/workspaces/immich
|
||||
- cli_node_modules:/workspaces/immich/cli/node_modules
|
||||
- e2e_node_modules:/workspaces/immich/e2e/node_modules
|
||||
- open_api_node_modules:/workspaces/immich/open-api/typescript-sdk/node_modules
|
||||
- server_node_modules:/workspaces/immich/server/node_modules
|
||||
- web_node_modules:/workspaces/immich/web/node_modules
|
||||
- ${UPLOAD_LOCATION-./Library}/photos:/workspaces/immich/server/upload
|
||||
- ${UPLOAD_LOCATION-./Library}/photos/upload:/workspaces/immich/server/upload/upload
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
|
||||
immich-web:
|
||||
env_file: !reset []
|
||||
|
||||
immich-machine-learning:
|
||||
env_file: !reset []
|
||||
|
||||
database:
|
||||
env_file: !reset []
|
||||
environment: !override
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD-postgres}
|
||||
POSTGRES_USER: ${DB_USERNAME-postgres}
|
||||
POSTGRES_DB: ${DB_DATABASE_NAME-immich}
|
||||
POSTGRES_INITDB_ARGS: '--data-checksums'
|
||||
volumes:
|
||||
- ${UPLOAD_LOCATION-./Library}/postgres:/var/lib/postgresql/data
|
||||
|
||||
redis:
|
||||
env_file: !reset []
|
||||
|
||||
volumes:
|
||||
# Node modules for each service to avoid conflicts and ensure consistent dependencies
|
||||
cli_node_modules:
|
||||
e2e_node_modules:
|
||||
open_api_node_modules:
|
||||
server_node_modules:
|
||||
web_node_modules:
|
||||
@@ -1,17 +0,0 @@
|
||||
#!/bin/bash
|
||||
# shellcheck source=common.sh
|
||||
# shellcheck disable=SC1091
|
||||
source /immich-devcontainer/container-common.sh
|
||||
|
||||
echo "Starting Nest API Server"
|
||||
|
||||
cd "${IMMICH_WORKSPACE}/server" || (
|
||||
echo workspace not found
|
||||
exit 1
|
||||
)
|
||||
|
||||
while true; do
|
||||
node ./node_modules/.bin/nest start --debug "0.0.0.0:9230" --watch
|
||||
echo " Nest API Server crashed with exit code $?. Respawning in 3s ..."
|
||||
sleep 3
|
||||
done
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/bin/bash
|
||||
# shellcheck source=common.sh
|
||||
# shellcheck disable=SC1091
|
||||
source /immich-devcontainer/container-common.sh
|
||||
|
||||
echo "Starting Immich Web Frontend"
|
||||
|
||||
cd "${IMMICH_WORKSPACE}/web" || (
|
||||
echo Workspace not found
|
||||
exit 1
|
||||
)
|
||||
|
||||
until curl --output /dev/null --silent --head --fail "http://127.0.0.1:${IMMICH_PORT}/api/server/config"; do
|
||||
echo 'waiting for api server...'
|
||||
sleep 1
|
||||
done
|
||||
|
||||
while true; do
|
||||
node ./node_modules/.bin/vite dev --host 0.0.0.0 --port "${DEV_PORT}"
|
||||
echo "Web crashed with exit code $?. Respawning in 3s ..."
|
||||
sleep 3
|
||||
done
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
# shellcheck source=common.sh
|
||||
# shellcheck disable=SC1091
|
||||
source /immich-devcontainer/container-common.sh
|
||||
|
||||
fix_permissions
|
||||
install_dependencies
|
||||
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -9,9 +9,6 @@ mobile/lib/**/*.g.dart linguist-generated=true
|
||||
mobile/lib/**/*.drift.dart -diff -merge
|
||||
mobile/lib/**/*.drift.dart linguist-generated=true
|
||||
|
||||
mobile/drift_schemas/main/drift_schema_*.json -diff -merge
|
||||
mobile/drift_schemas/main/drift_schema_*.json linguist-generated=true
|
||||
|
||||
open-api/typescript-sdk/fetch-client.ts -diff -merge
|
||||
open-api/typescript-sdk/fetch-client.ts linguist-generated=true
|
||||
|
||||
|
||||
2
.github/.nvmrc
vendored
2
.github/.nvmrc
vendored
@@ -1 +1 @@
|
||||
22.16.0
|
||||
22.14.0
|
||||
|
||||
@@ -14,6 +14,7 @@ body:
|
||||
label: I have searched the existing feature requests, both open and closed, to make sure this is not a duplicate request.
|
||||
options:
|
||||
- label: 'Yes'
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: feature
|
||||
|
||||
1
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
1
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
@@ -6,6 +6,7 @@ body:
|
||||
label: I have searched the existing issues, both open and closed, to make sure this is not a duplicate report.
|
||||
options:
|
||||
- label: 'Yes'
|
||||
required: true
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
|
||||
118
.github/actions/image-build/action.yml
vendored
Normal file
118
.github/actions/image-build/action.yml
vendored
Normal file
@@ -0,0 +1,118 @@
|
||||
name: 'Single arch image build'
|
||||
description: 'Build single-arch image on platform appropriate runner'
|
||||
inputs:
|
||||
image:
|
||||
description: 'Name of the image to build'
|
||||
required: true
|
||||
ghcr-token:
|
||||
description: 'GitHub Container Registry token'
|
||||
required: true
|
||||
platform:
|
||||
description: 'Platform to build for'
|
||||
required: true
|
||||
artifact-key-base:
|
||||
description: 'Base key for artifact name'
|
||||
required: true
|
||||
context:
|
||||
description: 'Path to build context'
|
||||
required: true
|
||||
dockerfile:
|
||||
description: 'Path to Dockerfile'
|
||||
required: true
|
||||
build-args:
|
||||
description: 'Docker build arguments'
|
||||
required: false
|
||||
runs:
|
||||
using: 'composite'
|
||||
steps:
|
||||
- name: Prepare
|
||||
id: prepare
|
||||
shell: bash
|
||||
env:
|
||||
PLATFORM: ${{ inputs.platform }}
|
||||
run: |
|
||||
echo "platform-pair=${PLATFORM//\//-}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3
|
||||
if: ${{ !github.event.pull_request.head.repo.fork }}
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ inputs.ghcr-token }}
|
||||
|
||||
- name: Generate cache key suffix
|
||||
id: cache-key-suffix
|
||||
shell: bash
|
||||
env:
|
||||
REF: ${{ github.ref_name }}
|
||||
run: |
|
||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||
echo "cache-key-suffix=pr-${{ github.event.number }}" >> $GITHUB_OUTPUT
|
||||
else
|
||||
SUFFIX=$(echo "${REF}" | sed 's/[^a-zA-Z0-9]/-/g')
|
||||
echo "suffix=${SUFFIX}" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Generate cache target
|
||||
id: cache-target
|
||||
shell: bash
|
||||
env:
|
||||
BUILD_ARGS: ${{ inputs.build-args }}
|
||||
IMAGE: ${{ inputs.image }}
|
||||
SUFFIX: ${{ steps.cache-key-suffix.outputs.suffix }}
|
||||
PLATFORM_PAIR: ${{ steps.prepare.outputs.platform-pair }}
|
||||
run: |
|
||||
HASH=$(sha256sum <<< "${BUILD_ARGS}" | cut -d' ' -f1)
|
||||
CACHE_KEY="${PLATFORM_PAIR}-${HASH}"
|
||||
echo "cache-key-base=${CACHE_KEY}" >> $GITHUB_OUTPUT
|
||||
if [[ "${{ github.event.pull_request.head.repo.fork }}" == "true" ]]; then
|
||||
# Essentially just ignore the cache output (forks can't write to registry cache)
|
||||
echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "cache-to=type=registry,ref=${IMAGE}-build-cache:${CACHE_KEY}-${SUFFIX},mode=max,compression=zstd" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Generate docker image tags
|
||||
id: meta
|
||||
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5
|
||||
env:
|
||||
DOCKER_METADATA_PR_HEAD_SHA: 'true'
|
||||
|
||||
- name: Build and push image
|
||||
id: build
|
||||
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
|
||||
with:
|
||||
context: ${{ inputs.context }}
|
||||
file: ${{ inputs.dockerfile }}
|
||||
platforms: ${{ inputs.platform }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
cache-to: ${{ steps.cache-target.outputs.cache-to }}
|
||||
cache-from: |
|
||||
type=registry,ref=${{ inputs.image }}-build-cache:${{ steps.cache-target.outputs.cache-key-base }}-${{ steps.cache-key-suffix.outputs.suffix }}
|
||||
type=registry,ref=${{ inputs.image }}-build-cache:${{ steps.cache-target.outputs.cache-key-base }}-main
|
||||
outputs: type=image,"name=${{ inputs.image }}",push-by-digest=true,name-canonical=true,push=${{ !github.event.pull_request.head.repo.fork }}
|
||||
build-args: |
|
||||
BUILD_ID=${{ github.run_id }}
|
||||
BUILD_IMAGE=${{ github.event_name == 'release' && github.ref_name || steps.meta.outputs.tags }}
|
||||
BUILD_SOURCE_REF=${{ github.ref_name }}
|
||||
BUILD_SOURCE_COMMIT=${{ github.sha }}
|
||||
${{ inputs.build-args }}
|
||||
|
||||
- name: Export digest
|
||||
shell: bash
|
||||
run: | # zizmor: ignore[template-injection]
|
||||
mkdir -p ${{ runner.temp }}/digests
|
||||
digest="${{ steps.build.outputs.digest }}"
|
||||
touch "${{ runner.temp }}/digests/${digest#sha256:}"
|
||||
|
||||
- name: Upload digest
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
||||
with:
|
||||
name: ${{ inputs.artifact-key-base }}-${{ steps.cache-target.outputs.cache-key-base }}
|
||||
path: ${{ runner.temp }}/digests/*
|
||||
if-no-files-found: error
|
||||
retention-days: 1
|
||||
16
.github/workflows/build-mobile.yml
vendored
16
.github/workflows/build-mobile.yml
vendored
@@ -35,12 +35,12 @@ jobs:
|
||||
should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- id: found_paths
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
|
||||
with:
|
||||
filters: |
|
||||
mobile:
|
||||
@@ -61,19 +61,19 @@ jobs:
|
||||
runs-on: macos-14
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
ref: ${{ inputs.ref || github.sha }}
|
||||
persist-credentials: false
|
||||
|
||||
- uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
|
||||
- uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
java-version: '17'
|
||||
cache: 'gradle'
|
||||
|
||||
- name: Setup Flutter SDK
|
||||
uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2.19.0
|
||||
uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
flutter-version-file: ./mobile/pubspec.yaml
|
||||
@@ -93,10 +93,6 @@ jobs:
|
||||
run: make translation
|
||||
working-directory: ./mobile
|
||||
|
||||
- name: Generate platform APIs
|
||||
run: make pigeon
|
||||
working-directory: ./mobile
|
||||
|
||||
- name: Build Android App Bundle
|
||||
working-directory: ./mobile
|
||||
env:
|
||||
@@ -108,7 +104,7 @@ jobs:
|
||||
flutter build apk --release --split-per-abi --target-platform android-arm,android-arm64,android-x64
|
||||
|
||||
- name: Publish Android Artifact
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
||||
with:
|
||||
name: release-apk-signed
|
||||
path: mobile/build/app/outputs/flutter-apk/*.apk
|
||||
|
||||
2
.github/workflows/cache-cleanup.yml
vendored
2
.github/workflows/cache-cleanup.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
||||
actions: write
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
|
||||
12
.github/workflows/cli.yml
vendored
12
.github/workflows/cli.yml
vendored
@@ -29,12 +29,12 @@ jobs:
|
||||
working-directory: ./cli
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
# Setup .npmrc file to publish to npm
|
||||
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './cli/.nvmrc'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
@@ -59,7 +59,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3
|
||||
if: ${{ !github.event.pull_request.head.repo.fork }}
|
||||
with:
|
||||
registry: ghcr.io
|
||||
@@ -85,7 +85,7 @@ jobs:
|
||||
|
||||
- name: Generate docker image tags
|
||||
id: metadata
|
||||
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0
|
||||
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5
|
||||
with:
|
||||
flavor: |
|
||||
latest=false
|
||||
@@ -96,7 +96,7 @@ jobs:
|
||||
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
|
||||
|
||||
- name: Build and push image
|
||||
uses: docker/build-push-action@1dc73863535b631f98b2378be8619f83b136f4a0 # v6.17.0
|
||||
uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0
|
||||
with:
|
||||
file: cli/Dockerfile
|
||||
platforms: linux/amd64,linux/arm64
|
||||
|
||||
8
.github/workflows/codeql-analysis.yml
vendored
8
.github/workflows/codeql-analysis.yml
vendored
@@ -44,13 +44,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
|
||||
uses: github/codeql-action/init@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
@@ -63,7 +63,7 @@ jobs:
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
|
||||
uses: github/codeql-action/autobuild@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||
@@ -76,6 +76,6 @@ jobs:
|
||||
# ./location_of_script_within_repo/buildscript.sh
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
|
||||
uses: github/codeql-action/analyze@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3
|
||||
with:
|
||||
category: '/language:${{matrix.language}}'
|
||||
|
||||
32
.github/workflows/docker.yml
vendored
32
.github/workflows/docker.yml
vendored
@@ -24,11 +24,11 @@ jobs:
|
||||
should_run_ml: ${{ steps.found_paths.outputs.machine-learning == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- id: found_paths
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
|
||||
with:
|
||||
filters: |
|
||||
server:
|
||||
@@ -60,7 +60,7 @@ jobs:
|
||||
suffix: ['', '-cuda', '-rocm', '-openvino', '-armnn', '-rknn']
|
||||
steps:
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
@@ -89,7 +89,7 @@ jobs:
|
||||
suffix: ['']
|
||||
steps:
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
@@ -131,7 +131,7 @@ jobs:
|
||||
tag-suffix: '-rocm'
|
||||
platforms: linux/amd64
|
||||
runner-mapping: '{"linux/amd64": "mich"}'
|
||||
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@094bfb927b8cd75b343abaac27b3241be0fccfe9 # multi-runner-build-workflow-0.1.0
|
||||
uses: ./.github/workflows/multi-runner-build.yml
|
||||
permissions:
|
||||
contents: read
|
||||
actions: read
|
||||
@@ -154,7 +154,7 @@ jobs:
|
||||
name: Build and Push Server
|
||||
needs: pre-job
|
||||
if: ${{ needs.pre-job.outputs.should_run_server == 'true' }}
|
||||
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@094bfb927b8cd75b343abaac27b3241be0fccfe9 # multi-runner-build-workflow-0.1.0
|
||||
uses: ./.github/workflows/multi-runner-build.yml
|
||||
permissions:
|
||||
contents: read
|
||||
actions: read
|
||||
@@ -177,9 +177,13 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
if: always()
|
||||
steps:
|
||||
- uses: immich-app/devtools/actions/success-check@6b81b1572e466f7f48ba3c823159ce3f4a4d66a6 # success-check-action-0.0.3
|
||||
with:
|
||||
needs: ${{ toJSON(needs) }}
|
||||
- name: Any jobs failed?
|
||||
if: ${{ contains(needs.*.result, 'failure') }}
|
||||
run: exit 1
|
||||
- name: All jobs passed or skipped
|
||||
if: ${{ !(contains(needs.*.result, 'failure')) }}
|
||||
# zizmor: ignore[template-injection]
|
||||
run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}"
|
||||
|
||||
success-check-ml:
|
||||
name: Docker Build & Push ML Success
|
||||
@@ -188,6 +192,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
if: always()
|
||||
steps:
|
||||
- uses: immich-app/devtools/actions/success-check@6b81b1572e466f7f48ba3c823159ce3f4a4d66a6 # success-check-action-0.0.3
|
||||
with:
|
||||
needs: ${{ toJSON(needs) }}
|
||||
- name: Any jobs failed?
|
||||
if: ${{ contains(needs.*.result, 'failure') }}
|
||||
run: exit 1
|
||||
- name: All jobs passed or skipped
|
||||
if: ${{ !(contains(needs.*.result, 'failure')) }}
|
||||
# zizmor: ignore[template-injection]
|
||||
run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}"
|
||||
|
||||
10
.github/workflows/docs-build.yml
vendored
10
.github/workflows/docs-build.yml
vendored
@@ -21,11 +21,11 @@ jobs:
|
||||
should_run: ${{ steps.found_paths.outputs.docs == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- id: found_paths
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
|
||||
with:
|
||||
filters: |
|
||||
docs:
|
||||
@@ -49,12 +49,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './docs/.nvmrc'
|
||||
|
||||
@@ -68,7 +68,7 @@ jobs:
|
||||
run: npm run build
|
||||
|
||||
- name: Upload build output
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
||||
with:
|
||||
name: docs-build-output
|
||||
path: docs/build/
|
||||
|
||||
21
.github/workflows/docs-deploy.yml
vendored
21
.github/workflows/docs-deploy.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
||||
run: echo 'The triggering workflow did not succeed' && exit 1
|
||||
- name: Get artifact
|
||||
id: get-artifact
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
|
||||
with:
|
||||
script: |
|
||||
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
return { found: true, id: matchArtifact.id };
|
||||
- name: Determine deploy parameters
|
||||
id: parameters
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
|
||||
env:
|
||||
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
|
||||
with:
|
||||
@@ -108,13 +108,13 @@ jobs:
|
||||
if: ${{ fromJson(needs.checks.outputs.artifact).found && fromJson(needs.checks.outputs.parameters).shouldDeploy }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Load parameters
|
||||
id: parameters
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
|
||||
env:
|
||||
PARAM_JSON: ${{ needs.checks.outputs.parameters }}
|
||||
with:
|
||||
@@ -125,7 +125,7 @@ jobs:
|
||||
core.setOutput("shouldDeploy", parameters.shouldDeploy);
|
||||
|
||||
- name: Download artifact
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
|
||||
env:
|
||||
ARTIFACT_JSON: ${{ needs.checks.outputs.artifact }}
|
||||
with:
|
||||
@@ -150,7 +150,7 @@ jobs:
|
||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
|
||||
uses: gruntwork-io/terragrunt-action@aee21a7df999be8b471c2a8564c6cd853cb674e1 # v2.1.8
|
||||
uses: gruntwork-io/terragrunt-action@9559e51d05873b0ea467c42bbabcb5c067642ccc # v2
|
||||
with:
|
||||
tg_version: '0.58.12'
|
||||
tofu_version: '1.7.1'
|
||||
@@ -165,7 +165,7 @@ jobs:
|
||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
|
||||
uses: gruntwork-io/terragrunt-action@aee21a7df999be8b471c2a8564c6cd853cb674e1 # v2.1.8
|
||||
uses: gruntwork-io/terragrunt-action@9559e51d05873b0ea467c42bbabcb5c067642ccc # v2
|
||||
with:
|
||||
tg_version: '0.58.12'
|
||||
tofu_version: '1.7.1'
|
||||
@@ -181,8 +181,7 @@ jobs:
|
||||
echo "output=$CLEANED" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Publish to Cloudflare Pages
|
||||
# TODO: Action is deprecated
|
||||
uses: cloudflare/pages-action@f0a1cd58cd66095dee69bfa18fa5efd1dde93bca # v1.5.0
|
||||
uses: cloudflare/pages-action@f0a1cd58cd66095dee69bfa18fa5efd1dde93bca # v1
|
||||
with:
|
||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN_PAGES_UPLOAD }}
|
||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
@@ -199,7 +198,7 @@ jobs:
|
||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
|
||||
uses: gruntwork-io/terragrunt-action@aee21a7df999be8b471c2a8564c6cd853cb674e1 # v2.1.8
|
||||
uses: gruntwork-io/terragrunt-action@9559e51d05873b0ea467c42bbabcb5c067642ccc # v2
|
||||
with:
|
||||
tg_version: '0.58.12'
|
||||
tofu_version: '1.7.1'
|
||||
@@ -207,7 +206,7 @@ jobs:
|
||||
tg_command: 'apply'
|
||||
|
||||
- name: Comment
|
||||
uses: actions-cool/maintain-one-comment@4b2dbf086015f892dcb5e8c1106f5fccd6c1476b # v3.2.0
|
||||
uses: actions-cool/maintain-one-comment@4b2dbf086015f892dcb5e8c1106f5fccd6c1476b # v3
|
||||
if: ${{ steps.parameters.outputs.event == 'pr' }}
|
||||
with:
|
||||
number: ${{ fromJson(needs.checks.outputs.parameters).pr_number }}
|
||||
|
||||
6
.github/workflows/docs-destroy.yml
vendored
6
.github/workflows/docs-destroy.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
|
||||
uses: gruntwork-io/terragrunt-action@aee21a7df999be8b471c2a8564c6cd853cb674e1 # v2.1.8
|
||||
uses: gruntwork-io/terragrunt-action@9559e51d05873b0ea467c42bbabcb5c067642ccc # v2
|
||||
with:
|
||||
tg_version: '0.58.12'
|
||||
tofu_version: '1.7.1'
|
||||
@@ -33,7 +33,7 @@ jobs:
|
||||
tg_command: 'destroy -refresh=false'
|
||||
|
||||
- name: Comment
|
||||
uses: actions-cool/maintain-one-comment@4b2dbf086015f892dcb5e8c1106f5fccd6c1476b # v3.2.0
|
||||
uses: actions-cool/maintain-one-comment@4b2dbf086015f892dcb5e8c1106f5fccd6c1476b # v3
|
||||
with:
|
||||
number: ${{ github.event.number }}
|
||||
delete: true
|
||||
|
||||
10
.github/workflows/fix-format.yml
vendored
10
.github/workflows/fix-format.yml
vendored
@@ -16,20 +16,20 @@ jobs:
|
||||
steps:
|
||||
- name: Generate a token
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
|
||||
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: 'Checkout'
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.ref }}
|
||||
token: ${{ steps.generate-token.outputs.token }}
|
||||
persist-credentials: true
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
|
||||
@@ -37,13 +37,13 @@ jobs:
|
||||
run: make install-all && make format-all
|
||||
|
||||
- name: Commit and push
|
||||
uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9.1.4
|
||||
uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9
|
||||
with:
|
||||
default_author: github_actions
|
||||
message: 'chore: fix formatting'
|
||||
|
||||
- name: Remove label
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
|
||||
if: always()
|
||||
with:
|
||||
script: |
|
||||
|
||||
185
.github/workflows/multi-runner-build.yml
vendored
Normal file
185
.github/workflows/multi-runner-build.yml
vendored
Normal file
@@ -0,0 +1,185 @@
|
||||
name: 'Multi-runner container image build'
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
image:
|
||||
description: 'Name of the image'
|
||||
type: string
|
||||
required: true
|
||||
context:
|
||||
description: 'Path to build context'
|
||||
type: string
|
||||
required: true
|
||||
dockerfile:
|
||||
description: 'Path to Dockerfile'
|
||||
type: string
|
||||
required: true
|
||||
tag-suffix:
|
||||
description: 'Suffix to append to the image tag'
|
||||
type: string
|
||||
default: ''
|
||||
dockerhub-push:
|
||||
description: 'Push to Docker Hub'
|
||||
type: boolean
|
||||
default: false
|
||||
build-args:
|
||||
description: 'Docker build arguments'
|
||||
type: string
|
||||
required: false
|
||||
platforms:
|
||||
description: 'Platforms to build for'
|
||||
type: string
|
||||
runner-mapping:
|
||||
description: 'Mapping from platforms to runners'
|
||||
type: string
|
||||
secrets:
|
||||
DOCKERHUB_USERNAME:
|
||||
required: false
|
||||
DOCKERHUB_TOKEN:
|
||||
required: false
|
||||
|
||||
env:
|
||||
GHCR_IMAGE: ghcr.io/${{ github.repository_owner }}/${{ inputs.image }}
|
||||
DOCKERHUB_IMAGE: altran1502/${{ inputs.image }}
|
||||
|
||||
jobs:
|
||||
matrix:
|
||||
name: 'Generate matrix'
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
matrix: ${{ steps.matrix.outputs.matrix }}
|
||||
key: ${{ steps.artifact-key.outputs.base }}
|
||||
steps:
|
||||
- name: Generate build matrix
|
||||
id: matrix
|
||||
shell: bash
|
||||
env:
|
||||
PLATFORMS: ${{ inputs.platforms || 'linux/amd64,linux/arm64' }}
|
||||
RUNNER_MAPPING: ${{ inputs.runner-mapping || '{"linux/amd64":"ubuntu-latest","linux/arm64":"ubuntu-24.04-arm"}' }}
|
||||
run: |
|
||||
matrix=$(jq -R -c \
|
||||
--argjson runner_mapping "${RUNNER_MAPPING}" \
|
||||
'split(",") | map({platform: ., runner: $runner_mapping[.]})' \
|
||||
<<< "${PLATFORMS}")
|
||||
echo "${matrix}"
|
||||
echo "matrix=${matrix}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Determine artifact key
|
||||
id: artifact-key
|
||||
shell: bash
|
||||
env:
|
||||
IMAGE: ${{ inputs.image }}
|
||||
SUFFIX: ${{ inputs.tag-suffix }}
|
||||
run: |
|
||||
if [[ -n "${SUFFIX}" ]]; then
|
||||
base="${IMAGE}${SUFFIX}-digests"
|
||||
else
|
||||
base="${IMAGE}-digests"
|
||||
fi
|
||||
echo "${base}"
|
||||
echo "base=${base}" >> $GITHUB_OUTPUT
|
||||
|
||||
build:
|
||||
needs: matrix
|
||||
runs-on: ${{ matrix.runner }}
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include: ${{ fromJson(needs.matrix.outputs.matrix) }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: ./.github/actions/image-build
|
||||
with:
|
||||
context: ${{ inputs.context }}
|
||||
dockerfile: ${{ inputs.dockerfile }}
|
||||
image: ${{ env.GHCR_IMAGE }}
|
||||
ghcr-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
platform: ${{ matrix.platform }}
|
||||
artifact-key-base: ${{ needs.matrix.outputs.key }}
|
||||
build-args: ${{ inputs.build-args }}
|
||||
|
||||
merge:
|
||||
needs: [matrix, build]
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ !github.event.pull_request.head.repo.fork }}
|
||||
permissions:
|
||||
contents: read
|
||||
actions: read
|
||||
packages: write
|
||||
steps:
|
||||
- name: Download digests
|
||||
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4
|
||||
with:
|
||||
path: ${{ runner.temp }}/digests
|
||||
pattern: ${{ needs.matrix.outputs.key }}-*
|
||||
merge-multiple: true
|
||||
|
||||
- name: Login to Docker Hub
|
||||
if: ${{ inputs.dockerhub-push }}
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Login to GHCR
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3
|
||||
|
||||
- name: Generate docker image tags
|
||||
id: meta
|
||||
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5
|
||||
env:
|
||||
DOCKER_METADATA_PR_HEAD_SHA: 'true'
|
||||
with:
|
||||
flavor: |
|
||||
# Disable latest tag
|
||||
latest=false
|
||||
suffix=${{ inputs.tag-suffix }}
|
||||
images: |
|
||||
name=${{ env.GHCR_IMAGE }}
|
||||
name=${{ env.DOCKERHUB_IMAGE }},enable=${{ inputs.dockerhub-push }}
|
||||
tags: |
|
||||
# Tag with branch name
|
||||
type=ref,event=branch
|
||||
# Tag with pr-number
|
||||
type=ref,event=pr
|
||||
# Tag with long commit sha hash
|
||||
type=sha,format=long,prefix=commit-
|
||||
# Tag with git tag on release
|
||||
type=ref,event=tag
|
||||
type=raw,value=release,enable=${{ github.event_name == 'release' }}
|
||||
|
||||
- name: Create manifest list and push
|
||||
working-directory: ${{ runner.temp }}/digests
|
||||
run: |
|
||||
# Process annotations
|
||||
declare -a ANNOTATIONS=()
|
||||
if [[ -n "$DOCKER_METADATA_OUTPUT_JSON" ]]; then
|
||||
while IFS= read -r annotation; do
|
||||
# Extract key and value by removing the manifest: prefix
|
||||
if [[ "$annotation" =~ ^manifest:(.+)=(.+)$ ]]; then
|
||||
key="${BASH_REMATCH[1]}"
|
||||
value="${BASH_REMATCH[2]}"
|
||||
# Use array to properly handle arguments with spaces
|
||||
ANNOTATIONS+=(--annotation "index:$key=$value")
|
||||
fi
|
||||
done < <(jq -r '.annotations[]' <<< "$DOCKER_METADATA_OUTPUT_JSON")
|
||||
fi
|
||||
|
||||
TAGS=$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
|
||||
SOURCE_ARGS=$(printf "${GHCR_IMAGE}@sha256:%s " *)
|
||||
|
||||
docker buildx imagetools create $TAGS "${ANNOTATIONS[@]}" $SOURCE_ARGS
|
||||
2
.github/workflows/pr-label-validation.yml
vendored
2
.github/workflows/pr-label-validation.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Require PR to have a changelog label
|
||||
uses: mheap/github-action-required-labels@fb29a14a076b0f74099f6198f77750e8fc236016 # v5.5.0
|
||||
uses: mheap/github-action-required-labels@388fd6af37b34cdfe5a23b37060e763217e58b03 # v5
|
||||
with:
|
||||
mode: exactly
|
||||
count: 1
|
||||
|
||||
2
.github/workflows/pr-labeler.yml
vendored
2
.github/workflows/pr-labeler.yml
vendored
@@ -11,4 +11,4 @@ jobs:
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
|
||||
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5
|
||||
|
||||
16
.github/workflows/prepare-release.yml
vendored
16
.github/workflows/prepare-release.yml
vendored
@@ -32,19 +32,19 @@ jobs:
|
||||
steps:
|
||||
- name: Generate a token
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
|
||||
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
token: ${{ steps.generate-token.outputs.token }}
|
||||
persist-credentials: true
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
|
||||
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
|
||||
|
||||
- name: Bump version
|
||||
env:
|
||||
@@ -54,7 +54,7 @@ jobs:
|
||||
|
||||
- name: Commit and tag
|
||||
id: push-tag
|
||||
uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9.1.4
|
||||
uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9
|
||||
with:
|
||||
default_author: github_actions
|
||||
message: 'chore: version ${{ env.IMMICH_VERSION }}'
|
||||
@@ -83,24 +83,24 @@ jobs:
|
||||
steps:
|
||||
- name: Generate a token
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
|
||||
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
token: ${{ steps.generate-token.outputs.token }}
|
||||
persist-credentials: false
|
||||
|
||||
- name: Download APK
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
|
||||
with:
|
||||
name: release-apk-signed
|
||||
|
||||
- name: Create draft release
|
||||
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2
|
||||
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2
|
||||
with:
|
||||
draft: true
|
||||
tag_name: ${{ env.IMMICH_VERSION }}
|
||||
|
||||
4
.github/workflows/preview-label.yaml
vendored
4
.github/workflows/preview-label.yaml
vendored
@@ -13,7 +13,7 @@ jobs:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2.8.2
|
||||
- uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2
|
||||
with:
|
||||
message-id: 'preview-status'
|
||||
message: 'Deploying preview environment to https://pr-${{ github.event.pull_request.number }}.preview.internal.immich.cloud/'
|
||||
@@ -24,7 +24,7 @@ jobs:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
|
||||
with:
|
||||
script: |
|
||||
github.rest.issues.removeLabel({
|
||||
|
||||
4
.github/workflows/sdk.yml
vendored
4
.github/workflows/sdk.yml
vendored
@@ -16,12 +16,12 @@ jobs:
|
||||
run:
|
||||
working-directory: ./open-api/typescript-sdk
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
# Setup .npmrc file to publish to npm
|
||||
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './open-api/typescript-sdk/.nvmrc'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
|
||||
34
.github/workflows/static_analysis.yml
vendored
34
.github/workflows/static_analysis.yml
vendored
@@ -20,11 +20,11 @@ jobs:
|
||||
should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- id: found_paths
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
|
||||
with:
|
||||
filters: |
|
||||
mobile:
|
||||
@@ -44,12 +44,12 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Flutter SDK
|
||||
uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2.19.0
|
||||
uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
flutter-version-file: ./mobile/pubspec.yaml
|
||||
@@ -58,28 +58,16 @@ jobs:
|
||||
run: dart pub get
|
||||
working-directory: ./mobile
|
||||
|
||||
- name: Install DCM
|
||||
run: |
|
||||
sudo apt-get update
|
||||
wget -qO- https://dcm.dev/pgp-key.public | sudo gpg --dearmor -o /usr/share/keyrings/dcm.gpg
|
||||
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
|
||||
|
||||
- name: Generate translation file
|
||||
run: make translation
|
||||
run: make translation; dart format lib/generated/codegen_loader.g.dart
|
||||
working-directory: ./mobile
|
||||
|
||||
- name: Run Build Runner
|
||||
run: make build
|
||||
working-directory: ./mobile
|
||||
|
||||
- name: Generate platform API
|
||||
run: make pigeon
|
||||
working-directory: ./mobile
|
||||
|
||||
- name: Find file changes
|
||||
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4
|
||||
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20
|
||||
id: verify-changed-files
|
||||
with:
|
||||
files: |
|
||||
@@ -108,10 +96,6 @@ jobs:
|
||||
run: dart run custom_lint
|
||||
working-directory: ./mobile
|
||||
|
||||
- name: Run DCM
|
||||
run: dcm analyze lib
|
||||
working-directory: ./mobile
|
||||
|
||||
zizmor:
|
||||
name: zizmor
|
||||
runs-on: ubuntu-latest
|
||||
@@ -121,12 +105,12 @@ jobs:
|
||||
actions: read
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Install the latest version of uv
|
||||
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
|
||||
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
|
||||
|
||||
- name: Run zizmor 🌈
|
||||
run: uvx zizmor --format=sarif . > results.sarif
|
||||
@@ -134,7 +118,7 @@ jobs:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Upload SARIF file
|
||||
uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
|
||||
uses: github/codeql-action/upload-sarif@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
category: zizmor
|
||||
|
||||
130
.github/workflows/test.yml
vendored
130
.github/workflows/test.yml
vendored
@@ -17,7 +17,6 @@ jobs:
|
||||
permissions:
|
||||
contents: read
|
||||
outputs:
|
||||
should_run_i18n: ${{ steps.found_paths.outputs.i18n == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||
should_run_web: ${{ steps.found_paths.outputs.web == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||
should_run_server: ${{ steps.found_paths.outputs.server == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||
should_run_cli: ${{ steps.found_paths.outputs.cli == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||
@@ -29,16 +28,14 @@ jobs:
|
||||
should_run_.github: ${{ steps.found_paths.outputs['.github'] == 'true' || steps.should_force.outputs.should_force == 'true' }} # redundant to have should_force but if someone changes the trigger then this won't have to be changed
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- id: found_paths
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
|
||||
with:
|
||||
filters: |
|
||||
i18n:
|
||||
- 'i18n/**'
|
||||
web:
|
||||
- 'web/**'
|
||||
- 'i18n/**'
|
||||
@@ -76,12 +73,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
|
||||
@@ -117,12 +114,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './cli/.nvmrc'
|
||||
|
||||
@@ -162,12 +159,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './cli/.nvmrc'
|
||||
|
||||
@@ -200,12 +197,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './web/.nvmrc'
|
||||
|
||||
@@ -241,12 +238,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './web/.nvmrc'
|
||||
|
||||
@@ -265,46 +262,6 @@ jobs:
|
||||
run: npm run test:cov
|
||||
if: ${{ !cancelled() }}
|
||||
|
||||
i18n-tests:
|
||||
name: Test i18n
|
||||
needs: pre-job
|
||||
if: ${{ needs.pre-job.outputs.should_run_i18n == 'true' }}
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
with:
|
||||
node-version-file: './web/.nvmrc'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm --prefix=web ci
|
||||
|
||||
- name: Format
|
||||
run: npm --prefix=web run format:i18n
|
||||
|
||||
- name: Find file changes
|
||||
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4
|
||||
id: verify-changed-files
|
||||
with:
|
||||
files: |
|
||||
i18n/**
|
||||
|
||||
- name: Verify files have not changed
|
||||
if: steps.verify-changed-files.outputs.files_changed == 'true'
|
||||
env:
|
||||
CHANGED_FILES: ${{ steps.verify-changed-files.outputs.changed_files }}
|
||||
run: |
|
||||
echo "ERROR: i18n files not up to date!"
|
||||
echo "Changed files: ${CHANGED_FILES}"
|
||||
exit 1
|
||||
|
||||
e2e-tests-lint:
|
||||
name: End-to-End Lint
|
||||
needs: pre-job
|
||||
@@ -318,12 +275,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './e2e/.nvmrc'
|
||||
|
||||
@@ -361,12 +318,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
|
||||
@@ -393,13 +350,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: 'recursive'
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './e2e/.nvmrc'
|
||||
|
||||
@@ -441,13 +398,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: 'recursive'
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './e2e/.nvmrc'
|
||||
|
||||
@@ -479,9 +436,13 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
if: always()
|
||||
steps:
|
||||
- uses: immich-app/devtools/actions/success-check@6b81b1572e466f7f48ba3c823159ce3f4a4d66a6 # success-check-action-0.0.3
|
||||
with:
|
||||
needs: ${{ toJSON(needs) }}
|
||||
- name: Any jobs failed?
|
||||
if: ${{ contains(needs.*.result, 'failure') }}
|
||||
run: exit 1
|
||||
- name: All jobs passed or skipped
|
||||
if: ${{ !(contains(needs.*.result, 'failure')) }}
|
||||
# zizmor: ignore[template-injection]
|
||||
run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}"
|
||||
|
||||
mobile-unit-tests:
|
||||
name: Unit Test Mobile
|
||||
@@ -491,20 +452,15 @@ jobs:
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Flutter SDK
|
||||
uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2.19.0
|
||||
uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
flutter-version-file: ./mobile/pubspec.yaml
|
||||
|
||||
- name: Generate translation file
|
||||
run: make translation
|
||||
working-directory: ./mobile
|
||||
|
||||
- name: Run tests
|
||||
working-directory: ./mobile
|
||||
run: flutter test -j 1
|
||||
@@ -520,13 +476,13 @@ jobs:
|
||||
run:
|
||||
working-directory: ./machine-learning
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
|
||||
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
||||
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
|
||||
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
||||
# TODO: add caching when supported (https://github.com/actions/setup-python/pull/818)
|
||||
# with:
|
||||
# python-version: 3.11
|
||||
@@ -560,12 +516,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './.github/.nvmrc'
|
||||
|
||||
@@ -582,7 +538,7 @@ jobs:
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
@@ -601,12 +557,12 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
|
||||
@@ -620,7 +576,7 @@ jobs:
|
||||
run: make open-api
|
||||
|
||||
- name: Find file changes
|
||||
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4
|
||||
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20
|
||||
id: verify-changed-files
|
||||
with:
|
||||
files: |
|
||||
@@ -644,7 +600,7 @@ jobs:
|
||||
contents: read
|
||||
services:
|
||||
postgres:
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.1
|
||||
image: tensorchord/vchord-postgres:pg14-v0.3.0
|
||||
env:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
POSTGRES_USER: postgres
|
||||
@@ -662,12 +618,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
|
||||
@@ -688,7 +644,7 @@ jobs:
|
||||
run: npm run migrations:generate src/TestMigration
|
||||
|
||||
- name: Find file changes
|
||||
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4
|
||||
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20
|
||||
id: verify-changed-files
|
||||
with:
|
||||
files: |
|
||||
@@ -709,7 +665,7 @@ jobs:
|
||||
DB_URL: postgres://postgres:postgres@localhost:5432/immich
|
||||
|
||||
- name: Find file changes
|
||||
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4
|
||||
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20
|
||||
id: verify-changed-sql-files
|
||||
with:
|
||||
files: |
|
||||
|
||||
16
.github/workflows/weblate-lock.yml
vendored
16
.github/workflows/weblate-lock.yml
vendored
@@ -15,11 +15,11 @@ jobs:
|
||||
should_run: ${{ steps.found_paths.outputs.i18n == 'true' && github.head_ref != 'chore/translations'}}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- id: found_paths
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
|
||||
with:
|
||||
filters: |
|
||||
i18n:
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
- name: Find Pull Request
|
||||
uses: juliangruber/find-pull-request-action@48b6133aa6c826f267ebd33aa2d29470f9d9e7d0 # v1.9.0
|
||||
uses: juliangruber/find-pull-request-action@48b6133aa6c826f267ebd33aa2d29470f9d9e7d0 # v1
|
||||
id: find-pr
|
||||
with:
|
||||
branch: chore/translations
|
||||
@@ -52,6 +52,10 @@ jobs:
|
||||
permissions: {}
|
||||
if: always()
|
||||
steps:
|
||||
- uses: immich-app/devtools/actions/success-check@6b81b1572e466f7f48ba3c823159ce3f4a4d66a6 # success-check-action-0.0.3
|
||||
with:
|
||||
needs: ${{ toJSON(needs) }}
|
||||
- name: Any jobs failed?
|
||||
if: ${{ contains(needs.*.result, 'failure') }}
|
||||
run: exit 1
|
||||
- name: All jobs passed or skipped
|
||||
if: ${{ !(contains(needs.*.result, 'failure')) }}
|
||||
# zizmor: ignore[template-injection]
|
||||
run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}"
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,7 +3,6 @@
|
||||
.DS_Store
|
||||
.vscode/*
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
|
||||
docker/upload
|
||||
|
||||
10
.vscode/extensions.json
vendored
10
.vscode/extensions.json
vendored
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"esbenp.prettier-vscode",
|
||||
"svelte.svelte-vscode",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"dart-code.flutter",
|
||||
"dart-code.dart-code",
|
||||
"dcmdev.dcm-vscode-extension"
|
||||
]
|
||||
}
|
||||
72
.vscode/tasks.json
vendored
72
.vscode/tasks.json
vendored
@@ -1,72 +0,0 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Fix Permissions, Install Dependencies",
|
||||
"type": "shell",
|
||||
"command": "[ -f /immich-devcontainer/container-start.sh ] && /immich-devcontainer/container-start.sh || exit 0",
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "always",
|
||||
"focus": false,
|
||||
"panel": "dedicated",
|
||||
"showReuseMessage": true,
|
||||
"clear": false,
|
||||
"group": "Devcontainer tasks",
|
||||
"close": true
|
||||
},
|
||||
"runOptions": {
|
||||
"runOn": "default"
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Immich API Server (Nest)",
|
||||
"dependsOn": ["Fix Permissions, Install Dependencies"],
|
||||
"type": "shell",
|
||||
"command": "[ -f /immich-devcontainer/container-start-backend.sh ] && /immich-devcontainer/container-start-backend.sh || exit 0",
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "always",
|
||||
"focus": false,
|
||||
"panel": "dedicated",
|
||||
"showReuseMessage": true,
|
||||
"clear": false,
|
||||
"group": "Devcontainer tasks",
|
||||
"close": true
|
||||
},
|
||||
"runOptions": {
|
||||
"runOn": "default"
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Immich Web Server (Vite)",
|
||||
"dependsOn": ["Fix Permissions, Install Dependencies"],
|
||||
"type": "shell",
|
||||
"command": "[ -f /immich-devcontainer/container-start-frontend.sh ] && /immich-devcontainer/container-start-frontend.sh || exit 0",
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "always",
|
||||
"focus": false,
|
||||
"panel": "dedicated",
|
||||
"showReuseMessage": true,
|
||||
"clear": false,
|
||||
"group": "Devcontainer tasks",
|
||||
"close": true
|
||||
},
|
||||
"runOptions": {
|
||||
"runOn": "default"
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Immich Server and Web",
|
||||
"dependsOn": ["Immich Web Server (Vite)", "Immich API Server (Nest)"],
|
||||
"runOptions": {
|
||||
"runOn": "folderOpen"
|
||||
},
|
||||
"problemMatcher": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
22.16.0
|
||||
22.14.0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:22.16.0-alpine3.20@sha256:2289fb1fba0f4633b08ec47b94a89c7e20b829fc5679f9b7b298eaa2f1ed8b7e AS core
|
||||
FROM node:22.15.0-alpine3.20@sha256:686b8892b69879ef5bfd6047589666933508f9a5451c67320df3070ba0e9807b AS core
|
||||
|
||||
WORKDIR /usr/src/open-api/typescript-sdk
|
||||
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./
|
||||
|
||||
1528
cli/package-lock.json
generated
1528
cli/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@immich/cli",
|
||||
"version": "2.2.68",
|
||||
"version": "2.2.65",
|
||||
"description": "Command Line Interface (CLI) for Immich",
|
||||
"type": "module",
|
||||
"exports": "./dist/index.js",
|
||||
@@ -21,7 +21,7 @@
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/micromatch": "^4.0.9",
|
||||
"@types/mock-fs": "^4.13.1",
|
||||
"@types/node": "^22.15.29",
|
||||
"@types/node": "^22.14.1",
|
||||
"@vitest/coverage-v8": "^3.0.0",
|
||||
"byte-size": "^9.0.0",
|
||||
"cli-progress": "^3.12.0",
|
||||
@@ -29,7 +29,7 @@
|
||||
"eslint": "^9.14.0",
|
||||
"eslint-config-prettier": "^10.0.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"eslint-plugin-unicorn": "^59.0.0",
|
||||
"eslint-plugin-unicorn": "^57.0.0",
|
||||
"globals": "^16.0.0",
|
||||
"mock-fs": "^5.2.0",
|
||||
"prettier": "^3.2.5",
|
||||
@@ -69,6 +69,6 @@
|
||||
"micromatch": "^4.0.8"
|
||||
},
|
||||
"volta": {
|
||||
"node": "22.16.0"
|
||||
"node": "22.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,6 @@ export interface UploadOptionsDto {
|
||||
concurrency: number;
|
||||
progress?: boolean;
|
||||
watch?: boolean;
|
||||
jsonOutput?: boolean;
|
||||
}
|
||||
|
||||
class UploadFile extends File {
|
||||
@@ -66,14 +65,8 @@ class UploadFile extends File {
|
||||
const uploadBatch = async (files: string[], options: UploadOptionsDto) => {
|
||||
const { newFiles, duplicates } = await checkForDuplicates(files, options);
|
||||
const newAssets = await uploadFiles(newFiles, options);
|
||||
if (options.jsonOutput) {
|
||||
console.log(JSON.stringify({ newFiles, duplicates, newAssets }, undefined, 4));
|
||||
}
|
||||
await updateAlbums([...newAssets, ...duplicates], options);
|
||||
await deleteFiles(
|
||||
newAssets.map(({ filepath }) => filepath),
|
||||
options,
|
||||
);
|
||||
await deleteFiles(newFiles, options);
|
||||
};
|
||||
|
||||
export const startWatch = async (
|
||||
|
||||
@@ -68,11 +68,6 @@ program
|
||||
.env('IMMICH_UPLOAD_CONCURRENCY')
|
||||
.default(4),
|
||||
)
|
||||
.addOption(
|
||||
new Option('-j, --json-output', 'Output detailed information in json format')
|
||||
.env('IMMICH_JSON_OUTPUT')
|
||||
.default(false),
|
||||
)
|
||||
.addOption(new Option('--delete', 'Delete local assets after upload').env('IMMICH_DELETE_ASSETS'))
|
||||
.addOption(new Option('--no-progress', 'Hide progress bars').env('IMMICH_PROGRESS_BAR').default(true))
|
||||
.addOption(
|
||||
|
||||
@@ -16,7 +16,7 @@ name: immich-dev
|
||||
services:
|
||||
immich-server:
|
||||
container_name: immich_server
|
||||
command: [ '/usr/src/app/bin/immich-dev' ]
|
||||
command: ['/usr/src/app/bin/immich-dev']
|
||||
image: immich-server-dev:latest
|
||||
# extends:
|
||||
# file: hwaccel.transcoding.yml
|
||||
@@ -48,7 +48,7 @@ services:
|
||||
IMMICH_THIRD_PARTY_SOURCE_URL: https://github.com/immich-app/immich/
|
||||
IMMICH_THIRD_PARTY_BUG_FEATURE_URL: https://github.com/immich-app/immich/issues
|
||||
IMMICH_THIRD_PARTY_DOCUMENTATION_URL: https://immich.app/docs
|
||||
IMMICH_THIRD_PARTY_SUPPORT_URL: https://immich.app/docs/community-guides
|
||||
IMMICH_THIRD_PARTY_SUPPORT_URL: https://immich.app/docs/third-party
|
||||
ulimits:
|
||||
nofile:
|
||||
soft: 1048576
|
||||
@@ -70,7 +70,7 @@ services:
|
||||
# user: 0:0
|
||||
build:
|
||||
context: ../web
|
||||
command: [ '/usr/src/app/bin/immich-web' ]
|
||||
command: ['/usr/src/app/bin/immich-web']
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
@@ -116,13 +116,13 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/valkey/valkey:8-bookworm@sha256:a19bebed6a91bd5e6e2106fef015f9602a3392deeb7c9ed47548378dcee3dfc2
|
||||
image: docker.io/valkey/valkey:8-bookworm@sha256:4a9f847af90037d59b34cd4d4ad14c6e055f46540cf4ff757aaafb266060fa28
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
|
||||
database:
|
||||
container_name: immich_postgres
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.1-pgvectors0.2.0
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
@@ -134,6 +134,7 @@ services:
|
||||
- ${UPLOAD_LOCATION}/postgres:/var/lib/postgresql/data
|
||||
ports:
|
||||
- 5432:5432
|
||||
|
||||
# set IMMICH_TELEMETRY_INCLUDE=all in .env to enable metrics
|
||||
# immich-prometheus:
|
||||
# container_name: immich_prometheus
|
||||
|
||||
@@ -56,14 +56,14 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/valkey/valkey:8-bookworm@sha256:a19bebed6a91bd5e6e2106fef015f9602a3392deeb7c9ed47548378dcee3dfc2
|
||||
image: docker.io/valkey/valkey:8-bookworm@sha256:4a9f847af90037d59b34cd4d4ad14c6e055f46540cf4ff757aaafb266060fa28
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
|
||||
database:
|
||||
container_name: immich_postgres
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.1-pgvectors0.2.0
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
@@ -82,7 +82,7 @@ services:
|
||||
container_name: immich_prometheus
|
||||
ports:
|
||||
- 9090:9090
|
||||
image: prom/prometheus@sha256:9abc6cf6aea7710d163dbb28d8eeb7dc5baef01e38fa4cd146a406dd9f07f70d
|
||||
image: prom/prometheus@sha256:e2b8aa62b64855956e3ec1e18b4f9387fb6203174a4471936f4662f437f04405
|
||||
volumes:
|
||||
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
||||
- prometheus-data:/prometheus
|
||||
@@ -94,7 +94,7 @@ services:
|
||||
command: [ './run.sh', '-disable-reporting' ]
|
||||
ports:
|
||||
- 3000:3000
|
||||
image: grafana/grafana:12.0.1-ubuntu@sha256:65575bb9c761335e2ff30e364f21d38632e3b2e75f5f81d83cc92f44b9bbc055
|
||||
image: grafana/grafana:11.6.1-ubuntu@sha256:6fc273288470ef499dd3c6b36aeade093170d4f608f864c5dd3a7fabeae77b50
|
||||
volumes:
|
||||
- grafana-data:/var/lib/grafana
|
||||
|
||||
|
||||
@@ -49,24 +49,24 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/valkey/valkey:8-bookworm@sha256:a19bebed6a91bd5e6e2106fef015f9602a3392deeb7c9ed47548378dcee3dfc2
|
||||
image: docker.io/valkey/valkey:8-bookworm@sha256:4a9f847af90037d59b34cd4d4ad14c6e055f46540cf4ff757aaafb266060fa28
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
|
||||
database:
|
||||
container_name: immich_postgres
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.1-pgvectors0.2.0
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
|
||||
environment:
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
POSTGRES_USER: ${DB_USERNAME}
|
||||
POSTGRES_DB: ${DB_DATABASE_NAME}
|
||||
POSTGRES_INITDB_ARGS: '--data-checksums'
|
||||
# Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
|
||||
# DB_STORAGE_TYPE: 'HDD'
|
||||
volumes:
|
||||
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
|
||||
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
|
||||
# change ssd below to hdd if you are using a hard disk drive or other slow storage
|
||||
command: postgres -c config_file=/etc/postgresql/postgresql.ssd.conf
|
||||
restart: always
|
||||
|
||||
volumes:
|
||||
|
||||
@@ -1 +1 @@
|
||||
22.16.0
|
||||
22.14.0
|
||||
|
||||
@@ -219,10 +219,3 @@ When you turn off the storage template engine, it will leave the assets in `UPLO
|
||||
Do not touch the files inside these folders under any circumstances except taking a backup. Changing or removing an asset can cause untracked and missing files.
|
||||
You can think of it as App-Which-Must-Not-Be-Named, the only access to viewing, changing and deleting assets is only through the mobile or browser interface.
|
||||
:::
|
||||
|
||||
## Backup ordering
|
||||
|
||||
A backup of Immich should contain both the database and the asset files. When backing these up it's possible for them to get out of sync, potentially resulting in broken assets after you restore.
|
||||
The best way of dealing with this is to stop the immich-server container while you take a backup. If nothing is changing then the backup will always be in sync.
|
||||
|
||||
If stopping the container is not an option, then the recommended order is to back up the database first, and the filesystem second. This way, the worst case scenario is that there are files on the filesystem that the database doesn't know about. If necessary, these can be (re)uploaded manually after a restore. If the backup is done the other way around, with the filesystem first and the database second, it's possible for the restored database to reference files that aren't in the filesystem backup, thus resulting in broken assets.
|
||||
|
||||
@@ -93,7 +93,6 @@ The `.well-known/openid-configuration` part of the url is optional and will be a
|
||||
## Auto Launch
|
||||
|
||||
When Auto Launch is enabled, the login page will automatically redirect the user to the OAuth authorization url, to login with OAuth. To access the login screen again, use the browser's back button, or navigate directly to `/auth/login?autoLaunch=0`.
|
||||
Auto Launch can also be enabled on a per-request basis by navigating to `/auth/login?authLaunch=1`, this can be useful in situations where Immich is called from e.g. Nextcloud using the _External sites_ app and the _oidc_ app so as to enable users to directly interact with a logged-in instance of Immich.
|
||||
|
||||
## Mobile Redirect URI
|
||||
|
||||
|
||||
@@ -10,16 +10,12 @@ Running with a pre-existing Postgres server can unlock powerful administrative f
|
||||
|
||||
## Prerequisites
|
||||
|
||||
You must install `pgvector` (`>= 0.7.0, < 1.0.0`), as it is a prerequisite for `vchord`.
|
||||
The easiest way to do this on Debian/Ubuntu is by adding the [PostgreSQL Apt repository][pg-apt] and then
|
||||
running `apt install postgresql-NN-pgvector`, where `NN` is your Postgres version (e.g., `16`).
|
||||
|
||||
You must install VectorChord into your instance of Postgres using their [instructions][vchord-install]. After installation, add `shared_preload_libraries = 'vchord.so'` to your `postgresql.conf`. If you already have some `shared_preload_libraries` set, you can separate each extension with a comma. For example, `shared_preload_libraries = 'pg_stat_statements, vchord.so'`.
|
||||
|
||||
:::note
|
||||
Immich is known to work with Postgres versions `>= 14, < 18`.
|
||||
Immich is known to work with Postgres versions 14, 15, 16 and 17. Earlier versions are unsupported.
|
||||
|
||||
Make sure the installed version of VectorChord is compatible with your version of Immich. The current accepted range for VectorChord is `>= 0.3.0, < 0.5.0`.
|
||||
Make sure the installed version of VectorChord is compatible with your version of Immich. The current accepted range for VectorChord is `>= 0.3.0, < 0.4.0`.
|
||||
:::
|
||||
|
||||
## Specifying the connection URL
|
||||
@@ -77,19 +73,14 @@ Support for pgvecto.rs will be dropped in a later release, hence we recommend al
|
||||
The easiest option is to have both extensions installed during the migration:
|
||||
|
||||
1. Ensure you still have pgvecto.rs installed
|
||||
2. Install `pgvector` (`>= 0.7.0, < 1.0.0`). The easiest way to do this is on Debian/Ubuntu by adding the [PostgreSQL Apt repository][pg-apt] and then running `apt install postgresql-NN-pgvector`, where `NN` is your Postgres version (e.g., `16`)
|
||||
3. [Install VectorChord][vchord-install]
|
||||
4. Add `shared_preload_libraries= 'vchord.so, vectors.so'` to your `postgresql.conf`, making sure to include _both_ `vchord.so` and `vectors.so`. You may include other libraries here as well if needed
|
||||
5. Restart the Postgres database
|
||||
6. If Immich does not have superuser permissions, run the SQL command `CREATE EXTENSION vchord CASCADE;` using psql or your choice of database client
|
||||
7. Start Immich and wait for the logs `Reindexed face_index` and `Reindexed clip_index` to be output
|
||||
8. If Immich does not have superuser permissions, run the SQL command `DROP EXTENSION vectors;`
|
||||
9. Drop the old schema by running `DROP SCHEMA vectors;`
|
||||
10. Remove the `vectors.so` entry from the `shared_preload_libraries` setting
|
||||
11. Restart the Postgres database
|
||||
12. Uninstall pgvecto.rs (e.g. `apt-get purge vectors-pg14` on Debian-based environments, replacing `pg14` as appropriate). `pgvector` must remain installed as it provides the data types used by `vchord`
|
||||
2. [Install VectorChord][vchord-install]
|
||||
3. Add `shared_preload_libraries= 'vchord.so, vectors.so'` to your `postgresql.conf`, making sure to include _both_ `vchord.so` and `vectors.so`. You may include other libraries here as well if needed
|
||||
4. If Immich does not have superuser permissions, run the SQL command `CREATE EXTENSION vchord CASCADE;` using psql or your choice of database client
|
||||
5. Start Immich and wait for the logs `Reindexed face_index` and `Reindexed clip_index` to be output
|
||||
6. Remove the `vectors.so` entry from the `shared_preload_libraries` setting
|
||||
7. Uninstall pgvecto.rs (e.g. `apt-get purge vectors-pg14` on Debian-based environments, replacing `pg14` as appropriate)
|
||||
|
||||
If it is not possible to have both VectorChord and pgvecto.rs installed at the same time, you can perform the migration with more manual steps:
|
||||
If it is not possible to have both VectorChord and pgvector.s installed at the same time, you can perform the migration with more manual steps:
|
||||
|
||||
1. While pgvecto.rs is still installed, run the following SQL command using psql or your choice of database client. Take note of the number outputted by this command as you will need it later
|
||||
|
||||
@@ -128,10 +119,14 @@ ALTER TABLE face_search ALTER COLUMN embedding SET DATA TYPE vector(512);
|
||||
1. Ensure you have at least 0.7.0 of pgvector installed. If it is below that, please upgrade it and run the SQL command `ALTER EXTENSION vector UPDATE;` using psql or your choice of database client
|
||||
2. Follow the Prerequisites to install VectorChord
|
||||
3. If Immich does not have superuser permissions, run the SQL command `CREATE EXTENSION vchord CASCADE;`
|
||||
4. Remove the `DB_VECTOR_EXTENSION=pgvector` environmental variable as it will make Immich still use pgvector if set
|
||||
5. Start Immich and let it create new indices using VectorChord
|
||||
4. Start Immich and let it create new indices using VectorChord
|
||||
|
||||
Note that VectorChord itself uses pgvector types, so you should not uninstall pgvector after following these steps.
|
||||
|
||||
### Common errors
|
||||
|
||||
#### Permission denied for view
|
||||
|
||||
If you get the error `driverError: error: permission denied for view pg_vector_index_stat`, you can fix this by connecting to the Immich database and running `GRANT SELECT ON TABLE pg_vector_index_stat TO <immichdbusername>;`.
|
||||
|
||||
[vchord-install]: https://docs.vectorchord.ai/vectorchord/getting-started/installation.html
|
||||
[pg-apt]: https://www.postgresql.org/download/linux/#generic
|
||||
|
||||
@@ -1,481 +0,0 @@
|
||||
---
|
||||
title: Devcontainers
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# Development with Dev Containers
|
||||
|
||||
Dev Containers provide a consistent, reproducible development environment using Docker containers. With a single click, you can get started with an Immich development environment on Mac, Linux, Windows, or in the cloud using GitHub Codespaces.
|
||||
|
||||
[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/immich-app/immich/)
|
||||
|
||||
[](https://codespaces.new/immich-app/immich/)
|
||||
|
||||
[Learn more about Dev Containers](https://docs.github.com/en/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before getting started, ensure you have:
|
||||
|
||||
- **Docker Desktop** (latest version)
|
||||
- [Mac](https://docs.docker.com/desktop/install/mac-install/)
|
||||
- [Windows](https://docs.docker.com/desktop/install/windows-install/) (with WSL2 backend recommended)
|
||||
- [Linux](https://docs.docker.com/desktop/install/linux-install/)
|
||||
- **Visual Studio Code** with the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
|
||||
- **Git** for cloning the repository
|
||||
- At least **8GB of RAM** (16GB recommended)
|
||||
- **20GB of free disk space**
|
||||
|
||||
:::tip Alternative Development Environments
|
||||
While this guide focuses on VS Code, you have many options for Dev Container development:
|
||||
|
||||
**Local Editors:**
|
||||
|
||||
- [IntelliJ IDEA](https://www.jetbrains.com/help/idea/connect-to-devcontainer.html) - Full JetBrains IDE support
|
||||
- [neovim](https://github.com/jamestthompson3/nvim-remote-containers) - Lightweight terminal-based editor
|
||||
- [Emacs](https://github.com/emacs-lsp/lsp-docker) - Extensible text editor
|
||||
- [DevContainer CLI](https://github.com/devcontainers/cli) - Command-line interface
|
||||
|
||||
**Cloud-Based Solutions:**
|
||||
|
||||
- [GitHub Codespaces](https://github.com/features/codespaces) - Fully integrated with GitHub, excellent devcontainer.json support
|
||||
- [GitPod](https://www.gitpod.io) - SaaS platform with recent Dev Container support (historically used gitpod.yml)
|
||||
|
||||
**Self-Hostable Options:**
|
||||
|
||||
- [Coder](https://coder.com) - Enterprise-focused, requires Terraform knowledge, self-managed
|
||||
- [DevPod](https://devpod.sh) - Client-only tool with excellent devcontainer.json support, works with any provider (local, cloud, or on-premise)
|
||||
:::
|
||||
|
||||
## Dev Container Services
|
||||
|
||||
The Dev Container environment consists of the following services:
|
||||
|
||||
| Service | Container Name | Description | Ports |
|
||||
| ---------------- | ------------------------- | --------------------------------------------------------- | ----------------------------------------------------------------------- |
|
||||
| Server & Web | `immich-server` | Runs both API server and web frontend in development mode | 2283 (API)<br/>3000 (Web)<br/>9230 (Workers Debug)<br/>9231 (API Debug) |
|
||||
| Database | `database` | PostgreSQL database | 5432 |
|
||||
| Cache | `redis` | Valkey cache server | 6379 |
|
||||
| Machine Learning | `immich-machine-learning` | Immich ML model inference server | 3003 |
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Step 1: Clone the Repository
|
||||
|
||||
```bash
|
||||
git clone https://github.com/immich-app/immich.git
|
||||
cd immich
|
||||
```
|
||||
|
||||
### Step 2: Configure Environment Variables
|
||||
|
||||
The immich dev containers read environment variables from your shell environment, not from `.env` files. This allows them to work in cloud environments without pre-configuration.
|
||||
|
||||
:::important Required Configuration
|
||||
When running locally, and if you want to create (or use an existing) DB and/or photo storage folder, you must set the `UPLOAD_LOCATION` variable in your shell environment before launching the Dev Container. This determines where uploaded files are stored and also where the DB stores it data.
|
||||
|
||||
```bash
|
||||
# Set temporarily for current session
|
||||
export UPLOAD_LOCATION=/opt/dev_upload_folder
|
||||
|
||||
# Or add to your shell profile for persistence
|
||||
# (~/.bashrc, ~/.zshrc, ~/.bash_profile, etc.)
|
||||
echo 'export UPLOAD_LOCATION=/opt/dev_upload_folder' >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
### Step 3: Launch the Dev Container
|
||||
|
||||
#### Using VS Code UI:
|
||||
|
||||
1. Open the cloned repository in VS Code
|
||||
2. Press `F1` or `Ctrl/Cmd+Shift+P` to open the command palette
|
||||
3. Type and select "Dev Containers: Rebuild and Reopen in Container"
|
||||
4. Select "Immich - Backend, Frontend and ML" from the list
|
||||
5. Wait for the container to build and start (this may take several minutes on first run)
|
||||
|
||||
#### Using VS Code Quick Actions:
|
||||
|
||||
1. Open the repository in VS Code
|
||||
2. You should see a popup asking if you want to reopen in a container
|
||||
3. Click "Reopen in Container"
|
||||
|
||||
#### Using Command Line:
|
||||
|
||||
```bash
|
||||
# Using the DevContainer CLI
|
||||
devcontainer up --workspace-folder .
|
||||
```
|
||||
|
||||
## Environment Variable Details
|
||||
|
||||
### How Dev Containers Handle Environment Variables
|
||||
|
||||
Unlike the Immich developer setup based on Docker Compose which uses `.env` files, Immich Dev Containers read environment variables from your shell environment. This is configured in `.devcontainer/devcontainer.json`:
|
||||
|
||||
```json
|
||||
"remoteEnv": {
|
||||
"UPLOAD_LOCATION": "${localEnv:UPLOAD_LOCATION:./Library}",
|
||||
"DB_PASSWORD": "${localEnv:DB_PASSWORD:postgres}",
|
||||
"DB_USERNAME": "${localEnv:DB_USERNAME:postgres}",
|
||||
"DB_DATABASE_NAME": "${localEnv:DB_DATABASE_NAME:immich}"
|
||||
}
|
||||
```
|
||||
|
||||
The `${localEnv:VARIABLE:default}` syntax reads from your shell environment with optional defaults.
|
||||
|
||||
### Upload Location Path Resolution
|
||||
|
||||
The `UPLOAD_LOCATION` environment variable controls where files are stored:
|
||||
|
||||
**Default:** `./Library` (relative to the `docker` directory)
|
||||
**Resolved to:** `<immich-root>/docker/Library`
|
||||
|
||||
**Bind Mounts Created:**
|
||||
|
||||
```yaml
|
||||
# From .devcontainer/server/container-compose-overrides.yml
|
||||
- ${UPLOAD_LOCATION-./Library}/photos:/workspaces/immich/server/upload
|
||||
- ${UPLOAD_LOCATION-./Library}/postgres:/var/lib/postgresql/data
|
||||
```
|
||||
|
||||
### Database Configuration
|
||||
|
||||
These variables have sensible defaults (for development) but can be customized:
|
||||
|
||||
| Variable | Default | Description |
|
||||
| ------------------ | ---------- | ------------------- |
|
||||
| `DB_PASSWORD` | `postgres` | PostgreSQL password |
|
||||
| `DB_USERNAME` | `postgres` | PostgreSQL username |
|
||||
| `DB_DATABASE_NAME` | `immich` | Database name |
|
||||
|
||||
### Setting Environment Variables
|
||||
|
||||
Add these to your shell profile (`~/.bashrc`, `~/.zshrc`, `~/.bash_profile`, etc.):
|
||||
|
||||
```bash
|
||||
# Required
|
||||
export UPLOAD_LOCATION=./Library # or absolute path
|
||||
|
||||
# Optional (only if using non-default values)
|
||||
export DB_PASSWORD=your_password
|
||||
export DB_USERNAME=your_username
|
||||
export DB_DATABASE_NAME=your_database
|
||||
```
|
||||
|
||||
Remember to reload your shell configuration:
|
||||
|
||||
```bash
|
||||
source ~/.bashrc # or ~/.zshrc, etc.
|
||||
```
|
||||
|
||||
## Git Configuration
|
||||
|
||||
### SSH Keys and Authentication
|
||||
|
||||
To use your SSH keys for GitHub access inside the Dev Container:
|
||||
|
||||
1. **Start SSH Agent** on your host machine:
|
||||
|
||||
```bash
|
||||
eval "$(ssh-agent -s)"
|
||||
ssh-add ~/.ssh/id_rsa # or your key path
|
||||
```
|
||||
|
||||
2. **VS Code automatically forwards your SSH agent** to the container
|
||||
|
||||
For detailed instructions, see the [VS Code guide on sharing Git credentials](https://code.visualstudio.com/remote/advancedcontainers/sharing-git-credentials).
|
||||
|
||||
### Commit Signing
|
||||
|
||||
To use your SSH key for commit signing, see the [GitHub guide on SSH commit signing](https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key#telling-git-about-your-ssh-key).
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### Automatic Setup
|
||||
|
||||
When the Dev Container starts, it automatically:
|
||||
|
||||
1. **Runs post-create script** (`container-server-post-create.sh`):
|
||||
|
||||
- Adjusts file permissions for the `node` user
|
||||
- Installs dependencies: `npm install` in all packages
|
||||
- Builds TypeScript SDK: `npm run build` in `open-api/typescript-sdk`
|
||||
|
||||
2. **Starts development servers** via VS Code tasks:
|
||||
|
||||
- `Immich API Server (Nest)` - API server with hot-reloading on port 2283
|
||||
- `Immich Web Server (Vite)` - Web frontend with hot-reloading on port 3000
|
||||
- Both servers watch for file changes and recompile automatically
|
||||
|
||||
3. **Configures port forwarding**:
|
||||
- Web UI: http://localhost:3000 (opens automatically)
|
||||
- API: http://localhost:2283
|
||||
- Debug ports: 9230 (workers), 9231 (API)
|
||||
|
||||
:::info
|
||||
The Dev Container setup replaces the `make dev` command from the traditional setup. All services start automatically when you open the container.
|
||||
:::
|
||||
|
||||
### Accessing Services
|
||||
|
||||
Once running, you can access:
|
||||
|
||||
| Service | URL | Description |
|
||||
| -------- | --------------------- | ---------------------------------------------------------------------------------------------- |
|
||||
| Web UI | http://localhost:3000 | Main web interface |
|
||||
| API | http://localhost:2283 | REST API endpoints (Not used directly, web UI will expose this over http://localhost:3000/api) |
|
||||
| Database | localhost:5432 | PostgreSQL (username: `postgres`) (Not used directly) |
|
||||
|
||||
### Connecting Mobile Apps
|
||||
|
||||
To connect the mobile app to your Dev Container:
|
||||
|
||||
1. Find your machine's IP address
|
||||
2. In the mobile app, use: `http://YOUR_IP:3000/api`
|
||||
3. Ensure your firewall allows connections on port 2283
|
||||
|
||||
### Making Code Changes
|
||||
|
||||
- **Server code** (`/server`): Changes trigger automatic restart
|
||||
- **Web code** (`/web`): Changes trigger hot module replacement
|
||||
- **Database migrations**: Run `npm run sync:sql` in the server directory
|
||||
- **API changes**: Regenerate TypeScript SDK with `make open-api`
|
||||
|
||||
## Testing
|
||||
|
||||
### Running Tests
|
||||
|
||||
The Dev Container supports multiple ways to run tests:
|
||||
|
||||
#### Using Make Commands (Recommended)
|
||||
|
||||
```bash
|
||||
# Run tests for specific components
|
||||
make test-server # Server unit tests
|
||||
make test-web # Web unit tests
|
||||
make test-e2e # End-to-end tests
|
||||
make test-cli # CLI tests
|
||||
|
||||
# Run all tests
|
||||
make test-all # Runs tests for all components
|
||||
|
||||
# Medium tests (integration tests)
|
||||
make test-medium-dev # End-to-end tests
|
||||
```
|
||||
|
||||
#### Using NPM Directly
|
||||
|
||||
```bash
|
||||
# Server tests
|
||||
cd /workspaces/immich/server
|
||||
npm test # Run all tests
|
||||
npm run test:watch # Watch mode
|
||||
npm run test:cov # Coverage report
|
||||
|
||||
# Web tests
|
||||
cd /workspaces/immich/web
|
||||
npm test # Run all tests
|
||||
npm run test:watch # Watch mode
|
||||
|
||||
# E2E tests
|
||||
cd /workspaces/immich/e2e
|
||||
npm run test # Run API tests
|
||||
npm run test:web # Run web UI tests
|
||||
```
|
||||
|
||||
### Code Quality Commands
|
||||
|
||||
```bash
|
||||
# Linting
|
||||
make lint-server # Lint server code
|
||||
make lint-web # Lint web code
|
||||
make lint-all # Lint all components
|
||||
|
||||
# Formatting
|
||||
make format-server # Format server code
|
||||
make format-web # Format web code
|
||||
make format-all # Format all code
|
||||
|
||||
# Type checking
|
||||
make check-server # Type check server
|
||||
make check-web # Type check web
|
||||
make check-all # Check all components
|
||||
|
||||
# Complete hygiene check
|
||||
make hygiene-all # Runs lint, format, check, SQL sync, and audit
|
||||
```
|
||||
|
||||
### Additional Make Commands
|
||||
|
||||
```bash
|
||||
# Build commands
|
||||
make build-server # Build server
|
||||
make build-web # Build web app
|
||||
make build-all # Build everything
|
||||
|
||||
# API generation
|
||||
make open-api # Generate OpenAPI specs
|
||||
make open-api-typescript # Generate TypeScript SDK
|
||||
make open-api-dart # Generate Dart SDK
|
||||
|
||||
# Database
|
||||
make sql # Sync database schema
|
||||
|
||||
# Dependencies
|
||||
make install-server # Install server dependencies
|
||||
make install-web # Install web dependencies
|
||||
make install-all # Install all dependencies
|
||||
```
|
||||
|
||||
### Debugging
|
||||
|
||||
The Dev Container is pre-configured for debugging:
|
||||
|
||||
1. **API Server Debugging**:
|
||||
|
||||
- Set breakpoints in VS Code
|
||||
- Press `F5` or use "Run and Debug" panel
|
||||
- Select "Attach to Server" configuration
|
||||
- Debug port: 9231
|
||||
|
||||
2. **Worker Debugging**:
|
||||
|
||||
- Use "Attach to Workers" configuration
|
||||
- Debug port: 9230
|
||||
|
||||
3. **Web Debugging**:
|
||||
- Use browser DevTools
|
||||
- VS Code debugger for Chrome/Edge extensions supported
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
#### Permission Errors
|
||||
|
||||
**Problem**: `EACCES` or permission denied errors
|
||||
**Solution**:
|
||||
|
||||
- The Dev Container runs as the `node` user (UID 1000)
|
||||
- If your host UID differs, you may see permission issues
|
||||
- Try rebuilding the container: "Dev Containers: Rebuild Container"
|
||||
|
||||
#### Container Won't Start
|
||||
|
||||
**Problem**: Dev Container fails to start or build
|
||||
**Solution**:
|
||||
|
||||
1. Check Docker is running: `docker ps`
|
||||
2. Clean Docker resources: `docker system prune -a`
|
||||
3. Check available disk space
|
||||
4. Review Docker Desktop resource limits
|
||||
|
||||
#### Port Already in Use
|
||||
|
||||
**Problem**: "Port 3000/2283 is already in use"
|
||||
**Solution**:
|
||||
|
||||
1. Check for conflicting services: `lsof -i :3000` (macOS/Linux)
|
||||
2. Stop conflicting services or change port mappings
|
||||
3. Restart Docker Desktop
|
||||
|
||||
#### Upload Location Not Set
|
||||
|
||||
**Problem**: Errors about missing UPLOAD_LOCATION
|
||||
**Solution**:
|
||||
|
||||
1. Set the environment variable: `export UPLOAD_LOCATION=./Library`
|
||||
2. Add to your shell profile for persistence
|
||||
3. Restart your terminal and VS Code
|
||||
|
||||
#### Database Connection Failed
|
||||
|
||||
**Problem**: Cannot connect to PostgreSQL
|
||||
**Solution**:
|
||||
|
||||
1. Ensure all containers are running: `docker ps`
|
||||
2. Check logs: "Dev Containers: Show Container Log"
|
||||
3. Verify database credentials match environment variables
|
||||
|
||||
### Getting Help
|
||||
|
||||
If you encounter issues:
|
||||
|
||||
1. Check container logs: View → Output → Select "Dev Containers"
|
||||
2. Rebuild without cache: "Dev Containers: Rebuild Container Without Cache"
|
||||
3. Review [common Docker issues](https://docs.docker.com/desktop/troubleshoot/)
|
||||
4. Ask in [Discord](https://discord.immich.app) `#help-desk-support` channel
|
||||
|
||||
## Mobile Development
|
||||
|
||||
While the Dev Container focuses on server and web development, you can connect mobile apps for testing:
|
||||
|
||||
### Connecting iOS/Android Apps
|
||||
|
||||
1. **Ensure API is accessible**:
|
||||
|
||||
```bash
|
||||
# Find your machine's IP
|
||||
# macOS
|
||||
ipconfig getifaddr en0
|
||||
# Linux
|
||||
hostname -I
|
||||
# Windows (in WSL2)
|
||||
ip addr show eth0
|
||||
```
|
||||
|
||||
2. **Configure mobile app**:
|
||||
|
||||
- Server URL: `http://YOUR_IP:2283/api`
|
||||
- Ensure firewall allows port 2283
|
||||
|
||||
3. **For full mobile development**, see the [mobile development guide](/docs/developer/setup) which covers:
|
||||
- Flutter setup
|
||||
- Running on simulators/devices
|
||||
- Mobile-specific debugging
|
||||
|
||||
## Advanced Configuration
|
||||
|
||||
### Custom VS Code Extensions
|
||||
|
||||
Add extensions to `.devcontainer/devcontainer.json`:
|
||||
|
||||
```json
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"your.extension-id"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Additional Services
|
||||
|
||||
To add services (e.g., Redis Commander), modify:
|
||||
|
||||
1. `/docker/docker-compose.dev.yml` - Add service definition
|
||||
2. `/.devcontainer/server/container-compose-overrides.yml` - Add overrides if needed
|
||||
|
||||
### Resource Limits
|
||||
|
||||
Adjust Docker Desktop resources:
|
||||
|
||||
- **macOS/Windows**: Docker Desktop → Settings → Resources
|
||||
- **Linux**: Modify Docker daemon configuration
|
||||
|
||||
Recommended minimums:
|
||||
|
||||
- CPU: 4 cores
|
||||
- Memory: 8GB
|
||||
- Disk: 20GB
|
||||
|
||||
## Next Steps
|
||||
|
||||
- Read the [architecture overview](/docs/developer/architecture)
|
||||
- Learn about [database migrations](/docs/developer/database-migrations)
|
||||
- Explore [API documentation](/docs/api)
|
||||
- Join `#immich` on [Discord](https://discord.immich.app)
|
||||
@@ -75,12 +75,11 @@ npm run dev
|
||||
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`
|
||||
2. Build the `@immich/ui` project via `npm run build`
|
||||
3. Uncomment the corresponding volume in web service of the `docker/docker-compose.dev.yaml` file (`../../ui:/usr/ui`)
|
||||
4. Uncomment the corresponding alias in the `web/vite.config.js` file (`'@immich/ui': path.resolve(\_\_dirname, '../../ui')`)
|
||||
5. Uncomment the import statement in `web/src/app.css` file `@import '/usr/ui/dist/theme/default.css';` and comment out `@import '@immich/ui/theme/default.css';`
|
||||
6. Start up the stack via `make dev`
|
||||
7. After making changes in `@immich/ui`, rebuild it (`npm run build`)
|
||||
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
|
||||
|
||||
@@ -115,72 +114,32 @@ Note: Activating the license is not required.
|
||||
|
||||
### VSCode
|
||||
|
||||
Install `Flutter`, `DCM`, `Prettier`, `ESLint` and `Svelte` extensions. These extensions are listed in the `extensions.json` file under `.vscode/` and should appear as workspace recommendations.
|
||||
Install `Flutter`, `DCM`, `Prettier`, `ESLint` and `Svelte` extensions.
|
||||
|
||||
Here are the settings we use, they should be active as workspace settings (`settings.json`):
|
||||
in User `settings.json` (`cmd + shift + p` and search for `Open User Settings JSON`) add the following:
|
||||
|
||||
```json title="settings.json"
|
||||
{
|
||||
"[css]": {
|
||||
"editor.formatOnSave": true,
|
||||
"[javascript][typescript][css]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"editor.formatOnSave": true,
|
||||
"editor.tabSize": 2,
|
||||
"editor.formatOnSave": true
|
||||
},
|
||||
"[svelte]": {
|
||||
"editor.defaultFormatter": "svelte.svelte-vscode",
|
||||
"editor.tabSize": 2
|
||||
},
|
||||
"svelte.enable-ts-plugin": true,
|
||||
"eslint.validate": ["javascript", "svelte"],
|
||||
"[dart]": {
|
||||
"editor.defaultFormatter": "Dart-Code.dart-code",
|
||||
"editor.formatOnSave": true,
|
||||
"editor.selectionHighlight": false,
|
||||
"editor.suggest.snippetsPreventQuickSuggestions": false,
|
||||
"editor.suggestSelection": "first",
|
||||
"editor.tabCompletion": "onlySnippets",
|
||||
"editor.wordBasedSuggestions": "off"
|
||||
},
|
||||
"[javascript]": {
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.organizeImports": "explicit",
|
||||
"source.removeUnusedImports": "explicit"
|
||||
},
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"editor.formatOnSave": true,
|
||||
"editor.tabSize": 2
|
||||
},
|
||||
"[json]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"editor.formatOnSave": true,
|
||||
"editor.tabSize": 2
|
||||
},
|
||||
"[jsonc]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"editor.formatOnSave": true,
|
||||
"editor.tabSize": 2
|
||||
},
|
||||
"[svelte]": {
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.organizeImports": "explicit",
|
||||
"source.removeUnusedImports": "explicit"
|
||||
},
|
||||
"editor.defaultFormatter": "svelte.svelte-vscode",
|
||||
"editor.formatOnSave": true,
|
||||
"editor.tabSize": 2
|
||||
},
|
||||
"[typescript]": {
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.organizeImports": "explicit",
|
||||
"source.removeUnusedImports": "explicit"
|
||||
},
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"editor.formatOnSave": true,
|
||||
"editor.tabSize": 2
|
||||
},
|
||||
"cSpell.words": ["immich"],
|
||||
"editor.formatOnSave": true,
|
||||
"eslint.validate": ["javascript", "svelte"],
|
||||
"explorer.fileNesting.enabled": true,
|
||||
"explorer.fileNesting.patterns": {
|
||||
"*.dart": "${capture}.g.dart,${capture}.gr.dart,${capture}.drift.dart",
|
||||
"*.ts": "${capture}.spec.ts,${capture}.mock.ts"
|
||||
},
|
||||
"svelte.enable-ts-plugin": true,
|
||||
"typescript.preferences.importModuleSpecifier": "non-relative"
|
||||
"editor.wordBasedSuggestions": "off",
|
||||
"editor.defaultFormatter": "Dart-Code.dart-code"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
# Chromecast support
|
||||
|
||||
Immich supports the Google's Cast protocol so that photos and videos can be cast to devices such as a Chromecast and a Nest Hub. This feature is considered experimental and has several important limitations listed below. Currently, this feature is only supported by the web client, support on Android and iOS is planned for the future.
|
||||
|
||||
## Enable Google Cast Support
|
||||
|
||||
Google Cast support is disabled by default. The web UI uses Google-provided scripts and must retreive them from Google servers when the page loads. This is a privacy concern for some and is thus opt-in.
|
||||
|
||||
You can enable Google Cast support through `Account Settings > Features > Cast > Google Cast`
|
||||
|
||||
<img src={require('./img/gcast-enable.webp').default} width="70%" title='Enable Google Cast Support' />
|
||||
|
||||
## Limitations
|
||||
|
||||
To use casting with Immich, there are a few prerequisites:
|
||||
|
||||
1. Your instance must be accessed via an HTTPS connection in order for the casting menu to show.
|
||||
2. Your instance must be publicly accessible via HTTPS and a DNS record for the server must be accessible via Google's DNS servers (`8.8.8.8` and `8.8.4.4`)
|
||||
3. Videos must be in a format that is compatible with Google Cast. For more info, check out [Google's documentation](https://developers.google.com/cast/docs/media)
|
||||
@@ -90,22 +90,19 @@ Usage: immich upload [paths...] [options]
|
||||
Upload assets
|
||||
|
||||
Arguments:
|
||||
paths One or more paths to assets to be uploaded
|
||||
paths One or more paths to assets to be uploaded
|
||||
|
||||
Options:
|
||||
-r, --recursive Recursive (default: false, env: IMMICH_RECURSIVE)
|
||||
-i, --ignore <pattern> Pattern to ignore (env: IMMICH_IGNORE_PATHS)
|
||||
-h, --skip-hash Don't hash files before upload (default: false, env: IMMICH_SKIP_HASH)
|
||||
-H, --include-hidden Include hidden folders (default: false, env: IMMICH_INCLUDE_HIDDEN)
|
||||
-a, --album Automatically create albums based on folder name (default: false, env: IMMICH_AUTO_CREATE_ALBUM)
|
||||
-A, --album-name <name> Add all assets to specified album (env: IMMICH_ALBUM_NAME)
|
||||
-n, --dry-run Don't perform any actions, just show what will be done (default: false, env: IMMICH_DRY_RUN)
|
||||
-c, --concurrency <number> Number of assets to upload at the same time (default: 4, env: IMMICH_UPLOAD_CONCURRENCY)
|
||||
-j, --json-output Output detailed information in json format (default: false, env: IMMICH_JSON_OUTPUT)
|
||||
--delete Delete local assets after upload (env: IMMICH_DELETE_ASSETS)
|
||||
--no-progress Hide progress bars (env: IMMICH_PROGRESS_BAR)
|
||||
--watch Watch for changes and upload automatically (default: false, env: IMMICH_WATCH_CHANGES)
|
||||
--help display help for command
|
||||
-r, --recursive Recursive (default: false, env: IMMICH_RECURSIVE)
|
||||
-i, --ignore [paths...] Paths to ignore (default: [], env: IMMICH_IGNORE_PATHS)
|
||||
-h, --skip-hash Don't hash files before upload (default: false, env: IMMICH_SKIP_HASH)
|
||||
-H, --include-hidden Include hidden folders (default: false, env: IMMICH_INCLUDE_HIDDEN)
|
||||
-a, --album Automatically create albums based on folder name (default: false, env: IMMICH_AUTO_CREATE_ALBUM)
|
||||
-A, --album-name <name> Add all assets to specified album (env: IMMICH_ALBUM_NAME)
|
||||
-n, --dry-run Don't perform any actions, just show what will be done (default: false, env: IMMICH_DRY_RUN)
|
||||
-c, --concurrency <number> Number of assets to upload at the same time (default: 4, env: IMMICH_UPLOAD_CONCURRENCY)
|
||||
--delete Delete local assets after upload (env: IMMICH_DELETE_ASSETS)
|
||||
--help display help for command
|
||||
```
|
||||
|
||||
</details>
|
||||
@@ -175,16 +172,6 @@ By default, hidden files are skipped. If you want to include hidden files, use t
|
||||
immich upload --include-hidden --recursive directory/
|
||||
```
|
||||
|
||||
You can use the `--json-output` option to get a json printed which includes
|
||||
three keys: `newFiles`, `duplicates` and `newAssets`. Due to some logging
|
||||
output you will need to strip the first three lines of output to get the json.
|
||||
For example to get a list of files that would be uploaded for further
|
||||
processing:
|
||||
|
||||
```bash
|
||||
immich upload --dry-run . | tail -n +4 | jq .newFiles[]
|
||||
```
|
||||
|
||||
### Obtain the API Key
|
||||
|
||||
The API key can be obtained in the user setting panel on the web interface.
|
||||
|
||||
@@ -121,6 +121,6 @@ Once this is done, you can continue to step 3 of "Basic Setup".
|
||||
|
||||
[hw-file]: https://github.com/immich-app/immich/releases/latest/download/hwaccel.transcoding.yml
|
||||
[nvct]: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
|
||||
[jellyfin-lp]: https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/intel#low-power-encoding
|
||||
[jellyfin-kernel-bug]: https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/intel#known-issues-and-limitations-on-linux
|
||||
[jellyfin-lp]: https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#configure-and-verify-lp-mode-on-linux
|
||||
[jellyfin-kernel-bug]: https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#known-issues-and-limitations
|
||||
[libmali-rockchip]: https://github.com/tsukumijima/libmali-rockchip/releases
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB |
@@ -112,15 +112,12 @@ _Remember to run `docker compose up -d` to register the changes. Make sure you c
|
||||
|
||||
These actions must be performed by the Immich administrator.
|
||||
|
||||
- Click on your avatar on the upper right corner
|
||||
- Click on Administration -> External Libraries
|
||||
- Click on Create an external library…
|
||||
- Click on Administration -> Libraries
|
||||
- Click on Create External Library
|
||||
- Select which user owns the library, this can not be changed later
|
||||
- Enter `/mnt/media/christmas-trip` then click Add
|
||||
- Click on Save
|
||||
- Click the drop-down menu on the newly created library
|
||||
- Click on Scan
|
||||
- Click the drop-down menu on the newly created library
|
||||
- Click on Rename Library and rename it to "Christmas Trip"
|
||||
|
||||
NOTE: We have to use the `/mnt/media/christmas-trip` path and not the `/mnt/nas/christmas-trip` path since all paths have to be what the Docker containers see.
|
||||
|
||||
@@ -123,7 +123,7 @@ The default configuration looks like this:
|
||||
"buttonText": "Login with OAuth",
|
||||
"clientId": "",
|
||||
"clientSecret": "",
|
||||
"defaultStorageQuota": null,
|
||||
"defaultStorageQuota": 0,
|
||||
"enabled": false,
|
||||
"issuerUrl": "",
|
||||
"mobileOverrideEnabled": false,
|
||||
|
||||
@@ -25,7 +25,7 @@ When you're all done, you should have the following:
|
||||
- `./docker/immich-app/postgres`
|
||||
- `./docker/immich-app/library`
|
||||
|
||||
Download [`docker-compose.yml`](https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml) and [`example.env`](https://github.com/immich-app/immich/releases/latest/download/example.env) to your computer. Upload the files to the `./docker/immich-app` directory, and rename `example.env` to `.env`.
|
||||
Download [`docker-compose.yml`](https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml) and [`example.env`](https://github.com/immich-app/immich/releases/latest/download/example.env) to your computer. Upload the files to the `./docker/immich-app` directory.
|
||||
|
||||
## Step 2 - Populate the .env file with custom values
|
||||
|
||||
|
||||
@@ -57,6 +57,6 @@
|
||||
"node": ">=20"
|
||||
},
|
||||
"volta": {
|
||||
"node": "22.16.0"
|
||||
"node": "22.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,11 @@ const projects: CommunityProjectProps[] = [
|
||||
'Lightroom plugin to publish, export photos from Lightroom to Immich. Import from Immich to Lightroom is also supported.',
|
||||
url: 'https://blog.fokuspunk.de/lrc-immich-plugin/',
|
||||
},
|
||||
{
|
||||
title: 'Immich Duplicate Finder',
|
||||
description: 'Webapp that uses machine learning to identify near-duplicate images.',
|
||||
url: 'https://github.com/vale46n1/immich_duplicate_finder',
|
||||
},
|
||||
{
|
||||
title: 'Immich-Tiktok-Remover',
|
||||
description: 'Script to search for and remove TikTok videos from your Immich library.',
|
||||
|
||||
@@ -13,9 +13,6 @@ import {
|
||||
mdiTrashCan,
|
||||
mdiWeb,
|
||||
mdiWrap,
|
||||
mdiCloudKeyOutline,
|
||||
mdiRegex,
|
||||
mdiCodeJson,
|
||||
} from '@mdi/js';
|
||||
import Layout from '@theme/Layout';
|
||||
import React from 'react';
|
||||
@@ -26,30 +23,6 @@ const withLanguage = (date: Date) => (language: string) => date.toLocaleDateStri
|
||||
type Item = Omit<TimelineItem, 'done' | 'getDateLabel'> & { date: Date };
|
||||
|
||||
const items: Item[] = [
|
||||
{
|
||||
icon: mdiRegex,
|
||||
iconColor: 'purple',
|
||||
title: 'Zitadel Actions are cursed',
|
||||
description:
|
||||
"Zitadel is cursed because its custom scripting feature is executed with a JS engine that doesn't support regex named capture groups.",
|
||||
link: {
|
||||
url: 'https://github.com/dop251/goja',
|
||||
text: 'Go JS engine',
|
||||
},
|
||||
date: new Date(2025, 5, 4),
|
||||
},
|
||||
{
|
||||
icon: mdiCloudKeyOutline,
|
||||
iconColor: '#0078d4',
|
||||
title: 'Entra is cursed',
|
||||
description:
|
||||
"Microsoft Entra supports PKCE, but doesn't include it in its OpenID discovery document. This leads to clients thinking PKCE isn't available.",
|
||||
link: {
|
||||
url: 'https://github.com/immich-app/immich/pull/18725',
|
||||
text: '#18725',
|
||||
},
|
||||
date: new Date(2025, 4, 30),
|
||||
},
|
||||
{
|
||||
icon: mdiCrop,
|
||||
iconColor: 'tomato',
|
||||
@@ -60,18 +33,7 @@ const items: Item[] = [
|
||||
url: 'https://github.com/immich-app/immich/pull/17974',
|
||||
text: '#17974',
|
||||
},
|
||||
date: new Date(2025, 4, 5),
|
||||
},
|
||||
{
|
||||
icon: mdiCodeJson,
|
||||
iconColor: 'yellow',
|
||||
title: 'YAML whitespace is cursed',
|
||||
description: 'YAML whitespaces are often handled in unintuitive ways.',
|
||||
link: {
|
||||
url: 'https://github.com/immich-app/immich/pull/17309',
|
||||
text: '#17309',
|
||||
},
|
||||
date: new Date(2025, 3, 1),
|
||||
date: new Date(2025, 5, 5),
|
||||
},
|
||||
{
|
||||
icon: mdiMicrosoftWindows,
|
||||
|
||||
@@ -78,14 +78,12 @@ import {
|
||||
mdiLinkEdit,
|
||||
mdiTagFaces,
|
||||
mdiMovieOpenPlayOutline,
|
||||
mdiCast,
|
||||
} from '@mdi/js';
|
||||
import Layout from '@theme/Layout';
|
||||
import React from 'react';
|
||||
import { Item, Timeline } from '../components/timeline';
|
||||
|
||||
const releases = {
|
||||
'v1.133.0': new Date(2025, 4, 21),
|
||||
'v1.130.0': new Date(2025, 2, 25),
|
||||
'v1.127.0': new Date(2025, 1, 26),
|
||||
'v1.122.0': new Date(2024, 11, 5),
|
||||
@@ -218,6 +216,14 @@ const roadmap: Item[] = [
|
||||
iconColor: 'indianred',
|
||||
title: 'Stable release',
|
||||
description: 'Immich goes stable',
|
||||
getDateLabel: () => 'Planned for early 2025',
|
||||
},
|
||||
{
|
||||
done: false,
|
||||
icon: mdiLockOutline,
|
||||
iconColor: 'sandybrown',
|
||||
title: 'Private/locked photos',
|
||||
description: 'Private assets with extra protections',
|
||||
getDateLabel: () => 'Planned for 2025',
|
||||
},
|
||||
{
|
||||
@@ -239,20 +245,6 @@ const roadmap: Item[] = [
|
||||
];
|
||||
|
||||
const milestones: Item[] = [
|
||||
withRelease({
|
||||
icon: mdiCast,
|
||||
iconColor: 'aqua',
|
||||
title: 'Google Cast (web)',
|
||||
description: 'Cast assets to Google Cast/Chromecast compatible devices',
|
||||
release: 'v1.133.0',
|
||||
}),
|
||||
withRelease({
|
||||
icon: mdiLockOutline,
|
||||
iconColor: 'sandybrown',
|
||||
title: 'Private/locked photos',
|
||||
description: 'Private assets with extra protections',
|
||||
release: 'v1.133.0',
|
||||
}),
|
||||
withRelease({
|
||||
icon: mdiFolderMultiple,
|
||||
iconColor: 'brown',
|
||||
|
||||
12
docs/static/archived-versions.json
vendored
12
docs/static/archived-versions.json
vendored
@@ -1,16 +1,4 @@
|
||||
[
|
||||
{
|
||||
"label": "v1.134.0",
|
||||
"url": "https://v1.134.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.133.1",
|
||||
"url": "https://v1.133.1.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.133.0",
|
||||
"url": "https://v1.133.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.132.3",
|
||||
"url": "https://v1.132.3.archive.immich.app"
|
||||
|
||||
@@ -1 +1 @@
|
||||
22.16.0
|
||||
22.14.0
|
||||
|
||||
@@ -28,10 +28,8 @@ services:
|
||||
extra_hosts:
|
||||
- 'auth-server:host-gateway'
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_started
|
||||
database:
|
||||
condition: service_healthy
|
||||
- redis
|
||||
- database
|
||||
ports:
|
||||
- 2285:2285
|
||||
|
||||
@@ -39,17 +37,11 @@ services:
|
||||
image: redis:6.2-alpine@sha256:3211c33a618c457e5d241922c975dbc4f446d0bdb2dc75694f5573ef8e2d01fa
|
||||
|
||||
database:
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0@sha256:9c704fb49ce27549df00f1b096cc93f8b0c959ef087507704d74954808f78a82
|
||||
command: -c fsync=off -c shared_preload_libraries=vchord.so -c config_file=/var/lib/postgresql/data/postgresql.conf
|
||||
image: tensorchord/vchord-postgres:pg14-v0.3.0
|
||||
command: -c fsync=off -c shared_preload_libraries=vchord.so
|
||||
environment:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_DB: immich
|
||||
ports:
|
||||
- 5435:5432
|
||||
healthcheck:
|
||||
test: ['CMD-SHELL', 'pg_isready -U postgres -d immich']
|
||||
interval: 1s
|
||||
timeout: 5s
|
||||
retries: 30
|
||||
start_period: 10s
|
||||
|
||||
2109
e2e/package-lock.json
generated
2109
e2e/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "immich-e2e",
|
||||
"version": "1.134.0",
|
||||
"version": "1.132.3",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"type": "module",
|
||||
@@ -25,21 +25,21 @@
|
||||
"@immich/sdk": "file:../open-api/typescript-sdk",
|
||||
"@playwright/test": "^1.44.1",
|
||||
"@types/luxon": "^3.4.2",
|
||||
"@types/node": "^22.15.29",
|
||||
"@types/oidc-provider": "^9.0.0",
|
||||
"@types/pg": "^8.15.1",
|
||||
"@types/node": "^22.14.1",
|
||||
"@types/oidc-provider": "^8.5.1",
|
||||
"@types/pg": "^8.11.0",
|
||||
"@types/pngjs": "^6.0.4",
|
||||
"@types/supertest": "^6.0.2",
|
||||
"@vitest/coverage-v8": "^3.0.0",
|
||||
"eslint": "^9.14.0",
|
||||
"eslint-config-prettier": "^10.0.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"eslint-plugin-unicorn": "^59.0.0",
|
||||
"eslint-plugin-unicorn": "^57.0.0",
|
||||
"exiftool-vendored": "^28.3.1",
|
||||
"globals": "^16.0.0",
|
||||
"jose": "^5.6.3",
|
||||
"luxon": "^3.4.4",
|
||||
"oidc-provider": "^9.0.0",
|
||||
"oidc-provider": "^8.5.1",
|
||||
"pg": "^8.11.3",
|
||||
"pngjs": "^7.0.0",
|
||||
"prettier": "^3.2.5",
|
||||
@@ -52,6 +52,6 @@
|
||||
"vitest": "^3.0.0"
|
||||
},
|
||||
"volta": {
|
||||
"node": "22.16.0"
|
||||
"node": "22.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -428,15 +428,6 @@ describe('/albums', () => {
|
||||
order: AssetOrder.Desc,
|
||||
});
|
||||
});
|
||||
|
||||
it('should not be able to share album with owner', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.post('/albums')
|
||||
.send({ albumName: 'New album', albumUsers: [{ role: AlbumUserRole.Editor, userId: user1.userId }] })
|
||||
.set('Authorization', `Bearer ${user1.accessToken}`);
|
||||
expect(status).toBe(400);
|
||||
expect(body).toEqual(errorDto.badRequest('Cannot share album with owner'));
|
||||
});
|
||||
});
|
||||
|
||||
describe('PUT /albums/:id/assets', () => {
|
||||
|
||||
@@ -143,7 +143,7 @@ describe('/api-keys', () => {
|
||||
const { apiKey } = await create(user.accessToken, [Permission.All]);
|
||||
const { status, body } = await request(app)
|
||||
.put(`/api-keys/${apiKey.id}`)
|
||||
.send({ name: 'new name', permissions: [Permission.All] })
|
||||
.send({ name: 'new name' })
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
expect(status).toBe(400);
|
||||
expect(body).toEqual(errorDto.badRequest('API Key not found'));
|
||||
@@ -153,16 +153,13 @@ describe('/api-keys', () => {
|
||||
const { apiKey } = await create(user.accessToken, [Permission.All]);
|
||||
const { status, body } = await request(app)
|
||||
.put(`/api-keys/${apiKey.id}`)
|
||||
.send({
|
||||
name: 'new name',
|
||||
permissions: [Permission.ActivityCreate, Permission.ActivityRead, Permission.ActivityUpdate],
|
||||
})
|
||||
.send({ name: 'new name' })
|
||||
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual({
|
||||
id: expect.any(String),
|
||||
name: 'new name',
|
||||
permissions: [Permission.ActivityCreate, Permission.ActivityRead, Permission.ActivityUpdate],
|
||||
permissions: [Permission.All],
|
||||
createdAt: expect.any(String),
|
||||
updatedAt: expect.any(String),
|
||||
});
|
||||
|
||||
@@ -202,6 +202,7 @@ describe('/asset', () => {
|
||||
{
|
||||
name: 'Marie Curie',
|
||||
birthDate: null,
|
||||
thumbnailPath: '',
|
||||
isHidden: false,
|
||||
faces: [
|
||||
{
|
||||
@@ -218,6 +219,7 @@ describe('/asset', () => {
|
||||
{
|
||||
name: 'Pierre Curie',
|
||||
birthDate: null,
|
||||
thumbnailPath: '',
|
||||
isHidden: false,
|
||||
faces: [
|
||||
{
|
||||
|
||||
@@ -5,30 +5,33 @@ import { app, asBearerAuth, utils } from 'src/utils';
|
||||
import request from 'supertest';
|
||||
import { beforeAll, beforeEach, describe, expect, it } from 'vitest';
|
||||
|
||||
const invalidBirthday = [
|
||||
{
|
||||
birthDate: 'false',
|
||||
response: ['birthDate must be a string in the format yyyy-MM-dd', 'Birth date cannot be in the future'],
|
||||
},
|
||||
{
|
||||
birthDate: '123567',
|
||||
response: ['birthDate must be a string in the format yyyy-MM-dd', 'Birth date cannot be in the future'],
|
||||
},
|
||||
{
|
||||
birthDate: 123_567,
|
||||
response: ['birthDate must be a string in the format yyyy-MM-dd', 'Birth date cannot be in the future'],
|
||||
},
|
||||
{ birthDate: '9999-01-01', response: ['Birth date cannot be in the future'] },
|
||||
];
|
||||
|
||||
describe('/people', () => {
|
||||
let admin: LoginResponseDto;
|
||||
let visiblePerson: PersonResponseDto;
|
||||
let hiddenPerson: PersonResponseDto;
|
||||
let multipleAssetsPerson: PersonResponseDto;
|
||||
|
||||
let nameAlicePerson: PersonResponseDto;
|
||||
let nameBobPerson: PersonResponseDto;
|
||||
let nameCharliePerson: PersonResponseDto;
|
||||
let nameNullPerson: PersonResponseDto;
|
||||
|
||||
beforeAll(async () => {
|
||||
await utils.resetDatabase();
|
||||
admin = await utils.adminSetup();
|
||||
|
||||
[
|
||||
visiblePerson,
|
||||
hiddenPerson,
|
||||
multipleAssetsPerson,
|
||||
nameCharliePerson,
|
||||
nameBobPerson,
|
||||
nameAlicePerson,
|
||||
nameNullPerson,
|
||||
] = await Promise.all([
|
||||
[visiblePerson, hiddenPerson, multipleAssetsPerson] = await Promise.all([
|
||||
utils.createPerson(admin.accessToken, {
|
||||
name: 'visible_person',
|
||||
}),
|
||||
@@ -39,24 +42,10 @@ describe('/people', () => {
|
||||
utils.createPerson(admin.accessToken, {
|
||||
name: 'multiple_assets_person',
|
||||
}),
|
||||
// --- Setup for the specific sorting test ---
|
||||
utils.createPerson(admin.accessToken, {
|
||||
name: 'Charlie',
|
||||
}),
|
||||
utils.createPerson(admin.accessToken, {
|
||||
name: 'Bob',
|
||||
}),
|
||||
utils.createPerson(admin.accessToken, {
|
||||
name: 'Alice',
|
||||
}),
|
||||
utils.createPerson(admin.accessToken, {
|
||||
name: '',
|
||||
}),
|
||||
]);
|
||||
|
||||
const asset1 = await utils.createAsset(admin.accessToken);
|
||||
const asset2 = await utils.createAsset(admin.accessToken);
|
||||
const asset3 = await utils.createAsset(admin.accessToken);
|
||||
|
||||
await Promise.all([
|
||||
utils.createFace({ assetId: asset1.id, personId: visiblePerson.id }),
|
||||
@@ -64,20 +53,19 @@ describe('/people', () => {
|
||||
utils.createFace({ assetId: asset1.id, personId: multipleAssetsPerson.id }),
|
||||
utils.createFace({ assetId: asset1.id, personId: multipleAssetsPerson.id }),
|
||||
utils.createFace({ assetId: asset2.id, personId: multipleAssetsPerson.id }),
|
||||
utils.createFace({ assetId: asset3.id, personId: multipleAssetsPerson.id }),
|
||||
// Named persons
|
||||
utils.createFace({ assetId: asset1.id, personId: nameCharliePerson.id }), // 1 asset
|
||||
utils.createFace({ assetId: asset1.id, personId: nameBobPerson.id }),
|
||||
utils.createFace({ assetId: asset2.id, personId: nameBobPerson.id }), // 2 assets
|
||||
utils.createFace({ assetId: asset1.id, personId: nameAlicePerson.id }), // 1 asset
|
||||
// Null-named person
|
||||
utils.createFace({ assetId: asset1.id, personId: nameNullPerson.id }),
|
||||
utils.createFace({ assetId: asset2.id, personId: nameNullPerson.id }), // 2 assets
|
||||
]);
|
||||
});
|
||||
|
||||
describe('GET /people', () => {
|
||||
beforeEach(async () => {});
|
||||
|
||||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).get('/people');
|
||||
|
||||
expect(status).toBe(401);
|
||||
expect(body).toEqual(errorDto.unauthorized);
|
||||
});
|
||||
|
||||
it('should return all people (including hidden)', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/people')
|
||||
@@ -87,53 +75,26 @@ describe('/people', () => {
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual({
|
||||
hasNextPage: false,
|
||||
total: 7,
|
||||
total: 3,
|
||||
hidden: 1,
|
||||
people: [
|
||||
expect.objectContaining({ name: 'multiple_assets_person' }),
|
||||
expect.objectContaining({ name: 'Bob' }),
|
||||
expect.objectContaining({ name: 'Alice' }),
|
||||
expect.objectContaining({ name: 'Charlie' }),
|
||||
expect.objectContaining({ name: 'visible_person' }),
|
||||
expect.objectContaining({ name: 'hidden_person' }),
|
||||
],
|
||||
});
|
||||
});
|
||||
|
||||
it('should sort visible people by asset count (desc), then by name (asc, nulls last)', async () => {
|
||||
const { status, body } = await request(app).get('/people').set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body.hasNextPage).toBe(false);
|
||||
expect(body.total).toBe(7); // All persons
|
||||
expect(body.hidden).toBe(1); // 'hidden_person'
|
||||
|
||||
const people = body.people as PersonResponseDto[];
|
||||
|
||||
expect(people.map((p) => p.id)).toEqual([
|
||||
multipleAssetsPerson.id, // name: 'multiple_assets_person', count: 3
|
||||
nameBobPerson.id, // name: 'Bob', count: 2
|
||||
nameAlicePerson.id, // name: 'Alice', count: 1
|
||||
nameCharliePerson.id, // name: 'Charlie', count: 1
|
||||
visiblePerson.id, // name: 'visible_person', count: 1
|
||||
]);
|
||||
|
||||
expect(people.some((p) => p.id === hiddenPerson.id)).toBe(false);
|
||||
});
|
||||
|
||||
it('should return only visible people', async () => {
|
||||
const { status, body } = await request(app).get('/people').set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual({
|
||||
hasNextPage: false,
|
||||
total: 7,
|
||||
total: 3,
|
||||
hidden: 1,
|
||||
people: [
|
||||
expect.objectContaining({ name: 'multiple_assets_person' }),
|
||||
expect.objectContaining({ name: 'Bob' }),
|
||||
expect.objectContaining({ name: 'Alice' }),
|
||||
expect.objectContaining({ name: 'Charlie' }),
|
||||
expect.objectContaining({ name: 'visible_person' }),
|
||||
],
|
||||
});
|
||||
@@ -143,12 +104,12 @@ describe('/people', () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/people')
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.query({ withHidden: true, page: 5, size: 1 });
|
||||
.query({ withHidden: true, page: 2, size: 1 });
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual({
|
||||
hasNextPage: true,
|
||||
total: 7,
|
||||
total: 3,
|
||||
hidden: 1,
|
||||
people: [expect.objectContaining({ name: 'visible_person' })],
|
||||
});
|
||||
@@ -156,6 +117,13 @@ describe('/people', () => {
|
||||
});
|
||||
|
||||
describe('GET /people/:id', () => {
|
||||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).get(`/people/${uuidDto.notFound}`);
|
||||
|
||||
expect(status).toBe(401);
|
||||
expect(body).toEqual(errorDto.unauthorized);
|
||||
});
|
||||
|
||||
it('should throw error if person with id does not exist', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get(`/people/${uuidDto.notFound}`)
|
||||
@@ -176,6 +144,13 @@ describe('/people', () => {
|
||||
});
|
||||
|
||||
describe('GET /people/:id/statistics', () => {
|
||||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).get(`/people/${multipleAssetsPerson.id}/statistics`);
|
||||
|
||||
expect(status).toBe(401);
|
||||
expect(body).toEqual(errorDto.unauthorized);
|
||||
});
|
||||
|
||||
it('should throw error if person with id does not exist', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get(`/people/${uuidDto.notFound}/statistics`)
|
||||
@@ -191,11 +166,28 @@ describe('/people', () => {
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual(expect.objectContaining({ assets: 3 }));
|
||||
expect(body).toEqual(expect.objectContaining({ assets: 2 }));
|
||||
});
|
||||
});
|
||||
|
||||
describe('POST /people', () => {
|
||||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).post(`/people`);
|
||||
expect(status).toBe(401);
|
||||
expect(body).toEqual(errorDto.unauthorized);
|
||||
});
|
||||
|
||||
for (const { birthDate, response } of invalidBirthday) {
|
||||
it(`should not accept an invalid birth date [${birthDate}]`, async () => {
|
||||
const { status, body } = await request(app)
|
||||
.post(`/people`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send({ birthDate });
|
||||
expect(status).toBe(400);
|
||||
expect(body).toEqual(errorDto.badRequest(response));
|
||||
});
|
||||
}
|
||||
|
||||
it('should create a person', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.post(`/people`)
|
||||
@@ -231,6 +223,39 @@ describe('/people', () => {
|
||||
});
|
||||
|
||||
describe('PUT /people/:id', () => {
|
||||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).put(`/people/${uuidDto.notFound}`);
|
||||
expect(status).toBe(401);
|
||||
expect(body).toEqual(errorDto.unauthorized);
|
||||
});
|
||||
|
||||
for (const { key, type } of [
|
||||
{ key: 'name', type: 'string' },
|
||||
{ key: 'featureFaceAssetId', type: 'string' },
|
||||
{ key: 'isHidden', type: 'boolean value' },
|
||||
{ key: 'isFavorite', type: 'boolean value' },
|
||||
]) {
|
||||
it(`should not allow null ${key}`, async () => {
|
||||
const { status, body } = await request(app)
|
||||
.put(`/people/${visiblePerson.id}`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send({ [key]: null });
|
||||
expect(status).toBe(400);
|
||||
expect(body).toEqual(errorDto.badRequest([`${key} must be a ${type}`]));
|
||||
});
|
||||
}
|
||||
|
||||
for (const { birthDate, response } of invalidBirthday) {
|
||||
it(`should not accept an invalid birth date [${birthDate}]`, async () => {
|
||||
const { status, body } = await request(app)
|
||||
.put(`/people/${visiblePerson.id}`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send({ birthDate });
|
||||
expect(status).toBe(400);
|
||||
expect(body).toEqual(errorDto.badRequest(response));
|
||||
});
|
||||
}
|
||||
|
||||
it('should update a date of birth', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.put(`/people/${visiblePerson.id}`)
|
||||
@@ -287,6 +312,12 @@ describe('/people', () => {
|
||||
});
|
||||
|
||||
describe('POST /people/:id/merge', () => {
|
||||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).post(`/people/${uuidDto.notFound}/merge`);
|
||||
expect(status).toBe(401);
|
||||
expect(body).toEqual(errorDto.unauthorized);
|
||||
});
|
||||
|
||||
it('should not supporting merging a person into themselves', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.post(`/people/${visiblePerson.id}/merge`)
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
import {
|
||||
AssetMediaResponseDto,
|
||||
AssetVisibility,
|
||||
LoginResponseDto,
|
||||
SharedLinkType,
|
||||
TimeBucketAssetResponseDto,
|
||||
} from '@immich/sdk';
|
||||
import { AssetMediaResponseDto, AssetVisibility, LoginResponseDto, SharedLinkType, TimeBucketSize } from '@immich/sdk';
|
||||
import { DateTime } from 'luxon';
|
||||
import { createUserDto } from 'src/fixtures';
|
||||
import { errorDto } from 'src/responses';
|
||||
@@ -25,8 +19,7 @@ describe('/timeline', () => {
|
||||
let user: LoginResponseDto;
|
||||
let timeBucketUser: LoginResponseDto;
|
||||
|
||||
let user1Assets: AssetMediaResponseDto[];
|
||||
let user2Assets: AssetMediaResponseDto[];
|
||||
let userAssets: AssetMediaResponseDto[];
|
||||
|
||||
beforeAll(async () => {
|
||||
await utils.resetDatabase();
|
||||
@@ -36,7 +29,7 @@ describe('/timeline', () => {
|
||||
utils.userSetup(admin.accessToken, createUserDto.create('time-bucket')),
|
||||
]);
|
||||
|
||||
user1Assets = await Promise.all([
|
||||
userAssets = await Promise.all([
|
||||
utils.createAsset(user.accessToken),
|
||||
utils.createAsset(user.accessToken),
|
||||
utils.createAsset(user.accessToken, {
|
||||
@@ -49,20 +42,17 @@ describe('/timeline', () => {
|
||||
utils.createAsset(user.accessToken),
|
||||
]);
|
||||
|
||||
user2Assets = await Promise.all([
|
||||
await Promise.all([
|
||||
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-01-01').toISOString() }),
|
||||
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-02-10').toISOString() }),
|
||||
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-02-11').toISOString() }),
|
||||
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-02-11').toISOString() }),
|
||||
utils.createAsset(timeBucketUser.accessToken, { fileCreatedAt: new Date('1970-02-12').toISOString() }),
|
||||
]);
|
||||
|
||||
await utils.deleteAssets(timeBucketUser.accessToken, [user2Assets[4].id]);
|
||||
});
|
||||
|
||||
describe('GET /timeline/buckets', () => {
|
||||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).get('/timeline/buckets');
|
||||
const { status, body } = await request(app).get('/timeline/buckets').query({ size: TimeBucketSize.Month });
|
||||
expect(status).toBe(401);
|
||||
expect(body).toEqual(errorDto.unauthorized);
|
||||
});
|
||||
@@ -70,13 +60,14 @@ describe('/timeline', () => {
|
||||
it('should get time buckets by month', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/timeline/buckets')
|
||||
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`);
|
||||
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`)
|
||||
.query({ size: TimeBucketSize.Month });
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual(
|
||||
expect.arrayContaining([
|
||||
{ count: 3, timeBucket: '1970-02-01' },
|
||||
{ count: 1, timeBucket: '1970-01-01' },
|
||||
{ count: 3, timeBucket: '1970-02-01T00:00:00.000Z' },
|
||||
{ count: 1, timeBucket: '1970-01-01T00:00:00.000Z' },
|
||||
]),
|
||||
);
|
||||
});
|
||||
@@ -84,20 +75,36 @@ describe('/timeline', () => {
|
||||
it('should not allow access for unrelated shared links', async () => {
|
||||
const sharedLink = await utils.createSharedLink(user.accessToken, {
|
||||
type: SharedLinkType.Individual,
|
||||
assetIds: user1Assets.map(({ id }) => id),
|
||||
assetIds: userAssets.map(({ id }) => id),
|
||||
});
|
||||
|
||||
const { status, body } = await request(app).get('/timeline/buckets').query({ key: sharedLink.key });
|
||||
const { status, body } = await request(app)
|
||||
.get('/timeline/buckets')
|
||||
.query({ key: sharedLink.key, size: TimeBucketSize.Month });
|
||||
|
||||
expect(status).toBe(400);
|
||||
expect(body).toEqual(errorDto.noPermission);
|
||||
});
|
||||
|
||||
it('should get time buckets by day', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/timeline/buckets')
|
||||
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`)
|
||||
.query({ size: TimeBucketSize.Day });
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual([
|
||||
{ count: 2, timeBucket: '1970-02-11T00:00:00.000Z' },
|
||||
{ count: 1, timeBucket: '1970-02-10T00:00:00.000Z' },
|
||||
{ count: 1, timeBucket: '1970-01-01T00:00:00.000Z' },
|
||||
]);
|
||||
});
|
||||
|
||||
it('should return error if time bucket is requested with partners asset and archived', async () => {
|
||||
const req1 = await request(app)
|
||||
.get('/timeline/buckets')
|
||||
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`)
|
||||
.query({ withPartners: true, visibility: AssetVisibility.Archive });
|
||||
.query({ size: TimeBucketSize.Month, withPartners: true, visibility: AssetVisibility.Archive });
|
||||
|
||||
expect(req1.status).toBe(400);
|
||||
expect(req1.body).toEqual(errorDto.badRequest());
|
||||
@@ -105,7 +112,7 @@ describe('/timeline', () => {
|
||||
const req2 = await request(app)
|
||||
.get('/timeline/buckets')
|
||||
.set('Authorization', `Bearer ${user.accessToken}`)
|
||||
.query({ withPartners: true, visibility: undefined });
|
||||
.query({ size: TimeBucketSize.Month, withPartners: true, visibility: undefined });
|
||||
|
||||
expect(req2.status).toBe(400);
|
||||
expect(req2.body).toEqual(errorDto.badRequest());
|
||||
@@ -115,7 +122,7 @@ describe('/timeline', () => {
|
||||
const req1 = await request(app)
|
||||
.get('/timeline/buckets')
|
||||
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`)
|
||||
.query({ withPartners: true, isFavorite: true });
|
||||
.query({ size: TimeBucketSize.Month, withPartners: true, isFavorite: true });
|
||||
|
||||
expect(req1.status).toBe(400);
|
||||
expect(req1.body).toEqual(errorDto.badRequest());
|
||||
@@ -123,7 +130,7 @@ describe('/timeline', () => {
|
||||
const req2 = await request(app)
|
||||
.get('/timeline/buckets')
|
||||
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`)
|
||||
.query({ withPartners: true, isFavorite: false });
|
||||
.query({ size: TimeBucketSize.Month, withPartners: true, isFavorite: false });
|
||||
|
||||
expect(req2.status).toBe(400);
|
||||
expect(req2.body).toEqual(errorDto.badRequest());
|
||||
@@ -133,7 +140,7 @@ describe('/timeline', () => {
|
||||
const req = await request(app)
|
||||
.get('/timeline/buckets')
|
||||
.set('Authorization', `Bearer ${user.accessToken}`)
|
||||
.query({ withPartners: true, isTrashed: true });
|
||||
.query({ size: TimeBucketSize.Month, withPartners: true, isTrashed: true });
|
||||
|
||||
expect(req.status).toBe(400);
|
||||
expect(req.body).toEqual(errorDto.badRequest());
|
||||
@@ -143,6 +150,7 @@ describe('/timeline', () => {
|
||||
describe('GET /timeline/bucket', () => {
|
||||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).get('/timeline/bucket').query({
|
||||
size: TimeBucketSize.Month,
|
||||
timeBucket: '1900-01-01',
|
||||
});
|
||||
|
||||
@@ -153,28 +161,11 @@ describe('/timeline', () => {
|
||||
it('should handle 5 digit years', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/timeline/bucket')
|
||||
.query({ timeBucket: '012345-01-01' })
|
||||
.query({ size: TimeBucketSize.Month, timeBucket: '012345-01-01' })
|
||||
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`);
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual({
|
||||
city: [],
|
||||
country: [],
|
||||
duration: [],
|
||||
id: [],
|
||||
visibility: [],
|
||||
isFavorite: [],
|
||||
isImage: [],
|
||||
isTrashed: [],
|
||||
livePhotoVideoId: [],
|
||||
fileCreatedAt: [],
|
||||
localOffsetHours: [],
|
||||
ownerId: [],
|
||||
projectionType: [],
|
||||
ratio: [],
|
||||
status: [],
|
||||
thumbhash: [],
|
||||
});
|
||||
expect(body).toEqual([]);
|
||||
});
|
||||
|
||||
// TODO enable date string validation while still accepting 5 digit years
|
||||
@@ -182,7 +173,7 @@ describe('/timeline', () => {
|
||||
// const { status, body } = await request(app)
|
||||
// .get('/timeline/bucket')
|
||||
// .set('Authorization', `Bearer ${user.accessToken}`)
|
||||
// .query({ timeBucket: 'foo' });
|
||||
// .query({ size: TimeBucketSize.Month, timeBucket: 'foo' });
|
||||
|
||||
// expect(status).toBe(400);
|
||||
// expect(body).toEqual(errorDto.badRequest);
|
||||
@@ -192,39 +183,10 @@ describe('/timeline', () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/timeline/bucket')
|
||||
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`)
|
||||
.query({ timeBucket: '1970-02-10' });
|
||||
.query({ size: TimeBucketSize.Month, timeBucket: '1970-02-10' });
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual({
|
||||
city: [],
|
||||
country: [],
|
||||
duration: [],
|
||||
id: [],
|
||||
visibility: [],
|
||||
isFavorite: [],
|
||||
isImage: [],
|
||||
isTrashed: [],
|
||||
livePhotoVideoId: [],
|
||||
fileCreatedAt: [],
|
||||
localOffsetHours: [],
|
||||
ownerId: [],
|
||||
projectionType: [],
|
||||
ratio: [],
|
||||
status: [],
|
||||
thumbhash: [],
|
||||
});
|
||||
});
|
||||
|
||||
it('should return time bucket in trash', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/timeline/bucket')
|
||||
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`)
|
||||
.query({ timeBucket: '1970-02-01', isTrashed: true });
|
||||
|
||||
expect(status).toBe(200);
|
||||
|
||||
const timeBucket: TimeBucketAssetResponseDto = body;
|
||||
expect(timeBucket.isTrashed).toEqual([true]);
|
||||
expect(body).toEqual([]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -118,7 +118,7 @@ describe('/admin/users', () => {
|
||||
});
|
||||
}
|
||||
|
||||
it('should accept `isAdmin`', async () => {
|
||||
it('should ignore `isAdmin`', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.post(`/admin/users`)
|
||||
.send({
|
||||
@@ -130,7 +130,7 @@ describe('/admin/users', () => {
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
expect(body).toMatchObject({
|
||||
email: 'user5@immich.cloud',
|
||||
isAdmin: true,
|
||||
isAdmin: false,
|
||||
shouldChangePassword: true,
|
||||
});
|
||||
expect(status).toBe(201);
|
||||
@@ -163,15 +163,14 @@ describe('/admin/users', () => {
|
||||
});
|
||||
}
|
||||
|
||||
it('should allow a non-admin to become an admin', async () => {
|
||||
const user = await utils.userSetup(admin.accessToken, createUserDto.create('admin2'));
|
||||
it('should not allow a non-admin to become an admin', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.put(`/admin/users/${user.userId}`)
|
||||
.put(`/admin/users/${nonAdmin.userId}`)
|
||||
.send({ isAdmin: true })
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body).toMatchObject({ isAdmin: true });
|
||||
expect(body).toMatchObject({ isAdmin: false });
|
||||
});
|
||||
|
||||
it('ignores updates to profileImagePath', async () => {
|
||||
|
||||
@@ -7,44 +7,6 @@ describe(`immich-admin`, () => {
|
||||
await utils.adminSetup();
|
||||
});
|
||||
|
||||
describe('revoke-admin', () => {
|
||||
it('should revoke admin privileges from a user', async () => {
|
||||
const { child, promise } = immichAdmin(['revoke-admin']);
|
||||
|
||||
let data = '';
|
||||
child.stdout.on('data', (chunk) => {
|
||||
data += chunk;
|
||||
if (data.includes('Please enter the user email:')) {
|
||||
child.stdin.end('admin@immich.cloud\n');
|
||||
}
|
||||
});
|
||||
|
||||
const { stdout, exitCode } = await promise;
|
||||
expect(exitCode).toBe(0);
|
||||
|
||||
expect(stdout).toContain('Admin access has been revoked from');
|
||||
});
|
||||
});
|
||||
|
||||
describe('grant-admin', () => {
|
||||
it('should grant admin privileges to a user', async () => {
|
||||
const { child, promise } = immichAdmin(['grant-admin']);
|
||||
|
||||
let data = '';
|
||||
child.stdout.on('data', (chunk) => {
|
||||
data += chunk;
|
||||
if (data.includes('Please enter the user email:')) {
|
||||
child.stdin.end('admin@immich.cloud\n');
|
||||
}
|
||||
});
|
||||
|
||||
const { stdout, exitCode } = await promise;
|
||||
expect(exitCode).toBe(0);
|
||||
|
||||
expect(stdout).toContain('Admin access has been granted to');
|
||||
});
|
||||
});
|
||||
|
||||
describe('list-users', () => {
|
||||
it('should list the admin user', async () => {
|
||||
const { stdout, exitCode } = await immichAdmin(['list-users']).promise;
|
||||
|
||||
@@ -103,7 +103,6 @@ export const loginResponseDto = {
|
||||
accessToken: expect.any(String),
|
||||
name: 'Immich Admin',
|
||||
isAdmin: true,
|
||||
isOnboarded: false,
|
||||
profileImagePath: '',
|
||||
shouldChangePassword: true,
|
||||
userEmail: 'admin@immich.cloud',
|
||||
|
||||
@@ -216,11 +216,7 @@ export const utils = {
|
||||
websocket
|
||||
.on('connect', () => resolve(websocket))
|
||||
.on('on_upload_success', (data: AssetResponseDto) => onEvent({ event: 'assetUpload', id: data.id }))
|
||||
.on('on_asset_update', (assetId: string[]) => {
|
||||
for (const id of assetId) {
|
||||
onEvent({ event: 'assetUpdate', id });
|
||||
}
|
||||
})
|
||||
.on('on_asset_update', (data: AssetResponseDto) => onEvent({ event: 'assetUpdate', id: data.id }))
|
||||
.on('on_asset_hidden', (assetId: string) => onEvent({ event: 'assetHidden', id: assetId }))
|
||||
.on('on_asset_delete', (assetId: string) => onEvent({ event: 'assetDelete', id: assetId }))
|
||||
.on('on_user_delete', (userId: string) => onEvent({ event: 'userDelete', id: userId }))
|
||||
|
||||
@@ -33,9 +33,7 @@ test.describe('Registration', () => {
|
||||
// onboarding
|
||||
await expect(page).toHaveURL('/auth/onboarding');
|
||||
await page.getByRole('button', { name: 'Theme' }).click();
|
||||
await page.getByRole('button', { name: 'Language' }).click();
|
||||
await page.getByRole('button', { name: 'Server Privacy' }).click();
|
||||
await page.getByRole('button', { name: 'User Privacy' }).click();
|
||||
await page.getByRole('button', { name: 'Privacy' }).click();
|
||||
await page.getByRole('button', { name: 'Storage Template' }).click();
|
||||
await page.getByRole('button', { name: 'Done' }).click();
|
||||
|
||||
@@ -79,13 +77,6 @@ test.describe('Registration', () => {
|
||||
await page.getByLabel('Password').fill('new-password');
|
||||
await page.getByRole('button', { name: 'Login' }).click();
|
||||
|
||||
// onboarding
|
||||
await expect(page).toHaveURL('/auth/onboarding');
|
||||
await page.getByRole('button', { name: 'Theme' }).click();
|
||||
await page.getByRole('button', { name: 'Language' }).click();
|
||||
await page.getByRole('button', { name: 'User Privacy' }).click();
|
||||
await page.getByRole('button', { name: 'Done' }).click();
|
||||
|
||||
// success
|
||||
await expect(page).toHaveURL(/\/photos/);
|
||||
});
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
import { getUserAdmin } from '@immich/sdk';
|
||||
import { expect, test } from '@playwright/test';
|
||||
import { asBearerAuth, utils } from 'src/utils';
|
||||
|
||||
test.describe('User Administration', () => {
|
||||
test.beforeAll(() => {
|
||||
utils.initSdk();
|
||||
});
|
||||
|
||||
test.beforeEach(async () => {
|
||||
await utils.resetDatabase();
|
||||
});
|
||||
|
||||
test('validate admin/users link', async ({ context, page }) => {
|
||||
const admin = await utils.adminSetup();
|
||||
await utils.setAuthCookies(context, admin.accessToken);
|
||||
|
||||
// Navigate to user management page and verify title and header
|
||||
await page.goto(`/admin/users`);
|
||||
await expect(page).toHaveTitle(/User Management/);
|
||||
await expect(page.getByText('User Management')).toBeVisible();
|
||||
});
|
||||
|
||||
test('create user', async ({ context, page }) => {
|
||||
const admin = await utils.adminSetup();
|
||||
await utils.setAuthCookies(context, admin.accessToken);
|
||||
|
||||
// Create a new user
|
||||
await page.goto('/admin/users');
|
||||
await page.getByRole('button', { name: 'Create user' }).click();
|
||||
await page.getByLabel('Email').fill('user@immich.cloud');
|
||||
await page.getByLabel('Password', { exact: true }).fill('password');
|
||||
await page.getByLabel('Confirm Password').fill('password');
|
||||
await page.getByLabel('Name').fill('Immich User');
|
||||
await page.getByRole('button', { name: 'Create', exact: true }).click();
|
||||
|
||||
// Verify the user exists in the user list
|
||||
await page.getByRole('row', { name: 'user@immich.cloud' });
|
||||
});
|
||||
|
||||
test('promote to admin', async ({ context, page }) => {
|
||||
const admin = await utils.adminSetup();
|
||||
await utils.setAuthCookies(context, admin.accessToken);
|
||||
|
||||
const user = await utils.userSetup(admin.accessToken, {
|
||||
name: 'Admin 2',
|
||||
email: 'admin2@immich.cloud',
|
||||
password: 'password',
|
||||
});
|
||||
|
||||
expect(user.isAdmin).toBe(false);
|
||||
|
||||
await page.goto(`/admin/users/${user.userId}`);
|
||||
|
||||
await page.getByRole('button', { name: 'Edit user' }).click();
|
||||
await expect(page.getByLabel('Admin User')).not.toBeChecked();
|
||||
await page.getByText('Admin User').click();
|
||||
await expect(page.getByLabel('Admin User')).toBeChecked();
|
||||
await page.getByRole('button', { name: 'Confirm' }).click();
|
||||
|
||||
const updated = await getUserAdmin({ id: user.userId }, { headers: asBearerAuth(admin.accessToken) });
|
||||
expect(updated.isAdmin).toBe(true);
|
||||
});
|
||||
|
||||
test('revoke admin access', async ({ context, page }) => {
|
||||
const admin = await utils.adminSetup();
|
||||
await utils.setAuthCookies(context, admin.accessToken);
|
||||
|
||||
const user = await utils.userSetup(admin.accessToken, {
|
||||
name: 'Admin 2',
|
||||
email: 'admin2@immich.cloud',
|
||||
password: 'password',
|
||||
isAdmin: true,
|
||||
});
|
||||
|
||||
expect(user.isAdmin).toBe(true);
|
||||
|
||||
await page.goto(`/admin/users/${user.userId}`);
|
||||
|
||||
await page.getByRole('button', { name: 'Edit user' }).click();
|
||||
await expect(page.getByLabel('Admin User')).toBeChecked();
|
||||
await page.getByText('Admin User').click();
|
||||
await expect(page.getByLabel('Admin User')).not.toBeChecked();
|
||||
await page.getByRole('button', { name: 'Confirm' }).click();
|
||||
|
||||
const updated = await getUserAdmin({ id: user.userId }, { headers: asBearerAuth(admin.accessToken) });
|
||||
expect(updated.isAdmin).toBe(false);
|
||||
});
|
||||
});
|
||||
@@ -40,6 +40,7 @@
|
||||
"backup_keep_last_amount": "Aantal vorige rugsteune om te hou",
|
||||
"backup_settings": "Rugsteun instellings",
|
||||
"backup_settings_description": "Bestuur databasis rugsteun instellings",
|
||||
"check_all": "Kies Alles",
|
||||
"cleared_jobs": "Poste gevee vir: {job}",
|
||||
"config_set_by_file": "Config word tans deur 'n konfigurasielêer gestel",
|
||||
"confirm_delete_library": "Is jy seker jy wil {library}-biblioteek uitvee?",
|
||||
@@ -54,10 +55,12 @@
|
||||
"disable_login": "Deaktiveer aanmelding",
|
||||
"duplicate_detection_job_description": "Begin masjienleer op bates om soortgelyke beelde op te spoor. Maak staat op Smart Search",
|
||||
"exclusion_pattern_description": "Met uitsluitingspatrone kan jy lêers en vouers ignoreer wanneer jy jou biblioteek skandeer. Dit is nuttig as jy vouers het wat lêers bevat wat jy nie wil invoer nie, soos RAW-lêers.",
|
||||
"external_library_created_at": "Eksterne biblioteek (geskep op {date})",
|
||||
"external_library_management": "Eksterne Biblioteekbestuur",
|
||||
"face_detection": "Gesig deteksie",
|
||||
"failed_job_command": "Opdrag {command} het misluk vir werk: {job}",
|
||||
"force_delete_user_warning": "WAARSKUWING: Dit sal onmiddellik die gebruiker en alle bates verwyder. Dit kan nie ontdoen word nie en die lêers kan nie herstel word nie.",
|
||||
"forcing_refresh_library_files": "Forseer herlaai van alle biblioteeklêers",
|
||||
"image_format": "Formaat",
|
||||
"image_format_description": "WebP produseer kleiner lêers as JPEG, maar is stadiger om te enkodeer.",
|
||||
"image_prefer_embedded_preview": "Verkies ingebedde voorskou",
|
||||
|
||||
229
i18n/ar.json
229
i18n/ar.json
@@ -14,6 +14,7 @@
|
||||
"add_a_location": "إضافة موقع",
|
||||
"add_a_name": "إضافة إسم",
|
||||
"add_a_title": "إضافة عنوان",
|
||||
"add_endpoint": "Add endpoint",
|
||||
"add_exclusion_pattern": "إضافة نمط إستثناء",
|
||||
"add_import_path": "إضافة مسار الإستيراد",
|
||||
"add_location": "إضافة موقع",
|
||||
@@ -43,6 +44,8 @@
|
||||
"backup_keep_last_amount": "مقدار النسخ الاحتياطية السابقة للاحتفاظ بها",
|
||||
"backup_settings": "إعدادات النسخ الاحتياطي",
|
||||
"backup_settings_description": "إدارة إعدادات النسخ الاحتياطي لقاعدة البيانات",
|
||||
"check_all": "اختر الكل",
|
||||
"cleanup": "تنظيف",
|
||||
"cleared_jobs": "تم إخلاء مهام: {job}",
|
||||
"config_set_by_file": "الإعدادات حاليًا معينة عن طريق ملف الاعدادات",
|
||||
"confirm_delete_library": "هل أنت متأكد أنك تريد حذف مكتبة {library}؟",
|
||||
@@ -57,12 +60,14 @@
|
||||
"disable_login": "تعطيل تسجيل الدخول",
|
||||
"duplicate_detection_job_description": "بدء التعلم الآلي على المحتوى للعثور على الصور المتشابهة. يعتمد على البحث الذكي",
|
||||
"exclusion_pattern_description": "تتيح لك أنماط الاستبعاد تجاهل الملفات والمجلدات عند فحص مكتبتك. يعد هذا مفيدًا إذا كان لديك مجلدات تحتوي على ملفات لا تريد استيرادها، مثل ملفات RAW.",
|
||||
"external_library_created_at": "مكتبة خارجية (أُنشئت في {date})",
|
||||
"external_library_management": "إدارة المكتبة الخارجية",
|
||||
"face_detection": "إكتشاف الوجوه",
|
||||
"face_detection_description": "اكتشف الوجوه في الأصول باستخدام التعلم الآلي. بالنسبة لمقاطع الفيديو، يتم اعتبار الصورة المصغرة فقط. \"تحديث\" (إعادة) معالجة جميع الأصول. \"إعادة تعيين\" تمسح أيضًا جميع بيانات الوجوه الحالية. \"مفقود\" يضع الأصول التي لم تتم معالجتها بعد في قائمة الانتظار. سيتم وضع الوجوه المكتشفة في قائمة الانتظار للتعرف على الوجه بعد اكتمال اكتشاف الوجه، وتجميعها في أشخاص موجودين أو جدد.",
|
||||
"facial_recognition_job_description": "تجميع الوجوه المكتشفة كأشخاص. يتم تنفيذ هذه الخطوة بعد اكتمال اكتشاف الوجه. خيار \"إعادة التعيين\" يعيد تجميع جميع الوجوه. خيار \"المفقود\" يضع في قائمة الانتظار الوجوه التي لم يتم تعيين شخص لها.",
|
||||
"failed_job_command": "فشل الأمر {command} للمهمة: {job}",
|
||||
"force_delete_user_warning": "تحذير: سيؤدي ذلك إلى إزالة المستخدم وجميع محتوياته على الفور. لا يمكن التراجع عن هذا الإجراء ولا يمكن استرداد الملفات.",
|
||||
"forcing_refresh_library_files": "إجبار التحديث لجميع ملفات المكتبة",
|
||||
"image_format": "التنسيق",
|
||||
"image_format_description": "يُنتج WebP ملفات أصغر حجمًا من ملفات JPEG، ولكنه أبطأ في عملية الترميز.",
|
||||
"image_prefer_embedded_preview": "تفضيل المعاينة المدمجة",
|
||||
@@ -185,7 +190,7 @@
|
||||
"oauth_enable_description": "تسجيل الدخول باستخدام OAuth",
|
||||
"oauth_mobile_redirect_uri": "عنوان URI لإعادة التوجيه على الهاتف",
|
||||
"oauth_mobile_redirect_uri_override": "تجاوز عنوان URI لإعادة التوجيه على الهاتف",
|
||||
"oauth_mobile_redirect_uri_override_description": "قم بتفعيله عندما لا يسمح موفر OAuth بمعرف URI للجوال، مثل ''{callback}''",
|
||||
"oauth_mobile_redirect_uri_override_description": "قم بتفعيله عندما لا يسمح موفر OAuth بمعرف URI للجوال، مثل '{callback}'",
|
||||
"oauth_settings": "OAuth",
|
||||
"oauth_settings_description": "إدارة إعدادات تسجيل الدخول OAuth",
|
||||
"oauth_settings_more_details": "لمزيد من التفاصيل حول هذه الميزة، يرجى الرجوع إلى <link>الوثائق</link>.",
|
||||
@@ -195,6 +200,8 @@
|
||||
"oauth_storage_quota_claim_description": "قم تلقائيًا بتعيين حصة التخزين للمستخدم على قيمة هذه المطالبة.",
|
||||
"oauth_storage_quota_default": "حصة التخزين الافتراضية (جيجابايت)",
|
||||
"oauth_storage_quota_default_description": "الحصة بالجيجابايت التي سيتم استخدامها عندما لا يتم توفير مطالبة (أدخل 0 لحصة غير محدودة).",
|
||||
"offline_paths": "مسارات غير متصلة",
|
||||
"offline_paths_description": "قد تكون هذه النتائج ناتجة عن حذف يدوي لملفات لا تتبع لمكتبة خارجية.",
|
||||
"password_enable_description": "تسجيل الدخول باستخدام البريد الكتروني وكلمة المرور",
|
||||
"password_settings": "تسجيل الدخول بكلمة المرور",
|
||||
"password_settings_description": "إدارة تسجيل الدخول بكلمة المرور",
|
||||
@@ -204,6 +211,9 @@
|
||||
"refreshing_all_libraries": "تحديث كافة المكتبات",
|
||||
"registration": "تسجيل المدير",
|
||||
"registration_description": "بما أنك أول مستخدم في النظام، سيتم تعيينك كمسؤول وستكون مسؤولًا عن المهام الإدارية، وسيتم إنشاء مستخدمين إضافيين بواسطتك.",
|
||||
"repair_all": "إصلاح الكل",
|
||||
"repair_matched_items": "تمت مطابقة {count, plural, one {# عنصر} other {# عناصر}}",
|
||||
"repaired_items": "تم إصلاح {count, plural, one {# عنصر} other {# عناصر}}",
|
||||
"require_password_change_on_login": "الطلب من المستخدم تغيير كلمة المرور عند تسجيل الدخول الأول",
|
||||
"reset_settings_to_default": "إعادة ضبط الإعدادات إلى الوضع الافتراضي",
|
||||
"reset_settings_to_recent_saved": "إعادة ضبط الإعدادات إلى الإعدادات المحفوظة مؤخرًا",
|
||||
@@ -244,6 +254,7 @@
|
||||
"template_email_invite_album": "قالب دعوة الألبوم",
|
||||
"template_email_preview": "عرض مسبق",
|
||||
"template_email_settings": "نماذج البريد الالكتروني",
|
||||
"template_email_settings_description": "إدارة قوالب إشعارات البريد الإلكتروني المخصصة",
|
||||
"template_email_update_album": "تحديث قالب الألبوم",
|
||||
"template_email_welcome": "قالب البريد الإلكتروني الترحيبي",
|
||||
"template_settings": "قوالب الإشعارات",
|
||||
@@ -252,6 +263,7 @@
|
||||
"theme_custom_css_settings_description": "أوراق الأنماط المتتالية تسمح بتخصيص تصميم Immich.",
|
||||
"theme_settings": "إعدادات السمة",
|
||||
"theme_settings_description": "إدارة تخصيص واجهة ويب Immich",
|
||||
"these_files_matched_by_checksum": "تتم مطابقة هذه الملفات من خلال المجاميع الاختبارية الخاصة بهم",
|
||||
"thumbnail_generation_job": "إنشاء الصور المصغرة",
|
||||
"thumbnail_generation_job_description": "إنشاء صور مصغرة كبيرة وصغيرة وغير واضحة لكل أصل، بالإضافة إلى صور مصغرة لكل شخص",
|
||||
"transcoding_acceleration_api": "واجهة برمجة التطبيقات للتسريع",
|
||||
@@ -282,6 +294,7 @@
|
||||
"transcoding_hardware_acceleration_description": "تجريبي؛ أسرع بكثير، ولكن ستكون جودتها أقل عند نفس معدل البت",
|
||||
"transcoding_hardware_decoding": "فك تشفير الأجهزة",
|
||||
"transcoding_hardware_decoding_setting_description": "ينطبق ذلك فقط على NVENC، QSV، و RKMPP. يمكن التسريع من طرف لطرف بدلاً من تسريع الترميز فقط. قد لا يعمل على جميع مقاطع الفيديو.",
|
||||
"transcoding_hevc_codec": "كود HEVC",
|
||||
"transcoding_max_b_frames": "أقصى عدد من الإطارات B",
|
||||
"transcoding_max_b_frames_description": "القيم الأعلى تعزز كفاءة الضغط، ولكنها تبطئ عملية الترميز. قد لا تكون متوافقة مع التسريع العتادي على الأجهزة القديمة. قيمة 0 تعطل إطارات B، بينما تضبط القيمة -1 هذا القيمة تلقائيًا.",
|
||||
"transcoding_max_bitrate": "الحد الأقصى لمعدل البت",
|
||||
@@ -319,6 +332,8 @@
|
||||
"trash_number_of_days_description": "عدد أيام الاحتفاظ بالمحتويات في سلة المهملات قبل حذفها نهائيًا",
|
||||
"trash_settings": "إعدادات سلة المهملات",
|
||||
"trash_settings_description": "إدارة إعدادات سلة المهملات",
|
||||
"untracked_files": "الملفات التي لم يتم تعقبها",
|
||||
"untracked_files_description": "لا يتم تعقب هذه الملفات بواسطة التطبيق. يمكن أن تكون نتيجة لعمليات نقل فاشلة، أو عمليات تحميل متقطعة، أو يتم تركها في الخلف بسبب خطأ ما",
|
||||
"user_cleanup_job": "تنظيف المستخدم",
|
||||
"user_delete_delay": "سيتم جدولة حساب <b>{user}</b> ومحتوياته للحذف النهائي في غضون {delay, plural, one {# يوم} other {# أيام}}.",
|
||||
"user_delete_delay_settings": "فترة التأخير قبل الحذف",
|
||||
@@ -344,8 +359,12 @@
|
||||
"admin_password": "كلمة سر المشرف",
|
||||
"administration": "الإدارة",
|
||||
"advanced": "متقدم",
|
||||
"advanced_settings_log_level_title": "Log level: {}",
|
||||
"advanced_settings_prefer_remote_subtitle": "تكون بعض الأجهزة بطيئة للغاية في تحميل الصور المصغرة من الأصول الموجودة على الجهاز. قم بتنشيط هذا الإعداد لتحميل الصور البعيدة بدلاً من ذلك.",
|
||||
"advanced_settings_prefer_remote_title": "تفضل الصور البعيدة",
|
||||
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
|
||||
"advanced_settings_proxy_headers_title": "Proxy Headers",
|
||||
"advanced_settings_self_signed_ssl_subtitle": "Skips SSL certificate verification for the server endpoint. Required for self-signed certificates.",
|
||||
"advanced_settings_self_signed_ssl_title": "السماح بشهادات SSL الموقعة ذاتيًا",
|
||||
"advanced_settings_tile_subtitle": "إعدادات المستخدم المتقدمة",
|
||||
"advanced_settings_troubleshooting_subtitle": "تمكين الميزات الإضافية لاستكشاف الأخطاء وإصلاحها",
|
||||
@@ -368,6 +387,10 @@
|
||||
"album_remove_user": "هل ترغب في إزالة المستخدم؟",
|
||||
"album_remove_user_confirmation": "هل أنت متأكد أنك تريد إزالة {user}؟",
|
||||
"album_share_no_users": "يبدو أنك قمت بمشاركة هذا الألبوم مع جميع المستخدمين أو ليس لديك أي مستخدم للمشاركة معه.",
|
||||
"album_thumbnail_card_item": "عنصر واحد",
|
||||
"album_thumbnail_card_items": "{} items",
|
||||
"album_thumbnail_card_shared": " · . مشترك",
|
||||
"album_thumbnail_shared_by": "Shared by {}",
|
||||
"album_updated": "تم تحديث الألبوم",
|
||||
"album_updated_setting_description": "تلقي إشعارًا عبر البريد الإلكتروني عندما يحتوي الألبوم المشترك على محتويات جديدة",
|
||||
"album_user_left": "تم ترك {album}",
|
||||
@@ -405,8 +428,10 @@
|
||||
"archive": "الأرشيف",
|
||||
"archive_or_unarchive_photo": "أرشفة الصورة أو إلغاء أرشفتها",
|
||||
"archive_page_no_archived_assets": "لم يتم العثور على الأصول المؤرشفة",
|
||||
"archive_page_title": "Archive ({})",
|
||||
"archive_size": "حجم الأرشيف",
|
||||
"archive_size_description": "تكوين حجم الأرشيف للتنزيلات (بالجيجابايت)",
|
||||
"archived": "Archived",
|
||||
"archived_count": "{count, plural, other {الأرشيف #}}",
|
||||
"are_these_the_same_person": "هل هؤلاء هم نفس الشخص؟",
|
||||
"are_you_sure_to_do_this": "هل انت متأكد من أنك تريد أن تفعل هذا؟",
|
||||
@@ -428,26 +453,39 @@
|
||||
"asset_list_settings_title": "شبكة الصور",
|
||||
"asset_offline": "المحتوى غير اتصال",
|
||||
"asset_offline_description": "لم يعد هذا الأصل الخارجي موجودًا على القرص. يرجى الاتصال بمسؤول Immich للحصول على المساعدة.",
|
||||
"asset_restored_successfully": "Asset restored successfully",
|
||||
"asset_skipped": "تم تخطيه",
|
||||
"asset_skipped_in_trash": "في سلة المهملات",
|
||||
"asset_uploaded": "تم الرفع",
|
||||
"asset_uploading": "جارٍ الرفع…",
|
||||
"asset_viewer_settings_subtitle": "Manage your gallery viewer settings",
|
||||
"asset_viewer_settings_title": "عارض الأصول",
|
||||
"assets": "المحتويات",
|
||||
"assets_added_count": "تمت إضافة {count, plural, one {# محتوى} other {# محتويات}}",
|
||||
"assets_added_to_album_count": "تمت إضافة {count, plural, one {# الأصل} other {# الأصول}} إلى الألبوم",
|
||||
"assets_added_to_name_count": "تم إضافة {count, plural, one {# محتوى} other {# محتويات }} إلى {hasName, select, true {<b>{name}</b>} other {ألبوم جديد}}",
|
||||
"assets_count": "{count, plural, one {# محتوى} other {# محتويات}}",
|
||||
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
||||
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
||||
"assets_moved_to_trash_count": "تم نقل {count, plural, one {# محتوى} other {# محتويات}} إلى سلة المهملات",
|
||||
"assets_permanently_deleted_count": "تم حذف {count, plural, one {# هذا المحتوى} other {# هذه المحتويات}} بشكل دائم",
|
||||
"assets_removed_count": "تمت إزالة {count, plural, one {# محتوى} other {# محتويات}}",
|
||||
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
||||
"assets_restore_confirmation": "هل أنت متأكد من أنك تريد استعادة جميع الأصول المحذوفة؟ لا يمكنك التراجع عن هذا الإجراء! لاحظ أنه لا يمكن استعادة أي أصول غير متصلة بهذه الطريقة.",
|
||||
"assets_restored_count": "تمت استعادة {count, plural, one {# محتوى} other {# محتويات}}",
|
||||
"assets_restored_successfully": "{} asset(s) restored successfully",
|
||||
"assets_trashed": "{} asset(s) trashed",
|
||||
"assets_trashed_count": "تم إرسال {count, plural, one {# محتوى} other {# محتويات}} إلى سلة المهملات",
|
||||
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {هذا المحتوى} other {هذه المحتويات}} في الألبوم بالفعل",
|
||||
"authorized_devices": "الأجهزه المخولة",
|
||||
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
|
||||
"automatic_endpoint_switching_title": "Automatic URL switching",
|
||||
"back": "خلف",
|
||||
"back_close_deselect": "الرجوع أو الإغلاق أو إلغاء التحديد",
|
||||
"background_location_permission": "Background location permission",
|
||||
"background_location_permission_content": "In order to switch networks when running in the background, Immich must *always* have precise location access so the app can read the Wi-Fi network's name",
|
||||
"backup_album_selection_page_albums_device": "Albums on device ({})",
|
||||
"backup_album_selection_page_albums_tap": "انقر للتضمين، وانقر نقرًا مزدوجًا للاستثناء",
|
||||
"backup_album_selection_page_assets_scatter": "يمكن أن تنتشر الأصول عبر ألبومات متعددة. وبالتالي، يمكن تضمين الألبومات أو استبعادها أثناء عملية النسخ الاحتياطي.",
|
||||
"backup_album_selection_page_select_albums": "حدد الألبومات",
|
||||
@@ -456,9 +494,11 @@
|
||||
"backup_all": "الجميع",
|
||||
"backup_background_service_backup_failed_message": "فشل في النسخ الاحتياطي للأصول. جارٍ إعادة المحاولة...",
|
||||
"backup_background_service_connection_failed_message": "فشل في الاتصال بالخادم. جارٍ إعادة المحاولة...",
|
||||
"backup_background_service_current_upload_notification": "Uploading {}",
|
||||
"backup_background_service_default_notification": "التحقق من الأصول الجديدة ...",
|
||||
"backup_background_service_error_title": "خطأ في النسخ الاحتياطي",
|
||||
"backup_background_service_in_progress_notification": "النسخ الاحتياطي للأصول الخاصة بك...",
|
||||
"backup_background_service_upload_failure_notification": "Failed to upload {}",
|
||||
"backup_controller_page_albums": "ألبومات احتياطية",
|
||||
"backup_controller_page_background_app_refresh_disabled_content": "قم بتمكين تحديث تطبيق الخلفية في الإعدادات > عام > تحديث تطبيق الخلفية لاستخدام النسخ الاحتياطي في الخلفية.",
|
||||
"backup_controller_page_background_app_refresh_disabled_title": "تم تعطيل تحديث التطبيق في الخلفية",
|
||||
@@ -469,6 +509,7 @@
|
||||
"backup_controller_page_background_battery_info_title": "تحسين البطارية",
|
||||
"backup_controller_page_background_charging": "فقط أثناء الشحن",
|
||||
"backup_controller_page_background_configure_error": "فشل في تكوين خدمة الخلفية",
|
||||
"backup_controller_page_background_delay": "Delay new assets backup: {}",
|
||||
"backup_controller_page_background_description": "قم بتشغيل خدمة الخلفية لإجراء نسخ احتياطي لأي أصول جديدة تلقائيًا دون الحاجة إلى فتح التطبيق",
|
||||
"backup_controller_page_background_is_off": "تم إيقاف النسخ الاحتياطي التلقائي للخلفية",
|
||||
"backup_controller_page_background_is_on": "النسخ الاحتياطي التلقائي للخلفية قيد التشغيل",
|
||||
@@ -478,8 +519,12 @@
|
||||
"backup_controller_page_backup": "دعم",
|
||||
"backup_controller_page_backup_selected": "المحدد: ",
|
||||
"backup_controller_page_backup_sub": "النسخ الاحتياطي للصور ومقاطع الفيديو",
|
||||
"backup_controller_page_created": "Created on: {}",
|
||||
"backup_controller_page_desc_backup": "قم بتشغيل النسخ الاحتياطي الأمامي لتحميل الأصول الجديدة تلقائيًا إلى الخادم عند فتح التطبيق.",
|
||||
"backup_controller_page_excluded": "مستبعد: ",
|
||||
"backup_controller_page_failed": "Failed ({})",
|
||||
"backup_controller_page_filename": "File name: {} [{}]",
|
||||
"backup_controller_page_id": "ID: {}",
|
||||
"backup_controller_page_info": "معلومات النسخ الاحتياطي",
|
||||
"backup_controller_page_none_selected": "لم يتم التحديد",
|
||||
"backup_controller_page_remainder": "بقية",
|
||||
@@ -488,6 +533,7 @@
|
||||
"backup_controller_page_start_backup": "بدء النسخ الاحتياطي",
|
||||
"backup_controller_page_status_off": "النسخة الاحتياطية التلقائية غير فعالة",
|
||||
"backup_controller_page_status_on": "النسخة الاحتياطية التلقائية فعالة",
|
||||
"backup_controller_page_storage_format": "{} of {} used",
|
||||
"backup_controller_page_to_backup": "الألبومات الاحتياطية",
|
||||
"backup_controller_page_total_sub": "جميع الصور ومقاطع الفيديو الفريدة من ألبومات مختارة",
|
||||
"backup_controller_page_turn_off": "قم بإيقاف تشغيل النسخ الاحتياطي المقدمة",
|
||||
@@ -500,6 +546,7 @@
|
||||
"backup_manual_success": "نجاح",
|
||||
"backup_manual_title": "حالة التحميل",
|
||||
"backup_options_page_title": "خيارات النسخ الاحتياطي",
|
||||
"backup_setting_subtitle": "Manage background and foreground upload settings",
|
||||
"backward": "الى الوراء",
|
||||
"birthdate_saved": "تم حفظ تاريخ الميلاد بنجاح",
|
||||
"birthdate_set_description": "يتم استخدام تاريخ الميلاد لحساب عمر هذا الشخص وقت التقاط الصورة.",
|
||||
@@ -511,16 +558,21 @@
|
||||
"bulk_keep_duplicates_confirmation": "هل أنت متأكد من أنك تريد الاحتفاظ بـ {count, plural, one {# محتوى مكرر} other {# محتويات مكررة}}؟ سيؤدي هذا إلى حل جميع مجموعات النسخ المكررة دون حذف أي شيء.",
|
||||
"bulk_trash_duplicates_confirmation": "هل أنت متأكد من أنك تريد إرسال {count, plural, one {# محتوى مكرر} other {# محتويات مكررة}} إلى سلة المهملات ؟ سيحتفظ هذا بأكبر محتوى من كل مجموعة ويرسل جميع النسخ المكررة الأخرى إلى سلة المهملات.",
|
||||
"buy": "شراء immich",
|
||||
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
|
||||
"cache_settings_clear_cache_button": "مسح ذاكرة التخزين المؤقت",
|
||||
"cache_settings_clear_cache_button_title": "يقوم بمسح ذاكرة التخزين المؤقت للتطبيق.سيؤثر هذا بشكل كبير على أداء التطبيق حتى إعادة بناء ذاكرة التخزين المؤقت.",
|
||||
"cache_settings_duplicated_assets_clear_button": "واضح",
|
||||
"cache_settings_duplicated_assets_subtitle": "الصور ومقاطع الفيديو اللتي تم تجاهلها المدرجة في التطبيق",
|
||||
"cache_settings_duplicated_assets_title": "Duplicated Assets ({})",
|
||||
"cache_settings_image_cache_size": "Image cache size ({} assets)",
|
||||
"cache_settings_statistics_album": "مكتبه الصور المصغره",
|
||||
"cache_settings_statistics_assets": "{} assets ({})",
|
||||
"cache_settings_statistics_full": "صور كاملة",
|
||||
"cache_settings_statistics_shared": "صورة ألبوم مشتركة",
|
||||
"cache_settings_statistics_thumbnail": "الصورة المصغرة",
|
||||
"cache_settings_statistics_title": "استخدام ذاكرة التخزين المؤقت",
|
||||
"cache_settings_subtitle": "تحكم في سلوك التخزين المؤقت لتطبيق الجوال.",
|
||||
"cache_settings_thumbnail_size": "Thumbnail cache size ({} assets)",
|
||||
"cache_settings_tile_subtitle": "التحكم في سلوك التخزين المحلي",
|
||||
"cache_settings_tile_title": "التخزين المحلي",
|
||||
"cache_settings_title": "إعدادات التخزين المؤقت",
|
||||
@@ -529,10 +581,12 @@
|
||||
"camera_model": "طراز الكاميرا",
|
||||
"cancel": "إلغاء",
|
||||
"cancel_search": "الغي البحث",
|
||||
"canceled": "Canceled",
|
||||
"cannot_merge_people": "لا يمكن دمج الأشخاص",
|
||||
"cannot_undo_this_action": "لا يمكنك التراجع عن هذا الإجراء!",
|
||||
"cannot_update_the_description": "لا يمكن تحديث الوصف",
|
||||
"change_date": "غيّر التاريخ",
|
||||
"change_display_order": "Change display order",
|
||||
"change_expiration_time": "تغيير وقت انتهاء الصلاحية",
|
||||
"change_location": "غيّر الموقع",
|
||||
"change_name": "تغيير الإسم",
|
||||
@@ -544,9 +598,12 @@
|
||||
"change_password_form_new_password": "كلمة المرور الجديدة",
|
||||
"change_password_form_password_mismatch": "كلمة المرور غير مطابقة",
|
||||
"change_password_form_reenter_new_password": "أعد إدخال كلمة مرور جديدة",
|
||||
"change_pin_code": "تغيير الرقم السري",
|
||||
"change_your_password": "غير كلمة المرور الخاصة بك",
|
||||
"changed_visibility_successfully": "تم تغيير الرؤية بنجاح",
|
||||
"check_all": "تحقق من الكل",
|
||||
"check_corrupt_asset_backup": "Check for corrupt asset backups",
|
||||
"check_corrupt_asset_backup_button": "Perform check",
|
||||
"check_corrupt_asset_backup_description": "Run this check only over Wi-Fi and once all assets have been backed-up. The procedure might take a few minutes.",
|
||||
"check_logs": "تحقق من السجلات",
|
||||
"choose_matching_people_to_merge": "اختر الأشخاص المتطابقين لدمجهم",
|
||||
"city": "المدينة",
|
||||
@@ -555,6 +612,14 @@
|
||||
"clear_all_recent_searches": "مسح جميع عمليات البحث الأخيرة",
|
||||
"clear_message": "إخلاء الرسالة",
|
||||
"clear_value": "إخلاء القيمة",
|
||||
"client_cert_dialog_msg_confirm": "OK",
|
||||
"client_cert_enter_password": "Enter Password",
|
||||
"client_cert_import": "Import",
|
||||
"client_cert_import_success_msg": "Client certificate is imported",
|
||||
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
|
||||
"client_cert_remove_msg": "Client certificate is removed",
|
||||
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
|
||||
"client_cert_title": "SSL Client Certificate",
|
||||
"clockwise": "باتجاه عقارب الساعة",
|
||||
"close": "إغلاق",
|
||||
"collapse": "طي",
|
||||
@@ -567,21 +632,23 @@
|
||||
"comments_are_disabled": "التعليقات معطلة",
|
||||
"common_create_new_album": "إنشاء ألبوم جديد",
|
||||
"common_server_error": "يرجى التحقق من اتصال الشبكة الخاص بك ، والتأكد من أن الجهاز قابل للوصول وإصدارات التطبيق/الجهاز متوافقة.",
|
||||
"completed": "Completed",
|
||||
"confirm": "تأكيد",
|
||||
"confirm_admin_password": "تأكيد كلمة مرور المسؤول",
|
||||
"confirm_delete_face": "هل أنت متأكد من حذف وجه {name} من الأصول؟",
|
||||
"confirm_delete_shared_link": "هل أنت متأكد أنك تريد حذف هذا الرابط المشترك؟",
|
||||
"confirm_keep_this_delete_others": "سيتم حذف جميع الأصول الأخرى في المجموعة باستثناء هذا الأصل. هل أنت متأكد من أنك تريد المتابعة؟",
|
||||
"confirm_new_pin_code": "ثبت الرقم السري الجديد",
|
||||
"confirm_password": "تأكيد كلمة المرور",
|
||||
"contain": "محتواة",
|
||||
"context": "السياق",
|
||||
"continue": "متابعة",
|
||||
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
|
||||
"control_bottom_app_bar_create_new_album": "إنشاء ألبوم جديد",
|
||||
"control_bottom_app_bar_delete_from_immich": " حذف منال تطبيق",
|
||||
"control_bottom_app_bar_delete_from_local": "حذف من الجهاز",
|
||||
"control_bottom_app_bar_edit_location": "تحديد الوجهة",
|
||||
"control_bottom_app_bar_edit_time": "تحرير التاريخ والوقت",
|
||||
"control_bottom_app_bar_share_link": "Share Link",
|
||||
"control_bottom_app_bar_share_to": "مشاركة إلى",
|
||||
"control_bottom_app_bar_trash_from_immich": "حذفه ونقله في سله المهملات",
|
||||
"copied_image_to_clipboard": "تم نسخ الصورة إلى الحافظة.",
|
||||
@@ -603,6 +670,7 @@
|
||||
"create_link": "إنشاء رابط",
|
||||
"create_link_to_share": "إنشاء رابط للمشاركة",
|
||||
"create_link_to_share_description": "السماح لأي شخص لديه الرابط بمشاهدة الصورة (الصور) المحددة",
|
||||
"create_new": "CREATE NEW",
|
||||
"create_new_person": "إنشاء شخص جديد",
|
||||
"create_new_person_hint": "تعيين المحتويات المحددة لشخص جديد",
|
||||
"create_new_user": "إنشاء مستخدم جديد",
|
||||
@@ -612,9 +680,10 @@
|
||||
"create_tag_description": "أنشئ علامة جديدة. بالنسبة للعلامات المتداخلة، يرجى إدخال المسار الكامل للعلامة بما في ذلك الخطوط المائلة للأمام.",
|
||||
"create_user": "إنشاء مستخدم",
|
||||
"created": "تم الإنشاء",
|
||||
"crop": "Crop",
|
||||
"curated_object_page_title": "أشياء",
|
||||
"current_device": "الجهاز الحالي",
|
||||
"current_pin_code": "الرقم السري الحالي",
|
||||
"current_server_address": "Current server address",
|
||||
"custom_locale": "لغة مخصصة",
|
||||
"custom_locale_description": "تنسيق التواريخ والأرقام بناءً على اللغة والمنطقة",
|
||||
"daily_title_text_date": "E ، MMM DD",
|
||||
@@ -665,6 +734,7 @@
|
||||
"direction": "الإتجاه",
|
||||
"disabled": "معطل",
|
||||
"disallow_edits": "منع التعديلات",
|
||||
"discord": "Discord",
|
||||
"discover": "اكتشف",
|
||||
"dismiss_all_errors": "تجاهل كافة الأخطاء",
|
||||
"dismiss_error": "تجاهل الخطأ",
|
||||
@@ -676,12 +746,26 @@
|
||||
"documentation": "الوثائق",
|
||||
"done": "تم",
|
||||
"download": "تنزيل",
|
||||
"download_canceled": "Download canceled",
|
||||
"download_complete": "Download complete",
|
||||
"download_enqueue": "Download enqueued",
|
||||
"download_error": "Download Error",
|
||||
"download_failed": "Download failed",
|
||||
"download_filename": "file: {}",
|
||||
"download_finished": "Download finished",
|
||||
"download_include_embedded_motion_videos": "مقاطع الفيديو المدمجة",
|
||||
"download_include_embedded_motion_videos_description": "تضمين مقاطع الفيديو المضمنة في الصور المتحركة كملف منفصل",
|
||||
"download_notfound": "Download not found",
|
||||
"download_paused": "Download paused",
|
||||
"download_settings": "التنزيلات",
|
||||
"download_settings_description": "إدارة الإعدادات المتعلقة بتنزيل المحتويات",
|
||||
"download_started": "Download started",
|
||||
"download_sucess": "Download success",
|
||||
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||
"download_waiting_to_retry": "Waiting to retry",
|
||||
"downloading": "جارٍ التنزيل",
|
||||
"downloading_asset_filename": "{filename} قيد التنزيل",
|
||||
"downloading_media": "Downloading media",
|
||||
"drop_files_to_upload": "قم بإسقاط الملفات في أي مكان لرفعها",
|
||||
"duplicates": "التكرارات",
|
||||
"duplicates_description": "قم بحل كل مجموعة من خلال الإشارة إلى التكرارات، إن وجدت",
|
||||
@@ -711,15 +795,19 @@
|
||||
"editor_crop_tool_h2_aspect_ratios": "نسب العرض إلى الارتفاع",
|
||||
"editor_crop_tool_h2_rotation": "التدوير",
|
||||
"email": "البريد الإلكتروني",
|
||||
"empty_folder": "This folder is empty",
|
||||
"empty_trash": "أفرغ سلة المهملات",
|
||||
"empty_trash_confirmation": "هل أنت متأكد أنك تريد إفراغ سلة المهملات؟ سيؤدي هذا إلى إزالة جميع المحتويات الموجودة في سلة المهملات بشكل نهائي من Immich.\nلا يمكنك التراجع عن هذا الإجراء!",
|
||||
"enable": "تفعيل",
|
||||
"enabled": "مفعل",
|
||||
"end_date": "تاريخ الإنتهاء",
|
||||
"enqueued": "Enqueued",
|
||||
"enter_wifi_name": "Enter WiFi name",
|
||||
"error": "خطأ",
|
||||
"error_change_sort_album": "Failed to change album sort order",
|
||||
"error_delete_face": "حدث خطأ في حذف الوجه من الأصول",
|
||||
"error_loading_image": "حدث خطأ أثناء تحميل الصورة",
|
||||
"error_saving_image": "Error: {}",
|
||||
"error_title": "خطأ - حدث خللٌ ما",
|
||||
"errors": {
|
||||
"cannot_navigate_next_asset": "لا يمكن الانتقال إلى المحتوى التالي",
|
||||
@@ -732,6 +820,7 @@
|
||||
"cant_get_number_of_comments": "لا يمكن الحصول على عدد التعليقات",
|
||||
"cant_search_people": "لا يمكن البحث عن الناس",
|
||||
"cant_search_places": "لا يمكن البحث عن الأماكن",
|
||||
"cleared_jobs": "اُخليت المهام لـ: {job}",
|
||||
"error_adding_assets_to_album": "حدث خطأٌ أثناء إضافة المحتويات إلى الألبوم",
|
||||
"error_adding_users_to_album": "حدث خطأٌ أثناء إضافة المستخدمين إلى الألبوم",
|
||||
"error_deleting_shared_user": "حدث خطأٌ أثناء حذف المستخدم المشترك",
|
||||
@@ -740,6 +829,7 @@
|
||||
"error_removing_assets_from_album": "خطأٌّ في إزالة المحتويات من الألبوم، تحقق من وحدة التحكم للحصول على مزيدٍ من التفاصيل",
|
||||
"error_selecting_all_assets": "خطأٌ في تحديد جميع المحتويات",
|
||||
"exclusion_pattern_already_exists": "نمط الاستبعاد هذا موجود مسبقًا.",
|
||||
"failed_job_command": "فشل الأمر {command} لوظيفة: {job}",
|
||||
"failed_to_create_album": "فشل إنشاء الألبوم",
|
||||
"failed_to_create_shared_link": "فشل إنشاء رابط مشترك",
|
||||
"failed_to_edit_shared_link": "فشل تعديل الرابط المشترك",
|
||||
@@ -756,6 +846,7 @@
|
||||
"paths_validation_failed": "فشل في التحقق من {paths, plural, one {# مسار} other {# مسارات}}",
|
||||
"profile_picture_transparent_pixels": "لا يمكن أن تحتوي صور الملف الشخصي على أجزاء/بكسلات شفافة. يرجى التكبير و/أو تحريك الصورة.",
|
||||
"quota_higher_than_disk_size": "لقد قمت بتعيين حصة نسبية أعلى من حجم القرص",
|
||||
"repair_unable_to_check_items": "تعذر التحقق من {count, select, one {عنصر} other {عناصر}}",
|
||||
"unable_to_add_album_users": "تعذر إضافة مستخدمين إلى الألبوم",
|
||||
"unable_to_add_assets_to_shared_link": "تعذر إضافة المحتويات إلى الرابط المشترك",
|
||||
"unable_to_add_comment": "تعذر إضافة التعليق",
|
||||
@@ -773,6 +864,7 @@
|
||||
"unable_to_change_visibility": "غير قادر على تغيير الظهور لـ {count, plural, one {# شخص} other {# أشخاص}}",
|
||||
"unable_to_complete_oauth_login": "غير قادر على إكمال تسجيل الدخول عبر OAuth",
|
||||
"unable_to_connect": "غير قادر على الإتصال",
|
||||
"unable_to_connect_to_server": "غير قادر على الإتصال بالسيرفر",
|
||||
"unable_to_copy_to_clipboard": "لا يمكن النسخ إلى الحافظة، تأكد من استخدامك للصفحة عبر https",
|
||||
"unable_to_create_admin_account": "غير قادر على إنشاء حساب المسؤول",
|
||||
"unable_to_create_api_key": "غير قادر على إنشاء مفتاح API جديد",
|
||||
@@ -796,6 +888,10 @@
|
||||
"unable_to_hide_person": "غير قادر على إخفاء الشخص",
|
||||
"unable_to_link_motion_video": "غير قادر على ربط فيديو الحركة",
|
||||
"unable_to_link_oauth_account": "غير قادر على ربط حساب OAuth",
|
||||
"unable_to_load_album": "غير قادر على تحميل الألبوم",
|
||||
"unable_to_load_asset_activity": "غير قادر على تحميل نشاط المحتويات",
|
||||
"unable_to_load_items": "غير قادر على تحميل العناصر",
|
||||
"unable_to_load_liked_status": "غير قادر على تحميل حالة الإعجاب",
|
||||
"unable_to_log_out_all_devices": "غير قادر على تسجيل الخروج من جميع الأجهزة",
|
||||
"unable_to_log_out_device": "غير قادر على تسجيل الخروج من الجهاز",
|
||||
"unable_to_login_with_oauth": "غير قادر على تسجيل الدخول باستخدام OAuth",
|
||||
@@ -806,9 +902,11 @@
|
||||
"unable_to_remove_album_users": "تعذر إزالة المستخدمين من الألبوم",
|
||||
"unable_to_remove_api_key": "تعذر إزالة مفتاح API",
|
||||
"unable_to_remove_assets_from_shared_link": "غير قادر على إزالة المحتويات من الرابط المشترك",
|
||||
"unable_to_remove_deleted_assets": "غير قادر على إزالة الملفات غير المتصلة",
|
||||
"unable_to_remove_library": "غير قادر على إزالة المكتبة",
|
||||
"unable_to_remove_partner": "غير قادر على إزالة الشريك",
|
||||
"unable_to_remove_reaction": "غير قادر على إزالة رد الفعل",
|
||||
"unable_to_repair_items": "غير قادر على إصلاح العناصر",
|
||||
"unable_to_reset_password": "غير قادر على إعادة تعيين كلمة المرور",
|
||||
"unable_to_resolve_duplicate": "غير قادر على حل التكرارات",
|
||||
"unable_to_restore_assets": "غير قادر على استعادة المحتويات",
|
||||
@@ -843,6 +941,10 @@
|
||||
"exif_bottom_sheet_location": "موقع",
|
||||
"exif_bottom_sheet_people": "الناس",
|
||||
"exif_bottom_sheet_person_add_person": "اضف اسما",
|
||||
"exif_bottom_sheet_person_age": "Age {}",
|
||||
"exif_bottom_sheet_person_age_months": "Age {} months",
|
||||
"exif_bottom_sheet_person_age_year_months": "Age 1 year, {} months",
|
||||
"exif_bottom_sheet_person_age_years": "Age {}",
|
||||
"exit_slideshow": "خروج من العرض التقديمي",
|
||||
"expand_all": "توسيع الكل",
|
||||
"experimental_settings_new_asset_list_subtitle": "أعمال جارية",
|
||||
@@ -859,9 +961,12 @@
|
||||
"extension": "الإمتداد",
|
||||
"external": "خارجي",
|
||||
"external_libraries": "المكتبات الخارجية",
|
||||
"external_network": "External network",
|
||||
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
|
||||
"face_unassigned": "غير معين",
|
||||
"failed": "Failed",
|
||||
"failed_to_load_assets": "فشل تحميل الأصول",
|
||||
"failed_to_load_folder": "Failed to load folder",
|
||||
"favorite": "مفضل",
|
||||
"favorite_or_unfavorite_photo": "تفضيل أو إلغاء تفضيل الصورة",
|
||||
"favorites": "المفضلة",
|
||||
@@ -873,18 +978,23 @@
|
||||
"file_name_or_extension": "اسم الملف أو امتداده",
|
||||
"filename": "اسم الملف",
|
||||
"filetype": "نوع الملف",
|
||||
"filter": "Filter",
|
||||
"filter_people": "تصفية الاشخاص",
|
||||
"find_them_fast": "يمكنك العثور عليها بسرعة بالاسم من خلال البحث",
|
||||
"fix_incorrect_match": "إصلاح المطابقة غير الصحيحة",
|
||||
"folder": "Folder",
|
||||
"folder_not_found": "Folder not found",
|
||||
"folders": "المجلدات",
|
||||
"folders_feature_description": "تصفح عرض المجلد للصور ومقاطع الفيديو الموجودة على نظام الملفات",
|
||||
"forward": "إلى الأمام",
|
||||
"general": "عام",
|
||||
"get_help": "الحصول على المساعدة",
|
||||
"get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network",
|
||||
"getting_started": "البدء",
|
||||
"go_back": "الرجوع للخلف",
|
||||
"go_to_folder": "اذهب إلى المجلد",
|
||||
"go_to_search": "اذهب إلى البحث",
|
||||
"grant_permission": "Grant permission",
|
||||
"group_albums_by": "تجميع الألبومات حسب...",
|
||||
"group_country": "مجموعة البلد",
|
||||
"group_no": "بدون تجميع",
|
||||
@@ -894,6 +1004,12 @@
|
||||
"haptic_feedback_switch": "تمكين ردود الفعل اللمسية",
|
||||
"haptic_feedback_title": "ردود فعل لمسية",
|
||||
"has_quota": "محدد بحصة",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
"header_settings_field_validator_msg": "Value cannot be empty",
|
||||
"header_settings_header_name_input": "Header name",
|
||||
"header_settings_header_value_input": "Header value",
|
||||
"headers_settings_tile_subtitle": "Define proxy headers the app should send with each network request",
|
||||
"headers_settings_tile_title": "Custom proxy headers",
|
||||
"hi_user": "مرحبا {name} ({email})",
|
||||
"hide_all_people": "إخفاء جميع الأشخاص",
|
||||
"hide_gallery": "اخفاء المعرض",
|
||||
@@ -917,6 +1033,8 @@
|
||||
"home_page_upload_err_limit": "لا يمكن إلا تحميل 30 أحد الأصول في وقت واحد ، سوف يتخطى",
|
||||
"host": "المضيف",
|
||||
"hour": "ساعة",
|
||||
"ignore_icloud_photos": "Ignore iCloud photos",
|
||||
"ignore_icloud_photos_description": "Photos that are stored on iCloud will not be uploaded to the Immich server",
|
||||
"image": "صورة",
|
||||
"image_alt_text_date": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {date}",
|
||||
"image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Image}} تم التقاطها مع {person1} في {date}",
|
||||
@@ -928,6 +1046,7 @@
|
||||
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {city}، {country} مع {person1} و{person2} في {date}",
|
||||
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {city}، {country} مع {person1}، {person2}، و{person3} في {date}",
|
||||
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {city}, {country} with {person1}, {person2}, مع {additionalCount, number} آخرين في {date}",
|
||||
"image_saved_successfully": "Image saved",
|
||||
"image_viewer_page_state_provider_download_started": "بدأ التنزيل",
|
||||
"image_viewer_page_state_provider_download_success": "تم التنزيل بنجاح",
|
||||
"image_viewer_page_state_provider_share_error": "خطأ في المشاركة",
|
||||
@@ -949,6 +1068,8 @@
|
||||
"night_at_midnight": "كل ليلة عند منتصف الليل",
|
||||
"night_at_twoam": "كل ليلة الساعة 2 صباحا"
|
||||
},
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"invite_people": "دعوة الأشخاص",
|
||||
"invite_to_album": "دعوة إلى الألبوم",
|
||||
"items_count": "{count, plural, one {# عنصر} other {# عناصر}}",
|
||||
@@ -984,6 +1105,9 @@
|
||||
"list": "قائمة",
|
||||
"loading": "تحميل",
|
||||
"loading_search_results_failed": "فشل تحميل نتائج البحث",
|
||||
"local_network": "Local network",
|
||||
"local_network_sheet_info": "The app will connect to the server through this URL when using the specified Wi-Fi network",
|
||||
"location_permission": "Location permission",
|
||||
"location_permission_content": "In order to use the auto-switching feature, Immich needs precise location permission so it can read the current WiFi network's name",
|
||||
"location_picker_choose_on_map": "اختر على الخريطة",
|
||||
"location_picker_latitude_error": "أدخل خط عرض صالح",
|
||||
@@ -999,6 +1123,7 @@
|
||||
"login_form_api_exception": " استثناء برمجة التطبيقات. يرجى التحقق من عنوان الخادم والمحاولة مرة أخرى ",
|
||||
"login_form_back_button_text": "الرجوع للخلف",
|
||||
"login_form_email_hint": "yoursemail@email.com",
|
||||
"login_form_endpoint_hint": "http://your-server-ip:port",
|
||||
"login_form_endpoint_url": "url نقطة نهاية الخادم",
|
||||
"login_form_err_http": "يرجى تحديد http:// أو https://",
|
||||
"login_form_err_invalid_email": "بريد إلكتروني خاطئ",
|
||||
@@ -1032,6 +1157,8 @@
|
||||
"manage_your_devices": "إدارة الأجهزة التي تم تسجيل الدخول إليها",
|
||||
"manage_your_oauth_connection": "إدارة اتصال OAuth الخاص بك",
|
||||
"map": "الخريطة",
|
||||
"map_assets_in_bound": "{} photo",
|
||||
"map_assets_in_bounds": "{} photos",
|
||||
"map_cannot_get_user_location": "لا يمكن الحصول على موقع المستخدم",
|
||||
"map_location_dialog_yes": "نعم",
|
||||
"map_location_picker_page_use_location": "استخدم هذا الموقع",
|
||||
@@ -1045,7 +1172,9 @@
|
||||
"map_settings": "إعدادات الخريطة",
|
||||
"map_settings_dark_mode": "الوضع المظلم",
|
||||
"map_settings_date_range_option_day": "24 ساعة الماضية",
|
||||
"map_settings_date_range_option_days": "Past {} days",
|
||||
"map_settings_date_range_option_year": "السنة الفائتة",
|
||||
"map_settings_date_range_option_years": "Past {} years",
|
||||
"map_settings_dialog_title": "إعدادات الخريطة",
|
||||
"map_settings_include_show_archived": "تشمل الأرشفة",
|
||||
"map_settings_include_show_partners": "تضمين الشركاء",
|
||||
@@ -1060,6 +1189,8 @@
|
||||
"memories_setting_description": "إدارة ما تراه في ذكرياتك",
|
||||
"memories_start_over": "ابدأ من جديد",
|
||||
"memories_swipe_to_close": "اسحب لأعلى للإغلاق",
|
||||
"memories_year_ago": "A year ago",
|
||||
"memories_years_ago": "{} years ago",
|
||||
"memory": "ذكرى",
|
||||
"memory_lane_title": "ذكرياتٌ من {title}",
|
||||
"menu": "القائمة",
|
||||
@@ -1083,12 +1214,13 @@
|
||||
"my_albums": "ألبوماتي",
|
||||
"name": "الاسم",
|
||||
"name_or_nickname": "الاسم أو اللقب",
|
||||
"networking_settings": "Networking",
|
||||
"networking_subtitle": "Manage the server endpoint settings",
|
||||
"never": "أبداً",
|
||||
"new_album": "البوم جديد",
|
||||
"new_api_key": "مفتاح API جديد",
|
||||
"new_password": "كلمة المرور الجديدة",
|
||||
"new_person": "شخص جديد",
|
||||
"new_pin_code": "الرقم السري الجديد",
|
||||
"new_user_created": "تم إنشاء مستخدم جديد",
|
||||
"new_version_available": "إصدار جديد متاح",
|
||||
"newest_first": "الأحدث أولاً",
|
||||
@@ -1112,6 +1244,7 @@
|
||||
"no_results_description": "جرب كلمة رئيسية مرادفة أو أكثر عمومية",
|
||||
"no_shared_albums_message": "قم بإنشاء ألبوم لمشاركة الصور ومقاطع الفيديو مع الأشخاص في شبكتك",
|
||||
"not_in_any_album": "ليست في أي ألبوم",
|
||||
"not_selected": "Not selected",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "ملاحظة: لتطبيق تسمية التخزين على المحتويات التي تم رفعها مسبقًا، قم بتشغيل",
|
||||
"notes": "ملاحظات",
|
||||
"notification_permission_dialog_content": "لتمكين الإخطارات ، انتقل إلى الإعدادات و اختار السماح.",
|
||||
@@ -1121,13 +1254,18 @@
|
||||
"notification_toggle_setting_description": "تفعيل إشعارات البريد الإلكتروني",
|
||||
"notifications": "إشعارات",
|
||||
"notifications_setting_description": "إدارة الإشعارات",
|
||||
"oauth": "OAuth",
|
||||
"official_immich_resources": "الموارد الرسمية لشركة Immich",
|
||||
"offline": "غير متصل",
|
||||
"offline_paths": "مسارات غير متصلة",
|
||||
"offline_paths_description": "قد تكون هذه النتائج بسبب الحذف اليدوي للملفات التي لا تشكل جزءًا من مكتبة خارجية.",
|
||||
"ok": "نعم",
|
||||
"oldest_first": "الأقدم أولا",
|
||||
"on_this_device": "On this device",
|
||||
"onboarding": "الإعداد الأولي",
|
||||
"onboarding_privacy_description": "تعتمد الميزات التالية (اختياري) على خدمات خارجية، ويمكن تعطيلها في أي وقت في إعدادات الإدارة.",
|
||||
"onboarding_theme_description": "اختر نسق الألوان للنسخة الخاصة بك. يمكنك تغيير ذلك لاحقًا في إعداداتك.",
|
||||
"onboarding_welcome_description": "لنقم بإعداد نسختك باستخدام بعض الإعدادات الشائعة.",
|
||||
"onboarding_welcome_user": "مرحبا، {user}",
|
||||
"online": "متصل",
|
||||
"only_favorites": "المفضلة فقط",
|
||||
@@ -1147,12 +1285,14 @@
|
||||
"partner_can_access": "يستطيع {partner} الوصول",
|
||||
"partner_can_access_assets": "جميع الصور ومقاطع الفيديو الخاصة بك باستثناء تلك الموجودة في المؤرشفة والمحذوفة",
|
||||
"partner_can_access_location": "الموقع الذي تم التقاط صورك فيه",
|
||||
"partner_list_user_photos": "{user}'s photos",
|
||||
"partner_list_view_all": "عرض الكل",
|
||||
"partner_page_empty_message": "لم يتم مشاركة صورك بعد مع أي شريك.",
|
||||
"partner_page_no_more_users": "لا مزيد من المستخدمين لإضافة",
|
||||
"partner_page_partner_add_failed": "فشل في إضافة شريك",
|
||||
"partner_page_select_partner": "حدد شريكًا",
|
||||
"partner_page_shared_to_title": "مشترك ل",
|
||||
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.",
|
||||
"partner_sharing": "مشاركة الشركاء",
|
||||
"partners": "الشركاء",
|
||||
"password": "كلمة المرور",
|
||||
@@ -1198,9 +1338,6 @@
|
||||
"photos_count": "{count, plural, one {{count, number} صورة} other {{count, number} صور}}",
|
||||
"photos_from_previous_years": "صور من السنوات السابقة",
|
||||
"pick_a_location": "اختر موقعًا",
|
||||
"pin_code_changed_successfully": "تم تغير الرقم السري",
|
||||
"pin_code_reset_successfully": "تم اعادة تعيين الرقم السري",
|
||||
"pin_code_setup_successfully": "تم انشاء رقم سري",
|
||||
"place": "مكان",
|
||||
"places": "الأماكن",
|
||||
"places_count": "{count, plural, one {{count, number} مكان} other {{count, number} أماكن}}",
|
||||
@@ -1209,6 +1346,7 @@
|
||||
"play_motion_photo": "تشغيل الصور المتحركة",
|
||||
"play_or_pause_video": "تشغيل الفيديو أو إيقافه مؤقتًا",
|
||||
"port": "المنفذ",
|
||||
"preferences_settings_subtitle": "Manage the app's preferences",
|
||||
"preferences_settings_title": "التفضيلات",
|
||||
"preset": "الإعداد المسبق",
|
||||
"preview": "معاينة",
|
||||
@@ -1230,7 +1368,7 @@
|
||||
"public_share": "مشاركة عامة",
|
||||
"purchase_account_info": "داعم",
|
||||
"purchase_activated_subtitle": "شكرًا لك على دعمك لـ Immich والبرمجيات مفتوحة المصدر",
|
||||
"purchase_activated_time": "تم التفعيل في {date}",
|
||||
"purchase_activated_time": "تم التفعيل في {date, date}",
|
||||
"purchase_activated_title": "لقد تم تفعيل مفتاحك بنجاح",
|
||||
"purchase_button_activate": "تنشيط",
|
||||
"purchase_button_buy": "شراء",
|
||||
@@ -1273,6 +1411,7 @@
|
||||
"recent": "حديث",
|
||||
"recent-albums": "ألبومات الحديثة",
|
||||
"recent_searches": "عمليات البحث الأخيرة",
|
||||
"recently_added": "Recently added",
|
||||
"recently_added_page_title": "أضيف مؤخرا",
|
||||
"refresh": "تحديث",
|
||||
"refresh_encoded_videos": "تحديث مقاطع الفيديو المشفرة",
|
||||
@@ -1330,6 +1469,7 @@
|
||||
"role_editor": "المحرر",
|
||||
"role_viewer": "العارض",
|
||||
"save": "حفظ",
|
||||
"save_to_gallery": "Save to gallery",
|
||||
"saved_api_key": "تم حفظ مفتاح الـ API",
|
||||
"saved_profile": "تم حفظ الملف",
|
||||
"saved_settings": "تم حفظ الإعدادات",
|
||||
@@ -1351,17 +1491,31 @@
|
||||
"search_city": "البحث حسب المدينة...",
|
||||
"search_country": "البحث حسب الدولة...",
|
||||
"search_filter_apply": "اختار الفلتر ",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_not_in_album": "ليس في الألبوم",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_filename": "Search by file name",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_for": "البحث عن",
|
||||
"search_for_existing_person": "البحث عن شخص موجود",
|
||||
"search_no_more_result": "No more results",
|
||||
"search_no_people": "لا يوجد أشخاص",
|
||||
"search_no_people_named": "لا يوجد أشخاص بالاسم \"{name}\"",
|
||||
"search_no_result": "No results found, try a different search term or combination",
|
||||
"search_options": "خيارات البحث",
|
||||
"search_page_categories": "فئات",
|
||||
"search_page_motion_photos": "الصور المتحركه",
|
||||
"search_page_no_objects": "لا توجد معلومات عن أشياء متاحة",
|
||||
"search_page_no_places": "لا توجد معلومات متوفرة للأماكن",
|
||||
"search_page_screenshots": "لقطات الشاشة",
|
||||
"search_page_search_photos_videos": "Search for your photos and videos",
|
||||
"search_page_selfies": " صور ذاتيه",
|
||||
"search_page_things": "أشياء",
|
||||
"search_page_view_all_button": "عرض الكل",
|
||||
@@ -1400,6 +1554,7 @@
|
||||
"selected_count": "{count, plural, other {# محددة }}",
|
||||
"send_message": "إرسال رسالة",
|
||||
"send_welcome_email": "إرسال بريدًا إلكترونيًا ترحيبيًا",
|
||||
"server_endpoint": "Server Endpoint",
|
||||
"server_info_box_app_version": "نسخة التطبيق",
|
||||
"server_info_box_server_url": "عنوان URL الخادم",
|
||||
"server_offline": "الخادم غير متصل",
|
||||
@@ -1420,20 +1575,28 @@
|
||||
"setting_image_viewer_preview_title": "تحميل صورة معاينة",
|
||||
"setting_image_viewer_title": "الصور",
|
||||
"setting_languages_apply": "تغيير الإعدادات",
|
||||
"setting_languages_subtitle": "Change the app's language",
|
||||
"setting_languages_title": "اللغات",
|
||||
"setting_notifications_notify_failures_grace_period": "Notify background backup failures: {}",
|
||||
"setting_notifications_notify_hours": "{} hours",
|
||||
"setting_notifications_notify_immediately": "في الحال",
|
||||
"setting_notifications_notify_minutes": "{} minutes",
|
||||
"setting_notifications_notify_never": "أبداً",
|
||||
"setting_notifications_notify_seconds": "{} seconds",
|
||||
"setting_notifications_single_progress_subtitle": "معلومات التقدم التفصيلية تحميل لكل أصل",
|
||||
"setting_notifications_single_progress_title": "إظهار تقدم التفاصيل الاحتياطية الخلفية",
|
||||
"setting_notifications_subtitle": "اضبط تفضيلات الإخطار",
|
||||
"setting_notifications_total_progress_subtitle": "التقدم التحميل العام (تم القيام به/إجمالي الأصول)",
|
||||
"setting_notifications_total_progress_title": "إظهار النسخ الاحتياطي الخلفية التقدم المحرز",
|
||||
"setting_video_viewer_looping_title": "تكرار مقطع فيديو تلقائيًا",
|
||||
"setting_video_viewer_original_video_subtitle": "When streaming a video from the server, play the original even when a transcode is available. May lead to buffering. Videos available locally are played in original quality regardless of this setting.",
|
||||
"setting_video_viewer_original_video_title": "Force original video",
|
||||
"settings": "الإعدادات",
|
||||
"settings_require_restart": "يرجى إعادة تشغيل لتطبيق هذا الإعداد",
|
||||
"settings_saved": "تم حفظ الإعدادات",
|
||||
"setup_pin_code": "تحديد رقم سري",
|
||||
"share": "مشاركة",
|
||||
"share_add_photos": "إضافة الصور",
|
||||
"share_assets_selected": "{} selected",
|
||||
"share_dialog_preparing": "تحضير...",
|
||||
"shared": "مُشتَرك",
|
||||
"shared_album_activities_input_disable": "التعليق معطل",
|
||||
@@ -1447,22 +1610,40 @@
|
||||
"shared_by_user": "تمت المشاركة بواسطة {user}",
|
||||
"shared_by_you": "تمت مشاركته من قِبلك",
|
||||
"shared_from_partner": "صور من {partner}",
|
||||
"shared_intent_upload_button_progress_text": "{} / {} Uploaded",
|
||||
"shared_link_app_bar_title": "روابط مشتركة",
|
||||
"shared_link_clipboard_copied_massage": "نسخ إلى الحافظة",
|
||||
"shared_link_clipboard_text": "Link: {}\nPassword: {}",
|
||||
"shared_link_create_error": "خطأ أثناء إنشاء رابط مشترك",
|
||||
"shared_link_edit_description_hint": "أدخل وصف المشاركة",
|
||||
"shared_link_edit_expire_after_option_day": "يوم 1",
|
||||
"shared_link_edit_expire_after_option_days": "{} days",
|
||||
"shared_link_edit_expire_after_option_hour": "1 ساعة",
|
||||
"shared_link_edit_expire_after_option_hours": "{} hours",
|
||||
"shared_link_edit_expire_after_option_minute": "1 دقيقة",
|
||||
"shared_link_edit_expire_after_option_minutes": "{} minutes",
|
||||
"shared_link_edit_expire_after_option_months": "{} months",
|
||||
"shared_link_edit_expire_after_option_year": "{} year",
|
||||
"shared_link_edit_password_hint": "أدخل كلمة مرور المشاركة",
|
||||
"shared_link_edit_submit_button": "تحديث الرابط",
|
||||
"shared_link_error_server_url_fetch": "لا يمكن جلب عنوان الخادم",
|
||||
"shared_link_expires_day": "Expires in {} day",
|
||||
"shared_link_expires_days": "Expires in {} days",
|
||||
"shared_link_expires_hour": "Expires in {} hour",
|
||||
"shared_link_expires_hours": "Expires in {} hours",
|
||||
"shared_link_expires_minute": "Expires in {} minute",
|
||||
"shared_link_expires_minutes": "Expires in {} minutes",
|
||||
"shared_link_expires_never": "تنتهي ∞",
|
||||
"shared_link_expires_second": "Expires in {} second",
|
||||
"shared_link_expires_seconds": "Expires in {} seconds",
|
||||
"shared_link_individual_shared": "Individual shared",
|
||||
"shared_link_info_chip_metadata": "EXIF",
|
||||
"shared_link_manage_links": "إدارة الروابط المشتركة",
|
||||
"shared_link_options": "خيارات الرابط المشترك",
|
||||
"shared_links": "روابط مشتركة",
|
||||
"shared_links_description": "وصف الروابط المشتركة",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# الصور ومقاطع الفيديو المُشارَكة.}}",
|
||||
"shared_with_me": "Shared with me",
|
||||
"shared_with_partner": "تمت المشاركة مع {partner}",
|
||||
"sharing": "مشاركة",
|
||||
"sharing_enter_password": "الرجاء إدخال كلمة المرور لعرض هذه الصفحة.",
|
||||
@@ -1538,6 +1719,9 @@
|
||||
"support_third_party_description": "تم حزم تثبيت immich الخاص بك بواسطة جهة خارجية. قد تكون المشكلات التي تواجهها ناجمة عن هذه الحزمة، لذا يرجى طرح المشكلات معهم في المقام الأول باستخدام الروابط أدناه.",
|
||||
"swap_merge_direction": "تبديل اتجاه الدمج",
|
||||
"sync": "مزامنة",
|
||||
"sync_albums": "Sync albums",
|
||||
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||
"tag": "العلامة",
|
||||
"tag_assets": "أصول العلامة",
|
||||
"tag_created": "تم إنشاء العلامة: {tag}",
|
||||
@@ -1552,8 +1736,14 @@
|
||||
"theme_selection": "اختيار السمة",
|
||||
"theme_selection_description": "قم بتعيين السمة تلقائيًا على اللون الفاتح أو الداكن بناءً على تفضيلات نظام المتصفح الخاص بك",
|
||||
"theme_setting_asset_list_storage_indicator_title": "عرض مؤشر التخزين على بلاط الأصول",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})",
|
||||
"theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.",
|
||||
"theme_setting_colorful_interface_title": "Colorful interface",
|
||||
"theme_setting_image_viewer_quality_subtitle": "اضبط جودة عارض الصورة التفصيلية",
|
||||
"theme_setting_image_viewer_quality_title": "جودة عارض الصورة",
|
||||
"theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.",
|
||||
"theme_setting_primary_color_title": "Primary color",
|
||||
"theme_setting_system_primary_color_title": "Use system color",
|
||||
"theme_setting_system_theme_switch": "تلقائي (اتبع إعداد النظام)",
|
||||
"theme_setting_theme_subtitle": "اختر إعدادات مظهر التطبيق",
|
||||
"theme_setting_three_stage_loading_subtitle": "قد يزيد التحميل من ثلاث مراحل من أداء التحميل ولكنه يسبب تحميل شبكة أعلى بكثير",
|
||||
@@ -1570,22 +1760,24 @@
|
||||
"to_parent": "انتقل إلى الوالد",
|
||||
"to_trash": "حذف",
|
||||
"toggle_settings": "الإعدادات",
|
||||
"toggle_theme": "تبديل المظهر الداكن",
|
||||
"total": "الإجمالي",
|
||||
"total_usage": "الاستخدام الإجمالي",
|
||||
"trash": "المهملات",
|
||||
"trash_all": "نقل الكل إلى سلة المهملات",
|
||||
"trash_count": "سلة المحملات {count, number}",
|
||||
"trash_delete_asset": "حذف/نقل المحتوى إلى سلة المهملات",
|
||||
"trash_emptied": "Emptied trash",
|
||||
"trash_no_results_message": "ستظهر هنا الصور ومقاطع الفيديو المحذوفة.",
|
||||
"trash_page_delete_all": "حذف الكل",
|
||||
"trash_page_empty_trash_dialog_content": "هل تريد تفريغ أصولك المهملة؟ ستتم إزالة هذه العناصر نهائيًا من التطبيق",
|
||||
"trash_page_info": "Trashed items will be permanently deleted after {} days",
|
||||
"trash_page_no_assets": "لا توجد اصول في سله المهملات",
|
||||
"trash_page_restore_all": "استعادة الكل",
|
||||
"trash_page_select_assets_btn": "اختر الأصول ",
|
||||
"trash_page_title": "Trash ({})",
|
||||
"trashed_items_will_be_permanently_deleted_after": "سيتم حذفُ العناصر المحذوفة نِهائيًا بعد {days, plural, one {# يوم} other {# أيام }}.",
|
||||
"type": "النوع",
|
||||
"unable_to_change_pin_code": "تفيير الرقم السري غير ممكن",
|
||||
"unable_to_setup_pin_code": "انشاء الرقم السري غير ممكن",
|
||||
"unarchive": "أخرج من الأرشيف",
|
||||
"unarchived_count": "{count, plural, other {غير مؤرشفة #}}",
|
||||
"unfavorite": "أزل التفضيل",
|
||||
@@ -1606,6 +1798,8 @@
|
||||
"unselect_all_duplicates": "إلغاء تحديد كافة النسخ المكررة",
|
||||
"unstack": "فك الكومه",
|
||||
"unstacked_assets_count": "تم إخراج {count, plural, one {# الأصل} other {# الأصول}} من التكديس",
|
||||
"untracked_files": "الملفات التي لم يتم تعقبها",
|
||||
"untracked_files_decription": "لا يتم تعقب هذه الملفات بواسطة التطبيق. يمكن أن تكون نتيجةً لعمليات نقل فاشلة، أو عمليات رفع متقطعة، أو يتم تركها في الخلف بسبب خللاً ما",
|
||||
"up_next": "التالي",
|
||||
"updated_password": "تم تحديث كلمة المرور",
|
||||
"upload": "رفع",
|
||||
@@ -1619,14 +1813,15 @@
|
||||
"upload_status_errors": "الأخطاء",
|
||||
"upload_status_uploaded": "تم الرفع",
|
||||
"upload_success": "تم الرفع بنجاح، قم بتحديث الصفحة لرؤية المحتويات المرفوعة الجديدة.",
|
||||
"upload_to_immich": "Upload to Immich ({})",
|
||||
"uploading": "Uploading",
|
||||
"url": "عنوان URL",
|
||||
"usage": "الاستخدام",
|
||||
"use_current_connection": "use current connection",
|
||||
"use_custom_date_range": "استخدم النطاق الزمني المخصص بدلاً من ذلك",
|
||||
"user": "مستخدم",
|
||||
"user_id": "معرف المستخدم",
|
||||
"user_liked": "قام {user} بالإعجاب {type, select, photo {بهذه الصورة} video {بهذا الفيديو} asset {بهذا المحتوى} other {بها}}",
|
||||
"user_pin_code_settings": "الرقم السري",
|
||||
"user_pin_code_settings_description": "تغير الرقم السري",
|
||||
"user_purchase_settings": "الشراء",
|
||||
"user_purchase_settings_description": "إدارة عملية الشراء الخاصة بك",
|
||||
"user_role_set": "قم بتعيين {user} كـ {role}",
|
||||
@@ -1637,10 +1832,16 @@
|
||||
"users": "المستخدمين",
|
||||
"utilities": "أدوات",
|
||||
"validate": "تحقْق",
|
||||
"validate_endpoint_error": "Please enter a valid URL",
|
||||
"variables": "المتغيرات",
|
||||
"version": "الإصدار",
|
||||
"version_announcement_closing": "صديقك، أليكس",
|
||||
"version_announcement_message": "مرحبًا! يتوفر إصدار جديد من Immich. يُرجى تخصيص بعض الوقت لقراءة <link>ملاحظات الإصدار</link> للتأكد من تحديث إعداداتك لمنع أي أخطاء في التكوين، خاصة إذا كنت تستخدم WatchTower أو أي آلية تتولى تحديث مثيل Immich الخاص بك تلقائيًا.",
|
||||
"version_announcement_overlay_release_notes": "ملاحظات الإصدار",
|
||||
"version_announcement_overlay_text_1": "مرحبًا يا صديقي ، هناك إصدار جديد",
|
||||
"version_announcement_overlay_text_2": "من فضلك خذ وقتك لزيارة",
|
||||
"version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
|
||||
"version_announcement_overlay_title": "نسخه جديده متاحه للخادم ",
|
||||
"version_history": "تاريخ الإصدار",
|
||||
"version_history_item": "تم تثبيت {version} في {date}",
|
||||
"video": "فيديو",
|
||||
|
||||
@@ -34,15 +34,18 @@
|
||||
"backup_database_enable_description": "Verilənlər bazasının ehtiyat nüsxələrini aktiv et",
|
||||
"backup_settings": "Ehtiyat Nüsxə Parametrləri",
|
||||
"backup_settings_description": "Verilənlər bazasının ehtiyat nüsxə parametrlərini idarə et",
|
||||
"check_all": "Hamısını yoxla",
|
||||
"config_set_by_file": "Konfiqurasiya hal-hazırda konfiqurasiya faylı ilə təyin olunub",
|
||||
"confirm_delete_library": "{library} kitabxanasını silmək istədiyinizdən əminmisiniz?",
|
||||
"confirm_email_below": "Təsdiqləmək üçün aşağıya {email} yazın",
|
||||
"confirm_user_password_reset": "{user} adlı istifadəçinin şifrəsini sıfırlamaq istədiyinizdən əminmisiniz?",
|
||||
"disable_login": "Giriş etməni söndür",
|
||||
"duplicate_detection_job_description": "Bənzər şəkilləri tapmaq üçün maşın öyrənməsini işə salın. Bu prosses Smart Search funksiyasına əsaslanır",
|
||||
"external_library_created_at": "Xarici kitabxana ({date} (tarixində yaradıldı)",
|
||||
"external_library_management": "Xarici kitabxana idarəetməsi",
|
||||
"face_detection": "Üz tanıma",
|
||||
"force_delete_user_warning": "XƏBƏRDARLIQ: Bu əməliyyat istifadəçi və bütün məlumatları siləcəkdir. Bu prossesi və silinən faylları geri qaytarmaq olmaz.",
|
||||
"forcing_refresh_library_files": "Bütün kitabxana fayllarını məcburi yeniləmə",
|
||||
"image_format_description": "WebP, JPEG faylına görə daha kiçik həcmə sahibdir, lakin onu kodlaşdırmaq daha çox vaxt alır.",
|
||||
"image_preview_title": "Önizləmə parametrləri",
|
||||
"image_quality": "Keyfiyyət",
|
||||
@@ -73,6 +76,7 @@
|
||||
"library_watching_settings_description": "Dəyişdirilən faylları avtomatik olaraq yoxla",
|
||||
"logging_enable_description": "Jurnalı aktivləşdir",
|
||||
"logging_level_description": "Aktiv edildikdə hansı jurnal səviyyəsi istifadə olunur.",
|
||||
"logging_settings": "",
|
||||
"machine_learning_clip_model": "CLIP modeli",
|
||||
"machine_learning_clip_model_description": "<link>Burada</link>qeyd olunan CLIP modelinin adı. Modeli dəyişdirdikdən sonra bütün şəkillər üçün 'Ağıllı Axtarış' funksiyasını yenidən işə salmalısınız.",
|
||||
"machine_learning_duplicate_detection": "Dublikat Aşkarlama",
|
||||
|
||||
@@ -44,6 +44,8 @@
|
||||
"backup_keep_last_amount": "Колькасць папярэдніх рэзервовых копій для захавання",
|
||||
"backup_settings": "Налады рэзервовага капіявання",
|
||||
"backup_settings_description": "Кіраванне наладамі дампа базы дадзеных. Заўвага: гэтыя задачы не кантралююцца, і ў выпадку няўдачы паведамленне адпраўлена не будзе.",
|
||||
"check_all": "Праверыць усе",
|
||||
"cleanup": "Ачыстка",
|
||||
"cleared_jobs": "Ачышчаны заданні для: {job}",
|
||||
"config_set_by_file": "Канфігурацыя ў зараз усталявана праз файл канфігурацыі",
|
||||
"confirm_delete_library": "Вы ўпэўнены што жадаеце выдаліць {library} бібліятэку?",
|
||||
@@ -58,12 +60,14 @@
|
||||
"disable_login": "Адключыць уваход",
|
||||
"duplicate_detection_job_description": "Запусціць машыннае навучанне на актывах для выяўлення падобных выяў. Залежыць ад Smart Search",
|
||||
"exclusion_pattern_description": "Шаблоны выключэння дазваляюць ігнараваць файлы і папкі пры сканаванні вашай бібліятэкі. Гэта карысна, калі ў вас ёсць папкі, якія змяшчаюць файлы, якія вы не хочаце імпартаваць, напрыклад, файлы RAW.",
|
||||
"external_library_created_at": "Знешняя бібліятэка (створана {date})",
|
||||
"external_library_management": "Кіраванне знешняй бібліятэкай",
|
||||
"face_detection": "Выяўленне твараў",
|
||||
"face_detection_description": "Выяўляць твары на фотаздымках і відэа з дапамогай машыннага навучання. Для відэа ўлічваецца толькі мініяцюра. \"Абнавіць\" (пера)апрацоўвае ўсе медыя. \"Скінуць\" дадаткова ачышчае ўсе бягучыя дадзеныя пра твары. \"Адсутнічае\" ставіць у чаргу медыя, якія яшчэ не былі апрацаваныя. Выяўленыя твары будуць пастаўлены ў чаргу для распазнавання асоб пасля завяршэння выяўлення твараў, з групаваннем іх па існуючых або новых людзях.",
|
||||
"facial_recognition_job_description": "Групаваць выяўленыя твары па асобах. Гэты этап выконваецца пасля завяршэння выяўлення твараў. \"Скінуць\" (паўторна) перагрупоўвае ўсе твары. \"Адсутнічае\" ставіць у чаргу твары, якія яшчэ не прыпісаныя да якой-небудзь асобы.",
|
||||
"failed_job_command": "Каманда {command} не выканалася для задання: {job}",
|
||||
"force_delete_user_warning": "ПАПЯРЭДЖАННЕ: Гэта дзеянне неадкладна выдаліць карыстальніка і ўсе аб'екты. Гэта дзеянне не можа быць адроблена і файлы немагчыма будзе аднавіць.",
|
||||
"forcing_refresh_library_files": "Прымусовае абнаўленне ўсіх файлаў бібліятэкі",
|
||||
"image_format": "Фармат",
|
||||
"image_format_description": "WebP стварае меншыя файлы, чым JPEG, але павольней кадуе.",
|
||||
"image_fullsize_description": "Выява ў поўным памеры без метаданых, выкарыстоўваецца пры павелічэнні",
|
||||
|
||||
649
i18n/bg.json
649
i18n/bg.json
File diff suppressed because it is too large
Load Diff
844
i18n/bi.json
844
i18n/bi.json
@@ -3,6 +3,8 @@
|
||||
"account": "Akaont",
|
||||
"account_settings": "Seting blo Akaont",
|
||||
"acknowledge": "Akcept",
|
||||
"action": "",
|
||||
"actions": "",
|
||||
"active": "Stap Mekem",
|
||||
"activity": "Wanem hemi Mekem",
|
||||
"activity_changed": "WAnem hemi Mekem hemi",
|
||||
@@ -14,5 +16,845 @@
|
||||
"add_exclusion_pattern": "Putem wan paten wae hemi karem aot",
|
||||
"add_import_path": "Putem wan pat blo import",
|
||||
"add_location": "Putem wan place blo hem",
|
||||
"add_more_users": "Putem mor man"
|
||||
"add_more_users": "Putem mor man",
|
||||
"add_partner": "",
|
||||
"add_path": "",
|
||||
"add_photos": "",
|
||||
"add_to": "",
|
||||
"add_to_album": "",
|
||||
"add_to_shared_album": "",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "",
|
||||
"authentication_settings": "",
|
||||
"authentication_settings_description": "",
|
||||
"background_task_job": "",
|
||||
"check_all": "",
|
||||
"config_set_by_file": "",
|
||||
"confirm_delete_library": "",
|
||||
"confirm_delete_library_assets": "",
|
||||
"confirm_email_below": "",
|
||||
"confirm_reprocess_all_faces": "",
|
||||
"confirm_user_password_reset": "",
|
||||
"disable_login": "",
|
||||
"duplicate_detection_job_description": "",
|
||||
"exclusion_pattern_description": "",
|
||||
"external_library_created_at": "",
|
||||
"external_library_management": "",
|
||||
"face_detection": "",
|
||||
"face_detection_description": "",
|
||||
"facial_recognition_job_description": "",
|
||||
"force_delete_user_warning": "",
|
||||
"forcing_refresh_library_files": "",
|
||||
"image_format_description": "",
|
||||
"image_prefer_embedded_preview": "",
|
||||
"image_prefer_embedded_preview_setting_description": "",
|
||||
"image_prefer_wide_gamut": "",
|
||||
"image_prefer_wide_gamut_setting_description": "",
|
||||
"image_quality": "",
|
||||
"image_settings": "",
|
||||
"image_settings_description": "",
|
||||
"job_concurrency": "",
|
||||
"job_not_concurrency_safe": "",
|
||||
"job_settings": "",
|
||||
"job_settings_description": "",
|
||||
"job_status": "",
|
||||
"jobs_delayed": "",
|
||||
"jobs_failed": "",
|
||||
"library_created": "",
|
||||
"library_deleted": "",
|
||||
"library_import_path_description": "",
|
||||
"library_scanning": "",
|
||||
"library_scanning_description": "",
|
||||
"library_scanning_enable_description": "",
|
||||
"library_settings": "",
|
||||
"library_settings_description": "",
|
||||
"library_tasks_description": "",
|
||||
"library_watching_enable_description": "",
|
||||
"library_watching_settings": "",
|
||||
"library_watching_settings_description": "",
|
||||
"logging_enable_description": "",
|
||||
"logging_level_description": "",
|
||||
"logging_settings": "",
|
||||
"machine_learning_clip_model": "",
|
||||
"machine_learning_duplicate_detection": "",
|
||||
"machine_learning_duplicate_detection_enabled_description": "",
|
||||
"machine_learning_duplicate_detection_setting_description": "",
|
||||
"machine_learning_enabled_description": "",
|
||||
"machine_learning_facial_recognition": "",
|
||||
"machine_learning_facial_recognition_description": "",
|
||||
"machine_learning_facial_recognition_model": "",
|
||||
"machine_learning_facial_recognition_model_description": "",
|
||||
"machine_learning_facial_recognition_setting_description": "",
|
||||
"machine_learning_max_detection_distance": "",
|
||||
"machine_learning_max_detection_distance_description": "",
|
||||
"machine_learning_max_recognition_distance": "",
|
||||
"machine_learning_max_recognition_distance_description": "",
|
||||
"machine_learning_min_detection_score": "",
|
||||
"machine_learning_min_detection_score_description": "",
|
||||
"machine_learning_min_recognized_faces": "",
|
||||
"machine_learning_min_recognized_faces_description": "",
|
||||
"machine_learning_settings": "",
|
||||
"machine_learning_settings_description": "",
|
||||
"machine_learning_smart_search": "",
|
||||
"machine_learning_smart_search_description": "",
|
||||
"machine_learning_smart_search_enabled_description": "",
|
||||
"machine_learning_url_description": "",
|
||||
"manage_concurrency": "",
|
||||
"manage_log_settings": "",
|
||||
"map_dark_style": "",
|
||||
"map_enable_description": "",
|
||||
"map_light_style": "",
|
||||
"map_reverse_geocoding": "",
|
||||
"map_reverse_geocoding_enable_description": "",
|
||||
"map_reverse_geocoding_settings": "",
|
||||
"map_settings": "",
|
||||
"map_settings_description": "",
|
||||
"map_style_description": "",
|
||||
"metadata_extraction_job": "",
|
||||
"metadata_extraction_job_description": "",
|
||||
"migration_job": "",
|
||||
"migration_job_description": "",
|
||||
"no_paths_added": "",
|
||||
"no_pattern_added": "",
|
||||
"note_apply_storage_label_previous_assets": "",
|
||||
"note_cannot_be_changed_later": "",
|
||||
"notification_email_from_address": "",
|
||||
"notification_email_from_address_description": "",
|
||||
"notification_email_host_description": "",
|
||||
"notification_email_ignore_certificate_errors": "",
|
||||
"notification_email_ignore_certificate_errors_description": "",
|
||||
"notification_email_password_description": "",
|
||||
"notification_email_port_description": "",
|
||||
"notification_email_sent_test_email_button": "",
|
||||
"notification_email_setting_description": "",
|
||||
"notification_email_test_email_failed": "",
|
||||
"notification_email_test_email_sent": "",
|
||||
"notification_email_username_description": "",
|
||||
"notification_enable_email_notifications": "",
|
||||
"notification_settings": "",
|
||||
"notification_settings_description": "",
|
||||
"oauth_auto_launch": "",
|
||||
"oauth_auto_launch_description": "",
|
||||
"oauth_auto_register": "",
|
||||
"oauth_auto_register_description": "",
|
||||
"oauth_button_text": "",
|
||||
"oauth_enable_description": "",
|
||||
"oauth_mobile_redirect_uri": "",
|
||||
"oauth_mobile_redirect_uri_override": "",
|
||||
"oauth_mobile_redirect_uri_override_description": "",
|
||||
"oauth_settings": "",
|
||||
"oauth_settings_description": "",
|
||||
"oauth_storage_label_claim": "",
|
||||
"oauth_storage_label_claim_description": "",
|
||||
"oauth_storage_quota_claim": "",
|
||||
"oauth_storage_quota_claim_description": "",
|
||||
"oauth_storage_quota_default": "",
|
||||
"oauth_storage_quota_default_description": "",
|
||||
"offline_paths": "",
|
||||
"offline_paths_description": "",
|
||||
"password_enable_description": "",
|
||||
"password_settings": "",
|
||||
"password_settings_description": "",
|
||||
"paths_validated_successfully": "",
|
||||
"quota_size_gib": "",
|
||||
"refreshing_all_libraries": "",
|
||||
"repair_all": "",
|
||||
"repair_matched_items": "",
|
||||
"repaired_items": "",
|
||||
"require_password_change_on_login": "",
|
||||
"reset_settings_to_default": "",
|
||||
"reset_settings_to_recent_saved": "",
|
||||
"send_welcome_email": "",
|
||||
"server_external_domain_settings": "",
|
||||
"server_external_domain_settings_description": "",
|
||||
"server_settings": "",
|
||||
"server_settings_description": "",
|
||||
"server_welcome_message": "",
|
||||
"server_welcome_message_description": "",
|
||||
"sidecar_job": "",
|
||||
"sidecar_job_description": "",
|
||||
"slideshow_duration_description": "",
|
||||
"smart_search_job_description": "",
|
||||
"storage_template_enable_description": "",
|
||||
"storage_template_hash_verification_enabled": "",
|
||||
"storage_template_hash_verification_enabled_description": "",
|
||||
"storage_template_migration": "",
|
||||
"storage_template_migration_job": "",
|
||||
"storage_template_settings": "",
|
||||
"storage_template_settings_description": "",
|
||||
"system_settings": "",
|
||||
"theme_custom_css_settings": "",
|
||||
"theme_custom_css_settings_description": "",
|
||||
"theme_settings": "",
|
||||
"theme_settings_description": "",
|
||||
"these_files_matched_by_checksum": "",
|
||||
"thumbnail_generation_job": "",
|
||||
"thumbnail_generation_job_description": "",
|
||||
"transcoding_acceleration_api": "",
|
||||
"transcoding_acceleration_api_description": "",
|
||||
"transcoding_acceleration_nvenc": "",
|
||||
"transcoding_acceleration_qsv": "",
|
||||
"transcoding_acceleration_rkmpp": "",
|
||||
"transcoding_acceleration_vaapi": "",
|
||||
"transcoding_accepted_audio_codecs": "",
|
||||
"transcoding_accepted_audio_codecs_description": "",
|
||||
"transcoding_accepted_video_codecs": "",
|
||||
"transcoding_accepted_video_codecs_description": "",
|
||||
"transcoding_advanced_options_description": "",
|
||||
"transcoding_audio_codec": "",
|
||||
"transcoding_audio_codec_description": "",
|
||||
"transcoding_bitrate_description": "",
|
||||
"transcoding_constant_quality_mode": "",
|
||||
"transcoding_constant_quality_mode_description": "",
|
||||
"transcoding_constant_rate_factor": "",
|
||||
"transcoding_constant_rate_factor_description": "",
|
||||
"transcoding_disabled_description": "",
|
||||
"transcoding_hardware_acceleration": "",
|
||||
"transcoding_hardware_acceleration_description": "",
|
||||
"transcoding_hardware_decoding": "",
|
||||
"transcoding_hardware_decoding_setting_description": "",
|
||||
"transcoding_hevc_codec": "",
|
||||
"transcoding_max_b_frames": "",
|
||||
"transcoding_max_b_frames_description": "",
|
||||
"transcoding_max_bitrate": "",
|
||||
"transcoding_max_bitrate_description": "",
|
||||
"transcoding_max_keyframe_interval": "",
|
||||
"transcoding_max_keyframe_interval_description": "",
|
||||
"transcoding_optimal_description": "",
|
||||
"transcoding_preferred_hardware_device": "",
|
||||
"transcoding_preferred_hardware_device_description": "",
|
||||
"transcoding_preset_preset": "",
|
||||
"transcoding_preset_preset_description": "",
|
||||
"transcoding_reference_frames": "",
|
||||
"transcoding_reference_frames_description": "",
|
||||
"transcoding_required_description": "",
|
||||
"transcoding_settings": "",
|
||||
"transcoding_settings_description": "",
|
||||
"transcoding_target_resolution": "",
|
||||
"transcoding_target_resolution_description": "",
|
||||
"transcoding_temporal_aq": "",
|
||||
"transcoding_temporal_aq_description": "",
|
||||
"transcoding_threads": "",
|
||||
"transcoding_threads_description": "",
|
||||
"transcoding_tone_mapping": "",
|
||||
"transcoding_tone_mapping_description": "",
|
||||
"transcoding_transcode_policy": "",
|
||||
"transcoding_transcode_policy_description": "",
|
||||
"transcoding_two_pass_encoding": "",
|
||||
"transcoding_two_pass_encoding_setting_description": "",
|
||||
"transcoding_video_codec": "",
|
||||
"transcoding_video_codec_description": "",
|
||||
"trash_enabled_description": "",
|
||||
"trash_number_of_days": "",
|
||||
"trash_number_of_days_description": "",
|
||||
"trash_settings": "",
|
||||
"trash_settings_description": "",
|
||||
"untracked_files": "",
|
||||
"untracked_files_description": "",
|
||||
"user_delete_delay_settings": "",
|
||||
"user_delete_delay_settings_description": "",
|
||||
"user_management": "",
|
||||
"user_password_has_been_reset": "",
|
||||
"user_password_reset_description": "",
|
||||
"user_settings": "",
|
||||
"user_settings_description": "",
|
||||
"user_successfully_removed": "",
|
||||
"version_check_enabled_description": "",
|
||||
"version_check_settings": "",
|
||||
"version_check_settings_description": "",
|
||||
"video_conversion_job": "",
|
||||
"video_conversion_job_description": ""
|
||||
},
|
||||
"admin_email": "",
|
||||
"admin_password": "",
|
||||
"administration": "",
|
||||
"advanced": "",
|
||||
"album_added": "",
|
||||
"album_added_notification_setting_description": "",
|
||||
"album_cover_updated": "",
|
||||
"album_info_updated": "",
|
||||
"album_name": "",
|
||||
"album_options": "",
|
||||
"album_updated": "",
|
||||
"album_updated_setting_description": "",
|
||||
"albums": "",
|
||||
"albums_count": "",
|
||||
"all": "",
|
||||
"all_people": "",
|
||||
"allow_dark_mode": "",
|
||||
"allow_edits": "",
|
||||
"api_key": "",
|
||||
"api_keys": "",
|
||||
"app_settings": "",
|
||||
"appears_in": "",
|
||||
"archive": "",
|
||||
"archive_or_unarchive_photo": "",
|
||||
"asset_offline": "",
|
||||
"assets": "",
|
||||
"authorized_devices": "",
|
||||
"back": "",
|
||||
"backward": "",
|
||||
"blurred_background": "",
|
||||
"camera": "",
|
||||
"camera_brand": "",
|
||||
"camera_model": "",
|
||||
"cancel": "",
|
||||
"cancel_search": "",
|
||||
"cannot_merge_people": "",
|
||||
"cannot_update_the_description": "",
|
||||
"change_date": "",
|
||||
"change_expiration_time": "",
|
||||
"change_location": "",
|
||||
"change_name": "",
|
||||
"change_name_successfully": "",
|
||||
"change_password": "",
|
||||
"change_your_password": "",
|
||||
"changed_visibility_successfully": "",
|
||||
"check_all": "",
|
||||
"check_logs": "",
|
||||
"choose_matching_people_to_merge": "",
|
||||
"city": "",
|
||||
"clear": "",
|
||||
"clear_all": "",
|
||||
"clear_message": "",
|
||||
"clear_value": "",
|
||||
"close": "",
|
||||
"collapse_all": "",
|
||||
"color_theme": "",
|
||||
"comment_options": "",
|
||||
"comments_are_disabled": "",
|
||||
"confirm": "",
|
||||
"confirm_admin_password": "",
|
||||
"confirm_delete_shared_link": "",
|
||||
"confirm_password": "",
|
||||
"contain": "",
|
||||
"context": "",
|
||||
"continue": "",
|
||||
"copied_image_to_clipboard": "",
|
||||
"copied_to_clipboard": "",
|
||||
"copy_error": "",
|
||||
"copy_file_path": "",
|
||||
"copy_image": "",
|
||||
"copy_link": "",
|
||||
"copy_link_to_clipboard": "",
|
||||
"copy_password": "",
|
||||
"copy_to_clipboard": "",
|
||||
"country": "",
|
||||
"cover": "",
|
||||
"covers": "",
|
||||
"create": "",
|
||||
"create_album": "",
|
||||
"create_library": "",
|
||||
"create_link": "",
|
||||
"create_link_to_share": "",
|
||||
"create_new_person": "",
|
||||
"create_new_user": "",
|
||||
"create_user": "",
|
||||
"created": "",
|
||||
"current_device": "",
|
||||
"custom_locale": "",
|
||||
"custom_locale_description": "",
|
||||
"dark": "",
|
||||
"date_after": "",
|
||||
"date_and_time": "",
|
||||
"date_before": "",
|
||||
"date_range": "",
|
||||
"day": "",
|
||||
"default_locale": "",
|
||||
"default_locale_description": "",
|
||||
"delete": "",
|
||||
"delete_album": "",
|
||||
"delete_api_key_prompt": "",
|
||||
"delete_key": "",
|
||||
"delete_library": "",
|
||||
"delete_link": "",
|
||||
"delete_shared_link": "",
|
||||
"delete_user": "",
|
||||
"deleted_shared_link": "",
|
||||
"description": "",
|
||||
"details": "",
|
||||
"direction": "",
|
||||
"disabled": "",
|
||||
"disallow_edits": "",
|
||||
"discover": "",
|
||||
"dismiss_all_errors": "",
|
||||
"dismiss_error": "",
|
||||
"display_options": "",
|
||||
"display_order": "",
|
||||
"display_original_photos": "",
|
||||
"display_original_photos_setting_description": "",
|
||||
"done": "",
|
||||
"download": "",
|
||||
"downloading": "",
|
||||
"duration": "",
|
||||
"edit_album": "",
|
||||
"edit_avatar": "",
|
||||
"edit_date": "",
|
||||
"edit_date_and_time": "",
|
||||
"edit_exclusion_pattern": "",
|
||||
"edit_faces": "",
|
||||
"edit_import_path": "",
|
||||
"edit_import_paths": "",
|
||||
"edit_key": "",
|
||||
"edit_link": "",
|
||||
"edit_location": "",
|
||||
"edit_name": "",
|
||||
"edit_people": "",
|
||||
"edit_title": "",
|
||||
"edit_user": "",
|
||||
"edited": "",
|
||||
"editor": "",
|
||||
"email": "",
|
||||
"empty_trash": "",
|
||||
"enable": "",
|
||||
"enabled": "",
|
||||
"end_date": "",
|
||||
"error": "",
|
||||
"error_loading_image": "",
|
||||
"errors": {
|
||||
"cleared_jobs": "",
|
||||
"exclusion_pattern_already_exists": "",
|
||||
"failed_job_command": "",
|
||||
"import_path_already_exists": "",
|
||||
"paths_validation_failed": "",
|
||||
"quota_higher_than_disk_size": "",
|
||||
"repair_unable_to_check_items": "",
|
||||
"unable_to_add_album_users": "",
|
||||
"unable_to_add_comment": "",
|
||||
"unable_to_add_exclusion_pattern": "",
|
||||
"unable_to_add_import_path": "",
|
||||
"unable_to_add_partners": "",
|
||||
"unable_to_change_album_user_role": "",
|
||||
"unable_to_change_date": "",
|
||||
"unable_to_change_location": "",
|
||||
"unable_to_change_password": "",
|
||||
"unable_to_copy_to_clipboard": "",
|
||||
"unable_to_create_api_key": "",
|
||||
"unable_to_create_library": "",
|
||||
"unable_to_create_user": "",
|
||||
"unable_to_delete_album": "",
|
||||
"unable_to_delete_asset": "",
|
||||
"unable_to_delete_exclusion_pattern": "",
|
||||
"unable_to_delete_import_path": "",
|
||||
"unable_to_delete_shared_link": "",
|
||||
"unable_to_delete_user": "",
|
||||
"unable_to_edit_exclusion_pattern": "",
|
||||
"unable_to_edit_import_path": "",
|
||||
"unable_to_empty_trash": "",
|
||||
"unable_to_enter_fullscreen": "",
|
||||
"unable_to_exit_fullscreen": "",
|
||||
"unable_to_hide_person": "",
|
||||
"unable_to_link_oauth_account": "",
|
||||
"unable_to_load_album": "",
|
||||
"unable_to_load_asset_activity": "",
|
||||
"unable_to_load_items": "",
|
||||
"unable_to_load_liked_status": "",
|
||||
"unable_to_play_video": "",
|
||||
"unable_to_refresh_user": "",
|
||||
"unable_to_remove_album_users": "",
|
||||
"unable_to_remove_api_key": "",
|
||||
"unable_to_remove_deleted_assets": "",
|
||||
"unable_to_remove_library": "",
|
||||
"unable_to_remove_partner": "",
|
||||
"unable_to_remove_reaction": "",
|
||||
"unable_to_repair_items": "",
|
||||
"unable_to_reset_password": "",
|
||||
"unable_to_resolve_duplicate": "",
|
||||
"unable_to_restore_assets": "",
|
||||
"unable_to_restore_trash": "",
|
||||
"unable_to_restore_user": "",
|
||||
"unable_to_save_album": "",
|
||||
"unable_to_save_api_key": "",
|
||||
"unable_to_save_name": "",
|
||||
"unable_to_save_profile": "",
|
||||
"unable_to_save_settings": "",
|
||||
"unable_to_scan_libraries": "",
|
||||
"unable_to_scan_library": "",
|
||||
"unable_to_set_profile_picture": "",
|
||||
"unable_to_submit_job": "",
|
||||
"unable_to_trash_asset": "",
|
||||
"unable_to_unlink_account": "",
|
||||
"unable_to_update_library": "",
|
||||
"unable_to_update_location": "",
|
||||
"unable_to_update_settings": "",
|
||||
"unable_to_update_timeline_display_status": "",
|
||||
"unable_to_update_user": ""
|
||||
},
|
||||
"exit_slideshow": "",
|
||||
"expand_all": "",
|
||||
"expire_after": "",
|
||||
"expired": "",
|
||||
"explore": "",
|
||||
"export": "",
|
||||
"export_as_json": "",
|
||||
"extension": "",
|
||||
"external": "",
|
||||
"external_libraries": "",
|
||||
"favorite": "",
|
||||
"favorite_or_unfavorite_photo": "",
|
||||
"favorites": "",
|
||||
"feature_photo_updated": "",
|
||||
"file_name": "",
|
||||
"file_name_or_extension": "",
|
||||
"filename": "",
|
||||
"filetype": "",
|
||||
"filter_people": "",
|
||||
"find_them_fast": "",
|
||||
"fix_incorrect_match": "",
|
||||
"forward": "",
|
||||
"general": "",
|
||||
"get_help": "",
|
||||
"getting_started": "",
|
||||
"go_back": "",
|
||||
"go_to_search": "",
|
||||
"group_albums_by": "",
|
||||
"has_quota": "",
|
||||
"hide_gallery": "",
|
||||
"hide_password": "",
|
||||
"hide_person": "",
|
||||
"host": "",
|
||||
"hour": "",
|
||||
"image": "",
|
||||
"immich_logo": "",
|
||||
"import_from_json": "",
|
||||
"import_path": "",
|
||||
"in_archive": "",
|
||||
"include_archived": "",
|
||||
"include_shared_albums": "",
|
||||
"include_shared_partner_assets": "",
|
||||
"individual_share": "",
|
||||
"info": "",
|
||||
"interval": {
|
||||
"day_at_onepm": "",
|
||||
"hours": "",
|
||||
"night_at_midnight": "",
|
||||
"night_at_twoam": ""
|
||||
},
|
||||
"invite_people": "",
|
||||
"invite_to_album": "",
|
||||
"jobs": "",
|
||||
"keep": "",
|
||||
"keyboard_shortcuts": "",
|
||||
"language": "",
|
||||
"language_setting_description": "",
|
||||
"last_seen": "",
|
||||
"leave": "",
|
||||
"let_others_respond": "",
|
||||
"level": "",
|
||||
"library": "",
|
||||
"library_options": "",
|
||||
"light": "",
|
||||
"link_options": "",
|
||||
"link_to_oauth": "",
|
||||
"linked_oauth_account": "",
|
||||
"list": "",
|
||||
"loading": "",
|
||||
"loading_search_results_failed": "",
|
||||
"log_out": "",
|
||||
"log_out_all_devices": "",
|
||||
"login_has_been_disabled": "",
|
||||
"look": "",
|
||||
"loop_videos": "",
|
||||
"loop_videos_description": "",
|
||||
"make": "",
|
||||
"manage_shared_links": "",
|
||||
"manage_sharing_with_partners": "",
|
||||
"manage_the_app_settings": "",
|
||||
"manage_your_account": "",
|
||||
"manage_your_api_keys": "",
|
||||
"manage_your_devices": "",
|
||||
"manage_your_oauth_connection": "",
|
||||
"map": "",
|
||||
"map_marker_with_image": "",
|
||||
"map_settings": "",
|
||||
"matches": "",
|
||||
"media_type": "",
|
||||
"memories": "",
|
||||
"memories_setting_description": "",
|
||||
"menu": "",
|
||||
"merge": "",
|
||||
"merge_people": "",
|
||||
"merge_people_successfully": "",
|
||||
"minimize": "",
|
||||
"minute": "",
|
||||
"missing": "",
|
||||
"model": "",
|
||||
"month": "",
|
||||
"more": "",
|
||||
"moved_to_trash": "",
|
||||
"my_albums": "",
|
||||
"name": "",
|
||||
"name_or_nickname": "",
|
||||
"never": "",
|
||||
"new_api_key": "",
|
||||
"new_password": "",
|
||||
"new_person": "",
|
||||
"new_user_created": "",
|
||||
"newest_first": "",
|
||||
"next": "",
|
||||
"next_memory": "",
|
||||
"no": "",
|
||||
"no_albums_message": "",
|
||||
"no_archived_assets_message": "",
|
||||
"no_assets_message": "",
|
||||
"no_duplicates_found": "",
|
||||
"no_exif_info_available": "",
|
||||
"no_explore_results_message": "",
|
||||
"no_favorites_message": "",
|
||||
"no_libraries_message": "",
|
||||
"no_name": "",
|
||||
"no_places": "",
|
||||
"no_results": "",
|
||||
"no_shared_albums_message": "",
|
||||
"not_in_any_album": "",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "",
|
||||
"notes": "",
|
||||
"notification_toggle_setting_description": "",
|
||||
"notifications": "",
|
||||
"notifications_setting_description": "",
|
||||
"oauth": "",
|
||||
"offline": "",
|
||||
"offline_paths": "",
|
||||
"offline_paths_description": "",
|
||||
"ok": "",
|
||||
"oldest_first": "",
|
||||
"online": "",
|
||||
"only_favorites": "",
|
||||
"open_the_search_filters": "",
|
||||
"options": "",
|
||||
"organize_your_library": "",
|
||||
"other": "",
|
||||
"other_devices": "",
|
||||
"other_variables": "",
|
||||
"owned": "",
|
||||
"owner": "",
|
||||
"partner_can_access": "",
|
||||
"partner_can_access_assets": "",
|
||||
"partner_can_access_location": "",
|
||||
"partner_sharing": "",
|
||||
"partners": "",
|
||||
"password": "",
|
||||
"password_does_not_match": "",
|
||||
"password_required": "",
|
||||
"password_reset_success": "",
|
||||
"past_durations": {
|
||||
"days": "",
|
||||
"hours": "",
|
||||
"years": ""
|
||||
},
|
||||
"path": "",
|
||||
"pattern": "",
|
||||
"pause": "",
|
||||
"pause_memories": "",
|
||||
"paused": "",
|
||||
"pending": "",
|
||||
"people": "",
|
||||
"people_sidebar_description": "",
|
||||
"permanent_deletion_warning": "",
|
||||
"permanent_deletion_warning_setting_description": "",
|
||||
"permanently_delete": "",
|
||||
"permanently_deleted_asset": "",
|
||||
"photos": "",
|
||||
"photos_count": "",
|
||||
"photos_from_previous_years": "",
|
||||
"pick_a_location": "",
|
||||
"place": "",
|
||||
"places": "",
|
||||
"play": "",
|
||||
"play_memories": "",
|
||||
"play_motion_photo": "",
|
||||
"play_or_pause_video": "",
|
||||
"port": "",
|
||||
"preset": "",
|
||||
"preview": "",
|
||||
"previous": "",
|
||||
"previous_memory": "",
|
||||
"previous_or_next_photo": "",
|
||||
"primary": "",
|
||||
"profile_picture_set": "",
|
||||
"public_share": "",
|
||||
"reaction_options": "",
|
||||
"read_changelog": "",
|
||||
"recent": "",
|
||||
"recent_searches": "",
|
||||
"refresh": "",
|
||||
"refreshed": "",
|
||||
"refreshes_every_file": "",
|
||||
"remove": "",
|
||||
"remove_deleted_assets": "",
|
||||
"remove_from_album": "",
|
||||
"remove_from_favorites": "",
|
||||
"remove_from_shared_link": "",
|
||||
"removed_api_key": "",
|
||||
"rename": "",
|
||||
"repair": "",
|
||||
"repair_no_results_message": "",
|
||||
"replace_with_upload": "",
|
||||
"require_password": "",
|
||||
"require_user_to_change_password_on_first_login": "",
|
||||
"reset": "",
|
||||
"reset_password": "",
|
||||
"reset_people_visibility": "",
|
||||
"restore": "",
|
||||
"restore_all": "",
|
||||
"restore_user": "",
|
||||
"resume": "",
|
||||
"retry_upload": "",
|
||||
"review_duplicates": "",
|
||||
"role": "",
|
||||
"save": "",
|
||||
"saved_api_key": "",
|
||||
"saved_profile": "",
|
||||
"saved_settings": "",
|
||||
"say_something": "",
|
||||
"scan_all_libraries": "",
|
||||
"scan_settings": "",
|
||||
"search": "",
|
||||
"search_albums": "",
|
||||
"search_by_context": "",
|
||||
"search_camera_make": "",
|
||||
"search_camera_model": "",
|
||||
"search_city": "",
|
||||
"search_country": "",
|
||||
"search_for_existing_person": "",
|
||||
"search_people": "",
|
||||
"search_places": "",
|
||||
"search_state": "",
|
||||
"search_timezone": "",
|
||||
"search_type": "",
|
||||
"search_your_photos": "",
|
||||
"searching_locales": "",
|
||||
"second": "",
|
||||
"select_album_cover": "",
|
||||
"select_all": "",
|
||||
"select_avatar_color": "",
|
||||
"select_face": "",
|
||||
"select_featured_photo": "",
|
||||
"select_keep_all": "",
|
||||
"select_library_owner": "",
|
||||
"select_new_face": "",
|
||||
"select_photos": "",
|
||||
"select_trash_all": "",
|
||||
"selected": "",
|
||||
"send_message": "",
|
||||
"send_welcome_email": "",
|
||||
"server_stats": "",
|
||||
"set": "",
|
||||
"set_as_album_cover": "",
|
||||
"set_as_profile_picture": "",
|
||||
"set_date_of_birth": "",
|
||||
"set_profile_picture": "",
|
||||
"set_slideshow_to_fullscreen": "",
|
||||
"settings": "",
|
||||
"settings_saved": "",
|
||||
"share": "",
|
||||
"shared": "",
|
||||
"shared_by": "",
|
||||
"shared_by_you": "",
|
||||
"shared_from_partner": "",
|
||||
"shared_links": "",
|
||||
"shared_with_partner": "",
|
||||
"sharing": "",
|
||||
"sharing_sidebar_description": "",
|
||||
"show_album_options": "",
|
||||
"show_and_hide_people": "",
|
||||
"show_file_location": "",
|
||||
"show_gallery": "",
|
||||
"show_hidden_people": "",
|
||||
"show_in_timeline": "",
|
||||
"show_in_timeline_setting_description": "",
|
||||
"show_keyboard_shortcuts": "",
|
||||
"show_metadata": "",
|
||||
"show_or_hide_info": "",
|
||||
"show_password": "",
|
||||
"show_person_options": "",
|
||||
"show_progress_bar": "",
|
||||
"show_search_options": "",
|
||||
"shuffle": "",
|
||||
"sign_out": "",
|
||||
"sign_up": "",
|
||||
"size": "",
|
||||
"skip_to_content": "",
|
||||
"slideshow": "",
|
||||
"slideshow_settings": "",
|
||||
"sort_albums_by": "",
|
||||
"stack": "",
|
||||
"stack_selected_photos": "",
|
||||
"stacktrace": "",
|
||||
"start": "",
|
||||
"start_date": "",
|
||||
"state": "",
|
||||
"status": "",
|
||||
"stop_motion_photo": "",
|
||||
"stop_photo_sharing": "",
|
||||
"stop_photo_sharing_description": "",
|
||||
"stop_sharing_photos_with_user": "",
|
||||
"storage": "",
|
||||
"storage_label": "",
|
||||
"storage_usage": "",
|
||||
"submit": "",
|
||||
"suggestions": "",
|
||||
"sunrise_on_the_beach": "",
|
||||
"swap_merge_direction": "",
|
||||
"sync": "",
|
||||
"template": "",
|
||||
"theme": "",
|
||||
"theme_selection": "",
|
||||
"theme_selection_description": "",
|
||||
"time_based_memories": "",
|
||||
"timezone": "",
|
||||
"to_archive": "",
|
||||
"to_favorite": "",
|
||||
"toggle_settings": "",
|
||||
"toggle_theme": "",
|
||||
"total_usage": "",
|
||||
"trash": "",
|
||||
"trash_all": "",
|
||||
"trash_no_results_message": "",
|
||||
"trashed_items_will_be_permanently_deleted_after": "",
|
||||
"type": "",
|
||||
"unarchive": "",
|
||||
"unfavorite": "",
|
||||
"unhide_person": "",
|
||||
"unknown": "",
|
||||
"unknown_year": "",
|
||||
"unlimited": "",
|
||||
"unlink_oauth": "",
|
||||
"unlinked_oauth_account": "",
|
||||
"unselect_all": "",
|
||||
"unstack": "",
|
||||
"untracked_files": "",
|
||||
"untracked_files_decription": "",
|
||||
"up_next": "",
|
||||
"updated_password": "",
|
||||
"upload": "",
|
||||
"upload_concurrency": "",
|
||||
"url": "",
|
||||
"usage": "",
|
||||
"user": "",
|
||||
"user_id": "",
|
||||
"user_usage_detail": "",
|
||||
"username": "",
|
||||
"users": "",
|
||||
"utilities": "",
|
||||
"validate": "",
|
||||
"variables": "",
|
||||
"version": "",
|
||||
"video": "",
|
||||
"video_hover_setting": "",
|
||||
"video_hover_setting_description": "",
|
||||
"videos": "",
|
||||
"videos_count": "",
|
||||
"view_all": "",
|
||||
"view_all_users": "",
|
||||
"view_links": "",
|
||||
"view_next_asset": "",
|
||||
"view_previous_asset": "",
|
||||
"waiting": "",
|
||||
"week": "",
|
||||
"welcome_to_immich": "",
|
||||
"year": "",
|
||||
"yes": "",
|
||||
"you_dont_have_any_shared_links": "",
|
||||
"zoom_image": ""
|
||||
}
|
||||
|
||||
18
i18n/bn.json
18
i18n/bn.json
@@ -1,17 +1 @@
|
||||
{
|
||||
"about": "সম্পর্কে",
|
||||
"account": "অ্যাকাউন্ট",
|
||||
"account_settings": "অ্যাকাউন্ট সেটিংস",
|
||||
"acknowledge": "স্বীকৃতি",
|
||||
"action": "কার্য",
|
||||
"action_common_update": "আপডেট",
|
||||
"actions": "কর্ম",
|
||||
"active": "সচল",
|
||||
"activity": "কার্যকলাপ",
|
||||
"add": "যোগ করুন",
|
||||
"add_a_description": "একটি বিবরণ যোগ করুন",
|
||||
"add_a_location": "একটি অবস্থান যোগ করুন",
|
||||
"add_a_name": "একটি নাম যোগ করুন",
|
||||
"add_a_title": "একটি শিরোনাম যোগ করুন",
|
||||
"add_endpoint": "এন্ডপয়েন্ট যোগ করুন"
|
||||
}
|
||||
{}
|
||||
|
||||
334
i18n/ca.json
334
i18n/ca.json
File diff suppressed because it is too large
Load Diff
270
i18n/cs.json
270
i18n/cs.json
@@ -22,7 +22,6 @@
|
||||
"add_partner": "Přidat partnera",
|
||||
"add_path": "Přidat cestu",
|
||||
"add_photos": "Přidat fotky",
|
||||
"add_tag": "Přidat značku",
|
||||
"add_to": "Přidat do…",
|
||||
"add_to_album": "Přidat do alba",
|
||||
"add_to_album_bottom_sheet_added": "Přidáno do {album}",
|
||||
@@ -44,7 +43,9 @@
|
||||
"backup_database_enable_description": "Povolit výpisy z databáze",
|
||||
"backup_keep_last_amount": "Počet předchozích výpisů, které se mají ponechat",
|
||||
"backup_settings": "Nastavení výpisu databáze",
|
||||
"backup_settings_description": "Správa nastavení výpisu databáze.",
|
||||
"backup_settings_description": "Správa nastavení výpisu databáze. Poznámka: Tyto úlohy nejsou monitorovány a nebudete upozorněni na jejich selhání.",
|
||||
"check_all": "Vše zkontrolovat",
|
||||
"cleanup": "Vyčištění",
|
||||
"cleared_jobs": "Hotové úlohy pro: {job}",
|
||||
"config_set_by_file": "Konfigurace je aktuálně prováděna konfiguračním souborem",
|
||||
"confirm_delete_library": "Opravdu chcete odstranit knihovnu {library}?",
|
||||
@@ -52,7 +53,6 @@
|
||||
"confirm_email_below": "Pro potvrzení zadejte níže \"{email}\"",
|
||||
"confirm_reprocess_all_faces": "Opravdu chcete znovu zpracovat všechny obličeje? Tím se vymažou i pojmenované osoby.",
|
||||
"confirm_user_password_reset": "Opravdu chcete obnovit heslo uživatele {user}?",
|
||||
"confirm_user_pin_code_reset": "Opravdu chcete resetovat PIN kód uživatele {user}?",
|
||||
"create_job": "Vytvořit úlohu",
|
||||
"cron_expression": "Výraz cron",
|
||||
"cron_expression_description": "Nastavte interval prohledávání pomocí cron formátu. Další informace naleznete např. v <link>Crontab Guru</link>",
|
||||
@@ -60,12 +60,14 @@
|
||||
"disable_login": "Zakázat přihlášení",
|
||||
"duplicate_detection_job_description": "Spuštění strojového učení na položkách za účelem detekce podobných obrázků. Spoléhá na Chytré vyhledávání",
|
||||
"exclusion_pattern_description": "Vzory vyloučení umožňují při prohledávání knihovny ignorovat soubory a složky. To je užitečné, pokud máte složky obsahující soubory, které nechcete importovat, například RAW soubory.",
|
||||
"external_library_created_at": "Externí knihovna (vytvořena {date})",
|
||||
"external_library_management": "Správa externích knihoven",
|
||||
"face_detection": "Detekce obličejů",
|
||||
"face_detection_description": "Detekce obličejů v obrázcích pomocí strojového učení. U videí se bere v úvahu pouze miniatura. „Obnovit“ znovu zpracuje všechny položky. „Resetovat“ navíc vymaže všechna aktuální data obličejů. „Chybějící“ zařadí do fronty položky, které ještě nebyly zpracovány. Zjištěné obličeje budou po dokončení funkce Rozpoznávání obličejů zařazeny do fronty a seskupeny do stávajících nebo nových osob.",
|
||||
"facial_recognition_job_description": "Seskupí nalezené obličeje do osob. Tento krok se spustí po dokončení detekce obličejů. „Resetovat“ znovu seskupí všechny obličeje. „Chybějící“ zpracuje obličeje, které nemají přiřazenou osobu.",
|
||||
"failed_job_command": "Příkaz {command} se nezdařil pro úlohu: {job}",
|
||||
"force_delete_user_warning": "UPOZORNĚNÍ: Tímto okamžitě odstraníte uživatele a všechny jeho položky. Tento krok nelze vrátit zpět a soubory nelze obnovit.",
|
||||
"forcing_refresh_library_files": "Vynucení obnovy všech souborů knihovny",
|
||||
"image_format": "Formát",
|
||||
"image_format_description": "WebP vytváří menší soubory než JPEG, ale je pomalejší při kódování.",
|
||||
"image_fullsize_description": "Obrázek v plné velikosti s odstraněnými metadaty, použito při přiblížení",
|
||||
@@ -170,7 +172,7 @@
|
||||
"note_apply_storage_label_previous_assets": "Upozornění: Pro uplatnění Štítku úložiště na dříve nahrané položky spusťte",
|
||||
"note_cannot_be_changed_later": "UPOZORNĚNÍ: Toto nelze později změnit!",
|
||||
"notification_email_from_address": "Adresa Od",
|
||||
"notification_email_from_address_description": "E-mailová adresa odesílatele, např.: „Immich Photo Server <noreply@example.com>“. Ujistěte se, že používáte adresu, ze které smíte odesílat e-maily.",
|
||||
"notification_email_from_address_description": "E-mailová adresa odesílatele, např.: „Immich Photo Server <noreply@example.com>“",
|
||||
"notification_email_host_description": "Adresa e-mailového serveru (např. smtp.immich.app)",
|
||||
"notification_email_ignore_certificate_errors": "Ignorovat chyby certifikátů",
|
||||
"notification_email_ignore_certificate_errors_description": "Ignorovat chyby ověření certifikátu TLS (nedoporučuje se)",
|
||||
@@ -194,7 +196,7 @@
|
||||
"oauth_enable_description": "Přihlásit pomocí OAuth",
|
||||
"oauth_mobile_redirect_uri": "Mobilní přesměrování URI",
|
||||
"oauth_mobile_redirect_uri_override": "Přepsat mobilní přesměrování URI",
|
||||
"oauth_mobile_redirect_uri_override_description": "Povolit, pokud poskytovatel OAuth nepovoluje mobilní URI, například ''{callback}''",
|
||||
"oauth_mobile_redirect_uri_override_description": "Povolit, pokud poskytovatel OAuth nepovoluje mobilní URI, například '{callback}'",
|
||||
"oauth_settings": "OAuth",
|
||||
"oauth_settings_description": "Správa nastavení OAuth přihlášení",
|
||||
"oauth_settings_more_details": "Další podrobnosti o této funkci naleznete v <link>dokumentaci</link>.",
|
||||
@@ -206,6 +208,8 @@
|
||||
"oauth_storage_quota_default_description": "Kvóta v GiB, která se použije, pokud není poskytnuta žádná deklarace (pro neomezenou kvótu zadejte 0).",
|
||||
"oauth_timeout": "Časový limit požadavku",
|
||||
"oauth_timeout_description": "Časový limit pro požadavky v milisekundách",
|
||||
"offline_paths": "Cesty offline",
|
||||
"offline_paths_description": "Tyto výsledky mohou být způsobeny ručním odstraněním souborů, které nejsou součástí externí knihovny.",
|
||||
"password_enable_description": "Přihlášení pomocí e-mailu a hesla",
|
||||
"password_settings": "Přihlášení heslem",
|
||||
"password_settings_description": "Správa nastavení přihlašování pomocí hesla",
|
||||
@@ -215,6 +219,9 @@
|
||||
"refreshing_all_libraries": "Obnovení všech knihoven",
|
||||
"registration": "Registrace správce",
|
||||
"registration_description": "Vzhledem k tomu, že jste prvním uživatelem v systému, budete přiřazen jako správce a budete zodpovědný za úkoly správy a další uživatelé budou vytvořeni vámi.",
|
||||
"repair_all": "Opravit vše",
|
||||
"repair_matched_items": "Shoda {count, plural, one {# položky} other {# položek}}",
|
||||
"repaired_items": "{count, plural, one {Opravena # položka} few {Opraveny # položky} other {Opraveno # položek}}",
|
||||
"require_password_change_on_login": "Požadovat, aby si uživatel při prvním přihlášení změnil heslo",
|
||||
"reset_settings_to_default": "Obnovení výchozího nastavení",
|
||||
"reset_settings_to_recent_saved": "Obnovit poslední uložené nastavení",
|
||||
@@ -255,14 +262,16 @@
|
||||
"template_email_invite_album": "Šablona pozvánky do alba",
|
||||
"template_email_preview": "Náhled",
|
||||
"template_email_settings": "Šablony e-mailů",
|
||||
"template_email_settings_description": "Správa vlastních šablon e-mailových oznámení",
|
||||
"template_email_update_album": "Šablona aktualizace alba",
|
||||
"template_email_welcome": "Šablona uvítacího e-mailu",
|
||||
"template_settings": "Šablony oznámení",
|
||||
"template_settings_description": "Správa vlastních šablon oznámení",
|
||||
"template_settings_description": "Správa vlastních šablon oznámení.",
|
||||
"theme_custom_css_settings": "Vlastní CSS",
|
||||
"theme_custom_css_settings_description": "Kaskádové styly umožňují přizpůsobit design aplikace Immich.",
|
||||
"theme_settings": "Motivy",
|
||||
"theme_settings_description": "Správa přizpůsobení webového rozhraní Immich",
|
||||
"these_files_matched_by_checksum": "Tyto soubory jsou porovnávány podle jejich kontrolních součtů",
|
||||
"thumbnail_generation_job": "Generování miniatur",
|
||||
"thumbnail_generation_job_description": "Generování velkých, malých a rozmazaných miniatur pro každý obrázek a miniatur pro každou osobu",
|
||||
"transcoding_acceleration_api": "API pro akceleraci",
|
||||
@@ -290,9 +299,10 @@
|
||||
"transcoding_encoding_options": "Možnosti kódování",
|
||||
"transcoding_encoding_options_description": "Nastavte kodeky, rozlišení, kvalitu a další možnosti pro kódovaná videa",
|
||||
"transcoding_hardware_acceleration": "Hardwarová akcelerace",
|
||||
"transcoding_hardware_acceleration_description": "Experimentální: rychlejší kódování, ale při stejném datovém toku může mít nižší kvalitu",
|
||||
"transcoding_hardware_acceleration_description": "Experimentální; mnohem rychlejší, ale při stejném datovém toku bude mít nižší kvalitu",
|
||||
"transcoding_hardware_decoding": "Hardwarové dekódování",
|
||||
"transcoding_hardware_decoding_setting_description": "Povoluje kompletní akceleraci namísto akcelerace pouze kódování. Nemusí fungovat u všech videí.",
|
||||
"transcoding_hevc_codec": "Kodek HEVC",
|
||||
"transcoding_max_b_frames": "Maximální počet B-snímků",
|
||||
"transcoding_max_b_frames_description": "Vyšší hodnoty zvyšují účinnost komprese, ale zpomalují kódování. Nemusí být kompatibilní s hardwarovou akcelerací na starších zařízeních. Hodnota 0 zakáže B-snímky, zatímco -1 tuto hodnotu nastaví automaticky.",
|
||||
"transcoding_max_bitrate": "Maximální datový tok",
|
||||
@@ -330,13 +340,14 @@
|
||||
"trash_number_of_days_description": "Počet dní, po které je třeba položku ponechat v koši, než bude trvale odstraněna",
|
||||
"trash_settings": "Koš",
|
||||
"trash_settings_description": "Správa nastavení koše",
|
||||
"untracked_files": "Neznámé soubory",
|
||||
"untracked_files_description": "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ě",
|
||||
"user_cleanup_job": "Promazání uživatelů",
|
||||
"user_delete_delay": "Účet a položky uživatele <b>{user}</b> budou trvale smazány za {delay, plural, one {# den} few {# dny} other {# dní}}.",
|
||||
"user_delete_delay_settings": "Odložení odstranění",
|
||||
"user_delete_delay_settings_description": "Počet dní po odstranění, po kterých bude odstraněn účet a položky uživatele. Úloha odstraňování uživatelů se spouští o půlnoci a kontroluje uživatele, kteří jsou připraveni k odstranění. Změny tohoto nastavení se vyhodnotí při dalším spuštění.",
|
||||
"user_delete_immediately": "Účet a položky uživatele <b>{user}</b> budou zařazeny do fronty k trvalému smazání <b>okamžitě</b>.",
|
||||
"user_delete_immediately_checkbox": "Uživatele a položky zařadit do fronty k okamžitému smazání",
|
||||
"user_details": "Podrobnosti o uživateli",
|
||||
"user_management": "Správa uživatelů",
|
||||
"user_password_has_been_reset": "Heslo uživatele bylo obnoveno:",
|
||||
"user_password_reset_description": "Poskytněte uživateli dočasné heslo a informujte ho, že si ho bude muset při příštím přihlášení změnit.",
|
||||
@@ -358,7 +369,7 @@
|
||||
"advanced": "Pokročilé",
|
||||
"advanced_settings_enable_alternate_media_filter_subtitle": "Tuto možnost použijte k filtrování médií během synchronizace na základě alternativních kritérií. Tuto možnost vyzkoušejte pouze v případě, že máte problémy s detekcí všech alb v aplikaci.",
|
||||
"advanced_settings_enable_alternate_media_filter_title": "[EXPERIMENTÁLNÍ] Použít alternativní filtr pro synchronizaci alb zařízení",
|
||||
"advanced_settings_log_level_title": "Úroveň protokolování: {level}",
|
||||
"advanced_settings_log_level_title": "Úroveň protokolování: {}",
|
||||
"advanced_settings_prefer_remote_subtitle": "U některých zařízení je načítání miniatur z prostředků v zařízení velmi pomalé. Aktivujte toto nastavení, aby se místo toho načítaly vzdálené obrázky.",
|
||||
"advanced_settings_prefer_remote_title": "Preferovat vzdálené obrázky",
|
||||
"advanced_settings_proxy_headers_subtitle": "Definice hlaviček proxy serveru, které by měl Immich odesílat s každým síťovým požadavkem",
|
||||
@@ -388,6 +399,10 @@
|
||||
"album_remove_user": "Odebrat uživatele?",
|
||||
"album_remove_user_confirmation": "Opravdu chcete odebrat uživatele {user}?",
|
||||
"album_share_no_users": "Zřejmě jste toto album sdíleli se všemi uživateli, nebo nemáte žádného uživatele, se kterým byste ho mohli sdílet.",
|
||||
"album_thumbnail_card_item": "1 položka",
|
||||
"album_thumbnail_card_items": "{} položek",
|
||||
"album_thumbnail_card_shared": " · Sdíleno",
|
||||
"album_thumbnail_shared_by": "Sdílel(a) {}",
|
||||
"album_updated": "Album aktualizováno",
|
||||
"album_updated_setting_description": "Dostávat e-mailová oznámení o nových položkách sdíleného alba",
|
||||
"album_user_left": "Opustil {album}",
|
||||
@@ -403,9 +418,6 @@
|
||||
"album_with_link_access": "Nechte kohokoli s odkazem zobrazit fotografie a lidi v tomto albu.",
|
||||
"albums": "Alba",
|
||||
"albums_count": "{count, plural, one {{count, number} album} few {{count, number} alba} other {{count, number} alb}}",
|
||||
"albums_default_sort_order": "Výchozí řazení alb",
|
||||
"albums_default_sort_order_description": "Výchozí řazení položek při vytváření nových alb.",
|
||||
"albums_feature_description": "Sbírky položek, které lze sdílet s ostatními uživateli.",
|
||||
"all": "Vše",
|
||||
"all_albums": "Všechna alba",
|
||||
"all_people": "Všichni lidé",
|
||||
@@ -428,7 +440,7 @@
|
||||
"archive": "Archiv",
|
||||
"archive_or_unarchive_photo": "Archivovat nebo odarchivovat fotku",
|
||||
"archive_page_no_archived_assets": "Nebyla nalezena žádná archivovaná média",
|
||||
"archive_page_title": "Archiv ({count})",
|
||||
"archive_page_title": "Archiv ({})",
|
||||
"archive_size": "Velikost archivu",
|
||||
"archive_size_description": "Nastavte velikost archivu pro stahování (v GiB)",
|
||||
"archived": "Archiv",
|
||||
@@ -464,32 +476,28 @@
|
||||
"assets_added_count": "{count, plural, one {Přidána # položka} few {Přidány # položky} other {Přidáno # položek}}",
|
||||
"assets_added_to_album_count": "Do alba {count, plural, one {byla přidána # položka} few {byly přidány # položky} other {bylo přidáno # položek}}",
|
||||
"assets_added_to_name_count": "{count, plural, one {Přidána # položka} few {Přidány # položky} other {Přidáno # položek}} do {hasName, select, true {alba <b>{name}</b>} other {nového alba}}",
|
||||
"assets_cannot_be_added_to_album_count": "{count, plural, one {Položku} other {Položky}} nelze přidat do alba",
|
||||
"assets_count": "{count, plural, one {# položka} few {# položky} other {# položek}}",
|
||||
"assets_deleted_permanently": "{count} položek trvale odstraněno",
|
||||
"assets_deleted_permanently_from_server": "{count} položek trvale odstraněno z Immich serveru",
|
||||
"assets_downloaded_failed": "{count, plural, one {Stažen # soubor - {error} souborů selhalo} few {Staženy # soubory - {error} souborů selhalo} other {Staženo # souborů - {error} souborů selhalo}}",
|
||||
"assets_downloaded_successfully": "{count, plural, one {Úspěšně stažen # soubor} few {Úspěšně staženy # soubory} other {Úspěšně staženo # souborů}}",
|
||||
"assets_deleted_permanently": "{} položek trvale odstraněno",
|
||||
"assets_deleted_permanently_from_server": "{} položek trvale odstraněno z Immich serveru",
|
||||
"assets_moved_to_trash_count": "Do koše {count, plural, one {přesunuta # položka} few {přesunuty # položky} other {přesunuto # položek}}",
|
||||
"assets_permanently_deleted_count": "Trvale {count, plural, one {smazána # položka} few {smazány # položky} other {smazáno # položek}}",
|
||||
"assets_removed_count": "{count, plural, one {Odstraněna # položka} few {Odstraněny # položky} other {Odstraněno # položek}}",
|
||||
"assets_removed_permanently_from_device": "{count} položek trvale odstraněno z vašeho zařízení",
|
||||
"assets_removed_permanently_from_device": "{} položek trvale odstraněno z vašeho zařízení",
|
||||
"assets_restore_confirmation": "Opravdu chcete obnovit všechny vyhozené položky? Tuto akci nelze vrátit zpět! Upozorňujeme, že tímto způsobem nelze obnovit žádné offline položky.",
|
||||
"assets_restored_count": "{count, plural, one {Obnovena # položka} few {Obnoveny # položky} other {Obnoveno # položek}}",
|
||||
"assets_restored_successfully": "{count} položek úspěšně obnoveno",
|
||||
"assets_trashed": "{count} položek vyhozeno do koše",
|
||||
"assets_restored_successfully": "{} položek úspěšně obnoveno",
|
||||
"assets_trashed": "{} položek vyhozeno do koše",
|
||||
"assets_trashed_count": "{count, plural, one {Vyhozena # položka} few {Vyhozeny # položky} other {Vyhozeno # položek}}",
|
||||
"assets_trashed_from_server": "{count} položek vyhozeno do koše na Immich serveru",
|
||||
"assets_trashed_from_server": "{} položek vyhozeno do koše na Immich serveru",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {Položka byla} other {Položky byly}} součástí alba",
|
||||
"authorized_devices": "Autorizovaná zařízení",
|
||||
"automatic_endpoint_switching_subtitle": "Připojit se místně přes určenou Wi-Fi, pokud je k dispozici, a používat alternativní připojení jinde",
|
||||
"automatic_endpoint_switching_title": "Automatické přepínání URL",
|
||||
"autoplay_slideshow": "Automatické přehrávání prezentace",
|
||||
"back": "Zpět",
|
||||
"back_close_deselect": "Zpět, zavřít nebo zrušit výběr",
|
||||
"background_location_permission": "Povolení polohy na pozadí",
|
||||
"background_location_permission_content": "Aby bylo možné přepínat sítě při běhu na pozadí, musí mít Immich *vždy* přístup k přesné poloze, aby mohl zjistit název Wi-Fi sítě",
|
||||
"backup_album_selection_page_albums_device": "Alba v zařízení ({count})",
|
||||
"backup_album_selection_page_albums_device": "Alba v zařízení ({})",
|
||||
"backup_album_selection_page_albums_tap": "Klepnutím na položku ji zahrnete, opětovným klepnutím ji vyloučíte",
|
||||
"backup_album_selection_page_assets_scatter": "Položky mohou být roztroušeny ve více albech. To umožňuje zahrnout nebo vyloučit alba během procesu zálohování.",
|
||||
"backup_album_selection_page_select_albums": "Vybraná alba",
|
||||
@@ -498,11 +506,11 @@
|
||||
"backup_all": "Vše",
|
||||
"backup_background_service_backup_failed_message": "Zálohování médií selhalo. Zkouším to znovu…",
|
||||
"backup_background_service_connection_failed_message": "Nepodařilo se připojit k serveru. Zkouším to znovu…",
|
||||
"backup_background_service_current_upload_notification": "Nahrávání {filename}",
|
||||
"backup_background_service_current_upload_notification": "Nahrávání {}",
|
||||
"backup_background_service_default_notification": "Kontrola nových médií…",
|
||||
"backup_background_service_error_title": "Chyba zálohování",
|
||||
"backup_background_service_in_progress_notification": "Zálohování vašich médií…",
|
||||
"backup_background_service_upload_failure_notification": "Nepodařilo se nahrát {filename}",
|
||||
"backup_background_service_upload_failure_notification": "Nepodařilo se nahrát {}",
|
||||
"backup_controller_page_albums": "Zálohovaná alba",
|
||||
"backup_controller_page_background_app_refresh_disabled_content": "Povolte obnovení aplikace na pozadí v Nastavení > Obecné > Obnovení aplikace na pozadí, abyste mohli používat zálohování na pozadí.",
|
||||
"backup_controller_page_background_app_refresh_disabled_title": "Obnovování aplikací na pozadí je vypnuté",
|
||||
@@ -513,7 +521,7 @@
|
||||
"backup_controller_page_background_battery_info_title": "Optimalizace baterie",
|
||||
"backup_controller_page_background_charging": "Pouze během nabíjení",
|
||||
"backup_controller_page_background_configure_error": "Nepodařilo se nakonfigurovat službu na pozadí",
|
||||
"backup_controller_page_background_delay": "Zpoždění zálohování nových médií: {duration}",
|
||||
"backup_controller_page_background_delay": "Zpoždění zálohování nových médií: {}",
|
||||
"backup_controller_page_background_description": "Povolte službu na pozadí pro automatické zálohování všech nových položek bez nutnosti otevření aplikace",
|
||||
"backup_controller_page_background_is_off": "Automatické zálohování na pozadí je vypnuto",
|
||||
"backup_controller_page_background_is_on": "Automatické zálohování na pozadí je zapnuto",
|
||||
@@ -523,12 +531,12 @@
|
||||
"backup_controller_page_backup": "Zálohování",
|
||||
"backup_controller_page_backup_selected": "Vybrané: ",
|
||||
"backup_controller_page_backup_sub": "Zálohované fotografie a videa",
|
||||
"backup_controller_page_created": "Vytvořeno: {date}",
|
||||
"backup_controller_page_created": "Vytvořeno: {}",
|
||||
"backup_controller_page_desc_backup": "Zapněte zálohování na popředí, aby se nové položky automaticky nahrávaly na server při otevření aplikace.",
|
||||
"backup_controller_page_excluded": "Vyloučeno: ",
|
||||
"backup_controller_page_failed": "Nepodařilo se ({count})",
|
||||
"backup_controller_page_filename": "Název souboru: {filename} [{size}]",
|
||||
"backup_controller_page_id": "ID: {id}",
|
||||
"backup_controller_page_failed": "Nepodařilo se ({})",
|
||||
"backup_controller_page_filename": "Název souboru: {} [{}]",
|
||||
"backup_controller_page_id": "ID: {}",
|
||||
"backup_controller_page_info": "Informace o zálohování",
|
||||
"backup_controller_page_none_selected": "Žádné vybrané",
|
||||
"backup_controller_page_remainder": "Zbývá",
|
||||
@@ -537,7 +545,7 @@
|
||||
"backup_controller_page_start_backup": "Spustit zálohování",
|
||||
"backup_controller_page_status_off": "Automatické zálohování na popředí je vypnuto",
|
||||
"backup_controller_page_status_on": "Automatické zálohování na popředí je zapnuto",
|
||||
"backup_controller_page_storage_format": "{used} z {total} použitých",
|
||||
"backup_controller_page_storage_format": "{} z {} použitých",
|
||||
"backup_controller_page_to_backup": "Alba, která mají být zálohována",
|
||||
"backup_controller_page_total_sub": "Všechny jedinečné fotografie a videa z vybraných alb",
|
||||
"backup_controller_page_turn_off": "Vypnout zálohování na popředí",
|
||||
@@ -552,10 +560,6 @@
|
||||
"backup_options_page_title": "Nastavení záloh",
|
||||
"backup_setting_subtitle": "Správa nastavení zálohování na pozadí a na popředí",
|
||||
"backward": "Pozpátku",
|
||||
"biometric_auth_enabled": "Biometrické ověřování je povoleno",
|
||||
"biometric_locked_out": "Jste vyloučeni z biometrického ověřování",
|
||||
"biometric_no_options": "Biometrické možnosti nejsou k dispozici",
|
||||
"biometric_not_available": "Biometrické ověřování není na tomto zařízení k dispozici",
|
||||
"birthdate_saved": "Datum narození úspěšně uloženo",
|
||||
"birthdate_set_description": "Datum narození se používá k výpočtu věku osoby v době pořízení fotografie.",
|
||||
"blurred_background": "Rozmazané pozadí",
|
||||
@@ -566,17 +570,21 @@
|
||||
"bulk_keep_duplicates_confirmation": "Opravdu si chcete ponechat {count, plural, one {# duplicitní položku} few {# duplicitní položky} other {# duplicitních položek}}? Tím se vyřeší všechny duplicitní skupiny, aniž by se cokoli odstranilo.",
|
||||
"bulk_trash_duplicates_confirmation": "Opravdu chcete hromadně vyhodit {count, plural, one {# duplicitní položku} few {# duplicitní položky} other {# duplicitních položek}}? Tím se zachová největší položka z každé skupiny a všechny ostatní duplikáty se vyhodí.",
|
||||
"buy": "Zakoupit Immich",
|
||||
"cache_settings_album_thumbnails": "Náhledy stránek knihovny (položek {})",
|
||||
"cache_settings_clear_cache_button": "Vymazat vyrovnávací paměť",
|
||||
"cache_settings_clear_cache_button_title": "Vymaže vyrovnávací paměť aplikace. To výrazně ovlivní výkon aplikace, dokud se vyrovnávací paměť neobnoví.",
|
||||
"cache_settings_duplicated_assets_clear_button": "VYMAZAT",
|
||||
"cache_settings_duplicated_assets_subtitle": "Fotografie a videa, které aplikace zařadila na černou listinu",
|
||||
"cache_settings_duplicated_assets_title": "Duplicitní položky ({count})",
|
||||
"cache_settings_duplicated_assets_title": "Duplicitní položky ({})",
|
||||
"cache_settings_image_cache_size": "Velikost vyrovnávací paměti (položek {})",
|
||||
"cache_settings_statistics_album": "Knihovna náhledů",
|
||||
"cache_settings_statistics_assets": "{} položky ({})",
|
||||
"cache_settings_statistics_full": "Kompletní fotografie",
|
||||
"cache_settings_statistics_shared": "Sdílené náhledy alb",
|
||||
"cache_settings_statistics_thumbnail": "Náhledy",
|
||||
"cache_settings_statistics_title": "Použití vyrovnávací paměti",
|
||||
"cache_settings_subtitle": "Ovládání chování mobilní aplikace Immich v mezipaměti",
|
||||
"cache_settings_thumbnail_size": "Velikost vyrovnávací paměti náhledů (položek {})",
|
||||
"cache_settings_tile_subtitle": "Ovládání chování místního úložiště",
|
||||
"cache_settings_tile_title": "Místní úložiště",
|
||||
"cache_settings_title": "Nastavení vyrovnávací paměti",
|
||||
@@ -589,15 +597,12 @@
|
||||
"cannot_merge_people": "Nelze sloučit osoby",
|
||||
"cannot_undo_this_action": "Tuto akci nelze vrátit zpět!",
|
||||
"cannot_update_the_description": "Nelze aktualizovat popis",
|
||||
"cast": "Odeslat do zařízení",
|
||||
"cast_description": "Nastavení dostupných cílů přenosu",
|
||||
"change_date": "Změnit datum",
|
||||
"change_description": "Změnit popis",
|
||||
"change_display_order": "Změnit pořadí zobrazení",
|
||||
"change_expiration_time": "Změna konce platnosti",
|
||||
"change_location": "Změna polohy",
|
||||
"change_name": "Změnit jméno",
|
||||
"change_name_successfully": "Jméno bylo úspěšně změněno",
|
||||
"change_name_successfully": "Změna jména proběhla úspěšně",
|
||||
"change_password": "Změna hesla",
|
||||
"change_password_description": "Buď se do systému přihlašujete poprvé, nebo jste byli požádáni o změnu hesla. Zadejte prosím nové heslo níže.",
|
||||
"change_password_form_confirm_password": "Potvrďte heslo",
|
||||
@@ -605,9 +610,9 @@
|
||||
"change_password_form_new_password": "Nové heslo",
|
||||
"change_password_form_password_mismatch": "Hesla se neshodují",
|
||||
"change_password_form_reenter_new_password": "Znovu zadejte nové heslo",
|
||||
"change_pin_code": "Změnit PIN kód",
|
||||
"change_your_password": "Změna vašeho hesla",
|
||||
"changed_visibility_successfully": "Změna viditelnosti proběhla úspěšně",
|
||||
"check_all": "Zkontrolovat vše",
|
||||
"check_corrupt_asset_backup": "Kontrola poškozených záloh položek",
|
||||
"check_corrupt_asset_backup_button": "Provést kontrolu",
|
||||
"check_corrupt_asset_backup_description": "Tuto kontrolu provádějte pouze přes Wi-Fi a po zálohování všech prostředků. Takto operace může trvat několik minut.",
|
||||
@@ -645,15 +650,11 @@
|
||||
"confirm_delete_face": "Opravdu chcete z položky odstranit obličej osoby {name}?",
|
||||
"confirm_delete_shared_link": "Opravdu chcete odstranit tento sdílený odkaz?",
|
||||
"confirm_keep_this_delete_others": "Všechny ostatní položky v tomto uskupení mimo této budou odstraněny. Opravdu chcete pokračovat?",
|
||||
"confirm_new_pin_code": "Potvrzení nového PIN kódu",
|
||||
"confirm_password": "Potvrzení hesla",
|
||||
"confirm_tag_face": "Opravdu chcete označit tento obličej jako {name}?",
|
||||
"confirm_tag_face_unnamed": "Opravdu chcete označit tento obličej?",
|
||||
"connected_device": "Připojené zařízení",
|
||||
"connected_to": "Připojeno k",
|
||||
"contain": "Obsah",
|
||||
"context": "Kontext",
|
||||
"continue": "Pokračovat",
|
||||
"control_bottom_app_bar_album_info_shared": "{} položky – sdílené",
|
||||
"control_bottom_app_bar_create_new_album": "Vytvořit nové album",
|
||||
"control_bottom_app_bar_delete_from_immich": "Smazat ze serveru Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Smazat ze zařízení",
|
||||
@@ -691,18 +692,15 @@
|
||||
"create_tag_description": "Vytvoření nové značky. U vnořených značek zadejte celou cestu ke značce včetně dopředných lomítek.",
|
||||
"create_user": "Vytvořit uživatele",
|
||||
"created": "Vytvořeno",
|
||||
"created_at": "Vytvořeno",
|
||||
"crop": "Oříznout",
|
||||
"curated_object_page_title": "Věci",
|
||||
"current_device": "Současné zařízení",
|
||||
"current_pin_code": "Aktuální PIN kód",
|
||||
"current_server_address": "Aktuální adresa serveru",
|
||||
"custom_locale": "Vlastní lokalizace",
|
||||
"custom_locale_description": "Formátovat datumy a čísla podle jazyka a oblasti",
|
||||
"daily_title_text_date": "EEEE, d. MMMM",
|
||||
"daily_title_text_date_year": "EEEE, d. MMMM y",
|
||||
"dark": "Tmavý",
|
||||
"darkTheme": "Přepnout tmavý motiv",
|
||||
"date_after": "Datum po",
|
||||
"date_and_time": "Datum a čas",
|
||||
"date_before": "Datum před",
|
||||
@@ -750,7 +748,6 @@
|
||||
"disallow_edits": "Zakázat úpravy",
|
||||
"discord": "Discord",
|
||||
"discover": "Objevit",
|
||||
"discovered_devices": "Nalezená zařízení",
|
||||
"dismiss_all_errors": "Zrušit všechny chyby",
|
||||
"dismiss_error": "Zrušit chybu",
|
||||
"display_options": "Možnosti zobrazení",
|
||||
@@ -766,6 +763,7 @@
|
||||
"download_enqueue": "Stahování ve frontě",
|
||||
"download_error": "Chyba při stahování",
|
||||
"download_failed": "Stahování selhalo",
|
||||
"download_filename": "soubor: {}",
|
||||
"download_finished": "Stahování dokončeno",
|
||||
"download_include_embedded_motion_videos": "Vložená videa",
|
||||
"download_include_embedded_motion_videos_description": "Zahrnout videa vložená do pohyblivých fotografií jako samostatný soubor",
|
||||
@@ -789,8 +787,6 @@
|
||||
"edit_avatar": "Upravit avatar",
|
||||
"edit_date": "Upravit datum",
|
||||
"edit_date_and_time": "Upravit datum a čas",
|
||||
"edit_description": "Upravit popis",
|
||||
"edit_description_prompt": "Vyberte nový popis:",
|
||||
"edit_exclusion_pattern": "Upravit vzor vyloučení",
|
||||
"edit_faces": "Upravit obličeje",
|
||||
"edit_import_path": "Upravit cestu importu",
|
||||
@@ -811,24 +807,19 @@
|
||||
"editor_crop_tool_h2_aspect_ratios": "Poměr stran",
|
||||
"editor_crop_tool_h2_rotation": "Otočení",
|
||||
"email": "E-mail",
|
||||
"email_notifications": "E-mailová oznámení",
|
||||
"empty_folder": "Tato složka je prázdná",
|
||||
"empty_trash": "Vyprázdnit koš",
|
||||
"empty_trash_confirmation": "Opravdu chcete vysypat koš? Tím se z Immiche trvale odstraní všechny položky v koši.\nTuto akci nelze vrátit zpět!",
|
||||
"enable": "Povolit",
|
||||
"enable_biometric_auth_description": "Zadejte váš PIN kód pro povolení biometrického ověřování",
|
||||
"enabled": "Povoleno",
|
||||
"end_date": "Konečné datum",
|
||||
"enqueued": "Ve frontě",
|
||||
"enter_wifi_name": "Zadejte název Wi-Fi",
|
||||
"enter_your_pin_code": "Zadejte PIN kód",
|
||||
"enter_your_pin_code_subtitle": "Zadejte PIN kód pro přístup k uzamčené složce",
|
||||
"error": "Chyba",
|
||||
"error_change_sort_album": "Nepodařilo se změnit pořadí alba",
|
||||
"error_delete_face": "Chyba při odstraňování obličeje z položky",
|
||||
"error_loading_image": "Chyba při načítání obrázku",
|
||||
"error_saving_image": "Chyba: {error}",
|
||||
"error_tag_face_bounding_box": "Chyba při označování obličeje - nelze získat souřadnice ohraničujícího rámečku",
|
||||
"error_saving_image": "Chyba: {}",
|
||||
"error_title": "Chyba - Něco se pokazilo",
|
||||
"errors": {
|
||||
"cannot_navigate_next_asset": "Nelze přejít na další položku",
|
||||
@@ -841,6 +832,7 @@
|
||||
"cant_get_number_of_comments": "Nelze načíst počet komentářů",
|
||||
"cant_search_people": "Nelze vyhledávat lidi",
|
||||
"cant_search_places": "Nelze vyhledávat místa",
|
||||
"cleared_jobs": "Vyřízené úlohy pro: {job}",
|
||||
"error_adding_assets_to_album": "Chyba při přidávání položek do alba",
|
||||
"error_adding_users_to_album": "Chyba při přidávání uživatelů do alba",
|
||||
"error_deleting_shared_user": "Chyba při odstraňování sdíleného uživatele",
|
||||
@@ -849,6 +841,7 @@
|
||||
"error_removing_assets_from_album": "Chyba při odstraňování položek z alba, další podrobnosti najdete v konzoli",
|
||||
"error_selecting_all_assets": "Chyba při výběru všech položek",
|
||||
"exclusion_pattern_already_exists": "Tento vzor vyloučení již existuje.",
|
||||
"failed_job_command": "Příkaz {command} se nezdařil pro úlohu: {job}",
|
||||
"failed_to_create_album": "Nepodařilo se vytvořit album",
|
||||
"failed_to_create_shared_link": "Nepodařilo se vytvořit sdílený odkaz",
|
||||
"failed_to_edit_shared_link": "Nepodařilo se upravit sdílený odkaz",
|
||||
@@ -867,6 +860,7 @@
|
||||
"paths_validation_failed": "{paths, plural, one {# cesta neprošla} few {# cesty neprošly} other {# cest neprošlo}} kontrolou",
|
||||
"profile_picture_transparent_pixels": "Profilové obrázky nemohou mít průhledné pixely. Obrázek si prosím zvětšete nebo posuňte.",
|
||||
"quota_higher_than_disk_size": "Nastavili jste kvótu vyšší, než je velikost disku",
|
||||
"repair_unable_to_check_items": "Nelze zkontrolovat {count, select, one {položku} other {položky}}",
|
||||
"unable_to_add_album_users": "Nelze přidat uživatele do alba",
|
||||
"unable_to_add_assets_to_shared_link": "Nelze přidat položky do sdíleného odkazu",
|
||||
"unable_to_add_comment": "Nelze přidat komentář",
|
||||
@@ -878,13 +872,13 @@
|
||||
"unable_to_archive_unarchive": "Nelze {archived, select, true {archivovat} other {odarchivovat}}",
|
||||
"unable_to_change_album_user_role": "Nelze změnit roli uživatele alba",
|
||||
"unable_to_change_date": "Nelze změnit datum",
|
||||
"unable_to_change_description": "Nelze změnit popis",
|
||||
"unable_to_change_favorite": "Nelze změnit oblíbení položky",
|
||||
"unable_to_change_location": "Nelze změnit polohu",
|
||||
"unable_to_change_password": "Nelze změnit heslo",
|
||||
"unable_to_change_visibility": "Nelze změnit viditelnost u {count, plural, one {# osoby} few {# osob} other {# lidí}}",
|
||||
"unable_to_complete_oauth_login": "Nelze dokončit OAuth přihlášení",
|
||||
"unable_to_connect": "Nelze se připojit",
|
||||
"unable_to_connect_to_server": "Nepodařilo se připojit k serveru",
|
||||
"unable_to_copy_to_clipboard": "Nelze zkopírovat do schránky, ujistěte se, že na stránku přistupujete přes https",
|
||||
"unable_to_create_admin_account": "Nelze vytvořit účet správce",
|
||||
"unable_to_create_api_key": "Nelze vytvořit nový API klíč",
|
||||
@@ -908,6 +902,10 @@
|
||||
"unable_to_hide_person": "Nelze skrýt osobu",
|
||||
"unable_to_link_motion_video": "Nelze připojit pohyblivé video",
|
||||
"unable_to_link_oauth_account": "Nelze propojit OAuth účet",
|
||||
"unable_to_load_album": "Nelze načíst album",
|
||||
"unable_to_load_asset_activity": "Nelze načíst aktivitu položky",
|
||||
"unable_to_load_items": "Nelze načíst položky",
|
||||
"unable_to_load_liked_status": "Nelze načíst stav oblíbených",
|
||||
"unable_to_log_out_all_devices": "Nelze odhlásit všechna zařízení",
|
||||
"unable_to_log_out_device": "Nelze odhlásit zařízení",
|
||||
"unable_to_login_with_oauth": "Nelze se přihlásit pomocí OAuth",
|
||||
@@ -918,11 +916,12 @@
|
||||
"unable_to_remove_album_users": "Nelze odebrat uživatele z alba",
|
||||
"unable_to_remove_api_key": "Nelze odstranit API klíč",
|
||||
"unable_to_remove_assets_from_shared_link": "Nelze odstranit položky ze sdíleného odkazu",
|
||||
"unable_to_remove_deleted_assets": "Nelze odstranit offline soubory",
|
||||
"unable_to_remove_library": "Nelze odstranit knihovnu",
|
||||
"unable_to_remove_partner": "Nelze odebrat partnera",
|
||||
"unable_to_remove_reaction": "Nelze odstranit reakci",
|
||||
"unable_to_repair_items": "Nelze opravit položky",
|
||||
"unable_to_reset_password": "Nelze obnovit heslo",
|
||||
"unable_to_reset_pin_code": "Nelze resetovat PIN kód",
|
||||
"unable_to_resolve_duplicate": "Nelze vyřešit duplicitu",
|
||||
"unable_to_restore_assets": "Nelze obnovit položky",
|
||||
"unable_to_restore_trash": "Nelze obnovit koš",
|
||||
@@ -956,9 +955,10 @@
|
||||
"exif_bottom_sheet_location": "POLOHA",
|
||||
"exif_bottom_sheet_people": "LIDÉ",
|
||||
"exif_bottom_sheet_person_add_person": "Přidat jméno",
|
||||
"exif_bottom_sheet_person_age_months": "{months} měsíců",
|
||||
"exif_bottom_sheet_person_age_year_months": "1 rok a {months} měsíců",
|
||||
"exif_bottom_sheet_person_age_years": "{years} let",
|
||||
"exif_bottom_sheet_person_age": "{} let",
|
||||
"exif_bottom_sheet_person_age_months": "{} měsíců",
|
||||
"exif_bottom_sheet_person_age_year_months": "1 rok a {} měsíců",
|
||||
"exif_bottom_sheet_person_age_years": "{} let",
|
||||
"exit_slideshow": "Ukončit prezentaci",
|
||||
"expand_all": "Rozbalit vše",
|
||||
"experimental_settings_new_asset_list_subtitle": "Zpracovávám",
|
||||
@@ -979,7 +979,6 @@
|
||||
"external_network_sheet_info": "Pokud nejste v preferované síti Wi-Fi, aplikace se připojí k serveru prostřednictvím první z níže uvedených adres URL, které může dosáhnout, počínaje shora dolů",
|
||||
"face_unassigned": "Nepřiřazena",
|
||||
"failed": "Selhalo",
|
||||
"failed_to_authenticate": "Ověření se nezdařilo",
|
||||
"failed_to_load_assets": "Nepodařilo se načíst položky",
|
||||
"failed_to_load_folder": "Nepodařilo se načíst složku",
|
||||
"favorite": "Oblíbit",
|
||||
@@ -1003,8 +1002,6 @@
|
||||
"folders": "Složky",
|
||||
"folders_feature_description": "Procházení zobrazení složek s fotografiemi a videi v souborovém systému",
|
||||
"forward": "Dopředu",
|
||||
"gcast_enabled": "Google Cast",
|
||||
"gcast_enabled_description": "Tato funkce načítá externí zdroje z Googlu, aby mohla fungovat.",
|
||||
"general": "Obecné",
|
||||
"get_help": "Získat pomoc",
|
||||
"get_wifiname_error": "Nepodařilo se získat název Wi-Fi. Zkontrolujte, zda jste udělili potřebná oprávnění a zda jste připojeni k Wi-Fi síti",
|
||||
@@ -1047,13 +1044,10 @@
|
||||
"home_page_favorite_err_local": "Zatím není možné zařadit lokální média mezi oblíbená, přeskakuji",
|
||||
"home_page_favorite_err_partner": "Položky partnera nelze označit jako oblíbené, přeskakuji",
|
||||
"home_page_first_time_notice": "Pokud aplikaci používáte poprvé, nezapomeňte si vybrat zálohovaná alba, aby se na časové ose mohly nacházet fotografie a videa z vybraných alb",
|
||||
"home_page_locked_error_local": "Místní položky nelze přesunout do uzamčené složky, přeskočí se",
|
||||
"home_page_locked_error_partner": "Položky partnera nelze přesunout do uzamčené složky, přeskočí se",
|
||||
"home_page_share_err_local": "Nelze sdílet místní položky prostřednictvím odkazu, přeskakuji",
|
||||
"home_page_upload_err_limit": "Lze nahrát nejvýše 30 položek najednou, přeskakuji",
|
||||
"host": "Hostitel",
|
||||
"hour": "Hodina",
|
||||
"id": "ID",
|
||||
"ignore_icloud_photos": "Ignorovat fotografie na iCloudu",
|
||||
"ignore_icloud_photos_description": "Fotografie uložené na iCloudu se nebudou nahrávat na Immich server",
|
||||
"image": "Obrázek",
|
||||
@@ -1093,12 +1087,6 @@
|
||||
"invalid_date_format": "Chybný formát data",
|
||||
"invite_people": "Pozvat lidi",
|
||||
"invite_to_album": "Pozvat do alba",
|
||||
"ios_debug_info_fetch_ran_at": "Data načtena {dateTime}",
|
||||
"ios_debug_info_last_sync_at": "Poslední synchronizace {dateTime}",
|
||||
"ios_debug_info_no_processes_queued": "Žádné procesy na pozadí ve frontě",
|
||||
"ios_debug_info_no_sync_yet": "Dosud nebyla spuštěna žádná úloha synchronizace na pozadí",
|
||||
"ios_debug_info_processes_queued": "{count, plural, one {{count} proces na pozadí ve frontě} few {{count} procesy na pozadí ve frontě} other {{count} procesů na pozadí ve frontě}}",
|
||||
"ios_debug_info_processing_ran_at": "Zpracování spuštěno {dateTime}",
|
||||
"items_count": "{count, plural, one {# položka} few {# položky} other {# položek}}",
|
||||
"jobs": "Úlohy",
|
||||
"keep": "Ponechat",
|
||||
@@ -1107,9 +1095,6 @@
|
||||
"kept_this_deleted_others": "Ponechána tato položka a {count, plural, one {odstraněna # položka} few {odstraněny # položky} other {odstraněno # položek}}",
|
||||
"keyboard_shortcuts": "Klávesové zkratky",
|
||||
"language": "Jazyk",
|
||||
"language_no_results_subtitle": "Zkuste upravit hledaný výraz",
|
||||
"language_no_results_title": "Nebyly nalezeny žádné jazyky",
|
||||
"language_search_hint": "Vyhledat jazyk...",
|
||||
"language_setting_description": "Vyberte upřednostňovaný jazyk",
|
||||
"last_seen": "Naposledy viděno",
|
||||
"latest_version": "Nejnovější verze",
|
||||
@@ -1135,7 +1120,6 @@
|
||||
"list": "Seznam",
|
||||
"loading": "Načítání",
|
||||
"loading_search_results_failed": "Načítání výsledků vyhledávání se nezdařilo",
|
||||
"local_asset_cast_failed": "Nelze odeslat položku, která není nahraná na serveru",
|
||||
"local_network": "Místní síť",
|
||||
"local_network_sheet_info": "Aplikace se při použití zadané sítě Wi-Fi připojí k serveru prostřednictvím tohoto URL",
|
||||
"location_permission": "Oprávnění polohy",
|
||||
@@ -1145,8 +1129,6 @@
|
||||
"location_picker_latitude_hint": "Zadejte vlastní zeměpisnou šířku",
|
||||
"location_picker_longitude_error": "Zadejte platnou zeměpisnou délku",
|
||||
"location_picker_longitude_hint": "Zadejte vlastní zeměpisnou délku",
|
||||
"lock": "Zamknout",
|
||||
"locked_folder": "Uzamčená složka",
|
||||
"log_out": "Odhlásit",
|
||||
"log_out_all_devices": "Odhlásit všechna zařízení",
|
||||
"logged_out_all_devices": "Všechna zařízení odhlášena",
|
||||
@@ -1191,8 +1173,8 @@
|
||||
"manage_your_devices": "Správa přihlášených zařízení",
|
||||
"manage_your_oauth_connection": "Správa OAuth propojení",
|
||||
"map": "Mapa",
|
||||
"map_assets_in_bound": "{count} fotka",
|
||||
"map_assets_in_bounds": "{count} fotek",
|
||||
"map_assets_in_bound": "{} fotka",
|
||||
"map_assets_in_bounds": "{} fotek",
|
||||
"map_cannot_get_user_location": "Nelze zjistit polohu uživatele",
|
||||
"map_location_dialog_yes": "Ano",
|
||||
"map_location_picker_page_use_location": "Použít tuto polohu",
|
||||
@@ -1206,9 +1188,9 @@
|
||||
"map_settings": "Nastavení mapy",
|
||||
"map_settings_dark_mode": "Tmavý režim",
|
||||
"map_settings_date_range_option_day": "Posledních 24 hodin",
|
||||
"map_settings_date_range_option_days": "Posledních {days} dní",
|
||||
"map_settings_date_range_option_days": "Posledních {} dní",
|
||||
"map_settings_date_range_option_year": "Poslední rok",
|
||||
"map_settings_date_range_option_years": "Poslední {years} roky",
|
||||
"map_settings_date_range_option_years": "Poslední {} roky",
|
||||
"map_settings_dialog_title": "Nastavení map",
|
||||
"map_settings_include_show_archived": "Zahrnout archivované",
|
||||
"map_settings_include_show_partners": "Včetně partnerů",
|
||||
@@ -1226,6 +1208,8 @@
|
||||
"memories_setting_description": "Správa toho, co vidíte ve svých vzpomínkách",
|
||||
"memories_start_over": "Začít znovu",
|
||||
"memories_swipe_to_close": "Přejetím nahoru zavřete",
|
||||
"memories_year_ago": "Před rokem",
|
||||
"memories_years_ago": "Před {} lety",
|
||||
"memory": "Vzpomínka",
|
||||
"memory_lane_title": "Řada vzpomínek {title}",
|
||||
"menu": "Nabídka",
|
||||
@@ -1242,10 +1226,6 @@
|
||||
"month": "Měsíc",
|
||||
"monthly_title_text_date_format": "LLLL y",
|
||||
"more": "Více",
|
||||
"move": "Přesunout",
|
||||
"move_off_locked_folder": "Přesunout z uzamčené složky",
|
||||
"move_to_locked_folder": "Přesunout do uzamčené složky",
|
||||
"move_to_locked_folder_confirmation": "Tyto fotky a videa budou odstraněny ze všech alb a bude je možné zobrazit pouze v uzamčené složce",
|
||||
"moved_to_archive": "{count, plural, one {Přesunuta # položka} few {Přesunuty # položky} other {Přesunuto # položek}} do archivu",
|
||||
"moved_to_library": "{count, plural, one {Přesunuta # položka} few {Přesunuty # položky} other {Přesunuto # položek}} do knihovny",
|
||||
"moved_to_trash": "Přesunuto do koše",
|
||||
@@ -1262,8 +1242,6 @@
|
||||
"new_api_key": "Nový API klíč",
|
||||
"new_password": "Nové heslo",
|
||||
"new_person": "Nová osoba",
|
||||
"new_pin_code": "Nový PIN kód",
|
||||
"new_pin_code_subtitle": "Poprvé přistupujete k uzamčené složce. Vytvořte si kód PIN pro bezpečný přístup na tuto stránku",
|
||||
"new_user_created": "Vytvořen nový uživatel",
|
||||
"new_version_available": "NOVÁ VERZE K DISPOZICI",
|
||||
"newest_first": "Nejnovější první",
|
||||
@@ -1276,13 +1254,11 @@
|
||||
"no_archived_assets_message": "Archivujte fotografie a videa a skryjte je ze zobrazení v sekci Fotky",
|
||||
"no_assets_message": "KLIKNĚTE PRO NAHRÁNÍ PRVNÍ FOTOGRAFIE",
|
||||
"no_assets_to_show": "Žádné položky k zobrazení",
|
||||
"no_cast_devices_found": "Nebyla nalezena žádná zařízení",
|
||||
"no_duplicates_found": "Nebyly nalezeny žádné duplicity.",
|
||||
"no_exif_info_available": "Exif není k dispozici",
|
||||
"no_explore_results_message": "Nahrajte další fotografie a prozkoumejte svou sbírku.",
|
||||
"no_favorites_message": "Přidejte si oblíbené položky a rychle najděte své nejlepší obrázky a videa",
|
||||
"no_libraries_message": "Vytvořte si externí knihovnu pro zobrazení fotografií a videí",
|
||||
"no_locked_photos_message": "Fotky a videa v uzamčené složce jsou skryté a při procházení nebo vyhledávání v knihovně se nezobrazují.",
|
||||
"no_name": "Bez jména",
|
||||
"no_notifications": "Žádná oznámení",
|
||||
"no_people_found": "Nebyli nalezeni žádní odpovídající lidé",
|
||||
@@ -1294,7 +1270,6 @@
|
||||
"not_selected": "Není vybráno",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Upozornění: Chcete-li použít štítek úložiště na dříve nahrané položky, spusťte příkaz",
|
||||
"notes": "Poznámky",
|
||||
"nothing_here_yet": "Zatím zde nic není",
|
||||
"notification_permission_dialog_content": "Chcete-li povolit oznámení, přejděte do nastavení a vyberte možnost povolit.",
|
||||
"notification_permission_list_tile_content": "Udělte oprávnění k aktivaci oznámení.",
|
||||
"notification_permission_list_tile_enable_button": "Povolit oznámení",
|
||||
@@ -1305,15 +1280,15 @@
|
||||
"oauth": "OAuth",
|
||||
"official_immich_resources": "Oficiální zdroje Immich",
|
||||
"offline": "Offline",
|
||||
"offline_paths": "Offline cesty",
|
||||
"offline_paths_description": "Tyto výsledky mohou být způsobeny ručním odstraněním souborů, které nejsou součástí externí knihovny.",
|
||||
"ok": "Ok",
|
||||
"oldest_first": "Nejstarší první",
|
||||
"on_this_device": "V tomto zařízení",
|
||||
"onboarding": "Zahájení",
|
||||
"onboarding_locale_description": "Vyberte preferovaný jazyk. Tento výběr můžete později změnit v nastavení.",
|
||||
"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í.",
|
||||
"onboarding_server_welcome_description": "Pojďme nastavit vaši instanci pomocí několika běžných nastavení.",
|
||||
"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ý motiv pro svou instanci. Můžete to později změnit v nastavení.",
|
||||
"onboarding_user_welcome_description": "Pojďme na to!",
|
||||
"onboarding_welcome_description": "Nastavíme vaši instanci pomocí několika běžných nastavení.",
|
||||
"onboarding_welcome_user": "Vítej, {user}",
|
||||
"online": "Online",
|
||||
"only_favorites": "Pouze oblíbené",
|
||||
@@ -1341,7 +1316,7 @@
|
||||
"partner_page_partner_add_failed": "Nepodařilo se přidat partnera",
|
||||
"partner_page_select_partner": "Vyberte partnera",
|
||||
"partner_page_shared_to_title": "Sdíleno",
|
||||
"partner_page_stop_sharing_content": "{partner} již nebude mít přístup k vašim fotografiím.",
|
||||
"partner_page_stop_sharing_content": "{} již nebude mít přístup k vašim fotografiím.",
|
||||
"partner_sharing": "Sdílení mezi partnery",
|
||||
"partners": "Partneři",
|
||||
"password": "Heslo",
|
||||
@@ -1370,8 +1345,6 @@
|
||||
"permanently_delete_assets_prompt": "Opravdu chcete trvale smazat {count, plural, one {tuto položku} few {tyto <b>#</b> položky} other {těchto <b>#</b> položek}}? Tím {count, plural, one {ji také odstraníte z jejích} other {je také odstraníte z jejich}} alb.",
|
||||
"permanently_deleted_asset": "Položka trvale odstraněna",
|
||||
"permanently_deleted_assets_count": "{count, plural, one {Položka trvale vymazána} other {Položky trvale vymazány}}",
|
||||
"permission": "Oprávnění",
|
||||
"permission_empty": "Vaše oprávnění by nemělo být prázdné",
|
||||
"permission_onboarding_back": "Zpět",
|
||||
"permission_onboarding_continue_anyway": "Přesto pokračovat",
|
||||
"permission_onboarding_get_started": "Začít",
|
||||
@@ -1381,7 +1354,7 @@
|
||||
"permission_onboarding_permission_limited": "Přístup omezen. Chcete-li používat Immich k zálohování a správě celé vaší kolekce galerií, povolte v nastavení přístup k fotkám a videím.",
|
||||
"permission_onboarding_request": "Immich potřebuje přístup k zobrazení vašich fotek a videí.",
|
||||
"person": "Osoba",
|
||||
"person_birthdate": "Narozen(a) {date}",
|
||||
"person_birthdate": "Narozen/a {date}",
|
||||
"person_hidden": "{name}{hidden, select, true { (skryto)} other {}}",
|
||||
"photo_shared_all_users": "Vypadá to, že jste fotky sdíleli se všemi uživateli, nebo nemáte žádného uživatele, se kterým byste je mohli sdílet.",
|
||||
"photos": "Fotky",
|
||||
@@ -1389,10 +1362,6 @@
|
||||
"photos_count": "{count, plural, one {{count, number} fotka} few {{count, number} fotky} other {{count, number} fotek}}",
|
||||
"photos_from_previous_years": "Fotky z předchozích let",
|
||||
"pick_a_location": "Vyberte polohu",
|
||||
"pin_code_changed_successfully": "PIN kód byl úspěšně změněn",
|
||||
"pin_code_reset_successfully": "PIN kód úspěšně resetován",
|
||||
"pin_code_setup_successfully": "PIN kód úspěšně nastaven",
|
||||
"pin_verification": "Ověření PIN kódu",
|
||||
"place": "Místo",
|
||||
"places": "Místa",
|
||||
"places_count": "{count, plural, one {{count, number} místo} few {{count, number} místa} other {{count, number} míst}}",
|
||||
@@ -1400,7 +1369,6 @@
|
||||
"play_memories": "Přehrát vzpomníky",
|
||||
"play_motion_photo": "Přehrát pohybovou fotografii",
|
||||
"play_or_pause_video": "Přehrát nebo pozastavit video",
|
||||
"please_auth_to_access": "Pro přístup se prosím ověřte",
|
||||
"port": "Port",
|
||||
"preferences_settings_subtitle": "Správa předvoleb aplikace",
|
||||
"preferences_settings_title": "Předvolby",
|
||||
@@ -1408,13 +1376,9 @@
|
||||
"preview": "Náhled",
|
||||
"previous": "Předchozí",
|
||||
"previous_memory": "Předchozí vzpomínka",
|
||||
"previous_or_next_day": "Následující/předchozí den",
|
||||
"previous_or_next_month": "Následující/předchozí měsíc",
|
||||
"previous_or_next_photo": "Následující/předchozí fotografie",
|
||||
"previous_or_next_year": "Následující/předchozí rok",
|
||||
"previous_or_next_photo": "Předchozí nebo další fotka",
|
||||
"primary": "Primární",
|
||||
"privacy": "Soukromí",
|
||||
"profile": "Profil",
|
||||
"profile_drawer_app_logs": "Logy",
|
||||
"profile_drawer_client_out_of_date_major": "Mobilní aplikace je zastaralá. Aktualizujte ji na nejnovější hlavní verzi.",
|
||||
"profile_drawer_client_out_of_date_minor": "Mobilní aplikace je zastaralá. Aktualizujte ji na nejnovější verzi.",
|
||||
@@ -1428,7 +1392,7 @@
|
||||
"public_share": "Veřejné sdílení",
|
||||
"purchase_account_info": "Podporovatel",
|
||||
"purchase_activated_subtitle": "Děkujeme vám za podporu aplikace Immich a softwaru s otevřeným zdrojovým kódem",
|
||||
"purchase_activated_time": "Aktivováno dne {date}",
|
||||
"purchase_activated_time": "Aktivováno dne {date, date}",
|
||||
"purchase_activated_title": "Váš klíč byl úspěšně aktivován",
|
||||
"purchase_button_activate": "Aktivovat",
|
||||
"purchase_button_buy": "Koupit",
|
||||
@@ -1494,12 +1458,9 @@
|
||||
"remove_deleted_assets": "Odstranit offline soubory",
|
||||
"remove_from_album": "Odstranit z alba",
|
||||
"remove_from_favorites": "Odstranit z oblíbených",
|
||||
"remove_from_locked_folder": "Odstranit z uzamčené složky",
|
||||
"remove_from_locked_folder_confirmation": "Opravdu chcete tyto fotky a videa přesunout z uzamčené složky? Budou viditelné ve vaší knihovně.",
|
||||
"remove_from_shared_link": "Odstranit ze sdíleného odkazu",
|
||||
"remove_memory": "Odstranit vzpomínku",
|
||||
"remove_photo_from_memory": "Odstranit fotografii z této vzpomínky",
|
||||
"remove_tag": "Odstranit značku",
|
||||
"remove_url": "Odstranit URL",
|
||||
"remove_user": "Odebrat uživatele",
|
||||
"removed_api_key": "Odstraněn API klíč: {name}",
|
||||
@@ -1520,7 +1481,6 @@
|
||||
"reset": "Výchozí",
|
||||
"reset_password": "Obnovit heslo",
|
||||
"reset_people_visibility": "Obnovit viditelnost lidí",
|
||||
"reset_pin_code": "Resetovat PIN kód",
|
||||
"reset_to_default": "Obnovit výchozí nastavení",
|
||||
"resolve_duplicates": "Vyřešit duplicity",
|
||||
"resolved_all_duplicates": "Vyřešeny všechny duplicity",
|
||||
@@ -1626,7 +1586,6 @@
|
||||
"server_info_box_server_url": "URL serveru",
|
||||
"server_offline": "Server offline",
|
||||
"server_online": "Server online",
|
||||
"server_privacy": "Ochrana soukromí serveru",
|
||||
"server_stats": "Statistiky serveru",
|
||||
"server_version": "Verze serveru",
|
||||
"set": "Nastavit",
|
||||
@@ -1636,7 +1595,6 @@
|
||||
"set_date_of_birth": "Nastavit datum narození",
|
||||
"set_profile_picture": "Nastavit profilový obrázek",
|
||||
"set_slideshow_to_fullscreen": "Nastavit prezentaci na celou obrazovku",
|
||||
"set_stack_primary_asset": "Nastavit jako hlavní položku",
|
||||
"setting_image_viewer_help": "V prohlížeči detailů se nejprve načte malá miniatura, poté se načte náhled střední velikosti (je-li povolen) a nakonec se načte originál (je-li povolen).",
|
||||
"setting_image_viewer_original_subtitle": "Umožňuje načíst původní obrázek v plném rozlišení (velký!). Zakažte pro snížení využití dat (v síti i v mezipaměti zařízení).",
|
||||
"setting_image_viewer_original_title": "Načíst původní obrázek",
|
||||
@@ -1645,12 +1603,13 @@
|
||||
"setting_image_viewer_title": "Obrázky",
|
||||
"setting_languages_apply": "Použít",
|
||||
"setting_languages_subtitle": "Změna jazyka aplikace",
|
||||
"setting_notifications_notify_failures_grace_period": "Oznámení o selhání zálohování na pozadí: {duration}",
|
||||
"setting_notifications_notify_hours": "{count} hodin",
|
||||
"setting_languages_title": "Jazyk",
|
||||
"setting_notifications_notify_failures_grace_period": "Oznámení o selhání zálohování na pozadí: {}",
|
||||
"setting_notifications_notify_hours": "{} hodin",
|
||||
"setting_notifications_notify_immediately": "okamžitě",
|
||||
"setting_notifications_notify_minutes": "{count} minut",
|
||||
"setting_notifications_notify_minutes": "{} minut",
|
||||
"setting_notifications_notify_never": "nikdy",
|
||||
"setting_notifications_notify_seconds": "{count} sekund",
|
||||
"setting_notifications_notify_seconds": "{} sekundy",
|
||||
"setting_notifications_single_progress_subtitle": "Podrobné informace o průběhu nahrávání položky",
|
||||
"setting_notifications_single_progress_title": "Zobrazit průběh detailů zálohování na pozadí",
|
||||
"setting_notifications_subtitle": "Přizpůsobení předvoleb oznámení",
|
||||
@@ -1662,12 +1621,10 @@
|
||||
"settings": "Nastavení",
|
||||
"settings_require_restart": "Pro použití tohoto nastavení restartujte Immich",
|
||||
"settings_saved": "Nastavení uloženo",
|
||||
"setup_pin_code": "Nastavení PIN kódu",
|
||||
"share": "Sdílet",
|
||||
"share_add_photos": "Přidat fotografie",
|
||||
"share_assets_selected": "{count} vybráno",
|
||||
"share_assets_selected": "{} vybráno",
|
||||
"share_dialog_preparing": "Připravuji...",
|
||||
"share_link": "Sdílet odkaz",
|
||||
"shared": "Sdílené",
|
||||
"shared_album_activities_input_disable": "Komentář je vypnutý",
|
||||
"shared_album_activity_remove_content": "Chcete odstranit tuto aktivitu?",
|
||||
@@ -1680,32 +1637,32 @@
|
||||
"shared_by_user": "Sdílel(a) {user}",
|
||||
"shared_by_you": "Sdíleli jste",
|
||||
"shared_from_partner": "Fotky od {partner}",
|
||||
"shared_intent_upload_button_progress_text": "{current} / {total} nahráno",
|
||||
"shared_intent_upload_button_progress_text": "{} / {} nahráno",
|
||||
"shared_link_app_bar_title": "Sdílené odkazy",
|
||||
"shared_link_clipboard_copied_massage": "Zkopírováno do schránky",
|
||||
"shared_link_clipboard_text": "Odkaz: {link}\nHeslo: {password}",
|
||||
"shared_link_clipboard_text": "Odkaz: {}\nHeslo: {}",
|
||||
"shared_link_create_error": "Chyba při vytváření sdíleného odkazu",
|
||||
"shared_link_edit_description_hint": "Zadejte popis sdílení",
|
||||
"shared_link_edit_expire_after_option_day": "1 den",
|
||||
"shared_link_edit_expire_after_option_days": "{count} dní",
|
||||
"shared_link_edit_expire_after_option_days": "{} dní",
|
||||
"shared_link_edit_expire_after_option_hour": "1 hodina",
|
||||
"shared_link_edit_expire_after_option_hours": "{count} hodin",
|
||||
"shared_link_edit_expire_after_option_hours": "{} hodin",
|
||||
"shared_link_edit_expire_after_option_minute": "1 minuta",
|
||||
"shared_link_edit_expire_after_option_minutes": "{count} minut",
|
||||
"shared_link_edit_expire_after_option_months": "{count} měsíce",
|
||||
"shared_link_edit_expire_after_option_year": "{count} rok",
|
||||
"shared_link_edit_expire_after_option_minutes": "{} minut",
|
||||
"shared_link_edit_expire_after_option_months": "{} měsíce",
|
||||
"shared_link_edit_expire_after_option_year": "{} rok",
|
||||
"shared_link_edit_password_hint": "Zadejte heslo pro sdílení",
|
||||
"shared_link_edit_submit_button": "Aktualizovat odkaz",
|
||||
"shared_link_error_server_url_fetch": "Nelze načíst url serveru",
|
||||
"shared_link_expires_day": "Vyprší za {count} den",
|
||||
"shared_link_expires_days": "Vyprší za {count} dní",
|
||||
"shared_link_expires_hour": "Vyprší za {count} hodinu",
|
||||
"shared_link_expires_hours": "Vyprší za {count} hodin",
|
||||
"shared_link_expires_minute": "Vyprší za {count} minutu",
|
||||
"shared_link_expires_minutes": "Vyprší za {count} minut",
|
||||
"shared_link_expires_day": "Vyprší za {} den",
|
||||
"shared_link_expires_days": "Vyprší za {} dní",
|
||||
"shared_link_expires_hour": "Vyprší za {} hodinu",
|
||||
"shared_link_expires_hours": "Vyprší za {} hodin",
|
||||
"shared_link_expires_minute": "Vyprší za {} minutu",
|
||||
"shared_link_expires_minutes": "Vyprší za {} minut",
|
||||
"shared_link_expires_never": "Platnost ∞",
|
||||
"shared_link_expires_second": "Vyprší za {count} sekundu",
|
||||
"shared_link_expires_seconds": "Vyprší za {count} sekund",
|
||||
"shared_link_expires_second": "Vyprší za {} sekundu",
|
||||
"shared_link_expires_seconds": "Vyprší za {} sekund",
|
||||
"shared_link_individual_shared": "Individuální sdílení",
|
||||
"shared_link_info_chip_metadata": "EXIF",
|
||||
"shared_link_manage_links": "Spravovat sdílené odkazy",
|
||||
@@ -1774,14 +1731,12 @@
|
||||
"start_date": "Počáteční datum",
|
||||
"state": "Stát",
|
||||
"status": "Stav",
|
||||
"stop_casting": "Zastavit odesílání",
|
||||
"stop_motion_photo": "Zastavit pohyblivou fotografii",
|
||||
"stop_photo_sharing": "Přestat sdílet své fotografie?",
|
||||
"stop_photo_sharing_description": "{partner} již nebude mít přístup k vašim fotkám.",
|
||||
"stop_sharing_photos_with_user": "Přestat sdílet své fotky s tímto uživatelem",
|
||||
"storage": "Velikost úložiště",
|
||||
"storage_label": "Štítek úložiště",
|
||||
"storage_quota": "Kvóta úložiště",
|
||||
"storage_usage": "Využito {used} z {available}",
|
||||
"submit": "Odeslat",
|
||||
"suggestions": "Návrhy",
|
||||
@@ -1808,7 +1763,7 @@
|
||||
"theme_selection": "Výběr motivu",
|
||||
"theme_selection_description": "Automatické nastavení světlého nebo tmavého motivu podle systémových preferencí prohlížeče",
|
||||
"theme_setting_asset_list_storage_indicator_title": "Zobrazit indikátor úložiště na dlaždicích položek",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Počet položek na řádek ({count})",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Počet položek na řádek ({})",
|
||||
"theme_setting_colorful_interface_subtitle": "Použít hlavní barvu na povrchy pozadí.",
|
||||
"theme_setting_colorful_interface_title": "Barevné rozhraní",
|
||||
"theme_setting_image_viewer_quality_subtitle": "Přizpůsobení kvality detailů prohlížeče obrázků",
|
||||
@@ -1832,6 +1787,7 @@
|
||||
"to_parent": "Přejít k rodiči",
|
||||
"to_trash": "Vyhodit",
|
||||
"toggle_settings": "Přepnout nastavení",
|
||||
"toggle_theme": "Přepnout tmavý motiv",
|
||||
"total": "Celkem",
|
||||
"total_usage": "Celkové využití",
|
||||
"trash": "Koš",
|
||||
@@ -1842,18 +1798,15 @@
|
||||
"trash_no_results_message": "Zde se zobrazí odstraněné fotky a videa.",
|
||||
"trash_page_delete_all": "Smazat všechny",
|
||||
"trash_page_empty_trash_dialog_content": "Chcete vyprázdnit svoje vyhozené položky? Tyto položky budou trvale odstraněny z aplikace",
|
||||
"trash_page_info": "Vyhozené položky budou trvale smazány po {days} dnech",
|
||||
"trash_page_info": "Vyhozené položky budou trvale smazány po {} dnech",
|
||||
"trash_page_no_assets": "Žádné vyhozené položky",
|
||||
"trash_page_restore_all": "Obnovit všechny",
|
||||
"trash_page_select_assets_btn": "Vybrat položky",
|
||||
"trash_page_title": "Koš ({count})",
|
||||
"trash_page_title": "Koš ({})",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Smazané položky budou trvale odstraněny po {days, plural, one {# dni} other {# dnech}}.",
|
||||
"type": "Typ",
|
||||
"unable_to_change_pin_code": "Nelze změnit PIN kód",
|
||||
"unable_to_setup_pin_code": "Nelze nastavit PIN kód",
|
||||
"unarchive": "Odarchivovat",
|
||||
"unarchived_count": "{count, plural, one {Odarchivována #} few {Odarchivovány #} other {Odarchivováno #}}",
|
||||
"undo": "Vrátit zpět",
|
||||
"unfavorite": "Zrušit oblíbení",
|
||||
"unhide_person": "Zrušit skrytí osoby",
|
||||
"unknown": "Neznámý",
|
||||
@@ -1872,8 +1825,9 @@
|
||||
"unselect_all_duplicates": "Zrušit výběr všech duplicit",
|
||||
"unstack": "Zrušit seskupení",
|
||||
"unstacked_assets_count": "{count, plural, one {Rozložená # položka} few {Rozložené # položky} other {Rozložených # položiek}}",
|
||||
"untracked_files": "Nesledované soubory",
|
||||
"untracked_files_decription": "Tyto soubory nejsou aplikaci známy. Mohou být výsledkem neúspěšných přesunů, přerušeného nahrávání nebo mohou zůstat pozadu kvůli chybě",
|
||||
"up_next": "To je prozatím vše",
|
||||
"updated_at": "Aktualizováno",
|
||||
"updated_password": "Heslo aktualizováno",
|
||||
"upload": "Nahrát",
|
||||
"upload_concurrency": "Souběžnost nahrávání",
|
||||
@@ -1886,20 +1840,15 @@
|
||||
"upload_status_errors": "Chyby",
|
||||
"upload_status_uploaded": "Nahráno",
|
||||
"upload_success": "Nahrání proběhlo úspěšně, obnovením stránky se zobrazí nově nahrané položky.",
|
||||
"upload_to_immich": "Nahrát do Immich ({count})",
|
||||
"upload_to_immich": "Nahrát do Immiche ({})",
|
||||
"uploading": "Nahrávání",
|
||||
"url": "URL",
|
||||
"usage": "Využití",
|
||||
"use_biometric": "Použít biometrické údaje",
|
||||
"use_current_connection": "použít aktuální připojení",
|
||||
"use_custom_date_range": "Použít vlastní rozsah dat",
|
||||
"user": "Uživatel",
|
||||
"user_has_been_deleted": "Tento uživatel byl smazán.",
|
||||
"user_id": "ID uživatele",
|
||||
"user_liked": "Uživateli {user} se {type, select, photo {líbila tato fotka} video {líbilo toto video} asset {líbila tato položka} other {to líbilo}}",
|
||||
"user_pin_code_settings": "PIN kód",
|
||||
"user_pin_code_settings_description": "Správa vašeho PIN kódu",
|
||||
"user_privacy": "Ochrana soukromí uživatelů",
|
||||
"user_purchase_settings": "Nákup",
|
||||
"user_purchase_settings_description": "Správa vašeho nákupu",
|
||||
"user_role_set": "Uživatel {user} nastaven jako {role}",
|
||||
@@ -1915,6 +1864,11 @@
|
||||
"version": "Verze",
|
||||
"version_announcement_closing": "Váš přítel Alex",
|
||||
"version_announcement_message": "Ahoj! K dispozici je nová verze aplikace Immich. Věnujte prosím chvíli přečtení <link>poznámek k vydání</link> a ujistěte se, že je vaše nastavení aktuální, abyste předešli případným chybným konfiguracím, zejména pokud používáte WatchTower nebo jiný mechanismus, který se stará o automatickou aktualizaci instance aplikace Immich.",
|
||||
"version_announcement_overlay_release_notes": "poznámky k vydání",
|
||||
"version_announcement_overlay_text_1": "Ahoj, k dispozici je nová verze",
|
||||
"version_announcement_overlay_text_2": "najděte si čas na návštěvu ",
|
||||
"version_announcement_overlay_text_3": " a ujistěte se, že vaše konfigurace docker-compose a .env je aktuální, abyste předešli nesprávné konfiguraci, zvláště pokud používáte WatchTower nebo jakýkoli mechanismus, který podporuje automatické aktualizace serverových aplikací.",
|
||||
"version_announcement_overlay_title": "K dispozici je nová verze serveru 🎉",
|
||||
"version_history": "Historie verzí",
|
||||
"version_history_item": "Nainstalováno {version} dne {date}",
|
||||
"video": "Video",
|
||||
@@ -1934,7 +1888,6 @@
|
||||
"view_previous_asset": "Zobrazit předchozí položku",
|
||||
"view_qr_code": "Zobrazit QR kód",
|
||||
"view_stack": "Zobrazit seskupení",
|
||||
"view_user": "Zobrazit uživatele",
|
||||
"viewer_remove_from_stack": "Odstranit ze zásobníku",
|
||||
"viewer_stack_use_as_main_asset": "Použít jako hlavní položku",
|
||||
"viewer_unstack": "Rozbalit zásobník",
|
||||
@@ -1945,7 +1898,6 @@
|
||||
"welcome": "Vítejte",
|
||||
"welcome_to_immich": "Vítejte v Immichi",
|
||||
"wifi_name": "Název Wi-Fi",
|
||||
"wrong_pin_code": "Chybný PIN kód",
|
||||
"year": "Rok",
|
||||
"years_ago": "Před {years, plural, one {rokem} other {# lety}}",
|
||||
"yes": "Ano",
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"asset_offline_description": "Библиотекӑн ҫак тулаш файлне дискра урӑх тупайман, карҫинккана куҫарнӑ. Енчен те файла вулавӑш ӑшне куҫарнӑ пулсан, тивӗҫлӗ ҫӗнӗ ресурс тупас тесен хӑвӑрӑн вӑхӑтлӑх шкалӑна тӗрӗслӗр. Ҫак файла ҫӗнӗрен чӗртес тесен файл патне каймалли ҫула Immich валли аяларах ҫитернине курса ӗненӗр, библиотекӑна сканерланине пурнӑҫлӑр.",
|
||||
"authentication_settings_disable_all": "Эсир кӗмелли пур меслетсене те чарса лартасшӑн тесе шутлатӑр-и? Кӗмелли шӑтӑка пӗтӗмпех уҫаҫҫӗ.",
|
||||
"background_task_job": "Курăнман ӗҫсем",
|
||||
"check_all": "Пурне те тӗрӗслӗр",
|
||||
"cleared_jobs": "Ӗҫсене тасатнӑ:{job}",
|
||||
"confirm_email_below": "Ҫирӗплетес тесен, аяларах «{email}» кӗртӗр",
|
||||
"confirm_reprocess_all_faces": "Пӗтӗм сӑнӗсене тепӗр хут палӑртас килет тесе шанатӑр-и? Ҫавӑн пекех ятсене пур ҫынран та хуратӗҫ.",
|
||||
|
||||
422
i18n/da.json
422
i18n/da.json
File diff suppressed because it is too large
Load Diff
294
i18n/de.json
294
i18n/de.json
@@ -22,7 +22,6 @@
|
||||
"add_partner": "Partner hinzufügen",
|
||||
"add_path": "Pfad hinzufügen",
|
||||
"add_photos": "Fotos hinzufügen",
|
||||
"add_tag": "Tag hinzufügen",
|
||||
"add_to": "Hinzufügen zu …",
|
||||
"add_to_album": "Zu Album hinzufügen",
|
||||
"add_to_album_bottom_sheet_added": "Zu {album} hinzugefügt",
|
||||
@@ -40,11 +39,13 @@
|
||||
"authentication_settings_disable_all": "Bist du sicher, dass du alle Anmeldemethoden deaktivieren willst? Die Anmeldung wird vollständig deaktiviert.",
|
||||
"authentication_settings_reenable": "Nutze einen <link>Server-Befehl</link> zur Reaktivierung.",
|
||||
"background_task_job": "Hintergrundaufgaben",
|
||||
"backup_database": "Datenbanksicherung regelmäßig erstellen",
|
||||
"backup_database_enable_description": "Datenbank regelmäßig sichern",
|
||||
"backup_keep_last_amount": "Anzahl der aufzubewahrenden früheren Backups",
|
||||
"backup_settings": "Einstellungen für Datenbanksicherung",
|
||||
"backup_settings_description": "Einstellungen zur regelmäßigen Sicherung der Datenbank. Hinweis: Diese Jobs werden nicht überwacht und du wirst nicht über Fehler informiert.",
|
||||
"backup_database": "Datenbankabbild erstellen",
|
||||
"backup_database_enable_description": "Erstellen von Datenbankabbildern aktivieren",
|
||||
"backup_keep_last_amount": "Anzahl der aufzubewahrenden früheren Abbilder",
|
||||
"backup_settings": "Datenbankabbild-Einstellungen",
|
||||
"backup_settings_description": "Einstellungen zum Datenbankabbild verwalten. Hinweis: Diese Jobs werden nicht überwacht und du wirst nicht über Fehlschläge informiert.",
|
||||
"check_all": "Alle überprüfen",
|
||||
"cleanup": "Aufräumen",
|
||||
"cleared_jobs": "Folgende Aufgaben zurückgesetzt: {job}",
|
||||
"config_set_by_file": "Ist derzeit in einer Konfigurationsdatei festgelegt",
|
||||
"confirm_delete_library": "Bist du sicher, dass du die Bibliothek {library} löschen willst?",
|
||||
@@ -52,20 +53,21 @@
|
||||
"confirm_email_below": "Bestätige, indem du unten \"{email}\" eingibst",
|
||||
"confirm_reprocess_all_faces": "Bist du sicher, dass du alle Gesichter erneut verarbeiten möchtest? Dies löscht auch alle bereits benannten Personen.",
|
||||
"confirm_user_password_reset": "Bist du sicher, dass du das Passwort für {user} zurücksetzen möchtest?",
|
||||
"confirm_user_pin_code_reset": "Bist du sicher, dass du den PIN Code von {user} zurücksetzen möchtest?",
|
||||
"create_job": "Aufgabe erstellen",
|
||||
"cron_expression": "Cron Zeitangabe",
|
||||
"cron_expression_description": "Setze ein Intervall für die Sicherung mittels cron. Hilfe mit dem Format bietet dir dabei z.B der <link>Crontab Guru</link>",
|
||||
"cron_expression_presets": "Nützliche Zeitangaben für Cron",
|
||||
"cron_expression": "Cron-Ausdruck",
|
||||
"cron_expression_description": "Stellen Sie das Scanintervall im Cron-Format ein. Weitere Informationen finden Sie beispielsweise unter <link>Crontab Guru</link>",
|
||||
"cron_expression_presets": "Cron-Ausdruck-Vorlagen",
|
||||
"disable_login": "Login deaktvieren",
|
||||
"duplicate_detection_job_description": "Diese Aufgabe führt das maschinelle Lernen für jede Datei aus, um Duplikate zu finden. Diese Aufgabe beruht auf der intelligenten Suche",
|
||||
"exclusion_pattern_description": "Mit Ausschlussmustern können Dateien und Ordner beim Scannen Ihrer Bibliothek ignoriert werden. Dies ist nützlich, wenn du Ordner hast, die Dateien enthalten, die du nicht importieren möchtest, wie z. B. RAW-Dateien.",
|
||||
"external_library_created_at": "Externe Bibliothek (erstellt am {date})",
|
||||
"external_library_management": "Verwaltung externer Bibliotheken",
|
||||
"face_detection": "Gesichtserkennung",
|
||||
"face_detection_description": "Diese Aufgabe erkennt Gesichter in Dateien mittels maschinellen Lernens. Bei Videos wird nur die Miniaturansicht verwendet. „Aktualisieren“ verarbeitet alle Dateien neu. „Zurücksetzen“ setzt zusätzlich alle Gesichter zurück. „Fehlende“ stellt nur nicht verarbeitete Dateien in die Warteschlange. Erkannte Gesichter werden zur Gruppierung in bestehende oder neue Personen in die Warteschlange gestellt.",
|
||||
"facial_recognition_job_description": "Diese Aufgabe gruppiert im Anschluss an die Gesichtserkennung die erkannten Gesichter zu Personen. „Zurücksetzen“ gruppiert alle Gesichter neu, während „Fehlende“ Gesichter ohne Zuordnung in die Warteschlange stellt.",
|
||||
"failed_job_command": "Befehl {command} ist für Aufgabe {job} fehlgeschlagen",
|
||||
"force_delete_user_warning": "WARNUNG: Diese Aktion löscht sofort den Benutzer und all seine Dateien. Dies kann nicht rückgängig gemacht werden und die Dateien können nicht wiederhergestellt werden.",
|
||||
"forcing_refresh_library_files": "Erneutes Laden aller Bibliotheksdateien erzwingen",
|
||||
"image_format": "Format",
|
||||
"image_format_description": "WebP erzeugt kleinere Dateien als JPEG, ist aber etwas langsamer in der Erstellung.",
|
||||
"image_fullsize_description": "Hochauflösendes Bild mit entfernten Metadaten, das beim Zoomen verwendet wird",
|
||||
@@ -170,7 +172,7 @@
|
||||
"note_apply_storage_label_previous_assets": "Hinweis: Um den Speicherpfad auf die vorher hochgeladenen Dateien anzuwenden, starte den",
|
||||
"note_cannot_be_changed_later": "HINWEIS: Dies kann später nicht mehr geändert werden!",
|
||||
"notification_email_from_address": "Absenderadresse",
|
||||
"notification_email_from_address_description": "E-Mail-Adresse des Senders, zum Beispiel: \"Immich Photo Server <noreply@example.com>\". Stelle sicher, dass du eine Adresse nutzt, die du berechtigt bist zu nutzen.",
|
||||
"notification_email_from_address_description": "E-Mail-Adresse des Senders, zum Beispiel: \"Immich Photo Server <noreply@example.com>\"",
|
||||
"notification_email_host_description": "Host des E-Mail-Servers (z.B. smtp.immich.app)",
|
||||
"notification_email_ignore_certificate_errors": "Ignoriere Zertifikats-Fehler",
|
||||
"notification_email_ignore_certificate_errors_description": "TLS-Zertifikatsvalidierungsfehler ignorieren (nicht empfohlen)",
|
||||
@@ -194,7 +196,7 @@
|
||||
"oauth_enable_description": "Anmeldung mit OAuth",
|
||||
"oauth_mobile_redirect_uri": "Mobile Umleitungs-URI",
|
||||
"oauth_mobile_redirect_uri_override": "Mobile Umleitungs-URI überschreiben",
|
||||
"oauth_mobile_redirect_uri_override_description": "Einschalten, wenn der OAuth-Anbieter keine mobile URI wie ''{callback}'' erlaubt",
|
||||
"oauth_mobile_redirect_uri_override_description": "Einschalten, wenn der OAuth-Anbieter keine mobile URI wie '{callback}' erlaubt",
|
||||
"oauth_settings": "OAuth",
|
||||
"oauth_settings_description": "OAuth-Anmeldeeinstellungen verwalten",
|
||||
"oauth_settings_more_details": "Weitere Informationen zu dieser Funktion findest du in der <link>Dokumentation</link>.",
|
||||
@@ -206,6 +208,8 @@
|
||||
"oauth_storage_quota_default_description": "Kontingent in GiB, das verwendet werden soll, wenn keines übermittelt wird (gib 0 für ein unbegrenztes Kontingent ein).",
|
||||
"oauth_timeout": "Zeitüberschreitung bei Anfrage",
|
||||
"oauth_timeout_description": "Zeitüberschreitung für Anfragen in Millisekunden",
|
||||
"offline_paths": "Offline-Pfade",
|
||||
"offline_paths_description": "Dies könnte durch manuelles Löschen von Dateien, die nicht Teil einer externen Bibliothek sind, verursacht sein.",
|
||||
"password_enable_description": "Mit E-Mail und Passwort anmelden",
|
||||
"password_settings": "Passwort-Anmeldung",
|
||||
"password_settings_description": "Passwort-Anmeldeeinstellungen verwalten",
|
||||
@@ -215,6 +219,9 @@
|
||||
"refreshing_all_libraries": "Alle Bibliotheken aktualisieren",
|
||||
"registration": "Admin-Registrierung",
|
||||
"registration_description": "Da du der erste Benutzer im System bist, wird dir die Rolle des Administrators zugewiesen, womit du für die Verwaltungsaufgaben verantwortlich bist. Weitere Benutzer werden von dir erstellt.",
|
||||
"repair_all": "Alle reparieren",
|
||||
"repair_matched_items": "{count, plural, one {# Eintrag} other {# Einträge}} gefunden",
|
||||
"repaired_items": "{count, plural, one {# Eintrag} other {# Einträge}} repariert",
|
||||
"require_password_change_on_login": "Benutzer muss das Passwort beim ersten Login ändern",
|
||||
"reset_settings_to_default": "Einstellungen auf Standard zurücksetzen",
|
||||
"reset_settings_to_recent_saved": "Einstellungen auf die zuletzt gespeicherten Einstellungen zurücksetzen",
|
||||
@@ -229,7 +236,7 @@
|
||||
"server_settings_description": "Servereinstellungen verwalten",
|
||||
"server_welcome_message": "Willkommensnachricht",
|
||||
"server_welcome_message_description": "Eine Mitteilung, welche auf der Anmeldeseite angezeigt wird.",
|
||||
"sidecar_job": "Sidecar Metadaten",
|
||||
"sidecar_job": "Filialdatei-Metadaten",
|
||||
"sidecar_job_description": "Durch diese Aufgabe werden Filialdatei-Metadaten im Dateisystem entdeckt oder synchronisiert",
|
||||
"slideshow_duration_description": "Dauer der Anzeige jedes Bildes in Sekunden",
|
||||
"smart_search_job_description": "Diese Aufgabe wendet das maschinelle Lernen auf Dateien an, um die intelligente Suche zu ermöglichen",
|
||||
@@ -255,14 +262,16 @@
|
||||
"template_email_invite_album": "E-Mail-Vorlage: Einladung zu Album",
|
||||
"template_email_preview": "Vorschau",
|
||||
"template_email_settings": "E-Mail-Vorlagen",
|
||||
"template_email_settings_description": "Benutzerdefinierte E-Mail-Benachrichtigungsvorlagen verwalten",
|
||||
"template_email_update_album": "Album-Vorlage aktualisieren",
|
||||
"template_email_welcome": "Willkommen bei den E-Mail-Vorlagen",
|
||||
"template_settings": "Benachrichtigungsvorlagen",
|
||||
"template_settings_description": "Benutzerdefinierte Vorlagen für Benachrichtigungen verwalten",
|
||||
"template_settings_description": "Benutzerdefinierte Vorlagen für Benachrichtigungen verwalten.",
|
||||
"theme_custom_css_settings": "Benutzerdefiniertes CSS",
|
||||
"theme_custom_css_settings_description": "Mit Cascading Style Sheets (CSS) kann das Design von Immich angepasst werden.",
|
||||
"theme_settings": "Theme-Einstellungen",
|
||||
"theme_settings_description": "Anpassung der Immich-Web-Oberfläche",
|
||||
"these_files_matched_by_checksum": "Diese Dateien wurden anhand ihrer Prüfsummen abgeglichen",
|
||||
"thumbnail_generation_job": "Miniaturansichten generieren",
|
||||
"thumbnail_generation_job_description": "Diese Aufgabe erzeugt große, kleine und unscharfe Miniaturansichten für jede einzelne Datei, sowie Miniaturansichten für jede Person",
|
||||
"transcoding_acceleration_api": "Beschleunigungs-API",
|
||||
@@ -290,9 +299,10 @@
|
||||
"transcoding_encoding_options": "Kodierungsoptionen",
|
||||
"transcoding_encoding_options_description": "Setze Codec, Auflösung, Qualität und andere Optionen für die kodierten Videos",
|
||||
"transcoding_hardware_acceleration": "Hardware-Beschleunigung",
|
||||
"transcoding_hardware_acceleration_description": "Experimentell: schnellere Transcodierung, kann aber die Qualität bei gleicher Bitrate verringern",
|
||||
"transcoding_hardware_acceleration_description": "Experimentell; viel schneller, aber bei gleicher Bitrate mit geringerer Qualität",
|
||||
"transcoding_hardware_decoding": "Hardware-Dekodierung",
|
||||
"transcoding_hardware_decoding_setting_description": "Ermöglicht eine Ende-zu-Ende-Beschleunigung, anstatt nur die Codierung zu beschleunigen. Dies funktioniert möglicherweise nicht bei allen Videos.",
|
||||
"transcoding_hevc_codec": "HEVC-Codec",
|
||||
"transcoding_max_b_frames": "Maximale B-Frames",
|
||||
"transcoding_max_b_frames_description": "Höhere Werte verbessern die Komprimierungseffizienz, verlangsamen aber die Kodierung. Ist möglicherweise nicht mit der Hardware-Beschleunigung älterer Geräte kompatibel. 0 deaktiviert die B-Frames, während -1 diesen Wert automatisch setzt.",
|
||||
"transcoding_max_bitrate": "Maximale Bitrate",
|
||||
@@ -330,13 +340,14 @@
|
||||
"trash_number_of_days_description": "Anzahl der Tage, welche die Objekte im Papierkorb verbleiben, bevor sie endgültig entfernt werden",
|
||||
"trash_settings": "Papierkorbeinstellungen",
|
||||
"trash_settings_description": "Papierkorbeinstellungen verwalten",
|
||||
"untracked_files": "Unverfolgte Dateien",
|
||||
"untracked_files_description": "Diese Dateien werden nicht von der Anwendung getrackt. Sie können das Ergebnis fehlgeschlagener Verschiebungen, unterbrochener Uploads oder aufgrund eines Fehlers sein",
|
||||
"user_cleanup_job": "Benutzer aufräumen",
|
||||
"user_delete_delay": "Das Konto und die Dateien von <b>{user}</b> werden in {delay, plural, one {einem Tag} other {# Tagen}} für eine permanente Löschung geplant.",
|
||||
"user_delete_delay_settings": "Verzögerung für das Löschen von Benutzern",
|
||||
"user_delete_delay_settings_description": "Gibt die Anzahl der Tage bis zur endgültigen Löschung eines Kontos und seiner Dateien an. Der Benutzerlöschauftrag wird täglich um Mitternacht ausgeführt, um zu überprüfen, ob Nutzer zur Löschung bereit sind. Änderungen an dieser Einstellung werden erst bei der nächsten Ausführung berücksichtigt.",
|
||||
"user_delete_immediately": "Das Konto und die Dateien von <b>{user}</b> werden <b>sofort</b> für eine permanente Löschung in die Warteschlange gestellt.",
|
||||
"user_delete_immediately_checkbox": "Benutzer und Dateien zur sofortigen Löschung in die Warteschlange stellen",
|
||||
"user_details": "Benutzerdetails",
|
||||
"user_management": "Benutzerverwaltung",
|
||||
"user_password_has_been_reset": "Das Passwort des Benutzers wurde zurückgesetzt:",
|
||||
"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.",
|
||||
@@ -358,7 +369,7 @@
|
||||
"advanced": "Erweitert",
|
||||
"advanced_settings_enable_alternate_media_filter_subtitle": "Verwende diese Option, um Medien während der Synchronisierung nach anderen Kriterien zu filtern. Versuchen dies nur, wenn Probleme mit der Erkennung aller Alben durch die App auftreten.",
|
||||
"advanced_settings_enable_alternate_media_filter_title": "[EXPERIMENTELL] Benutze alternativen Filter für Synchronisierung der Gerätealben",
|
||||
"advanced_settings_log_level_title": "Log-Level: {level}",
|
||||
"advanced_settings_log_level_title": "Log-Level: {name}",
|
||||
"advanced_settings_prefer_remote_subtitle": "Einige Geräte sind sehr langsam beim Laden von Miniaturbildern direkt aus dem Gerät. Aktivieren Sie diese Einstellung, um stattdessen die Server-Bilder zu laden.",
|
||||
"advanced_settings_prefer_remote_title": "Server-Bilder bevorzugen",
|
||||
"advanced_settings_proxy_headers_subtitle": "Definiere einen Proxy-Header, den Immich bei jeder Netzwerkanfrage mitschicken soll",
|
||||
@@ -388,6 +399,10 @@
|
||||
"album_remove_user": "Nutzer entfernen?",
|
||||
"album_remove_user_confirmation": "Bist du sicher, dass du {user} entfernen willst?",
|
||||
"album_share_no_users": "Es sieht so aus, als hättest du dieses Album mit allen Benutzern geteilt oder du hast keine Benutzer, mit denen du teilen kannst.",
|
||||
"album_thumbnail_card_item": "1 Element",
|
||||
"album_thumbnail_card_items": "{} Elemente",
|
||||
"album_thumbnail_card_shared": " · Geteilt",
|
||||
"album_thumbnail_shared_by": "Geteilt von {}",
|
||||
"album_updated": "Album aktualisiert",
|
||||
"album_updated_setting_description": "Erhalte eine E-Mail-Benachrichtigung, wenn ein freigegebenes Album neue Dateien enthält",
|
||||
"album_user_left": "{album} verlassen",
|
||||
@@ -403,9 +418,6 @@
|
||||
"album_with_link_access": "Lass jeden mit dem Link die Fotos und Personen in diesem Album sehen.",
|
||||
"albums": "Alben",
|
||||
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Alben}}",
|
||||
"albums_default_sort_order": "Standard Album Sortierung",
|
||||
"albums_default_sort_order_description": "Sortierreihenfolge der Dateien bei der Erstellung neuer Alben.",
|
||||
"albums_feature_description": "Sammlung an Alben die mit anderen Benutzern geteilt werden können.",
|
||||
"all": "Alle",
|
||||
"all_albums": "Alle Alben",
|
||||
"all_people": "Alle Personen",
|
||||
@@ -428,7 +440,7 @@
|
||||
"archive": "Archiv",
|
||||
"archive_or_unarchive_photo": "Foto archivieren bzw. Archivierung aufheben",
|
||||
"archive_page_no_archived_assets": "Keine archivierten Inhalte gefunden",
|
||||
"archive_page_title": "Archiv ({count})",
|
||||
"archive_page_title": "Archiv ({})",
|
||||
"archive_size": "Archivgröße",
|
||||
"archive_size_description": "Archivgröße für Downloads konfigurieren (in GiB)",
|
||||
"archived": "Archiviert",
|
||||
@@ -464,32 +476,28 @@
|
||||
"assets_added_count": "{count, plural, one {# Datei} other {# Dateien}} hinzugefügt",
|
||||
"assets_added_to_album_count": "{count, plural, one {# Datei} other {# Dateien}} zum Album hinzugefügt",
|
||||
"assets_added_to_name_count": "{count, plural, one {# Element} other {# Elemente}} zu {hasName, select, true {<b>{name}</b>} other {neuem Album}} hinzugefügt",
|
||||
"assets_cannot_be_added_to_album_count": "{count, plural, one {Datei kann}other {Dateien können}} nicht zum Album hinzugefügt werden",
|
||||
"assets_count": "{count, plural, one {# Datei} other {# Dateien}}",
|
||||
"assets_deleted_permanently": "{count} Element(e) permanent gelöscht",
|
||||
"assets_deleted_permanently_from_server": "{count} Element(e) permanent vom Immich-Server gelöscht",
|
||||
"assets_downloaded_failed": "{count, plural, one {# Datei heruntergeladen - {error} fehlgeschlagen} other {# Dateien heruntergeladen - {error} fehlgeschlagen}}",
|
||||
"assets_downloaded_successfully": "{count, plural, one {# Datei erfolgreich heruntergeladen} other {# Dateien erfolgreich heruntergeladen}}",
|
||||
"assets_deleted_permanently": "{} Element(e) permanent gelöscht",
|
||||
"assets_deleted_permanently_from_server": "{} Element(e) permanent vom Immich-Server gelöscht",
|
||||
"assets_moved_to_trash_count": "{count, plural, one {# Datei} other {# Dateien}} in den Papierkorb verschoben",
|
||||
"assets_permanently_deleted_count": "{count, plural, one {# Datei} other {# Dateien}} endgültig gelöscht",
|
||||
"assets_removed_count": "{count, plural, one {# Datei} other {# Dateien}} entfernt",
|
||||
"assets_removed_permanently_from_device": "{count} Element(e) permanent von Ihrem Gerät gelöscht",
|
||||
"assets_removed_permanently_from_device": "{} Element(e) permanent von Ihrem Gerät gelöscht",
|
||||
"assets_restore_confirmation": "Bist du sicher, dass du alle Dateien aus dem Papierkorb wiederherstellen willst? Diese Aktion kann nicht rückgängig gemacht werden! Beachte, dass Offline-Dateien auf diese Weise nicht wiederhergestellt werden können.",
|
||||
"assets_restored_count": "{count, plural, one {# Datei} other {# Dateien}} wiederhergestellt",
|
||||
"assets_restored_successfully": "{count} Element(e) erfolgreich wiederhergestellt",
|
||||
"assets_trashed": "{count} Element(e) gelöscht",
|
||||
"assets_restored_successfully": "{} Element(e) erfolgreich wiederhergestellt",
|
||||
"assets_trashed": "{} Element(e) gelöscht",
|
||||
"assets_trashed_count": "{count, plural, one {# Datei} other {# Dateien}} in den Papierkorb verschoben",
|
||||
"assets_trashed_from_server": "{count} Element(e) vom Immich-Server gelöscht",
|
||||
"assets_trashed_from_server": "{} Element(e) vom Immich-Server gelöscht",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {# Datei ist} other {# Dateien sind}} bereits im Album vorhanden",
|
||||
"authorized_devices": "Verwendete Geräte",
|
||||
"automatic_endpoint_switching_subtitle": "Verbinden Sie sich lokal über ein bestimmtes WLAN, wenn es verfügbar ist, und verwenden Sie andere Verbindungsmöglichkeiten anderswo",
|
||||
"automatic_endpoint_switching_title": "Automatische URL-Umschaltung",
|
||||
"autoplay_slideshow": "Automatische Diashow",
|
||||
"back": "Zurück",
|
||||
"back_close_deselect": "Zurück, Schließen oder Abwählen",
|
||||
"background_location_permission": "Hintergrund Standortfreigabe",
|
||||
"background_location_permission_content": "Um im Hintergrund zwischen den Netzwerken wechseln zu können, muss Immich *immer* Zugriff auf den genauen Standort haben, damit die App den Namen des WLAN-Netzwerks ermitteln kann",
|
||||
"backup_album_selection_page_albums_device": "Alben auf dem Gerät ({count})",
|
||||
"backup_album_selection_page_albums_device": "Alben auf dem Gerät ({})",
|
||||
"backup_album_selection_page_albums_tap": "Einmalig das Album antippen um es zu sichern, doppelt antippen um es nicht mehr zu sichern",
|
||||
"backup_album_selection_page_assets_scatter": "Elemente (Fotos / Videos) können sich über mehrere Alben verteilen. Daher können diese vor der Sicherung eingeschlossen oder ausgeschlossen werden.",
|
||||
"backup_album_selection_page_select_albums": "Alben auswählen",
|
||||
@@ -498,22 +506,22 @@
|
||||
"backup_all": "Alle",
|
||||
"backup_background_service_backup_failed_message": "Es trat ein Fehler bei der Sicherung auf. Erneuter Versuch…",
|
||||
"backup_background_service_connection_failed_message": "Es konnte keine Verbindung zum Server hergestellt werden. Erneuter Versuch…",
|
||||
"backup_background_service_current_upload_notification": "Lädt {filename} hoch",
|
||||
"backup_background_service_current_upload_notification": "Lädt {} hoch",
|
||||
"backup_background_service_default_notification": "Suche nach neuen Elementen…",
|
||||
"backup_background_service_error_title": "Fehler bei der Sicherung",
|
||||
"backup_background_service_in_progress_notification": "Elemente werden gesichert…",
|
||||
"backup_background_service_upload_failure_notification": "Konnte {filename} nicht hochladen",
|
||||
"backup_background_service_upload_failure_notification": "Konnte {} nicht hochladen",
|
||||
"backup_controller_page_albums": "Gesicherte Alben",
|
||||
"backup_controller_page_background_app_refresh_disabled_content": "Aktiviere Hintergrundaktualisierungen in Einstellungen -> Allgemein -> Hintergrundaktualisierungen um Sicherungen im Hintergrund zu ermöglichen.",
|
||||
"backup_controller_page_background_app_refresh_disabled_title": "Hintergrundaktualisierungen sind deaktiviert",
|
||||
"backup_controller_page_background_app_refresh_enable_button_text": "Gehe zu Einstellungen",
|
||||
"backup_controller_page_background_battery_info_link": "Zeige mir wie",
|
||||
"backup_controller_page_background_battery_info_message": "Für die besten Ergebnisse für Sicherungen im Hintergrund, deaktiviere alle Batterieoptimierungen und Einschränkungen für die Hintergrundaktivitäten von Immich.\n\nDa dies gerätespezifisch ist, schlage diese Informationen für deinen Gerätehersteller nach.",
|
||||
"backup_controller_page_background_battery_info_ok": "Ok",
|
||||
"backup_controller_page_background_battery_info_ok": "OK",
|
||||
"backup_controller_page_background_battery_info_title": "Batterieoptimierungen",
|
||||
"backup_controller_page_background_charging": "Nur während des Ladens",
|
||||
"backup_controller_page_background_configure_error": "Konnte Hintergrundservice nicht konfigurieren",
|
||||
"backup_controller_page_background_delay": "Sicherung neuer Elemente verzögern um: {duration}",
|
||||
"backup_controller_page_background_delay": "Sicherung neuer Elemente verzögern um: {}",
|
||||
"backup_controller_page_background_description": "Schalte den Hintergrundservice ein, um neue Elemente automatisch im Hintergrund zu sichern ohne die App zu öffnen",
|
||||
"backup_controller_page_background_is_off": "Automatische Sicherung im Hintergrund ist deaktiviert",
|
||||
"backup_controller_page_background_is_on": "Automatische Sicherung im Hintergrund ist aktiviert",
|
||||
@@ -523,12 +531,12 @@
|
||||
"backup_controller_page_backup": "Sicherung",
|
||||
"backup_controller_page_backup_selected": "Ausgewählt: ",
|
||||
"backup_controller_page_backup_sub": "Gesicherte Fotos und Videos",
|
||||
"backup_controller_page_created": "Erstellt am: {date}",
|
||||
"backup_controller_page_created": "Erstellt am: {}",
|
||||
"backup_controller_page_desc_backup": "Aktiviere die Sicherung, um Elemente immer automatisch auf den Server zu laden, während du die App benutzt.",
|
||||
"backup_controller_page_excluded": "Ausgeschlossen: ",
|
||||
"backup_controller_page_failed": "Fehlgeschlagen ({count})",
|
||||
"backup_controller_page_filename": "Dateiname: {filename} [{size}]",
|
||||
"backup_controller_page_id": "ID: {id}",
|
||||
"backup_controller_page_failed": "Fehlgeschlagen ({})",
|
||||
"backup_controller_page_filename": "Dateiname: {} [{}]",
|
||||
"backup_controller_page_id": "ID: {}",
|
||||
"backup_controller_page_info": "Informationen zur Sicherung",
|
||||
"backup_controller_page_none_selected": "Keine ausgewählt",
|
||||
"backup_controller_page_remainder": "Verbleibend",
|
||||
@@ -537,7 +545,7 @@
|
||||
"backup_controller_page_start_backup": "Sicherung starten",
|
||||
"backup_controller_page_status_off": "Sicherung im Vordergrund ist inaktiv",
|
||||
"backup_controller_page_status_on": "Sicherung im Vordergrund ist aktiv",
|
||||
"backup_controller_page_storage_format": "{used} von {total} genutzt",
|
||||
"backup_controller_page_storage_format": "{} von {} genutzt",
|
||||
"backup_controller_page_to_backup": "Zu sichernde Alben",
|
||||
"backup_controller_page_total_sub": "Alle Fotos und Videos",
|
||||
"backup_controller_page_turn_off": "Sicherung im Vordergrund ausschalten",
|
||||
@@ -552,10 +560,6 @@
|
||||
"backup_options_page_title": "Sicherungsoptionen",
|
||||
"backup_setting_subtitle": "Verwaltung der Upload-Einstellungen im Hintergrund und im Vordergrund",
|
||||
"backward": "Rückwärts",
|
||||
"biometric_auth_enabled": "Biometrische Authentifizierung aktiviert",
|
||||
"biometric_locked_out": "Du bist von der biometrischen Authentifizierung ausgeschlossen",
|
||||
"biometric_no_options": "Keine biometrischen Optionen verfügbar",
|
||||
"biometric_not_available": "Die biometrische Authentifizierung ist auf diesem Gerät nicht verfügbar",
|
||||
"birthdate_saved": "Geburtsdatum erfolgreich gespeichert",
|
||||
"birthdate_set_description": "Das Geburtsdatum wird verwendet, um das Alter dieser Person zum Zeitpunkt eines Fotos zu berechnen.",
|
||||
"blurred_background": "Unscharfer Hintergrund",
|
||||
@@ -566,17 +570,21 @@
|
||||
"bulk_keep_duplicates_confirmation": "Bist du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateien}} behalten möchtest? Dies wird alle Duplikat-Gruppen auflösen ohne etwas zu löschen.",
|
||||
"bulk_trash_duplicates_confirmation": "Bist du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateien gemeinsam}} in den Papierkorb verschieben möchtest? Dies wird die größte Datei jeder Gruppe behalten und alle anderen Duplikate in den Papierkorb verschieben.",
|
||||
"buy": "Immich erwerben",
|
||||
"cache_settings_album_thumbnails": "Vorschaubilder der Bibliothek ({} Elemente)",
|
||||
"cache_settings_clear_cache_button": "Zwischenspeicher löschen",
|
||||
"cache_settings_clear_cache_button_title": "Löscht den Zwischenspeicher der App. Dies wird die Leistungsfähigkeit der App deutlich einschränken, bis der Zwischenspeicher wieder aufgebaut wurde.",
|
||||
"cache_settings_duplicated_assets_clear_button": "LEEREN",
|
||||
"cache_settings_duplicated_assets_subtitle": "Fotos und Videos, die von der App blockiert werden",
|
||||
"cache_settings_duplicated_assets_title": "Duplikate ({count})",
|
||||
"cache_settings_duplicated_assets_title": "Duplikate ({})",
|
||||
"cache_settings_image_cache_size": "Bilder im Zwischenspeicher ({} Bilder)",
|
||||
"cache_settings_statistics_album": "Vorschaubilder der Bibliothek",
|
||||
"cache_settings_statistics_assets": "{} Elemente ({})",
|
||||
"cache_settings_statistics_full": "Originalbilder",
|
||||
"cache_settings_statistics_shared": "Vorschaubilder geteilter Alben",
|
||||
"cache_settings_statistics_thumbnail": "Vorschaubilder",
|
||||
"cache_settings_statistics_title": "Zwischenspeicher-Nutzung",
|
||||
"cache_settings_subtitle": "Kontrollieren, wie Immich den Zwischenspeicher nutzt",
|
||||
"cache_settings_thumbnail_size": "Vorschaubilder im Zwischenspeicher ({} Bilder)",
|
||||
"cache_settings_tile_subtitle": "Lokalen Speicher verwalten",
|
||||
"cache_settings_tile_title": "Lokaler Speicher",
|
||||
"cache_settings_title": "Zwischenspeicher Einstellungen",
|
||||
@@ -589,10 +597,7 @@
|
||||
"cannot_merge_people": "Personen können nicht zusammengeführt werden",
|
||||
"cannot_undo_this_action": "Diese Aktion kann nicht rückgängig gemacht werden!",
|
||||
"cannot_update_the_description": "Beschreibung kann nicht aktualisiert werden",
|
||||
"cast": "Übertragen",
|
||||
"cast_description": "Konfiguration verfügbarer Ziele",
|
||||
"change_date": "Datum ändern",
|
||||
"change_description": "Beschreibung anpassen",
|
||||
"change_display_order": "Anzeigereihenfolge ändern",
|
||||
"change_expiration_time": "Verfallszeitpunkt ändern",
|
||||
"change_location": "Ort ändern",
|
||||
@@ -605,9 +610,9 @@
|
||||
"change_password_form_new_password": "Neues Passwort",
|
||||
"change_password_form_password_mismatch": "Passwörter stimmen nicht überein",
|
||||
"change_password_form_reenter_new_password": "Passwort erneut eingeben",
|
||||
"change_pin_code": "PIN Code ändern",
|
||||
"change_your_password": "Ändere dein Passwort",
|
||||
"changed_visibility_successfully": "Die Sichtbarkeit wurde erfolgreich geändert",
|
||||
"check_all": "Alle prüfen",
|
||||
"check_corrupt_asset_backup": "Auf beschädigte Asset-Backups überprüfen",
|
||||
"check_corrupt_asset_backup_button": "Überprüfung durchführen",
|
||||
"check_corrupt_asset_backup_description": "Führe diese Prüfung nur mit aktivierten WLAN durch, nachdem alle Dateien gesichert worden sind. Dieser Vorgang kann ein paar Minuten dauern.",
|
||||
@@ -619,7 +624,7 @@
|
||||
"clear_all_recent_searches": "Alle letzten Suchvorgänge löschen",
|
||||
"clear_message": "Nachrichten leeren",
|
||||
"clear_value": "Wert leeren",
|
||||
"client_cert_dialog_msg_confirm": "Ok",
|
||||
"client_cert_dialog_msg_confirm": "OK",
|
||||
"client_cert_enter_password": "Passwort eingeben",
|
||||
"client_cert_import": "Importieren",
|
||||
"client_cert_import_success_msg": "Client Zertifikat wurde importiert",
|
||||
@@ -645,21 +650,17 @@
|
||||
"confirm_delete_face": "Bist du sicher dass du das Gesicht von {name} aus der Datei entfernen willst?",
|
||||
"confirm_delete_shared_link": "Bist du sicher, dass du diesen geteilten Link löschen willst?",
|
||||
"confirm_keep_this_delete_others": "Alle anderen Dateien im Stapel bis auf diese werden gelöscht. Bist du sicher, dass du fortfahren möchten?",
|
||||
"confirm_new_pin_code": "Neuen PIN Code bestätigen",
|
||||
"confirm_password": "Passwort bestätigen",
|
||||
"confirm_tag_face": "Wollen Sie dieses Gesicht mit {name} markieren?",
|
||||
"confirm_tag_face_unnamed": "Möchten Sie dieses Gesicht markieren?",
|
||||
"connected_device": "Verbundenes Gerät",
|
||||
"connected_to": "Verbunden mit",
|
||||
"contain": "Vollständig",
|
||||
"context": "Kontext",
|
||||
"continue": "Fortsetzen",
|
||||
"control_bottom_app_bar_album_info_shared": "{} Elemente · Geteilt",
|
||||
"control_bottom_app_bar_create_new_album": "Neues Album erstellen",
|
||||
"control_bottom_app_bar_delete_from_immich": "Aus Immich löschen",
|
||||
"control_bottom_app_bar_delete_from_local": "Vom Gerät löschen",
|
||||
"control_bottom_app_bar_edit_location": "Ort bearbeiten",
|
||||
"control_bottom_app_bar_edit_time": "Datum und Uhrzeit bearbeiten",
|
||||
"control_bottom_app_bar_share_link": "Link teilen",
|
||||
"control_bottom_app_bar_share_link": "Share Link",
|
||||
"control_bottom_app_bar_share_to": "Teilen mit",
|
||||
"control_bottom_app_bar_trash_from_immich": "in den Papierkorb schieben",
|
||||
"copied_image_to_clipboard": "Das Bild wurde in die Zwischenablage kopiert.",
|
||||
@@ -691,18 +692,15 @@
|
||||
"create_tag_description": "Erstelle einen neuen Tag. Für verschachtelte Tags, gib den gesamten Pfad inklusive Schrägstrich an.",
|
||||
"create_user": "Nutzer erstellen",
|
||||
"created": "Erstellt",
|
||||
"created_at": "Erstellt",
|
||||
"crop": "Zuschneiden",
|
||||
"curated_object_page_title": "Dinge",
|
||||
"current_device": "Aktuelles Gerät",
|
||||
"current_pin_code": "Aktueller PIN Code",
|
||||
"current_server_address": "Aktuelle Serveradresse",
|
||||
"custom_locale": "Benutzerdefinierte Sprache",
|
||||
"custom_locale_description": "Datumsangaben und Zahlen je nach Sprache und Land formatieren",
|
||||
"daily_title_text_date": "E, dd MMM",
|
||||
"daily_title_text_date_year": "E, dd MMM, yyyy",
|
||||
"dark": "Dunkel",
|
||||
"darkTheme": "Dunkles Theme umschalten",
|
||||
"date_after": "Datum nach",
|
||||
"date_and_time": "Datum und Zeit",
|
||||
"date_before": "Datum vor",
|
||||
@@ -750,7 +748,6 @@
|
||||
"disallow_edits": "Bearbeitungen verbieten",
|
||||
"discord": "Discord",
|
||||
"discover": "Entdecken",
|
||||
"discovered_devices": "Gefundene Geräte",
|
||||
"dismiss_all_errors": "Alle Fehler ignorieren",
|
||||
"dismiss_error": "Fehler ignorieren",
|
||||
"display_options": "Anzeigeoptionen",
|
||||
@@ -766,6 +763,7 @@
|
||||
"download_enqueue": "Download in die Warteschlange gesetzt",
|
||||
"download_error": "Download fehlerhaft",
|
||||
"download_failed": "Download fehlerhaft",
|
||||
"download_filename": "Datei: {}",
|
||||
"download_finished": "Download abgeschlossen",
|
||||
"download_include_embedded_motion_videos": "Eingebettete Videos",
|
||||
"download_include_embedded_motion_videos_description": "Videos, die in Bewegungsfotos eingebettet sind, als separate Datei einfügen",
|
||||
@@ -789,8 +787,6 @@
|
||||
"edit_avatar": "Avatar bearbeiten",
|
||||
"edit_date": "Datum bearbeiten",
|
||||
"edit_date_and_time": "Datum und Uhrzeit bearbeiten",
|
||||
"edit_description": "Beschreibung bearbeiten",
|
||||
"edit_description_prompt": "Bitte wähle eine neue Beschreibung:",
|
||||
"edit_exclusion_pattern": "Ausschlussmuster bearbeiten",
|
||||
"edit_faces": "Gesichter bearbeiten",
|
||||
"edit_import_path": "Importpfad bearbeiten",
|
||||
@@ -811,24 +807,19 @@
|
||||
"editor_crop_tool_h2_aspect_ratios": "Seitenverhältnisse",
|
||||
"editor_crop_tool_h2_rotation": "Drehung",
|
||||
"email": "E-Mail",
|
||||
"email_notifications": "E-Mail Benachrichtigungen",
|
||||
"empty_folder": "Dieser Ordner ist leer",
|
||||
"empty_trash": "Papierkorb leeren",
|
||||
"empty_trash_confirmation": "Bist du sicher, dass du den Papierkorb leeren willst?\nDies entfernt alle Dateien im Papierkorb endgültig aus Immich und kann nicht rückgängig gemacht werden!",
|
||||
"enable": "Aktivieren",
|
||||
"enable_biometric_auth_description": "Gib deinen PIN Code ein, um die biometrische Authentifizierung zu aktivieren",
|
||||
"enabled": "Aktiviert",
|
||||
"end_date": "Enddatum",
|
||||
"enqueued": "Eingereiht",
|
||||
"enter_wifi_name": "WLAN-Name eingeben",
|
||||
"enter_your_pin_code": "PIN Code eingeben",
|
||||
"enter_your_pin_code_subtitle": "Gib deinen PIN Code ein, um auf den gesperrten Ordner zuzugreifen",
|
||||
"error": "Fehler",
|
||||
"error_change_sort_album": "Ändern der Anzeigereihenfolge fehlgeschlagen",
|
||||
"error_delete_face": "Fehler beim Löschen des Gesichts",
|
||||
"error_loading_image": "Fehler beim Laden des Bildes",
|
||||
"error_saving_image": "Fehler: {error}",
|
||||
"error_tag_face_bounding_box": "Fehler beim Markieren des Gesichts - Begrenzungen können nicht abgerufen werden",
|
||||
"error_saving_image": "Fehler: {}",
|
||||
"error_title": "Fehler - Etwas ist schief gelaufen",
|
||||
"errors": {
|
||||
"cannot_navigate_next_asset": "Kann nicht zur nächsten Datei navigieren",
|
||||
@@ -841,6 +832,7 @@
|
||||
"cant_get_number_of_comments": "Anzahl der Kommentare konnte nicht abgerufen werden",
|
||||
"cant_search_people": "Personen konnten nicht gesucht werden",
|
||||
"cant_search_places": "Orte konnten nicht gesucht werden",
|
||||
"cleared_jobs": "Folgende Aufgaben zurückgesetzt: {job}",
|
||||
"error_adding_assets_to_album": "Fehler beim Hinzufügen von Dateien zum Album",
|
||||
"error_adding_users_to_album": "Fehler beim Hinzufügen von Benutzern zum Album",
|
||||
"error_deleting_shared_user": "Fehler beim Löschen des geteilten Benutzers",
|
||||
@@ -849,6 +841,7 @@
|
||||
"error_removing_assets_from_album": "Fehler beim Entfernen von Dateien aus dem Album, siehe Konsole für weitere Details",
|
||||
"error_selecting_all_assets": "Fehler beim Auswählen aller Dateien",
|
||||
"exclusion_pattern_already_exists": "Dieses Ausschlussmuster existiert bereits.",
|
||||
"failed_job_command": "Befehl {command} ist für Aufgabe {job} fehlgeschlagen",
|
||||
"failed_to_create_album": "Album konnte nicht erstellt werden",
|
||||
"failed_to_create_shared_link": "Geteilter Link konnte nicht erstellt werden",
|
||||
"failed_to_edit_shared_link": "Geteilter Link konnte nicht bearbeitet werden",
|
||||
@@ -867,6 +860,7 @@
|
||||
"paths_validation_failed": "{paths, plural, one {# Pfad konnte} other {# Pfade konnten}} nicht validiert werden",
|
||||
"profile_picture_transparent_pixels": "Profilbilder dürfen keine transparenten Pixel haben. Bitte zoome heran und/oder verschiebe das Bild.",
|
||||
"quota_higher_than_disk_size": "Dein festgelegtes Kontingent ist größer als der verfügbare Speicher",
|
||||
"repair_unable_to_check_items": "{count, select, one {Eintrag konnte} other {Einträge konnten}} nicht überprüft werden",
|
||||
"unable_to_add_album_users": "Benutzer konnten nicht zum Album hinzugefügt werden",
|
||||
"unable_to_add_assets_to_shared_link": "Datei konnte nicht zum geteilten Link hinzugefügt werden",
|
||||
"unable_to_add_comment": "Es kann kein Kommentar hinzufügt werden",
|
||||
@@ -878,13 +872,13 @@
|
||||
"unable_to_archive_unarchive": "Konnte nicht {archived, select, true {archivieren} other {entarchivieren}}",
|
||||
"unable_to_change_album_user_role": "Die Rolle des Albumbenutzers kann nicht geändert werden",
|
||||
"unable_to_change_date": "Datum kann nicht verändert werden",
|
||||
"unable_to_change_description": "Ändern der Beschreibung nicht möglich",
|
||||
"unable_to_change_favorite": "Es konnte der Favoritenstatus für diese Datei nicht geändert werden",
|
||||
"unable_to_change_location": "Ort kann nicht verändert werden",
|
||||
"unable_to_change_password": "Passwort konnte nicht geändert werden",
|
||||
"unable_to_change_visibility": "Sichtbarkeit von {count, plural, one {einer Person} other {# Personen}} konnte nicht geändert werden",
|
||||
"unable_to_complete_oauth_login": "OAuth-Anmeldung konnte nicht abgeschlossen werden",
|
||||
"unable_to_connect": "Verbindung konnte nicht hergestellt werden",
|
||||
"unable_to_connect_to_server": "Verbindung zum Server konnte nicht hergestellt werden",
|
||||
"unable_to_copy_to_clipboard": "Konnte nicht in die Zwischenablage kopieren, stelle sicher, dass du per https auf die Seite zugreifst",
|
||||
"unable_to_create_admin_account": "Administratorkonto konnte nicht erstellt werden",
|
||||
"unable_to_create_api_key": "Es konnte kein API-Schlüssel erstellt werden",
|
||||
@@ -908,6 +902,10 @@
|
||||
"unable_to_hide_person": "Person kann nicht versteckt werden",
|
||||
"unable_to_link_motion_video": "Bewegungsvideo kann nicht verknüpft werden",
|
||||
"unable_to_link_oauth_account": "OAuth-Konto kann nicht verknüpft werden",
|
||||
"unable_to_load_album": "Album kann nicht geladen werden",
|
||||
"unable_to_load_asset_activity": "Foto-Aktivität konnte nicht geladen werden",
|
||||
"unable_to_load_items": "Elemente konnten nicht geladen werden",
|
||||
"unable_to_load_liked_status": "Gewünschter Status kann nicht geladen werden",
|
||||
"unable_to_log_out_all_devices": "Konnte nicht von allen Geräten abmelden",
|
||||
"unable_to_log_out_device": "Konnte nicht vom Gerät abmelden",
|
||||
"unable_to_login_with_oauth": "Anmeldung mit OAuth nicht möglich",
|
||||
@@ -918,11 +916,12 @@
|
||||
"unable_to_remove_album_users": "Mitglieder der Alben können nicht entfernt werden",
|
||||
"unable_to_remove_api_key": "API-Schlüssel konnte nicht entfernt werden",
|
||||
"unable_to_remove_assets_from_shared_link": "Dateien konnten nicht von geteiltem Link entfernt werden",
|
||||
"unable_to_remove_deleted_assets": "Offline-Dateien konnten nicht entfernt werden",
|
||||
"unable_to_remove_library": "Bibliothek kann nicht entfernt werden",
|
||||
"unable_to_remove_partner": "Partner kann nicht entfernt werden",
|
||||
"unable_to_remove_reaction": "Reaktion kann nicht entfernt werden",
|
||||
"unable_to_repair_items": "Objekte können nicht repariert werden",
|
||||
"unable_to_reset_password": "Passwort kann nicht zurückgesetzt werden",
|
||||
"unable_to_reset_pin_code": "Zurücksetzen des PIN Code nicht möglich",
|
||||
"unable_to_resolve_duplicate": "Duplikate können nicht aufgelöst werden",
|
||||
"unable_to_restore_assets": "Dateien konnten nicht wiederhergestellt werden",
|
||||
"unable_to_restore_trash": "Papierkorb kann nicht wiederhergestellt werden",
|
||||
@@ -956,9 +955,10 @@
|
||||
"exif_bottom_sheet_location": "STANDORT",
|
||||
"exif_bottom_sheet_people": "PERSONEN",
|
||||
"exif_bottom_sheet_person_add_person": "Namen hinzufügen",
|
||||
"exif_bottom_sheet_person_age_months": "{months} Monate alt",
|
||||
"exif_bottom_sheet_person_age_year_months": "1 Jahr, {months} Monate alt",
|
||||
"exif_bottom_sheet_person_age_years": "Alter {years}",
|
||||
"exif_bottom_sheet_person_age": "Alter {}",
|
||||
"exif_bottom_sheet_person_age_months": "{} Monate alt",
|
||||
"exif_bottom_sheet_person_age_year_months": "1 Jahr, {} Monate alt",
|
||||
"exif_bottom_sheet_person_age_years": "Alter {}",
|
||||
"exit_slideshow": "Diashow beenden",
|
||||
"expand_all": "Alle aufklappen",
|
||||
"experimental_settings_new_asset_list_subtitle": "In Arbeit",
|
||||
@@ -967,7 +967,7 @@
|
||||
"experimental_settings_title": "Experimentell",
|
||||
"expire_after": "Verfällt nach",
|
||||
"expired": "Verfallen",
|
||||
"expires_date": "Läuft ab: {date}",
|
||||
"expires_date": "Läuft am {date} ab",
|
||||
"explore": "Erkunden",
|
||||
"explorer": "Datei-Explorer",
|
||||
"export": "Exportieren",
|
||||
@@ -979,7 +979,6 @@
|
||||
"external_network_sheet_info": "Wenn sich die App nicht im bevorzugten WLAN-Netzwerk befindet, verbindet sie sich mit dem Server über die erste der folgenden URLs, die sie erreichen kann (von oben nach unten)",
|
||||
"face_unassigned": "Nicht zugewiesen",
|
||||
"failed": "Fehlgeschlagen",
|
||||
"failed_to_authenticate": "Authentifizierung fehlgeschlagen",
|
||||
"failed_to_load_assets": "Laden der Assets fehlgeschlagen",
|
||||
"failed_to_load_folder": "Fehler beim Laden des Ordners",
|
||||
"favorite": "Favorit",
|
||||
@@ -1003,8 +1002,6 @@
|
||||
"folders": "Ordner",
|
||||
"folders_feature_description": "Durchsuchen der Ordneransicht für Fotos und Videos im Dateisystem",
|
||||
"forward": "Vorwärts",
|
||||
"gcast_enabled": "Google Cast",
|
||||
"gcast_enabled_description": "Diese Funktion lädt externe Quellen von Google, um zu funktionieren.",
|
||||
"general": "Allgemein",
|
||||
"get_help": "Hilfe erhalten",
|
||||
"get_wifiname_error": "WLAN-Name konnte nicht ermittelt werden. Vergewissere dich, dass die erforderlichen Berechtigungen erteilt wurden und du mit einem WLAN-Netzwerk verbunden bist",
|
||||
@@ -1047,13 +1044,10 @@
|
||||
"home_page_favorite_err_local": "Kann lokale Elemente noch nicht favorisieren, überspringen",
|
||||
"home_page_favorite_err_partner": "Inhalte von Partnern können nicht favorisiert werden, überspringe",
|
||||
"home_page_first_time_notice": "Wenn dies das erste Mal ist dass Du Immich nutzt, stelle bitte sicher, dass mindestens ein Album zur Sicherung ausgewählt ist, sodass die Zeitachse mit Fotos und Videos gefüllt werden kann",
|
||||
"home_page_locked_error_local": "Lokale Dateien können nicht in den gesperrten Ordner verschoben werden, überspringe",
|
||||
"home_page_locked_error_partner": "Dateien von Partnern können nicht in den gesperrten Ordner verschoben werden, überspringe",
|
||||
"home_page_share_err_local": "Lokale Inhalte können nicht per Link geteilt werden, überspringe",
|
||||
"home_page_upload_err_limit": "Es können max. 30 Elemente gleichzeitig hochgeladen werden, überspringen",
|
||||
"host": "Host",
|
||||
"hour": "Stunde",
|
||||
"id": "ID",
|
||||
"ignore_icloud_photos": "iCloud Fotos ignorieren",
|
||||
"ignore_icloud_photos_description": "Fotos, die in der iCloud gespeichert sind, werden nicht auf den immich Server hochgeladen",
|
||||
"image": "Bild",
|
||||
@@ -1093,12 +1087,6 @@
|
||||
"invalid_date_format": "Ungültiges Datumsformat",
|
||||
"invite_people": "Personen einladen",
|
||||
"invite_to_album": "Zum Album einladen",
|
||||
"ios_debug_info_fetch_ran_at": "Abruf läuft {dateTime}",
|
||||
"ios_debug_info_last_sync_at": "Zuletzt aktualisiert {dateTime}",
|
||||
"ios_debug_info_no_processes_queued": "Keine Hintergrundprozesse in der Warteschlange",
|
||||
"ios_debug_info_no_sync_yet": "Noch kein Hintergrundsynchronisierungsauftrag ausgeführt",
|
||||
"ios_debug_info_processes_queued": "{count, plural, one {{count} Hintergrundprozess in der Warteschlange} other {{count} Hintergrundprozesse in der Warteschlange}}",
|
||||
"ios_debug_info_processing_ran_at": "Prozess läuft {dateTime}",
|
||||
"items_count": "{count, plural, one {# Eintrag} other {# Einträge}}",
|
||||
"jobs": "Aufgaben",
|
||||
"keep": "Behalten",
|
||||
@@ -1107,9 +1095,6 @@
|
||||
"kept_this_deleted_others": "Diese Datei behalten und {count, plural, one {# Datei} other {# Dateien}} gelöscht",
|
||||
"keyboard_shortcuts": "Tastenkürzel",
|
||||
"language": "Sprache",
|
||||
"language_no_results_subtitle": "Probiere es mit einem anderen Suchbegriff",
|
||||
"language_no_results_title": "Keine Sprachen gefunden",
|
||||
"language_search_hint": "Sprachen durchsuchen...",
|
||||
"language_setting_description": "Wähle deine bevorzugte Sprache",
|
||||
"last_seen": "Zuletzt gesehen",
|
||||
"latest_version": "Aktuellste Version",
|
||||
@@ -1135,7 +1120,6 @@
|
||||
"list": "Liste",
|
||||
"loading": "Laden",
|
||||
"loading_search_results_failed": "Laden von Suchergebnissen fehlgeschlagen",
|
||||
"local_asset_cast_failed": "Eine Datei, die nicht auf den Server hochgeladen wurde, kann nicht gecastet werden",
|
||||
"local_network": "Lokales Netzwerk",
|
||||
"local_network_sheet_info": "Die App stellt über diese URL eine Verbindung zum Server her, wenn sie das angegebene WLAN-Netzwerk verwendet",
|
||||
"location_permission": "Standort Genehmigung",
|
||||
@@ -1145,8 +1129,6 @@
|
||||
"location_picker_latitude_hint": "Breitengrad eingeben",
|
||||
"location_picker_longitude_error": "Gültigen Längengrad eingeben",
|
||||
"location_picker_longitude_hint": "Längengrad eingeben",
|
||||
"lock": "Sperren",
|
||||
"locked_folder": "Gesperrter Ordner",
|
||||
"log_out": "Abmelden",
|
||||
"log_out_all_devices": "Alle Geräte abmelden",
|
||||
"logged_out_all_devices": "Alle Geräte abgemeldet",
|
||||
@@ -1191,8 +1173,8 @@
|
||||
"manage_your_devices": "Deine eingeloggten Geräte verwalten",
|
||||
"manage_your_oauth_connection": "Deine OAuth-Verknüpfung verwalten",
|
||||
"map": "Karte",
|
||||
"map_assets_in_bound": "{count} Foto",
|
||||
"map_assets_in_bounds": "{count} Fotos",
|
||||
"map_assets_in_bound": "{} Foto",
|
||||
"map_assets_in_bounds": "{} Fotos",
|
||||
"map_cannot_get_user_location": "Standort konnte nicht ermittelt werden",
|
||||
"map_location_dialog_yes": "Ja",
|
||||
"map_location_picker_page_use_location": "Aufnahmeort verwenden",
|
||||
@@ -1206,9 +1188,9 @@
|
||||
"map_settings": "Karteneinstellungen",
|
||||
"map_settings_dark_mode": "Dunkler Modus",
|
||||
"map_settings_date_range_option_day": "Letzte 24 Stunden",
|
||||
"map_settings_date_range_option_days": "Letzten {days} Tage",
|
||||
"map_settings_date_range_option_days": "Letzten {} Tage",
|
||||
"map_settings_date_range_option_year": "Letztes Jahr",
|
||||
"map_settings_date_range_option_years": "Letzten {years} Jahre",
|
||||
"map_settings_date_range_option_years": "Letzten {} Jahre",
|
||||
"map_settings_dialog_title": "Karteneinstellungen",
|
||||
"map_settings_include_show_archived": "Archivierte anzeigen",
|
||||
"map_settings_include_show_partners": "Partner einbeziehen",
|
||||
@@ -1226,6 +1208,8 @@
|
||||
"memories_setting_description": "Verwalte, was du in deinen Erinnerungen siehst",
|
||||
"memories_start_over": "Erneut beginnen",
|
||||
"memories_swipe_to_close": "Nach oben Wischen zum schließen",
|
||||
"memories_year_ago": "ein Jahr her",
|
||||
"memories_years_ago": "Vor {} Jahren",
|
||||
"memory": "Erinnerung",
|
||||
"memory_lane_title": "Foto-Erinnerungen {title}",
|
||||
"menu": "Menü",
|
||||
@@ -1242,10 +1226,6 @@
|
||||
"month": "Monat",
|
||||
"monthly_title_text_date_format": "MMMM y",
|
||||
"more": "Mehr",
|
||||
"move": "Verschieben",
|
||||
"move_off_locked_folder": "Aus dem gesperrten Ordner verschieben",
|
||||
"move_to_locked_folder": "In den gesperrten Ordner verschieben",
|
||||
"move_to_locked_folder_confirmation": "Diese Fotos und Videos werden aus allen Alben entfernt und können nur noch im gesperrten Ordner angezeigt werden",
|
||||
"moved_to_archive": "{count, plural, one {# Datei} other {# Dateien}} archiviert",
|
||||
"moved_to_library": "{count, plural, one {# Datei} other {# Dateien}} in die Bibliothek verschoben",
|
||||
"moved_to_trash": "In den Papierkorb verschoben",
|
||||
@@ -1262,8 +1242,6 @@
|
||||
"new_api_key": "Neuer API-Schlüssel",
|
||||
"new_password": "Neues Passwort",
|
||||
"new_person": "Neue Person",
|
||||
"new_pin_code": "Neuer PIN Code",
|
||||
"new_pin_code_subtitle": "Dies ist dein erster Zugriff auf den gesperrten Ordner. Erstelle einen PIN Code für den sicheren Zugriff auf diese Seite",
|
||||
"new_user_created": "Neuer Benutzer wurde erstellt",
|
||||
"new_version_available": "NEUE VERSION VERFÜGBAR",
|
||||
"newest_first": "Neueste zuerst",
|
||||
@@ -1276,13 +1254,11 @@
|
||||
"no_archived_assets_message": "Archiviere Fotos und Videos, um sie aus deiner Fotoansicht zu entfernen",
|
||||
"no_assets_message": "KLICKE, UM DEIN ERSTES FOTO HOCHZULADEN",
|
||||
"no_assets_to_show": "Keine Vorschau vorhanden",
|
||||
"no_cast_devices_found": "Keine Geräte zum Übertragen gefunden",
|
||||
"no_duplicates_found": "Es wurden keine Duplikate gefunden.",
|
||||
"no_exif_info_available": "Keine EXIF-Informationen vorhanden",
|
||||
"no_explore_results_message": "Lade weitere Fotos hoch, um deine Sammlung zu erkunden.",
|
||||
"no_favorites_message": "Füge Favoriten hinzu, um deine besten Bilder und Videos schnell zu finden",
|
||||
"no_libraries_message": "Eine externe Bibliothek erstellen, um deine Fotos und Videos anzusehen",
|
||||
"no_locked_photos_message": "Fotos und Videos im gesperrten Ordner sind versteckt und werden nicht angezeigt, wenn du deine Bibliothek durchsuchst.",
|
||||
"no_name": "Kein Name",
|
||||
"no_notifications": "Keine Benachrichtigungen",
|
||||
"no_people_found": "Keine passenden Personen gefunden",
|
||||
@@ -1294,7 +1270,6 @@
|
||||
"not_selected": "Nicht ausgewählt",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Hinweis: Um eine Speicherpfadbezeichnung anzuwenden, starte den",
|
||||
"notes": "Notizen",
|
||||
"nothing_here_yet": "Noch nichts hier",
|
||||
"notification_permission_dialog_content": "Um Benachrichtigungen zu aktivieren, navigiere zu Einstellungen und klicke \"Erlauben\".",
|
||||
"notification_permission_list_tile_content": "Erlaube Berechtigung für Benachrichtigungen.",
|
||||
"notification_permission_list_tile_enable_button": "Aktiviere Benachrichtigungen",
|
||||
@@ -1305,15 +1280,15 @@
|
||||
"oauth": "OAuth",
|
||||
"official_immich_resources": "Offizielle Immich Quellen",
|
||||
"offline": "Offline",
|
||||
"offline_paths": "Offline-Pfade",
|
||||
"offline_paths_description": "Diese Ergebnisse können auf das manuelle Löschen von Dateien zurückzuführen sein, die nicht Teil einer externen Bibliothek sind.",
|
||||
"ok": "Ok",
|
||||
"oldest_first": "Älteste zuerst",
|
||||
"on_this_device": "Auf diesem Gerät",
|
||||
"onboarding": "Einstieg",
|
||||
"onboarding_locale_description": "Wählen Sie Ihre bevorzugte Sprache. Sie können diese auch später in Ihren Einstellungen ändern.",
|
||||
"onboarding_privacy_description": "Die folgenden (optionalen) Funktionen hängen von externen Diensten ab und können jederzeit in den Einstellungen deaktiviert werden.",
|
||||
"onboarding_server_welcome_description": "Lassen Sie uns diese Instanz mit einigen allgemeinen Einstellungen einrichten.",
|
||||
"onboarding_privacy_description": "Die folgenden (optionalen) Funktionen hängen von externen Diensten ab und können jederzeit in den Administrationseinstellungen deaktiviert werden.",
|
||||
"onboarding_theme_description": "Wähle ein Farbschema für deine Instanz aus. Du kannst dies später in deinen Einstellungen ändern.",
|
||||
"onboarding_user_welcome_description": "Fangen wir an!",
|
||||
"onboarding_welcome_description": "Lass uns deine Instanz mit einigen allgemeinen Einstellungen konfigurieren.",
|
||||
"onboarding_welcome_user": "Willkommen, {user}",
|
||||
"online": "Online",
|
||||
"only_favorites": "Nur Favoriten",
|
||||
@@ -1341,7 +1316,7 @@
|
||||
"partner_page_partner_add_failed": "Fehler beim Partner hinzufügen",
|
||||
"partner_page_select_partner": "Partner auswählen",
|
||||
"partner_page_shared_to_title": "Geteilt mit",
|
||||
"partner_page_stop_sharing_content": "{partner} wird nicht mehr auf deine Fotos zugreifen können.",
|
||||
"partner_page_stop_sharing_content": "{} wird nicht mehr auf deine Fotos zugreifen können.",
|
||||
"partner_sharing": "Partner-Sharing",
|
||||
"partners": "Partner",
|
||||
"password": "Passwort",
|
||||
@@ -1370,8 +1345,6 @@
|
||||
"permanently_delete_assets_prompt": "Bist du sicher, dass {count, plural, one {diese Datei} other {diese <b>#</b> Dateien}} endgültig gelöscht werden soll? Dadurch {count, plural, one {wird} other {werden}} diese auch aus deinen Alben entfernt.",
|
||||
"permanently_deleted_asset": "Endgültig gelöschtes Objekt",
|
||||
"permanently_deleted_assets_count": "{count, plural, one {# Datei} other {# Dateien}} endgültig gelöscht",
|
||||
"permission": "Berechtigung",
|
||||
"permission_empty": "Ihre Berechtigung sollte nicht leer sein",
|
||||
"permission_onboarding_back": "Zurück",
|
||||
"permission_onboarding_continue_anyway": "Trotzdem fortfahren",
|
||||
"permission_onboarding_get_started": "Jetzt starten",
|
||||
@@ -1389,10 +1362,6 @@
|
||||
"photos_count": "{count, plural, one {{count, number} Foto} other {{count, number} Fotos}}",
|
||||
"photos_from_previous_years": "Fotos von vorherigen Jahren",
|
||||
"pick_a_location": "Wähle einen Ort",
|
||||
"pin_code_changed_successfully": "PIN Code erfolgreich geändert",
|
||||
"pin_code_reset_successfully": "PIN Code erfolgreich zurückgesetzt",
|
||||
"pin_code_setup_successfully": "PIN Code erfolgreich festgelegt",
|
||||
"pin_verification": "PIN Code Überprüfung",
|
||||
"place": "Ort",
|
||||
"places": "Orte",
|
||||
"places_count": "{count, plural, one {{count, number} Ort} other {{count, number} Orte}}",
|
||||
@@ -1400,7 +1369,6 @@
|
||||
"play_memories": "Erinnerungen abspielen",
|
||||
"play_motion_photo": "Bewegte Bilder abspielen",
|
||||
"play_or_pause_video": "Video abspielen oder pausieren",
|
||||
"please_auth_to_access": "Für den Zugriff bitte Authentifizieren",
|
||||
"port": "Port",
|
||||
"preferences_settings_subtitle": "App-Einstellungen verwalten",
|
||||
"preferences_settings_title": "Voreinstellungen",
|
||||
@@ -1408,13 +1376,9 @@
|
||||
"preview": "Vorschau",
|
||||
"previous": "Vorherige",
|
||||
"previous_memory": "Vorherige Erinnerung",
|
||||
"previous_or_next_day": "Tag vorwärts/rückwärts",
|
||||
"previous_or_next_month": "Monat vorwärts/rückwärts",
|
||||
"previous_or_next_photo": "Foto vorwärts/rückwärts",
|
||||
"previous_or_next_year": "Jahr vorwärts/rückwärts",
|
||||
"previous_or_next_photo": "Vorheriges oder nächstes Foto",
|
||||
"primary": "Primär",
|
||||
"privacy": "Privatsphäre",
|
||||
"profile": "Profil",
|
||||
"profile_drawer_app_logs": "Logs",
|
||||
"profile_drawer_client_out_of_date_major": "Mobile-App ist veraltet. Bitte aktualisiere auf die neueste Major-Version.",
|
||||
"profile_drawer_client_out_of_date_minor": "Mobile-App ist veraltet. Bitte aktualisiere auf die neueste Minor-Version.",
|
||||
@@ -1428,7 +1392,7 @@
|
||||
"public_share": "Öffentliche Freigabe",
|
||||
"purchase_account_info": "Unterstützer",
|
||||
"purchase_activated_subtitle": "Danke für die Unterstützung von Immich und Open-Source Software",
|
||||
"purchase_activated_time": "Aktiviert am {date}",
|
||||
"purchase_activated_time": "Aktiviert am {date, date}",
|
||||
"purchase_activated_title": "Dein Schlüssel wurde erfolgreich aktiviert",
|
||||
"purchase_button_activate": "Aktivieren",
|
||||
"purchase_button_buy": "Kaufen",
|
||||
@@ -1446,7 +1410,7 @@
|
||||
"purchase_lifetime_description": "Lebenslange Gültigkeit",
|
||||
"purchase_option_title": "KAUFOPTIONEN",
|
||||
"purchase_panel_info_1": "Die Entwicklung von Immich erfordert viel Zeit und Mühe, und wir haben Vollzeit-Entwickler, die daran arbeiten es möglichst perfekt zu machen. Unser Ziel ist es, dass Open-Source-Software und moralische Geschäftsmethoden zu einer nachhaltigen Einkommensquelle für Entwickler werden und ein datenschutzfreundliches Ökosystem mit echten Alternativen zu ausbeuterischen Cloud-Diensten geschaffen wird.",
|
||||
"purchase_panel_info_2": "Weil wir uns dagegen entschieden haben, eine Bezahlschranke einzusetzen, wird dieser Kauf keine zusätzlichen Funktionen in Immich freischalten. Wir verlassen uns auf Nutzende wie dich, um die Entwicklung von Immich zu unterstützen.",
|
||||
"purchase_panel_info_2": "Weil wir davon überzeugt sind keine Paywalls zu haben, wird dieser Kauf keine zusätzlichen Funktionen in Immich freischalten. Wir verlassen uns auf Nutzende wie dich, um die Entwicklung von Immich zu unterstützen.",
|
||||
"purchase_panel_title": "Das Projekt unterstützen",
|
||||
"purchase_per_server": "Pro Server",
|
||||
"purchase_per_user": "Pro Benutzer",
|
||||
@@ -1494,12 +1458,9 @@
|
||||
"remove_deleted_assets": "Offline-Dateien entfernen",
|
||||
"remove_from_album": "Aus Album entfernen",
|
||||
"remove_from_favorites": "Aus Favoriten entfernen",
|
||||
"remove_from_locked_folder": "Aus gesperrtem Ordner entfernen",
|
||||
"remove_from_locked_folder_confirmation": "Bist du sicher, dass du diese Fotos und Videos aus dem gesperrten Ordner entfernen möchtest? Sie werden wieder in deiner Bibliothek sichtbar sein.",
|
||||
"remove_from_shared_link": "Aus geteiltem Link entfernen",
|
||||
"remove_memory": "Erinnerung entfernen",
|
||||
"remove_photo_from_memory": "Foto aus dieser Erinnerung entfernen",
|
||||
"remove_tag": "Tag entfernen",
|
||||
"remove_url": "URL entfernen",
|
||||
"remove_user": "Nutzer entfernen",
|
||||
"removed_api_key": "API-Schlüssel {name} wurde entfernt",
|
||||
@@ -1520,7 +1481,6 @@
|
||||
"reset": "Zurücksetzen",
|
||||
"reset_password": "Passwort zurücksetzen",
|
||||
"reset_people_visibility": "Sichtbarkeit von Personen zurücksetzen",
|
||||
"reset_pin_code": "PIN Code zurücksetzen",
|
||||
"reset_to_default": "Auf Standard zurücksetzen",
|
||||
"resolve_duplicates": "Duplikate entfernen",
|
||||
"resolved_all_duplicates": "Alle Duplikate aufgelöst",
|
||||
@@ -1626,7 +1586,6 @@
|
||||
"server_info_box_server_url": "Server-URL",
|
||||
"server_offline": "Server offline",
|
||||
"server_online": "Server online",
|
||||
"server_privacy": "Privatsphäre auf dem Server",
|
||||
"server_stats": "Server-Statistiken",
|
||||
"server_version": "Server-Version",
|
||||
"set": "Speichern",
|
||||
@@ -1636,7 +1595,6 @@
|
||||
"set_date_of_birth": "Geburtsdatum festlegen",
|
||||
"set_profile_picture": "Profilbild einstellen",
|
||||
"set_slideshow_to_fullscreen": "Diashow auf Vollbild einstellen",
|
||||
"set_stack_primary_asset": "Als primäre Datei festlegen",
|
||||
"setting_image_viewer_help": "Der Detailbildbetrachter lädt zuerst ein (kleines) Vorschaubild, dann ein Vorschaubild in mittlerer Größe (falls aktiviert) und schließlich das Original (falls aktiviert).",
|
||||
"setting_image_viewer_original_subtitle": "Aktivieren, um das Originalbild in voller Auflösung (groß!) zu laden. Deaktivieren, um den Datenverbrauch zu reduzieren (sowohl im Netzwerk als auch im Gerätespeicher).",
|
||||
"setting_image_viewer_original_title": "Original laden",
|
||||
@@ -1645,12 +1603,13 @@
|
||||
"setting_image_viewer_title": "Bilder",
|
||||
"setting_languages_apply": "Anwenden",
|
||||
"setting_languages_subtitle": "App-Sprache ändern",
|
||||
"setting_notifications_notify_failures_grace_period": "Benachrichtigung bei Fehler(n) in der Hintergrundsicherung: {duration}",
|
||||
"setting_notifications_notify_hours": "{count} Stunden",
|
||||
"setting_languages_title": "Sprachen",
|
||||
"setting_notifications_notify_failures_grace_period": "Benachrichtigung bei Fehler(n) in der Hintergrundsicherung: {}",
|
||||
"setting_notifications_notify_hours": "{} Stunden",
|
||||
"setting_notifications_notify_immediately": "sofort",
|
||||
"setting_notifications_notify_minutes": "{count} Minuten",
|
||||
"setting_notifications_notify_minutes": "{} Minuten",
|
||||
"setting_notifications_notify_never": "niemals",
|
||||
"setting_notifications_notify_seconds": "{count} Sekunden",
|
||||
"setting_notifications_notify_seconds": "{} Sekunden",
|
||||
"setting_notifications_single_progress_subtitle": "Detaillierter Upload-Fortschritt für jedes Element",
|
||||
"setting_notifications_single_progress_title": "Zeige den detaillierten Fortschritt der Hintergrundsicherung",
|
||||
"setting_notifications_subtitle": "Benachrichtigungen anpassen",
|
||||
@@ -1662,12 +1621,10 @@
|
||||
"settings": "Einstellungen",
|
||||
"settings_require_restart": "Bitte starte Immich neu, um diese Einstellung anzuwenden",
|
||||
"settings_saved": "Einstellungen gespeichert",
|
||||
"setup_pin_code": "Einen PIN Code festlegen",
|
||||
"share": "Teilen",
|
||||
"share_add_photos": "Fotos hinzufügen",
|
||||
"share_assets_selected": "{count} ausgewählt",
|
||||
"share_assets_selected": "{} ausgewählt",
|
||||
"share_dialog_preparing": "Vorbereiten...",
|
||||
"share_link": "Link teilen",
|
||||
"shared": "Geteilt",
|
||||
"shared_album_activities_input_disable": "Kommentare sind deaktiviert",
|
||||
"shared_album_activity_remove_content": "Möchtest du diese Aktivität entfernen?",
|
||||
@@ -1680,32 +1637,32 @@
|
||||
"shared_by_user": "Von {user} geteilt",
|
||||
"shared_by_you": "Von dir geteilt",
|
||||
"shared_from_partner": "Fotos von {partner}",
|
||||
"shared_intent_upload_button_progress_text": "{current} / {total} hochgeladen",
|
||||
"shared_intent_upload_button_progress_text": "{} / {} hochgeladen",
|
||||
"shared_link_app_bar_title": "Geteilte Links",
|
||||
"shared_link_clipboard_copied_massage": "Link kopiert",
|
||||
"shared_link_clipboard_text": "Link: {link}\nPasswort: {password}",
|
||||
"shared_link_clipboard_text": "Link: {}\nPasswort: {}",
|
||||
"shared_link_create_error": "Fehler beim Erstellen der Linkfreigabe",
|
||||
"shared_link_edit_description_hint": "Beschreibung eingeben",
|
||||
"shared_link_edit_expire_after_option_day": "1 Tag",
|
||||
"shared_link_edit_expire_after_option_days": "{count} Tagen",
|
||||
"shared_link_edit_expire_after_option_days": "{} Tagen",
|
||||
"shared_link_edit_expire_after_option_hour": "1 Stunde",
|
||||
"shared_link_edit_expire_after_option_hours": "{count} Stunden",
|
||||
"shared_link_edit_expire_after_option_hours": "{} Stunden",
|
||||
"shared_link_edit_expire_after_option_minute": "1 Minute",
|
||||
"shared_link_edit_expire_after_option_minutes": "{count} Minuten",
|
||||
"shared_link_edit_expire_after_option_months": "{count} Monaten",
|
||||
"shared_link_edit_expire_after_option_year": "{count} Jahr",
|
||||
"shared_link_edit_expire_after_option_minutes": "{} Minuten",
|
||||
"shared_link_edit_expire_after_option_months": "{} Monaten",
|
||||
"shared_link_edit_expire_after_option_year": "{} Jahr",
|
||||
"shared_link_edit_password_hint": "Passwort eingeben",
|
||||
"shared_link_edit_submit_button": "Link aktualisieren",
|
||||
"shared_link_error_server_url_fetch": "Fehler beim Ermitteln der Server-URL",
|
||||
"shared_link_expires_day": "Läuft ab in {count} Tag",
|
||||
"shared_link_expires_days": "Läuft ab in {count} Tagen",
|
||||
"shared_link_expires_hour": "Läuft ab in {count} Stunde",
|
||||
"shared_link_expires_hours": "Läuft ab in {count} Stunden",
|
||||
"shared_link_expires_minute": "Läuft ab in {count} Minute",
|
||||
"shared_link_expires_minutes": "Läuft ab in {count} Minuten",
|
||||
"shared_link_expires_day": "Läuft ab in {} Tag",
|
||||
"shared_link_expires_days": "Läuft ab in {} Tagen",
|
||||
"shared_link_expires_hour": "Läuft ab in {} Stunde",
|
||||
"shared_link_expires_hours": "Läuft ab in {} Stunden",
|
||||
"shared_link_expires_minute": "Läuft ab in {} Minute",
|
||||
"shared_link_expires_minutes": "Läuft ab in {} Minuten",
|
||||
"shared_link_expires_never": "Läuft nie ab",
|
||||
"shared_link_expires_second": "Läuft ab in {count} Sekunde",
|
||||
"shared_link_expires_seconds": "Läuft ab in {count} Sekunden",
|
||||
"shared_link_expires_second": "Läuft ab in {} Sekunde",
|
||||
"shared_link_expires_seconds": "Läuft ab in {} Sekunden",
|
||||
"shared_link_individual_shared": "Individuell geteilt",
|
||||
"shared_link_info_chip_metadata": "EXIF",
|
||||
"shared_link_manage_links": "Geteilte Links verwalten",
|
||||
@@ -1769,19 +1726,17 @@
|
||||
"stack_select_one_photo": "Hauptfoto für den Stapel auswählen",
|
||||
"stack_selected_photos": "Ausgewählte Fotos stapeln",
|
||||
"stacked_assets_count": "{count, plural, one {# Datei} other {# Dateien}} gestapelt",
|
||||
"stacktrace": "Stapelaufgaben",
|
||||
"stacktrace": "Stacktrace",
|
||||
"start": "Starten",
|
||||
"start_date": "Anfangsdatum",
|
||||
"state": "Bundesland / Provinz",
|
||||
"status": "Status",
|
||||
"stop_casting": "Übertragung stoppen",
|
||||
"stop_motion_photo": "Stop-Motion-Foto",
|
||||
"stop_photo_sharing": "Deine Fotos nicht mehr teilen?",
|
||||
"stop_photo_sharing_description": "{partner} wird keinen Zugriff mehr auf deine Fotos haben.",
|
||||
"stop_sharing_photos_with_user": "Aufhören Fotos mit diesem Benutzer zu teilen",
|
||||
"storage": "Speicherplatz",
|
||||
"storage_label": "Speicherpfad",
|
||||
"storage_quota": "Speicherplatz-Kontingent",
|
||||
"storage_usage": "{used} von {available} verwendet",
|
||||
"submit": "Bestätigen",
|
||||
"suggestions": "Vorschläge",
|
||||
@@ -1808,7 +1763,7 @@
|
||||
"theme_selection": "Themenauswahl",
|
||||
"theme_selection_description": "Automatische Einstellung des Themes auf Hell oder Dunkel, je nach Systemeinstellung des Browsers",
|
||||
"theme_setting_asset_list_storage_indicator_title": "Forschrittsbalken der Sicherung auf dem Vorschaubild",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Anzahl der Elemente pro Reihe ({count})",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Anzahl der Elemente pro Reihe ({})",
|
||||
"theme_setting_colorful_interface_subtitle": "Primärfarbe auf App-Hintergrund anwenden.",
|
||||
"theme_setting_colorful_interface_title": "Farbige UI-Oberfläche",
|
||||
"theme_setting_image_viewer_quality_subtitle": "Einstellen der Qualität des Detailbildbetrachters",
|
||||
@@ -1832,6 +1787,7 @@
|
||||
"to_parent": "Gehe zum Übergeordneten",
|
||||
"to_trash": "In den Papierkorb verschieben",
|
||||
"toggle_settings": "Einstellungen umschalten",
|
||||
"toggle_theme": "Dunkles Theme umschalten",
|
||||
"total": "Gesamt",
|
||||
"total_usage": "Gesamtnutzung",
|
||||
"trash": "Papierkorb",
|
||||
@@ -1842,18 +1798,15 @@
|
||||
"trash_no_results_message": "Gelöschte Fotos und Videos werden hier angezeigt.",
|
||||
"trash_page_delete_all": "Alle löschen",
|
||||
"trash_page_empty_trash_dialog_content": "Elemente im Papierkorb löschen? Diese Elemente werden dauerhaft aus Immich entfernt",
|
||||
"trash_page_info": "Elemente im Papierkorb werden nach {days} Tagen endgültig gelöscht",
|
||||
"trash_page_info": "Elemente im Papierkorb werden nach {} Tagen endgültig gelöscht",
|
||||
"trash_page_no_assets": "Es gibt keine Daten im Papierkorb",
|
||||
"trash_page_restore_all": "Alle wiederherstellen",
|
||||
"trash_page_select_assets_btn": "Elemente auswählen",
|
||||
"trash_page_title": "Papierkorb ({count})",
|
||||
"trash_page_title": "Papierkorb ({})",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Gelöschte Objekte werden nach {days, plural, one {# Tag} other {# Tagen}} endgültig gelöscht.",
|
||||
"type": "Typ",
|
||||
"unable_to_change_pin_code": "PIN Code konnte nicht geändert werden",
|
||||
"unable_to_setup_pin_code": "PIN Code konnte nicht festgelegt werden",
|
||||
"unarchive": "Entarchivieren",
|
||||
"unarchived_count": "{count, plural, other {# entarchiviert}}",
|
||||
"undo": "Rückgängig",
|
||||
"unfavorite": "Entfavorisieren",
|
||||
"unhide_person": "Person einblenden",
|
||||
"unknown": "Unbekannt",
|
||||
@@ -1872,8 +1825,9 @@
|
||||
"unselect_all_duplicates": "Alle Duplikate abwählen",
|
||||
"unstack": "Entstapeln",
|
||||
"unstacked_assets_count": "{count, plural, one {# Datei} other {# Dateien}} entstapelt",
|
||||
"untracked_files": "Unverfolgte Dateien",
|
||||
"untracked_files_decription": "Diese Dateien werden nicht von der Application getrackt. Sie können das Ergebnis fehlgeschlagener Verschiebungen, unterbrochener Uploads oder aufgrund eines Fehlers sein",
|
||||
"up_next": "Weiter",
|
||||
"updated_at": "Aktualisiert",
|
||||
"updated_password": "Passwort aktualisiert",
|
||||
"upload": "Hochladen",
|
||||
"upload_concurrency": "Parallelität beim Hochladen",
|
||||
@@ -1886,20 +1840,15 @@
|
||||
"upload_status_errors": "Fehler",
|
||||
"upload_status_uploaded": "Hochgeladen",
|
||||
"upload_success": "Hochladen erfolgreich. Aktualisiere die Seite, um neue hochgeladene Dateien zu sehen.",
|
||||
"upload_to_immich": "Auf Immich hochladen ({count})",
|
||||
"upload_to_immich": "Auf Immich hochladen ({})",
|
||||
"uploading": "Wird hochgeladen",
|
||||
"url": "URL",
|
||||
"usage": "Verwendung",
|
||||
"use_biometric": "Biometrie verwenden",
|
||||
"use_current_connection": "aktuelle Verbindung verwenden",
|
||||
"use_custom_date_range": "Stattdessen einen benutzerdefinierten Datumsbereich verwenden",
|
||||
"user": "Nutzer",
|
||||
"user_has_been_deleted": "Dieser Benutzer wurde gelöscht.",
|
||||
"user_id": "Nutzer-ID",
|
||||
"user_liked": "{type, select, photo {Dieses Foto} video {Dieses Video} asset {Diese Datei} other {Dies}} gefällt {user}",
|
||||
"user_pin_code_settings": "PIN Code",
|
||||
"user_pin_code_settings_description": "Verwalte deinen PIN Code",
|
||||
"user_privacy": "Datenschutzeinstellungen Nutzer",
|
||||
"user_purchase_settings": "Kauf",
|
||||
"user_purchase_settings_description": "Kauf verwalten",
|
||||
"user_role_set": "{user} als {role} festlegen",
|
||||
@@ -1915,6 +1864,11 @@
|
||||
"version": "Version",
|
||||
"version_announcement_closing": "Dein Freund, Alex",
|
||||
"version_announcement_message": "Hi! Es gibt eine neue Version von Immich. Bitte nimm dir Zeit, die <link>Versionshinweise</link> zu lesen, um Fehlkonfigurationen zu vermeiden, insbesondere wenn du WatchTower oder ein anderes Verfahren verwendest, das Immich automatisch aktualisiert.",
|
||||
"version_announcement_overlay_release_notes": "Änderungsprotokoll",
|
||||
"version_announcement_overlay_text_1": "Hallo mein Freund! Es gibt eine neue Version von",
|
||||
"version_announcement_overlay_text_2": "Bitte nehme dir die Zeit und lies das ",
|
||||
"version_announcement_overlay_text_3": " und achte darauf, dass deine docker-compose und .env Dateien aktuell sind, vor allem wenn du ein System für automatische Updates benutzt (z.B. Watchtower).",
|
||||
"version_announcement_overlay_title": "Neue Server-Version verfügbar 🎉",
|
||||
"version_history": "Versionshistorie",
|
||||
"version_history_item": "{version} am {date} installiert",
|
||||
"video": "Video",
|
||||
@@ -1934,7 +1888,6 @@
|
||||
"view_previous_asset": "Vorherige Datei anzeigen",
|
||||
"view_qr_code": "QR code anzeigen",
|
||||
"view_stack": "Stapel anzeigen",
|
||||
"view_user": "Benutzer anzeigen",
|
||||
"viewer_remove_from_stack": "Aus Stapel entfernen",
|
||||
"viewer_stack_use_as_main_asset": "An Stapelanfang",
|
||||
"viewer_unstack": "Stapel aufheben",
|
||||
@@ -1945,7 +1898,6 @@
|
||||
"welcome": "Willkommen",
|
||||
"welcome_to_immich": "Willkommen bei Immich",
|
||||
"wifi_name": "WLAN-Name",
|
||||
"wrong_pin_code": "PIN Code falsch",
|
||||
"year": "Jahr",
|
||||
"years_ago": "Vor {years, plural, one {einem Jahr} other {# Jahren}}",
|
||||
"yes": "Ja",
|
||||
|
||||
249
i18n/el.json
249
i18n/el.json
@@ -12,7 +12,7 @@
|
||||
"add": "Προσθήκη",
|
||||
"add_a_description": "Προσθήκη περιγραφής",
|
||||
"add_a_location": "Προσθήκη μίας τοποθεσίας",
|
||||
"add_a_name": "Προσθέστε ένα όνομα",
|
||||
"add_a_name": "Προσθήκη ονόματος",
|
||||
"add_a_title": "Προσθήκη τίτλου",
|
||||
"add_endpoint": "Προσθήκη τελικού σημείου",
|
||||
"add_exclusion_pattern": "Προσθήκη μοτίβου αποκλεισμού",
|
||||
@@ -44,6 +44,8 @@
|
||||
"backup_keep_last_amount": "Ποσότητα προηγούμενων dumps που πρέπει να διατηρηθούν",
|
||||
"backup_settings": "Ρυθμίσεις dump βάσης δεδομένων",
|
||||
"backup_settings_description": "Διαχείριση ρυθμίσεων dump της βάσης δεδομένων. Σημείωση: Αυτές οι εργασίες δεν παρακολουθούνται και δεν θα ειδοποιηθείτε για αποτυχία.",
|
||||
"check_all": "Έλεγχος Όλων",
|
||||
"cleanup": "Εκκαθάριση",
|
||||
"cleared_jobs": "Εκκαθαρίστηκαν οι εργασίες για: {job}",
|
||||
"config_set_by_file": "Η παραμετροποίηση γίνεται, προς το παρόν, μέσω ενός αρχείου παραμέτρων",
|
||||
"confirm_delete_library": "Είστε βέβαιοι ότι θέλετε να διαγράψετε τη βιβλιοθήκη {library};",
|
||||
@@ -51,7 +53,6 @@
|
||||
"confirm_email_below": "Για επιβεβαίωση, πληκτρολογήστε \"{email}\" παρακάτω",
|
||||
"confirm_reprocess_all_faces": "Είστε βέβαιοι ότι θέλετε να επεξεργαστείτε ξανά όλα τα πρόσωπα; Αυτό θα εκκαθαρίσει ακόμα και τα άτομα στα οποία έχετε ήδη ορίσει το όνομα.",
|
||||
"confirm_user_password_reset": "Είστε βέβαιοι ότι θέλετε να επαναφέρετε τον κωδικό πρόσβασης του χρήστη {user};",
|
||||
"confirm_user_pin_code_reset": "Είστε βέβαιοι ότι θέλετε να επαναφέρετε τον κωδικό PIN του χρήστη {user};",
|
||||
"create_job": "Δημιουργία εργασίας",
|
||||
"cron_expression": "Σύνταξη Cron",
|
||||
"cron_expression_description": "Ορίστε το διάστημα σάρωσης χρησιμοποιώντας τη μορφή cron. Για περισσότερες πληροφορίες, ανατρέξτε π.χ. στο <link>Crontab Guru</link>",
|
||||
@@ -59,12 +60,14 @@
|
||||
"disable_login": "Απενεργοποίηση σύνδεσης",
|
||||
"duplicate_detection_job_description": "Εκτελέστε μηχανική μάθηση σε στοιχεία για να εντοπίσετε παρόμοιες εικόνες. Βασίζεται στην Έξυπνη Αναζήτηση",
|
||||
"exclusion_pattern_description": "Τα μοτίβα αποκλεισμού σας επιτρέπουν να αγνοείται αρχεία και φακέλους κατά τη σάρωση της βιβλιοθήκης σας. Αυτό είναι χρήσιμο εάν εχετε φακέλους που περιέχουν αρχεία που δεν θέλετε να εισάγετε, όπως αρχεία RAW.",
|
||||
"external_library_created_at": "Εξωτερική βιβλιοθήκη (δημιουργήθηκε {date})",
|
||||
"external_library_management": "Διαχείριση Εξωτερικών Βιβλιοθηκών",
|
||||
"face_detection": "Ανίχνευση προσώπου",
|
||||
"face_detection_description": "Ανιχνεύστε τα πρόσωπα σε στοιχεία χρησιμοποιώντας μηχανική μάθηση. Για βίντεο, λαμβάνεται υπόψη μόνο η μικρογραφία. Η επιλογή \"Ανανέωση\" επεξεργάζεται εκ νέου όλα τα στοιχεία. Η επιλογή \"Επαναφορά\", επιπλέον εκκαθαρίζει όλα τα δεδομένα προσώπου. Η επιλογή \"Ελλείποντα\" προσθέτει στην ουρά στοιχεία που δεν έχουν υποστεί ακόμη επεξεργασία. Τα πρόσωπα που έχουν εντοπιστεί θα μπουν στην ουρά για την Αναγνώριση Προσώπου μετά την ολοκλήρωση της Ανίχνευσης Προσώπου, ομαδοποιώντας τα σε υπάρχοντα ή νέα άτομα.",
|
||||
"facial_recognition_job_description": "Ομαδοποιήστε ανιχνευμένα πρόσωπα σε άτομα. Αυτό το βήμα εκτελείται αφού ολοκληρωθεί η Ανίχνευση Προσώπου. Η επιλογή \"Επαναφορά\" ομαδοποιεί εκ νέου όλα τα πρόσωπα. Η επιλογή \"Ελλείποντα\" βάζει στην ουρά για ομαδοποίηση πρόσωπα που δεν έχουν αντιστοιχηθεί σε κάποιο άτομο.",
|
||||
"failed_job_command": "Η εντολή {command} απέτυχε για την εργασία: {job}",
|
||||
"force_delete_user_warning": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτό θα αφαιρέσει άμεσα τον χρήστη και όλα τα στοιχεία. Αυτό δεν μπορεί να αναιρεθεί και τα αρχεία δεν μπορούν να ανακτηθούν.",
|
||||
"forcing_refresh_library_files": "Εξαναγκαστική ανανέωση όλων των αρχείων της βιβλιοθήκης",
|
||||
"image_format": "Μορφή",
|
||||
"image_format_description": "Η μορφή WebP παράγει μικρότερα αρχεία από τη μορφή JPEG, αλλά είναι πιο αργή στην κωδικοποίηση.",
|
||||
"image_fullsize_description": "Εικόνα πλήρους μεγέθους με απογυμνωμένα μεταδεδομένα, που χρησιμοποιείται κατά τη μεγέθυνση",
|
||||
@@ -189,11 +192,10 @@
|
||||
"oauth_auto_register": "Αυτόματη καταχώρηση",
|
||||
"oauth_auto_register_description": "Αυτόματη καταχώρηση νέου χρήστη αφού συνδεθεί με OAuth",
|
||||
"oauth_button_text": "Κείμενο κουμπιού",
|
||||
"oauth_client_secret_description": "Υποχρεωτικό εαν PKCE (Proof Key for Code Exchange) δεν υποστηρίζεται από τον OAuth πάροχο",
|
||||
"oauth_enable_description": "Σύνδεση με OAuth",
|
||||
"oauth_mobile_redirect_uri": "URI Ανακατεύθυνσης για κινητά τηλέφωνα",
|
||||
"oauth_mobile_redirect_uri_override": "Προσπέλαση URI ανακατεύθυνσης για κινητά τηλέφωνα",
|
||||
"oauth_mobile_redirect_uri_override_description": "Ενεργοποιήστε το όταν ο πάροχος OAuth δεν επιτρέπει μια URI για κινητά, όπως το ''{callback}''",
|
||||
"oauth_mobile_redirect_uri_override_description": "Ενεργοποιήστε το όταν ο πάροχος OAuth δεν επιτρέπει μια URI για κινητά, όπως το '{callback}'",
|
||||
"oauth_settings": "OAuth",
|
||||
"oauth_settings_description": "Διαχείριση ρυθμίσεων σύνδεσης OAuth",
|
||||
"oauth_settings_more_details": "Για περισσότερες λεπτομέρειες σχετικά με αυτήν τη δυνατότητα, ανατρέξτε στην <link>τεκμηρίωση</link>.",
|
||||
@@ -203,8 +205,8 @@
|
||||
"oauth_storage_quota_claim_description": "Ορίζει αυτόματα το ποσοστό αποθήκευσης του χρήστη στη δηλωμένη τιμή.",
|
||||
"oauth_storage_quota_default": "Προεπιλεγμένο όριο αποθήκευσης (GiB)",
|
||||
"oauth_storage_quota_default_description": "Ποσοστό σε GiB που θα χρησιμοποιηθεί όταν δεν ορίζεται από τη δηλωμένη τιμή (Εισάγετε 0 για απεριόριστο ποσοστό).",
|
||||
"oauth_timeout": "Χρονικό όριο Αιτήματος",
|
||||
"oauth_timeout_description": "Χρονικό όριο Αιτήματος σε milliseconds",
|
||||
"offline_paths": "Διαδρομές αρχείων εκτός σύνδεσης",
|
||||
"offline_paths_description": "Αυτά τα αποτελέσματα μπορεί να οφείλονται σε χειροκίνητη διαγραφή αρχείων που δεν ανήκουν σε εξωτερική βιβλιοθήκη.",
|
||||
"password_enable_description": "Σύνδεση με ηλεκτρονικό ταχυδρομείο",
|
||||
"password_settings": "Σύνδεση με κωδικό",
|
||||
"password_settings_description": "Διαχείριση ρυθμίσεων σύνδεσης μέσω κωδικού πρόσβασης",
|
||||
@@ -214,6 +216,9 @@
|
||||
"refreshing_all_libraries": "Επαναφόρτωση όλων των βιβλιοθηκών",
|
||||
"registration": "Εγγραφή Διαχειριστή",
|
||||
"registration_description": "Δεδομένου ότι είστε ο πρώτος χρήστης στο σύστημα, θα ανατεθείτε ως Διαχειριστής και θα είστε υπεύθυνος για τις διαχειριστικές εργασίες, ενώ οι επιπλέον χρήστες θα δημιουργούνται από εσάς.",
|
||||
"repair_all": "Επιδιόρθωση όλων των στοιχείων",
|
||||
"repair_matched_items": "Αντιστοιχίστηκαν {count, plural, one {# αντικείμενο} other {# αντικείμενα}}",
|
||||
"repaired_items": "Επιδιορθώθηκαν {count, plural, one {# αντικείμενο} other {# αντικείμενα}}",
|
||||
"require_password_change_on_login": "Απαιτείται από τον χρήστη να αλλάξει τον κωδικό πρόσβασης κατά την πρώτη σύνδεση",
|
||||
"reset_settings_to_default": "Επαναφορά προεπιλεγμένων ρυθμίσεων",
|
||||
"reset_settings_to_recent_saved": "Επαναφορά ρυθμίσεων στις πρόσφατα αποθηκευμένες ρυθμίσεις",
|
||||
@@ -254,14 +259,16 @@
|
||||
"template_email_invite_album": "Πρότυπο άλμπουμ πρόσκλησης",
|
||||
"template_email_preview": "Προεπισκόπηση",
|
||||
"template_email_settings": "Πρότυπα Email",
|
||||
"template_email_settings_description": "Διαχείριση προσαρμοσμένων προτύπων ειδοποιήσεων email",
|
||||
"template_email_update_album": "Ενημέρωση πρότυπου Άλμπουμ",
|
||||
"template_email_welcome": "Πρότυπο email καλωσορίσματος",
|
||||
"template_settings": "Πρότυπα ειδοποιήσεων",
|
||||
"template_settings_description": "Διαχείριση προσαρμοσμένων προτύπων για ειδοποιήσεις",
|
||||
"template_settings_description": "Διαχείριση προσαρμοσμένων προτύπων για ειδοποιήσεις.",
|
||||
"theme_custom_css_settings": "Προσαρμοσμένο CSS",
|
||||
"theme_custom_css_settings_description": "Τα Cascading Style Sheets(CSS) επιτρέπει την προσαρμογή του σχεδιασμού του Immich.",
|
||||
"theme_settings": "Ρυθμίσεις Θέματος",
|
||||
"theme_settings_description": "Διαχείριση της προσαρμογής του ιστότοπου του Immich",
|
||||
"these_files_matched_by_checksum": "Αυτά τα αρχεία αντιστοιχίζονται με βάση τα checksums(μοναδικές αλγοριθμικές τιμές των περιεχομένων ενός αρχείου) τους",
|
||||
"thumbnail_generation_job": "Δημιουργία Μικρογραφιών",
|
||||
"thumbnail_generation_job_description": "Δημιουργία μεγάλων, μικρών και θολών μικρογραφιών για κάθε αρχείο, καθώς και μικρογραφιών για κάθε άτομο",
|
||||
"transcoding_acceleration_api": "Επιτάχυνση API",
|
||||
@@ -289,9 +296,10 @@
|
||||
"transcoding_encoding_options": "Επιλογές κωδικοποίησης",
|
||||
"transcoding_encoding_options_description": "Ορίστε τους κωδικοποιητές, την ανάλυση, την ποιότητα και άλλες επιλογές για τα κωδικοποιημένα βίντεο",
|
||||
"transcoding_hardware_acceleration": "Επιτάχυνση υλικού",
|
||||
"transcoding_hardware_acceleration_description": "Πειραματικό: γρήγορη κωδικοποίηση αλλά ενδέχεται να μειωθεί η ποιότητα στον ίδιο ρυθμό μετάδοσης (bitrate)",
|
||||
"transcoding_hardware_acceleration_description": "Πειραματικό· πολύ πιο γρήγορο, αλλά θα έχει χαμηλότερη ποιότητα με τον ίδιο ρυθμό μετάδοσης (bitrate)",
|
||||
"transcoding_hardware_decoding": "Αποκωδικοποίηση μέσω υλικού",
|
||||
"transcoding_hardware_decoding_setting_description": "Ενεργοποιεί την επιτάχυνση από άκρη σε άκρη αντί για μόνο επιτάχυνση της κωδικοποίησης. Μπορεί να μην λειτουργεί σε όλα τα βίντεο.",
|
||||
"transcoding_hevc_codec": "Κωδικοποιητής HEVC",
|
||||
"transcoding_max_b_frames": "Μέγιστος αριθμός B-frames(Bidirectional Predictive Frames)",
|
||||
"transcoding_max_b_frames_description": "Οι υψηλότερες τιμές βελτιώνουν την αποδοτικότητα της συμπίεσης, αλλά επιβραδύνουν την κωδικοποίηση. Ενδέχεται να μην είναι συμβατές με την επιτάχυνση υλικού σε παλαιότερες συσκευές. Η τιμή 0 απενεργοποιεί τα B-frames, ενώ η -1, τη ρυθμίζει αυτόματα.",
|
||||
"transcoding_max_bitrate": "Μέγιστος ρυθμός μετάδοσης (bitrate)",
|
||||
@@ -329,13 +337,14 @@
|
||||
"trash_number_of_days_description": "Αριθμός ημερών παραμονής των αρχείων στον κάδο, πριν από την οριστική διαγραφή τους",
|
||||
"trash_settings": "Ρυθμίσεις Κάδου Απορριμμάτων",
|
||||
"trash_settings_description": "Διαχείριση ρυθίσεων κάδου απορριμμάτων",
|
||||
"untracked_files": "Αρχεία εκτός παρακολούθησης",
|
||||
"untracked_files_description": "Αυτά τα αρχεία δεν παρακολουθούνται από την εφαρμογή. Μπορεί να είναι αποτέλεσμα αποτυχημένων μετακινήσεων, διακοπών κατά τη μεταφόρτωση ή να έχουν παραμείνει λόγω κάποιου εσωτερικού σφάλματος",
|
||||
"user_cleanup_job": "Εκκαθάριση χρηστών",
|
||||
"user_delete_delay": "Ο λογαριασμός και τα αρχεία του/της <b>{user}</b> θα προγραμματιστούν για οριστική διαγραφή σε {delay, plural, one {# ημέρα} other {# ημέρες}}.",
|
||||
"user_delete_delay_settings": "Καθυστέρηση διαγραφής",
|
||||
"user_delete_delay_settings_description": "Αριθμός ημερών μετά την αφαίρεση, για την οριστική διαγραφή του λογαριασμού και των αρχείων ενός χρήστη. Η εργασία διαγραφής χρηστών εκτελείται τα μεσάνυχτα, για να ελέγξει ποιοι χρήστες είναι έτοιμοι για διαγραφή. Οι αλλαγές σε αυτή τη ρύθμιση θα αξιολογηθούν κατά την επόμενη εκτέλεση.",
|
||||
"user_delete_immediately": "Ο λογαριασμός και τα αρχεία του/της <b>{user}</b> θα μπουν στην ουρά για οριστική διαγραφή, <b>άμεσα</b>.",
|
||||
"user_delete_immediately_checkbox": "Βάλε τον χρήστη και τα αρχεία του στην ουρά για άμεση διαγραφή",
|
||||
"user_details": "Λεπτομέρειες χρήστη",
|
||||
"user_management": "Διαχείριση χρηστών",
|
||||
"user_password_has_been_reset": "Ο κωδικός πρόσβασης του χρήστη έχει επαναρυθμιστεί:",
|
||||
"user_password_reset_description": "Παρακαλώ παρέχετε τον προσωρινό κωδικό πρόσβασης στον χρήστη και ενημερώστε τον ότι θα πρέπει να τον αλλάξει, κατά την επόμενη σύνδεσή του.",
|
||||
@@ -357,7 +366,7 @@
|
||||
"advanced": "Για προχωρημένους",
|
||||
"advanced_settings_enable_alternate_media_filter_subtitle": "Χρησιμοποιήστε αυτήν την επιλογή για να φιλτράρετε τα μέσα ενημέρωσης κατά τον συγχρονισμό με βάση εναλλακτικά κριτήρια. Δοκιμάστε αυτή τη δυνατότητα μόνο αν έχετε προβλήματα με την εφαρμογή που εντοπίζει όλα τα άλμπουμ.",
|
||||
"advanced_settings_enable_alternate_media_filter_title": "[ΠΕΙΡΑΜΑΤΙΚΟ] Χρήση εναλλακτικού φίλτρου συγχρονισμού άλμπουμ συσκευής",
|
||||
"advanced_settings_log_level_title": "Επίπεδο σύνδεσης: {level}",
|
||||
"advanced_settings_log_level_title": "Επίπεδο σύνδεσης: {}",
|
||||
"advanced_settings_prefer_remote_subtitle": "Μερικές συσκευές αργούν πολύ να φορτώσουν μικρογραφίες από αρχεία στη συσκευή. Ενεργοποιήστε αυτήν τη ρύθμιση για να φορτώνονται αντί αυτού απομακρυσμένες εικόνες.",
|
||||
"advanced_settings_prefer_remote_title": "Προτίμηση απομακρυσμένων εικόνων",
|
||||
"advanced_settings_proxy_headers_subtitle": "Καθορισμός κεφαλίδων διακομιστή μεσολάβησης που το Immich πρέπει να στέλνει με κάθε αίτημα δικτύου",
|
||||
@@ -387,6 +396,10 @@
|
||||
"album_remove_user": "Διαγραφή χρήστη;",
|
||||
"album_remove_user_confirmation": "Είστε σίγουροι ότι θέλετε να αφαιρέσετε τον/την {user};",
|
||||
"album_share_no_users": "Φαίνεται ότι έχετε κοινοποιήσει αυτό το άλμπουμ σε όλους τους χρήστες ή δεν έχετε χρήστες για να το κοινοποιήσετε.",
|
||||
"album_thumbnail_card_item": "1 αντικείμενο",
|
||||
"album_thumbnail_card_items": "{} αντικείμενα",
|
||||
"album_thumbnail_card_shared": " Κοινόχρηστο",
|
||||
"album_thumbnail_shared_by": "Κοινοποιημένο από {}",
|
||||
"album_updated": "Το άλμπουμ, ενημερώθηκε",
|
||||
"album_updated_setting_description": "Λάβετε ειδοποίηση μέσω email όταν ένα κοινόχρηστο άλμπουμ έχει νέα αρχεία",
|
||||
"album_user_left": "Αποχωρήσατε από το {album}",
|
||||
@@ -424,7 +437,7 @@
|
||||
"archive": "Αρχείο",
|
||||
"archive_or_unarchive_photo": "Αρχειοθέτηση ή αποαρχειοθέτηση φωτογραφίας",
|
||||
"archive_page_no_archived_assets": "Δε βρέθηκαν αρχειοθετημένα στοιχεία",
|
||||
"archive_page_title": "Αρχείο ({count})",
|
||||
"archive_page_title": "Αρχείο ({})",
|
||||
"archive_size": "Μέγεθος Αρχείου",
|
||||
"archive_size_description": "Ρυθμίστε το μέγεθος του αρχείου για λήψεις (σε GiB)",
|
||||
"archived": "Αρχείο",
|
||||
@@ -461,18 +474,18 @@
|
||||
"assets_added_to_album_count": "Προστέθηκε {count, plural, one {# αρχείο} other {# αρχεία}} στο άλμπουμ",
|
||||
"assets_added_to_name_count": "Προστέθηκε {count, plural, one {# αρχείο} other {# αρχεία}} στο {hasName, select, true {<b>{name}</b>} other {νέο άλμπουμ}}",
|
||||
"assets_count": "{count, plural, one {# αρχείο} other {# αρχεία}}",
|
||||
"assets_deleted_permanently": "{count} τα στοιχεία διαγράφηκαν οριστικά",
|
||||
"assets_deleted_permanently_from_server": "{count} στοιχεία διαγράφηκαν οριστικά από το διακομιστή Immich",
|
||||
"assets_deleted_permanently": "{} τα στοιχεία διαγράφηκαν οριστικά",
|
||||
"assets_deleted_permanently_from_server": "{} τα στοιχεία διαγράφηκαν οριστικά από το διακομιστή Immich",
|
||||
"assets_moved_to_trash_count": "Μετακινήθηκαν {count, plural, one {# αρχείο} other {# αρχεία}} στον κάδο απορριμμάτων",
|
||||
"assets_permanently_deleted_count": "Διαγράφηκαν μόνιμα {count, plural, one {# αρχείο} other {# αρχεία}}",
|
||||
"assets_removed_count": "Αφαιρέθηκαν {count, plural, one {# αρχείο} other {# αρχεία}}",
|
||||
"assets_removed_permanently_from_device": "{count} στοιχεία καταργήθηκαν οριστικά από τη συσκευή σας",
|
||||
"assets_removed_permanently_from_device": "{} τα στοιχεία καταργήθηκαν οριστικά από τη συσκευή σας",
|
||||
"assets_restore_confirmation": "Είστε βέβαιοι ότι θέλετε να επαναφέρετε όλα τα στοιχεία που βρίσκονται στον κάδο απορριμμάτων; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί! Λάβετε υπόψη ότι δεν θα είναι δυνατή η επαναφορά στοιχείων εκτός σύνδεσης.",
|
||||
"assets_restored_count": "Έγινε επαναφορά {count, plural, one {# στοιχείου} other {# στοιχείων}}",
|
||||
"assets_restored_successfully": "{count} στοιχεία αποκαταστάθηκαν με επιτυχία",
|
||||
"assets_trashed": "{count} στοιχεία μεταφέρθηκαν στον κάδο απορριμμάτων",
|
||||
"assets_restored_successfully": "{} τα στοιχεία αποκαταστάθηκαν με επιτυχία",
|
||||
"assets_trashed": "{} στοιχεία μεταφέρθηκαν στον κάδο απορριμμάτων",
|
||||
"assets_trashed_count": "Μετακιν. στον κάδο απορριμάτων {count, plural, one {# στοιχείο} other {# στοιχεία}}",
|
||||
"assets_trashed_from_server": "{count} στοιχεία μεταφέρθηκαν στον κάδο απορριμμάτων από το διακομιστή Immich",
|
||||
"assets_trashed_from_server": "{} στοιχεία μεταφέρθηκαν στον κάδο απορριμμάτων από το διακομιστή Immich",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {Το στοιχείο ανήκει} other {Τα στοιχεία ανήκουν}} ήδη στο άλμπουμ",
|
||||
"authorized_devices": "Εξουσιοδοτημένες Συσκευές",
|
||||
"automatic_endpoint_switching_subtitle": "Σύνδεση τοπικά μέσω του καθορισμένου Wi-Fi όταν είναι διαθέσιμο και χρήση εναλλακτικών συνδέσεων αλλού",
|
||||
@@ -481,7 +494,7 @@
|
||||
"back_close_deselect": "Πίσω, κλείσιμο ή αποεπιλογή",
|
||||
"background_location_permission": "Άδεια τοποθεσίας στο παρασκήνιο",
|
||||
"background_location_permission_content": "Το Immich για να μπορεί να αλλάζει δίκτυα όταν τρέχει στο παρασκήνιο, πρέπει *πάντα* να έχει πρόσβαση στην ακριβή τοποθεσία ώστε η εφαρμογή να μπορεί να διαβάζει το όνομα του δικτύου Wi-Fi",
|
||||
"backup_album_selection_page_albums_device": "Άλμπουμ στη συσκευή ({count})",
|
||||
"backup_album_selection_page_albums_device": "Άλμπουμ στη συσκευή ({})",
|
||||
"backup_album_selection_page_albums_tap": "Πάτημα για συμπερίληψη, διπλό πάτημα για εξαίρεση",
|
||||
"backup_album_selection_page_assets_scatter": "Τα στοιχεία μπορεί να διασκορπιστούν σε πολλά άλμπουμ. Έτσι, τα άλμπουμ μπορούν να περιληφθούν ή να εξαιρεθούν κατά τη διαδικασία δημιουργίας αντιγράφων ασφαλείας.",
|
||||
"backup_album_selection_page_select_albums": "Επιλογή άλμπουμ",
|
||||
@@ -490,11 +503,11 @@
|
||||
"backup_all": "Όλα",
|
||||
"backup_background_service_backup_failed_message": "Αποτυχία δημιουργίας αντιγράφων ασφαλείας. Επανάληψη…",
|
||||
"backup_background_service_connection_failed_message": "Αποτυχία σύνδεσης με το διακομιστή. Επανάληψη…",
|
||||
"backup_background_service_current_upload_notification": "Μεταφόρτωση {filename}",
|
||||
"backup_background_service_current_upload_notification": "Μεταφόρτωση {}",
|
||||
"backup_background_service_default_notification": "Έλεγχος για νέα στοιχεία…",
|
||||
"backup_background_service_error_title": "Σφάλμα δημιουργίας αντιγράφων ασφαλείας",
|
||||
"backup_background_service_in_progress_notification": "Δημιουργία αντιγράφων ασφαλείας των στοιχείων σας…",
|
||||
"backup_background_service_upload_failure_notification": "Αποτυχία μεταφόρτωσης {filename}",
|
||||
"backup_background_service_upload_failure_notification": "Αποτυχία μεταφόρτωσης {}",
|
||||
"backup_controller_page_albums": "Δημιουργία αντιγράφων ασφαλείας άλμπουμ",
|
||||
"backup_controller_page_background_app_refresh_disabled_content": "Ενεργοποιήστε την ανανέωση εφαρμογής στο παρασκήνιο στις Ρυθμίσεις > Γενικά > Ανανέωση Εφαρμογής στο Παρασκήνιο για να χρησιμοποιήσετε την δημιουργία αντιγράφων ασφαλείας στο παρασκήνιο.",
|
||||
"backup_controller_page_background_app_refresh_disabled_title": "Η ανανέωση εφαρμογής στο παρασκηνίο είναι απενεργοποιημένη",
|
||||
@@ -505,7 +518,7 @@
|
||||
"backup_controller_page_background_battery_info_title": "Βελτιστοποιήσεις μπαταρίας",
|
||||
"backup_controller_page_background_charging": "Μόνο κατά τη φόρτιση",
|
||||
"backup_controller_page_background_configure_error": "Αποτυχία ρύθμισης της υπηρεσίας παρασκηνίου",
|
||||
"backup_controller_page_background_delay": "Καθυστέρηση δημιουργίας αντιγράφων ασφαλείας νέων στοιχείων: {duration}",
|
||||
"backup_controller_page_background_delay": "Καθυστέρηση δημιουργίας αντιγράφων ασφαλείας νέων στοιχείων: {}",
|
||||
"backup_controller_page_background_description": "Ενεργοποιήστε την υπηρεσία παρασκηνίου για αυτόματη δημιουργία αντιγράφων ασφαλείας νέων στοιχείων χωρίς να χρειάζεται να ανοίξετε την εφαρμογή",
|
||||
"backup_controller_page_background_is_off": "Η αυτόματη δημιουργία αντιγράφων ασφαλείας στο παρασκήνιο είναι απενεργοποιημένη",
|
||||
"backup_controller_page_background_is_on": "Η αυτόματη δημιουργία αντιγράφων ασφαλείας στο παρασκήνιο είναι ενεργοποιημένη",
|
||||
@@ -515,12 +528,12 @@
|
||||
"backup_controller_page_backup": "Αντίγραφα ασφαλείας",
|
||||
"backup_controller_page_backup_selected": "Επιλεγμένα: ",
|
||||
"backup_controller_page_backup_sub": "Φωτογραφίες και βίντεο για τα οποία έχουν δημιουργηθεί αντίγραφα ασφαλείας",
|
||||
"backup_controller_page_created": "Δημιουργήθηκε στις: {date}",
|
||||
"backup_controller_page_created": "Δημιουργήθηκε στις: {}",
|
||||
"backup_controller_page_desc_backup": "Ενεργοποιήστε την δημιουργία αντιγράφων ασφαλείας στο προσκήνιο για αυτόματη μεταφόρτωση νέων στοιχείων στον διακομιστή όταν ανοίγετε την εφαρμογή.",
|
||||
"backup_controller_page_excluded": "Εξαιρούμενα: ",
|
||||
"backup_controller_page_failed": "Αποτυχημένα ({count})",
|
||||
"backup_controller_page_filename": "Όνομα αρχείου: {filename} [{size}]",
|
||||
"backup_controller_page_id": "ID: {id}",
|
||||
"backup_controller_page_failed": "Αποτυχημένα ({})",
|
||||
"backup_controller_page_filename": "Όνομα αρχείου: {} [{}]",
|
||||
"backup_controller_page_id": "ID: {}",
|
||||
"backup_controller_page_info": "Πληροφορίες αντιγράφου ασφαλείας",
|
||||
"backup_controller_page_none_selected": "Κανένα επιλεγμένο",
|
||||
"backup_controller_page_remainder": "Υπόλοιπο",
|
||||
@@ -529,7 +542,7 @@
|
||||
"backup_controller_page_start_backup": "Έναρξη δημιουργίας αντιγράφου ασφαλείας",
|
||||
"backup_controller_page_status_off": "Η αυτόματη δημιουργία αντιγράφου ασφαλείας στο προσκήνιο, είναι απενεργοποιημένη",
|
||||
"backup_controller_page_status_on": "Η αυτόματη δημιουργία αντιγράφου ασφαλείας στο προσκήνιο είναι ενεργοποιημένη",
|
||||
"backup_controller_page_storage_format": "{used} από {total} σε χρήση",
|
||||
"backup_controller_page_storage_format": "{} από {} σε χρήση",
|
||||
"backup_controller_page_to_backup": "Άλμπουμ για δημιουργία αντιγράφου ασφαλείας",
|
||||
"backup_controller_page_total_sub": "Όλες οι μοναδικές φωτογραφίες και βίντεο από τα επιλεγμένα άλμπουμ",
|
||||
"backup_controller_page_turn_off": "Απενεργοποίηση δημιουργίας αντιγράφου ασφαλείας στο προσκήνιο",
|
||||
@@ -544,10 +557,6 @@
|
||||
"backup_options_page_title": "Επιλογές αντιγράφων ασφαλείας",
|
||||
"backup_setting_subtitle": "Διαχείριση ρυθμίσεων μεταφόρτωσης στο παρασκήνιο και στο προσκήνιο",
|
||||
"backward": "Προς τα πίσω",
|
||||
"biometric_auth_enabled": "Βιομετρική ταυτοποίηση ενεργοποιήθηκε",
|
||||
"biometric_locked_out": "Είστε κλειδωμένοι εκτός της βιομετρικής ταυτοποίησης",
|
||||
"biometric_no_options": "Δεν υπάρχουν διαθέσιμοι τρόποι βιομετρικής ταυτοποίησης",
|
||||
"biometric_not_available": "Δεν υπάρχει διαθέσιμη βιομετρική ταυτοποίηση σε αυτή τη συσκευή",
|
||||
"birthdate_saved": "Η ημερομηνία γέννησης αποθηκεύτηκε επιτυχώς",
|
||||
"birthdate_set_description": "Η ημερομηνία γέννησης χρησιμοποιείται για τον υπολογισμό της ηλικίας αυτού του ατόμου, τη χρονική στιγμή μιας φωτογραφίας.",
|
||||
"blurred_background": "Θολό φόντο",
|
||||
@@ -558,17 +567,21 @@
|
||||
"bulk_keep_duplicates_confirmation": "Είστε σίγουροι ότι θέλετε να κρατήσετε {count, plural, one {# διπλότυπο αρχείο} other {# διπλότυπα αρχεία}}; Αυτό θα επιλύσει όλες τις ομάδες διπλοτύπων χωρίς να διαγράψει τίποτα.",
|
||||
"bulk_trash_duplicates_confirmation": "Είστε σίγουροι ότι θέλετε να βάλετε στον κάδο απορριμμάτων {count, plural, one {# διπλότυπο αρχείο} other {# διπλότυπα αρχεία}}; Αυτό θα κρατήσει το μεγαλύτερο αρχείο από κάθε ομάδα και θα βάλει στον κάδο απορριμμάτων όλα τα άλλα διπλότυπα.",
|
||||
"buy": "Αγοράστε το Immich",
|
||||
"cache_settings_album_thumbnails": "Μικρογραφίες σελίδας βιβλιοθήκης ({} στοιχεία)",
|
||||
"cache_settings_clear_cache_button": "Εκκαθάριση προσωρινής μνήμης",
|
||||
"cache_settings_clear_cache_button_title": "Καθαρίζει τη προσωρινή μνήμη της εφαρμογής. Αυτό θα επηρεάσει σημαντικά την απόδοση της εφαρμογής μέχρι να αναδημιουργηθεί η προσωρινή μνήμη.",
|
||||
"cache_settings_duplicated_assets_clear_button": "ΕΚΚΑΘΑΡΙΣΗ",
|
||||
"cache_settings_duplicated_assets_subtitle": "Φωτογραφίες και βίντεο που έχουν μπει στη μαύρη λίστα από την εφαρμογή",
|
||||
"cache_settings_duplicated_assets_title": "Διπλότυπα στοιχεία ({count})",
|
||||
"cache_settings_duplicated_assets_title": "Διπλότυπα στοιχεία ({})",
|
||||
"cache_settings_image_cache_size": "Μέγεθος προσωρινής μνήμης εικόνων ({} στοιχεία)",
|
||||
"cache_settings_statistics_album": "Μικρογραφίες βιβλιοθήκης",
|
||||
"cache_settings_statistics_assets": "{} στοιχεία ({})",
|
||||
"cache_settings_statistics_full": "Πλήρεις εικόνες",
|
||||
"cache_settings_statistics_shared": "Μικρογραφίες κοινοποιημένου άλμπουμ",
|
||||
"cache_settings_statistics_thumbnail": "Μικρογραφίες",
|
||||
"cache_settings_statistics_title": "Χρήση προσωρινής μνήμης",
|
||||
"cache_settings_subtitle": "Διαχείρηση συμπεριφοράς της προσωρινής μνήμης",
|
||||
"cache_settings_thumbnail_size": "Μέγεθος προσωρινής μνήμης μικρογραφιών ({} στοιχεία)",
|
||||
"cache_settings_tile_subtitle": "Χειριστείτε τη συμπεριφορά της τοπικής αποθήκευσης",
|
||||
"cache_settings_tile_title": "Τοπική Αποθήκευση",
|
||||
"cache_settings_title": "Ρυθμίσεις Προσωρινής Μνήμης",
|
||||
@@ -581,15 +594,12 @@
|
||||
"cannot_merge_people": "Αδύνατη η συγχώνευση ατόμων",
|
||||
"cannot_undo_this_action": "Δεν μπορείτε να αναιρέσετε αυτήν την ενέργεια!",
|
||||
"cannot_update_the_description": "Αδύνατη η ενημέρωση της περιγραφής",
|
||||
"cast": "Προβολή",
|
||||
"cast_description": "Ρύθμιση των διαθέσιμων προορισμών casting",
|
||||
"change_date": "Αλλαγή ημερομηνίας",
|
||||
"change_description": "Αλλαγή περιγραφής",
|
||||
"change_display_order": "Αλλαγή σειράς εμφάνισης",
|
||||
"change_expiration_time": "Αλλαγή χρόνου λήξης",
|
||||
"change_location": "Αλλαγή τοποθεσίας",
|
||||
"change_name": "Αλλαγή ονομασίας",
|
||||
"change_name_successfully": "Επιτυχής αλλαγή ονόματος",
|
||||
"change_name_successfully": "Επιτυχής αλλαγή ονομασίας",
|
||||
"change_password": "Αλλαγή Κωδικού",
|
||||
"change_password_description": "Αυτή είναι ή η πρώτη φορά που συνδέεστε στο σύστημα ή έχει γίνει αίτημα για αλλαγή του κωδικού σας. Παρακαλώ εισάγετε τον νέο κωδικό, παρακάτω.",
|
||||
"change_password_form_confirm_password": "Επιβεβαίωση Κωδικού",
|
||||
@@ -597,9 +607,9 @@
|
||||
"change_password_form_new_password": "Νέος Κωδικός",
|
||||
"change_password_form_password_mismatch": "Οι κωδικοί δεν ταιριάζουν",
|
||||
"change_password_form_reenter_new_password": "Επανεισαγωγή Νέου Κωδικού",
|
||||
"change_pin_code": "Αλλαγή κωδικού PIN",
|
||||
"change_your_password": "Αλλάξτε τον κωδικό σας",
|
||||
"changed_visibility_successfully": "Η προβολή, άλλαξε με επιτυχία",
|
||||
"check_all": "Επιλογή Όλων",
|
||||
"check_corrupt_asset_backup": "Έλεγχος για κατεστραμμένα αντίγραφα ασφαλείας στοιχείων",
|
||||
"check_corrupt_asset_backup_button": "Εκτέλεση ελέγχου",
|
||||
"check_corrupt_asset_backup_description": "Εκτέλεσε αυτόν τον έλεγχο μόνο μέσω Wi-Fi και αφού έχουν αποθηκευτεί όλα τα αντίγραφα ασφαλείας των στοιχείων. Η διαδικασία μπορεί να διαρκέσει μερικά λεπτά.",
|
||||
@@ -637,14 +647,11 @@
|
||||
"confirm_delete_face": "Είστε σίγουροι ότι θέλετε να διαγράψετε το πρόσωπο του/της {name} από το στοιχείο;",
|
||||
"confirm_delete_shared_link": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτόν τον κοινόχρηστο σύνδεσμο;",
|
||||
"confirm_keep_this_delete_others": "Όλα τα άλλα στοιχεία της στοίβας θα διαγραφούν, εκτός από αυτό το στοιχείο. Είστε σίγουροι ότι θέλετε να συνεχίσετε;",
|
||||
"confirm_new_pin_code": "Επιβεβαίωση νέου κωδικού PIN",
|
||||
"confirm_password": "Επιβεβαίωση κωδικού",
|
||||
"confirm_tag_face": "Θέλετε να επισημάνετε αυτό το πρόσωπο ως {name};",
|
||||
"confirm_tag_face_unnamed": "Θέλετε να επισημάνετε αυτό το πρόσωπο;",
|
||||
"connected_to": "Συνδεδεμένο με",
|
||||
"contain": "Περιέχει",
|
||||
"context": "Συμφραζόμενα",
|
||||
"continue": "Συνέχεια",
|
||||
"control_bottom_app_bar_album_info_shared": "{} αντικείμενα · Κοινόχρηστα",
|
||||
"control_bottom_app_bar_create_new_album": "Δημιουργία νέου άλμπουμ",
|
||||
"control_bottom_app_bar_delete_from_immich": "Διαγραφή από το Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Διαγραφή από τη συσκευή",
|
||||
@@ -682,11 +689,9 @@
|
||||
"create_tag_description": "Δημιουργία νέας ετικέτας. Για τις ένθετες ετικέτες, παρακαλώ εισάγετε τη πλήρη διαδρομή της, συμπεριλαμβανομένων των κάθετων διαχωριστικών.",
|
||||
"create_user": "Δημιουργία χρήστη",
|
||||
"created": "Δημιουργήθηκε",
|
||||
"created_at": "Δημιουργήθηκε",
|
||||
"crop": "Αποκοπή",
|
||||
"curated_object_page_title": "Πράγματα",
|
||||
"current_device": "Τρέχουσα συσκευή",
|
||||
"current_pin_code": "Τρέχων κωδικός PIN",
|
||||
"current_server_address": "Τρέχουσα διεύθυνση διακομιστή",
|
||||
"custom_locale": "Προσαρμοσμένη Τοπική Ρύθμιση",
|
||||
"custom_locale_description": "Μορφοποιήστε τις ημερομηνίες και τους αριθμούς, σύμφωνα με τη γλώσσα και την περιοχή",
|
||||
@@ -755,6 +760,7 @@
|
||||
"download_enqueue": "Η λήψη τέθηκε σε ουρά",
|
||||
"download_error": "Σφάλμα λήψης",
|
||||
"download_failed": "Η λήψη απέτυχε",
|
||||
"download_filename": "αρχείο: {}",
|
||||
"download_finished": "Η λήψη ολοκληρώθηκε",
|
||||
"download_include_embedded_motion_videos": "Ενσωματωμένα βίντεο",
|
||||
"download_include_embedded_motion_videos_description": "Συμπεριλάβετε τα βίντεο που είναι ενσωματωμένα σε κινούμενες φωτογραφίες ως ξεχωριστό αρχείο",
|
||||
@@ -778,8 +784,6 @@
|
||||
"edit_avatar": "Επεξεργασία άβαταρ",
|
||||
"edit_date": "Επεξεργασία ημερομηνίας",
|
||||
"edit_date_and_time": "Επεξεργασία ημερομηνίας και ώρας",
|
||||
"edit_description": "Επεξεργασία περιγραφής",
|
||||
"edit_description_prompt": "Παρακαλώ επιλέξτε νέα περιγραφή:",
|
||||
"edit_exclusion_pattern": "Επεξεργασία μοτίβου αποκλεισμού",
|
||||
"edit_faces": "Επεξεργασία προσώπων",
|
||||
"edit_import_path": "Επεξεργασία διαδρομής εισαγωγής",
|
||||
@@ -800,24 +804,19 @@
|
||||
"editor_crop_tool_h2_aspect_ratios": "Αναλογίες διαστάσεων",
|
||||
"editor_crop_tool_h2_rotation": "Περιστροφή",
|
||||
"email": "Email",
|
||||
"email_notifications": "Ειδοποιήσεις email",
|
||||
"empty_folder": "Αυτός ο φάκελος είναι κενός",
|
||||
"empty_trash": "Άδειασμα κάδου απορριμμάτων",
|
||||
"empty_trash_confirmation": "Είστε σίγουροι οτι θέλετε να αδειάσετε τον κάδο απορριμμάτων; Αυτό θα αφαιρέσει μόνιμα όλα τα στοιχεία του κάδου απορριμμάτων του Immich. \nΑυτή η ενέργεια δεν μπορεί να αναιρεθεί!",
|
||||
"enable": "Ενεργοποίηση",
|
||||
"enable_biometric_auth_description": "Εισάγετε τον κωδικό PIN σας για να ενεργοποιήσετε την βιομετρική ταυτοποίηση",
|
||||
"enabled": "Ενεργοποιημένο",
|
||||
"end_date": "Τελική ημερομηνία",
|
||||
"enqueued": "Τοποθετήθηκε στη λίστα αναμονής",
|
||||
"enter_wifi_name": "Εισαγωγή ονόματος Wi-Fi",
|
||||
"enter_your_pin_code": "Εισάγετε τον κωδικό PIN σας",
|
||||
"enter_your_pin_code_subtitle": "Εισάγετε τον κωδικό PIN σας για να εισέλθετε στον κλειδωμένο φάκελο",
|
||||
"error": "Σφάλμα",
|
||||
"error_change_sort_album": "Απέτυχε η αλλαγή σειράς του άλμπουμ",
|
||||
"error_delete_face": "Σφάλμα διαγραφής προσώπου από το στοιχείο",
|
||||
"error_loading_image": "Σφάλμα κατά τη φόρτωση της εικόνας",
|
||||
"error_saving_image": "Σφάλμα: {error}",
|
||||
"error_tag_face_bounding_box": "Σφάλμα επισήμανσης προσώπου - δεν μπορούν να ληφθούν οι συντεταγμένες του πλαισίου οριοθέτησης",
|
||||
"error_saving_image": "Σφάλμα: {}",
|
||||
"error_title": "Σφάλμα - Κάτι πήγε στραβά",
|
||||
"errors": {
|
||||
"cannot_navigate_next_asset": "Δεν είναι δυνατή η πλοήγηση στο επόμενο στοιχείο",
|
||||
@@ -830,6 +829,7 @@
|
||||
"cant_get_number_of_comments": "Δεν είναι δυνατή η ανάκτηση του αριθμού των σχολίων",
|
||||
"cant_search_people": "Αδύνατη η αναζήτηση ατόμων",
|
||||
"cant_search_places": "Δεν μπορείτε να αναζητήσετε τοποθεσίες",
|
||||
"cleared_jobs": "Εκκαθαρισμένες εργασίες για: {job}",
|
||||
"error_adding_assets_to_album": "Σφάλμα κατά την προσθήκη στοιχείων στο άλμπουμ",
|
||||
"error_adding_users_to_album": "Σφάλμα κατά την προσθήκη χρηστών στο άλμπουμ",
|
||||
"error_deleting_shared_user": "Σφάλμα διαγραφής κοινόχρηστου χρήστη",
|
||||
@@ -838,6 +838,7 @@
|
||||
"error_removing_assets_from_album": "Σφάλμα αφαίρεσης στοιχείων από το άλμπουμ, ελέγξτε την κονσόλα για περισσότερες λεπτομέρειες",
|
||||
"error_selecting_all_assets": "Σφάλμα κατά την επιλογή όλων των στοιχείων",
|
||||
"exclusion_pattern_already_exists": "Αυτό το μοτίβο αποκλεισμού υπάρχει ήδη.",
|
||||
"failed_job_command": "Η εντολή {command} απέτυχε για την εργασία: {job}",
|
||||
"failed_to_create_album": "Αποτυχία δημιουργίας άλμπουμ",
|
||||
"failed_to_create_shared_link": "Αποτυχία δημιουργίας κοινόχρηστου συνδέσμου",
|
||||
"failed_to_edit_shared_link": "Αποτυχία επεξεργασίας κοινόχρηστου συνδέσμου",
|
||||
@@ -845,7 +846,6 @@
|
||||
"failed_to_keep_this_delete_others": "Αποτυχία διατήρησης αυτού του στοιχείου και διαγραφής των υπόλοιπων στοιχείων",
|
||||
"failed_to_load_asset": "Αποτυχία φόρτωσης στοιχείου",
|
||||
"failed_to_load_assets": "Αποτυχία φόρτωσης στοιχείων",
|
||||
"failed_to_load_notifications": "Αποτυχία φόρτωσης ειδοποιήσεων",
|
||||
"failed_to_load_people": "Αποτυχία φόρτωσης ατόμων",
|
||||
"failed_to_remove_product_key": "Αποτυχία αφαίρεσης κλειδιού προϊόντος",
|
||||
"failed_to_stack_assets": "Αποτυχία στην συμπίεση των στοιχείων",
|
||||
@@ -856,6 +856,7 @@
|
||||
"paths_validation_failed": "{paths, plural, one {# διαδρομή} other {# διαδρομές}} απέτυχαν κατά την επικύρωση",
|
||||
"profile_picture_transparent_pixels": "Οι εικόνες προφίλ δεν μπορούν να έχουν διαφανή εικονοστοιχεία. Παρακαλώ μεγεθύνετε ή/και μετακινήστε την εικόνα.",
|
||||
"quota_higher_than_disk_size": "Έχετε ορίσει ένα όριο, μεγαλύτερο από το μέγεθος του δίσκου",
|
||||
"repair_unable_to_check_items": "Αδυναμία ελέγχου {count, select, one {στοιχείου} other {στοιχείων}}",
|
||||
"unable_to_add_album_users": "Αδυναμία προσθήκης χρήστη στο άλμπουμ",
|
||||
"unable_to_add_assets_to_shared_link": "Αδυναμία προσθήκης στοιχείου στον κοινόχρηστο σύνδεσμο",
|
||||
"unable_to_add_comment": "Αδυναμία προσθήκης σχολίου",
|
||||
@@ -867,13 +868,13 @@
|
||||
"unable_to_archive_unarchive": "Αδυναμία {archived, select, true {αρχειοθέτησης} other {αποαρχειοθέτησης}}",
|
||||
"unable_to_change_album_user_role": "Αδυναμία αλλαγής του ρόλου του χρήστη στο άλμπουμ",
|
||||
"unable_to_change_date": "Αδυναμία αλλάγης της ημερομηνίας",
|
||||
"unable_to_change_description": "Αδυναμία αλλαγής περιγραφής",
|
||||
"unable_to_change_favorite": "Αδυναμία αλλαγής αγαπημένου για το στοιχείο",
|
||||
"unable_to_change_location": "Αδυναμία αλλαγής της τοποθεσίας",
|
||||
"unable_to_change_password": "Αδυναμία αλλαγής του κωδικού πρόσβασης",
|
||||
"unable_to_change_visibility": "Αδυναμία αλλαγής της προβολής για {count, plural, one {# άτομο} other {# άτομα}}",
|
||||
"unable_to_complete_oauth_login": "Αδυναμία ολοκλήρωσης σύνδεσης μέσω OAuth",
|
||||
"unable_to_connect": "Αδυναμία σύνδεσης",
|
||||
"unable_to_connect_to_server": "Αδυναμία σύνδεσης με το διακομιστή",
|
||||
"unable_to_copy_to_clipboard": "Αδυναμία αντιγραφής στο πρόχειρο, βεβαιωθείτε ότι έχετε πρόσβαση στη σελίδα μέσω https",
|
||||
"unable_to_create_admin_account": "Αδυναμία δημιουργίας λογαριασμού διαχειριστή",
|
||||
"unable_to_create_api_key": "Αδυναμία δημιουργίας ενός νέου κλειδιού API",
|
||||
@@ -897,6 +898,10 @@
|
||||
"unable_to_hide_person": "Αδυναμία απόκρυψης του ατόμου",
|
||||
"unable_to_link_motion_video": "Αδυναμία σύνδεσης βίντεο κίνησης",
|
||||
"unable_to_link_oauth_account": "Αδυναμία σύνδεσης λογαριασμού OAuth",
|
||||
"unable_to_load_album": "Αδυναμία φόρτωσης άλμπουμ",
|
||||
"unable_to_load_asset_activity": "Αδυναμία φόρτωσης της δραστηριότητας του στοιχείου",
|
||||
"unable_to_load_items": "Αδυναμία φόρτωσης αντικειμένων",
|
||||
"unable_to_load_liked_status": "Αδυναμία φόρτωσης της κατάστασης \"μου αρέσει\"",
|
||||
"unable_to_log_out_all_devices": "Αδυναμία αποσύνδεσης όλων των συσκευών",
|
||||
"unable_to_log_out_device": "Αδυναμία αποσύνδεσης της συσκευής",
|
||||
"unable_to_login_with_oauth": "Αδυναμία εισόδου μέσω OAuth",
|
||||
@@ -907,11 +912,12 @@
|
||||
"unable_to_remove_album_users": "Αδυναμία διαγραφής χρηστών από το άλμπουμ",
|
||||
"unable_to_remove_api_key": "Αδυναμία διαγραφής του κλειδιού API",
|
||||
"unable_to_remove_assets_from_shared_link": "Αδυναμία διαγραφής στοιχείων από τον κοινόχρηστο σύνδεσμο",
|
||||
"unable_to_remove_deleted_assets": "Αδυναμία αφαίρεσης αρχείων εκτός σύνδεσης",
|
||||
"unable_to_remove_library": "Αδυναμία αφαίρεσης βιβλιοθήκης",
|
||||
"unable_to_remove_partner": "Αδυναμία αφαίρεσης συνεργάτη",
|
||||
"unable_to_remove_reaction": "Αδυναμία αφαίρεσης της αντίδρασης",
|
||||
"unable_to_repair_items": "Αδυναμία επισκευής αντικειμένων",
|
||||
"unable_to_reset_password": "Αδυναμία επαναφοράς κωδικού πρόσβασης",
|
||||
"unable_to_reset_pin_code": "Αδυναμία επαναφοράς κωδικού PIN",
|
||||
"unable_to_resolve_duplicate": "Αδυναμία επίλυσης του διπλότυπου",
|
||||
"unable_to_restore_assets": "Αδυναμία επαναφοράς των στοιχείων",
|
||||
"unable_to_restore_trash": "Αδυναμία επαναφοράς του κάδου απορριμμάτων",
|
||||
@@ -945,9 +951,10 @@
|
||||
"exif_bottom_sheet_location": "ΤΟΠΟΘΕΣΙΑ",
|
||||
"exif_bottom_sheet_people": "ΑΤΟΜΑ",
|
||||
"exif_bottom_sheet_person_add_person": "Προσθήκη ονόματος",
|
||||
"exif_bottom_sheet_person_age_months": "Ηλικία {months} μήνες",
|
||||
"exif_bottom_sheet_person_age_year_months": "Ηλικία 1 έτους, {months} μηνών",
|
||||
"exif_bottom_sheet_person_age_years": "Ηλικία {years}",
|
||||
"exif_bottom_sheet_person_age": "Ηλικία {}",
|
||||
"exif_bottom_sheet_person_age_months": "Ηλικία {} μήνες",
|
||||
"exif_bottom_sheet_person_age_year_months": "Ηλικία 1 έτους, {} μηνών",
|
||||
"exif_bottom_sheet_person_age_years": "Ηλικία {}",
|
||||
"exit_slideshow": "Έξοδος από την παρουσίαση",
|
||||
"expand_all": "Ανάπτυξη όλων",
|
||||
"experimental_settings_new_asset_list_subtitle": "Σε εξέλιξη",
|
||||
@@ -968,7 +975,6 @@
|
||||
"external_network_sheet_info": "Όταν δεν είστε συνδεδεμένοι στο προτιμώμενο δίκτυο Wi-Fi, η εφαρμογή θα συνδεθεί με τον διακομιστή μέσω του πρώτου από τα παρακάτω URLs που μπορεί να βρει διαθέσιμο, ξεκινώντας από το πάνω προς το κάτω",
|
||||
"face_unassigned": "Μη ανατεθειμένο",
|
||||
"failed": "Απέτυχε",
|
||||
"failed_to_authenticate": "Αποτυχία ταυτοποίησης",
|
||||
"failed_to_load_assets": "Αποτυχία φόρτωσης στοιχείων",
|
||||
"failed_to_load_folder": "Αποτυχία φόρτωσης φακέλου",
|
||||
"favorite": "Αγαπημένο",
|
||||
@@ -992,8 +998,6 @@
|
||||
"folders": "Φάκελοι",
|
||||
"folders_feature_description": "Περιήγηση στην προβολή φακέλου για τις φωτογραφίες και τα βίντεο στο σύστημα αρχείων",
|
||||
"forward": "Προς τα εμπρός",
|
||||
"gcast_enabled": "Μετάδοση περιεχομένου Google Cast",
|
||||
"gcast_enabled_description": "Αυτό το χαρακτηριστικό φορτώνει εξωτερικούς πόρους από τη Google για να λειτουργήσει.",
|
||||
"general": "Γενικά",
|
||||
"get_help": "Ζητήστε βοήθεια",
|
||||
"get_wifiname_error": "Δεν ήταν δυνατή η λήψη του ονόματος Wi-Fi. Βεβαιωθείτε ότι έχετε δώσει τις απαραίτητες άδειες και ότι είστε συνδεδεμένοι σε δίκτυο Wi-Fi",
|
||||
@@ -1036,13 +1040,10 @@
|
||||
"home_page_favorite_err_local": "Δεν μπορώ ακόμα να αγαπήσω τα τοπικά στοιχεία, παραλείπεται",
|
||||
"home_page_favorite_err_partner": "Δεν είναι ακόμα δυνατή η πρόσθεση στοιχείων συντρόφου στα αγαπημένα, παραλείπεται",
|
||||
"home_page_first_time_notice": "Εάν αυτή είναι η πρώτη φορά που χρησιμοποιείτε την εφαρμογή, βεβαιωθείτε ότι έχετε επιλέξει ένα άλμπουμ αντίγραφου ασφαλείας, ώστε το χρονοδιάγραμμα να μπορεί να συμπληρώσει φωτογραφίες και βίντεο στα άλμπουμ",
|
||||
"home_page_locked_error_local": "Δεν είναι δυνατή η μετακίνηση τοπικών στοιχείων στον κλειδωμένο φάκελο, παράβλεψη",
|
||||
"home_page_locked_error_partner": "Δεν μπορείτε να μετακινήσετε τα στοιχεία συνεργάτη σε κλειδωμένο φάκελο, παράλειψη",
|
||||
"home_page_share_err_local": "Δεν είναι δυνατή η κοινή χρήση τοπικών στοιχείων μέσω συνδέσμου, παραλείπεται",
|
||||
"home_page_upload_err_limit": "Μπορείτε να ανεβάσετε μόνο 30 στοιχεία κάθε φορά, παραλείπεται",
|
||||
"host": "Φιλοξενία",
|
||||
"hour": "Ώρα",
|
||||
"id": "ID",
|
||||
"ignore_icloud_photos": "Αγνοήστε τις φωτογραφίες iCloud",
|
||||
"ignore_icloud_photos_description": "Οι φωτογραφίες που είναι αποθηκευμένες στο iCloud δεν θα μεταφορτωθούν στον διακομιστή Immich",
|
||||
"image": "Εικόνα",
|
||||
@@ -1082,12 +1083,6 @@
|
||||
"invalid_date_format": "Μη έγκυρη μορφή ημερομηνίας",
|
||||
"invite_people": "Πρόσκληση Ατόμων",
|
||||
"invite_to_album": "Πρόσκληση σε άλμπουμ",
|
||||
"ios_debug_info_fetch_ran_at": "Η ανάκτηση εκτελέστηκε στις {dateTime}",
|
||||
"ios_debug_info_last_sync_at": "Τελευταίος συγχρονισμός στις {dateTime}",
|
||||
"ios_debug_info_no_processes_queued": "Δεν υπάρχουν διεργασίες παρασκηνίου σε ουρά",
|
||||
"ios_debug_info_no_sync_yet": "Δεν έχει εκτελεστεί, για την ώρα, καμία εργασία συγχρονισμού στο παρασκήνιο",
|
||||
"ios_debug_info_processes_queued": "{count, plural, one {{count} διεργασία παρασκηνίου σε αναμονή} other {{count} διεργασίες παρασκηνίου σε αναμονή}}",
|
||||
"ios_debug_info_processing_ran_at": "Η επεξεργασία εκτελέστηκε στις {dateTime}",
|
||||
"items_count": "{count, plural, one {# αντικείμενο} other {# αντικείμενα}}",
|
||||
"jobs": "Εργασίες",
|
||||
"keep": "Διατήρηση",
|
||||
@@ -1121,7 +1116,7 @@
|
||||
"list": "Λίστα",
|
||||
"loading": "Φόρτωση",
|
||||
"loading_search_results_failed": "Η φόρτωση αποτελεσμάτων αναζήτησης απέτυχε",
|
||||
"local_network": "Τοπικό δίκτυο",
|
||||
"local_network": "Local network",
|
||||
"local_network_sheet_info": "Η εφαρμογή θα συνδεθεί με τον διακομιστή μέσω αυτού του URL όταν χρησιμοποιείται το καθορισμένο δίκτυο Wi-Fi",
|
||||
"location_permission": "Άδεια τοποθεσίας",
|
||||
"location_permission_content": "Για να χρησιμοποιηθεί η λειτουργία αυτόματης εναλλαγής, το Immich χρειάζεται άδεια για την ακριβή τοποθεσία της συσκευής ώστε να μπορεί να διαβάζει το όνομα του τρέχοντος δικτύου Wi-Fi",
|
||||
@@ -1130,8 +1125,6 @@
|
||||
"location_picker_latitude_hint": "Εισαγάγετε το γεωγραφικό πλάτος σας εδώ",
|
||||
"location_picker_longitude_error": "Εισαγάγετε ένα έγκυρο γεωγραφικό μήκος",
|
||||
"location_picker_longitude_hint": "Εισαγάγετε εδώ το γεωγραφικό σας μήκος",
|
||||
"lock": "Κλείδωμα",
|
||||
"locked_folder": "Κλειδωμένος φάκελος",
|
||||
"log_out": "Αποσύνδεση",
|
||||
"log_out_all_devices": "Αποσύνδεση από Όλες τις Συσκευές",
|
||||
"logged_out_all_devices": "Όλες οι συσκευές αποσυνδέθηκαν",
|
||||
@@ -1176,8 +1169,8 @@
|
||||
"manage_your_devices": "Διαχειριστείτε τις συνδεδεμένες συσκευές σας",
|
||||
"manage_your_oauth_connection": "Διαχειριστείτε τη σύνδεσή σας OAuth",
|
||||
"map": "Χάρτης",
|
||||
"map_assets_in_bound": "{count} φωτογραφία",
|
||||
"map_assets_in_bounds": "{count} φωτογραφίες",
|
||||
"map_assets_in_bound": "{} φωτογραφία",
|
||||
"map_assets_in_bounds": "{} φωτογραφίες",
|
||||
"map_cannot_get_user_location": "Δεν είναι δυνατή η λήψη της τοποθεσίας του χρήστη",
|
||||
"map_location_dialog_yes": "Ναι",
|
||||
"map_location_picker_page_use_location": "Χρησιμοποιήστε αυτήν την τοποθεσία",
|
||||
@@ -1191,9 +1184,9 @@
|
||||
"map_settings": "Ρυθμίσεις χάρτη",
|
||||
"map_settings_dark_mode": "Σκοτεινή λειτουργία",
|
||||
"map_settings_date_range_option_day": "Προηγούμενες 24 ώρες",
|
||||
"map_settings_date_range_option_days": "Προηγούμενες {days} ημέρες",
|
||||
"map_settings_date_range_option_days": "Προηγούμενες {} ημέρες",
|
||||
"map_settings_date_range_option_year": "Προηγούμενο έτος",
|
||||
"map_settings_date_range_option_years": "Προηγούμενα {years} έτη",
|
||||
"map_settings_date_range_option_years": "Προηγούμενα {} έτη",
|
||||
"map_settings_dialog_title": "Ρυθμίσεις Χάρτη",
|
||||
"map_settings_include_show_archived": "Συμπεριλάβετε Αρχειοθετημένα",
|
||||
"map_settings_include_show_partners": "Συμπεριλάβετε Συντρόφους",
|
||||
@@ -1211,6 +1204,8 @@
|
||||
"memories_setting_description": "Διαχειριστείτε τι θα εμφανίζεται στις αναμνήσεις σας",
|
||||
"memories_start_over": "Ξεκινήστε από την αρχή",
|
||||
"memories_swipe_to_close": "Σύρετε προς τα πάνω για να κλείσετε",
|
||||
"memories_year_ago": "Πριν ένα χρόνο",
|
||||
"memories_years_ago": "Πριν από {} έτη",
|
||||
"memory": "Ανάμνηση",
|
||||
"memory_lane_title": "Διαδρομή Αναμνήσεων {title}",
|
||||
"menu": "Μενού",
|
||||
@@ -1227,12 +1222,6 @@
|
||||
"month": "Μήνας",
|
||||
"monthly_title_text_date_format": "ΜΜΜΜ y",
|
||||
"more": "Περισσότερα",
|
||||
"move": "Μετακίνηση",
|
||||
"move_off_locked_folder": "Μετακίνηση έξω από τον κλειδωμένο φάκελο",
|
||||
"move_to_locked_folder": "Μετακίνηση σε κλειδωμένο φάκελο",
|
||||
"move_to_locked_folder_confirmation": "Αυτές οι φωτογραφίες και τα βίντεο θα αφαιρεθούν από όλα τα άλμπουμ και θα μπορούν να προβληθούν μόνο από τον κλειδωμένο φάκελο",
|
||||
"moved_to_archive": "Μετακινήθηκαν {count, plural, one {# στοιχείο} other {# στοιχεία}} στο αρχείο",
|
||||
"moved_to_library": "Μετακινήθηκε/αν {count, plural, one {# στοιχείο} other {# στοιχεία}} στη βιβλιοθήκη",
|
||||
"moved_to_trash": "Μετακινήθηκε στον κάδο απορριμμάτων",
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Δεν είναι δυνατή η επεξεργασία της ημερομηνίας των στοιχείων μόνο για ανάγνωση, παραλείπεται",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Δεν είναι δυνατή η επεξεργασία της τοποθεσίας των στοιχείων μόνο για ανάγνωση, παραλείπεται",
|
||||
@@ -1247,8 +1236,6 @@
|
||||
"new_api_key": "Νέο API Key",
|
||||
"new_password": "Νέος κωδικός πρόσβασης",
|
||||
"new_person": "Νέο άτομο",
|
||||
"new_pin_code": "Νέος κωδικός PIN",
|
||||
"new_pin_code_subtitle": "Αυτή είναι η πρώτη φορά που αποκτάτε πρόσβαση στον κλειδωμένο φάκελο. Δημιουργήστε έναν κωδικό PIN για ασφαλή πρόσβαση σε αυτή τη σελίδα",
|
||||
"new_user_created": "Ο νέος χρήστης δημιουργήθηκε",
|
||||
"new_version_available": "ΔΙΑΘΕΣΙΜΗ ΝΕΑ ΕΚΔΟΣΗ",
|
||||
"newest_first": "Τα νεότερα πρώτα",
|
||||
@@ -1266,10 +1253,8 @@
|
||||
"no_explore_results_message": "Ανεβάστε περισσότερες φωτογραφίες για να περιηγηθείτε στη συλλογή σας.",
|
||||
"no_favorites_message": "Προσθέστε αγαπημένα για να βρείτε γρήγορα τις καλύτερες φωτογραφίες και τα βίντεό σας",
|
||||
"no_libraries_message": "Δημιουργήστε μια εξωτερική βιβλιοθήκη για να προβάλετε τις φωτογραφίες και τα βίντεό σας",
|
||||
"no_locked_photos_message": "Οι φωτογραφίες και τα βίντεο στον κλειδωμένο φάκελο, είναι κρυμμένες και δεν θα εμφανίζονται κατά την περιήγηση ή την αναζήτηση στη βιβλιοθήκη σας.",
|
||||
"no_name": "Χωρίς Όνομα",
|
||||
"no_notifications": "Καμία ειδοποίηση",
|
||||
"no_people_found": "Δεν βρέθηκαν άτομα που να ταιριάζουν",
|
||||
"no_places": "Καμία τοποθεσία",
|
||||
"no_results": "Κανένα αποτέλεσμα",
|
||||
"no_results_description": "Δοκιμάστε ένα συνώνυμο ή πιο γενική λέξη-κλειδί",
|
||||
@@ -1278,7 +1263,6 @@
|
||||
"not_selected": "Δεν επιλέχθηκε",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Σημείωση: Για να εφαρμόσετε την Ετικέτα Αποθήκευσης σε στοιχεία που έχουν μεταφορτωθεί προηγουμένως, εκτελέστε το",
|
||||
"notes": "Σημειώσεις",
|
||||
"nothing_here_yet": "Τίποτα εδώ ακόμα",
|
||||
"notification_permission_dialog_content": "Για να ενεργοποιήσετε τις ειδοποιήσεις, μεταβείτε στις Ρυθμίσεις και επιλέξτε να επιτρέπεται.",
|
||||
"notification_permission_list_tile_content": "Παραχωρήστε άδεια για ενεργοποίηση ειδοποιήσεων.",
|
||||
"notification_permission_list_tile_enable_button": "Ενεργοποίηση Ειδοποιήσεων",
|
||||
@@ -1289,12 +1273,15 @@
|
||||
"oauth": "OAuth",
|
||||
"official_immich_resources": "Επίσημοι Πόροι του Immich",
|
||||
"offline": "Εκτός σύνδεσης",
|
||||
"offline_paths": "Διαδρομές εκτός σύνδεσης",
|
||||
"offline_paths_description": "Αυτά τα αποτελέσματα μπορεί να οφείλονται στη μη αυτόματη διαγραφή αρχείων που δεν αποτελούν μέρος μιας εξωτερικής βιβλιοθήκης.",
|
||||
"ok": "Έγινε",
|
||||
"oldest_first": "Τα παλαιότερα πρώτα",
|
||||
"on_this_device": "Σε αυτή τη συσκευή",
|
||||
"onboarding": "Οδηγός εκκίνησης",
|
||||
"onboarding_privacy_description": "Οι παρακάτω (προαιρετικές) λειτουργίες βασίζονται σε εξωτερικές υπηρεσίες και μπορούν να απενεργοποιηθούν ανά πάσα στιγμή από τις ρυθμίσεις διαχείρισης.",
|
||||
"onboarding_theme_description": "Επιλέξτε ένα θέμα χρώματος για το προφίλ σας. Μπορείτε να το αλλάξετε αργότερα στις ρυθμίσεις σας.",
|
||||
"onboarding_welcome_description": "Ας ρυθμίσουμε το προφίλ σας με ορισμένες κοινές ρυθμίσεις.",
|
||||
"onboarding_welcome_user": "Καλωσόρισες, {user}",
|
||||
"online": "Σε σύνδεση",
|
||||
"only_favorites": "Μόνο αγαπημένα",
|
||||
@@ -1322,7 +1309,7 @@
|
||||
"partner_page_partner_add_failed": "Αποτυχία προσθήκης συντρόφου",
|
||||
"partner_page_select_partner": "Επιλογή συντρόφου",
|
||||
"partner_page_shared_to_title": "Διαμοιράζεται με",
|
||||
"partner_page_stop_sharing_content": "Ο/Η {partner} δεν θα μπορεί πλέον να δει τις φωτογραφίες σας.",
|
||||
"partner_page_stop_sharing_content": "Ο/Η {} δεν θα μπορεί πλέον να δει τις φωτογραφίες σας.",
|
||||
"partner_sharing": "Κοινή Χρήση Συνεργατών",
|
||||
"partners": "Συνεργάτες",
|
||||
"password": "Κωδικός Πρόσβασης",
|
||||
@@ -1351,8 +1338,6 @@
|
||||
"permanently_delete_assets_prompt": "Είστε βέβαιοι ότι θέλετε να διαγράψετε οριστικά {count, plural, one {αυτό το στοιχείο;} other {αυτά τα <b>#</b> στοιχεία;}} Αυτό θα {count, plural, one {το} other {τα}} αφαιρέσει επίσης από τα άλμπουμ στα οποία {count, plural, one {ανήκει} other {ανήκουν}} .",
|
||||
"permanently_deleted_asset": "Οριστικά διαγραμμένο στοιχείο",
|
||||
"permanently_deleted_assets_count": "Οριστική διαγραφή {count, plural, one {# στοιχείου} other {# στοιχείων}}",
|
||||
"permission": "Άδεια",
|
||||
"permission_empty": "Η άδειά σου δεν πρέπει να είναι κενή",
|
||||
"permission_onboarding_back": "Πίσω",
|
||||
"permission_onboarding_continue_anyway": "Συνέχεια",
|
||||
"permission_onboarding_get_started": "Ξεκινήστε",
|
||||
@@ -1370,10 +1355,6 @@
|
||||
"photos_count": "{count, plural, one {{count, number} Φωτογραφία} other {{count, number} Φωτογραφίες}}",
|
||||
"photos_from_previous_years": "Φωτογραφίες προηγούμενων ετών",
|
||||
"pick_a_location": "Επιλέξτε μια τοποθεσία",
|
||||
"pin_code_changed_successfully": "Επιτυχής αλλαγή κωδικού PIN",
|
||||
"pin_code_reset_successfully": "Επιτυχής επαναφορά κωδικού PIN",
|
||||
"pin_code_setup_successfully": "Επιτυχής ρύθμιση κωδικού PIN",
|
||||
"pin_verification": "Επιβεβαίωση κωδικού PIN",
|
||||
"place": "Τοποθεσία",
|
||||
"places": "Τοποθεσίες",
|
||||
"places_count": "{count, plural, one {{count} Τοποθεσία} other {{count} Τοποθεσίες}}",
|
||||
@@ -1381,7 +1362,6 @@
|
||||
"play_memories": "Αναπαραγωγή αναμνήσεων",
|
||||
"play_motion_photo": "Αναπαραγωγή Κινούμενης Φωτογραφίας",
|
||||
"play_or_pause_video": "Αναπαραγωγή ή παύση βίντεο",
|
||||
"please_auth_to_access": "Παρακαλώ πιστοποιηθείτε για να αποκτήσετε πρόσβαση",
|
||||
"port": "Θύρα",
|
||||
"preferences_settings_subtitle": "Διαχειριστείτε τις προτιμήσεις της εφαρμογής",
|
||||
"preferences_settings_title": "Προτιμήσεις",
|
||||
@@ -1389,13 +1369,9 @@
|
||||
"preview": "Προεπισκόπηση",
|
||||
"previous": "Προηγούμενο",
|
||||
"previous_memory": "Προηγούμενη ανάμνηση",
|
||||
"previous_or_next_day": "Ημέρα μπροστά/πίσω",
|
||||
"previous_or_next_month": "Μήνας μπροστά/πίσω",
|
||||
"previous_or_next_photo": "Φωτογραφία μπροστά/πίσω",
|
||||
"previous_or_next_year": "Έτος μπροστά/πίσω",
|
||||
"previous_or_next_photo": "Προηγούμενη ή επόμενη φωτογραφία",
|
||||
"primary": "Πρωτεύων",
|
||||
"privacy": "Ιδιωτικότητα",
|
||||
"profile": "Προφίλ",
|
||||
"profile_drawer_app_logs": "Καταγραφές",
|
||||
"profile_drawer_client_out_of_date_major": "Παρακαλώ ενημερώστε την εφαρμογή στην πιο πρόσφατη κύρια έκδοση.",
|
||||
"profile_drawer_client_out_of_date_minor": "Παρακαλώ ενημερώστε την εφαρμογή στην πιο πρόσφατη δευτερεύουσα έκδοση.",
|
||||
@@ -1409,7 +1385,7 @@
|
||||
"public_share": "Δημόσια Κοινή Χρήση",
|
||||
"purchase_account_info": "Υποστηρικτής",
|
||||
"purchase_activated_subtitle": "Σας ευχαριστούμε για την υποστήριξη του Immich και λογισμικών ανοιχτού κώδικα",
|
||||
"purchase_activated_time": "Ενεργοποιήθηκε στις {date}",
|
||||
"purchase_activated_time": "Ενεργοποιήθηκε στις {date, date}",
|
||||
"purchase_activated_title": "Το κλειδί σας ενεργοποιήθηκε με επιτυχία",
|
||||
"purchase_button_activate": "Ενεργοποίηση",
|
||||
"purchase_button_buy": "Αγορά",
|
||||
@@ -1475,8 +1451,6 @@
|
||||
"remove_deleted_assets": "Αφαίρεση Διεγραμμένων Στοιχείων",
|
||||
"remove_from_album": "Αφαίρεση από το άλμπουμ",
|
||||
"remove_from_favorites": "Αφαίρεση από τα αγαπημένα",
|
||||
"remove_from_locked_folder": "Αφαίρεση από κλειδωμένο φάκελο",
|
||||
"remove_from_locked_folder_confirmation": "Είστε σίγουροι ότι θέλετε να μετακινήσετε αυτές τις φωτογραφίες και τα βίντεο από τον κλειδωμένο φάκελο; Θα είναι πλέον ορατές στη βιβλιοθήκη σας.",
|
||||
"remove_from_shared_link": "Αφαίρεση από τον κοινόχρηστο σύνδεσμο",
|
||||
"remove_memory": "Αφαίρεση ανάμνησης",
|
||||
"remove_photo_from_memory": "Αφαίρεση φωτογραφίας από την ανάμνηση",
|
||||
@@ -1500,7 +1474,6 @@
|
||||
"reset": "Επαναφορά",
|
||||
"reset_password": "Επαναφορά κωδικού πρόσβασης",
|
||||
"reset_people_visibility": "Επαναφορά προβολής ατόμων",
|
||||
"reset_pin_code": "Επαναφορά κωδικού PIN",
|
||||
"reset_to_default": "Επαναφορά στις προεπιλογές",
|
||||
"resolve_duplicates": "Επίλυση διπλοτύπων",
|
||||
"resolved_all_duplicates": "Επιλύθηκαν όλα τα διπλότυπα",
|
||||
@@ -1593,7 +1566,6 @@
|
||||
"select_keep_all": "Επιλέξτε διατήρηση όλων",
|
||||
"select_library_owner": "Επιλέξτε κάτοχο βιβλιοθήκης",
|
||||
"select_new_face": "Επιλέξτε νέο πρόσωπο",
|
||||
"select_person_to_tag": "Επιλέξτε ένα άτομο για επισήμανση",
|
||||
"select_photos": "Επιλέξτε φωτογραφίες",
|
||||
"select_trash_all": "Επιλέξτε διαγραφή όλων",
|
||||
"select_user_for_sharing_page_err_album": "Αποτυχία δημιουργίας άλπουμ",
|
||||
@@ -1623,12 +1595,13 @@
|
||||
"setting_image_viewer_title": "Εικόνες",
|
||||
"setting_languages_apply": "Εφαρμογή",
|
||||
"setting_languages_subtitle": "Αλλάξτε τη γλώσσα της εφαρμογής",
|
||||
"setting_notifications_notify_failures_grace_period": "Ειδοποίηση αποτυχιών δημιουργίας αντιγράφων ασφαλείας στο παρασκήνιο: {duration}",
|
||||
"setting_notifications_notify_hours": "{count} ώρες",
|
||||
"setting_languages_title": "Γλώσσες",
|
||||
"setting_notifications_notify_failures_grace_period": "Ειδοποίηση αποτυχιών δημιουργίας αντιγράφων ασφαλείας στο παρασκήνιο: {}",
|
||||
"setting_notifications_notify_hours": "{} ώρες",
|
||||
"setting_notifications_notify_immediately": "αμέσως",
|
||||
"setting_notifications_notify_minutes": "{count} λεπτά",
|
||||
"setting_notifications_notify_minutes": "{} λεπτά",
|
||||
"setting_notifications_notify_never": "ποτέ",
|
||||
"setting_notifications_notify_seconds": "{count} δευτερόλεπτα",
|
||||
"setting_notifications_notify_seconds": "{} δευτερόλεπτα",
|
||||
"setting_notifications_single_progress_subtitle": "Λεπτομερείς πληροφορίες προόδου μεταφόρτωσης ανά στοιχείο",
|
||||
"setting_notifications_single_progress_title": "Εμφάνιση προόδου λεπτομερειών δημιουργίας αντιγράφων ασφαλείας παρασκηνίου",
|
||||
"setting_notifications_subtitle": "Προσαρμόστε τις προτιμήσεις ειδοποίησης",
|
||||
@@ -1640,12 +1613,10 @@
|
||||
"settings": "Ρυθμίσεις",
|
||||
"settings_require_restart": "Επανεκκινήστε το Immich για να εφαρμόσετε αυτήν τη ρύθμιση",
|
||||
"settings_saved": "Οι ρυθμίσεις αποθηκεύτηκαν",
|
||||
"setup_pin_code": "Ρύθμιση κωδικού PIN",
|
||||
"share": "Κοινοποίηση",
|
||||
"share_add_photos": "Προσθήκη φωτογραφιών",
|
||||
"share_assets_selected": "{count} επιλεγμένα",
|
||||
"share_assets_selected": "{} επιλεγμένα",
|
||||
"share_dialog_preparing": "Προετοιμασία...",
|
||||
"share_link": "Σύνδεσμος κοινοποίησης",
|
||||
"shared": "Σε κοινή χρήση",
|
||||
"shared_album_activities_input_disable": "Το σχόλιο είναι απενεργοποιημένο",
|
||||
"shared_album_activity_remove_content": "Θέλετε να διαγράψετε αυτήν τη δραστηριότητα;",
|
||||
@@ -1658,32 +1629,32 @@
|
||||
"shared_by_user": "Σε κοινή χρήση από {user}",
|
||||
"shared_by_you": "Σε κοινή χρήση από εσάς",
|
||||
"shared_from_partner": "Φωτογραφίες από {partner}",
|
||||
"shared_intent_upload_button_progress_text": "{current} / {total} Μεταφορτωμένα",
|
||||
"shared_intent_upload_button_progress_text": "{} / {} Μεταφορτωμένα",
|
||||
"shared_link_app_bar_title": "Κοινόχρηστοι Σύνδεσμοι",
|
||||
"shared_link_clipboard_copied_massage": "Αντιγράφηκε στο πρόχειρο",
|
||||
"shared_link_clipboard_text": "Σύνδεσμος: {link}\nΚωδικός πρόσβασης: {password}",
|
||||
"shared_link_clipboard_text": "Σύνδεσμος: {}\nΚωδικός πρόσβασης: {}",
|
||||
"shared_link_create_error": "Σφάλμα κατά τη δημιουργία κοινόχρηστου συνδέσμου",
|
||||
"shared_link_edit_description_hint": "Εισαγάγετε την περιγραφή της κοινής χρήσης",
|
||||
"shared_link_edit_expire_after_option_day": "1 ημέρα",
|
||||
"shared_link_edit_expire_after_option_days": "{count} ημέρες",
|
||||
"shared_link_edit_expire_after_option_days": "{} ημέρες",
|
||||
"shared_link_edit_expire_after_option_hour": "1 ώρα",
|
||||
"shared_link_edit_expire_after_option_hours": "{count} ώρες",
|
||||
"shared_link_edit_expire_after_option_hours": "{} ώρες",
|
||||
"shared_link_edit_expire_after_option_minute": "1 λεπτό",
|
||||
"shared_link_edit_expire_after_option_minutes": "{count} λεπτά",
|
||||
"shared_link_edit_expire_after_option_months": "{count} μήνες",
|
||||
"shared_link_edit_expire_after_option_year": "{count} έτος",
|
||||
"shared_link_edit_expire_after_option_minutes": "{} λεπτά",
|
||||
"shared_link_edit_expire_after_option_months": "{} μήνες",
|
||||
"shared_link_edit_expire_after_option_year": "{} έτος",
|
||||
"shared_link_edit_password_hint": "Εισαγάγετε τον κωδικό πρόσβασης κοινής χρήσης",
|
||||
"shared_link_edit_submit_button": "Ενημέρωση συνδέσμου",
|
||||
"shared_link_error_server_url_fetch": "Δεν είναι δυνατή η ανάκτηση του URL του διακομιστή",
|
||||
"shared_link_expires_day": "Λήγει σε {count} ημέρα",
|
||||
"shared_link_expires_days": "Λήγει σε {count} ημέρες",
|
||||
"shared_link_expires_hour": "Λήγει σε {count} ώρα",
|
||||
"shared_link_expires_hours": "Λήγει σε {count} ώρες",
|
||||
"shared_link_expires_minute": "Λήγει σε {count} λεπτό",
|
||||
"shared_link_expires_minutes": "Λήγει σε {count} λεπτά",
|
||||
"shared_link_expires_day": "Λήγει σε {} ημέρα",
|
||||
"shared_link_expires_days": "Λήγει σε {} ημέρες",
|
||||
"shared_link_expires_hour": "Λήγει σε {} ώρα",
|
||||
"shared_link_expires_hours": "Λήγει σε {} ώρες",
|
||||
"shared_link_expires_minute": "Λήγει σε {} λεπτό",
|
||||
"shared_link_expires_minutes": "Λήγει σε {} λεπτά",
|
||||
"shared_link_expires_never": "Λήγει ∞",
|
||||
"shared_link_expires_second": "Λήγει σε {count} δευτερόλεπτο",
|
||||
"shared_link_expires_seconds": "Λήγει σε {count} δευτερόλεπτα",
|
||||
"shared_link_expires_second": "Λήγει σε {} δευτερόλεπτο",
|
||||
"shared_link_expires_seconds": "Λήγει σε {} δευτερόλεπτα",
|
||||
"shared_link_individual_shared": "Μεμονωμένο κοινό",
|
||||
"shared_link_info_chip_metadata": "EXIF",
|
||||
"shared_link_manage_links": "Διαχείριση Κοινόχρηστων Συνδέσμων",
|
||||
@@ -1758,7 +1729,6 @@
|
||||
"stop_sharing_photos_with_user": "Διακοπή κοινής χρήσης των φωτογραφιών σας με αυτό το χρήστη",
|
||||
"storage": "Χώρος αποθήκευσης",
|
||||
"storage_label": "Ετικέτα αποθήκευσης",
|
||||
"storage_quota": "Ποσοστό αποθηκευτικού χώρου",
|
||||
"storage_usage": "{used} από {available} σε χρήση",
|
||||
"submit": "Υποβολή",
|
||||
"suggestions": "Προτάσεις",
|
||||
@@ -1785,7 +1755,7 @@
|
||||
"theme_selection": "Επιλογή θέματος",
|
||||
"theme_selection_description": "Ρυθμίστε αυτόματα το θέμα σε ανοιχτό ή σκούρο με βάση τις προτιμήσεις συστήματος του προγράμματος περιήγησής σας",
|
||||
"theme_setting_asset_list_storage_indicator_title": "Εμφάνιση ένδειξης αποθήκευσης σε πλακίδια στοιχείων",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Αριθμός στοιχείων ανά σειρά ({count})",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Αριθμός στοιχείων ανά σειρά ({})",
|
||||
"theme_setting_colorful_interface_subtitle": "Εφαρμόστε βασικό χρώμα σε επιφάνειες φόντου.",
|
||||
"theme_setting_colorful_interface_title": "Πολύχρωμη διεπαφή",
|
||||
"theme_setting_image_viewer_quality_subtitle": "Προσαρμόστε την ποιότητα του προγράμματος προβολής εικόνας λεπτομερειών",
|
||||
@@ -1809,6 +1779,7 @@
|
||||
"to_parent": "Μεταβείτε στο γονικό φάκελο",
|
||||
"to_trash": "Κάδος απορριμμάτων",
|
||||
"toggle_settings": "Εναλλαγή ρυθμίσεων",
|
||||
"toggle_theme": "Εναλλαγή θέματος",
|
||||
"total": "Σύνολο",
|
||||
"total_usage": "Συνολική χρήση",
|
||||
"trash": "Κάδος απορριμμάτων",
|
||||
@@ -1819,15 +1790,13 @@
|
||||
"trash_no_results_message": "Οι φωτογραφίες και τα βίντεο που βρίσκονται στον κάδο απορριμμάτων θα εμφανίζονται εδώ.",
|
||||
"trash_page_delete_all": "Διαγραφή όλων",
|
||||
"trash_page_empty_trash_dialog_content": "Θέλετε να αδειάσετε τα περιουσιακά σας στοιχεία στον κάδο απορριμμάτων; Αυτά τα στοιχεία θα καταργηθούν οριστικά από το Immich",
|
||||
"trash_page_info": "Τα στοιχεία που έχουν απορριφθεί θα διαγραφούν οριστικά μετά από {days} ημέρες",
|
||||
"trash_page_info": "Τα στοιχεία που έχουν απορριφθεί θα διαγραφούν οριστικά μετά από {} ημέρες",
|
||||
"trash_page_no_assets": "Δεν υπάρχουν περιουσιακά στοιχεία που έχουν απορριφθεί",
|
||||
"trash_page_restore_all": "Επαναφορά Όλων",
|
||||
"trash_page_select_assets_btn": "Επιλέξτε στοιχεία",
|
||||
"trash_page_title": "Κάδος Απορριμμάτων ({count})",
|
||||
"trash_page_title": "Κάδος Απορριμμάτων ({})",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Τα στοιχεία που βρίσκονται στον κάδο απορριμμάτων θα διαγραφούν οριστικά μετά από {days, plural, one {# ημέρα} other {# ημέρες}}.",
|
||||
"type": "Τύπος",
|
||||
"unable_to_change_pin_code": "Αδυναμία αλλαγής κωδικού PIN",
|
||||
"unable_to_setup_pin_code": "Αδυναμία ρύθμισης κωδικού PIN",
|
||||
"unarchive": "Αναίρεση αρχειοθέτησης",
|
||||
"unarchived_count": "{count, plural, other {Αρχειοθετήσεις αναιρέθηκαν #}}",
|
||||
"unfavorite": "Αποεπιλογή από τα αγαπημένα",
|
||||
@@ -1848,8 +1817,9 @@
|
||||
"unselect_all_duplicates": "Αποεπιλογή όλων των διπλότυπων",
|
||||
"unstack": "Αποστοίβαξη",
|
||||
"unstacked_assets_count": "Αποστοιβάξατε {count, plural, one {# στοιχείο} other {# στοιχεία}}",
|
||||
"untracked_files": "Μη παρακολουθούμενα αρχεία",
|
||||
"untracked_files_decription": "Αυτά τα αρχεία δεν παρακολουθούνται από την εφαρμογή. Μπορεί να είναι αποτελέσματα αποτυχημένων μετακινήσεων, αποτυχημένες μεταφορτώσεις ή εναπομείναντα λόγω σφάλματος",
|
||||
"up_next": "Ακολουθεί",
|
||||
"updated_at": "Ενημερωμένο",
|
||||
"updated_password": "Ο κωδικός πρόσβασης ενημερώθηκε",
|
||||
"upload": "Μεταφόρτωση",
|
||||
"upload_concurrency": "Ταυτόχρονη μεταφόρτωση",
|
||||
@@ -1862,19 +1832,15 @@
|
||||
"upload_status_errors": "Σφάλματα",
|
||||
"upload_status_uploaded": "Μεταφορτώθηκαν",
|
||||
"upload_success": "Η μεταφόρτωση ολοκληρώθηκε, ανανεώστε τη σελίδα για να δείτε τα νέα αντικείμενα.",
|
||||
"upload_to_immich": "Μεταφόρτωση στο Immich ({count})",
|
||||
"upload_to_immich": "Μεταφόρτωση στο Immich ({})",
|
||||
"uploading": "Μεταφορτώνεται",
|
||||
"url": "URL",
|
||||
"usage": "Χρήση",
|
||||
"use_biometric": "Χρήση βιομετρικών στοιχείων",
|
||||
"use_current_connection": "χρήση τρέχουσας σύνδεσης",
|
||||
"use_custom_date_range": "Χρήση προσαρμοσμένου εύρους ημερομηνιών",
|
||||
"user": "Χρήστης",
|
||||
"user_has_been_deleted": "Αυτός ο χρήστης έχει διεγραφεί.",
|
||||
"user_id": "ID Χρήστη",
|
||||
"user_liked": "Στο χρήστη {user} αρέσει {type, select, photo {αυτή η φωτογραφία} video {αυτό το βίντεο} asset {αυτό το αντικείμενο} other {it}}",
|
||||
"user_pin_code_settings": "Κωδικός PIN",
|
||||
"user_pin_code_settings_description": "Διαχειριστείτε τον κωδικό PIN σας",
|
||||
"user_purchase_settings": "Αγορά",
|
||||
"user_purchase_settings_description": "Διαχείριση Αγοράς",
|
||||
"user_role_set": "Ορισμός {user} ως {role}",
|
||||
@@ -1890,6 +1856,11 @@
|
||||
"version": "Έκδοση",
|
||||
"version_announcement_closing": "Ο φίλος σου, Alex",
|
||||
"version_announcement_message": "Γειά σας! Μια νέα έκδοση του Immich είναι διαθέσιμη. Παρακαλούμε αφιερώστε λίγο χρόνο για να διαβάσετε τις <link>σημειώσεις έκδοσης</link> ώστε να βεβαιωθείτε ότι η ρύθμιση σας είναι ενημερωμένη και να αποφύγετε τυχόν σφάλματα, ειδικά αν χρησιμοποιείτε το WatchTower ή οποιοδήποτε μηχανισμό που διαχειρίζεται αυτόματα την ενημέρωση της εγκατάστασης του Immich σας.",
|
||||
"version_announcement_overlay_release_notes": "σημειώσεις έκδοσης",
|
||||
"version_announcement_overlay_text_1": "Γειά σας, υπάρχει μια νέα έκδοση του",
|
||||
"version_announcement_overlay_text_2": "παρακαλώ αφιερώστε χρόνο να επισκεφθείτε το ",
|
||||
"version_announcement_overlay_text_3": " και βεβαιωθείτε ότι το docker-compose και το .env σας είναι ενημερωμένη για την αποφυγή τυχόν εσφαλμένων διαμορφώσεων, ειδικά εάν χρησιμοποιείτε το WatchTower ή οποιονδήποτε μηχανισμό που χειρίζεται την αυτόματη ενημέρωση του διακομιστή σας.",
|
||||
"version_announcement_overlay_title": "Διαθέσιμη νέα έκδοση διακομιστή 🎉",
|
||||
"version_history": "Ιστορικό Εκδόσεων",
|
||||
"version_history_item": "Εγκαταστάθηκε {version} στις {date}",
|
||||
"video": "Βίντεο",
|
||||
@@ -1909,7 +1880,6 @@
|
||||
"view_previous_asset": "Προβολή προηγούμενου στοιχείου",
|
||||
"view_qr_code": "Προβολή κωδικού QR",
|
||||
"view_stack": "Προβολή της στοίβας",
|
||||
"view_user": "Προβολή Χρήστη",
|
||||
"viewer_remove_from_stack": "Κατάργηση από τη Στοίβα",
|
||||
"viewer_stack_use_as_main_asset": "Χρήση ως Κύριο Στοιχείο",
|
||||
"viewer_unstack": "Αποστοίβαξε",
|
||||
@@ -1920,7 +1890,6 @@
|
||||
"welcome": "Καλωσορίσατε",
|
||||
"welcome_to_immich": "Καλωσορίσατε στο Ιmmich",
|
||||
"wifi_name": "Όνομα Wi-Fi",
|
||||
"wrong_pin_code": "Λάθος κωδικός PIN",
|
||||
"year": "Έτος",
|
||||
"years_ago": "πριν από {years, plural, one {# χρόνο} other {# χρόνια}}",
|
||||
"yes": "Ναι",
|
||||
|
||||
194
i18n/en.json
194
i18n/en.json
@@ -1,4 +1,17 @@
|
||||
{
|
||||
"user_pin_code_settings": "PIN Code",
|
||||
"user_pin_code_settings_description": "Manage your PIN code",
|
||||
"current_pin_code": "Current PIN code",
|
||||
"new_pin_code": "New PIN code",
|
||||
"setup_pin_code": "Setup a PIN code",
|
||||
"confirm_new_pin_code": "Confirm new PIN code",
|
||||
"change_pin_code": "Change PIN code",
|
||||
"unable_to_change_pin_code": "Unable to change PIN code",
|
||||
"unable_to_setup_pin_code": "Unable to setup PIN code",
|
||||
"pin_code_changed_successfully": "Successfully changed PIN code",
|
||||
"pin_code_setup_successfully": "Successfully setup a PIN code",
|
||||
"pin_code_reset_successfully": "Successfully reset PIN code",
|
||||
"reset_pin_code": "Reset PIN code",
|
||||
"about": "About",
|
||||
"account": "Account",
|
||||
"account_settings": "Account Settings",
|
||||
@@ -22,7 +35,6 @@
|
||||
"add_partner": "Add partner",
|
||||
"add_path": "Add path",
|
||||
"add_photos": "Add photos",
|
||||
"add_tag": "Add tag",
|
||||
"add_to": "Add to…",
|
||||
"add_to_album": "Add to album",
|
||||
"add_to_album_bottom_sheet_added": "Added to {album}",
|
||||
@@ -34,7 +46,6 @@
|
||||
"added_to_favorites_count": "Added {count, number} to favorites",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "Add exclusion patterns. Globbing using *, **, and ? is supported. To ignore all files in any directory named \"Raw\", use \"**/Raw/**\". To ignore all files ending in \".tif\", use \"**/*.tif\". To ignore an absolute path, use \"/path/to/ignore/**\".",
|
||||
"admin_user": "Admin User",
|
||||
"asset_offline_description": "This external library asset is no longer found on disk and has been moved to trash. If the file was moved within the library, check your timeline for the new corresponding asset. To restore this asset, please ensure that the file path below can be accessed by Immich and scan the library.",
|
||||
"authentication_settings": "Authentication Settings",
|
||||
"authentication_settings_description": "Manage password, OAuth, and other authentication settings",
|
||||
@@ -45,7 +56,9 @@
|
||||
"backup_database_enable_description": "Enable database dumps",
|
||||
"backup_keep_last_amount": "Amount of previous dumps to keep",
|
||||
"backup_settings": "Database Dump Settings",
|
||||
"backup_settings_description": "Manage database dump settings.",
|
||||
"backup_settings_description": "Manage database dump settings. Note: These jobs are not monitored and you will not be notified of failure.",
|
||||
"check_all": "Check All",
|
||||
"cleanup": "Cleanup",
|
||||
"cleared_jobs": "Cleared jobs for: {job}",
|
||||
"config_set_by_file": "Config is currently set by a config file",
|
||||
"confirm_delete_library": "Are you sure you want to delete {library} library?",
|
||||
@@ -61,12 +74,14 @@
|
||||
"disable_login": "Disable login",
|
||||
"duplicate_detection_job_description": "Run machine learning on assets to detect similar images. Relies on Smart Search",
|
||||
"exclusion_pattern_description": "Exclusion patterns lets you ignore files and folders when scanning your library. This is useful if you have folders that contain files you don't want to import, such as RAW files.",
|
||||
"external_library_created_at": "External library (created on {date})",
|
||||
"external_library_management": "External Library Management",
|
||||
"face_detection": "Face detection",
|
||||
"face_detection_description": "Detect the faces in assets using machine learning. For videos, only the thumbnail is considered. \"Refresh\" (re-)processes all assets. \"Reset\" additionally clears all current face data. \"Missing\" queues assets that haven't been processed yet. Detected faces will be queued for Facial Recognition after Face Detection is complete, grouping them into existing or new people.",
|
||||
"facial_recognition_job_description": "Group detected faces into people. This step runs after Face Detection is complete. \"Reset\" (re-)clusters all faces. \"Missing\" queues faces that don't have a person assigned.",
|
||||
"failed_job_command": "Command {command} failed for job: {job}",
|
||||
"force_delete_user_warning": "WARNING: This will immediately remove the user and all assets. This cannot be undone and the files cannot be recovered.",
|
||||
"forcing_refresh_library_files": "Forcing refresh of all library files",
|
||||
"image_format": "Format",
|
||||
"image_format_description": "WebP produces smaller files than JPEG, but is slower to encode.",
|
||||
"image_fullsize_description": "Full-size image with stripped metadata, used when zoomed in",
|
||||
@@ -171,7 +186,7 @@
|
||||
"note_apply_storage_label_previous_assets": "Note: To apply the Storage Label to previously uploaded assets, run the",
|
||||
"note_cannot_be_changed_later": "NOTE: This cannot be changed later!",
|
||||
"notification_email_from_address": "From address",
|
||||
"notification_email_from_address_description": "Sender email address, for example: \"Immich Photo Server <noreply@example.com>\". Make sure to use an address you're allowed to send emails from.",
|
||||
"notification_email_from_address_description": "Sender email address, for example: \"Immich Photo Server <noreply@example.com>\"",
|
||||
"notification_email_host_description": "Host of the email server (e.g. smtp.immich.app)",
|
||||
"notification_email_ignore_certificate_errors": "Ignore certificate errors",
|
||||
"notification_email_ignore_certificate_errors_description": "Ignore TLS certificate validation errors (not recommended)",
|
||||
@@ -195,7 +210,7 @@
|
||||
"oauth_enable_description": "Login with OAuth",
|
||||
"oauth_mobile_redirect_uri": "Mobile redirect URI",
|
||||
"oauth_mobile_redirect_uri_override": "Mobile redirect URI override",
|
||||
"oauth_mobile_redirect_uri_override_description": "Enable when OAuth provider does not allow a mobile URI, like ''{callback}''",
|
||||
"oauth_mobile_redirect_uri_override_description": "Enable when OAuth provider does not allow a mobile URI, like '{callback}'",
|
||||
"oauth_settings": "OAuth",
|
||||
"oauth_settings_description": "Manage OAuth login settings",
|
||||
"oauth_settings_more_details": "For more details about this feature, refer to the <link>docs</link>.",
|
||||
@@ -204,9 +219,11 @@
|
||||
"oauth_storage_quota_claim": "Storage quota claim",
|
||||
"oauth_storage_quota_claim_description": "Automatically set the user's storage quota to the value of this claim.",
|
||||
"oauth_storage_quota_default": "Default storage quota (GiB)",
|
||||
"oauth_storage_quota_default_description": "Quota in GiB to be used when no claim is provided.",
|
||||
"oauth_storage_quota_default_description": "Quota in GiB to be used when no claim is provided (Enter 0 for unlimited quota).",
|
||||
"oauth_timeout": "Request Timeout",
|
||||
"oauth_timeout_description": "Timeout for requests in milliseconds",
|
||||
"offline_paths": "Offline Paths",
|
||||
"offline_paths_description": "These results may be due to manual deletion of files that are not part of an external library.",
|
||||
"password_enable_description": "Login with email and password",
|
||||
"password_settings": "Password Login",
|
||||
"password_settings_description": "Manage password login settings",
|
||||
@@ -216,6 +233,9 @@
|
||||
"refreshing_all_libraries": "Refreshing all libraries",
|
||||
"registration": "Admin Registration",
|
||||
"registration_description": "Since you are the first user on the system, you will be assigned as the Admin and are responsible for administrative tasks, and additional users will be created by you.",
|
||||
"repair_all": "Repair All",
|
||||
"repair_matched_items": "Matched {count, plural, one {# item} other {# items}}",
|
||||
"repaired_items": "Repaired {count, plural, one {# item} other {# items}}",
|
||||
"require_password_change_on_login": "Require user to change password on first login",
|
||||
"reset_settings_to_default": "Reset settings to default",
|
||||
"reset_settings_to_recent_saved": "Reset settings to the recent saved settings",
|
||||
@@ -256,14 +276,16 @@
|
||||
"template_email_invite_album": "Invite Album Template",
|
||||
"template_email_preview": "Preview",
|
||||
"template_email_settings": "Email Templates",
|
||||
"template_email_settings_description": "Manage custom email notification templates",
|
||||
"template_email_update_album": "Update Album Template",
|
||||
"template_email_welcome": "Welcome email template",
|
||||
"template_settings": "Notification Templates",
|
||||
"template_settings_description": "Manage custom templates for notifications",
|
||||
"template_settings_description": "Manage custom templates for notifications.",
|
||||
"theme_custom_css_settings": "Custom CSS",
|
||||
"theme_custom_css_settings_description": "Cascading Style Sheets allow the design of Immich to be customized.",
|
||||
"theme_settings": "Theme Settings",
|
||||
"theme_settings_description": "Manage customization of the Immich web interface",
|
||||
"these_files_matched_by_checksum": "These files are matched by their checksums",
|
||||
"thumbnail_generation_job": "Generate Thumbnails",
|
||||
"thumbnail_generation_job_description": "Generate large, small and blurred thumbnails for each asset, as well as thumbnails for each person",
|
||||
"transcoding_acceleration_api": "Acceleration API",
|
||||
@@ -291,9 +313,10 @@
|
||||
"transcoding_encoding_options": "Encoding Options",
|
||||
"transcoding_encoding_options_description": "Set codecs, resolution, quality and other options for the encoded videos",
|
||||
"transcoding_hardware_acceleration": "Hardware Acceleration",
|
||||
"transcoding_hardware_acceleration_description": "Experimental: faster transcoding but may reduce quality at same bitrate",
|
||||
"transcoding_hardware_acceleration_description": "Experimental; much faster, but will have lower quality at the same bitrate",
|
||||
"transcoding_hardware_decoding": "Hardware decoding",
|
||||
"transcoding_hardware_decoding_setting_description": "Enables end-to-end acceleration instead of only accelerating encoding. May not work on all videos.",
|
||||
"transcoding_hevc_codec": "HEVC codec",
|
||||
"transcoding_max_b_frames": "Maximum B-frames",
|
||||
"transcoding_max_b_frames_description": "Higher values improve compression efficiency, but slow down encoding. May not be compatible with hardware acceleration on older devices. 0 disables B-frames, while -1 sets this value automatically.",
|
||||
"transcoding_max_bitrate": "Maximum bitrate",
|
||||
@@ -331,6 +354,8 @@
|
||||
"trash_number_of_days_description": "Number of days to keep the assets in trash before permanently removing them",
|
||||
"trash_settings": "Trash Settings",
|
||||
"trash_settings_description": "Manage trash settings",
|
||||
"untracked_files": "Untracked Files",
|
||||
"untracked_files_description": "These files are not tracked by the application. They can be the results of failed moves, interrupted uploads, or left behind due to a bug",
|
||||
"user_cleanup_job": "User cleanup",
|
||||
"user_delete_delay": "<b>{user}</b>'s account and assets will be scheduled for permanent deletion in {delay, plural, one {# day} other {# days}}.",
|
||||
"user_delete_delay_settings": "Delete delay",
|
||||
@@ -389,6 +414,10 @@
|
||||
"album_remove_user": "Remove user?",
|
||||
"album_remove_user_confirmation": "Are you sure you want to remove {user}?",
|
||||
"album_share_no_users": "Looks like you have shared this album with all users or you don't have any user to share with.",
|
||||
"album_thumbnail_card_item": "1 item",
|
||||
"album_thumbnail_card_items": "{count} items",
|
||||
"album_thumbnail_card_shared": " · Shared",
|
||||
"album_thumbnail_shared_by": "Shared by {user}",
|
||||
"album_updated": "Album updated",
|
||||
"album_updated_setting_description": "Receive an email notification when a shared album has new assets",
|
||||
"album_user_left": "Left {album}",
|
||||
@@ -404,9 +433,6 @@
|
||||
"album_with_link_access": "Let anyone with the link see photos and people in this album.",
|
||||
"albums": "Albums",
|
||||
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albums}}",
|
||||
"albums_default_sort_order": "Default album sort order",
|
||||
"albums_default_sort_order_description": "Initial asset sort order when creating new albums.",
|
||||
"albums_feature_description": "Collections of assets that can be shared with other users.",
|
||||
"all": "All",
|
||||
"all_albums": "All albums",
|
||||
"all_people": "All people",
|
||||
@@ -465,12 +491,9 @@
|
||||
"assets_added_count": "Added {count, plural, one {# asset} other {# assets}}",
|
||||
"assets_added_to_album_count": "Added {count, plural, one {# asset} other {# assets}} to the album",
|
||||
"assets_added_to_name_count": "Added {count, plural, one {# asset} other {# assets}} to {hasName, select, true {<b>{name}</b>} other {new album}}",
|
||||
"assets_cannot_be_added_to_album_count": "{count, plural, one {Asset} other {Assets}} cannot be added to the album",
|
||||
"assets_count": "{count, plural, one {# asset} other {# assets}}",
|
||||
"assets_deleted_permanently": "{count} asset(s) deleted permanently",
|
||||
"assets_deleted_permanently_from_server": "{count} asset(s) deleted permanently from the Immich server",
|
||||
"assets_downloaded_failed": "{count, plural, one {Downloaded # file - {error} file failed} other {Downloaded # files - {error} files failed}}",
|
||||
"assets_downloaded_successfully": "{count, plural, one {Downloaded # file successfully} other {Downloaded # files successfully}}",
|
||||
"assets_moved_to_trash_count": "Moved {count, plural, one {# asset} other {# assets}} to trash",
|
||||
"assets_permanently_deleted_count": "Permanently deleted {count, plural, one {# asset} other {# assets}}",
|
||||
"assets_removed_count": "Removed {count, plural, one {# asset} other {# assets}}",
|
||||
@@ -485,7 +508,6 @@
|
||||
"authorized_devices": "Authorized Devices",
|
||||
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
|
||||
"automatic_endpoint_switching_title": "Automatic URL switching",
|
||||
"autoplay_slideshow": "Autoplay slideshow",
|
||||
"back": "Back",
|
||||
"back_close_deselect": "Back, close, or deselect",
|
||||
"background_location_permission": "Background location permission",
|
||||
@@ -553,10 +575,6 @@
|
||||
"backup_options_page_title": "Backup options",
|
||||
"backup_setting_subtitle": "Manage background and foreground upload settings",
|
||||
"backward": "Backward",
|
||||
"biometric_auth_enabled": "Biometric authentication enabled",
|
||||
"biometric_locked_out": "You are locked out of biometric authentication",
|
||||
"biometric_no_options": "No biometric options available",
|
||||
"biometric_not_available": "Biometric authentication is not available on this device",
|
||||
"birthdate_saved": "Date of birth saved successfully",
|
||||
"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",
|
||||
@@ -567,17 +585,21 @@
|
||||
"bulk_keep_duplicates_confirmation": "Are you sure you want to keep {count, plural, one {# duplicate asset} other {# duplicate assets}}? This will resolve all duplicate groups without deleting anything.",
|
||||
"bulk_trash_duplicates_confirmation": "Are you sure you want to bulk trash {count, plural, one {# duplicate asset} other {# duplicate assets}}? This will keep the largest asset of each group and trash all other duplicates.",
|
||||
"buy": "Purchase Immich",
|
||||
"cache_settings_album_thumbnails": "Library page thumbnails ({count} assets)",
|
||||
"cache_settings_clear_cache_button": "Clear cache",
|
||||
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
|
||||
"cache_settings_duplicated_assets_clear_button": "CLEAR",
|
||||
"cache_settings_duplicated_assets_subtitle": "Photos and videos that are black listed by the app",
|
||||
"cache_settings_duplicated_assets_title": "Duplicated Assets ({count})",
|
||||
"cache_settings_image_cache_size": "Image cache size ({count} assets)",
|
||||
"cache_settings_statistics_album": "Library thumbnails",
|
||||
"cache_settings_statistics_assets": "{count} assets ({size})",
|
||||
"cache_settings_statistics_full": "Full images",
|
||||
"cache_settings_statistics_shared": "Shared album thumbnails",
|
||||
"cache_settings_statistics_thumbnail": "Thumbnails",
|
||||
"cache_settings_statistics_title": "Cache usage",
|
||||
"cache_settings_subtitle": "Control the caching behaviour of the Immich mobile application",
|
||||
"cache_settings_thumbnail_size": "Thumbnail cache size ({count} assets)",
|
||||
"cache_settings_tile_subtitle": "Control the local storage behaviour",
|
||||
"cache_settings_tile_title": "Local Storage",
|
||||
"cache_settings_title": "Caching Settings",
|
||||
@@ -590,15 +612,12 @@
|
||||
"cannot_merge_people": "Cannot merge people",
|
||||
"cannot_undo_this_action": "You cannot undo this action!",
|
||||
"cannot_update_the_description": "Cannot update the description",
|
||||
"cast": "Cast",
|
||||
"cast_description": "Configure available cast destinations",
|
||||
"change_date": "Change date",
|
||||
"change_description": "Change description",
|
||||
"change_display_order": "Change display order",
|
||||
"change_expiration_time": "Change expiration time",
|
||||
"change_location": "Change location",
|
||||
"change_name": "Change name",
|
||||
"change_name_successfully": "Changed name successfully",
|
||||
"change_name_successfully": "Change name successfully",
|
||||
"change_password": "Change Password",
|
||||
"change_password_description": "This is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.",
|
||||
"change_password_form_confirm_password": "Confirm Password",
|
||||
@@ -606,9 +625,9 @@
|
||||
"change_password_form_new_password": "New Password",
|
||||
"change_password_form_password_mismatch": "Passwords do not match",
|
||||
"change_password_form_reenter_new_password": "Re-enter New Password",
|
||||
"change_pin_code": "Change PIN code",
|
||||
"change_your_password": "Change your password",
|
||||
"changed_visibility_successfully": "Changed visibility successfully",
|
||||
"check_all": "Check All",
|
||||
"check_corrupt_asset_backup": "Check for corrupt asset backups",
|
||||
"check_corrupt_asset_backup_button": "Perform check",
|
||||
"check_corrupt_asset_backup_description": "Run this check only over Wi-Fi and once all assets have been backed-up. The procedure might take a few minutes.",
|
||||
@@ -646,15 +665,11 @@
|
||||
"confirm_delete_face": "Are you sure you want to delete {name} face from the asset?",
|
||||
"confirm_delete_shared_link": "Are you sure you want to delete this shared link?",
|
||||
"confirm_keep_this_delete_others": "All other assets in the stack will be deleted except for this asset. Are you sure you want to continue?",
|
||||
"confirm_new_pin_code": "Confirm new PIN code",
|
||||
"confirm_password": "Confirm password",
|
||||
"confirm_tag_face": "Do you want to tag this face as {name}?",
|
||||
"confirm_tag_face_unnamed": "Do you want to tag this face?",
|
||||
"connected_device": "Connected device",
|
||||
"connected_to": "Connected to",
|
||||
"contain": "Contain",
|
||||
"context": "Context",
|
||||
"continue": "Continue",
|
||||
"control_bottom_app_bar_album_info_shared": "{count} items · Shared",
|
||||
"control_bottom_app_bar_create_new_album": "Create new album",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
@@ -692,18 +707,15 @@
|
||||
"create_tag_description": "Create a new tag. For nested tags, please enter the full path of the tag including forward slashes.",
|
||||
"create_user": "Create user",
|
||||
"created": "Created",
|
||||
"created_at": "Created",
|
||||
"crop": "Crop",
|
||||
"curated_object_page_title": "Things",
|
||||
"current_device": "Current device",
|
||||
"current_pin_code": "Current PIN code",
|
||||
"current_server_address": "Current server address",
|
||||
"custom_locale": "Custom Locale",
|
||||
"custom_locale_description": "Format dates and numbers based on the language and the region",
|
||||
"daily_title_text_date": "E, MMM dd",
|
||||
"daily_title_text_date_year": "E, MMM dd, yyyy",
|
||||
"dark": "Dark",
|
||||
"darkTheme": "Toggle dark theme",
|
||||
"date_after": "Date after",
|
||||
"date_and_time": "Date and Time",
|
||||
"date_before": "Date before",
|
||||
@@ -751,7 +763,6 @@
|
||||
"disallow_edits": "Disallow edits",
|
||||
"discord": "Discord",
|
||||
"discover": "Discover",
|
||||
"discovered_devices": "Discovered devices",
|
||||
"dismiss_all_errors": "Dismiss all errors",
|
||||
"dismiss_error": "Dismiss error",
|
||||
"display_options": "Display options",
|
||||
@@ -767,6 +778,7 @@
|
||||
"download_enqueue": "Download enqueued",
|
||||
"download_error": "Download Error",
|
||||
"download_failed": "Download failed",
|
||||
"download_filename": "file: {filename}",
|
||||
"download_finished": "Download finished",
|
||||
"download_include_embedded_motion_videos": "Embedded videos",
|
||||
"download_include_embedded_motion_videos_description": "Include videos embedded in motion photos as a separate file",
|
||||
@@ -790,8 +802,6 @@
|
||||
"edit_avatar": "Edit avatar",
|
||||
"edit_date": "Edit date",
|
||||
"edit_date_and_time": "Edit date and time",
|
||||
"edit_description": "Edit description",
|
||||
"edit_description_prompt": "Please select a new description:",
|
||||
"edit_exclusion_pattern": "Edit exclusion pattern",
|
||||
"edit_faces": "Edit faces",
|
||||
"edit_import_path": "Edit import path",
|
||||
@@ -812,24 +822,19 @@
|
||||
"editor_crop_tool_h2_aspect_ratios": "Aspect ratios",
|
||||
"editor_crop_tool_h2_rotation": "Rotation",
|
||||
"email": "Email",
|
||||
"email_notifications": "Email notifications",
|
||||
"empty_folder": "This folder is empty",
|
||||
"empty_trash": "Empty trash",
|
||||
"empty_trash_confirmation": "Are you sure you want to empty the trash? This will remove all the assets in trash permanently from Immich.\nYou cannot undo this action!",
|
||||
"enable": "Enable",
|
||||
"enable_biometric_auth_description": "Enter your PIN code to enable biometric authentication",
|
||||
"enabled": "Enabled",
|
||||
"end_date": "End date",
|
||||
"enqueued": "Enqueued",
|
||||
"enter_wifi_name": "Enter Wi-Fi name",
|
||||
"enter_your_pin_code": "Enter your PIN code",
|
||||
"enter_your_pin_code_subtitle": "Enter your PIN code to access the locked folder",
|
||||
"error": "Error",
|
||||
"error_change_sort_album": "Failed to change album sort order",
|
||||
"error_delete_face": "Error deleting face from asset",
|
||||
"error_loading_image": "Error loading image",
|
||||
"error_saving_image": "Error: {error}",
|
||||
"error_tag_face_bounding_box": "Error tagging face - cannot get bounding box coordinates",
|
||||
"error_title": "Error - Something went wrong",
|
||||
"errors": {
|
||||
"cannot_navigate_next_asset": "Cannot navigate to the next asset",
|
||||
@@ -842,6 +847,7 @@
|
||||
"cant_get_number_of_comments": "Can't get number of comments",
|
||||
"cant_search_people": "Can't search people",
|
||||
"cant_search_places": "Can't search places",
|
||||
"cleared_jobs": "Cleared jobs for: {job}",
|
||||
"error_adding_assets_to_album": "Error adding assets to album",
|
||||
"error_adding_users_to_album": "Error adding users to album",
|
||||
"error_deleting_shared_user": "Error deleting shared user",
|
||||
@@ -850,6 +856,7 @@
|
||||
"error_removing_assets_from_album": "Error removing assets from album, check console for more details",
|
||||
"error_selecting_all_assets": "Error selecting all assets",
|
||||
"exclusion_pattern_already_exists": "This exclusion pattern already exists.",
|
||||
"failed_job_command": "Command {command} failed for job: {job}",
|
||||
"failed_to_create_album": "Failed to create album",
|
||||
"failed_to_create_shared_link": "Failed to create shared link",
|
||||
"failed_to_edit_shared_link": "Failed to edit shared link",
|
||||
@@ -868,6 +875,7 @@
|
||||
"paths_validation_failed": "{paths, plural, one {# path} other {# paths}} failed validation",
|
||||
"profile_picture_transparent_pixels": "Profile pictures cannot have transparent pixels. Please zoom in and/or move the image.",
|
||||
"quota_higher_than_disk_size": "You set a quota higher than the disk size",
|
||||
"repair_unable_to_check_items": "Unable to check {count, select, one {item} other {items}}",
|
||||
"unable_to_add_album_users": "Unable to add users to album",
|
||||
"unable_to_add_assets_to_shared_link": "Unable to add assets to shared link",
|
||||
"unable_to_add_comment": "Unable to add comment",
|
||||
@@ -879,13 +887,13 @@
|
||||
"unable_to_archive_unarchive": "Unable to {archived, select, true {archive} other {unarchive}}",
|
||||
"unable_to_change_album_user_role": "Unable to change the album user's role",
|
||||
"unable_to_change_date": "Unable to change date",
|
||||
"unable_to_change_description": "Unable to change description",
|
||||
"unable_to_change_favorite": "Unable to change favorite for asset",
|
||||
"unable_to_change_location": "Unable to change location",
|
||||
"unable_to_change_password": "Unable to change password",
|
||||
"unable_to_change_visibility": "Unable to change the visibility for {count, plural, one {# person} other {# people}}",
|
||||
"unable_to_complete_oauth_login": "Unable to complete OAuth login",
|
||||
"unable_to_connect": "Unable to connect",
|
||||
"unable_to_connect_to_server": "Unable to connect to server",
|
||||
"unable_to_copy_to_clipboard": "Cannot copy to clipboard, make sure you are accessing the page through https",
|
||||
"unable_to_create_admin_account": "Unable to create admin account",
|
||||
"unable_to_create_api_key": "Unable to create a new API Key",
|
||||
@@ -909,6 +917,10 @@
|
||||
"unable_to_hide_person": "Unable to hide person",
|
||||
"unable_to_link_motion_video": "Unable to link motion video",
|
||||
"unable_to_link_oauth_account": "Unable to link OAuth account",
|
||||
"unable_to_load_album": "Unable to load album",
|
||||
"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": "Unable to log out all devices",
|
||||
"unable_to_log_out_device": "Unable to log out device",
|
||||
"unable_to_login_with_oauth": "Unable to login with OAuth",
|
||||
@@ -919,9 +931,11 @@
|
||||
"unable_to_remove_album_users": "Unable to remove users from album",
|
||||
"unable_to_remove_api_key": "Unable to remove API Key",
|
||||
"unable_to_remove_assets_from_shared_link": "Unable to remove assets from shared link",
|
||||
"unable_to_remove_deleted_assets": "Unable to remove offline files",
|
||||
"unable_to_remove_library": "Unable to remove library",
|
||||
"unable_to_remove_partner": "Unable to remove partner",
|
||||
"unable_to_remove_reaction": "Unable to remove reaction",
|
||||
"unable_to_repair_items": "Unable to repair items",
|
||||
"unable_to_reset_password": "Unable to reset password",
|
||||
"unable_to_reset_pin_code": "Unable to reset PIN code",
|
||||
"unable_to_resolve_duplicate": "Unable to resolve duplicate",
|
||||
@@ -957,6 +971,7 @@
|
||||
"exif_bottom_sheet_location": "LOCATION",
|
||||
"exif_bottom_sheet_people": "PEOPLE",
|
||||
"exif_bottom_sheet_person_add_person": "Add name",
|
||||
"exif_bottom_sheet_person_age": "Age {age}",
|
||||
"exif_bottom_sheet_person_age_months": "Age {months} months",
|
||||
"exif_bottom_sheet_person_age_year_months": "Age 1 year, {months} months",
|
||||
"exif_bottom_sheet_person_age_years": "Age {years}",
|
||||
@@ -980,7 +995,6 @@
|
||||
"external_network_sheet_info": "When not on the preferred Wi-Fi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
|
||||
"face_unassigned": "Unassigned",
|
||||
"failed": "Failed",
|
||||
"failed_to_authenticate": "Failed to authenticate",
|
||||
"failed_to_load_assets": "Failed to load assets",
|
||||
"failed_to_load_folder": "Failed to load folder",
|
||||
"favorite": "Favorite",
|
||||
@@ -1004,8 +1018,6 @@
|
||||
"folders": "Folders",
|
||||
"folders_feature_description": "Browsing the folder view for the photos and videos on the file system",
|
||||
"forward": "Forward",
|
||||
"gcast_enabled": "Google Cast",
|
||||
"gcast_enabled_description": "This feature loads external resources from Google in order to work.",
|
||||
"general": "General",
|
||||
"get_help": "Get Help",
|
||||
"get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network",
|
||||
@@ -1048,13 +1060,10 @@
|
||||
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
|
||||
"home_page_favorite_err_partner": "Can not favorite partner assets yet, skipping",
|
||||
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album so that the timeline can populate photos and videos in it",
|
||||
"home_page_locked_error_local": "Can not move local assets to locked folder, skipping",
|
||||
"home_page_locked_error_partner": "Can not move partner assets to locked folder, skipping",
|
||||
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
||||
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
||||
"host": "Host",
|
||||
"hour": "Hour",
|
||||
"id": "ID",
|
||||
"ignore_icloud_photos": "Ignore iCloud photos",
|
||||
"ignore_icloud_photos_description": "Photos that are stored on iCloud will not be uploaded to the Immich server",
|
||||
"image": "Image",
|
||||
@@ -1094,12 +1103,6 @@
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"invite_people": "Invite People",
|
||||
"invite_to_album": "Invite to album",
|
||||
"ios_debug_info_fetch_ran_at": "Fetch ran {dateTime}",
|
||||
"ios_debug_info_last_sync_at": "Last sync {dateTime}",
|
||||
"ios_debug_info_no_processes_queued": "No background processes queued",
|
||||
"ios_debug_info_no_sync_yet": "No background sync job has run yet",
|
||||
"ios_debug_info_processes_queued": "{count, plural, one {{count} background process queued} other {{count} background processes queued}}",
|
||||
"ios_debug_info_processing_ran_at": "Processing ran {dateTime}",
|
||||
"items_count": "{count, plural, one {# item} other {# items}}",
|
||||
"jobs": "Jobs",
|
||||
"keep": "Keep",
|
||||
@@ -1108,9 +1111,6 @@
|
||||
"kept_this_deleted_others": "Kept this asset and deleted {count, plural, one {# asset} other {# assets}}",
|
||||
"keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"language": "Language",
|
||||
"language_no_results_subtitle": "Try adjusting your search term",
|
||||
"language_no_results_title": "No languages found",
|
||||
"language_search_hint": "Search languages...",
|
||||
"language_setting_description": "Select your preferred language",
|
||||
"last_seen": "Last seen",
|
||||
"latest_version": "Latest Version",
|
||||
@@ -1136,7 +1136,6 @@
|
||||
"list": "List",
|
||||
"loading": "Loading",
|
||||
"loading_search_results_failed": "Loading search results failed",
|
||||
"local_asset_cast_failed": "Unable to cast an asset that is not uploaded to the server",
|
||||
"local_network": "Local network",
|
||||
"local_network_sheet_info": "The app will connect to the server through this URL when using the specified Wi-Fi network",
|
||||
"location_permission": "Location permission",
|
||||
@@ -1146,11 +1145,8 @@
|
||||
"location_picker_latitude_hint": "Enter your latitude here",
|
||||
"location_picker_longitude_error": "Enter a valid longitude",
|
||||
"location_picker_longitude_hint": "Enter your longitude here",
|
||||
"lock": "Lock",
|
||||
"locked_folder": "Locked Folder",
|
||||
"log_out": "Log out",
|
||||
"log_out_all_devices": "Log Out All Devices",
|
||||
"logged_in_as": "Logged in as {user}",
|
||||
"logged_out_all_devices": "Logged out all devices",
|
||||
"logged_out_device": "Logged out device",
|
||||
"login": "Login",
|
||||
@@ -1182,7 +1178,7 @@
|
||||
"look": "Look",
|
||||
"loop_videos": "Loop videos",
|
||||
"loop_videos_description": "Enable to automatically loop a video in the detail viewer.",
|
||||
"main_branch_warning": "You're using a development version; we strongly recommend using a release version!",
|
||||
"main_branch_warning": "You’re using a development version; we strongly recommend using a release version!",
|
||||
"main_menu": "Main menu",
|
||||
"make": "Make",
|
||||
"manage_shared_links": "Manage shared links",
|
||||
@@ -1217,8 +1213,8 @@
|
||||
"map_settings_only_show_favorites": "Show Favorite Only",
|
||||
"map_settings_theme_settings": "Map Theme",
|
||||
"map_zoom_to_see_photos": "Zoom out to see photos",
|
||||
"mark_all_as_read": "Mark all as read",
|
||||
"mark_as_read": "Mark as read",
|
||||
"mark_all_as_read": "Mark all as read",
|
||||
"marked_all_as_read": "Marked all as read",
|
||||
"matches": "Matches",
|
||||
"media_type": "Media type",
|
||||
@@ -1228,6 +1224,8 @@
|
||||
"memories_setting_description": "Manage what you see in your memories",
|
||||
"memories_start_over": "Start Over",
|
||||
"memories_swipe_to_close": "Swipe up to close",
|
||||
"memories_year_ago": "A year ago",
|
||||
"memories_years_ago": "{years} years ago",
|
||||
"memory": "Memory",
|
||||
"memory_lane_title": "Memory Lane {title}",
|
||||
"menu": "Menu",
|
||||
@@ -1244,10 +1242,6 @@
|
||||
"month": "Month",
|
||||
"monthly_title_text_date_format": "MMMM y",
|
||||
"more": "More",
|
||||
"move": "Move",
|
||||
"move_off_locked_folder": "Move out of locked folder",
|
||||
"move_to_locked_folder": "Move to locked folder",
|
||||
"move_to_locked_folder_confirmation": "These photos and video will be removed from all albums, and only viewable from the locked folder",
|
||||
"moved_to_archive": "Moved {count, plural, one {# asset} other {# assets}} to archive",
|
||||
"moved_to_library": "Moved {count, plural, one {# asset} other {# assets}} to library",
|
||||
"moved_to_trash": "Moved to trash",
|
||||
@@ -1264,8 +1258,6 @@
|
||||
"new_api_key": "New API Key",
|
||||
"new_password": "New password",
|
||||
"new_person": "New person",
|
||||
"new_pin_code": "New PIN code",
|
||||
"new_pin_code_subtitle": "This is your first time accessing the locked folder. Create a PIN code to securely access this page",
|
||||
"new_user_created": "New user created",
|
||||
"new_version_available": "NEW VERSION AVAILABLE",
|
||||
"newest_first": "Newest first",
|
||||
@@ -1278,44 +1270,42 @@
|
||||
"no_archived_assets_message": "Archive photos and videos to hide them from your Photos view",
|
||||
"no_assets_message": "CLICK TO UPLOAD YOUR FIRST PHOTO",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_cast_devices_found": "No cast devices found",
|
||||
"no_duplicates_found": "No duplicates were found.",
|
||||
"no_exif_info_available": "No exif info available",
|
||||
"no_explore_results_message": "Upload more photos to explore your collection.",
|
||||
"no_favorites_message": "Add favorites to quickly find your best pictures and videos",
|
||||
"no_libraries_message": "Create an external library to view your photos and videos",
|
||||
"no_locked_photos_message": "Photos and videos in the locked folder are hidden and won't show up as you browse or search your library.",
|
||||
"no_name": "No Name",
|
||||
"no_notifications": "No notifications",
|
||||
"no_people_found": "No matching people found",
|
||||
"no_places": "No places",
|
||||
"no_results": "No results",
|
||||
"no_results_description": "Try a synonym or more general keyword",
|
||||
"no_notifications": "No notifications",
|
||||
"no_shared_albums_message": "Create an album to share photos and videos with people in your network",
|
||||
"not_in_any_album": "Not in any album",
|
||||
"not_selected": "Not selected",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Note: To apply the Storage Label to previously uploaded assets, run the",
|
||||
"notes": "Notes",
|
||||
"nothing_here_yet": "Nothing here yet",
|
||||
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
||||
"notification_permission_list_tile_content": "Grant permission to enable notifications.",
|
||||
"notification_permission_list_tile_enable_button": "Enable Notifications",
|
||||
"notification_permission_list_tile_title": "Notification Permission",
|
||||
"notification_toggle_setting_description": "Enable email notifications",
|
||||
"email_notifications": "Email notifications",
|
||||
"notifications": "Notifications",
|
||||
"notifications_setting_description": "Manage notifications",
|
||||
"oauth": "OAuth",
|
||||
"official_immich_resources": "Official Immich Resources",
|
||||
"offline": "Offline",
|
||||
"offline_paths": "Offline paths",
|
||||
"offline_paths_description": "These results may be due to manual deletion of files that are not part of an external library.",
|
||||
"ok": "Ok",
|
||||
"oldest_first": "Oldest first",
|
||||
"on_this_device": "On this device",
|
||||
"onboarding": "Onboarding",
|
||||
"onboarding_locale_description": "Select your preferred language. You can change this later in your settings.",
|
||||
"onboarding_privacy_description": "The following (optional) features rely on external services, and can be disabled at any time in settings.",
|
||||
"onboarding_server_welcome_description": "Let's get your instance set up with some common settings.",
|
||||
"onboarding_privacy_description": "The following (optional) features rely on external services, and can be disabled at any time in the administration settings.",
|
||||
"onboarding_theme_description": "Choose a color theme for your instance. You can change this later in your settings.",
|
||||
"onboarding_user_welcome_description": "Let's get you started!",
|
||||
"onboarding_welcome_description": "Let's get your instance set up with some common settings.",
|
||||
"onboarding_welcome_user": "Welcome, {user}",
|
||||
"online": "Online",
|
||||
"only_favorites": "Only favorites",
|
||||
@@ -1372,8 +1362,6 @@
|
||||
"permanently_delete_assets_prompt": "Are you sure you want to permanently delete {count, plural, one {this asset?} other {these <b>#</b> assets?}} This will also remove {count, plural, one {it from its} other {them from their}} album(s).",
|
||||
"permanently_deleted_asset": "Permanently deleted asset",
|
||||
"permanently_deleted_assets_count": "Permanently deleted {count, plural, one {# asset} other {# assets}}",
|
||||
"permission": "Permission",
|
||||
"permission_empty": "Your permission shouldn't be empty",
|
||||
"permission_onboarding_back": "Back",
|
||||
"permission_onboarding_continue_anyway": "Continue anyway",
|
||||
"permission_onboarding_get_started": "Get started",
|
||||
@@ -1391,10 +1379,6 @@
|
||||
"photos_count": "{count, plural, one {{count, number} Photo} other {{count, number} Photos}}",
|
||||
"photos_from_previous_years": "Photos from previous years",
|
||||
"pick_a_location": "Pick a location",
|
||||
"pin_code_changed_successfully": "Successfully changed PIN code",
|
||||
"pin_code_reset_successfully": "Successfully reset PIN code",
|
||||
"pin_code_setup_successfully": "Successfully setup a PIN code",
|
||||
"pin_verification": "PIN code verification",
|
||||
"place": "Place",
|
||||
"places": "Places",
|
||||
"places_count": "{count, plural, one {{count, number} Place} other {{count, number} Places}}",
|
||||
@@ -1402,7 +1386,6 @@
|
||||
"play_memories": "Play memories",
|
||||
"play_motion_photo": "Play Motion Photo",
|
||||
"play_or_pause_video": "Play or pause video",
|
||||
"please_auth_to_access": "Please authenticate to access",
|
||||
"port": "Port",
|
||||
"preferences_settings_subtitle": "Manage the app's preferences",
|
||||
"preferences_settings_title": "Preferences",
|
||||
@@ -1410,10 +1393,7 @@
|
||||
"preview": "Preview",
|
||||
"previous": "Previous",
|
||||
"previous_memory": "Previous memory",
|
||||
"previous_or_next_day": "Day forward/back",
|
||||
"previous_or_next_month": "Month forward/back",
|
||||
"previous_or_next_photo": "Photo forward/back",
|
||||
"previous_or_next_year": "Year forward/back",
|
||||
"previous_or_next_photo": "Previous or next photo",
|
||||
"primary": "Primary",
|
||||
"privacy": "Privacy",
|
||||
"profile": "Profile",
|
||||
@@ -1430,7 +1410,7 @@
|
||||
"public_share": "Public Share",
|
||||
"purchase_account_info": "Supporter",
|
||||
"purchase_activated_subtitle": "Thank you for supporting Immich and open-source software",
|
||||
"purchase_activated_time": "Activated on {date}",
|
||||
"purchase_activated_time": "Activated on {date, date}",
|
||||
"purchase_activated_title": "Your key has been successfully activated",
|
||||
"purchase_button_activate": "Activate",
|
||||
"purchase_button_buy": "Buy",
|
||||
@@ -1448,7 +1428,7 @@
|
||||
"purchase_lifetime_description": "Lifetime purchase",
|
||||
"purchase_option_title": "PURCHASE OPTIONS",
|
||||
"purchase_panel_info_1": "Building Immich takes a lot of time and effort, and we have full-time engineers working on it to make it as good as we possibly can. Our mission is for open-source software and ethical business practices to become a sustainable income source for developers and to create a privacy-respecting ecosystem with real alternatives to exploitative cloud services.",
|
||||
"purchase_panel_info_2": "As we're committed not to add paywalls, this purchase will not grant you any additional features in Immich. We rely on users like you to support Immich's ongoing development.",
|
||||
"purchase_panel_info_2": "As we’re committed not to add paywalls, this purchase will not grant you any additional features in Immich. We rely on users like you to support Immich’s ongoing development.",
|
||||
"purchase_panel_title": "Support the project",
|
||||
"purchase_per_server": "Per server",
|
||||
"purchase_per_user": "Per user",
|
||||
@@ -1496,12 +1476,9 @@
|
||||
"remove_deleted_assets": "Remove Deleted Assets",
|
||||
"remove_from_album": "Remove from album",
|
||||
"remove_from_favorites": "Remove from favorites",
|
||||
"remove_from_locked_folder": "Remove from locked folder",
|
||||
"remove_from_locked_folder_confirmation": "Are you sure you want to move these photos and videos out of the locked folder? They will be visible in your library.",
|
||||
"remove_from_shared_link": "Remove from shared link",
|
||||
"remove_memory": "Remove memory",
|
||||
"remove_photo_from_memory": "Remove photo from this memory",
|
||||
"remove_tag": "Remove tag",
|
||||
"remove_url": "Remove URL",
|
||||
"remove_user": "Remove user",
|
||||
"removed_api_key": "Removed API Key: {name}",
|
||||
@@ -1522,7 +1499,6 @@
|
||||
"reset": "Reset",
|
||||
"reset_password": "Reset password",
|
||||
"reset_people_visibility": "Reset people visibility",
|
||||
"reset_pin_code": "Reset PIN code",
|
||||
"reset_to_default": "Reset to default",
|
||||
"resolve_duplicates": "Resolve duplicates",
|
||||
"resolved_all_duplicates": "Resolved all duplicates",
|
||||
@@ -1608,7 +1584,6 @@
|
||||
"select_album_cover": "Select album cover",
|
||||
"select_all": "Select all",
|
||||
"select_all_duplicates": "Select all duplicates",
|
||||
"select_all_in": "Select all in {group}",
|
||||
"select_avatar_color": "Select avatar color",
|
||||
"select_face": "Select face",
|
||||
"select_featured_photo": "Select featured photo",
|
||||
@@ -1629,7 +1604,6 @@
|
||||
"server_info_box_server_url": "Server URL",
|
||||
"server_offline": "Server Offline",
|
||||
"server_online": "Server Online",
|
||||
"server_privacy": "Server Privacy",
|
||||
"server_stats": "Server Stats",
|
||||
"server_version": "Server Version",
|
||||
"set": "Set",
|
||||
@@ -1639,7 +1613,6 @@
|
||||
"set_date_of_birth": "Set date of birth",
|
||||
"set_profile_picture": "Set profile picture",
|
||||
"set_slideshow_to_fullscreen": "Set Slideshow to fullscreen",
|
||||
"set_stack_primary_asset": "Set as primary asset",
|
||||
"setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).",
|
||||
"setting_image_viewer_original_subtitle": "Enable to load the original full-resolution image (large!). Disable to reduce data usage (both network and on device cache).",
|
||||
"setting_image_viewer_original_title": "Load original image",
|
||||
@@ -1648,6 +1621,7 @@
|
||||
"setting_image_viewer_title": "Images",
|
||||
"setting_languages_apply": "Apply",
|
||||
"setting_languages_subtitle": "Change the app's language",
|
||||
"setting_languages_title": "Languages",
|
||||
"setting_notifications_notify_failures_grace_period": "Notify background backup failures: {duration}",
|
||||
"setting_notifications_notify_hours": "{count} hours",
|
||||
"setting_notifications_notify_immediately": "immediately",
|
||||
@@ -1665,12 +1639,10 @@
|
||||
"settings": "Settings",
|
||||
"settings_require_restart": "Please restart Immich to apply this setting",
|
||||
"settings_saved": "Settings saved",
|
||||
"setup_pin_code": "Setup a PIN code",
|
||||
"share": "Share",
|
||||
"share_add_photos": "Add photos",
|
||||
"share_assets_selected": "{count} selected",
|
||||
"share_dialog_preparing": "Preparing...",
|
||||
"share_link": "Share Link",
|
||||
"shared": "Shared",
|
||||
"shared_album_activities_input_disable": "Comment is disabled",
|
||||
"shared_album_activity_remove_content": "Do you want to delete this activity?",
|
||||
@@ -1777,15 +1749,14 @@
|
||||
"start_date": "Start date",
|
||||
"state": "State",
|
||||
"status": "Status",
|
||||
"stop_casting": "Stop casting",
|
||||
"stop_motion_photo": "Stop Motion Photo",
|
||||
"stop_photo_sharing": "Stop sharing your photos?",
|
||||
"stop_photo_sharing_description": "{partner} will no longer be able to access your photos.",
|
||||
"stop_sharing_photos_with_user": "Stop sharing your photos with this user",
|
||||
"storage": "Storage space",
|
||||
"storage_label": "Storage label",
|
||||
"storage_quota": "Storage Quota",
|
||||
"storage_usage": "{used} of {available} used",
|
||||
"storage_quota": "Storage Quota",
|
||||
"submit": "Submit",
|
||||
"suggestions": "Suggestions",
|
||||
"sunrise_on_the_beach": "Sunrise on the beach",
|
||||
@@ -1835,6 +1806,7 @@
|
||||
"to_parent": "Go to parent",
|
||||
"to_trash": "Trash",
|
||||
"toggle_settings": "Toggle settings",
|
||||
"toggle_theme": "Toggle dark theme",
|
||||
"total": "Total",
|
||||
"total_usage": "Total usage",
|
||||
"trash": "Trash",
|
||||
@@ -1852,11 +1824,8 @@
|
||||
"trash_page_title": "Trash ({count})",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Trashed items will be permanently deleted after {days, plural, one {# day} other {# days}}.",
|
||||
"type": "Type",
|
||||
"unable_to_change_pin_code": "Unable to change PIN code",
|
||||
"unable_to_setup_pin_code": "Unable to setup PIN code",
|
||||
"unarchive": "Unarchive",
|
||||
"unarchived_count": "{count, plural, other {Unarchived #}}",
|
||||
"undo": "Undo",
|
||||
"unfavorite": "Unfavorite",
|
||||
"unhide_person": "Unhide person",
|
||||
"unknown": "Unknown",
|
||||
@@ -1873,11 +1842,11 @@
|
||||
"unsaved_change": "Unsaved change",
|
||||
"unselect_all": "Unselect all",
|
||||
"unselect_all_duplicates": "Unselect all duplicates",
|
||||
"unselect_all_in": "Unselect all in {group}",
|
||||
"unstack": "Un-stack",
|
||||
"unstacked_assets_count": "Un-stacked {count, plural, one {# asset} other {# assets}}",
|
||||
"untracked_files": "Untracked files",
|
||||
"untracked_files_decription": "These files are not tracked by the application. They can be the results of failed moves, interrupted uploads, or left behind due to a bug",
|
||||
"up_next": "Up next",
|
||||
"updated_at": "Updated",
|
||||
"updated_password": "Updated password",
|
||||
"upload": "Upload",
|
||||
"upload_concurrency": "Upload concurrency",
|
||||
@@ -1892,18 +1861,16 @@
|
||||
"upload_success": "Upload success, refresh the page to see new upload assets.",
|
||||
"upload_to_immich": "Upload to Immich ({count})",
|
||||
"uploading": "Uploading",
|
||||
"id": "ID",
|
||||
"url": "URL",
|
||||
"usage": "Usage",
|
||||
"use_biometric": "Use biometric",
|
||||
"use_current_connection": "use current connection",
|
||||
"use_custom_date_range": "Use custom date range instead",
|
||||
"user": "User",
|
||||
"user_has_been_deleted": "This user has been deleted.",
|
||||
"user_id": "User ID",
|
||||
"user_liked": "{user} liked {type, select, photo {this photo} video {this video} asset {this asset} other {it}}",
|
||||
"user_pin_code_settings": "PIN Code",
|
||||
"user_pin_code_settings_description": "Manage your PIN code",
|
||||
"user_privacy": "User Privacy",
|
||||
"created_at": "Created",
|
||||
"updated_at": "Updated",
|
||||
"user_purchase_settings": "Purchase",
|
||||
"user_purchase_settings_description": "Manage your purchase",
|
||||
"user_role_set": "Set {user} as {role}",
|
||||
@@ -1919,6 +1886,11 @@
|
||||
"version": "Version",
|
||||
"version_announcement_closing": "Your friend, Alex",
|
||||
"version_announcement_message": "Hi there! A new version of Immich is available. Please take some time to read the <link>release notes</link> to ensure your setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your Immich instance automatically.",
|
||||
"version_announcement_overlay_release_notes": "release notes",
|
||||
"version_announcement_overlay_text_1": "Hi friend, there is a new release of",
|
||||
"version_announcement_overlay_text_2": "please take your time to visit the ",
|
||||
"version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
|
||||
"version_announcement_overlay_title": "New Server Version Available 🎉",
|
||||
"version_history": "Version History",
|
||||
"version_history_item": "Installed {version} on {date}",
|
||||
"video": "Video",
|
||||
@@ -1938,7 +1910,6 @@
|
||||
"view_previous_asset": "View previous asset",
|
||||
"view_qr_code": "View QR code",
|
||||
"view_stack": "View Stack",
|
||||
"view_user": "View User",
|
||||
"viewer_remove_from_stack": "Remove from Stack",
|
||||
"viewer_stack_use_as_main_asset": "Use as Main Asset",
|
||||
"viewer_unstack": "Un-Stack",
|
||||
@@ -1949,7 +1920,6 @@
|
||||
"welcome": "Welcome",
|
||||
"welcome_to_immich": "Welcome to Immich",
|
||||
"wifi_name": "Wi-Fi Name",
|
||||
"wrong_pin_code": "Wrong PIN code",
|
||||
"year": "Year",
|
||||
"years_ago": "{years, plural, one {# year} other {# years}} ago",
|
||||
"yes": "Yes",
|
||||
|
||||
284
i18n/es.json
284
i18n/es.json
@@ -22,7 +22,6 @@
|
||||
"add_partner": "Agregar compañero",
|
||||
"add_path": "Agregar carpeta",
|
||||
"add_photos": "Agregar fotos",
|
||||
"add_tag": "Agregar etiqueta",
|
||||
"add_to": "Agregar a…",
|
||||
"add_to_album": "Incluir en álbum",
|
||||
"add_to_album_bottom_sheet_added": "Agregado a {album}",
|
||||
@@ -44,7 +43,9 @@
|
||||
"backup_database_enable_description": "Activar volcado de base de datos",
|
||||
"backup_keep_last_amount": "Cantidad de volcados previos a mantener",
|
||||
"backup_settings": "Ajustes de volcado de base de datos",
|
||||
"backup_settings_description": "Administrar configuración de volcado de base de datos.",
|
||||
"backup_settings_description": "Administrar configuración de volcado de base de datos. Nota: estas tareas no están monitorizadas y no se notificarán los fallos.",
|
||||
"check_all": "Verificar todo",
|
||||
"cleanup": "Limpieza",
|
||||
"cleared_jobs": "Trabajos borrados para: {job}",
|
||||
"config_set_by_file": "La configuración está definida por un archivo de configuración",
|
||||
"confirm_delete_library": "¿Estás seguro de que quieres eliminar la biblioteca {library}?",
|
||||
@@ -52,7 +53,6 @@
|
||||
"confirm_email_below": "Para confirmar, escribe \"{email}\" a continuación",
|
||||
"confirm_reprocess_all_faces": "¿Estás seguro de que deseas reprocesar todas las caras? Esto borrará a todas las personas que nombraste.",
|
||||
"confirm_user_password_reset": "¿Estás seguro de que quieres restablecer la contraseña de {user}?",
|
||||
"confirm_user_pin_code_reset": "Está seguro de que quiere restablecer el PIN de {user}?",
|
||||
"create_job": "Crear trabajo",
|
||||
"cron_expression": "Expresión CRON",
|
||||
"cron_expression_description": "Establece el intervalo de escaneo utilizando el formato CRON. Para más información puedes consultar, por ejemplo, <link> Crontab Guru</link>",
|
||||
@@ -60,12 +60,14 @@
|
||||
"disable_login": "Deshabilitar inicio de sesión",
|
||||
"duplicate_detection_job_description": "Lanza el aprendizaje automático para detectar imágenes similares. Necesita tener activado \"Búsqueda Inteligente\"",
|
||||
"exclusion_pattern_description": "Los patrones de exclusión te permiten ignorar archivos y carpetas al escanear tu biblioteca. Es útil si tienes carpetas que contienen archivos que no deseas importar, por ejemplo archivos RAW.",
|
||||
"external_library_created_at": "Biblioteca externa (creada el {date})",
|
||||
"external_library_management": "Gestión de bibliotecas externas",
|
||||
"face_detection": "Detección de caras",
|
||||
"face_detection_description": "Detecta las caras en los activos mediante aprendizaje automático. En el caso de los vídeos, solo se tiene en cuenta la miniatura. \"Actualizar\" (re)procesará todos los elementos. \"Restablecer\" borra además todos los datos de caras actuales. \"Falta\" pone en cola los elementos que aún no se han procesado. Las caras detectadas se pondrán en cola para el reconocimiento facial una vez finalizada la detección, agrupándolos en personas existentes o nuevas.",
|
||||
"facial_recognition_job_description": "Agrupa las caras detectadas en personas. Este paso se ejecuta una vez finalizada la detección de caras. \"Restablecer\" (re)agrupa todas las caras. \"Falta\" pone en cola las caras que no tienen asignada una persona.",
|
||||
"failed_job_command": "El comando {command} ha fallado para la tarea: {job}",
|
||||
"force_delete_user_warning": "CUIDADO: Esta acción eliminará inmediatamente el usuario y todos los elementos. Esta accion no se puede deshacer y los archivos no pueden ser recuperados.",
|
||||
"forcing_refresh_library_files": "Forzando la recarga de todos los elementos en la biblioteca",
|
||||
"image_format": "Formato",
|
||||
"image_format_description": "WebP genera archivos más pequeños que JPEG, pero es más lento al codificarlos.",
|
||||
"image_fullsize_description": "Imagen de tamaño completo con metadatos removidos, usado cuando se hace zoom",
|
||||
@@ -170,7 +172,7 @@
|
||||
"note_apply_storage_label_previous_assets": "Nota: para aplicar una Etiqueta de Almacenamiento a un elemento anteriormente cargado, lanza el",
|
||||
"note_cannot_be_changed_later": "NOTA: ¡No se puede cambiar posteriormente!",
|
||||
"notification_email_from_address": "Desde",
|
||||
"notification_email_from_address_description": "Dirección de correo electrónico del remitente, por ejemplo: \"Immich Photo Server <noreply@example.com>\". Asegúrate de utilizar una dirección desde la que puedas enviar correos electrónicos.",
|
||||
"notification_email_from_address_description": "Dirección de correo electrónico del remitente, por ejemplo: \"Immich Photo Server <noreply@example.com>\"",
|
||||
"notification_email_host_description": "Host del servidor de correo electrónico (por ejemplo: smtp.immich.app)",
|
||||
"notification_email_ignore_certificate_errors": "Ignorar errores de certificado",
|
||||
"notification_email_ignore_certificate_errors_description": "Ignorar los errores de validación del certificado TLS (no recomendado)",
|
||||
@@ -190,11 +192,10 @@
|
||||
"oauth_auto_register": "Registro automático",
|
||||
"oauth_auto_register_description": "Registre automáticamente nuevos usuarios después de iniciar sesión con OAuth",
|
||||
"oauth_button_text": "Texto del botón",
|
||||
"oauth_client_secret_description": "Requerido si PKCE (Prueba de clave para el intercambio de códigos) no es compatible con el proveedor OAuth",
|
||||
"oauth_enable_description": "Iniciar sesión con OAuth",
|
||||
"oauth_mobile_redirect_uri": "URI de redireccionamiento móvil",
|
||||
"oauth_mobile_redirect_uri_override": "Sobreescribir URI de redirección móvil",
|
||||
"oauth_mobile_redirect_uri_override_description": "Habilitar cuando el proveedor de OAuth no permite una URI móvil, como ''{callback}''",
|
||||
"oauth_mobile_redirect_uri_override_description": "Habilitar cuando el proveedor de OAuth no permite una URI móvil, como '{callback}'",
|
||||
"oauth_settings": "OAuth",
|
||||
"oauth_settings_description": "Administrar la configuración de inicio de sesión de OAuth",
|
||||
"oauth_settings_more_details": "Para más detalles acerca de esta característica, consulte la <link>documentación</link>.",
|
||||
@@ -204,8 +205,8 @@
|
||||
"oauth_storage_quota_claim_description": "Establezca automáticamente la cuota de almacenamiento del usuario al valor de esta solicitud.",
|
||||
"oauth_storage_quota_default": "Cuota de almacenamiento predeterminada (GiB)",
|
||||
"oauth_storage_quota_default_description": "Cuota en GiB que se utilizará cuando no se proporcione ninguna por defecto (ingrese 0 para una cuota ilimitada).",
|
||||
"oauth_timeout": "Expiración de solicitud",
|
||||
"oauth_timeout_description": "Tiempo de espera de solicitudes en milisegundos",
|
||||
"offline_paths": "Rutas sin conexión",
|
||||
"offline_paths_description": "Estos resultados pueden deberse al eliminar manualmente archivos que no son parte de una biblioteca externa.",
|
||||
"password_enable_description": "Iniciar sesión con correo electrónico y contraseña",
|
||||
"password_settings": "Contraseña de Acceso",
|
||||
"password_settings_description": "Administrar la configuración de inicio de sesión con contraseña",
|
||||
@@ -215,6 +216,9 @@
|
||||
"refreshing_all_libraries": "Actualizar todas las bibliotecas",
|
||||
"registration": "Registrar administrador",
|
||||
"registration_description": "Dado que eres el primer usuario del sistema, se te asignará como Admin y serás responsable de las tareas administrativas, y de crear a los usuarios adicionales.",
|
||||
"repair_all": "Reparar todo",
|
||||
"repair_matched_items": "Coincidencia {count, plural, one {# elemento} other {# elementos}}",
|
||||
"repaired_items": "Reparado {count, plural, one {# elemento} other {# elementos}}",
|
||||
"require_password_change_on_login": "Requerir que el usuario cambie la contraseña en el primer inicio de sesión",
|
||||
"reset_settings_to_default": "Restablecer la configuración predeterminada",
|
||||
"reset_settings_to_recent_saved": "Restablecer la configuración a la configuración guardada recientemente",
|
||||
@@ -255,14 +259,16 @@
|
||||
"template_email_invite_album": "Plantilla de álbum de invitaciones",
|
||||
"template_email_preview": "Vista previa",
|
||||
"template_email_settings": "Modelos de correo electrónico",
|
||||
"template_email_settings_description": "Gestionar plantillas de notificación por correo electrónico personalizadas",
|
||||
"template_email_update_album": "Actualizar plantilla del álbum",
|
||||
"template_email_welcome": "Plantilla de correo electrónico de bienvenida",
|
||||
"template_settings": "Plantillas de notificación",
|
||||
"template_settings_description": "Gestione plantillas personalizadas para las notificaciones",
|
||||
"template_settings_description": "Gestione plantillas personalizadas para las notificaciones.",
|
||||
"theme_custom_css_settings": "CSS Personalizado",
|
||||
"theme_custom_css_settings_description": "Las Hojas de Estilo (CSS) permiten personalizar el diseño de Immich.",
|
||||
"theme_settings": "Ajustes Tema",
|
||||
"theme_settings_description": "Gestionar la personalización de la interfaz web de Immich",
|
||||
"these_files_matched_by_checksum": "Estos archivos coinciden con sus checksums",
|
||||
"thumbnail_generation_job": "Generar Miniaturas",
|
||||
"thumbnail_generation_job_description": "Genere miniaturas grandes, pequeñas y borrosas para cada archivo, así como miniaturas para cada persona",
|
||||
"transcoding_acceleration_api": "API Aceleración",
|
||||
@@ -290,9 +296,10 @@
|
||||
"transcoding_encoding_options": "Opciones de codificación",
|
||||
"transcoding_encoding_options_description": "Establecer códecs, resolución, calidad y otras opciones para los vídeos codificados",
|
||||
"transcoding_hardware_acceleration": "Aceleración por Hardware",
|
||||
"transcoding_hardware_acceleration_description": "Experimental: transcodificación más rápida, pero puede reducir la calidad con la misma tasa de bits",
|
||||
"transcoding_hardware_acceleration_description": "Experimental; mucho más rápido, pero tendrá menor calidad con la misma tasa de bits",
|
||||
"transcoding_hardware_decoding": "Decodificación por hardware",
|
||||
"transcoding_hardware_decoding_setting_description": "Permite la aceleración de extremo a extremo en lugar de acelerar únicamente la codificación. Puede que no funcione en todos los vídeos.",
|
||||
"transcoding_hevc_codec": "Codec HEVC",
|
||||
"transcoding_max_b_frames": "Maximos B-frames",
|
||||
"transcoding_max_b_frames_description": "Los valores más altos mejoran la eficiencia de la compresión, pero ralentizan la codificación. Puede que no sea compatible con la aceleración de hardware en dispositivos más antiguos. 0 desactiva los fotogramas B, mientras que -1 establece este valor automáticamente.",
|
||||
"transcoding_max_bitrate": "Máxima tasa de bits",
|
||||
@@ -330,13 +337,14 @@
|
||||
"trash_number_of_days_description": "Número de días para mantener los archivos en la papelera antes de eliminarlos permanentemente",
|
||||
"trash_settings": "Configuración papelera",
|
||||
"trash_settings_description": "Administrar la configuración de la papelera",
|
||||
"untracked_files": "Archivos sin seguimiento",
|
||||
"untracked_files_description": "La aplicación no rastrea estos archivos. Puede ser el resultado de movimientos fallidos, subidas interrumpidas o sin procesar debido a un error",
|
||||
"user_cleanup_job": "Limpieza de usuarios",
|
||||
"user_delete_delay": "La cuenta <b>{user}</b> y los archivos se programarán para su eliminación permanente en {delay, plural, one {# día} other {# días}}.",
|
||||
"user_delete_delay_settings": "Eliminar retardo",
|
||||
"user_delete_delay_settings_description": "Número de días después de la eliminación para eliminar permanentemente la cuenta y los activos de un usuario. El trabajo de eliminación de usuarios se ejecuta a medianoche para comprobar si hay usuarios que estén listos para su eliminación. Los cambios a esta configuración se evaluarán en la próxima ejecución.",
|
||||
"user_delete_immediately": "La cuenta <b>{user}</b> y los archivos se pondrán en cola para su eliminación permanente <b>inmediatamente</b>.",
|
||||
"user_delete_immediately_checkbox": "Poner en cola la eliminación inmediata de usuarios y elementos",
|
||||
"user_details": "Detalles de Usuario",
|
||||
"user_management": "Gestión de usuarios",
|
||||
"user_password_has_been_reset": "La contraseña del usuario ha sido restablecida:",
|
||||
"user_password_reset_description": "Proporcione una contraseña temporal al usuario e infórmele que deberá cambiar la contraseña en su próximo inicio de sesión.",
|
||||
@@ -358,7 +366,7 @@
|
||||
"advanced": "Avanzada",
|
||||
"advanced_settings_enable_alternate_media_filter_subtitle": "Usa esta opción para filtrar medios durante la sincronización según criterios alternativos. Intenta esto solo si tienes problemas con que la aplicación detecte todos los álbumes.",
|
||||
"advanced_settings_enable_alternate_media_filter_title": "[EXPERIMENTAL] Usar filtro alternativo de sincronización de álbumes del dispositivo",
|
||||
"advanced_settings_log_level_title": "Nivel de registro: {level}",
|
||||
"advanced_settings_log_level_title": "Nivel de registro: {}",
|
||||
"advanced_settings_prefer_remote_subtitle": "Algunos dispositivos tardan mucho en cargar las miniaturas de los elementos encontrados en el dispositivo. Activa esta opción para cargar imágenes remotas en su lugar.",
|
||||
"advanced_settings_prefer_remote_title": "Preferir imágenes remotas",
|
||||
"advanced_settings_proxy_headers_subtitle": "Configura headers HTTP que Immich incluirá en cada petición de red",
|
||||
@@ -388,6 +396,10 @@
|
||||
"album_remove_user": "¿Eliminar usuario?",
|
||||
"album_remove_user_confirmation": "¿Estás seguro de que quieres eliminar a {user}?",
|
||||
"album_share_no_users": "Parece que has compartido este álbum con todos los usuarios o no tienes ningún usuario con quien compartirlo.",
|
||||
"album_thumbnail_card_item": "1 elemento",
|
||||
"album_thumbnail_card_items": "{} elementos",
|
||||
"album_thumbnail_card_shared": " · Compartido",
|
||||
"album_thumbnail_shared_by": "Compartido por {}",
|
||||
"album_updated": "Album actualizado",
|
||||
"album_updated_setting_description": "Reciba una notificación por correo electrónico cuando un álbum compartido tenga nuevos archivos",
|
||||
"album_user_left": "Salida {album}",
|
||||
@@ -403,9 +415,6 @@
|
||||
"album_with_link_access": "Permita que cualquier persona con el enlace vea fotos y personas en este álbum.",
|
||||
"albums": "Álbumes",
|
||||
"albums_count": "{count, plural, one {{count, number} Álbum} other {{count, number} Álbumes}}",
|
||||
"albums_default_sort_order": "Ordenación por defecto de los álbumes",
|
||||
"albums_default_sort_order_description": "Orden de clasificación inicial de los activos al crear nuevos álbumes.",
|
||||
"albums_feature_description": "Colecciones de activos que pueden compartirse con otros usuarios.",
|
||||
"all": "Todos",
|
||||
"all_albums": "Todos los albums",
|
||||
"all_people": "Todas las personas",
|
||||
@@ -428,7 +437,7 @@
|
||||
"archive": "Archivo",
|
||||
"archive_or_unarchive_photo": "Archivar o restaurar foto",
|
||||
"archive_page_no_archived_assets": "No se encontraron elementos archivados",
|
||||
"archive_page_title": "Archivo ({count})",
|
||||
"archive_page_title": "Archivo ({})",
|
||||
"archive_size": "Tamaño del archivo",
|
||||
"archive_size_description": "Configure el tamaño del archivo para descargas (en GB)",
|
||||
"archived": "Archivado",
|
||||
@@ -465,28 +474,27 @@
|
||||
"assets_added_to_album_count": "Añadido {count, plural, one {# asset} other {# assets}} al álbum",
|
||||
"assets_added_to_name_count": "Añadido {count, plural, one {# asset} other {# assets}} a {hasName, select, true {<b>{name}</b>} other {new album}}",
|
||||
"assets_count": "{count, plural, one {# activo} other {# activos}}",
|
||||
"assets_deleted_permanently": "{count} elemento(s) eliminado(s) permanentemente",
|
||||
"assets_deleted_permanently_from_server": "{count} recurso(s) eliminado(s) de forma permanente del servidor de Immich",
|
||||
"assets_deleted_permanently": "{} elemento(s) eliminado(s) permanentemente",
|
||||
"assets_deleted_permanently_from_server": "{} recurso(s) eliminado(s) de forma permanente del servidor de Immich",
|
||||
"assets_moved_to_trash_count": "{count, plural, one {# elemento movido} other {# elementos movidos}} a la papelera",
|
||||
"assets_permanently_deleted_count": "Eliminado permanentemente {count, plural, one {# elemento} other {# elementos}}",
|
||||
"assets_removed_count": "Eliminado {count, plural, one {# elemento} other {# elementos}}",
|
||||
"assets_removed_permanently_from_device": "{count} elemento(s) eliminado(s) permanentemente de su dispositivo",
|
||||
"assets_removed_permanently_from_device": "{} elemento(s) eliminado(s) permanentemente de su dispositivo",
|
||||
"assets_restore_confirmation": "¿Estás seguro de que quieres restaurar todos tus activos eliminados? ¡No puede deshacer esta acción! Tenga en cuenta que los archivos sin conexión no se pueden restaurar de esta manera.",
|
||||
"assets_restored_count": "Restaurado {count, plural, one {# elemento} other {# elementos}}",
|
||||
"assets_restored_successfully": "{count} elemento(s) restaurado(s) exitosamente",
|
||||
"assets_trashed": "{count} elemento(s) eliminado(s)",
|
||||
"assets_restored_successfully": "{} elemento(s) restaurado(s) exitosamente",
|
||||
"assets_trashed": "{} elemento(s) eliminado(s)",
|
||||
"assets_trashed_count": "Borrado {count, plural, one {# elemento} other {# elementos}}",
|
||||
"assets_trashed_from_server": "{count} recurso(s) enviado(s) a la papelera desde el servidor de Immich",
|
||||
"assets_trashed_from_server": "{} recurso(s) enviado(s) a la papelera desde el servidor de Immich",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} ya forma parte del álbum",
|
||||
"authorized_devices": "Dispositivos Autorizados",
|
||||
"automatic_endpoint_switching_subtitle": "Conectarse localmente a través de la Wi-Fi designada cuando esté disponible y usar conexiones alternativas en otros lugares",
|
||||
"automatic_endpoint_switching_title": "Cambio automático de URL",
|
||||
"autoplay_slideshow": "Presentación con reproducción automática",
|
||||
"back": "Atrás",
|
||||
"back_close_deselect": "Atrás, cerrar o anular la selección",
|
||||
"background_location_permission": "Permiso de ubicación en segundo plano",
|
||||
"background_location_permission_content": "Para poder cambiar de red mientras se ejecuta en segundo plano, Immich debe tener *siempre* acceso a la ubicación precisa para que la aplicación pueda leer el nombre de la red Wi-Fi",
|
||||
"backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({count})",
|
||||
"backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({})",
|
||||
"backup_album_selection_page_albums_tap": "Toque para incluir, doble toque para excluir",
|
||||
"backup_album_selection_page_assets_scatter": "Los elementos pueden dispersarse en varios álbumes. De este modo, los álbumes pueden ser incluidos o excluidos durante el proceso de copia de seguridad.",
|
||||
"backup_album_selection_page_select_albums": "Seleccionar Álbumes",
|
||||
@@ -495,11 +503,11 @@
|
||||
"backup_all": "Todos",
|
||||
"backup_background_service_backup_failed_message": "Error al copiar elementos. Reintentando…",
|
||||
"backup_background_service_connection_failed_message": "Error al conectar con el servidor. Reintentando…",
|
||||
"backup_background_service_current_upload_notification": "Subiendo {filename}",
|
||||
"backup_background_service_current_upload_notification": "Subiendo {}",
|
||||
"backup_background_service_default_notification": "Comprobando nuevos elementos…",
|
||||
"backup_background_service_error_title": "Error de copia de seguridad",
|
||||
"backup_background_service_in_progress_notification": "Creando copia de seguridad de tus elementos…",
|
||||
"backup_background_service_upload_failure_notification": "Error al subir {filename}",
|
||||
"backup_background_service_upload_failure_notification": "Error al subir {}",
|
||||
"backup_controller_page_albums": "Álbumes de copia de seguridad",
|
||||
"backup_controller_page_background_app_refresh_disabled_content": "Activa la actualización en segundo plano de la aplicación en Configuración > General > Actualización en segundo plano para usar la copia de seguridad en segundo plano.",
|
||||
"backup_controller_page_background_app_refresh_disabled_title": "Actualización en segundo plano desactivada",
|
||||
@@ -510,7 +518,7 @@
|
||||
"backup_controller_page_background_battery_info_title": "Optimizaciones de batería",
|
||||
"backup_controller_page_background_charging": "Solo mientras se carga",
|
||||
"backup_controller_page_background_configure_error": "Error al configurar el servicio en segundo plano",
|
||||
"backup_controller_page_background_delay": "Retrasar la copia de seguridad de los nuevos elementos: {duration}",
|
||||
"backup_controller_page_background_delay": "Retrasar la copia de seguridad de los nuevos elementos: {}",
|
||||
"backup_controller_page_background_description": "Activa el servicio en segundo plano para copiar automáticamente cualquier nuevos elementos sin necesidad de abrir la aplicación",
|
||||
"backup_controller_page_background_is_off": "La copia de seguridad en segundo plano automática está desactivada",
|
||||
"backup_controller_page_background_is_on": "La copia de seguridad en segundo plano automática está activada",
|
||||
@@ -520,12 +528,12 @@
|
||||
"backup_controller_page_backup": "Copia de Seguridad",
|
||||
"backup_controller_page_backup_selected": "Seleccionado: ",
|
||||
"backup_controller_page_backup_sub": "Fotos y videos respaldados",
|
||||
"backup_controller_page_created": "Creado el: {date}",
|
||||
"backup_controller_page_created": "Creado el: {}",
|
||||
"backup_controller_page_desc_backup": "Active la copia de seguridad para subir automáticamente los nuevos elementos al servidor cuando se abre la aplicación.",
|
||||
"backup_controller_page_excluded": "Excluido: ",
|
||||
"backup_controller_page_failed": "Fallidos ({count})",
|
||||
"backup_controller_page_filename": "Nombre del archivo: {filename} [{size}]",
|
||||
"backup_controller_page_id": "ID: {id}",
|
||||
"backup_controller_page_failed": "Fallidos ({})",
|
||||
"backup_controller_page_filename": "Nombre del archivo: {} [{}]",
|
||||
"backup_controller_page_id": "ID: {}",
|
||||
"backup_controller_page_info": "Información de la Copia de Seguridad",
|
||||
"backup_controller_page_none_selected": "Ninguno seleccionado",
|
||||
"backup_controller_page_remainder": "Restante",
|
||||
@@ -534,7 +542,7 @@
|
||||
"backup_controller_page_start_backup": "Iniciar copia de seguridad",
|
||||
"backup_controller_page_status_off": "La copia de seguridad está desactivada",
|
||||
"backup_controller_page_status_on": "La copia de seguridad está activada",
|
||||
"backup_controller_page_storage_format": "{used} de {total} usadas",
|
||||
"backup_controller_page_storage_format": "{} de {} usadas",
|
||||
"backup_controller_page_to_backup": "Álbumes a respaldar",
|
||||
"backup_controller_page_total_sub": "Todas las fotos y vídeos únicos de los álbumes seleccionados",
|
||||
"backup_controller_page_turn_off": "Apagar la copia de seguridad",
|
||||
@@ -549,10 +557,6 @@
|
||||
"backup_options_page_title": "Opciones de Copia de Seguridad",
|
||||
"backup_setting_subtitle": "Administra las configuraciones de respaldo en segundo y primer plano",
|
||||
"backward": "Retroceder",
|
||||
"biometric_auth_enabled": "Autentificación biométrica habilitada",
|
||||
"biometric_locked_out": "Estás bloqueado de la autentificación biométrica",
|
||||
"biometric_no_options": "Sin opciones biométricas disponibles",
|
||||
"biometric_not_available": "Autentificación biométrica no disponible en este dispositivo",
|
||||
"birthdate_saved": "Fecha de nacimiento guardada con éxito",
|
||||
"birthdate_set_description": "La fecha de nacimiento se utiliza para calcular la edad de esta persona en el momento de la fotografía.",
|
||||
"blurred_background": "Fondo borroso",
|
||||
@@ -563,17 +567,21 @@
|
||||
"bulk_keep_duplicates_confirmation": "¿Estas seguro de que desea mantener {count, plural, one {# duplicate asset} other {# duplicate assets}} archivos duplicados? Esto resolverá todos los grupos duplicados sin borrar nada.",
|
||||
"bulk_trash_duplicates_confirmation": "¿Estas seguro de que desea eliminar masivamente {count, plural, one {# duplicate asset} other {# duplicate assets}} archivos duplicados? Esto mantendrá el archivo más grande de cada grupo y eliminará todos los demás duplicados.",
|
||||
"buy": "Comprar Immich",
|
||||
"cache_settings_album_thumbnails": "Miniaturas de la página de la biblioteca ({} elementos)",
|
||||
"cache_settings_clear_cache_button": "Borrar caché",
|
||||
"cache_settings_clear_cache_button_title": "Borra la caché de la aplicación. Esto afectará significativamente el rendimiento de la aplicación hasta que se reconstruya la caché.",
|
||||
"cache_settings_duplicated_assets_clear_button": "LIMPIAR",
|
||||
"cache_settings_duplicated_assets_subtitle": "Fotos y vídeos en la lista negra de la app",
|
||||
"cache_settings_duplicated_assets_title": "Elementos duplicados ({count})",
|
||||
"cache_settings_duplicated_assets_title": "Elementos duplicados ({})",
|
||||
"cache_settings_image_cache_size": "Tamaño de la caché de imágenes ({} elementos)",
|
||||
"cache_settings_statistics_album": "Miniaturas de la biblioteca",
|
||||
"cache_settings_statistics_assets": "{} elementos ({})",
|
||||
"cache_settings_statistics_full": "Imágenes completas",
|
||||
"cache_settings_statistics_shared": "Miniaturas de álbumes compartidos",
|
||||
"cache_settings_statistics_thumbnail": "Miniaturas",
|
||||
"cache_settings_statistics_title": "Uso de caché",
|
||||
"cache_settings_subtitle": "Controla el comportamiento del almacenamiento en caché de la aplicación móvil Immich",
|
||||
"cache_settings_thumbnail_size": "Tamaño de la caché de miniaturas ({} elementos)",
|
||||
"cache_settings_tile_subtitle": "Controla el comportamiento del almacenamiento local",
|
||||
"cache_settings_tile_title": "Almacenamiento local",
|
||||
"cache_settings_title": "Configuración de la caché",
|
||||
@@ -586,15 +594,12 @@
|
||||
"cannot_merge_people": "No se pueden fusionar personas",
|
||||
"cannot_undo_this_action": "¡No puedes deshacer esta acción!",
|
||||
"cannot_update_the_description": "No se puede actualizar la descripción",
|
||||
"cast": "Convertir",
|
||||
"cast_description": "Configura los posibles destinos de retransmisión",
|
||||
"change_date": "Cambiar fecha",
|
||||
"change_description": "Cambiar descripción",
|
||||
"change_display_order": "Cambiar orden de visualización",
|
||||
"change_expiration_time": "Cambiar fecha de caducidad",
|
||||
"change_location": "Cambiar ubicación",
|
||||
"change_name": "Cambiar nombre",
|
||||
"change_name_successfully": "Nombre cambiado exitosamente",
|
||||
"change_name_successfully": "Nombre cambiado correctamente",
|
||||
"change_password": "Cambiar Contraseña",
|
||||
"change_password_description": "Esta es la primera vez que inicia sesión en el sistema o se ha realizado una solicitud para cambiar su contraseña. Por favor ingrese la nueva contraseña a continuación.",
|
||||
"change_password_form_confirm_password": "Confirmar Contraseña",
|
||||
@@ -602,9 +607,9 @@
|
||||
"change_password_form_new_password": "Nueva Contraseña",
|
||||
"change_password_form_password_mismatch": "Las contraseñas no coinciden",
|
||||
"change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
|
||||
"change_pin_code": "Cambiar PIN",
|
||||
"change_your_password": "Cambia tu contraseña",
|
||||
"changed_visibility_successfully": "Visibilidad cambiada correctamente",
|
||||
"check_all": "Comprobar todo",
|
||||
"check_corrupt_asset_backup": "Comprobar copias de seguridad de archivos corruptos",
|
||||
"check_corrupt_asset_backup_button": "Realizar comprobación",
|
||||
"check_corrupt_asset_backup_description": "Ejecutar esta comprobación solo por Wi-Fi y una vez que todos los archivos hayan sido respaldados. El procedimiento puede tardar unos minutos.",
|
||||
@@ -642,15 +647,11 @@
|
||||
"confirm_delete_face": "¿Estás seguro que deseas eliminar la cara de {name} del archivo?",
|
||||
"confirm_delete_shared_link": "¿Estás seguro de que deseas eliminar este enlace compartido?",
|
||||
"confirm_keep_this_delete_others": "Todos los demás activos de la pila se eliminarán excepto este activo. ¿Está seguro de que quiere continuar?",
|
||||
"confirm_new_pin_code": "Confirmar nuevo pin",
|
||||
"confirm_password": "Confirmar contraseña",
|
||||
"confirm_tag_face": "¿Quieres etiquetar esta cara como {name}?",
|
||||
"confirm_tag_face_unnamed": "¿Quieres etiquetar esta cara?",
|
||||
"connected_device": "Dispositivo conectado",
|
||||
"connected_to": "Conectado a",
|
||||
"contain": "Incluido",
|
||||
"context": "Contexto",
|
||||
"continue": "Continuar",
|
||||
"control_bottom_app_bar_album_info_shared": "{} elementos · Compartidos",
|
||||
"control_bottom_app_bar_create_new_album": "Crear nuevo álbum",
|
||||
"control_bottom_app_bar_delete_from_immich": "Borrar de Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Borrar del dispositivo",
|
||||
@@ -688,18 +689,15 @@
|
||||
"create_tag_description": "Crear una nueva etiqueta. Para las etiquetas anidadas, ingresa la ruta completa de la etiqueta, incluidas las barras diagonales.",
|
||||
"create_user": "Crear usuario",
|
||||
"created": "Creado",
|
||||
"created_at": "Creado",
|
||||
"crop": "Recortar",
|
||||
"curated_object_page_title": "Objetos",
|
||||
"current_device": "Dispositivo actual",
|
||||
"current_pin_code": "PIN actual",
|
||||
"current_server_address": "Dirección actual del servidor",
|
||||
"custom_locale": "Configuración regional personalizada",
|
||||
"custom_locale_description": "Formatear fechas y números según el idioma y la región",
|
||||
"daily_title_text_date": "E dd, MMM",
|
||||
"daily_title_text_date_year": "E dd de MMM, yyyy",
|
||||
"dark": "Oscuro",
|
||||
"darkTheme": "Activar tema oscuro",
|
||||
"date_after": "Fecha posterior",
|
||||
"date_and_time": "Fecha y Hora",
|
||||
"date_before": "Fecha anterior",
|
||||
@@ -741,13 +739,12 @@
|
||||
"description": "Descripción",
|
||||
"description_input_hint_text": "Agregar descripción...",
|
||||
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
|
||||
"details": "Detalles",
|
||||
"details": "DETALLES",
|
||||
"direction": "Dirección",
|
||||
"disabled": "Deshabilitado",
|
||||
"disallow_edits": "Bloquear edición",
|
||||
"discord": "Discord",
|
||||
"discover": "Descubrir",
|
||||
"discovered_devices": "Dispositivos descubiertos",
|
||||
"dismiss_all_errors": "Descartar todos los errores",
|
||||
"dismiss_error": "Descartar error",
|
||||
"display_options": "Opciones de pantalla",
|
||||
@@ -763,6 +760,7 @@
|
||||
"download_enqueue": "Descarga en cola",
|
||||
"download_error": "Error al descargar",
|
||||
"download_failed": "Descarga fallida",
|
||||
"download_filename": "archivo: {}",
|
||||
"download_finished": "Descarga completada",
|
||||
"download_include_embedded_motion_videos": "Vídeos incrustados",
|
||||
"download_include_embedded_motion_videos_description": "Incluir vídeos incrustados en fotografías en movimiento como un archivo separado",
|
||||
@@ -786,8 +784,6 @@
|
||||
"edit_avatar": "Editar avatar",
|
||||
"edit_date": "Editar fecha",
|
||||
"edit_date_and_time": "Editar fecha y hora",
|
||||
"edit_description": "Editar descripción",
|
||||
"edit_description_prompt": "Por favor selecciona una nueva descripción:",
|
||||
"edit_exclusion_pattern": "Editar patrón de exclusión",
|
||||
"edit_faces": "Editar rostros",
|
||||
"edit_import_path": "Editar ruta de importación",
|
||||
@@ -808,24 +804,19 @@
|
||||
"editor_crop_tool_h2_aspect_ratios": "Proporciones del aspecto",
|
||||
"editor_crop_tool_h2_rotation": "Rotación",
|
||||
"email": "Correo",
|
||||
"email_notifications": "Notificaciones por correo electrónico",
|
||||
"empty_folder": "Esta carpeta está vacía",
|
||||
"empty_trash": "Vaciar papelera",
|
||||
"empty_trash_confirmation": "¿Estás seguro de que quieres vaciar la papelera? Esto eliminará permanentemente todos los archivos de la basura de Immich.\n¡No puedes deshacer esta acción!",
|
||||
"enable": "Habilitar",
|
||||
"enable_biometric_auth_description": "Introduce tu código PIN para habilitar la autentificación biométrica",
|
||||
"enabled": "Habilitado",
|
||||
"end_date": "Fecha final",
|
||||
"enqueued": "Añadido a la cola",
|
||||
"enter_wifi_name": "Introduce el nombre Wi-Fi",
|
||||
"enter_your_pin_code": "Introduce tu código PIN",
|
||||
"enter_your_pin_code_subtitle": "Introduce tu código PIN para acceder a la carpeta bloqueada",
|
||||
"error": "Error",
|
||||
"error_change_sort_album": "No se pudo cambiar el orden de visualización del álbum",
|
||||
"error_delete_face": "Error al eliminar la cara del archivo",
|
||||
"error_loading_image": "Error al cargar la imagen",
|
||||
"error_saving_image": "Error: {error}",
|
||||
"error_tag_face_bounding_box": "Error etiquetando cara - no se pueden obtener las coordenadas del marco delimitante",
|
||||
"error_saving_image": "Error: {}",
|
||||
"error_title": "Error: algo salió mal",
|
||||
"errors": {
|
||||
"cannot_navigate_next_asset": "No puedes navegar al siguiente archivo",
|
||||
@@ -838,6 +829,7 @@
|
||||
"cant_get_number_of_comments": "No se puede obtener la cantidad de comentarios",
|
||||
"cant_search_people": "No se puede buscar a personas",
|
||||
"cant_search_places": "No se pueden buscar lugares",
|
||||
"cleared_jobs": "Tareas listas para: {job}",
|
||||
"error_adding_assets_to_album": "Error al añadir archivos al álbum",
|
||||
"error_adding_users_to_album": "Error al añadir usuarios al álbum",
|
||||
"error_deleting_shared_user": "Error al eliminar usuario compartido",
|
||||
@@ -846,6 +838,7 @@
|
||||
"error_removing_assets_from_album": "Error al eliminar archivos del álbum; consulte la consola para obtener más detalles",
|
||||
"error_selecting_all_assets": "Error al seleccionar todos los archivos",
|
||||
"exclusion_pattern_already_exists": "Este patrón de exclusión ya existe.",
|
||||
"failed_job_command": "El comando {command} ha fallado para la tarea: {job}",
|
||||
"failed_to_create_album": "Error al crear el álbum",
|
||||
"failed_to_create_shared_link": "Error al crear el enlace compartido",
|
||||
"failed_to_edit_shared_link": "Error al editar el enlace compartido",
|
||||
@@ -864,6 +857,7 @@
|
||||
"paths_validation_failed": "Falló la validación en {paths, plural, one {# carpeta} other {# carpetas}}",
|
||||
"profile_picture_transparent_pixels": "Las imágenes de perfil no pueden tener píxeles transparentes. Por favor amplíe y/o mueva la imagen.",
|
||||
"quota_higher_than_disk_size": "Se ha establecido una cuota superior al tamaño del disco",
|
||||
"repair_unable_to_check_items": "No se puede verificar {count, select, one {elemento} other {elementos}}",
|
||||
"unable_to_add_album_users": "No se pueden agregar usuarios al álbum",
|
||||
"unable_to_add_assets_to_shared_link": "No se pueden agregar archivos al enlace compartido",
|
||||
"unable_to_add_comment": "No se puede agregar comentario",
|
||||
@@ -875,13 +869,13 @@
|
||||
"unable_to_archive_unarchive": "Añade a {archived, select, true {archive} other {unarchive}}",
|
||||
"unable_to_change_album_user_role": "No se puede cambiar la función del usuario del álbum",
|
||||
"unable_to_change_date": "No se puede cambiar la fecha",
|
||||
"unable_to_change_description": "Imposible cambiar la descripción",
|
||||
"unable_to_change_favorite": "Imposible cambiar el archivo favorito",
|
||||
"unable_to_change_location": "No se puede cambiar de ubicación",
|
||||
"unable_to_change_password": "No se puede cambiar la contraseña",
|
||||
"unable_to_change_visibility": "No se puede cambiar la visibilidad de {count, plural, one {# persona} other {# personas}}",
|
||||
"unable_to_complete_oauth_login": "No se puede completar el inicio de sesión de OAuth",
|
||||
"unable_to_connect": "No puede conectarse",
|
||||
"unable_to_connect_to_server": "Error al conectar al servidor",
|
||||
"unable_to_copy_to_clipboard": "No se puede copiar al portapapeles, asegúrese de acceder a la página a través de https",
|
||||
"unable_to_create_admin_account": "No se puede crear una cuenta de administrador",
|
||||
"unable_to_create_api_key": "No se puede crear una nueva clave API",
|
||||
@@ -905,6 +899,10 @@
|
||||
"unable_to_hide_person": "No se puede ocultar a la persona",
|
||||
"unable_to_link_motion_video": "No se puede enlazar el vídeo en movimiento",
|
||||
"unable_to_link_oauth_account": "No se puede vincular la cuenta OAuth",
|
||||
"unable_to_load_album": "No se puede cargar el álbum",
|
||||
"unable_to_load_asset_activity": "No se puede cargar la actividad de los archivos",
|
||||
"unable_to_load_items": "No se pueden cargar items",
|
||||
"unable_to_load_liked_status": "No se puede cargar el estado \"Me gusta\"",
|
||||
"unable_to_log_out_all_devices": "No se pueden cerrar las sesiones en todos los dispositivos",
|
||||
"unable_to_log_out_device": "No se puede cerrar la sesión en el dispositivo",
|
||||
"unable_to_login_with_oauth": "No se puede iniciar sesión con OAuth",
|
||||
@@ -915,11 +913,12 @@
|
||||
"unable_to_remove_album_users": "No se pueden eliminar usuarios del álbum",
|
||||
"unable_to_remove_api_key": "No se puede eliminar la clave API",
|
||||
"unable_to_remove_assets_from_shared_link": "No se pueden eliminar archivos desde el enlace compartido",
|
||||
"unable_to_remove_deleted_assets": "No se pueden eliminar archivos sin conexión",
|
||||
"unable_to_remove_library": "No se puede eliminar la biblioteca",
|
||||
"unable_to_remove_partner": "No se puede eliminar el invitado",
|
||||
"unable_to_remove_reaction": "No se puede eliminar la reacción",
|
||||
"unable_to_repair_items": "No se pueden reparar los items",
|
||||
"unable_to_reset_password": "No se puede restablecer la contraseña",
|
||||
"unable_to_reset_pin_code": "No se ha podido restablecer el PIN",
|
||||
"unable_to_resolve_duplicate": "No se resolver duplicado",
|
||||
"unable_to_restore_assets": "No se pueden restaurar los archivos",
|
||||
"unable_to_restore_trash": "No se puede restaurar la papelera",
|
||||
@@ -953,9 +952,10 @@
|
||||
"exif_bottom_sheet_location": "UBICACIÓN",
|
||||
"exif_bottom_sheet_people": "PERSONAS",
|
||||
"exif_bottom_sheet_person_add_person": "Añadir nombre",
|
||||
"exif_bottom_sheet_person_age_months": "Edad {months} meses",
|
||||
"exif_bottom_sheet_person_age_year_months": "Edad 1 año, {months} meses",
|
||||
"exif_bottom_sheet_person_age_years": "Edad {years}",
|
||||
"exif_bottom_sheet_person_age": "Antigüedad {}",
|
||||
"exif_bottom_sheet_person_age_months": "Antigüedad {} meses",
|
||||
"exif_bottom_sheet_person_age_year_months": "Antigüedad 1 año, {} meses",
|
||||
"exif_bottom_sheet_person_age_years": "Antigüedad {}",
|
||||
"exit_slideshow": "Salir de la presentación",
|
||||
"expand_all": "Expandir todo",
|
||||
"experimental_settings_new_asset_list_subtitle": "Trabajo en progreso",
|
||||
@@ -969,14 +969,13 @@
|
||||
"explorer": "Explorador",
|
||||
"export": "Exportar",
|
||||
"export_as_json": "Exportar a JSON",
|
||||
"extension": "Extensión",
|
||||
"extension": "Extension",
|
||||
"external": "Externo",
|
||||
"external_libraries": "Bibliotecas Externas",
|
||||
"external_network": "Red externa",
|
||||
"external_network_sheet_info": "Cuando no estés conectado a la red Wi-Fi preferida, la aplicación se conectará al servidor utilizando la primera de las siguientes URLs a la que pueda acceder, comenzando desde la parte superior de la lista hacia abajo",
|
||||
"face_unassigned": "Sin asignar",
|
||||
"failed": "Fallido",
|
||||
"failed_to_authenticate": "Fallo al autentificar",
|
||||
"failed_to_load_assets": "Error al cargar los activos",
|
||||
"failed_to_load_folder": "No se pudo cargar la carpeta",
|
||||
"favorite": "Favorito",
|
||||
@@ -1000,8 +999,6 @@
|
||||
"folders": "Carpetas",
|
||||
"folders_feature_description": "Explorar la vista de carpetas para las fotos y los videos en el sistema de archivos",
|
||||
"forward": "Reenviar",
|
||||
"gcast_enabled": "Google Cast",
|
||||
"gcast_enabled_description": "Esta funcionalidad carga recursos externos desde Google para poder funcionar.",
|
||||
"general": "General",
|
||||
"get_help": "Solicitar ayuda",
|
||||
"get_wifiname_error": "No se pudo obtener el nombre de la red Wi-Fi. Asegúrate de haber concedido los permisos necesarios y de estar conectado a una red Wi-Fi",
|
||||
@@ -1044,13 +1041,10 @@
|
||||
"home_page_favorite_err_local": "Aún no se pueden archivar elementos locales, omitiendo",
|
||||
"home_page_favorite_err_partner": "Aún no se pueden marcar elementos de compañeros como favoritos, omitiendo",
|
||||
"home_page_first_time_notice": "Si es la primera vez que usas la aplicación, asegúrate de elegir un álbum de copia de seguridad para que la línea de tiempo pueda mostrar fotos y vídeos en él",
|
||||
"home_page_locked_error_local": "Imposible mover archivos locales a carpeta bloqueada, saltando",
|
||||
"home_page_locked_error_partner": "Imposible mover los archivos del compañero a carpeta bloqueada, obviando",
|
||||
"home_page_share_err_local": "No se pueden compartir elementos locales a través de un enlace, omitiendo",
|
||||
"home_page_upload_err_limit": "Solo se pueden subir 30 elementos simultáneamente, omitiendo",
|
||||
"host": "Host",
|
||||
"hour": "Hora",
|
||||
"id": "ID",
|
||||
"ignore_icloud_photos": "Ignorar fotos de iCloud",
|
||||
"ignore_icloud_photos_description": "Las fotos almacenadas en iCloud no se subirán a Immich",
|
||||
"image": "Imagen",
|
||||
@@ -1090,12 +1084,6 @@
|
||||
"invalid_date_format": "Formato de fecha incorrecto",
|
||||
"invite_people": "Invitar a Personas",
|
||||
"invite_to_album": "Invitar al álbum",
|
||||
"ios_debug_info_fetch_ran_at": "Busca ejecución en {dateTime}",
|
||||
"ios_debug_info_last_sync_at": "Última sincronización en {dateTime}",
|
||||
"ios_debug_info_no_processes_queued": "Ningún proceso de fondo encolado",
|
||||
"ios_debug_info_no_sync_yet": "Todavía no se ha ejecutado ningún trabajo de sincronización en segundo plano",
|
||||
"ios_debug_info_processes_queued": "{count, plural, un {{count} proceso de segundo plano en cola} otros {{count} procesos de segundo plano en cola}}",
|
||||
"ios_debug_info_processing_ran_at": "El procesamiento se ejecutó el {dateTime}",
|
||||
"items_count": "{count, plural, one {# elemento} other {# elementos}}",
|
||||
"jobs": "Tareas",
|
||||
"keep": "Conservar",
|
||||
@@ -1104,9 +1092,6 @@
|
||||
"kept_this_deleted_others": "Mantuvo este activo y eliminó {count, plural, one {# activo} other {# activos}}",
|
||||
"keyboard_shortcuts": "Atajos de teclado",
|
||||
"language": "Idioma",
|
||||
"language_no_results_subtitle": "Intente ajustar el término de búsqueda",
|
||||
"language_no_results_title": "No se han encontrado idiomas",
|
||||
"language_search_hint": "Buscar idiomas...",
|
||||
"language_setting_description": "Selecciona tu idioma preferido",
|
||||
"last_seen": "Ultima vez visto",
|
||||
"latest_version": "Última versión",
|
||||
@@ -1132,8 +1117,7 @@
|
||||
"list": "Listar",
|
||||
"loading": "Cargando",
|
||||
"loading_search_results_failed": "Error al cargar los resultados de la búsqueda",
|
||||
"local_asset_cast_failed": "No se puede emitir un activo que no está cargado en el servidor",
|
||||
"local_network": "Red local",
|
||||
"local_network": "Local network",
|
||||
"local_network_sheet_info": "La aplicación se conectará al servidor a través de esta URL cuando utilice la red Wi-Fi especificada",
|
||||
"location_permission": "Permiso de ubicación",
|
||||
"location_permission_content": "Para usar la función de cambio automático, Immich necesita permiso de ubicación precisa para poder leer el nombre de la red Wi-Fi actual",
|
||||
@@ -1142,11 +1126,9 @@
|
||||
"location_picker_latitude_hint": "Introduce tu latitud aquí",
|
||||
"location_picker_longitude_error": "Introduce una longitud válida",
|
||||
"location_picker_longitude_hint": "Introduce tu longitud aquí",
|
||||
"lock": "Bloquear",
|
||||
"locked_folder": "Carpeta bloqueada",
|
||||
"log_out": "Cerrar sesión",
|
||||
"log_out_all_devices": "Cerrar sesión en todos los dispositivos",
|
||||
"logged_out_all_devices": "Se ha cerrado la sesión en todos los dispositivos",
|
||||
"logged_out_all_devices": "Cierre la sesión en todos los dispositivos",
|
||||
"logged_out_device": "Dispositivo desconectado",
|
||||
"login": "Inicio de sesión",
|
||||
"login_disabled": "El inicio de sesión ha sido desactivado",
|
||||
@@ -1177,7 +1159,7 @@
|
||||
"look": "Mirar",
|
||||
"loop_videos": "Vídeos en bucle",
|
||||
"loop_videos_description": "Habilite la reproducción automática de un video en el visor de detalles.",
|
||||
"main_branch_warning": "Está utilizando una versión de desarrollo; ¡le recomendamos encarecidamente que utilice una versión de lanzamiento!",
|
||||
"main_branch_warning": "Estás ejecutando una compilación desde la rama principal. ¡Recomendamos encarecidamente usar una versión de lanzamiento!",
|
||||
"main_menu": "Menú principal",
|
||||
"make": "Marca",
|
||||
"manage_shared_links": "Administrar enlaces compartidos",
|
||||
@@ -1188,8 +1170,8 @@
|
||||
"manage_your_devices": "Administre sus dispositivos conectados",
|
||||
"manage_your_oauth_connection": "Administra tu conexión OAuth",
|
||||
"map": "Mapa",
|
||||
"map_assets_in_bound": "{count} foto",
|
||||
"map_assets_in_bounds": "{count} fotos",
|
||||
"map_assets_in_bound": "{} foto",
|
||||
"map_assets_in_bounds": "{} fotos",
|
||||
"map_cannot_get_user_location": "No se pudo obtener la posición del usuario",
|
||||
"map_location_dialog_yes": "Sí",
|
||||
"map_location_picker_page_use_location": "Usar esta ubicación",
|
||||
@@ -1203,9 +1185,9 @@
|
||||
"map_settings": "Ajustes mapa",
|
||||
"map_settings_dark_mode": "Modo oscuro",
|
||||
"map_settings_date_range_option_day": "Últimas 24 horas",
|
||||
"map_settings_date_range_option_days": "Últimos {days} días",
|
||||
"map_settings_date_range_option_days": "Últimos {} días",
|
||||
"map_settings_date_range_option_year": "Último año",
|
||||
"map_settings_date_range_option_years": "Últimos {years} años",
|
||||
"map_settings_date_range_option_years": "Últimos {} años",
|
||||
"map_settings_dialog_title": "Ajustes mapa",
|
||||
"map_settings_include_show_archived": "Incluir archivados",
|
||||
"map_settings_include_show_partners": "Incluir Parejas",
|
||||
@@ -1223,6 +1205,8 @@
|
||||
"memories_setting_description": "Gestiona lo que ves en tus recuerdos",
|
||||
"memories_start_over": "Empezar de nuevo",
|
||||
"memories_swipe_to_close": "Desliza para cerrar",
|
||||
"memories_year_ago": "Hace un año",
|
||||
"memories_years_ago": "Hace {} años",
|
||||
"memory": "Recuerdo",
|
||||
"memory_lane_title": "Baúl de los recuerdos {title}",
|
||||
"menu": "Menú",
|
||||
@@ -1239,12 +1223,6 @@
|
||||
"month": "Mes",
|
||||
"monthly_title_text_date_format": "MMMM y",
|
||||
"more": "Mas",
|
||||
"move": "Mover",
|
||||
"move_off_locked_folder": "Mover fuera de la carpeta protegida",
|
||||
"move_to_locked_folder": "Mover a la carpeta protegida",
|
||||
"move_to_locked_folder_confirmation": "Estas fotos y vídeos serán eliminados de todos los álbumes y sólo podrán ser vistos desde la carpeta protegida",
|
||||
"moved_to_archive": "Movido(s) {count, plural, one {# recurso} other {# recursos}} a archivo",
|
||||
"moved_to_library": "Movido(s) {count, plural, one {# recurso} other {# recursos}} a biblioteca",
|
||||
"moved_to_trash": "Movido a la papelera",
|
||||
"multiselect_grid_edit_date_time_err_read_only": "No se puede cambiar la fecha del archivo(s) de solo lectura, omitiendo",
|
||||
"multiselect_grid_edit_gps_err_read_only": "No se puede editar la ubicación de activos de solo lectura, omitiendo",
|
||||
@@ -1254,13 +1232,11 @@
|
||||
"name_or_nickname": "Nombre o apodo",
|
||||
"networking_settings": "Red",
|
||||
"networking_subtitle": "Configuraciones de acceso por URL al servidor",
|
||||
"never": "Nunca",
|
||||
"never": "nunca",
|
||||
"new_album": "Nuevo álbum",
|
||||
"new_api_key": "Nueva clave API",
|
||||
"new_password": "Nueva contraseña",
|
||||
"new_person": "Nueva persona",
|
||||
"new_pin_code": "Nuevo PIN",
|
||||
"new_pin_code_subtitle": "Esta es tu primera vez accediendo a la carpeta protegida. Crea un PIN seguro para acceder a esta página",
|
||||
"new_user_created": "Nuevo usuario creado",
|
||||
"new_version_available": "NUEVA VERSIÓN DISPONIBLE",
|
||||
"newest_first": "El más reciente primero",
|
||||
@@ -1273,16 +1249,13 @@
|
||||
"no_archived_assets_message": "Archive fotos y videos para ocultarlos de su vista de Fotos",
|
||||
"no_assets_message": "HAZ CLIC PARA SUBIR TU PRIMERA FOTO",
|
||||
"no_assets_to_show": "No hay elementos a mostrar",
|
||||
"no_cast_devices_found": "Dispositivos de cast no encontrados",
|
||||
"no_duplicates_found": "No se encontraron duplicados.",
|
||||
"no_exif_info_available": "No hay información exif disponible",
|
||||
"no_explore_results_message": "Sube más fotos para explorar tu colección.",
|
||||
"no_favorites_message": "Agregue favoritos para encontrar rápidamente sus mejores fotos y videos",
|
||||
"no_libraries_message": "Crea una biblioteca externa para ver tus fotos y vídeos",
|
||||
"no_locked_photos_message": "Fotos y vídeos en la carpeta protegida están ocultos y no se mostrarán en las búsquedas de tu librería.",
|
||||
"no_name": "Sin nombre",
|
||||
"no_notifications": "Ninguna notificación",
|
||||
"no_people_found": "No se encontraron personas coincidentes",
|
||||
"no_places": "Sin lugares",
|
||||
"no_results": "Sin resultados",
|
||||
"no_results_description": "Pruebe con un sinónimo o una palabra clave más general",
|
||||
@@ -1291,7 +1264,6 @@
|
||||
"not_selected": "No seleccionado",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar la etiqueta de almacenamiento a los archivos subidos previamente, ejecute el",
|
||||
"notes": "Notas",
|
||||
"nothing_here_yet": "Sin nada aún",
|
||||
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
|
||||
"notification_permission_list_tile_content": "Concede permiso para habilitar las notificaciones.",
|
||||
"notification_permission_list_tile_enable_button": "Permitir notificaciones",
|
||||
@@ -1302,15 +1274,15 @@
|
||||
"oauth": "OAuth",
|
||||
"official_immich_resources": "Recursos oficiales de Immich",
|
||||
"offline": "Desconectado",
|
||||
"offline_paths": "Rutas sin conexión",
|
||||
"offline_paths_description": "Estos resultados pueden deberse a la eliminación manual de archivos que no forman parte de una biblioteca externa.",
|
||||
"ok": "Sí",
|
||||
"oldest_first": "Los más antiguos primero",
|
||||
"on_this_device": "En este dispositivo",
|
||||
"onboarding": "Incorporando",
|
||||
"onboarding_locale_description": "Selecciona tu idioma preferido. Podrás cambiarlo después desde tu configuración.",
|
||||
"onboarding_privacy_description": "Las siguientes funciones (opcionales) dependen de servicios externos y pueden desactivarse en cualquier momento desde los ajustes.",
|
||||
"onboarding_server_welcome_description": "Empecemos a configurar tu instancia con algunos ajustes comunes.",
|
||||
"onboarding_privacy_description": "Las siguientes funciones (opcionales) dependen de servicios externos y pueden desactivarse en cualquier momento en los ajustes.",
|
||||
"onboarding_theme_description": "Elija un color de tema para su instancia. Puedes cambiar esto más tarde en tu configuración.",
|
||||
"onboarding_user_welcome_description": "¡Empecemos!",
|
||||
"onboarding_welcome_description": "Configuremos su instancia con algunas configuraciones comunes.",
|
||||
"onboarding_welcome_user": "Bienvenido, {user}",
|
||||
"online": "En línea",
|
||||
"only_favorites": "Solo favoritos",
|
||||
@@ -1338,7 +1310,7 @@
|
||||
"partner_page_partner_add_failed": "No se pudo añadir el socio",
|
||||
"partner_page_select_partner": "Seleccionar compañero",
|
||||
"partner_page_shared_to_title": "Compartido con",
|
||||
"partner_page_stop_sharing_content": "{partner} ya no podrá acceder a tus fotos.",
|
||||
"partner_page_stop_sharing_content": "{} ya no podrá acceder a tus fotos.",
|
||||
"partner_sharing": "Compartir con invitados",
|
||||
"partners": "Invitados",
|
||||
"password": "Contraseña",
|
||||
@@ -1367,8 +1339,6 @@
|
||||
"permanently_delete_assets_prompt": "¿Está seguro de que desea eliminar permanentemente {count, plural, one {este activo?} other {estos <b>#</b> activos?}} Esto también eliminará {count, plural, one {de tu} other {de tus}} álbum(es).",
|
||||
"permanently_deleted_asset": "Archivo eliminado permanentemente",
|
||||
"permanently_deleted_assets_count": "Eliminado permanentemente {count, plural, one {# elemento} other {# elementos}}",
|
||||
"permission": "Permiso",
|
||||
"permission_empty": "Tus permisos no deben estar vacíos",
|
||||
"permission_onboarding_back": "Volver",
|
||||
"permission_onboarding_continue_anyway": "Continuar de todos modos",
|
||||
"permission_onboarding_get_started": "Empezar",
|
||||
@@ -1386,10 +1356,6 @@
|
||||
"photos_count": "{count, plural, one {{count, number} Foto} other {{count, number} Fotos}}",
|
||||
"photos_from_previous_years": "Fotos de años anteriores",
|
||||
"pick_a_location": "Elige una ubicación",
|
||||
"pin_code_changed_successfully": "PIN cambiado exitosamente",
|
||||
"pin_code_reset_successfully": "PIN restablecido exitosamente",
|
||||
"pin_code_setup_successfully": "PIN establecido exitosamente",
|
||||
"pin_verification": "Verificación con código PIN",
|
||||
"place": "Lugar",
|
||||
"places": "Lugares",
|
||||
"places_count": "{count, plural, one {{count, number} Lugar} other {{count, number} Lugares}}",
|
||||
@@ -1397,7 +1363,6 @@
|
||||
"play_memories": "Reproducir recuerdos",
|
||||
"play_motion_photo": "Reproducir foto en movimiento",
|
||||
"play_or_pause_video": "Reproducir o pausar vídeo",
|
||||
"please_auth_to_access": "Por favor, autentícate para acceder",
|
||||
"port": "Puerto",
|
||||
"preferences_settings_subtitle": "Configuraciones de la aplicación",
|
||||
"preferences_settings_title": "Preferencias",
|
||||
@@ -1405,17 +1370,13 @@
|
||||
"preview": "Posterior",
|
||||
"previous": "Anterior",
|
||||
"previous_memory": "Recuerdo anterior",
|
||||
"previous_or_next_day": "Día posterior/anterior",
|
||||
"previous_or_next_month": "Mes posterior/anterior",
|
||||
"previous_or_next_photo": "Foto posterior/anterior",
|
||||
"previous_or_next_year": "Año posterior/anterior",
|
||||
"previous_or_next_photo": "Foto anterior o siguiente",
|
||||
"primary": "Básico",
|
||||
"privacy": "Privacidad",
|
||||
"profile": "Perfil",
|
||||
"profile_drawer_app_logs": "Registros",
|
||||
"profile_drawer_client_out_of_date_major": "La app está desactualizada. Por favor actualiza a la última versión principal.",
|
||||
"profile_drawer_client_out_of_date_minor": "La app está desactualizada. Por favor actualiza a la última versión menor.",
|
||||
"profile_drawer_client_server_up_to_date": "Cliente y Servidor están actualizados",
|
||||
"profile_drawer_client_server_up_to_date": "El Cliente y el Servidor están actualizados",
|
||||
"profile_drawer_github": "GitHub",
|
||||
"profile_drawer_server_out_of_date_major": "El servidor está desactualizado. Por favor actualiza a la última versión principal.",
|
||||
"profile_drawer_server_out_of_date_minor": "El servidor está desactualizado. Por favor actualiza a la última versión menor.",
|
||||
@@ -1425,7 +1386,7 @@
|
||||
"public_share": "Compartir públicamente",
|
||||
"purchase_account_info": "Seguidor",
|
||||
"purchase_activated_subtitle": "Gracias por apoyar a Immich y al software de código abierto",
|
||||
"purchase_activated_time": "Activado el {date}",
|
||||
"purchase_activated_time": "Activado el {date, date}",
|
||||
"purchase_activated_title": "Su clave ha sido activada correctamente",
|
||||
"purchase_button_activate": "Activar",
|
||||
"purchase_button_buy": "Comprar",
|
||||
@@ -1491,8 +1452,6 @@
|
||||
"remove_deleted_assets": "Eliminar archivos sin conexión",
|
||||
"remove_from_album": "Eliminar del álbum",
|
||||
"remove_from_favorites": "Quitar de favoritos",
|
||||
"remove_from_locked_folder": "Eliminar de la carpeta protegida",
|
||||
"remove_from_locked_folder_confirmation": "¿Estás seguro de que deseas mover estas fotos y vídeos fuera de la carpeta protegida? Serán visibles en tu biblioteca.",
|
||||
"remove_from_shared_link": "Eliminar desde enlace compartido",
|
||||
"remove_memory": "Quitar memoria",
|
||||
"remove_photo_from_memory": "Quitar foto de esta memoria",
|
||||
@@ -1516,7 +1475,6 @@
|
||||
"reset": "Reiniciar",
|
||||
"reset_password": "Restablecer la contraseña",
|
||||
"reset_people_visibility": "Restablecer la visibilidad de las personas",
|
||||
"reset_pin_code": "Restablecer PIN",
|
||||
"reset_to_default": "Restablecer los valores predeterminados",
|
||||
"resolve_duplicates": "Resolver duplicados",
|
||||
"resolved_all_duplicates": "Todos los duplicados resueltos",
|
||||
@@ -1609,7 +1567,6 @@
|
||||
"select_keep_all": "Conservar todo",
|
||||
"select_library_owner": "Seleccionar propietario de la biblioteca",
|
||||
"select_new_face": "Seleccionar nueva cara",
|
||||
"select_person_to_tag": "Elija una persona a etiquetar",
|
||||
"select_photos": "Seleccionar Fotos",
|
||||
"select_trash_all": "Seleccionar eliminar todo",
|
||||
"select_user_for_sharing_page_err_album": "Fallo al crear el álbum",
|
||||
@@ -1622,7 +1579,6 @@
|
||||
"server_info_box_server_url": "URL del servidor",
|
||||
"server_offline": "Servidor desconectado",
|
||||
"server_online": "Servidor en línea",
|
||||
"server_privacy": "Privacidad del Servidor",
|
||||
"server_stats": "Estadísticas del servidor",
|
||||
"server_version": "Versión del servidor",
|
||||
"set": "Establecer",
|
||||
@@ -1632,7 +1588,6 @@
|
||||
"set_date_of_birth": "Establecer fecha de nacimiento",
|
||||
"set_profile_picture": "Establecer foto de perfil",
|
||||
"set_slideshow_to_fullscreen": "Mostrar diapositivas en pantalla completa",
|
||||
"set_stack_primary_asset": "Establecer como activo principal",
|
||||
"setting_image_viewer_help": "El visor de detalles carga primero la miniatura pequeña, luego carga la vista previa de tamaño mediano (si está habilitada), finalmente carga la original (si está habilitada).",
|
||||
"setting_image_viewer_original_subtitle": "Activar para cargar la imagen en resolución original (¡muy grande!). Deshabilitar para reducir el consumo de datos (de red y caché).",
|
||||
"setting_image_viewer_original_title": "Cargar imagen original",
|
||||
@@ -1641,12 +1596,13 @@
|
||||
"setting_image_viewer_title": "Imágenes",
|
||||
"setting_languages_apply": "Aplicar",
|
||||
"setting_languages_subtitle": "Cambia el idioma de la aplicación",
|
||||
"setting_notifications_notify_failures_grace_period": "Notificar fallos de copia de seguridad en segundo plano: {duration}",
|
||||
"setting_notifications_notify_hours": "{count} horas",
|
||||
"setting_languages_title": "Idiomas",
|
||||
"setting_notifications_notify_failures_grace_period": "Notificar fallos de copia de seguridad en segundo plano: {}",
|
||||
"setting_notifications_notify_hours": "{} horas",
|
||||
"setting_notifications_notify_immediately": "inmediatamente",
|
||||
"setting_notifications_notify_minutes": "{count} minutos",
|
||||
"setting_notifications_notify_minutes": "{} minutos",
|
||||
"setting_notifications_notify_never": "nunca",
|
||||
"setting_notifications_notify_seconds": "{count} segundos",
|
||||
"setting_notifications_notify_seconds": "{} segundos",
|
||||
"setting_notifications_single_progress_subtitle": "Información detallada del progreso de subida de cada archivo",
|
||||
"setting_notifications_single_progress_title": "Mostrar progreso detallado de copia de seguridad en segundo plano",
|
||||
"setting_notifications_subtitle": "Ajusta tus preferencias de notificación",
|
||||
@@ -1658,12 +1614,10 @@
|
||||
"settings": "Ajustes",
|
||||
"settings_require_restart": "Por favor, reinicia Immich para aplicar este ajuste",
|
||||
"settings_saved": "Ajustes guardados",
|
||||
"setup_pin_code": "Establecer un PIN",
|
||||
"share": "Compartir",
|
||||
"share_add_photos": "Agregar fotos",
|
||||
"share_assets_selected": "{count} seleccionado(s)",
|
||||
"share_assets_selected": "{} seleccionado(s)",
|
||||
"share_dialog_preparing": "Preparando...",
|
||||
"share_link": "Compartir Enlace",
|
||||
"shared": "Compartido",
|
||||
"shared_album_activities_input_disable": "Los comentarios están deshabilitados",
|
||||
"shared_album_activity_remove_content": "¿Deseas eliminar esta actividad?",
|
||||
@@ -1676,32 +1630,32 @@
|
||||
"shared_by_user": "Compartido por {user}",
|
||||
"shared_by_you": "Compartido por ti",
|
||||
"shared_from_partner": "Fotos de {partner}",
|
||||
"shared_intent_upload_button_progress_text": "{current} / {total} Cargado(s)",
|
||||
"shared_intent_upload_button_progress_text": "{} / {} Cargado(s)",
|
||||
"shared_link_app_bar_title": "Enlaces compartidos",
|
||||
"shared_link_clipboard_copied_massage": "Copiado al portapapeles",
|
||||
"shared_link_clipboard_text": "Enlace: {link}\nContraseña: {password}",
|
||||
"shared_link_clipboard_text": "Enlace: {}\nContraseña: {}",
|
||||
"shared_link_create_error": "Error creando el enlace compartido",
|
||||
"shared_link_edit_description_hint": "Introduce la descripción del enlace",
|
||||
"shared_link_edit_expire_after_option_day": "1 día",
|
||||
"shared_link_edit_expire_after_option_days": "{count} días",
|
||||
"shared_link_edit_expire_after_option_days": "{} días",
|
||||
"shared_link_edit_expire_after_option_hour": "1 hora",
|
||||
"shared_link_edit_expire_after_option_hours": "{count} horas",
|
||||
"shared_link_edit_expire_after_option_hours": "{} horas",
|
||||
"shared_link_edit_expire_after_option_minute": "1 minuto",
|
||||
"shared_link_edit_expire_after_option_minutes": "{count} minutos",
|
||||
"shared_link_edit_expire_after_option_months": "{count} meses",
|
||||
"shared_link_edit_expire_after_option_year": "{count} año",
|
||||
"shared_link_edit_expire_after_option_minutes": "{} minutos",
|
||||
"shared_link_edit_expire_after_option_months": "{} meses",
|
||||
"shared_link_edit_expire_after_option_year": "{} año",
|
||||
"shared_link_edit_password_hint": "Introduce la contraseña del enlace",
|
||||
"shared_link_edit_submit_button": "Actualizar enlace",
|
||||
"shared_link_error_server_url_fetch": "No se puede adquirir la URL del servidor",
|
||||
"shared_link_expires_day": "Caduca en {count} día",
|
||||
"shared_link_expires_days": "Caduca en {count} días",
|
||||
"shared_link_expires_hour": "Caduca en {count} hora",
|
||||
"shared_link_expires_hours": "Caduca en {count} horas",
|
||||
"shared_link_expires_minute": "Caduca en {count} minuto",
|
||||
"shared_link_expires_minutes": "Caduca en {count} minutos",
|
||||
"shared_link_expires_day": "Caduca en {} día",
|
||||
"shared_link_expires_days": "Caduca en {} días",
|
||||
"shared_link_expires_hour": "Caduca en {} hora",
|
||||
"shared_link_expires_hours": "Caduca en {} horas",
|
||||
"shared_link_expires_minute": "Caduca en {} minuto",
|
||||
"shared_link_expires_minutes": "Caduca en {} minutos",
|
||||
"shared_link_expires_never": "Caduca ∞",
|
||||
"shared_link_expires_second": "Caduca en {count} segundo",
|
||||
"shared_link_expires_seconds": "Caduca en {count} segundos",
|
||||
"shared_link_expires_second": "Caduca en {} segundo",
|
||||
"shared_link_expires_seconds": "Caduca en {} segundos",
|
||||
"shared_link_individual_shared": "Compartido individualmente",
|
||||
"shared_link_info_chip_metadata": "EXIF",
|
||||
"shared_link_manage_links": "Administrar enlaces compartidos",
|
||||
@@ -1776,7 +1730,6 @@
|
||||
"stop_sharing_photos_with_user": "Deja de compartir tus fotos con este usuario",
|
||||
"storage": "Espacio de almacenamiento",
|
||||
"storage_label": "Etiqueta de almacenamiento",
|
||||
"storage_quota": "Cuota de Almacenamiento",
|
||||
"storage_usage": "{used} de {available} en uso",
|
||||
"submit": "Enviar",
|
||||
"suggestions": "Sugerencias",
|
||||
@@ -1803,7 +1756,7 @@
|
||||
"theme_selection": "Selección de tema",
|
||||
"theme_selection_description": "Establece el tema automáticamente como \"claro\" u \"oscuro\" según las preferencias del sistema/navegador",
|
||||
"theme_setting_asset_list_storage_indicator_title": "Mostrar indicador de almacenamiento en las miniaturas de los archivos",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Número de elementos por fila ({count})",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Número de elementos por fila ({})",
|
||||
"theme_setting_colorful_interface_subtitle": "Aplicar el color primario a las superficies de fondo.",
|
||||
"theme_setting_colorful_interface_title": "Color de Interfaz",
|
||||
"theme_setting_image_viewer_quality_subtitle": "Ajustar la calidad del visor de detalles de imágenes",
|
||||
@@ -1827,6 +1780,7 @@
|
||||
"to_parent": "Ir a los padres",
|
||||
"to_trash": "Descartar",
|
||||
"toggle_settings": "Alternar ajustes",
|
||||
"toggle_theme": "Alternar tema oscuro",
|
||||
"total": "Total",
|
||||
"total_usage": "Uso total",
|
||||
"trash": "Papelera",
|
||||
@@ -1837,18 +1791,15 @@
|
||||
"trash_no_results_message": "Las fotos y videos que se envíen a la papelera aparecerán aquí.",
|
||||
"trash_page_delete_all": "Eliminar todos",
|
||||
"trash_page_empty_trash_dialog_content": "¿Está seguro que quiere eliminar los elementos? Estos elementos serán eliminados de Immich permanentemente",
|
||||
"trash_page_info": "Los archivos en la papelera serán eliminados automáticamente de forma permanente después de {days} días",
|
||||
"trash_page_info": "Los archivos en la papelera serán eliminados automáticamente de forma permanente después de {} días",
|
||||
"trash_page_no_assets": "No hay elementos en la papelera",
|
||||
"trash_page_restore_all": "Restaurar todos",
|
||||
"trash_page_select_assets_btn": "Seleccionar elementos",
|
||||
"trash_page_title": "Papelera ({count})",
|
||||
"trash_page_title": "Papelera ({})",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Los elementos en la papelera serán eliminados permanentemente tras {days, plural, one {# día} other {# días}}.",
|
||||
"type": "Tipo",
|
||||
"unable_to_change_pin_code": "No se ha podido cambiar el PIN",
|
||||
"unable_to_setup_pin_code": "No se ha podido establecer el PIN",
|
||||
"unarchive": "Desarchivar",
|
||||
"unarchived_count": "{count, plural, one {# No archivado} other {# No archivados}}",
|
||||
"undo": "Deshacer",
|
||||
"unfavorite": "Retirar favorito",
|
||||
"unhide_person": "Mostrar persona",
|
||||
"unknown": "Desconocido",
|
||||
@@ -1867,8 +1818,9 @@
|
||||
"unselect_all_duplicates": "Deseleccionar todos los duplicados",
|
||||
"unstack": "Desapilar",
|
||||
"unstacked_assets_count": "Desapilado(s) {count, plural, one {# elemento} other {# elementos}}",
|
||||
"untracked_files": "Archivos no monitorizados",
|
||||
"untracked_files_decription": "Estos archivos no están siendo monitorizados por la aplicación. Es posible que sean resultado de errores al moverlos, subidas interrumpidas o por un fallo de la aplicación",
|
||||
"up_next": "A continuación",
|
||||
"updated_at": "Actualizado",
|
||||
"updated_password": "Contraseña actualizada",
|
||||
"upload": "Subir",
|
||||
"upload_concurrency": "Subidas simultáneas",
|
||||
@@ -1881,20 +1833,15 @@
|
||||
"upload_status_errors": "Errores",
|
||||
"upload_status_uploaded": "Subido",
|
||||
"upload_success": "Subida realizada correctamente, actualice la página para ver los nuevos recursos de subida.",
|
||||
"upload_to_immich": "Subir a Immich ({count})",
|
||||
"upload_to_immich": "Subir a Immich ({})",
|
||||
"uploading": "Subiendo",
|
||||
"url": "URL",
|
||||
"usage": "Uso",
|
||||
"use_biometric": "Uso biométrico",
|
||||
"use_current_connection": "Usar conexión actual",
|
||||
"use_custom_date_range": "Usa un intervalo de fechas personalizado",
|
||||
"user": "Usuario",
|
||||
"user_has_been_deleted": "Este usuario ha sido eliminado.",
|
||||
"user_id": "ID de usuario",
|
||||
"user_liked": "{user} le gustó {type, select, photo {this photo} video {this video} asset {this asset} other {it}}",
|
||||
"user_pin_code_settings": "PIN",
|
||||
"user_pin_code_settings_description": "Gestione su PIN",
|
||||
"user_privacy": "Privacidad del Usuario",
|
||||
"user_purchase_settings": "Compra",
|
||||
"user_purchase_settings_description": "Gestiona tu compra",
|
||||
"user_role_set": "Establecer {user} como {role}",
|
||||
@@ -1910,6 +1857,11 @@
|
||||
"version": "Versión",
|
||||
"version_announcement_closing": "Tu amigo, Alex",
|
||||
"version_announcement_message": "¡Hola! Hay una nueva versión de Immich disponible. Tómese un tiempo para leer las <link> notas de la versión </link> para asegurarse de que su configuración esté actualizada y evitar errores de configuración, especialmente si utiliza WatchTower o cualquier mecanismo que se encargue de actualizar su instancia de Immich automáticamente.",
|
||||
"version_announcement_overlay_release_notes": "notas de versión",
|
||||
"version_announcement_overlay_text_1": "Hola amigo, hay una nueva versión de",
|
||||
"version_announcement_overlay_text_2": "por favor, tómate tu tiempo para visitar las ",
|
||||
"version_announcement_overlay_text_3": " y asegúrate de que la configuración de docker-compose y .env estén actualizadas para evitar cualquier error de configuración, especialmente si utilizas WatchTower o cualquier mecanismo que actualice automáticamente la aplicación del servidor.",
|
||||
"version_announcement_overlay_title": "Nueva versión del servidor disponible 🎉",
|
||||
"version_history": "Historial de versiones",
|
||||
"version_history_item": "Instalada {version} el {date}",
|
||||
"video": "Vídeo",
|
||||
@@ -1929,7 +1881,6 @@
|
||||
"view_previous_asset": "Mostrar elemento anterior",
|
||||
"view_qr_code": "Ver código QR",
|
||||
"view_stack": "Ver Pila",
|
||||
"view_user": "Ver Usuario",
|
||||
"viewer_remove_from_stack": "Quitar de la pila",
|
||||
"viewer_stack_use_as_main_asset": "Usar como elemento principal",
|
||||
"viewer_unstack": "Desapilar",
|
||||
@@ -1940,7 +1891,6 @@
|
||||
"welcome": "Bienvenido",
|
||||
"welcome_to_immich": "Bienvenido a Immich",
|
||||
"wifi_name": "Nombre Wi-Fi",
|
||||
"wrong_pin_code": "Código PIN incorrecto",
|
||||
"year": "Año",
|
||||
"years_ago": "Hace {years, plural, one {# año} other {# años}}",
|
||||
"yes": "Sí",
|
||||
|
||||
452
i18n/et.json
452
i18n/et.json
File diff suppressed because it is too large
Load Diff
18
i18n/eu.json
18
i18n/eu.json
@@ -1,17 +1 @@
|
||||
{
|
||||
"active": "Martxan",
|
||||
"add": "Gehitu",
|
||||
"add_a_description": "Azalpena gehitu",
|
||||
"add_a_name": "Izena gehitu",
|
||||
"add_a_title": "Izenburua gehitu",
|
||||
"add_more_users": "Erabiltzaile gehiago gehitu",
|
||||
"add_photos": "Argazkiak gehitu",
|
||||
"add_to_album": "Albumera gehitu",
|
||||
"add_to_album_bottom_sheet_already_exists": "Dagoeneko {album} albumenean",
|
||||
"add_to_shared_album": "Gehitu partekatutako albumera",
|
||||
"add_url": "URL-a gehitu",
|
||||
"added_to_favorites": "Faboritoetara gehituta",
|
||||
"admin": {
|
||||
"image_quality": "Kalitatea"
|
||||
}
|
||||
}
|
||||
{}
|
||||
|
||||
227
i18n/fa.json
227
i18n/fa.json
@@ -4,7 +4,6 @@
|
||||
"account_settings": "تنظیمات حساب کاربری",
|
||||
"acknowledge": "متوجه شدم",
|
||||
"action": "عملکرد",
|
||||
"action_common_update": "به روزرسانی",
|
||||
"actions": "عملکرد",
|
||||
"active": "فعال",
|
||||
"activity": "فعالیت",
|
||||
@@ -33,6 +32,7 @@
|
||||
"authentication_settings_disable_all": "آیا مطمئن هستید که میخواهید تمام روشهای ورود را غیرفعال کنید؟ ورود به طور کامل غیرفعال خواهد شد.",
|
||||
"authentication_settings_reenable": "برای فعال سازی مجدد از <link> دستور سرور </link> استفاده کنید.",
|
||||
"background_task_job": "وظایف پسزمینه",
|
||||
"check_all": "بررسی همه",
|
||||
"cleared_jobs": "وظایف پاک شده برای:{job}",
|
||||
"config_set_by_file": "تنظیم فعلی توسط یک فایل پیکربندی انجام شده است",
|
||||
"confirm_delete_library": "آیا مطمئن هستید که میخواهید کتابخانه {library} را حذف کنید؟",
|
||||
@@ -43,12 +43,14 @@
|
||||
"disable_login": "غیرفعال کردن ورود",
|
||||
"duplicate_detection_job_description": "اجرای یادگیری ماشین بر روی فایلها برای شناسایی تصاویر مشابه. این وابسته به جستجوی هوشمند است",
|
||||
"exclusion_pattern_description": "الگوهای استثنا به شما امکان میدهد هنگام اسکن کتابخانه خود فایلها و پوشهها را نادیده بگیرید . این مفید است اگر پوشههایی دارید که فایلهایی را شامل میشوند که نمیخواهید وارد کنید، مانند فایلهای RAW.",
|
||||
"external_library_created_at": "کتابخانه خارجی (ایجاد شده در {date})",
|
||||
"external_library_management": "مدیریت کتابخانه خارجی",
|
||||
"face_detection": "تشخیص چهره",
|
||||
"face_detection_description": "تشخیص چهرهها در فایلها با استفاده از یادگیری ماشین. برای ویدیوها، تنها تصویر بندانگشتی در نظر گرفته میشود. گزینه \"همه\" تمام فایلها را (مجددا) پردازش میکند. گزینه \"گمشده\" فایلها را در صف قرار میدهد که هنوز پردازش نشدهاند. چهرههای تشخیص داده شده پس از اتمام تشخیص چهره، برای تشخیص چهره به صورت صف انتظار قرار میگیرند، آنها را به افراد موجود یا جدید گروهبندی میکند.",
|
||||
"facial_recognition_job_description": "گروهبندی چهرههای تشخیص داده شده به افراد. این مرحله پس از تشخیص چهره انجام میشود. گزینه \"همه\" تمام چهرهها را (مجددا) دسته بندی میکند. گزینه \"گمشده\" چهرهها را در صف قرار میدهد که به هیچ فردی اختصاص داده نشدهاند.",
|
||||
"failed_job_command": "دستور {command} برای کار: {job} ناموفق بود",
|
||||
"force_delete_user_warning": "هشدار: این عمل باعث حذف فوری کاربر و تمام فایلها میشود. این عمل قابل بازگشت نیست و فایلها قابل بازیابی نیستند.",
|
||||
"forcing_refresh_library_files": "بروزرسانی اجباری تمام فایلهای کتابخانه",
|
||||
"image_format_description": "فرمت WebP فایلهای کوچکتری نسبت به JPEG ایجاد میکند، اما زمان کدگذاری آن کندتر است.",
|
||||
"image_prefer_embedded_preview": "ترجیحات پیشنمایش تعبیهشده",
|
||||
"image_prefer_embedded_preview_setting_description": "استفاده از پیشنمایش داخلی در عکسهای RAW به عنوان ورودی پردازش تصویر هنگامی که در دسترس باشد. این میتواند رنگهای دقیقتری را برای برخی تصاویر تولید کند، اما کیفیت پیشنمایش به دوربین بستگی دارد و ممکن است تصویر آثار فشردهسازی بیشتری داشته باشد.",
|
||||
@@ -62,6 +64,8 @@
|
||||
"job_settings": "تنظیمات کار",
|
||||
"job_settings_description": "مدیریت همزمانی کار",
|
||||
"job_status": "وضعیت کار",
|
||||
"jobs_delayed": "",
|
||||
"jobs_failed": "",
|
||||
"library_created": "کتابخانه ایجاد شده: {library}",
|
||||
"library_deleted": "کتابخانه حذف شد",
|
||||
"library_import_path_description": "یک پوشه برای وارد کردن مشخص کنید. این پوشه، به همراه زیرپوشهها، برای یافتن تصاویر و ویدیوها اسکن خواهد شد.",
|
||||
@@ -123,6 +127,7 @@
|
||||
"metadata_extraction_job": "استخراج فرا داده",
|
||||
"metadata_extraction_job_description": "استخراج اطلاعات ابرداده، مانند موقعیت جغرافیایی و کیفیت از هر فایل",
|
||||
"migration_job": "مهاجرت",
|
||||
"migration_job_description": "",
|
||||
"no_paths_added": "هیچ مسیری اضافه نشده",
|
||||
"no_pattern_added": "هیچ الگوی اضافه نشده",
|
||||
"note_apply_storage_label_previous_assets": "توجه: برای اعمال برچسب ذخیره سازی به دارایی هایی که قبلاً بارگذاری شده اند، دستور زیر را اجرا کنید",
|
||||
@@ -161,6 +166,8 @@
|
||||
"oauth_storage_quota_claim_description": "تنظیم خودکار سهمیه ذخیرهسازی کاربر به مقدار درخواست شده.",
|
||||
"oauth_storage_quota_default": "مقدار سهمیه ذخیرهسازی پیشفرض (گیگابایت)",
|
||||
"oauth_storage_quota_default_description": "سهمیه به گیگابایت هنگامی که درخواستی ارائه نشده باشد (برای سهمیه نامحدود عدد 0 را وارد کنید).",
|
||||
"offline_paths": "مسیرهای آفلاین",
|
||||
"offline_paths_description": "این نتایج ممکن است ناشی از حذف دستی فایلهایی باشد که قسمتی از یک کتابخانه خارجی نیستند.",
|
||||
"password_enable_description": "ورود با ایمیل و گذرواژه",
|
||||
"password_settings": "گذرواژه ورود",
|
||||
"password_settings_description": "مدیریت تنظیمات گذرواژه ورود",
|
||||
@@ -169,6 +176,9 @@
|
||||
"refreshing_all_libraries": "بروز رسانی همه کتابخانه ها",
|
||||
"registration": "ثبت نام مدیر",
|
||||
"registration_description": "از آنجایی که شما اولین کاربر در سیستم هستید، به عنوان مدیر تعیین شدهاید و مسئولیت انجام وظایف مدیریتی بر عهده شما خواهد بود و کاربران اضافی توسط شما ایجاد خواهند شد.",
|
||||
"repair_all": "بازسازی همه",
|
||||
"repair_matched_items": "",
|
||||
"repaired_items": "",
|
||||
"require_password_change_on_login": "الزام کاربر به تغییر گذرواژه در اولین ورود",
|
||||
"reset_settings_to_default": "بازنشانی تنظیمات به حالت پیشفرض",
|
||||
"reset_settings_to_recent_saved": "بازنشانی تنظیمات به آخرین تنظیمات ذخیره شده",
|
||||
@@ -185,6 +195,7 @@
|
||||
"smart_search_job_description": "اجرای یادگیری ماشینی بر روی داراییها برای پشتیبانی از جستجوی هوشمند",
|
||||
"storage_template_date_time_description": "زمانبندی ایجاد دارایی برای اطلاعات تاریخ و زمان استفاده میشود",
|
||||
"storage_template_date_time_sample": "نمونه زمان {date}",
|
||||
"storage_template_enable_description": "",
|
||||
"storage_template_hash_verification_enabled": "تأیید هَش فعال شد",
|
||||
"storage_template_hash_verification_enabled_description": "تأیید هَش را فعال میکند؛ این گزینه را غیرفعال نکنید مگر اینکه از عواقب آن مطمئن باشید",
|
||||
"storage_template_migration": "انتقال الگوی ذخیره سازی",
|
||||
@@ -202,6 +213,7 @@
|
||||
"theme_custom_css_settings_description": "برگههای سبک آبشاری (CSS) امکان سفارشیسازی طراحی Immich را فراهم میکنند.",
|
||||
"theme_settings": "تنظیمات پوسته",
|
||||
"theme_settings_description": "مدیریت سفارشیسازی رابط کاربری وب Immich",
|
||||
"these_files_matched_by_checksum": "این فایلها با استفاده از چکسامهایشان مطابقت دارند",
|
||||
"thumbnail_generation_job": "ایجاد تصاویر بندانگشتی",
|
||||
"thumbnail_generation_job_description": "ایجاد تصاویر بندانگشتی بزرگ، کوچک و تار برای هر دارایی، همچنین تصاویر بندانگشتی برای هر فرد",
|
||||
"transcoding_acceleration_api": "API شتابدهنده",
|
||||
@@ -229,6 +241,8 @@
|
||||
"transcoding_hardware_acceleration": "شتاب دهنده سخت افزاری",
|
||||
"transcoding_hardware_acceleration_description": "آزمایشی؛ بسیار سریعتر است، اما در همان بیتریت کیفیت کمتری خواهد داشت",
|
||||
"transcoding_hardware_decoding": "رمزگشایی سخت افزاری",
|
||||
"transcoding_hardware_decoding_setting_description": "",
|
||||
"transcoding_hevc_codec": "کدک HEVC",
|
||||
"transcoding_max_b_frames": "بیشترین B-frames",
|
||||
"transcoding_max_b_frames_description": "مقادیر بالاتر کارایی فشرده سازی را بهبود میبخشند، اما کدگذاری را کند میکنند. ممکن است با شتاب دهی سختافزاری در دستگاههای قدیمی سازگار نباشد. مقدار( 0 ) B-frames را غیرفعال میکند، در حالی که مقدار ( 1 ) این مقدار را به صورت خودکار تنظیم میکند.",
|
||||
"transcoding_max_bitrate": "بیشترین بیت ریت",
|
||||
@@ -251,6 +265,7 @@
|
||||
"transcoding_temporal_aq_description": "این مورد فقط برای NVENC اعمال می شود. افزایش کیفیت در صحنه های با جزئیات بالا و حرکت کم. ممکن است با دستگاه های قدیمی تر سازگار نباشد.",
|
||||
"transcoding_threads": "رشته ها ( موضوعات )",
|
||||
"transcoding_threads_description": "مقادیر بالاتر منجر به رمزگذاری سریع تر می شود، اما فضای کمتری برای پردازش سایر وظایف سرور در حین فعالیت باقی می گذارد. این مقدار نباید بیشتر از تعداد هسته های CPU باشد. اگر روی 0 تنظیم شود، بیشترین استفاده را خواهد داشت.",
|
||||
"transcoding_tone_mapping": "",
|
||||
"transcoding_tone_mapping_description": "تلاش برای حفظ ظاهر ویدیوهای HDR هنگام تبدیل به SDR. هر الگوریتم تعادل های متفاوتی را برای رنگ، جزئیات و روشنایی ایجاد می کند. Hable جزئیات را حفظ می کند، Mobius رنگ را حفظ می کند و Reinhard روشنایی را حفظ می کند.",
|
||||
"transcoding_transcode_policy": "سیاست رمزگذاری",
|
||||
"transcoding_transcode_policy_description": "سیاست برای زمانی که ویدیویی باید مجددا تبدیل (رمزگذاری) شود. ویدیوهای HDR همیشه تبدیل (رمزگذاری) مجدد خواهند شد (مگر رمزگذاری مجدد غیرفعال باشد).",
|
||||
@@ -263,6 +278,8 @@
|
||||
"trash_number_of_days_description": "تعداد روزهایی که دارایی ها(عکسها و فیملها) در زباله دان(سطل بازیافت) قبل از حذف دائمی نگهداری میشوند",
|
||||
"trash_settings": "تنظیمات سطل بازیافت (سطل زباله)",
|
||||
"trash_settings_description": "مدیریت تنظیمات سطل بازیافت (سطل زباله)",
|
||||
"untracked_files": "فایل های ردیابی نشده",
|
||||
"untracked_files_description": "این فایل ها توسط برنامه ردیابی نمی شوند. می توانند نتیجه انتقال ناموفق، بارگذاری متوقف شده یا به دلیل یک باگ باقی مانده باشند",
|
||||
"user_delete_delay": "<b>{user}</b>'s حساب کاربری و دارایی ها(عکس و فیلم) برای حذف دائمی در {delay, plural, one {# روز} other {# روز}} برنامه ریزی خواهند شد.",
|
||||
"user_delete_delay_settings": "تأخیر در حذف",
|
||||
"user_delete_delay_settings_description": "تعداد روزهایی که پس از حذف، حساب کاربری و دارایی های(عکس و فیلم) کاربر به طور دائمی حذف می شوند. کار حذف کاربر در نیمه شب اجرا می شود تا کاربرانی که آماده حذف هستند را بررسی کند. تغییرات در این تنظیم در اجرای بعدی ارزیابی خواهند شد.",
|
||||
@@ -288,12 +305,15 @@
|
||||
"administration": "مدیریت",
|
||||
"advanced": "پیشرفته",
|
||||
"album_added": "آلبوم اضافه شد",
|
||||
"album_added_notification_setting_description": "",
|
||||
"album_cover_updated": "جلد آلبوم بهروزرسانی شد",
|
||||
"album_info_updated": "اطلاعات آلبوم بهروزرسانی شد",
|
||||
"album_name": "نام آلبوم",
|
||||
"album_options": "گزینههای آلبوم",
|
||||
"album_updated": "آلبوم بهروزرسانی شد",
|
||||
"album_updated_setting_description": "",
|
||||
"albums": "آلبومها",
|
||||
"albums_count": "",
|
||||
"all": "همه",
|
||||
"all_people": "همه افراد",
|
||||
"allow_dark_mode": "اجازه دادن به حالت تاریک",
|
||||
@@ -303,13 +323,18 @@
|
||||
"app_settings": "تنظیمات برنامه",
|
||||
"appears_in": "ظاهر میشود در",
|
||||
"archive": "بایگانی",
|
||||
"archive_or_unarchive_photo": "",
|
||||
"archive_size": "اندازه بایگانی",
|
||||
"archive_size_description": "",
|
||||
"asset_offline": "محتوا آفلاین",
|
||||
"assets": "محتواها",
|
||||
"authorized_devices": "دستگاههای مجاز",
|
||||
"back": "بازگشت",
|
||||
"backward": "عقب",
|
||||
"blurred_background": "پسزمینه محو",
|
||||
"bulk_delete_duplicates_confirmation": "",
|
||||
"bulk_keep_duplicates_confirmation": "",
|
||||
"bulk_trash_duplicates_confirmation": "",
|
||||
"camera": "دوربین",
|
||||
"camera_brand": "برند دوربین",
|
||||
"camera_model": "مدل دوربین",
|
||||
@@ -324,7 +349,10 @@
|
||||
"change_name_successfully": "نام با موفقیت تغییر یافت",
|
||||
"change_password": "تغییر رمز عبور",
|
||||
"change_your_password": "رمز عبور خود را تغییر دهید",
|
||||
"changed_visibility_successfully": "",
|
||||
"check_all": "انتخاب همه",
|
||||
"check_logs": "بررسی لاگها",
|
||||
"choose_matching_people_to_merge": "",
|
||||
"city": "شهر",
|
||||
"clear": "پاک کردن",
|
||||
"clear_all": "پاک کردن همه",
|
||||
@@ -337,6 +365,7 @@
|
||||
"comments_are_disabled": "نظرات غیرفعال هستند",
|
||||
"confirm": "تأیید",
|
||||
"confirm_admin_password": "تأیید رمز عبور مدیر",
|
||||
"confirm_delete_shared_link": "",
|
||||
"confirm_password": "تأیید رمز عبور",
|
||||
"contain": "شامل",
|
||||
"context": "زمینه",
|
||||
@@ -363,6 +392,8 @@
|
||||
"create_user": "ایجاد کاربر",
|
||||
"created": "ایجاد شد",
|
||||
"current_device": "دستگاه فعلی",
|
||||
"custom_locale": "",
|
||||
"custom_locale_description": "",
|
||||
"dark": "تاریک",
|
||||
"date_after": "تاریخ پس از",
|
||||
"date_and_time": "تاریخ و زمان",
|
||||
@@ -370,8 +401,12 @@
|
||||
"date_range": "بازه زمانی",
|
||||
"day": "روز",
|
||||
"deduplicate_all": "حذف تکراریها به صورت کامل",
|
||||
"default_locale": "",
|
||||
"default_locale_description": "",
|
||||
"delete": "حذف",
|
||||
"delete_album": "حذف آلبوم",
|
||||
"delete_api_key_prompt": "",
|
||||
"delete_duplicates_confirmation": "",
|
||||
"delete_key": "حذف کلید",
|
||||
"delete_library": "حذف کتابخانه",
|
||||
"delete_link": "حذف لینک",
|
||||
@@ -389,12 +424,14 @@
|
||||
"display_options": "گزینههای نمایش",
|
||||
"display_order": "ترتیب نمایش",
|
||||
"display_original_photos": "نمایش عکسهای اصلی",
|
||||
"display_original_photos_setting_description": "",
|
||||
"done": "انجام شد",
|
||||
"download": "دانلود",
|
||||
"download_settings": "تنظیمات دانلود",
|
||||
"download_settings_description": "مدیریت تنظیمات مرتبط با دانلود محتوا",
|
||||
"downloading": "در حال دانلود",
|
||||
"duplicates": "تکراریها",
|
||||
"duplicates_description": "",
|
||||
"duration": "مدت زمان",
|
||||
"edit_album": "ویرایش آلبوم",
|
||||
"edit_avatar": "ویرایش آواتار",
|
||||
@@ -402,6 +439,8 @@
|
||||
"edit_date_and_time": "ویرایش تاریخ و زمان",
|
||||
"edit_exclusion_pattern": "ویرایش الگوی استثناء",
|
||||
"edit_faces": "ویرایش چهرهها",
|
||||
"edit_import_path": "",
|
||||
"edit_import_paths": "",
|
||||
"edit_key": "ویرایش کلید",
|
||||
"edit_link": "ویرایش لینک",
|
||||
"edit_location": "ویرایش مکان",
|
||||
@@ -416,6 +455,73 @@
|
||||
"end_date": "تاریخ پایان",
|
||||
"error": "خطا",
|
||||
"error_loading_image": "خطا در بارگذاری تصویر",
|
||||
"errors": {
|
||||
"exclusion_pattern_already_exists": "",
|
||||
"import_path_already_exists": "",
|
||||
"paths_validation_failed": "",
|
||||
"quota_higher_than_disk_size": "",
|
||||
"repair_unable_to_check_items": "",
|
||||
"unable_to_add_album_users": "",
|
||||
"unable_to_add_comment": "",
|
||||
"unable_to_add_exclusion_pattern": "",
|
||||
"unable_to_add_import_path": "",
|
||||
"unable_to_add_partners": "",
|
||||
"unable_to_change_album_user_role": "",
|
||||
"unable_to_change_date": "",
|
||||
"unable_to_change_location": "",
|
||||
"unable_to_change_password": "",
|
||||
"unable_to_copy_to_clipboard": "",
|
||||
"unable_to_create_api_key": "",
|
||||
"unable_to_create_library": "",
|
||||
"unable_to_create_user": "",
|
||||
"unable_to_delete_album": "",
|
||||
"unable_to_delete_asset": "",
|
||||
"unable_to_delete_exclusion_pattern": "",
|
||||
"unable_to_delete_import_path": "",
|
||||
"unable_to_delete_shared_link": "",
|
||||
"unable_to_delete_user": "",
|
||||
"unable_to_edit_exclusion_pattern": "",
|
||||
"unable_to_edit_import_path": "",
|
||||
"unable_to_empty_trash": "",
|
||||
"unable_to_enter_fullscreen": "",
|
||||
"unable_to_exit_fullscreen": "",
|
||||
"unable_to_hide_person": "",
|
||||
"unable_to_link_oauth_account": "",
|
||||
"unable_to_load_album": "",
|
||||
"unable_to_load_asset_activity": "",
|
||||
"unable_to_load_items": "",
|
||||
"unable_to_load_liked_status": "",
|
||||
"unable_to_play_video": "",
|
||||
"unable_to_refresh_user": "",
|
||||
"unable_to_remove_album_users": "",
|
||||
"unable_to_remove_api_key": "",
|
||||
"unable_to_remove_deleted_assets": "",
|
||||
"unable_to_remove_library": "",
|
||||
"unable_to_remove_partner": "",
|
||||
"unable_to_remove_reaction": "",
|
||||
"unable_to_repair_items": "",
|
||||
"unable_to_reset_password": "",
|
||||
"unable_to_resolve_duplicate": "",
|
||||
"unable_to_restore_assets": "",
|
||||
"unable_to_restore_trash": "",
|
||||
"unable_to_restore_user": "",
|
||||
"unable_to_save_album": "",
|
||||
"unable_to_save_api_key": "",
|
||||
"unable_to_save_name": "",
|
||||
"unable_to_save_profile": "",
|
||||
"unable_to_save_settings": "",
|
||||
"unable_to_scan_libraries": "",
|
||||
"unable_to_scan_library": "",
|
||||
"unable_to_set_profile_picture": "",
|
||||
"unable_to_submit_job": "",
|
||||
"unable_to_trash_asset": "",
|
||||
"unable_to_unlink_account": "",
|
||||
"unable_to_update_library": "",
|
||||
"unable_to_update_location": "",
|
||||
"unable_to_update_settings": "",
|
||||
"unable_to_update_timeline_display_status": "",
|
||||
"unable_to_update_user": ""
|
||||
},
|
||||
"exit_slideshow": "خروج از نمایش اسلاید",
|
||||
"expand_all": "باز کردن همه",
|
||||
"expire_after": "منقضی شدن بعد از",
|
||||
@@ -427,12 +533,15 @@
|
||||
"external": "خارجی",
|
||||
"external_libraries": "کتابخانههای خارجی",
|
||||
"favorite": "علاقهمندی",
|
||||
"favorite_or_unfavorite_photo": "",
|
||||
"favorites": "علاقهمندیها",
|
||||
"feature_photo_updated": "",
|
||||
"file_name": "نام فایل",
|
||||
"file_name_or_extension": "نام فایل یا پسوند",
|
||||
"filename": "نام فایل",
|
||||
"filetype": "نوع فایل",
|
||||
"filter_people": "فیلتر افراد",
|
||||
"find_them_fast": "",
|
||||
"fix_incorrect_match": "رفع تطابق نادرست",
|
||||
"forward": "جلو",
|
||||
"general": "عمومی",
|
||||
@@ -452,11 +561,19 @@
|
||||
"immich_web_interface": "رابط وب Immich",
|
||||
"import_from_json": "وارد کردن از JSON",
|
||||
"import_path": "مسیر وارد کردن",
|
||||
"in_albums": "",
|
||||
"in_archive": "در بایگانی",
|
||||
"include_archived": "شامل بایگانی شدهها",
|
||||
"include_shared_albums": "شامل آلبومهای اشتراکی",
|
||||
"include_shared_partner_assets": "",
|
||||
"individual_share": "اشتراک فردی",
|
||||
"info": "اطلاعات",
|
||||
"interval": {
|
||||
"day_at_onepm": "",
|
||||
"hours": "",
|
||||
"night_at_midnight": "",
|
||||
"night_at_twoam": ""
|
||||
},
|
||||
"invite_people": "دعوت افراد",
|
||||
"invite_to_album": "دعوت به آلبوم",
|
||||
"jobs": "وظایف",
|
||||
@@ -483,45 +600,28 @@
|
||||
"login_has_been_disabled": "ورود غیرفعال شده است.",
|
||||
"look": "نگاه کردن",
|
||||
"loop_videos": "پخش مداوم ویدئوها",
|
||||
"main_branch_warning": "شما در حال استفاده از نسخه توسعهدهندگان هستید که آزمایشی و ناپایدار است. اکیداً توصیه میکنیم از نسخه رسمی استفاده کنید!",
|
||||
"main_menu": "منوی اصلی",
|
||||
"loop_videos_description": "",
|
||||
"make": "ساختن",
|
||||
"manage_shared_links": "مدیریت لینکهای اشتراکی",
|
||||
"manage_sharing_with_partners": "مدیریت محتوای مشترک با همسر",
|
||||
"manage_sharing_with_partners": "",
|
||||
"manage_the_app_settings": "مدیریت تنظیمات برنامه",
|
||||
"manage_your_account": "مدیریت حساب کاربری",
|
||||
"manage_your_api_keys": "مدیریت کلیدهای API",
|
||||
"manage_your_account": "مدیریت حساب کاربری شما",
|
||||
"manage_your_api_keys": "مدیریت کلیدهای API شما",
|
||||
"manage_your_devices": "مدیریت دستگاههای متصل",
|
||||
"manage_your_oauth_connection": "مدیریت اتصال OAuth",
|
||||
"manage_your_oauth_connection": "مدیریت اتصال OAuth شما",
|
||||
"map": "نقشه",
|
||||
"map_assets_in_bound": "{count} عکس",
|
||||
"map_assets_in_bounds": "{count} عکس ها",
|
||||
"map_cannot_get_user_location": "موقعیت مکانی در دسترس نیست",
|
||||
"map_location_dialog_yes": "بله",
|
||||
"map_location_picker_page_use_location": "استفاده از این موقعیت مکانی",
|
||||
"map_location_service_disabled_content": "برای نمایش داراییها بر اساس موقعیت مکانی، نیاز به فعالسازی سرویس مکانیابی دارید. میخواهید همین حالا فعال شود؟",
|
||||
"map_location_service_disabled_title": "سرویس مکانیابی غیرفعال است",
|
||||
"map_marker_for_images": "نشانگر روی نقشه برای عکسهای گرفتهشده در {city}, {country}",
|
||||
"map_marker_with_image": "علامتگذاری نقشه با عکس",
|
||||
"map_no_assets_in_bounds": "هیچ عکسی در این محدوده نیست",
|
||||
"map_no_location_permission_content": "برای نمایش عکسهای اطرافتان، برنامه نیاز به دسترسی به موقعیت مکانی دارد. اجازه دسترسی میدهید؟",
|
||||
"map_no_location_permission_title": "دسترسی به موقعیت شما فعال نیست",
|
||||
"map_marker_with_image": "",
|
||||
"map_settings": "تنظیمات نقشه",
|
||||
"map_settings_dark_mode": "حالت تاریک",
|
||||
"map_settings_date_range_option_day": "۲۴ ساعت گذشته",
|
||||
"map_settings_date_range_option_days": "{days} روز گذشته",
|
||||
"map_settings_date_range_option_year": "پارسال",
|
||||
"map_settings_date_range_option_years": "{years} سال گذشته",
|
||||
"map_settings_dialog_title": "تنظیمات نقشه",
|
||||
"map_settings_include_show_archived": "شامل موارد بایگانی شده",
|
||||
"map_settings_include_show_partners": "شامل همسر",
|
||||
"matches": "تطابقها",
|
||||
"media_type": "نوع رسانه",
|
||||
"memories": "خاطرات",
|
||||
"memories_setting_description": "",
|
||||
"memory": "خاطره",
|
||||
"menu": "منو",
|
||||
"merge": "ادغام",
|
||||
"merge_people": "ادغام افراد",
|
||||
"merge_people_limit": "",
|
||||
"merge_people_prompt": "",
|
||||
"merge_people_successfully": "ادغام افراد با موفقیت انجام شد",
|
||||
"minimize": "کوچک کردن",
|
||||
"minute": "دقیقه",
|
||||
@@ -542,17 +642,28 @@
|
||||
"next": "بعدی",
|
||||
"next_memory": "خاطره بعدی",
|
||||
"no": "خیر",
|
||||
"no_albums_message": "",
|
||||
"no_archived_assets_message": "",
|
||||
"no_assets_message": "",
|
||||
"no_duplicates_found": "هیچ تکراری یافت نشد.",
|
||||
"no_exif_info_available": "اطلاعات EXIF موجود نیست",
|
||||
"no_explore_results_message": "",
|
||||
"no_favorites_message": "",
|
||||
"no_libraries_message": "",
|
||||
"no_name": "بدون نام",
|
||||
"no_places": "مکانی یافت نشد",
|
||||
"no_results": "نتیجهای یافت نشد",
|
||||
"no_shared_albums_message": "",
|
||||
"not_in_any_album": "در هیچ آلبومی نیست",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "",
|
||||
"notes": "یادداشتها",
|
||||
"notification_toggle_setting_description": "اعلانهای ایمیلی را فعال کنید",
|
||||
"notifications": "اعلانها",
|
||||
"notifications_setting_description": "مدیریت اعلانها",
|
||||
"oauth": "OAuth",
|
||||
"offline": "آفلاین",
|
||||
"offline_paths": "مسیرهای آفلاین",
|
||||
"offline_paths_description": "",
|
||||
"ok": "تأیید",
|
||||
"oldest_first": "قدیمیترین ابتدا",
|
||||
"online": "آنلاین",
|
||||
@@ -567,6 +678,7 @@
|
||||
"owner": "مالک",
|
||||
"partner": "شریک",
|
||||
"partner_can_access": "{partner} میتواند دسترسی داشته باشد",
|
||||
"partner_can_access_assets": "",
|
||||
"partner_can_access_location": "مکانهایی که عکسهای شما گرفته شدهاند",
|
||||
"partner_sharing": "اشتراکگذاری با شریک",
|
||||
"partners": "شرکا",
|
||||
@@ -574,6 +686,11 @@
|
||||
"password_does_not_match": "رمز عبور مطابقت ندارد",
|
||||
"password_required": "رمز عبور مورد نیاز است",
|
||||
"password_reset_success": "بازنشانی رمز عبور موفقیتآمیز بود",
|
||||
"past_durations": {
|
||||
"days": "",
|
||||
"hours": "",
|
||||
"years": ""
|
||||
},
|
||||
"path": "مسیر",
|
||||
"pattern": "الگو",
|
||||
"pause": "توقف",
|
||||
@@ -581,12 +698,14 @@
|
||||
"paused": "متوقف شده",
|
||||
"pending": "در انتظار",
|
||||
"people": "افراد",
|
||||
"people_sidebar_description": "",
|
||||
"permanent_deletion_warning": "هشدار حذف دائمی",
|
||||
"permanent_deletion_warning_setting_description": "نمایش هشدار هنگام حذف دائمی محتواها",
|
||||
"permanently_delete": "حذف دائمی",
|
||||
"permanently_deleted_asset": "محتوای حذف شده دائمی",
|
||||
"person": "فرد",
|
||||
"photos": "عکسها",
|
||||
"photos_count": "",
|
||||
"photos_from_previous_years": "عکسهای سالهای گذشته",
|
||||
"pick_a_location": "یک مکان انتخاب کنید",
|
||||
"place": "مکان",
|
||||
@@ -610,27 +729,38 @@
|
||||
"recent_searches": "جستجوهای اخیر",
|
||||
"refresh": "تازه سازی",
|
||||
"refreshed": "تازه سازی شد",
|
||||
"refreshes_every_file": "",
|
||||
"remove": "حذف",
|
||||
"remove_deleted_assets": "حذف محتواهای حذفشده",
|
||||
"remove_from_album": "حذف از آلبوم",
|
||||
"remove_from_favorites": "حذف از علاقهمندیها",
|
||||
"remove_from_shared_link": "",
|
||||
"removed_api_key": "",
|
||||
"rename": "تغییر نام",
|
||||
"repair": "تعمیر",
|
||||
"repair_no_results_message": "",
|
||||
"replace_with_upload": "جایگزینی با آپلود",
|
||||
"require_password": "",
|
||||
"require_user_to_change_password_on_first_login": "",
|
||||
"reset": "بازنشانی",
|
||||
"reset_password": "بازنشانی رمز عبور",
|
||||
"reset_people_visibility": "",
|
||||
"resolved_all_duplicates": "",
|
||||
"restore": "بازیابی",
|
||||
"restore_all": "بازیابی همه",
|
||||
"restore_user": "بازیابی کاربر",
|
||||
"resume": "ادامه",
|
||||
"retry_upload": "",
|
||||
"review_duplicates": "بررسی تکراریها",
|
||||
"role": "نقش",
|
||||
"save": "ذخیره",
|
||||
"saved_api_key": "",
|
||||
"saved_profile": "پروفایل ذخیره شد",
|
||||
"saved_settings": "تنظیمات ذخیره شد",
|
||||
"say_something": "چیزی بگویید",
|
||||
"scan_all_libraries": "اسکن همه کتابخانهها",
|
||||
"scan_settings": "تنظیمات اسکن",
|
||||
"scanning_for_album": "",
|
||||
"search": "جستجو",
|
||||
"search_albums": "جستجوی آلبومها",
|
||||
"search_by_context": "جستجو براساس زمینه",
|
||||
@@ -644,6 +774,8 @@
|
||||
"search_state": "جستجوی ایالت...",
|
||||
"search_timezone": "جستجوی منطقه زمانی...",
|
||||
"search_type": "نوع جستجو",
|
||||
"search_your_photos": "",
|
||||
"searching_locales": "",
|
||||
"second": "ثانیه",
|
||||
"select_album_cover": "انتخاب جلد آلبوم",
|
||||
"select_all": "انتخاب همه",
|
||||
@@ -654,28 +786,41 @@
|
||||
"select_library_owner": "انتخاب مالک کتابخانه",
|
||||
"select_new_face": "انتخاب چهره جدید",
|
||||
"select_photos": "انتخاب عکسها",
|
||||
"select_trash_all": "",
|
||||
"selected": "انتخاب شده",
|
||||
"send_message": "ارسال پیام",
|
||||
"send_welcome_email": "ارسال ایمیل خوشآمدگویی",
|
||||
"server_stats": "آمار سرور",
|
||||
"set": "تنظیم",
|
||||
"set_as_album_cover": "",
|
||||
"set_as_profile_picture": "",
|
||||
"set_date_of_birth": "تنظیم تاریخ تولد",
|
||||
"set_profile_picture": "تنظیم تصویر پروفایل",
|
||||
"set_slideshow_to_fullscreen": "",
|
||||
"settings": "تنظیمات",
|
||||
"settings_saved": "تنظیمات ذخیره شد",
|
||||
"share": "اشتراکگذاری",
|
||||
"shared": "مشترک",
|
||||
"shared_by": "مشترک توسط",
|
||||
"shared_by_you": "",
|
||||
"shared_from_partner": "عکسها از {partner}",
|
||||
"shared_links": "لینکهای اشتراکی",
|
||||
"shared_photos_and_videos_count": "",
|
||||
"shared_with_partner": "مشترک با {partner}",
|
||||
"sharing": "اشتراکگذاری",
|
||||
"sharing_sidebar_description": "",
|
||||
"show_album_options": "نمایش گزینههای آلبوم",
|
||||
"show_and_hide_people": "",
|
||||
"show_file_location": "نمایش مسیر فایل",
|
||||
"show_gallery": "نمایش گالری",
|
||||
"show_hidden_people": "نمایش افراد پنهان",
|
||||
"show_in_timeline": "",
|
||||
"show_in_timeline_setting_description": "",
|
||||
"show_keyboard_shortcuts": "",
|
||||
"show_metadata": "نمایش اطلاعات متا",
|
||||
"show_or_hide_info": "",
|
||||
"show_password": "نمایش رمز عبور",
|
||||
"show_person_options": "",
|
||||
"show_progress_bar": "نمایش نوار پیشرفت",
|
||||
"show_search_options": "نمایش گزینههای جستجو",
|
||||
"shuffle": "تصادفی",
|
||||
@@ -685,38 +830,60 @@
|
||||
"skip_to_content": "رفتن به محتوا",
|
||||
"slideshow": "نمایش اسلاید",
|
||||
"slideshow_settings": "تنظیمات نمایش اسلاید",
|
||||
"sort_albums_by": "",
|
||||
"stack": "پشته",
|
||||
"stack_selected_photos": "",
|
||||
"stacktrace": "",
|
||||
"start": "شروع",
|
||||
"start_date": "تاریخ شروع",
|
||||
"state": "ایالت",
|
||||
"status": "وضعیت",
|
||||
"stop_motion_photo": "توقف عکس متحرک",
|
||||
"stop_photo_sharing": "",
|
||||
"stop_photo_sharing_description": "",
|
||||
"stop_sharing_photos_with_user": "",
|
||||
"storage": "فضای ذخیرهسازی",
|
||||
"storage_label": "برچسب فضای ذخیرهسازی",
|
||||
"storage_usage": "",
|
||||
"submit": "ارسال",
|
||||
"suggestions": "پیشنهادات",
|
||||
"sunrise_on_the_beach": "",
|
||||
"swap_merge_direction": "تغییر جهت ادغام",
|
||||
"sync": "همگامسازی",
|
||||
"template": "الگو",
|
||||
"theme": "تم",
|
||||
"theme_selection": "انتخاب تم",
|
||||
"theme_selection_description": "",
|
||||
"time_based_memories": "",
|
||||
"timezone": "منطقه زمانی",
|
||||
"to_archive": "بایگانی",
|
||||
"to_favorite": "به علاقهمندیها",
|
||||
"to_trash": "",
|
||||
"toggle_settings": "تغییر تنظیمات",
|
||||
"toggle_theme": "تغییر تم تاریک",
|
||||
"total_usage": "استفاده کلی",
|
||||
"trash": "سطل زباله",
|
||||
"trash_all": "",
|
||||
"trash_count": "",
|
||||
"trash_no_results_message": "",
|
||||
"trashed_items_will_be_permanently_deleted_after": "",
|
||||
"type": "نوع",
|
||||
"unarchive": "",
|
||||
"unfavorite": "حذف از علاقهمندیها",
|
||||
"unhide_person": "آشکار کردن فرد",
|
||||
"unknown": "ناشناخته",
|
||||
"unknown_year": "سال نامشخص",
|
||||
"unlimited": "نامحدود",
|
||||
"unlink_oauth": "لغو اتصال OAuth",
|
||||
"unlinked_oauth_account": "",
|
||||
"unnamed_album": "آلبوم بدون نام",
|
||||
"unnamed_share": "اشتراک بدون نام",
|
||||
"unselect_all": "لغو انتخاب همه",
|
||||
"unstack": "",
|
||||
"untracked_files": "",
|
||||
"untracked_files_decription": "",
|
||||
"up_next": "مورد بعدی",
|
||||
"updated_password": "",
|
||||
"upload": "آپلود",
|
||||
"upload_concurrency": "تعداد آپلود همزمان",
|
||||
"url": "آدرس",
|
||||
@@ -730,8 +897,12 @@
|
||||
"validate": "اعتبارسنجی",
|
||||
"variables": "متغیرها",
|
||||
"version": "نسخه",
|
||||
"version_announcement_message": "",
|
||||
"video": "ویدیو",
|
||||
"video_hover_setting": "",
|
||||
"video_hover_setting_description": "",
|
||||
"videos": "ویدیوها",
|
||||
"videos_count": "",
|
||||
"view": "مشاهده",
|
||||
"view_all": "مشاهده همه",
|
||||
"view_all_users": "مشاهده همه کاربران",
|
||||
@@ -741,7 +912,9 @@
|
||||
"waiting": "در انتظار",
|
||||
"week": "هفته",
|
||||
"welcome": "خوش آمدید",
|
||||
"welcome_to_immich": "",
|
||||
"year": "سال",
|
||||
"yes": "بله",
|
||||
"you_dont_have_any_shared_links": "",
|
||||
"zoom_image": "بزرگنمایی تصویر"
|
||||
}
|
||||
|
||||
294
i18n/fi.json
294
i18n/fi.json
@@ -2,13 +2,13 @@
|
||||
"about": "Tietoja",
|
||||
"account": "Tili",
|
||||
"account_settings": "Tilin asetukset",
|
||||
"acknowledge": "Hyväksy",
|
||||
"acknowledge": "Tiedostan",
|
||||
"action": "Toiminta",
|
||||
"action_common_update": "Päivitä",
|
||||
"actions": "Toimintoja",
|
||||
"active": "Aktiivinen",
|
||||
"activity": "Tapahtumat",
|
||||
"activity_changed": "Toiminto {enabled, select, true {otettu käyttöön} other {poistettu käytöstä}}",
|
||||
"activity": "Aktiviteetti",
|
||||
"activity_changed": "Aktiviteetti {enabled, select, true {otettu käyttöön} other {poistettu käytöstä}}",
|
||||
"add": "Lisää",
|
||||
"add_a_description": "Lisää kuvaus",
|
||||
"add_a_location": "Lisää sijainti",
|
||||
@@ -43,7 +43,9 @@
|
||||
"backup_database_enable_description": "Ota tietokantavedokset käyttöön",
|
||||
"backup_keep_last_amount": "Säilytettävien tietokantavedosten määrä",
|
||||
"backup_settings": "Tietokantavedosten asetukset",
|
||||
"backup_settings_description": "Hallitse tietokannan vedosasetuksia.",
|
||||
"backup_settings_description": "Hallitse tietokannan vedosasetuksia. Huomautus: Näitä tehtäviä ei valvota, eikä sinulle ilmoiteta epäonnistumisista.",
|
||||
"check_all": "Tarkista kaikki",
|
||||
"cleanup": "Siivous",
|
||||
"cleared_jobs": "Työn {job} tehtävät tyhjennetty",
|
||||
"config_set_by_file": "Asetukset on tällä hetkellä määritelty tiedostosta",
|
||||
"confirm_delete_library": "Haluatko varmasti poistaa kirjaston {library}?",
|
||||
@@ -51,7 +53,6 @@
|
||||
"confirm_email_below": "Kirjota \"{email}\" vahvistaaksesi",
|
||||
"confirm_reprocess_all_faces": "Haluatko varmasti käsitellä uudelleen kaikki kasvot? Tämä poistaa myös nimetyt henkilöt.",
|
||||
"confirm_user_password_reset": "Haluatko varmasti nollata käyttäjän {user} salasanan?",
|
||||
"confirm_user_pin_code_reset": "Haluatko varmasti nollata käyttäjän {user} PIN-koodin?",
|
||||
"create_job": "Luo tehtävä",
|
||||
"cron_expression": "Cron-lauseke",
|
||||
"cron_expression_description": "Aseta skannausväli käyttämällä cron-formaattia. Lisätietoja linkistä. <link>Crontab Guru</link>",
|
||||
@@ -59,12 +60,14 @@
|
||||
"disable_login": "Poista kirjautuminen käytöstä",
|
||||
"duplicate_detection_job_description": "Tunnista samankaltaiset kuvat käyttäen koneoppimista. Tukeutuu Smart Search:iin",
|
||||
"exclusion_pattern_description": "Poissulkemismallit mahdollistavat tiettyjen tiedostojen ja kansioiden jättämisen pois kirjastoasi skannatessa. Tästä on hyötyä jos kansiot sisältävät tiedostoja mitä et halua tuoda, kuten RAW-tiedostot.",
|
||||
"external_library_created_at": "Ulkoinen kirjasto (luotu {date})",
|
||||
"external_library_management": "Ulkoisen kirjaston hallinta",
|
||||
"face_detection": "Kasvojen havaitseminen",
|
||||
"face_detection_description": "Tunnista sisällön kasvoja käyttäen koneoppimista. Videoiden osalta vain pikkukuva tunnistetaan. \"Päivitä\" (uudelleen)prosessoi koko sisällön.\"Nollaa\" lisäksi puhdistaa kaiken kasvo-datan. \"Puuttuvat\" prosessoi sisällön, jota ei vielä ole käyty läpi. Havaitut kasvot ryhmitellään jo tunnistettujen kanssa, tai lisätään uusina henkilöinä.",
|
||||
"facial_recognition_job_description": "Ryhmitä havaitut kasvot henkilöihin. Tämä vaihe suoritetaan, kun kasvot on ensin havaittu. \"Nollaus\" (uudelleen-)ryhmittelee kaikki kasvot. \"Puuttuvat\" vain ne, joille ei ole määritetty henkilöä.",
|
||||
"failed_job_command": "Komento {command} epäonnistui työlle {job}",
|
||||
"force_delete_user_warning": "VAROITUS: Tämä poistaa käyttäjän ja kaikki mediat. Tätä ei voi perua, eikä tiedostoja voi palauttaa.",
|
||||
"forcing_refresh_library_files": "Pakotetaan virkistämään kaikkien kirjastojen tiedostot",
|
||||
"image_format": "Tiedostomuoto",
|
||||
"image_format_description": "WebP tuottaa pienempiä tiedostoja kuin JPEG, mutta on hitaampi pakata.",
|
||||
"image_fullsize_description": "Täysikokoinen kuva ilman metatietoja, käytetään zoomattaessa",
|
||||
@@ -193,7 +196,7 @@
|
||||
"oauth_enable_description": "Kirjaudu käyttäen OAuthia",
|
||||
"oauth_mobile_redirect_uri": "Mobiilin uudellenohjaus-URI",
|
||||
"oauth_mobile_redirect_uri_override": "Ohita mobiilin uudelleenohjaus-URI",
|
||||
"oauth_mobile_redirect_uri_override_description": "Ota käyttöön kun OAuth tarjoaja ei salli mobiili URI:a, kuten ''{callback}''",
|
||||
"oauth_mobile_redirect_uri_override_description": "Ota käyttöön kun OAuth tarjoaja ei salli mobiili URI:a, kuten '{callback}'",
|
||||
"oauth_settings": "OAuth",
|
||||
"oauth_settings_description": "Hallitse OAuth-kirjautumisen asetuksia",
|
||||
"oauth_settings_more_details": "Saadaksesi lisätietoja tästä toiminnosta, katso <link>dokumentaatio</link>.",
|
||||
@@ -205,6 +208,8 @@
|
||||
"oauth_storage_quota_default_description": "Käytettävä kiintiön määrä gigatavuissa, käytetään kun väittämää ei ole annettu (0 rajoittamaton kiintiö).",
|
||||
"oauth_timeout": "Pyynnön aikakatkaisu",
|
||||
"oauth_timeout_description": "Pyyntöjen aikakatkaisu millisekunteina",
|
||||
"offline_paths": "Offline-tilan polut",
|
||||
"offline_paths_description": "Nämä tulokset voivat johtua tiedostoista, jotka on käsin poistettu, eivätkä ole ulkoisessa kirjastossa.",
|
||||
"password_enable_description": "Kirjaudu käyttäen sähköpostiosoitetta ja salasanaa",
|
||||
"password_settings": "Kirjaudu salasanalla",
|
||||
"password_settings_description": "Hallitse salasanakirjautumisen asetuksia",
|
||||
@@ -214,6 +219,9 @@
|
||||
"refreshing_all_libraries": "Virkistetään kaikki kirjastot",
|
||||
"registration": "Pääkäyttäjän rekisteröinti",
|
||||
"registration_description": "Pääkäyttäjänä olet vastuussa järjestelmän hallinnallisista tehtävistä ja uusien käyttäjien luomisesta.",
|
||||
"repair_all": "Korjaa kaikki",
|
||||
"repair_matched_items": "Löytyi {count, plural, one {# osuma} other {# osumaa}}",
|
||||
"repaired_items": "Korjattiin {count, plural, one {# kohta} other {# kohtaa}}",
|
||||
"require_password_change_on_login": "Vaadi käyttäjää vaihtamaan salasana ensimmäisellä kirjautumiskerralla",
|
||||
"reset_settings_to_default": "Nollaa asetukset oletuksille",
|
||||
"reset_settings_to_recent_saved": "Palauta aiemmin tallennetut asetukset",
|
||||
@@ -254,14 +262,16 @@
|
||||
"template_email_invite_album": "Albumikutsun malli",
|
||||
"template_email_preview": "Esikatselu",
|
||||
"template_email_settings": "Sähköpostimalli",
|
||||
"template_email_settings_description": "Hallitse yksilöllisten sähköposti-ilmoitusten malleja",
|
||||
"template_email_update_album": "Albumipäivityksen malli",
|
||||
"template_email_welcome": "Tervetulosähköpostin malli",
|
||||
"template_settings": "Ilmoitusmallit",
|
||||
"template_settings_description": "Hallitse yksilöllisten ilmoitusten malleja",
|
||||
"template_settings_description": "Hallitse yksilöllisten ilmoitusten malleja.",
|
||||
"theme_custom_css_settings": "Mukautettu CSS",
|
||||
"theme_custom_css_settings_description": "Mukauta Immichin ulkoasua CSS:llä.",
|
||||
"theme_settings": "Teeman asetukset",
|
||||
"theme_settings_description": "Kustomoi Immichin web-käyttöliittymää",
|
||||
"these_files_matched_by_checksum": "Näillä tiedostoilla on yhteinen tarkistussumma",
|
||||
"thumbnail_generation_job": "Luo pikkukuvat",
|
||||
"thumbnail_generation_job_description": "Generoi isot, pienet sekä sumeat pikkukuvat jokaisesta aineistosta, kuten myös henkilöistä",
|
||||
"transcoding_acceleration_api": "Kiihdytysrajapinta",
|
||||
@@ -289,9 +299,10 @@
|
||||
"transcoding_encoding_options": "Enkoodausasetukset",
|
||||
"transcoding_encoding_options_description": "Aseta koodekit, tarkkuus, laatu ja muut asetukset enkoodatuille videoille",
|
||||
"transcoding_hardware_acceleration": "Laitteistokiihdytys",
|
||||
"transcoding_hardware_acceleration_description": "Kokeellinen: Mahdollistaa nopeamman transkoodauksen, mutta saattaa alentaa laatua samalla tiedonsiirtonopeudella",
|
||||
"transcoding_hardware_acceleration_description": "Kokeellinen. Paljon nopeampi, mutta huonompaa laatua samalla bittinopeudella",
|
||||
"transcoding_hardware_decoding": "Laitteiston dekoodaus",
|
||||
"transcoding_hardware_decoding_setting_description": "Ottaa käyttöön end-to-end kiihdytyksen pelkän muuntamisen sijasta. Ei välttämättä toimi kaikissa videoissa.",
|
||||
"transcoding_hevc_codec": "HEVC-koodekki",
|
||||
"transcoding_max_b_frames": "B-kehysten enimmäismäärä",
|
||||
"transcoding_max_b_frames_description": "Korkeampi arvo parantaa pakkausta, mutta hidastaa enkoodausta. Ei välttämättä ole yhteensopiva vanhempien laitteiden kanssa. 0 poistaa B-kehykset käytöstä, -1 määrittää arvon automaattisesti.",
|
||||
"transcoding_max_bitrate": "Suurin bittinopeus",
|
||||
@@ -329,13 +340,14 @@
|
||||
"trash_number_of_days_description": "Kuinka monta päivää aineistoja pidetään roskakorissa ennen pysyvää poistamista",
|
||||
"trash_settings": "Roskakorin asetukset",
|
||||
"trash_settings_description": "Hallitse roskakoriasetuksia",
|
||||
"untracked_files": "Tiedostot joita ei seurata",
|
||||
"untracked_files_description": "Nämä tiedostot eivät ole ohjelman hallitsemia. Ne voivat olla virheellisten siirtojen tai keskeytyneiden latausten tulosta, tai bugista johtuvia jälkeen jääneitä",
|
||||
"user_cleanup_job": "Käyttäjien puhdistus",
|
||||
"user_delete_delay": "Käyttäjän <b>{user}</b> tili ja aineistot aikataulutetaan poistettavaksi ajan kuluttua: {delay, plural, one {# day} other {# days}}.",
|
||||
"user_delete_delay_settings": "Poiston viive",
|
||||
"user_delete_delay_settings_description": "Kuinka monta päivää poistamisen jälkeen käyttäjä ja hänen aineistonsa poistetaan pysyvästi. Joka keskiyö käydään läpi poistettavaksi merkityt käyttäjät. Tämä muutos astuu voimaan seuraavalla ajokerralla.",
|
||||
"user_delete_immediately": "<b>{user}</b>:n tili ja sen kohteet on ajastettu poistettavaksi <b>heti</b>.",
|
||||
"user_delete_immediately_checkbox": "Aseta tili ja sen kohteet jonoon välitöntä poistoa varten",
|
||||
"user_details": "Käyttäjätiedot",
|
||||
"user_management": "Käyttäjien hallinta",
|
||||
"user_password_has_been_reset": "Käyttäjän salasana on nollattu:",
|
||||
"user_password_reset_description": "Anna väliaikainen salasana ja ohjeista käyttäjää vaihtamaan se seuraavan kirjautumisen yhteydessä.",
|
||||
@@ -357,11 +369,11 @@
|
||||
"advanced": "Edistyneet",
|
||||
"advanced_settings_enable_alternate_media_filter_subtitle": "Käytä tätä vaihtoehtoa suodattaaksesi mediaa synkronoinnin aikana vaihtoehtoisten kriteerien perusteella. Kokeile tätä vain, jos sovelluksessa on ongelmia kaikkien albumien tunnistamisessa.",
|
||||
"advanced_settings_enable_alternate_media_filter_title": "[KOKEELLINEN] Käytä vaihtoehtoisen laitteen albumin synkronointisuodatinta",
|
||||
"advanced_settings_log_level_title": "Kirjaustaso: {level}",
|
||||
"advanced_settings_log_level_title": "Kirjaustaso: {}",
|
||||
"advanced_settings_prefer_remote_subtitle": "Jotkut laitteet ovat erittäin hitaita lataamaan esikatselukuvia laitteen kohteista. Aktivoi tämä asetus käyttääksesi etäkuvia.",
|
||||
"advanced_settings_prefer_remote_title": "Suosi etäkuvia",
|
||||
"advanced_settings_proxy_headers_subtitle": "Määritä välityspalvelimen otsikot(proxy headers), jotka Immichin tulisi lähettää jokaisen verkkopyynnön mukana",
|
||||
"advanced_settings_proxy_headers_title": "Välityspalvelimen otsikot",
|
||||
"advanced_settings_proxy_headers_title": "Proxy Headers",
|
||||
"advanced_settings_self_signed_ssl_subtitle": "Ohita SSL sertifikaattivarmennus palvelimen päätepisteellä. Vaaditaan self-signed -sertifikaateissa.",
|
||||
"advanced_settings_self_signed_ssl_title": "Salli self-signed SSL -sertifikaatit",
|
||||
"advanced_settings_sync_remote_deletions_subtitle": "Poista tai palauta kohde automaattisesti tällä laitteella, kun kyseinen toiminto suoritetaan verkossa",
|
||||
@@ -387,6 +399,10 @@
|
||||
"album_remove_user": "Poista käyttäjä?",
|
||||
"album_remove_user_confirmation": "Oletko varma että haluat poistaa {user}?",
|
||||
"album_share_no_users": "Näyttää että olet jakanut tämän albumin kaikkien kanssa, tai sinulla ei ole käyttäjiä joille jakaa.",
|
||||
"album_thumbnail_card_item": "1 kohde",
|
||||
"album_thumbnail_card_items": "{} kohdetta",
|
||||
"album_thumbnail_card_shared": " · Jaettu",
|
||||
"album_thumbnail_shared_by": "Jakanut {}",
|
||||
"album_updated": "Albumi päivitetty",
|
||||
"album_updated_setting_description": "Saa sähköpostia kun jaetussa albumissa on uutta sisältöä",
|
||||
"album_user_left": "Poistuttiin albumista {album}",
|
||||
@@ -424,7 +440,7 @@
|
||||
"archive": "Arkisto",
|
||||
"archive_or_unarchive_photo": "Arkistoi kuva tai palauta arkistosta",
|
||||
"archive_page_no_archived_assets": "Arkistoituja kohteita ei löytynyt",
|
||||
"archive_page_title": "Arkisto ({count})",
|
||||
"archive_page_title": "Arkisto ({})",
|
||||
"archive_size": "Arkiston koko",
|
||||
"archive_size_description": "Määritä arkiston koko latauksissa (Gt)",
|
||||
"archived": "Arkistoitu",
|
||||
@@ -456,23 +472,23 @@
|
||||
"asset_uploading": "Ladataan…",
|
||||
"asset_viewer_settings_subtitle": "Galleriakatseluohjelman asetusten hallinta",
|
||||
"asset_viewer_settings_title": "Katselin",
|
||||
"assets": "Kohteet",
|
||||
"assets": "kohdetta",
|
||||
"assets_added_count": "Lisätty {count, plural, one {# kohde} other {# kohdetta}}",
|
||||
"assets_added_to_album_count": "Albumiin lisätty {count, plural, one {# kohde} other {# kohdetta}}",
|
||||
"assets_added_to_name_count": "Lisätty {count, plural, one {# kohde} other {# kohdetta}} {hasName, select, true {<b>{name}</b>} other {uuteen albumiin}}",
|
||||
"assets_count": "{count, plural, one {# media} other {# mediaa}}",
|
||||
"assets_deleted_permanently": "{count} kohdetta poistettu pysyvästi",
|
||||
"assets_deleted_permanently_from_server": "{count} objektia poistettu pysyvästi Immich-palvelimelta",
|
||||
"assets_deleted_permanently": "{} kohdetta poistettu pysyvästi",
|
||||
"assets_deleted_permanently_from_server": "{} objektia poistettu pysyvästi Immich-palvelimelta",
|
||||
"assets_moved_to_trash_count": "Siirretty {count, plural, one {# media} other {# mediaa}} roskakoriin",
|
||||
"assets_permanently_deleted_count": "{count, plural, one {# media} other {# mediaa}} poistettu pysyvästi",
|
||||
"assets_removed_count": "{count, plural, one {# media} other {# mediaa}} poistettu",
|
||||
"assets_removed_permanently_from_device": "{count} kohdetta on poistettu pysyvästi laitteeltasi",
|
||||
"assets_restore_confirmation": "Haluatko varmasti palauttaa kaikki roskakoriisi siirretyt kohteet? Tätä toimintoa ei voi peruuttaa! Huomaa, että offline-kohteita ei voida palauttaa tällä tavalla.",
|
||||
"assets_removed_permanently_from_device": "{} kohdetta on poistettu pysyvästi laitteeltasi",
|
||||
"assets_restore_confirmation": "Haluatko varmasti palauttaa kaikki roskakoriisi siirretyt resurssit? Tätä toimintoa ei voi peruuttaa! Huomaa, että offline-resursseja ei voida palauttaa tällä tavalla.",
|
||||
"assets_restored_count": "{count, plural, one {# media} other {# mediaa}} palautettu",
|
||||
"assets_restored_successfully": "{count} kohdetta palautettu onnistuneesti",
|
||||
"assets_trashed": "{count} kohdetta siirretty roskakoriin",
|
||||
"assets_restored_successfully": "{} kohdetta palautettu onnistuneesti",
|
||||
"assets_trashed": "{} kohdetta siirretty roskakoriin",
|
||||
"assets_trashed_count": "{count, plural, one {# media} other {# mediaa}} siirretty roskakoriin",
|
||||
"assets_trashed_from_server": "{count} kohdetta siirretty roskakoriin Immich-palvelimelta",
|
||||
"assets_trashed_from_server": "{} kohdetta siirretty roskakoriin Immich-palvelimelta",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {Media oli} other {Mediat olivat}} jo albumissa",
|
||||
"authorized_devices": "Valtuutetut laitteet",
|
||||
"automatic_endpoint_switching_subtitle": "Yhdistä paikallisesti nimetyn Wi-Fi-yhteyden kautta, kun se on saatavilla, ja käytä vaihtoehtoisia yhteyksiä muualla",
|
||||
@@ -481,20 +497,20 @@
|
||||
"back_close_deselect": "Palaa, sulje tai poista valinnat",
|
||||
"background_location_permission": "Taustasijainnin käyttöoikeus",
|
||||
"background_location_permission_content": "Jotta sovellus voi vaihtaa verkkoa taustalla toimiessaan, Immichillä on *aina* oltava pääsy tarkkaan sijaintiin, jotta se voi lukea Wi-Fi-verkon nimen",
|
||||
"backup_album_selection_page_albums_device": "Laitteen albumit ({count})",
|
||||
"backup_album_selection_page_albums_device": "Laitteen albumit ({})",
|
||||
"backup_album_selection_page_albums_tap": "Napauta sisällyttääksesi, kaksoisnapauta jättääksesi pois",
|
||||
"backup_album_selection_page_assets_scatter": "Kohteet voivat olla hajaantuneina useisiin albumeihin. Albumeita voidaan sisällyttää varmuuskopiointiin tai jättää siitä pois.",
|
||||
"backup_album_selection_page_select_albums": "Valitse albumit",
|
||||
"backup_album_selection_page_selection_info": "Valintatiedot",
|
||||
"backup_album_selection_page_total_assets": "Ainulaatuisia kohteita yhteensä",
|
||||
"backup_album_selection_page_total_assets": "Uniikkeja kohteita yhteensä",
|
||||
"backup_all": "Kaikki",
|
||||
"backup_background_service_backup_failed_message": "Kohteiden varmuuskopiointi epäonnistui. Yritetään uudelleen…",
|
||||
"backup_background_service_connection_failed_message": "Palvelimeen ei saatu yhteyttä. Yritetään uudelleen…",
|
||||
"backup_background_service_current_upload_notification": "Lähetetään {filename}",
|
||||
"backup_background_service_current_upload_notification": "Lähetetään {}",
|
||||
"backup_background_service_default_notification": "Tarkistetaan uusia kohteita…",
|
||||
"backup_background_service_error_title": "Virhe varmuuskopioinnissa",
|
||||
"backup_background_service_in_progress_notification": "Varmuuskopioidaan kohteita…",
|
||||
"backup_background_service_upload_failure_notification": "Lähetys epäonnistui {filename}",
|
||||
"backup_background_service_upload_failure_notification": "Lähetys epäonnistui {}",
|
||||
"backup_controller_page_albums": "Varmuuskopioi albumit",
|
||||
"backup_controller_page_background_app_refresh_disabled_content": "Salli sovelluksen päivittäminen taustalla suorittaaksesi varmuuskopiointia taustalla: Asetukset > Yleiset > Appien päivitys taustalla.",
|
||||
"backup_controller_page_background_app_refresh_disabled_title": "Sovelluksen päivittäminen taustalla on pois päältä",
|
||||
@@ -505,7 +521,7 @@
|
||||
"backup_controller_page_background_battery_info_title": "Akun optimointi",
|
||||
"backup_controller_page_background_charging": "Vain laitteen ollessa kytkettynä laturiin",
|
||||
"backup_controller_page_background_configure_error": "Taustapalvelun asettaminen epäonnistui",
|
||||
"backup_controller_page_background_delay": "Viivästytä uusien kohteiden varmuuskopiointia: {duration}",
|
||||
"backup_controller_page_background_delay": "Viivästytä uusien kohteiden varmuuskopiointia: {}",
|
||||
"backup_controller_page_background_description": "Kytke taustapalvelu päälle varmuuskopioidaksesi uudet kohteet automaattisesti, ilman sovelluksen avaamista",
|
||||
"backup_controller_page_background_is_off": "Automaattinen varmuuskopiointi taustalla on pois päältä",
|
||||
"backup_controller_page_background_is_on": "Automaattinen varmuuskopiointi taustalla on päällä",
|
||||
@@ -515,12 +531,12 @@
|
||||
"backup_controller_page_backup": "Varmuuskopiointi",
|
||||
"backup_controller_page_backup_selected": "Valittu: ",
|
||||
"backup_controller_page_backup_sub": "Varmuuskopioidut kuvat ja videot",
|
||||
"backup_controller_page_created": "Luotu: {date}",
|
||||
"backup_controller_page_created": "Luotu: {}",
|
||||
"backup_controller_page_desc_backup": "Kytke varmuuskopiointi päälle lähettääksesi uudet kohteet palvelimelle automaattisesti.",
|
||||
"backup_controller_page_excluded": "Poissuljettu: ",
|
||||
"backup_controller_page_failed": "Epäonnistui ({count})",
|
||||
"backup_controller_page_filename": "Tiedostonimi: {filename} [{size}]",
|
||||
"backup_controller_page_id": "ID: {id}",
|
||||
"backup_controller_page_failed": "Epäonnistui ({})",
|
||||
"backup_controller_page_filename": "Tiedostonimi: {} [{}]",
|
||||
"backup_controller_page_id": "ID: {}",
|
||||
"backup_controller_page_info": "Varmuuskopioinnin tiedot",
|
||||
"backup_controller_page_none_selected": "Ei mitään",
|
||||
"backup_controller_page_remainder": "Jäljellä",
|
||||
@@ -529,14 +545,14 @@
|
||||
"backup_controller_page_start_backup": "Aloita varmuuskopiointi",
|
||||
"backup_controller_page_status_off": "Varmuuskopiointi on pois päältä",
|
||||
"backup_controller_page_status_on": "Varmuuskopiointi on päällä",
|
||||
"backup_controller_page_storage_format": "{used} / {total} käytetty",
|
||||
"backup_controller_page_storage_format": "{} / {} käytetty",
|
||||
"backup_controller_page_to_backup": "Varmuuskopioitavat albumit",
|
||||
"backup_controller_page_total_sub": "Kaikki uniikit kuvat ja videot valituista albumeista",
|
||||
"backup_controller_page_turn_off": "Varmuuskopiointi pois päältä",
|
||||
"backup_controller_page_turn_on": "Varmuuskopiointi päälle",
|
||||
"backup_controller_page_uploading_file_info": "Tiedostojen lähetystiedot",
|
||||
"backup_err_only_album": "Vähintään yhden albumin tulee olla valittuna",
|
||||
"backup_info_card_assets": "kohteet",
|
||||
"backup_info_card_assets": "kohdetta",
|
||||
"backup_manual_cancelled": "Peruutettu",
|
||||
"backup_manual_in_progress": "Lähetys palvelimelle on jo käynnissä. Kokeile myöhemmin uudelleen",
|
||||
"backup_manual_success": "Onnistui",
|
||||
@@ -544,10 +560,6 @@
|
||||
"backup_options_page_title": "Varmuuskopioinnin asetukset",
|
||||
"backup_setting_subtitle": "Hallinnoi aktiivisia ja taustalla olevia lähetysasetuksia",
|
||||
"backward": "Taaksepäin",
|
||||
"biometric_auth_enabled": "Biometrinen tunnistautuminen käytössä",
|
||||
"biometric_locked_out": "Sinulta on evätty pääsy biometriseen tunnistautumiseen",
|
||||
"biometric_no_options": "Ei biometrisiä vaihtoehtoja",
|
||||
"biometric_not_available": "Biometrinen tunnistautuminen ei ole käytettävissä tässä laitteessa",
|
||||
"birthdate_saved": "Syntymäaika tallennettu",
|
||||
"birthdate_set_description": "Syntymäaikaa käytetään laskemaan henkilön ikä kuvanottohetkellä.",
|
||||
"blurred_background": "Sumennettu tausta",
|
||||
@@ -558,17 +570,21 @@
|
||||
"bulk_keep_duplicates_confirmation": "Haluatko varmasti säilyttää {count, plural, one {# kaksoiskappaleen} other {# kaksoiskappaleet}}? Tämä merkitsee kaikki kaksoiskappaleet ratkaistuiksi, eikä poista mitään.",
|
||||
"bulk_trash_duplicates_confirmation": "Haluatko varmasti siirtää {count, plural, one {# kaksoiskappaleen} other {# kaksoiskappaleet}} roskakoriin? Tämä säilyttää kustakin mediasta kookkaimman ja siirtää loput roskakoriin.",
|
||||
"buy": "Osta lisenssi Immich:iin",
|
||||
"cache_settings_album_thumbnails": "Kirjastosivun esikatselukuvat ({} kohdetta)",
|
||||
"cache_settings_clear_cache_button": "Tyhjennä välimuisti",
|
||||
"cache_settings_clear_cache_button_title": "Tyhjennä sovelluksen välimuisti. Tämä vaikuttaa merkittävästi sovelluksen suorituskykyyn, kunnes välimuisti on rakennettu uudelleen.",
|
||||
"cache_settings_duplicated_assets_clear_button": "Tyhjennä",
|
||||
"cache_settings_duplicated_assets_subtitle": "Sovelluksen mustalle listalle merkitsemät valokuvat ja videot",
|
||||
"cache_settings_duplicated_assets_title": "Kaksoiskappaleet ({count})",
|
||||
"cache_settings_duplicated_assets_title": "Kaksoiskappaleet ({})",
|
||||
"cache_settings_image_cache_size": "Kuvavälimuistin koko ({} kohdetta)",
|
||||
"cache_settings_statistics_album": "Kirjaston esikatselukuvat",
|
||||
"cache_settings_statistics_assets": "{} kohdetta ({})",
|
||||
"cache_settings_statistics_full": "Täysikokoiset kuvat",
|
||||
"cache_settings_statistics_shared": "Jaettujen albumien esikatselukuvat",
|
||||
"cache_settings_statistics_thumbnail": "Esikatselukuvat",
|
||||
"cache_settings_statistics_title": "Välimuistin käyttö",
|
||||
"cache_settings_subtitle": "Hallitse Immich-mobiilisovelluksen välimuistin käyttöä",
|
||||
"cache_settings_thumbnail_size": "Esikatselukuvien välimuistin koko ({} kohdetta)",
|
||||
"cache_settings_tile_subtitle": "Hallitse paikallista tallenustilaa",
|
||||
"cache_settings_tile_title": "Paikallinen tallennustila",
|
||||
"cache_settings_title": "Välimuistin asetukset",
|
||||
@@ -581,9 +597,7 @@
|
||||
"cannot_merge_people": "Ihmisiä ei voitu yhdistää",
|
||||
"cannot_undo_this_action": "Et voi perua tätä toimintoa!",
|
||||
"cannot_update_the_description": "Kuvausta ei voi päivittää",
|
||||
"cast": "Lähettää",
|
||||
"change_date": "Vaihda päiväys",
|
||||
"change_description": "Muuta kuvausta",
|
||||
"change_display_order": "Muuta näyttöjärjestystä",
|
||||
"change_expiration_time": "Muuta erääntymisaikaa",
|
||||
"change_location": "Vaihda sijainti",
|
||||
@@ -596,9 +610,9 @@
|
||||
"change_password_form_new_password": "Uusi salasana",
|
||||
"change_password_form_password_mismatch": "Salasanat eivät täsmää",
|
||||
"change_password_form_reenter_new_password": "Uusi salasana uudelleen",
|
||||
"change_pin_code": "Vaihda PIN-koodi",
|
||||
"change_your_password": "Vaihda salasanasi",
|
||||
"changed_visibility_successfully": "Näkyvyys vaihdettu",
|
||||
"check_all": "Valitse kaikki",
|
||||
"check_corrupt_asset_backup": "Vioittuneiden varmuuskopioiden tarkistaminen",
|
||||
"check_corrupt_asset_backup_button": "Suorita tarkistus",
|
||||
"check_corrupt_asset_backup_description": "Suorita tämä tarkistus vain Wi-Fi-yhteyden kautta ja vasta, kun kaikki kohteet on varmuuskopioitu. Toimenpide voi kestää muutamia minuutteja.",
|
||||
@@ -611,8 +625,8 @@
|
||||
"clear_message": "Tyhjennä viesti",
|
||||
"clear_value": "Tyhjää arvo",
|
||||
"client_cert_dialog_msg_confirm": "OK",
|
||||
"client_cert_enter_password": "Anna salasana",
|
||||
"client_cert_import": "Tuo",
|
||||
"client_cert_enter_password": "Enter Password",
|
||||
"client_cert_import": "Import",
|
||||
"client_cert_import_success_msg": "Asiakasvarmenne tuotu",
|
||||
"client_cert_invalid_msg": "Virheellinen varmennetiedosto tai väärä salasana",
|
||||
"client_cert_remove_msg": "Asiakassertifikaatti on poistettu",
|
||||
@@ -636,14 +650,11 @@
|
||||
"confirm_delete_face": "Haluatko poistaa {name} kasvot kohteesta?",
|
||||
"confirm_delete_shared_link": "Haluatko varmasti poistaa tämän jaetun linkin?",
|
||||
"confirm_keep_this_delete_others": "Kuvapinon muut kuvat tätä lukuunottamatta poistetaan. Oletko varma, että haluat jatkaa?",
|
||||
"confirm_new_pin_code": "Vahvista uusi PIN-koodi",
|
||||
"confirm_password": "Vahvista salasana",
|
||||
"confirm_tag_face": "Haluatko merkitä nämä kasvot nimellä {name}?",
|
||||
"confirm_tag_face_unnamed": "Merkitäänkö nämä kasvot?",
|
||||
"connected_to": "Yhdistetty",
|
||||
"contain": "Mahduta",
|
||||
"context": "Konteksti",
|
||||
"continue": "Jatka",
|
||||
"control_bottom_app_bar_album_info_shared": "{} kohdetta · Jaettu",
|
||||
"control_bottom_app_bar_create_new_album": "Luo uusi albumi",
|
||||
"control_bottom_app_bar_delete_from_immich": "Poista Immichistä",
|
||||
"control_bottom_app_bar_delete_from_local": "Poista laitteelta",
|
||||
@@ -671,7 +682,7 @@
|
||||
"create_link": "Luo linkki",
|
||||
"create_link_to_share": "Luo linkki jaettavaksi",
|
||||
"create_link_to_share_description": "Salli kaikkien linkin saaneiden nähdä valitut kuvat",
|
||||
"create_new": "LUO UUSI",
|
||||
"create_new": "CREATE NEW",
|
||||
"create_new_person": "Luo uusi henkilö",
|
||||
"create_new_person_hint": "Määritä valitut mediat uudelle henkilölle",
|
||||
"create_new_user": "Luo uusi käyttäjä",
|
||||
@@ -681,21 +692,19 @@
|
||||
"create_tag_description": "Luo uusi tunniste. Sisäkkäisiä tunnisteita varten syötä tunnisteen täydellinen polku kauttaviivat mukaan luettuna.",
|
||||
"create_user": "Luo käyttäjä",
|
||||
"created": "Luotu",
|
||||
"created_at": "Luotu",
|
||||
"crop": "Rajaa",
|
||||
"curated_object_page_title": "Asiat",
|
||||
"current_device": "Nykyinen laite",
|
||||
"current_pin_code": "Nykyinen PIN-koodi",
|
||||
"current_server_address": "Nykyinen palvelinosoite",
|
||||
"custom_locale": "Muokatut maa-asetukset",
|
||||
"custom_locale_description": "Muotoile päivämäärät ja numerot perustuen alueen kieleen",
|
||||
"daily_title_text_date": "E, dd MMM",
|
||||
"daily_title_text_date_year": "E, dd MMM, yyyy",
|
||||
"daily_title_text_date": "E, MMM dd",
|
||||
"daily_title_text_date_year": "E, MMM dd, yyyy",
|
||||
"dark": "Tumma",
|
||||
"date_after": "Päivämäärän jälkeen",
|
||||
"date_and_time": "Päivämäärä ja aika",
|
||||
"date_before": "Päivä ennen",
|
||||
"date_format": "E d. LLL y • hh:mm",
|
||||
"date_format": "E, LLL d, y • h:mm a",
|
||||
"date_of_birth_saved": "Syntymäaika tallennettu",
|
||||
"date_range": "Päivämäärän rajaus",
|
||||
"day": "Päivä",
|
||||
@@ -729,11 +738,11 @@
|
||||
"delete_tag_confirmation_prompt": "Haluatko varmasti poistaa tunnisteen {tagName}?",
|
||||
"delete_user": "Poista käyttäjä",
|
||||
"deleted_shared_link": "Jaettu linkki poistettu",
|
||||
"deletes_missing_assets": "Poistaa levyltä puuttuvat kohteet",
|
||||
"deletes_missing_assets": "Poistaa levyltä puuttuvat resurssit",
|
||||
"description": "Kuvaus",
|
||||
"description_input_hint_text": "Lisää kuvaus...",
|
||||
"description_input_submit_error": "Virhe kuvauksen päivittämisessä, tarkista lisätiedot lokista",
|
||||
"details": "Tiedot",
|
||||
"details": "TIEDOT",
|
||||
"direction": "Suunta",
|
||||
"disabled": "Poistettu käytöstä",
|
||||
"disallow_edits": "Älä salli muokkauksia",
|
||||
@@ -752,8 +761,9 @@
|
||||
"download_canceled": "Lataus peruutettu",
|
||||
"download_complete": "Lataus valmis",
|
||||
"download_enqueue": "Latausjonossa",
|
||||
"download_error": "Latausvirhe",
|
||||
"download_error": "Download Error",
|
||||
"download_failed": "Lataus epäonnistui",
|
||||
"download_filename": "tiedosto: {}",
|
||||
"download_finished": "Lataus valmis",
|
||||
"download_include_embedded_motion_videos": "Upotetut videot",
|
||||
"download_include_embedded_motion_videos_description": "Sisällytä liikekuviin upotetut videot erillisinä tiedostoina",
|
||||
@@ -777,8 +787,6 @@
|
||||
"edit_avatar": "Muokkaa avataria",
|
||||
"edit_date": "Muokkaa päiväystä",
|
||||
"edit_date_and_time": "Muokkaa päivämäärää ja kellonaikaa",
|
||||
"edit_description": "Muokkaa kuvausta",
|
||||
"edit_description_prompt": "Valitse uusi kuvaus:",
|
||||
"edit_exclusion_pattern": "Muokkaa poissulkemismallia",
|
||||
"edit_faces": "Muokkaa kasvoja",
|
||||
"edit_import_path": "Muokkaa tuontipolkua",
|
||||
@@ -799,24 +807,19 @@
|
||||
"editor_crop_tool_h2_aspect_ratios": "Kuvasuhteet",
|
||||
"editor_crop_tool_h2_rotation": "Rotaatio",
|
||||
"email": "Sähköposti",
|
||||
"email_notifications": "Sähköposti-ilmoitukset",
|
||||
"empty_folder": "Kansio on tyhjä",
|
||||
"empty_trash": "Tyhjennä roskakori",
|
||||
"empty_trash_confirmation": "Haluatko varmasti tyhjentää roskakorin? Tämä poistaa pysyvästi kaikki tiedostot Immich:stä.\nToimintoa ei voi perua!",
|
||||
"enable": "Ota käyttöön",
|
||||
"enable_biometric_auth_description": "Syötä PIN-koodisi ottaaksesi biometrisen tunnistautumisen käyttöön",
|
||||
"enabled": "Käytössä",
|
||||
"end_date": "Päättymispäivä",
|
||||
"enqueued": "Lisätty jonoon",
|
||||
"enter_wifi_name": "Anna Wi-Fi-verkon nimi",
|
||||
"enter_your_pin_code": "Syötä PIN-koodi",
|
||||
"enter_your_pin_code_subtitle": "Syötä PIN-koodi päästäksesi lukittuun kansioon",
|
||||
"error": "Virhe",
|
||||
"error_change_sort_album": "Albumin lajittelujärjestyksen muuttaminen epäonnistui",
|
||||
"error_delete_face": "Virhe kasvojen poistamisessa kohteesta",
|
||||
"error_loading_image": "Kuvan lataus ei onnistunut",
|
||||
"error_saving_image": "Virhe: {error}",
|
||||
"error_tag_face_bounding_box": "Kasvojen merkitseminen epäonnistui – rajausruudun koordinaatteja ei löydy",
|
||||
"error_saving_image": "Virhe: {}",
|
||||
"error_title": "Virhe - Jotain meni pieleen",
|
||||
"errors": {
|
||||
"cannot_navigate_next_asset": "Seuraavaan mediaan ei voi siirtyä",
|
||||
@@ -829,6 +832,7 @@
|
||||
"cant_get_number_of_comments": "Kommenttien määrää ei voitu hakea",
|
||||
"cant_search_people": "Ihmisiä ei voitu hakea",
|
||||
"cant_search_places": "Sijainteja ei voitu hakea",
|
||||
"cleared_jobs": "{job} työt tyhjätty",
|
||||
"error_adding_assets_to_album": "Medioita ei voitu lisätä albumiin",
|
||||
"error_adding_users_to_album": "Käyttäjiä ei voitu lisätä albumiin",
|
||||
"error_deleting_shared_user": "Jaettua käyttäjää ei voitu poistaa",
|
||||
@@ -837,6 +841,7 @@
|
||||
"error_removing_assets_from_album": "Medioiden poisto epäonnistui. Katso konsolista lisätietoja",
|
||||
"error_selecting_all_assets": "Kaikkia medioita ei voitu valita",
|
||||
"exclusion_pattern_already_exists": "Tämä poissulkemismalli on jo olemassa.",
|
||||
"failed_job_command": "Komento {command} työlle {job} epäonnistui",
|
||||
"failed_to_create_album": "Albumin luonti epäonnistui",
|
||||
"failed_to_create_shared_link": "Jaetun linkin luonti epäonnistui",
|
||||
"failed_to_edit_shared_link": "Jaetun linkin muokkaus epäonnistui",
|
||||
@@ -855,6 +860,7 @@
|
||||
"paths_validation_failed": "{paths, plural, one {# polun} other {# polun}} validointi epäonnistui",
|
||||
"profile_picture_transparent_pixels": "Profiilikuvassa ei voi olla läpinäkyviä pikseleitä. Zoomaa lähemmäs ja/tai siirrä kuvaa.",
|
||||
"quota_higher_than_disk_size": "Asettamasi kiintiö on suurempi kuin levyn koko",
|
||||
"repair_unable_to_check_items": "Ei voida tarkistaa {count, select, one {kohdetta} other {kohteita}}",
|
||||
"unable_to_add_album_users": "Käyttäjiä ei voi lisätä albumiin",
|
||||
"unable_to_add_assets_to_shared_link": "Medioiden lisääminen jaettuun linkkiin epäonnistui",
|
||||
"unable_to_add_comment": "Kommentin lisääminen epäonnistui",
|
||||
@@ -866,13 +872,13 @@
|
||||
"unable_to_archive_unarchive": "Ei voida {archived, select, true {arkistoida} other {poistaa arkistosta}}",
|
||||
"unable_to_change_album_user_role": "Albumin käyttäjän roolia ei voitu muuttaa",
|
||||
"unable_to_change_date": "Päivämäärää ei voitu muuttaa",
|
||||
"unable_to_change_description": "Kuvausta ei voi muuttaa",
|
||||
"unable_to_change_favorite": "Ei voida muuttaa suosikkia kohteelle",
|
||||
"unable_to_change_location": "Sijainnin muuttaminen epäonnistui",
|
||||
"unable_to_change_password": "Salasanan vaihto epäonnistui",
|
||||
"unable_to_change_visibility": "Ei voida muuttaa näkyvyyttä {count, plural, one {# henkilölle} other {# henkilölle}}",
|
||||
"unable_to_complete_oauth_login": "OAuth-kirjautumista ei voitu suorittaa loppuun",
|
||||
"unable_to_connect": "Yhteyttä ei voitu muodostaa",
|
||||
"unable_to_connect_to_server": "Palvelimeen ei saatu yhteyttä",
|
||||
"unable_to_copy_to_clipboard": "Leikepöydälle ei voitu kopioida, varmista että käytät sivua https-yhteyden kautta",
|
||||
"unable_to_create_admin_account": "Pääkäyttäjän luominen epäonnistui",
|
||||
"unable_to_create_api_key": "Uuden API-avaimen luominen epäonnistui",
|
||||
@@ -896,6 +902,10 @@
|
||||
"unable_to_hide_person": "Henkilön piilottaminen epäonnistui",
|
||||
"unable_to_link_motion_video": "Liikekuvan linkitys epäonnistui",
|
||||
"unable_to_link_oauth_account": "OAuth-tilin linkittäminen epäonnistui",
|
||||
"unable_to_load_album": "Albumin lataaminen epäonnistui",
|
||||
"unable_to_load_asset_activity": "Ei voitu ladata kohteen toimintaa",
|
||||
"unable_to_load_items": "Kohteiden lataaminen epäonnistui",
|
||||
"unable_to_load_liked_status": "Ei voitu ladata tykkäyksen tilaa",
|
||||
"unable_to_log_out_all_devices": "Kaikkien laitteiden uloskirjautuminen epäonnistui",
|
||||
"unable_to_log_out_device": "Laitteen uloskirjautuminen epäonnistui",
|
||||
"unable_to_login_with_oauth": "OAuth-kirjautuminen epäonnistui",
|
||||
@@ -906,11 +916,12 @@
|
||||
"unable_to_remove_album_users": "Käyttäjien poistaminen albumista epäonnistui",
|
||||
"unable_to_remove_api_key": "API-avaimen poistaminen epäonnistui",
|
||||
"unable_to_remove_assets_from_shared_link": "kohteiden poistaminen jaetusta linkistä epäonnistui",
|
||||
"unable_to_remove_deleted_assets": "Offline-tiedostoja ei voitu poistaa",
|
||||
"unable_to_remove_library": "Kirjaston poistaminen epäonnistui",
|
||||
"unable_to_remove_partner": "Kumppanin poistaminen epäonnistui",
|
||||
"unable_to_remove_reaction": "Reaktion poistaminen epäonnistui",
|
||||
"unable_to_repair_items": "Kohteiden korjaaminen epäonnistui",
|
||||
"unable_to_reset_password": "Salasanan nollaaminen epäonnistui",
|
||||
"unable_to_reset_pin_code": "PIN-koodin nollaaminen epäonnistui",
|
||||
"unable_to_resolve_duplicate": "Kaksoiskappaleen ratkaiseminen epäonnistui",
|
||||
"unable_to_restore_assets": "Kohteen palauttaminen epäonnistui",
|
||||
"unable_to_restore_trash": "Kohteiden palauttaminen epäonnistui",
|
||||
@@ -944,9 +955,10 @@
|
||||
"exif_bottom_sheet_location": "SIJAINTI",
|
||||
"exif_bottom_sheet_people": "IHMISET",
|
||||
"exif_bottom_sheet_person_add_person": "Lisää nimi",
|
||||
"exif_bottom_sheet_person_age_months": "Ikä {months} kuukautta",
|
||||
"exif_bottom_sheet_person_age_year_months": "Ikä 1 vuosi, {months} kuukautta",
|
||||
"exif_bottom_sheet_person_age_years": "Ikä {years}",
|
||||
"exif_bottom_sheet_person_age": "Ikä {}",
|
||||
"exif_bottom_sheet_person_age_months": "Ikä {} kuukautta",
|
||||
"exif_bottom_sheet_person_age_year_months": "Ikä 1 vuosi, {} kuukautta",
|
||||
"exif_bottom_sheet_person_age_years": "Ikä {}",
|
||||
"exit_slideshow": "Poistu diaesityksestä",
|
||||
"expand_all": "Laajenna kaikki",
|
||||
"experimental_settings_new_asset_list_subtitle": "Työn alla",
|
||||
@@ -967,7 +979,6 @@
|
||||
"external_network_sheet_info": "Kun laite ei ole yhteydessä valittuun Wi-Fi-verkkoon, sovellus yrittää muodostaa yhteyden palvelimeen alla olevista URL-osoitteista ylhäältä alas, kunnes yhteys muodostuu",
|
||||
"face_unassigned": "Ei määritelty",
|
||||
"failed": "Epäonnistui",
|
||||
"failed_to_authenticate": "Todennus epäonnistui",
|
||||
"failed_to_load_assets": "Kohteiden lataus epäonnistui",
|
||||
"failed_to_load_folder": "Kansion lataaminen epäonnistui",
|
||||
"favorite": "Suosikki",
|
||||
@@ -981,7 +992,7 @@
|
||||
"file_name_or_extension": "Tiedostonimi tai tiedostopääte",
|
||||
"filename": "Tiedostonimi",
|
||||
"filetype": "Tiedostotyyppi",
|
||||
"filter": "Suodatin",
|
||||
"filter": "Filter",
|
||||
"filter_people": "Suodata henkilöt",
|
||||
"filter_places": "Suodata paikkoja",
|
||||
"find_them_fast": "Löydä nopeasti hakemalla nimellä",
|
||||
@@ -991,8 +1002,6 @@
|
||||
"folders": "Kansiot",
|
||||
"folders_feature_description": "Käytetään kansionäkymää valokuvien ja videoiden selaamiseen järjestelmässä",
|
||||
"forward": "Eteenpäin",
|
||||
"gcast_enabled": "Google Cast",
|
||||
"gcast_enabled_description": "Ominaisuus lataa ulkoisia resursseja Googlelta toimiakseen.",
|
||||
"general": "Yleinen",
|
||||
"get_help": "Hae apua",
|
||||
"get_wifiname_error": "Wi-Fi-verkon nimen hakeminen epäonnistui. Varmista, että olet myöntänyt tarvittavat käyttöoikeudet ja että olet yhteydessä Wi-Fi-verkkoon",
|
||||
@@ -1012,8 +1021,8 @@
|
||||
"has_quota": "On kiintiö",
|
||||
"header_settings_add_header_tip": "Lisää otsikko",
|
||||
"header_settings_field_validator_msg": "Arvo ei voi olla tyhjä",
|
||||
"header_settings_header_name_input": "Otsikon nimi",
|
||||
"header_settings_header_value_input": "Otsikon arvo",
|
||||
"header_settings_header_name_input": "Header name",
|
||||
"header_settings_header_value_input": "Header value",
|
||||
"headers_settings_tile_subtitle": "Määritä välityspalvelimen otsikot, jotka sovelluksen tulisi lähettää jokaisen verkkopyynnön mukana",
|
||||
"headers_settings_tile_title": "Mukautettu proxy headers",
|
||||
"hi_user": "Hei {name} ({email})",
|
||||
@@ -1035,13 +1044,10 @@
|
||||
"home_page_favorite_err_local": "Paikallisten kohteiden lisääminen suosikkeihin ei ole mahdollista, ohitetaan",
|
||||
"home_page_favorite_err_partner": "Kumppanin kohteita ei voi vielä merkitä suosikiksi. Hypätään yli",
|
||||
"home_page_first_time_notice": "Jos käytät sovellusta ensimmäistä kertaa, muista valita varmuuskopioitavat albumi(t), jotta aikajanalla voi olla kuvia ja videoita",
|
||||
"home_page_locked_error_local": "Paikallisten kohteiden siirto lukittuun kansioon ei onnistu, ohitetaan",
|
||||
"home_page_locked_error_partner": "Kumppanin kohteita ei voi siirtää lukittuun kansioon, ohitetaan",
|
||||
"home_page_share_err_local": "Paikallisia kohteita ei voitu jakaa linkkien avulla. Hypätään yli",
|
||||
"home_page_upload_err_limit": "Voit lähettää palvelimelle enintään 30 kohdetta kerrallaan, ohitetaan",
|
||||
"host": "Isäntä",
|
||||
"hour": "Tunti",
|
||||
"id": "ID",
|
||||
"ignore_icloud_photos": "Ohita iCloud-kuvat",
|
||||
"ignore_icloud_photos_description": "iCloudiin tallennettuja kuvia ei ladata Immich-palvelimelle",
|
||||
"image": "Kuva",
|
||||
@@ -1081,10 +1087,6 @@
|
||||
"invalid_date_format": "Virheellinen päivämäärämuoto",
|
||||
"invite_people": "Kutsu ihmisiä",
|
||||
"invite_to_album": "Kutsu albumiin",
|
||||
"ios_debug_info_fetch_ran_at": "Noudettu {dateTime}",
|
||||
"ios_debug_info_last_sync_at": "Viimeisin synkronisointi {dateTime}",
|
||||
"ios_debug_info_no_processes_queued": "Ei taustaprosesseja jonossa",
|
||||
"ios_debug_info_no_sync_yet": "Taustasynkronisointia ei ole suoritettu vielä",
|
||||
"items_count": "{count, plural, one {# kpl} other {# kpl}}",
|
||||
"jobs": "Taustatehtävät",
|
||||
"keep": "Säilytä",
|
||||
@@ -1118,7 +1120,7 @@
|
||||
"list": "Lista",
|
||||
"loading": "Ladataan",
|
||||
"loading_search_results_failed": "Hakutulosten lataaminen epäonnistui",
|
||||
"local_network": "Lähiverkko",
|
||||
"local_network": "Local network",
|
||||
"local_network_sheet_info": "Sovellus muodostaa yhteyden palvelimeen tämän URL-osoitteen kautta, kun käytetään määritettyä Wi-Fi-verkkoa",
|
||||
"location_permission": "Sijainnin käyttöoikeus",
|
||||
"location_permission_content": "Automaattisen vaihtotoiminnon käyttämiseksi Immich tarvitsee tarkan sijainnin käyttöoikeuden, jotta se voi lukea nykyisen Wi-Fi-verkon nimen",
|
||||
@@ -1127,8 +1129,6 @@
|
||||
"location_picker_latitude_hint": "Syötä leveysaste",
|
||||
"location_picker_longitude_error": "Lisää kelvollinen pituusaste",
|
||||
"location_picker_longitude_hint": "Syötä pituusaste",
|
||||
"lock": "Lukitse",
|
||||
"locked_folder": "Lukittu kansio",
|
||||
"log_out": "Kirjaudu ulos",
|
||||
"log_out_all_devices": "Kirjaudu ulos kaikilta laitteilta",
|
||||
"logged_out_all_devices": "Kaikki laitteet kirjattu ulos",
|
||||
@@ -1173,8 +1173,8 @@
|
||||
"manage_your_devices": "Hallitse sisäänkirjautuneita laitteitasi",
|
||||
"manage_your_oauth_connection": "Hallitse OAuth-yhteyttäsi",
|
||||
"map": "Kartta",
|
||||
"map_assets_in_bound": "{count} kuva",
|
||||
"map_assets_in_bounds": "{count} kuvaa",
|
||||
"map_assets_in_bound": "{} kuva",
|
||||
"map_assets_in_bounds": "{} kuvaa",
|
||||
"map_cannot_get_user_location": "Käyttäjän sijaintia ei voitu määrittää",
|
||||
"map_location_dialog_yes": "Kyllä",
|
||||
"map_location_picker_page_use_location": "Käytä tätä sijaintia",
|
||||
@@ -1188,9 +1188,9 @@
|
||||
"map_settings": "Kartta-asetukset",
|
||||
"map_settings_dark_mode": "Tumma tila",
|
||||
"map_settings_date_range_option_day": "Viimeiset 24 tuntia",
|
||||
"map_settings_date_range_option_days": "Viimeiset {days} päivää",
|
||||
"map_settings_date_range_option_days": "Viimeiset {} päivää",
|
||||
"map_settings_date_range_option_year": "Viimeisin vuosi",
|
||||
"map_settings_date_range_option_years": "Viimeiset {years} vuotta",
|
||||
"map_settings_date_range_option_years": "Viimeiset {} vuotta",
|
||||
"map_settings_dialog_title": "Kartta-asetukset",
|
||||
"map_settings_include_show_archived": "Sisällytä arkistoidut",
|
||||
"map_settings_include_show_partners": "Sisällytä kumppanit",
|
||||
@@ -1208,6 +1208,8 @@
|
||||
"memories_setting_description": "Hallitse mitä näet muistoissasi",
|
||||
"memories_start_over": "Aloita alusta",
|
||||
"memories_swipe_to_close": "Pyyhkäise ylös sulkeaksesi",
|
||||
"memories_year_ago": "Vuosi sitten",
|
||||
"memories_years_ago": "{} vuotta sitten",
|
||||
"memory": "Muisto",
|
||||
"memory_lane_title": "Muistojen polku {title}",
|
||||
"menu": "Valikko",
|
||||
@@ -1224,10 +1226,6 @@
|
||||
"month": "Kuukauden mukaan",
|
||||
"monthly_title_text_date_format": "MMMM y",
|
||||
"more": "Enemmän",
|
||||
"move": "Siirrä",
|
||||
"move_off_locked_folder": "Siirrä pois lukitusta kansiosta",
|
||||
"move_to_locked_folder": "Siirrä lukittuun kansioon",
|
||||
"move_to_locked_folder_confirmation": "Nämä kuvat ja videot poistetaan kaikista albumeista, ja ne ovat nähtävissä vain lukitussa kansiossa",
|
||||
"moved_to_archive": "Siirretty {count, plural, one {# kohde} other {# kohdetta}} arkistoon",
|
||||
"moved_to_library": "Siirretty {count, plural, one {# kohde} other {# kohdetta}} kirjastoon",
|
||||
"moved_to_trash": "Siirretty roskakoriin",
|
||||
@@ -1244,8 +1242,6 @@
|
||||
"new_api_key": "Uusi API-avain",
|
||||
"new_password": "Uusi salasana",
|
||||
"new_person": "Uusi henkilö",
|
||||
"new_pin_code": "Uusi PIN-koodi",
|
||||
"new_pin_code_subtitle": "Tämä on ensimmäinen kerta, kun käytät lukittua kansiota. Luo PIN-koodi päästäksesi tähän sisältöön turvallisesti",
|
||||
"new_user_created": "Uusi käyttäjä lisätty",
|
||||
"new_version_available": "UUSI VERSIO SAATAVILLA",
|
||||
"newest_first": "Uusin ensin",
|
||||
@@ -1263,7 +1259,6 @@
|
||||
"no_explore_results_message": "Lataa lisää kuvia tutkiaksesi kokoelmaasi.",
|
||||
"no_favorites_message": "Lisää suosikkeja löytääksesi nopeasti parhaat kuvasi ja videosi",
|
||||
"no_libraries_message": "Luo ulkoinen kirjasto nähdäksesi valokuvasi ja videot",
|
||||
"no_locked_photos_message": "Kuvat ja videot lukitussa kansiossa ovat piilotettuja, eivätkä ne näy selatessasi tai etsiessäsi kirjastoasi.",
|
||||
"no_name": "Ei nimeä",
|
||||
"no_notifications": "Ei ilmoituksia",
|
||||
"no_people_found": "Ei vastaavia henkilöitä",
|
||||
@@ -1275,7 +1270,6 @@
|
||||
"not_selected": "Ei valittu",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Huom: Jotta voit soveltaa tallennustunnistetta aiemmin ladattuihin kohteisiin, suorita",
|
||||
"notes": "Muistiinpanot",
|
||||
"nothing_here_yet": "Ei vielä mitään",
|
||||
"notification_permission_dialog_content": "Ottaaksesi ilmoitukset käyttöön, siirry asetuksiin ja valitse 'salli'.",
|
||||
"notification_permission_list_tile_content": "Myönnä käyttöoikeus ottaaksesi ilmoitukset käyttöön.",
|
||||
"notification_permission_list_tile_enable_button": "Ota ilmoitukset käyttöön",
|
||||
@@ -1286,12 +1280,15 @@
|
||||
"oauth": "OAuth",
|
||||
"official_immich_resources": "Viralliset Immich-resurssit",
|
||||
"offline": "Offline",
|
||||
"offline_paths": "Offline-polut",
|
||||
"offline_paths_description": "Nämä tulokset voivat johtua tiedostojen manuaalisesta poistamisesta, jotka eivät ole osa ulkoista kirjastoa.",
|
||||
"ok": "Ok",
|
||||
"oldest_first": "Vanhin ensin",
|
||||
"on_this_device": "Laitteella",
|
||||
"onboarding": "Käyttöönotto",
|
||||
"onboarding_privacy_description": "Seuraavat (valinnaiset) ominaisuudet perustuvat ulkoisiin palveluihin, ja ne voidaan poistaa käytöstä milloin tahansa hallinta asetuksista.",
|
||||
"onboarding_theme_description": "Valitse väriteema istunnollesi. Voit muuttaa tämän myöhemmin asetuksistasi.",
|
||||
"onboarding_welcome_description": "Aloitetaa laittamalla istuntoosi joitakin yleisiä asetuksia.",
|
||||
"onboarding_welcome_user": "Tervetuloa {user}",
|
||||
"online": "Online",
|
||||
"only_favorites": "Vain suosikit",
|
||||
@@ -1319,7 +1316,7 @@
|
||||
"partner_page_partner_add_failed": "Kumppanin lisääminen epäonnistui",
|
||||
"partner_page_select_partner": "Valitse kumppani",
|
||||
"partner_page_shared_to_title": "Jaettu henkilöille",
|
||||
"partner_page_stop_sharing_content": "{partner} ei voi enää käyttää kuviasi.",
|
||||
"partner_page_stop_sharing_content": "{} ei voi enää käyttää kuviasi.",
|
||||
"partner_sharing": "Kumppanijako",
|
||||
"partners": "Kumppanit",
|
||||
"password": "Salasana",
|
||||
@@ -1345,11 +1342,9 @@
|
||||
"permanent_deletion_warning_setting_description": "Näytä varoitus, kun poistat kohteita pysyvästi",
|
||||
"permanently_delete": "Poista pysyvästi",
|
||||
"permanently_delete_assets_count": "Poista pysyvästi {count, plural, one {kohde} other {kohteita}}",
|
||||
"permanently_delete_assets_prompt": "Haluatko varmasti poistaa pysyvästi {count, plural, one {tämän kohteen?} other {nämä <b>#</b> kohteet?}} Tämä poistaa myös {count, plural, one {sen} other {ne}} kaikista albumeista.",
|
||||
"permanently_delete_assets_prompt": "Oletko varma, että haluat poistaa pysyvästi {count, plural, one {tämän kohteen?} other {nämä <b>#</b> kohteet?}} Tämä poistaa myös {count, plural, one {sen sen} other {ne niiden}} albumista.",
|
||||
"permanently_deleted_asset": "Media poistettu pysyvästi",
|
||||
"permanently_deleted_assets_count": "{count, plural, one {# media} other {# mediaa}} poistettu pysyvästi",
|
||||
"permission": "Käyttöoikeus",
|
||||
"permission_empty": "Käyttöoikeus ei saa olla tyhjä",
|
||||
"permission_onboarding_back": "Takaisin",
|
||||
"permission_onboarding_continue_anyway": "Jatka silti",
|
||||
"permission_onboarding_get_started": "Aloittaminen",
|
||||
@@ -1367,10 +1362,6 @@
|
||||
"photos_count": "{count, plural, one {{count, number} Kuva} other {{count, number} kuvaa}}",
|
||||
"photos_from_previous_years": "Kuvia edellisiltä vuosilta",
|
||||
"pick_a_location": "Valitse sijainti",
|
||||
"pin_code_changed_successfully": "PIN-koodin vaihto onnistui",
|
||||
"pin_code_reset_successfully": "PIN-koodin nollaus onnistui",
|
||||
"pin_code_setup_successfully": "PIN-koodin asettaminen onnistui",
|
||||
"pin_verification": "PIN-koodin vahvistus",
|
||||
"place": "Sijainti",
|
||||
"places": "Paikat",
|
||||
"places_count": "{count, plural, one {{count, number} Paikka} other {{count, number} Paikkaa}}",
|
||||
@@ -1378,7 +1369,6 @@
|
||||
"play_memories": "Toista muistot",
|
||||
"play_motion_photo": "Toista Liikekuva",
|
||||
"play_or_pause_video": "Toista tai keskeytä video",
|
||||
"please_auth_to_access": "Ole hyvä ja kirjaudu sisään",
|
||||
"port": "Portti",
|
||||
"preferences_settings_subtitle": "Hallitse sovelluksen asetuksia",
|
||||
"preferences_settings_title": "Asetukset",
|
||||
@@ -1386,17 +1376,13 @@
|
||||
"preview": "Esikatselu",
|
||||
"previous": "Edellinen",
|
||||
"previous_memory": "Edellinen muisto",
|
||||
"previous_or_next_day": "Päivä seuraava/edellinen",
|
||||
"previous_or_next_month": "Kuukausi seuraava/edellinen",
|
||||
"previous_or_next_photo": "Kuva seuraava/edellinen",
|
||||
"previous_or_next_year": "Vuosi seuraava/edellinen",
|
||||
"previous_or_next_photo": "Edellinen tai seuraava kuva",
|
||||
"primary": "Ensisijainen",
|
||||
"privacy": "Yksityisyys",
|
||||
"profile": "Profiili",
|
||||
"profile_drawer_app_logs": "Lokit",
|
||||
"profile_drawer_client_out_of_date_major": "Sovelluksen mobiiliversio on vanhentunut. Päivitä viimeisimpään merkittävään versioon.",
|
||||
"profile_drawer_client_out_of_date_minor": "Sovelluksen mobiiliversio on vanhentunut. Päivitä viimeisimpään versioon.",
|
||||
"profile_drawer_client_server_up_to_date": "Asiakasohjelma ja palvelin ovat ajan tasalla",
|
||||
"profile_drawer_client_server_up_to_date": "Asiakassovellus ja palvelin ovat ajan tasalla",
|
||||
"profile_drawer_github": "GitHub",
|
||||
"profile_drawer_server_out_of_date_major": "Palvelimen ohjelmistoversio on vanhentunut. Päivitä viimeisimpään merkittävään versioon.",
|
||||
"profile_drawer_server_out_of_date_minor": "Palvelimen ohjelmistoversio on vanhentunut. Päivitä viimeisimpään versioon.",
|
||||
@@ -1406,7 +1392,7 @@
|
||||
"public_share": "Julkinen jako",
|
||||
"purchase_account_info": "Tukija",
|
||||
"purchase_activated_subtitle": "Kiitos Immichin ja avoimen lähdekoodin ohjelmiston tukemisesta",
|
||||
"purchase_activated_time": "Aktivoitu {date}",
|
||||
"purchase_activated_time": "Aktivoitu {date, date}",
|
||||
"purchase_activated_title": "Avaimesi on aktivoitu onnistuneesti",
|
||||
"purchase_button_activate": "Aktivoi",
|
||||
"purchase_button_buy": "Osta",
|
||||
@@ -1472,8 +1458,6 @@
|
||||
"remove_deleted_assets": "Poista Offline-tiedostot",
|
||||
"remove_from_album": "Poista albumista",
|
||||
"remove_from_favorites": "Poista suosikeista",
|
||||
"remove_from_locked_folder": "Poista lukitusta kansiosta",
|
||||
"remove_from_locked_folder_confirmation": "Haluatko varmasti siirtää nämä kuvat ja videot pois lukitusta kansiosta? Ne näkyvät sen jälkeen kirjastossasi.",
|
||||
"remove_from_shared_link": "Poista jakolinkistä",
|
||||
"remove_memory": "Tyhjennä muisti",
|
||||
"remove_photo_from_memory": "Poista kuva muistista",
|
||||
@@ -1497,7 +1481,6 @@
|
||||
"reset": "Nollaa",
|
||||
"reset_password": "Nollaa salasana",
|
||||
"reset_people_visibility": "Nollaa henkilöiden näkyvyysasetukset",
|
||||
"reset_pin_code": "Nollaa PIN-koodi",
|
||||
"reset_to_default": "Palauta oletusasetukset",
|
||||
"resolve_duplicates": "Ratkaise kaksoiskappaleet",
|
||||
"resolved_all_duplicates": "Kaikki kaksoiskappaleet selvitetty",
|
||||
@@ -1535,15 +1518,15 @@
|
||||
"search_country": "Etsi maata...",
|
||||
"search_filter_apply": "Käytä",
|
||||
"search_filter_camera_title": "Valitse kameratyyppi",
|
||||
"search_filter_date": "Päivämäärä",
|
||||
"search_filter_date_interval": "{start} – {end}",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Valitse aikaväli",
|
||||
"search_filter_display_option_not_in_album": "Ei kuulu albumiin",
|
||||
"search_filter_display_options": "Näyttöasetukset",
|
||||
"search_filter_filename": "Etsi tiedostonimellä",
|
||||
"search_filter_location": "Sijainti",
|
||||
"search_filter_location_title": "Valitse sijainti",
|
||||
"search_filter_media_type": "Mediatyyppi",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_title": "Valitse mediatyyppi",
|
||||
"search_filter_people_title": "Valitse ihmiset",
|
||||
"search_for": "Hae",
|
||||
@@ -1620,14 +1603,15 @@
|
||||
"setting_image_viewer_title": "Kuvat",
|
||||
"setting_languages_apply": "Käytä",
|
||||
"setting_languages_subtitle": "Vaihda sovelluksen kieli",
|
||||
"setting_notifications_notify_failures_grace_period": "Ilmoita taustalla tapahtuvista varmuuskopiointivirheistä: {duration}",
|
||||
"setting_notifications_notify_hours": "{count} tuntia",
|
||||
"setting_languages_title": "Kieli",
|
||||
"setting_notifications_notify_failures_grace_period": "Ilmoita taustavarmuuskopioinnin epäonnistumisista: {}",
|
||||
"setting_notifications_notify_hours": "{} tuntia",
|
||||
"setting_notifications_notify_immediately": "heti",
|
||||
"setting_notifications_notify_minutes": "{count} minuuttia",
|
||||
"setting_notifications_notify_minutes": "{} minuuttia",
|
||||
"setting_notifications_notify_never": "ei koskaan",
|
||||
"setting_notifications_notify_seconds": "{count} sekuntia",
|
||||
"setting_notifications_notify_seconds": "{} sekuntia",
|
||||
"setting_notifications_single_progress_subtitle": "Yksityiskohtainen tieto palvelimelle lähettämisen edistymisestä kohteittain",
|
||||
"setting_notifications_single_progress_title": "Näytä taustavarmuuskopioinnin edistyminen",
|
||||
"setting_notifications_single_progress_title": "Näytä taustavarmuuskopioinnin eidstminen",
|
||||
"setting_notifications_subtitle": "Ilmoitusasetusten määrittely",
|
||||
"setting_notifications_total_progress_subtitle": "Lähetyksen yleinen edistyminen (kohteita lähetetty/yhteensä)",
|
||||
"setting_notifications_total_progress_title": "Näytä taustavarmuuskopioinnin kokonaisedistyminen",
|
||||
@@ -1637,12 +1621,10 @@
|
||||
"settings": "Asetukset",
|
||||
"settings_require_restart": "Käynnistä Immich uudelleen ottaaksesti tämän asetuksen käyttöön",
|
||||
"settings_saved": "Asetukset tallennettu",
|
||||
"setup_pin_code": "Määritä PIN-koodi",
|
||||
"share": "Jaa",
|
||||
"share_add_photos": "Lisää kuvia",
|
||||
"share_assets_selected": "{count} valittu",
|
||||
"share_assets_selected": "{} valittu",
|
||||
"share_dialog_preparing": "Valmistellaan...",
|
||||
"share_link": "Jaa linkki",
|
||||
"shared": "Jaettu",
|
||||
"shared_album_activities_input_disable": "Kommentointi on kytketty pois päältä",
|
||||
"shared_album_activity_remove_content": "Haluatko poistaa tämän aktiviteetin?",
|
||||
@@ -1655,32 +1637,32 @@
|
||||
"shared_by_user": "Käyttäjän {user} jakama",
|
||||
"shared_by_you": "Sinun jakamasi",
|
||||
"shared_from_partner": "Kumppanin {partner} kuvia",
|
||||
"shared_intent_upload_button_progress_text": "{current} / {total} Lähetetty",
|
||||
"shared_intent_upload_button_progress_text": "{} / {} Lähetetty",
|
||||
"shared_link_app_bar_title": "Jaetut linkit",
|
||||
"shared_link_clipboard_copied_massage": "Kopioitu leikepöydältä",
|
||||
"shared_link_clipboard_text": "Linkki: {link}\nSalasana: {password}",
|
||||
"shared_link_clipboard_text": "Linkki: {}\nSalasana: {}",
|
||||
"shared_link_create_error": "Jaetun linkin luomisessa tapahtui virhe",
|
||||
"shared_link_edit_description_hint": "Lisää jaon kuvaus",
|
||||
"shared_link_edit_expire_after_option_day": "1 päivä",
|
||||
"shared_link_edit_expire_after_option_days": "{count} päivää",
|
||||
"shared_link_edit_expire_after_option_days": "{} päivää",
|
||||
"shared_link_edit_expire_after_option_hour": "1 tunti",
|
||||
"shared_link_edit_expire_after_option_hours": "{count} tuntia",
|
||||
"shared_link_edit_expire_after_option_hours": "{} tuntia",
|
||||
"shared_link_edit_expire_after_option_minute": "1 minuutti",
|
||||
"shared_link_edit_expire_after_option_minutes": "{count} minuuttia",
|
||||
"shared_link_edit_expire_after_option_months": "{count} kuukautta",
|
||||
"shared_link_edit_expire_after_option_year": "{count} vuosi",
|
||||
"shared_link_edit_expire_after_option_minutes": "{} minuuttia",
|
||||
"shared_link_edit_expire_after_option_months": "{} kuukautta",
|
||||
"shared_link_edit_expire_after_option_year": "{} vuosi",
|
||||
"shared_link_edit_password_hint": "Syötä jaon salasana",
|
||||
"shared_link_edit_submit_button": "Päivitä linkki",
|
||||
"shared_link_error_server_url_fetch": "Palvelimen URL-osoitetta ei voitu hakea",
|
||||
"shared_link_expires_day": "Vanhenee {count} päivässä",
|
||||
"shared_link_expires_days": "Vanhenee {count} päivässä",
|
||||
"shared_link_expires_hour": "Vanhenee {count} tunnissa",
|
||||
"shared_link_expires_hours": "Vanhenee {count} tunnissa",
|
||||
"shared_link_expires_minute": "Vanhenee {count} minuutissa",
|
||||
"shared_link_expires_minutes": "Vanhenee {count} minuutissa",
|
||||
"shared_link_expires_day": "Vanhenee {} päivässä",
|
||||
"shared_link_expires_days": "Vanhenee {} päivässä",
|
||||
"shared_link_expires_hour": "Vanhenee {} tunnissa",
|
||||
"shared_link_expires_hours": "Vanhenee {} tunnissa",
|
||||
"shared_link_expires_minute": "Vanhenee {} minuutissa",
|
||||
"shared_link_expires_minutes": "Vanhenee {} minuutissa",
|
||||
"shared_link_expires_never": "Voimassaolo päättyy ∞",
|
||||
"shared_link_expires_second": "Vanhenee {count} sekunnissa",
|
||||
"shared_link_expires_seconds": "Vanhenee {count} sekunnissa",
|
||||
"shared_link_expires_second": "Vanhenee {} sekunnissa",
|
||||
"shared_link_expires_seconds": "Vanhenee {} sekunnissa",
|
||||
"shared_link_individual_shared": "Yksilöllisesti jaettu",
|
||||
"shared_link_info_chip_metadata": "EXIF",
|
||||
"shared_link_manage_links": "Hallitse jaettuja linkkejä",
|
||||
@@ -1755,7 +1737,6 @@
|
||||
"stop_sharing_photos_with_user": "Päätä kuviesi jakaminen tämän käyttäjän kanssa",
|
||||
"storage": "Tallennustila",
|
||||
"storage_label": "Tallennustilan nimike",
|
||||
"storage_quota": "Tallennuskiintiö",
|
||||
"storage_usage": "{used} / {available} käytetty",
|
||||
"submit": "Lähetä",
|
||||
"suggestions": "Ehdotukset",
|
||||
@@ -1777,12 +1758,12 @@
|
||||
"tag_updated": "Päivitetty tunniste: {tag}",
|
||||
"tagged_assets": "Tunnistettu {count, plural, one {# kohde} other {# kohdetta}}",
|
||||
"tags": "Tunnisteet",
|
||||
"template": "Nimeämismalli",
|
||||
"template": "Template",
|
||||
"theme": "Teema",
|
||||
"theme_selection": "Teeman valinta",
|
||||
"theme_selection_description": "Aseta vaalea tai tumma tila automaattisesti perustuen selaimesi asetuksiin",
|
||||
"theme_setting_asset_list_storage_indicator_title": "Näytä tallennustilan ilmaisin kohteiden kuvakkeissa",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Kohteiden määrä rivillä ({count})",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Kohteiden määrä rivillä ({})",
|
||||
"theme_setting_colorful_interface_subtitle": "Levitä pääväri taustalle.",
|
||||
"theme_setting_colorful_interface_title": "Värikäs käyttöliittymä",
|
||||
"theme_setting_image_viewer_quality_subtitle": "Säädä kuvien katselun laatua",
|
||||
@@ -1806,6 +1787,7 @@
|
||||
"to_parent": "Siirry vanhempaan",
|
||||
"to_trash": "Roskakoriin",
|
||||
"toggle_settings": "Määritä asetukset",
|
||||
"toggle_theme": "Aseta tumma teema",
|
||||
"total": "Yhteensä",
|
||||
"total_usage": "Käyttö yhteensä",
|
||||
"trash": "Roskakori",
|
||||
@@ -1816,15 +1798,13 @@
|
||||
"trash_no_results_message": "Roskakorissa olevat kuvat ja videot näytetään täällä.",
|
||||
"trash_page_delete_all": "Poista kaikki",
|
||||
"trash_page_empty_trash_dialog_content": "Haluatko tyhjentää roskakorin? Kohteet poistetaan lopullisesti Immich:sta",
|
||||
"trash_page_info": "Roskakorissa olevat kohteet poistetaan pysyvästi {days} päivän kuluttua",
|
||||
"trash_page_info": "Roskakorissa olevat kohteet poistetaan pysyvästi {} päivän kuluttua",
|
||||
"trash_page_no_assets": "Ei poistettuja kohteita",
|
||||
"trash_page_restore_all": "Palauta kaikki",
|
||||
"trash_page_select_assets_btn": "Valitse kohteet",
|
||||
"trash_page_title": "Roskakori ({count})",
|
||||
"trash_page_title": "Roskakori",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Roskakorin kohteet poistetaan pysyvästi {days, plural, one {# päivän} other {# päivän}} päästä.",
|
||||
"type": "Tyyppi",
|
||||
"unable_to_change_pin_code": "PIN-koodin vaihtaminen epäonnistui",
|
||||
"unable_to_setup_pin_code": "PIN-koodin määrittäminen epäonnistui",
|
||||
"unarchive": "Palauta arkistosta",
|
||||
"unarchived_count": "{count, plural, other {# poistettu arkistosta}}",
|
||||
"unfavorite": "Poista suosikeista",
|
||||
@@ -1845,8 +1825,9 @@
|
||||
"unselect_all_duplicates": "Poista kaikkien kaksoiskappaleiden valinta",
|
||||
"unstack": "Pura pino",
|
||||
"unstacked_assets_count": "Poistettu pinosta {count, plural, one {# kohde} other {# kohdetta}}",
|
||||
"untracked_files": "Tiedostot joita ei seurata",
|
||||
"untracked_files_decription": "Järjestelmä ei seuraa näitä tiedostoja. Ne voivat johtua epäonnistuneista siirroista, keskeytyneistä latauksista, tai ovat jääneet ohjelmavian seurauksena",
|
||||
"up_next": "Seuraavaksi",
|
||||
"updated_at": "Päivitetty",
|
||||
"updated_password": "Salasana päivitetty",
|
||||
"upload": "Siirrä palvelimelle",
|
||||
"upload_concurrency": "Latausten samanaikaisuus",
|
||||
@@ -1859,19 +1840,15 @@
|
||||
"upload_status_errors": "Virheet",
|
||||
"upload_status_uploaded": "Ladattu",
|
||||
"upload_success": "Lataus onnistui. Päivitä sivu jotta näet latauksesi.",
|
||||
"upload_to_immich": "Lähetä Immichiin ({count})",
|
||||
"upload_to_immich": "Lähetä Immichiin ({})",
|
||||
"uploading": "Lähettään",
|
||||
"url": "URL",
|
||||
"usage": "Käyttö",
|
||||
"use_biometric": "Käytä biometriikkaa",
|
||||
"use_current_connection": "käytä nykyistä yhteyttä",
|
||||
"use_custom_date_range": "Käytä omaa aikaväliä",
|
||||
"user": "Käyttäjä",
|
||||
"user_has_been_deleted": "Käyttäjä on poistettu.",
|
||||
"user_id": "Käyttäjän ID",
|
||||
"user_liked": "{user} tykkäsi {type, select, photo {kuvasta} video {videosta} asset {mediasta} other {tästä}}",
|
||||
"user_pin_code_settings": "PIN-koodi",
|
||||
"user_pin_code_settings_description": "Hallinnoi PIN-koodiasi",
|
||||
"user_purchase_settings": "Osta",
|
||||
"user_purchase_settings_description": "Hallitse ostostasi",
|
||||
"user_role_set": "Tee käyttäjästä {user} {role}",
|
||||
@@ -1887,6 +1864,11 @@
|
||||
"version": "Versio",
|
||||
"version_announcement_closing": "Ystäväsi Alex",
|
||||
"version_announcement_message": "Hei! Sovelluksen uusi versio on saatavilla. Käythän vilkaisemassa <link>julkaisun tiedot</link> ja varmistathan, että ohjelman määritykset ovat ajan tasalla. Erityisesti, jos käytössä on Watchtower tai jokin muu mekanismi Immich-sovelluksen automaattista päivitystä varten.",
|
||||
"version_announcement_overlay_release_notes": "julkaisutiedoissa",
|
||||
"version_announcement_overlay_text_1": "Hei, kaveri! Uusi palvelinversio on saatavilla sovelluksesta",
|
||||
"version_announcement_overlay_text_2": "Ota hetki aikaa vieraillaksesi ",
|
||||
"version_announcement_overlay_text_3": " ja varmista, että käyttämäsi docker-compose ja .env-asetukset ovat ajantasalla välttyäksesi asetusongelmilta. Varsinkin jos käytät WatchToweria tai jotain muuta mekanismia päivittääksesi palvelinsovellusta automaattisesti.",
|
||||
"version_announcement_overlay_title": "Uusi palvelinversio saatavilla 🎉",
|
||||
"version_history": "Versiohistoria",
|
||||
"version_history_item": "Asennettu {version} päivänä {date}",
|
||||
"video": "Video",
|
||||
@@ -1906,7 +1888,6 @@
|
||||
"view_previous_asset": "Näytä edellinen",
|
||||
"view_qr_code": "Näytä QR-koodi",
|
||||
"view_stack": "Näytä pinona",
|
||||
"view_user": "Näytä käyttäjä",
|
||||
"viewer_remove_from_stack": "Poista pinosta",
|
||||
"viewer_stack_use_as_main_asset": "Käytä pääkohteena",
|
||||
"viewer_unstack": "Pura pino",
|
||||
@@ -1916,12 +1897,11 @@
|
||||
"week": "Viikko",
|
||||
"welcome": "Tervetuloa",
|
||||
"welcome_to_immich": "Tervetuloa Immichiin",
|
||||
"wifi_name": "Wi-Fi-verkon nimi",
|
||||
"wrong_pin_code": "Väärä PIN-koodi",
|
||||
"wifi_name": "WiFi Name",
|
||||
"year": "Vuosi",
|
||||
"years_ago": "{years, plural, one {# vuosi} other {# vuotta}} sitten",
|
||||
"yes": "Kyllä",
|
||||
"you_dont_have_any_shared_links": "Sinulla ei ole jaettuja linkkejä",
|
||||
"your_wifi_name": "Wi-Fi-verkkosi nimi",
|
||||
"your_wifi_name": "Your WiFi name",
|
||||
"zoom_image": "Zoomaa kuvaa"
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user