mirror of
https://github.com/immich-app/immich.git
synced 2025-07-09 03:06:56 -04:00
Merge branch 'immich-app:main' into feat/user-avatars-web
This commit is contained in:
commit
8ab33b40da
2
.github/FUNDING.yml
vendored
2
.github/FUNDING.yml
vendored
@ -1 +1 @@
|
|||||||
custom: ["https://buy.immich.app"]
|
custom: ['https://buy.immich.app']
|
||||||
|
20
.github/workflows/build-mobile.yml
vendored
20
.github/workflows/build-mobile.yml
vendored
@ -16,10 +16,28 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
pre-job:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- id: found_paths
|
||||||
|
uses: dorny/paths-filter@v3
|
||||||
|
with:
|
||||||
|
filters: |
|
||||||
|
mobile:
|
||||||
|
- 'mobile/**'
|
||||||
|
- name: Check if we should force jobs to run
|
||||||
|
id: should_force
|
||||||
|
run: echo "should_force=${{ github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' }}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
build-sign-android:
|
build-sign-android:
|
||||||
name: Build and sign Android
|
name: Build and sign Android
|
||||||
|
needs: pre-job
|
||||||
# Skip when PR from a fork
|
# Skip when PR from a fork
|
||||||
if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' }}
|
if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' && needs.pre-job.outputs.should_run == 'true' }}
|
||||||
runs-on: macos-14
|
runs-on: macos-14
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
2
.github/workflows/cli.yml
vendored
2
.github/workflows/cli.yml
vendored
@ -22,7 +22,7 @@ permissions:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
publish:
|
publish:
|
||||||
name: Publish
|
name: CLI Publish
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
|
175
.github/workflows/docker.yml
vendored
175
.github/workflows/docker.yml
vendored
@ -17,47 +17,58 @@ permissions:
|
|||||||
packages: write
|
packages: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_and_push:
|
pre-job:
|
||||||
name: Build and Push
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
should_run_server: ${{ steps.found_paths.outputs.server == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
should_run_ml: ${{ steps.found_paths.outputs.machine-learning == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- id: found_paths
|
||||||
|
uses: dorny/paths-filter@v3
|
||||||
|
with:
|
||||||
|
filters: |
|
||||||
|
server:
|
||||||
|
- 'server/**'
|
||||||
|
- 'openapi/**'
|
||||||
|
- 'web/**'
|
||||||
|
machine-learning:
|
||||||
|
- 'machine-learning/**'
|
||||||
|
|
||||||
|
- name: Check if we should force jobs to run
|
||||||
|
id: should_force
|
||||||
|
run: echo "should_force=${{ github.event_name == 'workflow_dispatch' || github.event_name == 'release' }}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
build_and_push_ml:
|
||||||
|
name: Build and Push ML
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run_ml == 'true' }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
image: immich-machine-learning
|
||||||
|
context: machine-learning
|
||||||
|
file: machine-learning/Dockerfile
|
||||||
strategy:
|
strategy:
|
||||||
# Prevent a failure in one image from stopping the other builds
|
# Prevent a failure in one image from stopping the other builds
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- image: immich-machine-learning
|
- platforms: linux/amd64,linux/arm64
|
||||||
context: machine-learning
|
|
||||||
file: machine-learning/Dockerfile
|
|
||||||
platforms: linux/amd64,linux/arm64
|
|
||||||
device: cpu
|
device: cpu
|
||||||
|
|
||||||
- image: immich-machine-learning
|
- platforms: linux/amd64
|
||||||
context: machine-learning
|
|
||||||
file: machine-learning/Dockerfile
|
|
||||||
platforms: linux/amd64
|
|
||||||
device: cuda
|
device: cuda
|
||||||
suffix: -cuda
|
suffix: -cuda
|
||||||
|
|
||||||
- image: immich-machine-learning
|
- platforms: linux/amd64
|
||||||
context: machine-learning
|
|
||||||
file: machine-learning/Dockerfile
|
|
||||||
platforms: linux/amd64
|
|
||||||
device: openvino
|
device: openvino
|
||||||
suffix: -openvino
|
suffix: -openvino
|
||||||
|
|
||||||
- image: immich-machine-learning
|
- platforms: linux/arm64
|
||||||
context: machine-learning
|
|
||||||
file: machine-learning/Dockerfile
|
|
||||||
platforms: linux/arm64
|
|
||||||
device: armnn
|
device: armnn
|
||||||
suffix: -armnn
|
suffix: -armnn
|
||||||
|
|
||||||
- image: immich-server
|
|
||||||
context: .
|
|
||||||
file: server/Dockerfile
|
|
||||||
platforms: linux/amd64,linux/arm64
|
|
||||||
device: cpu
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -93,8 +104,8 @@ jobs:
|
|||||||
# Disable latest tag
|
# Disable latest tag
|
||||||
latest=false
|
latest=false
|
||||||
images: |
|
images: |
|
||||||
name=ghcr.io/${{ github.repository_owner }}/${{matrix.image}}
|
name=ghcr.io/${{ github.repository_owner }}/${{env.image}}
|
||||||
name=altran1502/${{matrix.image}},enable=${{ github.event_name == 'release' }}
|
name=altran1502/${{env.image}},enable=${{ github.event_name == 'release' }}
|
||||||
tags: |
|
tags: |
|
||||||
# Tag with branch name
|
# Tag with branch name
|
||||||
type=ref,event=branch,suffix=${{ matrix.suffix }}
|
type=ref,event=branch,suffix=${{ matrix.suffix }}
|
||||||
@ -111,18 +122,18 @@ jobs:
|
|||||||
# Essentially just ignore the cache output (PR can't write to registry cache)
|
# Essentially just ignore the cache output (PR can't write to registry cache)
|
||||||
echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT
|
echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT
|
||||||
else
|
else
|
||||||
echo "cache-to=type=registry,mode=max,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{ matrix.image }}" >> $GITHUB_OUTPUT
|
echo "cache-to=type=registry,mode=max,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{ env.image }}" >> $GITHUB_OUTPUT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Build and push image
|
- name: Build and push image
|
||||||
uses: docker/build-push-action@v6.7.0
|
uses: docker/build-push-action@v6.7.0
|
||||||
with:
|
with:
|
||||||
context: ${{ matrix.context }}
|
context: ${{ env.context }}
|
||||||
file: ${{ matrix.file }}
|
file: ${{ env.file }}
|
||||||
platforms: ${{ matrix.platforms }}
|
platforms: ${{ matrix.platforms }}
|
||||||
# Skip pushing when PR from a fork
|
# Skip pushing when PR from a fork
|
||||||
push: ${{ !github.event.pull_request.head.repo.fork }}
|
push: ${{ !github.event.pull_request.head.repo.fork }}
|
||||||
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{matrix.image}}
|
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{env.image}}
|
||||||
cache-to: ${{ steps.cache-target.outputs.cache-to }}
|
cache-to: ${{ steps.cache-target.outputs.cache-to }}
|
||||||
tags: ${{ steps.metadata.outputs.tags }}
|
tags: ${{ steps.metadata.outputs.tags }}
|
||||||
labels: ${{ steps.metadata.outputs.labels }}
|
labels: ${{ steps.metadata.outputs.labels }}
|
||||||
@ -132,3 +143,107 @@ jobs:
|
|||||||
BUILD_IMAGE=${{ github.event_name == 'release' && github.ref_name || steps.metadata.outputs.tags }}
|
BUILD_IMAGE=${{ github.event_name == 'release' && github.ref_name || steps.metadata.outputs.tags }}
|
||||||
BUILD_SOURCE_REF=${{ github.ref_name }}
|
BUILD_SOURCE_REF=${{ github.ref_name }}
|
||||||
BUILD_SOURCE_COMMIT=${{ github.sha }}
|
BUILD_SOURCE_COMMIT=${{ github.sha }}
|
||||||
|
|
||||||
|
|
||||||
|
build_and_push_server:
|
||||||
|
name: Build and Push Server
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run_server == 'true' }}
|
||||||
|
env:
|
||||||
|
image: immich-server
|
||||||
|
context: .
|
||||||
|
file: server/Dockerfile
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- platforms: linux/amd64,linux/arm64
|
||||||
|
device: cpu
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3.2.0
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3.6.1
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
# Only push to Docker Hub when making a release
|
||||||
|
if: ${{ github.event_name == 'release' }}
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Login to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
# Skip when PR from a fork
|
||||||
|
if: ${{ !github.event.pull_request.head.repo.fork }}
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Generate docker image tags
|
||||||
|
id: metadata
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
flavor: |
|
||||||
|
# Disable latest tag
|
||||||
|
latest=false
|
||||||
|
images: |
|
||||||
|
name=ghcr.io/${{ github.repository_owner }}/${{env.image}}
|
||||||
|
name=altran1502/${{env.image}},enable=${{ github.event_name == 'release' }}
|
||||||
|
tags: |
|
||||||
|
# Tag with branch name
|
||||||
|
type=ref,event=branch,suffix=${{ matrix.suffix }}
|
||||||
|
# Tag with pr-number
|
||||||
|
type=ref,event=pr,suffix=${{ matrix.suffix }}
|
||||||
|
# Tag with git tag on release
|
||||||
|
type=ref,event=tag,suffix=${{ matrix.suffix }}
|
||||||
|
type=raw,value=release,enable=${{ github.event_name == 'release' }},suffix=${{ matrix.suffix }}
|
||||||
|
|
||||||
|
- name: Determine build cache output
|
||||||
|
id: cache-target
|
||||||
|
run: |
|
||||||
|
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||||
|
# Essentially just ignore the cache output (PR can't write to registry cache)
|
||||||
|
echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "cache-to=type=registry,mode=max,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{ env.image }}" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Build and push image
|
||||||
|
uses: docker/build-push-action@v6.7.0
|
||||||
|
with:
|
||||||
|
context: ${{ env.context }}
|
||||||
|
file: ${{ env.file }}
|
||||||
|
platforms: ${{ matrix.platforms }}
|
||||||
|
# Skip pushing when PR from a fork
|
||||||
|
push: ${{ !github.event.pull_request.head.repo.fork }}
|
||||||
|
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{env.image}}
|
||||||
|
cache-to: ${{ steps.cache-target.outputs.cache-to }}
|
||||||
|
tags: ${{ steps.metadata.outputs.tags }}
|
||||||
|
labels: ${{ steps.metadata.outputs.labels }}
|
||||||
|
build-args: |
|
||||||
|
DEVICE=${{ matrix.device }}
|
||||||
|
BUILD_ID=${{ github.run_id }}
|
||||||
|
BUILD_IMAGE=${{ github.event_name == 'release' && github.ref_name || steps.metadata.outputs.tags }}
|
||||||
|
BUILD_SOURCE_REF=${{ github.ref_name }}
|
||||||
|
BUILD_SOURCE_COMMIT=${{ github.sha }}
|
||||||
|
|
||||||
|
success-check:
|
||||||
|
name: Docker Build & Push Success
|
||||||
|
needs: [build_and_push_ml, build_and_push_server]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: always()
|
||||||
|
steps:
|
||||||
|
- name: Any jobs failed?
|
||||||
|
if: ${{ contains(needs.*.result, 'failure') }}
|
||||||
|
run: exit 1
|
||||||
|
- name: All jobs passed or skipped
|
||||||
|
if: ${{ !(contains(needs.*.result, 'failure')) }}
|
||||||
|
run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}"
|
||||||
|
24
.github/workflows/docs-build.yml
vendored
24
.github/workflows/docs-build.yml
vendored
@ -2,12 +2,8 @@ name: Docs build
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
paths:
|
|
||||||
- "docs/**"
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
paths:
|
|
||||||
- "docs/**"
|
|
||||||
release:
|
release:
|
||||||
types: [published]
|
types: [published]
|
||||||
|
|
||||||
@ -16,7 +12,27 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
pre-job:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
should_run: ${{ steps.found_paths.outputs.docs == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- id: found_paths
|
||||||
|
uses: dorny/paths-filter@v3
|
||||||
|
with:
|
||||||
|
filters: |
|
||||||
|
docs:
|
||||||
|
- 'docs/**'
|
||||||
|
- name: Check if we should force jobs to run
|
||||||
|
id: should_force
|
||||||
|
run: echo "should_force=${{ github.event_name == 'release' }}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
build:
|
build:
|
||||||
|
name: Docs Build
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run == 'true' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
|
39
.github/workflows/docs-deploy.yml
vendored
39
.github/workflows/docs-deploy.yml
vendored
@ -7,13 +7,32 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
checks:
|
checks:
|
||||||
|
name: Docs Deploy Checks
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
parameters: ${{ steps.parameters.outputs.result }}
|
parameters: ${{ steps.parameters.outputs.result }}
|
||||||
|
artifact: ${{ steps.get-artifact.outputs.result }}
|
||||||
steps:
|
steps:
|
||||||
- if: ${{ github.event.workflow_run.conclusion == 'failure' }}
|
- if: ${{ github.event.workflow_run.conclusion != 'success' }}
|
||||||
run: echo 'The triggering workflow failed' && exit 1
|
run: echo 'The triggering workflow did not succeed' && exit 1
|
||||||
|
- name: Get artifact
|
||||||
|
id: get-artifact
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
run_id: context.payload.workflow_run.id,
|
||||||
|
});
|
||||||
|
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
|
||||||
|
return artifact.name == "docs-build-output"
|
||||||
|
})[0];
|
||||||
|
if (!matchArtifact) {
|
||||||
|
console.log("No artifact found with the name docs-build-output, build job was skipped")
|
||||||
|
return { found: false };
|
||||||
|
}
|
||||||
|
return { found: true, id: matchArtifact.id };
|
||||||
- name: Determine deploy parameters
|
- name: Determine deploy parameters
|
||||||
id: parameters
|
id: parameters
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
@ -73,9 +92,10 @@ jobs:
|
|||||||
return parameters;
|
return parameters;
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
|
name: Docs Deploy
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: checks
|
needs: checks
|
||||||
if: ${{ fromJson(needs.checks.outputs.parameters).shouldDeploy }}
|
if: ${{ fromJson(needs.checks.outputs.artifact).found && fromJson(needs.checks.outputs.parameters).shouldDeploy }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -98,18 +118,11 @@ jobs:
|
|||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
let artifact = ${{ needs.checks.outputs.artifact }};
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
run_id: context.payload.workflow_run.id,
|
|
||||||
});
|
|
||||||
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
|
|
||||||
return artifact.name == "docs-build-output"
|
|
||||||
})[0];
|
|
||||||
let download = await github.rest.actions.downloadArtifact({
|
let download = await github.rest.actions.downloadArtifact({
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
artifact_id: matchArtifact.id,
|
artifact_id: artifact.id,
|
||||||
archive_format: 'zip',
|
archive_format: 'zip',
|
||||||
});
|
});
|
||||||
let fs = require('fs');
|
let fs = require('fs');
|
||||||
|
1
.github/workflows/docs-destroy.yml
vendored
1
.github/workflows/docs-destroy.yml
vendored
@ -5,6 +5,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
|
name: Docs Destroy
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
|
5
.github/workflows/pr-label-validation.yml
vendored
5
.github/workflows/pr-label-validation.yml
vendored
@ -1,12 +1,15 @@
|
|||||||
name: PR Label Validation
|
name: PR Label Validation
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request_target:
|
||||||
types: [opened, labeled, unlabeled, synchronize]
|
types: [opened, labeled, unlabeled, synchronize]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
validate-release-label:
|
validate-release-label:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
issues: write
|
||||||
|
pull-requests: read
|
||||||
steps:
|
steps:
|
||||||
- name: Require PR to have a changelog label
|
- name: Require PR to have a changelog label
|
||||||
uses: mheap/github-action-required-labels@v5
|
uses: mheap/github-action-required-labels@v5
|
||||||
|
23
.github/workflows/prepare-release.yml
vendored
23
.github/workflows/prepare-release.yml
vendored
@ -29,17 +29,6 @@ jobs:
|
|||||||
ref: ${{ steps.push-tag.outputs.commit_long_sha }}
|
ref: ${{ steps.push-tag.outputs.commit_long_sha }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.ORG_RELEASE_TOKEN }}
|
|
||||||
|
|
||||||
- name: Install Poetry
|
|
||||||
run: pipx install poetry
|
|
||||||
|
|
||||||
- name: Bump version
|
|
||||||
run: misc/release/pump-version.sh -s "${{ inputs.serverBump }}" -m "${{ inputs.mobileBump }}"
|
|
||||||
|
|
||||||
- name: Generate a token
|
- name: Generate a token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@v1
|
uses: actions/create-github-app-token@v1
|
||||||
@ -47,6 +36,17 @@ jobs:
|
|||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
token: ${{ steps.generate-token.outputs.token }}
|
||||||
|
|
||||||
|
- name: Install Poetry
|
||||||
|
run: pipx install poetry
|
||||||
|
|
||||||
|
- name: Bump version
|
||||||
|
run: misc/release/pump-version.sh -s "${{ inputs.serverBump }}" -m "${{ inputs.mobileBump }}"
|
||||||
|
|
||||||
- name: Commit and tag
|
- name: Commit and tag
|
||||||
id: push-tag
|
id: push-tag
|
||||||
uses: EndBug/add-and-commit@v9
|
uses: EndBug/add-and-commit@v9
|
||||||
@ -55,7 +55,6 @@ jobs:
|
|||||||
message: 'chore: version ${{ env.IMMICH_VERSION }}'
|
message: 'chore: version ${{ env.IMMICH_VERSION }}'
|
||||||
tag: ${{ env.IMMICH_VERSION }}
|
tag: ${{ env.IMMICH_VERSION }}
|
||||||
push: true
|
push: true
|
||||||
github-token: ${{ steps.generate-token.outputs.token }}
|
|
||||||
|
|
||||||
build_mobile:
|
build_mobile:
|
||||||
uses: ./.github/workflows/build-mobile.yml
|
uses: ./.github/workflows/build-mobile.yml
|
||||||
|
19
.github/workflows/static_analysis.yml
vendored
19
.github/workflows/static_analysis.yml
vendored
@ -10,8 +10,27 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
pre-job:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- id: found_paths
|
||||||
|
uses: dorny/paths-filter@v3
|
||||||
|
with:
|
||||||
|
filters: |
|
||||||
|
mobile:
|
||||||
|
- 'mobile/**'
|
||||||
|
- name: Check if we should force jobs to run
|
||||||
|
id: should_force
|
||||||
|
run: echo "should_force=${{ github.event_name == 'release' }}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
mobile-dart-analyze:
|
mobile-dart-analyze:
|
||||||
name: Run Dart Code Analysis
|
name: Run Dart Code Analysis
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run == 'true' }}
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
147
.github/workflows/test.yml
vendored
147
.github/workflows/test.yml
vendored
@ -10,8 +10,47 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
pre-job:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
should_run_web: ${{ steps.found_paths.outputs.web == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
should_run_server: ${{ steps.found_paths.outputs.server == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
should_run_cli: ${{ steps.found_paths.outputs.cli == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
should_run_e2e: ${{ steps.found_paths.outputs.e2e == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
should_run_mobile: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
should_run_ml: ${{ steps.found_paths.outputs.machine-learning == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
should_run_e2e_web: ${{ steps.found_paths.outputs.e2e == 'true' || steps.found_paths.outputs.web == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
should_run_e2e_server_cli: ${{ steps.found_paths.outputs.e2e == 'true' || steps.found_paths.outputs.server == 'true' || steps.found_paths.outputs.cli == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- id: found_paths
|
||||||
|
uses: dorny/paths-filter@v3
|
||||||
|
with:
|
||||||
|
filters: |
|
||||||
|
web:
|
||||||
|
- 'web/**'
|
||||||
|
- 'open-api/typescript-sdk/**'
|
||||||
|
server:
|
||||||
|
- 'server/**'
|
||||||
|
cli:
|
||||||
|
- 'cli/**'
|
||||||
|
- 'open-api/typescript-sdk/**'
|
||||||
|
e2e:
|
||||||
|
- 'e2e/**'
|
||||||
|
mobile:
|
||||||
|
- 'mobile/**'
|
||||||
|
machine-learning:
|
||||||
|
- 'machine-learning/**'
|
||||||
|
|
||||||
|
- name: Check if we should force jobs to run
|
||||||
|
id: should_force
|
||||||
|
run: echo "should_force=${{ github.event_name == 'workflow_dispatch' }}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
server-unit-tests:
|
server-unit-tests:
|
||||||
name: Server
|
name: Test & Lint Server
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run_server == 'true' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@ -46,7 +85,9 @@ jobs:
|
|||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
cli-unit-tests:
|
cli-unit-tests:
|
||||||
name: CLI
|
name: Unit Test CLI
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run_cli == 'true' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@ -85,7 +126,9 @@ jobs:
|
|||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
cli-unit-tests-win:
|
cli-unit-tests-win:
|
||||||
name: CLI (Windows)
|
name: Unit Test CLI (Windows)
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run_cli == 'true' }}
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@ -117,7 +160,9 @@ jobs:
|
|||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
web-unit-tests:
|
web-unit-tests:
|
||||||
name: Web
|
name: Test & Lint Web
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run_web == 'true' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@ -159,13 +204,54 @@ jobs:
|
|||||||
run: npm run test:cov
|
run: npm run test:cov
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
e2e-tests:
|
e2e-tests-lint:
|
||||||
name: End-to-End Tests
|
name: End-to-End Lint
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run_e2e == 'true' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
working-directory: ./e2e
|
working-directory: ./e2e
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: './e2e/.nvmrc'
|
||||||
|
|
||||||
|
- name: Run setup typescript-sdk
|
||||||
|
run: npm ci && npm run build
|
||||||
|
working-directory: ./open-api/typescript-sdk
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
|
- name: Run linter
|
||||||
|
run: npm run lint
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
|
- name: Run formatter
|
||||||
|
run: npm run format
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
|
- name: Run tsc
|
||||||
|
run: npm run check
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
|
e2e-tests-server-cli:
|
||||||
|
name: End-to-End Tests (Server & CLI)
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run_e2e_server_cli == 'true' }}
|
||||||
|
runs-on: mich
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: ./e2e
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -191,16 +277,41 @@ jobs:
|
|||||||
run: npm ci
|
run: npm ci
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
- name: Run linter
|
- name: Docker build
|
||||||
run: npm run lint
|
run: docker compose build
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
- name: Run formatter
|
- name: Run e2e tests (api & cli)
|
||||||
run: npm run format
|
run: npm run test
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
- name: Run tsc
|
e2e-tests-web:
|
||||||
run: npm run check
|
name: End-to-End Tests (Web)
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run_e2e_web == 'true' }}
|
||||||
|
runs-on: mich
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: ./e2e
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: './e2e/.nvmrc'
|
||||||
|
|
||||||
|
- name: Run setup typescript-sdk
|
||||||
|
run: npm ci && npm run build
|
||||||
|
working-directory: ./open-api/typescript-sdk
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
- name: Install Playwright Browsers
|
- name: Install Playwright Browsers
|
||||||
@ -211,16 +322,14 @@ jobs:
|
|||||||
run: docker compose build
|
run: docker compose build
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
- name: Run e2e tests (api & cli)
|
|
||||||
run: npm run test
|
|
||||||
if: ${{ !cancelled() }}
|
|
||||||
|
|
||||||
- name: Run e2e tests (web)
|
- name: Run e2e tests (web)
|
||||||
run: npx playwright test
|
run: npx playwright test
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
|
|
||||||
mobile-unit-tests:
|
mobile-unit-tests:
|
||||||
name: Mobile
|
name: Unit Test Mobile
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run_mobile == 'true' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
@ -234,7 +343,9 @@ jobs:
|
|||||||
run: flutter test -j 1
|
run: flutter test -j 1
|
||||||
|
|
||||||
ml-unit-tests:
|
ml-unit-tests:
|
||||||
name: Machine Learning
|
name: Unit Test ML
|
||||||
|
needs: pre-job
|
||||||
|
if: ${{ needs.pre-job.outputs.should_run_ml == 'true' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM node:20.16.0-alpine3.20@sha256:eb8101caae9ac02229bd64c024919fe3d4504ff7f329da79ca60a04db08cef52 AS core
|
FROM node:20.17.0-alpine3.20@sha256:1a526b97cace6b4006256570efa1a29cd1fe4b96a5301f8d48e87c5139438a45 AS core
|
||||||
|
|
||||||
WORKDIR /usr/src/open-api/typescript-sdk
|
WORKDIR /usr/src/open-api/typescript-sdk
|
||||||
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./
|
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./
|
||||||
|
@ -4,8 +4,18 @@ Please see the [Immich CLI documentation](https://immich.app/docs/features/comma
|
|||||||
|
|
||||||
# For developers
|
# For developers
|
||||||
|
|
||||||
|
Before building the CLI, you must build the immich server and the open-api client. To build the server run the following in the server folder:
|
||||||
|
|
||||||
|
$ npm install
|
||||||
|
$ npm run build
|
||||||
|
|
||||||
|
Then, to build the open-api client run the following in the open-api folder:
|
||||||
|
|
||||||
|
$ ./bin/generate-open-api.sh
|
||||||
|
|
||||||
To run the Immich CLI from source, run the following in the cli folder:
|
To run the Immich CLI from source, run the following in the cli folder:
|
||||||
|
|
||||||
|
$ npm install
|
||||||
$ npm run build
|
$ npm run build
|
||||||
$ ts-node .
|
$ ts-node .
|
||||||
|
|
||||||
@ -17,3 +27,4 @@ You can also build and install the CLI using
|
|||||||
|
|
||||||
$ npm run build
|
$ npm run build
|
||||||
$ npm install -g .
|
$ npm install -g .
|
||||||
|
****
|
||||||
|
@ -55,6 +55,7 @@ export default [
|
|||||||
'unicorn/import-style': 'off',
|
'unicorn/import-style': 'off',
|
||||||
curly: 2,
|
curly: 2,
|
||||||
'prettier/prettier': 0,
|
'prettier/prettier': 0,
|
||||||
|
'object-shorthand': ['error', 'always'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
375
cli/package-lock.json
generated
375
cli/package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "@immich/cli",
|
"name": "@immich/cli",
|
||||||
"version": "2.2.15",
|
"version": "2.2.18",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "@immich/cli",
|
"name": "@immich/cli",
|
||||||
"version": "2.2.15",
|
"version": "2.2.18",
|
||||||
"license": "GNU Affero General Public License version 3",
|
"license": "GNU Affero General Public License version 3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fast-glob": "^3.3.2",
|
"fast-glob": "^3.3.2",
|
||||||
@ -24,7 +24,7 @@
|
|||||||
"@types/cli-progress": "^3.11.0",
|
"@types/cli-progress": "^3.11.0",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/mock-fs": "^4.13.1",
|
"@types/mock-fs": "^4.13.1",
|
||||||
"@types/node": "^20.14.15",
|
"@types/node": "^20.16.2",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
||||||
"@typescript-eslint/parser": "^8.0.0",
|
"@typescript-eslint/parser": "^8.0.0",
|
||||||
"@vitest/coverage-v8": "^2.0.5",
|
"@vitest/coverage-v8": "^2.0.5",
|
||||||
@ -52,14 +52,14 @@
|
|||||||
},
|
},
|
||||||
"../open-api/typescript-sdk": {
|
"../open-api/typescript-sdk": {
|
||||||
"name": "@immich/sdk",
|
"name": "@immich/sdk",
|
||||||
"version": "1.112.1",
|
"version": "1.114.0",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "GNU Affero General Public License version 3",
|
"license": "GNU Affero General Public License version 3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@oazapfts/runtime": "^1.0.2"
|
"@oazapfts/runtime": "^1.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.14.15",
|
"@types/node": "^20.16.2",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -727,9 +727,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/config-array": {
|
"node_modules/@eslint/config-array": {
|
||||||
"version": "0.17.1",
|
"version": "0.18.0",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz",
|
||||||
"integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==",
|
"integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -825,9 +825,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/js": {
|
"node_modules/@eslint/js": {
|
||||||
"version": "9.8.0",
|
"version": "9.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz",
|
||||||
"integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==",
|
"integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1054,169 +1054,224 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.1.tgz",
|
||||||
"integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==",
|
"integrity": "sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"android"
|
"android"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-android-arm64": {
|
"node_modules/@rollup/rollup-android-arm64": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.1.tgz",
|
||||||
"integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==",
|
"integrity": "sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"android"
|
"android"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-darwin-arm64": {
|
"node_modules/@rollup/rollup-darwin-arm64": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.1.tgz",
|
||||||
"integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==",
|
"integrity": "sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"darwin"
|
"darwin"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-darwin-x64": {
|
"node_modules/@rollup/rollup-darwin-x64": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.1.tgz",
|
||||||
"integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==",
|
"integrity": "sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"darwin"
|
"darwin"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.1.tgz",
|
||||||
"integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==",
|
"integrity": "sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
|
||||||
|
"version": "4.21.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.1.tgz",
|
||||||
|
"integrity": "sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"linux"
|
"linux"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.1.tgz",
|
||||||
"integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==",
|
"integrity": "sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"linux"
|
"linux"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.1.tgz",
|
||||||
"integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==",
|
"integrity": "sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
|
||||||
|
"version": "4.21.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.1.tgz",
|
||||||
|
"integrity": "sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==",
|
||||||
|
"cpu": [
|
||||||
|
"ppc64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"linux"
|
"linux"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.1.tgz",
|
||||||
"integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==",
|
"integrity": "sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"riscv64"
|
"riscv64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-s390x-gnu": {
|
||||||
|
"version": "4.21.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.1.tgz",
|
||||||
|
"integrity": "sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==",
|
||||||
|
"cpu": [
|
||||||
|
"s390x"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"linux"
|
"linux"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.1.tgz",
|
||||||
"integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==",
|
"integrity": "sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"linux"
|
"linux"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-linux-x64-musl": {
|
"node_modules/@rollup/rollup-linux-x64-musl": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.1.tgz",
|
||||||
"integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==",
|
"integrity": "sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"linux"
|
"linux"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.1.tgz",
|
||||||
"integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==",
|
"integrity": "sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"win32"
|
"win32"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.1.tgz",
|
||||||
"integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==",
|
"integrity": "sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"win32"
|
"win32"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.1.tgz",
|
||||||
"integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==",
|
"integrity": "sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
"win32"
|
"win32"
|
||||||
@ -1269,9 +1324,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "20.16.1",
|
"version": "20.16.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.3.tgz",
|
||||||
"integrity": "sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==",
|
"integrity": "sha512-/wdGiWRkMOm53gAsSyFMXFZHbVg7C6CbkrzHNpaHoYfsUWPg7m6ZRKtvQjgvQ9i8WT540a3ydRlRQbxjY30XxQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -1285,17 +1340,17 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz",
|
||||||
"integrity": "sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==",
|
"integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/regexpp": "^4.10.0",
|
"@eslint-community/regexpp": "^4.10.0",
|
||||||
"@typescript-eslint/scope-manager": "8.0.1",
|
"@typescript-eslint/scope-manager": "8.3.0",
|
||||||
"@typescript-eslint/type-utils": "8.0.1",
|
"@typescript-eslint/type-utils": "8.3.0",
|
||||||
"@typescript-eslint/utils": "8.0.1",
|
"@typescript-eslint/utils": "8.3.0",
|
||||||
"@typescript-eslint/visitor-keys": "8.0.1",
|
"@typescript-eslint/visitor-keys": "8.3.0",
|
||||||
"graphemer": "^1.4.0",
|
"graphemer": "^1.4.0",
|
||||||
"ignore": "^5.3.1",
|
"ignore": "^5.3.1",
|
||||||
"natural-compare": "^1.4.0",
|
"natural-compare": "^1.4.0",
|
||||||
@ -1319,16 +1374,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/parser": {
|
"node_modules/@typescript-eslint/parser": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz",
|
||||||
"integrity": "sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==",
|
"integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "8.0.1",
|
"@typescript-eslint/scope-manager": "8.3.0",
|
||||||
"@typescript-eslint/types": "8.0.1",
|
"@typescript-eslint/types": "8.3.0",
|
||||||
"@typescript-eslint/typescript-estree": "8.0.1",
|
"@typescript-eslint/typescript-estree": "8.3.0",
|
||||||
"@typescript-eslint/visitor-keys": "8.0.1",
|
"@typescript-eslint/visitor-keys": "8.3.0",
|
||||||
"debug": "^4.3.4"
|
"debug": "^4.3.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1348,14 +1403,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz",
|
||||||
"integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==",
|
"integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "8.0.1",
|
"@typescript-eslint/types": "8.3.0",
|
||||||
"@typescript-eslint/visitor-keys": "8.0.1"
|
"@typescript-eslint/visitor-keys": "8.3.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||||
@ -1366,14 +1421,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils": {
|
"node_modules/@typescript-eslint/type-utils": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz",
|
||||||
"integrity": "sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==",
|
"integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/typescript-estree": "8.0.1",
|
"@typescript-eslint/typescript-estree": "8.3.0",
|
||||||
"@typescript-eslint/utils": "8.0.1",
|
"@typescript-eslint/utils": "8.3.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"ts-api-utils": "^1.3.0"
|
"ts-api-utils": "^1.3.0"
|
||||||
},
|
},
|
||||||
@ -1391,9 +1446,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/types": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz",
|
||||||
"integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==",
|
"integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1405,16 +1460,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz",
|
||||||
"integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==",
|
"integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "8.0.1",
|
"@typescript-eslint/types": "8.3.0",
|
||||||
"@typescript-eslint/visitor-keys": "8.0.1",
|
"@typescript-eslint/visitor-keys": "8.3.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"globby": "^11.1.0",
|
"fast-glob": "^3.3.2",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
"minimatch": "^9.0.4",
|
"minimatch": "^9.0.4",
|
||||||
"semver": "^7.6.0",
|
"semver": "^7.6.0",
|
||||||
@ -1434,16 +1489,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils": {
|
"node_modules/@typescript-eslint/utils": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz",
|
||||||
"integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==",
|
"integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.4.0",
|
"@eslint-community/eslint-utils": "^4.4.0",
|
||||||
"@typescript-eslint/scope-manager": "8.0.1",
|
"@typescript-eslint/scope-manager": "8.3.0",
|
||||||
"@typescript-eslint/types": "8.0.1",
|
"@typescript-eslint/types": "8.3.0",
|
||||||
"@typescript-eslint/typescript-estree": "8.0.1"
|
"@typescript-eslint/typescript-estree": "8.3.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||||
@ -1457,13 +1512,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz",
|
||||||
"integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==",
|
"integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "8.0.1",
|
"@typescript-eslint/types": "8.3.0",
|
||||||
"eslint-visitor-keys": "^3.4.3"
|
"eslint-visitor-keys": "^3.4.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1650,16 +1705,6 @@
|
|||||||
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/array-union": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/assertion-error": {
|
"node_modules/assertion-error": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
|
||||||
@ -1979,19 +2024,6 @@
|
|||||||
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
|
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/dir-glob": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"path-type": "^4.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/eastasianwidth": {
|
"node_modules/eastasianwidth": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
||||||
@ -2080,17 +2112,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint": {
|
"node_modules/eslint": {
|
||||||
"version": "9.8.0",
|
"version": "9.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz",
|
||||||
"integrity": "sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==",
|
"integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.2.0",
|
"@eslint-community/eslint-utils": "^4.2.0",
|
||||||
"@eslint-community/regexpp": "^4.11.0",
|
"@eslint-community/regexpp": "^4.11.0",
|
||||||
"@eslint/config-array": "^0.17.1",
|
"@eslint/config-array": "^0.18.0",
|
||||||
"@eslint/eslintrc": "^3.1.0",
|
"@eslint/eslintrc": "^3.1.0",
|
||||||
"@eslint/js": "9.8.0",
|
"@eslint/js": "9.9.1",
|
||||||
"@humanwhocodes/module-importer": "^1.0.1",
|
"@humanwhocodes/module-importer": "^1.0.1",
|
||||||
"@humanwhocodes/retry": "^0.3.0",
|
"@humanwhocodes/retry": "^0.3.0",
|
||||||
"@nodelib/fs.walk": "^1.2.8",
|
"@nodelib/fs.walk": "^1.2.8",
|
||||||
@ -2129,6 +2161,14 @@
|
|||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://eslint.org/donate"
|
"url": "https://eslint.org/donate"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"jiti": "*"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"jiti": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-config-prettier": {
|
"node_modules/eslint-config-prettier": {
|
||||||
@ -2603,27 +2643,6 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/globby": {
|
|
||||||
"version": "11.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
|
|
||||||
"integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"array-union": "^2.1.0",
|
|
||||||
"dir-glob": "^3.0.1",
|
|
||||||
"fast-glob": "^3.2.9",
|
|
||||||
"ignore": "^5.2.0",
|
|
||||||
"merge2": "^1.4.1",
|
|
||||||
"slash": "^3.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/globrex": {
|
"node_modules/globrex": {
|
||||||
"version": "0.1.2",
|
"version": "0.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
|
||||||
@ -3374,16 +3393,6 @@
|
|||||||
"url": "https://github.com/sponsors/isaacs"
|
"url": "https://github.com/sponsors/isaacs"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/path-type": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/pathe": {
|
"node_modules/pathe": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
|
||||||
@ -3709,10 +3718,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/rollup": {
|
"node_modules/rollup": {
|
||||||
"version": "4.13.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.1.tgz",
|
||||||
"integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==",
|
"integrity": "sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/estree": "1.0.5"
|
"@types/estree": "1.0.5"
|
||||||
},
|
},
|
||||||
@ -3724,19 +3734,22 @@
|
|||||||
"npm": ">=8.0.0"
|
"npm": ">=8.0.0"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@rollup/rollup-android-arm-eabi": "4.13.0",
|
"@rollup/rollup-android-arm-eabi": "4.21.1",
|
||||||
"@rollup/rollup-android-arm64": "4.13.0",
|
"@rollup/rollup-android-arm64": "4.21.1",
|
||||||
"@rollup/rollup-darwin-arm64": "4.13.0",
|
"@rollup/rollup-darwin-arm64": "4.21.1",
|
||||||
"@rollup/rollup-darwin-x64": "4.13.0",
|
"@rollup/rollup-darwin-x64": "4.21.1",
|
||||||
"@rollup/rollup-linux-arm-gnueabihf": "4.13.0",
|
"@rollup/rollup-linux-arm-gnueabihf": "4.21.1",
|
||||||
"@rollup/rollup-linux-arm64-gnu": "4.13.0",
|
"@rollup/rollup-linux-arm-musleabihf": "4.21.1",
|
||||||
"@rollup/rollup-linux-arm64-musl": "4.13.0",
|
"@rollup/rollup-linux-arm64-gnu": "4.21.1",
|
||||||
"@rollup/rollup-linux-riscv64-gnu": "4.13.0",
|
"@rollup/rollup-linux-arm64-musl": "4.21.1",
|
||||||
"@rollup/rollup-linux-x64-gnu": "4.13.0",
|
"@rollup/rollup-linux-powerpc64le-gnu": "4.21.1",
|
||||||
"@rollup/rollup-linux-x64-musl": "4.13.0",
|
"@rollup/rollup-linux-riscv64-gnu": "4.21.1",
|
||||||
"@rollup/rollup-win32-arm64-msvc": "4.13.0",
|
"@rollup/rollup-linux-s390x-gnu": "4.21.1",
|
||||||
"@rollup/rollup-win32-ia32-msvc": "4.13.0",
|
"@rollup/rollup-linux-x64-gnu": "4.21.1",
|
||||||
"@rollup/rollup-win32-x64-msvc": "4.13.0",
|
"@rollup/rollup-linux-x64-musl": "4.21.1",
|
||||||
|
"@rollup/rollup-win32-arm64-msvc": "4.21.1",
|
||||||
|
"@rollup/rollup-win32-ia32-msvc": "4.21.1",
|
||||||
|
"@rollup/rollup-win32-x64-msvc": "4.21.1",
|
||||||
"fsevents": "~2.3.2"
|
"fsevents": "~2.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -3813,16 +3826,6 @@
|
|||||||
"url": "https://github.com/sponsors/isaacs"
|
"url": "https://github.com/sponsors/isaacs"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/slash": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/source-map-js": {
|
"node_modules/source-map-js": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
|
||||||
@ -4207,15 +4210,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vite": {
|
"node_modules/vite": {
|
||||||
"version": "5.4.0",
|
"version": "5.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz",
|
||||||
"integrity": "sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==",
|
"integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"esbuild": "^0.21.3",
|
"esbuild": "^0.21.3",
|
||||||
"postcss": "^8.4.40",
|
"postcss": "^8.4.41",
|
||||||
"rollup": "^4.13.0"
|
"rollup": "^4.20.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"vite": "bin/vite.js"
|
"vite": "bin/vite.js"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@immich/cli",
|
"name": "@immich/cli",
|
||||||
"version": "2.2.15",
|
"version": "2.2.18",
|
||||||
"description": "Command Line Interface (CLI) for Immich",
|
"description": "Command Line Interface (CLI) for Immich",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": "./dist/index.js",
|
"exports": "./dist/index.js",
|
||||||
@ -20,7 +20,7 @@
|
|||||||
"@types/cli-progress": "^3.11.0",
|
"@types/cli-progress": "^3.11.0",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/mock-fs": "^4.13.1",
|
"@types/mock-fs": "^4.13.1",
|
||||||
"@types/node": "^20.14.15",
|
"@types/node": "^20.16.2",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
||||||
"@typescript-eslint/parser": "^8.0.0",
|
"@typescript-eslint/parser": "^8.0.0",
|
||||||
"@vitest/coverage-v8": "^2.0.5",
|
"@vitest/coverage-v8": "^2.0.5",
|
||||||
|
@ -2,37 +2,37 @@
|
|||||||
# Manual edits may be lost in future updates.
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
||||||
version = "4.38.0"
|
version = "4.40.0"
|
||||||
constraints = "4.38.0"
|
constraints = "4.40.0"
|
||||||
hashes = [
|
hashes = [
|
||||||
"h1:+27KAHKHBDvv3dqyJv5vhtdKQZJzoZXoMqIyronlHNw=",
|
"h1:GP2N1tXrmpxu+qEDvFAmkfv9aeZNhag3bchyJpGpYbU=",
|
||||||
"h1:/uV9RgOUhkxElkHhWs8fs5ZbX9vj6RCBfP0oJO0JF30=",
|
"h1:HDJKZBQkVU0kQl4gViQ5L7EcFLn9hB0iuvO+ORJiDS4=",
|
||||||
"h1:1DNAdMugJJOAWD/XYiZenYYZLy7fw2ctjT4YZmkRCVQ=",
|
"h1:KrbeEsZoCJOnnX68yNI5h3QhMjc5bBCQW4yvYaEFq3s=",
|
||||||
"h1:1wn4PmCLdT7mvd74JkCGmJDJxTQDkcxc+1jNbmwnMHA=",
|
"h1:LelwnzU0OVn6g2+T9Ub9XdpC+vbheraIL/qgXhWBs/k=",
|
||||||
"h1:BIHB4fBxHg2bA9KbL92njhyctxKC8b6hNDp60y5QBss=",
|
"h1:TIq9CynfWrKgCxKL97Akj89cYlvJKn/AL4UXogd8/FM=",
|
||||||
"h1:HCQpvKPsMsR4HO5eDqt+Kao7T7CYeEH7KZIO7xMcC6M=",
|
"h1:Uoy5oPdm1ipDG7yIMCUN1IXMpsTGXahPw3I0rVA/6wA=",
|
||||||
"h1:HTomuzocukpNLwtWzeSF3yteCVsyVKbwKmN66u9iPac=",
|
"h1:Wunfpm+IZhENdoimrh4iXiakVnCsfKOHo80yJUjMQXM=",
|
||||||
"h1:YDxsUBhBAwHSXLzVwrSlSBOwv1NvLyry7s5SfCV7VqQ=",
|
"h1:cRdCuahMOFrNyldnCInqGQRBT1DTkRPSfPnaf5r05iw=",
|
||||||
"h1:dchVhxo+Acd1l2RuZ88tW9lWj4422QMfgtxKvKCjYrw=",
|
"h1:k+zpXg8BO7gdbTIfSGyQisHhs5aVWQVbPLa5uUdr2UA=",
|
||||||
"h1:eypa+P4ZpsEGMPFuCE+6VkRefu0TZRFmVBOpK+PDOPY=",
|
"h1:kWNrzZ8Rh0OpHikexkmwJIIucD6SMZPi4oGyDsKJitw=",
|
||||||
"h1:f3yjse2OsRZj7ZhR7BLintJMlI4fpyt8HyDP/zcEavw=",
|
"h1:lomfTTjK78BdSEVTFcJUBQRy7IQHuGQImMaPWaYpfgQ=",
|
||||||
"h1:mSJ7xj8K+xcnEmGg7lH0jjzyQb157wH94ULTAlIV+HQ=",
|
"h1:oWcWlZe52ZRyLQciNe94RaWzhHifSTu03nlK0uL7rlM=",
|
||||||
"h1:tt+2J2Ze8VIdDq2Hr6uHlTJzAMBRpErBwTYx0uD5ilE=",
|
"h1:p3JJrhGEPlPQP7Uwy9FNMdvqCyD8tuT4lnXuJ+pSF/M=",
|
||||||
"h1:uQW8SKxmulqrAisO+365mIf2FueINAp5PY28bqCPCug=",
|
"h1:wtB0sKxG2K/H41hWJI4uJdImWquuaP34Sip5LmfE410=",
|
||||||
"zh:171ab67cccceead4514fafb2d39e4e708a90cce79000aaf3c29aab7ed4457071",
|
"zh:01742e5946f936548f8e42120287ffc757abf97e7cbbe34e25c266a438fb54fd",
|
||||||
"zh:18aa7228447baaaefc49a43e8eff970817a7491a63d8937e796357a3829dd979",
|
"zh:08d81f5a5aab4cc269f983b8c6b5be0e278105136aca9681740802619577371f",
|
||||||
"zh:2cbaab6092e81ba6f41fa60a50f14e980c8ec327ee11d0b21f16a478be4b7567",
|
"zh:0d75131ba70902cfc94a7a5900369bdde56528b2aad6e10b164449cc97d57396",
|
||||||
"zh:53b8e49c06f5b31a8c681f8c0669cf43e78abe71657b8182a221d096bb514965",
|
"zh:3890a715a012e197541daacdacb8cceec6d364814daa4640ddfe98a8ba9036cb",
|
||||||
"zh:6037cfc60b4b647aabae155fcb46d649ed7c650e0287f05db52b2068f1e27c8a",
|
"zh:58254ce5ebe1faed4664df86210c39d660bcdc60280f17b25fe4d4dbea21ea8c",
|
||||||
"zh:62460982ce1a869eebfca675603fbbd50416cf6b69459fb855bfbe5ae2b97607",
|
"zh:6b0abc1adbc2edee79368ce9f7338ebcb5d0bf941e8d7d9ac505b750f20f80a2",
|
||||||
"zh:65f6f3a8470917b6398baa5eb4f74b3932b213eac7c0202798bfad6fd1ee17df",
|
"zh:81cc415d1477174a1ca288d25fdb57e5ee488c2d7f61f265ef995b255a53b0ce",
|
||||||
|
"zh:8680140c7fe5beaefe61c5cfa471bf88422dc0c0f05dad6d3cb482d4ffd22be4",
|
||||||
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
||||||
"zh:8b5cebe64bf04105a49178a165b6a8800a9a33bae6767143a47fe4977755f805",
|
"zh:a491d26236122ccb83dac8cb490d2c0aa1f4d3a0b4abe99300fd49b1a624f42f",
|
||||||
"zh:a5596635db0993ee3c3060fbc2227d91b239466e96d2d82642625a5aa2486988",
|
"zh:a70d9c469dc8d55715ba77c9d1a4ede1fdebf79e60ee18438a0844868db54e0d",
|
||||||
"zh:b3a9c63038441f13c311fd4b2c7e69e571445e5a7365a20c7cc9046b7e6c8aba",
|
"zh:a7fcb7d5c4222e14ec6d9a15adf8b9a083d84b102c3d0e4a0d102df5a1360b62",
|
||||||
"zh:b585e7e4d7648a540b14b9182819214896ca9337729eeb1f2034833b17db754d",
|
"zh:b4f9677174fabd199c8ebd2e9e5eb3528cf887e700569a4fb61eef4e070cec5e",
|
||||||
"zh:d2c3c545318ac8542369e9fc8228e29ee585febdf203a450fad3e0eded71ce02",
|
"zh:c27f0f7519221d75dae4a3787a59e05acd5cc9a0d30a390eff349a77d20d52e6",
|
||||||
"zh:e95dd2d6c3525073af47d47b763cb81b6a51b20cabf76f789c69328922da9ecf",
|
"zh:db00d8605dbf43ca42fe1481a6c67fdcaa73debb7d2a0f613cb95ae5c5e7150e",
|
||||||
"zh:eee6e590b36d6c6168a7daae8afa74a8721fd7aa9f62a710f04a311975100722",
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
cloudflare = {
|
cloudflare = {
|
||||||
source = "cloudflare/cloudflare"
|
source = "cloudflare/cloudflare"
|
||||||
version = "4.38.0"
|
version = "4.40.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,6 @@ resource "cloudflare_record" "immich_app_release_domain" {
|
|||||||
proxied = true
|
proxied = true
|
||||||
ttl = 1
|
ttl = 1
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
value = data.terraform_remote_state.cloudflare_immich_app_docs.outputs.immich_app_branch_pages_hostname
|
content = data.terraform_remote_state.cloudflare_immich_app_docs.outputs.immich_app_branch_pages_hostname
|
||||||
zone_id = data.terraform_remote_state.cloudflare_account.outputs.immich_app_zone_id
|
zone_id = data.terraform_remote_state.cloudflare_account.outputs.immich_app_zone_id
|
||||||
}
|
}
|
||||||
|
@ -2,37 +2,37 @@
|
|||||||
# Manual edits may be lost in future updates.
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
||||||
version = "4.38.0"
|
version = "4.40.0"
|
||||||
constraints = "4.38.0"
|
constraints = "4.40.0"
|
||||||
hashes = [
|
hashes = [
|
||||||
"h1:+27KAHKHBDvv3dqyJv5vhtdKQZJzoZXoMqIyronlHNw=",
|
"h1:GP2N1tXrmpxu+qEDvFAmkfv9aeZNhag3bchyJpGpYbU=",
|
||||||
"h1:/uV9RgOUhkxElkHhWs8fs5ZbX9vj6RCBfP0oJO0JF30=",
|
"h1:HDJKZBQkVU0kQl4gViQ5L7EcFLn9hB0iuvO+ORJiDS4=",
|
||||||
"h1:1DNAdMugJJOAWD/XYiZenYYZLy7fw2ctjT4YZmkRCVQ=",
|
"h1:KrbeEsZoCJOnnX68yNI5h3QhMjc5bBCQW4yvYaEFq3s=",
|
||||||
"h1:1wn4PmCLdT7mvd74JkCGmJDJxTQDkcxc+1jNbmwnMHA=",
|
"h1:LelwnzU0OVn6g2+T9Ub9XdpC+vbheraIL/qgXhWBs/k=",
|
||||||
"h1:BIHB4fBxHg2bA9KbL92njhyctxKC8b6hNDp60y5QBss=",
|
"h1:TIq9CynfWrKgCxKL97Akj89cYlvJKn/AL4UXogd8/FM=",
|
||||||
"h1:HCQpvKPsMsR4HO5eDqt+Kao7T7CYeEH7KZIO7xMcC6M=",
|
"h1:Uoy5oPdm1ipDG7yIMCUN1IXMpsTGXahPw3I0rVA/6wA=",
|
||||||
"h1:HTomuzocukpNLwtWzeSF3yteCVsyVKbwKmN66u9iPac=",
|
"h1:Wunfpm+IZhENdoimrh4iXiakVnCsfKOHo80yJUjMQXM=",
|
||||||
"h1:YDxsUBhBAwHSXLzVwrSlSBOwv1NvLyry7s5SfCV7VqQ=",
|
"h1:cRdCuahMOFrNyldnCInqGQRBT1DTkRPSfPnaf5r05iw=",
|
||||||
"h1:dchVhxo+Acd1l2RuZ88tW9lWj4422QMfgtxKvKCjYrw=",
|
"h1:k+zpXg8BO7gdbTIfSGyQisHhs5aVWQVbPLa5uUdr2UA=",
|
||||||
"h1:eypa+P4ZpsEGMPFuCE+6VkRefu0TZRFmVBOpK+PDOPY=",
|
"h1:kWNrzZ8Rh0OpHikexkmwJIIucD6SMZPi4oGyDsKJitw=",
|
||||||
"h1:f3yjse2OsRZj7ZhR7BLintJMlI4fpyt8HyDP/zcEavw=",
|
"h1:lomfTTjK78BdSEVTFcJUBQRy7IQHuGQImMaPWaYpfgQ=",
|
||||||
"h1:mSJ7xj8K+xcnEmGg7lH0jjzyQb157wH94ULTAlIV+HQ=",
|
"h1:oWcWlZe52ZRyLQciNe94RaWzhHifSTu03nlK0uL7rlM=",
|
||||||
"h1:tt+2J2Ze8VIdDq2Hr6uHlTJzAMBRpErBwTYx0uD5ilE=",
|
"h1:p3JJrhGEPlPQP7Uwy9FNMdvqCyD8tuT4lnXuJ+pSF/M=",
|
||||||
"h1:uQW8SKxmulqrAisO+365mIf2FueINAp5PY28bqCPCug=",
|
"h1:wtB0sKxG2K/H41hWJI4uJdImWquuaP34Sip5LmfE410=",
|
||||||
"zh:171ab67cccceead4514fafb2d39e4e708a90cce79000aaf3c29aab7ed4457071",
|
"zh:01742e5946f936548f8e42120287ffc757abf97e7cbbe34e25c266a438fb54fd",
|
||||||
"zh:18aa7228447baaaefc49a43e8eff970817a7491a63d8937e796357a3829dd979",
|
"zh:08d81f5a5aab4cc269f983b8c6b5be0e278105136aca9681740802619577371f",
|
||||||
"zh:2cbaab6092e81ba6f41fa60a50f14e980c8ec327ee11d0b21f16a478be4b7567",
|
"zh:0d75131ba70902cfc94a7a5900369bdde56528b2aad6e10b164449cc97d57396",
|
||||||
"zh:53b8e49c06f5b31a8c681f8c0669cf43e78abe71657b8182a221d096bb514965",
|
"zh:3890a715a012e197541daacdacb8cceec6d364814daa4640ddfe98a8ba9036cb",
|
||||||
"zh:6037cfc60b4b647aabae155fcb46d649ed7c650e0287f05db52b2068f1e27c8a",
|
"zh:58254ce5ebe1faed4664df86210c39d660bcdc60280f17b25fe4d4dbea21ea8c",
|
||||||
"zh:62460982ce1a869eebfca675603fbbd50416cf6b69459fb855bfbe5ae2b97607",
|
"zh:6b0abc1adbc2edee79368ce9f7338ebcb5d0bf941e8d7d9ac505b750f20f80a2",
|
||||||
"zh:65f6f3a8470917b6398baa5eb4f74b3932b213eac7c0202798bfad6fd1ee17df",
|
"zh:81cc415d1477174a1ca288d25fdb57e5ee488c2d7f61f265ef995b255a53b0ce",
|
||||||
|
"zh:8680140c7fe5beaefe61c5cfa471bf88422dc0c0f05dad6d3cb482d4ffd22be4",
|
||||||
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
||||||
"zh:8b5cebe64bf04105a49178a165b6a8800a9a33bae6767143a47fe4977755f805",
|
"zh:a491d26236122ccb83dac8cb490d2c0aa1f4d3a0b4abe99300fd49b1a624f42f",
|
||||||
"zh:a5596635db0993ee3c3060fbc2227d91b239466e96d2d82642625a5aa2486988",
|
"zh:a70d9c469dc8d55715ba77c9d1a4ede1fdebf79e60ee18438a0844868db54e0d",
|
||||||
"zh:b3a9c63038441f13c311fd4b2c7e69e571445e5a7365a20c7cc9046b7e6c8aba",
|
"zh:a7fcb7d5c4222e14ec6d9a15adf8b9a083d84b102c3d0e4a0d102df5a1360b62",
|
||||||
"zh:b585e7e4d7648a540b14b9182819214896ca9337729eeb1f2034833b17db754d",
|
"zh:b4f9677174fabd199c8ebd2e9e5eb3528cf887e700569a4fb61eef4e070cec5e",
|
||||||
"zh:d2c3c545318ac8542369e9fc8228e29ee585febdf203a450fad3e0eded71ce02",
|
"zh:c27f0f7519221d75dae4a3787a59e05acd5cc9a0d30a390eff349a77d20d52e6",
|
||||||
"zh:e95dd2d6c3525073af47d47b763cb81b6a51b20cabf76f789c69328922da9ecf",
|
"zh:db00d8605dbf43ca42fe1481a6c67fdcaa73debb7d2a0f613cb95ae5c5e7150e",
|
||||||
"zh:eee6e590b36d6c6168a7daae8afa74a8721fd7aa9f62a710f04a311975100722",
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
cloudflare = {
|
cloudflare = {
|
||||||
source = "cloudflare/cloudflare"
|
source = "cloudflare/cloudflare"
|
||||||
version = "4.38.0"
|
version = "4.40.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ resource "cloudflare_record" "immich_app_branch_subdomain" {
|
|||||||
proxied = true
|
proxied = true
|
||||||
ttl = 1
|
ttl = 1
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
value = "${replace(var.prefix_name, "/\\/|\\./", "-")}.${local.is_release ? data.terraform_remote_state.cloudflare_account.outputs.immich_app_archive_pages_project_subdomain : data.terraform_remote_state.cloudflare_account.outputs.immich_app_preview_pages_project_subdomain}"
|
content = "${replace(var.prefix_name, "/\\/|\\./", "-")}.${local.is_release ? data.terraform_remote_state.cloudflare_account.outputs.immich_app_archive_pages_project_subdomain : data.terraform_remote_state.cloudflare_account.outputs.immich_app_preview_pages_project_subdomain}"
|
||||||
zone_id = data.terraform_remote_state.cloudflare_account.outputs.immich_app_zone_id
|
zone_id = data.terraform_remote_state.cloudflare_account.outputs.immich_app_zone_id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ services:
|
|||||||
command: ['./run.sh', '-disable-reporting']
|
command: ['./run.sh', '-disable-reporting']
|
||||||
ports:
|
ports:
|
||||||
- 3000:3000
|
- 3000:3000
|
||||||
image: grafana/grafana:11.1.4-ubuntu@sha256:8e74fb7eed4d59fb5595acd0576c21411167f6b6401426ae29f2e8f9f71b68f6
|
image: grafana/grafana:11.2.0-ubuntu@sha256:8e2c13739563c3da9d45de96c6bcb63ba617cac8c571c060112c7fc8ad6914e9
|
||||||
volumes:
|
volumes:
|
||||||
- grafana-data:/var/lib/grafana
|
- grafana-data:/var/lib/grafana
|
||||||
|
|
||||||
|
@ -67,6 +67,11 @@ No, Immich does not modify the original files.
|
|||||||
All edited metadata is saved in companion `.xmp` sidecar files and the database.
|
All edited metadata is saved in companion `.xmp` sidecar files and the database.
|
||||||
However, Immich will delete original files that have been trashed when the trash is emptied in the Immich UI.
|
However, Immich will delete original files that have been trashed when the trash is emptied in the Immich UI.
|
||||||
|
|
||||||
|
### Why do my file names appear as a random string in the file manager?
|
||||||
|
|
||||||
|
When Storage Template is off (default) Immich saves the file names in a random string (also known as random UUIDs) to prevent duplicate file names. To retrieve the original file names, you must enable the Storage Template and then run the STORAGE TEMPLATE MIGRATION job.
|
||||||
|
It is recommended to read about [Storage Template](https://immich.app/docs/administration/storage-template) before activation.
|
||||||
|
|
||||||
### Can I add my existing photo library?
|
### Can I add my existing photo library?
|
||||||
|
|
||||||
Yes, with an [External Library](/docs/features/libraries.md).
|
Yes, with an [External Library](/docs/features/libraries.md).
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.1 MiB |
BIN
docs/docs/administration/img/admin-jobs.webp
Normal file
BIN
docs/docs/administration/img/admin-jobs.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 79 KiB |
@ -52,4 +52,4 @@ Additionally, some jobs run on a schedule, which is every night at midnight. Thi
|
|||||||
Storage Migration job can be run after changing the [Storage Template](/docs/administration/storage-template.mdx), in order to apply the change to the existing library.
|
Storage Migration job can be run after changing the [Storage Template](/docs/administration/storage-template.mdx), in order to apply the change to the existing library.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
<img src={require('./img/admin-jobs.png').default} width="80%" title="Admin jobs" />
|
<img src={require('./img/admin-jobs.webp').default} width="60%" title="Admin jobs" />
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
This page contains details about using OAuth in Immich.
|
This page contains details about using OAuth in Immich.
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
Unable to set `app.immich:/` as a valid redirect URI? See [Mobile Redirect URI](#mobile-redirect-uri) for an alternative solution.
|
Unable to set `app.immich:///oauth-callback` as a valid redirect URI? See [Mobile Redirect URI](#mobile-redirect-uri) for an alternative solution.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
@ -30,7 +30,7 @@ Before enabling OAuth in Immich, a new client application needs to be configured
|
|||||||
|
|
||||||
The **Sign-in redirect URIs** should include:
|
The **Sign-in redirect URIs** should include:
|
||||||
|
|
||||||
- `app.immich:/` - for logging in with OAuth from the [Mobile App](/docs/features/mobile-app.mdx)
|
- `app.immich:///oauth-callback` - for logging in with OAuth from the [Mobile App](/docs/features/mobile-app.mdx)
|
||||||
- `http://DOMAIN:PORT/auth/login` - for logging in with OAuth from the Web Client
|
- `http://DOMAIN:PORT/auth/login` - for logging in with OAuth from the Web Client
|
||||||
- `http://DOMAIN:PORT/user-settings` - for manually linking OAuth in the Web Client
|
- `http://DOMAIN:PORT/user-settings` - for manually linking OAuth in the Web Client
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ Before enabling OAuth in Immich, a new client application needs to be configured
|
|||||||
|
|
||||||
Mobile
|
Mobile
|
||||||
|
|
||||||
- `app.immich:/` (You **MUST** include this for iOS and Android mobile apps to work properly)
|
- `app.immich:///oauth-callback` (You **MUST** include this for iOS and Android mobile apps to work properly)
|
||||||
|
|
||||||
Localhost
|
Localhost
|
||||||
|
|
||||||
@ -96,16 +96,16 @@ When Auto Launch is enabled, the login page will automatically redirect the user
|
|||||||
|
|
||||||
## Mobile Redirect URI
|
## Mobile Redirect URI
|
||||||
|
|
||||||
The redirect URI for the mobile app is `app.immich:/`, which is a [Custom Scheme](https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app). If this custom scheme is an invalid redirect URI for your OAuth Provider, you can work around this by doing the following:
|
The redirect URI for the mobile app is `app.immich:///oauth-callback`, which is a [Custom Scheme](https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app). If this custom scheme is an invalid redirect URI for your OAuth Provider, you can work around this by doing the following:
|
||||||
|
|
||||||
1. Configure an http(s) endpoint to forwards requests to `app.immich:/`
|
1. Configure an http(s) endpoint to forwards requests to `app.immich:///oauth-callback`
|
||||||
2. Whitelist the new endpoint as a valid redirect URI with your provider.
|
2. Whitelist the new endpoint as a valid redirect URI with your provider.
|
||||||
3. Specify the new endpoint as the `Mobile Redirect URI Override`, in the OAuth settings.
|
3. Specify the new endpoint as the `Mobile Redirect URI Override`, in the OAuth settings.
|
||||||
|
|
||||||
With these steps in place, you should be able to use OAuth from the [Mobile App](/docs/features/mobile-app.mdx) without a custom scheme redirect URI.
|
With these steps in place, you should be able to use OAuth from the [Mobile App](/docs/features/mobile-app.mdx) without a custom scheme redirect URI.
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
Immich has a route (`/api/oauth/mobile-redirect`) that is already configured to forward requests to `app.immich:/`, and can be used for step 1.
|
Immich has a route (`/api/oauth/mobile-redirect`) that is already configured to forward requests to `app.immich:///oauth-callback`, and can be used for step 1.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Example Configuration
|
## Example Configuration
|
||||||
@ -154,21 +154,21 @@ Configuration of Authorised redirect URIs (Google Console)
|
|||||||
|
|
||||||
Configuration of OAuth in Immich System Settings
|
Configuration of OAuth in Immich System Settings
|
||||||
|
|
||||||
| Setting | Value |
|
| Setting | Value |
|
||||||
| ---------------------------- | ------------------------------------------------------------------------------------------------------ |
|
| ---------------------------- | ---------------------------------------------------------------------------- |
|
||||||
| Issuer URL | [https://accounts.google.com](https://accounts.google.com) |
|
| Issuer URL | `https://accounts.google.com` |
|
||||||
| Client ID | 7\***\*\*\*\*\*\*\***\*\*\***\*\*\*\*\*\*\***vuls.apps.googleusercontent.com |
|
| Client ID | 7\***\*\*\*\*\*\*\***\*\*\***\*\*\*\*\*\*\***vuls.apps.googleusercontent.com |
|
||||||
| Client Secret | G\***\*\*\*\*\*\*\***\*\*\***\*\*\*\*\*\*\***OO |
|
| Client Secret | G\***\*\*\*\*\*\*\***\*\*\***\*\*\*\*\*\*\***OO |
|
||||||
| Scope | openid email profile |
|
| Scope | openid email profile |
|
||||||
| Signing Algorithm | RS256 |
|
| Signing Algorithm | RS256 |
|
||||||
| Storage Label Claim | preferred_username |
|
| Storage Label Claim | preferred_username |
|
||||||
| Storage Quota Claim | immich_quota |
|
| Storage Quota Claim | immich_quota |
|
||||||
| Default Storage Quota (GiB) | 0 (0 for unlimited quota) |
|
| Default Storage Quota (GiB) | 0 (0 for unlimited quota) |
|
||||||
| Button Text | Sign in with Google (optional) |
|
| Button Text | Sign in with Google (optional) |
|
||||||
| Auto Register | Enabled (optional) |
|
| Auto Register | Enabled (optional) |
|
||||||
| Auto Launch | Enabled |
|
| Auto Launch | Enabled |
|
||||||
| Mobile Redirect URI Override | Enabled (required) |
|
| Mobile Redirect URI Override | Enabled (required) |
|
||||||
| Mobile Redirect URI | [https://demo.immich.app/api/oauth/mobile-redirect](https://demo.immich.app/api/oauth/mobile-redirect) |
|
| Mobile Redirect URI | `https://example.immich.app/api/oauth/mobile-redirect` |
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ You can choose to disable a certain type of machine learning, for example smart
|
|||||||
|
|
||||||
### Smart Search
|
### Smart Search
|
||||||
|
|
||||||
The smart search settings are designed to allow the search tool to be used using [CLIP](https://openai.com/research/clip) models that [can be changed](/docs/FAQ#can-i-use-a-custom-clip-model), different models will necessarily give better results but may consume more processing power, when changing a model it is mandatory to re-run the
|
The [smart search](/docs/features/smart-search) settings are designed to allow the search tool to be used using [CLIP](https://openai.com/research/clip) models that [can be changed](/docs/FAQ#can-i-use-a-custom-clip-model), different models will necessarily give better results but may consume more processing power, when changing a model it is mandatory to re-run the
|
||||||
Smart Search job on all images to fully apply the change.
|
Smart Search job on all images to fully apply the change.
|
||||||
|
|
||||||
:::info Internet connection
|
:::info Internet connection
|
||||||
@ -113,15 +113,23 @@ After downloading, there is no need for Immich to connect to the network
|
|||||||
Unless version checking has been enabled in the settings.
|
Unless version checking has been enabled in the settings.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
### Duplicate Detection
|
||||||
|
|
||||||
|
Use CLIP embeddings to find likely duplicates. The maximum detection distance can be configured in order to improve / reduce the level of accuracy.
|
||||||
|
|
||||||
|
- **Maximum detection distance -** Maximum distance between two images to consider them duplicates, ranging from 0.001-0.1. Higher values will detect more duplicates, but may result in false positives.
|
||||||
|
|
||||||
### Facial Recognition
|
### Facial Recognition
|
||||||
|
|
||||||
Under these settings, you can change the facial recognition settings
|
Under these settings, you can change the facial recognition settings
|
||||||
Editable settings:
|
Editable settings:
|
||||||
|
|
||||||
- **Facial Recognition Model -** Models are listed in descending order of size. Larger models are slower and use more memory, but produce better results. Note that you must re-run the Face Detection job for all images upon changing a model.
|
- **Facial Recognition Model**
|
||||||
- **Min Detection Score -** Minimum confidence score for a face to be detected from 0-1. Lower values will detect more faces but may result in false positives.
|
- **Min Detection Score**
|
||||||
- **Max Recognition Distance -** Maximum distance between two faces to be considered the same person, ranging from 0-2. Lowering this can prevent labeling two people as the same person, while raising it can prevent labeling the same person as two different people. Note that it is easier to merge two people than to split one person in two, so err on the side of a lower threshold when possible.
|
- **Max Recognition Distance**
|
||||||
- **Min Recognized Faces -** The minimum number of recognized faces for a person to be created (AKA: Core face). Increasing this makes Facial Recognition more precise at the cost of increasing the chance that a face is not assigned to a person.
|
- **Min Recognized Faces**
|
||||||
|
|
||||||
|
You can learn more about these options on the [Facial Recognition page](/docs/features/facial-recognition#how-face-detection-works)
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
When changing the values in Min Detection Score, Max Recognition Distance, and Min Recognized Faces.
|
When changing the values in Min Detection Score, Max Recognition Distance, and Min Recognized Faces.
|
||||||
|
@ -104,8 +104,8 @@ The `immich-server` container will need access to the gallery. Modify your docke
|
|||||||
immich-server:
|
immich-server:
|
||||||
volumes:
|
volumes:
|
||||||
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
||||||
+ - /mnt/nas/christmas-trip:/mnt/nas/christmas-trip:ro
|
+ - /mnt/nas/christmas-trip:/mnt/media/christmas-trip:ro
|
||||||
+ - /home/user/old-pics:/home/user/old-pics:ro
|
+ - /home/user/old-pics:/mnt/media/old-pics:ro
|
||||||
+ - /mnt/media/videos:/mnt/media/videos:ro
|
+ - /mnt/media/videos:/mnt/media/videos:ro
|
||||||
+ - /mnt/media/videos2:/mnt/media/videos2 # the files in this folder can be deleted, as it does not end with :ro
|
+ - /mnt/media/videos2:/mnt/media/videos2 # the files in this folder can be deleted, as it does not end with :ro
|
||||||
+ - "C:/Users/user_name/Desktop/my media:/mnt/media/my-media:ro" # import path in Windows system.
|
+ - "C:/Users/user_name/Desktop/my media:/mnt/media/my-media:ro" # import path in Windows system.
|
||||||
|
@ -16,7 +16,7 @@ When sharing shared albums, whats shared is:
|
|||||||
|
|
||||||
- Download all assets as zip file (Web only).
|
- Download all assets as zip file (Web only).
|
||||||
:::info Archive size limited.
|
:::info Archive size limited.
|
||||||
If the size of the album exceeds 4GB, the archive files will be divided into 4GB each.
|
If the size of the album exceeds 4GB, the archive files will by default be divided into 4GB each. This can be changed on the user settings page.
|
||||||
:::
|
:::
|
||||||
- Add a description to the album (Web only).
|
- Add a description to the album (Web only).
|
||||||
- Slideshow view (Web only).
|
- Slideshow view (Web only).
|
||||||
@ -152,7 +152,7 @@ Some of the features are not available on mobile, to understand what the full fe
|
|||||||
|
|
||||||
## Sharing Between Users
|
## Sharing Between Users
|
||||||
|
|
||||||
#### Add or remove users from the album.
|
#### Add or remove users from the album
|
||||||
|
|
||||||
:::info remove user(s)
|
:::info remove user(s)
|
||||||
When a user is removed from the album, the photos he uploaded will still appear in the album.
|
When a user is removed from the album, the photos he uploaded will still appear in the album.
|
||||||
|
@ -23,7 +23,7 @@ SELECT * FROM "assets" WHERE "originalFileName" LIKE '%_2023_%'; -- all files wi
|
|||||||
```
|
```
|
||||||
|
|
||||||
```sql title="Find by path"
|
```sql title="Find by path"
|
||||||
SELECT * FROM "assets" WHERE "originalPath" = 'upload/library/admin/2023/2023-09-03/PXL_20230903_232542848.jpg';
|
SELECT * FROM "assets" WHERE "originalPath" = 'upload/library/admin/2023/2023-09-03/PXL_2023.jpg';
|
||||||
SELECT * FROM "assets" WHERE "originalPath" LIKE 'upload/library/admin/2023/%';
|
SELECT * FROM "assets" WHERE "originalPath" LIKE 'upload/library/admin/2023/%';
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -37,6 +37,12 @@ SELECT * FROM "assets" WHERE "checksum" = decode('69de19c87658c4c15d9cacb9967b8e
|
|||||||
SELECT * FROM "assets" WHERE "checksum" = '\x69de19c87658c4c15d9cacb9967b8e033bf74dd1'; -- alternate notation
|
SELECT * FROM "assets" WHERE "checksum" = '\x69de19c87658c4c15d9cacb9967b8e033bf74dd1'; -- alternate notation
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sql title="Find duplicate assets with identical checksum (SHA-1) (excluding trashed files)"
|
||||||
|
SELECT T1."checksum", array_agg(T2."id") ids FROM "assets" T1
|
||||||
|
INNER JOIN "assets" T2 ON T1."checksum" = T2."checksum" AND T1."id" != T2."id" AND T2."deletedAt" IS NULL
|
||||||
|
WHERE T1."deletedAt" IS NULL GROUP BY T1."checksum";
|
||||||
|
```
|
||||||
|
|
||||||
```sql title="Live photos"
|
```sql title="Live photos"
|
||||||
SELECT * FROM "assets" WHERE "livePhotoVideoId" IS NOT NULL;
|
SELECT * FROM "assets" WHERE "livePhotoVideoId" IS NOT NULL;
|
||||||
```
|
```
|
||||||
@ -79,8 +85,7 @@ SELECT "assets"."type", COUNT(*) FROM "assets" GROUP BY "assets"."type";
|
|||||||
```sql title="Count by type (per user)"
|
```sql title="Count by type (per user)"
|
||||||
SELECT "users"."email", "assets"."type", COUNT(*) FROM "assets"
|
SELECT "users"."email", "assets"."type", COUNT(*) FROM "assets"
|
||||||
JOIN "users" ON "assets"."ownerId" = "users"."id"
|
JOIN "users" ON "assets"."ownerId" = "users"."id"
|
||||||
GROUP BY "assets"."type", "users"."email"
|
GROUP BY "assets"."type", "users"."email" ORDER BY "users"."email";
|
||||||
ORDER BY "users"."email";
|
|
||||||
```
|
```
|
||||||
|
|
||||||
```sql title="Failed file movements"
|
```sql title="Failed file movements"
|
||||||
|
@ -11,13 +11,13 @@ Never forward port 2283 directly to the internet without additional configuratio
|
|||||||
|
|
||||||
You may use a VPN service to open an encrypted connection to your Immich instance. OpenVPN and Wireguard are two popular VPN solutions. Here is a guide on setting up VPN access to your server - [Pihole documentation](https://docs.pi-hole.net/guides/vpn/wireguard/overview/)
|
You may use a VPN service to open an encrypted connection to your Immich instance. OpenVPN and Wireguard are two popular VPN solutions. Here is a guide on setting up VPN access to your server - [Pihole documentation](https://docs.pi-hole.net/guides/vpn/wireguard/overview/)
|
||||||
|
|
||||||
### Pros:
|
### Pros
|
||||||
|
|
||||||
- Simple to set up and very secure.
|
- Simple to set up and very secure.
|
||||||
- Single point of potential failure, i.e., the VPN software itself. Even if there is a zero-day vulnerability on Immich, you will not be at risk.
|
- Single point of potential failure, i.e., the VPN software itself. Even if there is a zero-day vulnerability on Immich, you will not be at risk.
|
||||||
- Both Wireguard and OpenVPN are independently security-audited, so the risk of serious zero-day exploits are minimal.
|
- Both Wireguard and OpenVPN are independently security-audited, so the risk of serious zero-day exploits are minimal.
|
||||||
|
|
||||||
### Cons:
|
### Cons
|
||||||
|
|
||||||
- If you don't have a static IP address, you would need to set up a [Dynamic DNS](https://www.cloudflare.com/learning/dns/glossary/dynamic-dns/). [DuckDNS](https://www.duckdns.org/) is a free DDNS provider.
|
- If you don't have a static IP address, you would need to set up a [Dynamic DNS](https://www.cloudflare.com/learning/dns/glossary/dynamic-dns/). [DuckDNS](https://www.duckdns.org/) is a free DDNS provider.
|
||||||
- VPN software needs to be installed and active on both server-side and client-side.
|
- VPN software needs to be installed and active on both server-side and client-side.
|
||||||
@ -27,6 +27,10 @@ You may use a VPN service to open an encrypted connection to your Immich instanc
|
|||||||
|
|
||||||
If you are unable to open a port on your router for Wireguard or OpenVPN to your server, [Tailscale](https://tailscale.com/) is a good option. Tailscale mediates a peer-to-peer wireguard tunnel between your server and remote device, even if one or both of them are behind a [NAT firewall](https://en.wikipedia.org/wiki/Network_address_translation).
|
If you are unable to open a port on your router for Wireguard or OpenVPN to your server, [Tailscale](https://tailscale.com/) is a good option. Tailscale mediates a peer-to-peer wireguard tunnel between your server and remote device, even if one or both of them are behind a [NAT firewall](https://en.wikipedia.org/wiki/Network_address_translation).
|
||||||
|
|
||||||
|
:::tip Video toturial
|
||||||
|
You can learn how to set up Tailscale together with Immich with the [tutorial video](https://www.youtube.com/watch?v=Vt4PDUXB_fg) they created.
|
||||||
|
:::
|
||||||
|
|
||||||
### Pros
|
### Pros
|
||||||
|
|
||||||
- Minimal configuration needed on server and client sides.
|
- Minimal configuration needed on server and client sides.
|
||||||
@ -44,7 +48,7 @@ A reverse proxy is a service that sits between web servers and clients. A revers
|
|||||||
|
|
||||||
If you're hosting your own reverse proxy, [Nginx](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/) is a great option. An example configuration for Nginx is provided [here](/docs/administration/reverse-proxy.md).
|
If you're hosting your own reverse proxy, [Nginx](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/) is a great option. An example configuration for Nginx is provided [here](/docs/administration/reverse-proxy.md).
|
||||||
|
|
||||||
You'll also need your own certificate to authenticate https connections. If you're making Immich publicly accesible, [Let's Encrypt](https://letsencrypt.org/) can provide a free certificate for your domain and is the recommended option. Alternatively, a [self-signed certificate](https://en.wikipedia.org/wiki/Self-signed_certificate) allows you to encrypt your connection to Immich, but it raises a security warning on the client's browser.
|
You'll also need your own certificate to authenticate https connections. If you're making Immich publicly accessible, [Let's Encrypt](https://letsencrypt.org/) can provide a free certificate for your domain and is the recommended option. Alternatively, a [self-signed certificate](https://en.wikipedia.org/wiki/Self-signed_certificate) allows you to encrypt your connection to Immich, but it raises a security warning on the client's browser.
|
||||||
|
|
||||||
A remote reverse proxy like [Cloudflare](https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/) increases security by hiding the server IP address, which makes targeted attacks like [DDoS](https://www.cloudflare.com/learning/ddos/what-is-a-ddos-attack/) harder.
|
A remote reverse proxy like [Cloudflare](https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/) increases security by hiding the server IP address, which makes targeted attacks like [DDoS](https://www.cloudflare.com/learning/ddos/what-is-a-ddos-attack/) harder.
|
||||||
|
|
||||||
|
@ -11,6 +11,10 @@ To alleviate [performance issues on low-memory systems](/docs/FAQ.mdx#why-is-imm
|
|||||||
Smart Search and Face Detection will use this feature, but Facial Recognition is handled in the server.
|
Smart Search and Face Detection will use this feature, but Facial Recognition is handled in the server.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
:::danger
|
||||||
|
When using remote machine learning, the thumbnails are sent to the remote machine learning container. Use this option carefully when running this on a public computer or a paid processing cloud.
|
||||||
|
:::
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: immich_remote_ml
|
name: immich_remote_ml
|
||||||
|
|
||||||
|
@ -78,4 +78,4 @@ borg mount "$REMOTE_HOST:$REMOTE_BACKUP_PATH"/immich-borg /tmp/immich-mountpoint
|
|||||||
cd /tmp/immich-mountpoint
|
cd /tmp/immich-mountpoint
|
||||||
```
|
```
|
||||||
|
|
||||||
You can find available snapshots in seperate sub-directories at `/tmp/immich-mountpoint`. Restore the files you need, and unmount the Borg repository using `borg umount /tmp/immich-mountpoint`
|
You can find available snapshots in separate sub-directories at `/tmp/immich-mountpoint`. Restore the files you need, and unmount the Borg repository using `borg umount /tmp/immich-mountpoint`
|
||||||
|
@ -125,7 +125,7 @@ When `DB_URL` is defined, the `DB_HOSTNAME`, `DB_PORT`, `DB_USERNAME`, `DB_PASSW
|
|||||||
All `REDIS_` variables must be provided to all Immich workers, including `api` and `microservices`.
|
All `REDIS_` variables must be provided to all Immich workers, including `api` and `microservices`.
|
||||||
|
|
||||||
`REDIS_URL` must start with `ioredis://` and then include a `base64` encoded JSON string for the configuration.
|
`REDIS_URL` must start with `ioredis://` and then include a `base64` encoded JSON string for the configuration.
|
||||||
More info can be found in the upstream [ioredis][redis-api] documentation.
|
More info can be found in the upstream [ioredis] documentation.
|
||||||
|
|
||||||
When `REDIS_URL` or `REDIS_SOCKET` are defined, the `REDIS_HOSTNAME`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD`, and `REDIS_DBINDEX` variables are ignored.
|
When `REDIS_URL` or `REDIS_SOCKET` are defined, the `REDIS_HOSTNAME`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD`, and `REDIS_DBINDEX` variables are ignored.
|
||||||
:::
|
:::
|
||||||
@ -159,26 +159,29 @@ Redis (Sentinel) URL example JSON before encoding:
|
|||||||
|
|
||||||
## Machine Learning
|
## Machine Learning
|
||||||
|
|
||||||
| Variable | Description | Default | Containers |
|
| Variable | Description | Default | Containers |
|
||||||
| :----------------------------------------------- | :-------------------------------------------------------------------------------------------------- | :-----------------------------------: | :--------------- |
|
| :-------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- | :-----------------------------------: | :--------------- |
|
||||||
| `MACHINE_LEARNING_MODEL_TTL` | Inactivity time (s) before a model is unloaded (disabled if \<= 0) | `300` | machine learning |
|
| `MACHINE_LEARNING_MODEL_TTL` | Inactivity time (s) before a model is unloaded (disabled if \<= 0) | `300` | machine learning |
|
||||||
| `MACHINE_LEARNING_MODEL_TTL_POLL_S` | Interval (s) between checks for the model TTL (disabled if \<= 0) | `10` | machine learning |
|
| `MACHINE_LEARNING_MODEL_TTL_POLL_S` | Interval (s) between checks for the model TTL (disabled if \<= 0) | `10` | machine learning |
|
||||||
| `MACHINE_LEARNING_CACHE_FOLDER` | Directory where models are downloaded | `/cache` | machine learning |
|
| `MACHINE_LEARNING_CACHE_FOLDER` | Directory where models are downloaded | `/cache` | machine learning |
|
||||||
| `MACHINE_LEARNING_REQUEST_THREADS`<sup>\*1</sup> | Thread count of the request thread pool (disabled if \<= 0) | number of CPU cores | machine learning |
|
| `MACHINE_LEARNING_REQUEST_THREADS`<sup>\*1</sup> | Thread count of the request thread pool (disabled if \<= 0) | number of CPU cores | machine learning |
|
||||||
| `MACHINE_LEARNING_MODEL_INTER_OP_THREADS` | Number of parallel model operations | `1` | machine learning |
|
| `MACHINE_LEARNING_MODEL_INTER_OP_THREADS` | Number of parallel model operations | `1` | machine learning |
|
||||||
| `MACHINE_LEARNING_MODEL_INTRA_OP_THREADS` | Number of threads for each model operation | `2` | machine learning |
|
| `MACHINE_LEARNING_MODEL_INTRA_OP_THREADS` | Number of threads for each model operation | `2` | machine learning |
|
||||||
| `MACHINE_LEARNING_WORKERS`<sup>\*2</sup> | Number of worker processes to spawn | `1` | machine learning |
|
| `MACHINE_LEARNING_WORKERS`<sup>\*2</sup> | Number of worker processes to spawn | `1` | machine learning |
|
||||||
| `MACHINE_LEARNING_WORKER_TIMEOUT` | Maximum time (s) of unresponsiveness before a worker is killed | `120` (`300` if using OpenVINO image) | machine learning |
|
| `MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S`<sup>\*3</sup> | HTTP Keep-alive time in seconds | `2` | machine learning |
|
||||||
| `MACHINE_LEARNING_PRELOAD__CLIP` | Name of a CLIP model to be preloaded and kept in cache | | machine learning |
|
| `MACHINE_LEARNING_WORKER_TIMEOUT` | Maximum time (s) of unresponsiveness before a worker is killed | `120` (`300` if using OpenVINO image) | machine learning |
|
||||||
| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION` | Name of a facial recognition model to be preloaded and kept in cache | | machine learning |
|
| `MACHINE_LEARNING_PRELOAD__CLIP` | Name of a CLIP model to be preloaded and kept in cache | | machine learning |
|
||||||
| `MACHINE_LEARNING_ANN` | Enable ARM-NN hardware acceleration if supported | `True` | machine learning |
|
| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION` | Name of a facial recognition model to be preloaded and kept in cache | | machine learning |
|
||||||
| `MACHINE_LEARNING_ANN_FP16_TURBO` | Execute operations in FP16 precision: increasing speed, reducing precision (applies only to ARM-NN) | `False` | machine learning |
|
| `MACHINE_LEARNING_ANN` | Enable ARM-NN hardware acceleration if supported | `True` | machine learning |
|
||||||
| `MACHINE_LEARNING_ANN_TUNING_LEVEL` | ARM-NN GPU tuning level (1: rapid, 2: normal, 3: exhaustive) | `2` | machine learning |
|
| `MACHINE_LEARNING_ANN_FP16_TURBO` | Execute operations in FP16 precision: increasing speed, reducing precision (applies only to ARM-NN) | `False` | machine learning |
|
||||||
|
| `MACHINE_LEARNING_ANN_TUNING_LEVEL` | ARM-NN GPU tuning level (1: rapid, 2: normal, 3: exhaustive) | `2` | machine learning |
|
||||||
|
|
||||||
\*1: It is recommended to begin with this parameter when changing the concurrency levels of the machine learning service and then tune the other ones.
|
\*1: It is recommended to begin with this parameter when changing the concurrency levels of the machine learning service and then tune the other ones.
|
||||||
|
|
||||||
\*2: Since each process duplicates models in memory, changing this is not recommended unless you have abundant memory to go around.
|
\*2: Since each process duplicates models in memory, changing this is not recommended unless you have abundant memory to go around.
|
||||||
|
|
||||||
|
\*3: For scenarios like HPA in K8S. https://github.com/immich-app/immich/discussions/12064
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
|
|
||||||
Other machine learning parameters can be tuned from the admin UI.
|
Other machine learning parameters can be tuned from the admin UI.
|
||||||
@ -223,4 +226,4 @@ to use use a Docker secret for the password in the Redis container.
|
|||||||
[docker-secrets-example]: https://github.com/docker-library/redis/issues/46#issuecomment-335326234
|
[docker-secrets-example]: https://github.com/docker-library/redis/issues/46#issuecomment-335326234
|
||||||
[docker-secrets-docs]: https://github.com/docker-library/docs/tree/master/postgres#docker-secrets
|
[docker-secrets-docs]: https://github.com/docker-library/docs/tree/master/postgres#docker-secrets
|
||||||
[docker-secrets]: https://docs.docker.com/engine/swarm/secrets/
|
[docker-secrets]: https://docs.docker.com/engine/swarm/secrets/
|
||||||
[redis-api]: https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
|
[ioredis]: https://ioredis.readthedocs.io/en/latest/README/#connect-to-redis
|
||||||
|
@ -27,3 +27,9 @@ If an asset is in multiple albums, `{{album}}` will be set to the name of the al
|
|||||||
:::
|
:::
|
||||||
|
|
||||||
Immich also provides a mechanism to migrate between templates so that if the template you set now doesn't work in the future, you can always migrate all the existing files to the new template. The mechanism is run as a job on the Job page.
|
Immich also provides a mechanism to migrate between templates so that if the template you set now doesn't work in the future, you can always migrate all the existing files to the new template. The mechanism is run as a job on the Job page.
|
||||||
|
|
||||||
|
If you want to store assets in album folders, but you also have assets that do not belong to any album, you can use `{{#if album}}`, `{{else}}` and `{{/if}}` to create a conditional statement. For example, the following template will store assets in album folders if they belong to an album, and in a folder named "Other/Month" if they do not belong to an album:
|
||||||
|
|
||||||
|
```
|
||||||
|
{{y}}/{{#if album}}{{album}}{{else}}Other/{{MM}}{{/if}}/{{filename}}
|
||||||
|
```
|
||||||
|
473
docs/package-lock.json
generated
473
docs/package-lock.json
generated
@ -2155,9 +2155,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/core": {
|
"node_modules/@docusaurus/core": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.5.2.tgz",
|
||||||
"integrity": "sha512-g+0wwmN2UJsBqy2fQRQ6fhXruoEa62JDeEa5d8IdTJlMoaDaEDfHh7WjwGRn4opuTQWpjAwP/fbcgyHKlE+64w==",
|
"integrity": "sha512-4Z1WkhCSkX4KO0Fw5m/Vuc7Q3NxBG53NE5u59Rs96fWkMPZVSrzEPP16/Nk6cWb/shK7xXPndTmalJtw7twL/w==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/core": "^7.23.3",
|
"@babel/core": "^7.23.3",
|
||||||
@ -2170,12 +2170,12 @@
|
|||||||
"@babel/runtime": "^7.22.6",
|
"@babel/runtime": "^7.22.6",
|
||||||
"@babel/runtime-corejs3": "^7.22.6",
|
"@babel/runtime-corejs3": "^7.22.6",
|
||||||
"@babel/traverse": "^7.22.8",
|
"@babel/traverse": "^7.22.8",
|
||||||
"@docusaurus/cssnano-preset": "3.4.0",
|
"@docusaurus/cssnano-preset": "3.5.2",
|
||||||
"@docusaurus/logger": "3.4.0",
|
"@docusaurus/logger": "3.5.2",
|
||||||
"@docusaurus/mdx-loader": "3.4.0",
|
"@docusaurus/mdx-loader": "3.5.2",
|
||||||
"@docusaurus/utils": "3.4.0",
|
"@docusaurus/utils": "3.5.2",
|
||||||
"@docusaurus/utils-common": "3.4.0",
|
"@docusaurus/utils-common": "3.5.2",
|
||||||
"@docusaurus/utils-validation": "3.4.0",
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
"autoprefixer": "^10.4.14",
|
"autoprefixer": "^10.4.14",
|
||||||
"babel-loader": "^9.1.3",
|
"babel-loader": "^9.1.3",
|
||||||
"babel-plugin-dynamic-import-node": "^2.3.3",
|
"babel-plugin-dynamic-import-node": "^2.3.3",
|
||||||
@ -2236,14 +2236,15 @@
|
|||||||
"node": ">=18.0"
|
"node": ">=18.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
"@mdx-js/react": "^3.0.0",
|
||||||
"react": "^18.0.0",
|
"react": "^18.0.0",
|
||||||
"react-dom": "^18.0.0"
|
"react-dom": "^18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/cssnano-preset": {
|
"node_modules/@docusaurus/cssnano-preset": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.5.2.tgz",
|
||||||
"integrity": "sha512-qwLFSz6v/pZHy/UP32IrprmH5ORce86BGtN0eBtG75PpzQJAzp9gefspox+s8IEOr0oZKuQ/nhzZ3xwyc3jYJQ==",
|
"integrity": "sha512-D3KiQXOMA8+O0tqORBrTOEQyQxNIfPm9jEaJoALjjSjc2M/ZAWcUfPQEnwr2JB2TadHw2gqWgpZckQmrVWkytA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cssnano-preset-advanced": "^6.1.2",
|
"cssnano-preset-advanced": "^6.1.2",
|
||||||
@ -2256,9 +2257,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/logger": {
|
"node_modules/@docusaurus/logger": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.5.2.tgz",
|
||||||
"integrity": "sha512-bZwkX+9SJ8lB9kVRkXw+xvHYSMGG4bpYHKGXeXFvyVc79NMeeBSGgzd4TQLHH+DYeOJoCdl8flrFJVxlZ0wo/Q==",
|
"integrity": "sha512-LHC540SGkeLfyT3RHK3gAMK6aS5TRqOD4R72BEU/DE2M/TY8WwEUAMY576UUc/oNJXv8pGhBmQB6N9p3pt8LQw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": "^4.1.2",
|
"chalk": "^4.1.2",
|
||||||
@ -2269,14 +2270,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/mdx-loader": {
|
"node_modules/@docusaurus/mdx-loader": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.5.2.tgz",
|
||||||
"integrity": "sha512-kSSbrrk4nTjf4d+wtBA9H+FGauf2gCax89kV8SUSJu3qaTdSIKdWERlngsiHaCFgZ7laTJ8a67UFf+xlFPtuTw==",
|
"integrity": "sha512-ku3xO9vZdwpiMIVd8BzWV0DCqGEbCP5zs1iHfKX50vw6jX8vQo0ylYo1YJMZyz6e+JFJ17HYHT5FzVidz2IflA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/logger": "3.4.0",
|
"@docusaurus/logger": "3.5.2",
|
||||||
"@docusaurus/utils": "3.4.0",
|
"@docusaurus/utils": "3.5.2",
|
||||||
"@docusaurus/utils-validation": "3.4.0",
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
"@mdx-js/mdx": "^3.0.0",
|
"@mdx-js/mdx": "^3.0.0",
|
||||||
"@slorber/remark-comment": "^1.0.0",
|
"@slorber/remark-comment": "^1.0.0",
|
||||||
"escape-html": "^1.0.3",
|
"escape-html": "^1.0.3",
|
||||||
@ -2308,12 +2309,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/module-type-aliases": {
|
"node_modules/@docusaurus/module-type-aliases": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.5.2.tgz",
|
||||||
"integrity": "sha512-A1AyS8WF5Bkjnb8s+guTDuYmUiwJzNrtchebBHpc0gz0PyHJNMaybUlSrmJjHVcGrya0LKI4YcR3lBDQfXRYLw==",
|
"integrity": "sha512-Z+Xu3+2rvKef/YKTMxZHsEXp1y92ac0ngjDiExRdqGTmEKtCUpkbNYH8v5eXo5Ls+dnW88n6WTa+Q54kLOkwPg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/types": "3.4.0",
|
"@docusaurus/types": "3.5.2",
|
||||||
"@types/history": "^4.7.11",
|
"@types/history": "^4.7.11",
|
||||||
"@types/react": "*",
|
"@types/react": "*",
|
||||||
"@types/react-router-config": "*",
|
"@types/react-router-config": "*",
|
||||||
@ -2326,52 +2327,21 @@
|
|||||||
"react-dom": "*"
|
"react-dom": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/plugin-content-blog": {
|
|
||||||
"version": "3.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.4.0.tgz",
|
|
||||||
"integrity": "sha512-vv6ZAj78ibR5Jh7XBUT4ndIjmlAxkijM3Sx5MAAzC1gyv0vupDQNhzuFg1USQmQVj3P5I6bquk12etPV3LJ+Xw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@docusaurus/core": "3.4.0",
|
|
||||||
"@docusaurus/logger": "3.4.0",
|
|
||||||
"@docusaurus/mdx-loader": "3.4.0",
|
|
||||||
"@docusaurus/types": "3.4.0",
|
|
||||||
"@docusaurus/utils": "3.4.0",
|
|
||||||
"@docusaurus/utils-common": "3.4.0",
|
|
||||||
"@docusaurus/utils-validation": "3.4.0",
|
|
||||||
"cheerio": "^1.0.0-rc.12",
|
|
||||||
"feed": "^4.2.2",
|
|
||||||
"fs-extra": "^11.1.1",
|
|
||||||
"lodash": "^4.17.21",
|
|
||||||
"reading-time": "^1.5.0",
|
|
||||||
"srcset": "^4.0.0",
|
|
||||||
"tslib": "^2.6.0",
|
|
||||||
"unist-util-visit": "^5.0.0",
|
|
||||||
"utility-types": "^3.10.0",
|
|
||||||
"webpack": "^5.88.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=18.0"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"react": "^18.0.0",
|
|
||||||
"react-dom": "^18.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@docusaurus/plugin-content-docs": {
|
"node_modules/@docusaurus/plugin-content-docs": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.5.2.tgz",
|
||||||
"integrity": "sha512-HkUCZffhBo7ocYheD9oZvMcDloRnGhBMOZRyVcAQRFmZPmNqSyISlXA1tQCIxW+r478fty97XXAGjNYzBjpCsg==",
|
"integrity": "sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "3.4.0",
|
"@docusaurus/core": "3.5.2",
|
||||||
"@docusaurus/logger": "3.4.0",
|
"@docusaurus/logger": "3.5.2",
|
||||||
"@docusaurus/mdx-loader": "3.4.0",
|
"@docusaurus/mdx-loader": "3.5.2",
|
||||||
"@docusaurus/module-type-aliases": "3.4.0",
|
"@docusaurus/module-type-aliases": "3.5.2",
|
||||||
"@docusaurus/types": "3.4.0",
|
"@docusaurus/theme-common": "3.5.2",
|
||||||
"@docusaurus/utils": "3.4.0",
|
"@docusaurus/types": "3.5.2",
|
||||||
"@docusaurus/utils-common": "3.4.0",
|
"@docusaurus/utils": "3.5.2",
|
||||||
"@docusaurus/utils-validation": "3.4.0",
|
"@docusaurus/utils-common": "3.5.2",
|
||||||
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
"@types/react-router-config": "^5.0.7",
|
"@types/react-router-config": "^5.0.7",
|
||||||
"combine-promises": "^1.1.0",
|
"combine-promises": "^1.1.0",
|
||||||
"fs-extra": "^11.1.1",
|
"fs-extra": "^11.1.1",
|
||||||
@ -2389,38 +2359,15 @@
|
|||||||
"react-dom": "^18.0.0"
|
"react-dom": "^18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/plugin-content-pages": {
|
|
||||||
"version": "3.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.4.0.tgz",
|
|
||||||
"integrity": "sha512-h2+VN/0JjpR8fIkDEAoadNjfR3oLzB+v1qSXbIAKjQ46JAHx3X22n9nqS+BWSQnTnp1AjkjSvZyJMekmcwxzxg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@docusaurus/core": "3.4.0",
|
|
||||||
"@docusaurus/mdx-loader": "3.4.0",
|
|
||||||
"@docusaurus/types": "3.4.0",
|
|
||||||
"@docusaurus/utils": "3.4.0",
|
|
||||||
"@docusaurus/utils-validation": "3.4.0",
|
|
||||||
"fs-extra": "^11.1.1",
|
|
||||||
"tslib": "^2.6.0",
|
|
||||||
"webpack": "^5.88.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=18.0"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"react": "^18.0.0",
|
|
||||||
"react-dom": "^18.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@docusaurus/plugin-debug": {
|
"node_modules/@docusaurus/plugin-debug": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.5.2.tgz",
|
||||||
"integrity": "sha512-uV7FDUNXGyDSD3PwUaf5YijX91T5/H9SX4ErEcshzwgzWwBtK37nUWPU3ZLJfeTavX3fycTOqk9TglpOLaWkCg==",
|
"integrity": "sha512-kBK6GlN0itCkrmHuCS6aX1wmoWc5wpd5KJlqQ1FyrF0cLDnvsYSnh7+ftdwzt7G6lGBho8lrVwkkL9/iQvaSOA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "3.4.0",
|
"@docusaurus/core": "3.5.2",
|
||||||
"@docusaurus/types": "3.4.0",
|
"@docusaurus/types": "3.5.2",
|
||||||
"@docusaurus/utils": "3.4.0",
|
"@docusaurus/utils": "3.5.2",
|
||||||
"fs-extra": "^11.1.1",
|
"fs-extra": "^11.1.1",
|
||||||
"react-json-view-lite": "^1.2.0",
|
"react-json-view-lite": "^1.2.0",
|
||||||
"tslib": "^2.6.0"
|
"tslib": "^2.6.0"
|
||||||
@ -2434,14 +2381,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/plugin-google-analytics": {
|
"node_modules/@docusaurus/plugin-google-analytics": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.5.2.tgz",
|
||||||
"integrity": "sha512-mCArluxEGi3cmYHqsgpGGt3IyLCrFBxPsxNZ56Mpur0xSlInnIHoeLDH7FvVVcPJRPSQ9/MfRqLsainRw+BojA==",
|
"integrity": "sha512-rjEkJH/tJ8OXRE9bwhV2mb/WP93V441rD6XnM6MIluu7rk8qg38iSxS43ga2V2Q/2ib53PcqbDEJDG/yWQRJhQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "3.4.0",
|
"@docusaurus/core": "3.5.2",
|
||||||
"@docusaurus/types": "3.4.0",
|
"@docusaurus/types": "3.5.2",
|
||||||
"@docusaurus/utils-validation": "3.4.0",
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
"tslib": "^2.6.0"
|
"tslib": "^2.6.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -2453,14 +2400,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/plugin-google-gtag": {
|
"node_modules/@docusaurus/plugin-google-gtag": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.5.2.tgz",
|
||||||
"integrity": "sha512-Dsgg6PLAqzZw5wZ4QjUYc8Z2KqJqXxHxq3vIoyoBWiLEEfigIs7wHR+oiWUQy3Zk9MIk6JTYj7tMoQU0Jm3nqA==",
|
"integrity": "sha512-lm8XL3xLkTPHFKKjLjEEAHUrW0SZBSHBE1I+i/tmYMBsjCcUB5UJ52geS5PSiOCFVR74tbPGcPHEV/gaaxFeSA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "3.4.0",
|
"@docusaurus/core": "3.5.2",
|
||||||
"@docusaurus/types": "3.4.0",
|
"@docusaurus/types": "3.5.2",
|
||||||
"@docusaurus/utils-validation": "3.4.0",
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
"@types/gtag.js": "^0.0.12",
|
"@types/gtag.js": "^0.0.12",
|
||||||
"tslib": "^2.6.0"
|
"tslib": "^2.6.0"
|
||||||
},
|
},
|
||||||
@ -2473,14 +2420,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/plugin-google-tag-manager": {
|
"node_modules/@docusaurus/plugin-google-tag-manager": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.5.2.tgz",
|
||||||
"integrity": "sha512-O9tX1BTwxIhgXpOLpFDueYA9DWk69WCbDRrjYoMQtFHSkTyE7RhNgyjSPREUWJb9i+YUg3OrsvrBYRl64FCPCQ==",
|
"integrity": "sha512-QkpX68PMOMu10Mvgvr5CfZAzZQFx8WLlOiUQ/Qmmcl6mjGK6H21WLT5x7xDmcpCoKA/3CegsqIqBR+nA137lQg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "3.4.0",
|
"@docusaurus/core": "3.5.2",
|
||||||
"@docusaurus/types": "3.4.0",
|
"@docusaurus/types": "3.5.2",
|
||||||
"@docusaurus/utils-validation": "3.4.0",
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
"tslib": "^2.6.0"
|
"tslib": "^2.6.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -2492,17 +2439,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/plugin-sitemap": {
|
"node_modules/@docusaurus/plugin-sitemap": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.5.2.tgz",
|
||||||
"integrity": "sha512-+0VDvx9SmNrFNgwPoeoCha+tRoAjopwT0+pYO1xAbyLcewXSemq+eLxEa46Q1/aoOaJQ0qqHELuQM7iS2gp33Q==",
|
"integrity": "sha512-DnlqYyRAdQ4NHY28TfHuVk414ft2uruP4QWCH//jzpHjqvKyXjj2fmDtI8RPUBh9K8iZKFMHRnLtzJKySPWvFA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "3.4.0",
|
"@docusaurus/core": "3.5.2",
|
||||||
"@docusaurus/logger": "3.4.0",
|
"@docusaurus/logger": "3.5.2",
|
||||||
"@docusaurus/types": "3.4.0",
|
"@docusaurus/types": "3.5.2",
|
||||||
"@docusaurus/utils": "3.4.0",
|
"@docusaurus/utils": "3.5.2",
|
||||||
"@docusaurus/utils-common": "3.4.0",
|
"@docusaurus/utils-common": "3.5.2",
|
||||||
"@docusaurus/utils-validation": "3.4.0",
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
"fs-extra": "^11.1.1",
|
"fs-extra": "^11.1.1",
|
||||||
"sitemap": "^7.1.1",
|
"sitemap": "^7.1.1",
|
||||||
"tslib": "^2.6.0"
|
"tslib": "^2.6.0"
|
||||||
@ -2516,24 +2463,81 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/preset-classic": {
|
"node_modules/@docusaurus/preset-classic": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.5.2.tgz",
|
||||||
"integrity": "sha512-Ohj6KB7siKqZaQhNJVMBBUzT3Nnp6eTKqO+FXO3qu/n1hJl3YLwVKTWBg28LF7MWrKu46UuYavwMRxud0VyqHg==",
|
"integrity": "sha512-3ihfXQ95aOHiLB5uCu+9PRy2gZCeSZoDcqpnDvf3B+sTrMvMTr8qRUzBvWkoIqc82yG5prCboRjk1SVILKx6sg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "3.4.0",
|
"@docusaurus/core": "3.5.2",
|
||||||
"@docusaurus/plugin-content-blog": "3.4.0",
|
"@docusaurus/plugin-content-blog": "3.5.2",
|
||||||
"@docusaurus/plugin-content-docs": "3.4.0",
|
"@docusaurus/plugin-content-docs": "3.5.2",
|
||||||
"@docusaurus/plugin-content-pages": "3.4.0",
|
"@docusaurus/plugin-content-pages": "3.5.2",
|
||||||
"@docusaurus/plugin-debug": "3.4.0",
|
"@docusaurus/plugin-debug": "3.5.2",
|
||||||
"@docusaurus/plugin-google-analytics": "3.4.0",
|
"@docusaurus/plugin-google-analytics": "3.5.2",
|
||||||
"@docusaurus/plugin-google-gtag": "3.4.0",
|
"@docusaurus/plugin-google-gtag": "3.5.2",
|
||||||
"@docusaurus/plugin-google-tag-manager": "3.4.0",
|
"@docusaurus/plugin-google-tag-manager": "3.5.2",
|
||||||
"@docusaurus/plugin-sitemap": "3.4.0",
|
"@docusaurus/plugin-sitemap": "3.5.2",
|
||||||
"@docusaurus/theme-classic": "3.4.0",
|
"@docusaurus/theme-classic": "3.5.2",
|
||||||
"@docusaurus/theme-common": "3.4.0",
|
"@docusaurus/theme-common": "3.5.2",
|
||||||
"@docusaurus/theme-search-algolia": "3.4.0",
|
"@docusaurus/theme-search-algolia": "3.5.2",
|
||||||
"@docusaurus/types": "3.4.0"
|
"@docusaurus/types": "3.5.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": "^18.0.0",
|
||||||
|
"react-dom": "^18.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/plugin-content-blog": {
|
||||||
|
"version": "3.5.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.5.2.tgz",
|
||||||
|
"integrity": "sha512-R7ghWnMvjSf+aeNDH0K4fjyQnt5L0KzUEnUhmf1e3jZrv3wogeytZNN6n7X8yHcMsuZHPOrctQhXWnmxu+IRRg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@docusaurus/core": "3.5.2",
|
||||||
|
"@docusaurus/logger": "3.5.2",
|
||||||
|
"@docusaurus/mdx-loader": "3.5.2",
|
||||||
|
"@docusaurus/theme-common": "3.5.2",
|
||||||
|
"@docusaurus/types": "3.5.2",
|
||||||
|
"@docusaurus/utils": "3.5.2",
|
||||||
|
"@docusaurus/utils-common": "3.5.2",
|
||||||
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
|
"cheerio": "1.0.0-rc.12",
|
||||||
|
"feed": "^4.2.2",
|
||||||
|
"fs-extra": "^11.1.1",
|
||||||
|
"lodash": "^4.17.21",
|
||||||
|
"reading-time": "^1.5.0",
|
||||||
|
"srcset": "^4.0.0",
|
||||||
|
"tslib": "^2.6.0",
|
||||||
|
"unist-util-visit": "^5.0.0",
|
||||||
|
"utility-types": "^3.10.0",
|
||||||
|
"webpack": "^5.88.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@docusaurus/plugin-content-docs": "*",
|
||||||
|
"react": "^18.0.0",
|
||||||
|
"react-dom": "^18.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/plugin-content-pages": {
|
||||||
|
"version": "3.5.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.5.2.tgz",
|
||||||
|
"integrity": "sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@docusaurus/core": "3.5.2",
|
||||||
|
"@docusaurus/mdx-loader": "3.5.2",
|
||||||
|
"@docusaurus/types": "3.5.2",
|
||||||
|
"@docusaurus/utils": "3.5.2",
|
||||||
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
|
"fs-extra": "^11.1.1",
|
||||||
|
"tslib": "^2.6.0",
|
||||||
|
"webpack": "^5.88.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.0"
|
"node": ">=18.0"
|
||||||
@ -2544,27 +2548,27 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/theme-classic": {
|
"node_modules/@docusaurus/theme-classic": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.5.2.tgz",
|
||||||
"integrity": "sha512-0IPtmxsBYv2adr1GnZRdMkEQt1YW6tpzrUPj02YxNpvJ5+ju4E13J5tB4nfdaen/tfR1hmpSPlTFPvTf4kwy8Q==",
|
"integrity": "sha512-XRpinSix3NBv95Rk7xeMF9k4safMkwnpSgThn0UNQNumKvmcIYjfkwfh2BhwYh/BxMXQHJ/PdmNh22TQFpIaYg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "3.4.0",
|
"@docusaurus/core": "3.5.2",
|
||||||
"@docusaurus/mdx-loader": "3.4.0",
|
"@docusaurus/mdx-loader": "3.5.2",
|
||||||
"@docusaurus/module-type-aliases": "3.4.0",
|
"@docusaurus/module-type-aliases": "3.5.2",
|
||||||
"@docusaurus/plugin-content-blog": "3.4.0",
|
"@docusaurus/plugin-content-blog": "3.5.2",
|
||||||
"@docusaurus/plugin-content-docs": "3.4.0",
|
"@docusaurus/plugin-content-docs": "3.5.2",
|
||||||
"@docusaurus/plugin-content-pages": "3.4.0",
|
"@docusaurus/plugin-content-pages": "3.5.2",
|
||||||
"@docusaurus/theme-common": "3.4.0",
|
"@docusaurus/theme-common": "3.5.2",
|
||||||
"@docusaurus/theme-translations": "3.4.0",
|
"@docusaurus/theme-translations": "3.5.2",
|
||||||
"@docusaurus/types": "3.4.0",
|
"@docusaurus/types": "3.5.2",
|
||||||
"@docusaurus/utils": "3.4.0",
|
"@docusaurus/utils": "3.5.2",
|
||||||
"@docusaurus/utils-common": "3.4.0",
|
"@docusaurus/utils-common": "3.5.2",
|
||||||
"@docusaurus/utils-validation": "3.4.0",
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
"@mdx-js/react": "^3.0.0",
|
"@mdx-js/react": "^3.0.0",
|
||||||
"clsx": "^2.0.0",
|
"clsx": "^2.0.0",
|
||||||
"copy-text-to-clipboard": "^3.2.0",
|
"copy-text-to-clipboard": "^3.2.0",
|
||||||
"infima": "0.2.0-alpha.43",
|
"infima": "0.2.0-alpha.44",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"postcss": "^8.4.26",
|
"postcss": "^8.4.26",
|
||||||
@ -2583,19 +2587,73 @@
|
|||||||
"react-dom": "^18.0.0"
|
"react-dom": "^18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/theme-common": {
|
"node_modules/@docusaurus/theme-classic/node_modules/@docusaurus/plugin-content-blog": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.5.2.tgz",
|
||||||
"integrity": "sha512-0A27alXuv7ZdCg28oPE8nH/Iz73/IUejVaCazqu9elS4ypjiLhK3KfzdSQBnL/g7YfHSlymZKdiOHEo8fJ0qMA==",
|
"integrity": "sha512-R7ghWnMvjSf+aeNDH0K4fjyQnt5L0KzUEnUhmf1e3jZrv3wogeytZNN6n7X8yHcMsuZHPOrctQhXWnmxu+IRRg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/mdx-loader": "3.4.0",
|
"@docusaurus/core": "3.5.2",
|
||||||
"@docusaurus/module-type-aliases": "3.4.0",
|
"@docusaurus/logger": "3.5.2",
|
||||||
"@docusaurus/plugin-content-blog": "3.4.0",
|
"@docusaurus/mdx-loader": "3.5.2",
|
||||||
"@docusaurus/plugin-content-docs": "3.4.0",
|
"@docusaurus/theme-common": "3.5.2",
|
||||||
"@docusaurus/plugin-content-pages": "3.4.0",
|
"@docusaurus/types": "3.5.2",
|
||||||
"@docusaurus/utils": "3.4.0",
|
"@docusaurus/utils": "3.5.2",
|
||||||
"@docusaurus/utils-common": "3.4.0",
|
"@docusaurus/utils-common": "3.5.2",
|
||||||
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
|
"cheerio": "1.0.0-rc.12",
|
||||||
|
"feed": "^4.2.2",
|
||||||
|
"fs-extra": "^11.1.1",
|
||||||
|
"lodash": "^4.17.21",
|
||||||
|
"reading-time": "^1.5.0",
|
||||||
|
"srcset": "^4.0.0",
|
||||||
|
"tslib": "^2.6.0",
|
||||||
|
"unist-util-visit": "^5.0.0",
|
||||||
|
"utility-types": "^3.10.0",
|
||||||
|
"webpack": "^5.88.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@docusaurus/plugin-content-docs": "*",
|
||||||
|
"react": "^18.0.0",
|
||||||
|
"react-dom": "^18.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@docusaurus/theme-classic/node_modules/@docusaurus/plugin-content-pages": {
|
||||||
|
"version": "3.5.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.5.2.tgz",
|
||||||
|
"integrity": "sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@docusaurus/core": "3.5.2",
|
||||||
|
"@docusaurus/mdx-loader": "3.5.2",
|
||||||
|
"@docusaurus/types": "3.5.2",
|
||||||
|
"@docusaurus/utils": "3.5.2",
|
||||||
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
|
"fs-extra": "^11.1.1",
|
||||||
|
"tslib": "^2.6.0",
|
||||||
|
"webpack": "^5.88.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": "^18.0.0",
|
||||||
|
"react-dom": "^18.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@docusaurus/theme-common": {
|
||||||
|
"version": "3.5.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.5.2.tgz",
|
||||||
|
"integrity": "sha512-QXqlm9S6x9Ibwjs7I2yEDgsCocp708DrCrgHgKwg2n2AY0YQ6IjU0gAK35lHRLOvAoJUfCKpQAwUykB0R7+Eew==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@docusaurus/mdx-loader": "3.5.2",
|
||||||
|
"@docusaurus/module-type-aliases": "3.5.2",
|
||||||
|
"@docusaurus/utils": "3.5.2",
|
||||||
|
"@docusaurus/utils-common": "3.5.2",
|
||||||
"@types/history": "^4.7.11",
|
"@types/history": "^4.7.11",
|
||||||
"@types/react": "*",
|
"@types/react": "*",
|
||||||
"@types/react-router-config": "*",
|
"@types/react-router-config": "*",
|
||||||
@ -2609,24 +2667,25 @@
|
|||||||
"node": ">=18.0"
|
"node": ">=18.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
"@docusaurus/plugin-content-docs": "*",
|
||||||
"react": "^18.0.0",
|
"react": "^18.0.0",
|
||||||
"react-dom": "^18.0.0"
|
"react-dom": "^18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/theme-search-algolia": {
|
"node_modules/@docusaurus/theme-search-algolia": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.5.2.tgz",
|
||||||
"integrity": "sha512-aiHFx7OCw4Wck1z6IoShVdUWIjntC8FHCw9c5dR8r3q4Ynh+zkS8y2eFFunN/DL6RXPzpnvKCg3vhLQYJDmT9Q==",
|
"integrity": "sha512-qW53kp3VzMnEqZGjakaV90sst3iN1o32PH+nawv1uepROO8aEGxptcq2R5rsv7aBShSRbZwIobdvSYKsZ5pqvA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docsearch/react": "^3.5.2",
|
"@docsearch/react": "^3.5.2",
|
||||||
"@docusaurus/core": "3.4.0",
|
"@docusaurus/core": "3.5.2",
|
||||||
"@docusaurus/logger": "3.4.0",
|
"@docusaurus/logger": "3.5.2",
|
||||||
"@docusaurus/plugin-content-docs": "3.4.0",
|
"@docusaurus/plugin-content-docs": "3.5.2",
|
||||||
"@docusaurus/theme-common": "3.4.0",
|
"@docusaurus/theme-common": "3.5.2",
|
||||||
"@docusaurus/theme-translations": "3.4.0",
|
"@docusaurus/theme-translations": "3.5.2",
|
||||||
"@docusaurus/utils": "3.4.0",
|
"@docusaurus/utils": "3.5.2",
|
||||||
"@docusaurus/utils-validation": "3.4.0",
|
"@docusaurus/utils-validation": "3.5.2",
|
||||||
"algoliasearch": "^4.18.0",
|
"algoliasearch": "^4.18.0",
|
||||||
"algoliasearch-helper": "^3.13.3",
|
"algoliasearch-helper": "^3.13.3",
|
||||||
"clsx": "^2.0.0",
|
"clsx": "^2.0.0",
|
||||||
@ -2645,9 +2704,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/theme-translations": {
|
"node_modules/@docusaurus/theme-translations": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.5.2.tgz",
|
||||||
"integrity": "sha512-zSxCSpmQCCdQU5Q4CnX/ID8CSUUI3fvmq4hU/GNP/XoAWtXo9SAVnM3TzpU8Gb//H3WCsT8mJcTfyOk3d9ftNg==",
|
"integrity": "sha512-GPZLcu4aT1EmqSTmbdpVrDENGR2yObFEX8ssEFYTCiAIVc0EihNSdOIBTazUvgNqwvnoU1A8vIs1xyzc3LITTw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fs-extra": "^11.1.1",
|
"fs-extra": "^11.1.1",
|
||||||
@ -2658,9 +2717,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/types": {
|
"node_modules/@docusaurus/types": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.2.tgz",
|
||||||
"integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==",
|
"integrity": "sha512-N6GntLXoLVUwkZw7zCxwy9QiuEXIcTVzA9AkmNw16oc0AP3SXLrMmDMMBIfgqwuKWa6Ox6epHol9kMtJqekACw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mdx-js/mdx": "^3.0.0",
|
"@mdx-js/mdx": "^3.0.0",
|
||||||
@ -2679,13 +2738,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/utils": {
|
"node_modules/@docusaurus/utils": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.5.2.tgz",
|
||||||
"integrity": "sha512-fRwnu3L3nnWaXOgs88BVBmG1yGjcQqZNHG+vInhEa2Sz2oQB+ZjbEMO5Rh9ePFpZ0YDiDUhpaVjwmS+AU2F14g==",
|
"integrity": "sha512-33QvcNFh+Gv+C2dP9Y9xWEzMgf3JzrpL2nW9PopidiohS1nDcyknKRx2DWaFvyVTTYIkkABVSr073VTj/NITNA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/logger": "3.4.0",
|
"@docusaurus/logger": "3.5.2",
|
||||||
"@docusaurus/utils-common": "3.4.0",
|
"@docusaurus/utils-common": "3.5.2",
|
||||||
"@svgr/webpack": "^8.1.0",
|
"@svgr/webpack": "^8.1.0",
|
||||||
"escape-string-regexp": "^4.0.0",
|
"escape-string-regexp": "^4.0.0",
|
||||||
"file-loader": "^6.2.0",
|
"file-loader": "^6.2.0",
|
||||||
@ -2718,9 +2777,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/utils-common": {
|
"node_modules/@docusaurus/utils-common": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.5.2.tgz",
|
||||||
"integrity": "sha512-NVx54Wr4rCEKsjOH5QEVvxIqVvm+9kh7q8aYTU5WzUU9/Hctd6aTrcZ3G0Id4zYJ+AeaG5K5qHA4CY5Kcm2iyQ==",
|
"integrity": "sha512-i0AZjHiRgJU6d7faQngIhuHKNrszpL/SHQPgF1zH4H+Ij6E9NBYGy6pkcGWToIv7IVPbs+pQLh1P3whn0gWXVg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tslib": "^2.6.0"
|
"tslib": "^2.6.0"
|
||||||
@ -2738,14 +2797,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@docusaurus/utils-validation": {
|
"node_modules/@docusaurus/utils-validation": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.5.2.tgz",
|
||||||
"integrity": "sha512-hYQ9fM+AXYVTWxJOT1EuNaRnrR2WGpRdLDQG07O8UOpsvCPWUVOeo26Rbm0JWY2sGLfzAb+tvJ62yF+8F+TV0g==",
|
"integrity": "sha512-m+Foq7augzXqB6HufdS139PFxDC5d5q2QKZy8q0qYYvGdI6nnlNsGH4cIGsgBnV7smz+mopl3g4asbSDvMV0jA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/logger": "3.4.0",
|
"@docusaurus/logger": "3.5.2",
|
||||||
"@docusaurus/utils": "3.4.0",
|
"@docusaurus/utils": "3.5.2",
|
||||||
"@docusaurus/utils-common": "3.4.0",
|
"@docusaurus/utils-common": "3.5.2",
|
||||||
"fs-extra": "^11.2.0",
|
"fs-extra": "^11.2.0",
|
||||||
"joi": "^17.9.2",
|
"joi": "^17.9.2",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.0",
|
||||||
@ -8767,9 +8826,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/infima": {
|
"node_modules/infima": {
|
||||||
"version": "0.2.0-alpha.43",
|
"version": "0.2.0-alpha.44",
|
||||||
"resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz",
|
"resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.44.tgz",
|
||||||
"integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==",
|
"integrity": "sha512-tuRkUSO/lB3rEhLJk25atwAjgLuzq070+pOW8XcvpHky/YbENnRRdPd85IBkyeTgttmOy5ah+yHYsK1HhUd4lQ==",
|
||||||
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
@ -13638,9 +13698,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prism-react-renderer": {
|
"node_modules/prism-react-renderer": {
|
||||||
"version": "2.3.1",
|
"version": "2.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.0.tgz",
|
||||||
"integrity": "sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==",
|
"integrity": "sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw==",
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/prismjs": "^1.26.0",
|
"@types/prismjs": "^1.26.0",
|
||||||
"clsx": "^2.0.0"
|
"clsx": "^2.0.0"
|
||||||
@ -16020,9 +16081,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tailwindcss": {
|
"node_modules/tailwindcss": {
|
||||||
"version": "3.4.9",
|
"version": "3.4.10",
|
||||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.9.tgz",
|
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz",
|
||||||
"integrity": "sha512-1SEOvRr6sSdV5IDf9iC+NU4dhwdqzF4zKKq3sAbasUWHEM6lsMhX+eNN5gkPx1BvLFEnZQEUFbXnGj8Qlp83Pg==",
|
"integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@alloc/quick-lru": "^5.2.0",
|
"@alloc/quick-lru": "^5.2.0",
|
||||||
|
@ -43,6 +43,11 @@ const guides: CommunityGuidesProps[] = [
|
|||||||
description: 'Access your local Immich installation over the internet using your own domain',
|
description: 'Access your local Immich installation over the internet using your own domain',
|
||||||
url: 'https://github.com/ppr88/immich-guides/blob/main/open-immich-custom-domain.md',
|
url: 'https://github.com/ppr88/immich-guides/blob/main/open-immich-custom-domain.md',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: 'Nginx caching map server',
|
||||||
|
description: 'Increase privacy by using nginx as a caching proxy in front of a map tile server',
|
||||||
|
url: 'https://github.com/pcouy/pcouy.github.io/blob/main/_posts/2024-08-30-proxying-a-map-tile-server-for-increased-privacy.md',
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
function CommunityGuide({ title, description, url }: CommunityGuidesProps): JSX.Element {
|
function CommunityGuide({ title, description, url }: CommunityGuidesProps): JSX.Element {
|
||||||
|
@ -28,11 +28,6 @@ const projects: CommunityProjectProps[] = [
|
|||||||
description: 'A simple way to remove orphaned offline assets from the Immich database',
|
description: 'A simple way to remove orphaned offline assets from the Immich database',
|
||||||
url: 'https://github.com/Thoroslives/immich_remove_offline_files',
|
url: 'https://github.com/Thoroslives/immich_remove_offline_files',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: 'Create albums from folders',
|
|
||||||
description: 'A Python script to create albums based on the folder structure of an external library.',
|
|
||||||
url: 'https://github.com/Salvoxia/immich-folder-album-creator',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: 'Immich-Tools',
|
title: 'Immich-Tools',
|
||||||
description: 'Provides scripts for handling problems on the repair page.',
|
description: 'Provides scripts for handling problems on the repair page.',
|
||||||
@ -43,6 +38,11 @@ const projects: CommunityProjectProps[] = [
|
|||||||
description: 'Lightroom plugin to publish photos from Lightroom collections to Immich albums.',
|
description: 'Lightroom plugin to publish photos from Lightroom collections to Immich albums.',
|
||||||
url: 'https://github.com/midzelis/mi.Immich.Publisher',
|
url: 'https://github.com/midzelis/mi.Immich.Publisher',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: 'Lightroom Immich Plugin: lrc-immich-plugin',
|
||||||
|
description: 'Another Lightroom plugin to publish or export photos from Lightroom to Immich.',
|
||||||
|
url: 'https://github.com/bmachek/lrc-immich-plugin',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: 'Immich Duplicate Finder',
|
title: 'Immich Duplicate Finder',
|
||||||
description: 'Webapp that uses machine learning to identify near-duplicate images.',
|
description: 'Webapp that uses machine learning to identify near-duplicate images.',
|
||||||
@ -58,6 +58,11 @@ const projects: CommunityProjectProps[] = [
|
|||||||
description: 'Unofficial Immich Android TV app.',
|
description: 'Unofficial Immich Android TV app.',
|
||||||
url: 'https://github.com/giejay/Immich-Android-TV',
|
url: 'https://github.com/giejay/Immich-Android-TV',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: 'Create albums from folders',
|
||||||
|
description: 'A Python script to create albums based on the folder structure of an external library.',
|
||||||
|
url: 'https://github.com/Salvoxia/immich-folder-album-creator',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: 'Powershell Module PSImmich',
|
title: 'Powershell Module PSImmich',
|
||||||
description: 'Powershell Module for the Immich API',
|
description: 'Powershell Module for the Immich API',
|
||||||
@ -75,8 +80,7 @@ const projects: CommunityProjectProps[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Immich Power Tools',
|
title: 'Immich Power Tools',
|
||||||
description:
|
description: 'Power tools for organizing your immich library.',
|
||||||
'An unofficial immich client providing tools to speed up your workflows in Immich to organize your people and albums.',
|
|
||||||
url: 'https://github.com/varun-raj/immich-power-tools',
|
url: 'https://github.com/varun-raj/immich-power-tools',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import '@docusaurus/theme-classic/lib/theme/Unlisted/index';
|
|
||||||
import { useWindowSize } from '@docusaurus/theme-common';
|
import { useWindowSize } from '@docusaurus/theme-common';
|
||||||
import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
|
import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
|
@ -15,6 +15,7 @@ import {
|
|||||||
mdiCloudUploadOutline,
|
mdiCloudUploadOutline,
|
||||||
mdiCollage,
|
mdiCollage,
|
||||||
mdiContentDuplicate,
|
mdiContentDuplicate,
|
||||||
|
mdiCrop,
|
||||||
mdiDevices,
|
mdiDevices,
|
||||||
mdiEmailOutline,
|
mdiEmailOutline,
|
||||||
mdiExpansionCard,
|
mdiExpansionCard,
|
||||||
@ -26,6 +27,7 @@ import {
|
|||||||
mdiFileSearch,
|
mdiFileSearch,
|
||||||
mdiFlash,
|
mdiFlash,
|
||||||
mdiFolder,
|
mdiFolder,
|
||||||
|
mdiFolderMultiple,
|
||||||
mdiForum,
|
mdiForum,
|
||||||
mdiHandshakeOutline,
|
mdiHandshakeOutline,
|
||||||
mdiHeart,
|
mdiHeart,
|
||||||
@ -36,6 +38,7 @@ import {
|
|||||||
mdiImageMultipleOutline,
|
mdiImageMultipleOutline,
|
||||||
mdiImageSearch,
|
mdiImageSearch,
|
||||||
mdiKeyboardSettingsOutline,
|
mdiKeyboardSettingsOutline,
|
||||||
|
mdiLicense,
|
||||||
mdiLockOutline,
|
mdiLockOutline,
|
||||||
mdiMagnify,
|
mdiMagnify,
|
||||||
mdiMagnifyScan,
|
mdiMagnifyScan,
|
||||||
@ -55,25 +58,29 @@ import {
|
|||||||
mdiScaleBalance,
|
mdiScaleBalance,
|
||||||
mdiSecurity,
|
mdiSecurity,
|
||||||
mdiServer,
|
mdiServer,
|
||||||
|
mdiShare,
|
||||||
mdiShareAll,
|
mdiShareAll,
|
||||||
mdiShareCircle,
|
mdiShareCircle,
|
||||||
mdiStar,
|
mdiStar,
|
||||||
|
mdiStarOutline,
|
||||||
mdiTableKey,
|
mdiTableKey,
|
||||||
mdiTag,
|
mdiTag,
|
||||||
|
mdiTagMultiple,
|
||||||
mdiText,
|
mdiText,
|
||||||
mdiThemeLightDark,
|
mdiThemeLightDark,
|
||||||
mdiTrashCanOutline,
|
mdiTrashCanOutline,
|
||||||
mdiVectorCombine,
|
mdiVectorCombine,
|
||||||
mdiVideo,
|
mdiVideo,
|
||||||
mdiWeb,
|
mdiWeb,
|
||||||
mdiLicense,
|
|
||||||
} from '@mdi/js';
|
} from '@mdi/js';
|
||||||
import Layout from '@theme/Layout';
|
import Layout from '@theme/Layout';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Item, Timeline } from '../components/timeline';
|
import { Item, Timeline } from '../components/timeline';
|
||||||
|
|
||||||
const releases = {
|
const releases = {
|
||||||
// TODO
|
'v1.113.0': new Date(2024, 7, 30),
|
||||||
|
'v1.112.0': new Date(2024, 7, 14),
|
||||||
|
'v1.111.0': new Date(2024, 6, 26),
|
||||||
'v1.110.0': new Date(2024, 5, 11),
|
'v1.110.0': new Date(2024, 5, 11),
|
||||||
'v1.109.0': new Date(2024, 6, 18),
|
'v1.109.0': new Date(2024, 6, 18),
|
||||||
'v1.106.1': new Date(2024, 5, 11),
|
'v1.106.1': new Date(2024, 5, 11),
|
||||||
@ -224,6 +231,47 @@ const roadmap: Item[] = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
const milestones: Item[] = [
|
const milestones: Item[] = [
|
||||||
|
withRelease({
|
||||||
|
icon: mdiTagMultiple,
|
||||||
|
iconColor: 'orange',
|
||||||
|
title: 'Tags',
|
||||||
|
description: 'Tag your photos and videos',
|
||||||
|
release: 'v1.113.0',
|
||||||
|
}),
|
||||||
|
withRelease({
|
||||||
|
icon: mdiFolderMultiple,
|
||||||
|
iconColor: 'brown',
|
||||||
|
title: 'Folders',
|
||||||
|
description: 'View your photos and videos in folders',
|
||||||
|
release: 'v1.113.0',
|
||||||
|
}),
|
||||||
|
withRelease({
|
||||||
|
icon: mdiPalette,
|
||||||
|
title: 'Theming (mobile)',
|
||||||
|
description: 'Pick a primary color for the mobile app',
|
||||||
|
release: 'v1.112.0',
|
||||||
|
}),
|
||||||
|
withRelease({
|
||||||
|
icon: mdiStarOutline,
|
||||||
|
iconColor: 'gold',
|
||||||
|
title: 'Star rating',
|
||||||
|
description: 'Rate your photos and videos',
|
||||||
|
release: 'v1.112.0',
|
||||||
|
}),
|
||||||
|
withRelease({
|
||||||
|
icon: mdiCrop,
|
||||||
|
iconColor: 'royalblue',
|
||||||
|
title: 'Editor (mobile)',
|
||||||
|
description: 'Crop and rotate on mobile',
|
||||||
|
release: 'v1.111.0',
|
||||||
|
}),
|
||||||
|
withRelease({
|
||||||
|
icon: mdiMap,
|
||||||
|
iconColor: 'green',
|
||||||
|
title: 'Deploy tiles.immich.cloud',
|
||||||
|
description: 'Dedicated tile server for Immich',
|
||||||
|
release: 'v1.111.0',
|
||||||
|
}),
|
||||||
{
|
{
|
||||||
icon: mdiStar,
|
icon: mdiStar,
|
||||||
iconColor: 'gold',
|
iconColor: 'gold',
|
||||||
@ -231,6 +279,12 @@ const milestones: Item[] = [
|
|||||||
description: 'Reached 40K Stars on GitHub!',
|
description: 'Reached 40K Stars on GitHub!',
|
||||||
getDateLabel: withLanguage(new Date(2024, 6, 21)),
|
getDateLabel: withLanguage(new Date(2024, 6, 21)),
|
||||||
},
|
},
|
||||||
|
withRelease({
|
||||||
|
icon: mdiShare,
|
||||||
|
title: 'Deploy my.immich.app',
|
||||||
|
description: 'Url router for immich links',
|
||||||
|
release: 'v1.109.0',
|
||||||
|
}),
|
||||||
withRelease({
|
withRelease({
|
||||||
icon: mdiLicense,
|
icon: mdiLicense,
|
||||||
iconColor: 'gold',
|
iconColor: 'gold',
|
||||||
|
12
docs/static/archived-versions.json
vendored
12
docs/static/archived-versions.json
vendored
@ -1,4 +1,16 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"label": "v1.114.0",
|
||||||
|
"url": "https://v1.114.0.archive.immich.app"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "v1.113.1",
|
||||||
|
"url": "https://v1.113.1.archive.immich.app"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "v1.113.0",
|
||||||
|
"url": "https://v1.113.0.archive.immich.app"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"label": "v1.112.1",
|
"label": "v1.112.1",
|
||||||
"url": "https://v1.112.1.archive.immich.app"
|
"url": "https://v1.112.1.archive.immich.app"
|
||||||
|
@ -4,7 +4,7 @@ module.exports = {
|
|||||||
corePlugins: {
|
corePlugins: {
|
||||||
preflight: false, // disable Tailwind's reset
|
preflight: false, // disable Tailwind's reset
|
||||||
},
|
},
|
||||||
content: ['./src/**/*.{js,jsx,ts,tsx}', '../docs/**/*.mdx'], // my markdown stuff is in ../docs, not /src
|
content: ['./src/**/*.{js,jsx,ts,tsx}', './{docs,blog}/**/*.{md,mdx}'], // my markdown stuff is in ../docs, not /src
|
||||||
darkMode: ['class', '[data-theme="dark"]'], // hooks into docusaurus' dark mode settigns
|
darkMode: ['class', '[data-theme="dark"]'], // hooks into docusaurus' dark mode settigns
|
||||||
theme: {
|
theme: {
|
||||||
extend: {
|
extend: {
|
||||||
|
@ -30,7 +30,7 @@ services:
|
|||||||
- redis
|
- redis
|
||||||
- database
|
- database
|
||||||
ports:
|
ports:
|
||||||
- 2283:3001
|
- 2285:3001
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:6.2-alpine@sha256:e3b17ba9479deec4b7d1eeec1548a253acc5374d68d3b27937fcfe4df8d18c7e
|
image: redis:6.2-alpine@sha256:e3b17ba9479deec4b7d1eeec1548a253acc5374d68d3b27937fcfe4df8d18c7e
|
||||||
@ -43,7 +43,7 @@ services:
|
|||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_DB: immich
|
POSTGRES_DB: immich
|
||||||
ports:
|
ports:
|
||||||
- 5433:5432
|
- 5435:5432
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
model-cache:
|
model-cache:
|
||||||
|
@ -59,6 +59,7 @@ export default [
|
|||||||
'unicorn/prefer-top-level-await': 'off',
|
'unicorn/prefer-top-level-await': 'off',
|
||||||
'unicorn/prefer-event-target': 'off',
|
'unicorn/prefer-event-target': 'off',
|
||||||
'unicorn/no-thenable': 'off',
|
'unicorn/no-thenable': 'off',
|
||||||
|
'object-shorthand': ['error', 'always'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
254
e2e/package-lock.json
generated
254
e2e/package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "immich-e2e",
|
"name": "immich-e2e",
|
||||||
"version": "1.112.1",
|
"version": "1.114.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "immich-e2e",
|
"name": "immich-e2e",
|
||||||
"version": "1.112.1",
|
"version": "1.114.0",
|
||||||
"license": "GNU Affero General Public License version 3",
|
"license": "GNU Affero General Public License version 3",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/eslintrc": "^3.1.0",
|
"@eslint/eslintrc": "^3.1.0",
|
||||||
@ -15,7 +15,7 @@
|
|||||||
"@immich/sdk": "file:../open-api/typescript-sdk",
|
"@immich/sdk": "file:../open-api/typescript-sdk",
|
||||||
"@playwright/test": "^1.44.1",
|
"@playwright/test": "^1.44.1",
|
||||||
"@types/luxon": "^3.4.2",
|
"@types/luxon": "^3.4.2",
|
||||||
"@types/node": "^20.14.15",
|
"@types/node": "^20.16.2",
|
||||||
"@types/oidc-provider": "^8.5.1",
|
"@types/oidc-provider": "^8.5.1",
|
||||||
"@types/pg": "^8.11.0",
|
"@types/pg": "^8.11.0",
|
||||||
"@types/pngjs": "^6.0.4",
|
"@types/pngjs": "^6.0.4",
|
||||||
@ -45,7 +45,7 @@
|
|||||||
},
|
},
|
||||||
"../cli": {
|
"../cli": {
|
||||||
"name": "@immich/cli",
|
"name": "@immich/cli",
|
||||||
"version": "2.2.15",
|
"version": "2.2.18",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "GNU Affero General Public License version 3",
|
"license": "GNU Affero General Public License version 3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -64,7 +64,7 @@
|
|||||||
"@types/cli-progress": "^3.11.0",
|
"@types/cli-progress": "^3.11.0",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/mock-fs": "^4.13.1",
|
"@types/mock-fs": "^4.13.1",
|
||||||
"@types/node": "^20.14.15",
|
"@types/node": "^20.16.2",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
||||||
"@typescript-eslint/parser": "^8.0.0",
|
"@typescript-eslint/parser": "^8.0.0",
|
||||||
"@vitest/coverage-v8": "^2.0.5",
|
"@vitest/coverage-v8": "^2.0.5",
|
||||||
@ -92,14 +92,14 @@
|
|||||||
},
|
},
|
||||||
"../open-api/typescript-sdk": {
|
"../open-api/typescript-sdk": {
|
||||||
"name": "@immich/sdk",
|
"name": "@immich/sdk",
|
||||||
"version": "1.112.1",
|
"version": "1.114.0",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "GNU Affero General Public License version 3",
|
"license": "GNU Affero General Public License version 3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@oazapfts/runtime": "^1.0.2"
|
"@oazapfts/runtime": "^1.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.14.15",
|
"@types/node": "^20.16.2",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -747,9 +747,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/config-array": {
|
"node_modules/@eslint/config-array": {
|
||||||
"version": "0.17.1",
|
"version": "0.18.0",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz",
|
||||||
"integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==",
|
"integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -799,9 +799,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/js": {
|
"node_modules/@eslint/js": {
|
||||||
"version": "9.8.0",
|
"version": "9.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz",
|
||||||
"integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==",
|
"integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1113,13 +1113,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@playwright/test": {
|
"node_modules/@playwright/test": {
|
||||||
"version": "1.46.0",
|
"version": "1.46.1",
|
||||||
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.46.0.tgz",
|
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.46.1.tgz",
|
||||||
"integrity": "sha512-/QYft5VArOrGRP5pgkrfKksqsKA6CEFyGQ/gjNe6q0y4tZ1aaPfq4gIjudr1s3D+pXyrPRdsy4opKDrjBabE5w==",
|
"integrity": "sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"playwright": "1.46.0"
|
"playwright": "1.46.1"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"playwright": "cli.js"
|
"playwright": "cli.js"
|
||||||
@ -1516,9 +1516,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "20.16.1",
|
"version": "20.16.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.3.tgz",
|
||||||
"integrity": "sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==",
|
"integrity": "sha512-/wdGiWRkMOm53gAsSyFMXFZHbVg7C6CbkrzHNpaHoYfsUWPg7m6ZRKtvQjgvQ9i8WT540a3ydRlRQbxjY30XxQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -1532,20 +1532,22 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/oidc-provider": {
|
"node_modules/@types/oidc-provider": {
|
||||||
"version": "8.5.1",
|
"version": "8.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/@types/oidc-provider/-/oidc-provider-8.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/oidc-provider/-/oidc-provider-8.5.2.tgz",
|
||||||
"integrity": "sha512-NS8tBPOj9GG6SxyrUHWBzglOtAYNDX41J4cRE45oeK0iSqI6V6tDW70aPWg25pJFNSC1evccXFm9evfwjxm7HQ==",
|
"integrity": "sha512-NiD3VG49+cRCAAe8+uZLM4onOcX8y9+cwaml8JG1qlgc98rWoCRgsnOB4Ypx+ysays5jiwzfUgT0nWyXPB/9uQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/koa": "*",
|
"@types/koa": "*",
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/pg": {
|
"node_modules/@types/pg": {
|
||||||
"version": "8.11.6",
|
"version": "8.11.8",
|
||||||
"resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.8.tgz",
|
||||||
"integrity": "sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==",
|
"integrity": "sha512-IqpCf8/569txXN/HoP5i1LjXfKZWL76Yr2R77xgeIICUbAYHeoaEZFhYHo2uDftecLWrTJUq63JvQu8q3lnDyA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "*",
|
"@types/node": "*",
|
||||||
"pg-protocol": "*",
|
"pg-protocol": "*",
|
||||||
@ -1557,6 +1559,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/pg-types/-/pg-types-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/pg-types/-/pg-types-4.0.2.tgz",
|
||||||
"integrity": "sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==",
|
"integrity": "sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"pg-int8": "1.0.1",
|
"pg-int8": "1.0.1",
|
||||||
"pg-numeric": "1.0.2",
|
"pg-numeric": "1.0.2",
|
||||||
@ -1575,6 +1578,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz",
|
||||||
"integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==",
|
"integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
@ -1584,6 +1588,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz",
|
||||||
"integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==",
|
"integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"obuf": "~1.1.2"
|
"obuf": "~1.1.2"
|
||||||
},
|
},
|
||||||
@ -1596,6 +1601,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.1.0.tgz",
|
||||||
"integrity": "sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==",
|
"integrity": "sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
@ -1605,6 +1611,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz",
|
||||||
"integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==",
|
"integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
@ -1673,17 +1680,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz",
|
||||||
"integrity": "sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==",
|
"integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/regexpp": "^4.10.0",
|
"@eslint-community/regexpp": "^4.10.0",
|
||||||
"@typescript-eslint/scope-manager": "8.0.1",
|
"@typescript-eslint/scope-manager": "8.3.0",
|
||||||
"@typescript-eslint/type-utils": "8.0.1",
|
"@typescript-eslint/type-utils": "8.3.0",
|
||||||
"@typescript-eslint/utils": "8.0.1",
|
"@typescript-eslint/utils": "8.3.0",
|
||||||
"@typescript-eslint/visitor-keys": "8.0.1",
|
"@typescript-eslint/visitor-keys": "8.3.0",
|
||||||
"graphemer": "^1.4.0",
|
"graphemer": "^1.4.0",
|
||||||
"ignore": "^5.3.1",
|
"ignore": "^5.3.1",
|
||||||
"natural-compare": "^1.4.0",
|
"natural-compare": "^1.4.0",
|
||||||
@ -1707,16 +1714,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/parser": {
|
"node_modules/@typescript-eslint/parser": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz",
|
||||||
"integrity": "sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==",
|
"integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "8.0.1",
|
"@typescript-eslint/scope-manager": "8.3.0",
|
||||||
"@typescript-eslint/types": "8.0.1",
|
"@typescript-eslint/types": "8.3.0",
|
||||||
"@typescript-eslint/typescript-estree": "8.0.1",
|
"@typescript-eslint/typescript-estree": "8.3.0",
|
||||||
"@typescript-eslint/visitor-keys": "8.0.1",
|
"@typescript-eslint/visitor-keys": "8.3.0",
|
||||||
"debug": "^4.3.4"
|
"debug": "^4.3.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1736,14 +1743,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz",
|
||||||
"integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==",
|
"integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "8.0.1",
|
"@typescript-eslint/types": "8.3.0",
|
||||||
"@typescript-eslint/visitor-keys": "8.0.1"
|
"@typescript-eslint/visitor-keys": "8.3.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||||
@ -1754,14 +1761,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils": {
|
"node_modules/@typescript-eslint/type-utils": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz",
|
||||||
"integrity": "sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==",
|
"integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/typescript-estree": "8.0.1",
|
"@typescript-eslint/typescript-estree": "8.3.0",
|
||||||
"@typescript-eslint/utils": "8.0.1",
|
"@typescript-eslint/utils": "8.3.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"ts-api-utils": "^1.3.0"
|
"ts-api-utils": "^1.3.0"
|
||||||
},
|
},
|
||||||
@ -1779,9 +1786,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/types": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz",
|
||||||
"integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==",
|
"integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1793,16 +1800,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz",
|
||||||
"integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==",
|
"integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "8.0.1",
|
"@typescript-eslint/types": "8.3.0",
|
||||||
"@typescript-eslint/visitor-keys": "8.0.1",
|
"@typescript-eslint/visitor-keys": "8.3.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"globby": "^11.1.0",
|
"fast-glob": "^3.3.2",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
"minimatch": "^9.0.4",
|
"minimatch": "^9.0.4",
|
||||||
"semver": "^7.6.0",
|
"semver": "^7.6.0",
|
||||||
@ -1848,16 +1855,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils": {
|
"node_modules/@typescript-eslint/utils": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz",
|
||||||
"integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==",
|
"integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.4.0",
|
"@eslint-community/eslint-utils": "^4.4.0",
|
||||||
"@typescript-eslint/scope-manager": "8.0.1",
|
"@typescript-eslint/scope-manager": "8.3.0",
|
||||||
"@typescript-eslint/types": "8.0.1",
|
"@typescript-eslint/types": "8.3.0",
|
||||||
"@typescript-eslint/typescript-estree": "8.0.1"
|
"@typescript-eslint/typescript-estree": "8.3.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||||
@ -1871,13 +1878,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "8.0.1",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz",
|
||||||
"integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==",
|
"integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "8.0.1",
|
"@typescript-eslint/types": "8.3.0",
|
||||||
"eslint-visitor-keys": "^3.4.3"
|
"eslint-visitor-keys": "^3.4.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -2111,16 +2118,6 @@
|
|||||||
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/array-union": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/asap": {
|
"node_modules/asap": {
|
||||||
"version": "2.0.6",
|
"version": "2.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
|
||||||
@ -2724,19 +2721,6 @@
|
|||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/dir-glob": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"path-type": "^4.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/eastasianwidth": {
|
"node_modules/eastasianwidth": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
||||||
@ -2888,17 +2872,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint": {
|
"node_modules/eslint": {
|
||||||
"version": "9.8.0",
|
"version": "9.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz",
|
||||||
"integrity": "sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==",
|
"integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.2.0",
|
"@eslint-community/eslint-utils": "^4.2.0",
|
||||||
"@eslint-community/regexpp": "^4.11.0",
|
"@eslint-community/regexpp": "^4.11.0",
|
||||||
"@eslint/config-array": "^0.17.1",
|
"@eslint/config-array": "^0.18.0",
|
||||||
"@eslint/eslintrc": "^3.1.0",
|
"@eslint/eslintrc": "^3.1.0",
|
||||||
"@eslint/js": "9.8.0",
|
"@eslint/js": "9.9.1",
|
||||||
"@humanwhocodes/module-importer": "^1.0.1",
|
"@humanwhocodes/module-importer": "^1.0.1",
|
||||||
"@humanwhocodes/retry": "^0.3.0",
|
"@humanwhocodes/retry": "^0.3.0",
|
||||||
"@nodelib/fs.walk": "^1.2.8",
|
"@nodelib/fs.walk": "^1.2.8",
|
||||||
@ -2937,6 +2921,14 @@
|
|||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://eslint.org/donate"
|
"url": "https://eslint.org/donate"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"jiti": "*"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"jiti": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-config-prettier": {
|
"node_modules/eslint-config-prettier": {
|
||||||
@ -3573,27 +3565,6 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/globby": {
|
|
||||||
"version": "11.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
|
|
||||||
"integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"array-union": "^2.1.0",
|
|
||||||
"dir-glob": "^3.0.1",
|
|
||||||
"fast-glob": "^3.2.9",
|
|
||||||
"ignore": "^5.2.0",
|
|
||||||
"merge2": "^1.4.1",
|
|
||||||
"slash": "^3.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/gopd": {
|
"node_modules/gopd": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
|
||||||
@ -4125,10 +4096,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/jose": {
|
"node_modules/jose": {
|
||||||
"version": "5.6.3",
|
"version": "5.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/jose/-/jose-5.6.3.tgz",
|
"resolved": "https://registry.npmjs.org/jose/-/jose-5.8.0.tgz",
|
||||||
"integrity": "sha512-1Jh//hEEwMhNYPDDLwXHa2ePWgWiFNNUadVmguAAw2IJ6sj9mNxV5tGXJNqlMkJAybF6Lgw1mISDxTePP/187g==",
|
"integrity": "sha512-E7CqYpL/t7MMnfGnK/eg416OsFCVUrU/Y3Vwe7QjKhu/BkS1Ms455+2xsqZQVN57/U2MHMBvEb5SrmAZWAIntA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/panva"
|
"url": "https://github.com/sponsors/panva"
|
||||||
}
|
}
|
||||||
@ -4436,9 +4408,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/micromatch": {
|
"node_modules/micromatch": {
|
||||||
"version": "4.0.7",
|
"version": "4.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
|
||||||
"integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
|
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -5034,16 +5006,6 @@
|
|||||||
"integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==",
|
"integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/path-type": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/pathe": {
|
"node_modules/pathe": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
|
||||||
@ -5178,13 +5140,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/playwright": {
|
"node_modules/playwright": {
|
||||||
"version": "1.46.0",
|
"version": "1.46.1",
|
||||||
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.46.0.tgz",
|
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.46.1.tgz",
|
||||||
"integrity": "sha512-XYJ5WvfefWONh1uPAUAi0H2xXV5S3vrtcnXe6uAOgdGi3aSpqOSXX08IAjXW34xitfuOJsvXU5anXZxPSEQiJw==",
|
"integrity": "sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"playwright-core": "1.46.0"
|
"playwright-core": "1.46.1"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"playwright": "cli.js"
|
"playwright": "cli.js"
|
||||||
@ -5197,9 +5159,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/playwright-core": {
|
"node_modules/playwright-core": {
|
||||||
"version": "1.46.0",
|
"version": "1.46.1",
|
||||||
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.46.0.tgz",
|
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.46.1.tgz",
|
||||||
"integrity": "sha512-9Y/d5UIwuJk8t3+lhmMSAJyNP1BUC/DqP3cQJDQQL/oWqAiuPTLgy7Q5dzglmTLwcBRdetzgNM/gni7ckfTr6A==",
|
"integrity": "sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"bin": {
|
"bin": {
|
||||||
@ -5829,16 +5791,6 @@
|
|||||||
"url": "https://github.com/sponsors/isaacs"
|
"url": "https://github.com/sponsors/isaacs"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/slash": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/socket.io-client": {
|
"node_modules/socket.io-client": {
|
||||||
"version": "4.7.5",
|
"version": "4.7.5",
|
||||||
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz",
|
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "immich-e2e",
|
"name": "immich-e2e",
|
||||||
"version": "1.112.1",
|
"version": "1.114.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
@ -25,7 +25,7 @@
|
|||||||
"@immich/sdk": "file:../open-api/typescript-sdk",
|
"@immich/sdk": "file:../open-api/typescript-sdk",
|
||||||
"@playwright/test": "^1.44.1",
|
"@playwright/test": "^1.44.1",
|
||||||
"@types/luxon": "^3.4.2",
|
"@types/luxon": "^3.4.2",
|
||||||
"@types/node": "^20.14.15",
|
"@types/node": "^20.16.2",
|
||||||
"@types/oidc-provider": "^8.5.1",
|
"@types/oidc-provider": "^8.5.1",
|
||||||
"@types/pg": "^8.11.0",
|
"@types/pg": "^8.11.0",
|
||||||
"@types/pngjs": "^6.0.4",
|
"@types/pngjs": "^6.0.4",
|
||||||
|
@ -8,7 +8,7 @@ export default defineConfig({
|
|||||||
workers: 1,
|
workers: 1,
|
||||||
reporter: 'html',
|
reporter: 'html',
|
||||||
use: {
|
use: {
|
||||||
baseURL: 'http://127.0.0.1:2283',
|
baseURL: 'http://127.0.0.1:2285',
|
||||||
trace: 'on-first-retry',
|
trace: 'on-first-retry',
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ export default defineConfig({
|
|||||||
/* Run your local dev server before starting the tests */
|
/* Run your local dev server before starting the tests */
|
||||||
webServer: {
|
webServer: {
|
||||||
command: 'docker compose up --build -V --remove-orphans',
|
command: 'docker compose up --build -V --remove-orphans',
|
||||||
url: 'http://127.0.0.1:2283',
|
url: 'http://127.0.0.1:2285',
|
||||||
reuseExistingServer: true,
|
reuseExistingServer: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -6,7 +6,9 @@ import {
|
|||||||
LoginResponseDto,
|
LoginResponseDto,
|
||||||
SharedLinkType,
|
SharedLinkType,
|
||||||
getAssetInfo,
|
getAssetInfo,
|
||||||
|
getConfig,
|
||||||
getMyUser,
|
getMyUser,
|
||||||
|
updateConfig,
|
||||||
} from '@immich/sdk';
|
} from '@immich/sdk';
|
||||||
import { exiftool } from 'exiftool-vendored';
|
import { exiftool } from 'exiftool-vendored';
|
||||||
import { DateTime } from 'luxon';
|
import { DateTime } from 'luxon';
|
||||||
@ -43,6 +45,9 @@ const TEN_TIMES = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
|||||||
|
|
||||||
const locationAssetFilepath = `${testAssetDir}/metadata/gps-position/thompson-springs.jpg`;
|
const locationAssetFilepath = `${testAssetDir}/metadata/gps-position/thompson-springs.jpg`;
|
||||||
const ratingAssetFilepath = `${testAssetDir}/metadata/rating/mongolels.jpg`;
|
const ratingAssetFilepath = `${testAssetDir}/metadata/rating/mongolels.jpg`;
|
||||||
|
const facesAssetFilepath = `${testAssetDir}/metadata/faces/portrait.jpg`;
|
||||||
|
|
||||||
|
const getSystemConfig = (accessToken: string) => getConfig({ headers: asBearerAuth(accessToken) });
|
||||||
|
|
||||||
const readTags = async (bytes: Buffer, filename: string) => {
|
const readTags = async (bytes: Buffer, filename: string) => {
|
||||||
const filepath = join(tempDir, filename);
|
const filepath = join(tempDir, filename);
|
||||||
@ -71,6 +76,7 @@ describe('/asset', () => {
|
|||||||
let user2Assets: AssetMediaResponseDto[];
|
let user2Assets: AssetMediaResponseDto[];
|
||||||
let locationAsset: AssetMediaResponseDto;
|
let locationAsset: AssetMediaResponseDto;
|
||||||
let ratingAsset: AssetMediaResponseDto;
|
let ratingAsset: AssetMediaResponseDto;
|
||||||
|
let facesAsset: AssetMediaResponseDto;
|
||||||
|
|
||||||
const setupTests = async () => {
|
const setupTests = async () => {
|
||||||
await utils.resetDatabase();
|
await utils.resetDatabase();
|
||||||
@ -224,6 +230,64 @@ describe('/asset', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should get the asset faces', async () => {
|
||||||
|
const config = await getSystemConfig(admin.accessToken);
|
||||||
|
config.metadata.faces.import = true;
|
||||||
|
await updateConfig({ systemConfigDto: config }, { headers: asBearerAuth(admin.accessToken) });
|
||||||
|
|
||||||
|
// asset faces
|
||||||
|
facesAsset = await utils.createAsset(admin.accessToken, {
|
||||||
|
assetData: {
|
||||||
|
filename: 'portrait.jpg',
|
||||||
|
bytes: await readFile(facesAssetFilepath),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await utils.waitForWebsocketEvent({ event: 'assetUpload', id: facesAsset.id });
|
||||||
|
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.get(`/assets/${facesAsset.id}`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body.id).toEqual(facesAsset.id);
|
||||||
|
expect(body.people).toMatchObject([
|
||||||
|
{
|
||||||
|
name: 'Marie Curie',
|
||||||
|
birthDate: null,
|
||||||
|
thumbnailPath: '',
|
||||||
|
isHidden: false,
|
||||||
|
faces: [
|
||||||
|
{
|
||||||
|
imageHeight: 700,
|
||||||
|
imageWidth: 840,
|
||||||
|
boundingBoxX1: 261,
|
||||||
|
boundingBoxX2: 356,
|
||||||
|
boundingBoxY1: 146,
|
||||||
|
boundingBoxY2: 284,
|
||||||
|
sourceType: 'exif',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Pierre Curie',
|
||||||
|
birthDate: null,
|
||||||
|
thumbnailPath: '',
|
||||||
|
isHidden: false,
|
||||||
|
faces: [
|
||||||
|
{
|
||||||
|
imageHeight: 700,
|
||||||
|
imageWidth: 840,
|
||||||
|
boundingBoxX1: 536,
|
||||||
|
boundingBoxX2: 618,
|
||||||
|
boundingBoxY1: 83,
|
||||||
|
boundingBoxY2: 252,
|
||||||
|
sourceType: 'exif',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
it('should work with a shared link', async () => {
|
it('should work with a shared link', async () => {
|
||||||
const sharedLink = await utils.createSharedLink(user1.accessToken, {
|
const sharedLink = await utils.createSharedLink(user1.accessToken, {
|
||||||
type: SharedLinkType.Individual,
|
type: SharedLinkType.Individual,
|
||||||
|
@ -353,7 +353,7 @@ describe('/libraries', () => {
|
|||||||
|
|
||||||
expect(assets.count).toBe(2);
|
expect(assets.count).toBe(2);
|
||||||
|
|
||||||
utils.createImageFile(`${testAssetDir}/temp/directoryA/assetB.png`);
|
utils.createImageFile(`${testAssetDir}/temp/directoryA/assetC.png`);
|
||||||
|
|
||||||
await scan(admin.accessToken, library.id);
|
await scan(admin.accessToken, library.id);
|
||||||
await utils.waitForWebsocketEvent({ event: 'assetUpload', total: 3 });
|
await utils.waitForWebsocketEvent({ event: 'assetUpload', total: 3 });
|
||||||
@ -361,11 +361,11 @@ describe('/libraries', () => {
|
|||||||
const { assets: newAssets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
|
const { assets: newAssets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
|
||||||
|
|
||||||
expect(newAssets.count).toBe(3);
|
expect(newAssets.count).toBe(3);
|
||||||
utils.removeImageFile(`${testAssetDir}/temp/directoryA/assetB.png`);
|
utils.removeImageFile(`${testAssetDir}/temp/directoryA/assetC.png`);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should offline missing files', async () => {
|
it('should offline a file missing from disk', async () => {
|
||||||
utils.createImageFile(`${testAssetDir}/temp/directoryA/assetB.png`);
|
utils.createImageFile(`${testAssetDir}/temp/directoryA/assetC.png`);
|
||||||
const library = await utils.createLibrary(admin.accessToken, {
|
const library = await utils.createLibrary(admin.accessToken, {
|
||||||
ownerId: admin.userId,
|
ownerId: admin.userId,
|
||||||
importPaths: [`${testAssetDirInternal}/temp`],
|
importPaths: [`${testAssetDirInternal}/temp`],
|
||||||
@ -374,7 +374,40 @@ describe('/libraries', () => {
|
|||||||
await scan(admin.accessToken, library.id);
|
await scan(admin.accessToken, library.id);
|
||||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
|
||||||
utils.removeImageFile(`${testAssetDir}/temp/directoryA/assetB.png`);
|
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
|
||||||
|
expect(assets.count).toBe(3);
|
||||||
|
|
||||||
|
utils.removeImageFile(`${testAssetDir}/temp/directoryA/assetC.png`);
|
||||||
|
|
||||||
|
await scan(admin.accessToken, library.id);
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
|
||||||
|
const { assets: newAssets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
|
||||||
|
expect(newAssets.count).toBe(3);
|
||||||
|
|
||||||
|
expect(newAssets.items).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
isOffline: true,
|
||||||
|
originalFileName: 'assetC.png',
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should offline a file outside of import paths', async () => {
|
||||||
|
const library = await utils.createLibrary(admin.accessToken, {
|
||||||
|
ownerId: admin.userId,
|
||||||
|
importPaths: [`${testAssetDirInternal}/temp`],
|
||||||
|
});
|
||||||
|
|
||||||
|
await scan(admin.accessToken, library.id);
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
|
||||||
|
await request(app)
|
||||||
|
.put(`/libraries/${library.id}`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
|
.send({ importPaths: [`${testAssetDirInternal}/temp/directoryA`] });
|
||||||
|
|
||||||
await scan(admin.accessToken, library.id);
|
await scan(admin.accessToken, library.id);
|
||||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
@ -383,6 +416,45 @@ describe('/libraries', () => {
|
|||||||
|
|
||||||
expect(assets.items).toEqual(
|
expect(assets.items).toEqual(
|
||||||
expect.arrayContaining([
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
isOffline: false,
|
||||||
|
originalFileName: 'assetA.png',
|
||||||
|
}),
|
||||||
|
expect.objectContaining({
|
||||||
|
isOffline: true,
|
||||||
|
originalFileName: 'assetB.png',
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should offline a file covered by an exclusion pattern', async () => {
|
||||||
|
const library = await utils.createLibrary(admin.accessToken, {
|
||||||
|
ownerId: admin.userId,
|
||||||
|
importPaths: [`${testAssetDirInternal}/temp`],
|
||||||
|
});
|
||||||
|
|
||||||
|
await scan(admin.accessToken, library.id);
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
|
||||||
|
await request(app)
|
||||||
|
.put(`/libraries/${library.id}`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
|
.send({ exclusionPatterns: ['**/directoryB/**'] });
|
||||||
|
|
||||||
|
await scan(admin.accessToken, library.id);
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
|
||||||
|
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
|
||||||
|
|
||||||
|
expect(assets.count).toBe(2);
|
||||||
|
|
||||||
|
expect(assets.items).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
isOffline: false,
|
||||||
|
originalFileName: 'assetA.png',
|
||||||
|
}),
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
isOffline: true,
|
isOffline: true,
|
||||||
originalFileName: 'assetB.png',
|
originalFileName: 'assetB.png',
|
||||||
@ -434,6 +506,8 @@ describe('/libraries', () => {
|
|||||||
await utils.waitForWebsocketEvent({ event: 'assetDelete', total: 1 });
|
await utils.waitForWebsocketEvent({ event: 'assetDelete', total: 1 });
|
||||||
|
|
||||||
expect(existsSync(`${testAssetDir}/temp/offline1/assetA.png`)).toBe(true);
|
expect(existsSync(`${testAssetDir}/temp/offline1/assetA.png`)).toBe(true);
|
||||||
|
|
||||||
|
utils.removeImageFile(`${testAssetDir}/temp/offline1/assetA.png`);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should scan new files', async () => {
|
it('should scan new files', async () => {
|
||||||
@ -445,14 +519,14 @@ describe('/libraries', () => {
|
|||||||
await scan(admin.accessToken, library.id);
|
await scan(admin.accessToken, library.id);
|
||||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
|
||||||
utils.createImageFile(`${testAssetDir}/temp/directoryA/assetC.png`);
|
utils.createImageFile(`${testAssetDir}/temp/directoryC/assetC.png`);
|
||||||
|
|
||||||
await scan(admin.accessToken, library.id);
|
await scan(admin.accessToken, library.id);
|
||||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
|
||||||
utils.removeImageFile(`${testAssetDir}/temp/directoryA/assetC.png`);
|
|
||||||
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
|
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
|
||||||
|
|
||||||
|
expect(assets.count).toBe(3);
|
||||||
expect(assets.items).toEqual(
|
expect(assets.items).toEqual(
|
||||||
expect.arrayContaining([
|
expect.arrayContaining([
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
@ -460,6 +534,8 @@ describe('/libraries', () => {
|
|||||||
}),
|
}),
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
utils.removeImageFile(`${testAssetDir}/temp/directoryC/assetC.png`);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('with refreshModifiedFiles=true', () => {
|
describe('with refreshModifiedFiles=true', () => {
|
||||||
@ -559,10 +635,11 @@ describe('/libraries', () => {
|
|||||||
it('should remove offline files', async () => {
|
it('should remove offline files', async () => {
|
||||||
const library = await utils.createLibrary(admin.accessToken, {
|
const library = await utils.createLibrary(admin.accessToken, {
|
||||||
ownerId: admin.userId,
|
ownerId: admin.userId,
|
||||||
importPaths: [`${testAssetDirInternal}/temp/offline2`],
|
importPaths: [`${testAssetDirInternal}/temp/offline`],
|
||||||
});
|
});
|
||||||
|
|
||||||
utils.createImageFile(`${testAssetDir}/temp/offline2/assetA.png`);
|
utils.createImageFile(`${testAssetDir}/temp/offline/online.png`);
|
||||||
|
utils.createImageFile(`${testAssetDir}/temp/offline/offline.png`);
|
||||||
|
|
||||||
await scan(admin.accessToken, library.id);
|
await scan(admin.accessToken, library.id);
|
||||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
@ -570,9 +647,9 @@ describe('/libraries', () => {
|
|||||||
const { assets: initialAssets } = await utils.metadataSearch(admin.accessToken, {
|
const { assets: initialAssets } = await utils.metadataSearch(admin.accessToken, {
|
||||||
libraryId: library.id,
|
libraryId: library.id,
|
||||||
});
|
});
|
||||||
expect(initialAssets.count).toBe(1);
|
expect(initialAssets.count).toBe(2);
|
||||||
|
|
||||||
utils.removeImageFile(`${testAssetDir}/temp/offline2/assetA.png`);
|
utils.removeImageFile(`${testAssetDir}/temp/offline/offline.png`);
|
||||||
|
|
||||||
await scan(admin.accessToken, library.id);
|
await scan(admin.accessToken, library.id);
|
||||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
@ -593,7 +670,54 @@ describe('/libraries', () => {
|
|||||||
|
|
||||||
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
|
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
|
||||||
|
|
||||||
expect(assets.count).toBe(0);
|
expect(assets.count).toBe(1);
|
||||||
|
|
||||||
|
utils.removeImageFile(`${testAssetDir}/temp/offline/online.png`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should remove offline files from trash', async () => {
|
||||||
|
const library = await utils.createLibrary(admin.accessToken, {
|
||||||
|
ownerId: admin.userId,
|
||||||
|
importPaths: [`${testAssetDirInternal}/temp/offline`],
|
||||||
|
});
|
||||||
|
|
||||||
|
utils.createImageFile(`${testAssetDir}/temp/offline/online.png`);
|
||||||
|
utils.createImageFile(`${testAssetDir}/temp/offline/offline.png`);
|
||||||
|
|
||||||
|
await scan(admin.accessToken, library.id);
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
|
||||||
|
const { assets: initialAssets } = await utils.metadataSearch(admin.accessToken, {
|
||||||
|
libraryId: library.id,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(initialAssets.count).toBe(2);
|
||||||
|
utils.removeImageFile(`${testAssetDir}/temp/offline/offline.png`);
|
||||||
|
|
||||||
|
await scan(admin.accessToken, library.id);
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
|
||||||
|
const { assets: offlineAssets } = await utils.metadataSearch(admin.accessToken, {
|
||||||
|
libraryId: library.id,
|
||||||
|
isOffline: true,
|
||||||
|
});
|
||||||
|
expect(offlineAssets.count).toBe(1);
|
||||||
|
|
||||||
|
const { status } = await request(app)
|
||||||
|
.post(`/libraries/${library.id}/removeOffline`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
|
.send();
|
||||||
|
expect(status).toBe(204);
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'backgroundTask');
|
||||||
|
|
||||||
|
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
|
||||||
|
|
||||||
|
expect(assets.count).toBe(1);
|
||||||
|
expect(assets.items[0].isOffline).toBe(false);
|
||||||
|
expect(assets.items[0].originalPath).toEqual(`${testAssetDirInternal}/temp/offline/online.png`);
|
||||||
|
|
||||||
|
utils.removeImageFile(`${testAssetDir}/temp/offline/online.png`);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not remove online files', async () => {
|
it('should not remove online files', async () => {
|
||||||
|
@ -92,14 +92,14 @@ describe(`/oauth`, () => {
|
|||||||
it('should return a redirect uri', async () => {
|
it('should return a redirect uri', async () => {
|
||||||
const { status, body } = await request(app)
|
const { status, body } = await request(app)
|
||||||
.post('/oauth/authorize')
|
.post('/oauth/authorize')
|
||||||
.send({ redirectUri: 'http://127.0.0.1:2283/auth/login' });
|
.send({ redirectUri: 'http://127.0.0.1:2285/auth/login' });
|
||||||
expect(status).toBe(201);
|
expect(status).toBe(201);
|
||||||
expect(body).toEqual({ url: expect.stringContaining(`${authServer.internal}/auth?`) });
|
expect(body).toEqual({ url: expect.stringContaining(`${authServer.internal}/auth?`) });
|
||||||
|
|
||||||
const params = new URL(body.url).searchParams;
|
const params = new URL(body.url).searchParams;
|
||||||
expect(params.get('client_id')).toBe('client-default');
|
expect(params.get('client_id')).toBe('client-default');
|
||||||
expect(params.get('response_type')).toBe('code');
|
expect(params.get('response_type')).toBe('code');
|
||||||
expect(params.get('redirect_uri')).toBe('http://127.0.0.1:2283/auth/login');
|
expect(params.get('redirect_uri')).toBe('http://127.0.0.1:2285/auth/login');
|
||||||
expect(params.get('state')).toBeDefined();
|
expect(params.get('state')).toBeDefined();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -102,6 +102,7 @@ describe('/server-info', () => {
|
|||||||
configFile: false,
|
configFile: false,
|
||||||
duplicateDetection: false,
|
duplicateDetection: false,
|
||||||
facialRecognition: false,
|
facialRecognition: false,
|
||||||
|
importFaces: false,
|
||||||
map: true,
|
map: true,
|
||||||
reverseGeocoding: true,
|
reverseGeocoding: true,
|
||||||
oauth: false,
|
oauth: false,
|
||||||
|
@ -110,6 +110,7 @@ describe('/server', () => {
|
|||||||
facialRecognition: false,
|
facialRecognition: false,
|
||||||
map: true,
|
map: true,
|
||||||
reverseGeocoding: true,
|
reverseGeocoding: true,
|
||||||
|
importFaces: false,
|
||||||
oauth: false,
|
oauth: false,
|
||||||
oauthAutoLaunch: false,
|
oauthAutoLaunch: false,
|
||||||
passwordLogin: true,
|
passwordLogin: true,
|
||||||
|
603
e2e/src/api/specs/tag.e2e-spec.ts
Normal file
603
e2e/src/api/specs/tag.e2e-spec.ts
Normal file
@ -0,0 +1,603 @@
|
|||||||
|
import {
|
||||||
|
AssetMediaResponseDto,
|
||||||
|
LoginResponseDto,
|
||||||
|
Permission,
|
||||||
|
TagCreateDto,
|
||||||
|
TagResponseDto,
|
||||||
|
createTag,
|
||||||
|
getAllTags,
|
||||||
|
tagAssets,
|
||||||
|
upsertTags,
|
||||||
|
} from '@immich/sdk';
|
||||||
|
import { createUserDto, uuidDto } from 'src/fixtures';
|
||||||
|
import { errorDto } from 'src/responses';
|
||||||
|
import { app, asBearerAuth, utils } from 'src/utils';
|
||||||
|
import request from 'supertest';
|
||||||
|
import { beforeAll, beforeEach, describe, expect, it } from 'vitest';
|
||||||
|
|
||||||
|
const create = (accessToken: string, dto: TagCreateDto) =>
|
||||||
|
createTag({ tagCreateDto: dto }, { headers: asBearerAuth(accessToken) });
|
||||||
|
|
||||||
|
const upsert = (accessToken: string, tags: string[]) =>
|
||||||
|
upsertTags({ tagUpsertDto: { tags } }, { headers: asBearerAuth(accessToken) });
|
||||||
|
|
||||||
|
describe('/tags', () => {
|
||||||
|
let admin: LoginResponseDto;
|
||||||
|
let user: LoginResponseDto;
|
||||||
|
let userAsset: AssetMediaResponseDto;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
await utils.resetDatabase();
|
||||||
|
|
||||||
|
admin = await utils.adminSetup();
|
||||||
|
user = await utils.userSetup(admin.accessToken, createUserDto.user1);
|
||||||
|
userAsset = await utils.createAsset(user.accessToken);
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
// tagging assets eventually triggers metadata extraction which can impact other tests
|
||||||
|
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||||
|
await utils.resetDatabase(['tags']);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('POST /tags', () => {
|
||||||
|
it('should require authentication', async () => {
|
||||||
|
const { status, body } = await request(app).post('/tags').send({ name: 'TagA' });
|
||||||
|
expect(status).toBe(401);
|
||||||
|
expect(body).toEqual(errorDto.unauthorized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization (api key)', async () => {
|
||||||
|
const { secret } = await utils.createApiKey(user.accessToken, [Permission.AssetRead]);
|
||||||
|
const { status, body } = await request(app).post('/tags').set('x-api-key', secret).send({ name: 'TagA' });
|
||||||
|
expect(status).toBe(403);
|
||||||
|
expect(body).toEqual(errorDto.missingPermission('tag.create'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should work with tag.create', async () => {
|
||||||
|
const { secret } = await utils.createApiKey(user.accessToken, [Permission.TagCreate]);
|
||||||
|
const { status, body } = await request(app).post('/tags').set('x-api-key', secret).send({ name: 'TagA' });
|
||||||
|
expect(body).toEqual({
|
||||||
|
id: expect.any(String),
|
||||||
|
name: 'TagA',
|
||||||
|
value: 'TagA',
|
||||||
|
createdAt: expect.any(String),
|
||||||
|
updatedAt: expect.any(String),
|
||||||
|
});
|
||||||
|
expect(status).toBe(201);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create a tag', async () => {
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.post('/tags')
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
|
.send({ name: 'TagA' });
|
||||||
|
expect(body).toEqual({
|
||||||
|
id: expect.any(String),
|
||||||
|
name: 'TagA',
|
||||||
|
value: 'TagA',
|
||||||
|
createdAt: expect.any(String),
|
||||||
|
updatedAt: expect.any(String),
|
||||||
|
});
|
||||||
|
expect(status).toBe(201);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should allow multiple users to create tags with the same value', async () => {
|
||||||
|
await create(admin.accessToken, { name: 'TagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.post('/tags')
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`)
|
||||||
|
.send({ name: 'TagA' });
|
||||||
|
expect(body).toEqual({
|
||||||
|
id: expect.any(String),
|
||||||
|
name: 'TagA',
|
||||||
|
value: 'TagA',
|
||||||
|
createdAt: expect.any(String),
|
||||||
|
updatedAt: expect.any(String),
|
||||||
|
});
|
||||||
|
expect(status).toBe(201);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create a nested tag', async () => {
|
||||||
|
const parent = await create(admin.accessToken, { name: 'TagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.post('/tags')
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
|
.send({ name: 'TagB', parentId: parent.id });
|
||||||
|
expect(body).toEqual({
|
||||||
|
id: expect.any(String),
|
||||||
|
parentId: parent.id,
|
||||||
|
name: 'TagB',
|
||||||
|
value: 'TagA/TagB',
|
||||||
|
createdAt: expect.any(String),
|
||||||
|
updatedAt: expect.any(String),
|
||||||
|
});
|
||||||
|
expect(status).toBe(201);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('GET /tags', () => {
|
||||||
|
it('should require authentication', async () => {
|
||||||
|
const { status, body } = await request(app).get('/tags');
|
||||||
|
expect(status).toBe(401);
|
||||||
|
expect(body).toEqual(errorDto.unauthorized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization (api key)', async () => {
|
||||||
|
const { secret } = await utils.createApiKey(user.accessToken, [Permission.AssetRead]);
|
||||||
|
const { status, body } = await request(app).get('/tags').set('x-api-key', secret);
|
||||||
|
expect(status).toBe(403);
|
||||||
|
expect(body).toEqual(errorDto.missingPermission('tag.read'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should start off empty', async () => {
|
||||||
|
const { status, body } = await request(app).get('/tags').set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
|
expect(body).toEqual([]);
|
||||||
|
expect(status).toEqual(200);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return a list of tags', async () => {
|
||||||
|
const [tagA, tagB, tagC] = await Promise.all([
|
||||||
|
create(admin.accessToken, { name: 'TagA' }),
|
||||||
|
create(admin.accessToken, { name: 'TagB' }),
|
||||||
|
create(admin.accessToken, { name: 'TagC' }),
|
||||||
|
]);
|
||||||
|
const { status, body } = await request(app).get('/tags').set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
|
expect(body).toHaveLength(3);
|
||||||
|
expect(body).toEqual([tagA, tagB, tagC]);
|
||||||
|
expect(status).toEqual(200);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return a nested tags', async () => {
|
||||||
|
await upsert(admin.accessToken, ['TagA/TagB/TagC', 'TagD']);
|
||||||
|
const { status, body } = await request(app).get('/tags').set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
|
|
||||||
|
expect(body).toHaveLength(4);
|
||||||
|
expect(status).toEqual(200);
|
||||||
|
|
||||||
|
const tags = body as TagResponseDto[];
|
||||||
|
const tagA = tags.find((tag) => tag.value === 'TagA') as TagResponseDto;
|
||||||
|
const tagB = tags.find((tag) => tag.value === 'TagA/TagB') as TagResponseDto;
|
||||||
|
const tagC = tags.find((tag) => tag.value === 'TagA/TagB/TagC') as TagResponseDto;
|
||||||
|
const tagD = tags.find((tag) => tag.value === 'TagD') as TagResponseDto;
|
||||||
|
|
||||||
|
expect(tagA).toEqual(expect.objectContaining({ name: 'TagA', value: 'TagA' }));
|
||||||
|
expect(tagB).toEqual(expect.objectContaining({ name: 'TagB', value: 'TagA/TagB', parentId: tagA.id }));
|
||||||
|
expect(tagC).toEqual(expect.objectContaining({ name: 'TagC', value: 'TagA/TagB/TagC', parentId: tagB.id }));
|
||||||
|
expect(tagD).toEqual(expect.objectContaining({ name: 'TagD', value: 'TagD' }));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('PUT /tags', () => {
|
||||||
|
it('should require authentication', async () => {
|
||||||
|
const { status, body } = await request(app).put(`/tags`).send({ name: 'TagA/TagB' });
|
||||||
|
expect(status).toBe(401);
|
||||||
|
expect(body).toEqual(errorDto.unauthorized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization (api key)', async () => {
|
||||||
|
const { secret } = await utils.createApiKey(user.accessToken, [Permission.AssetRead]);
|
||||||
|
const { status, body } = await request(app).put('/tags').set('x-api-key', secret).send({ name: 'TagA' });
|
||||||
|
expect(status).toBe(403);
|
||||||
|
expect(body).toEqual(errorDto.missingPermission('tag.create'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should upsert tags', async () => {
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags`)
|
||||||
|
.send({ tags: ['TagA/TagB/TagC/TagD'] })
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual([expect.objectContaining({ name: 'TagD', value: 'TagA/TagB/TagC/TagD' })]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should upsert tags in parallel without conflicts', async () => {
|
||||||
|
const [[tag1], [tag2], [tag3], [tag4]] = await Promise.all([
|
||||||
|
upsert(admin.accessToken, ['TagA/TagB/TagC/TagD']),
|
||||||
|
upsert(admin.accessToken, ['TagA/TagB/TagC/TagD']),
|
||||||
|
upsert(admin.accessToken, ['TagA/TagB/TagC/TagD']),
|
||||||
|
upsert(admin.accessToken, ['TagA/TagB/TagC/TagD']),
|
||||||
|
]);
|
||||||
|
|
||||||
|
const { id, parentId, createdAt } = tag1;
|
||||||
|
for (const tag of [tag1, tag2, tag3, tag4]) {
|
||||||
|
expect(tag).toMatchObject({
|
||||||
|
id,
|
||||||
|
parentId,
|
||||||
|
createdAt,
|
||||||
|
name: 'TagD',
|
||||||
|
value: 'TagA/TagB/TagC/TagD',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('PUT /tags/assets', () => {
|
||||||
|
it('should require authentication', async () => {
|
||||||
|
const { status, body } = await request(app).put(`/tags/assets`).send({ tagIds: [], assetIds: [] });
|
||||||
|
expect(status).toBe(401);
|
||||||
|
expect(body).toEqual(errorDto.unauthorized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization (api key)', async () => {
|
||||||
|
const { secret } = await utils.createApiKey(user.accessToken, [Permission.AssetRead]);
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put('/tags/assets')
|
||||||
|
.set('x-api-key', secret)
|
||||||
|
.send({ assetIds: [], tagIds: [] });
|
||||||
|
expect(status).toBe(403);
|
||||||
|
expect(body).toEqual(errorDto.missingPermission('tag.asset'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should skip assets that are not owned by the user', async () => {
|
||||||
|
const [tagA, tagB, tagC, assetA, assetB] = await Promise.all([
|
||||||
|
create(user.accessToken, { name: 'TagA' }),
|
||||||
|
create(user.accessToken, { name: 'TagB' }),
|
||||||
|
create(user.accessToken, { name: 'TagC' }),
|
||||||
|
utils.createAsset(user.accessToken),
|
||||||
|
utils.createAsset(admin.accessToken),
|
||||||
|
]);
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/assets`)
|
||||||
|
.send({ tagIds: [tagA.id, tagB.id, tagC.id], assetIds: [assetA.id, assetB.id] })
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual({ count: 3 });
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should skip tags that are not owned by the user', async () => {
|
||||||
|
const [tagA, tagB, tagC, assetA, assetB] = await Promise.all([
|
||||||
|
create(user.accessToken, { name: 'TagA' }),
|
||||||
|
create(user.accessToken, { name: 'TagB' }),
|
||||||
|
create(admin.accessToken, { name: 'TagC' }),
|
||||||
|
utils.createAsset(user.accessToken),
|
||||||
|
utils.createAsset(user.accessToken),
|
||||||
|
]);
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/assets`)
|
||||||
|
.send({ tagIds: [tagA.id, tagB.id, tagC.id], assetIds: [assetA.id, assetB.id] })
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual({ count: 4 });
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should bulk tag assets', async () => {
|
||||||
|
const [tagA, tagB, tagC, assetA, assetB] = await Promise.all([
|
||||||
|
create(user.accessToken, { name: 'TagA' }),
|
||||||
|
create(user.accessToken, { name: 'TagB' }),
|
||||||
|
create(user.accessToken, { name: 'TagC' }),
|
||||||
|
utils.createAsset(user.accessToken),
|
||||||
|
utils.createAsset(user.accessToken),
|
||||||
|
]);
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/assets`)
|
||||||
|
.send({ tagIds: [tagA.id, tagB.id, tagC.id], assetIds: [assetA.id, assetB.id] })
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual({ count: 6 });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('GET /tags/:id', () => {
|
||||||
|
it('should require authentication', async () => {
|
||||||
|
const { status, body } = await request(app).get(`/tags/${uuidDto.notFound}`);
|
||||||
|
expect(status).toBe(401);
|
||||||
|
expect(body).toEqual(errorDto.unauthorized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization', async () => {
|
||||||
|
const tag = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.get(`/tags/${tag.id}`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
|
expect(status).toBe(400);
|
||||||
|
expect(body).toEqual(errorDto.noPermission);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization (api key)', async () => {
|
||||||
|
const { secret } = await utils.createApiKey(user.accessToken, [Permission.AssetRead]);
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.get(`/tags/${uuidDto.notFound}`)
|
||||||
|
.set('x-api-key', secret)
|
||||||
|
.send({ assetIds: [], tagIds: [] });
|
||||||
|
expect(status).toBe(403);
|
||||||
|
expect(body).toEqual(errorDto.missingPermission('tag.read'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require a valid uuid', async () => {
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.get(`/tags/${uuidDto.invalid}`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
|
expect(status).toBe(400);
|
||||||
|
expect(body).toEqual(errorDto.badRequest(['id must be a UUID']));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should get tag details', async () => {
|
||||||
|
const tag = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.get(`/tags/${tag.id}`)
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual({
|
||||||
|
id: expect.any(String),
|
||||||
|
name: 'TagA',
|
||||||
|
value: 'TagA',
|
||||||
|
createdAt: expect.any(String),
|
||||||
|
updatedAt: expect.any(String),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should get nested tag details', async () => {
|
||||||
|
const tagA = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const tagB = await create(user.accessToken, { name: 'TagB', parentId: tagA.id });
|
||||||
|
const tagC = await create(user.accessToken, { name: 'TagC', parentId: tagB.id });
|
||||||
|
const tagD = await create(user.accessToken, { name: 'TagD', parentId: tagC.id });
|
||||||
|
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.get(`/tags/${tagD.id}`)
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual({
|
||||||
|
id: expect.any(String),
|
||||||
|
parentId: tagC.id,
|
||||||
|
name: 'TagD',
|
||||||
|
value: 'TagA/TagB/TagC/TagD',
|
||||||
|
createdAt: expect.any(String),
|
||||||
|
updatedAt: expect.any(String),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('PUT /tags/:id', () => {
|
||||||
|
it('should require authentication', async () => {
|
||||||
|
const tag = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { status, body } = await request(app).put(`/tags/${tag.id}`).send({ color: '#000000' });
|
||||||
|
expect(status).toBe(401);
|
||||||
|
expect(body).toEqual(errorDto.unauthorized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization', async () => {
|
||||||
|
const tag = await create(admin.accessToken, { name: 'tagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/${tag.id}`)
|
||||||
|
.send({ color: '#000000' })
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||||
|
expect(status).toBe(400);
|
||||||
|
expect(body).toEqual(errorDto.noPermission);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization (api key)', async () => {
|
||||||
|
const tag = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { secret } = await utils.createApiKey(user.accessToken, [Permission.AssetRead]);
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/${tag.id}`)
|
||||||
|
.set('x-api-key', secret)
|
||||||
|
.send({ color: '#000000' });
|
||||||
|
expect(status).toBe(403);
|
||||||
|
expect(body).toEqual(errorDto.missingPermission('tag.update'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should update a tag', async () => {
|
||||||
|
const tag = await create(user.accessToken, { name: 'tagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/${tag.id}`)
|
||||||
|
.send({ color: '#000000' })
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual(expect.objectContaining({ color: `#000000` }));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should update a tag color without a # prefix', async () => {
|
||||||
|
const tag = await create(user.accessToken, { name: 'tagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/${tag.id}`)
|
||||||
|
.send({ color: '000000' })
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual(expect.objectContaining({ color: `#000000` }));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('DELETE /tags/:id', () => {
|
||||||
|
it('should require authentication', async () => {
|
||||||
|
const { status, body } = await request(app).delete(`/tags/${uuidDto.notFound}`);
|
||||||
|
expect(status).toBe(401);
|
||||||
|
expect(body).toEqual(errorDto.unauthorized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization', async () => {
|
||||||
|
const tag = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.delete(`/tags/${tag.id}`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
|
expect(status).toBe(400);
|
||||||
|
expect(body).toEqual(errorDto.noPermission);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization (api key)', async () => {
|
||||||
|
const tag = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { secret } = await utils.createApiKey(user.accessToken, [Permission.AssetRead]);
|
||||||
|
const { status, body } = await request(app).delete(`/tags/${tag.id}`).set('x-api-key', secret);
|
||||||
|
expect(status).toBe(403);
|
||||||
|
expect(body).toEqual(errorDto.missingPermission('tag.delete'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require a valid uuid', async () => {
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.delete(`/tags/${uuidDto.invalid}`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
|
expect(status).toBe(400);
|
||||||
|
expect(body).toEqual(errorDto.badRequest(['id must be a UUID']));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should delete a tag', async () => {
|
||||||
|
const tag = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { status } = await request(app)
|
||||||
|
.delete(`/tags/${tag.id}`)
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||||
|
expect(status).toBe(204);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should delete a nested tag (root)', async () => {
|
||||||
|
const tagA = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
await create(user.accessToken, { name: 'TagB', parentId: tagA.id });
|
||||||
|
const { status } = await request(app)
|
||||||
|
.delete(`/tags/${tagA.id}`)
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||||
|
expect(status).toBe(204);
|
||||||
|
const tags = await getAllTags({ headers: asBearerAuth(user.accessToken) });
|
||||||
|
expect(tags.length).toBe(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should delete a nested tag (leaf)', async () => {
|
||||||
|
const tagA = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const tagB = await create(user.accessToken, { name: 'TagB', parentId: tagA.id });
|
||||||
|
const { status } = await request(app)
|
||||||
|
.delete(`/tags/${tagB.id}`)
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`);
|
||||||
|
expect(status).toBe(204);
|
||||||
|
const tags = await getAllTags({ headers: asBearerAuth(user.accessToken) });
|
||||||
|
expect(tags.length).toBe(1);
|
||||||
|
expect(tags[0]).toEqual(tagA);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('PUT /tags/:id/assets', () => {
|
||||||
|
it('should require authentication', async () => {
|
||||||
|
const tagA = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/${tagA.id}/assets`)
|
||||||
|
.send({ ids: [userAsset.id] });
|
||||||
|
expect(status).toBe(401);
|
||||||
|
expect(body).toEqual(errorDto.unauthorized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization', async () => {
|
||||||
|
const tag = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/${tag.id}/assets`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
|
.send({ ids: [userAsset.id] });
|
||||||
|
expect(status).toBe(400);
|
||||||
|
expect(body).toEqual(errorDto.noPermission);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization (api key)', async () => {
|
||||||
|
const tag = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { secret } = await utils.createApiKey(user.accessToken, [Permission.AssetRead]);
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/${tag.id}/assets`)
|
||||||
|
.set('x-api-key', secret)
|
||||||
|
.send({ ids: [userAsset.id] });
|
||||||
|
expect(status).toBe(403);
|
||||||
|
expect(body).toEqual(errorDto.missingPermission('tag.asset'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be able to tag own asset', async () => {
|
||||||
|
const tagA = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/${tagA.id}/assets`)
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`)
|
||||||
|
.send({ ids: [userAsset.id] });
|
||||||
|
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual([expect.objectContaining({ id: userAsset.id, success: true })]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should not be able to add assets to another user's tag", async () => {
|
||||||
|
const tagA = await create(admin.accessToken, { name: 'TagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/${tagA.id}/assets`)
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`)
|
||||||
|
.send({ ids: [userAsset.id] });
|
||||||
|
|
||||||
|
expect(status).toBe(400);
|
||||||
|
expect(body).toEqual(errorDto.badRequest('Not found or no tag.asset access'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should add duplicate assets only once', async () => {
|
||||||
|
const tagA = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.put(`/tags/${tagA.id}/assets`)
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`)
|
||||||
|
.send({ ids: [userAsset.id, userAsset.id] });
|
||||||
|
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual([
|
||||||
|
expect.objectContaining({ id: userAsset.id, success: true }),
|
||||||
|
expect.objectContaining({ id: userAsset.id, success: false, error: 'duplicate' }),
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('DELETE /tags/:id/assets', () => {
|
||||||
|
it('should require authentication', async () => {
|
||||||
|
const tagA = await create(admin.accessToken, { name: 'TagA' });
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.delete(`/tags/${tagA}/assets`)
|
||||||
|
.send({ ids: [userAsset.id] });
|
||||||
|
|
||||||
|
expect(status).toBe(401);
|
||||||
|
expect(body).toEqual(errorDto.unauthorized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization', async () => {
|
||||||
|
const tagA = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
await tagAssets(
|
||||||
|
{ id: tagA.id, bulkIdsDto: { ids: [userAsset.id] } },
|
||||||
|
{ headers: asBearerAuth(user.accessToken) },
|
||||||
|
);
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.delete(`/tags/${tagA.id}/assets`)
|
||||||
|
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||||
|
.send({ ids: [userAsset.id] });
|
||||||
|
|
||||||
|
expect(status).toBe(400);
|
||||||
|
expect(body).toEqual(errorDto.noPermission);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should require authorization (api key)', async () => {
|
||||||
|
const tag = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
const { secret } = await utils.createApiKey(user.accessToken, [Permission.AssetRead]);
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.delete(`/tags/${tag.id}/assets`)
|
||||||
|
.set('x-api-key', secret)
|
||||||
|
.send({ ids: [userAsset.id] });
|
||||||
|
expect(status).toBe(403);
|
||||||
|
expect(body).toEqual(errorDto.missingPermission('tag.asset'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be able to remove own asset from own tag', async () => {
|
||||||
|
const tagA = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
await tagAssets(
|
||||||
|
{ id: tagA.id, bulkIdsDto: { ids: [userAsset.id] } },
|
||||||
|
{ headers: asBearerAuth(user.accessToken) },
|
||||||
|
);
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.delete(`/tags/${tagA.id}/assets`)
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`)
|
||||||
|
.send({ ids: [userAsset.id] });
|
||||||
|
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual([expect.objectContaining({ id: userAsset.id, success: true })]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should remove duplicate assets only once', async () => {
|
||||||
|
const tagA = await create(user.accessToken, { name: 'TagA' });
|
||||||
|
await tagAssets(
|
||||||
|
{ id: tagA.id, bulkIdsDto: { ids: [userAsset.id] } },
|
||||||
|
{ headers: asBearerAuth(user.accessToken) },
|
||||||
|
);
|
||||||
|
const { status, body } = await request(app)
|
||||||
|
.delete(`/tags/${tagA.id}/assets`)
|
||||||
|
.set('Authorization', `Bearer ${user.accessToken}`)
|
||||||
|
.send({ ids: [userAsset.id, userAsset.id] });
|
||||||
|
|
||||||
|
expect(status).toBe(200);
|
||||||
|
expect(body).toEqual([
|
||||||
|
expect.objectContaining({ id: userAsset.id, success: true }),
|
||||||
|
expect.objectContaining({ id: userAsset.id, success: false, error: 'not_found' }),
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -42,6 +42,23 @@ describe('/trash', () => {
|
|||||||
const after = await getAssetStatistics({ isTrashed: true }, { headers: asBearerAuth(admin.accessToken) });
|
const after = await getAssetStatistics({ isTrashed: true }, { headers: asBearerAuth(admin.accessToken) });
|
||||||
expect(after.total).toBe(0);
|
expect(after.total).toBe(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should empty the trash with archived assets', async () => {
|
||||||
|
const { id: assetId } = await utils.createAsset(admin.accessToken);
|
||||||
|
await utils.archiveAssets(admin.accessToken, [assetId]);
|
||||||
|
await utils.deleteAssets(admin.accessToken, [assetId]);
|
||||||
|
|
||||||
|
const before = await getAssetInfo({ id: assetId }, { headers: asBearerAuth(admin.accessToken) });
|
||||||
|
expect(before).toStrictEqual(expect.objectContaining({ id: assetId, isTrashed: true, isArchived: true }));
|
||||||
|
|
||||||
|
const { status } = await request(app).post('/trash/empty').set('Authorization', `Bearer ${admin.accessToken}`);
|
||||||
|
expect(status).toBe(204);
|
||||||
|
|
||||||
|
await utils.waitForWebsocketEvent({ event: 'assetDelete', id: assetId });
|
||||||
|
|
||||||
|
const after = await getAssetStatistics({ isTrashed: true }, { headers: asBearerAuth(admin.accessToken) });
|
||||||
|
expect(after.total).toBe(0);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('POST /trash/restore', () => {
|
describe('POST /trash/restore', () => {
|
||||||
|
@ -33,7 +33,7 @@ describe(`immich login`, () => {
|
|||||||
const key = await utils.createApiKey(admin.accessToken, [Permission.All]);
|
const key = await utils.createApiKey(admin.accessToken, [Permission.All]);
|
||||||
const { stdout, stderr, exitCode } = await immichCli(['login', app, `${key.secret}`]);
|
const { stdout, stderr, exitCode } = await immichCli(['login', app, `${key.secret}`]);
|
||||||
expect(stdout.split('\n')).toEqual([
|
expect(stdout.split('\n')).toEqual([
|
||||||
'Logging in to http://127.0.0.1:2283/api',
|
'Logging in to http://127.0.0.1:2285/api',
|
||||||
'Logged in as admin@immich.cloud',
|
'Logged in as admin@immich.cloud',
|
||||||
'Wrote auth info to /tmp/immich/auth.yml',
|
'Wrote auth info to /tmp/immich/auth.yml',
|
||||||
]);
|
]);
|
||||||
@ -50,8 +50,8 @@ describe(`immich login`, () => {
|
|||||||
const key = await utils.createApiKey(admin.accessToken, [Permission.All]);
|
const key = await utils.createApiKey(admin.accessToken, [Permission.All]);
|
||||||
const { stdout, stderr, exitCode } = await immichCli(['login', app.replaceAll('/api', ''), `${key.secret}`]);
|
const { stdout, stderr, exitCode } = await immichCli(['login', app.replaceAll('/api', ''), `${key.secret}`]);
|
||||||
expect(stdout.split('\n')).toEqual([
|
expect(stdout.split('\n')).toEqual([
|
||||||
'Logging in to http://127.0.0.1:2283',
|
'Logging in to http://127.0.0.1:2285',
|
||||||
'Discovered API at http://127.0.0.1:2283/api',
|
'Discovered API at http://127.0.0.1:2285/api',
|
||||||
'Logged in as admin@immich.cloud',
|
'Logged in as admin@immich.cloud',
|
||||||
'Wrote auth info to /tmp/immich/auth.yml',
|
'Wrote auth info to /tmp/immich/auth.yml',
|
||||||
]);
|
]);
|
||||||
|
@ -12,7 +12,7 @@ describe(`immich server-info`, () => {
|
|||||||
const { stderr, stdout, exitCode } = await immichCli(['server-info']);
|
const { stderr, stdout, exitCode } = await immichCli(['server-info']);
|
||||||
expect(stdout.split('\n')).toEqual([
|
expect(stdout.split('\n')).toEqual([
|
||||||
expect.stringContaining('Server Info (via admin@immich.cloud'),
|
expect.stringContaining('Server Info (via admin@immich.cloud'),
|
||||||
' Url: http://127.0.0.1:2283/api',
|
' Url: http://127.0.0.1:2285/api',
|
||||||
expect.stringContaining('Version:'),
|
expect.stringContaining('Version:'),
|
||||||
' Formats:',
|
' Formats:',
|
||||||
expect.stringContaining('Images:'),
|
expect.stringContaining('Images:'),
|
||||||
|
@ -86,14 +86,14 @@ const setup = async () => {
|
|||||||
{
|
{
|
||||||
client_id: OAuthClient.DEFAULT,
|
client_id: OAuthClient.DEFAULT,
|
||||||
client_secret: OAuthClient.DEFAULT,
|
client_secret: OAuthClient.DEFAULT,
|
||||||
redirect_uris: ['http://127.0.0.1:2283/auth/login'],
|
redirect_uris: ['http://127.0.0.1:2285/auth/login'],
|
||||||
grant_types: ['authorization_code'],
|
grant_types: ['authorization_code'],
|
||||||
response_types: ['code'],
|
response_types: ['code'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
client_id: OAuthClient.RS256_TOKENS,
|
client_id: OAuthClient.RS256_TOKENS,
|
||||||
client_secret: OAuthClient.RS256_TOKENS,
|
client_secret: OAuthClient.RS256_TOKENS,
|
||||||
redirect_uris: ['http://127.0.0.1:2283/auth/login'],
|
redirect_uris: ['http://127.0.0.1:2285/auth/login'],
|
||||||
grant_types: ['authorization_code'],
|
grant_types: ['authorization_code'],
|
||||||
id_token_signed_response_alg: 'RS256',
|
id_token_signed_response_alg: 'RS256',
|
||||||
jwks: { keys: [await exportJWK(publicKey)] },
|
jwks: { keys: [await exportJWK(publicKey)] },
|
||||||
@ -101,7 +101,7 @@ const setup = async () => {
|
|||||||
{
|
{
|
||||||
client_id: OAuthClient.RS256_PROFILE,
|
client_id: OAuthClient.RS256_PROFILE,
|
||||||
client_secret: OAuthClient.RS256_PROFILE,
|
client_secret: OAuthClient.RS256_PROFILE,
|
||||||
redirect_uris: ['http://127.0.0.1:2283/auth/login'],
|
redirect_uris: ['http://127.0.0.1:2285/auth/login'],
|
||||||
grant_types: ['authorization_code'],
|
grant_types: ['authorization_code'],
|
||||||
userinfo_signed_response_alg: 'RS256',
|
userinfo_signed_response_alg: 'RS256',
|
||||||
jwks: { keys: [await exportJWK(publicKey)] },
|
jwks: { keys: [await exportJWK(publicKey)] },
|
||||||
|
@ -30,6 +30,7 @@ import {
|
|||||||
signUpAdmin,
|
signUpAdmin,
|
||||||
updateAdminOnboarding,
|
updateAdminOnboarding,
|
||||||
updateAlbumUser,
|
updateAlbumUser,
|
||||||
|
updateAssets,
|
||||||
updateConfig,
|
updateConfig,
|
||||||
validate,
|
validate,
|
||||||
} from '@immich/sdk';
|
} from '@immich/sdk';
|
||||||
@ -53,8 +54,8 @@ type WaitOptions = { event: EventType; id?: string; total?: number; timeout?: nu
|
|||||||
type AdminSetupOptions = { onboarding?: boolean };
|
type AdminSetupOptions = { onboarding?: boolean };
|
||||||
type FileData = { bytes?: Buffer; filename: string };
|
type FileData = { bytes?: Buffer; filename: string };
|
||||||
|
|
||||||
const dbUrl = 'postgres://postgres:postgres@127.0.0.1:5433/immich';
|
const dbUrl = 'postgres://postgres:postgres@127.0.0.1:5435/immich';
|
||||||
export const baseUrl = 'http://127.0.0.1:2283';
|
export const baseUrl = 'http://127.0.0.1:2285';
|
||||||
export const shareUrl = `${baseUrl}/share`;
|
export const shareUrl = `${baseUrl}/share`;
|
||||||
export const app = `${baseUrl}/api`;
|
export const app = `${baseUrl}/api`;
|
||||||
// TODO move test assets into e2e/assets
|
// TODO move test assets into e2e/assets
|
||||||
@ -148,6 +149,7 @@ export const utils = {
|
|||||||
'sessions',
|
'sessions',
|
||||||
'users',
|
'users',
|
||||||
'system_metadata',
|
'system_metadata',
|
||||||
|
'tags',
|
||||||
];
|
];
|
||||||
|
|
||||||
const sql: string[] = [];
|
const sql: string[] = [];
|
||||||
@ -388,6 +390,9 @@ export const utils = {
|
|||||||
return searchMetadata({ metadataSearchDto: dto }, { headers: asBearerAuth(accessToken) });
|
return searchMetadata({ metadataSearchDto: dto }, { headers: asBearerAuth(accessToken) });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
archiveAssets: (accessToken: string, ids: string[]) =>
|
||||||
|
updateAssets({ assetBulkUpdateDto: { ids, isArchived: true } }, { headers: asBearerAuth(accessToken) }),
|
||||||
|
|
||||||
deleteAssets: (accessToken: string, ids: string[]) =>
|
deleteAssets: (accessToken: string, ids: string[]) =>
|
||||||
deleteAssets({ assetBulkDeleteDto: { ids } }, { headers: asBearerAuth(accessToken) }),
|
deleteAssets({ assetBulkDeleteDto: { ids } }, { headers: asBearerAuth(accessToken) }),
|
||||||
|
|
||||||
|
25
e2e/src/web/specs/album.e2e-spec.ts
Normal file
25
e2e/src/web/specs/album.e2e-spec.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { LoginResponseDto } from '@immich/sdk';
|
||||||
|
import { test } from '@playwright/test';
|
||||||
|
import { utils } from 'src/utils';
|
||||||
|
|
||||||
|
test.describe('Album', () => {
|
||||||
|
let admin: LoginResponseDto;
|
||||||
|
|
||||||
|
test.beforeAll(async () => {
|
||||||
|
utils.initSdk();
|
||||||
|
await utils.resetDatabase();
|
||||||
|
admin = await utils.adminSetup();
|
||||||
|
});
|
||||||
|
|
||||||
|
test(`doesn't delete album after canceling add assets`, async ({ context, page }) => {
|
||||||
|
await utils.setAuthCookies(context, admin.accessToken);
|
||||||
|
|
||||||
|
await page.goto('/albums');
|
||||||
|
await page.getByRole('button', { name: 'Create album' }).click();
|
||||||
|
await page.getByRole('button', { name: 'Select photos' }).click();
|
||||||
|
await page.getByRole('button', { name: 'Close' }).click();
|
||||||
|
|
||||||
|
await page.reload();
|
||||||
|
await page.getByRole('button', { name: 'Select photos' }).waitFor();
|
||||||
|
});
|
||||||
|
});
|
@ -44,7 +44,7 @@ test.describe('Shared Links', () => {
|
|||||||
test('download from a shared link', async ({ page }) => {
|
test('download from a shared link', async ({ page }) => {
|
||||||
await page.goto(`/share/${sharedLink.key}`);
|
await page.goto(`/share/${sharedLink.key}`);
|
||||||
await page.getByRole('heading', { name: 'Test Album' }).waitFor();
|
await page.getByRole('heading', { name: 'Test Album' }).waitFor();
|
||||||
await page.locator('.group').first().hover();
|
await page.locator(`[data-asset-id="${asset.id}"]`).hover();
|
||||||
await page.waitForSelector('#asset-group-by-date svg');
|
await page.waitForSelector('#asset-group-by-date svg');
|
||||||
await page.getByRole('checkbox').click();
|
await page.getByRole('checkbox').click();
|
||||||
await page.getByRole('button', { name: 'Download' }).click();
|
await page.getByRole('button', { name: 'Download' }).click();
|
||||||
@ -69,4 +69,15 @@ test.describe('Shared Links', () => {
|
|||||||
await page.goto('/share/invalid');
|
await page.goto('/share/invalid');
|
||||||
await page.getByRole('heading', { name: 'Invalid share key' }).waitFor();
|
await page.getByRole('heading', { name: 'Invalid share key' }).waitFor();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('auth on navigation from shared link to timeline', async ({ context, page }) => {
|
||||||
|
await utils.setAuthCookies(context, admin.accessToken);
|
||||||
|
|
||||||
|
await page.goto(`/share/${sharedLink.key}`);
|
||||||
|
await page.getByRole('heading', { name: 'Test Album' }).waitFor();
|
||||||
|
|
||||||
|
await page.locator('a[href="/"]').click();
|
||||||
|
await page.waitForURL('/photos');
|
||||||
|
await page.locator(`[data-asset-id="${asset.id}"]`).waitFor();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -13,13 +13,13 @@ test.describe('Websocket', () => {
|
|||||||
|
|
||||||
test('connects using ipv4', async ({ page, context }) => {
|
test('connects using ipv4', async ({ page, context }) => {
|
||||||
await utils.setAuthCookies(context, admin.accessToken);
|
await utils.setAuthCookies(context, admin.accessToken);
|
||||||
await page.goto('http://127.0.0.1:2283/');
|
await page.goto('http://127.0.0.1:2285/');
|
||||||
await expect(page.locator('#sidebar')).toContainText('Server Online');
|
await expect(page.locator('#sidebar')).toContainText('Server Online');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('connects using ipv6', async ({ page, context }) => {
|
test('connects using ipv6', async ({ page, context }) => {
|
||||||
await utils.setAuthCookies(context, admin.accessToken, '[::1]');
|
await utils.setAuthCookies(context, admin.accessToken, '[::1]');
|
||||||
await page.goto('http://[::1]:2283/');
|
await page.goto('http://[::1]:2285/');
|
||||||
await expect(page.locator('#sidebar')).toContainText('Server Online');
|
await expect(page.locator('#sidebar')).toContainText('Server Online');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 4e9731d3fc270fe25901f72a6b6f57277cdb8a30
|
Subproject commit 3e057d2f58750acdf7ff281a3938e34a86cfef4d
|
@ -3,7 +3,7 @@ import { defineConfig } from 'vitest/config';
|
|||||||
// skip `docker compose up` if `make e2e` was already run
|
// skip `docker compose up` if `make e2e` was already run
|
||||||
const globalSetup: string[] = ['src/setup/auth-server.ts'];
|
const globalSetup: string[] = ['src/setup/auth-server.ts'];
|
||||||
try {
|
try {
|
||||||
await fetch('http://127.0.0.1:2283/api/server-info/ping');
|
await fetch('http://127.0.0.1:2285/api/server-info/ping');
|
||||||
} catch {
|
} catch {
|
||||||
globalSetup.push('src/setup/docker-compose.ts');
|
globalSetup.push('src/setup/docker-compose.ts');
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
ARG DEVICE=cpu
|
ARG DEVICE=cpu
|
||||||
|
|
||||||
FROM python:3.11-bookworm@sha256:add76c758e402c3acf53b8251da50d8ae67989a81ca96ff4331e296773df853d AS builder-cpu
|
FROM python:3.11-bookworm@sha256:20c1819af5af3acba0b2b66074a2615e398ceee6842adf03cd7ad5f8d0ee3daf AS builder-cpu
|
||||||
|
|
||||||
FROM builder-cpu AS builder-openvino
|
FROM builder-cpu AS builder-openvino
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ RUN python3 -m venv /opt/venv
|
|||||||
COPY poetry.lock pyproject.toml ./
|
COPY poetry.lock pyproject.toml ./
|
||||||
RUN poetry install --sync --no-interaction --no-ansi --no-root --with ${DEVICE} --without dev
|
RUN poetry install --sync --no-interaction --no-ansi --no-root --with ${DEVICE} --without dev
|
||||||
|
|
||||||
FROM python:3.11-slim-bookworm@sha256:1c0c54195c7c7b46e61a2f3b906e9b55a8165f20388a0eeb4af4c6f8579988ac AS prod-cpu
|
FROM python:3.11-slim-bookworm@sha256:ed4e985674f478c90ce879e9aa224fbb772c84e39b4aed5155b9e2280f131039 AS prod-cpu
|
||||||
|
|
||||||
FROM prod-cpu AS prod-openvino
|
FROM prod-cpu AS prod-openvino
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM mambaorg/micromamba:bookworm-slim@sha256:e37ec9f3f7dea01ef9958d3d924d46077911f7e29c4faed40cd6b37a9ac239fc AS builder
|
FROM mambaorg/micromamba:bookworm-slim@sha256:29174348bd09352e5f1b1f6756cf1d00021487b8340fae040e91e4f98e954ce5 AS builder
|
||||||
|
|
||||||
ENV TRANSFORMERS_CACHE=/cache \
|
ENV TRANSFORMERS_CACHE=/cache \
|
||||||
PYTHONDONTWRITEBYTECODE=1 \
|
PYTHONDONTWRITEBYTECODE=1 \
|
||||||
|
235
machine-learning/poetry.lock
generated
235
machine-learning/poetry.lock
generated
@ -680,13 +680,13 @@ test = ["pytest (>=6)"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fastapi-slim"
|
name = "fastapi-slim"
|
||||||
version = "0.112.1"
|
version = "0.112.2"
|
||||||
description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
|
description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "fastapi_slim-0.112.1-py3-none-any.whl", hash = "sha256:cc227cf9402d0ba54a24f80eb205c33bcb25d3ea18d53fdac3fd76ea5af8e76d"},
|
{file = "fastapi_slim-0.112.2-py3-none-any.whl", hash = "sha256:c023f74768f187af142c2fe5ff9e4ca3c4c1940bbde7df008cb283532422a23f"},
|
||||||
{file = "fastapi_slim-0.112.1.tar.gz", hash = "sha256:876ebd24e72273986709db2d469b75dc18f04c3ab9140ffd78b29d7785d26687"},
|
{file = "fastapi_slim-0.112.2.tar.gz", hash = "sha256:75b8eb0c6ee05a20270da7a527ac7ad53b83414602f42b68f7027484dab3aedb"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@ -695,8 +695,8 @@ starlette = ">=0.37.2,<0.39.0"
|
|||||||
typing-extensions = ">=4.8.0"
|
typing-extensions = ">=4.8.0"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
all = ["email_validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
|
all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
|
||||||
standard = ["email_validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=2.11.2)", "python-multipart (>=0.0.7)", "uvicorn[standard] (>=0.12.0)"]
|
standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=2.11.2)", "python-multipart (>=0.0.7)", "uvicorn[standard] (>=0.12.0)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "filelock"
|
name = "filelock"
|
||||||
@ -1111,13 +1111,13 @@ test = ["objgraph", "psutil"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gunicorn"
|
name = "gunicorn"
|
||||||
version = "22.0.0"
|
version = "23.0.0"
|
||||||
description = "WSGI HTTP Server for UNIX"
|
description = "WSGI HTTP Server for UNIX"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "gunicorn-22.0.0-py3-none-any.whl", hash = "sha256:350679f91b24062c86e386e198a15438d53a7a8207235a78ba1b53df4c4378d9"},
|
{file = "gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d"},
|
||||||
{file = "gunicorn-22.0.0.tar.gz", hash = "sha256:4a0b436239ff76fb33f11c07a16482c521a7e09c1ce3cc293c2330afe01bec63"},
|
{file = "gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@ -1212,13 +1212,13 @@ test = ["Cython (>=0.29.24,<0.30.0)"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "httpx"
|
name = "httpx"
|
||||||
version = "0.27.0"
|
version = "0.27.2"
|
||||||
description = "The next generation HTTP client."
|
description = "The next generation HTTP client."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"},
|
{file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"},
|
||||||
{file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"},
|
{file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@ -1233,6 +1233,7 @@ brotli = ["brotli", "brotlicffi"]
|
|||||||
cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
|
cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
|
||||||
http2 = ["h2 (>=3,<5)"]
|
http2 = ["h2 (>=3,<5)"]
|
||||||
socks = ["socksio (==1.*)"]
|
socks = ["socksio (==1.*)"]
|
||||||
|
zstd = ["zstandard (>=0.18.0)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "huggingface-hub"
|
name = "huggingface-hub"
|
||||||
@ -1530,13 +1531,13 @@ test = ["pytest (>=7.4)", "pytest-cov (>=4.1)"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "locust"
|
name = "locust"
|
||||||
version = "2.31.3"
|
version = "2.31.5"
|
||||||
description = "Developer-friendly load testing framework"
|
description = "Developer-friendly load testing framework"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.9"
|
python-versions = ">=3.9"
|
||||||
files = [
|
files = [
|
||||||
{file = "locust-2.31.3-py3-none-any.whl", hash = "sha256:03122e007519b371a5a553d578af502826755de83551d79ea8a412ea1c660115"},
|
{file = "locust-2.31.5-py3-none-any.whl", hash = "sha256:2904ff6307d54d3202c9ebd776f9170214f6dfbe4059504dad9e3ffaca03f600"},
|
||||||
{file = "locust-2.31.3.tar.gz", hash = "sha256:25f4603f24afa11ef1ee1f26b1c86a232eb9a1140be30b2a4642c12d7a7af8ae"},
|
{file = "locust-2.31.5.tar.gz", hash = "sha256:14b2fa6f95bf248668e6dc92d100a44f06c5dcb1c26f88a5442bcaaee18faceb"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@ -1794,38 +1795,38 @@ files = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mypy"
|
name = "mypy"
|
||||||
version = "1.11.1"
|
version = "1.11.2"
|
||||||
description = "Optional static typing for Python"
|
description = "Optional static typing for Python"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "mypy-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a32fc80b63de4b5b3e65f4be82b4cfa362a46702672aa6a0f443b4689af7008c"},
|
{file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"},
|
||||||
{file = "mypy-1.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c1952f5ea8a5a959b05ed5f16452fddadbaae48b5d39235ab4c3fc444d5fd411"},
|
{file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"},
|
||||||
{file = "mypy-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1e30dc3bfa4e157e53c1d17a0dad20f89dc433393e7702b813c10e200843b03"},
|
{file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"},
|
||||||
{file = "mypy-1.11.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2c63350af88f43a66d3dfeeeb8d77af34a4f07d760b9eb3a8697f0386c7590b4"},
|
{file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"},
|
||||||
{file = "mypy-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:a831671bad47186603872a3abc19634f3011d7f83b083762c942442d51c58d58"},
|
{file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"},
|
||||||
{file = "mypy-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7b6343d338390bb946d449677726edf60102a1c96079b4f002dedff375953fc5"},
|
{file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"},
|
||||||
{file = "mypy-1.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4fe9f4e5e521b458d8feb52547f4bade7ef8c93238dfb5bbc790d9ff2d770ca"},
|
{file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"},
|
||||||
{file = "mypy-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:886c9dbecc87b9516eff294541bf7f3655722bf22bb898ee06985cd7269898de"},
|
{file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"},
|
||||||
{file = "mypy-1.11.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fca4a60e1dd9fd0193ae0067eaeeb962f2d79e0d9f0f66223a0682f26ffcc809"},
|
{file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"},
|
||||||
{file = "mypy-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:0bd53faf56de9643336aeea1c925012837432b5faf1701ccca7fde70166ccf72"},
|
{file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"},
|
||||||
{file = "mypy-1.11.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f39918a50f74dc5969807dcfaecafa804fa7f90c9d60506835036cc1bc891dc8"},
|
{file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"},
|
||||||
{file = "mypy-1.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bc71d1fb27a428139dd78621953effe0d208aed9857cb08d002280b0422003a"},
|
{file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"},
|
||||||
{file = "mypy-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b868d3bcff720dd7217c383474008ddabaf048fad8d78ed948bb4b624870a417"},
|
{file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"},
|
||||||
{file = "mypy-1.11.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a707ec1527ffcdd1c784d0924bf5cb15cd7f22683b919668a04d2b9c34549d2e"},
|
{file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"},
|
||||||
{file = "mypy-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:64f4a90e3ea07f590c5bcf9029035cf0efeae5ba8be511a8caada1a4893f5525"},
|
{file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"},
|
||||||
{file = "mypy-1.11.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:749fd3213916f1751fff995fccf20c6195cae941dc968f3aaadf9bb4e430e5a2"},
|
{file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"},
|
||||||
{file = "mypy-1.11.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b639dce63a0b19085213ec5fdd8cffd1d81988f47a2dec7100e93564f3e8fb3b"},
|
{file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"},
|
||||||
{file = "mypy-1.11.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c956b49c5d865394d62941b109728c5c596a415e9c5b2be663dd26a1ff07bc0"},
|
{file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"},
|
||||||
{file = "mypy-1.11.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45df906e8b6804ef4b666af29a87ad9f5921aad091c79cc38e12198e220beabd"},
|
{file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"},
|
||||||
{file = "mypy-1.11.1-cp38-cp38-win_amd64.whl", hash = "sha256:d44be7551689d9d47b7abc27c71257adfdb53f03880841a5db15ddb22dc63edb"},
|
{file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"},
|
||||||
{file = "mypy-1.11.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2684d3f693073ab89d76da8e3921883019ea8a3ec20fa5d8ecca6a2db4c54bbe"},
|
{file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"},
|
||||||
{file = "mypy-1.11.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79c07eb282cb457473add5052b63925e5cc97dfab9812ee65a7c7ab5e3cb551c"},
|
{file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"},
|
||||||
{file = "mypy-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11965c2f571ded6239977b14deebd3f4c3abd9a92398712d6da3a772974fad69"},
|
{file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"},
|
||||||
{file = "mypy-1.11.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a2b43895a0f8154df6519706d9bca8280cda52d3d9d1514b2d9c3e26792a0b74"},
|
{file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"},
|
||||||
{file = "mypy-1.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:1a81cf05975fd61aec5ae16501a091cfb9f605dc3e3c878c0da32f250b74760b"},
|
{file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"},
|
||||||
{file = "mypy-1.11.1-py3-none-any.whl", hash = "sha256:0624bdb940255d2dd24e829d99a13cfeb72e4e9031f9492148f410ed30bcab54"},
|
{file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"},
|
||||||
{file = "mypy-1.11.1.tar.gz", hash = "sha256:f404a0b069709f18bbdb702eb3dcfe51910602995de00bd39cea3050b5772d08"},
|
{file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@ -2373,54 +2374,54 @@ files = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pydantic"
|
name = "pydantic"
|
||||||
version = "1.10.17"
|
version = "1.10.18"
|
||||||
description = "Data validation and settings management using python type hints"
|
description = "Data validation and settings management using python type hints"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "pydantic-1.10.17-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fa51175313cc30097660b10eec8ca55ed08bfa07acbfe02f7a42f6c242e9a4b"},
|
{file = "pydantic-1.10.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02"},
|
||||||
{file = "pydantic-1.10.17-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7e8988bb16988890c985bd2093df9dd731bfb9d5e0860db054c23034fab8f7a"},
|
{file = "pydantic-1.10.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80"},
|
||||||
{file = "pydantic-1.10.17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:371dcf1831f87c9e217e2b6a0c66842879a14873114ebb9d0861ab22e3b5bb1e"},
|
{file = "pydantic-1.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62"},
|
||||||
{file = "pydantic-1.10.17-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4866a1579c0c3ca2c40575398a24d805d4db6cb353ee74df75ddeee3c657f9a7"},
|
{file = "pydantic-1.10.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab"},
|
||||||
{file = "pydantic-1.10.17-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:543da3c6914795b37785703ffc74ba4d660418620cc273490d42c53949eeeca6"},
|
{file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0"},
|
||||||
{file = "pydantic-1.10.17-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7623b59876f49e61c2e283551cc3647616d2fbdc0b4d36d3d638aae8547ea681"},
|
{file = "pydantic-1.10.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861"},
|
||||||
{file = "pydantic-1.10.17-cp310-cp310-win_amd64.whl", hash = "sha256:409b2b36d7d7d19cd8310b97a4ce6b1755ef8bd45b9a2ec5ec2b124db0a0d8f3"},
|
{file = "pydantic-1.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70"},
|
||||||
{file = "pydantic-1.10.17-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fa43f362b46741df8f201bf3e7dff3569fa92069bcc7b4a740dea3602e27ab7a"},
|
{file = "pydantic-1.10.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec"},
|
||||||
{file = "pydantic-1.10.17-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a72d2a5ff86a3075ed81ca031eac86923d44bc5d42e719d585a8eb547bf0c9b"},
|
{file = "pydantic-1.10.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5"},
|
||||||
{file = "pydantic-1.10.17-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4ad32aed3bf5eea5ca5decc3d1bbc3d0ec5d4fbcd72a03cdad849458decbc63"},
|
{file = "pydantic-1.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481"},
|
||||||
{file = "pydantic-1.10.17-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb4e741782e236ee7dc1fb11ad94dc56aabaf02d21df0e79e0c21fe07c95741"},
|
{file = "pydantic-1.10.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3"},
|
||||||
{file = "pydantic-1.10.17-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d2f89a719411cb234105735a520b7c077158a81e0fe1cb05a79c01fc5eb59d3c"},
|
{file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588"},
|
||||||
{file = "pydantic-1.10.17-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db3b48d9283d80a314f7a682f7acae8422386de659fffaba454b77a083c3937d"},
|
{file = "pydantic-1.10.18-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f"},
|
||||||
{file = "pydantic-1.10.17-cp311-cp311-win_amd64.whl", hash = "sha256:9c803a5113cfab7bbb912f75faa4fc1e4acff43e452c82560349fff64f852e1b"},
|
{file = "pydantic-1.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33"},
|
||||||
{file = "pydantic-1.10.17-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:820ae12a390c9cbb26bb44913c87fa2ff431a029a785642c1ff11fed0a095fcb"},
|
{file = "pydantic-1.10.18-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2"},
|
||||||
{file = "pydantic-1.10.17-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c1e51d1af306641b7d1574d6d3307eaa10a4991542ca324f0feb134fee259815"},
|
{file = "pydantic-1.10.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048"},
|
||||||
{file = "pydantic-1.10.17-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e53fb834aae96e7b0dadd6e92c66e7dd9cdf08965340ed04c16813102a47fab"},
|
{file = "pydantic-1.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7"},
|
||||||
{file = "pydantic-1.10.17-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e2495309b1266e81d259a570dd199916ff34f7f51f1b549a0d37a6d9b17b4dc"},
|
{file = "pydantic-1.10.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890"},
|
||||||
{file = "pydantic-1.10.17-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:098ad8de840c92ea586bf8efd9e2e90c6339d33ab5c1cfbb85be66e4ecf8213f"},
|
{file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f"},
|
||||||
{file = "pydantic-1.10.17-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:525bbef620dac93c430d5d6bdbc91bdb5521698d434adf4434a7ef6ffd5c4b7f"},
|
{file = "pydantic-1.10.18-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a"},
|
||||||
{file = "pydantic-1.10.17-cp312-cp312-win_amd64.whl", hash = "sha256:6654028d1144df451e1da69a670083c27117d493f16cf83da81e1e50edce72ad"},
|
{file = "pydantic-1.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357"},
|
||||||
{file = "pydantic-1.10.17-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c87cedb4680d1614f1d59d13fea353faf3afd41ba5c906a266f3f2e8c245d655"},
|
{file = "pydantic-1.10.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1"},
|
||||||
{file = "pydantic-1.10.17-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11289fa895bcbc8f18704efa1d8020bb9a86314da435348f59745473eb042e6b"},
|
{file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f"},
|
||||||
{file = "pydantic-1.10.17-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94833612d6fd18b57c359a127cbfd932d9150c1b72fea7c86ab58c2a77edd7c7"},
|
{file = "pydantic-1.10.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c"},
|
||||||
{file = "pydantic-1.10.17-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d4ecb515fa7cb0e46e163ecd9d52f9147ba57bc3633dca0e586cdb7a232db9e3"},
|
{file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc"},
|
||||||
{file = "pydantic-1.10.17-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7017971ffa7fd7808146880aa41b266e06c1e6e12261768a28b8b41ba55c8076"},
|
{file = "pydantic-1.10.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c"},
|
||||||
{file = "pydantic-1.10.17-cp37-cp37m-win_amd64.whl", hash = "sha256:e840e6b2026920fc3f250ea8ebfdedf6ea7a25b77bf04c6576178e681942ae0f"},
|
{file = "pydantic-1.10.18-cp37-cp37m-win_amd64.whl", hash = "sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b"},
|
||||||
{file = "pydantic-1.10.17-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bfbb18b616abc4df70591b8c1ff1b3eabd234ddcddb86b7cac82657ab9017e33"},
|
{file = "pydantic-1.10.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03"},
|
||||||
{file = "pydantic-1.10.17-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ebb249096d873593e014535ab07145498957091aa6ae92759a32d40cb9998e2e"},
|
{file = "pydantic-1.10.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a"},
|
||||||
{file = "pydantic-1.10.17-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c209af63ccd7b22fba94b9024e8b7fd07feffee0001efae50dd99316b27768"},
|
{file = "pydantic-1.10.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b"},
|
||||||
{file = "pydantic-1.10.17-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b40c9e13a0b61583e5599e7950490c700297b4a375b55b2b592774332798b7"},
|
{file = "pydantic-1.10.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682"},
|
||||||
{file = "pydantic-1.10.17-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c31d281c7485223caf6474fc2b7cf21456289dbaa31401844069b77160cab9c7"},
|
{file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe"},
|
||||||
{file = "pydantic-1.10.17-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ae5184e99a060a5c80010a2d53c99aee76a3b0ad683d493e5f0620b5d86eeb75"},
|
{file = "pydantic-1.10.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3"},
|
||||||
{file = "pydantic-1.10.17-cp38-cp38-win_amd64.whl", hash = "sha256:ad1e33dc6b9787a6f0f3fd132859aa75626528b49cc1f9e429cdacb2608ad5f0"},
|
{file = "pydantic-1.10.18-cp38-cp38-win_amd64.whl", hash = "sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620"},
|
||||||
{file = "pydantic-1.10.17-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e17c0ee7192e54a10943f245dc79e36d9fe282418ea05b886e1c666063a7b54"},
|
{file = "pydantic-1.10.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf"},
|
||||||
{file = "pydantic-1.10.17-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cafb9c938f61d1b182dfc7d44a7021326547b7b9cf695db5b68ec7b590214773"},
|
{file = "pydantic-1.10.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9"},
|
||||||
{file = "pydantic-1.10.17-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95ef534e3c22e5abbdbdd6f66b6ea9dac3ca3e34c5c632894f8625d13d084cbe"},
|
{file = "pydantic-1.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d"},
|
||||||
{file = "pydantic-1.10.17-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62d96b8799ae3d782df7ec9615cb59fc32c32e1ed6afa1b231b0595f6516e8ab"},
|
{file = "pydantic-1.10.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485"},
|
||||||
{file = "pydantic-1.10.17-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ab2f976336808fd5d539fdc26eb51f9aafc1f4b638e212ef6b6f05e753c8011d"},
|
{file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f"},
|
||||||
{file = "pydantic-1.10.17-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8ad363330557beac73159acfbeed220d5f1bfcd6b930302a987a375e02f74fd"},
|
{file = "pydantic-1.10.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86"},
|
||||||
{file = "pydantic-1.10.17-cp39-cp39-win_amd64.whl", hash = "sha256:48db882e48575ce4b39659558b2f9f37c25b8d348e37a2b4e32971dd5a7d6227"},
|
{file = "pydantic-1.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518"},
|
||||||
{file = "pydantic-1.10.17-py3-none-any.whl", hash = "sha256:e41b5b973e5c64f674b3b4720286ded184dcc26a691dd55f34391c62c6934688"},
|
{file = "pydantic-1.10.18-py3-none-any.whl", hash = "sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82"},
|
||||||
{file = "pydantic-1.10.17.tar.gz", hash = "sha256:f434160fb14b353caf634149baaf847206406471ba70e64657c1e8330277a991"},
|
{file = "pydantic-1.10.18.tar.gz", hash = "sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@ -2494,17 +2495,17 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pytest-asyncio"
|
name = "pytest-asyncio"
|
||||||
version = "0.23.8"
|
version = "0.24.0"
|
||||||
description = "Pytest support for asyncio"
|
description = "Pytest support for asyncio"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "pytest_asyncio-0.23.8-py3-none-any.whl", hash = "sha256:50265d892689a5faefb84df80819d1ecef566eb3549cf915dfb33569359d1ce2"},
|
{file = "pytest_asyncio-0.24.0-py3-none-any.whl", hash = "sha256:a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b"},
|
||||||
{file = "pytest_asyncio-0.23.8.tar.gz", hash = "sha256:759b10b33a6dc61cce40a8bd5205e302978bbbcc00e279a8b61d9a6a3c82e4d3"},
|
{file = "pytest_asyncio-0.24.0.tar.gz", hash = "sha256:d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
pytest = ">=7.0.0,<9"
|
pytest = ">=8.2,<9"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1.0)"]
|
docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1.0)"]
|
||||||
@ -2512,13 +2513,13 @@ testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pytest-cov"
|
name = "pytest-cov"
|
||||||
version = "4.1.0"
|
version = "5.0.0"
|
||||||
description = "Pytest plugin for measuring coverage."
|
description = "Pytest plugin for measuring coverage."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"},
|
{file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"},
|
||||||
{file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"},
|
{file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@ -2526,7 +2527,7 @@ coverage = {version = ">=5.2.1", extras = ["toml"]}
|
|||||||
pytest = ">=4.6"
|
pytest = ">=4.6"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"]
|
testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pytest-mock"
|
name = "pytest-mock"
|
||||||
@ -2815,13 +2816,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rich"
|
name = "rich"
|
||||||
version = "13.7.1"
|
version = "13.8.0"
|
||||||
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
|
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7.0"
|
python-versions = ">=3.7.0"
|
||||||
files = [
|
files = [
|
||||||
{file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"},
|
{file = "rich-13.8.0-py3-none-any.whl", hash = "sha256:2e85306a063b9492dffc86278197a60cbece75bcb766022f3436f567cae11bdc"},
|
||||||
{file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"},
|
{file = "rich-13.8.0.tar.gz", hash = "sha256:a5ac1f1cd448ade0d59cc3356f7db7a7ccda2c8cbae9c7a90c28ff463d3e91f4"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@ -2833,29 +2834,29 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruff"
|
name = "ruff"
|
||||||
version = "0.6.2"
|
version = "0.6.3"
|
||||||
description = "An extremely fast Python linter and code formatter, written in Rust."
|
description = "An extremely fast Python linter and code formatter, written in Rust."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "ruff-0.6.2-py3-none-linux_armv6l.whl", hash = "sha256:5c8cbc6252deb3ea840ad6a20b0f8583caab0c5ef4f9cca21adc5a92b8f79f3c"},
|
{file = "ruff-0.6.3-py3-none-linux_armv6l.whl", hash = "sha256:97f58fda4e309382ad30ede7f30e2791d70dd29ea17f41970119f55bdb7a45c3"},
|
||||||
{file = "ruff-0.6.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:17002fe241e76544448a8e1e6118abecbe8cd10cf68fde635dad480dba594570"},
|
{file = "ruff-0.6.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3b061e49b5cf3a297b4d1c27ac5587954ccb4ff601160d3d6b2f70b1622194dc"},
|
||||||
{file = "ruff-0.6.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3dbeac76ed13456f8158b8f4fe087bf87882e645c8e8b606dd17b0b66c2c1158"},
|
{file = "ruff-0.6.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:34e2824a13bb8c668c71c1760a6ac7d795ccbd8d38ff4a0d8471fdb15de910b1"},
|
||||||
{file = "ruff-0.6.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:094600ee88cda325988d3f54e3588c46de5c18dae09d683ace278b11f9d4d534"},
|
{file = "ruff-0.6.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bddfbb8d63c460f4b4128b6a506e7052bad4d6f3ff607ebbb41b0aa19c2770d1"},
|
||||||
{file = "ruff-0.6.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:316d418fe258c036ba05fbf7dfc1f7d3d4096db63431546163b472285668132b"},
|
{file = "ruff-0.6.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ced3eeb44df75353e08ab3b6a9e113b5f3f996bea48d4f7c027bc528ba87b672"},
|
||||||
{file = "ruff-0.6.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d72b8b3abf8a2d51b7b9944a41307d2f442558ccb3859bbd87e6ae9be1694a5d"},
|
{file = "ruff-0.6.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47021dff5445d549be954eb275156dfd7c37222acc1e8014311badcb9b4ec8c1"},
|
||||||
{file = "ruff-0.6.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2aed7e243be68487aa8982e91c6e260982d00da3f38955873aecd5a9204b1d66"},
|
{file = "ruff-0.6.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:7d7bd20dc07cebd68cc8bc7b3f5ada6d637f42d947c85264f94b0d1cd9d87384"},
|
||||||
{file = "ruff-0.6.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d371f7fc9cec83497fe7cf5eaf5b76e22a8efce463de5f775a1826197feb9df8"},
|
{file = "ruff-0.6.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:500f166d03fc6d0e61c8e40a3ff853fa8a43d938f5d14c183c612df1b0d6c58a"},
|
||||||
{file = "ruff-0.6.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8f310d63af08f583363dfb844ba8f9417b558199c58a5999215082036d795a1"},
|
{file = "ruff-0.6.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:42844ff678f9b976366b262fa2d1d1a3fe76f6e145bd92c84e27d172e3c34500"},
|
||||||
{file = "ruff-0.6.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7db6880c53c56addb8638fe444818183385ec85eeada1d48fc5abe045301b2f1"},
|
{file = "ruff-0.6.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70452a10eb2d66549de8e75f89ae82462159855e983ddff91bc0bce6511d0470"},
|
||||||
{file = "ruff-0.6.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1175d39faadd9a50718f478d23bfc1d4da5743f1ab56af81a2b6caf0a2394f23"},
|
{file = "ruff-0.6.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:65a533235ed55f767d1fc62193a21cbf9e3329cf26d427b800fdeacfb77d296f"},
|
||||||
{file = "ruff-0.6.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5b939f9c86d51635fe486585389f54582f0d65b8238e08c327c1534844b3bb9a"},
|
{file = "ruff-0.6.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d2e2c23cef30dc3cbe9cc5d04f2899e7f5e478c40d2e0a633513ad081f7361b5"},
|
||||||
{file = "ruff-0.6.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d0d62ca91219f906caf9b187dea50d17353f15ec9bb15aae4a606cd697b49b4c"},
|
{file = "ruff-0.6.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d8a136aa7d228975a6aee3dd8bea9b28e2b43e9444aa678fb62aeb1956ff2351"},
|
||||||
{file = "ruff-0.6.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7438a7288f9d67ed3c8ce4d059e67f7ed65e9fe3aa2ab6f5b4b3610e57e3cb56"},
|
{file = "ruff-0.6.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f92fe93bc72e262b7b3f2bba9879897e2d58a989b4714ba6a5a7273e842ad2f8"},
|
||||||
{file = "ruff-0.6.2-py3-none-win32.whl", hash = "sha256:279d5f7d86696df5f9549b56b9b6a7f6c72961b619022b5b7999b15db392a4da"},
|
{file = "ruff-0.6.3-py3-none-win32.whl", hash = "sha256:7a62d3b5b0d7f9143d94893f8ba43aa5a5c51a0ffc4a401aa97a81ed76930521"},
|
||||||
{file = "ruff-0.6.2-py3-none-win_amd64.whl", hash = "sha256:d9f3469c7dd43cd22eb1c3fc16926fb8258d50cb1b216658a07be95dd117b0f2"},
|
{file = "ruff-0.6.3-py3-none-win_amd64.whl", hash = "sha256:746af39356fee2b89aada06c7376e1aa274a23493d7016059c3a72e3b296befb"},
|
||||||
{file = "ruff-0.6.2-py3-none-win_arm64.whl", hash = "sha256:f28fcd2cd0e02bdf739297516d5643a945cc7caf09bd9bcb4d932540a5ea4fa9"},
|
{file = "ruff-0.6.3-py3-none-win_arm64.whl", hash = "sha256:14a9528a8b70ccc7a847637c29e56fd1f9183a9db743bbc5b8e0c4ad60592a82"},
|
||||||
{file = "ruff-0.6.2.tar.gz", hash = "sha256:239ee6beb9e91feb8e0ec384204a763f36cb53fb895a1a364618c6abb076b3be"},
|
{file = "ruff-0.6.3.tar.gz", hash = "sha256:183b99e9edd1ef63be34a3b51fee0a9f4ab95add123dbf89a71f7b1f0c991983"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "machine-learning"
|
name = "machine-learning"
|
||||||
version = "1.112.1"
|
version = "1.114.0"
|
||||||
description = ""
|
description = ""
|
||||||
authors = ["Hau Tran <alex.tran1502@gmail.com>"]
|
authors = ["Hau Tran <alex.tran1502@gmail.com>"]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
@ -13,6 +13,7 @@ fi
|
|||||||
: "${IMMICH_HOST:=[::]}"
|
: "${IMMICH_HOST:=[::]}"
|
||||||
: "${IMMICH_PORT:=3003}"
|
: "${IMMICH_PORT:=3003}"
|
||||||
: "${MACHINE_LEARNING_WORKERS:=1}"
|
: "${MACHINE_LEARNING_WORKERS:=1}"
|
||||||
|
: "${MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S:=2}"
|
||||||
|
|
||||||
gunicorn app.main:app \
|
gunicorn app.main:app \
|
||||||
-k app.config.CustomUvicornWorker \
|
-k app.config.CustomUvicornWorker \
|
||||||
@ -20,4 +21,5 @@ gunicorn app.main:app \
|
|||||||
-w "$MACHINE_LEARNING_WORKERS" \
|
-w "$MACHINE_LEARNING_WORKERS" \
|
||||||
-t "$MACHINE_LEARNING_WORKER_TIMEOUT" \
|
-t "$MACHINE_LEARNING_WORKER_TIMEOUT" \
|
||||||
--log-config-json log_conf.json \
|
--log-config-json log_conf.json \
|
||||||
|
--keep-alive "$MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S" \
|
||||||
--graceful-timeout 0
|
--graceful-timeout 0
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
<application android:label="Immich" android:name=".ImmichApp" android:usesCleartextTraffic="true"
|
<application android:label="Immich" android:name=".ImmichApp" android:usesCleartextTraffic="true"
|
||||||
android:icon="@mipmap/ic_launcher" android:requestLegacyExternalStorage="true"
|
android:icon="@mipmap/ic_launcher" android:requestLegacyExternalStorage="true"
|
||||||
android:largeHeap="true" android:enableOnBackInvokedCallback="true">
|
android:largeHeap="true" android:enableOnBackInvokedCallback="false">
|
||||||
|
|
||||||
<service
|
<service
|
||||||
android:name="androidx.work.impl.foreground.SystemForegroundService"
|
android:name="androidx.work.impl.foreground.SystemForegroundService"
|
||||||
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="io.flutter.embedding.android.EnableImpeller"
|
android:name="io.flutter.embedding.android.EnableImpeller"
|
||||||
android:value="true" />
|
android:value="false" />
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="com.google.firebase.messaging.default_notification_icon"
|
android:name="com.google.firebase.messaging.default_notification_icon"
|
||||||
@ -69,7 +69,7 @@
|
|||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="android.intent.category.BROWSABLE" />
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
<data android:scheme="app.immich" />
|
<data android:scheme="app.immich" android:pathPrefix="/oauth-callback" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<!-- Don't delete the meta-data below.
|
<!-- Don't delete the meta-data below.
|
||||||
@ -94,4 +94,4 @@
|
|||||||
<data android:scheme="geo" />
|
<data android:scheme="geo" />
|
||||||
</intent>
|
</intent>
|
||||||
</queries>
|
</queries>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
@ -118,7 +118,9 @@ class BackupWorker(ctx: Context, params: WorkerParameters) : ListenableWorker(ct
|
|||||||
// called when the system has to stop this worker because constraints are
|
// called when the system has to stop this worker because constraints are
|
||||||
// no longer met or the system needs resources for more important tasks
|
// no longer met or the system needs resources for more important tasks
|
||||||
Handler(Looper.getMainLooper()).postAtFrontOfQueue {
|
Handler(Looper.getMainLooper()).postAtFrontOfQueue {
|
||||||
backgroundChannel.invokeMethod("systemStop", null)
|
if (::backgroundChannel.isInitialized) {
|
||||||
|
backgroundChannel.invokeMethod("systemStop", null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
waitOnSetForegroundAsync()
|
waitOnSetForegroundAsync()
|
||||||
// cannot await/get(block) on resolvableFuture as its already cancelled (would throw CancellationException)
|
// cannot await/get(block) on resolvableFuture as its already cancelled (would throw CancellationException)
|
||||||
|
@ -35,8 +35,8 @@ platform :android do
|
|||||||
task: 'bundle',
|
task: 'bundle',
|
||||||
build_type: 'Release',
|
build_type: 'Release',
|
||||||
properties: {
|
properties: {
|
||||||
"android.injected.version.code" => 154,
|
"android.injected.version.code" => 158,
|
||||||
"android.injected.version.name" => "1.112.1",
|
"android.injected.version.name" => "1.114.0",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')
|
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "يمسح",
|
"control_bottom_app_bar_delete": "يمسح",
|
||||||
"control_bottom_app_bar_delete_from_immich": " حذف منال تطبيق",
|
"control_bottom_app_bar_delete_from_immich": " حذف منال تطبيق",
|
||||||
"control_bottom_app_bar_delete_from_local": "حذف من الجهاز",
|
"control_bottom_app_bar_delete_from_local": "حذف من الجهاز",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "تحديد الوجهة",
|
"control_bottom_app_bar_edit_location": "تحديد الوجهة",
|
||||||
"control_bottom_app_bar_edit_time": "تحرير التاريخ والوقت",
|
"control_bottom_app_bar_edit_time": "تحرير التاريخ والوقت",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "يشارك",
|
"create_shared_album_page_share": "يشارك",
|
||||||
"create_shared_album_page_share_add_assets": "إضافة الأصول",
|
"create_shared_album_page_share_add_assets": "إضافة الأصول",
|
||||||
"create_shared_album_page_share_select_photos": "حدد الصور",
|
"create_shared_album_page_share_select_photos": "حدد الصور",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "أماكن",
|
"curated_location_page_title": "أماكن",
|
||||||
"curated_object_page_title": "أشياء",
|
"curated_object_page_title": "أشياء",
|
||||||
"daily_title_text_date": "E ، MMM DD",
|
"daily_title_text_date": "E ، MMM DD",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "حذف الرابط المشترك",
|
"delete_shared_link_dialog_title": "حذف الرابط المشترك",
|
||||||
"description_input_hint_text": "اضف وصفا...",
|
"description_input_hint_text": "اضف وصفا...",
|
||||||
"description_input_submit_error": "خطأ تحديث الوصف ، تحقق من السجل لمزيد من التفاصيل",
|
"description_input_submit_error": "خطأ تحديث الوصف ، تحقق من السجل لمزيد من التفاصيل",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "التاريخ و الوقت",
|
"edit_date_time_dialog_date_time": "التاريخ و الوقت",
|
||||||
"edit_date_time_dialog_timezone": "وحدة زمنية",
|
"edit_date_time_dialog_timezone": "وحدة زمنية",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "موقع",
|
"edit_location_dialog_title": "موقع",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "اضف وصفا...",
|
"exif_bottom_sheet_description": "اضف وصفا...",
|
||||||
"exif_bottom_sheet_details": "تفاصيل",
|
"exif_bottom_sheet_details": "تفاصيل",
|
||||||
"exif_bottom_sheet_location": "موقع",
|
"exif_bottom_sheet_location": "موقع",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "إذا كانت هذه هي المرة الأولى التي تستخدم فيها التطبيق، فيرجى التأكد من اختيار ألبوم (ألبومات) احتياطية حتى يتمكن المخطط الزمني من ملء الصور ومقاطع الفيديو في الألبوم (الألبومات).",
|
"home_page_first_time_notice": "إذا كانت هذه هي المرة الأولى التي تستخدم فيها التطبيق، فيرجى التأكد من اختيار ألبوم (ألبومات) احتياطية حتى يتمكن المخطط الزمني من ملء الصور ومقاطع الفيديو في الألبوم (الألبومات).",
|
||||||
"home_page_share_err_local": "لا يمكن مشاركة الأصول المحلية عبر الرابط ، سوف يتخطى",
|
"home_page_share_err_local": "لا يمكن مشاركة الأصول المحلية عبر الرابط ، سوف يتخطى",
|
||||||
"home_page_upload_err_limit": "لا يمكن إلا تحميل 30 أحد الأصول في وقت واحد ، سوف يتخطى",
|
"home_page_upload_err_limit": "لا يمكن إلا تحميل 30 أحد الأصول في وقت واحد ، سوف يتخطى",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "خطا في التحميل",
|
"image_viewer_page_state_provider_download_error": "خطا في التحميل",
|
||||||
"image_viewer_page_state_provider_download_started": "بدأ التنزيل",
|
"image_viewer_page_state_provider_download_started": "بدأ التنزيل",
|
||||||
"image_viewer_page_state_provider_download_success": "تم التنزيل بنجاح",
|
"image_viewer_page_state_provider_download_success": "تم التنزيل بنجاح",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "خروج",
|
"profile_drawer_sign_out": "خروج",
|
||||||
"profile_drawer_trash": "نفايات",
|
"profile_drawer_trash": "نفايات",
|
||||||
"recently_added_page_title": "أضيف مؤخرا",
|
"recently_added_page_title": "أضيف مؤخرا",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "حدث خطأ",
|
"scaffold_body_error_occurred": "حدث خطأ",
|
||||||
"search_bar_hint": "ابحث عن صورك",
|
"search_bar_hint": "ابحث عن صورك",
|
||||||
"search_filter_apply": "اختار الفلتر ",
|
"search_filter_apply": "اختار الفلتر ",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "ألبوم مشترك جديد",
|
"sharing_silver_appbar_create_shared_album": "ألبوم مشترك جديد",
|
||||||
"sharing_silver_appbar_shared_links": "روابط مشتركة",
|
"sharing_silver_appbar_shared_links": "روابط مشتركة",
|
||||||
"sharing_silver_appbar_share_partner": "شارك مع الشريك",
|
"sharing_silver_appbar_share_partner": "شارك مع الشريك",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "مكتبة",
|
"tab_controller_nav_library": "مكتبة",
|
||||||
"tab_controller_nav_photos": "الصور",
|
"tab_controller_nav_photos": "الصور",
|
||||||
"tab_controller_nav_search": "يبحث",
|
"tab_controller_nav_search": "يبحث",
|
||||||
|
@ -54,16 +54,16 @@
|
|||||||
"asset_list_layout_sub_title": "Rozložení",
|
"asset_list_layout_sub_title": "Rozložení",
|
||||||
"asset_list_settings_subtitle": "Nastavení rozložení mřížky fotografií",
|
"asset_list_settings_subtitle": "Nastavení rozložení mřížky fotografií",
|
||||||
"asset_list_settings_title": "Fotografická mřížka",
|
"asset_list_settings_title": "Fotografická mřížka",
|
||||||
"asset_restored_successfully": "Asset restored successfully",
|
"asset_restored_successfully": "Položka úspěšně obnovena",
|
||||||
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
"assets_deleted_permanently": "{} položek trvale odstraněno",
|
||||||
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
"assets_deleted_permanently_from_server": "{} položek trvale odstraněno z Immich serveru",
|
||||||
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
"assets_removed_permanently_from_device": "{} položek trvale odstraněno z vašeho zařízení",
|
||||||
"assets_restored_successfully": "{} asset(s) restored successfully",
|
"assets_restored_successfully": "{} položek úspěšně obnoveno",
|
||||||
"assets_trashed": "{} asset(s) trashed",
|
"assets_trashed": "{} položek vyhozeno do koše",
|
||||||
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
"assets_trashed_from_server": "{} položek vyhozeno do koše na Immich serveru",
|
||||||
"asset_viewer_settings_title": "Prohlížeč",
|
"asset_viewer_settings_title": "Prohlížeč",
|
||||||
"backup_album_selection_page_albums_device": "Alba v zařízení ({})",
|
"backup_album_selection_page_albums_device": "Alba v zařízení ({})",
|
||||||
"backup_album_selection_page_albums_tap": "Klepnutím na položku ji zahrnete, dvojím klepnutím ji vyloučíte",
|
"backup_album_selection_page_albums_tap": "Klepnutím na položku ji zahrnete, opětovným klepnutím ji vyloučíte",
|
||||||
"backup_album_selection_page_assets_scatter": "Položky mohou být roztroušeny ve více albech. To umožňuje zahrnout nebo vyloučit alba během procesu zálohování.",
|
"backup_album_selection_page_assets_scatter": "Položky mohou být roztroušeny ve více albech. To umožňuje zahrnout nebo vyloučit alba během procesu zálohování.",
|
||||||
"backup_album_selection_page_select_albums": "Vybraná alba",
|
"backup_album_selection_page_select_albums": "Vybraná alba",
|
||||||
"backup_album_selection_page_selection_info": "Informace o výběru",
|
"backup_album_selection_page_selection_info": "Informace o výběru",
|
||||||
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Smazat",
|
"control_bottom_app_bar_delete": "Smazat",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Smazat ze serveru Immich",
|
"control_bottom_app_bar_delete_from_immich": "Smazat ze serveru Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Smazat ze zařízení",
|
"control_bottom_app_bar_delete_from_local": "Smazat ze zařízení",
|
||||||
|
"control_bottom_app_bar_download": "Stáhnout",
|
||||||
"control_bottom_app_bar_edit": "Upravit",
|
"control_bottom_app_bar_edit": "Upravit",
|
||||||
"control_bottom_app_bar_edit_location": "Upravit polohu",
|
"control_bottom_app_bar_edit_location": "Upravit polohu",
|
||||||
"control_bottom_app_bar_edit_time": "Upravit datum a čas",
|
"control_bottom_app_bar_edit_time": "Upravit datum a čas",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Sdílet",
|
"create_shared_album_page_share": "Sdílet",
|
||||||
"create_shared_album_page_share_add_assets": "PŘIDAT POLOŽKY",
|
"create_shared_album_page_share_add_assets": "PŘIDAT POLOŽKY",
|
||||||
"create_shared_album_page_share_select_photos": "Vybrat fotografie",
|
"create_shared_album_page_share_select_photos": "Vybrat fotografie",
|
||||||
|
"crop": "Oříznout",
|
||||||
"curated_location_page_title": "Místa",
|
"curated_location_page_title": "Místa",
|
||||||
"curated_object_page_title": "Věci",
|
"curated_object_page_title": "Věci",
|
||||||
"daily_title_text_date": "EEEE, d. MMMM",
|
"daily_title_text_date": "EEEE, d. MMMM",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Odstranit sdílený odkaz",
|
"delete_shared_link_dialog_title": "Odstranit sdílený odkaz",
|
||||||
"description_input_hint_text": "Přidat popis...",
|
"description_input_hint_text": "Přidat popis...",
|
||||||
"description_input_submit_error": "Chyba aktualizace popisu, další podrobnosti najdete v logu",
|
"description_input_submit_error": "Chyba aktualizace popisu, další podrobnosti najdete v logu",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Datum a čas",
|
"edit_date_time_dialog_date_time": "Datum a čas",
|
||||||
"edit_date_time_dialog_timezone": "Časové pásmo",
|
"edit_date_time_dialog_timezone": "Časové pásmo",
|
||||||
|
"edit_image_title": "Upravit",
|
||||||
"edit_location_dialog_title": "Poloha",
|
"edit_location_dialog_title": "Poloha",
|
||||||
|
"error_saving_image": "Chyba: {}",
|
||||||
"exif_bottom_sheet_description": "Přidat popis...",
|
"exif_bottom_sheet_description": "Přidat popis...",
|
||||||
"exif_bottom_sheet_details": "PODROBNOSTI",
|
"exif_bottom_sheet_details": "PODROBNOSTI",
|
||||||
"exif_bottom_sheet_location": "POLOHA",
|
"exif_bottom_sheet_location": "POLOHA",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Pokud aplikaci používáte poprvé, nezapomeňte si vybrat zálohovaná alba, aby se na časové ose mohly nacházet fotografie a videa z vybraných alb.",
|
"home_page_first_time_notice": "Pokud aplikaci používáte poprvé, nezapomeňte si vybrat zálohovaná alba, aby se na časové ose mohly nacházet fotografie a videa z vybraných alb.",
|
||||||
"home_page_share_err_local": "Nelze sdílet místní položky prostřednictvím odkazu, přeskakuji",
|
"home_page_share_err_local": "Nelze sdílet místní položky prostřednictvím odkazu, přeskakuji",
|
||||||
"home_page_upload_err_limit": "Lze nahrát nejvýše 30 položek najednou, přeskakuji",
|
"home_page_upload_err_limit": "Lze nahrát nejvýše 30 položek najednou, přeskakuji",
|
||||||
|
"image_saved_successfully": "Obrázek uložen",
|
||||||
"image_viewer_page_state_provider_download_error": "Chyba stahování",
|
"image_viewer_page_state_provider_download_error": "Chyba stahování",
|
||||||
"image_viewer_page_state_provider_download_started": "Stahování zahájeno",
|
"image_viewer_page_state_provider_download_started": "Stahování zahájeno",
|
||||||
"image_viewer_page_state_provider_download_success": "Stahování bylo úspěšné",
|
"image_viewer_page_state_provider_download_success": "Stahování bylo úspěšné",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Odhlásit se",
|
"profile_drawer_sign_out": "Odhlásit se",
|
||||||
"profile_drawer_trash": "Vyhodit",
|
"profile_drawer_trash": "Vyhodit",
|
||||||
"recently_added_page_title": "Nedávno přidané",
|
"recently_added_page_title": "Nedávno přidané",
|
||||||
|
"save_to_gallery": "Uložit do galerie",
|
||||||
"scaffold_body_error_occurred": "Došlo k chybě",
|
"scaffold_body_error_occurred": "Došlo k chybě",
|
||||||
"search_bar_hint": "Prohledejte své fotky",
|
"search_bar_hint": "Prohledejte své fotky",
|
||||||
"search_filter_apply": "Použít filtr",
|
"search_filter_apply": "Použít filtr",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Vytvořit sdílené album",
|
"sharing_silver_appbar_create_shared_album": "Vytvořit sdílené album",
|
||||||
"sharing_silver_appbar_shared_links": "Sdílené odkazy",
|
"sharing_silver_appbar_shared_links": "Sdílené odkazy",
|
||||||
"sharing_silver_appbar_share_partner": "Sdílet s partnerem",
|
"sharing_silver_appbar_share_partner": "Sdílet s partnerem",
|
||||||
|
"sync": "Synchronizace",
|
||||||
|
"sync_albums": "Synchronizovat alba",
|
||||||
|
"sync_albums_manual_subtitle": "Synchronizovat všechna nahraná videa a fotografie do vybraných záložních alb",
|
||||||
|
"sync_upload_album_setting_subtitle": "Vytvořit a nahrát fotografie a videa do vybraných alb na Immich",
|
||||||
"tab_controller_nav_library": "Knihovna",
|
"tab_controller_nav_library": "Knihovna",
|
||||||
"tab_controller_nav_photos": "Fotografie",
|
"tab_controller_nav_photos": "Fotografie",
|
||||||
"tab_controller_nav_search": "Vyhledávání",
|
"tab_controller_nav_search": "Vyhledávání",
|
||||||
@ -549,7 +563,7 @@
|
|||||||
"theme_setting_three_stage_loading_subtitle": "Třístupňové načítání může zvýšit výkonnost načítání, ale vede k výrazně vyššímu zatížení sítě.",
|
"theme_setting_three_stage_loading_subtitle": "Třístupňové načítání může zvýšit výkonnost načítání, ale vede k výrazně vyššímu zatížení sítě.",
|
||||||
"theme_setting_three_stage_loading_title": "Povolení třístupňového načítání",
|
"theme_setting_three_stage_loading_title": "Povolení třístupňového načítání",
|
||||||
"translated_text_options": "Možnosti",
|
"translated_text_options": "Možnosti",
|
||||||
"trash_emptied": "Emptied trash",
|
"trash_emptied": "Koš vyprázdněn",
|
||||||
"trash_page_delete": "Smazat",
|
"trash_page_delete": "Smazat",
|
||||||
"trash_page_delete_all": "Smazat všechny",
|
"trash_page_delete_all": "Smazat všechny",
|
||||||
"trash_page_empty_trash_btn": "Vysypat koš",
|
"trash_page_empty_trash_btn": "Vysypat koš",
|
||||||
|
@ -54,13 +54,13 @@
|
|||||||
"asset_list_layout_sub_title": "Layout",
|
"asset_list_layout_sub_title": "Layout",
|
||||||
"asset_list_settings_subtitle": "Indstillinger for billedgitterlayout",
|
"asset_list_settings_subtitle": "Indstillinger for billedgitterlayout",
|
||||||
"asset_list_settings_title": "Billedgitter",
|
"asset_list_settings_title": "Billedgitter",
|
||||||
"asset_restored_successfully": "Asset restored successfully",
|
"asset_restored_successfully": "Elementet blev gendannet succesfuldt",
|
||||||
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
"assets_deleted_permanently": "{} element(er) blev fjernet permanent",
|
||||||
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
"assets_deleted_permanently_from_server": "{} element(er) blev fjernet permanent fra serveren",
|
||||||
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
"assets_removed_permanently_from_device": "{} element(er) blev fjernet permanent fra din enhed",
|
||||||
"assets_restored_successfully": "{} asset(s) restored successfully",
|
"assets_restored_successfully": "{} element(er) blev gendannet succesfuldt",
|
||||||
"assets_trashed": "{} asset(s) trashed",
|
"assets_trashed": "{} element(er) blev smidt i papirkurven",
|
||||||
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
"assets_trashed_from_server": "{} element(er) blev smidt i serverens papirkurv",
|
||||||
"asset_viewer_settings_title": "Billedviser",
|
"asset_viewer_settings_title": "Billedviser",
|
||||||
"backup_album_selection_page_albums_device": "Albummer på enhed ({})",
|
"backup_album_selection_page_albums_device": "Albummer på enhed ({})",
|
||||||
"backup_album_selection_page_albums_tap": "Tryk en gang for at inkludere, tryk to gange for at ekskludere",
|
"backup_album_selection_page_albums_tap": "Tryk en gang for at inkludere, tryk to gange for at ekskludere",
|
||||||
@ -173,7 +173,8 @@
|
|||||||
"control_bottom_app_bar_delete": "Slet",
|
"control_bottom_app_bar_delete": "Slet",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Slet fra Immich",
|
"control_bottom_app_bar_delete_from_immich": "Slet fra Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Slet fra enhed",
|
"control_bottom_app_bar_delete_from_local": "Slet fra enhed",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_download": "Hent",
|
||||||
|
"control_bottom_app_bar_edit": "Rediger",
|
||||||
"control_bottom_app_bar_edit_location": "Rediger placering",
|
"control_bottom_app_bar_edit_location": "Rediger placering",
|
||||||
"control_bottom_app_bar_edit_time": "Rediger tid og dato",
|
"control_bottom_app_bar_edit_time": "Rediger tid og dato",
|
||||||
"control_bottom_app_bar_favorite": "Favorit",
|
"control_bottom_app_bar_favorite": "Favorit",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Del",
|
"create_shared_album_page_share": "Del",
|
||||||
"create_shared_album_page_share_add_assets": "TILFØJ ELEMENT",
|
"create_shared_album_page_share_add_assets": "TILFØJ ELEMENT",
|
||||||
"create_shared_album_page_share_select_photos": "Vælg billeder",
|
"create_shared_album_page_share_select_photos": "Vælg billeder",
|
||||||
|
"crop": "Beskær",
|
||||||
"curated_location_page_title": "Steder",
|
"curated_location_page_title": "Steder",
|
||||||
"curated_object_page_title": "Ting",
|
"curated_object_page_title": "Ting",
|
||||||
"daily_title_text_date": "E, dd MMM",
|
"daily_title_text_date": "E, dd MMM",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Slet delt link",
|
"delete_shared_link_dialog_title": "Slet delt link",
|
||||||
"description_input_hint_text": "Tilføj en beskrivelse...",
|
"description_input_hint_text": "Tilføj en beskrivelse...",
|
||||||
"description_input_submit_error": "Fejl med at opdatere beskrivelsen. Tjek loggen for flere detaljer",
|
"description_input_submit_error": "Fejl med at opdatere beskrivelsen. Tjek loggen for flere detaljer",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Dato og klokkeslæt",
|
"edit_date_time_dialog_date_time": "Dato og klokkeslæt",
|
||||||
"edit_date_time_dialog_timezone": "Tidszone",
|
"edit_date_time_dialog_timezone": "Tidszone",
|
||||||
|
"edit_image_title": "Rediger",
|
||||||
"edit_location_dialog_title": "Placering",
|
"edit_location_dialog_title": "Placering",
|
||||||
|
"error_saving_image": "Fejl: {}",
|
||||||
"exif_bottom_sheet_description": "Tilføj beskrivelse...",
|
"exif_bottom_sheet_description": "Tilføj beskrivelse...",
|
||||||
"exif_bottom_sheet_details": "DETALJER",
|
"exif_bottom_sheet_details": "DETALJER",
|
||||||
"exif_bottom_sheet_location": "LOKATION",
|
"exif_bottom_sheet_location": "LOKATION",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Hvis det er din første gang i appen, bedes du vælge en sikkerhedskopi af albummer så tidlinjen kan blive fyldt med billeder og videoer fra albummerne.",
|
"home_page_first_time_notice": "Hvis det er din første gang i appen, bedes du vælge en sikkerhedskopi af albummer så tidlinjen kan blive fyldt med billeder og videoer fra albummerne.",
|
||||||
"home_page_share_err_local": "Kan ikke dele lokale elementer via link, springer over",
|
"home_page_share_err_local": "Kan ikke dele lokale elementer via link, springer over",
|
||||||
"home_page_upload_err_limit": "Det er kun muligt at lave sikkerhedskopi af 30 elementer ad gangen. Springer over",
|
"home_page_upload_err_limit": "Det er kun muligt at lave sikkerhedskopi af 30 elementer ad gangen. Springer over",
|
||||||
|
"image_saved_successfully": "Billede gemt",
|
||||||
"image_viewer_page_state_provider_download_error": "Fejl ved download",
|
"image_viewer_page_state_provider_download_error": "Fejl ved download",
|
||||||
"image_viewer_page_state_provider_download_started": "Download startet",
|
"image_viewer_page_state_provider_download_started": "Download startet",
|
||||||
"image_viewer_page_state_provider_download_success": "Download succesfuld",
|
"image_viewer_page_state_provider_download_success": "Download succesfuld",
|
||||||
@ -334,7 +343,7 @@
|
|||||||
"multiselect_grid_edit_date_time_err_read_only": "Kan ikke redigere datoen på kun læselige elementer. Springer over",
|
"multiselect_grid_edit_date_time_err_read_only": "Kan ikke redigere datoen på kun læselige elementer. Springer over",
|
||||||
"multiselect_grid_edit_gps_err_read_only": "Kan ikke redigere lokation af kun læselige elementer. Springer over",
|
"multiselect_grid_edit_gps_err_read_only": "Kan ikke redigere lokation af kun læselige elementer. Springer over",
|
||||||
"no_assets_to_show": "Ingen elementer at vise",
|
"no_assets_to_show": "Ingen elementer at vise",
|
||||||
"no_name": "No name",
|
"no_name": "Intet navn",
|
||||||
"notification_permission_dialog_cancel": "Annuller",
|
"notification_permission_dialog_cancel": "Annuller",
|
||||||
"notification_permission_dialog_content": "Gå til indstillinger for at slå notifikationer til.",
|
"notification_permission_dialog_content": "Gå til indstillinger for at slå notifikationer til.",
|
||||||
"notification_permission_dialog_settings": "Indstillinger",
|
"notification_permission_dialog_settings": "Indstillinger",
|
||||||
@ -375,33 +384,34 @@
|
|||||||
"profile_drawer_sign_out": "Log ud",
|
"profile_drawer_sign_out": "Log ud",
|
||||||
"profile_drawer_trash": "Papirkurv",
|
"profile_drawer_trash": "Papirkurv",
|
||||||
"recently_added_page_title": "Nyligt tilføjet",
|
"recently_added_page_title": "Nyligt tilføjet",
|
||||||
|
"save_to_gallery": "Gem til galleri",
|
||||||
"scaffold_body_error_occurred": "Der opstod en fejl",
|
"scaffold_body_error_occurred": "Der opstod en fejl",
|
||||||
"search_bar_hint": "Søg i dine billeder",
|
"search_bar_hint": "Søg i dine billeder",
|
||||||
"search_filter_apply": "Tilføj filter",
|
"search_filter_apply": "Tilføj filter",
|
||||||
"search_filter_camera": "Camera",
|
"search_filter_camera": "Kamera",
|
||||||
"search_filter_camera_make": "Producent",
|
"search_filter_camera_make": "Producent",
|
||||||
"search_filter_camera_model": "Model",
|
"search_filter_camera_model": "Model",
|
||||||
"search_filter_camera_title": "Select camera type",
|
"search_filter_camera_title": "Vælg type af kamera",
|
||||||
"search_filter_date": "Date",
|
"search_filter_date": "Dato",
|
||||||
"search_filter_date_interval": "{start} to {end}",
|
"search_filter_date_interval": "{start} til { slut}",
|
||||||
"search_filter_date_title": "Select a date range",
|
"search_filter_date_title": "Vælg et datointerval",
|
||||||
"search_filter_display_option_archive": "Arkiv",
|
"search_filter_display_option_archive": "Arkiv",
|
||||||
"search_filter_display_option_favorite": "Favorit",
|
"search_filter_display_option_favorite": "Favorit",
|
||||||
"search_filter_display_option_not_in_album": "Ikke i album",
|
"search_filter_display_option_not_in_album": "Ikke i album",
|
||||||
"search_filter_display_options": "Display Options",
|
"search_filter_display_options": "Visningsindstillinger",
|
||||||
"search_filter_display_options_title": "Display options",
|
"search_filter_display_options_title": "Visningsindstillinger",
|
||||||
"search_filter_location": "Location",
|
"search_filter_location": "Lokation",
|
||||||
"search_filter_location_city": "By",
|
"search_filter_location_city": "By",
|
||||||
"search_filter_location_country": "Land",
|
"search_filter_location_country": "Land",
|
||||||
"search_filter_location_state": "Stat",
|
"search_filter_location_state": "Stat",
|
||||||
"search_filter_location_title": "Select location",
|
"search_filter_location_title": "Vælg lokation",
|
||||||
"search_filter_media_type": "Media Type",
|
"search_filter_media_type": "Medietype",
|
||||||
"search_filter_media_type_all": "Alle",
|
"search_filter_media_type_all": "Alle",
|
||||||
"search_filter_media_type_image": "Billede",
|
"search_filter_media_type_image": "Billede",
|
||||||
"search_filter_media_type_title": "Select media type",
|
"search_filter_media_type_title": "Vælg medietype",
|
||||||
"search_filter_media_type_video": "Video",
|
"search_filter_media_type_video": "Video",
|
||||||
"search_filter_people": "People",
|
"search_filter_people": "Personer",
|
||||||
"search_filter_people_title": "Select people",
|
"search_filter_people_title": "Vælg personer",
|
||||||
"search_page_categories": "Kategorier",
|
"search_page_categories": "Kategorier",
|
||||||
"search_page_favorites": "Favoritter",
|
"search_page_favorites": "Favoritter",
|
||||||
"search_page_motion_photos": "Bevægelsesbilleder",
|
"search_page_motion_photos": "Bevægelsesbilleder",
|
||||||
@ -529,27 +539,31 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Opret delt album",
|
"sharing_silver_appbar_create_shared_album": "Opret delt album",
|
||||||
"sharing_silver_appbar_shared_links": "Delte links",
|
"sharing_silver_appbar_shared_links": "Delte links",
|
||||||
"sharing_silver_appbar_share_partner": "Del med partner",
|
"sharing_silver_appbar_share_partner": "Del med partner",
|
||||||
|
"sync": "Synkroniser",
|
||||||
|
"sync_albums": "Synkroniser albummer",
|
||||||
|
"sync_albums_manual_subtitle": "Synkroniser alle uploadet billeder og videoer til de valgte backupalbummer",
|
||||||
|
"sync_upload_album_setting_subtitle": "Opret og upload dine billeder og videoer til de valgte albummer i Immich",
|
||||||
"tab_controller_nav_library": "Bibliotek",
|
"tab_controller_nav_library": "Bibliotek",
|
||||||
"tab_controller_nav_photos": "Billeder",
|
"tab_controller_nav_photos": "Billeder",
|
||||||
"tab_controller_nav_search": "Søg",
|
"tab_controller_nav_search": "Søg",
|
||||||
"tab_controller_nav_sharing": "Deling",
|
"tab_controller_nav_sharing": "Deling",
|
||||||
"theme_setting_asset_list_storage_indicator_title": "Vis opbevaringsindikator på filer",
|
"theme_setting_asset_list_storage_indicator_title": "Vis opbevaringsindikator på filer",
|
||||||
"theme_setting_asset_list_tiles_per_row_title": "Antal elementer per række ({})",
|
"theme_setting_asset_list_tiles_per_row_title": "Antal elementer per række ({})",
|
||||||
"theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.",
|
"theme_setting_colorful_interface_subtitle": "Tilføj primær farve til baggrundsoverflader.",
|
||||||
"theme_setting_colorful_interface_title": "Colorful interface",
|
"theme_setting_colorful_interface_title": "Farverig grænseflade",
|
||||||
"theme_setting_dark_mode_switch": "Mørk tilstand",
|
"theme_setting_dark_mode_switch": "Mørk tilstand",
|
||||||
"theme_setting_image_viewer_quality_subtitle": "Juster kvaliteten i billedfremviseren",
|
"theme_setting_image_viewer_quality_subtitle": "Juster kvaliteten i billedfremviseren",
|
||||||
"theme_setting_image_viewer_quality_title": "Billedfremviserkvalitet",
|
"theme_setting_image_viewer_quality_title": "Billedfremviserkvalitet",
|
||||||
"theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.",
|
"theme_setting_primary_color_subtitle": "Vælg en farve til primære handlinger og accenter.",
|
||||||
"theme_setting_primary_color_title": "Primary color",
|
"theme_setting_primary_color_title": "Primær farve",
|
||||||
"theme_setting_system_primary_color_title": "Use system color",
|
"theme_setting_system_primary_color_title": "Brug systemfarver",
|
||||||
"theme_setting_system_theme_switch": "Automatisk (Følg systemindstillinger)",
|
"theme_setting_system_theme_switch": "Automatisk (Følg systemindstillinger)",
|
||||||
"theme_setting_theme_subtitle": "Vælg appens temaindstilling",
|
"theme_setting_theme_subtitle": "Vælg appens temaindstilling",
|
||||||
"theme_setting_theme_title": "Tema",
|
"theme_setting_theme_title": "Tema",
|
||||||
"theme_setting_three_stage_loading_subtitle": "Tre-trins indlæsning kan øge ydeevnen, men kan ligeledes føre til højere netværksbelastning",
|
"theme_setting_three_stage_loading_subtitle": "Tre-trins indlæsning kan øge ydeevnen, men kan ligeledes føre til højere netværksbelastning",
|
||||||
"theme_setting_three_stage_loading_title": "Slå tre-trins indlæsning til",
|
"theme_setting_three_stage_loading_title": "Slå tre-trins indlæsning til",
|
||||||
"translated_text_options": "Handlinger",
|
"translated_text_options": "Handlinger",
|
||||||
"trash_emptied": "Emptied trash",
|
"trash_emptied": "Tømte papirkurven",
|
||||||
"trash_page_delete": "Slet",
|
"trash_page_delete": "Slet",
|
||||||
"trash_page_delete_all": "Slet alt",
|
"trash_page_delete_all": "Slet alt",
|
||||||
"trash_page_empty_trash_btn": "Tøm papirkurv",
|
"trash_page_empty_trash_btn": "Tøm papirkurv",
|
||||||
|
@ -9,14 +9,14 @@
|
|||||||
"add_to_album_bottom_sheet_added": "Zu {album} hinzugefügt",
|
"add_to_album_bottom_sheet_added": "Zu {album} hinzugefügt",
|
||||||
"add_to_album_bottom_sheet_already_exists": "Bereits in {album}",
|
"add_to_album_bottom_sheet_already_exists": "Bereits in {album}",
|
||||||
"advanced_settings_log_level_title": "Log-Level: {}",
|
"advanced_settings_log_level_title": "Log-Level: {}",
|
||||||
"advanced_settings_prefer_remote_subtitle": "Manche Endgeräte laden Vorschaubilder von lokalen Bilder sehr langsam. Durch diese Einstellung werden diese stattdessen direkt vom Server geladen.",
|
"advanced_settings_prefer_remote_subtitle": "Einige Geräte sind sehr langsam beim Laden von Miniaturbildern direkt aus dem Gerät. Aktivieren Sie diese Einstellung, um stattdessen die Server-Bilder zu laden.",
|
||||||
"advanced_settings_prefer_remote_title": "Server-Bilder bevorzugen",
|
"advanced_settings_prefer_remote_title": "Server-Bilder bevorzugen",
|
||||||
"advanced_settings_proxy_headers_subtitle": "Definiere einen Proxy-Header, den Immich bei jeder Netzwerkanfrage mitschicken soll",
|
"advanced_settings_proxy_headers_subtitle": "Definiere einen Proxy-Header, den Immich bei jeder Netzwerkanfrage mitschicken soll",
|
||||||
"advanced_settings_proxy_headers_title": "Proxy-Headers",
|
"advanced_settings_proxy_headers_title": "Proxy-Headers",
|
||||||
"advanced_settings_self_signed_ssl_subtitle": "Verifizierung von SSL-Zertifikaten vom Server überspringen. Notwendig bei selbstsignierten Zertifikaten.",
|
"advanced_settings_self_signed_ssl_subtitle": "Verifizierung von SSL-Zertifikaten vom Server überspringen. Notwendig bei selbstsignierten Zertifikaten.",
|
||||||
"advanced_settings_self_signed_ssl_title": "Selbstsignierte SSL-Zertifikate erlauben",
|
"advanced_settings_self_signed_ssl_title": "Selbstsignierte SSL-Zertifikate erlauben",
|
||||||
"advanced_settings_tile_subtitle": "Erweiterte Benutzereinstellungen",
|
"advanced_settings_tile_subtitle": "Erweiterte Benutzereinstellungen",
|
||||||
"advanced_settings_tile_title": "Sonstige",
|
"advanced_settings_tile_title": "Sonstiges",
|
||||||
"advanced_settings_troubleshooting_subtitle": "Erweiterte Funktionen zur Fehlersuche aktivieren",
|
"advanced_settings_troubleshooting_subtitle": "Erweiterte Funktionen zur Fehlersuche aktivieren",
|
||||||
"advanced_settings_troubleshooting_title": "Fehlersuche",
|
"advanced_settings_troubleshooting_title": "Fehlersuche",
|
||||||
"album_info_card_backup_album_excluded": "AUSGESCHLOSSEN",
|
"album_info_card_backup_album_excluded": "AUSGESCHLOSSEN",
|
||||||
@ -54,13 +54,13 @@
|
|||||||
"asset_list_layout_sub_title": "Layout",
|
"asset_list_layout_sub_title": "Layout",
|
||||||
"asset_list_settings_subtitle": "Einstellungen für das Fotogitter-Layout",
|
"asset_list_settings_subtitle": "Einstellungen für das Fotogitter-Layout",
|
||||||
"asset_list_settings_title": "Fotogitter",
|
"asset_list_settings_title": "Fotogitter",
|
||||||
"asset_restored_successfully": "Asset restored successfully",
|
"asset_restored_successfully": "Datei erfolgreich wiederhergestellt",
|
||||||
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
"assets_deleted_permanently": "{} Datei/en permanent gelöscht",
|
||||||
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
"assets_deleted_permanently_from_server": "{} Datei/en wurden permanent vom Immich Server gelöscht",
|
||||||
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
"assets_removed_permanently_from_device": "{} Datei/en wurden permanent vom Gerät gelöscht",
|
||||||
"assets_restored_successfully": "{} asset(s) restored successfully",
|
"assets_restored_successfully": "{} Datei/en erfolgreich wiederhergestellt",
|
||||||
"assets_trashed": "{} asset(s) trashed",
|
"assets_trashed": "{} Datei/en gelöscht",
|
||||||
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
"assets_trashed_from_server": "{} Datei/en vom Immich-Server gelöscht",
|
||||||
"asset_viewer_settings_title": "Fotoanzeige",
|
"asset_viewer_settings_title": "Fotoanzeige",
|
||||||
"backup_album_selection_page_albums_device": "Alben auf dem Gerät ({})",
|
"backup_album_selection_page_albums_device": "Alben auf dem Gerät ({})",
|
||||||
"backup_album_selection_page_albums_tap": "Einmalig das Album antippen um es zu sichern, doppelt antippen um es nicht mehr zu sichern.",
|
"backup_album_selection_page_albums_tap": "Einmalig das Album antippen um es zu sichern, doppelt antippen um es nicht mehr zu sichern.",
|
||||||
@ -131,7 +131,7 @@
|
|||||||
"cache_settings_clear_cache_button": "Zwischenspeicher löschen",
|
"cache_settings_clear_cache_button": "Zwischenspeicher löschen",
|
||||||
"cache_settings_clear_cache_button_title": "Löscht den Zwischenspeicher der App. Dies wird die Leistungsfähigkeit der App deutlich einschränken, bis der Zwischenspeicher wieder aufgebaut wurde.",
|
"cache_settings_clear_cache_button_title": "Löscht den Zwischenspeicher der App. Dies wird die Leistungsfähigkeit der App deutlich einschränken, bis der Zwischenspeicher wieder aufgebaut wurde.",
|
||||||
"cache_settings_duplicated_assets_clear_button": "LEEREN",
|
"cache_settings_duplicated_assets_clear_button": "LEEREN",
|
||||||
"cache_settings_duplicated_assets_subtitle": "Inhalte, die von der App versteckt werden",
|
"cache_settings_duplicated_assets_subtitle": "Fotos und Videos, die von der App blockiert werden",
|
||||||
"cache_settings_duplicated_assets_title": "Duplikate ({})",
|
"cache_settings_duplicated_assets_title": "Duplikate ({})",
|
||||||
"cache_settings_image_cache_size": "{} Bilder im Zwischenspeicher",
|
"cache_settings_image_cache_size": "{} Bilder im Zwischenspeicher",
|
||||||
"cache_settings_statistics_album": "Vorschaubilder der Bibliothek",
|
"cache_settings_statistics_album": "Vorschaubilder der Bibliothek",
|
||||||
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Löschen",
|
"control_bottom_app_bar_delete": "Löschen",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Aus Immich löschen",
|
"control_bottom_app_bar_delete_from_immich": "Aus Immich löschen",
|
||||||
"control_bottom_app_bar_delete_from_local": "Vom Gerät löschen",
|
"control_bottom_app_bar_delete_from_local": "Vom Gerät löschen",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Bearbeiten",
|
"control_bottom_app_bar_edit": "Bearbeiten",
|
||||||
"control_bottom_app_bar_edit_location": "Ort bearbeiten",
|
"control_bottom_app_bar_edit_location": "Ort bearbeiten",
|
||||||
"control_bottom_app_bar_edit_time": "Datum und Uhrzeit bearbeiten",
|
"control_bottom_app_bar_edit_time": "Datum und Uhrzeit bearbeiten",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Teilen",
|
"create_shared_album_page_share": "Teilen",
|
||||||
"create_shared_album_page_share_add_assets": "INHALTE HINZUFÜGEN",
|
"create_shared_album_page_share_add_assets": "INHALTE HINZUFÜGEN",
|
||||||
"create_shared_album_page_share_select_photos": "Fotos auswählen",
|
"create_shared_album_page_share_select_photos": "Fotos auswählen",
|
||||||
|
"crop": "Zuschneiden",
|
||||||
"curated_location_page_title": "Orte",
|
"curated_location_page_title": "Orte",
|
||||||
"curated_object_page_title": "Dinge",
|
"curated_object_page_title": "Dinge",
|
||||||
"daily_title_text_date": "E, dd MMM",
|
"daily_title_text_date": "E, dd MMM",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Geteilten Link löschen",
|
"delete_shared_link_dialog_title": "Geteilten Link löschen",
|
||||||
"description_input_hint_text": "Beschreibung hinzufügen...",
|
"description_input_hint_text": "Beschreibung hinzufügen...",
|
||||||
"description_input_submit_error": "Beschreibung konnte nicht geändert werden, bitte im Log für mehr Details nachsehen.",
|
"description_input_submit_error": "Beschreibung konnte nicht geändert werden, bitte im Log für mehr Details nachsehen.",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Datum und Uhrzeit",
|
"edit_date_time_dialog_date_time": "Datum und Uhrzeit",
|
||||||
"edit_date_time_dialog_timezone": "Zeitzone",
|
"edit_date_time_dialog_timezone": "Zeitzone",
|
||||||
|
"edit_image_title": "Bearbeiten",
|
||||||
"edit_location_dialog_title": "Ort bearbeiten",
|
"edit_location_dialog_title": "Ort bearbeiten",
|
||||||
|
"error_saving_image": "Fehler: {}",
|
||||||
"exif_bottom_sheet_description": "Beschreibung hinzufügen...",
|
"exif_bottom_sheet_description": "Beschreibung hinzufügen...",
|
||||||
"exif_bottom_sheet_details": "DETAILS",
|
"exif_bottom_sheet_details": "DETAILS",
|
||||||
"exif_bottom_sheet_location": "STANDORT",
|
"exif_bottom_sheet_location": "STANDORT",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Wenn dies das erste Mal ist dass Du Immich nutzt, stelle bitte sicher, dass mindestens ein Album zur Sicherung ausgewählt ist, sodass die Zeitachse mit Fotos und Videos gefüllt werden kann.",
|
"home_page_first_time_notice": "Wenn dies das erste Mal ist dass Du Immich nutzt, stelle bitte sicher, dass mindestens ein Album zur Sicherung ausgewählt ist, sodass die Zeitachse mit Fotos und Videos gefüllt werden kann.",
|
||||||
"home_page_share_err_local": "Lokale Inhalte können nicht per Link geteilt werden, überspringe",
|
"home_page_share_err_local": "Lokale Inhalte können nicht per Link geteilt werden, überspringe",
|
||||||
"home_page_upload_err_limit": "Es können max. 30 Elemente gleichzeitig hochgeladen werden, überspringen...",
|
"home_page_upload_err_limit": "Es können max. 30 Elemente gleichzeitig hochgeladen werden, überspringen...",
|
||||||
|
"image_saved_successfully": "Bild gespeichert",
|
||||||
"image_viewer_page_state_provider_download_error": "Fehler beim Herunterladen",
|
"image_viewer_page_state_provider_download_error": "Fehler beim Herunterladen",
|
||||||
"image_viewer_page_state_provider_download_started": "Download gestartet",
|
"image_viewer_page_state_provider_download_started": "Download gestartet",
|
||||||
"image_viewer_page_state_provider_download_success": "Erfolgreich heruntergeladen",
|
"image_viewer_page_state_provider_download_success": "Erfolgreich heruntergeladen",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Abmelden",
|
"profile_drawer_sign_out": "Abmelden",
|
||||||
"profile_drawer_trash": "Papierkorb",
|
"profile_drawer_trash": "Papierkorb",
|
||||||
"recently_added_page_title": "Zuletzt hinzugefügt",
|
"recently_added_page_title": "Zuletzt hinzugefügt",
|
||||||
|
"save_to_gallery": "In Galerie speichern",
|
||||||
"scaffold_body_error_occurred": "Ein Fehler ist aufgetreten",
|
"scaffold_body_error_occurred": "Ein Fehler ist aufgetreten",
|
||||||
"search_bar_hint": "Durchsuche deine Fotos",
|
"search_bar_hint": "Durchsuche deine Fotos",
|
||||||
"search_filter_apply": "Filter anwenden",
|
"search_filter_apply": "Filter anwenden",
|
||||||
@ -449,11 +459,11 @@
|
|||||||
"setting_notifications_notify_never": "niemals",
|
"setting_notifications_notify_never": "niemals",
|
||||||
"setting_notifications_notify_seconds": "{} Sekunden",
|
"setting_notifications_notify_seconds": "{} Sekunden",
|
||||||
"setting_notifications_single_progress_subtitle": "Detaillierter Upload-Fortschritt für jedes Element.",
|
"setting_notifications_single_progress_subtitle": "Detaillierter Upload-Fortschritt für jedes Element.",
|
||||||
"setting_notifications_single_progress_title": "Zeige detaillierten Fortschritt bei der Hintergrundsicherung",
|
"setting_notifications_single_progress_title": "Zeige den detaillierten Fortschritt der Hintergrundsicherung",
|
||||||
"setting_notifications_subtitle": "Benachrichtigungen anpassen",
|
"setting_notifications_subtitle": "Benachrichtigungen anpassen",
|
||||||
"setting_notifications_title": "Benachrichtigungen",
|
"setting_notifications_title": "Benachrichtigungen",
|
||||||
"setting_notifications_total_progress_subtitle": "Gesamter Upload-Fortschritt (abgeschlossen/Anzahl Elemente)",
|
"setting_notifications_total_progress_subtitle": "Gesamter Upload-Fortschritt (abgeschlossen/Anzahl Elemente)",
|
||||||
"setting_notifications_total_progress_title": "Zeige Gesamtfortschritt bei der Hintergrundsicherung",
|
"setting_notifications_total_progress_title": "Zeige den Gesamtfortschritt der Hintergrundsicherung",
|
||||||
"setting_pages_app_bar_settings": "Einstellungen",
|
"setting_pages_app_bar_settings": "Einstellungen",
|
||||||
"settings_require_restart": "Bitte starte Immich neu, um diese Einstellung anzuwenden.",
|
"settings_require_restart": "Bitte starte Immich neu, um diese Einstellung anzuwenden.",
|
||||||
"setting_video_viewer_looping_subtitle": "Aktiviere diese Option, um ein Video in der Detailansicht automatisch in einer Schleife anzuzeigen.",
|
"setting_video_viewer_looping_subtitle": "Aktiviere diese Option, um ein Video in der Detailansicht automatisch in einer Schleife anzuzeigen.",
|
||||||
@ -529,18 +539,22 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Neues geteiltes Album",
|
"sharing_silver_appbar_create_shared_album": "Neues geteiltes Album",
|
||||||
"sharing_silver_appbar_shared_links": "Geteilte Links",
|
"sharing_silver_appbar_shared_links": "Geteilte Links",
|
||||||
"sharing_silver_appbar_share_partner": "Mit Partner teilen",
|
"sharing_silver_appbar_share_partner": "Mit Partner teilen",
|
||||||
|
"sync": "Synchronisieren",
|
||||||
|
"sync_albums": "Alben synchronisieren",
|
||||||
|
"sync_albums_manual_subtitle": "Synchronisiere alle hochgeladenen Videos und Fotos in die ausgewählten Backup-Alben",
|
||||||
|
"sync_upload_album_setting_subtitle": "Erstelle deine ausgewählten Alben in Immich und lade die Fotos und Videos dort hoch",
|
||||||
"tab_controller_nav_library": "Bibliothek",
|
"tab_controller_nav_library": "Bibliothek",
|
||||||
"tab_controller_nav_photos": "Fotos",
|
"tab_controller_nav_photos": "Fotos",
|
||||||
"tab_controller_nav_search": "Suche",
|
"tab_controller_nav_search": "Suche",
|
||||||
"tab_controller_nav_sharing": "Teilen",
|
"tab_controller_nav_sharing": "Teilen",
|
||||||
"theme_setting_asset_list_storage_indicator_title": "Zeige Sicherungsstatus auf Vorschaubild",
|
"theme_setting_asset_list_storage_indicator_title": "Forschrittsbalken der Sicherung auf dem Vorschaubild",
|
||||||
"theme_setting_asset_list_tiles_per_row_title": "Anzahl der Elemente pro Reihe ({})",
|
"theme_setting_asset_list_tiles_per_row_title": "Anzahl der Elemente pro Reihe ({})",
|
||||||
"theme_setting_colorful_interface_subtitle": "Primärfarbe auf Hintergrundflächen verwenden",
|
"theme_setting_colorful_interface_subtitle": "Primärfarbe auf App-Hintergrund anwenden",
|
||||||
"theme_setting_colorful_interface_title": "Bunte Oberfläche ",
|
"theme_setting_colorful_interface_title": "Farbige UI-Oberfläche",
|
||||||
"theme_setting_dark_mode_switch": "Dunkler Modus",
|
"theme_setting_dark_mode_switch": "Dunkler Modus",
|
||||||
"theme_setting_image_viewer_quality_subtitle": "Einstellen der Qualität des Detailbildbetrachters",
|
"theme_setting_image_viewer_quality_subtitle": "Einstellen der Qualität des Detailbildbetrachters",
|
||||||
"theme_setting_image_viewer_quality_title": "Qualität des Bildbetrachters",
|
"theme_setting_image_viewer_quality_title": "Qualität des Bildbetrachters",
|
||||||
"theme_setting_primary_color_subtitle": "Wähle eine Farbe für primäre Aktionen und Akzente",
|
"theme_setting_primary_color_subtitle": "Farbauswahl für primäre Aktionen und Akzente",
|
||||||
"theme_setting_primary_color_title": "Primärfarbe",
|
"theme_setting_primary_color_title": "Primärfarbe",
|
||||||
"theme_setting_system_primary_color_title": "Systemfarbe verwenden",
|
"theme_setting_system_primary_color_title": "Systemfarbe verwenden",
|
||||||
"theme_setting_system_theme_switch": "Automatisch (Systemeinstellung)",
|
"theme_setting_system_theme_switch": "Automatisch (Systemeinstellung)",
|
||||||
@ -549,7 +563,7 @@
|
|||||||
"theme_setting_three_stage_loading_subtitle": "Das dreistufige Ladeverfahren kann die Performance beim Laden verbessern, erhöht allerdings den Datenverbrauch deutlich",
|
"theme_setting_three_stage_loading_subtitle": "Das dreistufige Ladeverfahren kann die Performance beim Laden verbessern, erhöht allerdings den Datenverbrauch deutlich",
|
||||||
"theme_setting_three_stage_loading_title": "Dreistufiges Laden aktivieren",
|
"theme_setting_three_stage_loading_title": "Dreistufiges Laden aktivieren",
|
||||||
"translated_text_options": "Optionen",
|
"translated_text_options": "Optionen",
|
||||||
"trash_emptied": "Emptied trash",
|
"trash_emptied": "Geleerter Papierkorb",
|
||||||
"trash_page_delete": "Löschen",
|
"trash_page_delete": "Löschen",
|
||||||
"trash_page_delete_all": "Alle löschen",
|
"trash_page_delete_all": "Alle löschen",
|
||||||
"trash_page_empty_trash_btn": "Papierkorb leeren",
|
"trash_page_empty_trash_btn": "Papierkorb leeren",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Διαγραφή",
|
"control_bottom_app_bar_delete": "Διαγραφή",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Διαγραφή από το Immich",
|
"control_bottom_app_bar_delete_from_immich": "Διαγραφή από το Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Διαγραφή από τη συσκευή",
|
"control_bottom_app_bar_delete_from_local": "Διαγραφή από τη συσκευή",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Επεξεργασία Τοποθεσίας",
|
"control_bottom_app_bar_edit_location": "Επεξεργασία Τοποθεσίας",
|
||||||
"control_bottom_app_bar_edit_time": "Επεξεργασία Ημερομηνίας & Ώρας",
|
"control_bottom_app_bar_edit_time": "Επεξεργασία Ημερομηνίας & Ώρας",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Κοινοποίηση",
|
"create_shared_album_page_share": "Κοινοποίηση",
|
||||||
"create_shared_album_page_share_add_assets": "ΠΡΟΣΘΗΚΗ ΣΤΟΙΧΕΙΩΝ",
|
"create_shared_album_page_share_add_assets": "ΠΡΟΣΘΗΚΗ ΣΤΟΙΧΕΙΩΝ",
|
||||||
"create_shared_album_page_share_select_photos": "Επιλέξτε Φωτογραφίες",
|
"create_shared_album_page_share_select_photos": "Επιλέξτε Φωτογραφίες",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Τοποθεσίες",
|
"curated_location_page_title": "Τοποθεσίες",
|
||||||
"curated_object_page_title": "Πράγματα",
|
"curated_object_page_title": "Πράγματα",
|
||||||
"daily_title_text_date": "Ε, MMM dd",
|
"daily_title_text_date": "Ε, MMM dd",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Διαγραφή Κοινοποιημένου Συνδέσμου",
|
"delete_shared_link_dialog_title": "Διαγραφή Κοινοποιημένου Συνδέσμου",
|
||||||
"description_input_hint_text": "Προσθήκη περιγραφής...",
|
"description_input_hint_text": "Προσθήκη περιγραφής...",
|
||||||
"description_input_submit_error": "Σφάλμα κατά την ενημέρωση της περιγραφής, ελέγξτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες",
|
"description_input_submit_error": "Σφάλμα κατά την ενημέρωση της περιγραφής, ελέγξτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Ημερομηνία και Ώρα",
|
"edit_date_time_dialog_date_time": "Ημερομηνία και Ώρα",
|
||||||
"edit_date_time_dialog_timezone": "Ζώνη ώρας",
|
"edit_date_time_dialog_timezone": "Ζώνη ώρας",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Τοποθεσία",
|
"edit_location_dialog_title": "Τοποθεσία",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Προσθήκη Περιγραφής...",
|
"exif_bottom_sheet_description": "Προσθήκη Περιγραφής...",
|
||||||
"exif_bottom_sheet_details": "ΛΕΠΤΟΜΕΡΕΙΕΣ",
|
"exif_bottom_sheet_details": "ΛΕΠΤΟΜΕΡΕΙΕΣ",
|
||||||
"exif_bottom_sheet_location": "ΤΟΠΟΘΕΣΙΑ",
|
"exif_bottom_sheet_location": "ΤΟΠΟΘΕΣΙΑ",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
||||||
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
||||||
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Download Error",
|
"image_viewer_page_state_provider_download_error": "Download Error",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Sign Out",
|
"profile_drawer_sign_out": "Sign Out",
|
||||||
"profile_drawer_trash": "Trash",
|
"profile_drawer_trash": "Trash",
|
||||||
"recently_added_page_title": "Recently Added",
|
"recently_added_page_title": "Recently Added",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Error occurred",
|
"scaffold_body_error_occurred": "Error occurred",
|
||||||
"search_bar_hint": "Search your photos",
|
"search_bar_hint": "Search your photos",
|
||||||
"search_filter_apply": "Apply filter",
|
"search_filter_apply": "Apply filter",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "New shared album",
|
"sharing_silver_appbar_create_shared_album": "New shared album",
|
||||||
"sharing_silver_appbar_shared_links": "Shared links",
|
"sharing_silver_appbar_shared_links": "Shared links",
|
||||||
"sharing_silver_appbar_share_partner": "Share with partner",
|
"sharing_silver_appbar_share_partner": "Share with partner",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Library",
|
"tab_controller_nav_library": "Library",
|
||||||
"tab_controller_nav_photos": "Photos",
|
"tab_controller_nav_photos": "Photos",
|
||||||
"tab_controller_nav_search": "Search",
|
"tab_controller_nav_search": "Search",
|
||||||
|
@ -55,13 +55,13 @@
|
|||||||
"asset_list_settings_subtitle": "Photo grid layout settings",
|
"asset_list_settings_subtitle": "Photo grid layout settings",
|
||||||
"asset_list_settings_title": "Photo Grid",
|
"asset_list_settings_title": "Photo Grid",
|
||||||
"asset_restored_successfully": "Asset restored successfully",
|
"asset_restored_successfully": "Asset restored successfully",
|
||||||
"asset_viewer_settings_title": "Asset Viewer",
|
|
||||||
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
||||||
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
||||||
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
||||||
"assets_restored_successfully": "{} asset(s) restored successfully",
|
"assets_restored_successfully": "{} asset(s) restored successfully",
|
||||||
"assets_trashed": "{} asset(s) trashed",
|
"assets_trashed": "{} asset(s) trashed",
|
||||||
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
||||||
|
"asset_viewer_settings_title": "Asset Viewer",
|
||||||
"backup_album_selection_page_albums_device": "Albums on device ({})",
|
"backup_album_selection_page_albums_device": "Albums on device ({})",
|
||||||
"backup_album_selection_page_albums_tap": "Tap to include, double tap to exclude",
|
"backup_album_selection_page_albums_tap": "Tap to include, double tap to exclude",
|
||||||
"backup_album_selection_page_assets_scatter": "Assets can scatter across multiple albums. Thus, albums can be included or excluded during the backup process.",
|
"backup_album_selection_page_assets_scatter": "Assets can scatter across multiple albums. Thus, albums can be included or excluded during the backup process.",
|
||||||
@ -190,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Share",
|
"create_shared_album_page_share": "Share",
|
||||||
"create_shared_album_page_share_add_assets": "ADD ASSETS",
|
"create_shared_album_page_share_add_assets": "ADD ASSETS",
|
||||||
"create_shared_album_page_share_select_photos": "Select Photos",
|
"create_shared_album_page_share_select_photos": "Select Photos",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Places",
|
"curated_location_page_title": "Places",
|
||||||
"curated_object_page_title": "Things",
|
"curated_object_page_title": "Things",
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
@ -209,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Delete Shared Link",
|
"delete_shared_link_dialog_title": "Delete Shared Link",
|
||||||
"description_input_hint_text": "Add description...",
|
"description_input_hint_text": "Add description...",
|
||||||
"description_input_submit_error": "Error updating description, check the log for more details",
|
"description_input_submit_error": "Error updating description, check the log for more details",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Date and Time",
|
"edit_date_time_dialog_date_time": "Date and Time",
|
||||||
"edit_date_time_dialog_timezone": "Timezone",
|
"edit_date_time_dialog_timezone": "Timezone",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Location",
|
"edit_location_dialog_title": "Location",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Add Description...",
|
"exif_bottom_sheet_description": "Add Description...",
|
||||||
"exif_bottom_sheet_details": "DETAILS",
|
"exif_bottom_sheet_details": "DETAILS",
|
||||||
"exif_bottom_sheet_location": "LOCATION",
|
"exif_bottom_sheet_location": "LOCATION",
|
||||||
@ -248,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
||||||
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
||||||
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Download Error",
|
"image_viewer_page_state_provider_download_error": "Download Error",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||||
@ -376,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Sign Out",
|
"profile_drawer_sign_out": "Sign Out",
|
||||||
"profile_drawer_trash": "Trash",
|
"profile_drawer_trash": "Trash",
|
||||||
"recently_added_page_title": "Recently Added",
|
"recently_added_page_title": "Recently Added",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Error occurred",
|
"scaffold_body_error_occurred": "Error occurred",
|
||||||
"search_bar_hint": "Search your photos",
|
"search_bar_hint": "Search your photos",
|
||||||
"search_filter_apply": "Apply filter",
|
"search_filter_apply": "Apply filter",
|
||||||
@ -456,18 +465,15 @@
|
|||||||
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)",
|
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)",
|
||||||
"setting_notifications_total_progress_title": "Show background backup total progress",
|
"setting_notifications_total_progress_title": "Show background backup total progress",
|
||||||
"setting_pages_app_bar_settings": "Settings",
|
"setting_pages_app_bar_settings": "Settings",
|
||||||
|
"settings_require_restart": "Please restart Immich to apply this setting",
|
||||||
"setting_video_viewer_looping_subtitle": "Enable to automatically loop a video in the detail viewer.",
|
"setting_video_viewer_looping_subtitle": "Enable to automatically loop a video in the detail viewer.",
|
||||||
"setting_video_viewer_looping_title": "Looping",
|
"setting_video_viewer_looping_title": "Looping",
|
||||||
"setting_video_viewer_title": "Videos",
|
"setting_video_viewer_title": "Videos",
|
||||||
"settings_require_restart": "Please restart Immich to apply this setting",
|
|
||||||
"share_add": "Add",
|
"share_add": "Add",
|
||||||
"share_add_photos": "Add photos",
|
"share_add_photos": "Add photos",
|
||||||
"share_add_title": "Add a title",
|
"share_add_title": "Add a title",
|
||||||
"share_assets_selected": "{} selected",
|
"share_assets_selected": "{} selected",
|
||||||
"share_create_album": "Create album",
|
"share_create_album": "Create album",
|
||||||
"share_dialog_preparing": "Preparing...",
|
|
||||||
"share_done": "Done",
|
|
||||||
"share_invite": "Invite to album",
|
|
||||||
"shared_album_activities_input_disable": "Comment is disabled",
|
"shared_album_activities_input_disable": "Comment is disabled",
|
||||||
"shared_album_activities_input_hint": "Say something",
|
"shared_album_activities_input_hint": "Say something",
|
||||||
"shared_album_activity_remove_content": "Do you want to delete this activity?",
|
"shared_album_activity_remove_content": "Do you want to delete this activity?",
|
||||||
@ -479,6 +485,7 @@
|
|||||||
"shared_album_section_people_action_remove_user": "Remove user from album",
|
"shared_album_section_people_action_remove_user": "Remove user from album",
|
||||||
"shared_album_section_people_owner_label": "Owner",
|
"shared_album_section_people_owner_label": "Owner",
|
||||||
"shared_album_section_people_title": "PEOPLE",
|
"shared_album_section_people_title": "PEOPLE",
|
||||||
|
"share_dialog_preparing": "Preparing...",
|
||||||
"shared_link_app_bar_title": "Shared Links",
|
"shared_link_app_bar_title": "Shared Links",
|
||||||
"shared_link_clipboard_copied_massage": "Copied to clipboard",
|
"shared_link_clipboard_copied_massage": "Copied to clipboard",
|
||||||
"shared_link_clipboard_text": "Link: {}\nPassword: {}",
|
"shared_link_clipboard_text": "Link: {}\nPassword: {}",
|
||||||
@ -524,12 +531,18 @@
|
|||||||
"shared_link_info_chip_upload": "Upload",
|
"shared_link_info_chip_upload": "Upload",
|
||||||
"shared_link_manage_links": "Manage Shared links",
|
"shared_link_manage_links": "Manage Shared links",
|
||||||
"shared_link_public_album": "Public album",
|
"shared_link_public_album": "Public album",
|
||||||
|
"share_done": "Done",
|
||||||
|
"share_invite": "Invite to album",
|
||||||
"sharing_page_album": "Shared albums",
|
"sharing_page_album": "Shared albums",
|
||||||
"sharing_page_description": "Create shared albums to share photos and videos with people in your network.",
|
"sharing_page_description": "Create shared albums to share photos and videos with people in your network.",
|
||||||
"sharing_page_empty_list": "EMPTY LIST",
|
"sharing_page_empty_list": "EMPTY LIST",
|
||||||
"sharing_silver_appbar_create_shared_album": "New shared album",
|
"sharing_silver_appbar_create_shared_album": "New shared album",
|
||||||
"sharing_silver_appbar_share_partner": "Share with partner",
|
|
||||||
"sharing_silver_appbar_shared_links": "Shared links",
|
"sharing_silver_appbar_shared_links": "Shared links",
|
||||||
|
"sharing_silver_appbar_share_partner": "Share with partner",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Library",
|
"tab_controller_nav_library": "Library",
|
||||||
"tab_controller_nav_photos": "Photos",
|
"tab_controller_nav_photos": "Photos",
|
||||||
"tab_controller_nav_search": "Search",
|
"tab_controller_nav_search": "Search",
|
||||||
@ -573,14 +586,7 @@
|
|||||||
"version_announcement_overlay_text_2": "please take your time to visit the ",
|
"version_announcement_overlay_text_2": "please take your time to visit the ",
|
||||||
"version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
|
"version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
|
||||||
"version_announcement_overlay_title": "New Server Version Available \uD83C\uDF89",
|
"version_announcement_overlay_title": "New Server Version Available \uD83C\uDF89",
|
||||||
"viewer_unstack": "Un-Stack",
|
"viewer_remove_from_stack": "Remove from Stack",
|
||||||
"edit_image_title": "Edit",
|
"viewer_stack_use_as_main_asset": "Use as Main Asset",
|
||||||
"crop": "Crop",
|
"viewer_unstack": "Un-Stack"
|
||||||
"save_to_gallery": "Save to gallery",
|
}
|
||||||
"error_saving_image": "Error: {}",
|
|
||||||
"image_saved_successfully": "Image saved",
|
|
||||||
"sync_albums": "Sync albums",
|
|
||||||
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
|
||||||
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
|
||||||
"sync": "Sync"
|
|
||||||
}
|
|
@ -173,7 +173,8 @@
|
|||||||
"control_bottom_app_bar_delete": "Eliminar",
|
"control_bottom_app_bar_delete": "Eliminar",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Borrar de Immich",
|
"control_bottom_app_bar_delete_from_immich": "Borrar de Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Borrar del dispositivo",
|
"control_bottom_app_bar_delete_from_local": "Borrar del dispositivo",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_download": "Descargar",
|
||||||
|
"control_bottom_app_bar_edit": "Editar",
|
||||||
"control_bottom_app_bar_edit_location": "Editar ubicación",
|
"control_bottom_app_bar_edit_location": "Editar ubicación",
|
||||||
"control_bottom_app_bar_edit_time": "Editar fecha y hora",
|
"control_bottom_app_bar_edit_time": "Editar fecha y hora",
|
||||||
"control_bottom_app_bar_favorite": "Favorito",
|
"control_bottom_app_bar_favorite": "Favorito",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Compartir",
|
"create_shared_album_page_share": "Compartir",
|
||||||
"create_shared_album_page_share_add_assets": "AGREGAR ELEMENTOS",
|
"create_shared_album_page_share_add_assets": "AGREGAR ELEMENTOS",
|
||||||
"create_shared_album_page_share_select_photos": "Seleccionar Fotos",
|
"create_shared_album_page_share_select_photos": "Seleccionar Fotos",
|
||||||
|
"crop": "Recortar",
|
||||||
"curated_location_page_title": "Lugares",
|
"curated_location_page_title": "Lugares",
|
||||||
"curated_object_page_title": "Objetos",
|
"curated_object_page_title": "Objetos",
|
||||||
"daily_title_text_date": "E dd, MMM",
|
"daily_title_text_date": "E dd, MMM",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Eliminar enlace compartido",
|
"delete_shared_link_dialog_title": "Eliminar enlace compartido",
|
||||||
"description_input_hint_text": "Agregar descripción...",
|
"description_input_hint_text": "Agregar descripción...",
|
||||||
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
|
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Fecha y Hora",
|
"edit_date_time_dialog_date_time": "Fecha y Hora",
|
||||||
"edit_date_time_dialog_timezone": "Zona horaria",
|
"edit_date_time_dialog_timezone": "Zona horaria",
|
||||||
|
"edit_image_title": "Editar",
|
||||||
"edit_location_dialog_title": "Ubicación",
|
"edit_location_dialog_title": "Ubicación",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Agregar Descripción...",
|
"exif_bottom_sheet_description": "Agregar Descripción...",
|
||||||
"exif_bottom_sheet_details": "DETALLES",
|
"exif_bottom_sheet_details": "DETALLES",
|
||||||
"exif_bottom_sheet_location": "UBICACIÓN",
|
"exif_bottom_sheet_location": "UBICACIÓN",
|
||||||
@ -247,12 +255,13 @@
|
|||||||
"home_page_first_time_notice": "Si esta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.",
|
"home_page_first_time_notice": "Si esta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.",
|
||||||
"home_page_share_err_local": "No se pueden compartir elementos locales a través de un enlace, omitiendo",
|
"home_page_share_err_local": "No se pueden compartir elementos locales a través de un enlace, omitiendo",
|
||||||
"home_page_upload_err_limit": "Solo se pueden subir 30 elementos simultáneamente, omitiendo",
|
"home_page_upload_err_limit": "Solo se pueden subir 30 elementos simultáneamente, omitiendo",
|
||||||
|
"image_saved_successfully": "Imágenes guardas",
|
||||||
"image_viewer_page_state_provider_download_error": "Error de descarga",
|
"image_viewer_page_state_provider_download_error": "Error de descarga",
|
||||||
"image_viewer_page_state_provider_download_started": "Descarga Iniciada",
|
"image_viewer_page_state_provider_download_started": "Descarga Iniciada",
|
||||||
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
|
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
|
||||||
"image_viewer_page_state_provider_share_error": "Error al compartir",
|
"image_viewer_page_state_provider_share_error": "Error al compartir",
|
||||||
"invalid_date": "Invalid date",
|
"invalid_date": "Fecha incorrecta",
|
||||||
"invalid_date_format": "Invalid date format",
|
"invalid_date_format": "Formato de fecha incorrecto",
|
||||||
"library_page_albums": "Álbumes",
|
"library_page_albums": "Álbumes",
|
||||||
"library_page_archive": "Archivo",
|
"library_page_archive": "Archivo",
|
||||||
"library_page_device_albums": "Álbumes en el dispositivo",
|
"library_page_device_albums": "Álbumes en el dispositivo",
|
||||||
@ -375,26 +384,27 @@
|
|||||||
"profile_drawer_sign_out": "Cerrar Sesión",
|
"profile_drawer_sign_out": "Cerrar Sesión",
|
||||||
"profile_drawer_trash": "Papelera",
|
"profile_drawer_trash": "Papelera",
|
||||||
"recently_added_page_title": "Recién Agregadas",
|
"recently_added_page_title": "Recién Agregadas",
|
||||||
|
"save_to_gallery": "Guardado en la galería",
|
||||||
"scaffold_body_error_occurred": "Ha ocurrido un error",
|
"scaffold_body_error_occurred": "Ha ocurrido un error",
|
||||||
"search_bar_hint": "Busca tus fotos",
|
"search_bar_hint": "Busca tus fotos",
|
||||||
"search_filter_apply": "Aplicar filtros",
|
"search_filter_apply": "Aplicar filtros",
|
||||||
"search_filter_camera": "Camera",
|
"search_filter_camera": "Cámara",
|
||||||
"search_filter_camera_make": "Marca",
|
"search_filter_camera_make": "Marca",
|
||||||
"search_filter_camera_model": "Modelo",
|
"search_filter_camera_model": "Modelo",
|
||||||
"search_filter_camera_title": "Select camera type",
|
"search_filter_camera_title": "Select camera type",
|
||||||
"search_filter_date": "Date",
|
"search_filter_date": "Fecha",
|
||||||
"search_filter_date_interval": "{start} to {end}",
|
"search_filter_date_interval": "{start} al {end}",
|
||||||
"search_filter_date_title": "Select a date range",
|
"search_filter_date_title": "Selecciona un intervalo de fechas",
|
||||||
"search_filter_display_option_archive": "Archivado",
|
"search_filter_display_option_archive": "Archivado",
|
||||||
"search_filter_display_option_favorite": "Favorito",
|
"search_filter_display_option_favorite": "Favorito",
|
||||||
"search_filter_display_option_not_in_album": "No en álbum",
|
"search_filter_display_option_not_in_album": "No en álbum",
|
||||||
"search_filter_display_options": "Display Options",
|
"search_filter_display_options": "Display Options",
|
||||||
"search_filter_display_options_title": "Display options",
|
"search_filter_display_options_title": "Display options",
|
||||||
"search_filter_location": "Location",
|
"search_filter_location": "Ubicación",
|
||||||
"search_filter_location_city": "Ciudad",
|
"search_filter_location_city": "Ciudad",
|
||||||
"search_filter_location_country": "País",
|
"search_filter_location_country": "País",
|
||||||
"search_filter_location_state": "Estado",
|
"search_filter_location_state": "Estado",
|
||||||
"search_filter_location_title": "Select location",
|
"search_filter_location_title": "Seleccionar una ubicación",
|
||||||
"search_filter_media_type": "Media Type",
|
"search_filter_media_type": "Media Type",
|
||||||
"search_filter_media_type_all": "Todos",
|
"search_filter_media_type_all": "Todos",
|
||||||
"search_filter_media_type_image": "Imagen",
|
"search_filter_media_type_image": "Imagen",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Crear un álbum compartido",
|
"sharing_silver_appbar_create_shared_album": "Crear un álbum compartido",
|
||||||
"sharing_silver_appbar_shared_links": "Enlaces compartidos",
|
"sharing_silver_appbar_shared_links": "Enlaces compartidos",
|
||||||
"sharing_silver_appbar_share_partner": "Compartir con el compañero",
|
"sharing_silver_appbar_share_partner": "Compartir con el compañero",
|
||||||
|
"sync": "Sincronizar",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Biblioteca",
|
"tab_controller_nav_library": "Biblioteca",
|
||||||
"tab_controller_nav_photos": "Fotos",
|
"tab_controller_nav_photos": "Fotos",
|
||||||
"tab_controller_nav_search": "Buscar",
|
"tab_controller_nav_search": "Buscar",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Eliminar",
|
"control_bottom_app_bar_delete": "Eliminar",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Compartir",
|
"create_shared_album_page_share": "Compartir",
|
||||||
"create_shared_album_page_share_add_assets": "AGREGAR ARCHIVOS",
|
"create_shared_album_page_share_add_assets": "AGREGAR ARCHIVOS",
|
||||||
"create_shared_album_page_share_select_photos": "Seleccionar fotos",
|
"create_shared_album_page_share_select_photos": "Seleccionar fotos",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Lugares",
|
"curated_location_page_title": "Lugares",
|
||||||
"curated_object_page_title": "Objetos",
|
"curated_object_page_title": "Objetos",
|
||||||
"daily_title_text_date": "E, dd MMM",
|
"daily_title_text_date": "E, dd MMM",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Eliminar enlace compartido",
|
"delete_shared_link_dialog_title": "Eliminar enlace compartido",
|
||||||
"description_input_hint_text": "Agregar descripción...",
|
"description_input_hint_text": "Agregar descripción...",
|
||||||
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
|
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Date and Time",
|
"edit_date_time_dialog_date_time": "Date and Time",
|
||||||
"edit_date_time_dialog_timezone": "Timezone",
|
"edit_date_time_dialog_timezone": "Timezone",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Location",
|
"edit_location_dialog_title": "Location",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Agregar Descripción...",
|
"exif_bottom_sheet_description": "Agregar Descripción...",
|
||||||
"exif_bottom_sheet_details": "DETALLES",
|
"exif_bottom_sheet_details": "DETALLES",
|
||||||
"exif_bottom_sheet_location": "UBICACIÓN",
|
"exif_bottom_sheet_location": "UBICACIÓN",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Si esta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.",
|
"home_page_first_time_notice": "Si esta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.",
|
||||||
"home_page_share_err_local": "No se pueden compartir activos locales a través de un enlace, omitiendo",
|
"home_page_share_err_local": "No se pueden compartir activos locales a través de un enlace, omitiendo",
|
||||||
"home_page_upload_err_limit": "Solo se pueden subir 30 elementos simultáneamente, omitiendo",
|
"home_page_upload_err_limit": "Solo se pueden subir 30 elementos simultáneamente, omitiendo",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Error de descarga",
|
"image_viewer_page_state_provider_download_error": "Error de descarga",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||||
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
|
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Cerrar sesión",
|
"profile_drawer_sign_out": "Cerrar sesión",
|
||||||
"profile_drawer_trash": "Papelera",
|
"profile_drawer_trash": "Papelera",
|
||||||
"recently_added_page_title": "Recién Agregadas",
|
"recently_added_page_title": "Recién Agregadas",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Error occurred",
|
"scaffold_body_error_occurred": "Error occurred",
|
||||||
"search_bar_hint": "Busca tus fotos",
|
"search_bar_hint": "Busca tus fotos",
|
||||||
"search_filter_apply": "Apply filter",
|
"search_filter_apply": "Apply filter",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Crear álbum compartido",
|
"sharing_silver_appbar_create_shared_album": "Crear álbum compartido",
|
||||||
"sharing_silver_appbar_shared_links": "Enlaces compartidos",
|
"sharing_silver_appbar_shared_links": "Enlaces compartidos",
|
||||||
"sharing_silver_appbar_share_partner": "Compartir con compañero",
|
"sharing_silver_appbar_share_partner": "Compartir con compañero",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Biblioteca",
|
"tab_controller_nav_library": "Biblioteca",
|
||||||
"tab_controller_nav_photos": "Fotos",
|
"tab_controller_nav_photos": "Fotos",
|
||||||
"tab_controller_nav_search": "Buscar",
|
"tab_controller_nav_search": "Buscar",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Eliminar",
|
"control_bottom_app_bar_delete": "Eliminar",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Compartir",
|
"create_shared_album_page_share": "Compartir",
|
||||||
"create_shared_album_page_share_add_assets": "AGREGAR ARCHIVOS",
|
"create_shared_album_page_share_add_assets": "AGREGAR ARCHIVOS",
|
||||||
"create_shared_album_page_share_select_photos": "Seleccionar fotos",
|
"create_shared_album_page_share_select_photos": "Seleccionar fotos",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Lugares",
|
"curated_location_page_title": "Lugares",
|
||||||
"curated_object_page_title": "Objetos",
|
"curated_object_page_title": "Objetos",
|
||||||
"daily_title_text_date": "E, dd MMM",
|
"daily_title_text_date": "E, dd MMM",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Eliminar enlace compartido",
|
"delete_shared_link_dialog_title": "Eliminar enlace compartido",
|
||||||
"description_input_hint_text": "Agregar descripción...",
|
"description_input_hint_text": "Agregar descripción...",
|
||||||
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
|
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Date and Time",
|
"edit_date_time_dialog_date_time": "Date and Time",
|
||||||
"edit_date_time_dialog_timezone": "Timezone",
|
"edit_date_time_dialog_timezone": "Timezone",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Location",
|
"edit_location_dialog_title": "Location",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Agregar Descripción...",
|
"exif_bottom_sheet_description": "Agregar Descripción...",
|
||||||
"exif_bottom_sheet_details": "DETALLES",
|
"exif_bottom_sheet_details": "DETALLES",
|
||||||
"exif_bottom_sheet_location": "UBICACIÓN",
|
"exif_bottom_sheet_location": "UBICACIÓN",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Si esta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.",
|
"home_page_first_time_notice": "Si esta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.",
|
||||||
"home_page_share_err_local": "No se pueden compartir activos locales a través de un enlace, omitiendo",
|
"home_page_share_err_local": "No se pueden compartir activos locales a través de un enlace, omitiendo",
|
||||||
"home_page_upload_err_limit": "Solo se pueden subir 30 elementos simultáneamente, omitiendo",
|
"home_page_upload_err_limit": "Solo se pueden subir 30 elementos simultáneamente, omitiendo",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Error de descarga",
|
"image_viewer_page_state_provider_download_error": "Error de descarga",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||||
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
|
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Cerrar sesión",
|
"profile_drawer_sign_out": "Cerrar sesión",
|
||||||
"profile_drawer_trash": "Papelera",
|
"profile_drawer_trash": "Papelera",
|
||||||
"recently_added_page_title": "Recién Agregadas",
|
"recently_added_page_title": "Recién Agregadas",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Error occurred",
|
"scaffold_body_error_occurred": "Error occurred",
|
||||||
"search_bar_hint": "Busca tus fotos",
|
"search_bar_hint": "Busca tus fotos",
|
||||||
"search_filter_apply": "Apply filter",
|
"search_filter_apply": "Apply filter",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Crear álbum compartido",
|
"sharing_silver_appbar_create_shared_album": "Crear álbum compartido",
|
||||||
"sharing_silver_appbar_shared_links": "Enlaces compartidos",
|
"sharing_silver_appbar_shared_links": "Enlaces compartidos",
|
||||||
"sharing_silver_appbar_share_partner": "Compartir con compañero",
|
"sharing_silver_appbar_share_partner": "Compartir con compañero",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Biblioteca",
|
"tab_controller_nav_library": "Biblioteca",
|
||||||
"tab_controller_nav_photos": "Fotos",
|
"tab_controller_nav_photos": "Fotos",
|
||||||
"tab_controller_nav_search": "Buscar",
|
"tab_controller_nav_search": "Buscar",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Eliminar",
|
"control_bottom_app_bar_delete": "Eliminar",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Compartir",
|
"create_shared_album_page_share": "Compartir",
|
||||||
"create_shared_album_page_share_add_assets": "AGREGAR RECURSOS",
|
"create_shared_album_page_share_add_assets": "AGREGAR RECURSOS",
|
||||||
"create_shared_album_page_share_select_photos": "Seleccionar fotos",
|
"create_shared_album_page_share_select_photos": "Seleccionar fotos",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Lugares",
|
"curated_location_page_title": "Lugares",
|
||||||
"curated_object_page_title": "Objetos",
|
"curated_object_page_title": "Objetos",
|
||||||
"daily_title_text_date": "E, dd MMM",
|
"daily_title_text_date": "E, dd MMM",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Eliminar enlace compartido",
|
"delete_shared_link_dialog_title": "Eliminar enlace compartido",
|
||||||
"description_input_hint_text": "Agregar descripción...",
|
"description_input_hint_text": "Agregar descripción...",
|
||||||
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
|
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Date and Time",
|
"edit_date_time_dialog_date_time": "Date and Time",
|
||||||
"edit_date_time_dialog_timezone": "Timezone",
|
"edit_date_time_dialog_timezone": "Timezone",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Location",
|
"edit_location_dialog_title": "Location",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Agregar Descripción...",
|
"exif_bottom_sheet_description": "Agregar Descripción...",
|
||||||
"exif_bottom_sheet_details": "DETALLES",
|
"exif_bottom_sheet_details": "DETALLES",
|
||||||
"exif_bottom_sheet_location": "UBICACIÓN",
|
"exif_bottom_sheet_location": "UBICACIÓN",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Si ésta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.",
|
"home_page_first_time_notice": "Si ésta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.",
|
||||||
"home_page_share_err_local": "No se pueden compartir activos locales a través de un enlace, omitiendo",
|
"home_page_share_err_local": "No se pueden compartir activos locales a través de un enlace, omitiendo",
|
||||||
"home_page_upload_err_limit": "Sólo se pueden subir un máximo de 30 recursos a la vez, omitiendo",
|
"home_page_upload_err_limit": "Sólo se pueden subir un máximo de 30 recursos a la vez, omitiendo",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Error de descarga",
|
"image_viewer_page_state_provider_download_error": "Error de descarga",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||||
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
|
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Cerrar sesión",
|
"profile_drawer_sign_out": "Cerrar sesión",
|
||||||
"profile_drawer_trash": "Papelera",
|
"profile_drawer_trash": "Papelera",
|
||||||
"recently_added_page_title": "Recién Agregados",
|
"recently_added_page_title": "Recién Agregados",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Error occurred",
|
"scaffold_body_error_occurred": "Error occurred",
|
||||||
"search_bar_hint": "Busca tus fotos",
|
"search_bar_hint": "Busca tus fotos",
|
||||||
"search_filter_apply": "Apply filter",
|
"search_filter_apply": "Apply filter",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Crear álbum compartido",
|
"sharing_silver_appbar_create_shared_album": "Crear álbum compartido",
|
||||||
"sharing_silver_appbar_shared_links": "Enlaces compartidos",
|
"sharing_silver_appbar_shared_links": "Enlaces compartidos",
|
||||||
"sharing_silver_appbar_share_partner": "Compartir con compañero",
|
"sharing_silver_appbar_share_partner": "Compartir con compañero",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Biblioteca",
|
"tab_controller_nav_library": "Biblioteca",
|
||||||
"tab_controller_nav_photos": "Fotos",
|
"tab_controller_nav_photos": "Fotos",
|
||||||
"tab_controller_nav_search": "Buscar",
|
"tab_controller_nav_search": "Buscar",
|
||||||
@ -575,4 +589,4 @@
|
|||||||
"viewer_remove_from_stack": "Eliminar de la pila",
|
"viewer_remove_from_stack": "Eliminar de la pila",
|
||||||
"viewer_stack_use_as_main_asset": "Utilizar como recurso principal",
|
"viewer_stack_use_as_main_asset": "Utilizar como recurso principal",
|
||||||
"viewer_unstack": "Desapilar"
|
"viewer_unstack": "Desapilar"
|
||||||
}
|
}
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Poista",
|
"control_bottom_app_bar_delete": "Poista",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Poista Immichistä",
|
"control_bottom_app_bar_delete_from_immich": "Poista Immichistä",
|
||||||
"control_bottom_app_bar_delete_from_local": "Poista laitteelta",
|
"control_bottom_app_bar_delete_from_local": "Poista laitteelta",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Muokkaa sijaintia",
|
"control_bottom_app_bar_edit_location": "Muokkaa sijaintia",
|
||||||
"control_bottom_app_bar_edit_time": "Muokkaa aikaa",
|
"control_bottom_app_bar_edit_time": "Muokkaa aikaa",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Jaa",
|
"create_shared_album_page_share": "Jaa",
|
||||||
"create_shared_album_page_share_add_assets": "LISÄÄ KOHTEITA",
|
"create_shared_album_page_share_add_assets": "LISÄÄ KOHTEITA",
|
||||||
"create_shared_album_page_share_select_photos": "Valitse kuvat",
|
"create_shared_album_page_share_select_photos": "Valitse kuvat",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Paikat",
|
"curated_location_page_title": "Paikat",
|
||||||
"curated_object_page_title": "Asiat",
|
"curated_object_page_title": "Asiat",
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Poista jaettu linkki",
|
"delete_shared_link_dialog_title": "Poista jaettu linkki",
|
||||||
"description_input_hint_text": "Lisää kuvaus...",
|
"description_input_hint_text": "Lisää kuvaus...",
|
||||||
"description_input_submit_error": "Virhe kuvauksen päivittämisessä, tarkista lisätiedot lokista",
|
"description_input_submit_error": "Virhe kuvauksen päivittämisessä, tarkista lisätiedot lokista",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Päivämäärä ja aika",
|
"edit_date_time_dialog_date_time": "Päivämäärä ja aika",
|
||||||
"edit_date_time_dialog_timezone": "Aikavyöhyke",
|
"edit_date_time_dialog_timezone": "Aikavyöhyke",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Sijainti",
|
"edit_location_dialog_title": "Sijainti",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Lisää kuvaus…",
|
"exif_bottom_sheet_description": "Lisää kuvaus…",
|
||||||
"exif_bottom_sheet_details": "TIEDOT",
|
"exif_bottom_sheet_details": "TIEDOT",
|
||||||
"exif_bottom_sheet_location": "SIJAINTI",
|
"exif_bottom_sheet_location": "SIJAINTI",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Jos käytät sovellusta ensimmäistä kertaa, muista valita varmuuskopioitavat albumi(t), jotta aikajanalla voi olla kuvia ja videoita.",
|
"home_page_first_time_notice": "Jos käytät sovellusta ensimmäistä kertaa, muista valita varmuuskopioitavat albumi(t), jotta aikajanalla voi olla kuvia ja videoita.",
|
||||||
"home_page_share_err_local": "Paikallisia kohteita ei voitu jakaa linkkien avulla. Hypätään yli",
|
"home_page_share_err_local": "Paikallisia kohteita ei voitu jakaa linkkien avulla. Hypätään yli",
|
||||||
"home_page_upload_err_limit": "Voit lähettää palvelimelle enintään 30 kohdetta kerrallaan, ohitetaan",
|
"home_page_upload_err_limit": "Voit lähettää palvelimelle enintään 30 kohdetta kerrallaan, ohitetaan",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Lataus epäonnistui",
|
"image_viewer_page_state_provider_download_error": "Lataus epäonnistui",
|
||||||
"image_viewer_page_state_provider_download_started": "Lataaminen aloitettu",
|
"image_viewer_page_state_provider_download_started": "Lataaminen aloitettu",
|
||||||
"image_viewer_page_state_provider_download_success": "Lataus onnistui",
|
"image_viewer_page_state_provider_download_success": "Lataus onnistui",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Kirjaudu ulos",
|
"profile_drawer_sign_out": "Kirjaudu ulos",
|
||||||
"profile_drawer_trash": "Roskakori",
|
"profile_drawer_trash": "Roskakori",
|
||||||
"recently_added_page_title": "Viimeksi lisätyt",
|
"recently_added_page_title": "Viimeksi lisätyt",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Tapahtui virhe",
|
"scaffold_body_error_occurred": "Tapahtui virhe",
|
||||||
"search_bar_hint": "Etsi kuvia",
|
"search_bar_hint": "Etsi kuvia",
|
||||||
"search_filter_apply": "Käytä",
|
"search_filter_apply": "Käytä",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Luo jaettu albumi",
|
"sharing_silver_appbar_create_shared_album": "Luo jaettu albumi",
|
||||||
"sharing_silver_appbar_shared_links": "Jaetut linkit",
|
"sharing_silver_appbar_shared_links": "Jaetut linkit",
|
||||||
"sharing_silver_appbar_share_partner": "Jaa kumppanille",
|
"sharing_silver_appbar_share_partner": "Jaa kumppanille",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Kirjasto",
|
"tab_controller_nav_library": "Kirjasto",
|
||||||
"tab_controller_nav_photos": "Kuvat",
|
"tab_controller_nav_photos": "Kuvat",
|
||||||
"tab_controller_nav_search": "Haku",
|
"tab_controller_nav_search": "Haku",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Supprimer",
|
"control_bottom_app_bar_delete": "Supprimer",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Partager",
|
"create_shared_album_page_share": "Partager",
|
||||||
"create_shared_album_page_share_add_assets": "AJOUTER DES ÉLÉMENTS",
|
"create_shared_album_page_share_add_assets": "AJOUTER DES ÉLÉMENTS",
|
||||||
"create_shared_album_page_share_select_photos": "Sélectionner les photos",
|
"create_shared_album_page_share_select_photos": "Sélectionner les photos",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Places",
|
"curated_location_page_title": "Places",
|
||||||
"curated_object_page_title": "Objets",
|
"curated_object_page_title": "Objets",
|
||||||
"daily_title_text_date": "E, dd MMM",
|
"daily_title_text_date": "E, dd MMM",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Supprimer le lien partagé",
|
"delete_shared_link_dialog_title": "Supprimer le lien partagé",
|
||||||
"description_input_hint_text": "Ajouter une description...",
|
"description_input_hint_text": "Ajouter une description...",
|
||||||
"description_input_submit_error": "Erreur de mise à jour de la description, vérifier le journal pour plus de détails",
|
"description_input_submit_error": "Erreur de mise à jour de la description, vérifier le journal pour plus de détails",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Date and Time",
|
"edit_date_time_dialog_date_time": "Date and Time",
|
||||||
"edit_date_time_dialog_timezone": "Timezone",
|
"edit_date_time_dialog_timezone": "Timezone",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Location",
|
"edit_location_dialog_title": "Location",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Ajouter une description...",
|
"exif_bottom_sheet_description": "Ajouter une description...",
|
||||||
"exif_bottom_sheet_details": "DÉTAILS",
|
"exif_bottom_sheet_details": "DÉTAILS",
|
||||||
"exif_bottom_sheet_location": "LOCALISATION",
|
"exif_bottom_sheet_location": "LOCALISATION",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Si c'est la première fois que vous utilisez l'application, veillez à choisir un ou plusieurs albums de sauvegarde afin que la chronologie puisse alimenter les photos et les vidéos de cet ou ces albums.",
|
"home_page_first_time_notice": "Si c'est la première fois que vous utilisez l'application, veillez à choisir un ou plusieurs albums de sauvegarde afin que la chronologie puisse alimenter les photos et les vidéos de cet ou ces albums.",
|
||||||
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
||||||
"home_page_upload_err_limit": "Limite de téléchargement de 30 éléments en même temps, demande ignorée",
|
"home_page_upload_err_limit": "Limite de téléchargement de 30 éléments en même temps, demande ignorée",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Erreur de téléchargement",
|
"image_viewer_page_state_provider_download_error": "Erreur de téléchargement",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||||
"image_viewer_page_state_provider_download_success": "Téléchargement réussi",
|
"image_viewer_page_state_provider_download_success": "Téléchargement réussi",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Se déconnecter",
|
"profile_drawer_sign_out": "Se déconnecter",
|
||||||
"profile_drawer_trash": "Corbeille",
|
"profile_drawer_trash": "Corbeille",
|
||||||
"recently_added_page_title": "Récemment ajouté",
|
"recently_added_page_title": "Récemment ajouté",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Error occurred",
|
"scaffold_body_error_occurred": "Error occurred",
|
||||||
"search_bar_hint": "Rechercher vos photos",
|
"search_bar_hint": "Rechercher vos photos",
|
||||||
"search_filter_apply": "Apply filter",
|
"search_filter_apply": "Apply filter",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Créer un album partagé",
|
"sharing_silver_appbar_create_shared_album": "Créer un album partagé",
|
||||||
"sharing_silver_appbar_shared_links": "Liens partagés",
|
"sharing_silver_appbar_shared_links": "Liens partagés",
|
||||||
"sharing_silver_appbar_share_partner": "Partager avec un partenaire",
|
"sharing_silver_appbar_share_partner": "Partager avec un partenaire",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Bibliothèque",
|
"tab_controller_nav_library": "Bibliothèque",
|
||||||
"tab_controller_nav_photos": "Photos",
|
"tab_controller_nav_photos": "Photos",
|
||||||
"tab_controller_nav_search": "Recherche",
|
"tab_controller_nav_search": "Recherche",
|
||||||
|
@ -3,16 +3,16 @@
|
|||||||
"action_common_cancel": "Annuler",
|
"action_common_cancel": "Annuler",
|
||||||
"action_common_clear": "Vider",
|
"action_common_clear": "Vider",
|
||||||
"action_common_confirm": "Confirmer",
|
"action_common_confirm": "Confirmer",
|
||||||
"action_common_save": "Save",
|
"action_common_save": "Sauvegarder",
|
||||||
"action_common_select": "Select",
|
"action_common_select": "Sélectionner",
|
||||||
"action_common_update": "Mise à jour",
|
"action_common_update": "Mise à jour",
|
||||||
"add_to_album_bottom_sheet_added": "Ajouté à {album}",
|
"add_to_album_bottom_sheet_added": "Ajouté à {album}",
|
||||||
"add_to_album_bottom_sheet_already_exists": "Déjà dans {album}",
|
"add_to_album_bottom_sheet_already_exists": "Déjà dans {album}",
|
||||||
"advanced_settings_log_level_title": "Log level: {}",
|
"advanced_settings_log_level_title": "Log level: {}",
|
||||||
"advanced_settings_prefer_remote_subtitle": "Certains appareils sont terriblement lents à charger des miniatures à partir de ressources présentes sur l'appareil. Activez ce paramètre pour charger des images distantes à la place.",
|
"advanced_settings_prefer_remote_subtitle": "Certains appareils sont terriblement lents à charger des miniatures à partir de ressources présentes sur l'appareil. Activez ce paramètre pour charger des images distantes à la place.",
|
||||||
"advanced_settings_prefer_remote_title": "Préférer les images distantes",
|
"advanced_settings_prefer_remote_title": "Préférer les images distantes",
|
||||||
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
|
"advanced_settings_proxy_headers_subtitle": "Ajoutez des en-têtes personnalisés à chaque requête réseau",
|
||||||
"advanced_settings_proxy_headers_title": "Proxy Headers",
|
"advanced_settings_proxy_headers_title": "En-têtes de proxy",
|
||||||
"advanced_settings_self_signed_ssl_subtitle": "Permet d'ignorer la vérification du certificat SSL pour le point d'extrémité du serveur. Requis pour les certificats auto-signés.",
|
"advanced_settings_self_signed_ssl_subtitle": "Permet d'ignorer la vérification du certificat SSL pour le point d'extrémité du serveur. Requis pour les certificats auto-signés.",
|
||||||
"advanced_settings_self_signed_ssl_title": "Autoriser les certificats SSL auto-signés",
|
"advanced_settings_self_signed_ssl_title": "Autoriser les certificats SSL auto-signés",
|
||||||
"advanced_settings_tile_subtitle": "Paramètres d'utilisateur avancés",
|
"advanced_settings_tile_subtitle": "Paramètres d'utilisateur avancés",
|
||||||
@ -26,7 +26,7 @@
|
|||||||
"album_thumbnail_card_shared": " · Partagé",
|
"album_thumbnail_card_shared": " · Partagé",
|
||||||
"album_thumbnail_owned": "Possédé",
|
"album_thumbnail_owned": "Possédé",
|
||||||
"album_thumbnail_shared_by": "Partagé par {}",
|
"album_thumbnail_shared_by": "Partagé par {}",
|
||||||
"album_viewer_appbar_delete_confirm": "Êtes-vous sur de vouloir supprimer cet album de votre compte?",
|
"album_viewer_appbar_delete_confirm": "Êtes-vous sur de vouloir supprimer cet album de votre compte ?",
|
||||||
"album_viewer_appbar_share_delete": "Supprimer l'album",
|
"album_viewer_appbar_share_delete": "Supprimer l'album",
|
||||||
"album_viewer_appbar_share_err_delete": "Échec de la suppression de l'album",
|
"album_viewer_appbar_share_err_delete": "Échec de la suppression de l'album",
|
||||||
"album_viewer_appbar_share_err_leave": "Impossible de quitter l'album",
|
"album_viewer_appbar_share_err_leave": "Impossible de quitter l'album",
|
||||||
@ -54,13 +54,13 @@
|
|||||||
"asset_list_layout_sub_title": "Disposition",
|
"asset_list_layout_sub_title": "Disposition",
|
||||||
"asset_list_settings_subtitle": "Paramètres de disposition de la grille de photos",
|
"asset_list_settings_subtitle": "Paramètres de disposition de la grille de photos",
|
||||||
"asset_list_settings_title": "Grille de photos",
|
"asset_list_settings_title": "Grille de photos",
|
||||||
"asset_restored_successfully": "Asset restored successfully",
|
"asset_restored_successfully": "Élément restauré avec succès",
|
||||||
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
"assets_deleted_permanently": "{} élément(s) supprimé(s) définitivement",
|
||||||
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
"assets_deleted_permanently_from_server": "{} élément(s) supprimé(s) définitivement du serveur Immich",
|
||||||
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
"assets_removed_permanently_from_device": "\"{} élément(s) supprimé(s) définitivement de votre appareil",
|
||||||
"assets_restored_successfully": "{} asset(s) restored successfully",
|
"assets_restored_successfully": "Élément restauré avec succès",
|
||||||
"assets_trashed": "{} asset(s) trashed",
|
"assets_trashed": "{} élément(s) déplacé(s) vers la corbeill",
|
||||||
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
"assets_trashed_from_server": "{} élément(s) déplacé(s) vers la corbeille du serveur Immich",
|
||||||
"asset_viewer_settings_title": "Visualisateur d'éléments",
|
"asset_viewer_settings_title": "Visualisateur d'éléments",
|
||||||
"backup_album_selection_page_albums_device": "Albums sur l'appareil ({})",
|
"backup_album_selection_page_albums_device": "Albums sur l'appareil ({})",
|
||||||
"backup_album_selection_page_albums_tap": "Tapez pour inclure, tapez deux fois pour exclure",
|
"backup_album_selection_page_albums_tap": "Tapez pour inclure, tapez deux fois pour exclure",
|
||||||
@ -150,21 +150,21 @@
|
|||||||
"change_password_form_new_password": "Nouveau mot de passe",
|
"change_password_form_new_password": "Nouveau mot de passe",
|
||||||
"change_password_form_password_mismatch": "Les mots de passe ne correspondent pas",
|
"change_password_form_password_mismatch": "Les mots de passe ne correspondent pas",
|
||||||
"change_password_form_reenter_new_password": "Saisissez à nouveau le nouveau mot de passe",
|
"change_password_form_reenter_new_password": "Saisissez à nouveau le nouveau mot de passe",
|
||||||
"client_cert_dialog_msg_confirm": "OK",
|
"client_cert_dialog_msg_confirm": "Ok",
|
||||||
"client_cert_enter_password": "Enter Password",
|
"client_cert_enter_password": "Entrer mot de passe",
|
||||||
"client_cert_import": "Import",
|
"client_cert_import": "Imorted",
|
||||||
"client_cert_import_success_msg": "Client certificate is imported",
|
"client_cert_import_success_msg": "Certificat importé",
|
||||||
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
|
"client_cert_invalid_msg": "Fichier de certificat invalide ou mot de passe incorrect",
|
||||||
"client_cert_remove": "Remove",
|
"client_cert_remove": "Supprimer",
|
||||||
"client_cert_remove_msg": "Client certificate is removed",
|
"client_cert_remove_msg": "Certificat supprimé",
|
||||||
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
|
"client_cert_subtitle": "Prend en charge uniquement le format PKCS12 (.p12, .pfx). L'importation/suppression de certificats n'est possible qu'avant la connexion",
|
||||||
"client_cert_title": "SSL Client Certificate",
|
"client_cert_title": "Certificat SSL",
|
||||||
"common_add_to_album": "Ajouter à l'album",
|
"common_add_to_album": "Ajouter à l'album",
|
||||||
"common_change_password": "Modifier le mot de passe",
|
"common_change_password": "Modifier le mot de passe",
|
||||||
"common_create_new_album": "Créer un nouvel album",
|
"common_create_new_album": "Créer un nouvel album",
|
||||||
"common_server_error": "Veuillez vérifier votre connexion réseau, vous assurer que le serveur est accessible et que les versions de l'application et du serveur sont compatibles.",
|
"common_server_error": "Veuillez vérifier votre connexion réseau, vous assurer que le serveur est accessible et que les versions de l'application et du serveur sont compatibles.",
|
||||||
"common_shared": "Partagé",
|
"common_shared": "Partagé",
|
||||||
"contextual_search": "Sunrise on the beach",
|
"contextual_search": "Lever de soleil sur la plage",
|
||||||
"control_bottom_app_bar_add_to_album": "Ajouter à l'album",
|
"control_bottom_app_bar_add_to_album": "Ajouter à l'album",
|
||||||
"control_bottom_app_bar_album_info": "{} éléments",
|
"control_bottom_app_bar_album_info": "{} éléments",
|
||||||
"control_bottom_app_bar_album_info_shared": "{} éléments - Partagés",
|
"control_bottom_app_bar_album_info_shared": "{} éléments - Partagés",
|
||||||
@ -173,7 +173,8 @@
|
|||||||
"control_bottom_app_bar_delete": "Supprimer",
|
"control_bottom_app_bar_delete": "Supprimer",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Supprimer de Immich",
|
"control_bottom_app_bar_delete_from_immich": "Supprimer de Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Supprimer de l'appareil",
|
"control_bottom_app_bar_delete_from_local": "Supprimer de l'appareil",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_download": "Télécharger",
|
||||||
|
"control_bottom_app_bar_edit": "Modifier",
|
||||||
"control_bottom_app_bar_edit_location": "Modifier la localisation",
|
"control_bottom_app_bar_edit_location": "Modifier la localisation",
|
||||||
"control_bottom_app_bar_edit_time": "Modifier la date et l'heure",
|
"control_bottom_app_bar_edit_time": "Modifier la date et l'heure",
|
||||||
"control_bottom_app_bar_favorite": "Favoris",
|
"control_bottom_app_bar_favorite": "Favoris",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Partager",
|
"create_shared_album_page_share": "Partager",
|
||||||
"create_shared_album_page_share_add_assets": "AJOUTER DES ÉLÉMENTS",
|
"create_shared_album_page_share_add_assets": "AJOUTER DES ÉLÉMENTS",
|
||||||
"create_shared_album_page_share_select_photos": "Sélectionner les photos",
|
"create_shared_album_page_share_select_photos": "Sélectionner les photos",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Lieux",
|
"curated_location_page_title": "Lieux",
|
||||||
"curated_object_page_title": "Objets",
|
"curated_object_page_title": "Objets",
|
||||||
"daily_title_text_date": "E, dd MMM",
|
"daily_title_text_date": "E, dd MMM",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Supprimer le lien partagé",
|
"delete_shared_link_dialog_title": "Supprimer le lien partagé",
|
||||||
"description_input_hint_text": "Ajouter une description…",
|
"description_input_hint_text": "Ajouter une description…",
|
||||||
"description_input_submit_error": "Erreur de mise à jour de la description, vérifier le journal pour plus de détails",
|
"description_input_submit_error": "Erreur de mise à jour de la description, vérifier le journal pour plus de détails",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Date et heure",
|
"edit_date_time_dialog_date_time": "Date et heure",
|
||||||
"edit_date_time_dialog_timezone": "Fuseau horaire",
|
"edit_date_time_dialog_timezone": "Fuseau horaire",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Localisation",
|
"edit_location_dialog_title": "Localisation",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Ajouter une description…",
|
"exif_bottom_sheet_description": "Ajouter une description…",
|
||||||
"exif_bottom_sheet_details": "DÉTAILS",
|
"exif_bottom_sheet_details": "DÉTAILS",
|
||||||
"exif_bottom_sheet_location": "LOCALISATION",
|
"exif_bottom_sheet_location": "LOCALISATION",
|
||||||
@ -223,11 +231,11 @@
|
|||||||
"experimental_settings_title": "Expérimental",
|
"experimental_settings_title": "Expérimental",
|
||||||
"favorites_page_no_favorites": "Aucun élément favori n'a été trouvé",
|
"favorites_page_no_favorites": "Aucun élément favori n'a été trouvé",
|
||||||
"favorites_page_title": "Favoris",
|
"favorites_page_title": "Favoris",
|
||||||
"filename_search": "File name or extension",
|
"filename_search": "Nom de fichier ou extension",
|
||||||
"haptic_feedback_switch": "Activer le retour haptique",
|
"haptic_feedback_switch": "Activer le retour haptique",
|
||||||
"haptic_feedback_title": "Retour haptique",
|
"haptic_feedback_title": "Retour haptique",
|
||||||
"header_settings_add_header_tip": "Add Header",
|
"header_settings_add_header_tip": "Ajouter un en-tête",
|
||||||
"header_settings_field_validator_msg": "Value cannot be empty",
|
"header_settings_field_validator_msg": "Cette valeur ne peut pas être vide",
|
||||||
"header_settings_header_name_input": "Nom de l'en-tête",
|
"header_settings_header_name_input": "Nom de l'en-tête",
|
||||||
"header_settings_header_value_input": "Valeur de l'en-tête",
|
"header_settings_header_value_input": "Valeur de l'en-tête",
|
||||||
"header_settings_page_title": "En-têtes de proxy",
|
"header_settings_page_title": "En-têtes de proxy",
|
||||||
@ -247,12 +255,13 @@
|
|||||||
"home_page_first_time_notice": "Si c'est la première fois que vous utilisez l'application, veillez à choisir un ou plusieurs albums de sauvegarde afin que la chronologie puisse alimenter les photos et les vidéos de cet ou ces albums.",
|
"home_page_first_time_notice": "Si c'est la première fois que vous utilisez l'application, veillez à choisir un ou plusieurs albums de sauvegarde afin que la chronologie puisse alimenter les photos et les vidéos de cet ou ces albums.",
|
||||||
"home_page_share_err_local": "Impossible de partager par lien les médias locaux, cette opération est donc ignorée.",
|
"home_page_share_err_local": "Impossible de partager par lien les médias locaux, cette opération est donc ignorée.",
|
||||||
"home_page_upload_err_limit": "Limite de téléchargement de 30 éléments en même temps, demande ignorée",
|
"home_page_upload_err_limit": "Limite de téléchargement de 30 éléments en même temps, demande ignorée",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Erreur de téléchargement",
|
"image_viewer_page_state_provider_download_error": "Erreur de téléchargement",
|
||||||
"image_viewer_page_state_provider_download_started": "Téléchargement Démarré",
|
"image_viewer_page_state_provider_download_started": "Téléchargement démarré",
|
||||||
"image_viewer_page_state_provider_download_success": "Téléchargement réussi",
|
"image_viewer_page_state_provider_download_success": "Téléchargement réussi",
|
||||||
"image_viewer_page_state_provider_share_error": "Erreur de partage",
|
"image_viewer_page_state_provider_share_error": "Erreur de partage",
|
||||||
"invalid_date": "Invalid date",
|
"invalid_date": "Date invalide",
|
||||||
"invalid_date_format": "Invalid date format",
|
"invalid_date_format": "Format de date invalide",
|
||||||
"library_page_albums": "Albums",
|
"library_page_albums": "Albums",
|
||||||
"library_page_archive": "Archive",
|
"library_page_archive": "Archive",
|
||||||
"library_page_device_albums": "Albums sur l'appareil",
|
"library_page_device_albums": "Albums sur l'appareil",
|
||||||
@ -334,7 +343,7 @@
|
|||||||
"multiselect_grid_edit_date_time_err_read_only": "Impossible de modifier la date d'un élément d'actif en lecture seule.",
|
"multiselect_grid_edit_date_time_err_read_only": "Impossible de modifier la date d'un élément d'actif en lecture seule.",
|
||||||
"multiselect_grid_edit_gps_err_read_only": "Impossible de modifier l'emplacement d'un élément en lecture seule.",
|
"multiselect_grid_edit_gps_err_read_only": "Impossible de modifier l'emplacement d'un élément en lecture seule.",
|
||||||
"no_assets_to_show": "Aucuns éléments à afficher",
|
"no_assets_to_show": "Aucuns éléments à afficher",
|
||||||
"no_name": "No name",
|
"no_name": "Sans nom",
|
||||||
"notification_permission_dialog_cancel": "Annuler",
|
"notification_permission_dialog_cancel": "Annuler",
|
||||||
"notification_permission_dialog_content": "Pour activer les notifications, allez dans Paramètres et sélectionnez Autoriser.",
|
"notification_permission_dialog_content": "Pour activer les notifications, allez dans Paramètres et sélectionnez Autoriser.",
|
||||||
"notification_permission_dialog_settings": "Paramètres",
|
"notification_permission_dialog_settings": "Paramètres",
|
||||||
@ -369,39 +378,40 @@
|
|||||||
"profile_drawer_client_server_up_to_date": "Le client et le serveur sont à jour",
|
"profile_drawer_client_server_up_to_date": "Le client et le serveur sont à jour",
|
||||||
"profile_drawer_documentation": "Documentation",
|
"profile_drawer_documentation": "Documentation",
|
||||||
"profile_drawer_github": "GitHub",
|
"profile_drawer_github": "GitHub",
|
||||||
"profile_drawer_server_out_of_date_major": "Le serveur est obsolète. Veuillez mettre à jour vers la dernière version majeure..",
|
"profile_drawer_server_out_of_date_major": "Le serveur est obsolète. Veuillez mettre à jour vers la dernière version majeure.",
|
||||||
"profile_drawer_server_out_of_date_minor": "Le serveur est obsolète. Veuillez mettre à jour vers la dernière version majeure.",
|
"profile_drawer_server_out_of_date_minor": "Le serveur est obsolète. Veuillez mettre à jour vers la dernière version mineure.",
|
||||||
"profile_drawer_settings": "Paramètres",
|
"profile_drawer_settings": "Paramètres",
|
||||||
"profile_drawer_sign_out": "Se déconnecter",
|
"profile_drawer_sign_out": "Se déconnecter",
|
||||||
"profile_drawer_trash": "Corbeille",
|
"profile_drawer_trash": "Corbeille",
|
||||||
"recently_added_page_title": "Récemment ajouté",
|
"recently_added_page_title": "Récemment ajouté",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Une erreur s'est produite",
|
"scaffold_body_error_occurred": "Une erreur s'est produite",
|
||||||
"search_bar_hint": "Rechercher vos photos",
|
"search_bar_hint": "Rechercher vos photos",
|
||||||
"search_filter_apply": "Appliquer le filtre",
|
"search_filter_apply": "Appliquer le filtre",
|
||||||
"search_filter_camera": "Camera",
|
"search_filter_camera": "Appareil",
|
||||||
"search_filter_camera_make": "Fabricant",
|
"search_filter_camera_make": "Fabricant",
|
||||||
"search_filter_camera_model": "Modéle",
|
"search_filter_camera_model": "Modéle",
|
||||||
"search_filter_camera_title": "Select camera type",
|
"search_filter_camera_title": "Sélectionner le type d'appareil",
|
||||||
"search_filter_date": "Date",
|
"search_filter_date": "Date",
|
||||||
"search_filter_date_interval": "{start} to {end}",
|
"search_filter_date_interval": "{start} à {end}",
|
||||||
"search_filter_date_title": "Select a date range",
|
"search_filter_date_title": "Sélectionner une période",
|
||||||
"search_filter_display_option_archive": "Achive",
|
"search_filter_display_option_archive": "Archive",
|
||||||
"search_filter_display_option_favorite": "Favoris",
|
"search_filter_display_option_favorite": "Favoris",
|
||||||
"search_filter_display_option_not_in_album": "Pas dans un album",
|
"search_filter_display_option_not_in_album": "Pas dans un album",
|
||||||
"search_filter_display_options": "Display Options",
|
"search_filter_display_options": "Options d'affichage",
|
||||||
"search_filter_display_options_title": "Display options",
|
"search_filter_display_options_title": "Options d'affichage",
|
||||||
"search_filter_location": "Location",
|
"search_filter_location": "Lieu",
|
||||||
"search_filter_location_city": "Ville",
|
"search_filter_location_city": "Ville",
|
||||||
"search_filter_location_country": "Pays",
|
"search_filter_location_country": "Pays",
|
||||||
"search_filter_location_state": "Région",
|
"search_filter_location_state": "Région",
|
||||||
"search_filter_location_title": "Select location",
|
"search_filter_location_title": "Sélectionner un lieu",
|
||||||
"search_filter_media_type": "Media Type",
|
"search_filter_media_type": "Type de média",
|
||||||
"search_filter_media_type_all": "Tous",
|
"search_filter_media_type_all": "Tous",
|
||||||
"search_filter_media_type_image": "Image",
|
"search_filter_media_type_image": "Image",
|
||||||
"search_filter_media_type_title": "Select media type",
|
"search_filter_media_type_title": "Sélectionner type de média",
|
||||||
"search_filter_media_type_video": "Vidéo",
|
"search_filter_media_type_video": "Vidéo",
|
||||||
"search_filter_people": "People",
|
"search_filter_people": "Personnes",
|
||||||
"search_filter_people_title": "Select people",
|
"search_filter_people_title": "Sélectionner une personne",
|
||||||
"search_page_categories": "Catégories",
|
"search_page_categories": "Catégories",
|
||||||
"search_page_favorites": "Favoris",
|
"search_page_favorites": "Favoris",
|
||||||
"search_page_motion_photos": "Photos animées",
|
"search_page_motion_photos": "Photos animées",
|
||||||
@ -529,27 +539,31 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Créer un album partagé",
|
"sharing_silver_appbar_create_shared_album": "Créer un album partagé",
|
||||||
"sharing_silver_appbar_shared_links": "Liens partagés",
|
"sharing_silver_appbar_shared_links": "Liens partagés",
|
||||||
"sharing_silver_appbar_share_partner": "Partager avec un partenaire",
|
"sharing_silver_appbar_share_partner": "Partager avec un partenaire",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Bibliothèque",
|
"tab_controller_nav_library": "Bibliothèque",
|
||||||
"tab_controller_nav_photos": "Photos",
|
"tab_controller_nav_photos": "Photos",
|
||||||
"tab_controller_nav_search": "Recherche",
|
"tab_controller_nav_search": "Recherche",
|
||||||
"tab_controller_nav_sharing": "Partage",
|
"tab_controller_nav_sharing": "Partage",
|
||||||
"theme_setting_asset_list_storage_indicator_title": "Afficher l'indicateur de stockage sur les tuiles des éléments",
|
"theme_setting_asset_list_storage_indicator_title": "Afficher l'indicateur de stockage sur les tuiles des éléments",
|
||||||
"theme_setting_asset_list_tiles_per_row_title": "Nombre d'éléments par ligne ({})",
|
"theme_setting_asset_list_tiles_per_row_title": "Nombre d'éléments par ligne ({})",
|
||||||
"theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.",
|
"theme_setting_colorful_interface_subtitle": "Appliquer la couleur principale sur les surfaces d'arrière-plan.",
|
||||||
"theme_setting_colorful_interface_title": "Colorful interface",
|
"theme_setting_colorful_interface_title": "Interface colorée",
|
||||||
"theme_setting_dark_mode_switch": "Mode sombre",
|
"theme_setting_dark_mode_switch": "Mode sombre",
|
||||||
"theme_setting_image_viewer_quality_subtitle": "Ajustez la qualité de la visionneuse d'images détaillées",
|
"theme_setting_image_viewer_quality_subtitle": "Ajustez la qualité de la visionneuse d'images détaillées",
|
||||||
"theme_setting_image_viewer_quality_title": "Qualité de la visualisation des images",
|
"theme_setting_image_viewer_quality_title": "Qualité de la visualisation des images",
|
||||||
"theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.",
|
"theme_setting_primary_color_subtitle": "Choisissez une couleur pour les actions principales et les accentuations.",
|
||||||
"theme_setting_primary_color_title": "Primary color",
|
"theme_setting_primary_color_title": "Couleur principale",
|
||||||
"theme_setting_system_primary_color_title": "Use system color",
|
"theme_setting_system_primary_color_title": "Utiliser la couleur du système",
|
||||||
"theme_setting_system_theme_switch": "Automatique (suivre les paramètres du système)",
|
"theme_setting_system_theme_switch": "Automatique (suivre les paramètres du système)",
|
||||||
"theme_setting_theme_subtitle": "Choisissez le thème de l'application",
|
"theme_setting_theme_subtitle": "Choisissez le thème de l'application",
|
||||||
"theme_setting_theme_title": "Thème",
|
"theme_setting_theme_title": "Thème",
|
||||||
"theme_setting_three_stage_loading_subtitle": "Le chargement en trois étapes peut améliorer les performances de chargement, mais entraîne une augmentation significative de la charge du réseau.",
|
"theme_setting_three_stage_loading_subtitle": "Le chargement en trois étapes peut améliorer les performances de chargement, mais entraîne une augmentation significative de la charge du réseau.",
|
||||||
"theme_setting_three_stage_loading_title": "Activer le chargement en trois étapes",
|
"theme_setting_three_stage_loading_title": "Activer le chargement en trois étapes",
|
||||||
"translated_text_options": "Options",
|
"translated_text_options": "Options",
|
||||||
"trash_emptied": "Emptied trash",
|
"trash_emptied": "Corbeille vidée",
|
||||||
"trash_page_delete": "Supprimer",
|
"trash_page_delete": "Supprimer",
|
||||||
"trash_page_delete_all": "Tout supprimer",
|
"trash_page_delete_all": "Tout supprimer",
|
||||||
"trash_page_empty_trash_btn": "Vider la corbeille",
|
"trash_page_empty_trash_btn": "Vider la corbeille",
|
||||||
|
@ -54,13 +54,13 @@
|
|||||||
"asset_list_layout_sub_title": "פריסה",
|
"asset_list_layout_sub_title": "פריסה",
|
||||||
"asset_list_settings_subtitle": "הגדרות תבנית רשת תמונות",
|
"asset_list_settings_subtitle": "הגדרות תבנית רשת תמונות",
|
||||||
"asset_list_settings_title": "רשת תמונות",
|
"asset_list_settings_title": "רשת תמונות",
|
||||||
"asset_restored_successfully": "Asset restored successfully",
|
"asset_restored_successfully": "נכס שוחזר בהצלחה",
|
||||||
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
"assets_deleted_permanently": "{} נכס(ים) נמחקו לצמיתות",
|
||||||
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
"assets_deleted_permanently_from_server": "{} נכס(ים) נמחקו לצמיתות משרת ה-Immich",
|
||||||
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
"assets_removed_permanently_from_device": "{} נכס(ים) נמחקו לצמיתות מהמכשיר שלך",
|
||||||
"assets_restored_successfully": "{} asset(s) restored successfully",
|
"assets_restored_successfully": "{} נכס(ים) שוחזרו בהצלחה",
|
||||||
"assets_trashed": "{} asset(s) trashed",
|
"assets_trashed": "{} נכס(ים) הועברו לאשפה",
|
||||||
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
"assets_trashed_from_server": "{} נכס(ים) הועברו לאשפה משרת ה-Immich",
|
||||||
"asset_viewer_settings_title": "מציג הנכסים",
|
"asset_viewer_settings_title": "מציג הנכסים",
|
||||||
"backup_album_selection_page_albums_device": "אלבומים במכשיר ({})",
|
"backup_album_selection_page_albums_device": "אלבומים במכשיר ({})",
|
||||||
"backup_album_selection_page_albums_tap": "הקש כדי לכלול, הקש פעמיים כדי להחריג",
|
"backup_album_selection_page_albums_tap": "הקש כדי לכלול, הקש פעמיים כדי להחריג",
|
||||||
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "מחק",
|
"control_bottom_app_bar_delete": "מחק",
|
||||||
"control_bottom_app_bar_delete_from_immich": "מחק מהשרת",
|
"control_bottom_app_bar_delete_from_immich": "מחק מהשרת",
|
||||||
"control_bottom_app_bar_delete_from_local": "מחק מהמכשיר",
|
"control_bottom_app_bar_delete_from_local": "מחק מהמכשיר",
|
||||||
|
"control_bottom_app_bar_download": "הורדה",
|
||||||
"control_bottom_app_bar_edit": "עריכה",
|
"control_bottom_app_bar_edit": "עריכה",
|
||||||
"control_bottom_app_bar_edit_location": "ערוך מיקום",
|
"control_bottom_app_bar_edit_location": "ערוך מיקום",
|
||||||
"control_bottom_app_bar_edit_time": "ערוך תאריך & זמן",
|
"control_bottom_app_bar_edit_time": "ערוך תאריך & זמן",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "שתף",
|
"create_shared_album_page_share": "שתף",
|
||||||
"create_shared_album_page_share_add_assets": "הוסף נכסים",
|
"create_shared_album_page_share_add_assets": "הוסף נכסים",
|
||||||
"create_shared_album_page_share_select_photos": "בחירת תמונות",
|
"create_shared_album_page_share_select_photos": "בחירת תמונות",
|
||||||
|
"crop": "חתוך",
|
||||||
"curated_location_page_title": "מקומות",
|
"curated_location_page_title": "מקומות",
|
||||||
"curated_object_page_title": "דברים",
|
"curated_object_page_title": "דברים",
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "מחק קישור משותף",
|
"delete_shared_link_dialog_title": "מחק קישור משותף",
|
||||||
"description_input_hint_text": "הוסף תיאור...",
|
"description_input_hint_text": "הוסף תיאור...",
|
||||||
"description_input_submit_error": "שגיאה בעדכון תיאור, בדוק את היומן לפרטים נוספים",
|
"description_input_submit_error": "שגיאה בעדכון תיאור, בדוק את היומן לפרטים נוספים",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "תאריך וזמן",
|
"edit_date_time_dialog_date_time": "תאריך וזמן",
|
||||||
"edit_date_time_dialog_timezone": "אזור זמן",
|
"edit_date_time_dialog_timezone": "אזור זמן",
|
||||||
|
"edit_image_title": "ערוך",
|
||||||
"edit_location_dialog_title": "מיקום",
|
"edit_location_dialog_title": "מיקום",
|
||||||
|
"error_saving_image": "שגיאה: {}",
|
||||||
"exif_bottom_sheet_description": "הוסף תיאור...",
|
"exif_bottom_sheet_description": "הוסף תיאור...",
|
||||||
"exif_bottom_sheet_details": "פרטים",
|
"exif_bottom_sheet_details": "פרטים",
|
||||||
"exif_bottom_sheet_location": "מיקום",
|
"exif_bottom_sheet_location": "מיקום",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "אם זאת הפעם הראשונה שאת/ה משתמש/ת ביישום, נא להקפיד לבחור אלבומ(ים) לגיבוי כך שציר הזמן יוכל לאכלס תמונות וסרטונים באלבומ(ים)",
|
"home_page_first_time_notice": "אם זאת הפעם הראשונה שאת/ה משתמש/ת ביישום, נא להקפיד לבחור אלבומ(ים) לגיבוי כך שציר הזמן יוכל לאכלס תמונות וסרטונים באלבומ(ים)",
|
||||||
"home_page_share_err_local": "לא ניתן לשתף נכסים מקומיים על ידי קישור, מדלג",
|
"home_page_share_err_local": "לא ניתן לשתף נכסים מקומיים על ידי קישור, מדלג",
|
||||||
"home_page_upload_err_limit": "ניתן להעלות רק מקסימום של 30 נכסים בכל פעם, מדלג",
|
"home_page_upload_err_limit": "ניתן להעלות רק מקסימום של 30 נכסים בכל פעם, מדלג",
|
||||||
|
"image_saved_successfully": "תמונה נשמרה",
|
||||||
"image_viewer_page_state_provider_download_error": "שגיאת הורדה",
|
"image_viewer_page_state_provider_download_error": "שגיאת הורדה",
|
||||||
"image_viewer_page_state_provider_download_started": "ההורדה החלה",
|
"image_viewer_page_state_provider_download_started": "ההורדה החלה",
|
||||||
"image_viewer_page_state_provider_download_success": "הצלחת הורדה",
|
"image_viewer_page_state_provider_download_success": "הצלחת הורדה",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "יציאה",
|
"profile_drawer_sign_out": "יציאה",
|
||||||
"profile_drawer_trash": "אשפה",
|
"profile_drawer_trash": "אשפה",
|
||||||
"recently_added_page_title": "נוסף לאחרונה",
|
"recently_added_page_title": "נוסף לאחרונה",
|
||||||
|
"save_to_gallery": "שמור לגלריה",
|
||||||
"scaffold_body_error_occurred": "אירעה שגיאה",
|
"scaffold_body_error_occurred": "אירעה שגיאה",
|
||||||
"search_bar_hint": "חפש/י בתמונות שלך",
|
"search_bar_hint": "חפש/י בתמונות שלך",
|
||||||
"search_filter_apply": "החל סינון",
|
"search_filter_apply": "החל סינון",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "אלבום משותף חדש",
|
"sharing_silver_appbar_create_shared_album": "אלבום משותף חדש",
|
||||||
"sharing_silver_appbar_shared_links": "קישורים משותפים",
|
"sharing_silver_appbar_shared_links": "קישורים משותפים",
|
||||||
"sharing_silver_appbar_share_partner": "שיתוף עם שותף",
|
"sharing_silver_appbar_share_partner": "שיתוף עם שותף",
|
||||||
|
"sync": "סנכרן",
|
||||||
|
"sync_albums": "סנכרן אלבומים",
|
||||||
|
"sync_albums_manual_subtitle": "סנכרן את כל הסרטונים והתמונות שהועלו לאלבומי הגיבוי שנבחרו",
|
||||||
|
"sync_upload_album_setting_subtitle": "צור והעלה תמונות וסרטונים שלך לאלבומים שנבחרו ביישום",
|
||||||
"tab_controller_nav_library": "ספרייה",
|
"tab_controller_nav_library": "ספרייה",
|
||||||
"tab_controller_nav_photos": "תמונות",
|
"tab_controller_nav_photos": "תמונות",
|
||||||
"tab_controller_nav_search": "חיפוש",
|
"tab_controller_nav_search": "חיפוש",
|
||||||
@ -549,7 +563,7 @@
|
|||||||
"theme_setting_three_stage_loading_subtitle": "טעינה בשלושה שלבים עשויה לשפר את ביצועי הטעינה אבל גורמת באופן משמעותי לעומס רשת גבוה יותר",
|
"theme_setting_three_stage_loading_subtitle": "טעינה בשלושה שלבים עשויה לשפר את ביצועי הטעינה אבל גורמת באופן משמעותי לעומס רשת גבוה יותר",
|
||||||
"theme_setting_three_stage_loading_title": "אפשר טעינה בשלושה שלבים",
|
"theme_setting_three_stage_loading_title": "אפשר טעינה בשלושה שלבים",
|
||||||
"translated_text_options": "אפשרויות",
|
"translated_text_options": "אפשרויות",
|
||||||
"trash_emptied": "Emptied trash",
|
"trash_emptied": "האשפה רוקנה",
|
||||||
"trash_page_delete": "מחק",
|
"trash_page_delete": "מחק",
|
||||||
"trash_page_delete_all": "מחק הכל",
|
"trash_page_delete_all": "מחק הכל",
|
||||||
"trash_page_empty_trash_btn": "רוקן אשפה",
|
"trash_page_empty_trash_btn": "רוקן אשפה",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Delete",
|
"control_bottom_app_bar_delete": "Delete",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Share",
|
"create_shared_album_page_share": "Share",
|
||||||
"create_shared_album_page_share_add_assets": "ADD ASSETS",
|
"create_shared_album_page_share_add_assets": "ADD ASSETS",
|
||||||
"create_shared_album_page_share_select_photos": "Select Photos",
|
"create_shared_album_page_share_select_photos": "Select Photos",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Places",
|
"curated_location_page_title": "Places",
|
||||||
"curated_object_page_title": "Things",
|
"curated_object_page_title": "Things",
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "साझा किए गए लिंक को हटाएं",
|
"delete_shared_link_dialog_title": "साझा किए गए लिंक को हटाएं",
|
||||||
"description_input_hint_text": "Add description...",
|
"description_input_hint_text": "Add description...",
|
||||||
"description_input_submit_error": "Error updating description, check the log for more details",
|
"description_input_submit_error": "Error updating description, check the log for more details",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Date and Time",
|
"edit_date_time_dialog_date_time": "Date and Time",
|
||||||
"edit_date_time_dialog_timezone": "Timezone",
|
"edit_date_time_dialog_timezone": "Timezone",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Location",
|
"edit_location_dialog_title": "Location",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Add Description...",
|
"exif_bottom_sheet_description": "Add Description...",
|
||||||
"exif_bottom_sheet_details": "DETAILS",
|
"exif_bottom_sheet_details": "DETAILS",
|
||||||
"exif_bottom_sheet_location": "LOCATION",
|
"exif_bottom_sheet_location": "LOCATION",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
||||||
"home_page_share_err_local": "लोकल एसेट्स को लिंक के जरिए शेयर नहीं कर सकते, स्किप कर रहे हैं",
|
"home_page_share_err_local": "लोकल एसेट्स को लिंक के जरिए शेयर नहीं कर सकते, स्किप कर रहे हैं",
|
||||||
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Download Error",
|
"image_viewer_page_state_provider_download_error": "Download Error",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Sign Out",
|
"profile_drawer_sign_out": "Sign Out",
|
||||||
"profile_drawer_trash": "Trash",
|
"profile_drawer_trash": "Trash",
|
||||||
"recently_added_page_title": "Recently Added",
|
"recently_added_page_title": "Recently Added",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Error occurred",
|
"scaffold_body_error_occurred": "Error occurred",
|
||||||
"search_bar_hint": "Search your photos",
|
"search_bar_hint": "Search your photos",
|
||||||
"search_filter_apply": "Apply filter",
|
"search_filter_apply": "Apply filter",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "New shared album",
|
"sharing_silver_appbar_create_shared_album": "New shared album",
|
||||||
"sharing_silver_appbar_shared_links": "Shared links",
|
"sharing_silver_appbar_shared_links": "Shared links",
|
||||||
"sharing_silver_appbar_share_partner": "Share with partner",
|
"sharing_silver_appbar_share_partner": "Share with partner",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Library",
|
"tab_controller_nav_library": "Library",
|
||||||
"tab_controller_nav_photos": "Photos",
|
"tab_controller_nav_photos": "Photos",
|
||||||
"tab_controller_nav_search": "Search",
|
"tab_controller_nav_search": "Search",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Törlés",
|
"control_bottom_app_bar_delete": "Törlés",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Törlés az Immich-ből",
|
"control_bottom_app_bar_delete_from_immich": "Törlés az Immich-ből",
|
||||||
"control_bottom_app_bar_delete_from_local": "Törlés az eszközről",
|
"control_bottom_app_bar_delete_from_local": "Törlés az eszközről",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Hely Módosítása",
|
"control_bottom_app_bar_edit_location": "Hely Módosítása",
|
||||||
"control_bottom_app_bar_edit_time": "Dátum és Idő Módosítása",
|
"control_bottom_app_bar_edit_time": "Dátum és Idő Módosítása",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Megosztás",
|
"create_shared_album_page_share": "Megosztás",
|
||||||
"create_shared_album_page_share_add_assets": "ELEMEK HOZZÁADÁSA",
|
"create_shared_album_page_share_add_assets": "ELEMEK HOZZÁADÁSA",
|
||||||
"create_shared_album_page_share_select_photos": "Fotók választása",
|
"create_shared_album_page_share_select_photos": "Fotók választása",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Helyek",
|
"curated_location_page_title": "Helyek",
|
||||||
"curated_object_page_title": "Dolgok",
|
"curated_object_page_title": "Dolgok",
|
||||||
"daily_title_text_date": "MMM dd (E)",
|
"daily_title_text_date": "MMM dd (E)",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Megosztott Link Törlése",
|
"delete_shared_link_dialog_title": "Megosztott Link Törlése",
|
||||||
"description_input_hint_text": "Leírás hozzáadása...",
|
"description_input_hint_text": "Leírás hozzáadása...",
|
||||||
"description_input_submit_error": "Nem sikerült frissíteni a leírást. További információért kérjük, nézd meg az eseménynaplót",
|
"description_input_submit_error": "Nem sikerült frissíteni a leírást. További információért kérjük, nézd meg az eseménynaplót",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Dátum és Idő",
|
"edit_date_time_dialog_date_time": "Dátum és Idő",
|
||||||
"edit_date_time_dialog_timezone": "Időzóna",
|
"edit_date_time_dialog_timezone": "Időzóna",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Hely",
|
"edit_location_dialog_title": "Hely",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Leírás Hozzáadása...",
|
"exif_bottom_sheet_description": "Leírás Hozzáadása...",
|
||||||
"exif_bottom_sheet_details": "RÉSZLETEK",
|
"exif_bottom_sheet_details": "RÉSZLETEK",
|
||||||
"exif_bottom_sheet_location": "HELY",
|
"exif_bottom_sheet_location": "HELY",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Ha most használod először az alkalmazást, akkor ahhoz, hogy megjelenjenek a fotók és a videók az idővonaladon, állítsd be, hogy melyik albumaidról készüljön biztonsági mentés.",
|
"home_page_first_time_notice": "Ha most használod először az alkalmazást, akkor ahhoz, hogy megjelenjenek a fotók és a videók az idővonaladon, állítsd be, hogy melyik albumaidról készüljön biztonsági mentés.",
|
||||||
"home_page_share_err_local": "Helyi elemekről nem lehet megosztási linket készíteni, úgyhogy kihagyjuk",
|
"home_page_share_err_local": "Helyi elemekről nem lehet megosztási linket készíteni, úgyhogy kihagyjuk",
|
||||||
"home_page_upload_err_limit": "Csak 30 elemet tudsz egyszerre feltölteni, úgyhogy kihagyjuk",
|
"home_page_upload_err_limit": "Csak 30 elemet tudsz egyszerre feltölteni, úgyhogy kihagyjuk",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Letöltési Hiba",
|
"image_viewer_page_state_provider_download_error": "Letöltési Hiba",
|
||||||
"image_viewer_page_state_provider_download_started": "Letöltés Megkezdődött",
|
"image_viewer_page_state_provider_download_started": "Letöltés Megkezdődött",
|
||||||
"image_viewer_page_state_provider_download_success": "Letöltés Sikeres",
|
"image_viewer_page_state_provider_download_success": "Letöltés Sikeres",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Kijelentkezés",
|
"profile_drawer_sign_out": "Kijelentkezés",
|
||||||
"profile_drawer_trash": "Lomtár",
|
"profile_drawer_trash": "Lomtár",
|
||||||
"recently_added_page_title": "Nemrég Hozzáadott",
|
"recently_added_page_title": "Nemrég Hozzáadott",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Hiba történt",
|
"scaffold_body_error_occurred": "Hiba történt",
|
||||||
"search_bar_hint": "Fotók keresése",
|
"search_bar_hint": "Fotók keresése",
|
||||||
"search_filter_apply": "Szűrő alkalmazása",
|
"search_filter_apply": "Szűrő alkalmazása",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Új megosztott album",
|
"sharing_silver_appbar_create_shared_album": "Új megosztott album",
|
||||||
"sharing_silver_appbar_shared_links": "Megosztási linkek",
|
"sharing_silver_appbar_shared_links": "Megosztási linkek",
|
||||||
"sharing_silver_appbar_share_partner": "Megosztás partnerrel",
|
"sharing_silver_appbar_share_partner": "Megosztás partnerrel",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Képtár",
|
"tab_controller_nav_library": "Képtár",
|
||||||
"tab_controller_nav_photos": "Képek",
|
"tab_controller_nav_photos": "Képek",
|
||||||
"tab_controller_nav_search": "Keresés",
|
"tab_controller_nav_search": "Keresés",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Elimina",
|
"control_bottom_app_bar_delete": "Elimina",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Elimina da Immich",
|
"control_bottom_app_bar_delete_from_immich": "Elimina da Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Elimina dal dispositivo",
|
"control_bottom_app_bar_delete_from_local": "Elimina dal dispositivo",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Modifica posizione",
|
"control_bottom_app_bar_edit_location": "Modifica posizione",
|
||||||
"control_bottom_app_bar_edit_time": "Modifica data e ora",
|
"control_bottom_app_bar_edit_time": "Modifica data e ora",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Condividi",
|
"create_shared_album_page_share": "Condividi",
|
||||||
"create_shared_album_page_share_add_assets": "AGGIUNGI OGGETTI",
|
"create_shared_album_page_share_add_assets": "AGGIUNGI OGGETTI",
|
||||||
"create_shared_album_page_share_select_photos": "Seleziona foto",
|
"create_shared_album_page_share_select_photos": "Seleziona foto",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Location",
|
"curated_location_page_title": "Location",
|
||||||
"curated_object_page_title": "Oggetti",
|
"curated_object_page_title": "Oggetti",
|
||||||
"daily_title_text_date": "E, dd MMM",
|
"daily_title_text_date": "E, dd MMM",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Elimina link condiviso",
|
"delete_shared_link_dialog_title": "Elimina link condiviso",
|
||||||
"description_input_hint_text": "Aggiungi descrizione...",
|
"description_input_hint_text": "Aggiungi descrizione...",
|
||||||
"description_input_submit_error": "Errore modificare descrizione, controlli I log per maggiori dettagli",
|
"description_input_submit_error": "Errore modificare descrizione, controlli I log per maggiori dettagli",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Data e ora",
|
"edit_date_time_dialog_date_time": "Data e ora",
|
||||||
"edit_date_time_dialog_timezone": "Fuso orario",
|
"edit_date_time_dialog_timezone": "Fuso orario",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Posizione",
|
"edit_location_dialog_title": "Posizione",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Aggiungi una descrizione...",
|
"exif_bottom_sheet_description": "Aggiungi una descrizione...",
|
||||||
"exif_bottom_sheet_details": "DETTAGLI",
|
"exif_bottom_sheet_details": "DETTAGLI",
|
||||||
"exif_bottom_sheet_location": "POSIZIONE",
|
"exif_bottom_sheet_location": "POSIZIONE",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Se è la prima volta che utilizzi l'app, assicurati di scegliere uno o più album di backup, in modo che la timeline possa popolare le foto e i video presenti negli album.",
|
"home_page_first_time_notice": "Se è la prima volta che utilizzi l'app, assicurati di scegliere uno o più album di backup, in modo che la timeline possa popolare le foto e i video presenti negli album.",
|
||||||
"home_page_share_err_local": "Non puoi condividere una risorsa locale tramite link, azione ignorata",
|
"home_page_share_err_local": "Non puoi condividere una risorsa locale tramite link, azione ignorata",
|
||||||
"home_page_upload_err_limit": "Puoi caricare al massimo 30 file per volta, ignora quelli in eccesso",
|
"home_page_upload_err_limit": "Puoi caricare al massimo 30 file per volta, ignora quelli in eccesso",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Errore nel Download",
|
"image_viewer_page_state_provider_download_error": "Errore nel Download",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||||
"image_viewer_page_state_provider_download_success": "Download con successo",
|
"image_viewer_page_state_provider_download_success": "Download con successo",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Esci",
|
"profile_drawer_sign_out": "Esci",
|
||||||
"profile_drawer_trash": "Cestino",
|
"profile_drawer_trash": "Cestino",
|
||||||
"recently_added_page_title": "Aggiunti di recente",
|
"recently_added_page_title": "Aggiunti di recente",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Si è verificato un errore.",
|
"scaffold_body_error_occurred": "Si è verificato un errore.",
|
||||||
"search_bar_hint": "Cerca le tue foto",
|
"search_bar_hint": "Cerca le tue foto",
|
||||||
"search_filter_apply": "Applica filtro",
|
"search_filter_apply": "Applica filtro",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Crea album condiviso",
|
"sharing_silver_appbar_create_shared_album": "Crea album condiviso",
|
||||||
"sharing_silver_appbar_shared_links": "Link condivisi",
|
"sharing_silver_appbar_shared_links": "Link condivisi",
|
||||||
"sharing_silver_appbar_share_partner": "Condividi con partner",
|
"sharing_silver_appbar_share_partner": "Condividi con partner",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Libreria",
|
"tab_controller_nav_library": "Libreria",
|
||||||
"tab_controller_nav_photos": "Foto",
|
"tab_controller_nav_photos": "Foto",
|
||||||
"tab_controller_nav_search": "Cerca",
|
"tab_controller_nav_search": "Cerca",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "削除",
|
"control_bottom_app_bar_delete": "削除",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Immichから削除",
|
"control_bottom_app_bar_delete_from_immich": "Immichから削除",
|
||||||
"control_bottom_app_bar_delete_from_local": "デバイスから削除",
|
"control_bottom_app_bar_delete_from_local": "デバイスから削除",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "位置情報を編集",
|
"control_bottom_app_bar_edit_location": "位置情報を編集",
|
||||||
"control_bottom_app_bar_edit_time": "日時を変更",
|
"control_bottom_app_bar_edit_time": "日時を変更",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "共有",
|
"create_shared_album_page_share": "共有",
|
||||||
"create_shared_album_page_share_add_assets": "写真を追加",
|
"create_shared_album_page_share_add_assets": "写真を追加",
|
||||||
"create_shared_album_page_share_select_photos": "写真を選択",
|
"create_shared_album_page_share_select_photos": "写真を選択",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "撮影場所",
|
"curated_location_page_title": "撮影場所",
|
||||||
"curated_object_page_title": "被写体",
|
"curated_object_page_title": "被写体",
|
||||||
"daily_title_text_date": "MM月 DD日, EE",
|
"daily_title_text_date": "MM月 DD日, EE",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "共有リンクを消す",
|
"delete_shared_link_dialog_title": "共有リンクを消す",
|
||||||
"description_input_hint_text": "説明を追加",
|
"description_input_hint_text": "説明を追加",
|
||||||
"description_input_submit_error": "説明の編集に失敗しました。詳細はログを確認してください。",
|
"description_input_submit_error": "説明の編集に失敗しました。詳細はログを確認してください。",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "日付と時間",
|
"edit_date_time_dialog_date_time": "日付と時間",
|
||||||
"edit_date_time_dialog_timezone": "タイムゾーン",
|
"edit_date_time_dialog_timezone": "タイムゾーン",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "位置情報",
|
"edit_location_dialog_title": "位置情報",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "説明を追加",
|
"exif_bottom_sheet_description": "説明を追加",
|
||||||
"exif_bottom_sheet_details": "詳細",
|
"exif_bottom_sheet_details": "詳細",
|
||||||
"exif_bottom_sheet_location": "撮影場所",
|
"exif_bottom_sheet_location": "撮影場所",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "はじめてアプリを使う場合、タイムラインに写真を表示するためにアルバムを選択してください",
|
"home_page_first_time_notice": "はじめてアプリを使う場合、タイムラインに写真を表示するためにアルバムを選択してください",
|
||||||
"home_page_share_err_local": "ローカルのみの項目をリンクで共有はできません。スキップします",
|
"home_page_share_err_local": "ローカルのみの項目をリンクで共有はできません。スキップします",
|
||||||
"home_page_upload_err_limit": "1回でアップロードできる写真の数は30枚です。スキップします",
|
"home_page_upload_err_limit": "1回でアップロードできる写真の数は30枚です。スキップします",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "ダウンロード失敗",
|
"image_viewer_page_state_provider_download_error": "ダウンロード失敗",
|
||||||
"image_viewer_page_state_provider_download_started": "ダウンロードが始まります",
|
"image_viewer_page_state_provider_download_started": "ダウンロードが始まります",
|
||||||
"image_viewer_page_state_provider_download_success": "ダウンロード成功",
|
"image_viewer_page_state_provider_download_success": "ダウンロード成功",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "サインアウト",
|
"profile_drawer_sign_out": "サインアウト",
|
||||||
"profile_drawer_trash": "ゴミ箱",
|
"profile_drawer_trash": "ゴミ箱",
|
||||||
"recently_added_page_title": "最近",
|
"recently_added_page_title": "最近",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "エラーが発生しました",
|
"scaffold_body_error_occurred": "エラーが発生しました",
|
||||||
"search_bar_hint": "写真を検索",
|
"search_bar_hint": "写真を検索",
|
||||||
"search_filter_apply": "フィルターを適用する",
|
"search_filter_apply": "フィルターを適用する",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "共有アルバムを作成",
|
"sharing_silver_appbar_create_shared_album": "共有アルバムを作成",
|
||||||
"sharing_silver_appbar_shared_links": "共有リンク",
|
"sharing_silver_appbar_shared_links": "共有リンク",
|
||||||
"sharing_silver_appbar_share_partner": "パートナーと共有",
|
"sharing_silver_appbar_share_partner": "パートナーと共有",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "ライブラリ",
|
"tab_controller_nav_library": "ライブラリ",
|
||||||
"tab_controller_nav_photos": "写真",
|
"tab_controller_nav_photos": "写真",
|
||||||
"tab_controller_nav_search": "検索",
|
"tab_controller_nav_search": "検索",
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
"advanced_settings_troubleshooting_subtitle": "문제 해결을 위한 추가 기능 사용",
|
"advanced_settings_troubleshooting_subtitle": "문제 해결을 위한 추가 기능 사용",
|
||||||
"advanced_settings_troubleshooting_title": "문제 해결",
|
"advanced_settings_troubleshooting_title": "문제 해결",
|
||||||
"album_info_card_backup_album_excluded": "제외됨",
|
"album_info_card_backup_album_excluded": "제외됨",
|
||||||
"album_info_card_backup_album_included": "포함됨",
|
"album_info_card_backup_album_included": "선택됨",
|
||||||
"album_thumbnail_card_item": "1개 항목",
|
"album_thumbnail_card_item": "1개 항목",
|
||||||
"album_thumbnail_card_items": "{}개 항목",
|
"album_thumbnail_card_items": "{}개 항목",
|
||||||
"album_thumbnail_card_shared": " · 공유됨",
|
"album_thumbnail_card_shared": " · 공유됨",
|
||||||
@ -31,7 +31,7 @@
|
|||||||
"album_viewer_appbar_share_err_delete": "앨범을 삭제하지 못했습니다.",
|
"album_viewer_appbar_share_err_delete": "앨범을 삭제하지 못했습니다.",
|
||||||
"album_viewer_appbar_share_err_leave": "앨범에서 나가지 못했습니다.",
|
"album_viewer_appbar_share_err_leave": "앨범에서 나가지 못했습니다.",
|
||||||
"album_viewer_appbar_share_err_remove": "앨범에서 항목을 제거하지 못했습니다.",
|
"album_viewer_appbar_share_err_remove": "앨범에서 항목을 제거하지 못했습니다.",
|
||||||
"album_viewer_appbar_share_err_title": "앨범 이름을 변경하지 못했습니다.",
|
"album_viewer_appbar_share_err_title": "앨범명을 변경하지 못했습니다.",
|
||||||
"album_viewer_appbar_share_leave": "앨범 나가기",
|
"album_viewer_appbar_share_leave": "앨범 나가기",
|
||||||
"album_viewer_appbar_share_remove": "앨범에서 제거",
|
"album_viewer_appbar_share_remove": "앨범에서 제거",
|
||||||
"album_viewer_appbar_share_to": "공유 대상",
|
"album_viewer_appbar_share_to": "공유 대상",
|
||||||
@ -54,70 +54,70 @@
|
|||||||
"asset_list_layout_sub_title": "레이아웃",
|
"asset_list_layout_sub_title": "레이아웃",
|
||||||
"asset_list_settings_subtitle": "사진 배열 레이아웃 설정",
|
"asset_list_settings_subtitle": "사진 배열 레이아웃 설정",
|
||||||
"asset_list_settings_title": "사진 배열",
|
"asset_list_settings_title": "사진 배열",
|
||||||
"asset_restored_successfully": "Asset restored successfully",
|
"asset_restored_successfully": "항목이 성공적으로 복원되었습니다.",
|
||||||
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
"assets_deleted_permanently": "{}개 항목이 영구적으로 삭제됨",
|
||||||
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
"assets_deleted_permanently_from_server": "{}개 항목이 Immich 서버에서 영구적으로 삭제됨",
|
||||||
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
"assets_removed_permanently_from_device": "{}개 항목이 기기에서 영구적으로 삭제됨",
|
||||||
"assets_restored_successfully": "{} asset(s) restored successfully",
|
"assets_restored_successfully": "항목 {}개를 복원했습니다.",
|
||||||
"assets_trashed": "{} asset(s) trashed",
|
"assets_trashed": "휴지통으로 {}개 항목이 이동되었습니다.",
|
||||||
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
"assets_trashed_from_server": "휴지통으로 Immich 서버의 {}개 항목이 이동되었습니다.",
|
||||||
"asset_viewer_settings_title": "보기 옵션",
|
"asset_viewer_settings_title": "보기 옵션",
|
||||||
"backup_album_selection_page_albums_device": "기기의 앨범 ({})",
|
"backup_album_selection_page_albums_device": "기기의 앨범 ({})",
|
||||||
"backup_album_selection_page_albums_tap": "포함하려면 한 번 누르고 제외하려면 두 번 누르세요.",
|
"backup_album_selection_page_albums_tap": "한 번 눌러 선택, 두 번 눌러 제외하세요.",
|
||||||
"backup_album_selection_page_assets_scatter": "콘텐츠는 여러 앨범에 분산될 수 있으며, 백업 작업 중에도 대상 앨범을 포함하거나 제외할 수 있습니다.",
|
"backup_album_selection_page_assets_scatter": "각 항목은 여러 앨범에 포함될 수 있으며, 백업 진행 중에도 대상 앨범을 포함하거나 제외할 수 있습니다.",
|
||||||
"backup_album_selection_page_select_albums": "앨범 선택",
|
"backup_album_selection_page_select_albums": "앨범 선택",
|
||||||
"backup_album_selection_page_selection_info": "선택한 앨범 ",
|
"backup_album_selection_page_selection_info": "선택한 앨범",
|
||||||
"backup_album_selection_page_total_assets": "전체 항목",
|
"backup_album_selection_page_total_assets": "전체 항목",
|
||||||
"backup_all": "모두",
|
"backup_all": "모두",
|
||||||
"backup_background_service_backup_failed_message": "백업하지 못했습니다. 다시 시도하는 중...",
|
"backup_background_service_backup_failed_message": "항목을 백업하지 못했습니다. 다시 시도하는 중...",
|
||||||
"backup_background_service_connection_failed_message": "서버에 연결하지 못했습니다. 다시 시도하는 중...",
|
"backup_background_service_connection_failed_message": "서버에 연결하지 못했습니다. 다시 시도하는 중...",
|
||||||
"backup_background_service_current_upload_notification": "{} 업로드 중",
|
"backup_background_service_current_upload_notification": "{} 업로드 중",
|
||||||
"backup_background_service_default_notification": "백업할 항목을 확인하는 중...",
|
"backup_background_service_default_notification": "백업할 항목을 확인하는 중...",
|
||||||
"backup_background_service_error_title": "백업 오류",
|
"backup_background_service_error_title": "백업 오류",
|
||||||
"backup_background_service_in_progress_notification": "선택한 항목을 백업하는 중...",
|
"backup_background_service_in_progress_notification": "선택한 항목을 백업하는 중...",
|
||||||
"backup_background_service_upload_failure_notification": "{} 업로드 실패",
|
"backup_background_service_upload_failure_notification": "{} 업로드 실패",
|
||||||
"backup_controller_page_albums": "백업 대상 앨범",
|
"backup_controller_page_albums": "백업할 앨범",
|
||||||
"backup_controller_page_background_app_refresh_disabled_content": "백그라운드 백업을 사용하려면 설정 > 일반 > 백그라운드 앱 새로 고침에서 백그라운드 앱 새로 고침을 활성화하세요.",
|
"backup_controller_page_background_app_refresh_disabled_content": "백그라운드 백업을 사용하려면 설정 > 일반 > 백그라운드 앱 새로 고침에서 백그라운드 앱 새로 고침을 활성화하세요.",
|
||||||
"backup_controller_page_background_app_refresh_disabled_title": "백그라운드 새로 고침 비활성화됨",
|
"backup_controller_page_background_app_refresh_disabled_title": "백그라운드 새로 고침 비활성화됨",
|
||||||
"backup_controller_page_background_app_refresh_enable_button_text": "설정으로 이동",
|
"backup_controller_page_background_app_refresh_enable_button_text": "설정으로 이동",
|
||||||
"backup_controller_page_background_battery_info_link": "설정 방법",
|
"backup_controller_page_background_battery_info_link": "설정 방법",
|
||||||
"backup_controller_page_background_battery_info_message": "최상의 백그라운드 백업 환경을 위해, Immich의 백그라운드 활동을 제한하는 배터리 최적화를 비활성화하세요.\n\n설정 방법은 기기마다 다르므로, 제조 업체에서 관련 정보를 찾아보세요.",
|
"backup_controller_page_background_battery_info_message": "최상의 백그라운드 백업 환경을 위해 Immich 백그라운드 활동을 제한하는 배터리 최적화 기능을 비활성화하세요.\n\n기기마다 설정 방법에 차이가 있어 제조 업체에서 관련 정보를 찾아보세요.",
|
||||||
"backup_controller_page_background_battery_info_ok": "확인",
|
"backup_controller_page_background_battery_info_ok": "확인",
|
||||||
"backup_controller_page_background_battery_info_title": "배터리 최적화",
|
"backup_controller_page_background_battery_info_title": "배터리 최적화",
|
||||||
"backup_controller_page_background_charging": "충전 중에만",
|
"backup_controller_page_background_charging": "충전 중에만",
|
||||||
"backup_controller_page_background_configure_error": "백그라운드 서비스 구성 실패",
|
"backup_controller_page_background_configure_error": "백그라운드 서비스 구성 실패",
|
||||||
"backup_controller_page_background_delay": "새 콘텐츠 백업 간격: {}",
|
"backup_controller_page_background_delay": "새 콘텐츠 백업 간격: {}",
|
||||||
"backup_controller_page_background_description": "백그라운드 서비스를 활성화하면 앱을 열지 않고도 새 콘텐츠를 자동으로 백업할 수 있습니다.",
|
"backup_controller_page_background_description": "백그라운드 서비스를 활성화하여 앱을 실행하지 않고 새 항목을 자동으로 백업하세요.",
|
||||||
"backup_controller_page_background_is_off": "자동 백그라운드 백업이 비활성화되었습니다.",
|
"backup_controller_page_background_is_off": "백그라운드 백업이 비활성화되었습니다.",
|
||||||
"backup_controller_page_background_is_on": "자동 백그라운드 백업이 활성화되었습니다.",
|
"backup_controller_page_background_is_on": "백그라운드 백업이 활성화되었습니다.",
|
||||||
"backup_controller_page_background_turn_off": "백그라운드 서비스 비활성화",
|
"backup_controller_page_background_turn_off": "백그라운드 서비스 비활성화",
|
||||||
"backup_controller_page_background_turn_on": "백그라운드 서비스 활성화",
|
"backup_controller_page_background_turn_on": "백그라운드 서비스 활성화",
|
||||||
"backup_controller_page_background_wifi": "Wi-Fi에서만",
|
"backup_controller_page_background_wifi": "Wi-Fi에서만",
|
||||||
"backup_controller_page_backup": "백업",
|
"backup_controller_page_backup": "백업",
|
||||||
"backup_controller_page_backup_selected": "선택: ",
|
"backup_controller_page_backup_selected": "선택됨:",
|
||||||
"backup_controller_page_backup_sub": "백업된 사진 및 동영상",
|
"backup_controller_page_backup_sub": "백업된 사진 및 동영상",
|
||||||
"backup_controller_page_cancel": "취소",
|
"backup_controller_page_cancel": "취소",
|
||||||
"backup_controller_page_created": "생성일: {}",
|
"backup_controller_page_created": "생성일: {}",
|
||||||
"backup_controller_page_desc_backup": "앱을 열 때 새 항목을 서버에 자동으로 업로드하려면 포그라운드 백업을 활성화하세요.",
|
"backup_controller_page_desc_backup": "포그라운드 백업을 활성화하여 앱을 시작할 때 새 항목을 서버에 자동으로 업로드하세요.",
|
||||||
"backup_controller_page_excluded": "제외: ",
|
"backup_controller_page_excluded": "제외됨:",
|
||||||
"backup_controller_page_failed": "실패 ({})",
|
"backup_controller_page_failed": "실패 ({})",
|
||||||
"backup_controller_page_filename": "파일명: {} [{}]",
|
"backup_controller_page_filename": "파일명: {} [{}]",
|
||||||
"backup_controller_page_id": "ID: {}",
|
"backup_controller_page_id": "ID: {}",
|
||||||
"backup_controller_page_info": "백업 정보",
|
"backup_controller_page_info": "백업 정보",
|
||||||
"backup_controller_page_none_selected": "선택한 항목이 없습니다.",
|
"backup_controller_page_none_selected": "선택한 항목이 없습니다.",
|
||||||
"backup_controller_page_remainder": "남은 항목",
|
"backup_controller_page_remainder": "남은 항목",
|
||||||
"backup_controller_page_remainder_sub": "백업할 사진 및 동영상",
|
"backup_controller_page_remainder_sub": "백업 대기 중인 사진 및 동영상",
|
||||||
"backup_controller_page_select": "선택",
|
"backup_controller_page_select": "선택",
|
||||||
"backup_controller_page_server_storage": "저장 공간",
|
"backup_controller_page_server_storage": "저장 공간",
|
||||||
"backup_controller_page_start_backup": "백업 시작",
|
"backup_controller_page_start_backup": "백업 시작",
|
||||||
"backup_controller_page_status_off": "자동 백업이 비활성화되었습니다.",
|
"backup_controller_page_status_off": "포그라운드 백업이 비활성화되었습니다.",
|
||||||
"backup_controller_page_status_on": "자동 백업이 활성화되었습니다.",
|
"backup_controller_page_status_on": "포그라운드 백업이 활성화되었습니다.",
|
||||||
"backup_controller_page_storage_format": "{} 사용 중, 전체 {}",
|
"backup_controller_page_storage_format": "{} 사용 중, 전체 {}",
|
||||||
"backup_controller_page_to_backup": "백업 대상 앨범 목록",
|
"backup_controller_page_to_backup": "백업할 앨범 목록",
|
||||||
"backup_controller_page_total": "전체",
|
"backup_controller_page_total": "전체",
|
||||||
"backup_controller_page_total_sub": "선택한 앨범의 모든 사진 및 동영상",
|
"backup_controller_page_total_sub": "선택한 앨범의 고유한 사진 및 동영상",
|
||||||
"backup_controller_page_turn_off": "백업 비활성화",
|
"backup_controller_page_turn_off": "비활성화",
|
||||||
"backup_controller_page_turn_on": "백업 활성화",
|
"backup_controller_page_turn_on": "활성화",
|
||||||
"backup_controller_page_uploading_file_info": "파일 정보 업로드 중",
|
"backup_controller_page_uploading_file_info": "파일 정보 업로드 중",
|
||||||
"backup_err_only_album": "유일한 앨범은 제거할 수 없습니다.",
|
"backup_err_only_album": "유일한 앨범은 제거할 수 없습니다.",
|
||||||
"backup_info_card_assets": "항목",
|
"backup_info_card_assets": "항목",
|
||||||
@ -154,7 +154,7 @@
|
|||||||
"client_cert_enter_password": "비밀번호 입력",
|
"client_cert_enter_password": "비밀번호 입력",
|
||||||
"client_cert_import": "가져오기",
|
"client_cert_import": "가져오기",
|
||||||
"client_cert_import_success_msg": "클라이언트 인증서를 가져왔습니다.",
|
"client_cert_import_success_msg": "클라이언트 인증서를 가져왔습니다.",
|
||||||
"client_cert_invalid_msg": "유효하지 않은 인증서이거나 비밀번호가 일치하지 않습니다.",
|
"client_cert_invalid_msg": "유효하지 않은 인증서 또는 패스프레이즈가 일치하지 않습니다.",
|
||||||
"client_cert_remove": "제거",
|
"client_cert_remove": "제거",
|
||||||
"client_cert_remove_msg": "클라이언트 인증서가 제거되었습니다.",
|
"client_cert_remove_msg": "클라이언트 인증서가 제거되었습니다.",
|
||||||
"client_cert_subtitle": "인증서 가져오기/제거는 로그인 전에만 가능합니다. PKCS12 (.p12, .pfx) 형식을 지원합니다.",
|
"client_cert_subtitle": "인증서 가져오기/제거는 로그인 전에만 가능합니다. PKCS12 (.p12, .pfx) 형식을 지원합니다.",
|
||||||
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "삭제",
|
"control_bottom_app_bar_delete": "삭제",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Immich에서 삭제",
|
"control_bottom_app_bar_delete_from_immich": "Immich에서 삭제",
|
||||||
"control_bottom_app_bar_delete_from_local": "기기에서 삭제",
|
"control_bottom_app_bar_delete_from_local": "기기에서 삭제",
|
||||||
|
"control_bottom_app_bar_download": "다운로드",
|
||||||
"control_bottom_app_bar_edit": "편집",
|
"control_bottom_app_bar_edit": "편집",
|
||||||
"control_bottom_app_bar_edit_location": "위치 편집",
|
"control_bottom_app_bar_edit_location": "위치 편집",
|
||||||
"control_bottom_app_bar_edit_time": "날짜 및 시간 변경",
|
"control_bottom_app_bar_edit_time": "날짜 및 시간 변경",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "공유",
|
"create_shared_album_page_share": "공유",
|
||||||
"create_shared_album_page_share_add_assets": "항목 추가",
|
"create_shared_album_page_share_add_assets": "항목 추가",
|
||||||
"create_shared_album_page_share_select_photos": "사진 선택",
|
"create_shared_album_page_share_select_photos": "사진 선택",
|
||||||
|
"crop": "자르기",
|
||||||
"curated_location_page_title": "장소",
|
"curated_location_page_title": "장소",
|
||||||
"curated_object_page_title": "사물",
|
"curated_object_page_title": "사물",
|
||||||
"daily_title_text_date": "M월 d일 EEEE",
|
"daily_title_text_date": "M월 d일 EEEE",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "공유 링크 삭제",
|
"delete_shared_link_dialog_title": "공유 링크 삭제",
|
||||||
"description_input_hint_text": "설명 추가...",
|
"description_input_hint_text": "설명 추가...",
|
||||||
"description_input_submit_error": "설명을 변경하는 중 문제가 발생했습니다. 자세한 내용은 로그를 참조하세요.",
|
"description_input_submit_error": "설명을 변경하는 중 문제가 발생했습니다. 자세한 내용은 로그를 참조하세요.",
|
||||||
|
"download_error": "다운로드 중 문제가 발생했습니다.",
|
||||||
|
"download_started": "다운로드가 시작되었습니다.",
|
||||||
|
"download_sucess": "다운로드가 완료되었습니다.",
|
||||||
|
"download_sucess_android": "미디어가 DCIM/Immich에 저장되었습니다.",
|
||||||
"edit_date_time_dialog_date_time": "날짜 및 시간",
|
"edit_date_time_dialog_date_time": "날짜 및 시간",
|
||||||
"edit_date_time_dialog_timezone": "시간대",
|
"edit_date_time_dialog_timezone": "시간대",
|
||||||
|
"edit_image_title": "편집",
|
||||||
"edit_location_dialog_title": "위치",
|
"edit_location_dialog_title": "위치",
|
||||||
|
"error_saving_image": "오류: {}",
|
||||||
"exif_bottom_sheet_description": "설명 추가...",
|
"exif_bottom_sheet_description": "설명 추가...",
|
||||||
"exif_bottom_sheet_details": "상세 정보",
|
"exif_bottom_sheet_details": "상세 정보",
|
||||||
"exif_bottom_sheet_location": "위치",
|
"exif_bottom_sheet_location": "위치",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "앱을 처음 사용하는 경우 타임라인에 앨범의 사진과 동영상을 채울 수 있도록 백업할 앨범을 선택하세요.",
|
"home_page_first_time_notice": "앱을 처음 사용하는 경우 타임라인에 앨범의 사진과 동영상을 채울 수 있도록 백업할 앨범을 선택하세요.",
|
||||||
"home_page_share_err_local": "기기의 항목은 링크로 공유할 수 없습니다. 건너뜁니다.",
|
"home_page_share_err_local": "기기의 항목은 링크로 공유할 수 없습니다. 건너뜁니다.",
|
||||||
"home_page_upload_err_limit": "한 번에 최대 30개의 항목만 업로드할 수 있습니다.",
|
"home_page_upload_err_limit": "한 번에 최대 30개의 항목만 업로드할 수 있습니다.",
|
||||||
|
"image_saved_successfully": "이미지가 저장되었습니다.",
|
||||||
"image_viewer_page_state_provider_download_error": "다운로드 오류",
|
"image_viewer_page_state_provider_download_error": "다운로드 오류",
|
||||||
"image_viewer_page_state_provider_download_started": "다운로드가 시작되었습니다.",
|
"image_viewer_page_state_provider_download_started": "다운로드가 시작되었습니다.",
|
||||||
"image_viewer_page_state_provider_download_success": "다운로드 완료",
|
"image_viewer_page_state_provider_download_success": "다운로드 완료",
|
||||||
@ -277,14 +286,14 @@
|
|||||||
"login_form_back_button_text": "뒤로",
|
"login_form_back_button_text": "뒤로",
|
||||||
"login_form_button_text": "로그인",
|
"login_form_button_text": "로그인",
|
||||||
"login_form_email_hint": "youremail@email.com",
|
"login_form_email_hint": "youremail@email.com",
|
||||||
"login_form_endpoint_hint": "https://your-server-ip:port/api",
|
"login_form_endpoint_hint": "http://your-server-ip:port/api",
|
||||||
"login_form_endpoint_url": "서버 엔드포인트 URL",
|
"login_form_endpoint_url": "서버 엔드포인트 URL",
|
||||||
"login_form_err_http": "http:// 또는 https://로 시작해야 합니다.",
|
"login_form_err_http": "http:// 또는 https://로 시작해야 합니다.",
|
||||||
"login_form_err_invalid_email": "유효하지 않은 이메일",
|
"login_form_err_invalid_email": "유효하지 않은 이메일",
|
||||||
"login_form_err_invalid_url": "잘못된 URL입니다.",
|
"login_form_err_invalid_url": "잘못된 URL입니다.",
|
||||||
"login_form_err_leading_whitespace": "앞에 공백 문자가 있습니다.",
|
"login_form_err_leading_whitespace": "시작 부분에 공백이 있습니다.",
|
||||||
"login_form_err_trailing_whitespace": "뒤에 공백 문자가 있습니다.",
|
"login_form_err_trailing_whitespace": "끝 부분에 공백이 있습니다.",
|
||||||
"login_form_failed_get_oauth_server_config": "OAuth 로그인 중 문제 발생, 서버 URL을 확인해주세요.",
|
"login_form_failed_get_oauth_server_config": "OAuth 로그인 중 문제 발생, 서버 URL을 확인하세요.",
|
||||||
"login_form_failed_get_oauth_server_disable": "이 서버는 OAuth 기능을 지원하지 않습니다.",
|
"login_form_failed_get_oauth_server_disable": "이 서버는 OAuth 기능을 지원하지 않습니다.",
|
||||||
"login_form_failed_login": "로그인 오류. 서버 URL, 이메일 및 비밀번호를 확인하세요.",
|
"login_form_failed_login": "로그인 오류. 서버 URL, 이메일 및 비밀번호를 확인하세요.",
|
||||||
"login_form_handshake_exception": "서버와 통신 중 인증서 예외가 발생했습니다. 자체 서명된 인증서를 사용 중이라면, 설정에서 자체 서명된 인증서 허용을 활성화하세요.",
|
"login_form_handshake_exception": "서버와 통신 중 인증서 예외가 발생했습니다. 자체 서명된 인증서를 사용 중이라면, 설정에서 자체 서명된 인증서 허용을 활성화하세요.",
|
||||||
@ -338,7 +347,7 @@
|
|||||||
"notification_permission_dialog_cancel": "취소",
|
"notification_permission_dialog_cancel": "취소",
|
||||||
"notification_permission_dialog_content": "알림을 활성화하려면 설정에서 알림 권한을 허용하세요.",
|
"notification_permission_dialog_content": "알림을 활성화하려면 설정에서 알림 권한을 허용하세요.",
|
||||||
"notification_permission_dialog_settings": "설정",
|
"notification_permission_dialog_settings": "설정",
|
||||||
"notification_permission_list_tile_content": "알림을 활성화하기 위해 권한을 부여하세요.",
|
"notification_permission_list_tile_content": "알림을 활성화하려면 권한을 부여하세요.",
|
||||||
"notification_permission_list_tile_enable_button": "알림 활성화",
|
"notification_permission_list_tile_enable_button": "알림 활성화",
|
||||||
"notification_permission_list_tile_title": "알림 권한",
|
"notification_permission_list_tile_title": "알림 권한",
|
||||||
"partner_list_user_photos": "{user}님의 사진",
|
"partner_list_user_photos": "{user}님의 사진",
|
||||||
@ -366,7 +375,7 @@
|
|||||||
"profile_drawer_app_logs": "로그",
|
"profile_drawer_app_logs": "로그",
|
||||||
"profile_drawer_client_out_of_date_major": "모바일 앱이 최신 버전이 아닙니다. 최신 버전으로 업데이트하세요.",
|
"profile_drawer_client_out_of_date_major": "모바일 앱이 최신 버전이 아닙니다. 최신 버전으로 업데이트하세요.",
|
||||||
"profile_drawer_client_out_of_date_minor": "모바일 앱이 최신 버전이 아닙니다. 최신 버전으로 업데이트하세요.",
|
"profile_drawer_client_out_of_date_minor": "모바일 앱이 최신 버전이 아닙니다. 최신 버전으로 업데이트하세요.",
|
||||||
"profile_drawer_client_server_up_to_date": "모바일 앱과 서버가 최신 버전입니다.",
|
"profile_drawer_client_server_up_to_date": "클라이언트와 서버가 최신입니다.",
|
||||||
"profile_drawer_documentation": "문서",
|
"profile_drawer_documentation": "문서",
|
||||||
"profile_drawer_github": "Github",
|
"profile_drawer_github": "Github",
|
||||||
"profile_drawer_server_out_of_date_major": "서버 버전이 최신이 아닙니다. 최신 버전으로 업데이트하세요.",
|
"profile_drawer_server_out_of_date_major": "서버 버전이 최신이 아닙니다. 최신 버전으로 업데이트하세요.",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "로그아웃",
|
"profile_drawer_sign_out": "로그아웃",
|
||||||
"profile_drawer_trash": "휴지통",
|
"profile_drawer_trash": "휴지통",
|
||||||
"recently_added_page_title": "최근 추가",
|
"recently_added_page_title": "최근 추가",
|
||||||
|
"save_to_gallery": "갤러리에 저장",
|
||||||
"scaffold_body_error_occurred": "문제가 발생했습니다.",
|
"scaffold_body_error_occurred": "문제가 발생했습니다.",
|
||||||
"search_bar_hint": "사진 검색",
|
"search_bar_hint": "사진 검색",
|
||||||
"search_filter_apply": "필터 적용",
|
"search_filter_apply": "필터 적용",
|
||||||
@ -383,7 +393,7 @@
|
|||||||
"search_filter_camera_model": "모델명",
|
"search_filter_camera_model": "모델명",
|
||||||
"search_filter_camera_title": "카메라 종류 선택",
|
"search_filter_camera_title": "카메라 종류 선택",
|
||||||
"search_filter_date": "날짜",
|
"search_filter_date": "날짜",
|
||||||
"search_filter_date_interval": "{start}에서 {end} 까지",
|
"search_filter_date_interval": "{start} - {end}",
|
||||||
"search_filter_date_title": "날짜 범위 선택",
|
"search_filter_date_title": "날짜 범위 선택",
|
||||||
"search_filter_display_option_archive": "보관함",
|
"search_filter_display_option_archive": "보관함",
|
||||||
"search_filter_display_option_favorite": "즐겨찾기",
|
"search_filter_display_option_favorite": "즐겨찾기",
|
||||||
@ -405,8 +415,8 @@
|
|||||||
"search_page_categories": "분류",
|
"search_page_categories": "분류",
|
||||||
"search_page_favorites": "즐겨찾기",
|
"search_page_favorites": "즐겨찾기",
|
||||||
"search_page_motion_photos": "모션 포토",
|
"search_page_motion_photos": "모션 포토",
|
||||||
"search_page_no_objects": "사물 정보가 없습니다.",
|
"search_page_no_objects": "사용 가능한 사물 정보 없음",
|
||||||
"search_page_no_places": "장소 정보가 없습니다.",
|
"search_page_no_places": "사용 가능한 위치 정보 없음",
|
||||||
"search_page_people": "인물",
|
"search_page_people": "인물",
|
||||||
"search_page_person_add_name_dialog_cancel": "취소",
|
"search_page_person_add_name_dialog_cancel": "취소",
|
||||||
"search_page_person_add_name_dialog_hint": "이름",
|
"search_page_person_add_name_dialog_hint": "이름",
|
||||||
@ -429,13 +439,13 @@
|
|||||||
"search_suggestion_list_smart_search_hint_2": "m:your-search-term",
|
"search_suggestion_list_smart_search_hint_2": "m:your-search-term",
|
||||||
"select_additional_user_for_sharing_page_suggestions": "추천",
|
"select_additional_user_for_sharing_page_suggestions": "추천",
|
||||||
"select_user_for_sharing_page_err_album": "앨범을 생성하지 못했습니다.",
|
"select_user_for_sharing_page_err_album": "앨범을 생성하지 못했습니다.",
|
||||||
"select_user_for_sharing_page_share_suggestions": "추천",
|
"select_user_for_sharing_page_share_suggestions": "제안",
|
||||||
"server_info_box_app_version": "앱 버전",
|
"server_info_box_app_version": "앱 버전",
|
||||||
"server_info_box_latest_release": "최신 버전",
|
"server_info_box_latest_release": "최신 버전",
|
||||||
"server_info_box_server_url": "서버 URL",
|
"server_info_box_server_url": "서버 URL",
|
||||||
"server_info_box_server_version": "서버 버전",
|
"server_info_box_server_version": "서버 버전",
|
||||||
"setting_image_viewer_help": "상세 보기는 먼저 작은 크기의 섬네일을 불러오며, 활성화된 경우 중간 크기의 이미지와 원본을 불러옵니다.",
|
"setting_image_viewer_help": "상세 보기는 먼저 작은 크기의 섬네일을 불러오며, 활성화된 경우 중간 크기의 이미지와 원본을 불러옵니다.",
|
||||||
"setting_image_viewer_original_subtitle": "원본 해상도 이미지(고화질)를 로드합니다. 데이터 사용량을 줄이려면 비활성화하세요.",
|
"setting_image_viewer_original_subtitle": "고해상도 원본 이미지를 불러옵니다. 데이터 사용량을 줄이려면 비활성화하세요.",
|
||||||
"setting_image_viewer_original_title": "원본 이미지 표시",
|
"setting_image_viewer_original_title": "원본 이미지 표시",
|
||||||
"setting_image_viewer_preview_subtitle": "중간 크기의 이미지를 불러오려면 활성화하세요. 항상 원본을 불러오거나 섬네일만 불러오려면 비활성화하세요.",
|
"setting_image_viewer_preview_subtitle": "중간 크기의 이미지를 불러오려면 활성화하세요. 항상 원본을 불러오거나 섬네일만 불러오려면 비활성화하세요.",
|
||||||
"setting_image_viewer_preview_title": "미리 보기 이미지 불러오기",
|
"setting_image_viewer_preview_title": "미리 보기 이미지 불러오기",
|
||||||
@ -448,12 +458,12 @@
|
|||||||
"setting_notifications_notify_minutes": "{}분 후",
|
"setting_notifications_notify_minutes": "{}분 후",
|
||||||
"setting_notifications_notify_never": "알리지 않음",
|
"setting_notifications_notify_never": "알리지 않음",
|
||||||
"setting_notifications_notify_seconds": "{}초",
|
"setting_notifications_notify_seconds": "{}초",
|
||||||
"setting_notifications_single_progress_subtitle": "각 항목의 세부 업로드 정보 표시",
|
"setting_notifications_single_progress_subtitle": "개별 항목의 상세 업로드 정보 표시",
|
||||||
"setting_notifications_single_progress_title": "백그라운드 작업의 세부 진행률 표시",
|
"setting_notifications_single_progress_title": "백그라운드 백업 상세 진행률 표시",
|
||||||
"setting_notifications_subtitle": "알림 기본 설정 조정",
|
"setting_notifications_subtitle": "알림 기본 설정 조정",
|
||||||
"setting_notifications_title": "알림",
|
"setting_notifications_title": "알림",
|
||||||
"setting_notifications_total_progress_subtitle": "전체 업로드 진행률 (완료/전체)",
|
"setting_notifications_total_progress_subtitle": "전체 업로드 진행률 (완료/전체)",
|
||||||
"setting_notifications_total_progress_title": "백그라운드 작업의 전체 진행률 표시",
|
"setting_notifications_total_progress_title": "백그라운드 백업 전체 진행률 표시",
|
||||||
"setting_pages_app_bar_settings": "설정",
|
"setting_pages_app_bar_settings": "설정",
|
||||||
"settings_require_restart": "설정을 적용하려면 Immich를 다시 시작하세요.",
|
"settings_require_restart": "설정을 적용하려면 Immich를 다시 시작하세요.",
|
||||||
"setting_video_viewer_looping_subtitle": "상세 보기에서 동영상을 자동으로 반복합니다.",
|
"setting_video_viewer_looping_subtitle": "상세 보기에서 동영상을 자동으로 반복합니다.",
|
||||||
@ -461,7 +471,7 @@
|
|||||||
"setting_video_viewer_title": "동영상",
|
"setting_video_viewer_title": "동영상",
|
||||||
"share_add": "추가",
|
"share_add": "추가",
|
||||||
"share_add_photos": "사진 추가",
|
"share_add_photos": "사진 추가",
|
||||||
"share_add_title": "앨범 제목 입력",
|
"share_add_title": "앨범명 추가",
|
||||||
"share_assets_selected": "{}개 항목 선택됨",
|
"share_assets_selected": "{}개 항목 선택됨",
|
||||||
"share_create_album": "앨범 생성",
|
"share_create_album": "앨범 생성",
|
||||||
"shared_album_activities_input_disable": "댓글이 비활성화되었습니다",
|
"shared_album_activities_input_disable": "댓글이 비활성화되었습니다",
|
||||||
@ -522,34 +532,38 @@
|
|||||||
"shared_link_manage_links": "공유 링크 관리",
|
"shared_link_manage_links": "공유 링크 관리",
|
||||||
"shared_link_public_album": "공개 앨범",
|
"shared_link_public_album": "공개 앨범",
|
||||||
"share_done": "완료",
|
"share_done": "완료",
|
||||||
"share_invite": "앨범에 초대",
|
"share_invite": "앨범으로 초대",
|
||||||
"sharing_page_album": "공유 앨범",
|
"sharing_page_album": "공유 앨범",
|
||||||
"sharing_page_description": "공유 앨범을 만들어 주변 사람들과 사진 및 동영상을 공유하세요.",
|
"sharing_page_description": "공유 앨범을 만들어 주변 사람들과 사진 및 동영상을 공유하세요.",
|
||||||
"sharing_page_empty_list": "공유 앨범 없음",
|
"sharing_page_empty_list": "공유 앨범 없음",
|
||||||
"sharing_silver_appbar_create_shared_album": "공유 앨범 생성",
|
"sharing_silver_appbar_create_shared_album": "공유 앨범 생성",
|
||||||
"sharing_silver_appbar_shared_links": "공유 링크",
|
"sharing_silver_appbar_shared_links": "공유 링크",
|
||||||
"sharing_silver_appbar_share_partner": "파트너와 공유",
|
"sharing_silver_appbar_share_partner": "파트너와 공유",
|
||||||
|
"sync": "동기화",
|
||||||
|
"sync_albums": "앨범 동기화",
|
||||||
|
"sync_albums_manual_subtitle": "업로드한 모든 동영상과 사진을 선택한 백업 앨범에 동기화",
|
||||||
|
"sync_upload_album_setting_subtitle": "선택한 앨범을 Immich에 생성하고 사진 및 동영상을 업로드하세요.",
|
||||||
"tab_controller_nav_library": "라이브러리",
|
"tab_controller_nav_library": "라이브러리",
|
||||||
"tab_controller_nav_photos": "사진",
|
"tab_controller_nav_photos": "사진",
|
||||||
"tab_controller_nav_search": "검색",
|
"tab_controller_nav_search": "검색",
|
||||||
"tab_controller_nav_sharing": "공유",
|
"tab_controller_nav_sharing": "공유",
|
||||||
"theme_setting_asset_list_storage_indicator_title": "항목에 스토리지 동기화 여부 표시",
|
"theme_setting_asset_list_storage_indicator_title": "항목에 스토리지 동기화 여부 표시",
|
||||||
"theme_setting_asset_list_tiles_per_row_title": "한 줄에 표시할 항목 수 ({})",
|
"theme_setting_asset_list_tiles_per_row_title": "한 줄에 표시할 항목 수 ({})",
|
||||||
"theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.",
|
"theme_setting_colorful_interface_subtitle": "배경에 대표 색상을 적용합니다.",
|
||||||
"theme_setting_colorful_interface_title": "Colorful interface",
|
"theme_setting_colorful_interface_title": "미려한 인터페이스",
|
||||||
"theme_setting_dark_mode_switch": "다크 모드",
|
"theme_setting_dark_mode_switch": "다크 모드",
|
||||||
"theme_setting_image_viewer_quality_subtitle": "상세 보기 이미지 품질 조정",
|
"theme_setting_image_viewer_quality_subtitle": "상세 보기 이미지 품질 조정",
|
||||||
"theme_setting_image_viewer_quality_title": "이미지 보기 품질",
|
"theme_setting_image_viewer_quality_title": "이미지 보기 품질",
|
||||||
"theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.",
|
"theme_setting_primary_color_subtitle": "주 기능 및 강조에 사용되는 색상 선택",
|
||||||
"theme_setting_primary_color_title": "Primary color",
|
"theme_setting_primary_color_title": "대표 색상",
|
||||||
"theme_setting_system_primary_color_title": "Use system color",
|
"theme_setting_system_primary_color_title": "시스템 색상 사용",
|
||||||
"theme_setting_system_theme_switch": "자동 (시스템 설정)",
|
"theme_setting_system_theme_switch": "자동 (시스템 설정)",
|
||||||
"theme_setting_theme_subtitle": "앱 테마 선택",
|
"theme_setting_theme_subtitle": "앱 테마 선택",
|
||||||
"theme_setting_theme_title": "테마",
|
"theme_setting_theme_title": "테마",
|
||||||
"theme_setting_three_stage_loading_subtitle": "이 기능은 앱의 로드 성능을 향상시킬 수 있지만 더 많은 데이터를 사용합니다.",
|
"theme_setting_three_stage_loading_subtitle": "이 기능은 앱의 로드 성능을 향상시킬 수 있지만 더 많은 데이터를 사용합니다.",
|
||||||
"theme_setting_three_stage_loading_title": "3단계 로드 활성화",
|
"theme_setting_three_stage_loading_title": "3단계 로드 활성화",
|
||||||
"translated_text_options": "옵션",
|
"translated_text_options": "옵션",
|
||||||
"trash_emptied": "Emptied trash",
|
"trash_emptied": "휴지통을 비움",
|
||||||
"trash_page_delete": "삭제",
|
"trash_page_delete": "삭제",
|
||||||
"trash_page_delete_all": "모두 삭제",
|
"trash_page_delete_all": "모두 삭제",
|
||||||
"trash_page_empty_trash_btn": "휴지통 비우기",
|
"trash_page_empty_trash_btn": "휴지통 비우기",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Delete",
|
"control_bottom_app_bar_delete": "Delete",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Share",
|
"create_shared_album_page_share": "Share",
|
||||||
"create_shared_album_page_share_add_assets": "ADD ASSETS",
|
"create_shared_album_page_share_add_assets": "ADD ASSETS",
|
||||||
"create_shared_album_page_share_select_photos": "Select Photos",
|
"create_shared_album_page_share_select_photos": "Select Photos",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Places",
|
"curated_location_page_title": "Places",
|
||||||
"curated_object_page_title": "Things",
|
"curated_object_page_title": "Things",
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Delete Shared Link",
|
"delete_shared_link_dialog_title": "Delete Shared Link",
|
||||||
"description_input_hint_text": "Add description...",
|
"description_input_hint_text": "Add description...",
|
||||||
"description_input_submit_error": "Error updating description, check the log for more details",
|
"description_input_submit_error": "Error updating description, check the log for more details",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Date and Time",
|
"edit_date_time_dialog_date_time": "Date and Time",
|
||||||
"edit_date_time_dialog_timezone": "Timezone",
|
"edit_date_time_dialog_timezone": "Timezone",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Location",
|
"edit_location_dialog_title": "Location",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Add Description...",
|
"exif_bottom_sheet_description": "Add Description...",
|
||||||
"exif_bottom_sheet_details": "DETAILS",
|
"exif_bottom_sheet_details": "DETAILS",
|
||||||
"exif_bottom_sheet_location": "LOCATION",
|
"exif_bottom_sheet_location": "LOCATION",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
||||||
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
||||||
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Download Error",
|
"image_viewer_page_state_provider_download_error": "Download Error",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Sign Out",
|
"profile_drawer_sign_out": "Sign Out",
|
||||||
"profile_drawer_trash": "Trash",
|
"profile_drawer_trash": "Trash",
|
||||||
"recently_added_page_title": "Recently Added",
|
"recently_added_page_title": "Recently Added",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Error occurred",
|
"scaffold_body_error_occurred": "Error occurred",
|
||||||
"search_bar_hint": "Search your photos",
|
"search_bar_hint": "Search your photos",
|
||||||
"search_filter_apply": "Apply filter",
|
"search_filter_apply": "Apply filter",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "New shared album",
|
"sharing_silver_appbar_create_shared_album": "New shared album",
|
||||||
"sharing_silver_appbar_shared_links": "Shared links",
|
"sharing_silver_appbar_shared_links": "Shared links",
|
||||||
"sharing_silver_appbar_share_partner": "Share with partner",
|
"sharing_silver_appbar_share_partner": "Share with partner",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Library",
|
"tab_controller_nav_library": "Library",
|
||||||
"tab_controller_nav_photos": "Photos",
|
"tab_controller_nav_photos": "Photos",
|
||||||
"tab_controller_nav_search": "Search",
|
"tab_controller_nav_search": "Search",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Dzēst",
|
"control_bottom_app_bar_delete": "Dzēst",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Dzēst no Immich",
|
"control_bottom_app_bar_delete_from_immich": "Dzēst no Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Dzēst no ierīces",
|
"control_bottom_app_bar_delete_from_local": "Dzēst no ierīces",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Rediģēt Atrašanās Vietu",
|
"control_bottom_app_bar_edit_location": "Rediģēt Atrašanās Vietu",
|
||||||
"control_bottom_app_bar_edit_time": "Rediģēt Datumu un Laiku",
|
"control_bottom_app_bar_edit_time": "Rediģēt Datumu un Laiku",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Kopīgot",
|
"create_shared_album_page_share": "Kopīgot",
|
||||||
"create_shared_album_page_share_add_assets": "PIEVIENOT AKTĪVUS",
|
"create_shared_album_page_share_add_assets": "PIEVIENOT AKTĪVUS",
|
||||||
"create_shared_album_page_share_select_photos": "Fotoattēlu Izvēle",
|
"create_shared_album_page_share_select_photos": "Fotoattēlu Izvēle",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Vietas",
|
"curated_location_page_title": "Vietas",
|
||||||
"curated_object_page_title": "Lietas",
|
"curated_object_page_title": "Lietas",
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Dzēst Kopīgošanas saiti",
|
"delete_shared_link_dialog_title": "Dzēst Kopīgošanas saiti",
|
||||||
"description_input_hint_text": "Pievienot aprakstu...",
|
"description_input_hint_text": "Pievienot aprakstu...",
|
||||||
"description_input_submit_error": "Atjauninot aprakstu, radās kļūda; papildinformāciju skatiet žurnālā",
|
"description_input_submit_error": "Atjauninot aprakstu, radās kļūda; papildinformāciju skatiet žurnālā",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Datums un Laiks",
|
"edit_date_time_dialog_date_time": "Datums un Laiks",
|
||||||
"edit_date_time_dialog_timezone": "Laika zona",
|
"edit_date_time_dialog_timezone": "Laika zona",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Atrašanās vieta",
|
"edit_location_dialog_title": "Atrašanās vieta",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Pievienot Aprakstu...",
|
"exif_bottom_sheet_description": "Pievienot Aprakstu...",
|
||||||
"exif_bottom_sheet_details": "INFORMĀCIJA",
|
"exif_bottom_sheet_details": "INFORMĀCIJA",
|
||||||
"exif_bottom_sheet_location": "ATRAŠANĀS VIETA",
|
"exif_bottom_sheet_location": "ATRAŠANĀS VIETA",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Ja šī ir pirmā reize, kad izmantojat aplikāciju, lūdzu, izvēlieties dublējuma albumu(s), lai laika skala varētu aizpildīt fotoattēlus un videoklipus albumā(os).",
|
"home_page_first_time_notice": "Ja šī ir pirmā reize, kad izmantojat aplikāciju, lūdzu, izvēlieties dublējuma albumu(s), lai laika skala varētu aizpildīt fotoattēlus un videoklipus albumā(os).",
|
||||||
"home_page_share_err_local": "Caur saiti nevarēja kopīgot lokālos aktīvus, notiek izlaišana",
|
"home_page_share_err_local": "Caur saiti nevarēja kopīgot lokālos aktīvus, notiek izlaišana",
|
||||||
"home_page_upload_err_limit": "Vienlaikus var augšupielādēt ne vairāk kā 30 aktīvus, notiek izlaišana",
|
"home_page_upload_err_limit": "Vienlaikus var augšupielādēt ne vairāk kā 30 aktīvus, notiek izlaišana",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Lejupielādes Kļūda",
|
"image_viewer_page_state_provider_download_error": "Lejupielādes Kļūda",
|
||||||
"image_viewer_page_state_provider_download_started": "Lejupielāde Uzsākta",
|
"image_viewer_page_state_provider_download_started": "Lejupielāde Uzsākta",
|
||||||
"image_viewer_page_state_provider_download_success": "Lejupielāde Izdevās",
|
"image_viewer_page_state_provider_download_success": "Lejupielāde Izdevās",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Izrakstīties",
|
"profile_drawer_sign_out": "Izrakstīties",
|
||||||
"profile_drawer_trash": "Atkritne",
|
"profile_drawer_trash": "Atkritne",
|
||||||
"recently_added_page_title": "Nesen Pievienotais",
|
"recently_added_page_title": "Nesen Pievienotais",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Radās kļūda",
|
"scaffold_body_error_occurred": "Radās kļūda",
|
||||||
"search_bar_hint": "Meklēt Jūsu fotoattēlus",
|
"search_bar_hint": "Meklēt Jūsu fotoattēlus",
|
||||||
"search_filter_apply": "Lietot filtru",
|
"search_filter_apply": "Lietot filtru",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Izveidot kopīgotu albumu",
|
"sharing_silver_appbar_create_shared_album": "Izveidot kopīgotu albumu",
|
||||||
"sharing_silver_appbar_shared_links": "Kopīgotās saites",
|
"sharing_silver_appbar_shared_links": "Kopīgotās saites",
|
||||||
"sharing_silver_appbar_share_partner": "Dalīties ar partneri",
|
"sharing_silver_appbar_share_partner": "Dalīties ar partneri",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Bibliotēka",
|
"tab_controller_nav_library": "Bibliotēka",
|
||||||
"tab_controller_nav_photos": "Fotoattēli",
|
"tab_controller_nav_photos": "Fotoattēli",
|
||||||
"tab_controller_nav_search": "Meklēt",
|
"tab_controller_nav_search": "Meklēt",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Delete",
|
"control_bottom_app_bar_delete": "Delete",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Share",
|
"create_shared_album_page_share": "Share",
|
||||||
"create_shared_album_page_share_add_assets": "ADD ASSETS",
|
"create_shared_album_page_share_add_assets": "ADD ASSETS",
|
||||||
"create_shared_album_page_share_select_photos": "Select Photos",
|
"create_shared_album_page_share_select_photos": "Select Photos",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Places",
|
"curated_location_page_title": "Places",
|
||||||
"curated_object_page_title": "Things",
|
"curated_object_page_title": "Things",
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Delete Shared Link",
|
"delete_shared_link_dialog_title": "Delete Shared Link",
|
||||||
"description_input_hint_text": "Add description...",
|
"description_input_hint_text": "Add description...",
|
||||||
"description_input_submit_error": "Error updating description, check the log for more details",
|
"description_input_submit_error": "Error updating description, check the log for more details",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Date and Time",
|
"edit_date_time_dialog_date_time": "Date and Time",
|
||||||
"edit_date_time_dialog_timezone": "Timezone",
|
"edit_date_time_dialog_timezone": "Timezone",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Location",
|
"edit_location_dialog_title": "Location",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Add Description...",
|
"exif_bottom_sheet_description": "Add Description...",
|
||||||
"exif_bottom_sheet_details": "DETAILS",
|
"exif_bottom_sheet_details": "DETAILS",
|
||||||
"exif_bottom_sheet_location": "LOCATION",
|
"exif_bottom_sheet_location": "LOCATION",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
||||||
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
||||||
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Download Error",
|
"image_viewer_page_state_provider_download_error": "Download Error",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Sign Out",
|
"profile_drawer_sign_out": "Sign Out",
|
||||||
"profile_drawer_trash": "Trash",
|
"profile_drawer_trash": "Trash",
|
||||||
"recently_added_page_title": "Recently Added",
|
"recently_added_page_title": "Recently Added",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Error occurred",
|
"scaffold_body_error_occurred": "Error occurred",
|
||||||
"search_bar_hint": "Search your photos",
|
"search_bar_hint": "Search your photos",
|
||||||
"search_filter_apply": "Apply filter",
|
"search_filter_apply": "Apply filter",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "New shared album",
|
"sharing_silver_appbar_create_shared_album": "New shared album",
|
||||||
"sharing_silver_appbar_shared_links": "Shared links",
|
"sharing_silver_appbar_shared_links": "Shared links",
|
||||||
"sharing_silver_appbar_share_partner": "Share with partner",
|
"sharing_silver_appbar_share_partner": "Share with partner",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Library",
|
"tab_controller_nav_library": "Library",
|
||||||
"tab_controller_nav_photos": "Photos",
|
"tab_controller_nav_photos": "Photos",
|
||||||
"tab_controller_nav_search": "Search",
|
"tab_controller_nav_search": "Search",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Slett",
|
"control_bottom_app_bar_delete": "Slett",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Slett fra Immich",
|
"control_bottom_app_bar_delete_from_immich": "Slett fra Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Slett fra enhet",
|
"control_bottom_app_bar_delete_from_local": "Slett fra enhet",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Endre",
|
"control_bottom_app_bar_edit": "Endre",
|
||||||
"control_bottom_app_bar_edit_location": "Endre lokasjon",
|
"control_bottom_app_bar_edit_location": "Endre lokasjon",
|
||||||
"control_bottom_app_bar_edit_time": "Endre Dato og tid",
|
"control_bottom_app_bar_edit_time": "Endre Dato og tid",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Del",
|
"create_shared_album_page_share": "Del",
|
||||||
"create_shared_album_page_share_add_assets": "LEGG TIL OBJEKTER",
|
"create_shared_album_page_share_add_assets": "LEGG TIL OBJEKTER",
|
||||||
"create_shared_album_page_share_select_photos": "Velg bilder",
|
"create_shared_album_page_share_select_photos": "Velg bilder",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Plasseringer",
|
"curated_location_page_title": "Plasseringer",
|
||||||
"curated_object_page_title": "Ting",
|
"curated_object_page_title": "Ting",
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Slett delt link",
|
"delete_shared_link_dialog_title": "Slett delt link",
|
||||||
"description_input_hint_text": "Legg til beskrivelse ...",
|
"description_input_hint_text": "Legg til beskrivelse ...",
|
||||||
"description_input_submit_error": "Feil ved oppdatering av beskrivelse, sjekk loggen for flere detaljer",
|
"description_input_submit_error": "Feil ved oppdatering av beskrivelse, sjekk loggen for flere detaljer",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Dato og tid",
|
"edit_date_time_dialog_date_time": "Dato og tid",
|
||||||
"edit_date_time_dialog_timezone": "Tidssone",
|
"edit_date_time_dialog_timezone": "Tidssone",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Lokasjon",
|
"edit_location_dialog_title": "Lokasjon",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Legg til beskrivelse ...",
|
"exif_bottom_sheet_description": "Legg til beskrivelse ...",
|
||||||
"exif_bottom_sheet_details": "DETALJER",
|
"exif_bottom_sheet_details": "DETALJER",
|
||||||
"exif_bottom_sheet_location": "PLASSERING",
|
"exif_bottom_sheet_location": "PLASSERING",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Hvis dette er første gangen du benytter appen, velg et album (eller flere) for sikkerhetskopiering, slik at tidslinjen kan fylles med dine bilder og videoer.",
|
"home_page_first_time_notice": "Hvis dette er første gangen du benytter appen, velg et album (eller flere) for sikkerhetskopiering, slik at tidslinjen kan fylles med dine bilder og videoer.",
|
||||||
"home_page_share_err_local": "Kan ikke dele lokale objekter via link, hopper over",
|
"home_page_share_err_local": "Kan ikke dele lokale objekter via link, hopper over",
|
||||||
"home_page_upload_err_limit": "Maksimalt 30 objekter kan lastes opp om gangen, hopper over",
|
"home_page_upload_err_limit": "Maksimalt 30 objekter kan lastes opp om gangen, hopper over",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Nedlasting feilet",
|
"image_viewer_page_state_provider_download_error": "Nedlasting feilet",
|
||||||
"image_viewer_page_state_provider_download_started": "Nedlasting startet",
|
"image_viewer_page_state_provider_download_started": "Nedlasting startet",
|
||||||
"image_viewer_page_state_provider_download_success": "Nedlasting vellykket",
|
"image_viewer_page_state_provider_download_success": "Nedlasting vellykket",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Logg ut",
|
"profile_drawer_sign_out": "Logg ut",
|
||||||
"profile_drawer_trash": "Søppelbøtte",
|
"profile_drawer_trash": "Søppelbøtte",
|
||||||
"recently_added_page_title": "Nylig lagt til",
|
"recently_added_page_title": "Nylig lagt til",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Feil oppstått",
|
"scaffold_body_error_occurred": "Feil oppstått",
|
||||||
"search_bar_hint": "Søk i dine bilder",
|
"search_bar_hint": "Søk i dine bilder",
|
||||||
"search_filter_apply": "Aktiver filter",
|
"search_filter_apply": "Aktiver filter",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Lag delt album",
|
"sharing_silver_appbar_create_shared_album": "Lag delt album",
|
||||||
"sharing_silver_appbar_shared_links": "Delte linker",
|
"sharing_silver_appbar_shared_links": "Delte linker",
|
||||||
"sharing_silver_appbar_share_partner": "Del med partner",
|
"sharing_silver_appbar_share_partner": "Del med partner",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Bibliotek",
|
"tab_controller_nav_library": "Bibliotek",
|
||||||
"tab_controller_nav_photos": "Bilder",
|
"tab_controller_nav_photos": "Bilder",
|
||||||
"tab_controller_nav_search": "Søk",
|
"tab_controller_nav_search": "Søk",
|
||||||
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Verwijderen",
|
"control_bottom_app_bar_delete": "Verwijderen",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Verwijderen van Immich",
|
"control_bottom_app_bar_delete_from_immich": "Verwijderen van Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Verwijderen van apparaat",
|
"control_bottom_app_bar_delete_from_local": "Verwijderen van apparaat",
|
||||||
|
"control_bottom_app_bar_download": "Downloaden",
|
||||||
"control_bottom_app_bar_edit": "Bewerken",
|
"control_bottom_app_bar_edit": "Bewerken",
|
||||||
"control_bottom_app_bar_edit_location": "Locatie bewerken",
|
"control_bottom_app_bar_edit_location": "Locatie bewerken",
|
||||||
"control_bottom_app_bar_edit_time": "Datum & tijd bewerken",
|
"control_bottom_app_bar_edit_time": "Datum & tijd bewerken",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Delen",
|
"create_shared_album_page_share": "Delen",
|
||||||
"create_shared_album_page_share_add_assets": "ASSETS TOEVOEGEN",
|
"create_shared_album_page_share_add_assets": "ASSETS TOEVOEGEN",
|
||||||
"create_shared_album_page_share_select_photos": "Selecteer foto's",
|
"create_shared_album_page_share_select_photos": "Selecteer foto's",
|
||||||
|
"crop": "Bijsnijden",
|
||||||
"curated_location_page_title": "Plaatsen",
|
"curated_location_page_title": "Plaatsen",
|
||||||
"curated_object_page_title": "Dingen",
|
"curated_object_page_title": "Dingen",
|
||||||
"daily_title_text_date": "E dd MMM",
|
"daily_title_text_date": "E dd MMM",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Verwijder gedeelde link",
|
"delete_shared_link_dialog_title": "Verwijder gedeelde link",
|
||||||
"description_input_hint_text": "Beschrijving toevoegen...",
|
"description_input_hint_text": "Beschrijving toevoegen...",
|
||||||
"description_input_submit_error": "Beschrijving bijwerken mislukt, controleer het logboek voor meer details",
|
"description_input_submit_error": "Beschrijving bijwerken mislukt, controleer het logboek voor meer details",
|
||||||
|
"download_error": "Fout bij downloaden",
|
||||||
|
"download_started": "Download gestart",
|
||||||
|
"download_sucess": "Succesvol gedownload",
|
||||||
|
"download_sucess_android": "Het bestand is gedownload naar DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Datum en tijd",
|
"edit_date_time_dialog_date_time": "Datum en tijd",
|
||||||
"edit_date_time_dialog_timezone": "Tijdzone",
|
"edit_date_time_dialog_timezone": "Tijdzone",
|
||||||
|
"edit_image_title": "Bewerken",
|
||||||
"edit_location_dialog_title": "Locatie",
|
"edit_location_dialog_title": "Locatie",
|
||||||
|
"error_saving_image": "Fout: {}",
|
||||||
"exif_bottom_sheet_description": "Beschrijving toevoegen...",
|
"exif_bottom_sheet_description": "Beschrijving toevoegen...",
|
||||||
"exif_bottom_sheet_details": "DETAILS",
|
"exif_bottom_sheet_details": "DETAILS",
|
||||||
"exif_bottom_sheet_location": "LOCATIE",
|
"exif_bottom_sheet_location": "LOCATIE",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Als dit de eerste keer is dat je de app gebruikt, zorg er dan voor dat je een back-up album kiest, zodat de tijdlijn gevuld kan worden met foto's en video's uit het album.",
|
"home_page_first_time_notice": "Als dit de eerste keer is dat je de app gebruikt, zorg er dan voor dat je een back-up album kiest, zodat de tijdlijn gevuld kan worden met foto's en video's uit het album.",
|
||||||
"home_page_share_err_local": "Lokale assets kunnen niet via een link gedeeld worden, overslaan",
|
"home_page_share_err_local": "Lokale assets kunnen niet via een link gedeeld worden, overslaan",
|
||||||
"home_page_upload_err_limit": "Kan maximaal 30 assets tegelijk uploaden, overslaan",
|
"home_page_upload_err_limit": "Kan maximaal 30 assets tegelijk uploaden, overslaan",
|
||||||
|
"image_saved_successfully": "Afbeelding opgeslagen",
|
||||||
"image_viewer_page_state_provider_download_error": "Download mislukt",
|
"image_viewer_page_state_provider_download_error": "Download mislukt",
|
||||||
"image_viewer_page_state_provider_download_started": "Download gestart",
|
"image_viewer_page_state_provider_download_started": "Download gestart",
|
||||||
"image_viewer_page_state_provider_download_success": "Download succesvol",
|
"image_viewer_page_state_provider_download_success": "Download succesvol",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Uitloggen",
|
"profile_drawer_sign_out": "Uitloggen",
|
||||||
"profile_drawer_trash": "Prullenbak",
|
"profile_drawer_trash": "Prullenbak",
|
||||||
"recently_added_page_title": "Recent toegevoegd",
|
"recently_added_page_title": "Recent toegevoegd",
|
||||||
|
"save_to_gallery": "Opslaan in galerij",
|
||||||
"scaffold_body_error_occurred": "Fout opgetreden",
|
"scaffold_body_error_occurred": "Fout opgetreden",
|
||||||
"search_bar_hint": "Foto's doorzoeken",
|
"search_bar_hint": "Foto's doorzoeken",
|
||||||
"search_filter_apply": "Filter toepassen",
|
"search_filter_apply": "Filter toepassen",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Gedeeld album maken",
|
"sharing_silver_appbar_create_shared_album": "Gedeeld album maken",
|
||||||
"sharing_silver_appbar_shared_links": "Gedeelde links",
|
"sharing_silver_appbar_shared_links": "Gedeelde links",
|
||||||
"sharing_silver_appbar_share_partner": "Delen met partner",
|
"sharing_silver_appbar_share_partner": "Delen met partner",
|
||||||
|
"sync": "Synchroniseren",
|
||||||
|
"sync_albums": "Albums synchroniseren",
|
||||||
|
"sync_albums_manual_subtitle": "Synchroniseer alle geüploade video’s en foto’s naar de geselecteerde back-up albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Maak en upload je foto's en video's naar de geselecteerde albums op Immich",
|
||||||
"tab_controller_nav_library": "Bibliotheek",
|
"tab_controller_nav_library": "Bibliotheek",
|
||||||
"tab_controller_nav_photos": "Foto's",
|
"tab_controller_nav_photos": "Foto's",
|
||||||
"tab_controller_nav_search": "Zoeken",
|
"tab_controller_nav_search": "Zoeken",
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
"action_common_cancel": "Anuluj",
|
"action_common_cancel": "Anuluj",
|
||||||
"action_common_clear": "Wyrzuść",
|
"action_common_clear": "Wyrzuść",
|
||||||
"action_common_confirm": "Potwierdzać",
|
"action_common_confirm": "Potwierdzać",
|
||||||
"action_common_save": "Save",
|
"action_common_save": "Zapisz",
|
||||||
"action_common_select": "Select",
|
"action_common_select": "Wybierz",
|
||||||
"action_common_update": "Aktualizuj",
|
"action_common_update": "Aktualizuj",
|
||||||
"add_to_album_bottom_sheet_added": "Dodano do {album}",
|
"add_to_album_bottom_sheet_added": "Dodano do {album}",
|
||||||
"add_to_album_bottom_sheet_already_exists": "Już w {album}",
|
"add_to_album_bottom_sheet_already_exists": "Już w {album}",
|
||||||
@ -54,13 +54,13 @@
|
|||||||
"asset_list_layout_sub_title": "Układ",
|
"asset_list_layout_sub_title": "Układ",
|
||||||
"asset_list_settings_subtitle": "Ustawienia układu siatki zdjęć",
|
"asset_list_settings_subtitle": "Ustawienia układu siatki zdjęć",
|
||||||
"asset_list_settings_title": "Siatka Zdjęć",
|
"asset_list_settings_title": "Siatka Zdjęć",
|
||||||
"asset_restored_successfully": "Asset restored successfully",
|
"asset_restored_successfully": "Zasób został pomyślnie przywrócony",
|
||||||
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
"assets_deleted_permanently": "{} zasoby trwale usunięto",
|
||||||
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
"assets_deleted_permanently_from_server": " {} zasoby zostały trwale usunięte z serwera Immich",
|
||||||
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
"assets_removed_permanently_from_device": " {} zasoby zostały trwale usunięte z Twojego urządzenia",
|
||||||
"assets_restored_successfully": "{} asset(s) restored successfully",
|
"assets_restored_successfully": " {} zasoby pomyślnie przywrócono",
|
||||||
"assets_trashed": "{} asset(s) trashed",
|
"assets_trashed": "{} zasoby zostały usunięte",
|
||||||
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
"assets_trashed_from_server": "{} zasoby usunięte z serwera Immich",
|
||||||
"asset_viewer_settings_title": "Przeglądarka zasobów",
|
"asset_viewer_settings_title": "Przeglądarka zasobów",
|
||||||
"backup_album_selection_page_albums_device": "Albumy na urządzeniu ({})",
|
"backup_album_selection_page_albums_device": "Albumy na urządzeniu ({})",
|
||||||
"backup_album_selection_page_albums_tap": "Stuknij, aby włączyć, stuknij dwukrotnie, aby wykluczyć",
|
"backup_album_selection_page_albums_tap": "Stuknij, aby włączyć, stuknij dwukrotnie, aby wykluczyć",
|
||||||
@ -151,7 +151,7 @@
|
|||||||
"change_password_form_password_mismatch": "Hasła nie są zgodne",
|
"change_password_form_password_mismatch": "Hasła nie są zgodne",
|
||||||
"change_password_form_reenter_new_password": "Wprowadź ponownie Nowe Hasło",
|
"change_password_form_reenter_new_password": "Wprowadź ponownie Nowe Hasło",
|
||||||
"client_cert_dialog_msg_confirm": "OK",
|
"client_cert_dialog_msg_confirm": "OK",
|
||||||
"client_cert_enter_password": "Enter Password",
|
"client_cert_enter_password": "Wprowadź hasło",
|
||||||
"client_cert_import": "Import",
|
"client_cert_import": "Import",
|
||||||
"client_cert_import_success_msg": "Client certificate is imported",
|
"client_cert_import_success_msg": "Client certificate is imported",
|
||||||
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
|
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
|
||||||
@ -164,7 +164,7 @@
|
|||||||
"common_create_new_album": "Utwórz nowy album",
|
"common_create_new_album": "Utwórz nowy album",
|
||||||
"common_server_error": "Sprawdź połączenie sieciowe, upewnij się, że serwer jest osiągalny i wersje aplikacji/serwera są kompatybilne.",
|
"common_server_error": "Sprawdź połączenie sieciowe, upewnij się, że serwer jest osiągalny i wersje aplikacji/serwera są kompatybilne.",
|
||||||
"common_shared": "Udostępnione",
|
"common_shared": "Udostępnione",
|
||||||
"contextual_search": "Sunrise on the beach",
|
"contextual_search": "Wschód słońca na plaży",
|
||||||
"control_bottom_app_bar_add_to_album": "Dodaj do albumu",
|
"control_bottom_app_bar_add_to_album": "Dodaj do albumu",
|
||||||
"control_bottom_app_bar_album_info": "{} pozycji",
|
"control_bottom_app_bar_album_info": "{} pozycji",
|
||||||
"control_bottom_app_bar_album_info_shared": "{} pozycji · Udostępnionych",
|
"control_bottom_app_bar_album_info_shared": "{} pozycji · Udostępnionych",
|
||||||
@ -173,7 +173,8 @@
|
|||||||
"control_bottom_app_bar_delete": "Usuń",
|
"control_bottom_app_bar_delete": "Usuń",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Usuń z Immicha",
|
"control_bottom_app_bar_delete_from_immich": "Usuń z Immicha",
|
||||||
"control_bottom_app_bar_delete_from_local": "Usuń z urządzenia",
|
"control_bottom_app_bar_delete_from_local": "Usuń z urządzenia",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_download": "Pobierz",
|
||||||
|
"control_bottom_app_bar_edit": "Edytuj",
|
||||||
"control_bottom_app_bar_edit_location": "Edytuj lokalizację",
|
"control_bottom_app_bar_edit_location": "Edytuj lokalizację",
|
||||||
"control_bottom_app_bar_edit_time": "Edytuj datę i godzinę",
|
"control_bottom_app_bar_edit_time": "Edytuj datę i godzinę",
|
||||||
"control_bottom_app_bar_favorite": "Ulubione",
|
"control_bottom_app_bar_favorite": "Ulubione",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Udostępnij",
|
"create_shared_album_page_share": "Udostępnij",
|
||||||
"create_shared_album_page_share_add_assets": "DODAJ ZASOBY",
|
"create_shared_album_page_share_add_assets": "DODAJ ZASOBY",
|
||||||
"create_shared_album_page_share_select_photos": "Zaznacz Zdjęcia",
|
"create_shared_album_page_share_select_photos": "Zaznacz Zdjęcia",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Miejsca",
|
"curated_location_page_title": "Miejsca",
|
||||||
"curated_object_page_title": "Rzeczy",
|
"curated_object_page_title": "Rzeczy",
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Usuń udostępniony link",
|
"delete_shared_link_dialog_title": "Usuń udostępniony link",
|
||||||
"description_input_hint_text": "Dodaj opis...",
|
"description_input_hint_text": "Dodaj opis...",
|
||||||
"description_input_submit_error": "Błąd aktualizacji opisu, sprawdź dziennik, aby uzyskać więcej szczegółów",
|
"description_input_submit_error": "Błąd aktualizacji opisu, sprawdź dziennik, aby uzyskać więcej szczegółów",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Data i godzina",
|
"edit_date_time_dialog_date_time": "Data i godzina",
|
||||||
"edit_date_time_dialog_timezone": "Strefa czasowa",
|
"edit_date_time_dialog_timezone": "Strefa czasowa",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Lokalizacja",
|
"edit_location_dialog_title": "Lokalizacja",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Dodaj Opis...",
|
"exif_bottom_sheet_description": "Dodaj Opis...",
|
||||||
"exif_bottom_sheet_details": "SZCZEGÓŁY",
|
"exif_bottom_sheet_details": "SZCZEGÓŁY",
|
||||||
"exif_bottom_sheet_location": "LOKALIZACJA",
|
"exif_bottom_sheet_location": "LOKALIZACJA",
|
||||||
@ -223,7 +231,7 @@
|
|||||||
"experimental_settings_title": "Eksperymentalny",
|
"experimental_settings_title": "Eksperymentalny",
|
||||||
"favorites_page_no_favorites": "Nie znaleziono ulubionych zasobów",
|
"favorites_page_no_favorites": "Nie znaleziono ulubionych zasobów",
|
||||||
"favorites_page_title": "Ulubione",
|
"favorites_page_title": "Ulubione",
|
||||||
"filename_search": "File name or extension",
|
"filename_search": "Nazwa pliku lub rozszerzenie",
|
||||||
"haptic_feedback_switch": "Enable haptic feedback",
|
"haptic_feedback_switch": "Enable haptic feedback",
|
||||||
"haptic_feedback_title": "Haptic Feedback",
|
"haptic_feedback_title": "Haptic Feedback",
|
||||||
"header_settings_add_header_tip": "Dodaj nagłówek",
|
"header_settings_add_header_tip": "Dodaj nagłówek",
|
||||||
@ -247,12 +255,13 @@
|
|||||||
"home_page_first_time_notice": "Jeśli korzystasz z aplikacji po raz pierwszy, pamiętaj o wybraniu albumów zapasowych, aby oś czasu mogła zapełnić zdjęcia i filmy w albumach.",
|
"home_page_first_time_notice": "Jeśli korzystasz z aplikacji po raz pierwszy, pamiętaj o wybraniu albumów zapasowych, aby oś czasu mogła zapełnić zdjęcia i filmy w albumach.",
|
||||||
"home_page_share_err_local": "Nie można udostępniać zasobów lokalnych za pośrednictwem linku, pomijajam",
|
"home_page_share_err_local": "Nie można udostępniać zasobów lokalnych za pośrednictwem linku, pomijajam",
|
||||||
"home_page_upload_err_limit": "Można przesłać maksymalnie 30 zasobów jednocześnie, pomijanie",
|
"home_page_upload_err_limit": "Można przesłać maksymalnie 30 zasobów jednocześnie, pomijanie",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Błąd pobierania",
|
"image_viewer_page_state_provider_download_error": "Błąd pobierania",
|
||||||
"image_viewer_page_state_provider_download_started": "Pobieranie rozpoczęte",
|
"image_viewer_page_state_provider_download_started": "Pobieranie rozpoczęte",
|
||||||
"image_viewer_page_state_provider_download_success": "Pobieranie zakończone",
|
"image_viewer_page_state_provider_download_success": "Pobieranie zakończone",
|
||||||
"image_viewer_page_state_provider_share_error": "Udostępnij błąd",
|
"image_viewer_page_state_provider_share_error": "Udostępnij błąd",
|
||||||
"invalid_date": "Invalid date",
|
"invalid_date": "Nieprawidłowa data",
|
||||||
"invalid_date_format": "Invalid date format",
|
"invalid_date_format": "Nieprawidłowy format daty",
|
||||||
"library_page_albums": "Albumy",
|
"library_page_albums": "Albumy",
|
||||||
"library_page_archive": "Archiwum",
|
"library_page_archive": "Archiwum",
|
||||||
"library_page_device_albums": "Albumy na Urządzeniu",
|
"library_page_device_albums": "Albumy na Urządzeniu",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Wyloguj się",
|
"profile_drawer_sign_out": "Wyloguj się",
|
||||||
"profile_drawer_trash": "Kosz",
|
"profile_drawer_trash": "Kosz",
|
||||||
"recently_added_page_title": "Ostatnio Dodane",
|
"recently_added_page_title": "Ostatnio Dodane",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Wystąpił błąd",
|
"scaffold_body_error_occurred": "Wystąpił błąd",
|
||||||
"search_bar_hint": "Szukaj swoich zdjęć",
|
"search_bar_hint": "Szukaj swoich zdjęć",
|
||||||
"search_filter_apply": "Zastosuj filtr",
|
"search_filter_apply": "Zastosuj filtr",
|
||||||
@ -394,14 +404,14 @@
|
|||||||
"search_filter_location_city": "Miasto",
|
"search_filter_location_city": "Miasto",
|
||||||
"search_filter_location_country": "Kraj",
|
"search_filter_location_country": "Kraj",
|
||||||
"search_filter_location_state": "State",
|
"search_filter_location_state": "State",
|
||||||
"search_filter_location_title": "Select location",
|
"search_filter_location_title": "Wybierz lokalizację",
|
||||||
"search_filter_media_type": "Media Type",
|
"search_filter_media_type": "Typ multimediów",
|
||||||
"search_filter_media_type_all": "Wszystko",
|
"search_filter_media_type_all": "Wszystko",
|
||||||
"search_filter_media_type_image": "Obrazy",
|
"search_filter_media_type_image": "Obrazy",
|
||||||
"search_filter_media_type_title": "Select media type",
|
"search_filter_media_type_title": "Wybierz typ multimediów",
|
||||||
"search_filter_media_type_video": "Filmy",
|
"search_filter_media_type_video": "Filmy",
|
||||||
"search_filter_people": "People",
|
"search_filter_people": "Osoby",
|
||||||
"search_filter_people_title": "Select people",
|
"search_filter_people_title": "Wybierz osoby",
|
||||||
"search_page_categories": "Kategorie",
|
"search_page_categories": "Kategorie",
|
||||||
"search_page_favorites": "Ulubione",
|
"search_page_favorites": "Ulubione",
|
||||||
"search_page_motion_photos": "Zdjęcia ruchome",
|
"search_page_motion_photos": "Zdjęcia ruchome",
|
||||||
@ -529,27 +539,31 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Utwórz współdzielony album",
|
"sharing_silver_appbar_create_shared_album": "Utwórz współdzielony album",
|
||||||
"sharing_silver_appbar_shared_links": "Udostępnione linki",
|
"sharing_silver_appbar_shared_links": "Udostępnione linki",
|
||||||
"sharing_silver_appbar_share_partner": "Udostępnij partnerce/partnerowi",
|
"sharing_silver_appbar_share_partner": "Udostępnij partnerce/partnerowi",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Biblioteka",
|
"tab_controller_nav_library": "Biblioteka",
|
||||||
"tab_controller_nav_photos": "Zdjęcia",
|
"tab_controller_nav_photos": "Zdjęcia",
|
||||||
"tab_controller_nav_search": "Szukaj",
|
"tab_controller_nav_search": "Szukaj",
|
||||||
"tab_controller_nav_sharing": "Udostępnianie",
|
"tab_controller_nav_sharing": "Udostępnianie",
|
||||||
"theme_setting_asset_list_storage_indicator_title": "Pokaż wskaźnik przechowywania na kafelkach zasobów",
|
"theme_setting_asset_list_storage_indicator_title": "Pokaż wskaźnik przechowywania na kafelkach zasobów",
|
||||||
"theme_setting_asset_list_tiles_per_row_title": "Liczba zasobów w wierszu ({})",
|
"theme_setting_asset_list_tiles_per_row_title": "Liczba zasobów w wierszu ({})",
|
||||||
"theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.",
|
"theme_setting_colorful_interface_subtitle": "Zastosuj kolor podstawowy do powierzchni tła.",
|
||||||
"theme_setting_colorful_interface_title": "Colorful interface",
|
"theme_setting_colorful_interface_title": "Kolorowy interfejs",
|
||||||
"theme_setting_dark_mode_switch": "Ciemny Motyw",
|
"theme_setting_dark_mode_switch": "Ciemny Motyw",
|
||||||
"theme_setting_image_viewer_quality_subtitle": "Dostosuj jakość podglądu szczegółowości",
|
"theme_setting_image_viewer_quality_subtitle": "Dostosuj jakość podglądu szczegółowości",
|
||||||
"theme_setting_image_viewer_quality_title": "Jakość przeglądania obrazów",
|
"theme_setting_image_viewer_quality_title": "Jakość przeglądania obrazów",
|
||||||
"theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.",
|
"theme_setting_primary_color_subtitle": "Wybierz kolor dla głównych działań i akcentów.",
|
||||||
"theme_setting_primary_color_title": "Primary color",
|
"theme_setting_primary_color_title": "Kolor podstawowy",
|
||||||
"theme_setting_system_primary_color_title": "Use system color",
|
"theme_setting_system_primary_color_title": "Użyj koloru systemowego",
|
||||||
"theme_setting_system_theme_switch": "Automatyczny (Postępuj zgodnie z ustawieniami systemu)",
|
"theme_setting_system_theme_switch": "Automatyczny (Postępuj zgodnie z ustawieniami systemu)",
|
||||||
"theme_setting_theme_subtitle": "Wybierz ustawienia motywu aplikacji",
|
"theme_setting_theme_subtitle": "Wybierz ustawienia motywu aplikacji",
|
||||||
"theme_setting_theme_title": "Motyw",
|
"theme_setting_theme_title": "Motyw",
|
||||||
"theme_setting_three_stage_loading_subtitle": "Trójstopniowe ładowanie może zwiększyć wydajność ładowania, ale powoduje znacznie większe obciążenie sieci",
|
"theme_setting_three_stage_loading_subtitle": "Trójstopniowe ładowanie może zwiększyć wydajność ładowania, ale powoduje znacznie większe obciążenie sieci",
|
||||||
"theme_setting_three_stage_loading_title": "Włączenie trójstopniowego ładowania",
|
"theme_setting_three_stage_loading_title": "Włączenie trójstopniowego ładowania",
|
||||||
"translated_text_options": "Opcje",
|
"translated_text_options": "Opcje",
|
||||||
"trash_emptied": "Emptied trash",
|
"trash_emptied": "Opróżnione śmieci",
|
||||||
"trash_page_delete": "Usuń",
|
"trash_page_delete": "Usuń",
|
||||||
"trash_page_delete_all": "Usuń wszystko",
|
"trash_page_delete_all": "Usuń wszystko",
|
||||||
"trash_page_empty_trash_btn": "Opróżnij kosz",
|
"trash_page_empty_trash_btn": "Opróżnij kosz",
|
||||||
|
@ -1,104 +1,104 @@
|
|||||||
{
|
{
|
||||||
"action_common_back": "Back",
|
"action_common_back": "Voltar",
|
||||||
"action_common_cancel": "Cancelar",
|
"action_common_cancel": "Cancelar",
|
||||||
"action_common_clear": "Clear",
|
"action_common_clear": "Limpar",
|
||||||
"action_common_confirm": "Confirm",
|
"action_common_confirm": "Confirmar",
|
||||||
"action_common_save": "Save",
|
"action_common_save": "Salvar",
|
||||||
"action_common_select": "Select",
|
"action_common_select": "Selecionar",
|
||||||
"action_common_update": "Atualizar",
|
"action_common_update": "Atualizar",
|
||||||
"add_to_album_bottom_sheet_added": "Adicionar a {album}",
|
"add_to_album_bottom_sheet_added": "Adicionado a {album}",
|
||||||
"add_to_album_bottom_sheet_already_exists": "Já pertence a {album}",
|
"add_to_album_bottom_sheet_already_exists": "Já existe em {album}",
|
||||||
"advanced_settings_log_level_title": "Nível de log: {}",
|
"advanced_settings_log_level_title": "Nível de log: {}",
|
||||||
"advanced_settings_prefer_remote_subtitle": "Alguns dispositivos são extremamente lentos a carregar miniaturas da memória. Ative esta opção para preferir imagens remotas.",
|
"advanced_settings_prefer_remote_subtitle": "Alguns dispositivos são extremamente lentos para carregar miniaturas da memória. Ative esta opção para preferir imagens do servidor.",
|
||||||
"advanced_settings_prefer_remote_title": "Preferir imagens remotas",
|
"advanced_settings_prefer_remote_title": "Preferir imagens do servidor",
|
||||||
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
|
"advanced_settings_proxy_headers_subtitle": "Defina os cabeçalhos do proxy que o Immich deve enviar em todas comunicações com a rede",
|
||||||
"advanced_settings_proxy_headers_title": "Proxy Headers",
|
"advanced_settings_proxy_headers_title": "Cabeçalhos do Proxy",
|
||||||
"advanced_settings_self_signed_ssl_subtitle": "Salta a verificação do certificado SSL para o endereço do servidor. Necessário para certificados auto-assinados.",
|
"advanced_settings_self_signed_ssl_subtitle": "Não validar o certificado SSL com o endereço do servidor. Isto é necessário para certificados auto-assinados.",
|
||||||
"advanced_settings_self_signed_ssl_title": "Permitir certificados SSL auto-assinados",
|
"advanced_settings_self_signed_ssl_title": "Permitir certificados SSL auto-assinados",
|
||||||
"advanced_settings_tile_subtitle": "Definições avançadas do utilizador",
|
"advanced_settings_tile_subtitle": "Configurações avançadas do usuário",
|
||||||
"advanced_settings_tile_title": "Avançado",
|
"advanced_settings_tile_title": "Avançado",
|
||||||
"advanced_settings_troubleshooting_subtitle": "Ativar funcionalidades adicionais para a resolução de problemas",
|
"advanced_settings_troubleshooting_subtitle": "Ativar funcionalidades adicionais para a resolução de problemas",
|
||||||
"advanced_settings_troubleshooting_title": "Resolução de problemas",
|
"advanced_settings_troubleshooting_title": "Resolução de problemas",
|
||||||
"album_info_card_backup_album_excluded": "DELETADO",
|
"album_info_card_backup_album_excluded": "EXCLUÍDO",
|
||||||
"album_info_card_backup_album_included": "INCLUÍDO",
|
"album_info_card_backup_album_included": "INCLUÍDO",
|
||||||
"album_thumbnail_card_item": "1 item",
|
"album_thumbnail_card_item": "1 arquivo",
|
||||||
"album_thumbnail_card_items": "{} itens",
|
"album_thumbnail_card_items": "{} arquivos",
|
||||||
"album_thumbnail_card_shared": " · Partilhado",
|
"album_thumbnail_card_shared": " · Compartilhado",
|
||||||
"album_thumbnail_owned": "Seu",
|
"album_thumbnail_owned": "Seu",
|
||||||
"album_thumbnail_shared_by": "Partilhado por {}",
|
"album_thumbnail_shared_by": "Compartilhado por {}",
|
||||||
"album_viewer_appbar_delete_confirm": "Are you sure you want to delete this album from your account?",
|
"album_viewer_appbar_delete_confirm": "Tem certeza que deseja excluir este álbum da sua conta?",
|
||||||
"album_viewer_appbar_share_delete": "Deletar álbum",
|
"album_viewer_appbar_share_delete": "Excluir álbum",
|
||||||
"album_viewer_appbar_share_err_delete": "Falha ao deletar álbum",
|
"album_viewer_appbar_share_err_delete": "Falha ao excluir álbum",
|
||||||
"album_viewer_appbar_share_err_leave": "Falha ao sair do álbum",
|
"album_viewer_appbar_share_err_leave": "Falha ao sair do álbum",
|
||||||
"album_viewer_appbar_share_err_remove": "Houveram problemas ao remover itens do álbum",
|
"album_viewer_appbar_share_err_remove": "Houveram problemas ao remover arquivos do álbum",
|
||||||
"album_viewer_appbar_share_err_title": "Falha ao alterar título do álbum",
|
"album_viewer_appbar_share_err_title": "Falha ao alterar título do álbum",
|
||||||
"album_viewer_appbar_share_leave": "Deixar álbum",
|
"album_viewer_appbar_share_leave": "Deixar álbum",
|
||||||
"album_viewer_appbar_share_remove": "Remover do álbum",
|
"album_viewer_appbar_share_remove": "Remover do álbum",
|
||||||
"album_viewer_appbar_share_to": "Partilhar com",
|
"album_viewer_appbar_share_to": "Compartilhar com",
|
||||||
"album_viewer_page_share_add_users": "Adicionar usuários",
|
"album_viewer_page_share_add_users": "Adicionar usuários",
|
||||||
"all_people_page_title": "Pessoas",
|
"all_people_page_title": "Pessoas",
|
||||||
"all_videos_page_title": "Vídeos",
|
"all_videos_page_title": "Vídeos",
|
||||||
"app_bar_signout_dialog_content": "Tem a certeza que deseja sair?",
|
"app_bar_signout_dialog_content": "Tem certeza que deseja sair?",
|
||||||
"app_bar_signout_dialog_ok": "Sim",
|
"app_bar_signout_dialog_ok": "Sim",
|
||||||
"app_bar_signout_dialog_title": "Sair",
|
"app_bar_signout_dialog_title": "Sair",
|
||||||
"archive_page_no_archived_assets": "Nenhum recurso arquivado encontrado",
|
"archive_page_no_archived_assets": "Nenhum arquivo encontrado",
|
||||||
"archive_page_title": "Arquivo ({})",
|
"archive_page_title": "Arquivado ({})",
|
||||||
"asset_action_delete_err_read_only": "Não é possível eliminar o(s) recurso(s) só de leitura, ignorando",
|
"asset_action_delete_err_read_only": "Não é possível excluir arquivo só leitura, ignorando",
|
||||||
"asset_action_share_err_offline": "Não é possível obter recurso(s) offline, ignorando",
|
"asset_action_share_err_offline": "Não foi possível obter os arquivos offline, ignorando",
|
||||||
"asset_list_group_by_sub_title": "Agrupar por",
|
"asset_list_group_by_sub_title": "Agrupar por",
|
||||||
"asset_list_layout_settings_dynamic_layout_title": "Disposição dinâmica",
|
"asset_list_layout_settings_dynamic_layout_title": "Layout dinâmico",
|
||||||
"asset_list_layout_settings_group_automatically": "Automático",
|
"asset_list_layout_settings_group_automatically": "Automático",
|
||||||
"asset_list_layout_settings_group_by": "Agrupar recursos por",
|
"asset_list_layout_settings_group_by": "Agrupar arquivos por",
|
||||||
"asset_list_layout_settings_group_by_month": "Mês",
|
"asset_list_layout_settings_group_by_month": "Mês",
|
||||||
"asset_list_layout_settings_group_by_month_day": "Mês + dia",
|
"asset_list_layout_settings_group_by_month_day": "Mês + dia",
|
||||||
"asset_list_layout_sub_title": "Disposição",
|
"asset_list_layout_sub_title": "Disposição",
|
||||||
"asset_list_settings_subtitle": "Configurações de layout da grelha de fotos",
|
"asset_list_settings_subtitle": "Configurações de disposição da grade de fotos",
|
||||||
"asset_list_settings_title": "Grelha de fotos",
|
"asset_list_settings_title": "Grade de fotos",
|
||||||
"asset_restored_successfully": "Asset restored successfully",
|
"asset_restored_successfully": "Arquivo restaurado com sucesso",
|
||||||
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
"assets_deleted_permanently": "{} arquivo(s) excluído permanentemente",
|
||||||
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
"assets_deleted_permanently_from_server": "{} arquivo(s) excluídos permanentemente do servidor",
|
||||||
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
"assets_removed_permanently_from_device": "{} arquivo(s) removidos permanentemente do seu dispositivo",
|
||||||
"assets_restored_successfully": "{} asset(s) restored successfully",
|
"assets_restored_successfully": "{} arquivo(s) restaurados com sucesso",
|
||||||
"assets_trashed": "{} asset(s) trashed",
|
"assets_trashed": "{} arquivo(s) enviados para a lixeira",
|
||||||
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
"assets_trashed_from_server": "{} arquivo(s) do servidor foram enviados para a lixeira",
|
||||||
"asset_viewer_settings_title": "Visualizador de recursos",
|
"asset_viewer_settings_title": "Visualizador",
|
||||||
"backup_album_selection_page_albums_device": "Álbuns no dispositivo ({})",
|
"backup_album_selection_page_albums_device": "Álbuns no dispositivo ({})",
|
||||||
"backup_album_selection_page_albums_tap": "Toque para incluir, duplo toque para exluir",
|
"backup_album_selection_page_albums_tap": "Toque para incluir, duplo toque para excluir",
|
||||||
"backup_album_selection_page_assets_scatter": "Os itens podem estar espalhados por vários álbuns. Assim, os álbuns podem ser incluídos ou excluídos durante o processo de backup.",
|
"backup_album_selection_page_assets_scatter": "Os arquivos podem estar espalhados em vários álbuns. Assim, os álbuns podem ser incluídos ou excluídos durante o processo de backup.",
|
||||||
"backup_album_selection_page_select_albums": "Selecione Álbuns",
|
"backup_album_selection_page_select_albums": "Selecione Álbuns",
|
||||||
"backup_album_selection_page_selection_info": "Informações da Seleção",
|
"backup_album_selection_page_selection_info": "Informações da Seleção",
|
||||||
"backup_album_selection_page_total_assets": "Total de itens únicos",
|
"backup_album_selection_page_total_assets": "Total de arquivos únicos",
|
||||||
"backup_all": "Tudo",
|
"backup_all": "Tudo",
|
||||||
"backup_background_service_backup_failed_message": "Falha ao fazer backup dos itens. Tentando novamente…",
|
"backup_background_service_backup_failed_message": "Falha ao fazer backup dos arquivos. Tentando novamente…",
|
||||||
"backup_background_service_connection_failed_message": "Falha na conexão com o servidor. Tentando novamente...",
|
"backup_background_service_connection_failed_message": "Falha na conexão com o servidor. Tentando novamente...",
|
||||||
"backup_background_service_current_upload_notification": "Carregando {}",
|
"backup_background_service_current_upload_notification": "Enviando {}",
|
||||||
"backup_background_service_default_notification": "Verificando novos itens…",
|
"backup_background_service_default_notification": "Verificando novos arquivos…",
|
||||||
"backup_background_service_error_title": "Erro de backup",
|
"backup_background_service_error_title": "Erro de backup",
|
||||||
"backup_background_service_in_progress_notification": "Fazendo backup de seus itens…",
|
"backup_background_service_in_progress_notification": "Fazendo backup dos arquivos…",
|
||||||
"backup_background_service_upload_failure_notification": "Falha ao carregar {}",
|
"backup_background_service_upload_failure_notification": "Falha ao carregar {}",
|
||||||
"backup_controller_page_albums": "Backup Álbuns",
|
"backup_controller_page_albums": "Backup Álbuns",
|
||||||
"backup_controller_page_background_app_refresh_disabled_content": "Active a atualização de aplicações em segundo plano em Definições > Geral > Atualização de aplicações em segundo plano para utilizar a cópia de segurança em segundo plano.",
|
"backup_controller_page_background_app_refresh_disabled_content": "Para utilizar o backup em segundo plano, ative a atualização da aplicação em segundo plano em Configurações > Geral > Atualização do app em segundo plano ",
|
||||||
"backup_controller_page_background_app_refresh_disabled_title": "Atualização da app em segundo plano desativada",
|
"backup_controller_page_background_app_refresh_disabled_title": "Atualização do app em segundo plano desativada",
|
||||||
"backup_controller_page_background_app_refresh_enable_button_text": "Ir para as definições",
|
"backup_controller_page_background_app_refresh_enable_button_text": "Ir para as configurações",
|
||||||
"backup_controller_page_background_battery_info_link": "Mostre-me como",
|
"backup_controller_page_background_battery_info_link": "Mostre-me como",
|
||||||
"backup_controller_page_background_battery_info_message": "Para obter a melhor experiência de backup em segundo plano, desative todas as otimizações de bateria que restrinjam a atividade em segundo plano do Immich.\n\nComo isso é específico do dispositivo, consulte as informações necessárias do fabricante do dispositivo.",
|
"backup_controller_page_background_battery_info_message": "Para obter a melhor experiência de backup em segundo plano, desative todas as otimizações de bateria que restrinjam a atividade em segundo plano do Immich.\n\nComo isso é específico por dispositivo, consulte as informações de como fazer isso com o fabricante do dispositivo.",
|
||||||
"backup_controller_page_background_battery_info_ok": "OK",
|
"backup_controller_page_background_battery_info_ok": "OK",
|
||||||
"backup_controller_page_background_battery_info_title": "Otimizações de bateria",
|
"backup_controller_page_background_battery_info_title": "Otimizações de bateria",
|
||||||
"backup_controller_page_background_charging": "Somente durante o carregamento",
|
"backup_controller_page_background_charging": "Apenas enquanto carrega a bateria",
|
||||||
"backup_controller_page_background_configure_error": "Falha ao configurar o serviço em segundo plano",
|
"backup_controller_page_background_configure_error": "Falha ao configurar o serviço em segundo plano",
|
||||||
"backup_controller_page_background_delay": "Atrasar o backup de novos ativos: {}",
|
"backup_controller_page_background_delay": "Atrasar o backup de novos arquivos: {}",
|
||||||
"backup_controller_page_background_description": "Ative o serviço em segundo plano para fazer backup automático de novos itens sem precisar abrir o aplicativo",
|
"backup_controller_page_background_description": "Ative o serviço em segundo plano para fazer backup automático de novos arquivos sem precisar abrir o aplicativo",
|
||||||
"backup_controller_page_background_is_off": "O backup automático em segundo plano está desativado",
|
"backup_controller_page_background_is_off": "O backup automático em segundo plano está desativado",
|
||||||
"backup_controller_page_background_is_on": "O backup automático em segundo plano está ativado",
|
"backup_controller_page_background_is_on": "O backup automático em segundo plano está ativado",
|
||||||
"backup_controller_page_background_turn_off": "Desativar o serviço em segundo plano",
|
"backup_controller_page_background_turn_off": "Desativar o serviço em segundo plano",
|
||||||
"backup_controller_page_background_turn_on": "Ativar o serviço em segundo plano",
|
"backup_controller_page_background_turn_on": "Ativar o serviço em segundo plano",
|
||||||
"backup_controller_page_background_wifi": "Apenas Wi-Fi",
|
"backup_controller_page_background_wifi": "Apenas no WiFi",
|
||||||
"backup_controller_page_backup": "Backup",
|
"backup_controller_page_backup": "Backup",
|
||||||
"backup_controller_page_backup_selected": "Selecionado:",
|
"backup_controller_page_backup_selected": "Selecionado:",
|
||||||
"backup_controller_page_backup_sub": "Fotos e vídeos salvos em backup",
|
"backup_controller_page_backup_sub": "Fotos e vídeos salvos em backup",
|
||||||
"backup_controller_page_cancel": "Cancelar",
|
"backup_controller_page_cancel": "Cancelar",
|
||||||
"backup_controller_page_created": "Criado em: {}",
|
"backup_controller_page_created": "Criado em: {}",
|
||||||
"backup_controller_page_desc_backup": "Ligue o backup para fazer o upload automático de novos itens para o servidor. ",
|
"backup_controller_page_desc_backup": "Ative o backup para enviar automáticamente novos arquivos para o servidor.",
|
||||||
"backup_controller_page_excluded": "Excluídos:",
|
"backup_controller_page_excluded": "Excluídos:",
|
||||||
"backup_controller_page_failed": "Falhou ({})",
|
"backup_controller_page_failed": "Falhou ({})",
|
||||||
"backup_controller_page_filename": "Nome do arquivo: {} [{}]",
|
"backup_controller_page_filename": "Nome do arquivo: {} [{}]",
|
||||||
@ -106,160 +106,169 @@
|
|||||||
"backup_controller_page_info": "Informações do backup",
|
"backup_controller_page_info": "Informações do backup",
|
||||||
"backup_controller_page_none_selected": "Nenhum selecionado",
|
"backup_controller_page_none_selected": "Nenhum selecionado",
|
||||||
"backup_controller_page_remainder": "Restante",
|
"backup_controller_page_remainder": "Restante",
|
||||||
"backup_controller_page_remainder_sub": "Fotos e vídeos restantes para fazer backup da seleção",
|
"backup_controller_page_remainder_sub": "Fotos e vídeos selecionados restantes para fazer backup",
|
||||||
"backup_controller_page_select": "Selecione",
|
"backup_controller_page_select": "Selecione",
|
||||||
"backup_controller_page_server_storage": "Armazenamento no servidor",
|
"backup_controller_page_server_storage": "Armazenamento no servidor",
|
||||||
"backup_controller_page_start_backup": "Iniciar Backup",
|
"backup_controller_page_start_backup": "Iniciar Backup",
|
||||||
"backup_controller_page_status_off": "Backup está desligado",
|
"backup_controller_page_status_off": "Backup automático desativado",
|
||||||
"backup_controller_page_status_on": "Backup está ligado",
|
"backup_controller_page_status_on": "Backup automático ativado",
|
||||||
"backup_controller_page_storage_format": "{} de {} usados",
|
"backup_controller_page_storage_format": "{} de {} usados",
|
||||||
"backup_controller_page_to_backup": "Álbuns para fazer backup",
|
"backup_controller_page_to_backup": "Álbuns para fazer backup",
|
||||||
"backup_controller_page_total": "Total",
|
"backup_controller_page_total": "Total",
|
||||||
"backup_controller_page_total_sub": "Todas as fotos e vídeos dos álbuns selecionados",
|
"backup_controller_page_total_sub": "Todas as fotos e vídeos dos álbuns selecionados",
|
||||||
"backup_controller_page_turn_off": "Desligar backup",
|
"backup_controller_page_turn_off": "Desativar backup",
|
||||||
"backup_controller_page_turn_on": "Ativar backup",
|
"backup_controller_page_turn_on": "Ativar backup",
|
||||||
"backup_controller_page_uploading_file_info": "Carregando informações do arquivo",
|
"backup_controller_page_uploading_file_info": "Carregando informações do arquivo",
|
||||||
"backup_err_only_album": "Não é possível remover apenas o álbum",
|
"backup_err_only_album": "Não é possível remover apenas o álbum",
|
||||||
"backup_info_card_assets": "itens",
|
"backup_info_card_assets": "arquivos",
|
||||||
"backup_manual_cancelled": "Cancelado",
|
"backup_manual_cancelled": "Cancelado",
|
||||||
"backup_manual_failed": "Falhou",
|
"backup_manual_failed": "Falhou",
|
||||||
"backup_manual_in_progress": "Carregamento em curso. Tente depois de algum tempo",
|
"backup_manual_in_progress": "Envio já está em progresso. Tente novamente mais tarde",
|
||||||
"backup_manual_success": "Sucesso",
|
"backup_manual_success": "Sucesso",
|
||||||
"backup_manual_title": "Estado do carregamento",
|
"backup_manual_title": "Estado do envio",
|
||||||
"backup_options_page_title": "Backup options",
|
"backup_options_page_title": "Opções de backup",
|
||||||
"cache_settings_album_thumbnails": "Miniaturas da página da biblioteca ({} itens)",
|
"cache_settings_album_thumbnails": "Miniaturas da página da biblioteca ({} arquivos)",
|
||||||
"cache_settings_clear_cache_button": "Limpar cache",
|
"cache_settings_clear_cache_button": "Limpar cache",
|
||||||
"cache_settings_clear_cache_button_title": "Limpa o cache do aplicativo. Isso afetará significativamente o desempenho do aplicativo até que o cache seja reconstruído.",
|
"cache_settings_clear_cache_button_title": "Limpa o cache do aplicativo. Isso afetará significativamente o desempenho do aplicativo até que o cache seja reconstruído.",
|
||||||
"cache_settings_duplicated_assets_clear_button": "LIMPAR",
|
"cache_settings_duplicated_assets_clear_button": "LIMPAR",
|
||||||
"cache_settings_duplicated_assets_subtitle": "Fotografias e vídeos que estão na lista negra da aplicação",
|
"cache_settings_duplicated_assets_subtitle": "Fotos e vídeos que estão na lista negra da aplicação",
|
||||||
"cache_settings_duplicated_assets_title": "Recursos duplicados ({})",
|
"cache_settings_duplicated_assets_title": "Arquivos duplicados ({})",
|
||||||
"cache_settings_image_cache_size": "Tamanho do cache de imagem ({} itens)",
|
"cache_settings_image_cache_size": "Tamanho do cache de imagem ({} arquivos)",
|
||||||
"cache_settings_statistics_album": "Miniaturas da biblioteca",
|
"cache_settings_statistics_album": "Miniaturas da biblioteca",
|
||||||
"cache_settings_statistics_assets": "{} itens ({})",
|
"cache_settings_statistics_assets": "{} arquivos ({})",
|
||||||
"cache_settings_statistics_full": "Imagens completas",
|
"cache_settings_statistics_full": "Imagens completas",
|
||||||
"cache_settings_statistics_shared": "Miniaturas de álbuns partilhados",
|
"cache_settings_statistics_shared": "Miniaturas de álbuns compartilhados",
|
||||||
"cache_settings_statistics_thumbnail": "Miniaturas",
|
"cache_settings_statistics_thumbnail": "Miniaturas",
|
||||||
"cache_settings_statistics_title": "Uso de cache",
|
"cache_settings_statistics_title": "Uso de cache",
|
||||||
"cache_settings_subtitle": "Controle o comportamento de cache do aplicativo Immich",
|
"cache_settings_subtitle": "Controle o comportamento de cache do aplicativo Immich",
|
||||||
"cache_settings_thumbnail_size": "Tamanho do cache de miniaturas ({} itens)",
|
"cache_settings_thumbnail_size": "Tamanho do cache de miniaturas ({} arquivos)",
|
||||||
"cache_settings_tile_subtitle": "Controlar o comportamento do armazenamento local",
|
"cache_settings_tile_subtitle": "Controlar o comportamento do armazenamento local",
|
||||||
"cache_settings_tile_title": "Armazenamento local",
|
"cache_settings_tile_title": "Armazenamento local",
|
||||||
"cache_settings_title": "Configurações de cache",
|
"cache_settings_title": "Configurações de cache",
|
||||||
"change_password_form_confirm_password": "Confirme a senha",
|
"change_password_form_confirm_password": "Confirme a senha",
|
||||||
"change_password_form_description": "Olá {name},\n\nÉ a primeira vez que entra no sistema ou foi-lhe pedido que alterasse a sua palavra-passe. Introduza a nova palavra-passe abaixo.",
|
"change_password_form_description": "Esta é a primeira vez que você está acessando o sistema ou foi feita uma solicitação para alterar sua senha. Por favor, insira a nova senha abaixo.",
|
||||||
"change_password_form_new_password": "Nova senha",
|
"change_password_form_new_password": "Nova senha",
|
||||||
"change_password_form_password_mismatch": "As senhas não coincidem",
|
"change_password_form_password_mismatch": "As senhas não estão iguais",
|
||||||
"change_password_form_reenter_new_password": "Re-introduza a nova senha",
|
"change_password_form_reenter_new_password": "Confirme a nova senha",
|
||||||
"client_cert_dialog_msg_confirm": "OK",
|
"client_cert_dialog_msg_confirm": "OK",
|
||||||
"client_cert_enter_password": "Enter Password",
|
"client_cert_enter_password": "Digite a senha",
|
||||||
"client_cert_import": "Import",
|
"client_cert_import": "Importar",
|
||||||
"client_cert_import_success_msg": "Client certificate is imported",
|
"client_cert_import_success_msg": "Certificado do cliente foi importado",
|
||||||
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
|
"client_cert_invalid_msg": "Certificado inválido ou senha incorreta",
|
||||||
"client_cert_remove": "Remove",
|
"client_cert_remove": "Remover",
|
||||||
"client_cert_remove_msg": "Client certificate is removed",
|
"client_cert_remove_msg": "Certificado do cliente foi removido",
|
||||||
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
|
"client_cert_subtitle": "Somente há suporte ao formato PKCS12 (.p12, .pfx). Importar/Remover certificados está disponivel somente durante o login",
|
||||||
"client_cert_title": "SSL Client Certificate",
|
"client_cert_title": "Certificado de Cliente SSL",
|
||||||
"common_add_to_album": "Adicionar ao álbum",
|
"common_add_to_album": "Adicionar ao álbum",
|
||||||
"common_change_password": "Mudar a senha",
|
"common_change_password": "Mudar a senha",
|
||||||
"common_create_new_album": "Criar novo álbum",
|
"common_create_new_album": "Criar novo álbum",
|
||||||
"common_server_error": "Verifique a sua ligação de rede, certifique-se de que o servidor está acessível e de que as versões da aplicação/servidor são compatíveis.",
|
"common_server_error": "Verifique a sua conexão de rede, certifique-se de que o servidor está acessível e de que as versões da aplicação/servidor são compatíveis.",
|
||||||
"common_shared": "Partilhado",
|
"common_shared": "Compartilhado",
|
||||||
"contextual_search": "Sunrise on the beach",
|
"contextual_search": "Nascer do sol na praia",
|
||||||
"control_bottom_app_bar_add_to_album": "Adicionar ao álbum",
|
"control_bottom_app_bar_add_to_album": "Adicionar ao álbum",
|
||||||
"control_bottom_app_bar_album_info": "{} itens",
|
"control_bottom_app_bar_album_info": "{} arquivos",
|
||||||
"control_bottom_app_bar_album_info_shared": "{} itens · Partilhado",
|
"control_bottom_app_bar_album_info_shared": "{} arquivos · Compartilhado",
|
||||||
"control_bottom_app_bar_archive": "Arquivo",
|
"control_bottom_app_bar_archive": "Arquivar",
|
||||||
"control_bottom_app_bar_create_new_album": "Criar novo álbum",
|
"control_bottom_app_bar_create_new_album": "Criar novo álbum",
|
||||||
"control_bottom_app_bar_delete": "Deletar",
|
"control_bottom_app_bar_delete": "Excluir ",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Apagar do Immich",
|
"control_bottom_app_bar_delete_from_immich": "Excluir do Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Apagar do dispositivo",
|
"control_bottom_app_bar_delete_from_local": "Excluir do dispositivo",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_download": "Baixar",
|
||||||
|
"control_bottom_app_bar_edit": "Editar",
|
||||||
"control_bottom_app_bar_edit_location": "Editar Localização",
|
"control_bottom_app_bar_edit_location": "Editar Localização",
|
||||||
"control_bottom_app_bar_edit_time": "Editar Data & Hora",
|
"control_bottom_app_bar_edit_time": "Editar Data & Hora",
|
||||||
"control_bottom_app_bar_favorite": "Favorito",
|
"control_bottom_app_bar_favorite": "Favorito",
|
||||||
"control_bottom_app_bar_share": "Partilhar",
|
"control_bottom_app_bar_share": "Compartilhar",
|
||||||
"control_bottom_app_bar_share_to": "Partilhar com",
|
"control_bottom_app_bar_share_to": "Compartilhar com",
|
||||||
"control_bottom_app_bar_stack": "Empilhar",
|
"control_bottom_app_bar_stack": "Empilhar",
|
||||||
"control_bottom_app_bar_trash_from_immich": "Mover para o lixo",
|
"control_bottom_app_bar_trash_from_immich": "Mover para a lixeira",
|
||||||
"control_bottom_app_bar_unarchive": "Desarquivar",
|
"control_bottom_app_bar_unarchive": "Desarquivar",
|
||||||
"control_bottom_app_bar_unfavorite": "Remover favorito",
|
"control_bottom_app_bar_unfavorite": "Remover favorito",
|
||||||
"control_bottom_app_bar_upload": "Carregar",
|
"control_bottom_app_bar_upload": "Enviar",
|
||||||
"create_album_page_untitled": "Sem título",
|
"create_album_page_untitled": "Sem título",
|
||||||
"create_shared_album_page_create": "Criar",
|
"create_shared_album_page_create": "Criar",
|
||||||
"create_shared_album_page_share": "Partilhar",
|
"create_shared_album_page_share": "Compartilhar",
|
||||||
"create_shared_album_page_share_add_assets": "ADICIONAR ITENS",
|
"create_shared_album_page_share_add_assets": "ADICIONAR ARQUIVOS",
|
||||||
"create_shared_album_page_share_select_photos": "Selecionar Fotos",
|
"create_shared_album_page_share_select_photos": "Selecionar Fotos",
|
||||||
"curated_location_page_title": "Sítios",
|
"crop": "Crop",
|
||||||
|
"curated_location_page_title": "Locais",
|
||||||
"curated_object_page_title": "Objetos",
|
"curated_object_page_title": "Objetos",
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
"daily_title_text_date_year": "E, MMM dd, yyyy",
|
"daily_title_text_date_year": "E, MMM dd, yyyy",
|
||||||
"date_format": "E, LLL d, y • h:mm a",
|
"date_format": "E, LLL d, y • h:mm a",
|
||||||
"delete_dialog_alert": "Esses itens serão permanentemente deletados do Immich e do seu dispositivo",
|
"delete_dialog_alert": "Esses arquivos serão permanentemente apagados do Immich e de seu dispositivo",
|
||||||
"delete_dialog_alert_local": "Estes itens serão removidos permanentemente do seu dispositivo, mas continuarão disponíveis no servidor Immich",
|
"delete_dialog_alert_local": "Estes arquivos serão permanentemente excluídos do seu dispositivo, mas continuarão disponíveis no servidor Immich",
|
||||||
"delete_dialog_alert_local_non_backed_up": "Alguns dos itens não estão guardados no Immich e serão removidos permanentemente do seu dispositivo",
|
"delete_dialog_alert_local_non_backed_up": "Não há backup de alguns dos arquivos no servidor e eles serão excluídos permanentemente do seu dispositivo",
|
||||||
"delete_dialog_alert_remote": "Estes itens serão permanentemente eliminados do servidor Immich",
|
"delete_dialog_alert_remote": "Estes arquivos serão permanentemente excluídos do servidor Immich",
|
||||||
"delete_dialog_cancel": "Cancelar",
|
"delete_dialog_cancel": "Cancelar",
|
||||||
"delete_dialog_ok": "Deletar",
|
"delete_dialog_ok": "Excluir",
|
||||||
"delete_dialog_ok_force": "Apagar de qualquer forma",
|
"delete_dialog_ok_force": "Excluir mesmo assim",
|
||||||
"delete_dialog_title": "Deletar Permanentemente",
|
"delete_dialog_title": "Excluir Permanentemente",
|
||||||
"delete_local_dialog_ok_backed_up_only": "Eliminar apenas existentes na cópia de segurança",
|
"delete_local_dialog_ok_backed_up_only": "Excluir apenas arquivos com backup",
|
||||||
"delete_local_dialog_ok_force": "Apagar de qualquer forma",
|
"delete_local_dialog_ok_force": "Excluir mesmo assim",
|
||||||
"delete_shared_link_dialog_content": "Tem a certeza de que pretende apagar esta ligação partilhada?",
|
"delete_shared_link_dialog_content": "Tem certeza que deseja excluir este link compartilhado?",
|
||||||
"delete_shared_link_dialog_title": "Apagar link de partilha",
|
"delete_shared_link_dialog_title": "Excluir link compartilhado",
|
||||||
"description_input_hint_text": "Adicionar descrição...",
|
"description_input_hint_text": "Adicionar descrição...",
|
||||||
"description_input_submit_error": "Erro ao atualizar a descrição, verifique o registo para obter mais detalhes",
|
"description_input_submit_error": "Erro ao atualizar a descrição, verifique o registo para obter mais detalhes",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Data e Hora",
|
"edit_date_time_dialog_date_time": "Data e Hora",
|
||||||
"edit_date_time_dialog_timezone": "Fuso horário",
|
"edit_date_time_dialog_timezone": "Fuso horário",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Localização",
|
"edit_location_dialog_title": "Localização",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Adicionar Descrição...",
|
"exif_bottom_sheet_description": "Adicionar Descrição...",
|
||||||
"exif_bottom_sheet_details": "DETALHES",
|
"exif_bottom_sheet_details": "DETALHES",
|
||||||
"exif_bottom_sheet_location": "LOCALIZAÇÃO",
|
"exif_bottom_sheet_location": "LOCALIZAÇÃO",
|
||||||
"exif_bottom_sheet_location_add": "Adicionar uma localização",
|
"exif_bottom_sheet_location_add": "Adicionar uma localização",
|
||||||
"exif_bottom_sheet_people": "Pessoas",
|
"exif_bottom_sheet_people": "PESSOAS",
|
||||||
"exif_bottom_sheet_person_add_person": "Adicionar nome",
|
"exif_bottom_sheet_person_add_person": "Adicionar nome",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Trabalho em andamento",
|
"experimental_settings_new_asset_list_subtitle": "Trabalho em andamento",
|
||||||
"experimental_settings_new_asset_list_title": "Ativar visualização de grelha experimental",
|
"experimental_settings_new_asset_list_title": "Ativar visualização de grade experimental",
|
||||||
"experimental_settings_subtitle": "Use por sua conta e risco!",
|
"experimental_settings_subtitle": "Use por sua conta e risco!",
|
||||||
"experimental_settings_title": "Experimental",
|
"experimental_settings_title": "Experimental",
|
||||||
"favorites_page_no_favorites": "Nenhum recurso favorito encontrado",
|
"favorites_page_no_favorites": "Nenhum favorito encontrado",
|
||||||
"favorites_page_title": "Favoritos",
|
"favorites_page_title": "Favoritos",
|
||||||
"filename_search": "File name or extension",
|
"filename_search": "Nome do arquivo ou extensão",
|
||||||
"haptic_feedback_switch": "Enable haptic feedback",
|
"haptic_feedback_switch": "Habilitar vibração",
|
||||||
"haptic_feedback_title": "Haptic Feedback",
|
"haptic_feedback_title": "Vibração",
|
||||||
"header_settings_add_header_tip": "Add Header",
|
"header_settings_add_header_tip": "Adicionar cabeçalho",
|
||||||
"header_settings_field_validator_msg": "Value cannot be empty",
|
"header_settings_field_validator_msg": "Campo deve ser preenchido",
|
||||||
"header_settings_header_name_input": "Header name",
|
"header_settings_header_name_input": "Nome do cabeçalho",
|
||||||
"header_settings_header_value_input": "Header value",
|
"header_settings_header_value_input": "Valor do cabeçalho",
|
||||||
"header_settings_page_title": "Proxy Headers",
|
"header_settings_page_title": "Cabeçalhos do Proxy",
|
||||||
"headers_settings_tile_subtitle": "Define proxy headers the app should send with each network request",
|
"headers_settings_tile_subtitle": "Defina os cabeçalhos do proxy que o aplicativo deve enviar em todas comunicações com a rede",
|
||||||
"headers_settings_tile_title": "Custom proxy headers",
|
"headers_settings_tile_title": "Cabeçalhos do Proxy customizados",
|
||||||
"home_page_add_to_album_conflicts": "Ativos {added} adicionados ao álbum {album}. {failed} ativos já estão no álbum.",
|
"home_page_add_to_album_conflicts": "Adicionado {added} arquivos ao álbum {album}. {failed} arquivos já estão no álbum.",
|
||||||
"home_page_add_to_album_err_local": "Ainda não é possível adicionar recursos locais aos álbuns, ignorando",
|
"home_page_add_to_album_err_local": "Ainda não é possível adicionar recursos locais aos álbuns, ignorando",
|
||||||
"home_page_add_to_album_success": "Ativos {added} adicionados ao álbum {album}.",
|
"home_page_add_to_album_success": "Adicionado {added} arquivos ao álbum {album}.",
|
||||||
"home_page_album_err_partner": "Ainda não é possível adicionar recursos do parceiro a um álbum, ignorando",
|
"home_page_album_err_partner": "Ainda não é possível adicionar arquivos do parceiro a um álbum, ignorando",
|
||||||
"home_page_archive_err_local": "Ainda não é possível arquivar recursos locais, ignorando",
|
"home_page_archive_err_local": "Ainda não é possível arquivar recursos locais, ignorando",
|
||||||
"home_page_archive_err_partner": "Não é possível arquivar recursos do parceiro, ignorando",
|
"home_page_archive_err_partner": "Não é possível arquivar Fotos e Videos do parceiro, ignorando",
|
||||||
"home_page_building_timeline": "A construir a timeline",
|
"home_page_building_timeline": "Construindo a linha do tempo",
|
||||||
"home_page_delete_err_partner": "Não é possível apagar recursos do parceiro, ignorando",
|
"home_page_delete_err_partner": "Não é possível excluir arquivos do parceiro, ignorando",
|
||||||
"home_page_delete_remote_err_local": "Recursos locais na seleção remota de eliminação, ignorando",
|
"home_page_delete_remote_err_local": "Foram selecionados arquivos locais para excluir remotamente, ignorando",
|
||||||
"home_page_favorite_err_local": "Ainda não é possível adicionar recursos locais favoritos, ignorando",
|
"home_page_favorite_err_local": "Ainda não é possível adicionar recursos locais favoritos, ignorando",
|
||||||
"home_page_favorite_err_partner": "Ainda não é possível marcar como favoritos recursos do parceiro, ignorando",
|
"home_page_favorite_err_partner": "Ainda não é possível marcar arquivos do parceiro como favoritos, ignorando",
|
||||||
"home_page_first_time_notice": "Se for a primeira vez que utiliza a aplicação, certifique-se de que escolhe um álbum ou álbuns de cópia de segurança, para que a linha cronológica possa preencher as fotografias e os vídeos no(s) álbum(s).",
|
"home_page_first_time_notice": "Se é a primeira vez que utiliza o aplicativo, certifique-se de marcar um ou mais álbuns do dispositivo para backup, assim a linha do tempo será preenchida com as fotos e vídeos.",
|
||||||
"home_page_share_err_local": "Não é possível partilhar recursos locais via link, ignorando",
|
"home_page_share_err_local": "Não é possível compartilhar arquivos locais com um link, ignorando",
|
||||||
"home_page_upload_err_limit": "Só é possível carregar 30 recursos de cada vez, a ignorar",
|
"home_page_upload_err_limit": "Só é possível enviar 30 arquivos por vez, ignorando",
|
||||||
"image_viewer_page_state_provider_download_error": "Erro ao descarregar",
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_error": "Erro ao baixar",
|
||||||
"image_viewer_page_state_provider_download_success": "Descarregado",
|
"image_viewer_page_state_provider_download_started": "Baixando arquivo",
|
||||||
"image_viewer_page_state_provider_share_error": "Erro ao partilhar",
|
"image_viewer_page_state_provider_download_success": "Baixado com sucesso",
|
||||||
"invalid_date": "Invalid date",
|
"image_viewer_page_state_provider_share_error": "Erro ao compartilhar",
|
||||||
"invalid_date_format": "Invalid date format",
|
"invalid_date": "Data inválida",
|
||||||
|
"invalid_date_format": "Formato de data inválido",
|
||||||
"library_page_albums": "Álbuns",
|
"library_page_albums": "Álbuns",
|
||||||
"library_page_archive": "Arquivo",
|
"library_page_archive": "Arquivado",
|
||||||
"library_page_device_albums": "Álbuns no dispositivo",
|
"library_page_device_albums": "Álbuns no dispositivo",
|
||||||
"library_page_favorites": "Favoritos",
|
"library_page_favorites": "Favoritos",
|
||||||
"library_page_new_album": "Novo álbum",
|
"library_page_new_album": "Novo álbum",
|
||||||
"library_page_sharing": "Partilhar",
|
"library_page_sharing": "Compartilhar",
|
||||||
"library_page_sort_asset_count": "Número de recursos",
|
"library_page_sort_asset_count": "Quantidade de arquivos",
|
||||||
"library_page_sort_created": "Data de criação",
|
"library_page_sort_created": "Data de criação",
|
||||||
"library_page_sort_last_modified": "Última modificação",
|
"library_page_sort_last_modified": "Última modificação",
|
||||||
"library_page_sort_most_oldest_photo": "Foto mais antiga",
|
"library_page_sort_most_oldest_photo": "Foto mais antiga",
|
||||||
@ -267,47 +276,47 @@
|
|||||||
"library_page_sort_title": "Título do álbum",
|
"library_page_sort_title": "Título do álbum",
|
||||||
"location_picker_choose_on_map": "Escolha no mapa",
|
"location_picker_choose_on_map": "Escolha no mapa",
|
||||||
"location_picker_latitude": "Latitude",
|
"location_picker_latitude": "Latitude",
|
||||||
"location_picker_latitude_error": "Introduza uma latitude válida",
|
"location_picker_latitude_error": "Digite uma latitude válida",
|
||||||
"location_picker_latitude_hint": "Introduza aqui a latitude",
|
"location_picker_latitude_hint": "Digite a latitude",
|
||||||
"location_picker_longitude": "Longitude",
|
"location_picker_longitude": "Longitude",
|
||||||
"location_picker_longitude_error": "Introduza uma longitude válida",
|
"location_picker_longitude_error": "Digite uma longitude válida",
|
||||||
"location_picker_longitude_hint": "Introduza aqui a longitude",
|
"location_picker_longitude_hint": "Digite a longitude",
|
||||||
"login_disabled": "Login desativado",
|
"login_disabled": "Login desativado",
|
||||||
"login_form_api_exception": "Excepção de API. Verifique o URL do servidor e tente novamente.",
|
"login_form_api_exception": "Erro de API. Verifique a URL do servidor e tente novamente.",
|
||||||
"login_form_back_button_text": "Voltar",
|
"login_form_back_button_text": "Voltar",
|
||||||
"login_form_button_text": "Login",
|
"login_form_button_text": "Login",
|
||||||
"login_form_email_hint": "seuemail@email.com",
|
"login_form_email_hint": "seuemail@email.com",
|
||||||
"login_form_endpoint_hint": "http://ip-do-seu-servidor:porta/api",
|
"login_form_endpoint_hint": "http://ip-do-seu-servidor:porta/api",
|
||||||
"login_form_endpoint_url": "URL do endpoint do servidor",
|
"login_form_endpoint_url": "URL do servidor",
|
||||||
"login_form_err_http": "Por favor especifique http:// ou https://",
|
"login_form_err_http": "Por favor especifique http:// ou https://",
|
||||||
"login_form_err_invalid_email": "Email Inválido",
|
"login_form_err_invalid_email": "Email Inválido",
|
||||||
"login_form_err_invalid_url": "URL inválida",
|
"login_form_err_invalid_url": "URL inválida",
|
||||||
"login_form_err_leading_whitespace": "Espaço em branco no início",
|
"login_form_err_leading_whitespace": "Espaço em branco no início",
|
||||||
"login_form_err_trailing_whitespace": "Espaço em branco no fim",
|
"login_form_err_trailing_whitespace": "Espaço em branco no fim",
|
||||||
"login_form_failed_get_oauth_server_config": "Erro ao registrar usando OAuth, verifique o URL do servidor",
|
"login_form_failed_get_oauth_server_config": "Erro de login com OAuth, verifique a URL do servidor",
|
||||||
"login_form_failed_get_oauth_server_disable": "O recurso OAuth não está disponível neste servidor",
|
"login_form_failed_get_oauth_server_disable": "O recurso OAuth não está disponível neste servidor",
|
||||||
"login_form_failed_login": "Erro ao fazer login, verifique a url do servidor, email e senha",
|
"login_form_failed_login": "Erro ao fazer login, verifique a URL do servidor, email e senha",
|
||||||
"login_form_handshake_exception": "Ocorreu um erro ao ligar ao servidor. Ative o suporte para certificados auto-assinados nas definições se estiver a utilizar um certificado auto-assinado.",
|
"login_form_handshake_exception": "Erro ao conectar com o servidor. Ative o suporte para certificados auto-assinados nas configurações se estiver utilizando um certificado auto-assinado.",
|
||||||
"login_form_label_email": "Email",
|
"login_form_label_email": "Email",
|
||||||
"login_form_label_password": "Senha",
|
"login_form_label_password": "Senha",
|
||||||
"login_form_next_button": "Avançar",
|
"login_form_next_button": "Próximo",
|
||||||
"login_form_password_hint": "senha",
|
"login_form_password_hint": "senha",
|
||||||
"login_form_save_login": "Permanecer logado",
|
"login_form_save_login": "Lembrar login",
|
||||||
"login_form_server_empty": "Introduzir um URL de servidor.",
|
"login_form_server_empty": "Digite a URL de servidor.",
|
||||||
"login_form_server_error": "Não foi possível ligar ao servidor.",
|
"login_form_server_error": "Não foi possível conectar ao servidor.",
|
||||||
"login_password_changed_error": "Erro ao atualizar a sua password",
|
"login_password_changed_error": "Erro ao atualizar a sua senha",
|
||||||
"login_password_changed_success": "Password atualizada com sucesso",
|
"login_password_changed_success": "Senha atualizada com sucesso",
|
||||||
"map_assets_in_bound": "{} foto",
|
"map_assets_in_bound": "{} foto",
|
||||||
"map_assets_in_bounds": "{} fotos",
|
"map_assets_in_bounds": "{} fotos",
|
||||||
"map_cannot_get_user_location": "Impossível obter a sua localização",
|
"map_cannot_get_user_location": "Impossível obter a sua localização",
|
||||||
"map_location_dialog_cancel": "Cancelar",
|
"map_location_dialog_cancel": "Cancelar",
|
||||||
"map_location_dialog_yes": "Sim",
|
"map_location_dialog_yes": "Sim",
|
||||||
"map_location_picker_page_use_location": "Utilizar esta localização",
|
"map_location_picker_page_use_location": "Utilizar esta localização",
|
||||||
"map_location_service_disabled_content": "Serviço de localização precisa de estar ativado para mostrar recursos da localização atual. Pretende ativar agora?",
|
"map_location_service_disabled_content": "Serviço de localização precisa de estar ativado para mostrar recursos da localização atual. Deseja ativar agora?",
|
||||||
"map_location_service_disabled_title": "Serviço de localização desativado",
|
"map_location_service_disabled_title": "Serviço de localização desativado",
|
||||||
"map_no_assets_in_bounds": "Não há fotos nesta área",
|
"map_no_assets_in_bounds": "Não há fotos nesta área",
|
||||||
"map_no_location_permission_content": "A permissão de localização é necessária para apresentar recursos da sua localização atual. Pretende autorizá-la agora?\n",
|
"map_no_location_permission_content": "A permissão da localização é necessária para mostrar recursos da localização atual. Deseja conceder a permissão agora?",
|
||||||
"map_no_location_permission_title": "Permissão de localização negada",
|
"map_no_location_permission_title": "Permissão de localização foi negada",
|
||||||
"map_settings_dark_mode": "Modo escuro",
|
"map_settings_dark_mode": "Modo escuro",
|
||||||
"map_settings_date_range_option_all": "Tudo",
|
"map_settings_date_range_option_all": "Tudo",
|
||||||
"map_settings_date_range_option_day": "Últimas 24 horas",
|
"map_settings_date_range_option_day": "Últimas 24 horas",
|
||||||
@ -315,57 +324,57 @@
|
|||||||
"map_settings_date_range_option_year": "Último ano",
|
"map_settings_date_range_option_year": "Último ano",
|
||||||
"map_settings_date_range_option_years": "Últimos {} anos",
|
"map_settings_date_range_option_years": "Últimos {} anos",
|
||||||
"map_settings_dialog_cancel": "Cancelar",
|
"map_settings_dialog_cancel": "Cancelar",
|
||||||
"map_settings_dialog_save": "Guardar",
|
"map_settings_dialog_save": "Salvar",
|
||||||
"map_settings_dialog_title": "Definições do mapa",
|
"map_settings_dialog_title": "Configurações do mapa",
|
||||||
"map_settings_include_show_archived": "Incluir arquivados",
|
"map_settings_include_show_archived": "Incluir arquivados",
|
||||||
"map_settings_include_show_partners": "Include Partners",
|
"map_settings_include_show_partners": "Incluir parceiros",
|
||||||
"map_settings_only_relative_range": "Intervalo de datas",
|
"map_settings_only_relative_range": "Intervalo de datas",
|
||||||
"map_settings_only_show_favorites": "Mostrar apenas favoritos",
|
"map_settings_only_show_favorites": "Mostrar apenas favoritos",
|
||||||
"map_settings_theme_settings": "Tema do mapa",
|
"map_settings_theme_settings": "Tema do mapa",
|
||||||
"map_zoom_to_see_photos": "Reduzir zoom para ver fotos",
|
"map_zoom_to_see_photos": "Diminua o zoom para ver mais fotos",
|
||||||
"memories_all_caught_up": "All caught up",
|
"memories_all_caught_up": "Finalizamos por hoje",
|
||||||
"memories_check_back_tomorrow": "Check back tomorrow for more memories",
|
"memories_check_back_tomorrow": "Volte amanhã para ver mais lembranças ",
|
||||||
"memories_start_over": "Start Over",
|
"memories_start_over": "Ver de novo",
|
||||||
"memories_swipe_to_close": "Swipe up to close",
|
"memories_swipe_to_close": "Deslize para cima para fechar",
|
||||||
"memories_year_ago": "A year ago",
|
"memories_year_ago": "Um ano atrás",
|
||||||
"memories_years_ago": "{} years ago",
|
"memories_years_ago": "{} anos atrás",
|
||||||
"monthly_title_text_date_format": "MMMM y",
|
"monthly_title_text_date_format": "MMMM y",
|
||||||
"motion_photos_page_title": "Fotos com movimento",
|
"motion_photos_page_title": "Fotos com movimento",
|
||||||
"multiselect_grid_edit_date_time_err_read_only": "Não é possível editar a data de recurso(s) só de leitura, ignorando",
|
"multiselect_grid_edit_date_time_err_read_only": "Não é possível editar a data de arquivo só leitura, ignorando",
|
||||||
"multiselect_grid_edit_gps_err_read_only": "Não é possível editar a localização de recurso(s) só de leitura, ignorando",
|
"multiselect_grid_edit_gps_err_read_only": "Não é possível editar a localização de arquivo só leitura, ignorando",
|
||||||
"no_assets_to_show": "No assets to show",
|
"no_assets_to_show": "Não há arquivos para exibir",
|
||||||
"no_name": "No name",
|
"no_name": "Sem nome",
|
||||||
"notification_permission_dialog_cancel": "Cancelar",
|
"notification_permission_dialog_cancel": "Cancelar",
|
||||||
"notification_permission_dialog_content": "Para ativar as notificações, vá a Definições e selecione permitir.",
|
"notification_permission_dialog_content": "Para ativar as notificações, vá em Configurações e selecione permitir.",
|
||||||
"notification_permission_dialog_settings": "Definições",
|
"notification_permission_dialog_settings": "Configurações",
|
||||||
"notification_permission_list_tile_content": "Dar permissões para ativar notificações",
|
"notification_permission_list_tile_content": "Dar permissões para ativar notificações",
|
||||||
"notification_permission_list_tile_enable_button": "Ativar notificações",
|
"notification_permission_list_tile_enable_button": "Ativar notificações",
|
||||||
"notification_permission_list_tile_title": "Permissão de notificações",
|
"notification_permission_list_tile_title": "Permissão de notificações",
|
||||||
"partner_list_user_photos": "{user}'s photos",
|
"partner_list_user_photos": "Fotos de {user}",
|
||||||
"partner_list_view_all": "View all",
|
"partner_list_view_all": "Ver tudo",
|
||||||
"partner_page_add_partner": "Adicionar parceiro",
|
"partner_page_add_partner": "Adicionar parceiro",
|
||||||
"partner_page_empty_message": "As suas fotografias ainda não foram partilhadas com nenhum parceiro.",
|
"partner_page_empty_message": "As suas fotos ainda não foram compartilhadas com nenhum parceiro.",
|
||||||
"partner_page_no_more_users": "Não há mais utilizadores para adicionar",
|
"partner_page_no_more_users": "Não há mais usuários para adicionar",
|
||||||
"partner_page_partner_add_failed": "Falha ao adicionar parceiro",
|
"partner_page_partner_add_failed": "Falha ao adicionar parceiro",
|
||||||
"partner_page_select_partner": "Selecionar parceiro",
|
"partner_page_select_partner": "Selecionar parceiro",
|
||||||
"partner_page_shared_to_title": "Partilhado com",
|
"partner_page_shared_to_title": "Compartilhar com",
|
||||||
"partner_page_stop_sharing_content": "{} deixará de poder aceder às suas fotografias.",
|
"partner_page_stop_sharing_content": "{} não poderá mais acessar as suas fotos.",
|
||||||
"partner_page_stop_sharing_title": "Parar de partilhar as suas fotos?",
|
"partner_page_stop_sharing_title": "Parar de compartilhar as suas fotos?",
|
||||||
"partner_page_title": "Parceiro",
|
"partner_page_title": "Parceiro",
|
||||||
"permission_onboarding_back": "Voltar",
|
"permission_onboarding_back": "Voltar",
|
||||||
"permission_onboarding_continue_anyway": "Continuar de qualquer maneira",
|
"permission_onboarding_continue_anyway": "Continuar mesmo assim",
|
||||||
"permission_onboarding_get_started": "Começar",
|
"permission_onboarding_get_started": "Começar",
|
||||||
"permission_onboarding_go_to_settings": "Ir para as definições",
|
"permission_onboarding_go_to_settings": "Ir para as configurações",
|
||||||
"permission_onboarding_grant_permission": "Dar permissão",
|
"permission_onboarding_grant_permission": "Dar permissão",
|
||||||
"permission_onboarding_log_out": "Sair",
|
"permission_onboarding_log_out": "Sair",
|
||||||
"permission_onboarding_permission_denied": "Permissão negada. Para utilizar o Immich, conceda permissões de fotografia e vídeo nas Definições.",
|
"permission_onboarding_permission_denied": "Permissão negada. Para utilizar o Immich, conceda permissões de fotos e vídeo nas configurações.",
|
||||||
"permission_onboarding_permission_granted": "Autorização concedida! Está tudo pronto.",
|
"permission_onboarding_permission_granted": "Permissão concedida! Está tudo pronto.",
|
||||||
"permission_onboarding_permission_limited": "Permissão limitada. Para permitir que o Immich faça cópias de segurança e gira toda a sua coleção de galerias, conceda permissões para fotografias e vídeos nas Definições.",
|
"permission_onboarding_permission_limited": "Permissão limitada. Para permitir que o Immich faça backups e gerencie sua galeria, conceda permissões para fotos e vídeos nas configurações.",
|
||||||
"permission_onboarding_request": "O Immich requer autorização para ver as suas fotografias e vídeos.",
|
"permission_onboarding_request": "O Immich requer autorização para ver as suas fotos e vídeos.",
|
||||||
"preferences_settings_title": "Preferências",
|
"preferences_settings_title": "Preferências",
|
||||||
"profile_drawer_app_logs": "Logs",
|
"profile_drawer_app_logs": "Logs",
|
||||||
"profile_drawer_client_out_of_date_major": "A aplicação móvel está desatualizada. Atualize para a versão principal mais recente.",
|
"profile_drawer_client_out_of_date_major": "O aplicativo está desatualizado. Por favor, atualize para a versão mais recente.",
|
||||||
"profile_drawer_client_out_of_date_minor": "A aplicação móvel está desatualizada. Por favor, atualize para a versão mais recente.",
|
"profile_drawer_client_out_of_date_minor": "O aplicativo está desatualizado. Por favor, atualize para a versão mais recente.",
|
||||||
"profile_drawer_client_server_up_to_date": "Cliente e Servidor atualizados",
|
"profile_drawer_client_server_up_to_date": "Cliente e Servidor atualizados",
|
||||||
"profile_drawer_documentation": "Documentação",
|
"profile_drawer_documentation": "Documentação",
|
||||||
"profile_drawer_github": "GitHub",
|
"profile_drawer_github": "GitHub",
|
||||||
@ -373,138 +382,139 @@
|
|||||||
"profile_drawer_server_out_of_date_minor": "O servidor está desatualizado. Atualize para a versão mais recente.",
|
"profile_drawer_server_out_of_date_minor": "O servidor está desatualizado. Atualize para a versão mais recente.",
|
||||||
"profile_drawer_settings": "Configurações",
|
"profile_drawer_settings": "Configurações",
|
||||||
"profile_drawer_sign_out": "Sair",
|
"profile_drawer_sign_out": "Sair",
|
||||||
"profile_drawer_trash": "Lixo",
|
"profile_drawer_trash": "Lixeira",
|
||||||
"recently_added_page_title": "Adicionado recentemente",
|
"recently_added_page_title": "Adicionado recentemente",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Ocorreu um erro",
|
"scaffold_body_error_occurred": "Ocorreu um erro",
|
||||||
"search_bar_hint": "Busque suas fotos",
|
"search_bar_hint": "Pesquisar em suas fotos",
|
||||||
"search_filter_apply": "Apply filter",
|
"search_filter_apply": "Aplicar filtro",
|
||||||
"search_filter_camera": "Camera",
|
"search_filter_camera": "Câmera",
|
||||||
"search_filter_camera_make": "Make",
|
"search_filter_camera_make": "Fabricante",
|
||||||
"search_filter_camera_model": "Model",
|
"search_filter_camera_model": "Modelo",
|
||||||
"search_filter_camera_title": "Select camera type",
|
"search_filter_camera_title": "Selecione o tipo de câmera",
|
||||||
"search_filter_date": "Date",
|
"search_filter_date": "Data",
|
||||||
"search_filter_date_interval": "{start} to {end}",
|
"search_filter_date_interval": "{start} até {end}",
|
||||||
"search_filter_date_title": "Select a date range",
|
"search_filter_date_title": "Selecione a data",
|
||||||
"search_filter_display_option_archive": "Archive",
|
"search_filter_display_option_archive": "Arquivado",
|
||||||
"search_filter_display_option_favorite": "Favorite",
|
"search_filter_display_option_favorite": "Favorito",
|
||||||
"search_filter_display_option_not_in_album": "Not in album",
|
"search_filter_display_option_not_in_album": "Fora de álbum",
|
||||||
"search_filter_display_options": "Display Options",
|
"search_filter_display_options": "Opções de exibição",
|
||||||
"search_filter_display_options_title": "Display options",
|
"search_filter_display_options_title": "Opções de exibição",
|
||||||
"search_filter_location": "Location",
|
"search_filter_location": "Localização",
|
||||||
"search_filter_location_city": "City",
|
"search_filter_location_city": "Cidade",
|
||||||
"search_filter_location_country": "Country",
|
"search_filter_location_country": "País",
|
||||||
"search_filter_location_state": "State",
|
"search_filter_location_state": "Estado",
|
||||||
"search_filter_location_title": "Select location",
|
"search_filter_location_title": "Selecione a localização",
|
||||||
"search_filter_media_type": "Media Type",
|
"search_filter_media_type": "Tipo da mídia",
|
||||||
"search_filter_media_type_all": "All",
|
"search_filter_media_type_all": "Tudo",
|
||||||
"search_filter_media_type_image": "Image",
|
"search_filter_media_type_image": "Imagem",
|
||||||
"search_filter_media_type_title": "Select media type",
|
"search_filter_media_type_title": "Selecione o tipo da mídia",
|
||||||
"search_filter_media_type_video": "Video",
|
"search_filter_media_type_video": "Vídeo",
|
||||||
"search_filter_people": "People",
|
"search_filter_people": "Pessoas",
|
||||||
"search_filter_people_title": "Select people",
|
"search_filter_people_title": "Selecionar pessoas",
|
||||||
"search_page_categories": "Categorias",
|
"search_page_categories": "Categorias",
|
||||||
"search_page_favorites": "Favoritos",
|
"search_page_favorites": "Favoritos",
|
||||||
"search_page_motion_photos": "Fotos com movimento",
|
"search_page_motion_photos": "Fotos com movimento",
|
||||||
"search_page_no_objects": "Nenhuma informação de objeto disponível",
|
"search_page_no_objects": "Nenhuma informação de objeto disponível",
|
||||||
"search_page_no_places": "Nenhuma informação de sítios disponível",
|
"search_page_no_places": "Nenhuma informação de local disponível",
|
||||||
"search_page_people": "Pessoas",
|
"search_page_people": "Pessoas",
|
||||||
"search_page_person_add_name_dialog_cancel": "Cancelar",
|
"search_page_person_add_name_dialog_cancel": "Cancelar",
|
||||||
"search_page_person_add_name_dialog_hint": "Nome",
|
"search_page_person_add_name_dialog_hint": "Nome",
|
||||||
"search_page_person_add_name_dialog_save": "Guardar",
|
"search_page_person_add_name_dialog_save": "Salvar",
|
||||||
"search_page_person_add_name_dialog_title": "Adicionar um nome",
|
"search_page_person_add_name_dialog_title": "Adicionar um nome",
|
||||||
"search_page_person_add_name_subtitle": "Encontre-os rapidamente pelo nome com a pesquisa",
|
"search_page_person_add_name_subtitle": "Encontre na pesquisa pelo nome",
|
||||||
"search_page_person_add_name_title": "Adicionar um nome",
|
"search_page_person_add_name_title": "Adicionar um nome",
|
||||||
"search_page_person_edit_name": "Editar nome",
|
"search_page_person_edit_name": "Editar nome",
|
||||||
"search_page_places": "Sítios",
|
"search_page_places": "Locais",
|
||||||
"search_page_recently_added": "Adicionado recentemente",
|
"search_page_recently_added": "Adicionado recentemente",
|
||||||
"search_page_screenshots": "Capturas de ecrã",
|
"search_page_screenshots": "Capturas de tela",
|
||||||
"search_page_selfies": "Selfies",
|
"search_page_selfies": "Selfies",
|
||||||
"search_page_things": "Objetos",
|
"search_page_things": "Objetos",
|
||||||
"search_page_videos": "Vídeos",
|
"search_page_videos": "Vídeos",
|
||||||
"search_page_view_all_button": "Ver tudo",
|
"search_page_view_all_button": "Ver tudo",
|
||||||
"search_page_your_activity": "A sua atividade",
|
"search_page_your_activity": "A sua atividade",
|
||||||
"search_page_your_map": "O seu mapa",
|
"search_page_your_map": "O seu mapa",
|
||||||
"search_result_page_new_search_hint": "Nova Busca",
|
"search_result_page_new_search_hint": "Nova Pesquisa",
|
||||||
"search_suggestion_list_smart_search_hint_1": "A pesquisa inteligente está activada por predefinição. Para pesquisar metadados, utilize a sintaxe ",
|
"search_suggestion_list_smart_search_hint_1": "A pesquisa inteligente está ativada por padrão. Para pesquisar metadados, utilize a sintaxe",
|
||||||
"search_suggestion_list_smart_search_hint_2": "m:a-sua-pesquisa",
|
"search_suggestion_list_smart_search_hint_2": "m:a-sua-pesquisa",
|
||||||
"select_additional_user_for_sharing_page_suggestions": "Sugestões",
|
"select_additional_user_for_sharing_page_suggestions": "Sugestões",
|
||||||
"select_user_for_sharing_page_err_album": "Falha ao criar o álbum",
|
"select_user_for_sharing_page_err_album": "Falha ao criar o álbum",
|
||||||
"select_user_for_sharing_page_share_suggestions": "Sugestões",
|
"select_user_for_sharing_page_share_suggestions": "Sugestões",
|
||||||
"server_info_box_app_version": "Versão da app",
|
"server_info_box_app_version": "Versão do app",
|
||||||
"server_info_box_latest_release": "Última versão",
|
"server_info_box_latest_release": "Versão mais recente",
|
||||||
"server_info_box_server_url": "URL do servidor",
|
"server_info_box_server_url": "URL do servidor",
|
||||||
"server_info_box_server_version": "Versão do servidor",
|
"server_info_box_server_version": "Versão do servidor",
|
||||||
"setting_image_viewer_help": "O visualizador de detalhes carrega primeiro a miniatura pequena, depois carrega a visualização de tamanho médio (se ativado) e, finalmente, carrega o original (se ativado).",
|
"setting_image_viewer_help": "O visualizador carrega primeiro a miniatura pequena, depois carrega a visualização de tamanho médio (se ativado) e, finalmente, carrega o original (se ativado).",
|
||||||
"setting_image_viewer_original_subtitle": "Ative para carregar a imagem original em resolução total (grande!). Desative para reduzir o uso de dados (na rede e no cache do dispositivo).",
|
"setting_image_viewer_original_subtitle": "Ative para carregar a imagem original em resolução total (grande!). Desative para reduzir o uso de dados (na rede e no cache do dispositivo).",
|
||||||
"setting_image_viewer_original_title": "Carregar imagem original",
|
"setting_image_viewer_original_title": "Carregar imagem original",
|
||||||
"setting_image_viewer_preview_subtitle": "Ative para carregar uma imagem de resolução média. Desative para carregar diretamente o original ou usar apenas a miniatura.",
|
"setting_image_viewer_preview_subtitle": "Ative para carregar uma imagem de resolução média. Desative para carregar diretamente o original ou usar apenas a miniatura.",
|
||||||
"setting_image_viewer_preview_title": "Carregar imagem de visualização",
|
"setting_image_viewer_preview_title": "Carregar imagem de pré-visualização",
|
||||||
"setting_image_viewer_title": "Images",
|
"setting_image_viewer_title": "Imagens",
|
||||||
"setting_languages_apply": "Apply",
|
"setting_languages_apply": "Aplicar",
|
||||||
"setting_languages_title": "Languages",
|
"setting_languages_title": "Idioma",
|
||||||
"setting_notifications_notify_failures_grace_period": "Notifique falhas de backup em segundo plano: {}",
|
"setting_notifications_notify_failures_grace_period": "Notifique falhas de backup em segundo plano: {}",
|
||||||
"setting_notifications_notify_hours": "{} horas",
|
"setting_notifications_notify_hours": "{} horas",
|
||||||
"setting_notifications_notify_immediately": "imediatamente",
|
"setting_notifications_notify_immediately": "imediatamente",
|
||||||
"setting_notifications_notify_minutes": "{} minutos",
|
"setting_notifications_notify_minutes": "{} minutos",
|
||||||
"setting_notifications_notify_never": "Nunca",
|
"setting_notifications_notify_never": "Nunca",
|
||||||
"setting_notifications_notify_seconds": "{} segundos",
|
"setting_notifications_notify_seconds": "{} segundos",
|
||||||
"setting_notifications_single_progress_subtitle": "Informações detalhadas sobre o progresso do upload por ativo",
|
"setting_notifications_single_progress_subtitle": "Informações detalhadas sobre o progresso do envio por arquivo",
|
||||||
"setting_notifications_single_progress_title": "Mostrar progresso detalhado do backup em segundo plano",
|
"setting_notifications_single_progress_title": "Mostrar progresso detalhado do backup em segundo plano",
|
||||||
"setting_notifications_subtitle": "Ajuste suas preferências de notificação",
|
"setting_notifications_subtitle": "Ajuste as preferências de notificação",
|
||||||
"setting_notifications_title": "Notificações",
|
"setting_notifications_title": "Notificações",
|
||||||
"setting_notifications_total_progress_subtitle": "Progresso geral do upload (ativos concluídos/total)",
|
"setting_notifications_total_progress_subtitle": "Progresso do envio de arquivos (concluídos/total)",
|
||||||
"setting_notifications_total_progress_title": "Mostrar progresso total do backup em segundo plano",
|
"setting_notifications_total_progress_title": "Mostrar progresso total do backup em segundo plano",
|
||||||
"setting_pages_app_bar_settings": "Configurações",
|
"setting_pages_app_bar_settings": "Configurações",
|
||||||
"settings_require_restart": "Reinicie o Immich para aplicar essa configuração",
|
"settings_require_restart": "Reinicie o Immich para aplicar essa configuração",
|
||||||
"setting_video_viewer_looping_subtitle": "Enable to automatically loop a video in the detail viewer.",
|
"setting_video_viewer_looping_subtitle": "Ative para repetir o vídeo automaticamente.",
|
||||||
"setting_video_viewer_looping_title": "Looping",
|
"setting_video_viewer_looping_title": "Repetir",
|
||||||
"setting_video_viewer_title": "Videos",
|
"setting_video_viewer_title": "Vídeos",
|
||||||
"share_add": "Adicionar",
|
"share_add": "Adicionar",
|
||||||
"share_add_photos": "Adicionar fotos",
|
"share_add_photos": "Adicionar fotos",
|
||||||
"share_add_title": "Adicione um título",
|
"share_add_title": "Adicione um título",
|
||||||
"share_assets_selected": "{} selected",
|
"share_assets_selected": "{} selecionado",
|
||||||
"share_create_album": "Criar álbum",
|
"share_create_album": "Criar álbum",
|
||||||
"shared_album_activities_input_disable": "Comentários desativados",
|
"shared_album_activities_input_disable": "Comentários desativados",
|
||||||
"shared_album_activities_input_hint": "Dizer alguma coisa",
|
"shared_album_activities_input_hint": "Dizer algo",
|
||||||
"shared_album_activity_remove_content": "Deseja eliminar esta atividade?",
|
"shared_album_activity_remove_content": "Deseja apagar esta atividade?",
|
||||||
"shared_album_activity_remove_title": "Apagar atividade",
|
"shared_album_activity_remove_title": "Apagar atividade",
|
||||||
"shared_album_activity_setting_subtitle": "Permitir a outros responder",
|
"shared_album_activity_setting_subtitle": "Permitir que outros respondam",
|
||||||
"shared_album_activity_setting_title": "Comentários e gostos",
|
"shared_album_activity_setting_title": "Comentários & curtidas",
|
||||||
"shared_album_section_people_action_error": "Erro ao sair/remover do álbum",
|
"shared_album_section_people_action_error": "Erro ao sair/remover do álbum",
|
||||||
"shared_album_section_people_action_leave": "Remover utilizador do álbum",
|
"shared_album_section_people_action_leave": "Sair do álbum",
|
||||||
"shared_album_section_people_action_remove_user": "Remover utilizador do álbum",
|
"shared_album_section_people_action_remove_user": "Remover usuário do álbum",
|
||||||
"shared_album_section_people_owner_label": "Dono",
|
"shared_album_section_people_owner_label": "Dono",
|
||||||
"shared_album_section_people_title": "PESSOAS",
|
"shared_album_section_people_title": "PESSOAS",
|
||||||
"share_dialog_preparing": "Preparando...",
|
"share_dialog_preparing": "Preparando...",
|
||||||
"shared_link_app_bar_title": "Links partilhados",
|
"shared_link_app_bar_title": "Links compartilhados",
|
||||||
"shared_link_clipboard_copied_massage": "Copiado para a área de transferência",
|
"shared_link_clipboard_copied_massage": "Copiado para a área de transferência",
|
||||||
"shared_link_clipboard_text": "Link: {}\nPassword: {}",
|
"shared_link_clipboard_text": "Link: {}\nPassword: {}",
|
||||||
"shared_link_create_app_bar_title": "Criar link para partilhar",
|
"shared_link_create_app_bar_title": "Criar link compartilhado",
|
||||||
"shared_link_create_error": "Erro ao criar o link partilhado",
|
"shared_link_create_error": "Erro ao criar o link compartilhado",
|
||||||
"shared_link_create_info": "Deixar qualquer pessoa com o link ver a(s) foto(s) selecionada(s)",
|
"shared_link_create_info": "Permitir qualquer pessoa com o link ver as fotos selecionadas",
|
||||||
"shared_link_create_submit_button": "Criar link",
|
"shared_link_create_submit_button": "Criar link",
|
||||||
"shared_link_edit_allow_download": "Permitir que um utilizador público descarregue",
|
"shared_link_edit_allow_download": "Permitir que usuários públicos baixem os arquivos",
|
||||||
"shared_link_edit_allow_upload": "Permitir que um utilizador público carregue",
|
"shared_link_edit_allow_upload": "Permitir que usuários públicos enviem novos arquivos",
|
||||||
"shared_link_edit_app_bar_title": "Editar link",
|
"shared_link_edit_app_bar_title": "Editar link",
|
||||||
"shared_link_edit_change_expiry": "Alterar o prazo de validade",
|
"shared_link_edit_change_expiry": "Prazo de validade",
|
||||||
"shared_link_edit_description": "Descrição",
|
"shared_link_edit_description": "Descrição",
|
||||||
"shared_link_edit_description_hint": "Introduzir a descrição da partilha",
|
"shared_link_edit_description_hint": "Digite a descrição do compartilhamento",
|
||||||
"shared_link_edit_expire_after": "Expira depois",
|
"shared_link_edit_expire_after": "Expira após",
|
||||||
"shared_link_edit_expire_after_option_day": "1 dia",
|
"shared_link_edit_expire_after_option_day": "1 dia",
|
||||||
"shared_link_edit_expire_after_option_days": "{} dias",
|
"shared_link_edit_expire_after_option_days": "{} dias",
|
||||||
"shared_link_edit_expire_after_option_hour": "1 hora",
|
"shared_link_edit_expire_after_option_hour": "1 hora",
|
||||||
"shared_link_edit_expire_after_option_hours": "{} horas",
|
"shared_link_edit_expire_after_option_hours": "{} horas",
|
||||||
"shared_link_edit_expire_after_option_minute": "1 minuto",
|
"shared_link_edit_expire_after_option_minute": "1 minuto",
|
||||||
"shared_link_edit_expire_after_option_minutes": "{} minutos",
|
"shared_link_edit_expire_after_option_minutes": "{} minutos",
|
||||||
"shared_link_edit_expire_after_option_months": "{} months",
|
"shared_link_edit_expire_after_option_months": "{} Mêses",
|
||||||
"shared_link_edit_expire_after_option_never": "Nunca",
|
"shared_link_edit_expire_after_option_never": "Nunca",
|
||||||
"shared_link_edit_expire_after_option_year": "{} year",
|
"shared_link_edit_expire_after_option_year": "{} ano",
|
||||||
"shared_link_edit_password": "Password",
|
"shared_link_edit_password": "Senha",
|
||||||
"shared_link_edit_password_hint": "Introduza a password da partilha",
|
"shared_link_edit_password_hint": "Digite uma senha para proteger este link",
|
||||||
"shared_link_edit_show_meta": "Mostrar metadados",
|
"shared_link_edit_show_meta": "Mostrar metadados",
|
||||||
"shared_link_edit_submit_button": "Atualizar link",
|
"shared_link_edit_submit_button": "Atualizar link",
|
||||||
"shared_link_empty": "Não tem links partilhados",
|
"shared_link_empty": "Não há links compartilhados",
|
||||||
"shared_link_error_server_url_fetch": "Erro ao abrir o url do servidor",
|
"shared_link_error_server_url_fetch": "Erro ao abrir a URL do servidor",
|
||||||
"shared_link_expired": "Expirou",
|
"shared_link_expired": "Expirou",
|
||||||
"shared_link_expires_day": "Expira em {} dia",
|
"shared_link_expires_day": "Expira em {} dia",
|
||||||
"shared_link_expires_days": "Expira em {} dias",
|
"shared_link_expires_days": "Expira em {} dias",
|
||||||
@ -515,64 +525,68 @@
|
|||||||
"shared_link_expires_never": "Expira ∞",
|
"shared_link_expires_never": "Expira ∞",
|
||||||
"shared_link_expires_second": "Expira em {} segundo",
|
"shared_link_expires_second": "Expira em {} segundo",
|
||||||
"shared_link_expires_seconds": "Expira em {} segundos",
|
"shared_link_expires_seconds": "Expira em {} segundos",
|
||||||
"shared_link_individual_shared": "Individual shared",
|
"shared_link_individual_shared": "Compartilhamento único",
|
||||||
"shared_link_info_chip_download": "Descarregar",
|
"shared_link_info_chip_download": "Baixar",
|
||||||
"shared_link_info_chip_metadata": "EXIF",
|
"shared_link_info_chip_metadata": "EXIF",
|
||||||
"shared_link_info_chip_upload": "Carregar",
|
"shared_link_info_chip_upload": "Enviar",
|
||||||
"shared_link_manage_links": "Gerir links partilhados",
|
"shared_link_manage_links": "Gerenciar links compartilhados",
|
||||||
"shared_link_public_album": "Public album",
|
"shared_link_public_album": "Álbum público",
|
||||||
"share_done": "Feito",
|
"share_done": "Feito",
|
||||||
"share_invite": "Convidar para álbum",
|
"share_invite": "Convidar para o álbum",
|
||||||
"sharing_page_album": "Álbuns partilhados",
|
"sharing_page_album": "Álbuns compartilhados",
|
||||||
"sharing_page_description": "Crie álbuns partilhados para partilhar fotografias e vídeos com pessoas da sua rede.",
|
"sharing_page_description": "Crie álbuns compartilhados para compartilhar fotos e vídeos com pessoas da sua rede.",
|
||||||
"sharing_page_empty_list": "LISTA VAZIA",
|
"sharing_page_empty_list": "LISTA VAZIA",
|
||||||
"sharing_silver_appbar_create_shared_album": "Criar álbum partilhado",
|
"sharing_silver_appbar_create_shared_album": "Criar álbum partilhado",
|
||||||
"sharing_silver_appbar_shared_links": "Links partilhados",
|
"sharing_silver_appbar_shared_links": "Links compartilhados",
|
||||||
"sharing_silver_appbar_share_partner": "Partilhar com parceiro",
|
"sharing_silver_appbar_share_partner": "Partilhar com parceiro",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Biblioteca",
|
"tab_controller_nav_library": "Biblioteca",
|
||||||
"tab_controller_nav_photos": "Fotos",
|
"tab_controller_nav_photos": "Fotos",
|
||||||
"tab_controller_nav_search": "Procurar",
|
"tab_controller_nav_search": "Pesquisar",
|
||||||
"tab_controller_nav_sharing": "Partilhar",
|
"tab_controller_nav_sharing": "Compartilhar",
|
||||||
"theme_setting_asset_list_storage_indicator_title": "Mostrar indicador de armazenamento em blocos de ativos",
|
"theme_setting_asset_list_storage_indicator_title": "Mostrar indicador de armazenamento na grade de fotos",
|
||||||
"theme_setting_asset_list_tiles_per_row_title": "Número de itens por linha ({})",
|
"theme_setting_asset_list_tiles_per_row_title": "Quantidade de arquivos por linha ({})",
|
||||||
"theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.",
|
"theme_setting_colorful_interface_subtitle": "Aplica a cor primária ao fundo",
|
||||||
"theme_setting_colorful_interface_title": "Colorful interface",
|
"theme_setting_colorful_interface_title": "Interface colorida",
|
||||||
"theme_setting_dark_mode_switch": "Modo escuro",
|
"theme_setting_dark_mode_switch": "Modo escuro",
|
||||||
"theme_setting_image_viewer_quality_subtitle": "Ajuste a qualidade do visualizador de imagens detalhadas",
|
"theme_setting_image_viewer_quality_subtitle": "Ajuste a qualidade do visualizador de imagens detalhadas",
|
||||||
"theme_setting_image_viewer_quality_title": "Qualidade do visualizador de imagens",
|
"theme_setting_image_viewer_quality_title": "Qualidade do visualizador de imagens",
|
||||||
"theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.",
|
"theme_setting_primary_color_subtitle": "Selecione a cor primária, usada nas ações principais e realces",
|
||||||
"theme_setting_primary_color_title": "Primary color",
|
"theme_setting_primary_color_title": "Cor primária",
|
||||||
"theme_setting_system_primary_color_title": "Use system color",
|
"theme_setting_system_primary_color_title": "Use a cor do sistema",
|
||||||
"theme_setting_system_theme_switch": "Automático (Siga a configuração do sistema)",
|
"theme_setting_system_theme_switch": "Automático (Siga a configuração do sistema)",
|
||||||
"theme_setting_theme_subtitle": "Escolha a configuração do tema do aplicativo",
|
"theme_setting_theme_subtitle": "Escolha a configuração do tema do aplicativo",
|
||||||
"theme_setting_theme_title": "Tema",
|
"theme_setting_theme_title": "Tema",
|
||||||
"theme_setting_three_stage_loading_subtitle": "O carregamento em três estágios pode aumentar o desempenho do carregamento, mas causa uma carga de rede significativamente maior",
|
"theme_setting_three_stage_loading_subtitle": "O carregamento em três estágios pode aumentar o desempenho do carregamento, mas causa uma carga de rede significativamente maior",
|
||||||
"theme_setting_three_stage_loading_title": "Habilitar carregamento em três estágios",
|
"theme_setting_three_stage_loading_title": "Habilitar carregamento em três estágios",
|
||||||
"translated_text_options": "Opções",
|
"translated_text_options": "Opções",
|
||||||
"trash_emptied": "Emptied trash",
|
"trash_emptied": "Lixeira esvaziada",
|
||||||
"trash_page_delete": "Apagar",
|
"trash_page_delete": "Excluir",
|
||||||
"trash_page_delete_all": "Apagar tudo",
|
"trash_page_delete_all": "Excluir tudo",
|
||||||
"trash_page_empty_trash_btn": "Esvaziar lixo",
|
"trash_page_empty_trash_btn": "Esvaziar lixeira",
|
||||||
"trash_page_empty_trash_dialog_content": "Deseja esvaziar os recursos no lixo? Estes recursos serão eliminados de forma permanente do Immich",
|
"trash_page_empty_trash_dialog_content": "Deseja esvaziar a lixera? Estes arquivos serão apagados de forma permanente do Immich",
|
||||||
"trash_page_empty_trash_dialog_ok": "Ok",
|
"trash_page_empty_trash_dialog_ok": "OK",
|
||||||
"trash_page_info": "Recursos no lixo são apagados de forma permanente depois de {} dias",
|
"trash_page_info": "Arquivos na lixeira são excluídos de forma permanente após {} dias",
|
||||||
"trash_page_no_assets": "Não existem recursos no lixo",
|
"trash_page_no_assets": "Lixeira vazia",
|
||||||
"trash_page_restore": "Restaurar",
|
"trash_page_restore": "Restaurar",
|
||||||
"trash_page_restore_all": "Restaurar tudo",
|
"trash_page_restore_all": "Restaurar tudo",
|
||||||
"trash_page_select_assets_btn": "Selecionar recursos",
|
"trash_page_select_assets_btn": "Selecionar arquivos",
|
||||||
"trash_page_select_btn": "Selecionar",
|
"trash_page_select_btn": "Selecionar",
|
||||||
"trash_page_title": "Lixo ({})",
|
"trash_page_title": "Lixeira ({})",
|
||||||
"upload_dialog_cancel": "Cancelar",
|
"upload_dialog_cancel": "Cancelar",
|
||||||
"upload_dialog_info": "Pretende efetuar a cópia de segurança do(s) recurso(s) selecionado(s) para o servidor?",
|
"upload_dialog_info": "Deseja fazer o backup dos arquivos selecionados no servidor?",
|
||||||
"upload_dialog_ok": "Carregar",
|
"upload_dialog_ok": "Enviar",
|
||||||
"upload_dialog_title": "Carregar recurso",
|
"upload_dialog_title": "Enviar arquivo",
|
||||||
"version_announcement_overlay_ack": "Aceitar",
|
"version_announcement_overlay_ack": "Entendi",
|
||||||
"version_announcement_overlay_release_notes": "notas de lançamento",
|
"version_announcement_overlay_release_notes": "notas da versão",
|
||||||
"version_announcement_overlay_text_1": "Olá, há um novo lançamento de",
|
"version_announcement_overlay_text_1": "Olá, há um novo lançamento de",
|
||||||
"version_announcement_overlay_text_2": "por favor, tome o seu tempo para visitar o",
|
"version_announcement_overlay_text_2": "por favor, Verifique com calma as ",
|
||||||
"version_announcement_overlay_text_3": "e certifique-se de que a configuração do docker-compose e do .env estejam atualizadas para evitar configurações incorretas, especialmente se usar o WatchTower ou qualquer mecanismo que lide com a atualização automática do servidor.",
|
"version_announcement_overlay_text_3": "e certifique-se de que a configuração do docker-compose e do arquivo .env estejam atualizadas para evitar configurações incorretas, especialmente se utiliza o WatchTower ou qualquer outro mecanismo que faça atualização automática do servidor.",
|
||||||
"version_announcement_overlay_title": "Nova versão do servidor disponível \uD83C\uDF89",
|
"version_announcement_overlay_title": "Nova versão do servidor disponível \uD83C\uDF89",
|
||||||
"viewer_remove_from_stack": "Remover da pilha",
|
"viewer_remove_from_stack": "Remover da pilha",
|
||||||
"viewer_stack_use_as_main_asset": "Usar como recurso principal",
|
"viewer_stack_use_as_main_asset": "Usar como foto principal",
|
||||||
"viewer_unstack": "Desenpilhar"
|
"viewer_unstack": "Desempilhar"
|
||||||
}
|
}
|
@ -173,6 +173,7 @@
|
|||||||
"control_bottom_app_bar_delete": "Șterge",
|
"control_bottom_app_bar_delete": "Șterge",
|
||||||
"control_bottom_app_bar_delete_from_immich": "Șterge din Immich",
|
"control_bottom_app_bar_delete_from_immich": "Șterge din Immich",
|
||||||
"control_bottom_app_bar_delete_from_local": "Șterge din dispozitiv",
|
"control_bottom_app_bar_delete_from_local": "Șterge din dispozitiv",
|
||||||
|
"control_bottom_app_bar_download": "Download",
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
"control_bottom_app_bar_edit": "Edit",
|
||||||
"control_bottom_app_bar_edit_location": "Editează locație",
|
"control_bottom_app_bar_edit_location": "Editează locație",
|
||||||
"control_bottom_app_bar_edit_time": "Editează Data și Ora",
|
"control_bottom_app_bar_edit_time": "Editează Data și Ora",
|
||||||
@ -189,6 +190,7 @@
|
|||||||
"create_shared_album_page_share": "Distribuie",
|
"create_shared_album_page_share": "Distribuie",
|
||||||
"create_shared_album_page_share_add_assets": "ADAUGĂ RESURSE",
|
"create_shared_album_page_share_add_assets": "ADAUGĂ RESURSE",
|
||||||
"create_shared_album_page_share_select_photos": "Selectează fotografii",
|
"create_shared_album_page_share_select_photos": "Selectează fotografii",
|
||||||
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Locuri",
|
"curated_location_page_title": "Locuri",
|
||||||
"curated_object_page_title": "Obiecte",
|
"curated_object_page_title": "Obiecte",
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
@ -208,9 +210,15 @@
|
|||||||
"delete_shared_link_dialog_title": "Șterge link distribuire",
|
"delete_shared_link_dialog_title": "Șterge link distribuire",
|
||||||
"description_input_hint_text": "Adaugă descriere...",
|
"description_input_hint_text": "Adaugă descriere...",
|
||||||
"description_input_submit_error": "Eroare actualizare descriere, verifică log-urile pentru mai multe detalii",
|
"description_input_submit_error": "Eroare actualizare descriere, verifică log-urile pentru mai multe detalii",
|
||||||
|
"download_error": "Download Error",
|
||||||
|
"download_started": "Download started",
|
||||||
|
"download_sucess": "Download success",
|
||||||
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"edit_date_time_dialog_date_time": "Dată și Oră",
|
"edit_date_time_dialog_date_time": "Dată și Oră",
|
||||||
"edit_date_time_dialog_timezone": "Fus orar",
|
"edit_date_time_dialog_timezone": "Fus orar",
|
||||||
|
"edit_image_title": "Edit",
|
||||||
"edit_location_dialog_title": "Locație",
|
"edit_location_dialog_title": "Locație",
|
||||||
|
"error_saving_image": "Error: {}",
|
||||||
"exif_bottom_sheet_description": "Adaugă Descriere...",
|
"exif_bottom_sheet_description": "Adaugă Descriere...",
|
||||||
"exif_bottom_sheet_details": "DETALII",
|
"exif_bottom_sheet_details": "DETALII",
|
||||||
"exif_bottom_sheet_location": "LOCAȚIE",
|
"exif_bottom_sheet_location": "LOCAȚIE",
|
||||||
@ -247,6 +255,7 @@
|
|||||||
"home_page_first_time_notice": "Dacă este prima dată când utilizezi aplicația, te rugăm să te asiguri că alegi unul sau mai multe albume de backup, astfel încât cronologia să poată fi populată cu fotografiile și videoclipurile din aceste albume.",
|
"home_page_first_time_notice": "Dacă este prima dată când utilizezi aplicația, te rugăm să te asiguri că alegi unul sau mai multe albume de backup, astfel încât cronologia să poată fi populată cu fotografiile și videoclipurile din aceste albume.",
|
||||||
"home_page_share_err_local": "Nu se pot distribui fișiere locale prin link, omitere",
|
"home_page_share_err_local": "Nu se pot distribui fișiere locale prin link, omitere",
|
||||||
"home_page_upload_err_limit": "Se pot încărca maxim 30 de resurse odată, omitere",
|
"home_page_upload_err_limit": "Se pot încărca maxim 30 de resurse odată, omitere",
|
||||||
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Eroare descărcare",
|
"image_viewer_page_state_provider_download_error": "Eroare descărcare",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||||
"image_viewer_page_state_provider_download_success": "Descărcare cu succes",
|
"image_viewer_page_state_provider_download_success": "Descărcare cu succes",
|
||||||
@ -375,6 +384,7 @@
|
|||||||
"profile_drawer_sign_out": "Deconectare",
|
"profile_drawer_sign_out": "Deconectare",
|
||||||
"profile_drawer_trash": "Coș",
|
"profile_drawer_trash": "Coș",
|
||||||
"recently_added_page_title": "Adăugate recent",
|
"recently_added_page_title": "Adăugate recent",
|
||||||
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "A apărut o eroare",
|
"scaffold_body_error_occurred": "A apărut o eroare",
|
||||||
"search_bar_hint": "Căutare fotografii",
|
"search_bar_hint": "Căutare fotografii",
|
||||||
"search_filter_apply": "Apply filter",
|
"search_filter_apply": "Apply filter",
|
||||||
@ -529,6 +539,10 @@
|
|||||||
"sharing_silver_appbar_create_shared_album": "Album nou distribuit",
|
"sharing_silver_appbar_create_shared_album": "Album nou distribuit",
|
||||||
"sharing_silver_appbar_shared_links": "Link-uri distribuite",
|
"sharing_silver_appbar_shared_links": "Link-uri distribuite",
|
||||||
"sharing_silver_appbar_share_partner": "Distribuie cu partenerul",
|
"sharing_silver_appbar_share_partner": "Distribuie cu partenerul",
|
||||||
|
"sync": "Sync",
|
||||||
|
"sync_albums": "Sync albums",
|
||||||
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
"tab_controller_nav_library": "Librărie",
|
"tab_controller_nav_library": "Librărie",
|
||||||
"tab_controller_nav_photos": "Fotografii",
|
"tab_controller_nav_photos": "Fotografii",
|
||||||
"tab_controller_nav_search": "Caută",
|
"tab_controller_nav_search": "Caută",
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user