diff --git a/.devcontainer/mobile/container-compose-overrides.yml b/.devcontainer/mobile/container-compose-overrides.yml
index d6cd95018f..99e41cbece 100644
--- a/.devcontainer/mobile/container-compose-overrides.yml
+++ b/.devcontainer/mobile/container-compose-overrides.yml
@@ -6,28 +6,35 @@ services:
- 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:/data
+ - ${UPLOAD_LOCATION:-upload-devcontainer-volume}${UPLOAD_LOCATION:+/photos}:/data
+ - pnpm-store:/usr/src/app/.pnpm-store
+ - server-node_modules:/usr/src/app/server/node_modules
+ - web-node_modules:/usr/src/app/web/node_modules
+ - github-node_modules:/usr/src/app/.github/node_modules
+ - cli-node_modules:/usr/src/app/cli/node_modules
+ - docs-node_modules:/usr/src/app/docs/node_modules
+ - e2e-node_modules:/usr/src/app/e2e/node_modules
+ - sdk-node_modules:/usr/src/app/open-api/typescript-sdk/node_modules
+ - app-node_modules:/usr/src/app/node_modules
+ - sveltekit:/usr/src/app/web/.svelte-kit
+ - coverage:/usr/src/app/web/coverage
- /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'
+ POSTGRES_HOST_AUTH_METHOD: md5
volumes:
- - ${UPLOAD_LOCATION}/postgres:/var/lib/postgresql/data
-
+ - ${UPLOAD_LOCATION:-postgres-devcontainer-volume}${UPLOAD_LOCATION:+/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:
-
- # 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:
+ upload-devcontainer-volume:
+ postgres-devcontainer-volume:
diff --git a/.devcontainer/mobile/devcontainer.json b/.devcontainer/mobile/devcontainer.json
index 0dbcc8e9c8..140a2ecac3 100644
--- a/.devcontainer/mobile/devcontainer.json
+++ b/.devcontainer/mobile/devcontainer.json
@@ -40,7 +40,7 @@
"userEnvProbe": "loginInteractiveShell",
"remoteEnv": {
// The location where your uploaded files are stored
- "UPLOAD_LOCATION": "${localEnv:UPLOAD_LOCATION:./Library}",
+ "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}",
diff --git a/.github/.nvmrc b/.github/.nvmrc
index e2228113dd..442c7587a9 100644
--- a/.github/.nvmrc
+++ b/.github/.nvmrc
@@ -1 +1 @@
-22.19.0
+22.20.0
diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml
index 0996c8eccb..f7e9ad5731 100644
--- a/.github/workflows/build-mobile.yml
+++ b/.github/workflows/build-mobile.yml
@@ -55,7 +55,7 @@ jobs:
runs-on: mich
steps:
- - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ref: ${{ inputs.ref || github.sha }}
persist-credentials: false
@@ -66,14 +66,14 @@ jobs:
working-directory: ./mobile
run: printf "%s" $KEY_JKS | base64 -d > android/key.jks
- - uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
+ - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
with:
distribution: 'zulu'
java-version: '17'
- name: Restore Gradle Cache
id: cache-gradle-restore
- uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
+ uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: |
~/.gradle/caches
@@ -130,7 +130,7 @@ jobs:
- name: Save Gradle Cache
id: cache-gradle-save
- uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
+ uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
if: github.ref == 'refs/heads/main'
with:
path: |
diff --git a/.github/workflows/cache-cleanup.yml b/.github/workflows/cache-cleanup.yml
index cdff8ed931..0b4366ba04 100644
--- a/.github/workflows/cache-cleanup.yml
+++ b/.github/workflows/cache-cleanup.yml
@@ -19,7 +19,7 @@ jobs:
actions: write
steps:
- name: Check out code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml
index 777f1898ec..1483b4312b 100644
--- a/.github/workflows/cli.yml
+++ b/.github/workflows/cli.yml
@@ -29,7 +29,7 @@ jobs:
working-directory: ./cli
steps:
- - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
@@ -37,7 +37,7 @@ jobs:
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './cli/.nvmrc'
registry-url: 'https://registry.npmjs.org'
@@ -50,7 +50,7 @@ jobs:
- run: pnpm install --frozen-lockfile
- run: pnpm build
- - run: pnpm publish
+ - run: pnpm publish --no-git-checks
if: ${{ github.event_name == 'release' }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -65,7 +65,7 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
@@ -76,7 +76,7 @@ jobs:
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Login to GitHub Container Registry
- uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
+ uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
if: ${{ !github.event.pull_request.head.repo.fork }}
with:
registry: ghcr.io
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 503dd30d9a..2946f33783 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -44,13 +44,13 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3
+ uses: github/codeql-action/init@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6
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@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3
+ uses: github/codeql-action/autobuild@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6
# ℹ️ 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@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3
+ uses: github/codeql-action/analyze@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6
with:
category: '/language:${{matrix.language}}'
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index 09528346fc..7175dc0a89 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -53,7 +53,7 @@ jobs:
suffix: ['', '-cuda', '-rocm', '-openvino', '-armnn', '-rknn']
steps:
- name: Login to GitHub Container Registry
- uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
+ uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -82,7 +82,7 @@ jobs:
suffix: ['']
steps:
- name: Login to GitHub Container Registry
- uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
+ uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -124,7 +124,7 @@ jobs:
tag-suffix: '-rocm'
platforms: linux/amd64
runner-mapping: '{"linux/amd64": "mich"}'
- uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@129aeda75a450666ce96e8bc8126652e717917a7 # multi-runner-build-workflow-0.1.1
+ uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@946acac326940f8badf09ccf591d9cb345d6a689 # multi-runner-build-workflow-v0.2.1
permissions:
contents: read
actions: read
@@ -147,7 +147,7 @@ jobs:
name: Build and Push Server
needs: pre-job
if: ${{ fromJSON(needs.pre-job.outputs.should_run).server == true }}
- uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@129aeda75a450666ce96e8bc8126652e717917a7 # multi-runner-build-workflow-0.1.1
+ uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@946acac326940f8badf09ccf591d9cb345d6a689 # multi-runner-build-workflow-v0.2.1
permissions:
contents: read
actions: read
diff --git a/.github/workflows/docs-build.yml b/.github/workflows/docs-build.yml
index 0879c30386..1a29bebe47 100644
--- a/.github/workflows/docs-build.yml
+++ b/.github/workflows/docs-build.yml
@@ -47,7 +47,7 @@ jobs:
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
@@ -55,7 +55,7 @@ jobs:
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './docs/.nvmrc'
cache: 'pnpm'
diff --git a/.github/workflows/docs-deploy.yml b/.github/workflows/docs-deploy.yml
index b504b811e3..6643c5abfd 100644
--- a/.github/workflows/docs-deploy.yml
+++ b/.github/workflows/docs-deploy.yml
@@ -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@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
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@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
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@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Load parameters
id: parameters
- uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
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@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
ARTIFACT_JSON: ${{ needs.checks.outputs.artifact }}
with:
diff --git a/.github/workflows/docs-destroy.yml b/.github/workflows/docs-destroy.yml
index 37653c0990..c4b9a9fff3 100644
--- a/.github/workflows/docs-destroy.yml
+++ b/.github/workflows/docs-destroy.yml
@@ -14,7 +14,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
diff --git a/.github/workflows/fix-format.yml b/.github/workflows/fix-format.yml
index 849de79a47..1c57828b0c 100644
--- a/.github/workflows/fix-format.yml
+++ b/.github/workflows/fix-format.yml
@@ -22,7 +22,7 @@ jobs:
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: 'Checkout'
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ steps.generate-token.outputs.token }}
@@ -32,7 +32,7 @@ jobs:
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -48,7 +48,7 @@ jobs:
message: 'chore: fix formatting'
- name: Remove label
- uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
if: always()
with:
script: |
diff --git a/.github/workflows/pr-labeler.yml b/.github/workflows/pr-labeler.yml
index ad73c78cf8..af92a3e215 100644
--- a/.github/workflows/pr-labeler.yml
+++ b/.github/workflows/pr-labeler.yml
@@ -11,4 +11,4 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- - uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
+ - uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index 8b6dc0af1c..a6fa5c802f 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -55,20 +55,20 @@ jobs:
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
token: ${{ steps.generate-token.outputs.token }}
persist-credentials: true
ref: main
- name: Install uv
- uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
+ uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -117,18 +117,18 @@ jobs:
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
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@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: release-apk-signed
- name: Create draft release
- uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836 # v2.3.3
+ uses: softprops/action-gh-release@aec2ec56f94eb8180ceec724245f64ef008b89f5 # v2.4.0
with:
draft: true
tag_name: ${{ env.IMMICH_VERSION }}
diff --git a/.github/workflows/preview-label.yaml b/.github/workflows/preview-label.yaml
index 1d9a0060ad..594214f820 100644
--- a/.github/workflows/preview-label.yaml
+++ b/.github/workflows/preview-label.yaml
@@ -24,7 +24,7 @@ jobs:
permissions:
pull-requests: write
steps:
- - uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
github.rest.issues.removeLabel({
diff --git a/.github/workflows/sdk.yml b/.github/workflows/sdk.yml
index 460e7da4a7..a0d89be598 100644
--- a/.github/workflows/sdk.yml
+++ b/.github/workflows/sdk.yml
@@ -16,7 +16,7 @@ jobs:
run:
working-directory: ./open-api/typescript-sdk
steps:
- - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
@@ -24,7 +24,7 @@ jobs:
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
# Setup .npmrc file to publish to npm
- - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './open-api/typescript-sdk/.nvmrc'
registry-url: 'https://registry.npmjs.org'
@@ -35,6 +35,6 @@ jobs:
- name: Build
run: pnpm build
- name: Publish
- run: pnpm publish
+ run: pnpm publish --no-git-checks
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/.github/workflows/static_analysis.yml b/.github/workflows/static_analysis.yml
index d30f95422c..3e7223be74 100644
--- a/.github/workflows/static_analysis.yml
+++ b/.github/workflows/static_analysis.yml
@@ -42,7 +42,7 @@ jobs:
working-directory: ./mobile
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index ffc5b41f73..3ed57a59ba 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -56,13 +56,13 @@ jobs:
working-directory: ./server
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -93,13 +93,13 @@ jobs:
working-directory: ./cli
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './cli/.nvmrc'
cache: 'pnpm'
@@ -133,13 +133,13 @@ jobs:
working-directory: ./cli
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './cli/.nvmrc'
cache: 'pnpm'
@@ -168,13 +168,13 @@ jobs:
working-directory: ./web
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './web/.nvmrc'
cache: 'pnpm'
@@ -185,7 +185,7 @@ jobs:
- name: Run pnpm install
run: pnpm rebuild && pnpm install --frozen-lockfile
- name: Run linter
- run: pnpm lint:p
+ run: pnpm lint
if: ${{ !cancelled() }}
- name: Run formatter
run: pnpm format
@@ -205,13 +205,13 @@ jobs:
working-directory: ./web
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './web/.nvmrc'
cache: 'pnpm'
@@ -236,13 +236,13 @@ jobs:
contents: read
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './web/.nvmrc'
cache: 'pnpm'
@@ -277,13 +277,13 @@ jobs:
working-directory: ./e2e
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './e2e/.nvmrc'
cache: 'pnpm'
@@ -316,13 +316,13 @@ jobs:
working-directory: ./server
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -347,14 +347,14 @@ jobs:
runner: [ubuntu-latest, ubuntu-24.04-arm]
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
submodules: 'recursive'
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './e2e/.nvmrc'
cache: 'pnpm'
@@ -395,14 +395,14 @@ jobs:
runner: [ubuntu-latest, ubuntu-24.04-arm]
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
submodules: 'recursive'
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './e2e/.nvmrc'
cache: 'pnpm'
@@ -441,7 +441,7 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup Flutter SDK
@@ -466,12 +466,12 @@ jobs:
run:
working-directory: ./machine-learning
steps:
- - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
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@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
+ - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
# TODO: add caching when supported (https://github.com/actions/setup-python/pull/818)
# with:
# python-version: 3.11
@@ -503,13 +503,13 @@ jobs:
working-directory: ./.github
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './.github/.nvmrc'
cache: 'pnpm'
@@ -525,7 +525,7 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Run ShellCheck
@@ -540,13 +540,13 @@ jobs:
contents: read
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -581,7 +581,7 @@ jobs:
contents: read
services:
postgres:
- image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3@sha256:da52bbead5d818adaa8077c8dcdaad0aaf93038c31ad8348b51f9f0ec1310a4d
+ image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3@sha256:dbf18b3ffea4a81434c65b71e20d27203baf903a0275f4341e4c16dfd901fd67
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
@@ -595,13 +595,13 @@ jobs:
working-directory: ./server
steps:
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 0cc9b256ca..9ed2bb77b8 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -18,6 +18,20 @@
"name": "Immich Workers",
"remoteRoot": "/usr/src/app/server",
"localRoot": "${workspaceFolder}/server"
+ },
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "Immich CLI",
+ "program": "${workspaceFolder}/cli/dist/index.js",
+ "args": ["upload", "--help"],
+ "runtimeArgs": ["--enable-source-maps"],
+ "console": "integratedTerminal",
+ "resolveSourceMapLocations": ["${workspaceFolder}/cli/dist/**/*.js.map"],
+ "sourceMaps": true,
+ "outFiles": ["${workspaceFolder}/cli/dist/**/*.js"],
+ "skipFiles": ["
- In the dialog, select which user should own the new library
-
+
- Click the three-dots menu and select **Edit Import Paths**
diff --git a/docs/docs/install/environment-variables.md b/docs/docs/install/environment-variables.md
index e606d03dee..78a5289bf4 100644
--- a/docs/docs/install/environment-variables.md
+++ b/docs/docs/install/environment-variables.md
@@ -171,6 +171,7 @@ Redis (Sentinel) URL example JSON before encoding:
| `MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITION` | Set the maximum number of faces that will be processed at once by the facial recognition model | None (`1` if using OpenVINO) | machine learning |
| `MACHINE_LEARNING_RKNN` | Enable RKNN hardware acceleration if supported | `True` | machine learning |
| `MACHINE_LEARNING_RKNN_THREADS` | How many threads of RKNN runtime should be spinned up while inferencing. | `1` | machine learning |
+| `MACHINE_LEARNING_MODEL_ARENA` | Pre-allocates CPU memory to avoid memory fragmentation | true | machine learning |
\*1: It is recommended to begin with this parameter when changing the concurrency levels of the machine learning service and then tune the other ones.
diff --git a/docs/docs/install/one-click.md b/docs/docs/install/one-click.md
new file mode 100644
index 0000000000..53fcb20d21
--- /dev/null
+++ b/docs/docs/install/one-click.md
@@ -0,0 +1,32 @@
+---
+sidebar_position: 65
+---
+
+# One-Click [Cloud Service]
+
+:::note
+This version of Immich is provided via cloud service providers' one-click marketplaces. Hosting costs are set by the cloud service providers.
+Support for these are provided by the individual cloud service providers.
+
+**Please report issues to the corresponding [Github Repository][github].**
+:::
+
+## Installation
+
+Go to the provider's marketplace and choose Immich, then follow the provided instructions.
+
+## One-Click Immich marketplace providers
+
+### DigitalOcean
+
+https://marketplace.digitalocean.com/apps/immich
+
+### Vultr
+
+https://www.vultr.com/marketplace/apps/immich
+
+## Issues
+
+For issues, open an issue on the associated [GitHub Repository][github].
+
+[github]: https://github.com/immich-app/immich/
diff --git a/docs/docs/install/synology.md b/docs/docs/install/synology.md
index 463b9bde3c..3e5b780db2 100644
--- a/docs/docs/install/synology.md
+++ b/docs/docs/install/synology.md
@@ -16,7 +16,7 @@ Immich can easily be installed on a Synology NAS using Container Manager within
## Step 1 - Download the required files
-Create a directory of your choice (e.g. `./immich-app`) to house Immich. In general, it's a best practice to have all Docker-based applications running under the `./docker` directory, so in this case, your directory structure will look like `./docker/immich-app`.
+Create a directory of your choice (e.g. `./immich-app`) to house Immich. In general, it's best practice to have all Docker-based applications running under the `./docker` directory, so in this case, your directory structure will look like `./docker/immich-app`.
Now create a `./postgres` and `./library` directory as sub-directories of the `./docker/immich-app`.
@@ -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, and rename `example.env` to `.env`. Note: If you plan to use the Synology Text editor to edit the `.env` file on the NAS within File Station, you will need to rename it to a temporary name (e.g. `example.txt`) in order to see 'Open with Text Editor' in the file context menu. Once saved, rename it back to `.env`.
## Step 2 - Populate the .env file with custom values
@@ -34,23 +34,23 @@ Follow [Step 2 in Docker Compose](/install/docker-compose#step-2---populate-the-
## Step 3 - Create a new project in Container Manager
Open Container Manager, and select the "**Project**" action on the left navigation bar and then click "**Create**".
-
+
In the settings of your new project, set "**Project name**" to a name you'll remember, such as _immich-app_. When setting the "**Path**", select the `./docker/immich-app` directory you created earlier. Doing so will prompt a message to use the existing `docker-compose.yml` already present in the directory for your project. Click "**OK**" to continue.
-
+
-The following screen will give you the option to further customize your `docker-compose.yml` file, giving you a warning regarding the `start_interval` property. Under the `healthcheck` heading, remove the `start_interval: 30s` completely and click "**Next**".
+The following screen will give you the option to further customize your `docker-compose.yml` file. Take note of `DB_STORAGE_TYPE: 'HDD'` and uncomment if applicable for your Synology setup.
-
+
Skip the section asking to set-up a portal for Web Station, and then complete the wizard which will build and start the containers for your project.
Once your containers are successfully running, navigate to the "**Container**" section of Container Manager, right-click on the "**immich-server**" container, and choose the "**Details**".
-Scroll to the bottom of the "**Details**" section, and find the `IP Address` of the container, located in the `Network` section. Take note of the container's IP address as you will need it for **Step 4**.
+Scroll to the bottom of the "**Details**" section and find the `IP Address` listed in the `Network` section. Take note of the container's IP address as you will need it for **Step 4**.
-
+
## Step 4 - Configure Firewall Settings
@@ -63,8 +63,66 @@ Open "**Control Panel**" on your Synology NAS, and select "**Security**". Naviga
Click "**Edit Rules**" and add the following firewall rules:
- Add a "**Source IP**" rule for the IP address of your container that you obtained in Step 3 above
+
+
+
- Add a "**Ports**" rule for the port specified in the `docker-compose.yml`, which should be `2283`
+
+
## Next Steps
Read the [Post Installation](/install/post-install.mdx) steps and [upgrade instructions](/install/upgrading.md).
+
+{label} is die Speicherpfadbezeichnung des Benutzers",
"system_settings": "Systemeinstellungen",
"tag_cleanup_job": "Tags aufräumen",
- "template_email_available_tags": "In deiner Vorlage kannst du die folgenden Variablen verwenden: {tags}",
- "template_email_if_empty": "Wenn die Vorlage leer ist, wird die Standard-E-Mail verwendet.",
- "template_email_invite_album": "E-Mail-Vorlage: Einladung zu Album",
+ "template_email_available_tags": "Du kannst die folgenden Variablen in deiner Vorlage verwenden: {tags}",
+ "template_email_if_empty": "Wenn die Vorlage leer ist, wird die Standard-E-Mail-Vorlage verwendet.",
+ "template_email_invite_album": "Einladung zu Album",
"template_email_preview": "Vorschau",
"template_email_settings": "E-Mail-Vorlagen",
- "template_email_update_album": "Album-Vorlage aktualisieren",
- "template_email_welcome": "Willkommen bei den E-Mail-Vorlagen",
+ "template_email_update_album": "Aktualisiertes Album",
+ "template_email_welcome": "Willkommens-E-Mail",
"template_settings": "Benachrichtigungsvorlagen",
"template_settings_description": "Benutzerdefinierte Vorlagen für Benachrichtigungen verwalten",
"theme_custom_css_settings": "Benutzerdefiniertes CSS",
@@ -538,18 +539,18 @@
"autoplay_slideshow": "Automatische Diashow",
"back": "Zurück",
"back_close_deselect": "Zurück, Schließen oder Abwählen",
- "background_backup_running_error": "Hintergrund Sicherung läuft, kann manuelle Sicherung nicht starten",
+ "background_backup_running_error": "Sicherung läuft im Hintergrund. Manuelle Sicherung kann nicht gestartet werden",
"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",
"background_options": "Hintergrund Optionen",
"backup": "Sicherung",
"backup_album_selection_page_albums_device": "Alben auf dem Gerät ({count})",
- "backup_album_selection_page_albums_tap": "Einmalig das Album antippen um es zu sichern, doppelt antippen um es nicht mehr zu sichern",
+ "backup_album_selection_page_albums_tap": "Antippen zum sichern, erneut antippen zum Ausschließen",
"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",
- "backup_album_selection_page_selection_info": "Information",
- "backup_album_selection_page_total_assets": "Elemente",
- "backup_albums_sync": "Synchronisation von Alben beim Backup",
+ "backup_album_selection_page_selection_info": "Auswahlinformation",
+ "backup_album_selection_page_total_assets": "Elemente gesamt",
+ "backup_albums_sync": "Synchronisation der Sicherungsalben",
"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…",
@@ -599,6 +600,7 @@
"backup_controller_page_turn_on": "Sicherung im Vordergrund einschalten",
"backup_controller_page_uploading_file_info": "Informationen",
"backup_err_only_album": "Das einzige Album kann nicht entfernt werden",
+ "backup_error_sync_failed": "Synchronisierung fehlgeschlagen. Sicherung kann nicht verarbeitet werden.",
"backup_info_card_assets": "Elemente",
"backup_manual_cancelled": "Abgebrochen",
"backup_manual_in_progress": "Sicherung läuft bereits. Bitte versuche es später erneut",
@@ -1037,6 +1039,7 @@
"exif_bottom_sheet_description_error": "Fehler bei der Aktualisierung der Beschreibung",
"exif_bottom_sheet_details": "DETAILS",
"exif_bottom_sheet_location": "STANDORT",
+ "exif_bottom_sheet_no_description": "Keine Beschreibung",
"exif_bottom_sheet_people": "PERSONEN",
"exif_bottom_sheet_person_add_person": "Namen hinzufügen",
"exit_slideshow": "Diashow beenden",
@@ -1953,7 +1956,7 @@
"sync_remote": "mit Server synchronisieren",
"sync_status": "Synchronisierungstatus",
"sync_status_subtitle": "Synchronisierungssystem anzeigen und bearbeiten",
- "sync_upload_album_setting_subtitle": "Erstelle deine ausgewählten Alben in Immich und lade die Fotos und Videos dort hoch",
+ "sync_upload_album_setting_subtitle": "Erstelle und lade deine ausgewählten Fotos und Videos in die ausgewählten Alben auf Immich hoch",
"tag": "Tag",
"tag_assets": "Dateien taggen",
"tag_created": "Tag erstellt: {tag}",
diff --git a/i18n/el.json b/i18n/el.json
index 6e2f543c1f..6f6835b441 100644
--- a/i18n/el.json
+++ b/i18n/el.json
@@ -28,10 +28,12 @@
"add_to_album": "Προσθήκη σε άλμπουμ",
"add_to_album_bottom_sheet_added": "Προστέθηκε στο {album}",
"add_to_album_bottom_sheet_already_exists": "Ήδη στο {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Ορισμένοι τοπικά στοιχεία δεν μπόρεσαν να προστεθούν στο άλμπουμ",
"add_to_album_toggle": "Εναλλαγή επιλογής για το {album}",
"add_to_albums": "Προσθήκη στα άλμπουμ",
"add_to_albums_count": "Προσθήκη στα άλμπουμ ({count})",
"add_to_shared_album": "Προσθήκη σε κοινόχρηστο άλμπουμ",
+ "add_upload_to_stack": "Προσθήκη αρχείου στην ουρά",
"add_url": "Προσθήκη Συνδέσμου",
"added_to_archive": "Προστέθηκε στο αρχείο",
"added_to_favorites": "Προστέθηκε στα αγαπημένα",
@@ -598,6 +600,7 @@
"backup_controller_page_turn_on": "Ενεργοποίηση δημιουργίας αντιγράφου ασφαλείας στο προσκήνιο",
"backup_controller_page_uploading_file_info": "Μεταφόρτωση πληροφοριών αρχείου",
"backup_err_only_album": "Δεν είναι δυνατή η αφαίρεση του μοναδικού άλμπουμ",
+ "backup_error_sync_failed": "Ο συγχρονισμός απέτυχε. Δεν είναι δυνατή η επεξεργασία του αντιγράφου ασφαλείας.",
"backup_info_card_assets": "στοιχεία",
"backup_manual_cancelled": "Ακυρώθηκε",
"backup_manual_in_progress": "Μεταφόρτωση σε εξέλιξη. Δοκιμάστε αργότερα",
diff --git a/i18n/en.json b/i18n/en.json
index e86b56be85..d265c9b9d8 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -33,6 +33,7 @@
"add_to_albums": "Add to albums",
"add_to_albums_count": "Add to albums ({count})",
"add_to_shared_album": "Add to shared album",
+ "add_upload_to_stack": "Add upload to stack",
"add_url": "Add URL",
"added_to_archive": "Added to archive",
"added_to_favorites": "Added to favorites",
@@ -210,6 +211,8 @@
"notification_email_ignore_certificate_errors_description": "Ignore TLS certificate validation errors (not recommended)",
"notification_email_password_description": "Password to use when authenticating with the email server",
"notification_email_port_description": "Port of the email server (e.g 25, 465, or 587)",
+ "notification_email_secure": "SMTPS",
+ "notification_email_secure_description": "Use SMTPS (SMTP over TLS)",
"notification_email_sent_test_email_button": "Send test email and save",
"notification_email_setting_description": "Settings for sending email notifications",
"notification_email_test_email": "Send test email",
@@ -332,7 +335,7 @@
"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",
- "transcoding_max_bitrate_description": "Setting a max bitrate can make file sizes more predictable at a minor cost to quality. At 720p, typical values are 2600 kbit/s for VP9 or HEVC, or 4500 kbit/s for H.264. Disabled if set to 0.",
+ "transcoding_max_bitrate_description": "Setting a max bitrate can make file sizes more predictable at a minor cost to quality. At 720p, typical values are 2600 kbit/s for VP9 or HEVC, or 4500 kbit/s for H.264. Disabled if set to 0. When no unit is specified, k (for kbit/s) is assumed; therefore 5000, 5000k, and 5M (for Mbit/s) are equivalent.",
"transcoding_max_keyframe_interval": "Maximum keyframe interval",
"transcoding_max_keyframe_interval_description": "Sets the maximum frame distance between keyframes. Lower values worsen compression efficiency, but improve seek times and may improve quality in scenes with fast movement. 0 sets this value automatically.",
"transcoding_optimal_description": "Videos higher than target resolution or not in an accepted format",
@@ -350,7 +353,7 @@
"transcoding_target_resolution": "Target resolution",
"transcoding_target_resolution_description": "Higher resolutions can preserve more detail but take longer to encode, have larger file sizes, and can reduce app responsiveness.",
"transcoding_temporal_aq": "Temporal AQ",
- "transcoding_temporal_aq_description": "Applies only to NVENC. Increases quality of high-detail, low-motion scenes. May not be compatible with older devices.",
+ "transcoding_temporal_aq_description": "Applies only to NVENC. Temporal Adaptive Quantization increases quality of high-detail, low-motion scenes. May not be compatible with older devices.",
"transcoding_threads": "Threads",
"transcoding_threads_description": "Higher values lead to faster encoding, but leave less room for the server to process other tasks while active. This value should not be more than the number of CPU cores. Maximizes utilization if set to 0.",
"transcoding_tone_mapping": "Tone-mapping",
@@ -465,9 +468,11 @@
"api_key_description": "This value will only be shown once. Please be sure to copy it before closing the window.",
"api_key_empty": "Your API Key name shouldn't be empty",
"api_keys": "API Keys",
+ "app_architecture_variant": "Variant (Architecture)",
"app_bar_signout_dialog_content": "Are you sure you want to sign out?",
"app_bar_signout_dialog_ok": "Yes",
"app_bar_signout_dialog_title": "Sign out",
+ "app_download_links": "App Download Links",
"app_settings": "App Settings",
"appears_in": "Appears in",
"apply_count": "Apply ({count, number})",
@@ -1038,6 +1043,7 @@
"exif_bottom_sheet_description_error": "Error updating description",
"exif_bottom_sheet_details": "DETAILS",
"exif_bottom_sheet_location": "LOCATION",
+ "exif_bottom_sheet_no_description": "No description",
"exif_bottom_sheet_people": "PEOPLE",
"exif_bottom_sheet_person_add_person": "Add name",
"exit_slideshow": "Exit Slideshow",
@@ -1344,6 +1350,8 @@
"minute": "Minute",
"minutes": "Minutes",
"missing": "Missing",
+ "mobile_app": "Mobile App",
+ "mobile_app_download_onboarding_note": "You can access these options again from the Utilities page.",
"model": "Model",
"month": "Month",
"monthly_title_text_date_format": "MMMM y",
@@ -1362,6 +1370,8 @@
"my_albums": "My albums",
"name": "Name",
"name_or_nickname": "Name or nickname",
+ "navigate": "Navigate",
+ "navigate_to_time": "Navigate to Time",
"network_requirement_photos_upload": "Use cellular data to backup photos",
"network_requirement_videos_upload": "Use cellular data to backup videos",
"network_requirements": "Network Requirements",
@@ -1371,6 +1381,7 @@
"never": "Never",
"new_album": "New Album",
"new_api_key": "New API Key",
+ "new_date_range": "New date range",
"new_password": "New password",
"new_person": "New person",
"new_pin_code": "New PIN code",
@@ -1421,6 +1432,8 @@
"notifications": "Notifications",
"notifications_setting_description": "Manage notifications",
"oauth": "OAuth",
+ "obtainium_configurator": "Obtainium Configurator",
+ "obtainium_configurator_instructions": "Please create an API key and select a variant to create your Obtainium configuration link.",
"official_immich_resources": "Official Immich Resources",
"offline": "Offline",
"offset": "Offset",
@@ -1805,6 +1818,8 @@
"setting_notifications_subtitle": "Adjust your notification preferences",
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)",
"setting_notifications_total_progress_title": "Show background backup total progress",
+ "setting_video_viewer_auto_play_subtitle": "Automatically start playing videos when they are opened",
+ "setting_video_viewer_auto_play_title": "Auto play videos",
"setting_video_viewer_looping_title": "Looping",
"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",
diff --git a/i18n/es.json b/i18n/es.json
index d2cd6924c4..c08f93da08 100644
--- a/i18n/es.json
+++ b/i18n/es.json
@@ -33,6 +33,7 @@
"add_to_albums": "Incluir en álbumes",
"add_to_albums_count": "Incluir en {count} álbumes",
"add_to_shared_album": "Incluir en álbum compartido",
+ "add_upload_to_stack": "Añadir archivo y apilar",
"add_url": "Agregar URL",
"added_to_archive": "Agregado al Archivado",
"added_to_favorites": "Agregado a favoritos",
@@ -599,6 +600,7 @@
"backup_controller_page_turn_on": "Activar la copia de seguridad",
"backup_controller_page_uploading_file_info": "Subiendo información del archivo",
"backup_err_only_album": "No se puede eliminar el único álbum",
+ "backup_error_sync_failed": "La sincronización falló. No es posible procesar la copia de seguridad.",
"backup_info_card_assets": "elementos",
"backup_manual_cancelled": "Cancelado",
"backup_manual_in_progress": "Subida ya en progreso. Vuelve a intentarlo más tarde",
@@ -1088,7 +1090,7 @@
"folders": "Carpetas",
"folders_feature_description": "Explorar la vista de carpetas para las fotos y los videos en el sistema de archivos",
"forgot_pin_code_question": "¿Olvidaste tu código PIN?",
- "forward": "Reenviar",
+ "forward": "Avanzar",
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Esta funcionalidad carga recursos externos desde Google para poder funcionar.",
"general": "General",
@@ -1905,7 +1907,7 @@
"skip_to_content": "Saltar al contenido",
"skip_to_folders": "Ir a las carpetas",
"skip_to_tags": "Ir a las etiquetas",
- "slideshow": "Diapositivas",
+ "slideshow": "Pase de diapositivas",
"slideshow_settings": "Ajustes de diapositivas",
"sort_albums_by": "Ordenar álbumes por…",
"sort_created": "Fecha de creación",
diff --git a/i18n/et.json b/i18n/et.json
index d451606dae..bfd083ad4e 100644
--- a/i18n/et.json
+++ b/i18n/et.json
@@ -33,6 +33,7 @@
"add_to_albums": "Lisa albumitesse",
"add_to_albums_count": "Lisa albumitesse ({count})",
"add_to_shared_album": "Lisa jagatud albumisse",
+ "add_upload_to_stack": "Virnasta üleslaaditud üksus",
"add_url": "Lisa URL",
"added_to_archive": "Lisatud arhiivi",
"added_to_favorites": "Lisatud lemmikutesse",
@@ -599,6 +600,7 @@
"backup_controller_page_turn_on": "Lülita esiplaanil varundus sisse",
"backup_controller_page_uploading_file_info": "Faili info üleslaadimine",
"backup_err_only_album": "Ei saa ainsat albumit eemaldada",
+ "backup_error_sync_failed": "Sünkroonimine ebaõnnestus. Varundust ei saa töödelda.",
"backup_info_card_assets": "üksused",
"backup_manual_cancelled": "Tühistatud",
"backup_manual_in_progress": "Üleslaadimine juba käib. Proovi hiljem uuesti",
@@ -1037,6 +1039,7 @@
"exif_bottom_sheet_description_error": "Viga kirjelduse muutmisel",
"exif_bottom_sheet_details": "ÜKSIKASJAD",
"exif_bottom_sheet_location": "ASUKOHT",
+ "exif_bottom_sheet_no_description": "Kirjeldus puudub",
"exif_bottom_sheet_people": "ISIKUD",
"exif_bottom_sheet_person_add_person": "Lisa nimi",
"exit_slideshow": "Sulge slaidiesitlus",
@@ -1323,7 +1326,7 @@
"marked_all_as_read": "Kõik märgiti loetuks",
"matches": "Ühtivad failid",
"matching_assets": "Ühtivad üksused",
- "media_type": "Meediumi tüüp",
+ "media_type": "Üksuse tüüp",
"memories": "Mälestused",
"memories_all_caught_up": "Ongi kõik",
"memories_check_back_tomorrow": "Vaata homme juba uusi mälestusi",
@@ -1406,6 +1409,7 @@
"no_results_description": "Proovi sünonüümi või üldisemat märksõna",
"no_shared_albums_message": "Lisa album, et fotosid ja videosid teistega jagada",
"no_uploads_in_progress": "Üleslaadimisi käimas ei ole",
+ "not_available": "Pole saadaval",
"not_in_any_album": "Pole üheski albumis",
"not_selected": "Ei ole valitud",
"note_apply_storage_label_to_previously_uploaded assets": "Märkus: Et rakendada talletussilt varem üleslaaditud üksustele, käivita",
@@ -1583,6 +1587,7 @@
"purchase_server_description_2": "Toetaja staatus",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Serveri tootevõtit haldab administraator",
+ "query_asset_id": "Päringu üksuse ID",
"queue_status": "Järjekorras {count}/{total}",
"rating": "Hinnang",
"rating_clear": "Tühjenda hinnang",
@@ -1710,8 +1715,8 @@
"search_filter_filename": "Otsi failinime alusel",
"search_filter_location": "Asukoht",
"search_filter_location_title": "Vali asukoht",
- "search_filter_media_type": "Meediumi tüüp",
- "search_filter_media_type_title": "Vali meediumi tüüp",
+ "search_filter_media_type": "Üksuse tüüp",
+ "search_filter_media_type_title": "Vali üksuse tüüp",
"search_filter_people_title": "Vali isikud",
"search_for": "Otsi",
"search_for_existing_person": "Otsi olemasolevat isikut",
diff --git a/i18n/fi.json b/i18n/fi.json
index 769b528f4c..a940493d95 100644
--- a/i18n/fi.json
+++ b/i18n/fi.json
@@ -28,6 +28,7 @@
"add_to_album": "Lisää albumiin",
"add_to_album_bottom_sheet_added": "Lisätty albumiin {album}",
"add_to_album_bottom_sheet_already_exists": "Kohde on jo albumissa {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Joitakin osia paikallisesta sisällöstä ei pystytty lisämään albumiin",
"add_to_album_toggle": "Vaihda albumin {album} valintaa",
"add_to_albums": "Lisää albumeihin",
"add_to_albums_count": "Lisää albumeihin ({count})",
@@ -39,7 +40,7 @@
"admin": {
"add_exclusion_pattern_description": "Lisää mallit, jonka mukaan jätetään tiedostoja pois. Jokerimerkit *, ** ja ? ovat tuettuna. Jättääksesi pois kaikki tiedostot mistä tahansa löytyvästä kansiosta \"Raw\" käytä \"**/Raw/**\". Jättääksesi pois kaikki \". tif\" päätteiset tiedot, käytä \"**/*.tif\". Jättääksesi pois tarkan tiedostopolun, käytä \"/path/to/ignore/**\".",
"admin_user": "Ylläpitäjä",
- "asset_offline_description": "Ulkoista kirjaston resurssia ei enää löydy levyltä, ja se on siirretty roskakoriin. Jos tiedosto siirrettiin kirjaston sisällä, tarkista aikajanaltasi uusi vastaava resurssi. Palautaaksesi tämän resurssin, varmista, että alla oleva tiedostopolku on Immichin käytettävissä ja skannaa kirjasto uudelleen.",
+ "asset_offline_description": "Ulkoista kirjaston resurssia ei enää löydy levyltä, ja se on siirretty roskakoriin. Jos tiedosto siirrettiin kirjaston sisällä, tarkista aikajanaltasi uusi vastaava resurssi. Palauttaaksesi tämän resurssin, varmista, että alla oleva tiedostopolku on Immichin käytettävissä ja skannaa kirjasto uudelleen.",
"authentication_settings": "Autentikointiasetukset",
"authentication_settings_description": "Hallitse salasana-, OAuth- ja muut autentikoinnin asetukset",
"authentication_settings_disable_all": "Haluatko varmasti poistaa kaikki kirjautumistavat käytöstä? Kirjautuminen on tämän jälkeen mahdotonta.",
@@ -149,7 +150,7 @@
"machine_learning_max_recognition_distance": "Suurin kasvojen eroavaisuus",
"machine_learning_max_recognition_distance_description": "Kahden kasvon suurin eroavaisuus, milloin ne vielä mielletään samaksi henkilöksi, välillä 0-2. Arvoa alentamalla voidaan ehkäistä kahden saman näköisen henkilön mieltäminen samaksi henkilöksi, kun taas korottamalla voidaan ehkäistä saman henkilön mieltäminen kahdeksi erilliseksi henkilöksi. Huomaa että on helpompaa yhdistää kaksi, kuin erottaa, joten suosi mahdollisimman matalaa arvoa.",
"machine_learning_min_detection_score": "Tunnistuksen vähimmäistulos",
- "machine_learning_min_detection_score_description": "Pienin kasvojen tunnistamisessa saatu vahvuusarvo välillä 0-1. Matalammalla arvolla havaitaan enemmän kascoja, mutta voi lisätä virhearvioiden määrää.",
+ "machine_learning_min_detection_score_description": "Pienin kasvojen tunnistamisessa saatu vahvuusarvo välillä 0-1. Matalammalla arvolla havaitaan enemmän kasvoja, mutta voi lisätä virhearvioiden määrää.",
"machine_learning_min_recognized_faces": "Tunnistettujen kasvojen vähimmäismäärä",
"machine_learning_min_recognized_faces_description": "Luotavan käyttäjän kasvojen vähimmäismäärä. Arvoa nostamalla kasvojentunnistuksen tarkkuus paranee, mutta todennäköisyys sille, että kasvoja ei osata yhdistää henkilöön kasvaa.",
"machine_learning_settings": "Koneoppimisen asetukset",
@@ -183,7 +184,7 @@
"metadata_settings": "Metatietoasetukset",
"metadata_settings_description": "Hallitse metatietoja",
"migration_job": "Migraatio",
- "migration_job_description": "Migroi aineiston pikkukuvat ja kasvot uusimpaan kansiorakenteeseen",
+ "migration_job_description": "Migratoi aineiston pikkukuvat ja kasvot uusimpaan kansiorakenteeseen",
"nightly_tasks_cluster_faces_setting_description": "Aja kasvojen tunnistus uusiin tunnistettuihin kasvoihin",
"nightly_tasks_cluster_new_faces_setting": "Kokoa uudet kasvot",
"nightly_tasks_database_cleanup_setting": "Tietokannan puhdistuksen tehtävät",
@@ -203,7 +204,7 @@
"note_apply_storage_label_previous_assets": "Huom: Asettaaksesi nimikkeen aiemmin ladatulle aineistolle, aja",
"note_cannot_be_changed_later": "Huom: Tätä ei voi enää myöhemmin vaihtaa!",
"notification_email_from_address": "Lähettäjän osoite",
- "notification_email_from_address_description": "Lähettäjän sähköpostiosoite. Esimerkiksi \"Immich-kuvapalvelin {label} é a Etiqueta de Almacenamento do usuario",
"system_settings": "Configuración do Sistema",
"tag_cleanup_job": "Limpeza de etiquetas",
- "template_email_available_tags": "Podes usar as seguintes variables no teu modelo: {tags}",
+ "template_email_available_tags": "Pode usar as seguintes variables no seu modelo: {tags}",
"template_email_if_empty": "Se o modelo está baleiro, usarase o correo electrónico predeterminado.",
"template_email_invite_album": "Modelo de Invitación a Álbum",
"template_email_preview": "Vista previa",
@@ -286,15 +294,15 @@
"template_email_update_album": "Modelo de Actualización de Álbum",
"template_email_welcome": "Modelo de correo electrónico de benvida",
"template_settings": "Modelos de Notificación",
- "template_settings_description": "Xestionar modelos personalizados para notificacións.",
+ "template_settings_description": "Xestionar modelos personalizados para notificacións",
"theme_custom_css_settings": "CSS Personalizado",
- "theme_custom_css_settings_description": "As Follas de Estilo en Cascada permiten personalizar o deseño de Immich.",
+ "theme_custom_css_settings_description": "As Follas de Estilo en Cascada (CSS) permiten personalizar o deseño de Immich.",
"theme_settings": "Configuración do Tema",
"theme_settings_description": "Xestionar a personalización da interface web de Immich",
"thumbnail_generation_job": "Xerar Miniaturas",
"thumbnail_generation_job_description": "Xerar miniaturas grandes, pequenas e borrosas para cada activo, así como miniaturas para cada persoa",
"transcoding_acceleration_api": "API de aceleración",
- "transcoding_acceleration_api_description": "A API que interactuará co teu dispositivo para acelerar a transcodificación. Esta configuración é de 'mellor esforzo': recurrirá á transcodificación por software en caso de fallo. VP9 pode funcionar ou non dependendo do teu hardware.",
+ "transcoding_acceleration_api_description": "A API que interactuará co seu dispositivo para acelerar a transcodificación. Esta configuración é de 'mellor esforzo': recurrirá á transcodificación por software en caso de fallo. VP9 pode funcionar ou non dependendo do seu hardware.",
"transcoding_acceleration_nvenc": "NVENC (require GPU NVIDIA)",
"transcoding_acceleration_qsv": "Quick Sync (require CPU Intel de 7ª xeración ou posterior)",
"transcoding_acceleration_rkmpp": "RKMPP (só en SOCs Rockchip)",
@@ -309,16 +317,16 @@
"transcoding_audio_codec": "Códec de audio",
"transcoding_audio_codec_description": "Opus é a opción de maior calidade, pero ten menor compatibilidade con dispositivos ou software antigos.",
"transcoding_bitrate_description": "Vídeos cun bitrate superior ao máximo ou que non estean nun formato aceptado",
- "transcoding_codecs_learn_more": "Para saber máis sobre a terminoloxía usada aquí, consulte a documentación de FFmpeg para {label} je korisnička oznaka za pohranu",
"system_settings": "Postavke Sustava",
"tag_cleanup_job": "Čišćenje oznaka",
@@ -292,7 +298,7 @@
"theme_settings": "Postavke tema",
"theme_settings_description": "Upravljajte prilagodbom Immich web sučelja",
"thumbnail_generation_job": "Generirajte sličice",
- "thumbnail_generation_job_description": "Generirajte velike, male i zamućene sličice za svaki materijal, kao i sličice za svaku osobu",
+ "thumbnail_generation_job_description": "Generirajte velike, male i zamućene sličice za svaku stavku, kao i sličice za svaku osobu",
"transcoding_acceleration_api": "API ubrzanja",
"transcoding_acceleration_api_description": "API koji će komunicirati s vašim uređajem radi ubrzanja transkodiranja. Ova postavka je 'najveći trud': vratit će se na softversko transkodiranje u slučaju kvara. VP9 može ili ne mora raditi ovisno o vašem hardveru.",
"transcoding_acceleration_nvenc": "NVENC (zahtjeva NVIDIA GPU)",
@@ -355,20 +361,20 @@
"transcoding_video_codec_description": "VP9 ima visoku učinkovitost i web-kompatibilnost, ali treba dulje za transkodiranje. HEVC ima sličnu izvedbu, ali ima slabiju web kompatibilnost. H.264 široko je kompatibilan i brzo se transkodira, ali proizvodi mnogo veće datoteke. AV1 je najučinkovitiji kodek, ali nema podršku na starijim uređajima.",
"trash_enabled_description": "Omogućite značajke Smeća",
"trash_number_of_days": "Broj dana",
- "trash_number_of_days_description": "Broj dana za držanje sredstava u smeću prije njihovog trajnog uklanjanja",
+ "trash_number_of_days_description": "Broj dana za čuvanje stavki u smeću prije njihovog trajnog uklanjanja",
"trash_settings": "Postavke Smeća",
"trash_settings_description": "Upravljanje postavkama smeća",
"unlink_all_oauth_accounts": "Odspoji sve OAuth račune",
"unlink_all_oauth_accounts_description": "Zapamtite da odspojite sve OAuth račune prije prelaska na novog pružatelja usluge.",
"unlink_all_oauth_accounts_prompt": "Jeste li sigurni da želite odspojiti sve OAuth račune? Ovo će resetirati OAuth ID za svakog korisnika i ne može se poništiti.",
"user_cleanup_job": "Čišćenje korisnika",
- "user_delete_delay": "Račun i sredstva korisnika {user} bit će zakazani za trajno brisanje za {delay, plural, one {# day} other {# days}}.",
+ "user_delete_delay": "Račun i stavke korisnika {user} bit će stavljeni u red čekanja trajnog brisanja za {delay, plural, one {# dan} other {# dana}}.",
"user_delete_delay_settings": "Brisanje odgode",
- "user_delete_delay_settings_description": "Broj dana nakon uklanjanja za trajno brisanje korisničkog računa i imovine. Posao brisanja korisnika pokreće se u ponoć kako bi se provjerili korisnici koji su spremni za brisanje. Promjene ove postavke bit će procijenjene pri sljedećem izvršavanju.",
- "user_delete_immediately": "Račun i sredstva korisnika {user} bit će stavljeni u red čekanja za trajno brisanje odmah.",
- "user_delete_immediately_checkbox": "Stavite korisnika i imovinu u red za trenutačno brisanje",
+ "user_delete_delay_settings_description": "Broj dana nakon uklanjanja za trajno brisanje korisničkog računa i stavki. Posao brisanja korisnika pokreće se u ponoć kako bi se provjerili korisnici koji su spremni za brisanje. Promjene ove postavke bit će procijenjene pri sljedećem izvršavanju.",
+ "user_delete_immediately": "Račun i stavke korisnika {user} bit će stavljeni u red čekanja za trajno brisanje odmah.",
+ "user_delete_immediately_checkbox": "Stavite korisnika i stavke u red čekanja za trenutno brisanje",
"user_details": "Detalji korisnika",
- "user_management": "Upravljanje Korisnicima",
+ "user_management": "Upravljanje korisnicima",
"user_password_has_been_reset": "Korisnička lozinka je poništena:",
"user_password_reset_description": "Molimo dostavite privremenu lozinku korisniku i obavijestite ga da će morati promijeniti lozinku pri sljedećoj prijavi.",
"user_restore_description": "Račun korisnika {user} bit će vraćen.",
@@ -390,13 +396,13 @@
"advanced_settings_enable_alternate_media_filter_subtitle": "Koristite ovu opciju za filtriranje medija tijekom sinkronizacije na temelju alternativnih kriterija. Pokušajte ovo samo ako imate problema s aplikacijom koja ne prepoznaje sve albume.",
"advanced_settings_enable_alternate_media_filter_title": "[EKSPERIMENTALNO] Koristite alternativni filter za sinkronizaciju albuma na uređaju",
"advanced_settings_log_level_title": "Razina zapisivanja: {level}",
- "advanced_settings_prefer_remote_subtitle": "Neki uređaji sporo učitavaju sličice s lokalnih resursa. Aktivirajte ovu postavku kako biste umjesto toga učitali slike s udaljenih izvora.",
+ "advanced_settings_prefer_remote_subtitle": "Neki uređaji sporo učitavaju sličice s lokalnih stavki. Aktivirajte ovu postavku kako biste umjesto toga učitali slike s udaljenih izvora.",
"advanced_settings_prefer_remote_title": "Preferiraj udaljene slike",
"advanced_settings_proxy_headers_subtitle": "Definirajte zaglavlja posrednika koja Immich treba slati sa svakim mrežnim zahtjevom.",
"advanced_settings_proxy_headers_title": "Proxy zaglavlja",
"advanced_settings_self_signed_ssl_subtitle": "Preskoči provjeru SSL certifikata za krajnju točku poslužitelja. Potrebno za samo-potpisane certifikate.",
"advanced_settings_self_signed_ssl_title": "Dopusti samo-potpisane SSL certifikate",
- "advanced_settings_sync_remote_deletions_subtitle": "Automatski izbriši ili obnovi resurs na ovom uređaju kada se ta radnja izvrši na webu",
+ "advanced_settings_sync_remote_deletions_subtitle": "Automatski izbriši ili obnovi stavku na ovom uređaju kada se ta radnja izvrši na webu",
"advanced_settings_sync_remote_deletions_title": "Sinkroniziraj udaljena brisanja [EKSPERIMENTALNO]",
"advanced_settings_tile_subtitle": "Postavke za napredne korisnike",
"advanced_settings_troubleshooting_subtitle": "Omogući dodatne značajke za rješavanje problema",
@@ -421,14 +427,15 @@
"album_remove_user_confirmation": "Jeste li sigurni da želite ukloniti {user}?",
"album_search_not_found": "Nema albuma koji odgovaraju vašem pretraživanju",
"album_share_no_users": "Čini se da ste podijelili ovaj album sa svim korisnicima ili nemate nijednog korisnika s kojim biste ga dijelili.",
+ "album_summary": "Sažetak albuma",
"album_updated": "Album ažuriran",
- "album_updated_setting_description": "Primite obavijest e-poštom kada dijeljeni album ima nova sredstva",
+ "album_updated_setting_description": "Primite obavijest e-poštom kada dijeljeni album ima nove stavke",
"album_user_left": "Napušten {album}",
"album_user_removed": "Uklonjen {user}",
"album_viewer_appbar_delete_confirm": "Jeste li sigurni da želite izbrisati ovaj album s vašeg računa?",
"album_viewer_appbar_share_err_delete": "Neuspješno brisanje albuma",
"album_viewer_appbar_share_err_leave": "Neuspješno napuštanje albuma",
- "album_viewer_appbar_share_err_remove": "Postoje problemi s uklanjanjem resursa iz albuma",
+ "album_viewer_appbar_share_err_remove": "Postoje problemi s uklanjanjem stavki iz albuma",
"album_viewer_appbar_share_err_title": "Neuspješno mijenjanje naslova albuma",
"album_viewer_appbar_share_leave": "Napusti album",
"album_viewer_appbar_share_to": "Podijeli s",
@@ -437,8 +444,8 @@
"albums": "Albumi",
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albumi}}",
"albums_default_sort_order": "Zadani redoslijed sortiranja albuma",
- "albums_default_sort_order_description": "Početni redoslijed sortiranja elemenata prilikom izrade novih albuma.",
- "albums_feature_description": "Zbirke resursa koje se mogu dijeliti s drugim korisnicima.",
+ "albums_default_sort_order_description": "Početni redoslijed sortiranja stavki prilikom izrade novih albuma.",
+ "albums_feature_description": "Zbirke stavki koje se mogu dijeliti s drugim korisnicima.",
"albums_on_device_count": "Albumi na uređaju ({count})",
"all": "Sve",
"all_albums": "Svi albumi",
@@ -457,58 +464,60 @@
"app_bar_signout_dialog_content": "Jeste li sigurni da se želite odjaviti?",
"app_bar_signout_dialog_ok": "Da",
"app_bar_signout_dialog_title": "Odjavi se",
- "app_settings": "Postavke Aplikacije",
+ "app_settings": "Postavke aplikacije",
"appears_in": "Pojavljuje se u",
"archive": "Arhiva",
"archive_action_prompt": "{count} dodano u arhivu",
"archive_or_unarchive_photo": "Arhivirajte ili dearhivirajte fotografiju",
- "archive_page_no_archived_assets": "Nema arhiviranih resursa",
+ "archive_page_no_archived_assets": "Nema arhiviranih stavki",
"archive_page_title": "Arhiviraj ({count})",
"archive_size": "Veličina arhive",
"archive_size_description": "Konfigurirajte veličinu arhive za preuzimanja (u GiB)",
- "archived": "Ahrivirano",
+ "archived": "Arhivirano",
"archived_count": "{count, plural, other {Archived #}}",
"are_these_the_same_person": "Je li ovo ista osoba?",
"are_you_sure_to_do_this": "Jeste li sigurni da to želite učiniti?",
- "asset_action_delete_err_read_only": "Nije moguće izbrisati resurse samo za čitanje, preskačem",
- "asset_action_share_err_offline": "Nije moguće dohvatiti izvanmrežne resurse, preskačem",
+ "asset_action_delete_err_read_only": "Nije moguće izbrisati stavke samo za čitanje, preskakanje",
+ "asset_action_share_err_offline": "Nije moguće dohvatiti izvanmrežne stavke, preskakanje",
"asset_added_to_album": "Dodano u album",
"asset_adding_to_album": "Dodavanje u album…",
- "asset_description_updated": "Opis imovine je ažuriran",
- "asset_filename_is_offline": "Sredstvo {filename} je izvan mreže",
- "asset_has_unassigned_faces": "Materijal ima nedodijeljena lica",
- "asset_hashing": "Sažimanje…",
+ "asset_description_updated": "Opis stavke je ažuriran",
+ "asset_filename_is_offline": "Stavka {filename} je izvan mreže",
+ "asset_has_unassigned_faces": "Stavka ima nedodijeljena lica",
+ "asset_hashing": "Hashiranje…",
"asset_list_group_by_sub_title": "Grupiraj po",
"asset_list_layout_settings_dynamic_layout_title": "Dinamički raspored",
"asset_list_layout_settings_group_automatically": "Automatski",
- "asset_list_layout_settings_group_by": "Grupiraj resurse po",
+ "asset_list_layout_settings_group_by": "Grupiraj stavke po",
"asset_list_layout_settings_group_by_month_day": "Mjesec + dan",
"asset_list_layout_sub_title": "Raspored",
- "asset_list_settings_subtitle": "Postavke izgleda mreže fotografija",
- "asset_list_settings_title": "Mreža Fotografija",
- "asset_offline": "Sredstvo izvan mreže",
- "asset_offline_description": "Ovaj materijal je izvan mreže. Immich ne može pristupiti lokaciji datoteke. Provjerite je li sredstvo dostupno, a zatim ponovno skenirajte biblioteku.",
- "asset_restored_successfully": "Resurs uspješno obnovljen",
+ "asset_list_settings_subtitle": "Postavke izgleda Mreže fotografija",
+ "asset_list_settings_title": "Mreža fotografija",
+ "asset_offline": "Stavka izvan mreže",
+ "asset_offline_description": "Ova vanjska stavka nije pronađena na disku. Za pomoć se obratite Immich administratoru.",
+ "asset_restored_successfully": "Stavka uspješno obnovljena",
"asset_skipped": "Preskočeno",
"asset_skipped_in_trash": "U smeću",
- "asset_uploaded": "Učitano",
- "asset_uploading": "Šaljem…",
- "asset_viewer_settings_subtitle": "Upravljajte postavkama preglednika vaše galerije",
- "asset_viewer_settings_title": "Preglednik Resursa",
- "assets": "Sredstva",
- "assets_added_count": "Dodano {count, plural, one {# asset} other {# assets}}",
- "assets_added_to_album_count": "Dodano {count, plural, one {# asset} other {# assets}} u album",
- "assets_added_to_albums_count": "Dodano je {assetTotal} datoteka u {albumTotal} albuma",
- "assets_cannot_be_added_to_album_count": "{count, plural, one {Sadržaj se ne može dodati u album} other {{count} sadržaja se ne mogu dodati u album}}",
- "assets_cannot_be_added_to_albums": "{count, plural, one {Datoteka se ne može dodati ni u jedan album} few {Datoteke se ne mogu dodati ni u jedan album} other {Datoteka se ne može dodati ni u jedan album}}",
- "assets_count": "{count, plural, one {# asset} other {# assets}}",
- "assets_deleted_permanently": "{count} resurs(i) uspješno uklonjeni",
- "assets_deleted_permanently_from_server": "{count} resurs(i) trajno obrisan(i) sa Immich poslužitelja",
- "assets_downloaded_failed": "{count, plural, one {Preuzeta # datoteka – {error} datoteka nije uspjela} other {Preuzeto je # datoteka – {error} datoteke nisu uspjele}}",
- "assets_downloaded_successfully": "{count, plural, one {Uspješno preuzeta # datoteka} other {Uspješno preuzete # datoteke}}",
- "assets_moved_to_trash_count": "{count, plural, one {# asset} other {# asset}} premješteno u smeće",
- "assets_permanently_deleted_count": "Trajno izbrisano {count, plural, one {# asset} other {# assets}}",
- "assets_removed_count": "Uklonjeno {count, plural, one {# asset} other {# assets}}",
+ "asset_trashed": "Stavka premještena u smeće",
+ "asset_troubleshoot": "Rješavanje problema sa stavkom",
+ "asset_uploaded": "Preneseno",
+ "asset_uploading": "Prenošenje…",
+ "asset_viewer_settings_subtitle": "Upravljajte postavkama vašeg preglednika galerije",
+ "asset_viewer_settings_title": "Preglednik stavki",
+ "assets": "Stavke",
+ "assets_added_count": "{count, plural, one {Dodana # stavka} few {Dodane # stavke} other {Dodano # stavki}}",
+ "assets_added_to_album_count": "{count, plural, one {Dodana # stavka} few {Dodane # stavke} other {Dodano # stavki}} u album",
+ "assets_added_to_albums_count": "{assetTotal, plural, one {Dodana # stavka} other {Dodano # stavki}} u {albumTotal, plural, one {# album} other {# albuma}}",
+ "assets_cannot_be_added_to_album_count": "{count, plural, one {Stavka se ne može} other {Stavke se ne mogu}} dodati u album",
+ "assets_cannot_be_added_to_albums": "{count, plural, one {Stavka se ne može} few {Stavke se ne mogu} other {Stavki se ne može}} dodati ni u jedan album",
+ "assets_count": "{count, plural, one {# stavka} few {# stavke} other {# stavki}}",
+ "assets_deleted_permanently": "Trajno {count, plural, one {izbrisana # stavka} few {izbrisane # stavke} other {izbrisano # stavki}}",
+ "assets_deleted_permanently_from_server": "Trajno {count, plural, one {izbrisana # stavka} few {izbrisane # stavke} other {izbrisano # stavki}} s Immich servera",
+ "assets_downloaded_failed": "{count, plural, one {Preuzeta # datoteka – {error} datoteka nije uspjela} few {Preuzete # datoteke - {error} datoteke nisu uspjele} other {Preuzeto # datoteka – {error} datoteke nisu uspjele}}",
+ "assets_downloaded_successfully": "{count, plural, one {Uspješno preuzeta # datoteka} few {Uspješno preuzete # datoteke} other {Uspješno preueto # datoteka}}",
+ "assets_moved_to_trash_count": "{count, plural, one {# stavka premještena} few {# stavke premještene} other {# stavk premještenoi}} u smeće",
+ "assets_permanently_deleted_count": "Trajno {count, plural, one {izbrisana # stavka} few {izbrisane # stavke} other {izbrisano # stavki}}",
+ "assets_removed_count": "{count, plural, one {Uklonjena # stavka} few {Uklonjene # stavke} other {Uklonjeno # stavki}}",
"assets_removed_permanently_from_device": "{count} resurs(i) trajno uklonjen(i) s vašeg uređaja",
"assets_restore_confirmation": "Jeste li sigurni da želite obnoviti sve svoje resurse bačene u otpad? Ne možete poništiti ovu radnju! Imajte na umu da se bilo koji izvanmrežni resursi ne mogu obnoviti na ovaj način.",
"assets_restored_count": "Vraćeno {count, plural, one {# asset} other {# assets}}",
@@ -518,7 +527,7 @@
"assets_trashed_from_server": "{count} resurs(i) premješten(i) u smeće s Immich poslužitelja",
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} već dio albuma",
"assets_were_part_of_albums_count": "{count, plural, one {Datoteka je već bila dio albuma} few {Datoteke su već bile dio albuma} other {Datoteka je već bila dio albuma}}",
- "authorized_devices": "Ovlašteni Uređaji",
+ "authorized_devices": "Ovlašteni uređaji",
"automatic_endpoint_switching_subtitle": "Povežite se lokalno preko naznačene Wi-Fi mreže kada je dostupna i koristite alternativne veze na drugim lokacijama",
"automatic_endpoint_switching_title": "Automatsko prebacivanje URL-a",
"autoplay_slideshow": "Automatsko prikazivanje slajdova",
@@ -1034,7 +1043,7 @@
"export_database_description": "Izvezi SQLite bazu podataka",
"extension": "Proširenje (Extension)",
"external": "Vanjski",
- "external_libraries": "Vanjske Biblioteke",
+ "external_libraries": "Vanjske biblioteke",
"external_network": "Vanjska mreža",
"external_network_sheet_info": "Kada niste na željenoj Wi-Fi mreži, aplikacija će se povezati s poslužiteljem putem prve dostupne URL adrese s popisa ispod, redom od vrha prema dnu",
"face_unassigned": "Nedodijeljeno",
@@ -1048,7 +1057,7 @@
"favorites": "Omiljene",
"favorites_page_no_favorites": "Nema pronađenih omiljenih stavki",
"feature_photo_updated": "Istaknuta fotografija ažurirana",
- "features": "Značajke (Features)",
+ "features": "Značajke",
"features_setting_description": "Upravljajte značajkama aplikacije",
"file_name": "Naziv datoteke",
"file_name_or_extension": "Naziv ili ekstenzija datoteke",
@@ -1220,7 +1229,7 @@
"location_picker_longitude_error": "Unesite valjanu geografsku dužinu",
"location_picker_longitude_hint": "Unesite ovdje svoju geografsku dužinu",
"lock": "Zaključaj",
- "locked_folder": "Zaključana Mapa",
+ "locked_folder": "Zaključana mapa",
"log_out": "Odjavi se",
"log_out_all_devices": "Odjava sa svih uređaja",
"logged_in_as": "Prijavljeni kao {user}",
@@ -1900,6 +1909,8 @@
"sync_albums_manual_subtitle": "Sinkroniziraj sve prenesene videozapise i fotografije u odabrane albume za sigurnosnu kopiju",
"sync_local": "Sinkroniziraj lokalno",
"sync_remote": "Sinkroniziraj udaljeno",
+ "sync_status": "Status sinkronizacije",
+ "sync_status_subtitle": "Pregledajte i upravljajte sistemom sinkronizacije",
"sync_upload_album_setting_subtitle": "Kreiraj i prenesi svoje fotografije i videozapise u odabrane albume na Immichu",
"tag": "Oznaka",
"tag_assets": "Označi stavke",
diff --git a/i18n/hu.json b/i18n/hu.json
index f000e89517..081bc12f99 100644
--- a/i18n/hu.json
+++ b/i18n/hu.json
@@ -28,6 +28,7 @@
"add_to_album": "Felvétel albumba",
"add_to_album_bottom_sheet_added": "Hozzáadva a(z) \"{album}\" albumhoz",
"add_to_album_bottom_sheet_already_exists": "Már benne van a(z) \"{album}\" albumban",
+ "add_to_album_bottom_sheet_some_local_assets": "Néhány helyi elem nem adható hozzá az albumhoz",
"add_to_album_toggle": "{album} kijelölésének váltása",
"add_to_albums": "Hozzáadás albumokhoz",
"add_to_albums_count": "Hozzáadás albumokhoz ({count})",
@@ -175,7 +176,7 @@
"map_settings_description": "Térkép beállítások kezelése",
"map_style_description": "Egy style.json térképtémára mutató URL cím",
"memory_cleanup_job": "Memória takarítás",
- "memory_generate_job": "Emlék generálása",
+ "memory_generate_job": "Emlékek generálása",
"metadata_extraction_job": "Metaadatok kinyerése",
"metadata_extraction_job_description": "Metaadat információk (pl. GPS, arcok és felbontás) kinyerése minden elemből",
"metadata_faces_import_setting": "Arc importálás engedélyezése",
@@ -598,6 +599,7 @@
"backup_controller_page_turn_on": "Előtérben mentés bekapcsolása",
"backup_controller_page_uploading_file_info": "Fájl információk feltöltése",
"backup_err_only_album": "Az utolsó albumot nem tudod törölni",
+ "backup_error_sync_failed": "A szinkronizálás nem sikerült. A biztonsági mentés nem elkészíthető.",
"backup_info_card_assets": "elemek",
"backup_manual_cancelled": "Megszakítva",
"backup_manual_in_progress": "Feltöltés már folyamatban. Próbáld meg később",
diff --git a/i18n/id.json b/i18n/id.json
index 8dba86752e..abf8ef4747 100644
--- a/i18n/id.json
+++ b/i18n/id.json
@@ -28,10 +28,12 @@
"add_to_album": "Tambahkan ke album",
"add_to_album_bottom_sheet_added": "Ditambahkan ke {album}",
"add_to_album_bottom_sheet_already_exists": "Sudah ada di {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Beberapa aset lokal tidak dapat ditambahkan ke album",
"add_to_album_toggle": "Masukkan ke {album} / Batalkan dari {album}",
"add_to_albums": "Tambahkan ke album",
"add_to_albums_count": "Tambahkan ke album ({count})",
"add_to_shared_album": "Tambahkan ke album terbagi",
+ "add_upload_to_stack": "Tambahkan unggahan ke tumpukan",
"add_url": "Tambahkan URL",
"added_to_archive": "Ditambahkan ke arsip",
"added_to_favorites": "Ditambahkan ke favorit",
@@ -598,6 +600,7 @@
"backup_controller_page_turn_on": "Aktifkan pencadangan latar depan",
"backup_controller_page_uploading_file_info": "Mengunggah info file",
"backup_err_only_album": "Tidak dapat menghapus album",
+ "backup_error_sync_failed": "Sinkronisasi gagal. Tidak dapat memproses cadangan.",
"backup_info_card_assets": "aset",
"backup_manual_cancelled": "Dibatalkan",
"backup_manual_in_progress": "Dalam proses unggah. Coba lagi nanti",
diff --git a/i18n/it.json b/i18n/it.json
index a86dd78ca6..b1aeabd33e 100644
--- a/i18n/it.json
+++ b/i18n/it.json
@@ -14,7 +14,7 @@
"add_a_location": "Aggiungi una posizione",
"add_a_name": "Aggiungi un nome",
"add_a_title": "Aggiungi un titolo",
- "add_birthday": "Aggiungi un compleanno",
+ "add_birthday": "Aggiungi compleanno",
"add_endpoint": "Aggiungi un endpoint",
"add_exclusion_pattern": "Aggiungi un pattern di esclusione",
"add_import_path": "Aggiungi un percorso per l’importazione",
@@ -33,6 +33,7 @@
"add_to_albums": "Aggiungi ad album",
"add_to_albums_count": "Aggiungi ad album ({count})",
"add_to_shared_album": "Aggiungi ad album condiviso",
+ "add_upload_to_stack": "Aggiungi caricamento allo stack",
"add_url": "Aggiungi URL",
"added_to_archive": "Aggiunto all'archivio",
"added_to_favorites": "Aggiunto ai preferiti",
@@ -177,7 +178,7 @@
"map_style_description": "URL per un tema della mappa style.json",
"memory_cleanup_job": "Pulizia dei vecchi Ricordi",
"memory_generate_job": "Generazione dei Ricordi",
- "metadata_extraction_job": "Estrazione Metadata",
+ "metadata_extraction_job": "Estrazione Metadati",
"metadata_extraction_job_description": "Estrai informazioni dai metadati di ciascuna risorsa, come coordinate GPS, volti e risoluzione",
"metadata_faces_import_setting": "Abilita l'importazione dei volti",
"metadata_faces_import_setting_description": "Importa i volti dai dati EXIF dell'immagine e dai file sidecar",
@@ -308,11 +309,11 @@
"transcoding_acceleration_rkmpp": "RKMPP (Solo per SOC Rockchip)",
"transcoding_acceleration_vaapi": "VAAPI",
"transcoding_accepted_audio_codecs": "Codifiche audio accettate",
- "transcoding_accepted_audio_codecs_description": "Seleziona quali codifiche audio non devono essere trascodificate. Solo usato per alcune politiche di trascodifica.",
+ "transcoding_accepted_audio_codecs_description": "Seleziona quali codifiche audio non devono essere transcodificate. Solo usato per alcune politiche di transcodifica.",
"transcoding_accepted_containers": "Contenitori accettati",
"transcoding_accepted_containers_description": "Seleziona quali formati non hanno bisogno di essere remuxati in MP4. Usato solo per certe politiche di transcodifica.",
"transcoding_accepted_video_codecs": "Codifiche video accettate",
- "transcoding_accepted_video_codecs_description": "Seleziona quali codifiche video non devono essere trascodificate. Usato solo per alcune politiche di trascodifica.",
+ "transcoding_accepted_video_codecs_description": "Seleziona quali codifiche video non devono essere transcodificate. Usato solo per alcune politiche di transcodifica.",
"transcoding_advanced_options_description": "Impostazioni che la maggior parte degli utenti non dovrebbero cambiare",
"transcoding_audio_codec": "Codifica Audio",
"transcoding_audio_codec_description": "Opus è l'opzione con la qualità più alta, ma è meno compatibile con dispositivi o software vecchi.",
@@ -345,7 +346,7 @@
"transcoding_reference_frames": "Frame di riferimento",
"transcoding_reference_frames_description": "Il numero di frame da prendere in considerazione nel comprimere un determinato frame. Valori più alti migliorano l'efficienza di compressione, ma rallentano la codifica. 0 imposta questo valore automaticamente.",
"transcoding_required_description": "Solo video che non sono in un formato accettato",
- "transcoding_settings": "Impostazioni Trascodifica Video",
+ "transcoding_settings": "Impostazioni Transcodifica Video",
"transcoding_settings_description": "Gestisci quali video transcodificare e come processarli",
"transcoding_target_resolution": "Risoluzione desiderata",
"transcoding_target_resolution_description": "Risoluzioni più elevate possono preservare più dettagli ma richiedono più tempo per la codifica, producono file di dimensioni maggiori e possono ridurre la reattività dell'applicazione.",
@@ -356,11 +357,11 @@
"transcoding_tone_mapping": "Mappatura della tonalità",
"transcoding_tone_mapping_description": "Tenta di preservare l'aspetto dei video HDR quando convertiti in SDR. Ciascun algoritmo fa diversi compromessi per colore, dettaglio e luminosità. Hable conserva il dettaglio, Mobius conserva il colore e Reinhard conserva la luminosità.",
"transcoding_transcode_policy": "Politica di transcodifica",
- "transcoding_transcode_policy_description": "Politica che determina quando un video deve essere trascodificato. I video HDR verranno sempre trascodificati (eccetto quando la trascodifica è disabilitata).",
+ "transcoding_transcode_policy_description": "Politica che determina quando un video deve essere transcodificato. I video HDR verranno sempre transcodificati (eccetto quando la transcodifica è disabilitata).",
"transcoding_two_pass_encoding": "Codifica a due passaggi",
- "transcoding_two_pass_encoding_setting_description": "Trascodifica in due passaggi per produrre video codificati migliori. Quando il bitrate massimo è abilitato (necessario affinché funzioni con H.264 e HEVC), questa modalità utilizza un intervallo di bitrate basato sul bitrate massimo e ignora CRF. Per VP9, CRF può essere utilizzato se il bitrate massimo è disabilitato.",
+ "transcoding_two_pass_encoding_setting_description": "Transcodifica in due passaggi per produrre video codificati migliori. Quando il bitrate massimo è abilitato (necessario affinché funzioni con H.264 e HEVC), questa modalità utilizza un intervallo di bitrate basato sul bitrate massimo e ignora CRF. Per VP9, CRF può essere utilizzato se il bitrate massimo è disabilitato.",
"transcoding_video_codec": "Codec video",
- "transcoding_video_codec_description": "VP9 ha alta efficienza e compatibilità web, ma richiede più tempo per la trascodifica. HEVC ha prestazioni simili, ma una minore compatibilità web. H.264 è ampiamente compatibile e veloce da transcodificare, ma produce file molto più grandi. AV1 è il codec più efficiente, ma non è supportato sui dispositivi più vecchi.",
+ "transcoding_video_codec_description": "VP9 ha alta efficienza e compatibilità web, ma richiede più tempo per la transcodifica. HEVC ha prestazioni simili, ma una minore compatibilità web. H.264 è ampiamente compatibile e veloce da transcodificare, ma produce file molto più grandi. AV1 è il codec più efficiente, ma non è supportato sui dispositivi più vecchi.",
"trash_enabled_description": "Abilita Funzionalità Cestino",
"trash_number_of_days": "Numero di giorni",
"trash_number_of_days_description": "Numero di giorni per cui mantenere gli asset nel cestino prima di rimuoverli definitivamente",
@@ -388,8 +389,8 @@
"version_check_implications": "La funzione di controllo della versione fa uso di una comunicazione periodica con github.com",
"version_check_settings": "Controllo Versione",
"version_check_settings_description": "Abilita/disabilita la notifica per nuove versioni",
- "video_conversion_job": "Trascodifica video",
- "video_conversion_job_description": "Trascodifica video per maggiore compatibilità con browser e dispositivi"
+ "video_conversion_job": "Transcodifica video",
+ "video_conversion_job_description": "Transcodifica video per maggiore compatibilità con browser e dispositivi"
},
"admin_email": "Email Amministratore",
"admin_password": "Password Amministratore",
@@ -599,6 +600,7 @@
"backup_controller_page_turn_on": "Attiva backup",
"backup_controller_page_uploading_file_info": "Caricamento informazioni file",
"backup_err_only_album": "Non è possibile rimuovere l'unico album",
+ "backup_error_sync_failed": "Sincronizzazione non riuscita. Impossibile elaborare il backup.",
"backup_info_card_assets": "risorse",
"backup_manual_cancelled": "Annullato",
"backup_manual_in_progress": "Caricamento già in corso. Riprova più tardi",
@@ -1037,6 +1039,7 @@
"exif_bottom_sheet_description_error": "Errore durante l'aggiornamento della descrizione",
"exif_bottom_sheet_details": "DETTAGLI",
"exif_bottom_sheet_location": "POSIZIONE",
+ "exif_bottom_sheet_no_description": "Nessuna descrizione",
"exif_bottom_sheet_people": "PERSONE",
"exif_bottom_sheet_person_add_person": "Aggiungi nome",
"exit_slideshow": "Esci dalla presentazione",
diff --git a/i18n/ja.json b/i18n/ja.json
index b03614d65c..bec51aeca8 100644
--- a/i18n/ja.json
+++ b/i18n/ja.json
@@ -28,6 +28,7 @@
"add_to_album": "アルバムに追加",
"add_to_album_bottom_sheet_added": "{album}に追加",
"add_to_album_bottom_sheet_already_exists": "{album}に追加済み",
+ "add_to_album_bottom_sheet_some_local_assets": "いくつかの項目はまだサーバーへアップロードされていないためアルバムに追加できませんでした",
"add_to_album_toggle": "{album}の選択を切り替え",
"add_to_albums": "アルバムに追加",
"add_to_albums_count": "{count}つのアルバムへ追加",
@@ -598,6 +599,7 @@
"backup_controller_page_turn_on": "バックアップをオンにする",
"backup_controller_page_uploading_file_info": "アップロード中のファイル",
"backup_err_only_album": "最低1つのアルバムを選択してください",
+ "backup_error_sync_failed": "同期に失敗しました。バックアップができません。",
"backup_info_card_assets": "写真と動画",
"backup_manual_cancelled": "キャンセルされました",
"backup_manual_in_progress": "アップロードが進行中です。後でもう一度試してください",
diff --git a/i18n/ka.json b/i18n/ka.json
index 13b0e1d065..bc1c05492b 100644
--- a/i18n/ka.json
+++ b/i18n/ka.json
@@ -14,6 +14,7 @@
"add_a_location": "დაამატე ადგილი",
"add_a_name": "დაამატე სახელი",
"add_a_title": "დაასათაურე",
+ "add_birthday": "დაბადების დღის დამატება",
"add_exclusion_pattern": "დაამატე გამონაკლისი ნიმუში",
"add_import_path": "დაამატე საიმპორტო მისამართი",
"add_location": "დაამატე ადგილი",
@@ -21,16 +22,20 @@
"add_partner": "დაამატე პარტნიორი",
"add_path": "დაამატე მისამართი",
"add_photos": "დაამატე ფოტოები",
+ "add_tag": "დაამატე თეგი",
"add_to": "დაამატე ...ში",
"add_to_album": "დაამატე ალბომში",
"add_to_album_bottom_sheet_added": "დამატებულია {album}-ში",
"add_to_album_bottom_sheet_already_exists": "{album}-ში უკვე არსებობს",
+ "add_to_albums": "დაამატე ალბომებში",
+ "add_to_albums_count": "დაამატე ალბომში ({count})",
"add_to_shared_album": "დაამატე საზიარო ალბომში",
"add_url": "დაამატე URL",
"added_to_archive": "დაარქივდა",
"added_to_favorites": "დაამატე რჩეულებში",
"added_to_favorites_count": "{count, number} დაემატა რჩეულებში",
"admin": {
+ "admin_user": "ადმინ მომხმარებელი",
"asset_offline_description": "ეს საგარეო ბიბლიოთეკის აქტივი დისკზე ვერ მოიძებნა და სანაგვეში იქნა მოთავსებული. თუ ფაილი ბიბლიოთეკის შიგნით მდებარეობს, შეამოწმეთ შესაბამისი აქტივი ტაიმლაინზე. ამ აქტივის აღსადგენად, დარწმუნდით რომ ქვემოთ მოცემული ფაილის მისამართი Immich-ის მიერ წვდომადია და დაასკანერეთ ბიბლიოთეკა.",
"authentication_settings": "ავთენტიკაციის პარამეტრები",
"authentication_settings_description": "პაროლის, OAuth-ის და სხვა ავტენთიფიკაციის პარამეტრების მართვა",
@@ -41,7 +46,7 @@
"backup_database_enable_description": "ბაზის დამპების ჩართვა",
"backup_keep_last_amount": "წინა დამპების შესანარჩუნებელი რაოდენობა",
"backup_settings": "მონაცემთა ბაზის დამპის მორგება",
- "backup_settings_description": "მონაცემთა ბაზის პარამეტრების ამრთვა. შენიშვნა: ამ დავალებების მონიტორინგი არ ხდება და თქვენ არ მოგივათ შეტყობინება, თუ ის ჩავარდება.",
+ "backup_settings_description": "მონაცემთა ბაზის ასლის შექმნის პარამეტრების მრთვა.",
"cleared_jobs": "დავალებები {job}-ისათვის გაწმენდილია",
"config_set_by_file": "მიმდინარე კონფიგურაცია ფაილის მიერ არის დაყენებული",
"confirm_delete_library": "ნამდვილად გინდა {library} ბიბლიოთეკის წაშლა?",
@@ -58,6 +63,7 @@
"image_format_description": "WebP ფორმატი JPEG-ზე პატარა ფაილებს აწარმოებს, მაგრამ მის დამზადებას უფრო მეტი დრო სჭირდება.",
"image_fullsize_title": "სრული ზომის გამოსახულების პარამეტრები",
"image_prefer_wide_gamut": "უპირატესობა მიენიჭოს ფერის ფართე დიაპაზონს",
+ "image_preview_title": "გამოსახულების გადახედვის პარამეტრები",
"image_quality": "ხარისხი",
"image_resolution": "გაფართოება",
"image_settings": "გამოსახულების პარამეტრები",
@@ -68,6 +74,7 @@
"library_created": "შეიქმნა ბიბლიოთეკა: {library}",
"library_deleted": "ბიბლიოთეკა წაიშალა",
"library_import_path_description": "აირჩიე დასაიმპორტებელი საქაღალდე. ფოტოები და ვიდეოები მოიძებნება ამ საქაღალდესა და მასში არსებულ საქაღალდეებში.",
+ "library_settings": "გარე ბიბლიოთეკა",
"library_settings_description": "გარე ბიბლიოთეკების პარამეტრების მართვა",
"logging_settings": "ჟურნალი",
"map_settings": "რუკა",
diff --git a/i18n/kn.json b/i18n/kn.json
index 388f06704c..111c802a1e 100644
--- a/i18n/kn.json
+++ b/i18n/kn.json
@@ -8,11 +8,13 @@
"actions": "ಕ್ರಿಯೆಗಳು",
"active": "ಸಕ್ರಿಯ",
"activity": "ಚಟುವಟಿಕೆ",
+ "activity_changed": "ಚಟುವಟಿಕೆ {enabled, select, true{ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ} other {ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ}}",
"add": "ಸೇರಿಸಿ",
"add_a_description": "ವಿವರಣೆಯನ್ನು ಸೇರಿಸಿ",
"add_a_location": "ಸ್ಥಳವನ್ನು ಸೇರಿಸಿ",
"add_a_name": "ಹೆಸರನ್ನು ಸೇರಿಸಿ",
"add_a_title": "ಶೀರ್ಷಿಕೆಯನ್ನು ಸೇರಿಸಿ",
+ "add_birthday": "ಜನ್ಮದಿನ ಸೇರಿಸಿ",
"add_endpoint": "ಎಂಡ್ಪಾಯಿಂಟ್ ಸೇರಿಸಿ",
"add_exclusion_pattern": "ಹೊರಗಿಡುವಿಕೆ ಮಾದರಿಯನ್ನು ಸೇರಿಸಿ",
"add_import_path": "ಆಮದು ಮಾರ್ಗವನ್ನು ಸೇರಿಸಿ",
@@ -22,5 +24,6 @@
"add_path": "ಹಾದಿಯನ್ನು ಸೇರಿಸಿ",
"add_photos": "ಫೋಟೋಗಳನ್ನು ಸೇರಿಸಿ",
"add_to": "ಸೇರಿಸಿ…",
- "add_to_album": "ಆಲ್ಬಮ್ಗೆ ಸೇರಿಸಿ"
+ "add_to_album": "ಆಲ್ಬಮ್ಗೆ ಸೇರಿಸಿ",
+ "add_to_album_bottom_sheet_added": "{album}ಗೆ ಸೇರಿಸಿದೆ"
}
diff --git a/i18n/ko.json b/i18n/ko.json
index 3707501ec8..0c01c03263 100644
--- a/i18n/ko.json
+++ b/i18n/ko.json
@@ -8,7 +8,7 @@
"actions": "작업",
"active": "활성",
"activity": "활동",
- "activity_changed": "활동이 {enabled, select, true {활성화} other {비활성화}}되었습니다.",
+ "activity_changed": "활동이 {enabled, select, true {활성화} other {비활성화}}되었습니다",
"add": "추가",
"add_a_description": "설명 추가",
"add_a_location": "위치 추가",
@@ -34,15 +34,15 @@
"add_to_albums_count": "여러 앨범에 추가 ({count})",
"add_to_shared_album": "공유 앨범에 추가",
"add_url": "URL 추가",
- "added_to_archive": "보관함으로 이동되었습니다.",
- "added_to_favorites": "즐겨찾기에 추가되었습니다.",
+ "added_to_archive": "보관함으로 이동되었습니다",
+ "added_to_favorites": "즐겨찾기에 추가되었습니다",
"added_to_favorites_count": "즐겨찾기에 항목 {count, number}개 추가됨",
"admin": {
"add_exclusion_pattern_description": "*, **, ? 등의 glob 패턴을 사용할 수 있습니다. 예를 들어 \"Raw\" 폴더 내 모든 파일을 제외하려면 \"**/Raw/**\"를, .tif 파일을 제외하려면 \"**/*.tif\", 특정한 절대 경로를 제외하려면 \"/path/to/ignore/**\" 처럼 사용합니다.",
"admin_user": "관리자",
"asset_offline_description": "이 항목은 외부 라이브러리에 등록되었으나 디스크에서 찾을 수 없어 휴지통으로 이동했습니다. 파일이 라이브러리 경로 내에서 이동된 경우 타임라인에서 새로 인식된 항목이 있는지 확인해보세요. 이 항목을 복원하려면 아래 경로에 Immich가 접근할 수 있는지 확인하고 라이브러리를 다시 스캔하세요.",
"authentication_settings": "인증 설정",
- "authentication_settings_description": "비밀번호, OAuth 및 기타 인증 설정을 관리합니다.",
+ "authentication_settings_description": "비밀번호, OAuth 및 기타 인증 설정을 관리합니다",
"authentication_settings_disable_all": "모든 로그인 수단을 비활성화하시겠습니까? 더이상 로그인할 수 없습니다.",
"authentication_settings_reenable": "다시 활성화하려면 서버 명령어를 사용하세요.",
"background_task_job": "백그라운드 작업",
@@ -50,7 +50,7 @@
"backup_database_enable_description": "데이터베이스 덤프 활성화",
"backup_keep_last_amount": "보관할 이전 덤프 수",
"backup_onboarding_1_description": "개는 클라우드나 다른 물리적 위치에 보관합니다.",
- "backup_onboarding_2_description": "개는 서로 다른 로컬 장치에 보관하고,",
+ "backup_onboarding_2_description": "다른 기기의 로컬 사본. 메인 파일과 로컬 백업을 포함합니다.",
"backup_onboarding_3_description": "개의 데이터 사본을 만듭니다.",
"backup_onboarding_description": "소중한 데이터를 안전하게 보호하기 위해 {label} ir lietotāja glabātuves nosaukums",
"system_settings": "Sistēmas iestatījumi",
"template_email_available_tags": "Sagatavē var izmantot šos mainīgos: {tags}",
"template_email_if_empty": "Ja sagatave ir tukša, tiks izmantots noklusējuma e-pasts.",
@@ -200,15 +248,19 @@
"transcoding_acceleration_qsv": "Quick Sync (nepieciešams 7. paaudzes vai jaunāks Intel procesors)",
"transcoding_acceleration_rkmpp": "RKMPP (tikai Rockchip SOC)",
"transcoding_acceleration_vaapi": "VAAPI",
+ "transcoding_accepted_video_codecs": "Akceptētie video kodeki",
"transcoding_advanced_options_description": "Lielākajai daļai lietotāju nevajadzētu mainīt šīs opcijas",
"transcoding_audio_codec": "Audio kodeks",
+ "transcoding_audio_codec_description": "Opus ir augstākās kvalitātes izvēle, bet tā ir mazāk saderīga ar vecām ierīcēm vai programmatūru.",
"transcoding_codecs_learn_more": "Lai uzzinātu vairāk par šeit lietoto terminoloģiju, skatiet FFmpeg dokumentāciju par {label} എന്നത് ഉപയോക്താവിന്റെ സ്റ്റോറേജ് ലേബലാണ്",
+ "system_settings": "സിസ്റ്റം ക്രമീകരണങ്ങൾ",
+ "tag_cleanup_job": "ടാഗ് ക്ലീനപ്പ്",
+ "template_email_available_tags": "നിങ്ങളുടെ ടെംപ്ലേറ്റിൽ ഇനിപ്പറയുന്ന വേരിയബിളുകൾ ഉപയോഗിക്കാം: {tags}",
+ "template_email_if_empty": "ടെംപ്ലേറ്റ് ശൂന്യമാണെങ്കിൽ, ഡിഫോൾട്ട് ഇമെയിൽ ഉപയോഗിക്കും.",
+ "template_email_invite_album": "ആൽബം ക്ഷണിക്കാനുള്ള ടെംപ്ലേറ്റ്",
+ "template_email_preview": "പ്രിവ്യൂ",
+ "template_email_settings": "ഇമെയിൽ ടെംപ്ലേറ്റുകൾ",
+ "template_email_update_album": "ആൽബം അപ്ഡേറ്റ് ടെംപ്ലേറ്റ്",
+ "template_email_welcome": "സ്വാഗത ഇമെയിൽ ടെംപ്ലേറ്റ്",
+ "template_settings": "അറിയിപ്പ് ടെംപ്ലേറ്റുകൾ",
+ "template_settings_description": "അറിയിപ്പുകൾക്കായി ഇഷ്ടാനുസൃത ടെംപ്ലേറ്റുകൾ കൈകാര്യം ചെയ്യുക",
+ "theme_custom_css_settings": "കസ്റ്റം CSS",
+ "theme_custom_css_settings_description": "കാസ്കേഡിംഗ് സ്റ്റൈൽ ഷീറ്റുകൾ (CSS) Immich-ന്റെ ഡിസൈൻ ഇഷ്ടാനുസൃതമാക്കാൻ അനുവദിക്കുന്നു.",
+ "theme_settings": "തീം ക്രമീകരണങ്ങൾ",
+ "theme_settings_description": "Immich വെബ് ഇന്റർഫേസിന്റെ കസ്റ്റമൈസേഷൻ കൈകാര്യം ചെയ്യുക",
+ "thumbnail_generation_job": "തംബ്നെയിലുകൾ നിർമ്മിക്കുക",
+ "thumbnail_generation_job_description": "ഓരോ അസറ്റിനും വലുതും ചെറുതും മങ്ങിയതുമായ തംബ്നെയിലുകളും ഓരോ വ്യക്തിക്കും തംബ്നെയിലുകളും നിർമ്മിക്കുക",
+ "transcoding_acceleration_api": "ആക്സിലറേഷൻ API",
+ "transcoding_acceleration_api_description": "ട്രാൻസ്കോഡിംഗ് ത്വരിതപ്പെടുത്തുന്നതിന് നിങ്ങളുടെ ഉപകരണവുമായി സംവദിക്കുന്ന API. ഈ ക്രമീകരണം 'ബെസ്റ്റ് എഫേർട്ട്' ആണ്: പരാജയപ്പെട്ടാൽ സോഫ്റ്റ്വെയർ ട്രാൻസ്കോഡിംഗിലേക്ക് മാറും. നിങ്ങളുടെ ഹാർഡ്വെയർ അനുസരിച്ച് VP9 പ്രവർത്തിക്കുകയോ പ്രവർത്തിക്കാതിരിക്കുകയോ ചെയ്യാം.",
+ "transcoding_acceleration_nvenc": "NVENC (NVIDIA GPU ആവശ്യമാണ്)",
+ "transcoding_acceleration_qsv": "ക്വിക്ക് സിങ്ക് (7-ാം തലമുറ ഇന്റൽ സിപിയു അല്ലെങ്കിൽ അതിനുശേഷമുള്ളത് ആവശ്യമാണ്)",
+ "transcoding_acceleration_rkmpp": "RKMPP (Rockchip SOC-കളിൽ മാത്രം)",
+ "transcoding_acceleration_vaapi": "VAAPI",
+ "transcoding_accepted_audio_codecs": "അംഗീകൃത ഓഡിയോ കോഡെക്കുകൾ",
+ "transcoding_accepted_audio_codecs_description": "ട്രാൻസ്കോഡ് ചെയ്യേണ്ടാത്ത ഓഡിയോ കോഡെക്കുകൾ തിരഞ്ഞെടുക്കുക. ചില ട്രാൻസ്കോഡ് നയങ്ങൾക്ക് വേണ്ടി മാത്രം ഉപയോഗിക്കുന്നു.",
+ "transcoding_accepted_containers": "അംഗീകൃത കണ്ടെയ്നറുകൾ",
+ "transcoding_accepted_containers_description": "MP4-ലേക്ക് റീമക്സ് ചെയ്യേണ്ടാത്ത കണ്ടെയ്നർ ഫോർമാറ്റുകൾ തിരഞ്ഞെടുക്കുക. ചില ട്രാൻസ്കോഡ് നയങ്ങൾക്ക് വേണ്ടി മാത്രം ഉപയോഗിക്കുന്നു.",
+ "transcoding_accepted_video_codecs": "അംഗീകൃത വീഡിയോ കോഡെക്കുകൾ",
+ "transcoding_accepted_video_codecs_description": "ട്രാൻസ്കോഡ് ചെയ്യേണ്ടാത്ത വീഡിയോ കോഡെക്കുകൾ തിരഞ്ഞെടുക്കുക. ചില ട്രാൻസ്കോഡ് നയങ്ങൾക്ക് വേണ്ടി മാത്രം ഉപയോഗിക്കുന്നു.",
+ "transcoding_advanced_options_description": "മിക്ക ഉപയോക്താക്കളും മാറ്റം വരുത്തേണ്ടതില്ലാത്ത ഓപ്ഷനുകൾ",
+ "transcoding_audio_codec": "ഓഡിയോ കോഡെക്",
+ "transcoding_audio_codec_description": "Opus ഏറ്റവും ഉയർന്ന നിലവാരമുള്ള ഓപ്ഷനാണ്, പക്ഷേ പഴയ ഉപകരണങ്ങളുമായോ സോഫ്റ്റ്വെയറുമായോ ഇതിന് കുറഞ്ഞ അനുയോജ്യതയേ ഉള്ളൂ.",
+ "transcoding_bitrate_description": "പരമാവധി ബിറ്റ്റേറ്റിനേക്കാൾ ഉയർന്നതോ അംഗീകൃത ഫോർമാറ്റിൽ അല്ലാത്തതോ ആയ വീഡിയോകൾ",
+ "transcoding_codecs_learn_more": "ഇവിടെ ഉപയോഗിച്ചിരിക്കുന്ന പദങ്ങളെക്കുറിച്ച് കൂടുതലറിയാൻ,