mirror of
https://github.com/immich-app/immich.git
synced 2025-12-06 04:41:40 -08:00
Compare commits
178 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5f7f88ff17 | ||
|
|
5053130e35 | ||
|
|
4ef7eb56a3 | ||
|
|
8ecc67a364 | ||
|
|
90f7c3d9ae | ||
|
|
d0381fddec | ||
|
|
7c851893b4 | ||
|
|
ae61ea7984 | ||
|
|
bbcaee82f0 | ||
|
|
16266c9f5a | ||
|
|
6c64a6dab8 | ||
|
|
c0fe98fe27 | ||
|
|
579321251f | ||
|
|
392f9f205c | ||
|
|
57829cee26 | ||
|
|
4be2351d21 | ||
|
|
edbcf17e3a | ||
|
|
eef74ee0ba | ||
|
|
ec58e1065f | ||
|
|
4376fd72b7 | ||
|
|
e4b6efc1f5 | ||
|
|
caea3a0812 | ||
|
|
9c2c85cbe1 | ||
|
|
d350022dec | ||
|
|
502f6e020d | ||
|
|
ca9e02379d | ||
|
|
36ec407c66 | ||
|
|
007eaaceb9 | ||
|
|
94c0e8253a | ||
|
|
5acf6868b7 | ||
|
|
616905211d | ||
|
|
3925445de8 | ||
|
|
52f21fb331 | ||
|
|
ac36effb45 | ||
|
|
02cd8da871 | ||
|
|
17a2043e76 | ||
|
|
34b88bb47a | ||
|
|
f6ba071569 | ||
|
|
6b7a7b0cbc | ||
|
|
b0102f8025 | ||
|
|
9c95adc7fb | ||
|
|
376282e538 | ||
|
|
76d95cd348 | ||
|
|
31dc83f3f2 | ||
|
|
aeb3e0a84f | ||
|
|
8634c59850 | ||
|
|
b13a98646f | ||
|
|
7bf142dc43 | ||
|
|
d8cda6ee40 | ||
|
|
a31bc94460 | ||
|
|
516709ffe1 | ||
|
|
425cf62482 | ||
|
|
58242b3b4a | ||
|
|
9d4aee36e2 | ||
|
|
70d08a2b2a | ||
|
|
f1b98d5f45 | ||
|
|
749eff03d5 | ||
|
|
5f257b9a84 | ||
|
|
0cae20033c | ||
|
|
115ee0d6cc | ||
|
|
bfdd6eac01 | ||
|
|
9eab770e79 | ||
|
|
efd8d8b884 | ||
|
|
25e1c8cc7f | ||
|
|
7c26663013 | ||
|
|
2c88ce8559 | ||
|
|
50b072803d | ||
|
|
1689cecaf7 | ||
|
|
5cd1018db3 | ||
|
|
31e6270a28 | ||
|
|
b3fbd0809b | ||
|
|
129a4a82e0 | ||
|
|
924d11a913 | ||
|
|
425c87bce4 | ||
|
|
25fcda6eeb | ||
|
|
f386b4d377 | ||
|
|
c524fcf084 | ||
|
|
194c567a45 | ||
|
|
411f96ef49 | ||
|
|
4f912de018 | ||
|
|
47203d2760 | ||
|
|
8ab87a8803 | ||
|
|
5b4f894211 | ||
|
|
b1f05fc18b | ||
|
|
dbbefde98d | ||
|
|
5407a28533 | ||
|
|
f5edc87e4d | ||
|
|
bf16b61d43 | ||
|
|
8c882b54cd | ||
|
|
2d7c333c8c | ||
|
|
7c821dd205 | ||
|
|
703361da1a | ||
|
|
fa5aeaf539 | ||
|
|
5f3a42a132 | ||
|
|
9d85272c2b | ||
|
|
d2575d8f00 | ||
|
|
f0a4c945bd | ||
|
|
a3766b879e | ||
|
|
1a190c33a0 | ||
|
|
17a63e37b2 | ||
|
|
bf1f8da884 | ||
|
|
2271984dbd | ||
|
|
b40963ec52 | ||
|
|
735f8d661e | ||
|
|
8794c84e9d | ||
|
|
cef19eed97 | ||
|
|
90c607c1a6 | ||
|
|
52b650093d | ||
|
|
fe4c49c8e3 | ||
|
|
4cad23aaa3 | ||
|
|
feba590de7 | ||
|
|
64f0333306 | ||
|
|
758bcd1e97 | ||
|
|
fb21950ad8 | ||
|
|
758449e9f0 | ||
|
|
d7d4d22fe0 | ||
|
|
03948a69e2 | ||
|
|
61b8eb85b5 | ||
|
|
c5360e78c5 | ||
|
|
23014c263b | ||
|
|
2e5007adef | ||
|
|
c4531fc4d3 | ||
|
|
252d3f5f2c | ||
|
|
ef6c2bf547 | ||
|
|
6aad9fae8e | ||
|
|
45f7401513 | ||
|
|
3c7edba388 | ||
|
|
76a70703a5 | ||
|
|
f78066d4b9 | ||
|
|
48d421e28c | ||
|
|
1492b55c07 | ||
|
|
1d6a4e9318 | ||
|
|
fe42e7410b | ||
|
|
58bf58b393 | ||
|
|
99de52479e | ||
|
|
97574d7296 | ||
|
|
5015210f37 | ||
|
|
0bb1219b5f | ||
|
|
b730aa60ed | ||
|
|
7ec3610753 | ||
|
|
69e88ef985 | ||
|
|
9358b4dc7e | ||
|
|
06f077bac2 | ||
|
|
47f6181d42 | ||
|
|
aac029d92b | ||
|
|
ef245ea2d2 | ||
|
|
e8d05e78ad | ||
|
|
52c9fbea5f | ||
|
|
882163f545 | ||
|
|
96a6cc20b7 | ||
|
|
4efacfbb91 | ||
|
|
a808a840c8 | ||
|
|
3f18acdb1a | ||
|
|
2b41b5efe1 | ||
|
|
9ac95d6845 | ||
|
|
221e197633 | ||
|
|
1b141d5ca9 | ||
|
|
098bab7c9b | ||
|
|
4fccc09fc1 | ||
|
|
c016b65ef2 | ||
|
|
844eed8707 | ||
|
|
6e31ac4c75 | ||
|
|
b287c0cbe8 | ||
|
|
1fcc75fb44 | ||
|
|
ca79e25a6e | ||
|
|
4fd8c1b3c1 | ||
|
|
f3ba994186 | ||
|
|
b4a4abbf51 | ||
|
|
a0aea021a1 | ||
|
|
9033a99587 | ||
|
|
cc0cbd705e | ||
|
|
da580d4685 | ||
|
|
cb6d94c7a7 | ||
|
|
060300de8a | ||
|
|
c2ba1cc202 | ||
|
|
08db77db23 | ||
|
|
92dff839d0 | ||
|
|
fe1e09e51f |
1
.github/PULL_REQUEST_TEMPLATE/config.yml
vendored
1
.github/PULL_REQUEST_TEMPLATE/config.yml
vendored
@@ -1,2 +1 @@
|
||||
blank_issues_enabled: false
|
||||
blank_pull_request_template_enabled: false
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
## Description
|
||||
<!--- Describe your changes in detail -->
|
||||
<!--- Why is this change required? What problem does it solve? -->
|
||||
<!--- If it fixes an open issue, please link to the issue here. -->
|
||||
|
||||
Fixes # (issue)
|
||||
|
||||
|
||||
## How Has This Been Tested?
|
||||
|
||||
<!-- Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration -->
|
||||
|
||||
- [ ] Test A
|
||||
- [ ] Test B
|
||||
|
||||
## Screenshots (if appropriate):
|
||||
|
||||
|
||||
## Checklist:
|
||||
|
||||
- [ ] I have performed a self-review of my own code
|
||||
- [ ] I have made corresponding changes to the documentation if applicable
|
||||
36
.github/pull_request_template.md
vendored
Normal file
36
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
## Description
|
||||
|
||||
<!--- Describe your changes in detail -->
|
||||
<!--- Why is this change required? What problem does it solve? -->
|
||||
<!--- If it fixes an open issue, please link to the issue here. -->
|
||||
|
||||
Fixes # (issue)
|
||||
|
||||
## How Has This Been Tested?
|
||||
|
||||
<!-- Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration -->
|
||||
|
||||
- [ ] Test A
|
||||
- [ ] Test B
|
||||
|
||||
<details><summary><h2>Screenshots (if appropriate)</h2></summary>
|
||||
|
||||
<!-- Images go below this line. -->
|
||||
|
||||
</details>
|
||||
|
||||
<!-- API endpoint changes (if relevant)
|
||||
## API Changes
|
||||
The `/api/something` endpoint is now `/api/something-else`
|
||||
-->
|
||||
|
||||
## Checklist:
|
||||
|
||||
- [ ] I have performed a self-review of my own code
|
||||
- [ ] I have made corresponding changes to the documentation if applicable
|
||||
- [ ] I have no unrelated changes in the PR.
|
||||
- [ ] I have confirmed that any new dependencies are strictly necessary.
|
||||
- [ ] I have written tests for new code (if applicable)
|
||||
- [ ] I have followed naming conventions/patterns in the surrounding code
|
||||
- [ ] All code in `src/services` uses repositories implementations for database calls, filesystem operations, etc.
|
||||
- [ ] All code in `src/repositories/` is pretty basic/simple and does not have any immich specific logic (that belongs in `src/services`)
|
||||
4
.github/workflows/build-mobile.yml
vendored
4
.github/workflows/build-mobile.yml
vendored
@@ -29,9 +29,11 @@ jobs:
|
||||
filters: |
|
||||
mobile:
|
||||
- 'mobile/**'
|
||||
workflow:
|
||||
- '.github/workflows/build-mobile.yml'
|
||||
- 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"
|
||||
run: echo "should_force=${{ steps.found_paths.outputs.workflow == 'true' || github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' }}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
build-sign-android:
|
||||
name: Build and sign Android
|
||||
|
||||
6
.github/workflows/cli.yml
vendored
6
.github/workflows/cli.yml
vendored
@@ -56,10 +56,10 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3.3.0
|
||||
uses: docker/setup-qemu-action@v3.4.0
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3.8.0
|
||||
uses: docker/setup-buildx-action@v3.9.0
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v3
|
||||
@@ -88,7 +88,7 @@ jobs:
|
||||
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
|
||||
|
||||
- name: Build and push image
|
||||
uses: docker/build-push-action@v6.12.0
|
||||
uses: docker/build-push-action@v6.13.0
|
||||
with:
|
||||
file: cli/Dockerfile
|
||||
platforms: linux/amd64,linux/arm64
|
||||
|
||||
73
.github/workflows/docker-cleanup.yml
vendored
73
.github/workflows/docker-cleanup.yml
vendored
@@ -1,73 +0,0 @@
|
||||
# This workflow runs on certain conditions to check for and potentially
|
||||
# delete container images from the GHCR which no longer have an associated
|
||||
# code branch.
|
||||
# Requires a PAT with the correct scope set in the secrets.
|
||||
#
|
||||
# This workflow will not trigger runs on forked repos.
|
||||
|
||||
name: Docker Cleanup
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- "closed"
|
||||
push:
|
||||
paths:
|
||||
- ".github/workflows/docker-cleanup.yml"
|
||||
|
||||
concurrency:
|
||||
group: registry-tags-cleanup
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
cleanup-images:
|
||||
name: Cleanup Stale Images Tags for ${{ matrix.primary-name }}
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- primary-name: "immich-server"
|
||||
- primary-name: "immich-machine-learning"
|
||||
env:
|
||||
# Requires a personal access token with the OAuth scope delete:packages
|
||||
TOKEN: ${{ secrets.PACKAGE_DELETE_TOKEN }}
|
||||
steps:
|
||||
- name: Clean temporary images
|
||||
if: "${{ env.TOKEN != '' }}"
|
||||
uses: stumpylog/image-cleaner-action/ephemeral@v0.9.0
|
||||
with:
|
||||
token: "${{ env.TOKEN }}"
|
||||
owner: "immich-app"
|
||||
is_org: "true"
|
||||
do_delete: "true"
|
||||
package_name: "${{ matrix.primary-name }}"
|
||||
scheme: "pull_request"
|
||||
repo_name: "immich"
|
||||
match_regex: '^pr-(\d+)$|^(\d+)$'
|
||||
|
||||
cleanup-untagged-images:
|
||||
name: Cleanup Untagged Images Tags for ${{ matrix.primary-name }}
|
||||
runs-on: ubuntu-24.04
|
||||
needs:
|
||||
- cleanup-images
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- primary-name: "immich-server"
|
||||
- primary-name: "immich-machine-learning"
|
||||
- primary-name: "immich-build-cache"
|
||||
env:
|
||||
# Requires a personal access token with the OAuth scope delete:packages
|
||||
TOKEN: ${{ secrets.PACKAGE_DELETE_TOKEN }}
|
||||
steps:
|
||||
- name: Clean untagged images
|
||||
if: "${{ env.TOKEN != '' }}"
|
||||
uses: stumpylog/image-cleaner-action/untagged@v0.9.0
|
||||
with:
|
||||
token: "${{ env.TOKEN }}"
|
||||
owner: "immich-app"
|
||||
do_delete: "true"
|
||||
is_org: "true"
|
||||
package_name: "${{ matrix.primary-name }}"
|
||||
350
.github/workflows/docker.yml
vendored
350
.github/workflows/docker.yml
vendored
@@ -36,10 +36,12 @@ jobs:
|
||||
- 'i18n/**'
|
||||
machine-learning:
|
||||
- 'machine-learning/**'
|
||||
workflow:
|
||||
- '.github/workflows/docker.yml'
|
||||
|
||||
- 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"
|
||||
run: echo "should_force=${{ steps.found_paths.outputs.workflow == 'true' || github.event_name == 'workflow_dispatch' || github.event_name == 'release' }}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
retag_ml:
|
||||
name: Re-Tag ML
|
||||
@@ -61,8 +63,10 @@ jobs:
|
||||
REGISTRY_NAME="ghcr.io"
|
||||
REPOSITORY=${{ github.repository_owner }}/immich-machine-learning
|
||||
TAG_OLD=main${{ matrix.suffix }}
|
||||
TAG_NEW=${{ github.event.number == 0 && github.ref_name || format('pr-{0}', github.event.number) }}${{ matrix.suffix }}
|
||||
docker buildx imagetools create -t $REGISTRY_NAME/$REPOSITORY:$TAG_NEW $REGISTRY_NAME/$REPOSITORY:$TAG_OLD
|
||||
TAG_PR=${{ github.event.number == 0 && github.ref_name || format('pr-{0}', github.event.number) }}${{ matrix.suffix }}
|
||||
TAG_COMMIT=commit-${{ github.event_name != 'pull_request' && github.sha || github.event.pull_request.head.sha }}${{ matrix.suffix }}
|
||||
docker buildx imagetools create -t $REGISTRY_NAME/$REPOSITORY:$TAG_PR $REGISTRY_NAME/$REPOSITORY:$TAG_OLD
|
||||
docker buildx imagetools create -t $REGISTRY_NAME/$REPOSITORY:$TAG_COMMIT $REGISTRY_NAME/$REPOSITORY:$TAG_OLD
|
||||
|
||||
retag_server:
|
||||
name: Re-Tag Server
|
||||
@@ -84,107 +88,100 @@ jobs:
|
||||
REGISTRY_NAME="ghcr.io"
|
||||
REPOSITORY=${{ github.repository_owner }}/immich-server
|
||||
TAG_OLD=main${{ matrix.suffix }}
|
||||
TAG_NEW=${{ github.event.number == 0 && github.ref_name || format('pr-{0}', github.event.number) }}${{ matrix.suffix }}
|
||||
docker buildx imagetools create -t $REGISTRY_NAME/$REPOSITORY:$TAG_NEW $REGISTRY_NAME/$REPOSITORY:$TAG_OLD
|
||||
|
||||
TAG_PR=${{ github.event.number == 0 && github.ref_name || format('pr-{0}', github.event.number) }}${{ matrix.suffix }}
|
||||
TAG_COMMIT=commit-${{ github.event_name != 'pull_request' && github.sha || github.event.pull_request.head.sha }}${{ matrix.suffix }}
|
||||
docker buildx imagetools create -t $REGISTRY_NAME/$REPOSITORY:$TAG_PR $REGISTRY_NAME/$REPOSITORY:$TAG_OLD
|
||||
docker buildx imagetools create -t $REGISTRY_NAME/$REPOSITORY:$TAG_COMMIT $REGISTRY_NAME/$REPOSITORY:$TAG_OLD
|
||||
|
||||
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
|
||||
runs-on: ${{ matrix.runner }}
|
||||
env:
|
||||
image: immich-machine-learning
|
||||
context: machine-learning
|
||||
file: machine-learning/Dockerfile
|
||||
GHCR_REPO: ghcr.io/${{ github.repository_owner }}/immich-machine-learning
|
||||
strategy:
|
||||
# Prevent a failure in one image from stopping the other builds
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- platforms: linux/amd64,linux/arm64
|
||||
- platform: linux/amd64
|
||||
runner: ubuntu-latest
|
||||
device: cpu
|
||||
|
||||
- platforms: linux/amd64
|
||||
- platform: linux/arm64
|
||||
runner: ubuntu-24.04-arm
|
||||
device: cpu
|
||||
|
||||
- platform: linux/amd64
|
||||
runner: ubuntu-latest
|
||||
device: cuda
|
||||
suffix: -cuda
|
||||
|
||||
- platforms: linux/amd64
|
||||
- platform: linux/amd64
|
||||
runner: ubuntu-latest
|
||||
device: openvino
|
||||
suffix: -openvino
|
||||
|
||||
- platforms: linux/arm64
|
||||
- platform: linux/arm64
|
||||
runner: ubuntu-24.04-arm
|
||||
device: armnn
|
||||
suffix: -armnn
|
||||
|
||||
steps:
|
||||
- name: Prepare
|
||||
run: |
|
||||
platform=${{ matrix.platform }}
|
||||
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3.3.0
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3.8.0
|
||||
|
||||
- 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 }}
|
||||
uses: docker/setup-buildx-action@v3.9.0
|
||||
|
||||
- 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
|
||||
- name: Generate cache key suffix
|
||||
run: |
|
||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||
# Essentially just ignore the cache output (PR can't write to registry cache)
|
||||
echo "CACHE_KEY_SUFFIX=pr-${{ github.event.number }}" >> $GITHUB_ENV
|
||||
else
|
||||
echo "CACHE_KEY_SUFFIX=$(echo ${{ github.ref_name }} | sed 's/[^a-zA-Z0-9]/-/g')" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
- name: Generate cache target
|
||||
id: cache-target
|
||||
run: |
|
||||
if [[ "${{ github.event.pull_request.head.repo.fork }}" == "true" ]]; then
|
||||
# Essentially just ignore the cache output (forks can't write to registry cache)
|
||||
echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "cache-to=type=registry,mode=max,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{ env.image }}" >> $GITHUB_OUTPUT
|
||||
echo "cache-to=type=registry,ref=${{ env.GHCR_REPO }}-build-cache:${{ env.PLATFORM_PAIR }}-${{ matrix.device }}-${{ env.CACHE_KEY_SUFFIX }},mode=max,compression=zstd" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Build and push image
|
||||
uses: docker/build-push-action@v6.12.0
|
||||
id: build
|
||||
uses: docker/build-push-action@v6.13.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 }}
|
||||
cache-to: ${{ steps.cache-target.outputs.cache-to }}
|
||||
cache-from: |
|
||||
type=registry,ref=${{ env.GHCR_REPO }}-build-cache:${{ env.PLATFORM_PAIR }}-${{ matrix.device }}-${{ env.CACHE_KEY_SUFFIX }}
|
||||
type=registry,ref=${{ env.GHCR_REPO }}-build-cache:${{ env.PLATFORM_PAIR }}-${{ matrix.device }}-main
|
||||
outputs: type=image,"name=${{ env.GHCR_REPO }}",push-by-digest=true,name-canonical=true,push=${{ !github.event.pull_request.head.repo.fork }}
|
||||
build-args: |
|
||||
DEVICE=${{ matrix.device }}
|
||||
BUILD_ID=${{ github.run_id }}
|
||||
@@ -192,100 +189,249 @@ jobs:
|
||||
BUILD_SOURCE_REF=${{ github.ref_name }}
|
||||
BUILD_SOURCE_COMMIT=${{ github.sha }}
|
||||
|
||||
- name: Export digest
|
||||
run: |
|
||||
mkdir -p ${{ runner.temp }}/digests
|
||||
digest="${{ steps.build.outputs.digest }}"
|
||||
touch "${{ runner.temp }}/digests/${digest#sha256:}"
|
||||
|
||||
- name: Upload digest
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ml-digests-${{ matrix.device }}-${{ env.PLATFORM_PAIR }}
|
||||
path: ${{ runner.temp }}/digests/*
|
||||
if-no-files-found: error
|
||||
retention-days: 1
|
||||
|
||||
merge_ml:
|
||||
name: Merge & Push ML
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ needs.pre-job.outputs.should_run_ml == 'true' && !github.event.pull_request.head.repo.fork }}
|
||||
env:
|
||||
GHCR_REPO: ghcr.io/${{ github.repository_owner }}/immich-machine-learning
|
||||
DOCKER_REPO: altran1502/immich-machine-learning
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- device: cpu
|
||||
- device: cuda
|
||||
suffix: -cuda
|
||||
- device: openvino
|
||||
suffix: -openvino
|
||||
- device: armnn
|
||||
suffix: -armnn
|
||||
needs:
|
||||
- build_and_push_ml
|
||||
steps:
|
||||
- name: Download digests
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: ${{ runner.temp }}/digests
|
||||
pattern: ml-digests-${{ matrix.device }}-*
|
||||
merge-multiple: true
|
||||
|
||||
- name: Login to Docker Hub
|
||||
if: ${{ github.event_name == 'release' }}
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Login to GHCR
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Generate docker image tags
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
env:
|
||||
DOCKER_METADATA_PR_HEAD_SHA: "true"
|
||||
with:
|
||||
flavor: |
|
||||
# Disable latest tag
|
||||
latest=false
|
||||
images: |
|
||||
name=${{ env.GHCR_REPO }}
|
||||
name=${{ env.DOCKER_REPO }},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 long commit sha hash
|
||||
type=sha,format=long,prefix=commit-,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: Create manifest list and push
|
||||
working-directory: ${{ runner.temp }}/digests
|
||||
run: |
|
||||
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
|
||||
$(printf '${{ env.GHCR_REPO }}@sha256:%s ' *)
|
||||
|
||||
build_and_push_server:
|
||||
name: Build and Push Server
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ${{ matrix.runner }}
|
||||
needs: pre-job
|
||||
if: ${{ needs.pre-job.outputs.should_run_server == 'true' }}
|
||||
env:
|
||||
image: immich-server
|
||||
context: .
|
||||
file: server/Dockerfile
|
||||
GHCR_REPO: ghcr.io/${{ github.repository_owner }}/immich-server
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- platforms: linux/amd64,linux/arm64
|
||||
device: cpu
|
||||
- platform: linux/amd64
|
||||
runner: ubuntu-latest
|
||||
- platform: linux/arm64
|
||||
runner: ubuntu-24.04-arm
|
||||
steps:
|
||||
- name: Prepare
|
||||
run: |
|
||||
platform=${{ matrix.platform }}
|
||||
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3.3.0
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3.8.0
|
||||
|
||||
- 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 }}
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- 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
|
||||
- name: Generate cache key suffix
|
||||
run: |
|
||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||
# Essentially just ignore the cache output (PR can't write to registry cache)
|
||||
echo "CACHE_KEY_SUFFIX=pr-${{ github.event.number }}" >> $GITHUB_ENV
|
||||
else
|
||||
echo "CACHE_KEY_SUFFIX=$(echo ${{ github.ref_name }} | sed 's/[^a-zA-Z0-9]/-/g')" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
- name: Generate cache target
|
||||
id: cache-target
|
||||
run: |
|
||||
if [[ "${{ github.event.pull_request.head.repo.fork }}" == "true" ]]; then
|
||||
# Essentially just ignore the cache output (forks can't write to registry cache)
|
||||
echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "cache-to=type=registry,mode=max,ref=ghcr.io/${{ github.repository_owner }}/immich-build-cache:${{ env.image }}" >> $GITHUB_OUTPUT
|
||||
echo "cache-to=type=registry,ref=${{ env.GHCR_REPO }}-build-cache:${{ env.PLATFORM_PAIR }}-${{ matrix.device }}-${{ env.CACHE_KEY_SUFFIX }},mode=max,compression=zstd" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Build and push image
|
||||
uses: docker/build-push-action@v6.12.0
|
||||
id: build
|
||||
uses: docker/build-push-action@v6.13.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 }}
|
||||
platforms: ${{ matrix.platform }}
|
||||
labels: ${{ steps.metadata.outputs.labels }}
|
||||
cache-to: ${{ steps.cache-target.outputs.cache-to }}
|
||||
cache-from: |
|
||||
type=registry,ref=${{ env.GHCR_REPO }}-build-cache:${{ env.PLATFORM_PAIR }}-${{ env.CACHE_KEY_SUFFIX }}
|
||||
type=registry,ref=${{ env.GHCR_REPO }}-build-cache:${{ env.PLATFORM_PAIR }}-main
|
||||
outputs: type=image,"name=${{ env.GHCR_REPO }}",push-by-digest=true,name-canonical=true,push=${{ !github.event.pull_request.head.repo.fork }}
|
||||
build-args: |
|
||||
DEVICE=${{ matrix.device }}
|
||||
DEVICE=cpu
|
||||
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 }}
|
||||
|
||||
- name: Export digest
|
||||
run: |
|
||||
mkdir -p ${{ runner.temp }}/digests
|
||||
digest="${{ steps.build.outputs.digest }}"
|
||||
touch "${{ runner.temp }}/digests/${digest#sha256:}"
|
||||
|
||||
- name: Upload digest
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: server-digests-${{ env.PLATFORM_PAIR }}
|
||||
path: ${{ runner.temp }}/digests/*
|
||||
if-no-files-found: error
|
||||
retention-days: 1
|
||||
|
||||
merge_server:
|
||||
name: Merge & Push Server
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ needs.pre-job.outputs.should_run_server == 'true' && !github.event.pull_request.head.repo.fork }}
|
||||
env:
|
||||
GHCR_REPO: ghcr.io/${{ github.repository_owner }}/immich-server
|
||||
DOCKER_REPO: altran1502/immich-server
|
||||
needs:
|
||||
- build_and_push_server
|
||||
steps:
|
||||
- name: Download digests
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: ${{ runner.temp }}/digests
|
||||
pattern: server-digests-*
|
||||
merge-multiple: true
|
||||
|
||||
- name: Login to Docker Hub
|
||||
if: ${{ github.event_name == 'release' }}
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Login to GHCR
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Generate docker image tags
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
env:
|
||||
DOCKER_METADATA_PR_HEAD_SHA: "true"
|
||||
with:
|
||||
flavor: |
|
||||
# Disable latest tag
|
||||
latest=false
|
||||
images: |
|
||||
name=${{ env.GHCR_REPO }}
|
||||
name=${{ env.DOCKER_REPO }},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 long commit sha hash
|
||||
type=sha,format=long,prefix=commit-,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: Create manifest list and push
|
||||
working-directory: ${{ runner.temp }}/digests
|
||||
run: |
|
||||
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
|
||||
$(printf '${{ env.GHCR_REPO }}@sha256:%s ' *)
|
||||
|
||||
success-check-server:
|
||||
name: Docker Build & Push Server Success
|
||||
needs: [build_and_push_server, retag_server]
|
||||
needs: [merge_server, retag_server]
|
||||
runs-on: ubuntu-latest
|
||||
if: always()
|
||||
steps:
|
||||
@@ -298,7 +444,7 @@ jobs:
|
||||
|
||||
success-check-ml:
|
||||
name: Docker Build & Push ML Success
|
||||
needs: [build_and_push_ml, retag_ml]
|
||||
needs: [merge_ml, retag_ml]
|
||||
runs-on: ubuntu-latest
|
||||
if: always()
|
||||
steps:
|
||||
|
||||
6
.github/workflows/docs-build.yml
vendored
6
.github/workflows/docs-build.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
pre-job:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
should_run: ${{ steps.found_paths.outputs.docs == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||
should_run: ${{ steps.found_paths.outputs.docs == 'true' || steps.should_force.outputs.should_force == 'true' }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
@@ -25,9 +25,11 @@ jobs:
|
||||
filters: |
|
||||
docs:
|
||||
- 'docs/**'
|
||||
workflow:
|
||||
- '.github/workflows/docs-build.yml'
|
||||
- name: Check if we should force jobs to run
|
||||
id: should_force
|
||||
run: echo "should_force=${{ github.event_name == 'release' || github.ref_name == 'main' }}" >> "$GITHUB_OUTPUT"
|
||||
run: echo "should_force=${{ steps.found_paths.outputs.workflow == 'true' || github.event_name == 'release' || github.ref_name == 'main' }}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
build:
|
||||
name: Docs Build
|
||||
|
||||
33
.github/workflows/preview-label.yaml
vendored
Normal file
33
.github/workflows/preview-label.yaml
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
name: Preview label
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
comment-status:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.action == 'labeled' && github.event.label.name == 'preview' }}
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: mshick/add-pr-comment@v2
|
||||
with:
|
||||
message-id: "preview-status"
|
||||
message: "Deploying preview environment to https://pr-${{ github.event.pull_request.number }}.preview.internal.immich.cloud/"
|
||||
|
||||
remove-label:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.action == 'closed' && contains(github.event.pull_request.labels.*.name, 'preview') }}
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
github.rest.issues.removeLabel({
|
||||
issue_number: context.payload.pull_request.number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
name: 'preview'
|
||||
})
|
||||
4
.github/workflows/static_analysis.yml
vendored
4
.github/workflows/static_analysis.yml
vendored
@@ -23,9 +23,11 @@ jobs:
|
||||
filters: |
|
||||
mobile:
|
||||
- 'mobile/**'
|
||||
workflow:
|
||||
- '.github/workflows/static_analysis.yml'
|
||||
- name: Check if we should force jobs to run
|
||||
id: should_force
|
||||
run: echo "should_force=${{ github.event_name == 'release' }}" >> "$GITHUB_OUTPUT"
|
||||
run: echo "should_force=${{ steps.found_paths.outputs.workflow == 'true' || github.event_name == 'release' }}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
mobile-dart-analyze:
|
||||
name: Run Dart Code Analysis
|
||||
|
||||
26
.github/workflows/test.yml
vendored
26
.github/workflows/test.yml
vendored
@@ -43,10 +43,12 @@ jobs:
|
||||
- 'mobile/**'
|
||||
machine-learning:
|
||||
- 'machine-learning/**'
|
||||
workflow:
|
||||
- '.github/workflows/test.yml'
|
||||
|
||||
- name: Check if we should force jobs to run
|
||||
id: should_force
|
||||
run: echo "should_force=${{ github.event_name == 'workflow_dispatch' }}" >> "$GITHUB_OUTPUT"
|
||||
run: echo "should_force=${{ steps.found_paths.outputs.workflow == 'true' || github.event_name == 'workflow_dispatch' }}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
server-unit-tests:
|
||||
name: Test & Lint Server
|
||||
@@ -244,25 +246,30 @@ jobs:
|
||||
run: npm run check
|
||||
if: ${{ !cancelled() }}
|
||||
|
||||
medium-tests-server:
|
||||
server-medium-tests:
|
||||
name: Medium Tests (Server)
|
||||
needs: pre-job
|
||||
if: ${{ needs.pre-job.outputs.should_run_server == 'true' }}
|
||||
runs-on: mich
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./server
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: 'recursive'
|
||||
|
||||
- name: Production build
|
||||
if: ${{ !cancelled() }}
|
||||
run: docker compose -f e2e/docker-compose.yml build
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
|
||||
- name: Run npm install
|
||||
run: npm ci
|
||||
|
||||
- name: Run medium tests
|
||||
run: npm run test:medium
|
||||
if: ${{ !cancelled() }}
|
||||
run: make test-medium
|
||||
|
||||
e2e-tests-server-cli:
|
||||
name: End-to-End Tests (Server & CLI)
|
||||
@@ -502,6 +509,7 @@ jobs:
|
||||
run: |
|
||||
echo "ERROR: Generated migration files not up to date!"
|
||||
echo "Changed files: ${{ steps.verify-changed-files.outputs.changed_files }}"
|
||||
cat ./src/migrations/*-TestMigration.ts
|
||||
exit 1
|
||||
|
||||
- name: Run SQL generation
|
||||
|
||||
@@ -1 +1 @@
|
||||
22.13.1
|
||||
22.14.0
|
||||
|
||||
295
cli/package-lock.json
generated
295
cli/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@immich/cli",
|
||||
"version": "2.2.47",
|
||||
"version": "2.2.51",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@immich/cli",
|
||||
"version": "2.2.47",
|
||||
"version": "2.2.51",
|
||||
"license": "GNU Affero General Public License version 3",
|
||||
"dependencies": {
|
||||
"fast-glob": "^3.3.2",
|
||||
@@ -24,7 +24,7 @@
|
||||
"@types/cli-progress": "^3.11.0",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/mock-fs": "^4.13.1",
|
||||
"@types/node": "^22.10.9",
|
||||
"@types/node": "^22.13.4",
|
||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
||||
"@typescript-eslint/parser": "^8.15.0",
|
||||
"@vitest/coverage-v8": "^3.0.0",
|
||||
@@ -52,14 +52,14 @@
|
||||
},
|
||||
"../open-api/typescript-sdk": {
|
||||
"name": "@immich/sdk",
|
||||
"version": "1.125.6",
|
||||
"version": "1.127.0",
|
||||
"dev": true,
|
||||
"license": "GNU Affero General Public License version 3",
|
||||
"dependencies": {
|
||||
"@oazapfts/runtime": "^1.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.10.9",
|
||||
"@types/node": "^22.13.4",
|
||||
"typescript": "^5.3.3"
|
||||
}
|
||||
},
|
||||
@@ -881,9 +881,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/js": {
|
||||
"version": "9.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz",
|
||||
"integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==",
|
||||
"version": "9.20.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz",
|
||||
"integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -1482,9 +1482,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "22.10.9",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.9.tgz",
|
||||
"integrity": "sha512-Ir6hwgsKyNESl/gLOcEz3krR4CBGgliDqBQ2ma4wIhEx0w+xnoeTq3tdrNw15kU3SxogDjOgv9sqdtLW8mIHaw==",
|
||||
"version": "22.13.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz",
|
||||
"integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1498,21 +1498,21 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||
"version": "8.20.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz",
|
||||
"integrity": "sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==",
|
||||
"version": "8.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz",
|
||||
"integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@eslint-community/regexpp": "^4.10.0",
|
||||
"@typescript-eslint/scope-manager": "8.20.0",
|
||||
"@typescript-eslint/type-utils": "8.20.0",
|
||||
"@typescript-eslint/utils": "8.20.0",
|
||||
"@typescript-eslint/visitor-keys": "8.20.0",
|
||||
"@typescript-eslint/scope-manager": "8.24.0",
|
||||
"@typescript-eslint/type-utils": "8.24.0",
|
||||
"@typescript-eslint/utils": "8.24.0",
|
||||
"@typescript-eslint/visitor-keys": "8.24.0",
|
||||
"graphemer": "^1.4.0",
|
||||
"ignore": "^5.3.1",
|
||||
"natural-compare": "^1.4.0",
|
||||
"ts-api-utils": "^2.0.0"
|
||||
"ts-api-utils": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||
@@ -1528,16 +1528,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/parser": {
|
||||
"version": "8.20.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.20.0.tgz",
|
||||
"integrity": "sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==",
|
||||
"version": "8.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.0.tgz",
|
||||
"integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/scope-manager": "8.20.0",
|
||||
"@typescript-eslint/types": "8.20.0",
|
||||
"@typescript-eslint/typescript-estree": "8.20.0",
|
||||
"@typescript-eslint/visitor-keys": "8.20.0",
|
||||
"@typescript-eslint/scope-manager": "8.24.0",
|
||||
"@typescript-eslint/types": "8.24.0",
|
||||
"@typescript-eslint/typescript-estree": "8.24.0",
|
||||
"@typescript-eslint/visitor-keys": "8.24.0",
|
||||
"debug": "^4.3.4"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1553,14 +1553,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/scope-manager": {
|
||||
"version": "8.20.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz",
|
||||
"integrity": "sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==",
|
||||
"version": "8.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz",
|
||||
"integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "8.20.0",
|
||||
"@typescript-eslint/visitor-keys": "8.20.0"
|
||||
"@typescript-eslint/types": "8.24.0",
|
||||
"@typescript-eslint/visitor-keys": "8.24.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||
@@ -1571,16 +1571,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/type-utils": {
|
||||
"version": "8.20.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz",
|
||||
"integrity": "sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==",
|
||||
"version": "8.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz",
|
||||
"integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/typescript-estree": "8.20.0",
|
||||
"@typescript-eslint/utils": "8.20.0",
|
||||
"@typescript-eslint/typescript-estree": "8.24.0",
|
||||
"@typescript-eslint/utils": "8.24.0",
|
||||
"debug": "^4.3.4",
|
||||
"ts-api-utils": "^2.0.0"
|
||||
"ts-api-utils": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||
@@ -1595,9 +1595,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/types": {
|
||||
"version": "8.20.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz",
|
||||
"integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==",
|
||||
"version": "8.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.0.tgz",
|
||||
"integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -1609,20 +1609,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/typescript-estree": {
|
||||
"version": "8.20.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz",
|
||||
"integrity": "sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==",
|
||||
"version": "8.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz",
|
||||
"integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "8.20.0",
|
||||
"@typescript-eslint/visitor-keys": "8.20.0",
|
||||
"@typescript-eslint/types": "8.24.0",
|
||||
"@typescript-eslint/visitor-keys": "8.24.0",
|
||||
"debug": "^4.3.4",
|
||||
"fast-glob": "^3.3.2",
|
||||
"is-glob": "^4.0.3",
|
||||
"minimatch": "^9.0.4",
|
||||
"semver": "^7.6.0",
|
||||
"ts-api-utils": "^2.0.0"
|
||||
"ts-api-utils": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||
@@ -1636,16 +1636,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/utils": {
|
||||
"version": "8.20.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.20.0.tgz",
|
||||
"integrity": "sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==",
|
||||
"version": "8.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.0.tgz",
|
||||
"integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.4.0",
|
||||
"@typescript-eslint/scope-manager": "8.20.0",
|
||||
"@typescript-eslint/types": "8.20.0",
|
||||
"@typescript-eslint/typescript-estree": "8.20.0"
|
||||
"@typescript-eslint/scope-manager": "8.24.0",
|
||||
"@typescript-eslint/types": "8.24.0",
|
||||
"@typescript-eslint/typescript-estree": "8.24.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||
@@ -1660,13 +1660,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/visitor-keys": {
|
||||
"version": "8.20.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz",
|
||||
"integrity": "sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==",
|
||||
"version": "8.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz",
|
||||
"integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "8.20.0",
|
||||
"@typescript-eslint/types": "8.24.0",
|
||||
"eslint-visitor-keys": "^4.2.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1691,9 +1691,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/coverage-v8": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.3.tgz",
|
||||
"integrity": "sha512-uVbJ/xhImdNtzPnLyxCZJMTeTIYdgcC2nWtBBBpR1H6z0w8m7D+9/zrDIx2nNxgMg9r+X8+RY2qVpUDeW2b3nw==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.5.tgz",
|
||||
"integrity": "sha512-zOOWIsj5fHh3jjGwQg+P+J1FW3s4jBu1Zqga0qW60yutsBtqEqNEJKWYh7cYn1yGD+1bdPsPdC/eL4eVK56xMg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1714,8 +1714,8 @@
|
||||
"url": "https://opencollective.com/vitest"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@vitest/browser": "3.0.3",
|
||||
"vitest": "3.0.3"
|
||||
"@vitest/browser": "3.0.5",
|
||||
"vitest": "3.0.5"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@vitest/browser": {
|
||||
@@ -1724,14 +1724,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/expect": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.3.tgz",
|
||||
"integrity": "sha512-SbRCHU4qr91xguu+dH3RUdI5dC86zm8aZWydbp961aIR7G8OYNN6ZiayFuf9WAngRbFOfdrLHCGgXTj3GtoMRQ==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.5.tgz",
|
||||
"integrity": "sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/spy": "3.0.3",
|
||||
"@vitest/utils": "3.0.3",
|
||||
"@vitest/spy": "3.0.5",
|
||||
"@vitest/utils": "3.0.5",
|
||||
"chai": "^5.1.2",
|
||||
"tinyrainbow": "^2.0.0"
|
||||
},
|
||||
@@ -1740,13 +1740,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/mocker": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.3.tgz",
|
||||
"integrity": "sha512-XT2XBc4AN9UdaxJAeIlcSZ0ILi/GzmG5G8XSly4gaiqIvPV3HMTSIDZWJVX6QRJ0PX1m+W8Cy0K9ByXNb/bPIA==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.5.tgz",
|
||||
"integrity": "sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/spy": "3.0.3",
|
||||
"@vitest/spy": "3.0.5",
|
||||
"estree-walker": "^3.0.3",
|
||||
"magic-string": "^0.30.17"
|
||||
},
|
||||
@@ -1767,9 +1767,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/pretty-format": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.3.tgz",
|
||||
"integrity": "sha512-gCrM9F7STYdsDoNjGgYXKPq4SkSxwwIU5nkaQvdUxiQ0EcNlez+PdKOVIsUJvh9P9IeIFmjn4IIREWblOBpP2Q==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz",
|
||||
"integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1780,38 +1780,38 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/runner": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.3.tgz",
|
||||
"integrity": "sha512-Rgi2kOAk5ZxWZlwPguRJFOBmWs6uvvyAAR9k3MvjRvYrG7xYvKChZcmnnpJCS98311CBDMqsW9MzzRFsj2gX3g==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.5.tgz",
|
||||
"integrity": "sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/utils": "3.0.3",
|
||||
"pathe": "^2.0.1"
|
||||
"@vitest/utils": "3.0.5",
|
||||
"pathe": "^2.0.2"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/vitest"
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/snapshot": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.3.tgz",
|
||||
"integrity": "sha512-kNRcHlI4txBGztuJfPEJ68VezlPAXLRT1u5UCx219TU3kOG2DplNxhWLwDf2h6emwmTPogzLnGVwP6epDaJN6Q==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.5.tgz",
|
||||
"integrity": "sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/pretty-format": "3.0.3",
|
||||
"@vitest/pretty-format": "3.0.5",
|
||||
"magic-string": "^0.30.17",
|
||||
"pathe": "^2.0.1"
|
||||
"pathe": "^2.0.2"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/vitest"
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/spy": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.3.tgz",
|
||||
"integrity": "sha512-7/dgux8ZBbF7lEIKNnEqQlyRaER9nkAL9eTmdKJkDO3hS8p59ATGwKOCUDHcBLKr7h/oi/6hP+7djQk8049T2A==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz",
|
||||
"integrity": "sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1822,13 +1822,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/utils": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.3.tgz",
|
||||
"integrity": "sha512-f+s8CvyzPtMFY1eZKkIHGhPsQgYo5qCm6O8KZoim9qm1/jT64qBgGpO5tHscNH6BzRHM+edLNOP+3vO8+8pE/A==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz",
|
||||
"integrity": "sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/pretty-format": "3.0.3",
|
||||
"@vitest/pretty-format": "3.0.5",
|
||||
"loupe": "^3.1.2",
|
||||
"tinyrainbow": "^2.0.0"
|
||||
},
|
||||
@@ -2334,18 +2334,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "9.18.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz",
|
||||
"integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==",
|
||||
"version": "9.20.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz",
|
||||
"integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/regexpp": "^4.12.1",
|
||||
"@eslint/config-array": "^0.19.0",
|
||||
"@eslint/core": "^0.10.0",
|
||||
"@eslint/core": "^0.11.0",
|
||||
"@eslint/eslintrc": "^3.2.0",
|
||||
"@eslint/js": "9.18.0",
|
||||
"@eslint/js": "9.20.0",
|
||||
"@eslint/plugin-kit": "^0.2.5",
|
||||
"@humanfs/node": "^0.16.6",
|
||||
"@humanwhocodes/module-importer": "^1.0.1",
|
||||
@@ -2407,9 +2407,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-prettier": {
|
||||
"version": "5.2.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.2.tgz",
|
||||
"integrity": "sha512-1yI3/hf35wmlq66C8yOyrujQnel+v5l1Vop5Cl2I6ylyNTT1JbuUUnV3/41PzwTzcyDp/oF0jWE3HXvcH5AQOQ==",
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz",
|
||||
"integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -2500,6 +2500,19 @@
|
||||
"url": "https://opencollective.com/eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/@eslint/core": {
|
||||
"version": "0.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz",
|
||||
"integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@types/json-schema": "^7.0.15"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
@@ -2685,9 +2698,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/fastq": {
|
||||
"version": "1.18.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz",
|
||||
"integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==",
|
||||
"version": "1.19.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz",
|
||||
"integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"reusify": "^1.0.4"
|
||||
@@ -2828,9 +2841,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/globals": {
|
||||
"version": "15.14.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz",
|
||||
"integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==",
|
||||
"version": "15.15.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz",
|
||||
"integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -3180,9 +3193,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/loupe": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz",
|
||||
"integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==",
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz",
|
||||
"integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -3285,9 +3298,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/mock-fs": {
|
||||
"version": "5.4.1",
|
||||
"resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-5.4.1.tgz",
|
||||
"integrity": "sha512-sz/Q8K1gXXXHR+qr0GZg2ysxCRr323kuN10O7CtQjraJsFDJ4SJ+0I5MzALz7aRp9lHk8Cc/YdsT95h9Ka1aFw==",
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-5.5.0.tgz",
|
||||
"integrity": "sha512-d/P1M/RacgM3dB0sJ8rjeRNXxtapkPCUnMGmIN0ixJ16F/E4GUZCvWcSGfWGz8eaXYvn1s9baUwNjI4LOPEjiA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -3569,9 +3582,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/prettier": {
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
|
||||
"integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
|
||||
"version": "3.5.1",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz",
|
||||
"integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
@@ -4166,9 +4179,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/ts-api-utils": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz",
|
||||
"integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==",
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz",
|
||||
"integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -4288,15 +4301,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "6.0.11",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-6.0.11.tgz",
|
||||
"integrity": "sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==",
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-6.1.0.tgz",
|
||||
"integrity": "sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"esbuild": "^0.24.2",
|
||||
"postcss": "^8.4.49",
|
||||
"rollup": "^4.23.0"
|
||||
"postcss": "^8.5.1",
|
||||
"rollup": "^4.30.1"
|
||||
},
|
||||
"bin": {
|
||||
"vite": "bin/vite.js"
|
||||
@@ -4360,16 +4373,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vite-node": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.3.tgz",
|
||||
"integrity": "sha512-0sQcwhwAEw/UJGojbhOrnq3HtiZ3tC7BzpAa0lx3QaTX0S3YX70iGcik25UBdB96pmdwjyY2uyKNYruxCDmiEg==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.5.tgz",
|
||||
"integrity": "sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cac": "^6.7.14",
|
||||
"debug": "^4.4.0",
|
||||
"es-module-lexer": "^1.6.0",
|
||||
"pathe": "^2.0.1",
|
||||
"pathe": "^2.0.2",
|
||||
"vite": "^5.0.0 || ^6.0.0"
|
||||
},
|
||||
"bin": {
|
||||
@@ -4403,31 +4416,31 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vitest": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.3.tgz",
|
||||
"integrity": "sha512-dWdwTFUW9rcnL0LyF2F+IfvNQWB0w9DERySCk8VMG75F8k25C7LsZoh6XfCjPvcR8Nb+Lqi9JKr6vnzH7HSrpQ==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.5.tgz",
|
||||
"integrity": "sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/expect": "3.0.3",
|
||||
"@vitest/mocker": "3.0.3",
|
||||
"@vitest/pretty-format": "^3.0.3",
|
||||
"@vitest/runner": "3.0.3",
|
||||
"@vitest/snapshot": "3.0.3",
|
||||
"@vitest/spy": "3.0.3",
|
||||
"@vitest/utils": "3.0.3",
|
||||
"@vitest/expect": "3.0.5",
|
||||
"@vitest/mocker": "3.0.5",
|
||||
"@vitest/pretty-format": "^3.0.5",
|
||||
"@vitest/runner": "3.0.5",
|
||||
"@vitest/snapshot": "3.0.5",
|
||||
"@vitest/spy": "3.0.5",
|
||||
"@vitest/utils": "3.0.5",
|
||||
"chai": "^5.1.2",
|
||||
"debug": "^4.4.0",
|
||||
"expect-type": "^1.1.0",
|
||||
"magic-string": "^0.30.17",
|
||||
"pathe": "^2.0.1",
|
||||
"pathe": "^2.0.2",
|
||||
"std-env": "^3.8.0",
|
||||
"tinybench": "^2.9.0",
|
||||
"tinyexec": "^0.3.2",
|
||||
"tinypool": "^1.0.2",
|
||||
"tinyrainbow": "^2.0.0",
|
||||
"vite": "^5.0.0 || ^6.0.0",
|
||||
"vite-node": "3.0.3",
|
||||
"vite-node": "3.0.5",
|
||||
"why-is-node-running": "^2.3.0"
|
||||
},
|
||||
"bin": {
|
||||
@@ -4441,9 +4454,10 @@
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@edge-runtime/vm": "*",
|
||||
"@types/debug": "^4.1.12",
|
||||
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
|
||||
"@vitest/browser": "3.0.3",
|
||||
"@vitest/ui": "3.0.3",
|
||||
"@vitest/browser": "3.0.5",
|
||||
"@vitest/ui": "3.0.5",
|
||||
"happy-dom": "*",
|
||||
"jsdom": "*"
|
||||
},
|
||||
@@ -4451,6 +4465,9 @@
|
||||
"@edge-runtime/vm": {
|
||||
"optional": true
|
||||
},
|
||||
"@types/debug": {
|
||||
"optional": true
|
||||
},
|
||||
"@types/node": {
|
||||
"optional": true
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@immich/cli",
|
||||
"version": "2.2.47",
|
||||
"version": "2.2.51",
|
||||
"description": "Command Line Interface (CLI) for Immich",
|
||||
"type": "module",
|
||||
"exports": "./dist/index.js",
|
||||
@@ -20,7 +20,7 @@
|
||||
"@types/cli-progress": "^3.11.0",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/mock-fs": "^4.13.1",
|
||||
"@types/node": "^22.10.9",
|
||||
"@types/node": "^22.13.4",
|
||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
||||
"@typescript-eslint/parser": "^8.15.0",
|
||||
"@vitest/coverage-v8": "^3.0.0",
|
||||
@@ -67,6 +67,6 @@
|
||||
"lodash-es": "^4.17.21"
|
||||
},
|
||||
"volta": {
|
||||
"node": "22.13.1"
|
||||
"node": "22.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,37 +2,37 @@
|
||||
# Manual edits may be lost in future updates.
|
||||
|
||||
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
||||
version = "4.50.0"
|
||||
constraints = "4.50.0"
|
||||
version = "4.52.0"
|
||||
constraints = "4.52.0"
|
||||
hashes = [
|
||||
"h1:0qvD5ZKn2tMZ8cOjQrUSITIC9tKCZbrSaSswV9lOyiU=",
|
||||
"h1:4N0gplrZ0zOsJv3Kx1VfIx2FwrZHbYU0Un2yfiLZIGQ=",
|
||||
"h1:81AMQq4kNKU/35U8ElQegUxG4E6xB0erIjG5xVmjIyo=",
|
||||
"h1:EEQNADUmV3IL6x00yzy04i7OCSLeOMgM9XQkV3w71gA=",
|
||||
"h1:HD0KI7td6oiSSAnJNn8UPSGf+hKiTo4JVQYfAiU1SqM=",
|
||||
"h1:Hl+o5LtcvZg2f3l1hh9vaG/DFK6k+dTIZSeM0lXyfpo=",
|
||||
"h1:ZUO2oIJ6jtZdvl816h0cEIiIeZ/fFCF64+abGEVxZZM=",
|
||||
"h1:Zio80fnEeUKdlSOhTVskMEFSLUQ6TMsMKnXc+Dy2P2A=",
|
||||
"h1:aLLvg36evTyqjtXGV2MjAV8imktXFmry7p/xCu9GQC4=",
|
||||
"h1:azL05eWyy2V8SWkbZZImPWvv8ynG4eqmrbZhjXBDFug=",
|
||||
"h1:ckMysHY4fJmr7o58XMi+DdgOTB/U/Mf1u1JA9ly3g/I=",
|
||||
"h1:jxOwjDNjt5WCb4YjjiMsman91O8Y+MAPz6UwJ4a6F+0=",
|
||||
"h1:u4OfnjSLa4Wk1IUFAzrvMnGgr8MvRHEWVDHEScPK2E8=",
|
||||
"h1:wQkR1oeSkzlHn3rnVuLJRJLBHlg4EHt7Y64DeTjfkjQ=",
|
||||
"zh:0ef99ed39472a94e6a0d6fa733cf0a46bce3bf66eba2873efae8846efdddc237",
|
||||
"zh:2929cbbffcead171d45c88e4a7a59e9c013ea775dafa68b10da8db7cd04b6140",
|
||||
"zh:462601c87118088e1a718842e367af7d8e7620598d426980a6d6b33de759865e",
|
||||
"zh:56766eb62a74a9d88d9efb8486dd3a0c5c9db873d0a980ae9ef1e8af27d74231",
|
||||
"zh:6b4e8810d99498a5a20a5872982a0f1354e79cfc4a7dfe7cc656f1c7eaae47d8",
|
||||
"zh:6d65bdb4ec94b6eecc8abe26d94e2ca09262dc1e7a9934db829f418be0119920",
|
||||
"zh:71adeaf31e41a358ec6095004062e43f56ee7d4b2504e5613ab351d511695641",
|
||||
"h1:2BEJyXJtYC4B4nda/WCYUmuJYDaYk88F8t1pwPzr0iQ=",
|
||||
"h1:4IASk5SESeWKQ7JU0+M7KApuF5mZyklvwMXPBabim3c=",
|
||||
"h1:5ImZxxALSnWfH/4EXw/wFirSmk5Tr0ACmcysy51AafE=",
|
||||
"h1:6TJ3dxLSin4ZKBJLsZDn95H2ZYnGm8S7GGHvvXuuMQU=",
|
||||
"h1:IzTUjg9kQ4N3qizP9CjYLeHwjsuGgtxwXvfUQWyOLcA=",
|
||||
"h1:NTaOQfYINA0YTG/V1/9+SYtgX1it63+cBugj4WK4FWc=",
|
||||
"h1:PXH48LuJn329sCfMXprdMDk51EZaWFyajVvS03qhQLs=",
|
||||
"h1:Pi5M+GeoMSN2eJ6QnIeXjBf19O+rby/74CfB2ocpv20=",
|
||||
"h1:ShXZ2ZjBvm3thfoPPzPT8+OhyismnydQVkUAfI8X12w=",
|
||||
"h1:WQ9hu0Wge2msBbODfottCSKgu8oKUrw4Opz+fDPVVHk=",
|
||||
"h1:Z5yXML2DE0uH9UU+M0ut9JMQAORcwVZz1CxBHzeBmao=",
|
||||
"h1:jqI2qKknpleS3JDSplyGYHMu0u9K/tor1ZOjFwDgEMk=",
|
||||
"h1:kgfutDh14Q5nw4eg6qGFamFxIiY8Ae0FPKRBLDOzpcI=",
|
||||
"h1:zCAO7GZmfYhWb+i6TfqlqhMeDyPZWGio2IzEzAh3YTs=",
|
||||
"zh:19be1a91c982b902c42aba47766860dfa5dc151eed1e95fd39ca642229381ef0",
|
||||
"zh:1de451c4d1ecf7efbe67b6dace3426ba810711afdd644b0f1b870364c8ae91f8",
|
||||
"zh:352b4a2120173298622e669258744554339d959ac3a95607b117a48ee4a83238",
|
||||
"zh:3c6f1346d9154afbd2d558fabb4b0150fc8d559aa961254144fe1bc17fe6032f",
|
||||
"zh:4c4c92d53fb535b1e0eff26f222bbd627b97d3b4c891ec9c321268676d06152f",
|
||||
"zh:53276f68006c9ceb7cdb10a6ccf91a5c1eadd1407a28edb5741e84e88d7e29e8",
|
||||
"zh:7925a97773948171a63d4f65bb81ee92fd6d07a447e36012977313293a5435c9",
|
||||
"zh:7dfb0a4496cfe032437386d0a2cd9229a1956e9c30bd920923c141b0f0440060",
|
||||
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
||||
"zh:89761c15908ccc2cf9c50bb5cb3be45d3ad0c45fc7c608c6b95f48c0288b7160",
|
||||
"zh:8cc5d7c5939da89cfd01f3e51c84f3576564783acea9db86bd9e32049805ed96",
|
||||
"zh:987cff8225b1dd436cdcb4fc6228689ae7e4281de6896412a2a9a3325c49f05e",
|
||||
"zh:991e83ebb89867d71e01a1c215ed159efb425683b0a44707be8579eb0a337f06",
|
||||
"zh:ab8177ae2d8f5cfa90043a6f867435012cae115f6061b832a7e2462e0ae87a67",
|
||||
"zh:d1ca34df1398f201274a6a18102975148c10ca15aa43cfc56cc9897620929509",
|
||||
"zh:d34946f70201baf6dda03e3b294c6bbe40d95d0278e97b9f636ded94822b24ac",
|
||||
"zh:8d4aa79f0a414bb4163d771063c70cd991c8fac6c766e685bac2ee12903c5bd6",
|
||||
"zh:a67540c13565616a7e7e51ee9366e88b0dc60046e1d75c72680e150bd02725bb",
|
||||
"zh:a936383a4767f5393f38f622e92bf2d0c03fe04b69c284951f27345766c7b31b",
|
||||
"zh:d4887d73c466ff036eecf50ad6404ba38fd82ea4855296b1846d244b0f13c380",
|
||||
"zh:e9093c8bd5b6cd99c81666e315197791781b8f93afa14fc2e0f732d1bb2a44b7",
|
||||
"zh:efd3b3f1ec59a37f635aa1d4efcf178734c2fcf8ddb0d56ea690bec342da8672",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ terraform {
|
||||
required_providers {
|
||||
cloudflare = {
|
||||
source = "cloudflare/cloudflare"
|
||||
version = "4.50.0"
|
||||
version = "4.52.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,37 +2,37 @@
|
||||
# Manual edits may be lost in future updates.
|
||||
|
||||
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
||||
version = "4.50.0"
|
||||
constraints = "4.50.0"
|
||||
version = "4.52.0"
|
||||
constraints = "4.52.0"
|
||||
hashes = [
|
||||
"h1:0qvD5ZKn2tMZ8cOjQrUSITIC9tKCZbrSaSswV9lOyiU=",
|
||||
"h1:4N0gplrZ0zOsJv3Kx1VfIx2FwrZHbYU0Un2yfiLZIGQ=",
|
||||
"h1:81AMQq4kNKU/35U8ElQegUxG4E6xB0erIjG5xVmjIyo=",
|
||||
"h1:EEQNADUmV3IL6x00yzy04i7OCSLeOMgM9XQkV3w71gA=",
|
||||
"h1:HD0KI7td6oiSSAnJNn8UPSGf+hKiTo4JVQYfAiU1SqM=",
|
||||
"h1:Hl+o5LtcvZg2f3l1hh9vaG/DFK6k+dTIZSeM0lXyfpo=",
|
||||
"h1:ZUO2oIJ6jtZdvl816h0cEIiIeZ/fFCF64+abGEVxZZM=",
|
||||
"h1:Zio80fnEeUKdlSOhTVskMEFSLUQ6TMsMKnXc+Dy2P2A=",
|
||||
"h1:aLLvg36evTyqjtXGV2MjAV8imktXFmry7p/xCu9GQC4=",
|
||||
"h1:azL05eWyy2V8SWkbZZImPWvv8ynG4eqmrbZhjXBDFug=",
|
||||
"h1:ckMysHY4fJmr7o58XMi+DdgOTB/U/Mf1u1JA9ly3g/I=",
|
||||
"h1:jxOwjDNjt5WCb4YjjiMsman91O8Y+MAPz6UwJ4a6F+0=",
|
||||
"h1:u4OfnjSLa4Wk1IUFAzrvMnGgr8MvRHEWVDHEScPK2E8=",
|
||||
"h1:wQkR1oeSkzlHn3rnVuLJRJLBHlg4EHt7Y64DeTjfkjQ=",
|
||||
"zh:0ef99ed39472a94e6a0d6fa733cf0a46bce3bf66eba2873efae8846efdddc237",
|
||||
"zh:2929cbbffcead171d45c88e4a7a59e9c013ea775dafa68b10da8db7cd04b6140",
|
||||
"zh:462601c87118088e1a718842e367af7d8e7620598d426980a6d6b33de759865e",
|
||||
"zh:56766eb62a74a9d88d9efb8486dd3a0c5c9db873d0a980ae9ef1e8af27d74231",
|
||||
"zh:6b4e8810d99498a5a20a5872982a0f1354e79cfc4a7dfe7cc656f1c7eaae47d8",
|
||||
"zh:6d65bdb4ec94b6eecc8abe26d94e2ca09262dc1e7a9934db829f418be0119920",
|
||||
"zh:71adeaf31e41a358ec6095004062e43f56ee7d4b2504e5613ab351d511695641",
|
||||
"h1:2BEJyXJtYC4B4nda/WCYUmuJYDaYk88F8t1pwPzr0iQ=",
|
||||
"h1:4IASk5SESeWKQ7JU0+M7KApuF5mZyklvwMXPBabim3c=",
|
||||
"h1:5ImZxxALSnWfH/4EXw/wFirSmk5Tr0ACmcysy51AafE=",
|
||||
"h1:6TJ3dxLSin4ZKBJLsZDn95H2ZYnGm8S7GGHvvXuuMQU=",
|
||||
"h1:IzTUjg9kQ4N3qizP9CjYLeHwjsuGgtxwXvfUQWyOLcA=",
|
||||
"h1:NTaOQfYINA0YTG/V1/9+SYtgX1it63+cBugj4WK4FWc=",
|
||||
"h1:PXH48LuJn329sCfMXprdMDk51EZaWFyajVvS03qhQLs=",
|
||||
"h1:Pi5M+GeoMSN2eJ6QnIeXjBf19O+rby/74CfB2ocpv20=",
|
||||
"h1:ShXZ2ZjBvm3thfoPPzPT8+OhyismnydQVkUAfI8X12w=",
|
||||
"h1:WQ9hu0Wge2msBbODfottCSKgu8oKUrw4Opz+fDPVVHk=",
|
||||
"h1:Z5yXML2DE0uH9UU+M0ut9JMQAORcwVZz1CxBHzeBmao=",
|
||||
"h1:jqI2qKknpleS3JDSplyGYHMu0u9K/tor1ZOjFwDgEMk=",
|
||||
"h1:kgfutDh14Q5nw4eg6qGFamFxIiY8Ae0FPKRBLDOzpcI=",
|
||||
"h1:zCAO7GZmfYhWb+i6TfqlqhMeDyPZWGio2IzEzAh3YTs=",
|
||||
"zh:19be1a91c982b902c42aba47766860dfa5dc151eed1e95fd39ca642229381ef0",
|
||||
"zh:1de451c4d1ecf7efbe67b6dace3426ba810711afdd644b0f1b870364c8ae91f8",
|
||||
"zh:352b4a2120173298622e669258744554339d959ac3a95607b117a48ee4a83238",
|
||||
"zh:3c6f1346d9154afbd2d558fabb4b0150fc8d559aa961254144fe1bc17fe6032f",
|
||||
"zh:4c4c92d53fb535b1e0eff26f222bbd627b97d3b4c891ec9c321268676d06152f",
|
||||
"zh:53276f68006c9ceb7cdb10a6ccf91a5c1eadd1407a28edb5741e84e88d7e29e8",
|
||||
"zh:7925a97773948171a63d4f65bb81ee92fd6d07a447e36012977313293a5435c9",
|
||||
"zh:7dfb0a4496cfe032437386d0a2cd9229a1956e9c30bd920923c141b0f0440060",
|
||||
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
||||
"zh:89761c15908ccc2cf9c50bb5cb3be45d3ad0c45fc7c608c6b95f48c0288b7160",
|
||||
"zh:8cc5d7c5939da89cfd01f3e51c84f3576564783acea9db86bd9e32049805ed96",
|
||||
"zh:987cff8225b1dd436cdcb4fc6228689ae7e4281de6896412a2a9a3325c49f05e",
|
||||
"zh:991e83ebb89867d71e01a1c215ed159efb425683b0a44707be8579eb0a337f06",
|
||||
"zh:ab8177ae2d8f5cfa90043a6f867435012cae115f6061b832a7e2462e0ae87a67",
|
||||
"zh:d1ca34df1398f201274a6a18102975148c10ca15aa43cfc56cc9897620929509",
|
||||
"zh:d34946f70201baf6dda03e3b294c6bbe40d95d0278e97b9f636ded94822b24ac",
|
||||
"zh:8d4aa79f0a414bb4163d771063c70cd991c8fac6c766e685bac2ee12903c5bd6",
|
||||
"zh:a67540c13565616a7e7e51ee9366e88b0dc60046e1d75c72680e150bd02725bb",
|
||||
"zh:a936383a4767f5393f38f622e92bf2d0c03fe04b69c284951f27345766c7b31b",
|
||||
"zh:d4887d73c466ff036eecf50ad6404ba38fd82ea4855296b1846d244b0f13c380",
|
||||
"zh:e9093c8bd5b6cd99c81666e315197791781b8f93afa14fc2e0f732d1bb2a44b7",
|
||||
"zh:efd3b3f1ec59a37f635aa1d4efcf178734c2fcf8ddb0d56ea690bec342da8672",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ terraform {
|
||||
required_providers {
|
||||
cloudflare = {
|
||||
source = "cloudflare/cloudflare"
|
||||
version = "4.50.0"
|
||||
version = "4.52.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
# See:
|
||||
#
|
||||
# WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose
|
||||
#
|
||||
# Make sure to use the docker-compose.yml of the current release:
|
||||
#
|
||||
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
|
||||
#
|
||||
# The compose file on main may not be compatible with the latest release.
|
||||
|
||||
# For development see:
|
||||
# - https://immich.app/docs/developer/setup
|
||||
# - https://immich.app/docs/developer/troubleshooting
|
||||
|
||||
@@ -107,7 +116,7 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
|
||||
image: redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
#
|
||||
# WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose
|
||||
#
|
||||
# Make sure to use the docker-compose.yml of the current release:
|
||||
#
|
||||
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
|
||||
#
|
||||
# The compose file on main may not be compatible with the latest release.
|
||||
|
||||
name: immich-prod
|
||||
|
||||
services:
|
||||
@@ -47,7 +56,7 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
|
||||
image: redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
@@ -91,7 +100,7 @@ services:
|
||||
container_name: immich_prometheus
|
||||
ports:
|
||||
- 9090:9090
|
||||
image: prom/prometheus@sha256:6559acbd5d770b15bb3c954629ce190ac3cbbdb2b7f1c30f0385c4e05104e218
|
||||
image: prom/prometheus@sha256:5888c188cf09e3f7eebc97369c3b2ce713e844cdbd88ccf36f5047c958aea120
|
||||
volumes:
|
||||
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
||||
- prometheus-data:/prometheus
|
||||
@@ -103,7 +112,7 @@ services:
|
||||
command: ['./run.sh', '-disable-reporting']
|
||||
ports:
|
||||
- 3000:3000
|
||||
image: grafana/grafana:11.4.0-ubuntu@sha256:afccec22ba0e4815cca1d2bf3836e414322390dc78d77f1851976ffa8d61051c
|
||||
image: grafana/grafana:11.5.1-ubuntu@sha256:9a4ab78cec1a2ec7d1ca5dfd5aacec6412706a1bc9e971fc7184e2f6696a63f5
|
||||
volumes:
|
||||
- grafana-data:/var/lib/grafana
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
#
|
||||
# WARNING: Make sure to use the docker-compose.yml of the current release:
|
||||
# WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose
|
||||
#
|
||||
# Make sure to use the docker-compose.yml of the current release:
|
||||
#
|
||||
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
|
||||
#
|
||||
# The compose file on main may not be compatible with the latest release.
|
||||
#
|
||||
|
||||
name: immich
|
||||
|
||||
@@ -48,7 +49,7 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
|
||||
image: docker.io/redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
|
||||
@@ -48,6 +48,7 @@ services:
|
||||
vaapi-wsl: # use this for VAAPI if you're running Immich in WSL2
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
- /dev/dxg:/dev/dxg
|
||||
volumes:
|
||||
- /usr/lib/wsl:/usr/lib/wsl
|
||||
environment:
|
||||
|
||||
@@ -1 +1 @@
|
||||
22.13.1
|
||||
22.14.0
|
||||
|
||||
@@ -77,9 +77,7 @@ docker start immich_postgres # Start Postgres server
|
||||
sleep 10 # Wait for Postgres server to start up
|
||||
docker exec -it immich_postgres bash # Enter the Docker shell and run the following command
|
||||
# Check the database user if you deviated from the default. If your backup ends in `.gz`, replace `cat` with `gunzip`
|
||||
cat < "/dump.sql" \
|
||||
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
|
||||
| psql --dbname=postgres --username=<DB_USERNAME> # Restore Backup
|
||||
cat < "/dump.sql" | sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" | psql --dbname=postgres --username=<DB_USERNAME>
|
||||
exit # Exit the Docker shell
|
||||
docker compose up -d # Start remainder of Immich apps
|
||||
```
|
||||
|
||||
@@ -70,4 +70,4 @@ When installing a new version of pgvecto.rs, you will need to manually update th
|
||||
|
||||
If you get the error `driverError: error: permission denied for view pg_vector_index_stat`, you can fix this by connecting to the Immich database and running `GRANT SELECT ON TABLE pg_vector_index_stat TO <immichdbusername>;`.
|
||||
|
||||
[vectors-install]: https://docs.pgvecto.rs/getting-started/installation.html
|
||||
[vectors-install]: https://docs.vectorchord.ai/getting-started/installation.html
|
||||
|
||||
@@ -50,19 +50,18 @@ The Immich CLI is an [npm](https://www.npmjs.com/) package that lets users contr
|
||||
|
||||
The Immich backend is divided into several services, which are run as individual docker containers.
|
||||
|
||||
1. `immich-server` - Handle and respond to REST API requests
|
||||
1. `immich-microservices` - Execute background jobs (thumbnail generation, metadata extraction, transcoding, etc.)
|
||||
1. `immich-server` - Handle and respond to REST API requests, execute background jobs (thumbnail generation, metadata extraction, transcoding, etc.)
|
||||
1. `immich-machine-learning` - Execute machine learning models
|
||||
1. `postgres` - Persistent data storage
|
||||
1. `redis`- Queue management for `immich-microservices`
|
||||
1. `redis`- Queue management for background jobs
|
||||
|
||||
### Immich Server
|
||||
|
||||
The Immich Server is a [TypeScript](https://www.typescriptlang.org/) project written for [Node.js](https://nodejs.org/). It uses the [Nest.js](https://nestjs.com) framework, with [TypeORM](https://typeorm.io/) for database management. The server codebase also loosely follows the [Hexagonal Architecture](<https://en.wikipedia.org/wiki/Hexagonal_architecture_(software)>). Specifically, we aim to separate technology specific implementations (`infra/`) from core business logic (`domain/`).
|
||||
The Immich Server is a [TypeScript](https://www.typescriptlang.org/) project written for [Node.js](https://nodejs.org/). It uses the [Nest.js](https://nestjs.com) framework, [Express](https://expressjs.com/) server, and the query builder [Kysely](https://kysely.dev/). The server codebase also loosely follows the [Hexagonal Architecture](<https://en.wikipedia.org/wiki/Hexagonal_architecture_(software)>). Specifically, we aim to separate technology specific implementations (`src/repositories`) from core business logic (`src/services`).
|
||||
|
||||
#### REST Endpoints
|
||||
### API Endpoints
|
||||
|
||||
The server is a list of HTTP endpoints and associated handlers (controllers). Each controller usually implements the following CRUD operations:
|
||||
An incoming HTTP request is mapped to a controller (`src/controllers`). Controllers are collections of HTTP endpoints. Each controller usually implements the following CRUD operations for its respective resource type:
|
||||
|
||||
- `POST` `/<type>` - **Create**
|
||||
- `GET` `/<type>` - **Read** (all)
|
||||
@@ -70,13 +69,13 @@ The server is a list of HTTP endpoints and associated handlers (controllers). Ea
|
||||
- `PUT` `/<type>/:id` - **Updated** (by id)
|
||||
- `DELETE` `/<type>/:id` - **Delete** (by id)
|
||||
|
||||
#### DTOs
|
||||
### Domain Transfer Objects (DTOs)
|
||||
|
||||
The server uses [Domain Transfer Objects](https://en.wikipedia.org/wiki/Data_transfer_object) as public interfaces for the inputs (query, params, and body) and outputs (response) for each endpoint. DTOs translate to [OpenAPI](./open-api.md) schemas and control the generated code used by each client.
|
||||
|
||||
### Microservices
|
||||
### Background Jobs
|
||||
|
||||
The Immich Microservices image uses the same `Dockerfile` as the Immich Server, but with a different entrypoint. The Immich Microservices service mainly handles executing jobs, which include the following:
|
||||
Immich uses a [worker](https://github.com/immich-app/immich/blob/main/server/src/utils/misc.ts#L266) to run background jobs. These jobs include:
|
||||
|
||||
- Thumbnail Generation
|
||||
- Metadata Extraction
|
||||
|
||||
@@ -76,7 +76,7 @@ To see local changes to `@immich/ui` in Immich, do the following:
|
||||
|
||||
### Mobile app
|
||||
|
||||
The mobile app `(/mobile)` will required Flutter toolchain 3.13.x to be installed on your system.
|
||||
The mobile app `(/mobile)` will required Flutter toolchain 3.13.x and FVM to be installed on your system.
|
||||
|
||||
Please refer to the [Flutter's official documentation](https://flutter.dev/docs/get-started/install) for more information on setting up the toolchain on your machine.
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ If your photos are on a network drive, automatic file watching likely won't work
|
||||
|
||||
#### Troubleshooting
|
||||
|
||||
If you encounter an `ENOSPC` error, you need to increase your file watcher limit. In sysctl, this key is called `fs.inotify.max_user_watched` and has a default value of 8192. Increase this number to a suitable value greater than the number of files you will be watching. Note that Immich has to watch all files in your import paths including any ignored files.
|
||||
If you encounter an `ENOSPC` error, you need to increase your file watcher limit. In sysctl, this key is called `fs.inotify.max_user_watches` and has a default value of 8192. Increase this number to a suitable value greater than the number of files you will be watching. Note that Immich has to watch all files in your import paths including any ignored files.
|
||||
|
||||
```
|
||||
ERROR [LibraryService] Library watcher for library c69faf55-f96d-4aa0-b83b-2d80cbc27d98 encountered error: Error: ENOSPC: System limit for number of file watchers reached, watch '/media/photo.jpg'
|
||||
@@ -111,11 +111,10 @@ These actions must be performed by the Immich administrator.
|
||||
- Click on Administration -> Libraries
|
||||
- Click on Create External Library
|
||||
- Select which user owns the library, this can not be changed later
|
||||
- Enter `/mnt/media/christmas-trip` then click Add
|
||||
- Click on Save
|
||||
- Click the drop-down menu on the newly created library
|
||||
- Click on Rename Library and rename it to "Christmas Trip"
|
||||
- Click Edit Import Paths
|
||||
- Click on Add Path
|
||||
- Enter `/mnt/media/christmas-trip` then click Add
|
||||
|
||||
NOTE: We have to use the `/mnt/media/christmas-trip` path and not the `/mnt/nas/christmas-trip` path since all paths have to be what the Docker containers see.
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ You do not need to redo any machine learning jobs after enabling hardware accele
|
||||
|
||||
- ARM NN (Mali)
|
||||
- CUDA (NVIDIA GPUs with [compute capability](https://developer.nvidia.com/cuda-gpus) 5.2 or higher)
|
||||
- OpenVINO (Intel discrete GPUs such as Iris Xe and Arc)
|
||||
- OpenVINO (Intel GPUs such as Iris Xe and Arc)
|
||||
|
||||
## Limitations
|
||||
|
||||
@@ -43,8 +43,9 @@ You do not need to redo any machine learning jobs after enabling hardware accele
|
||||
|
||||
#### OpenVINO
|
||||
|
||||
- The server must have a discrete GPU, i.e. Iris Xe or Arc. Expect issues when attempting to use integrated graphics.
|
||||
- Integrated GPUs are more likely to experience issues than discrete GPUs, especially for older processors or servers with low RAM.
|
||||
- Ensure the server's kernel version is new enough to use the device for hardware accceleration.
|
||||
- Expect higher RAM usage when using OpenVINO compared to CPU processing.
|
||||
|
||||
## Setup
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ The filters smart search allows you to search by include:
|
||||
- Not in any album
|
||||
- Archived
|
||||
- Favorited
|
||||
- Rating
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="Computer" label="Computer" default>
|
||||
|
||||
@@ -8,22 +8,23 @@ For the full list, refer to the [Immich source code](https://github.com/immich-a
|
||||
|
||||
## Image formats
|
||||
|
||||
| Format | Extension(s) | Supported? | Notes |
|
||||
| :-------- | :---------------------------- | :----------------: | :-------------- |
|
||||
| `AVIF` | `.avif` | :white_check_mark: | |
|
||||
| `BMP` | `.bmp` | :white_check_mark: | |
|
||||
| `GIF` | `.gif` | :white_check_mark: | |
|
||||
| `HEIC` | `.heic` | :white_check_mark: | |
|
||||
| `HEIF` | `.heif` | :white_check_mark: | |
|
||||
| `JPEG` | `.webp` `.jpg` `.jpe` `.insp` | :white_check_mark: | |
|
||||
| `JPEG XL` | `.jxl` | :white_check_mark: | |
|
||||
| `PNG` | `.webp` | :white_check_mark: | |
|
||||
| `PSD` | `.psd` | :white_check_mark: | Adobe Photoshop |
|
||||
| `RAW` | `.raw` | :white_check_mark: | |
|
||||
| `RW2` | `.rw2` | :white_check_mark: | |
|
||||
| `SVG` | `.svg` | :white_check_mark: | |
|
||||
| `TIFF` | `.tif` `.tiff` | :white_check_mark: | |
|
||||
| `WEBP` | `.webp` | :white_check_mark: | |
|
||||
| Format | Extension(s) | Supported? | Notes |
|
||||
| :---------- | :---------------------------- | :----------------: | :-------------- |
|
||||
| `AVIF` | `.avif` | :white_check_mark: | |
|
||||
| `BMP` | `.bmp` | :white_check_mark: | |
|
||||
| `GIF` | `.gif` | :white_check_mark: | |
|
||||
| `HEIC` | `.heic` | :white_check_mark: | |
|
||||
| `HEIF` | `.heif` | :white_check_mark: | |
|
||||
| `JPEG 2000` | `.jp2` | :white_check_mark: | |
|
||||
| `JPEG` | `.webp` `.jpg` `.jpe` `.insp` | :white_check_mark: | |
|
||||
| `JPEG XL` | `.jxl` | :white_check_mark: | |
|
||||
| `PNG` | `.webp` | :white_check_mark: | |
|
||||
| `PSD` | `.psd` | :white_check_mark: | Adobe Photoshop |
|
||||
| `RAW` | `.raw` | :white_check_mark: | |
|
||||
| `RW2` | `.rw2` | :white_check_mark: | |
|
||||
| `SVG` | `.svg` | :white_check_mark: | |
|
||||
| `TIFF` | `.tif` `.tiff` | :white_check_mark: | |
|
||||
| `WEBP` | `.webp` | :white_check_mark: | |
|
||||
|
||||
## Video formats
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ This guide explains how to store generated and raw files with docker's volume mo
|
||||
It is important to remember to update the backup settings after following the guide to back up the new backup paths if using automatic backup tools, especially `profile/`.
|
||||
:::
|
||||
|
||||
In our `.env` file, we will define variables that will help us in the future when we want to move to a more advanced server
|
||||
In our `.env` file, we will define the paths we want to use. Note that you don't have to define all of these: UPLOAD_LOCATION will be the base folder that files are stored in by default, with the other paths acting as overrides.
|
||||
|
||||
```diff title=".env"
|
||||
# You can find documentation for all the supported environment variables [here](/docs/install/environment-variables)
|
||||
@@ -21,7 +21,7 @@ In our `.env` file, we will define variables that will help us in the future whe
|
||||
...
|
||||
```
|
||||
|
||||
After defining the locations of these files, we will edit the `docker-compose.yml` file accordingly and add the new variables to the `immich-server` container.
|
||||
After defining the locations of these files, we will edit the `docker-compose.yml` file accordingly and add the new variables to the `immich-server` container. These paths are where the mount attaches inside of the container, so don't change those.
|
||||
|
||||
```diff title="docker-compose.yml"
|
||||
services:
|
||||
@@ -35,7 +35,8 @@ services:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
```
|
||||
|
||||
Restart Immich to register the changes.
|
||||
After making this change, you have to move the files over to the new folders to make sure Immich can find everything it needs. If you haven't uploaded anything important yet, you can also reset Immich entirely by deleting the database folder.
|
||||
Then restart Immich to register the changes:
|
||||
|
||||
```
|
||||
docker compose up -d
|
||||
|
||||
@@ -27,6 +27,10 @@ SELECT * FROM "assets" WHERE "originalPath" = 'upload/library/admin/2023/2023-09
|
||||
SELECT * FROM "assets" WHERE "originalPath" LIKE 'upload/library/admin/2023/%';
|
||||
```
|
||||
|
||||
```sql title="Find by ID"
|
||||
SELECT * FROM "assets" WHERE "id" = '9f94e60f-65b6-47b7-ae44-a4df7b57f0e9';
|
||||
```
|
||||
|
||||
:::note
|
||||
You can calculate the checksum for a particular file by using the command `sha1sum <filename>`.
|
||||
:::
|
||||
|
||||
76
docs/docs/install/synology.md
Normal file
76
docs/docs/install/synology.md
Normal file
@@ -0,0 +1,76 @@
|
||||
---
|
||||
sidebar_position: 85
|
||||
---
|
||||
|
||||
# Synology [Community]
|
||||
|
||||
:::note
|
||||
This is a community contribution and not officially supported by the Immich team, but included here for convenience.
|
||||
|
||||
Community support can be found in the dedicated channel on the [Discord Server](https://discord.immich.app/).
|
||||
|
||||
**Please report app issues to the corresponding [Github Repository](https://github.com/truenas/charts/tree/master/community/immich).**
|
||||
:::
|
||||
|
||||
Immich can easily be installed on a Synology NAS using Container Manager within DSM. If you have not installed Container Manager already, you can install it in the Packages Center. Refer to the [Container Manager docs](https://kb.synology.com/en-us/DSM/help/ContainerManager/docker_desc?version=7) for more information on using Container Manager.
|
||||
|
||||
## Step 1 - Download the required files
|
||||
|
||||
Create a directory of your choice (e.g. `./immich-app`) to house Immich. In general, it's a best practice to have all Docker-based applications running under the `./docker` directory, so in this case, your directory structure will look like `./docker/immich-app`.
|
||||
|
||||
Now create a `./postgres` and `./library` directory as sub-directories of the `./docker/immich-app`.
|
||||
|
||||
When you're all done, you should have the following:
|
||||
|
||||
- `./docker/immich-app/postgres`
|
||||
- `./docker/immich-app/library`
|
||||
|
||||
Download [`docker-compose.yml`](https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml) and [`example.env`](https://github.com/immich-app/immich/releases/latest/download/example.env) to your computer. Upload the files to the `./docker/immich-app` directory.
|
||||
|
||||
## Step 2 - Populate the .env file with custom values
|
||||
|
||||
Follow [Step 2 in Docker Compose](./docker-compose#step-2---populate-the-env-file-with-custom-values) for instructions on customizing the `.env` file, and then return back to this guide to continue.
|
||||
|
||||
## Step 3 - Create a new project in Container Manager
|
||||
|
||||
Open Container Manager, and select the "**Project**" action on the left navigation bar and then click "**Create**".
|
||||

|
||||
|
||||
In the settings of your new project, set "**Project name**" to a name you'll remember, such as _immich-app_. When setting the "**Path**", select the `./docker/immich-app` directory you created earlier. Doing so will prompt a message to use the existing `docker-compose.yml` already present in the directory for your project. Click "**OK**" to continue.
|
||||
|
||||

|
||||
|
||||
The following screen will give you the option to further customize your `docker-compose.yml` file, giving you a warning regarding the `start_interval` property. Under the `healthcheck` heading, remove the `start_interval: 30s` completely and click "**Next**".
|
||||
|
||||

|
||||
|
||||
Skip the section asking to set-up a portal for Web Station, and then complete the wizard which will build and start the containers for your project.
|
||||
|
||||
Once your containers are successfully running, navigate to the "**Container**" section of Container Manager, right-click on the "**immich-server**" container, and choose the "**Details**".
|
||||
|
||||
Scroll to the bottom of the "**Details**" section, and find the `IP Address` of the container, located in the `Network` section. Take note of the container's IP address as you will need it for **Step 4**.
|
||||
|
||||

|
||||
|
||||
## Step 4 - Configure Firewall Settings
|
||||
|
||||
Once your project completes the build process, your containers will start. In order to be able to access Immich from your browser, you need to configure the firewall settings for your Synology NAS.
|
||||
|
||||
Open "**Control Panel**" on your Synology NAS, and select "**Security**". Navigate to "**Firewall**"
|
||||
|
||||

|
||||
|
||||
Click "**Edit Rules**" and add the following firewall rules:
|
||||
|
||||
- Add a "**Source IP**" rule for the IP address of your container that you obtained in Step 3 above
|
||||
- Add a "**Ports**" rule for the port specified in the `docker-compose.yml`, which should be `2283`
|
||||
|
||||
## Next Steps
|
||||
|
||||
Read the [Post Installation](/docs/install/post-install.mdx) steps or setup optional features below.
|
||||
|
||||
### Setting up optional features
|
||||
|
||||
- [External Libraries](/docs/features/libraries.md): Adding your existing photo library to Immich
|
||||
- [Hardware Transcoding](/docs/features/hardware-transcoding.md): Speeding up video transcoding
|
||||
- [Hardware-Accelerated Machine Learning](/docs/features/ml-hardware-acceleration.md): Speeding up various machine learning tasks in Immich
|
||||
@@ -41,7 +41,7 @@ className="border rounded-xl"
|
||||
:::info Permissions
|
||||
The **pgData** dataset must be owned by the user `netdata` (UID 999) for postgres to start. The other datasets must be owned by the user `root` (UID 0) or a group that includes the user `root` (UID 0) for immich to have the necessary permissions.
|
||||
|
||||
If the **library** dataset uses ACL it must have [ACL mode](https://www.truenas.com/docs/core/coretutorials/storage/pools/permissions/#access-control-lists) set to `Passthrough` if you plan on using a [storage template](/docs/administration/storage-template.mdx) and the dataset is configured for network sharing (its ACL type is set to `SMB/NFSv4`). When the template is applied and files need to be moved from **upload** to **library**, immich performs `chmod` internally and needs to be allowed to execute the command. [More info.](https://github.com/immich-app/immich/pull/13017)
|
||||
If the **library** dataset uses ACL it must have [ACL mode](https://www.truenas.com/docs/core/coretutorials/storage/pools/permissions/#access-control-lists) set to `Passthrough` if you plan on using a [storage template](/docs/administration/storage-template.mdx) and the dataset is configured for network sharing (its ACL type is set to `SMB/NFSv4`). When the template is applied and files need to be moved from **upload** to **library**, Immich performs `chmod` internally and needs to be allowed to execute the command. [More info.](https://github.com/immich-app/immich/pull/13017)
|
||||
:::
|
||||
|
||||
## Installing the Immich Application
|
||||
@@ -160,6 +160,10 @@ The image above has example values.
|
||||
|
||||
### Additional Storage [(External Libraries)](/docs/features/libraries)
|
||||
|
||||
:::danger Advanced Users Only
|
||||
This feature should only be used by advanced users. If this is your first time installing Immich, then DO NOT mount an external library until you have a working setup. Also, your mount path MUST be something unique and should NOT be your library or upload location or a Linux directory like `/lib`. The picture below shows a valid example.
|
||||
:::
|
||||
|
||||
<img
|
||||
src={require('./img/truenas10.webp').default}
|
||||
width="40%"
|
||||
@@ -168,7 +172,7 @@ className="border rounded-xl"
|
||||
/>
|
||||
|
||||
You may configure [External Libraries](/docs/features/libraries) by mounting them using **Additional Storage**.
|
||||
The **Mount Path** is the loaction you will need to copy and paste into the External Library settings within Immich.
|
||||
The **Mount Path** is the location you will need to copy and paste into the External Library settings within Immich.
|
||||
The **Host Path** is the location on the TrueNAS SCALE server where your external library is located.
|
||||
|
||||
<!-- A section for Labels would go here but I don't know what they do. -->
|
||||
|
||||
@@ -72,7 +72,7 @@ alt="Select Plugins > Compose.Manager > Add New Stack > Label it Immich"
|
||||
</ul>
|
||||
</details>
|
||||
|
||||
5. Click "**Save Changes**", you will be promoted to edit stack UI labels, just leave this blank and click "**Ok**"
|
||||
5. Click "**Save Changes**", you will be prompted to edit stack UI labels, just leave this blank and click "**Ok**"
|
||||
6. Select the cog ⚙️ next to Immich, click "**Edit Stack**", then click "**Env File**"
|
||||
7. Paste the entire contents of the [Immich example.env](https://github.com/immich-app/immich/releases/latest/download/example.env) file into the Unraid editor, then **before saving** edit the following:
|
||||
|
||||
|
||||
@@ -110,9 +110,9 @@ const config = {
|
||||
label: 'API',
|
||||
},
|
||||
{
|
||||
to: '/blog',
|
||||
href: 'https://immich.store',
|
||||
position: 'right',
|
||||
label: 'Blog',
|
||||
label: 'Merch',
|
||||
},
|
||||
{
|
||||
href: 'https://github.com/immich-app/immich',
|
||||
|
||||
21
docs/package-lock.json
generated
21
docs/package-lock.json
generated
@@ -28,6 +28,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "~3.7.0",
|
||||
"@docusaurus/tsconfig": "^3.7.0",
|
||||
"@docusaurus/types": "^3.7.0",
|
||||
"prettier": "^3.2.4",
|
||||
"typescript": "^5.1.6"
|
||||
},
|
||||
@@ -3698,6 +3700,13 @@
|
||||
"node": ">=18.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@docusaurus/tsconfig": {
|
||||
"version": "3.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.7.0.tgz",
|
||||
"integrity": "sha512-vRsyj3yUZCjscgfgcFYjIsTcAru/4h4YH2/XAE8Rs7wWdnng98PgWKvP5ovVc4rmRpRg2WChVW0uOy2xHDvDBQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@docusaurus/types": {
|
||||
"version": "3.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
|
||||
@@ -14061,9 +14070,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.5.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
|
||||
"integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
|
||||
"version": "8.5.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz",
|
||||
"integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@@ -15725,9 +15734,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/prettier": {
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
|
||||
"integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
|
||||
"version": "3.5.1",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz",
|
||||
"integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
|
||||
@@ -36,6 +36,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "~3.7.0",
|
||||
"@docusaurus/tsconfig": "^3.7.0",
|
||||
"@docusaurus/types": "^3.7.0",
|
||||
"prettier": "^3.2.4",
|
||||
"typescript": "^5.1.6"
|
||||
},
|
||||
@@ -55,6 +57,6 @@
|
||||
"node": ">=20"
|
||||
},
|
||||
"volta": {
|
||||
"node": "22.13.1"
|
||||
"node": "22.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,6 +53,11 @@ const guides: CommunityGuidesProps[] = [
|
||||
description: 'How to configure an existing fail2ban installation to block incorrect login attempts.',
|
||||
url: 'https://github.com/immich-app/immich/discussions/3243#discussioncomment-6681948',
|
||||
},
|
||||
{
|
||||
title: 'Immich remote access with NordVPN Meshnet',
|
||||
description: 'Access Immich with an end-to-end encrypted connection.',
|
||||
url: 'https://meshnet.nordvpn.com/how-to/remote-files-media-access/immich-remote-access',
|
||||
},
|
||||
];
|
||||
|
||||
function CommunityGuide({ title, description, url }: CommunityGuidesProps): JSX.Element {
|
||||
|
||||
@@ -99,6 +99,11 @@ const projects: CommunityProjectProps[] = [
|
||||
description: 'Downloads a configurable number of random photos based on people or album ID.',
|
||||
url: 'https://github.com/jon6fingrs/immich-dl',
|
||||
},
|
||||
{
|
||||
title: 'Immich Upload Optimizer',
|
||||
description: 'Automatically optimize files uploaded to Immich in order to save storage space',
|
||||
url: 'https://github.com/miguelangel-nubla/immich-upload-optimizer',
|
||||
},
|
||||
];
|
||||
|
||||
function CommunityProject({ title, description, url }: CommunityProjectProps): JSX.Element {
|
||||
|
||||
@@ -24,10 +24,13 @@ export default function VersionSwitcher(): JSX.Element {
|
||||
{ label: 'Next', url: 'https://main.preview.immich.app' },
|
||||
{ label: 'Latest', url: 'https://immich.app' },
|
||||
...archiveVersions,
|
||||
];
|
||||
].map(({ label, url }) => ({
|
||||
label,
|
||||
url: new URL(url),
|
||||
}));
|
||||
setVersions(allVersions);
|
||||
|
||||
const activeVersion = allVersions.find((version) => new URL(version.url).origin === window.location.origin);
|
||||
const activeVersion = allVersions.find((version) => version.url.origin === window.location.origin);
|
||||
if (activeVersion) {
|
||||
setLabel(activeVersion.label);
|
||||
}
|
||||
@@ -44,12 +47,12 @@ export default function VersionSwitcher(): JSX.Element {
|
||||
return (
|
||||
versions.length > 0 && (
|
||||
<DropdownNavbarItem
|
||||
className="navbar__item"
|
||||
className="version-switcher-34ab39"
|
||||
label={label}
|
||||
mobile={windowSize === 'mobile'}
|
||||
items={versions.map(({ label, url }) => ({
|
||||
label,
|
||||
to: url,
|
||||
to: new URL(location.pathname + location.search + location.hash, url).href,
|
||||
target: '_self',
|
||||
}))}
|
||||
/>
|
||||
|
||||
@@ -75,6 +75,11 @@ div[class^='announcementBar_'] {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* workaround for version switcher PR 15894 */
|
||||
div[class*='navbar__items'] > li:has(a[class*='version-switcher-34ab39']) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
code {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
@@ -50,6 +50,13 @@ function HomepageHeader() {
|
||||
>
|
||||
Demo
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
className="flex place-items-center place-content-center py-3 px-8 border bg-immich-primary/10 dark:bg-gray-300 rounded-xl hover:no-underline text-immich-primary dark:text-immich-dark-bg font-bold uppercase"
|
||||
to="https://immich.store"
|
||||
>
|
||||
Buy Merch
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className="my-12 flex gap-1 font-medium place-items-center place-content-center text-immich-primary dark:text-immich-dark-primary">
|
||||
|
||||
46
docs/static/archived-versions.json
vendored
46
docs/static/archived-versions.json
vendored
@@ -1,4 +1,20 @@
|
||||
[
|
||||
{
|
||||
"label": "v1.127.0",
|
||||
"url": "https://v1.127.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.126.1",
|
||||
"url": "https://v1.126.1.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.126.0",
|
||||
"url": "https://v1.126.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.125.7",
|
||||
"url": "https://v1.125.7.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.125.6",
|
||||
"url": "https://v1.125.6.archive.immich.app"
|
||||
@@ -7,10 +23,6 @@
|
||||
"label": "v1.125.5",
|
||||
"url": "https://v1.125.5.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.125.4",
|
||||
"url": "https://v1.125.4.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.125.3",
|
||||
"url": "https://v1.125.3.archive.immich.app"
|
||||
@@ -23,10 +35,6 @@
|
||||
"label": "v1.125.1",
|
||||
"url": "https://v1.125.1.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.125.0",
|
||||
"url": "https://v1.125.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.124.2",
|
||||
"url": "https://v1.124.2.archive.immich.app"
|
||||
@@ -189,46 +197,46 @@
|
||||
},
|
||||
{
|
||||
"label": "v1.105.1",
|
||||
"url": "https://v1.105.1.archive.immich.app/"
|
||||
"url": "https://v1.105.1.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.105.0",
|
||||
"url": "https://v1.105.0.archive.immich.app/"
|
||||
"url": "https://v1.105.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.104.0",
|
||||
"url": "https://v1.104.0.archive.immich.app/"
|
||||
"url": "https://v1.104.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.103.1",
|
||||
"url": "https://v1.103.1.archive.immich.app/"
|
||||
"url": "https://v1.103.1.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.103.0",
|
||||
"url": "https://v1.103.0.archive.immich.app/"
|
||||
"url": "https://v1.103.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.102.3",
|
||||
"url": "https://v1.102.3.archive.immich.app/"
|
||||
"url": "https://v1.102.3.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.102.2",
|
||||
"url": "https://v1.102.2.archive.immich.app/"
|
||||
"url": "https://v1.102.2.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.102.1",
|
||||
"url": "https://v1.102.1.archive.immich.app/"
|
||||
"url": "https://v1.102.1.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.102.0",
|
||||
"url": "https://v1.102.0.archive.immich.app/"
|
||||
"url": "https://v1.102.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.101.0",
|
||||
"url": "https://v1.101.0.archive.immich.app/"
|
||||
"url": "https://v1.101.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.100.0",
|
||||
"url": "https://v1.100.0.archive.immich.app/"
|
||||
"url": "https://v1.100.0.archive.immich.app"
|
||||
}
|
||||
]
|
||||
|
||||
BIN
docs/static/img/synology-container-manager-container-details.png
vendored
Normal file
BIN
docs/static/img/synology-container-manager-container-details.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 164 KiB |
BIN
docs/static/img/synology-container-manager-create-project.png
vendored
Normal file
BIN
docs/static/img/synology-container-manager-create-project.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 112 KiB |
BIN
docs/static/img/synology-container-manager-customize-docker-compose.png
vendored
Normal file
BIN
docs/static/img/synology-container-manager-customize-docker-compose.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
BIN
docs/static/img/synology-container-manager-set-path.png
vendored
Normal file
BIN
docs/static/img/synology-container-manager-set-path.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
BIN
docs/static/img/synology-firewall-rules.png
vendored
Normal file
BIN
docs/static/img/synology-firewall-rules.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 81 KiB |
@@ -1,9 +1,8 @@
|
||||
{
|
||||
// This file is not used in compilation. It is here just for a nice editor experience.
|
||||
"extends": "@tsconfig/docusaurus/tsconfig.json",
|
||||
"extends": "@docusaurus/tsconfig",
|
||||
|
||||
"compilerOptions": {
|
||||
"baseUrl": ".",
|
||||
"module": "Node16"
|
||||
"baseUrl": "."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
22.13.1
|
||||
22.14.0
|
||||
|
||||
@@ -34,7 +34,7 @@ services:
|
||||
- 2285:2285
|
||||
|
||||
redis:
|
||||
image: redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
|
||||
image: redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
|
||||
|
||||
database:
|
||||
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
|
||||
|
||||
868
e2e/package-lock.json
generated
868
e2e/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "immich-e2e",
|
||||
"version": "1.125.6",
|
||||
"version": "1.127.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"type": "module",
|
||||
@@ -25,7 +25,7 @@
|
||||
"@immich/sdk": "file:../open-api/typescript-sdk",
|
||||
"@playwright/test": "^1.44.1",
|
||||
"@types/luxon": "^3.4.2",
|
||||
"@types/node": "^22.10.9",
|
||||
"@types/node": "^22.13.4",
|
||||
"@types/oidc-provider": "^8.5.1",
|
||||
"@types/pg": "^8.11.0",
|
||||
"@types/pngjs": "^6.0.4",
|
||||
@@ -53,6 +53,6 @@
|
||||
"vitest": "^3.0.0"
|
||||
},
|
||||
"volta": {
|
||||
"node": "22.13.1"
|
||||
"node": "22.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -701,6 +701,20 @@ describe('/asset', () => {
|
||||
expect(status).toEqual(200);
|
||||
});
|
||||
|
||||
it('should set the negative rating', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.put(`/assets/${user1Assets[0].id}`)
|
||||
.set('Authorization', `Bearer ${user1.accessToken}`)
|
||||
.send({ rating: -1 });
|
||||
expect(body).toMatchObject({
|
||||
id: user1Assets[0].id,
|
||||
exifInfo: expect.objectContaining({
|
||||
rating: -1,
|
||||
}),
|
||||
});
|
||||
expect(status).toEqual(200);
|
||||
});
|
||||
|
||||
it('should reject invalid rating', async () => {
|
||||
for (const test of [{ rating: 7 }, { rating: 3.5 }, { rating: null }]) {
|
||||
const { status, body } = await request(app)
|
||||
|
||||
86
e2e/src/api/specs/jobs.e2e-spec.ts
Normal file
86
e2e/src/api/specs/jobs.e2e-spec.ts
Normal file
@@ -0,0 +1,86 @@
|
||||
import { JobCommand, JobName, LoginResponseDto } from '@immich/sdk';
|
||||
import { readFile } from 'node:fs/promises';
|
||||
import { basename } from 'node:path';
|
||||
import { errorDto } from 'src/responses';
|
||||
import { app, testAssetDir, utils } from 'src/utils';
|
||||
import request from 'supertest';
|
||||
import { afterEach, beforeAll, describe, expect, it } from 'vitest';
|
||||
|
||||
describe('/jobs', () => {
|
||||
let admin: LoginResponseDto;
|
||||
|
||||
beforeAll(async () => {
|
||||
await utils.resetDatabase();
|
||||
admin = await utils.adminSetup({ onboarding: false });
|
||||
});
|
||||
|
||||
describe('PUT /jobs', () => {
|
||||
afterEach(async () => {
|
||||
await utils.jobCommand(admin.accessToken, JobName.MetadataExtraction, {
|
||||
command: JobCommand.Resume,
|
||||
force: false,
|
||||
});
|
||||
});
|
||||
|
||||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).put('/jobs/metadataExtraction');
|
||||
expect(status).toBe(401);
|
||||
expect(body).toEqual(errorDto.unauthorized);
|
||||
});
|
||||
|
||||
it('should queue metadata extraction for missing assets', async () => {
|
||||
const path1 = `${testAssetDir}/formats/raw/Nikon/D700/philadelphia.nef`;
|
||||
const path2 = `${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`;
|
||||
|
||||
await utils.createAsset(admin.accessToken, {
|
||||
assetData: { bytes: await readFile(path1), filename: basename(path1) },
|
||||
});
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
|
||||
await utils.jobCommand(admin.accessToken, JobName.MetadataExtraction, {
|
||||
command: JobCommand.Pause,
|
||||
force: false,
|
||||
});
|
||||
|
||||
const { id } = await utils.createAsset(admin.accessToken, {
|
||||
assetData: { bytes: await readFile(path2), filename: basename(path2) },
|
||||
});
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
|
||||
{
|
||||
const asset = await utils.getAssetInfo(admin.accessToken, id);
|
||||
|
||||
expect(asset.exifInfo).toBeDefined();
|
||||
expect(asset.exifInfo?.make).toBeNull();
|
||||
}
|
||||
|
||||
await utils.jobCommand(admin.accessToken, JobName.MetadataExtraction, {
|
||||
command: JobCommand.Empty,
|
||||
force: false,
|
||||
});
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
|
||||
await utils.jobCommand(admin.accessToken, JobName.MetadataExtraction, {
|
||||
command: JobCommand.Resume,
|
||||
force: false,
|
||||
});
|
||||
|
||||
await utils.jobCommand(admin.accessToken, JobName.MetadataExtraction, {
|
||||
command: JobCommand.Start,
|
||||
force: false,
|
||||
});
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
|
||||
{
|
||||
const asset = await utils.getAssetInfo(admin.accessToken, id);
|
||||
|
||||
expect(asset.exifInfo).toBeDefined();
|
||||
expect(asset.exifInfo?.make).toBe('NIKON CORPORATION');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,4 +1,4 @@
|
||||
import { LibraryResponseDto, LoginResponseDto, getAllLibraries, scanLibrary } from '@immich/sdk';
|
||||
import { LibraryResponseDto, LoginResponseDto, getAllLibraries } from '@immich/sdk';
|
||||
import { cpSync, existsSync, rmSync, unlinkSync } from 'node:fs';
|
||||
import { Socket } from 'socket.io-client';
|
||||
import { userDto, uuidDto } from 'src/fixtures';
|
||||
@@ -8,8 +8,6 @@ import request from 'supertest';
|
||||
import { utimes } from 'utimes';
|
||||
import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'vitest';
|
||||
|
||||
const scan = async (accessToken: string, id: string) => scanLibrary({ id }, { headers: asBearerAuth(accessToken) });
|
||||
|
||||
describe('/libraries', () => {
|
||||
let admin: LoginResponseDto;
|
||||
let user: LoginResponseDto;
|
||||
@@ -298,6 +296,8 @@ describe('/libraries', () => {
|
||||
expect(status).toBe(204);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, {
|
||||
originalPath: `${testAssetDirInternal}/temp/directoryA/assetA.png`,
|
||||
@@ -312,15 +312,7 @@ describe('/libraries', () => {
|
||||
importPaths: [`${testAssetDirInternal}/temp/directoryA`],
|
||||
});
|
||||
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'thumbnailGeneration');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, {
|
||||
originalPath: `${testAssetDirInternal}/temp/directoryA/assetA.png`,
|
||||
@@ -340,13 +332,7 @@ describe('/libraries', () => {
|
||||
exclusionPatterns: ['**/directoryA'],
|
||||
});
|
||||
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -360,13 +346,7 @@ describe('/libraries', () => {
|
||||
importPaths: [`${testAssetDirInternal}/temp/directoryA`, `${testAssetDirInternal}/temp/directoryB`],
|
||||
});
|
||||
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -385,13 +365,7 @@ describe('/libraries', () => {
|
||||
utils.createImageFile(`${testAssetDir}/temp/folder, a/assetA.png`);
|
||||
utils.createImageFile(`${testAssetDir}/temp/folder, b/assetB.png`);
|
||||
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -413,13 +387,7 @@ describe('/libraries', () => {
|
||||
utils.createImageFile(`${testAssetDir}/temp/folder{ a/assetA.png`);
|
||||
utils.createImageFile(`${testAssetDir}/temp/folder} b/assetB.png`);
|
||||
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -471,13 +439,7 @@ describe('/libraries', () => {
|
||||
utils.createImageFile(`${testAssetDir}/temp/folder${char}1/asset1.png`);
|
||||
utils.createImageFile(`${testAssetDir}/temp/folder${char}2/asset2.png`);
|
||||
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -501,23 +463,12 @@ describe('/libraries', () => {
|
||||
utils.createImageFile(`${testAssetDir}/temp/reimport/asset.jpg`);
|
||||
await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_000);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
cpSync(`${testAssetDir}/albums/nature/tanners_ridge.jpg`, `${testAssetDir}/temp/reimport/asset.jpg`);
|
||||
await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_001);
|
||||
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, {
|
||||
libraryId: library.id,
|
||||
@@ -548,21 +499,12 @@ describe('/libraries', () => {
|
||||
utils.createImageFile(`${testAssetDir}/temp/reimport/asset.jpg`);
|
||||
await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_000);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
cpSync(`${testAssetDir}/albums/nature/tanners_ridge.jpg`, `${testAssetDir}/temp/reimport/asset.jpg`);
|
||||
await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_000);
|
||||
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, {
|
||||
libraryId: library.id,
|
||||
@@ -592,21 +534,14 @@ describe('/libraries', () => {
|
||||
|
||||
utils.createImageFile(`${testAssetDir}/temp/offline/offline.png`);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
expect(assets.count).toBe(1);
|
||||
|
||||
utils.removeImageFile(`${testAssetDir}/temp/offline/offline.png`);
|
||||
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const trashedAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id);
|
||||
expect(trashedAsset.originalPath).toBe(`${testAssetDirInternal}/temp/offline/offline.png`);
|
||||
@@ -624,8 +559,7 @@ describe('/libraries', () => {
|
||||
importPaths: [`${testAssetDirInternal}/temp/offline`],
|
||||
});
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
expect(assets.count).toBe(1);
|
||||
@@ -636,13 +570,7 @@ describe('/libraries', () => {
|
||||
importPaths: [`${testAssetDirInternal}/temp/another-path/`],
|
||||
});
|
||||
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const trashedAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id);
|
||||
expect(trashedAsset.originalPath).toBe(`${testAssetDirInternal}/temp/offline/offline.png`);
|
||||
@@ -662,8 +590,7 @@ describe('/libraries', () => {
|
||||
importPaths: [`${testAssetDirInternal}/temp`],
|
||||
});
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, {
|
||||
libraryId: library.id,
|
||||
@@ -673,8 +600,7 @@ describe('/libraries', () => {
|
||||
|
||||
await utils.updateLibrary(admin.accessToken, library.id, { exclusionPatterns: ['**/directoryB/**'] });
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const trashedAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id);
|
||||
expect(trashedAsset.isTrashed).toBe(true);
|
||||
@@ -696,19 +622,12 @@ describe('/libraries', () => {
|
||||
importPaths: [`${testAssetDirInternal}/temp`],
|
||||
});
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets: assetsBefore } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
expect(assetsBefore.count).toBeGreaterThan(1);
|
||||
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -725,11 +644,7 @@ describe('/libraries', () => {
|
||||
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`);
|
||||
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -752,10 +667,7 @@ describe('/libraries', () => {
|
||||
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.nef.xmp`);
|
||||
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -779,10 +691,7 @@ describe('/libraries', () => {
|
||||
cpSync(`${testAssetDir}/metadata/xmp/dates/2010.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`);
|
||||
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -806,19 +715,13 @@ describe('/libraries', () => {
|
||||
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
|
||||
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
cpSync(`${testAssetDir}/metadata/xmp/dates/2010.xmp`, `${testAssetDir}/temp/xmp/glarus.nef.xmp`);
|
||||
unlinkSync(`${testAssetDir}/temp/xmp/glarus.xmp`);
|
||||
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -841,18 +744,12 @@ describe('/libraries', () => {
|
||||
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
|
||||
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`);
|
||||
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -875,18 +772,12 @@ describe('/libraries', () => {
|
||||
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
|
||||
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.nef.xmp`);
|
||||
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -910,19 +801,13 @@ describe('/libraries', () => {
|
||||
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
|
||||
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
cpSync(`${testAssetDir}/metadata/xmp/dates/2010.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`);
|
||||
unlinkSync(`${testAssetDir}/temp/xmp/glarus.nef.xmp`);
|
||||
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -946,18 +831,12 @@ describe('/libraries', () => {
|
||||
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
|
||||
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
unlinkSync(`${testAssetDir}/temp/xmp/glarus.nef.xmp`);
|
||||
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -981,18 +860,12 @@ describe('/libraries', () => {
|
||||
cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`);
|
||||
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
unlinkSync(`${testAssetDir}/temp/xmp/glarus.xmp`);
|
||||
await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001);
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets: newAssets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
@@ -1015,22 +888,13 @@ describe('/libraries', () => {
|
||||
importPaths: [`${testAssetDirInternal}/temp/offline`],
|
||||
});
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
utils.renameImageFile(`${testAssetDir}/temp/offline/offline.png`, `${testAssetDir}/temp/offline.png`);
|
||||
|
||||
{
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
}
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const offlineAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id);
|
||||
expect(offlineAsset.isTrashed).toBe(true);
|
||||
@@ -1044,15 +908,7 @@ describe('/libraries', () => {
|
||||
|
||||
utils.renameImageFile(`${testAssetDir}/temp/offline.png`, `${testAssetDir}/temp/offline/offline.png`);
|
||||
|
||||
{
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
}
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const backOnlineAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id);
|
||||
|
||||
@@ -1074,22 +930,13 @@ describe('/libraries', () => {
|
||||
importPaths: [`${testAssetDirInternal}/temp/offline`],
|
||||
});
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
utils.renameImageFile(`${testAssetDir}/temp/offline/offline.png`, `${testAssetDir}/temp/offline.png`);
|
||||
|
||||
{
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
}
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
{
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id, withDeleted: true });
|
||||
@@ -1110,15 +957,7 @@ describe('/libraries', () => {
|
||||
importPaths: [`${testAssetDirInternal}/temp/another-path`],
|
||||
});
|
||||
|
||||
{
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
}
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const stillOfflineAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id);
|
||||
|
||||
@@ -1142,22 +981,13 @@ describe('/libraries', () => {
|
||||
importPaths: [`${testAssetDirInternal}/temp/offline`],
|
||||
});
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
utils.renameImageFile(`${testAssetDir}/temp/offline/offline.png`, `${testAssetDir}/temp/offline.png`);
|
||||
|
||||
{
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
}
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
{
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id, withDeleted: true });
|
||||
@@ -1174,15 +1004,7 @@ describe('/libraries', () => {
|
||||
|
||||
await utils.updateLibrary(admin.accessToken, library.id, { exclusionPatterns: ['**/offline/**'] });
|
||||
|
||||
{
|
||||
const { status } = await request(app)
|
||||
.post(`/libraries/${library.id}/scan`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send();
|
||||
expect(status).toBe(204);
|
||||
}
|
||||
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const stillOfflineAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id);
|
||||
|
||||
@@ -1302,8 +1124,7 @@ describe('/libraries', () => {
|
||||
importPaths: [`${testAssetDirInternal}/temp`],
|
||||
});
|
||||
|
||||
await scan(admin.accessToken, library.id);
|
||||
await utils.waitForQueueFinish(admin.accessToken, 'library');
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { status, body } = await request(app)
|
||||
.delete(`/libraries/${library.id}`)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { LoginResponseDto, PersonResponseDto } from '@immich/sdk';
|
||||
import { getPerson, LoginResponseDto, PersonResponseDto } from '@immich/sdk';
|
||||
import { uuidDto } from 'src/fixtures';
|
||||
import { errorDto } from 'src/responses';
|
||||
import { app, utils } from 'src/utils';
|
||||
import { app, asBearerAuth, utils } from 'src/utils';
|
||||
import request from 'supertest';
|
||||
import { beforeAll, beforeEach, describe, expect, it } from 'vitest';
|
||||
|
||||
@@ -195,6 +195,7 @@ describe('/people', () => {
|
||||
.send({
|
||||
name: 'New Person',
|
||||
birthDate: '1990-01-01',
|
||||
color: '#333',
|
||||
});
|
||||
expect(status).toBe(201);
|
||||
expect(body).toMatchObject({
|
||||
@@ -203,6 +204,22 @@ describe('/people', () => {
|
||||
birthDate: '1990-01-01T00:00:00.000Z',
|
||||
});
|
||||
});
|
||||
|
||||
it('should create a favorite person', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.post(`/people`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send({
|
||||
name: 'New Favorite Person',
|
||||
isFavorite: true,
|
||||
});
|
||||
expect(status).toBe(201);
|
||||
expect(body).toMatchObject({
|
||||
id: expect.any(String),
|
||||
name: 'New Favorite Person',
|
||||
isFavorite: true,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('PUT /people/:id', () => {
|
||||
@@ -216,6 +233,7 @@ describe('/people', () => {
|
||||
{ key: 'name', type: 'string' },
|
||||
{ key: 'featureFaceAssetId', type: 'string' },
|
||||
{ key: 'isHidden', type: 'boolean value' },
|
||||
{ key: 'isFavorite', type: 'boolean value' },
|
||||
]) {
|
||||
it(`should not allow null ${key}`, async () => {
|
||||
const { status, body } = await request(app)
|
||||
@@ -255,6 +273,42 @@ describe('/people', () => {
|
||||
expect(status).toBe(200);
|
||||
expect(body).toMatchObject({ birthDate: null });
|
||||
});
|
||||
|
||||
it('should set a color', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.put(`/people/${visiblePerson.id}`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send({ color: '#555' });
|
||||
expect(status).toBe(200);
|
||||
expect(body).toMatchObject({ color: '#555' });
|
||||
});
|
||||
|
||||
it('should clear a color', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.put(`/people/${visiblePerson.id}`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send({ color: null });
|
||||
expect(status).toBe(200);
|
||||
expect(body.color).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should mark a person as favorite', async () => {
|
||||
const person = await utils.createPerson(admin.accessToken, {
|
||||
name: 'visible_person',
|
||||
});
|
||||
|
||||
expect(person.isFavorite).toBe(false);
|
||||
|
||||
const { status, body } = await request(app)
|
||||
.put(`/people/${person.id}`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send({ isFavorite: true });
|
||||
expect(status).toBe(200);
|
||||
expect(body).toMatchObject({ isFavorite: true });
|
||||
|
||||
const person2 = await getPerson({ id: person.id }, { headers: asBearerAuth(admin.accessToken) });
|
||||
expect(person2).toMatchObject({ id: person.id, isFavorite: true });
|
||||
});
|
||||
});
|
||||
|
||||
describe('POST /people/:id/merge', () => {
|
||||
|
||||
@@ -89,13 +89,13 @@ describe('/shared-links', () => {
|
||||
await deleteUserAdmin({ id: user2.userId, userAdminDeleteDto: {} }, { headers: asBearerAuth(admin.accessToken) });
|
||||
});
|
||||
|
||||
describe('GET /share/${key}', () => {
|
||||
describe('GET /share/:key', () => {
|
||||
it('should have correct asset count in meta tag for non-empty album', async () => {
|
||||
const resp = await request(shareUrl).get(`/${linkWithMetadata.key}`);
|
||||
expect(resp.status).toBe(200);
|
||||
expect(resp.header['content-type']).toContain('text/html');
|
||||
expect(resp.text).toContain(
|
||||
`<meta name="description" content="${metadataAlbum.assets.length} shared photos & videos" />`,
|
||||
`<meta name="description" content="${metadataAlbum.assets.length} shared photos & videos" />`,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -103,14 +103,14 @@ describe('/shared-links', () => {
|
||||
const resp = await request(shareUrl).get(`/${linkWithAlbum.key}`);
|
||||
expect(resp.status).toBe(200);
|
||||
expect(resp.header['content-type']).toContain('text/html');
|
||||
expect(resp.text).toContain(`<meta name="description" content="0 shared photos & videos" />`);
|
||||
expect(resp.text).toContain(`<meta name="description" content="0 shared photos & videos" />`);
|
||||
});
|
||||
|
||||
it('should have correct asset count in meta tag for shared asset', async () => {
|
||||
const resp = await request(shareUrl).get(`/${linkWithAssets.key}`);
|
||||
expect(resp.status).toBe(200);
|
||||
expect(resp.header['content-type']).toContain('text/html');
|
||||
expect(resp.text).toContain(`<meta name="description" content="1 shared photos & videos" />`);
|
||||
expect(resp.text).toContain(`<meta name="description" content="1 shared photos & videos" />`);
|
||||
});
|
||||
|
||||
it('should have fqdn og:image meta tag for shared asset', async () => {
|
||||
@@ -139,7 +139,10 @@ describe('/shared-links', () => {
|
||||
expect(body).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({ id: linkWithAlbum.id }),
|
||||
expect.objectContaining({ id: linkWithAssets.id }),
|
||||
expect.objectContaining({
|
||||
id: linkWithAssets.id,
|
||||
assets: expect.arrayContaining([expect.objectContaining({ id: asset1.id })]),
|
||||
}),
|
||||
expect.objectContaining({ id: linkWithPassword.id }),
|
||||
expect.objectContaining({ id: linkWithMetadata.id }),
|
||||
expect.objectContaining({ id: linkWithoutMetadata.id }),
|
||||
@@ -147,6 +150,30 @@ describe('/shared-links', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('should filter on albumId', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get(`/shared-links?albumId=${album.id}`)
|
||||
.set('Authorization', `Bearer ${user1.accessToken}`);
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body).toHaveLength(2);
|
||||
expect(body).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({ id: linkWithAlbum.id }),
|
||||
expect.objectContaining({ id: linkWithPassword.id }),
|
||||
]),
|
||||
);
|
||||
});
|
||||
|
||||
it('should find 0 albums', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get(`/shared-links?albumId=${uuidDto.notFound}`)
|
||||
.set('Authorization', `Bearer ${user1.accessToken}`);
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body).toHaveLength(0);
|
||||
});
|
||||
|
||||
it('should not get shared links created by other users', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/shared-links')
|
||||
|
||||
@@ -356,5 +356,24 @@ describe('/admin/users', () => {
|
||||
expect(status).toBe(403);
|
||||
expect(body).toEqual(errorDto.forbidden);
|
||||
});
|
||||
|
||||
it('should restore a user', async () => {
|
||||
const user = await utils.userSetup(admin.accessToken, createUserDto.create('restore'));
|
||||
|
||||
await deleteUserAdmin({ id: user.userId, userAdminDeleteDto: {} }, { headers: asBearerAuth(admin.accessToken) });
|
||||
|
||||
const { status, body } = await request(app)
|
||||
.post(`/admin/users/${user.userId}/restore`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
expect(status).toBe(200);
|
||||
expect(body).toEqual(
|
||||
expect.objectContaining({
|
||||
id: user.userId,
|
||||
email: user.userEmail,
|
||||
status: 'active',
|
||||
deletedAt: null,
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -6,6 +6,8 @@ import {
|
||||
CheckExistingAssetsDto,
|
||||
CreateAlbumDto,
|
||||
CreateLibraryDto,
|
||||
JobCommandDto,
|
||||
JobName,
|
||||
MetadataSearchDto,
|
||||
Permission,
|
||||
PersonCreateDto,
|
||||
@@ -28,7 +30,9 @@ import {
|
||||
getAssetInfo,
|
||||
getConfigDefaults,
|
||||
login,
|
||||
scanLibrary,
|
||||
searchAssets,
|
||||
sendJobCommand,
|
||||
setBaseUrl,
|
||||
signUpAdmin,
|
||||
tagAssets,
|
||||
@@ -475,6 +479,9 @@ export const utils = {
|
||||
tagAssets: (accessToken: string, tagId: string, assetIds: string[]) =>
|
||||
tagAssets({ id: tagId, bulkIdsDto: { ids: assetIds } }, { headers: asBearerAuth(accessToken) }),
|
||||
|
||||
jobCommand: async (accessToken: string, jobName: JobName, jobCommandDto: JobCommandDto) =>
|
||||
sendJobCommand({ id: jobName, jobCommandDto }, { headers: asBearerAuth(accessToken) }),
|
||||
|
||||
setAuthCookies: async (context: BrowserContext, accessToken: string, domain = '127.0.0.1') =>
|
||||
await context.addCookies([
|
||||
{
|
||||
@@ -547,6 +554,14 @@ export const utils = {
|
||||
await immichCli(['login', app, `${key.secret}`]);
|
||||
return key.secret;
|
||||
},
|
||||
|
||||
scan: async (accessToken: string, id: string) => {
|
||||
await scanLibrary({ id }, { headers: asBearerAuth(accessToken) });
|
||||
|
||||
await utils.waitForQueueFinish(accessToken, 'library');
|
||||
await utils.waitForQueueFinish(accessToken, 'sidecar');
|
||||
await utils.waitForQueueFinish(accessToken, 'metadataExtraction');
|
||||
},
|
||||
};
|
||||
|
||||
utils.initSdk();
|
||||
|
||||
23
i18n/af.json
23
i18n/af.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Voeg vennoot by",
|
||||
"add_path": "Voeg pad by",
|
||||
"add_photos": "Voeg foto's by",
|
||||
"add_to": "Voeg na...",
|
||||
"add_to": "Voeg by…",
|
||||
"add_to_album": "Voeg na album",
|
||||
"add_to_shared_album": "Voeg na gedeelde album",
|
||||
"add_url": "Voeg URL by",
|
||||
@@ -57,6 +57,23 @@
|
||||
"exclusion_pattern_description": "Met uitsluitingspatrone kan jy lêers en vouers ignoreer wanneer jy jou biblioteek skandeer. Dit is nuttig as jy vouers het wat lêers bevat wat jy nie wil invoer nie, soos RAW-lêers.",
|
||||
"external_library_created_at": "Eksterne biblioteek (geskep op {date})",
|
||||
"external_library_management": "Eksterne Biblioteek-opsies",
|
||||
"face_detection": "Gesigsopsporing"
|
||||
}
|
||||
"face_detection": "Gesigsopsporing",
|
||||
"failed_job_command": "Opdrag {command} het misluk vir werk: {job}",
|
||||
"force_delete_user_warning": "WAARSKUWING: Dit sal onmiddellik die gebruiker en alle bates verwyder. Dit kan nie ontdoen word nie en die lêers kan nie herstel word nie.",
|
||||
"forcing_refresh_library_files": "Forseer herlaai van alle biblioteeklêers",
|
||||
"image_format": "Formaat",
|
||||
"image_format_description": "WebP produseer kleiner lêers as JPEG, maar is stadiger om te enkodeer.",
|
||||
"image_prefer_embedded_preview": "Verkies ingebedde voorskou",
|
||||
"image_prefer_wide_gamut": "Verkies wye spektrum",
|
||||
"image_preview_description": "Mediumgrootte prent met gestroopte metadata, wat gebruik word wanneer 'n enkele bate bekyk word en vir masjienleer",
|
||||
"image_preview_quality_description": "Voorskou kwaliteit van 1-100. Hoër is beter, maar produseer groter lêers en kan app-reaksie verminder. Die stel van 'n lae waarde kan masjienleerkwaliteit beïnvloed.",
|
||||
"image_preview_title": "Voorskou Instellings",
|
||||
"image_quality": "Kwaliteit",
|
||||
"image_resolution": "Resolusie",
|
||||
"image_resolution_description": "Hoër resolusies kan meer detail bewaar, maar neem langer om te enkodeer, het groter lêergroottes en kan app-reaksie verminder.",
|
||||
"image_settings": "Prent Instellings",
|
||||
"image_settings_description": "Bestuur die kwaliteit en resolusie van gegenereerde beelde"
|
||||
},
|
||||
"search_by_description": "Soek by beskrywing",
|
||||
"search_by_description_example": "Stapdag in Sapa"
|
||||
}
|
||||
|
||||
101
i18n/ar.json
101
i18n/ar.json
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "إعادة ضبط الإعدادات إلى الوضع الافتراضي",
|
||||
"reset_settings_to_recent_saved": "إعادة ضبط الإعدادات إلى الإعدادات المحفوظة مؤخرًا",
|
||||
"scanning_library": "مسح المكتبة",
|
||||
"search_jobs": "البحث عن وظائف...",
|
||||
"search_jobs": "البحث عن وظائف…",
|
||||
"send_welcome_email": "إرسال بريد ترحيبي",
|
||||
"server_external_domain_settings": "إسم النطاق الخارجي",
|
||||
"server_external_domain_settings_description": "إسم النطاق لروابط المشاركة العامة، بما في ذلك http(s)://",
|
||||
@@ -250,8 +250,16 @@
|
||||
"storage_template_user_label": "<code>{label}</code> هو تسمية التخزين الخاصة بالمستخدم",
|
||||
"system_settings": "إعدادات النظام",
|
||||
"tag_cleanup_job": "تنظيف العلامة",
|
||||
"template_email_available_tags": "يمكنك استخدام المتغيرات التالية في القالب الخاص بك: {tags}",
|
||||
"template_email_if_empty": "إذا كان القالب فارغا، فسيتم استخدام البريد الإلكتروني الافتراضي.",
|
||||
"template_email_invite_album": "قالب دعوة الألبوم",
|
||||
"template_email_preview": "عرض مسبق",
|
||||
"template_email_settings": "نماذج البريد الالكتروني",
|
||||
"template_email_settings_description": "إدارة قوالب إشعارات البريد الإلكتروني المخصصة",
|
||||
"template_email_update_album": "تحديث قالب الألبوم",
|
||||
"template_email_welcome": "قالب البريد الإلكتروني الترحيبي",
|
||||
"template_settings": "قوالب الإشعارات",
|
||||
"template_settings_description": "إدارة القوالب المخصصة للإشعارات.",
|
||||
"theme_custom_css_settings": "CSS مخصص",
|
||||
"theme_custom_css_settings_description": "أوراق الأنماط المتتالية تسمح بتخصيص تصميم Immich.",
|
||||
"theme_settings": "إعدادات السمة",
|
||||
@@ -281,6 +289,8 @@
|
||||
"transcoding_constant_rate_factor": "عامل معدل الجودة الثابت (-crf)",
|
||||
"transcoding_constant_rate_factor_description": "مستوى جودة الفيديو. القيم النموذجية هي 23 لـ H.264، 28 لـ HEVC، 31 لـ VP9، و 35 لـ AV1. كلما كانت القيمة أقل كان ذلك أفضل، ولكن يؤدي إلى ملفات أكبر.",
|
||||
"transcoding_disabled_description": "لا تقم بتحويل أي مقاطع فيديو، قد تؤدي إلى عدم تشغيلها على بعض العملاء",
|
||||
"transcoding_encoding_options": "خيارات الترميز",
|
||||
"transcoding_encoding_options_description": "اضبط برامج الترميز والدقة والجودة والخيارات الأخرى لمقاطع الفيديو المشفرة",
|
||||
"transcoding_hardware_acceleration": "التسريع العتادي",
|
||||
"transcoding_hardware_acceleration_description": "تجريبي؛ أسرع بكثير، ولكن ستكون جودتها أقل عند نفس معدل البت",
|
||||
"transcoding_hardware_decoding": "فك تشفير الأجهزة",
|
||||
@@ -293,6 +303,8 @@
|
||||
"transcoding_max_keyframe_interval": "الحد الأقصى للفاصل الزمني للإطار الرئيسي",
|
||||
"transcoding_max_keyframe_interval_description": "يضبط الحد الأقصى لمسافة الإطار بين الإطارات الرئيسية. تؤدي القيم المنخفضة إلى زيادة سوء كفاءة الضغط، ولكنها تعمل على تحسين أوقات البحث وقد تعمل على تحسين الجودة في المشاهد ذات الحركة السريعة. 0 يضبط هذه القيمة تلقائيًا.",
|
||||
"transcoding_optimal_description": "مقاطع الفيديو ذات الدقة الأعلى من الدقة المستهدفة أو بتنسيق غير مقبول",
|
||||
"transcoding_policy": "سياسة تحويل الترميز",
|
||||
"transcoding_policy_description": "اضبط متى سيتم تحويل ترميز الفيديو",
|
||||
"transcoding_preferred_hardware_device": "الجهاز المفضل",
|
||||
"transcoding_preferred_hardware_device_description": "ينطبق فقط على VAAPI وQSV. يضبط عقدة dri المستخدمة لتحويل ترميز الأجهزة.",
|
||||
"transcoding_preset_preset": "الضبط المُسبق (-preset)",
|
||||
@@ -301,7 +313,7 @@
|
||||
"transcoding_reference_frames_description": "عدد الإطارات التي يجب الرجوع إليها عند ضغط إطار معين. تعمل القيم الأعلى على تحسين كفاءة الضغط، ولكنها تبطئ عملية التشفير. 0 يضبط هذه القيمة تلقائيًا.",
|
||||
"transcoding_required_description": "فقط مقاطع الفيديو ذات التنسيق غير المقبول",
|
||||
"transcoding_settings": "إعدادات تحويل ترميز الفيديو",
|
||||
"transcoding_settings_description": "إدارة معلومات الدقة والترميز لملفات الفيديو",
|
||||
"transcoding_settings_description": "إدارة مقاطع الفيديو التي يجب تحويل ترميزها وكيفية معالجتها",
|
||||
"transcoding_target_resolution": "القرار المستهدف",
|
||||
"transcoding_target_resolution_description": "يمكن أن تحافظ الدقة الأعلى على المزيد من التفاصيل ولكنها تستغرق وقتًا أطول للتشفير، ولها أحجام ملفات أكبر، ويمكن أن تقلل من استجابة التطبيق.",
|
||||
"transcoding_temporal_aq": "التكميم التكيفي الزمني",
|
||||
@@ -314,7 +326,7 @@
|
||||
"transcoding_transcode_policy_description": "سياسة تحديد متى يجب ترميز الفيديو. سيتم دائمًا ترميز مقاطع الفيديو HDR (ما لم يتم تعطيل الترميز).",
|
||||
"transcoding_two_pass_encoding": "الترميز بمرورين",
|
||||
"transcoding_two_pass_encoding_setting_description": "ترميز بمرورين لإنتاج مقاطع فيديو بترميز أفضل. عند تمكين الحد الأقصى لمعدل البت (مطلوب لكي يعمل مع H.264 و HEVC)، يستخدم هذا الوضع نطاق معدل البت استنادًا إلى الحد الأقصى لمعدل البت ويتجاهل CRF. بالنسبة لـ VP9، يمكن استخدام CRF إذا تم تعطيل الحد الأقصى لمعدل البت.",
|
||||
"transcoding_video_codec": "كود الفيديو",
|
||||
"transcoding_video_codec": "ترميز الفيديو",
|
||||
"transcoding_video_codec_description": "يتمتع VP9 بكفاءة عالية وتوافق مع الويب، ولكنه يستغرق وقتًا أطول في تحويل التعليمات البرمجية. يعمل HEVC بشكل مشابه، لكن توافقه مع الويب أقل. H.264 متوافق على نطاق واسع وسريع في تحويل التعليمات البرمجية، ولكنه ينتج ملفات أكبر بكثير. AV1 هو برنامج الترميز الأكثر كفاءة ولكنه يفتقر إلى الدعم على الأجهزة القديمة.",
|
||||
"trash_enabled_description": "تفعيل ميزات سلة المهملات",
|
||||
"trash_number_of_days": "عدد الأيام",
|
||||
@@ -394,17 +406,17 @@
|
||||
"are_these_the_same_person": "هل هؤلاء هم نفس الشخص؟",
|
||||
"are_you_sure_to_do_this": "هل انت متأكد من أنك تريد أن تفعل هذا؟",
|
||||
"asset_added_to_album": "تمت إضافته إلى الألبوم",
|
||||
"asset_adding_to_album": "جارٍ الإضافة إلى الألبوم...",
|
||||
"asset_adding_to_album": "جارٍ الإضافة إلى الألبوم…",
|
||||
"asset_description_updated": "تم تحديث وصف المحتوى",
|
||||
"asset_filename_is_offline": "الأصل {filename} غير متصل",
|
||||
"asset_has_unassigned_faces": "يحتوي الأصل على وجوه غير مخصصة",
|
||||
"asset_hashing": "التجزئة...",
|
||||
"asset_hashing": "التجزئة…",
|
||||
"asset_offline": "المحتوى غير اتصال",
|
||||
"asset_offline_description": "لم يعد هذا الأصل الخارجي موجودًا على القرص. يرجى الاتصال بمسؤول Immich للحصول على المساعدة.",
|
||||
"asset_skipped": "تم تخطيه",
|
||||
"asset_skipped_in_trash": "في سلة المهملات",
|
||||
"asset_uploaded": "تم الرفع",
|
||||
"asset_uploading": "جارٍ الرفع...",
|
||||
"asset_uploading": "جارٍ الرفع…",
|
||||
"assets": "المحتويات",
|
||||
"assets_added_count": "تمت إضافة {count, plural, one {# محتوى} other {# محتويات}}",
|
||||
"assets_added_to_album_count": "تمت إضافة {count, plural, one {# الأصل} other {# الأصول}} إلى الألبوم",
|
||||
@@ -511,6 +523,10 @@
|
||||
"date_range": "نطاق الموعد",
|
||||
"day": "يوم",
|
||||
"deduplicate_all": "إلغاء تكرار الكل",
|
||||
"deduplication_criteria_1": "حجم الصورة بوحدات البايت",
|
||||
"deduplication_criteria_2": "عدد بيانات EXIF",
|
||||
"deduplication_info": "معلومات إلغاء البيانات المكررة",
|
||||
"deduplication_info_description": "لتحديد الأصول مسبقا تلقائيا وإزالة التكرارات بكميات كبيرة، ننظر إلى:",
|
||||
"default_locale": "اللغة الافتراضية",
|
||||
"default_locale_description": "تنسيق التواريخ والأرقام بناءً على لغة المتصفح الخاص بك",
|
||||
"delete": "حذف",
|
||||
@@ -726,6 +742,7 @@
|
||||
"external": "خارجي",
|
||||
"external_libraries": "المكتبات الخارجية",
|
||||
"face_unassigned": "غير معين",
|
||||
"failed_to_load_assets": "فشل تحميل الأصول",
|
||||
"favorite": "مفضل",
|
||||
"favorite_or_unfavorite_photo": "تفضيل أو إلغاء تفضيل الصورة",
|
||||
"favorites": "المفضلة",
|
||||
@@ -746,10 +763,13 @@
|
||||
"get_help": "الحصول على المساعدة",
|
||||
"getting_started": "البدء",
|
||||
"go_back": "الرجوع للخلف",
|
||||
"go_to_folder": "اذهب إلى المجلد",
|
||||
"go_to_search": "اذهب إلى البحث",
|
||||
"group_albums_by": "تجميع الألبومات حسب...",
|
||||
"group_country": "مجموعة البلد",
|
||||
"group_no": "بدون تجميع",
|
||||
"group_owner": "تجميع حسب المالك",
|
||||
"group_places_by": "تجميع الأماكن حسب",
|
||||
"group_year": "تجميع حسب السنة",
|
||||
"has_quota": "محدد بحصة",
|
||||
"hi_user": "مرحبا {name} ({email})",
|
||||
@@ -782,6 +802,7 @@
|
||||
"include_shared_albums": "تضمين الألبومات المشتركة",
|
||||
"include_shared_partner_assets": "تضمين محتويات الشريك المشتركة",
|
||||
"individual_share": "حصة فردية",
|
||||
"individual_shares": "المشاركات الفردية",
|
||||
"info": "معلومات",
|
||||
"interval": {
|
||||
"day_at_onepm": "كل يوم الساعة الواحدة ظهرا",
|
||||
@@ -804,6 +825,7 @@
|
||||
"latest_version": "احدث اصدار",
|
||||
"latitude": "خط العرض",
|
||||
"leave": "مغادرة",
|
||||
"lens_model": "نموذج العدسات",
|
||||
"let_others_respond": "دع الآخرين يستجيبون",
|
||||
"level": "المستوى",
|
||||
"library": "مكتبة",
|
||||
@@ -966,6 +988,7 @@
|
||||
"pick_a_location": "اختر موقعًا",
|
||||
"place": "مكان",
|
||||
"places": "الأماكن",
|
||||
"places_count": "{count, plural, one {{count, number} مكان} other {{count, number} أماكن}}",
|
||||
"play": "تشغيل",
|
||||
"play_memories": "تشغيل الذكريات",
|
||||
"play_motion_photo": "تشغيل الصور المتحركة",
|
||||
@@ -1025,6 +1048,7 @@
|
||||
"reassigned_assets_to_new_person": "تمت إعادة تعيين {count, plural, one {# المحتوى} other {# المحتويات}} إلى شخص جديد",
|
||||
"reassing_hint": "تعيين المحتويات المحددة لشخص موجود",
|
||||
"recent": "حديث",
|
||||
"recent-albums": "ألبومات الحديثة",
|
||||
"recent_searches": "عمليات البحث الأخيرة",
|
||||
"refresh": "تحديث",
|
||||
"refresh_encoded_videos": "تحديث مقاطع الفيديو المشفرة",
|
||||
@@ -1046,6 +1070,7 @@
|
||||
"remove_from_album": "إزالة من الألبوم",
|
||||
"remove_from_favorites": "إزالة من المفضلة",
|
||||
"remove_from_shared_link": "إزالة من الرابط المشترك",
|
||||
"remove_url": "إزالة عنوان URL",
|
||||
"remove_user": "إزالة المستخدم",
|
||||
"removed_api_key": "تم إزالة مفتاح API: {name}",
|
||||
"removed_from_archive": "تمت إزالتها من الأرشيف",
|
||||
@@ -1084,15 +1109,18 @@
|
||||
"scan_library": "مسح",
|
||||
"scan_settings": "إعدادات الفحص",
|
||||
"scanning_for_album": "جارٍ الفحص عن ألبوم...",
|
||||
"search": "بحث",
|
||||
"search_albums": "بحث في الألبومات",
|
||||
"search": "البحث",
|
||||
"search_albums": "البحث في الألبومات",
|
||||
"search_by_context": "البحث حسب السياق",
|
||||
"search_by_filename": "إبحث بإسم الملف أو نوعه",
|
||||
"search_by_description": "البحث حسب الوصف",
|
||||
"search_by_description_example": "يوم المشي لمسافات طويلة في سابا",
|
||||
"search_by_filename": "البحث بإسم الملف أو نوعه",
|
||||
"search_by_filename_example": "كـ IMG_1234.JPG أو PNG",
|
||||
"search_camera_make": "البحث حسب الشركة المصنعة للكاميرا...",
|
||||
"search_camera_model": "البحث حسب موديل الكاميرا...",
|
||||
"search_city": "البحث حسب المدينة...",
|
||||
"search_country": "البحث حسب الدولة...",
|
||||
"search_for": "البحث عن",
|
||||
"search_for_existing_person": "البحث عن شخص موجود",
|
||||
"search_no_people": "لا يوجد أشخاص",
|
||||
"search_no_people_named": "لا يوجد أشخاص بالاسم \"{name}\"",
|
||||
@@ -1104,36 +1132,37 @@
|
||||
"search_tags": "البحث عن العلامات...",
|
||||
"search_timezone": "البحث حسب المنطقة الزمنية...",
|
||||
"search_type": "نوع البحث",
|
||||
"search_your_photos": "ابحث عن صورك",
|
||||
"search_your_photos": "البحث عن صورك",
|
||||
"searching_locales": "جارٍ البحث في اللغات...",
|
||||
"second": "ثانية",
|
||||
"see_all_people": "عرض جميع الأشخاص",
|
||||
"select_album_cover": "حدد غلاف الألبوم",
|
||||
"select_album_cover": "تحديد غلاف الألبوم",
|
||||
"select_all": "تحديد الكل",
|
||||
"select_all_duplicates": "تحديد جميع النسخ المكررة",
|
||||
"select_avatar_color": "حدد لون الصورة الشخصية",
|
||||
"select_face": "اختيار وجه",
|
||||
"select_featured_photo": "حدد الصورة المميزة",
|
||||
"select_from_computer": "اختر من الجهاز",
|
||||
"select_keep_all": "حدد الاحتفاظ بالكل",
|
||||
"select_library_owner": "اختر مالِك المكتبة",
|
||||
"select_new_face": "اختيار وجه جديد",
|
||||
"select_photos": "حدد الصور",
|
||||
"select_trash_all": "حدّد حذف الكلِ",
|
||||
"selected": "المُحدّد",
|
||||
"select_avatar_color": "تحديد لون الصورة الشخصية",
|
||||
"select_face": "تحديد وجه",
|
||||
"select_featured_photo": "تحديد الصورة المميزة",
|
||||
"select_from_computer": "تحديد من الحاسب الآلي",
|
||||
"select_keep_all": "تحديد الأحتفاظ بالكل",
|
||||
"select_library_owner": "تحديد مالِك المكتبة",
|
||||
"select_new_face": "تحديد وجه جديد",
|
||||
"select_photos": "تحديد الصور",
|
||||
"select_trash_all": "تحديد حذف الكلِ",
|
||||
"selected": "التحديد",
|
||||
"selected_count": "{count, plural, other {# محددة }}",
|
||||
"send_message": "أرسل رسالة",
|
||||
"send_welcome_email": "أرسل بريدًا إلكترونيًا ترحيبيًا",
|
||||
"send_message": "إرسال رسالة",
|
||||
"send_welcome_email": "إرسال بريدًا إلكترونيًا ترحيبيًا",
|
||||
"server_offline": "الخادم غير متصل",
|
||||
"server_online": "الخادم متصل",
|
||||
"server_stats": "إحصائيات الخادم",
|
||||
"server_version": "إصدار الخادم",
|
||||
"set": "تعيين",
|
||||
"set_as_album_cover": "تعيين كغلاف للألبوم",
|
||||
"set_as_profile_picture": "تعيين كصورة الملف الشخصي",
|
||||
"set": "تحديد",
|
||||
"set_as_album_cover": "تحديد كغلاف للألبوم",
|
||||
"set_as_featured_photo": "تحديد كصورة مميزة",
|
||||
"set_as_profile_picture": "تحديد كصورة الملف الشخصي",
|
||||
"set_date_of_birth": "تحديد تاريخ الميلاد",
|
||||
"set_profile_picture": "تعيين صورة الملف الشخصي",
|
||||
"set_slideshow_to_fullscreen": "اضبط عرض الشرائح على وضع ملء الشاشة",
|
||||
"set_profile_picture": "تحديد صورة الملف الشخصي",
|
||||
"set_slideshow_to_fullscreen": "تحديد عرض الشرائح على وضع ملء الشاشة",
|
||||
"settings": "الإعدادات",
|
||||
"settings_saved": "تم حفظ الإعدادات",
|
||||
"share": "مشاركة",
|
||||
@@ -1144,6 +1173,7 @@
|
||||
"shared_from_partner": "صور من {partner}",
|
||||
"shared_link_options": "خيارات الرابط المشترك",
|
||||
"shared_links": "روابط مشتركة",
|
||||
"shared_links_description": "وصف الروابط المشتركة",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# الصور ومقاطع الفيديو المُشارَكة.}}",
|
||||
"shared_with_partner": "تمت المشاركة مع {partner}",
|
||||
"sharing": "مشاركة",
|
||||
@@ -1155,17 +1185,18 @@
|
||||
"show_all_people": "إظهار جميع الأشخاص",
|
||||
"show_and_hide_people": "إظهار وإخفاء الأشخاص",
|
||||
"show_file_location": "إظهار موقع الملف",
|
||||
"show_gallery": "عرض المعرض",
|
||||
"show_gallery": "إظهار المعرض",
|
||||
"show_hidden_people": "إظهار الأشخاص المخفيين",
|
||||
"show_in_timeline": "عرض في المخطط الزمني",
|
||||
"show_in_timeline_setting_description": "عرض الصور ومقاطع الفيديو من هذا المستخدم في المخطط الزمني الخاص بك",
|
||||
"show_in_timeline": "إظهار في المخطط الزمني",
|
||||
"show_in_timeline_setting_description": "إظهار الصور ومقاطع الفيديو من هذا المستخدم في المخطط الزمني الخاص بك",
|
||||
"show_keyboard_shortcuts": "إظهار اختصارات لوحة المفاتيح",
|
||||
"show_metadata": "عرض البيانات الوصفية",
|
||||
"show_metadata": "إظهار البيانات الوصفية",
|
||||
"show_or_hide_info": "إظهار أو إخفاء المعلومات",
|
||||
"show_password": "عرض كلمة المرور",
|
||||
"show_password": "إظهار كلمة المرور",
|
||||
"show_person_options": "إظهار خيارات الشخص",
|
||||
"show_progress_bar": "إظهار شريط التقدم",
|
||||
"show_search_options": "إظهار خيارات البحث",
|
||||
"show_shared_links": "عرض الروابط المشتركة",
|
||||
"show_slideshow_transition": "إظهار انتقال عرض الشرائح",
|
||||
"show_supporter_badge": "شارة المؤيد",
|
||||
"show_supporter_badge_description": "إظهار شارة المؤيد",
|
||||
@@ -1173,7 +1204,7 @@
|
||||
"sidebar": "الشريط الجانبي",
|
||||
"sidebar_display_description": "عرض رابط للعرض في الشريط الجانبي",
|
||||
"sign_out": "خروج",
|
||||
"sign_up": "تسجيل",
|
||||
"sign_up": "التسجيل",
|
||||
"size": "الحجم",
|
||||
"skip_to_content": "تخطي إلى المحتوى",
|
||||
"skip_to_folders": "تخطي إلى المجلدات",
|
||||
@@ -1185,6 +1216,7 @@
|
||||
"sort_items": "عدد العناصر",
|
||||
"sort_modified": "تم تعديل التاريخ",
|
||||
"sort_oldest": "أقدم صورة",
|
||||
"sort_people_by_similarity": "رتب الأشخاص حسب التشابه",
|
||||
"sort_recent": "أحدث صورة",
|
||||
"sort_title": "العنوان",
|
||||
"source": "المصدر",
|
||||
@@ -1252,6 +1284,7 @@
|
||||
"unfavorite": "أزل التفضيل",
|
||||
"unhide_person": "أظهر الشخص",
|
||||
"unknown": "غير معروف",
|
||||
"unknown_country": "بلد غير معروف",
|
||||
"unknown_year": "سنة غير معروفة",
|
||||
"unlimited": "غير محدود",
|
||||
"unlink_motion_video": "إلغاء ربط فيديو الحركة",
|
||||
|
||||
14
i18n/ca.json
14
i18n/ca.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Afegir company/a",
|
||||
"add_path": "Afegir una ruta",
|
||||
"add_photos": "Afegir fotografies",
|
||||
"add_to": "Afegir a...",
|
||||
"add_to": "Afegir a…",
|
||||
"add_to_album": "Afegir a un l'àlbum",
|
||||
"add_to_shared_album": "Afegir a un àlbum compartit",
|
||||
"add_url": "Afegir URL",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Restablir configuracions per defecte",
|
||||
"reset_settings_to_recent_saved": "Restablir la configuració guardada més recent",
|
||||
"scanning_library": "Escanejant biblioteca",
|
||||
"search_jobs": "Tasques de cerca...",
|
||||
"search_jobs": "Cercar treballs…",
|
||||
"send_welcome_email": "Enviar correu electrònic de benvinguda",
|
||||
"server_external_domain_settings": "Domini extern",
|
||||
"server_external_domain_settings_description": "Domini per enllaços públics compartits, incloent http(s)://",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Són la mateixa persona?",
|
||||
"are_you_sure_to_do_this": "Esteu segurs que voleu fer-ho?",
|
||||
"asset_added_to_album": "Afegit a l'àlbum",
|
||||
"asset_adding_to_album": "Afegint a l'àlbum...",
|
||||
"asset_adding_to_album": "Afegint a l'àlbum…",
|
||||
"asset_description_updated": "La descripció del recurs s'ha actualitzat",
|
||||
"asset_filename_is_offline": "L'element {filename} està fora de línia",
|
||||
"asset_has_unassigned_faces": "L'element té cares no assignades",
|
||||
"asset_hashing": "Hashing...",
|
||||
"asset_hashing": "Hashing…",
|
||||
"asset_offline": "Element fora de línia",
|
||||
"asset_offline_description": "Aquest recurs extern ja no es troba al disc. Poseu-vos en contacte amb el vostre administrador d'Immich per obtenir ajuda.",
|
||||
"asset_skipped": "Saltat",
|
||||
"asset_skipped_in_trash": "A la paperera",
|
||||
"asset_uploaded": "Carregat",
|
||||
"asset_uploading": "S'està carregant...",
|
||||
"asset_uploading": "S'està carregant…",
|
||||
"assets": "Elements",
|
||||
"assets_added_count": "{count, plural, one {Afegit un element} other {Afegits # elements}}",
|
||||
"assets_added_to_album_count": "{count, plural, one {Afegit un element} other {Afegits # elements}} a l'àlbum",
|
||||
@@ -822,6 +822,7 @@
|
||||
"latest_version": "Última versió",
|
||||
"latitude": "Latitud",
|
||||
"leave": "Marxar",
|
||||
"lens_model": "Model de lents",
|
||||
"let_others_respond": "Deixa que els altres responguin",
|
||||
"level": "Nivell",
|
||||
"library": "Bibilioteca",
|
||||
@@ -1094,7 +1095,7 @@
|
||||
"review_duplicates": "Revisar duplicats",
|
||||
"role": "Rol",
|
||||
"role_editor": "Editor",
|
||||
"role_viewer": "Visor",
|
||||
"role_viewer": "Visualitzador",
|
||||
"save": "Desa",
|
||||
"saved_api_key": "Clau d'API guardada",
|
||||
"saved_profile": "Perfil guardat",
|
||||
@@ -1113,6 +1114,7 @@
|
||||
"search_camera_model": "Buscar per model de càmera...",
|
||||
"search_city": "Buscar per ciutat...",
|
||||
"search_country": "Buscar per país...",
|
||||
"search_for": "Cercar",
|
||||
"search_for_existing_person": "Busca una persona existent",
|
||||
"search_no_people": "Cap persona",
|
||||
"search_no_people_named": "Cap persona anomenada \"{name}\"",
|
||||
|
||||
21
i18n/cs.json
21
i18n/cs.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Přidat partnera",
|
||||
"add_path": "Přidat cestu",
|
||||
"add_photos": "Přidat fotky",
|
||||
"add_to": "Přidat do...",
|
||||
"add_to": "Přidat do…",
|
||||
"add_to_album": "Přidat do alba",
|
||||
"add_to_shared_album": "Přidat do sdíleného alba",
|
||||
"add_url": "Přidat URL",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Obnovení výchozího nastavení",
|
||||
"reset_settings_to_recent_saved": "Obnovit poslední uložené nastavení",
|
||||
"scanning_library": "Prohledat knihovnu",
|
||||
"search_jobs": "Hledat úlohy...",
|
||||
"search_jobs": "Hledat úlohy…",
|
||||
"send_welcome_email": "Odeslat uvítací e-mail",
|
||||
"server_external_domain_settings": "Externí doména",
|
||||
"server_external_domain_settings_description": "Doména pro veřejně sdílené odkazy, včetně http(s)://",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Jedná se o stejnou osobu?",
|
||||
"are_you_sure_to_do_this": "Opravdu to chcete udělat?",
|
||||
"asset_added_to_album": "Přidáno do alba",
|
||||
"asset_adding_to_album": "Přidávání do alba...",
|
||||
"asset_adding_to_album": "Přidávání do alba…",
|
||||
"asset_description_updated": "Popis položky byl aktualizován",
|
||||
"asset_filename_is_offline": "Položka {filename} je offline",
|
||||
"asset_has_unassigned_faces": "Položka má nepřiřazené obličeje",
|
||||
"asset_hashing": "Hashování...",
|
||||
"asset_hashing": "Hashování…",
|
||||
"asset_offline": "Offline položka",
|
||||
"asset_offline_description": "Toto externí položka se již na disku nenachází. Obraťte se na Immich správce a požádejte o pomoc.",
|
||||
"asset_skipped": "Přeskočeno",
|
||||
"asset_skipped_in_trash": "V koši",
|
||||
"asset_uploaded": "Nahráno",
|
||||
"asset_uploading": "Nahrávání...",
|
||||
"asset_uploading": "Nahrávání…",
|
||||
"assets": "Položky",
|
||||
"assets_added_count": "{count, plural, one {Přidána # položka} few {Přidány # položky} other {Přidáno # položek}}",
|
||||
"assets_added_to_album_count": "Do alba {count, plural, one {byla přidána # položka} few {byly přidány # položky} other {bylo přidáno # položek}}",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Přejít do složky",
|
||||
"go_to_search": "Přejít na vyhledávání",
|
||||
"group_albums_by": "Seskupit alba podle...",
|
||||
"group_country": "Seskupit podle země",
|
||||
"group_no": "Neseskupovat",
|
||||
"group_owner": "Seskupit podle uživatele",
|
||||
"group_places_by": "Seskupit místa podle...",
|
||||
"group_year": "Seskupit podle roku",
|
||||
"has_quota": "Má kvótu",
|
||||
"hi_user": "Ahoj {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Včetně sdílených alb",
|
||||
"include_shared_partner_assets": "Včetně sdílených položek partnera",
|
||||
"individual_share": "Sdílení jednotlivých položek",
|
||||
"individual_shares": "Sdílení jednotlivých položek",
|
||||
"info": "Informace",
|
||||
"interval": {
|
||||
"day_at_onepm": "Každý den ve 13:00",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Nejnovější verze",
|
||||
"latitude": "Zeměpisná šířka",
|
||||
"leave": "Opustit",
|
||||
"lens_model": "Model objektivu",
|
||||
"let_others_respond": "Nechte ostatní reagovat",
|
||||
"level": "Úroveň",
|
||||
"library": "Knihovna",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Vyberte polohu",
|
||||
"place": "Místo",
|
||||
"places": "Místa",
|
||||
"places_count": "{count, plural, one {{count, number} místo} few {{count, number} místa} other {{count, number} míst}}",
|
||||
"play": "Přehrávat",
|
||||
"play_memories": "Přehrát vzpomníky",
|
||||
"play_motion_photo": "Přehrát pohybovou fotografii",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Hledat",
|
||||
"search_albums": "Vyhledávejte alba",
|
||||
"search_by_context": "Vyhledávání podle obsahu",
|
||||
"search_by_description": "Vyhledávat podle popisu",
|
||||
"search_by_description_example": "Pěší turistika v Sapě",
|
||||
"search_by_filename": "Vyhledávání podle názvu nebo přípony souboru",
|
||||
"search_by_filename_example": "např. IMG_1234.JPG nebo PNG",
|
||||
"search_camera_make": "Vyhledat výrobce fotoaparátu...",
|
||||
"search_camera_model": "Vyhledat model fotoaparátu...",
|
||||
"search_city": "Vyhledat město...",
|
||||
"search_country": "Vyhledat zemi...",
|
||||
"search_for": "Vyhledat",
|
||||
"search_for_existing_person": "Vyhledat existující osobu",
|
||||
"search_no_people": "Žádní lidé",
|
||||
"search_no_people_named": "Žádní lidé se jménem \"{name}\"",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Fotky od {partner}",
|
||||
"shared_link_options": "Možnosti sdíleného odkazu",
|
||||
"shared_links": "Sdílené odkazy",
|
||||
"shared_links_description": "Sdílet fotky a videa pomocí odkazu",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, one {# sdílená fotografie a video.} few {# sdílené fotografie a videa.} other {# sdílených fotografií a videí.}}",
|
||||
"shared_with_partner": "Sdíleno s {partner}",
|
||||
"sharing": "Sdílení",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Zobrazit možnosti osoby",
|
||||
"show_progress_bar": "Zobrazit ukazatel průběhu",
|
||||
"show_search_options": "Zobrazit možnosti vyhledávání",
|
||||
"show_shared_links": "Zobrazit sdílené odkazy",
|
||||
"show_slideshow_transition": "Zobrazit přechod prezentace",
|
||||
"show_supporter_badge": "Odznak podporovatele",
|
||||
"show_supporter_badge_description": "Zobrazit odznak podporovatele",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Zrušit oblíbení",
|
||||
"unhide_person": "Zrušit skrytí osoby",
|
||||
"unknown": "Neznámý",
|
||||
"unknown_country": "Neznámá země",
|
||||
"unknown_year": "Neznámý rok",
|
||||
"unlimited": "Neomezeně",
|
||||
"unlink_motion_video": "Odpojit pohyblivé video",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Мӑшӑр хуш",
|
||||
"add_path": "Ҫулне хуш",
|
||||
"add_photos": "Сӑнӳкерчӗксем хуш",
|
||||
"add_to": "Мӗн те пулин хуш...",
|
||||
"add_to": "Мӗн те пулин хуш…",
|
||||
"add_to_album": "Альбома хуш",
|
||||
"add_to_shared_album": "Пӗрлехи альбома хуш",
|
||||
"add_url": "URL хушӑр",
|
||||
|
||||
93
i18n/da.json
93
i18n/da.json
@@ -7,7 +7,7 @@
|
||||
"actions": "Handlinger",
|
||||
"active": "Aktive",
|
||||
"activity": "Aktivitet",
|
||||
"activity_changed": "Aktivitet er {aktiveret, vælg, sandt {aktiveret} andet {deaktiveret}}",
|
||||
"activity_changed": "Aktivitet er {enabled, select, true {aktiveret} other {deaktiveret}}",
|
||||
"add": "Tilføj",
|
||||
"add_a_description": "Tilføj en beskrivelse",
|
||||
"add_a_location": "Tilføj en placering",
|
||||
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Tilføj partner",
|
||||
"add_path": "Tilføj sti",
|
||||
"add_photos": "Tilføj billeder",
|
||||
"add_to": "Tilføj til...",
|
||||
"add_to": "Tilføj til…",
|
||||
"add_to_album": "Tilføj til album",
|
||||
"add_to_shared_album": "Tilføj til delt album",
|
||||
"add_url": "Tilføj URL",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Nulstil indstillingerne til standard",
|
||||
"reset_settings_to_recent_saved": "Nulstil indstillinger til de senest gemte indstillinger",
|
||||
"scanning_library": "Scanner bibliotek",
|
||||
"search_jobs": "søg opgaver ..",
|
||||
"search_jobs": "Søg opgaver…",
|
||||
"send_welcome_email": "Send velkomst-email",
|
||||
"server_external_domain_settings": "Eksternt domæne",
|
||||
"server_external_domain_settings_description": "Domæne til offentligt delte links, inklusiv http(s)://",
|
||||
@@ -360,9 +360,9 @@
|
||||
"admin_password": "Administratoradgangskode",
|
||||
"administration": "Administration",
|
||||
"advanced": "Avanceret",
|
||||
"age_months": "Alder {months, plural, one {# month} other {# months}}",
|
||||
"age_year_months": "Alder 1 år, {måneder, flertal, en {# måned} flere {# months}}",
|
||||
"age_years": "{år, år, andre {Alder #}}",
|
||||
"age_months": "Alder {months, plural, one {# måned} other {# måneder}}",
|
||||
"age_year_months": "Alder 1 år, {months, plural, one {# måned} other {# måneder}}",
|
||||
"age_years": "{years, plural, other {Alder #}}",
|
||||
"album_added": "Album tilføjet",
|
||||
"album_added_notification_setting_description": "Modtag en emailnotifikation når du bliver tilføjet til en delt album",
|
||||
"album_cover_updated": "Albumcover opdateret",
|
||||
@@ -402,33 +402,33 @@
|
||||
"archive_or_unarchive_photo": "Arkivér eller dearkivér billede",
|
||||
"archive_size": "Arkiv størelse",
|
||||
"archive_size_description": "Konfigurer arkivstørrelsen for downloads (i GiB)",
|
||||
"archived_count": "{antal, flertal, andet {Arkiveret #}}",
|
||||
"archived_count": "{count, plural, other {Arkiveret #}}",
|
||||
"are_these_the_same_person": "Er disse den samme person?",
|
||||
"are_you_sure_to_do_this": "Er du sikker på, at du vil gøre det her?",
|
||||
"asset_added_to_album": "Tilføjet til album",
|
||||
"asset_adding_to_album": "Tilføjer til album...",
|
||||
"asset_adding_to_album": "Tilføjer til album…",
|
||||
"asset_description_updated": "Mediefilsbeskrivelse er blevet opdateret",
|
||||
"asset_filename_is_offline": "Mediefil {filename} er offline",
|
||||
"asset_has_unassigned_faces": "Aktivet har ikke-tildelte ansigter",
|
||||
"asset_hashing": "Hashing...",
|
||||
"asset_hashing": "Hashing…",
|
||||
"asset_offline": "Mediefil offline",
|
||||
"asset_offline_description": "Denne eksterne mediefil kan ikke længere findes på drevet. Kontakt venligst din Immich-administrator for hjælp.",
|
||||
"asset_skipped": "Sprunget over",
|
||||
"asset_skipped_in_trash": "I skraldespand",
|
||||
"asset_uploaded": "Uploaded",
|
||||
"asset_uploading": "Uploader...",
|
||||
"asset_uploaded": "Uploadet",
|
||||
"asset_uploading": "Uploader…",
|
||||
"assets": "elementer",
|
||||
"assets_added_count": "Tilføjet {count, plural, one {# mediefil} other {# mediefiler}}",
|
||||
"assets_added_to_album_count": "Tilføjet {count, plural, one {# mediefil} other {# mediefiler}} til albummet",
|
||||
"assets_added_to_album_count": "{count, plural, one {# mediefil} other {# mediefiler}} tilføjet til albummet",
|
||||
"assets_added_to_name_count": "Tilføjet {count, plural, one {# mediefil} other {# mediefiler}} til {hasName, select, true {<b>{name}</b>} other {nyt album}}",
|
||||
"assets_count": "{count, plural, one {# mediefil} other {# mediefiler}}",
|
||||
"assets_moved_to_trash_count": "Flyttede {count, plural, one {# mediefil} other {# mediefiler}} til papirkurven",
|
||||
"assets_permanently_deleted_count": "Slettet permanent {count, plural, one {# mediefil} other {# mediefiler}}",
|
||||
"assets_permanently_deleted_count": "{count, plural, one {# mediefil} other {# mediefiler}} slettet permanent",
|
||||
"assets_removed_count": "Fjernede {count, plural, one {# mediefil} other {# mediefiler}}",
|
||||
"assets_restore_confirmation": "Er du sikker på, at du vil gendanne alle dine aktiver i papirkurven? Du kan ikke fortryde denne handling! Bemærk, at offline mediefiler ikke kan gendannes på denne måde.",
|
||||
"assets_restored_count": "Gendannet {count, plural, one {# mediefil} other {# mediefiler}}",
|
||||
"assets_trashed_count": "Smidt {count, plural, one {# mediefil} other {# mediefiler}} i papirkurven",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} er allerede en del af albummet",
|
||||
"assets_restore_confirmation": "Er du sikker på, at du vil gendanne alle dine mediafiler i papirkurven? Du kan ikke fortryde denne handling! Bemærk, at offline mediefiler ikke kan gendannes på denne måde.",
|
||||
"assets_restored_count": "{count, plural, one {# mediefil} other {# mediefiler}} gendannet",
|
||||
"assets_trashed_count": "{count, plural, one {# mediefil} other {# mediefiler}} smidt i papirkurven",
|
||||
"assets_were_part_of_album_count": "mediefil{count, plural, one {mediefil} other {mediefiler}} er allerede en del af albummet",
|
||||
"authorized_devices": "Tilladte enheder",
|
||||
"back": "Tilbage",
|
||||
"back_close_deselect": "Tilbage, luk eller fravælg",
|
||||
@@ -441,7 +441,7 @@
|
||||
"build_image": "Byggefil",
|
||||
"bulk_delete_duplicates_confirmation": "Er du sikker på, at du vil slette alle {count, plural, one {# duplicate asset} other {# duplicate assets}}? Dette vil beholde den største fil i hver gruppe og slette alle dubletter. Denne handling kan ikke fortrydes!",
|
||||
"bulk_keep_duplicates_confirmation": "Er du sikker på, at du vil beholde {count, plural, one {# duplicate asset} other {# duplicate assets}}? Dette vil løse alle dubletgrupper uden at slette noget.",
|
||||
"bulk_trash_duplicates_confirmation": "Er du sikker på, at du vil masseslette {count, plural, one {# duplicate asset} other {# duplicate assets}}? Dette vil beholde det største aktiv i hver gruppe og smide alle andre dubletter.",
|
||||
"bulk_trash_duplicates_confirmation": "Er du sikker på, at du vil masseslette {count, plural, one {# duplikeret objekt} other {# duplikerede objekter}}? Dette vil beholde det største objekt i hver gruppe og slette alle andre dubletter.",
|
||||
"buy": "Køb Immich",
|
||||
"camera": "Kamera",
|
||||
"camera_brand": "Kameramærke",
|
||||
@@ -595,7 +595,7 @@
|
||||
"editor_crop_tool_h2_rotation": "Rotation",
|
||||
"email": "E-mail",
|
||||
"empty_trash": "Tøm papirkurv",
|
||||
"empty_trash_confirmation": "Er du sikker på, at du vil tømme papirkurven? Dette vil fjerne alle aktiver i papirkurven permanent fra Immich.\nDu kan ikke fortryde denne handling!",
|
||||
"empty_trash_confirmation": "Er du sikker på, at du vil tømme papirkurven? Dette vil fjerne alle objekter i papirkurven permanent fra Immich.\nDu kan ikke fortryde denne handling!",
|
||||
"enable": "Aktivér",
|
||||
"enabled": "Aktiveret",
|
||||
"end_date": "Slutdato",
|
||||
@@ -608,7 +608,7 @@
|
||||
"cant_apply_changes": "Ændringerne kan ikke anvendes",
|
||||
"cant_change_activity": "Kan ikke {enabled, select, true {disable} other {enable}} aktivitet",
|
||||
"cant_change_asset_favorite": "Kan ikke ændre favorit til aktiv",
|
||||
"cant_change_metadata_assets_count": "Kan ikke ændre metadata for {count, plural, one {# asset} other {# assets}}",
|
||||
"cant_change_metadata_assets_count": "Kan ikke ændre metadata for {count, plural, one {# objekt} other {# objekter}}",
|
||||
"cant_get_faces": "Kan ikke hente ansigter",
|
||||
"cant_get_number_of_comments": "Kan ikke få antallet af kommentarer",
|
||||
"cant_search_people": "Kan ikke søge efter folk",
|
||||
@@ -648,7 +648,7 @@
|
||||
"unable_to_add_partners": "Ikke i stand til at tilføje partnere",
|
||||
"unable_to_add_remove_archive": "Kan Ikke {archived, select, true {fjerne aktiv fra} other {tilføje aktiv til}} Arkiv",
|
||||
"unable_to_add_remove_favorites": "Kan ikke {favorite, select, true {tilføje aktiv til} other {fjerne aktiv fra}} favoritter",
|
||||
"unable_to_archive_unarchive": "Ude af stand til at {arkiveret, vælg, sand {arkiv} andet {arkiv}}",
|
||||
"unable_to_archive_unarchive": "Ude af stand til at {archived, select, true {arkivere} other {fjerne fra arkiv}}",
|
||||
"unable_to_change_album_user_role": "Ikke i stand til at ændre albumbrugerens rolle",
|
||||
"unable_to_change_date": "Ikke i stand til at ændre dato",
|
||||
"unable_to_change_favorite": "Kan ikke ændre favorit for aktiv",
|
||||
@@ -689,8 +689,8 @@
|
||||
"unable_to_log_out_device": "Enheden kunne ikke logges af",
|
||||
"unable_to_login_with_oauth": "Kan ikke logge på med OAuth",
|
||||
"unable_to_play_video": "Ikke i stand til at afspille video",
|
||||
"unable_to_reassign_assets_existing_person": "Kan ikke gentildele aktiver til {navn, vælg, null {en eksisterende person} anden {{name}}}",
|
||||
"unable_to_reassign_assets_new_person": "Kan ikke omfordele aktiver til en ny person",
|
||||
"unable_to_reassign_assets_existing_person": "Kunne ikke tildele mediafiler til {name, select, null {en eksisterende person} other {{name}}}",
|
||||
"unable_to_reassign_assets_new_person": "Kan ikke omfordele objekter til en ny person",
|
||||
"unable_to_refresh_user": "Ikke i stand til at genopfriske bruger",
|
||||
"unable_to_remove_album_users": "Ikke i stand til at fjerne brugere fra album",
|
||||
"unable_to_remove_api_key": "Kunne ikke fjerne API-nøgle",
|
||||
@@ -720,7 +720,7 @@
|
||||
"unable_to_unlink_account": "Ikke i stand til at frakoble konto",
|
||||
"unable_to_unlink_motion_video": "Kunne ikke fjerne linket til bevægelsesvideo",
|
||||
"unable_to_update_album_cover": "Albumomslaget kunne ikke opdateres",
|
||||
"unable_to_update_album_info": "Albumoplysningerne kunne ikke opdateres",
|
||||
"unable_to_update_album_info": "Albumsoplysningerne kunne ikke opdateres",
|
||||
"unable_to_update_library": "Ikke i stand til at opdatere bibliotek",
|
||||
"unable_to_update_location": "Ikke i stand til at opdatere sted",
|
||||
"unable_to_update_settings": "Ikke i stand til at opdatere indstillinger",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Gå til mappe",
|
||||
"go_to_search": "Gå til søgning",
|
||||
"group_albums_by": "Gruppér albummer efter...",
|
||||
"group_country": "Gruppér efter land",
|
||||
"group_no": "Ingen gruppering",
|
||||
"group_owner": "Grupper efter ejer",
|
||||
"group_places_by": "Gruppér steder efter...",
|
||||
"group_year": "Grupper efter år",
|
||||
"has_quota": "Har kvote",
|
||||
"hi_user": "Hej {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Inkludér delte albummer",
|
||||
"include_shared_partner_assets": "Inkludér delte partnermedier",
|
||||
"individual_share": "Individuel andel",
|
||||
"individual_shares": "Individuelle delinger",
|
||||
"info": "Info",
|
||||
"interval": {
|
||||
"day_at_onepm": "Hver dag kl. 13",
|
||||
@@ -809,7 +812,7 @@
|
||||
},
|
||||
"invite_people": "Inviter personer",
|
||||
"invite_to_album": "Inviter til album",
|
||||
"items_count": "{count, plural, one {# genstand} other {# genstande}}",
|
||||
"items_count": "{count, plural, one {# element} other {# elementer}}",
|
||||
"jobs": "Opgaver",
|
||||
"keep": "Behold",
|
||||
"keep_all": "Behold alle",
|
||||
@@ -822,13 +825,14 @@
|
||||
"latest_version": "Seneste version",
|
||||
"latitude": "Breddegrad",
|
||||
"leave": "Forlad",
|
||||
"lens_model": "Objektivmodel",
|
||||
"let_others_respond": "Lad andre svare",
|
||||
"level": "Niveau",
|
||||
"library": "Bibliotek",
|
||||
"library_options": "Biblioteksindstillinger",
|
||||
"light": "Lys",
|
||||
"like_deleted": "Ligesom slettet",
|
||||
"link_motion_video": "Link bevægelses video",
|
||||
"link_motion_video": "Link bevægelsesvideo",
|
||||
"link_options": "Link-indstillinger",
|
||||
"link_to_oauth": "Link til OAuth",
|
||||
"linked_oauth_account": "Tilsluttet OAuth-konto",
|
||||
@@ -864,7 +868,7 @@
|
||||
"media_type": "Medietype",
|
||||
"memories": "Minder",
|
||||
"memories_setting_description": "Administrér hvad du ser i dine minder",
|
||||
"memory": "Hukommelse",
|
||||
"memory": "Minde",
|
||||
"memory_lane_title": "Minder {title}",
|
||||
"menu": "Menu",
|
||||
"merge": "Sammenflet",
|
||||
@@ -872,7 +876,7 @@
|
||||
"merge_people_limit": "Du kan kun flette op til 5 ansigter ad gangen",
|
||||
"merge_people_prompt": "Vil du slå disse mennesker sammen? Denne handling er uigenkaldelig.",
|
||||
"merge_people_successfully": "Personer sammenflettet med succes",
|
||||
"merged_people_count": "Slået sammen {count, plural, one {# person} other {# people}}",
|
||||
"merged_people_count": "{count, plural, one {# person} other {# personer}} lagt sammen",
|
||||
"minimize": "Minimér",
|
||||
"minute": "Minut",
|
||||
"missing": "Mangler",
|
||||
@@ -923,9 +927,9 @@
|
||||
"offline_paths_description": "Disse resultater kan være på grund af manuel sletning af filer, som ikke er en del af et eksternt bibliotek.",
|
||||
"ok": "Ok",
|
||||
"oldest_first": "Ældste først",
|
||||
"onboarding": "Onboarding",
|
||||
"onboarding": "Introduktion",
|
||||
"onboarding_privacy_description": "Følgende (valgfrie) funktioner er afhængige af eksterne tjenester, og kan til enhver tid deaktiveres i administrationsindstillingerne.",
|
||||
"onboarding_theme_description": "Vælg et farvetema til din forekomst. Du kan ændre dette senere i dine indstillinger.",
|
||||
"onboarding_theme_description": "Vælg et farvetema til din instans. Du kan ændre dette senere i dine indstillinger.",
|
||||
"onboarding_welcome_description": "Lad os få din instans sat op med nogle almindelige indstillinger.",
|
||||
"onboarding_welcome_user": "Velkommen, {user}",
|
||||
"online": "Online",
|
||||
@@ -940,7 +944,7 @@
|
||||
"other": "Andet",
|
||||
"other_devices": "Andre enheder",
|
||||
"other_variables": "Andre variable",
|
||||
"owned": "Ejet",
|
||||
"owned": "Egne",
|
||||
"owner": "Ejer",
|
||||
"partner": "Partner",
|
||||
"partner_can_access": "{partner} kan tilgå",
|
||||
@@ -973,7 +977,7 @@
|
||||
"permanently_delete_assets_count": "Slet permanent {count, plural, one {asset} other {assets}}",
|
||||
"permanently_delete_assets_prompt": "Er du sikker på, at du permanent vil slette {count, plural, one {dette aktiv?} other {disse <b>#</b> aktiver?}} Dette vil også fjerne {count, plural, one {det fra dets} other {dem fra deres}} album(er).",
|
||||
"permanently_deleted_asset": "Permanent slettet medie",
|
||||
"permanently_deleted_assets_count": "Slettet permanent {count, plural, one {# aktiv} other {# aktiver}}",
|
||||
"permanently_deleted_assets_count": "{count, plural, one {# aktiv} other {# aktiver}} permanent slettet",
|
||||
"person": "Person",
|
||||
"person_hidden": "{name}{hidden, select, true { (skjult)} other {}}",
|
||||
"photo_shared_all_users": "Det ser ud til, at du har delt dine billeder med alle brugere, eller også har du ikke nogen bruger at dele med.",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Vælg et sted",
|
||||
"place": "Sted",
|
||||
"places": "Steder",
|
||||
"places_count": "{count, plural, one {{count, number} Sted} other {{count, number} Steder}}",
|
||||
"play": "Afspil",
|
||||
"play_memories": "Afspil minder",
|
||||
"play_motion_photo": "Afspil bevægelsesbillede",
|
||||
@@ -1018,11 +1023,11 @@
|
||||
"purchase_input_suggestion": "Har du en produktnøgle? Indtast nøglen nedenfor",
|
||||
"purchase_license_subtitle": "Køb Immich for at understøtte den fortsatte udvikling af tjenesten",
|
||||
"purchase_lifetime_description": "Livsvarigt køb",
|
||||
"purchase_option_title": "KØBEMULIGHEDER",
|
||||
"purchase_option_title": "KØBSMULIGHEDER",
|
||||
"purchase_panel_info_1": "At bygge Immich tager meget tid og kræfter, og vi har fuldtidsingeniører, der arbejder på det for at gøre det så godt, som vi overhovedet kan. Vores mission er, at open source-software og etisk forretningspraksis bliver en bæredygtig indtægtskilde for udviklere og at skabe et privatlivsrespekterende økosystem med reelle alternativer til udnyttende cloud-tjenester.",
|
||||
"purchase_panel_info_2": "Da vi er forpligtet til ikke at tilføje betalingsvægge, vil dette køb ikke give dig yderligere funktioner i Immich. Vi er afhængige af, at brugere som dig støtter Immichs løbende udvikling.",
|
||||
"purchase_panel_title": "Støt projektet",
|
||||
"purchase_per_server": "Per server",
|
||||
"purchase_per_server": "Pr. server",
|
||||
"purchase_per_user": "Per bruger",
|
||||
"purchase_remove_product_key": "Fjern produktnøgle",
|
||||
"purchase_remove_product_key_prompt": "Er du sikker på, at du vil fjerne produktnøglen?",
|
||||
@@ -1039,7 +1044,7 @@
|
||||
"reaction_options": "Reaktionsindstillinger",
|
||||
"read_changelog": "Læs ændringslog",
|
||||
"reassign": "Gentildel",
|
||||
"reassigned_assets_to_existing_person": "Gentildelt {count, plural, one {# aktiv} other {# aktiver}} til {name, select, null {en eksisterende person} other {{navne}}}",
|
||||
"reassigned_assets_to_existing_person": "{count, plural, one {# mediefil} other {# mediefiler}} er blevet gentildelt til {name, select, null {en eksisterende person} other {{name}}}",
|
||||
"reassigned_assets_to_new_person": "Gentildelt {count, plural, one {# aktiv} other {# aktiver}} til en ny person",
|
||||
"reassing_hint": "Tildel valgte aktiver til en eksisterende person",
|
||||
"recent": "For nylig",
|
||||
@@ -1084,7 +1089,7 @@
|
||||
"reset_people_visibility": "Nulstil personsynlighed",
|
||||
"reset_to_default": "Nulstil til standard",
|
||||
"resolve_duplicates": "Løs dubletter",
|
||||
"resolved_all_duplicates": "Løste alle dubletter",
|
||||
"resolved_all_duplicates": "Alle dubletter løst",
|
||||
"restore": "Gendan",
|
||||
"restore_all": "Gendan alle",
|
||||
"restore_user": "Gendan bruger",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Søg",
|
||||
"search_albums": "Søg i albummer",
|
||||
"search_by_context": "Søg efter kontekst",
|
||||
"search_by_description": "Søg efter beskrivelse",
|
||||
"search_by_description_example": "Vandredag i Paris",
|
||||
"search_by_filename": "Søg efter filnavn eller filtypenavn",
|
||||
"search_by_filename_example": "dvs. IMG_1234.JPG eller PNG",
|
||||
"search_camera_make": "Søg efter kameraproducent...",
|
||||
"search_camera_model": "Søg efter kameramodel...",
|
||||
"search_city": "Søg efter by...",
|
||||
"search_country": "Søg efter land...",
|
||||
"search_for": "Søg efter",
|
||||
"search_for_existing_person": "Søg efter eksisterende person",
|
||||
"search_no_people": "Ingen personer",
|
||||
"search_no_people_named": "Ingen personer med navnet \"{name}\"",
|
||||
@@ -1141,7 +1149,7 @@
|
||||
"select_photos": "Vælg billeder",
|
||||
"select_trash_all": "Vælg smid alle ud",
|
||||
"selected": "Valgt",
|
||||
"selected_count": "{count, plural, other {# valgt}}",
|
||||
"selected_count": "{count, plural, one {# valgt} other {# valgte}}",
|
||||
"send_message": "Send besked",
|
||||
"send_welcome_email": "Send velkomstemail",
|
||||
"server_offline": "Server Offline",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Billeder fra {partner}",
|
||||
"shared_link_options": "Muligheder for delt link",
|
||||
"shared_links": "Delte links",
|
||||
"shared_links_description": "Del billeder og videoer med et link",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# delte billeder & videoer.}}",
|
||||
"shared_with_partner": "Delt med {partner}",
|
||||
"sharing": "Delte",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Vis personindstillinger",
|
||||
"show_progress_bar": "Vis statuslinje",
|
||||
"show_search_options": "Vis søgeindstillinger",
|
||||
"show_shared_links": "Vis delte links",
|
||||
"show_slideshow_transition": "Vis overgang til diasshow",
|
||||
"show_supporter_badge": "Supportermærke",
|
||||
"show_supporter_badge_description": "Vis et supportermærke",
|
||||
@@ -1264,9 +1274,9 @@
|
||||
"total_usage": "Samlet forbrug",
|
||||
"trash": "Papirkurv",
|
||||
"trash_all": "Smid alle ud",
|
||||
"trash_count": "Skrald {count, number}",
|
||||
"trash_count": "Slet {count, number}",
|
||||
"trash_delete_asset": "Papirkurv/slet aktiv",
|
||||
"trash_no_results_message": "Udsmidte billeder og videoer vil kunne findes her.",
|
||||
"trash_no_results_message": "Billeder og videoer markeret til sletning vil blive vist her.",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Mediefiler i skraldespanden vil blive slettet permanent efter {days, plural, one {# dag} other {# dage}}.",
|
||||
"type": "Type",
|
||||
"unarchive": "Afakivér",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Fjern favorit",
|
||||
"unhide_person": "Hold op med at gemme person væk",
|
||||
"unknown": "Ukendt",
|
||||
"unknown_country": "Ukendt land",
|
||||
"unknown_year": "Ukendt år",
|
||||
"unlimited": "Ubegrænset",
|
||||
"unlink_motion_video": "Fjern link til bevægelsesvideo",
|
||||
@@ -1287,7 +1298,7 @@
|
||||
"unselect_all_duplicates": "Fjern markeringen af alle dubletter",
|
||||
"unstack": "Fjern fra stak",
|
||||
"unstacked_assets_count": "Ikke-stablet {count, plural, one {# aktiv} other {# aktiver}}",
|
||||
"untracked_files": "Usporede filer",
|
||||
"untracked_files": "Ikke overvågede filer",
|
||||
"untracked_files_decription": "Disse filer bliver ikke sporet af applikationen. De kan være resultatet af mislykkede flytninger, afbrudte uploads eller efterladt på grund af en fejl",
|
||||
"up_next": "Næste",
|
||||
"updated_password": "Opdaterede adgangskode",
|
||||
@@ -1298,7 +1309,7 @@
|
||||
"upload_skipped_duplicates": "Sprang over {count, plural, one {# duplet aktiv} other {# duplikerede aktiver}}",
|
||||
"upload_status_duplicates": "Dubletter",
|
||||
"upload_status_errors": "Fejl",
|
||||
"upload_status_uploaded": "Uploaded",
|
||||
"upload_status_uploaded": "Uploadet",
|
||||
"upload_success": "Upload gennemført. Opdater siden for at se nye uploadaktiver.",
|
||||
"url": "URL",
|
||||
"usage": "Forbrug",
|
||||
|
||||
37
i18n/de.json
37
i18n/de.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Partner hinzufügen",
|
||||
"add_path": "Pfad hinzufügen",
|
||||
"add_photos": "Fotos hinzufügen",
|
||||
"add_to": "Hinzufügen zu ...",
|
||||
"add_to": "Hinzufügen zu …",
|
||||
"add_to_album": "Zu Album hinzufügen",
|
||||
"add_to_shared_album": "Zu geteiltem Album hinzufügen",
|
||||
"add_url": "URL hinzufügen",
|
||||
@@ -31,7 +31,7 @@
|
||||
"add_exclusion_pattern_description": "Ausschlussmuster hinzufügen. Platzhalter, wie *, **, und ? werden unterstützt. Um alle Dateien in einem Verzeichnis namens „Raw\" zu ignorieren, „**/Raw/**“ verwenden. Um alle Dateien zu ignorieren, die auf „.tif“ enden, „**/*.tif“ verwenden. Um einen absoluten Pfad zu ignorieren, „/pfad/zum/ignorieren/**“ verwenden.",
|
||||
"asset_offline_description": "Diese Datei einer externen Bibliothek befindet sich nicht mehr auf der Festplatte und wurde in den Papierkorb verschoben. Falls die Datei innerhalb der Bibliothek verschoben wurde, überprüfe deine Zeitleiste auf die neue entsprechende Datei. Um diese Datei wiederherzustellen, stelle bitte sicher, dass Immich auf den unten stehenden Dateipfad zugreifen kann und scanne die Bibliothek.",
|
||||
"authentication_settings": "Authentifizierungseinstellungen",
|
||||
"authentication_settings_description": "Passwort-, OAuth- und sonstigen Authentifizierungseinstellungen verwalten",
|
||||
"authentication_settings_description": "Passwort-, OAuth- und sonstige Authentifizierungseinstellungen verwalten",
|
||||
"authentication_settings_disable_all": "Bist du sicher, dass du alle Anmeldemethoden deaktivieren willst? Die Anmeldung wird vollständig deaktiviert.",
|
||||
"authentication_settings_reenable": "Nutze einen <link>Server-Befehl</link> zur Reaktivierung.",
|
||||
"background_task_job": "Hintergrundaufgaben",
|
||||
@@ -187,7 +187,7 @@
|
||||
"oauth_issuer_url": "Aussteller-URL",
|
||||
"oauth_mobile_redirect_uri": "Mobile Umleitungs-URI",
|
||||
"oauth_mobile_redirect_uri_override": "Mobile Umleitungs-URI überschreiben",
|
||||
"oauth_mobile_redirect_uri_override_description": "Einschalten, wenn der OAuth-Provider keine mobile URI wie '{callback}' erlaubt",
|
||||
"oauth_mobile_redirect_uri_override_description": "Einschalten, wenn der OAuth-Anbieter keine mobile URI wie '{callback}' erlaubt",
|
||||
"oauth_profile_signing_algorithm": "Algorithmus zur Profilsignierung",
|
||||
"oauth_profile_signing_algorithm_description": "Dieser Algorithmus wird für die Signatur des Benutzerprofils verwendet.",
|
||||
"oauth_scope": "Umfang",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Einstellungen auf Standard zurücksetzen",
|
||||
"reset_settings_to_recent_saved": "Einstellungen auf die zuletzt gespeicherten Einstellungen zurücksetzen",
|
||||
"scanning_library": "Bibliothek scannen",
|
||||
"search_jobs": "Aufgaben suchen...",
|
||||
"search_jobs": "Suchaufgaben…",
|
||||
"send_welcome_email": "Begrüssungsmail senden",
|
||||
"server_external_domain_settings": "Externe Domain",
|
||||
"server_external_domain_settings_description": "Domäne für öffentlich freigegebene Links, einschließlich http(s)://",
|
||||
@@ -290,7 +290,7 @@
|
||||
"transcoding_constant_rate_factor_description": "Videoqualitätsstufe. Typische Werte sind 23 für H.264, 28 für HEVC, 31 für VP9 und 35 für AV1. Ein niedrigerer Wert ist besser, erzeugt aber größere Dateien.",
|
||||
"transcoding_disabled_description": "Videos nicht transkodieren, dies kann die Wiedergabe auf manchen Geräten beeinträchtigen",
|
||||
"transcoding_encoding_options": "Kodierungsoptionen",
|
||||
"transcoding_encoding_options_description": "Setze Codec, Auflösung, Qualität und andere Optionen für kodierte Videos",
|
||||
"transcoding_encoding_options_description": "Setze Codec, Auflösung, Qualität und andere Optionen für die kodierten Videos",
|
||||
"transcoding_hardware_acceleration": "Hardware-Beschleunigung",
|
||||
"transcoding_hardware_acceleration_description": "Experimentell; viel schneller, aber bei gleicher Bitrate mit geringerer Qualität",
|
||||
"transcoding_hardware_decoding": "Hardware-Dekodierung",
|
||||
@@ -313,7 +313,7 @@
|
||||
"transcoding_reference_frames_description": "Die Anzahl der Bilder, auf die bei der Komprimierung eines bestimmten Bildes Bezug genommen wird. Höhere Werte verbessern die Komprimierungseffizienz, verlangsamen aber die Kodierung. 0 setzt diesen Wert automatisch.",
|
||||
"transcoding_required_description": "Nur Videos in einem nicht akzeptierten Format",
|
||||
"transcoding_settings": "Einstellungen für die Videotranskodierung",
|
||||
"transcoding_settings_description": "Verwalten welche Videos transkodiert werden und wie diese verarbeitet werden",
|
||||
"transcoding_settings_description": "Verwalten welche Videos transkodiert und wie diese verarbeitet werden",
|
||||
"transcoding_target_resolution": "Ziel-Auflösung",
|
||||
"transcoding_target_resolution_description": "Höhere Auflösungen können mehr Details erhalten, benötigen aber mehr Zeit für die Codierung, haben größere Dateigrößen und können die Reaktionszeit der Anwendung beeinträchtigen.",
|
||||
"transcoding_temporal_aq": "Temporäre AQ",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Ist das dieselbe Person?",
|
||||
"are_you_sure_to_do_this": "Bist du sicher, dass du das tun willst?",
|
||||
"asset_added_to_album": "Zum Album hinzugefügt",
|
||||
"asset_adding_to_album": "Hinzufügen zum Album...",
|
||||
"asset_adding_to_album": "Hinzufügen zum Album…",
|
||||
"asset_description_updated": "Die Beschreibung der Datei wurde aktualisiert",
|
||||
"asset_filename_is_offline": "Datei {filename} ist offline",
|
||||
"asset_has_unassigned_faces": "Datei hat nicht zugewiesene Gesichter",
|
||||
"asset_hashing": "Berechnung des Hashwerts...",
|
||||
"asset_hashing": "Berechne Prüfsumme…",
|
||||
"asset_offline": "Datei offline",
|
||||
"asset_offline_description": "Diese externe Datei ist nicht mehr auf dem Datenträger vorhanden. Bitte wende dich an deinen Immich-Administrator, um Hilfe zu erhalten.",
|
||||
"asset_skipped": "Übersprungen",
|
||||
"asset_skipped_in_trash": "Im Papierkorb",
|
||||
"asset_uploaded": "Hochgeladen",
|
||||
"asset_uploading": "Hochladen...",
|
||||
"asset_uploading": "Hochladen…",
|
||||
"assets": "Dateien",
|
||||
"assets_added_count": "{count, plural, one {# Datei} other {# Dateien}} hinzugefügt",
|
||||
"assets_added_to_album_count": "{count, plural, one {# Datei} other {# Dateien}} zum Album hinzugefügt",
|
||||
@@ -687,7 +687,7 @@
|
||||
"unable_to_load_liked_status": "Gewünschter Status kann nicht geladen werden",
|
||||
"unable_to_log_out_all_devices": "Konnte nicht von allen Geräten abmelden",
|
||||
"unable_to_log_out_device": "Konnte nicht vom Gerät abmelden",
|
||||
"unable_to_login_with_oauth": "Konnte nicht mit OAuth anmelden",
|
||||
"unable_to_login_with_oauth": "Anmeldung mit OAuth nicht möglich",
|
||||
"unable_to_play_video": "Das Video kann nicht wiedergegeben werden",
|
||||
"unable_to_reassign_assets_existing_person": "Kann Dateien nicht {name, select, null {einer vorhandenen Person} other {{name}}} zuweisen",
|
||||
"unable_to_reassign_assets_new_person": "Dateien konnten nicht einer neuen Person zugeordnet werden",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Gehe zu Ordner",
|
||||
"go_to_search": "Zur Suche gehen",
|
||||
"group_albums_by": "Alben gruppieren nach...",
|
||||
"group_country": "Nach Land gruppieren",
|
||||
"group_no": "Keine Gruppierung",
|
||||
"group_owner": "Gruppierung nach Besitzer",
|
||||
"group_places_by": "Orte gruppieren nach...",
|
||||
"group_year": "Gruppierung nach Jahr",
|
||||
"has_quota": "Kontingent",
|
||||
"hi_user": "Hallo {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Freigegebene Alben einbeziehen",
|
||||
"include_shared_partner_assets": "Geteilte Partner-Dateien mit einbeziehen",
|
||||
"individual_share": "Individuelle Freigabe",
|
||||
"individual_shares": "Individuelles Teilen",
|
||||
"info": "Info",
|
||||
"interval": {
|
||||
"day_at_onepm": "Täglich um 13:00 Uhr",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Aktuellste Version",
|
||||
"latitude": "Breitengrad",
|
||||
"leave": "Verlassen",
|
||||
"lens_model": "Objektivmodell",
|
||||
"let_others_respond": "Antworten zulassen",
|
||||
"level": "Level",
|
||||
"library": "Bibliothek",
|
||||
@@ -830,7 +834,7 @@
|
||||
"like_deleted": "Like gelöscht",
|
||||
"link_motion_video": "Bewegungsvideo verknüpfen",
|
||||
"link_options": "Link-Optionen",
|
||||
"link_to_oauth": "Link zu OAuth",
|
||||
"link_to_oauth": "Mit OAuth verknüpfen",
|
||||
"linked_oauth_account": "Verknüpftes OAuth-Konto",
|
||||
"list": "Liste",
|
||||
"loading": "Laden",
|
||||
@@ -855,7 +859,7 @@
|
||||
"manage_your_account": "Dein Konto verwalten",
|
||||
"manage_your_api_keys": "Deine API-Schlüssel verwalten",
|
||||
"manage_your_devices": "Deine eingeloggten Geräte verwalten",
|
||||
"manage_your_oauth_connection": "Deine OAuth-Verbindung verwalten",
|
||||
"manage_your_oauth_connection": "Deine OAuth-Verknüpfung verwalten",
|
||||
"map": "Karte",
|
||||
"map_marker_for_images": "Kartenmarkierung für Bilder, die in {city}, {country} aufgenommen wurden",
|
||||
"map_marker_with_image": "Kartenmarkierung mit Bild",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Wähle einen Ort",
|
||||
"place": "Ort",
|
||||
"places": "Orte",
|
||||
"places_count": "{count, plural, one {{count, number} Ort} other {{count, number} Orte}}",
|
||||
"play": "Abspielen",
|
||||
"play_memories": "Erinnerungen abspielen",
|
||||
"play_motion_photo": "Bewegte Bilder abspielen",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Suche",
|
||||
"search_albums": "Album suchen",
|
||||
"search_by_context": "Suche nach Kontext",
|
||||
"search_by_description": "Nach Beschreibung suchen",
|
||||
"search_by_description_example": "Wandern in Sapa",
|
||||
"search_by_filename": "Suche nach Dateiname oder -erweiterung",
|
||||
"search_by_filename_example": "z.B. IMG_1234.JPG oder PNG",
|
||||
"search_camera_make": "Suche nach Kameramarke...",
|
||||
"search_camera_model": "Suche nach Kameramodell...",
|
||||
"search_city": "Suche nach Stadt...",
|
||||
"search_country": "Suche nach Land...",
|
||||
"search_for": "Suche nach",
|
||||
"search_for_existing_person": "Suche nach vorhandener Person",
|
||||
"search_no_people": "Keine Personen",
|
||||
"search_no_people_named": "Keine Person mit dem Namen \"{name}\"",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Fotos von {partner}",
|
||||
"shared_link_options": "Optionen für geteilten Link",
|
||||
"shared_links": "Geteilte Links",
|
||||
"shared_links_description": "Teile Fotos und Videos mit einem Link",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, one {# geteiltes Foto oder Video.} other {# geteilte Fotos & Videos.}}",
|
||||
"shared_with_partner": "Geteilt mit {partner}",
|
||||
"sharing": "Geteiltes",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Personen-Optionen anzeigen",
|
||||
"show_progress_bar": "Fortschrittsbalken anzeigen",
|
||||
"show_search_options": "Suchoptionen anzeigen",
|
||||
"show_shared_links": "Zeige geteilte Links",
|
||||
"show_slideshow_transition": "Slideshow-Übergang anzeigen",
|
||||
"show_supporter_badge": "Unterstützerabzeichen",
|
||||
"show_supporter_badge_description": "Zeige Unterstützerabzeichen",
|
||||
@@ -1274,11 +1284,12 @@
|
||||
"unfavorite": "Entfavorisieren",
|
||||
"unhide_person": "Person einblenden",
|
||||
"unknown": "Unbekannt",
|
||||
"unknown_country": "Unbekanntes Land",
|
||||
"unknown_year": "Unbekanntes Jahr",
|
||||
"unlimited": "Unlimitiert",
|
||||
"unlink_motion_video": "Verknüpfung zum Bewegungsvideo aufheben",
|
||||
"unlink_oauth": "OAuth entfernen",
|
||||
"unlinked_oauth_account": "Nicht verknüpftes OAuth-Konto",
|
||||
"unlinked_oauth_account": "OAuth-Konto entfernt",
|
||||
"unnamed_album": "Unbenanntes Album",
|
||||
"unnamed_album_delete_confirmation": "Bist du sicher, dass du dieses Album löschen willst?",
|
||||
"unnamed_share": "Unbenannte Freigabe",
|
||||
|
||||
33
i18n/el.json
33
i18n/el.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Προσθήκη συνεργάτη",
|
||||
"add_path": "Προσθήκη διαδρομής",
|
||||
"add_photos": "Προσθήκη φωτογραφιών",
|
||||
"add_to": "Προσθήκη σε...",
|
||||
"add_to": "Προσθήκη σε…",
|
||||
"add_to_album": "Προσθήκη σε άλμπουμ",
|
||||
"add_to_shared_album": "Προσθήκη σε κοινόχρηστο άλμπουμ",
|
||||
"add_url": "Προσθήκη Συνδέσμου",
|
||||
@@ -114,24 +114,24 @@
|
||||
"machine_learning_facial_recognition": "Αναγνώριση Προσώπου",
|
||||
"machine_learning_facial_recognition_description": "Εντοπισμός, αναγνώριση και ομαδοποίηση προσώπων που υπάρχουν σε εικόνες",
|
||||
"machine_learning_facial_recognition_model": "Μοντέλο αναγνώρισης προσώπου",
|
||||
"machine_learning_facial_recognition_model_description": "Τα μοντέλα παρατίθενται με φθίνουσα σειρά μεγέθους. Τα μεγαλύτερα μοντέλα είναι πιο αργά και χρησιμοποιούν περισσότερη μνήμη, αλλά παράγουν καλύτερα αποτελέσματα. Σημειώστε ότι πρέπει να εκτελέσετε ξανά την εργασία Ανίχνευση προσώπου για όλες τις εικόνες κατά την αλλαγή ενός μοντέλου.",
|
||||
"machine_learning_facial_recognition_model_description": "Τα μοντέλα παρατίθενται με φθίνουσα σειρά μεγέθους. Τα μεγαλύτερα μοντέλα είναι πιο αργά και χρησιμοποιούν περισσότερη μνήμη, αλλά παράγουν καλύτερα αποτελέσματα. Σημειώστε ότι πρέπει να επανεκτελέσετε την εργασία \"Ανίχνευση Προσώπου\" για όλες τις εικόνες μετά την αλλαγή μοντέλου.",
|
||||
"machine_learning_facial_recognition_setting": "Ενεργοποίηση αναγνώρισης προσώπου",
|
||||
"machine_learning_facial_recognition_setting_description": "Αν απενεργοποιηθεί, οι εικόνες δεν θα κωδικοποιούνται για αναγνώριση προσώπου και δεν θα συμπληρώνουν την ενότητα Άτομα στη σελίδα Περιήγησης.",
|
||||
"machine_learning_max_detection_distance": "Μέγιστη απόσταση ανίχνευσης",
|
||||
"machine_learning_max_detection_distance_description": "Η μέγιστη απόσταση μεταξύ δύο εικόνων για να θεωρηθούν διπλότυπες, που κυμαίνεται από 0,001-0,1. Οι υψηλότερες τιμές θα εντοπίσουν περισσότερες διπλότυπες, αλλά μπορεί να οδηγήσουν σε ψευδώς θετικά αποτελέσματα.",
|
||||
"machine_learning_max_recognition_distance": "Μέγιστη απόσταση αναγνώρισης",
|
||||
"machine_learning_max_recognition_distance_description": "Η μέγιστη απόσταση μεταξύ δύο προσώπων για να θεωρείται το ίδιο άτομο, που κυμαίνεται από 0-2. Η μείωση αυτή μπορεί να αποτρέψει την επισήμανση δύο ατόμων ως το ίδιο άτομο, ενώ η αύξηση της μπορεί να αποτρέψει την επισήμανση του ίδιου ατόμου ως δύο διαφορετικών ατόμων. Λάβετε υπόψη ότι είναι πιο εύκολο να συγχωνεύσετε δύο άτομα παρά να χωρίσετε ένα άτομο στα δύο, οπότε προτιμήστε ένα χαμηλότερο όριο, όταν αυτό είναι δυνατό.",
|
||||
"machine_learning_max_recognition_distance_description": "Η μέγιστη απόσταση μεταξύ δύο προσώπων για να θεωρείται το ίδιο άτομο, που κυμαίνεται από 0-2. Η μείωση αυτής της τιμής μπορεί να αποτρέψει την επισήμανση δύο ατόμων ως το ίδιο άτομο, ενώ η αύξηση της μπορεί να αποτρέψει την επισήμανση του ίδιου ατόμου ως δύο διαφορετικών ατόμων. Λάβετε υπόψη ότι είναι πιο εύκολο να συγχωνεύσετε δύο άτομα παρά να χωρίσετε ένα άτομο στα δύο, οπότε προτιμήστε ένα χαμηλότερο όριο, όταν αυτό είναι δυνατό.",
|
||||
"machine_learning_min_detection_score": "Ελάχιστο σκορ ανίχνευσης",
|
||||
"machine_learning_min_detection_score_description": "Ελάχιστο σκορ εμπιστοσύνης για ανίχνευση προσώπου από 0-1. Οι χαμηλότερες τιμές θα εντοπίσουν περισσότερα πρόσωπα, αλλά μπορεί να οδηγήσουν σε ψευδώς θετικά αποτελέσματα.",
|
||||
"machine_learning_min_recognized_faces": "Ελάχιστα αναγνωρισμένα πρόσωπα",
|
||||
"machine_learning_min_recognized_faces_description": "Ο ελάχιστος αριθμός αναγνωρισμένων προσώπων για ένα άτομο που θα δημιουργηθεί. Η αύξηση αυτή καθιστά την Αναγνώριση Προσώπου πιο ακριβή με το κόστος να αυξηθεί η πιθανότητα να μην εκχωρηθεί ένα πρόσωπο σε ένα άτομο.",
|
||||
"machine_learning_settings": "Ρυθμίσεις Μηχανικής Εκμάθησης",
|
||||
"machine_learning_settings_description": "Διαχειριστείτε τις λειτουργίες και τις ρυθμίσεις μηχανικής εκμάθησης",
|
||||
"machine_learning_settings": "Ρυθμίσεις Μηχανικής Μάθησης",
|
||||
"machine_learning_settings_description": "Διαχειριστείτε τις λειτουργίες και τις ρυθμίσεις μηχανικής μάθησης",
|
||||
"machine_learning_smart_search": "Έξυπνη Αναζήτηση",
|
||||
"machine_learning_smart_search_description": "Αναζητήστε εικόνες σημασιολογικά χρησιμοποιώντας ενσωματώσεις CLIP",
|
||||
"machine_learning_smart_search_enabled": "Ενεργοποίηση έξυπνης αναζήτησης",
|
||||
"machine_learning_smart_search_enabled_description": "Αν απενεργοποιηθεί, οι εικόνες δεν θα κωδικοποιούνται για έξυπνη αναζήτηση.",
|
||||
"machine_learning_url_description": "Η διεύθυνση URL του διακομιστή μηχανικής εκμάθησης. Αν παρέχονται περισσότερες από μία διευθύνσεις URL, τότε, κάθε διακομιστής θα προσπαθήσει να συνδεθεί διαδοχικά, από την πρώτη μέχρι την τελευταία, έως ότου απαντήσει επιτυχώς.",
|
||||
"machine_learning_url_description": "Η διεύθυνση URL του διακομιστή μηχανικής μάθησης. Αν παρέχονται περισσότερες από μία διευθύνσεις, τότε θα γίνει προσπάθεια σύνδεσης σε κάθε μια διαδοχικά από την πρώτη μέχρι την τελευταία, έως ότου κάποια να είναι επιτυχής.",
|
||||
"manage_concurrency": "Διαχείριση ταυτόχρονη εκτέλεσης",
|
||||
"manage_log_settings": "Διαχείριση ρυθμίσεων αρχείου καταγραφής",
|
||||
"map_dark_style": "Σκούρο Θέμα",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Επαναφορά προεπιλεγμένων ρυθμίσεων",
|
||||
"reset_settings_to_recent_saved": "Επαναφορά ρυθμίσεων στις πρόσφατα αποθηκευμένες ρυθμίσεις",
|
||||
"scanning_library": "Σάρωση βιβλιοθήκης",
|
||||
"search_jobs": "Αναζήτηση εργασιών...",
|
||||
"search_jobs": "Αναζήτηση εργασιών…",
|
||||
"send_welcome_email": "Αποστολή email καλωσορίσματος",
|
||||
"server_external_domain_settings": "Εξωτερική διεύθυνση τομέα",
|
||||
"server_external_domain_settings_description": "Διεύθυνση τομέα για δημόσιους κοινούς συνδέσμους, περιλαμβανομένου του http(s)://",
|
||||
@@ -232,7 +232,7 @@
|
||||
"sidecar_job": "Μεταδεδομένα συνοδευτικού αρχείου",
|
||||
"sidecar_job_description": "Ανακάλυψη ή συγχρονισμός των μεταδεδομένων του συνοδευτικού αρχείου από το σύστημα αρχείων",
|
||||
"slideshow_duration_description": "Αριθμός δευτερολέπτων για την εμφάνιση κάθε εικόνας",
|
||||
"smart_search_job_description": "Εκτέλεση της μηχανικής εκμάθησης, σε αρχεία, για την υποστήριξη της έξυπνης αναζήτησης",
|
||||
"smart_search_job_description": "Εκτέλεση της μηχανικής μάθησης, σε αρχεία, για την υποστήριξη της έξυπνης αναζήτησης",
|
||||
"storage_template_date_time_description": "Η χρονική σήμανση της δημιουργίας του αρχείου, χρησιμοποιείται για τις πληροφορίες ημερομηνίας και ώρας",
|
||||
"storage_template_date_time_sample": "Χρόνος δείγματος {date}",
|
||||
"storage_template_enable_description": "Ενεργοποίηση του μηχανισμού των προτύπων αποθήκευσης",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Είναι το ίδιο άτομο;",
|
||||
"are_you_sure_to_do_this": "Είστε σίγουροι ότι θέλετε να το κάνετε αυτό;",
|
||||
"asset_added_to_album": "Προστέθηκε στο άλμπουμ",
|
||||
"asset_adding_to_album": "Προστίθεται στο άλμπουμ...",
|
||||
"asset_adding_to_album": "Προστίθεται στο άλμπουμ…",
|
||||
"asset_description_updated": "Η περιγραφή του αντικειμένου έχει ενημερωθεί",
|
||||
"asset_filename_is_offline": "Το αντικείμενο {filename} είναι εκτός σύνδεσης",
|
||||
"asset_has_unassigned_faces": "Το αντικείμενο έχει μη ανατεθειμένα πρόσωπα",
|
||||
"asset_hashing": "Δημιουργία κατακερματισμού...",
|
||||
"asset_hashing": "Δημιουργία κατακερματισμού…",
|
||||
"asset_offline": "Αντικείμενο εκτός σύνδεσης",
|
||||
"asset_offline_description": "Αυτό το εξωτερικό αντικείμενο δεν βρέθηκε πλέον στον δίσκο. Παρακαλώ επικοινωνήστε με τον διαχειριστή του Immich για βοήθεια.",
|
||||
"asset_skipped": "Παραλείφθηκε",
|
||||
"asset_skipped_in_trash": "Στον κάδο απορριμμάτων",
|
||||
"asset_uploaded": "Ανεβάστηκε",
|
||||
"asset_uploading": "Ανεβάζεται...",
|
||||
"asset_uploading": "Ανεβάζεται…",
|
||||
"assets": "Αντικείμενα",
|
||||
"assets_added_count": "Προστέθηκε {count, plural, one {# αρχείο} other {# αρχεία}}",
|
||||
"assets_added_to_album_count": "Προστέθηκε {count, plural, one {# αρχείο} other {# αρχεία}} στο άλμπουμ",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Μετάβαση στο φάκελο",
|
||||
"go_to_search": "Πηγαίνετε στην αναζήτηση",
|
||||
"group_albums_by": "Ομαδοποίηση άλμπουμ κατά...",
|
||||
"group_country": "Ομαδοποίηση κατά χώρα",
|
||||
"group_no": "Καμία ομοδοποίηση",
|
||||
"group_owner": "Ομαδοποίηση κατά ιδιοκτήτη",
|
||||
"group_places_by": "Ομοδοποίηση τοποθεσιών κατά...",
|
||||
"group_year": "Ομαδοποίηση κατά έτος",
|
||||
"has_quota": "Έχει ποσόστωση",
|
||||
"hi_user": "Γειά σου {name} {email}",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Συμπερίληψη διαμοιρασμένων άλμπουμ",
|
||||
"include_shared_partner_assets": "Συμπερίληψη των στοιχείων των συνεργατών που έχουν κοινοποιηθεί",
|
||||
"individual_share": "Μεμονωμένος διαμοιρασμός",
|
||||
"individual_shares": "Μεμονωμένες κοινοποιήσεις",
|
||||
"info": "Πληροφορίες",
|
||||
"interval": {
|
||||
"day_at_onepm": "Κάθε μέρα στη 1μμ",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Τελευταία Έκδοση",
|
||||
"latitude": "Γεωγραφικό πλάτος",
|
||||
"leave": "Εγκατάλειψη",
|
||||
"lens_model": "Μοντέλο φακού",
|
||||
"let_others_respond": "Επέτρεψε σε άλλους να απαντήσουν",
|
||||
"level": "Επίπεδο",
|
||||
"library": "Βιβλιοθήκη",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Επιλέξτε μια τοποθεσία",
|
||||
"place": "Τοποθεσία",
|
||||
"places": "Τοποθεσίες",
|
||||
"places_count": "{count, plural, one {{count} Τοποθεσία} other {{count} Τοποθεσίες}}",
|
||||
"play": "Αναπαραγωγή",
|
||||
"play_memories": "Αναπαραγωγή αναμνήσεων",
|
||||
"play_motion_photo": "Αναπαραγωγή Κινούμενης Φωτογραφίας",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Αναζήτηση",
|
||||
"search_albums": "Αναζήτηση άλμπουμ",
|
||||
"search_by_context": "Αναζήτηση με βάση το πλαίσιο",
|
||||
"search_by_description": "Αναζήτηση με βάση την περιγραφή",
|
||||
"search_by_description_example": "Ημερήσια πεζοπορία στο Πάπιγκο",
|
||||
"search_by_filename": "Αναζήτηση βάσει ονόματος αρχείου ή επέκτασης αρχείου",
|
||||
"search_by_filename_example": "π.χ. IMG_1234.JPG ή PNG",
|
||||
"search_camera_make": "Αναζήτηση κατασκευαστή κάμερας...",
|
||||
"search_camera_model": "Αναζήτηση μοντέλου κάμερας...",
|
||||
"search_city": "Αναζήτηση πόλης...",
|
||||
"search_country": "Αναζήτηση χώρας...",
|
||||
"search_for": "Αναζήτηση για",
|
||||
"search_for_existing_person": "Αναζήτηση υπάρχοντος ατόμου",
|
||||
"search_no_people": "Κανένα άτομο",
|
||||
"search_no_people_named": "Κανένα άτομο με όνομα \"{name}\"",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Φωτογραφίες από {partner}",
|
||||
"shared_link_options": "Επιλογές κοινόχρηστου συνδέσμου",
|
||||
"shared_links": "Κοινόχρηστοι σύνδεσμοι",
|
||||
"shared_links_description": "Μοιραστείτε φωτογραφίες και βίντεο με σύνδεσμο",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# κοινόχρηστες φωτογραφίες & βίντεο.}}",
|
||||
"shared_with_partner": "Σε κοινή χρήση με {partner}",
|
||||
"sharing": "Κοινοποίηση",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Εμφάνιση επιλογών ατόμου",
|
||||
"show_progress_bar": "Εμφάνιση γραμμής προόδου",
|
||||
"show_search_options": "Εμφάνιση επιλογών αναζήτησης",
|
||||
"show_shared_links": "Εμφάνιση κοινών συνδέσμων",
|
||||
"show_slideshow_transition": "Εμφάνιση μετάβασης παρουσίασης",
|
||||
"show_supporter_badge": "Σήμα υποστηρικτή",
|
||||
"show_supporter_badge_description": "Εμφάνιση σήματος υποστηρικτή",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Αποεπιλογή από τα αγαπημένα",
|
||||
"unhide_person": "Αναίρεση απόκρυψης ατόμου",
|
||||
"unknown": "Άγνωστο",
|
||||
"unknown_country": "Άγνωστη Χώρα",
|
||||
"unknown_year": "Άγνωστο Έτος",
|
||||
"unlimited": "Απεριόριστο",
|
||||
"unlink_motion_video": "Αποσυνδέστε το βίντεο κίνησης",
|
||||
|
||||
38
i18n/en.json
38
i18n/en.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Add partner",
|
||||
"add_path": "Add path",
|
||||
"add_photos": "Add photos",
|
||||
"add_to": "Add to...",
|
||||
"add_to": "Add to…",
|
||||
"add_to_album": "Add to album",
|
||||
"add_to_shared_album": "Add to shared album",
|
||||
"add_url": "Add URL",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Reset settings to default",
|
||||
"reset_settings_to_recent_saved": "Reset settings to the recent saved settings",
|
||||
"scanning_library": "Scanning library",
|
||||
"search_jobs": "Search jobs...",
|
||||
"search_jobs": "Search jobs…",
|
||||
"send_welcome_email": "Send welcome email",
|
||||
"server_external_domain_settings": "External domain",
|
||||
"server_external_domain_settings_description": "Domain for public shared links, including http(s)://",
|
||||
@@ -352,6 +352,8 @@
|
||||
"version_check_enabled_description": "Enable version check",
|
||||
"version_check_implications": "The version check feature relies on periodic communication with github.com",
|
||||
"version_check_settings": "Version Check",
|
||||
"memory_cleanup_job": "Memory cleanup",
|
||||
"memory_generate_job": "Memory generation",
|
||||
"version_check_settings_description": "Enable/disable the new version notification",
|
||||
"video_conversion_job": "Transcode videos",
|
||||
"video_conversion_job_description": "Transcode videos for wider compatibility with browsers and devices"
|
||||
@@ -406,17 +408,17 @@
|
||||
"are_these_the_same_person": "Are these the same person?",
|
||||
"are_you_sure_to_do_this": "Are you sure you want to do this?",
|
||||
"asset_added_to_album": "Added to album",
|
||||
"asset_adding_to_album": "Adding to album...",
|
||||
"asset_adding_to_album": "Adding to album…",
|
||||
"asset_description_updated": "Asset description has been updated",
|
||||
"asset_filename_is_offline": "Asset {filename} is offline",
|
||||
"asset_has_unassigned_faces": "Asset has unassigned faces",
|
||||
"asset_hashing": "Hashing...",
|
||||
"asset_hashing": "Hashing…",
|
||||
"asset_offline": "Asset Offline",
|
||||
"asset_offline_description": "This external asset is no longer found on disk. Please contact your Immich administrator for help.",
|
||||
"asset_skipped": "Skipped",
|
||||
"asset_skipped_in_trash": "In trash",
|
||||
"asset_uploaded": "Uploaded",
|
||||
"asset_uploading": "Uploading...",
|
||||
"asset_uploading": "Uploading…",
|
||||
"assets": "Assets",
|
||||
"assets_added_count": "Added {count, plural, one {# asset} other {# assets}}",
|
||||
"assets_added_to_album_count": "Added {count, plural, one {# asset} other {# assets}} to the album",
|
||||
@@ -481,6 +483,7 @@
|
||||
"comments_are_disabled": "Comments are disabled",
|
||||
"confirm": "Confirm",
|
||||
"confirm_admin_password": "Confirm Admin Password",
|
||||
"confirm_delete_face": "Are you sure you want to delete {name} face from the asset?",
|
||||
"confirm_delete_shared_link": "Are you sure you want to delete this shared link?",
|
||||
"confirm_keep_this_delete_others": "All other assets in the stack will be deleted except for this asset. Are you sure you want to continue?",
|
||||
"confirm_password": "Confirm password",
|
||||
@@ -523,16 +526,17 @@
|
||||
"date_range": "Date range",
|
||||
"day": "Day",
|
||||
"deduplicate_all": "Deduplicate All",
|
||||
"deduplication_info": "Deduplication Info",
|
||||
"deduplication_info_description": "To automatically preselect assets and remove duplicates in bulk, we look at:",
|
||||
"deduplication_criteria_1": "Image size in bytes",
|
||||
"deduplication_criteria_2": "Count of EXIF data",
|
||||
"deduplication_info": "Deduplication Info",
|
||||
"deduplication_info_description": "To automatically preselect assets and remove duplicates in bulk, we look at:",
|
||||
"default_locale": "Default Locale",
|
||||
"default_locale_description": "Format dates and numbers based on your browser locale",
|
||||
"delete": "Delete",
|
||||
"delete_album": "Delete album",
|
||||
"delete_api_key_prompt": "Are you sure you want to delete this API key?",
|
||||
"delete_duplicates_confirmation": "Are you sure you want to permanently delete these duplicates?",
|
||||
"delete_face": "Delete face",
|
||||
"delete_key": "Delete key",
|
||||
"delete_library": "Delete Library",
|
||||
"delete_link": "Delete link",
|
||||
@@ -600,6 +604,7 @@
|
||||
"enabled": "Enabled",
|
||||
"end_date": "End date",
|
||||
"error": "Error",
|
||||
"error_delete_face": "Error deleting face from asset",
|
||||
"error_loading_image": "Error loading image",
|
||||
"error_title": "Error - Something went wrong",
|
||||
"errors": {
|
||||
@@ -763,11 +768,13 @@
|
||||
"get_help": "Get Help",
|
||||
"getting_started": "Getting Started",
|
||||
"go_back": "Go back",
|
||||
"go_to_search": "Go to search",
|
||||
"go_to_folder": "Go to folder",
|
||||
"go_to_search": "Go to search",
|
||||
"group_albums_by": "Group albums by...",
|
||||
"group_country": "Group by country",
|
||||
"group_no": "No grouping",
|
||||
"group_owner": "Group by owner",
|
||||
"group_places_by": "Group places by...",
|
||||
"group_year": "Group by year",
|
||||
"has_quota": "Has quota",
|
||||
"hi_user": "Hi {name} ({email})",
|
||||
@@ -800,6 +807,7 @@
|
||||
"include_shared_albums": "Include shared albums",
|
||||
"include_shared_partner_assets": "Include shared partner assets",
|
||||
"individual_share": "Individual share",
|
||||
"individual_shares": "Individual shares",
|
||||
"info": "Info",
|
||||
"interval": {
|
||||
"day_at_onepm": "Every day at 1pm",
|
||||
@@ -985,6 +993,7 @@
|
||||
"pick_a_location": "Pick a location",
|
||||
"place": "Place",
|
||||
"places": "Places",
|
||||
"places_count": "{count, plural, one {{count, number} Place} other {{count, number} Places}}",
|
||||
"play": "Play",
|
||||
"play_memories": "Play memories",
|
||||
"play_motion_photo": "Play Motion Photo",
|
||||
@@ -1069,6 +1078,8 @@
|
||||
"remove_url": "Remove URL",
|
||||
"remove_user": "Remove user",
|
||||
"removed_api_key": "Removed API Key: {name}",
|
||||
"removed_memory": "Removed memory",
|
||||
"removed_photo_from_memory": "Removed photo from memory",
|
||||
"removed_from_archive": "Removed from archive",
|
||||
"removed_from_favorites": "Removed from favorites",
|
||||
"removed_from_favorites_count": "{count, plural, other {Removed #}} from favorites",
|
||||
@@ -1108,6 +1119,8 @@
|
||||
"search": "Search",
|
||||
"search_albums": "Search albums",
|
||||
"search_by_context": "Search by context",
|
||||
"search_by_description": "Search by description",
|
||||
"search_by_description_example": "Hiking day in Sapa",
|
||||
"search_by_filename": "Search by file name or extension",
|
||||
"search_by_filename_example": "i.e. IMG_1234.JPG or PNG",
|
||||
"search_camera_make": "Search camera make...",
|
||||
@@ -1127,6 +1140,7 @@
|
||||
"search_timezone": "Search timezone...",
|
||||
"search_type": "Search type",
|
||||
"search_your_photos": "Search your photos",
|
||||
"search_rating": "Search by rating...",
|
||||
"searching_locales": "Searching locales...",
|
||||
"second": "Second",
|
||||
"see_all_people": "See all people",
|
||||
@@ -1152,8 +1166,8 @@
|
||||
"server_version": "Server Version",
|
||||
"set": "Set",
|
||||
"set_as_album_cover": "Set as album cover",
|
||||
"set_as_profile_picture": "Set as profile picture",
|
||||
"set_as_featured_photo": "Set as featured photo",
|
||||
"set_as_profile_picture": "Set as profile picture",
|
||||
"set_date_of_birth": "Set date of birth",
|
||||
"set_profile_picture": "Set profile picture",
|
||||
"set_slideshow_to_fullscreen": "Set Slideshow to fullscreen",
|
||||
@@ -1167,6 +1181,7 @@
|
||||
"shared_from_partner": "Photos from {partner}",
|
||||
"shared_link_options": "Shared link options",
|
||||
"shared_links": "Shared links",
|
||||
"shared_links_description": "Share photos and videos with a link",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# shared photos & videos.}}",
|
||||
"shared_with_partner": "Shared with {partner}",
|
||||
"sharing": "Sharing",
|
||||
@@ -1189,6 +1204,7 @@
|
||||
"show_person_options": "Show person options",
|
||||
"show_progress_bar": "Show Progress Bar",
|
||||
"show_search_options": "Show search options",
|
||||
"show_shared_links": "Show shared links",
|
||||
"show_slideshow_transition": "Show slideshow transition",
|
||||
"show_supporter_badge": "Supporter badge",
|
||||
"show_supporter_badge_description": "Show a supporter badge",
|
||||
@@ -1242,6 +1258,7 @@
|
||||
"tag_created": "Created tag: {tag}",
|
||||
"tag_feature_description": "Browsing photos and videos grouped by logical tag topics",
|
||||
"tag_not_found_question": "Cannot find a tag? <link>Create a new tag.</link>",
|
||||
"tag_people": "Tag People",
|
||||
"tag_updated": "Updated tag: {tag}",
|
||||
"tagged_assets": "Tagged {count, plural, one {# asset} other {# assets}}",
|
||||
"tags": "Tags",
|
||||
@@ -1276,6 +1293,7 @@
|
||||
"unfavorite": "Unfavorite",
|
||||
"unhide_person": "Unhide person",
|
||||
"unknown": "Unknown",
|
||||
"unknown_country": "Unknown Country",
|
||||
"unknown_year": "Unknown Year",
|
||||
"unlimited": "Unlimited",
|
||||
"unlink_motion_video": "Unlink motion video",
|
||||
@@ -1350,4 +1368,4 @@
|
||||
"yes": "Yes",
|
||||
"you_dont_have_any_shared_links": "You don't have any shared links",
|
||||
"zoom_image": "Zoom Image"
|
||||
}
|
||||
}
|
||||
|
||||
25
i18n/es.json
25
i18n/es.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Agregar compañero",
|
||||
"add_path": "Agregar carpeta",
|
||||
"add_photos": "Agregar fotos",
|
||||
"add_to": "Agregar a...",
|
||||
"add_to": "Agregar a…",
|
||||
"add_to_album": "Incluir en álbum",
|
||||
"add_to_shared_album": "Incluir en álbum compartido",
|
||||
"add_url": "Añadir URL",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Restablecer la configuración predeterminada",
|
||||
"reset_settings_to_recent_saved": "Restablecer la configuración a la configuración guardada recientemente",
|
||||
"scanning_library": "Escaneando la biblioteca",
|
||||
"search_jobs": "Buscar trabajo...",
|
||||
"search_jobs": "Buscar trabajos…",
|
||||
"send_welcome_email": "Enviar correo de bienvenida",
|
||||
"server_external_domain_settings": "Dominio externo",
|
||||
"server_external_domain_settings_description": "Dominio para enlaces públicos compartidos, incluidos http(s)://",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "¿Son la misma persona?",
|
||||
"are_you_sure_to_do_this": "¿Estas seguro de que quieres hacer esto?",
|
||||
"asset_added_to_album": "Añadido al álbum",
|
||||
"asset_adding_to_album": "Añadiendo al álbum...",
|
||||
"asset_adding_to_album": "Añadiendo al álbum…",
|
||||
"asset_description_updated": "La descripción del elemento ha sido actualizada",
|
||||
"asset_filename_is_offline": "El archivo {filename} está offline",
|
||||
"asset_has_unassigned_faces": "El archivo no tiene rostros asignados",
|
||||
"asset_hashing": "Hashing...",
|
||||
"asset_hashing": "Hashing…",
|
||||
"asset_offline": "Archivos sin conexión",
|
||||
"asset_offline_description": "Este activo externo ya no se encuentra en el disco. Por favor, póngase en contacto con su administrador de Immich para obtener ayuda.",
|
||||
"asset_skipped": "Omitido",
|
||||
"asset_skipped_in_trash": "En la papelera",
|
||||
"asset_uploaded": "Subido",
|
||||
"asset_uploading": "Subiendo...",
|
||||
"asset_uploading": "Subiendo…",
|
||||
"assets": "elementos",
|
||||
"assets_added_count": "Añadido {count, plural, one {# asset} other {# assets}}",
|
||||
"assets_added_to_album_count": "Añadido {count, plural, one {# asset} other {# assets}} al álbum",
|
||||
@@ -438,7 +438,7 @@
|
||||
"blurred_background": "Fondo borroso",
|
||||
"bugs_and_feature_requests": "Errores y solicitudes de funciones",
|
||||
"build": "Compilación",
|
||||
"build_image": "Imagen",
|
||||
"build_image": "Construir imagen",
|
||||
"bulk_delete_duplicates_confirmation": "¿Estás seguro de que deseas eliminar de forma masiva {count, plural, one {# elemento duplicado} other {# elementos duplicados}}? Esto mantendrá el activo más grande de cada grupo y eliminará permanentemente todos los demás duplicados. ¡Esta acción no se puede deshacer!",
|
||||
"bulk_keep_duplicates_confirmation": "¿Estas seguro de que desea mantener {count, plural, one {# duplicate asset} other {# duplicate assets}} archivos duplicados? Esto resolverá todos los grupos duplicados sin borrar nada.",
|
||||
"bulk_trash_duplicates_confirmation": "¿Estas seguro de que desea eliminar masivamente {count, plural, one {# duplicate asset} other {# duplicate assets}} archivos duplicados? Esto mantendrá el archivo más grande de cada grupo y eliminará todos los demás duplicados.",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Ir al directorio",
|
||||
"go_to_search": "Ir a búsqueda",
|
||||
"group_albums_by": "Agrupar albums por...",
|
||||
"group_country": "Agrupar por país",
|
||||
"group_no": "Sin agrupación",
|
||||
"group_owner": "Agrupar por propietario",
|
||||
"group_places_by": "Agrupar lugares por...",
|
||||
"group_year": "Agrupar por año",
|
||||
"has_quota": "Su cuota",
|
||||
"hi_user": "Hola {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Incluir álbumes compartidos",
|
||||
"include_shared_partner_assets": "Incluir archivos compartidos de invitados",
|
||||
"individual_share": "Compartir individualmente",
|
||||
"individual_shares": "Acciones individuales",
|
||||
"info": "Información",
|
||||
"interval": {
|
||||
"day_at_onepm": "Todos los días a las 1pm",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Última versión",
|
||||
"latitude": "Latitud",
|
||||
"leave": "Abandonar",
|
||||
"lens_model": "Modelo de objetivo",
|
||||
"let_others_respond": "Permitir que otros respondan",
|
||||
"level": "Nivel",
|
||||
"library": "Biblioteca",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Elige una ubicación",
|
||||
"place": "Lugar",
|
||||
"places": "Lugares",
|
||||
"places_count": "{count, plural, one {{count, number} Lugar} other {{count, number} Lugares}}",
|
||||
"play": "Reproducir",
|
||||
"play_memories": "Reproducir recuerdos",
|
||||
"play_motion_photo": "Reproducir foto en movimiento",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Buscar",
|
||||
"search_albums": "Buscar álbums",
|
||||
"search_by_context": "Buscar por contexto",
|
||||
"search_by_description": "Buscar por descripción",
|
||||
"search_by_description_example": "Día de senderismo en Sapa",
|
||||
"search_by_filename": "Buscar por nombre de archivo o extensión",
|
||||
"search_by_filename_example": "es decir IMG_1234.JPG o PNG",
|
||||
"search_camera_make": "Buscar fabricante de cámara...",
|
||||
"search_camera_model": "Buscar modelo de cámara...",
|
||||
"search_city": "Buscar ciudad...",
|
||||
"search_country": "Buscar país...",
|
||||
"search_for": "Buscar",
|
||||
"search_for_existing_person": "Buscar persona existente",
|
||||
"search_no_people": "Ninguna persona",
|
||||
"search_no_people_named": "Ninguna persona llamada \"{name}\"",
|
||||
@@ -1139,7 +1147,7 @@
|
||||
"select_library_owner": "Seleccionar propietario de la biblioteca",
|
||||
"select_new_face": "Seleccionar nueva cara",
|
||||
"select_photos": "Seleccionar Fotos",
|
||||
"select_trash_all": "Descartar todo",
|
||||
"select_trash_all": "Seleccionar eliminar todo",
|
||||
"selected": "Seleccionado",
|
||||
"selected_count": "{count, plural, one {# seleccionado} other {# seleccionados}}",
|
||||
"send_message": "Enviar mensaje",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Fotos de {partner}",
|
||||
"shared_link_options": "Opciones de enlaces compartidos",
|
||||
"shared_links": "Enlaces compartidos",
|
||||
"shared_links_description": "Comparte fotos y vídeos con un enlace",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# Fotos y vídeos compartidos.}}",
|
||||
"shared_with_partner": "Compartido con {partner}",
|
||||
"sharing": "Compartido",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Mostrar opciones de la persona",
|
||||
"show_progress_bar": "Mostrar barra de progreso",
|
||||
"show_search_options": "Mostrar opciones de búsqueda",
|
||||
"show_shared_links": "Mostrar enlaces compartidos",
|
||||
"show_slideshow_transition": "Mostrar la transición de las diapositivas",
|
||||
"show_supporter_badge": "Insignia de colaborador",
|
||||
"show_supporter_badge_description": "Mostrar una insignia de colaborador",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Retirar favorito",
|
||||
"unhide_person": "Mostrar persona",
|
||||
"unknown": "Desconocido",
|
||||
"unknown_country": "País desconocido",
|
||||
"unknown_year": "Año desconocido",
|
||||
"unlimited": "Ilimitado",
|
||||
"unlink_motion_video": "Desvincular vídeo en movimiento",
|
||||
|
||||
30
i18n/et.json
30
i18n/et.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Lisa partner",
|
||||
"add_path": "Lisa tee",
|
||||
"add_photos": "Lisa fotosid",
|
||||
"add_to": "Lisa kohta...",
|
||||
"add_to": "Lisa kohta…",
|
||||
"add_to_album": "Lisa albumisse",
|
||||
"add_to_shared_album": "Lisa jagatud albumisse",
|
||||
"add_url": "Lisa URL",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Lähtesta seaded",
|
||||
"reset_settings_to_recent_saved": "Taasta hiljuti salvestatud seaded",
|
||||
"scanning_library": "Kogu skaneerimine",
|
||||
"search_jobs": "Otsi töödet...",
|
||||
"search_jobs": "Otsi töödet…",
|
||||
"send_welcome_email": "Saada tervituskiri",
|
||||
"server_external_domain_settings": "Väline domeen",
|
||||
"server_external_domain_settings_description": "Domeen avalikult jagatud linkide jaoks, k.a. http(s)://",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Kas need on sama isik?",
|
||||
"are_you_sure_to_do_this": "Kas oled kindel, et soovid seda teha?",
|
||||
"asset_added_to_album": "Lisatud albumisse",
|
||||
"asset_adding_to_album": "Albumisse lisamine...",
|
||||
"asset_adding_to_album": "Albumisse lisamine…",
|
||||
"asset_description_updated": "Üksuse kirjeldus on muudetud",
|
||||
"asset_filename_is_offline": "Üksus {filename} ei ole kättesaadav",
|
||||
"asset_has_unassigned_faces": "Üksusel on seostamata nägusid",
|
||||
"asset_hashing": "Räsimine...",
|
||||
"asset_hashing": "Räsimine…",
|
||||
"asset_offline": "Üksus pole kättesaadav",
|
||||
"asset_offline_description": "Seda välise kogu üksust ei leitud kettalt. Abi saamiseks palun võta ühendust oma Immich'i administraatoriga.",
|
||||
"asset_skipped": "Vahele jäetud",
|
||||
"asset_skipped_in_trash": "Prügikastis",
|
||||
"asset_uploaded": "Üleslaaditud",
|
||||
"asset_uploading": "Üleslaadimine...",
|
||||
"asset_uploading": "Üleslaadimine…",
|
||||
"assets": "Üksused",
|
||||
"assets_added_count": "{count, plural, one {# üksus} other {# üksust}} lisatud",
|
||||
"assets_added_to_album_count": "{count, plural, one {# üksus} other {# üksust}} albumisse lisatud",
|
||||
@@ -763,8 +763,10 @@
|
||||
"go_to_folder": "Mine kausta",
|
||||
"go_to_search": "Otsingusse",
|
||||
"group_albums_by": "Grupeeri albumid...",
|
||||
"group_country": "Grupeeri riigi kaupa",
|
||||
"group_no": "Ära grupeeri",
|
||||
"group_owner": "Grupeeri omaniku kaupa",
|
||||
"group_places_by": "Grupeeri kohad...",
|
||||
"group_year": "Grupeeri aasta kaupa",
|
||||
"has_quota": "On kvoot",
|
||||
"hi_user": "Tere {name} ({email})",
|
||||
@@ -819,6 +821,7 @@
|
||||
"latest_version": "Uusim versioon",
|
||||
"latitude": "Laiuskraad",
|
||||
"leave": "Lahku",
|
||||
"lens_model": "Läätse mudel",
|
||||
"let_others_respond": "Luba teistel vastata",
|
||||
"level": "Tase",
|
||||
"library": "Kogu",
|
||||
@@ -861,6 +864,7 @@
|
||||
"memories": "Mälestused",
|
||||
"memories_setting_description": "Halda, mida sa oma mälestustes näed",
|
||||
"memory": "Mälestus",
|
||||
"memory_lane_title": "Mälestus {title}",
|
||||
"menu": "Menüü",
|
||||
"merge": "Ühenda",
|
||||
"merge_people": "Ühenda isikud",
|
||||
@@ -979,6 +983,7 @@
|
||||
"pick_a_location": "Vali asukoht",
|
||||
"place": "Asukoht",
|
||||
"places": "Kohad",
|
||||
"places_count": "{count, plural, one {{count, number} koht} other {{count, number} kohta}}",
|
||||
"play": "Esita",
|
||||
"play_memories": "Esita mälestused",
|
||||
"play_motion_photo": "Esita liikuv foto",
|
||||
@@ -994,6 +999,7 @@
|
||||
"profile_image_of_user": "Kasutaja {user} profiilipilt",
|
||||
"profile_picture_set": "Profiilipilt määratud.",
|
||||
"public_album": "Avalik album",
|
||||
"public_share": "Avalik jagamine",
|
||||
"purchase_account_info": "Toetaja",
|
||||
"purchase_activated_subtitle": "Aitäh, et toetad Immich'it ja avatud lähtekoodiga tarkvara",
|
||||
"purchase_activated_time": "Aktiveeritud {date, date}",
|
||||
@@ -1032,6 +1038,7 @@
|
||||
"rating_description": "Kuva infopaneelis EXIF hinnangut",
|
||||
"reaction_options": "Reaktsiooni valikud",
|
||||
"read_changelog": "Vaata muudatuste ülevaadet",
|
||||
"reassign": "Määra uuesti",
|
||||
"reassigned_assets_to_existing_person": "{count, plural, one {# üksus} other {# üksust}} seostatud {name, select, null {olemasoleva isikuga} other {isikuga {name}}}",
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {# üksus} other {# üksust}} seostatud uue isikuga",
|
||||
"reassing_hint": "Seosta valitud üksused olemasoleva isikuga",
|
||||
@@ -1066,6 +1073,7 @@
|
||||
"removed_from_favorites_count": "{count, plural, other {# eemaldatud}} lemmikutest",
|
||||
"removed_tagged_assets": "Silt eemaldatud {count, plural, one {# üksuselt} other {# üksuselt}}",
|
||||
"rename": "Nimeta ümber",
|
||||
"repair": "Parandus",
|
||||
"repair_no_results_message": "Mittejälgitavad ja puuduvad failid kuvatakse siin",
|
||||
"replace_with_upload": "Asenda üleslaadimisega",
|
||||
"repository": "Koodihoidla",
|
||||
@@ -1099,12 +1107,15 @@
|
||||
"search": "Otsi",
|
||||
"search_albums": "Otsi albumeid",
|
||||
"search_by_context": "Otsi konteksti alusel",
|
||||
"search_by_description": "Otsi kirjelduse alusel",
|
||||
"search_by_description_example": "Matkapäev Sapas",
|
||||
"search_by_filename": "Otsi failinime või -laiendi järgi",
|
||||
"search_by_filename_example": "st. IMG_1234.JPG või PNG",
|
||||
"search_camera_make": "Otsi kaamera marki...",
|
||||
"search_camera_model": "Otsi kaamera mudelit...",
|
||||
"search_city": "Otsi linna...",
|
||||
"search_country": "Otsi riiki...",
|
||||
"search_for": "Otsi",
|
||||
"search_for_existing_person": "Otsi olemasolevat isikut",
|
||||
"search_no_people": "Isikuid ei ole",
|
||||
"search_no_people_named": "Ei ole isikuid nimega \"{name}\"",
|
||||
@@ -1127,9 +1138,11 @@
|
||||
"select_face": "Vali nägu",
|
||||
"select_featured_photo": "Vali esiletõstetud foto",
|
||||
"select_from_computer": "Vali arvutist",
|
||||
"select_keep_all": "Vali jäta kõik alles",
|
||||
"select_library_owner": "Vali kogu omanik",
|
||||
"select_new_face": "Vali uus nägu",
|
||||
"select_photos": "Vali fotod",
|
||||
"select_trash_all": "Vali kõik prügikasti",
|
||||
"selected": "Valitud",
|
||||
"selected_count": "{count, plural, other {# valitud}}",
|
||||
"send_message": "Saada sõnum",
|
||||
@@ -1155,6 +1168,7 @@
|
||||
"shared_from_partner": "Fotod partnerilt {partner}",
|
||||
"shared_link_options": "Jagatud lingi valikud",
|
||||
"shared_links": "Jagatud lingid",
|
||||
"shared_links_description": "Jaga fotosid ja videosid lingiga",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# jagatud fotot ja videot.}}",
|
||||
"shared_with_partner": "Jagatud partneriga {partner}",
|
||||
"sharing": "Jagamine",
|
||||
@@ -1177,6 +1191,7 @@
|
||||
"show_person_options": "Näita isiku valikuid",
|
||||
"show_progress_bar": "Kuva edenemisriba",
|
||||
"show_search_options": "Kuva otsingu valikud",
|
||||
"show_shared_links": "Näita jagatud linke",
|
||||
"show_slideshow_transition": "Kuva slaidiesitluse üleminekud",
|
||||
"show_supporter_badge": "Toetaja märk",
|
||||
"show_supporter_badge_description": "Kuva toetaja märki",
|
||||
@@ -1217,6 +1232,7 @@
|
||||
"storage": "Talletusruum",
|
||||
"storage_label": "Talletussilt",
|
||||
"storage_usage": "{used}/{available} kasutatud",
|
||||
"submit": "Saada",
|
||||
"suggestions": "Soovitused",
|
||||
"sunrise_on_the_beach": "Päikesetõus rannal",
|
||||
"support": "Tugi",
|
||||
@@ -1245,6 +1261,7 @@
|
||||
"to_change_password": "Muuda parool",
|
||||
"to_favorite": "Lemmik",
|
||||
"to_login": "Logi sisse",
|
||||
"to_parent": "Tase üles",
|
||||
"to_trash": "Prügikasti",
|
||||
"toggle_settings": "Kuva/peida seaded",
|
||||
"toggle_theme": "Lülita tume teema",
|
||||
@@ -1262,6 +1279,7 @@
|
||||
"unfavorite": "Eemalda lemmikutest",
|
||||
"unhide_person": "Ära peida isikut",
|
||||
"unknown": "Teadmata",
|
||||
"unknown_country": "Tundmatu riik",
|
||||
"unknown_year": "Teadmata aasta",
|
||||
"unlimited": "Piiramatu",
|
||||
"unlink_oauth": "Eemalda OAuth ühendus",
|
||||
@@ -1269,6 +1287,8 @@
|
||||
"unnamed_album": "Nimetu album",
|
||||
"unnamed_album_delete_confirmation": "Kas oled kindel, et soovid selle albumi kustutada?",
|
||||
"unsaved_change": "Salvestamata muudatus",
|
||||
"unselect_all": "Ära vali ühtegi",
|
||||
"unselect_all_duplicates": "Ära vali duplikaate",
|
||||
"unstack": "Eralda",
|
||||
"unstacked_assets_count": "{count, plural, one {# üksus} other {# üksust}} eraldatud",
|
||||
"untracked_files": "Mittejälgitavad failid",
|
||||
|
||||
876
i18n/fa.json
876
i18n/fa.json
File diff suppressed because it is too large
Load Diff
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Lisää kumppani",
|
||||
"add_path": "Lisää polku",
|
||||
"add_photos": "Lisää kuvia",
|
||||
"add_to": "Lisää...",
|
||||
"add_to": "Lisää…",
|
||||
"add_to_album": "Lisää albumiin",
|
||||
"add_to_shared_album": "Lisää jaettuun albumiin",
|
||||
"add_url": "Lisää URL",
|
||||
@@ -540,7 +540,7 @@
|
||||
"delete_shared_link": "Poista jaettu linkki",
|
||||
"delete_tag": "Poista tunniste",
|
||||
"delete_tag_confirmation_prompt": "Haluatko varmasti poistaa tunnisteen {tagName}?",
|
||||
"delete_user": "Poista käyttäjä pysyvästi",
|
||||
"delete_user": "Poista käyttäjä",
|
||||
"deleted_shared_link": "Jaettu linkki poistettu",
|
||||
"deletes_missing_assets": "Poistaa levyltä puuttuvat resurssit",
|
||||
"description": "Kuvaus",
|
||||
|
||||
27
i18n/fr.json
27
i18n/fr.json
@@ -59,7 +59,7 @@
|
||||
"external_library_management": "Gestion de la bibliothèque externe",
|
||||
"face_detection": "Détection des visages",
|
||||
"face_detection_description": "Détection des visages dans les médias à l'aide de l'apprentissage automatique. Pour les vidéos, seule la miniature est prise en compte. « Actualiser » (re)traite tous les médias. « Réinitialiser » retraite tous les médias en repartant de zéro. « Manquant » met en file d'attente les médias qui n'ont pas encore été pris en compte. Lorsque la détection est terminée, tous les visages détectés sont ensuite mis en file d'attente pour la reconnaissance faciale.",
|
||||
"facial_recognition_job_description": "Regrouper les visages détectés en personnes. Cette étape est exécutée une fois la détection des visages terminée. « Rafraichir » (re)regroupe tous les visages. « Manquant » met en file d'attente les visages auxquels aucune personne n'a été attribuée.",
|
||||
"facial_recognition_job_description": "Regrouper les visages détectés en personnes. Cette étape est exécutée une fois la détection des visages terminée. « Réinitialiser » (re)regroupe tous les visages. « Manquant » met en file d'attente les visages auxquels aucune personne n'a été attribuée.",
|
||||
"failed_job_command": "La commande {command} a échoué pour la tâche : {job}",
|
||||
"force_delete_user_warning": "ATTENTION : Cette opération entraîne la suppression immédiate de l'utilisateur et de tous ses médias. Cette opération ne peut être annulée et les fichiers ne peuvent être récupérés.",
|
||||
"forcing_refresh_library_files": "Forcer le rafraîchissement de tous les fichiers de la bibliothèque",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Réinitialiser les paramètres par défaut",
|
||||
"reset_settings_to_recent_saved": "Paramètres réinitialisés avec les derniers paramètres enregistrés",
|
||||
"scanning_library": "Analyse de la bibliothèque",
|
||||
"search_jobs": "Recherche des tâches ...",
|
||||
"search_jobs": "Recherche des tâches…",
|
||||
"send_welcome_email": "Envoyer un courriel de bienvenue",
|
||||
"server_external_domain_settings": "Domaine externe",
|
||||
"server_external_domain_settings_description": "Nom de domaine pour les liens partagés publics, y compris http(s)://",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Est-ce la même personne ?",
|
||||
"are_you_sure_to_do_this": "Êtes-vous sûr de vouloir faire ceci ?",
|
||||
"asset_added_to_album": "Ajouté à l'album",
|
||||
"asset_adding_to_album": "Ajout à l'album...",
|
||||
"asset_adding_to_album": "Ajout à l'album…",
|
||||
"asset_description_updated": "La description du média a été mise à jour",
|
||||
"asset_filename_is_offline": "Le média {filename} est hors ligne",
|
||||
"asset_has_unassigned_faces": "Le média a des visages non attribués",
|
||||
"asset_hashing": "Hachage...",
|
||||
"asset_hashing": "Hachage…",
|
||||
"asset_offline": "Média hors ligne",
|
||||
"asset_offline_description": "Ce média externe n'est plus accessible sur le disque. Veuillez contacter votre administrateur Immich pour obtenir de l'aide.",
|
||||
"asset_skipped": "Sauté",
|
||||
"asset_skipped_in_trash": "À la corbeille",
|
||||
"asset_uploaded": "Envoyé",
|
||||
"asset_uploading": "Envoi...",
|
||||
"asset_uploading": "Téléversement…",
|
||||
"assets": "Médias",
|
||||
"assets_added_count": "{count, plural, one {# média ajouté} other {# médias ajoutés}}",
|
||||
"assets_added_to_album_count": "{count, plural, one {# média ajouté} other {# médias ajoutés}} à l'album",
|
||||
@@ -766,9 +766,11 @@
|
||||
"go_to_folder": "Dossier",
|
||||
"go_to_search": "Faire une recherche",
|
||||
"group_albums_by": "Grouper les albums par...",
|
||||
"group_country": "Grouper par pays",
|
||||
"group_no": "Pas de groupe",
|
||||
"group_owner": "Groupe par propriétaire",
|
||||
"group_year": "Groupe par année",
|
||||
"group_owner": "Grouper par propriétaire",
|
||||
"group_places_by": "Grouper les lieux par...",
|
||||
"group_year": "Grouper par année",
|
||||
"has_quota": "Quota",
|
||||
"hi_user": "Bonjour {name} ({email})",
|
||||
"hide_all_people": "Cacher toutes les personnes",
|
||||
@@ -799,7 +801,8 @@
|
||||
"include_archived": "Inclure les archives",
|
||||
"include_shared_albums": "Inclure les albums partagés",
|
||||
"include_shared_partner_assets": "Inclure les médias partagés du partenaire",
|
||||
"individual_share": "Partage individuel",
|
||||
"individual_share": "Partage d'un média unique",
|
||||
"individual_shares": "Partages d'un média unique",
|
||||
"info": "Information",
|
||||
"interval": {
|
||||
"day_at_onepm": "Tous les jours à 13h",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Dernière version",
|
||||
"latitude": "Latitude",
|
||||
"leave": "Quitter",
|
||||
"lens_model": "Modèle d'objectif",
|
||||
"let_others_respond": "Laisser les autres réagir",
|
||||
"level": "Niveau",
|
||||
"library": "Bibliothèque",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Choisissez un lieu",
|
||||
"place": "Lieu",
|
||||
"places": "Lieux",
|
||||
"places_count": "{count, plural, one {{count, number} Lieu} other {{count, number} Lieux}}",
|
||||
"play": "Jouer",
|
||||
"play_memories": "Lancer les souvenirs",
|
||||
"play_motion_photo": "Jouer la photo animée",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Recherche",
|
||||
"search_albums": "Rechercher des albums",
|
||||
"search_by_context": "Rechercher par contexte",
|
||||
"search_by_description": "Recherche par description",
|
||||
"search_by_description_example": "Randonnée à Sapa",
|
||||
"search_by_filename": "Rechercher par nom du fichier ou extension",
|
||||
"search_by_filename_example": "Exemple : IMG_1234.JPG ou PNG",
|
||||
"search_camera_make": "Rechercher par marque d'appareil photo...",
|
||||
"search_camera_model": "Rechercher par modèle d'appareil photo...",
|
||||
"search_city": "Rechercher par ville...",
|
||||
"search_country": "Rechercher par pays...",
|
||||
"search_for": "Chercher",
|
||||
"search_for_existing_person": "Rechercher une personne existante",
|
||||
"search_no_people": "Aucune personne",
|
||||
"search_no_people_named": "Aucune personne nommée « {name} »",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Photos de {partner}",
|
||||
"shared_link_options": "Options de lien partagé",
|
||||
"shared_links": "Liens partagés",
|
||||
"shared_links_description": "Partager les photos et vidéos via un lien",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# photos et vidéos partagées.}}",
|
||||
"shared_with_partner": "Partagé avec {partner}",
|
||||
"sharing": "Partage",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Afficher les options de personnes",
|
||||
"show_progress_bar": "Afficher la barre de progression",
|
||||
"show_search_options": "Afficher les options de recherche",
|
||||
"show_shared_links": "Afficher les liens partagés",
|
||||
"show_slideshow_transition": "Afficher la transition du diaporama",
|
||||
"show_supporter_badge": "Badge de contributeur",
|
||||
"show_supporter_badge_description": "Afficher le badge de contributeur",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Enlever des favoris",
|
||||
"unhide_person": "Afficher la personne",
|
||||
"unknown": "Inconnu",
|
||||
"unknown_country": "Pays non connu",
|
||||
"unknown_year": "Année inconnue",
|
||||
"unlimited": "Illimité",
|
||||
"unlink_motion_video": "Détacher la photo animée",
|
||||
|
||||
167
i18n/he.json
167
i18n/he.json
@@ -8,39 +8,39 @@
|
||||
"active": "פעיל",
|
||||
"activity": "פעילות",
|
||||
"activity_changed": "הפעילות {enabled, select, true {מופעלת} other {מושבתת}}",
|
||||
"add": "הוסף",
|
||||
"add_a_description": "הוסף תיאור",
|
||||
"add_a_location": "הוסף מיקום",
|
||||
"add_a_name": "הוסף שם",
|
||||
"add_a_title": "הוסף כותרת",
|
||||
"add_exclusion_pattern": "הוסף דפוס החרגה",
|
||||
"add_import_path": "הוסף נתיב יבוא",
|
||||
"add_location": "הוסף מיקום",
|
||||
"add_more_users": "הוסף עוד משתמשים",
|
||||
"add_partner": "הוסף שותף",
|
||||
"add_path": "הוסף נתיב",
|
||||
"add_photos": "הוסף תמונות",
|
||||
"add_to": "הוסף ל..",
|
||||
"add_to_album": "הוסף לאלבום",
|
||||
"add_to_shared_album": "הוסף לאלבום משותף",
|
||||
"add": "הוספה",
|
||||
"add_a_description": "הוספת תיאור",
|
||||
"add_a_location": "הוספת מיקום",
|
||||
"add_a_name": "הוספת שם",
|
||||
"add_a_title": "הוספת כותרת",
|
||||
"add_exclusion_pattern": "הוספת דפוס החרגה",
|
||||
"add_import_path": "הוספת נתיב יבוא",
|
||||
"add_location": "הוספת מיקום",
|
||||
"add_more_users": "הוספת עוד משתמשים",
|
||||
"add_partner": "הוספת שותף",
|
||||
"add_path": "הוספת נתיב",
|
||||
"add_photos": "הוספת תמונות",
|
||||
"add_to": "הוספה ל…",
|
||||
"add_to_album": "הוספה לאלבום",
|
||||
"add_to_shared_album": "הוספה לאלבום משותף",
|
||||
"add_url": "הוספת קישור",
|
||||
"added_to_archive": "נוסף לארכיון",
|
||||
"added_to_favorites": "נוסף למועדפים",
|
||||
"added_to_favorites_count": "{count, number} נוספו למועדפים",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "הוסף דפוסי החרגה. נתמכת התאמת דפוסים באמצעות *, ** ו-?. כדי להתעלם מכל הקבצים בתיקיה כלשהי בשם \"Raw\", השתמש ב \"**/Raw/**\". כדי להתעלם מכל הקבצים המסתיימים ב \"tif.\", השתמש ב \"tif.*/**\". כדי להתעלם מנתיב מוחלט, השתמש ב \"**/נתיב/להתעלמות\".",
|
||||
"asset_offline_description": "נכס ספרייה חיצונית זה לא נמצא יותר בדיסק והועבר לאשפה. אם הקובץ הועבר מתוך הספרייה, בדוק את ציר הזמן שלך עבור הנכס המקביל החדש. כדי לשחזר נכס זה, נא לוודא ש-Immich יכול לגשת אל נתיב הקובץ למטה וסרוק מחדש את הספרייה.",
|
||||
"add_exclusion_pattern_description": "הוספת דפוסי החרגה. נתמכת התאמת דפוסים באמצעות *, ** ו-?. כדי להתעלם מכל הקבצים בתיקיה כלשהי בשם \"Raw\", יש להשתמש ב \"**/Raw/**\". כדי להתעלם מכל הקבצים המסתיימים ב \"tif.\", יש להשתמש ב \"tif.*/**\". כדי להתעלם מנתיב מוחלט, יש להשתמש ב \"**/נתיב/להתעלמות\".",
|
||||
"asset_offline_description": "נכס ספרייה חיצונית זה לא נמצא יותר בדיסק והועבר לאשפה. אם הקובץ הועבר מתוך הספרייה, נא לבדוק את ציר הזמן שלך עבור הנכס המקביל החדש. כדי לשחזר נכס זה, נא לוודא ש-Immich יכול לגשת אל נתיב הקובץ למטה ולסרוק מחדש את הספרייה.",
|
||||
"authentication_settings": "הגדרות התחברות",
|
||||
"authentication_settings_description": "נהל סיסמה, OAuth, והגדרות התחברות אחרות",
|
||||
"authentication_settings_description": "ניהול סיסמה, OAuth, והגדרות התחברות אחרות",
|
||||
"authentication_settings_disable_all": "האם ברצונך להשבית את כל שיטות ההתחברות? כניסה למערכת תהיה מושבתת לחלוטין.",
|
||||
"authentication_settings_reenable": "כדי לאפשר מחדש, השתמש ב<link>פקודת שרת</link>.",
|
||||
"authentication_settings_reenable": "כדי לאפשר מחדש, נא להשתמש ב<link>פקודת שרת</link>.",
|
||||
"background_task_job": "משימות רקע",
|
||||
"backup_database": "גיבוי מסד נתונים",
|
||||
"backup_database_enable_description": "אפשר גיבויי מסד נתונים",
|
||||
"backup_keep_last_amount": "כמות של גיבויים קודמים שיש לשמור",
|
||||
"backup_settings": "הגדרות גיבוי",
|
||||
"backup_settings_description": "נהל הגדרות גיבוי מסד נתונים",
|
||||
"check_all": "סמן הכל",
|
||||
"backup_settings_description": "ניהול הגדרות גיבוי מסד נתונים",
|
||||
"check_all": "סימון הכל",
|
||||
"cleared_jobs": "נוקו משימות עבור: {job}",
|
||||
"config_set_by_file": "התצורה מוגדרת כעת על ידי קובץ תצורה",
|
||||
"confirm_delete_library": "האם את/ה בטוח/ה שברצונך למחוק את הספרייה {library}?",
|
||||
@@ -76,7 +76,7 @@
|
||||
"image_resolution": "רזולוציה",
|
||||
"image_resolution_description": "רזולוציות גבוהות יותר יכולות לשמר פרטים רבים יותר אך לוקחות זמן רב יותר לקידוד, יש להן גדלי קבצים גדולים יותר ויכולות להפחית את תגובתיות היישום.",
|
||||
"image_settings": "הגדרות תמונה",
|
||||
"image_settings_description": "נהל את האיכות והרזולוציה של תמונות שנוצרו",
|
||||
"image_settings_description": "ניהול האיכות והרזולוציה של תמונות שנוצרו",
|
||||
"image_thumbnail_description": "תמונה ממוזערת קטנה עם מטא-נתונים שהוסרו, משמשת בעת צפייה בקבוצות של תמונות כמו ציר הזמן הראשי",
|
||||
"image_thumbnail_quality_description": "איכות תמונה ממוזערת בין 1-100. גבוה יותר הוא טוב יותר, אבל מייצר קבצים גדולים יותר ויכול להפחית את תגובתיות היישום.",
|
||||
"image_thumbnail_title": "הגדרות תמונה ממוזערת",
|
||||
@@ -95,7 +95,7 @@
|
||||
"library_scanning_description": "הגדר סריקת ספרייה תקופתית",
|
||||
"library_scanning_enable_description": "אפשר סריקת ספרייה תקופתית",
|
||||
"library_settings": "ספרייה חיצונית",
|
||||
"library_settings_description": "נהל הגדרות ספרייה חיצונית",
|
||||
"library_settings_description": "ניהול הגדרות ספרייה חיצונית",
|
||||
"library_tasks_description": "ביצוע משימות ספרייה",
|
||||
"library_watching_enable_description": "עקוב אחר שינויי קבצים בספריות חיצוניות",
|
||||
"library_watching_settings": "צפיית ספרייה (ניסיוני)",
|
||||
@@ -126,33 +126,33 @@
|
||||
"machine_learning_min_recognized_faces": "מינימום פנים מזוהים",
|
||||
"machine_learning_min_recognized_faces_description": "המספר המינימלי של פנים מזוהים ליצירת אדם. הגדלת ערך זה הופכת את זיהוי הפנים למדויק יותר בעלות של הגברת הסיכוי שלא יוקצו פנים לאדם.",
|
||||
"machine_learning_settings": "הגדרות למידת מכונה",
|
||||
"machine_learning_settings_description": "נהל את התכונות וההגדרות של למידת המכונה",
|
||||
"machine_learning_settings_description": "ניהול התכונות וההגדרות של למידת המכונה",
|
||||
"machine_learning_smart_search": "חיפוש חכם",
|
||||
"machine_learning_smart_search_description": "חפש תמונות באופן סמנטי באמצעות הטמעות של CLIP",
|
||||
"machine_learning_smart_search_description": "חיפוש תמונות באופן סמנטי באמצעות הטמעות של CLIP",
|
||||
"machine_learning_smart_search_enabled": "אפשר חיפוש חכם",
|
||||
"machine_learning_smart_search_enabled_description": "אם מושבת, תמונות לא יקודדו לחיפוש חכם.",
|
||||
"machine_learning_url_description": "כתובת האתר של שרת למידת המכונה. אם ניתנת יותר מכתובת אחת, כל שרת ינסה בתורו עד אשר יענה בחיוב, בסדר התחלתי.",
|
||||
"manage_concurrency": "נהל בו-זמניות",
|
||||
"manage_log_settings": "נהל הגדרות רישום ביומן",
|
||||
"manage_concurrency": "ניהול בו-זמניות",
|
||||
"manage_log_settings": "ניהול הגדרות רישום ביומן",
|
||||
"map_dark_style": "עיצוב כהה",
|
||||
"map_enable_description": "אפשר תכונות מפה",
|
||||
"map_gps_settings": "הגדרות מפה & GPS",
|
||||
"map_gps_settings_description": "נהל הגדרות מפה & GPS (קידוד גאוגרפי הפוך)",
|
||||
"map_gps_settings_description": "ניהול הגדרות מפה & GPS (קידוד גאוגרפי הפוך)",
|
||||
"map_implications": "תכונת המפה מסתמכת על שירות אריח חיצוני (tiles.immich.cloud)",
|
||||
"map_light_style": "עיצוב בהיר",
|
||||
"map_manage_reverse_geocoding_settings": "נהל הגדרות <link>קידוד גאוגרפי הפוך</link>",
|
||||
"map_manage_reverse_geocoding_settings": "ניהול הגדרות <link>קידוד גאוגרפי הפוך</link>",
|
||||
"map_reverse_geocoding": "קידוד גיאוגרפי הפוך",
|
||||
"map_reverse_geocoding_enable_description": "אפשר קידוד גיאוגרפי הפוך",
|
||||
"map_reverse_geocoding_settings": "הגדרות קידוד גיאוגרפי הפוך",
|
||||
"map_settings": "מפה",
|
||||
"map_settings_description": "נהל הגדרות מפה",
|
||||
"map_settings_description": "ניהול הגדרות מפה",
|
||||
"map_style_description": "כתובת אתר לערכת נושא של מפה style.json",
|
||||
"metadata_extraction_job": "חלץ מטא-נתונים",
|
||||
"metadata_extraction_job_description": "חלץ מידע מטא-נתונים מכל נכס, כגון GPS, פנים ורזולוציה",
|
||||
"metadata_faces_import_setting": "אפשר יבוא פנים",
|
||||
"metadata_faces_import_setting_description": "יבא פנים מנתוני EXIF של תמונה ומקבצים נלווים",
|
||||
"metadata_settings": "הגדרות מטא-נתונים",
|
||||
"metadata_settings_description": "נהל הגדרות מטא-נתונים",
|
||||
"metadata_settings_description": "ניהול הגדרות מטא-נתונים",
|
||||
"migration_job": "העברה",
|
||||
"migration_job_description": "העבר תמונות ממוזערות של נכסים ופנים למבנה התיקיות העדכני ביותר",
|
||||
"no_paths_added": "לא נוספו נתיבים",
|
||||
@@ -175,7 +175,7 @@
|
||||
"notification_email_username_description": "שם משתמש לשימוש בעת אימות עם שרת הדוא\"ל",
|
||||
"notification_enable_email_notifications": "אפשר התראות דוא\"ל",
|
||||
"notification_settings": "הגדרות התראות",
|
||||
"notification_settings_description": "נהל הגדרות התראות, כולל דוא\"ל",
|
||||
"notification_settings_description": "ניהול הגדרות התראות, כולל דוא\"ל",
|
||||
"oauth_auto_launch": "הפעלה אוטומטית",
|
||||
"oauth_auto_launch_description": "התחל את זרימת ההתחברות של OAuth באופן אוטומטי עם הניווט לדף ההתחברות",
|
||||
"oauth_auto_register": "רישום אוטומטי",
|
||||
@@ -192,7 +192,7 @@
|
||||
"oauth_profile_signing_algorithm_description": "אלגוריתם המשמש לחתימה על פרופיל המשתמש.",
|
||||
"oauth_scope": "רמת הרשאה",
|
||||
"oauth_settings": "OAuth",
|
||||
"oauth_settings_description": "נהל הגדרות התחברות עם OAuth",
|
||||
"oauth_settings_description": "ניהול הגדרות התחברות עם OAuth",
|
||||
"oauth_settings_more_details": "למידע נוסף אודות תכונה זו, בדוק את ה<link>תיעוד</link>.",
|
||||
"oauth_signing_algorithm": "אלגוריתם חתימה",
|
||||
"oauth_storage_label_claim": "דרישת תווית אחסון",
|
||||
@@ -205,7 +205,7 @@
|
||||
"offline_paths_description": "תוצאות אלו עשויות להיות עקב מחיקה ידנית של קבצים שאינם חלק מספרייה חיצונית.",
|
||||
"password_enable_description": "התחבר עם דוא\"ל וסיסמה",
|
||||
"password_settings": "סיסמת התחברות",
|
||||
"password_settings_description": "נהל הגדרות סיסמת התחברות",
|
||||
"password_settings_description": "ניהול הגדרות סיסמת התחברות",
|
||||
"paths_validated_successfully": "כל הנתיבים אומתו בהצלחה",
|
||||
"person_cleanup_job": "ניקוי אדם",
|
||||
"quota_size_gib": "גודל מכסה (GiB)",
|
||||
@@ -219,14 +219,14 @@
|
||||
"reset_settings_to_default": "אפס הגדרות לברירת המחדל",
|
||||
"reset_settings_to_recent_saved": "אפס הגדרות להגדרות שנשמרו לאחרונה",
|
||||
"scanning_library": "סורק ספרייה",
|
||||
"search_jobs": "חיפוש עבודות...",
|
||||
"search_jobs": "חיפוש עבודות…",
|
||||
"send_welcome_email": "שלח דוא\"ל ברוכים הבאים",
|
||||
"server_external_domain_settings": "דומיין חיצוני",
|
||||
"server_external_domain_settings_description": "דומיין עבור קישורים משותפים ציבוריים, כולל http(s)://",
|
||||
"server_public_users": "משתמשים ציבוריים",
|
||||
"server_public_users_description": "כל המשתמשים (שם ודוא\"ל) מופיעים בעת הוספת משתמש לאלבומים משותפים. כאשר התכונה מושבתת, רשימת המשתמשים תהיה זמינה רק למשתמשים בעלי הרשאות מנהל.",
|
||||
"server_public_users_description": "כל המשתמשים (שם ודוא\"ל) מופיעים בעת הוספת משתמש לאלבומים משותפים. כאשר התכונה מושבתת, רשימת המשתמשים תהיה זמינה רק למשתמשים בעלי הרשאות ניהול.",
|
||||
"server_settings": "הגדרות שרת",
|
||||
"server_settings_description": "נהל הגדרות שרת",
|
||||
"server_settings_description": "ניהול הגדרות שרת",
|
||||
"server_welcome_message": "הודעת פתיחה",
|
||||
"server_welcome_message_description": "הודעה שמוצגת במסך ההתחברות.",
|
||||
"sidecar_job": "מטא-נתונים נלווים",
|
||||
@@ -246,7 +246,7 @@
|
||||
"storage_template_onboarding_description": "כאשר מופעלת, תכונה זו תארגן אוטומטית קבצים בהתבסס על תבנית שהמשתמש הגדיר. עקב בעיות יציבות התכונה כבויה כברירת מחדל. למידע נוסף, נא לראות את ה<link>תיעוד</link>.",
|
||||
"storage_template_path_length": "מגבלת אורך נתיב משוערת: <b>{length, number}</b>/{limit, number}",
|
||||
"storage_template_settings": "תבנית אחסון",
|
||||
"storage_template_settings_description": "נהל את מבנה התיקיות ואת שם הקובץ של נכס ההעלאה",
|
||||
"storage_template_settings_description": "ניהול מבנה התיקיות ואת שם הקובץ של נכס ההעלאה",
|
||||
"storage_template_user_label": "<code>{label}</code> היא תווית האחסון של המשתמש",
|
||||
"system_settings": "הגדרות מערכת",
|
||||
"tag_cleanup_job": "ניקוי תגים",
|
||||
@@ -255,15 +255,15 @@
|
||||
"template_email_invite_album": "תבנית הזמנת אלבום",
|
||||
"template_email_preview": "תצוגה מקדימה",
|
||||
"template_email_settings": "תבניות דוא\"ל",
|
||||
"template_email_settings_description": "נהל תבניות התראת דוא\"ל מותאמות אישית",
|
||||
"template_email_settings_description": "ניהול תבניות התראת דוא\"ל מותאמות אישית",
|
||||
"template_email_update_album": "עדכון תבנית אלבום",
|
||||
"template_email_welcome": "תבנית דוא\"ל ברוכים הבאים",
|
||||
"template_settings": "תבניות התראה",
|
||||
"template_settings_description": "נהל תבניות מותאמות אישית עבור התראות.",
|
||||
"template_settings_description": "ניהול תבניות מותאמות אישית עבור התראות.",
|
||||
"theme_custom_css_settings": "CSS בהתאמה אישית",
|
||||
"theme_custom_css_settings_description": "גיליונות סגנון מדורגים (CSS) מאפשרים התאמה אישית של העיצוב של Immich.",
|
||||
"theme_settings": "הגדרות ערכת נושא",
|
||||
"theme_settings_description": "נהל התאמה אישית של ממשק האינטרנט של Immich",
|
||||
"theme_settings_description": "ניהול התאמה אישית של ממשק האינטרנט של Immich",
|
||||
"these_files_matched_by_checksum": "קבצים אלה תואמים לפי סיכומי הביקורת שלהם",
|
||||
"thumbnail_generation_job": "צור תמונות ממוזערות",
|
||||
"thumbnail_generation_job_description": "יוצר תמונות ממוזערות גדולות, קטנות ומטושטשות עבור כל נכס, כמו גם תמונות ממוזערות עבור כל אדם",
|
||||
@@ -313,10 +313,10 @@
|
||||
"transcoding_reference_frames_description": "מספר הפריימים לייחוס בעת דחיסה של פריים נתון. ערכים גבוהים יותר משפרים את יעילות הדחיסה, אך מאטים את הקידוד. 0 מגדיר את הערך זה באופן אוטומטי.",
|
||||
"transcoding_required_description": "רק סרטונים שאינם בפורמט מקובל",
|
||||
"transcoding_settings": "הגדרות המרת קידוד סרטונים",
|
||||
"transcoding_settings_description": "נהל אילו סרטונים להמיר וכיצד לעבד אותם",
|
||||
"transcoding_settings_description": "ניהול אילו סרטונים להמיר וכיצד לעבד אותם",
|
||||
"transcoding_target_resolution": "רזולוציה יעד",
|
||||
"transcoding_target_resolution_description": "רזולוציות גבוהות יותר יכולות לשמר פרטים רבים יותר אך לוקחות זמן רב יותר לקידוד, יש להן גדלי קבצים גדולים יותר, ויכולות להפחית את תגובתיות היישום.",
|
||||
"transcoding_temporal_aq": "Temporal AQ",
|
||||
"transcoding_temporal_aq": "AQ מבוסס זמן",
|
||||
"transcoding_temporal_aq_description": "חל רק על NVENC. מגביר את האיכות של סצנות עם רמת פירוט גבוהה בהילוך איטי. ייתכן שלא יהיה תואם למכשירים ישנים יותר.",
|
||||
"transcoding_threads": "תהליכונים",
|
||||
"transcoding_threads_description": "ערכים גבוהים יותר מובילים לקידוד מהיר יותר, אך משאירים פחות מקום לשרת לעבד משימות אחרות בעודו פעיל. ערך זה לא אמור להיות יותר ממספר ליבות המעבד. ממקסם את הניצול אם מוגדר ל-0.",
|
||||
@@ -332,7 +332,7 @@
|
||||
"trash_number_of_days": "מספר הימים",
|
||||
"trash_number_of_days_description": "מספר הימים לשמירה על הנכסים באשפה לפני הסרתם לצמיתות",
|
||||
"trash_settings": "הגדרות האשפה",
|
||||
"trash_settings_description": "נהל את הגדרות האשפה",
|
||||
"trash_settings_description": "ניהול הגדרות האשפה",
|
||||
"untracked_files": "קבצים ללא מעקב",
|
||||
"untracked_files_description": "קבצים אלה אינם נמצאים במעקב של היישום. הם יכולים להיות תוצאות של העברות כושלות, העלאות שנקטעו, או שנותרו מאחור בגלל שיבוש בתוכנה",
|
||||
"user_cleanup_job": "ניקוי משתמשים",
|
||||
@@ -347,7 +347,7 @@
|
||||
"user_restore_description": "החשבון של <b>{user}</b> ישוחזר.",
|
||||
"user_restore_scheduled_removal": "שחזר משתמש - מחיקה מתוזמנת ב-{date, date, long}",
|
||||
"user_settings": "הגדרות משתמש",
|
||||
"user_settings_description": "נהל הגדרות משתמש",
|
||||
"user_settings_description": "ניהול הגדרות משתמש",
|
||||
"user_successfully_removed": "המשתמש {email} הוסר בהצלחה.",
|
||||
"version_check_enabled_description": "אפשר בדיקת גרסה",
|
||||
"version_check_implications": "תכונת בדיקת הגרסה מסתמכת על תקשורת תקופתית עם github.com",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "האם אלה אותו האדם?",
|
||||
"are_you_sure_to_do_this": "האם את/ה בטוח/ה שברצונך לעשות את זה?",
|
||||
"asset_added_to_album": "נוסף לאלבום",
|
||||
"asset_adding_to_album": "מוסיף לאלבום...",
|
||||
"asset_adding_to_album": "מוסיף לאלבום…",
|
||||
"asset_description_updated": "תיאור הנכס עודכן",
|
||||
"asset_filename_is_offline": "הנכס {filename} אינו מקוון",
|
||||
"asset_has_unassigned_faces": "לנכס יש פנים שלא הוקצו",
|
||||
"asset_hashing": "מגבב...",
|
||||
"asset_hashing": "מגבב…",
|
||||
"asset_offline": "נכס לא מקוון",
|
||||
"asset_offline_description": "הנכס החיצוני הזה כבר לא נמצא בדיסק. אנא צור קשר עם מנהל Immich שלך לקבלת עזרה.",
|
||||
"asset_offline_description": "הנכס החיצוני הזה כבר לא נמצא בדיסק. נא ליצור קשר עם מנהל Immich שלך לקבלת עזרה.",
|
||||
"asset_skipped": "דילג",
|
||||
"asset_skipped_in_trash": "באשפה",
|
||||
"asset_uploaded": "הועלה",
|
||||
"asset_uploading": "מעלה...",
|
||||
"asset_uploading": "מעלה…",
|
||||
"assets": "נכסים",
|
||||
"assets_added_count": "{count, plural, one {נוסף נכס #} other {נוספו # נכסים}}",
|
||||
"assets_added_to_album_count": "{count, plural, one {נוסף נכס #} other {נוספו # נכסים}} לאלבום",
|
||||
@@ -437,7 +437,7 @@
|
||||
"birthdate_set_description": "תאריך לידה משמש לחישוב הגיל של האדם הזה בזמן תצלום.",
|
||||
"blurred_background": "רקע מטושטש",
|
||||
"bugs_and_feature_requests": "באגים & בקשות לתכונות",
|
||||
"build": "Build",
|
||||
"build": "גרסאת בנייה",
|
||||
"build_image": "גרסת תוכנה",
|
||||
"bulk_delete_duplicates_confirmation": "האם את/ה בטוח/ה שברצונך למחוק בכמות גדולה {count, plural, one {נכס # כפול} other {# נכסים כפולים}}? זה ישמור על הנכס הכי גדול של כל קבוצה וימחק לצמיתות את כל שאר הכפילויות. את/ה לא יכול/ה לבטל את הפעולה הזו!",
|
||||
"bulk_keep_duplicates_confirmation": "האם את/ה בטוח/ה שברצונך להשאיר {count, plural, one {נכס # כפול} other {# נכסים כפולים}}? זה יפתור את כל הקבוצות הכפולות מבלי למחוק דבר.",
|
||||
@@ -480,7 +480,7 @@
|
||||
"comments_and_likes": "תגובות & לייקים",
|
||||
"comments_are_disabled": "תגובות מושבתות",
|
||||
"confirm": "אישור",
|
||||
"confirm_admin_password": "אשר סיסמת מנהל",
|
||||
"confirm_admin_password": "אישור סיסמת מנהל",
|
||||
"confirm_delete_shared_link": "האם את/ה בטוח/ה שברצונך למחוק את הקישור המשותף הזה?",
|
||||
"confirm_keep_this_delete_others": "כל שאר הנכסים בערימה יימחקו למעט נכס זה. האם את/ה בטוח/ה שברצונך להמשיך?",
|
||||
"confirm_password": "אשר סיסמה",
|
||||
@@ -548,7 +548,7 @@
|
||||
"direction": "כיוון",
|
||||
"disabled": "מושבת",
|
||||
"disallow_edits": "אל תאפשר עריכות",
|
||||
"discord": "Discord",
|
||||
"discord": "דיסקורד",
|
||||
"discover": "גילוי",
|
||||
"dismiss_all_errors": "התעלמות מכל השגיאות",
|
||||
"dismiss_error": "התעלמות מהשגיאה",
|
||||
@@ -563,7 +563,7 @@
|
||||
"download_include_embedded_motion_videos": "סרטונים מוטמעים",
|
||||
"download_include_embedded_motion_videos_description": "כלול סרטונים מוטעמים בתמונות עם תנועה כקובץ נפרד",
|
||||
"download_settings": "הורדה",
|
||||
"download_settings_description": "נהל הגדרות הקשורות להורדת נכסים",
|
||||
"download_settings_description": "ניהול הגדרות הקשורות להורדת נכסים",
|
||||
"downloading": "מוריד",
|
||||
"downloading_asset_filename": "מוריד נכס {filename}",
|
||||
"drop_files_to_upload": "שחרר קבצים בכל מקום כדי להעלות",
|
||||
@@ -748,7 +748,7 @@
|
||||
"favorites": "מועדפים",
|
||||
"feature_photo_updated": "תמונה מייצגת עודכנה",
|
||||
"features": "תכונות",
|
||||
"features_setting_description": "נהל את תכונות היישום",
|
||||
"features_setting_description": "ניהול תכונות היישום",
|
||||
"file_name": "שם הקובץ",
|
||||
"file_name_or_extension": "שם קובץ או סיומת",
|
||||
"filename": "שם קובץ",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "עבור לתיקיה",
|
||||
"go_to_search": "עבור לחיפוש",
|
||||
"group_albums_by": "קבץ אלבומים לפי..",
|
||||
"group_country": "קבץ לפי מדינה",
|
||||
"group_no": "אין קיבוץ",
|
||||
"group_owner": "קבץ לפי בעלים",
|
||||
"group_places_by": "קבץ מקומות לפי...",
|
||||
"group_year": "קבץ לפי שנה",
|
||||
"has_quota": "יש מכסה",
|
||||
"hi_user": "היי {name}, ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "כלול אלבומים משותפים",
|
||||
"include_shared_partner_assets": "כלול נכסי שותף משותפים",
|
||||
"individual_share": "שיתוף יחיד",
|
||||
"individual_shares": "שיתופים בודדים",
|
||||
"info": "מידע",
|
||||
"interval": {
|
||||
"day_at_onepm": "כל יום בשעה 13:00",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "גרסה עדכנית ביותר",
|
||||
"latitude": "קו רוחב",
|
||||
"leave": "לעזוב",
|
||||
"lens_model": "דגם עדשה",
|
||||
"let_others_respond": "אפשר לאחרים להגיב",
|
||||
"level": "רמה",
|
||||
"library": "ספרייה",
|
||||
@@ -849,13 +853,13 @@
|
||||
"loop_videos_description": "אפשר הפעלה חוזרת אוטומטית של סרטון במציג הפרטים.",
|
||||
"main_branch_warning": "את/ה משתמש/ת בגרסת פיתוח; אנחנו ממליצים בחום להשתמש בגרסה יציבה!",
|
||||
"make": "תוצרת",
|
||||
"manage_shared_links": "נהל קישורים משותפים",
|
||||
"manage_sharing_with_partners": "נהל שיתוף עם שותפים",
|
||||
"manage_the_app_settings": "נהל את הגדרות האפליקציה",
|
||||
"manage_your_account": "נהל את החשבון שלך",
|
||||
"manage_your_api_keys": "נהל את מפתחות ה API שלך",
|
||||
"manage_your_devices": "נהל את המכשירים המחוברים שלך",
|
||||
"manage_your_oauth_connection": "נהל את חיבור ה-OAuth שלך",
|
||||
"manage_shared_links": "ניהול קישורים משותפים",
|
||||
"manage_sharing_with_partners": "ניהול שיתוף עם שותפים",
|
||||
"manage_the_app_settings": "ניהול הגדרות האפליקציה",
|
||||
"manage_your_account": "ניהול החשבון שלך",
|
||||
"manage_your_api_keys": "ניהול מפתחות ה API שלך",
|
||||
"manage_your_devices": "ניהול המכשירים המחוברים שלך",
|
||||
"manage_your_oauth_connection": "ניהול חיבור ה-OAuth שלך",
|
||||
"map": "מפה",
|
||||
"map_marker_for_images": "סמן מפה לתמונות שצולמו ב{city}, {country}",
|
||||
"map_marker_with_image": "סמן מפה עם תמונה",
|
||||
@@ -863,7 +867,7 @@
|
||||
"matches": "התאמות",
|
||||
"media_type": "סוג מדיה",
|
||||
"memories": "זכרונות",
|
||||
"memories_setting_description": "נהל מה שאת/ה רואה בזכרונות שלך",
|
||||
"memories_setting_description": "ניהול מה שאת/ה רואה בזכרונות שלך",
|
||||
"memory": "זיכרון",
|
||||
"memory_lane_title": "משעול הזיכרונות {title}",
|
||||
"menu": "תפריט",
|
||||
@@ -915,7 +919,7 @@
|
||||
"notes": "הערות",
|
||||
"notification_toggle_setting_description": "אפשר התראות דוא\"ל",
|
||||
"notifications": "התראות",
|
||||
"notifications_setting_description": "נהל התראות",
|
||||
"notifications_setting_description": "ניהול התראות",
|
||||
"oauth": "OAuth",
|
||||
"official_immich_resources": "משאבי Immich רשמיים",
|
||||
"offline": "לא מקוון",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "בחר מיקום",
|
||||
"place": "מקום",
|
||||
"places": "מקומות",
|
||||
"places_count": "{count, plural, one {מקום {count, number}} other {{count, number} מקומות}}",
|
||||
"play": "נגן",
|
||||
"play_memories": "נגן זכרונות",
|
||||
"play_motion_photo": "הפעל תמונה עם תנועה",
|
||||
@@ -1104,27 +1109,30 @@
|
||||
"scan_library": "סרוק",
|
||||
"scan_settings": "הגדרות סריקה",
|
||||
"scanning_for_album": "סורק אחר אלבום...",
|
||||
"search": "חפש",
|
||||
"search_albums": "חפש אלבומים",
|
||||
"search_by_context": "חפש לפי הקשר",
|
||||
"search": "חיפוש",
|
||||
"search_albums": "חיפוש אלבומים",
|
||||
"search_by_context": "חיפוש לפי הקשר",
|
||||
"search_by_description": "חיפוש לפי תיאור",
|
||||
"search_by_description_example": "יום טיול בסאפה",
|
||||
"search_by_filename": "חיפוש לפי שם קובץ או סיומת",
|
||||
"search_by_filename_example": "לדוגמא IMG_1234.JPG או PNG",
|
||||
"search_camera_make": "חפש תוצרת מצלמה...",
|
||||
"search_camera_model": "חפש דגם מצלמה...",
|
||||
"search_city": "חפש עיר...",
|
||||
"search_country": "חפש ארץ...",
|
||||
"search_for_existing_person": "חפש אדם קיים",
|
||||
"search_camera_make": "חיפוש תוצרת המצלמה...",
|
||||
"search_camera_model": "חפש דגם המצלמה...",
|
||||
"search_city": "חיפוש עיר...",
|
||||
"search_country": "חיפוש ארץ...",
|
||||
"search_for": "חיפוש",
|
||||
"search_for_existing_person": "חיפוש אדם קיים",
|
||||
"search_no_people": "אין אנשים",
|
||||
"search_no_people_named": "אין אנשים בשם \"{name}\"",
|
||||
"search_options": "אפשרויות חיפוש",
|
||||
"search_people": "חפש אנשים",
|
||||
"search_places": "חפש מקומות",
|
||||
"search_people": "חיפוש אנשים",
|
||||
"search_places": "חיפוש מקומות",
|
||||
"search_settings": "הגדרות חיפוש",
|
||||
"search_state": "חפש מדינה...",
|
||||
"search_state": "חיפוש מדינה...",
|
||||
"search_tags": "חיפוש תגים...",
|
||||
"search_timezone": "חפש אזור זמן...",
|
||||
"search_timezone": "חיפוש אזור זמן...",
|
||||
"search_type": "סוג חיפוש",
|
||||
"search_your_photos": "חפש בתמונות שלך",
|
||||
"search_your_photos": "חיפוש בתמונות שלך",
|
||||
"searching_locales": "מחפש אזורי שפה...",
|
||||
"second": "שנייה",
|
||||
"see_all_people": "ראה את כל האנשים",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "תמונות מאת {partner}",
|
||||
"shared_link_options": "אפשרויות קישור משותף",
|
||||
"shared_links": "קישורים משותפים",
|
||||
"shared_links_description": "שתף תמונות וסרטונים עם קישור",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# תמונות וסרטונים משותפים.}}",
|
||||
"shared_with_partner": "משותף עם {partner}",
|
||||
"sharing": "שיתוף",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "הצג אפשרויות אדם",
|
||||
"show_progress_bar": "הצג סרגל התקדמות",
|
||||
"show_search_options": "הצג אפשרויות חיפוש",
|
||||
"show_shared_links": "הצג קישורים משותפים",
|
||||
"show_slideshow_transition": "הצג מעבר מצגת",
|
||||
"show_supporter_badge": "תג תומך",
|
||||
"show_supporter_badge_description": "הצג תג תומך",
|
||||
@@ -1215,7 +1225,7 @@
|
||||
"stack_select_one_photo": "בחר תמונה ראשית אחת עבור הערימה",
|
||||
"stack_selected_photos": "צור ערימת תמונות נבחרות",
|
||||
"stacked_assets_count": "{count, plural, one {נכס # נערם} other {# נכסים נערמו}}",
|
||||
"stacktrace": "Stacktrace",
|
||||
"stacktrace": "Stack trace",
|
||||
"start": "התחל",
|
||||
"start_date": "תאריך התחלה",
|
||||
"state": "מדינה",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "לא מועדף",
|
||||
"unhide_person": "בטל הסתרת אדם",
|
||||
"unknown": "לא ידוע",
|
||||
"unknown_country": "מדינה לא ידועה",
|
||||
"unknown_year": "שנה לא ידועה",
|
||||
"unlimited": "בלתי מוגבל",
|
||||
"unlink_motion_video": "בטל קישור סרטון תנועה",
|
||||
@@ -1307,7 +1318,7 @@
|
||||
"user_id": "מזהה משתמש",
|
||||
"user_liked": "{user} אהב את {type, select, photo {התמונה הזאת} video {הסרטון הזה} asset {הנכס הזה} other {זה}}",
|
||||
"user_purchase_settings": "רכישה",
|
||||
"user_purchase_settings_description": "נהל את הרכישה שלך",
|
||||
"user_purchase_settings_description": "ניהול הרכישה שלך",
|
||||
"user_role_set": "הגדר את {user} בתור {role}",
|
||||
"user_usage_detail": "פרטי השימוש של המשתמש",
|
||||
"user_usage_stats": "סטטיסטיקות שימוש בחשבון",
|
||||
|
||||
18
i18n/hu.json
18
i18n/hu.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Partner hozzáadása",
|
||||
"add_path": "Elérési útvonal megadása",
|
||||
"add_photos": "Fotók hozzáadása",
|
||||
"add_to": "Hozzáadás ide...",
|
||||
"add_to": "Hozzáadás ide…",
|
||||
"add_to_album": "Felvétel albumba",
|
||||
"add_to_shared_album": "Felvétel megosztott albumba",
|
||||
"add_url": "URL hozzáadása",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Beállítások visszaállítása az alapértelmezettre",
|
||||
"reset_settings_to_recent_saved": "Beállítások visszaállítása a legutóbb mentettre",
|
||||
"scanning_library": "Képtár átfésülése",
|
||||
"search_jobs": "Feladatok keresése...",
|
||||
"search_jobs": "Feladatok keresése…",
|
||||
"send_welcome_email": "Üdvözlő email küldése",
|
||||
"server_external_domain_settings": "Külső domain",
|
||||
"server_external_domain_settings_description": "Nyilvánosan megosztott linkek domainje (http(s)://-sel)",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Ugyanaz a személy?",
|
||||
"are_you_sure_to_do_this": "Biztosan ezt szeretnéd csinálni?",
|
||||
"asset_added_to_album": "Hozzáadva az albumhoz",
|
||||
"asset_adding_to_album": "Hozzáadás az albumhoz...",
|
||||
"asset_adding_to_album": "Hozzáadás az albumhoz…",
|
||||
"asset_description_updated": "Az elem leírása frissült",
|
||||
"asset_filename_is_offline": "A(z) {filename} elem nem elérhető, mert offline",
|
||||
"asset_has_unassigned_faces": "Az elemnek hozzá nem rendelt arcai vannak",
|
||||
"asset_hashing": "Hash számítása...",
|
||||
"asset_hashing": "Hash számítása…",
|
||||
"asset_offline": "Elem Offline",
|
||||
"asset_offline_description": "Ez a külső elem már nem elérhető a lemezen. Kérlek, lépj kapcsolatba az Immich adminisztrátorával.",
|
||||
"asset_skipped": "Kihagyva",
|
||||
"asset_skipped_in_trash": "Lomtárban",
|
||||
"asset_uploaded": "Feltöltve",
|
||||
"asset_uploading": "Feltöltés...",
|
||||
"asset_uploading": "Feltöltés…",
|
||||
"assets": "Elemek",
|
||||
"assets_added_count": "{count, plural, other {# elem}} hozzáadva",
|
||||
"assets_added_to_album_count": "{count, plural, other {# elem}} hozzáadva az albumhoz",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Ugrás a mappához",
|
||||
"go_to_search": "Ugrás a kereséshez",
|
||||
"group_albums_by": "Albumok csoportosítása...",
|
||||
"group_country": "Csoportosítás ország szerint",
|
||||
"group_no": "Nincs csoportosítás",
|
||||
"group_owner": "Csoportosítás tulajdonos szerint",
|
||||
"group_places_by": "Helyszínek csoportosítása...",
|
||||
"group_year": "Csoportosítás év szerint",
|
||||
"has_quota": "Kvóta",
|
||||
"hi_user": "Szia {name} ({email})",
|
||||
@@ -822,6 +824,7 @@
|
||||
"latest_version": "Legfrissebb Verzió",
|
||||
"latitude": "Szélesség",
|
||||
"leave": "Elhagyás",
|
||||
"lens_model": "Objektív modell",
|
||||
"let_others_respond": "Mások is reagálhatnak",
|
||||
"level": "Szint",
|
||||
"library": "Képtár",
|
||||
@@ -1107,12 +1110,15 @@
|
||||
"search": "Keresés",
|
||||
"search_albums": "Albumok keresése",
|
||||
"search_by_context": "Keresés tartalom alapján",
|
||||
"search_by_description": "Keresés leírás alapján",
|
||||
"search_by_description_example": "Túrázós nap Szapában",
|
||||
"search_by_filename": "Keresés fájlnév vagy kiterjesztés alapján",
|
||||
"search_by_filename_example": "például IMG_1234.JPG vagy PNG",
|
||||
"search_camera_make": "Kameragyártó keresése...",
|
||||
"search_camera_model": "Kameramodell keresése...",
|
||||
"search_city": "Város keresése...",
|
||||
"search_country": "Ország keresése...",
|
||||
"search_for": "Keresés",
|
||||
"search_for_existing_person": "Már meglévő személy keresése",
|
||||
"search_no_people": "Nincs személy",
|
||||
"search_no_people_named": "Nincs \"{name}\" nevű személy",
|
||||
@@ -1187,6 +1193,7 @@
|
||||
"show_person_options": "Személy beállítások mutatása",
|
||||
"show_progress_bar": "Folyamatjelző Mutatása",
|
||||
"show_search_options": "Keresési lehetőségek mutatása",
|
||||
"show_shared_links": "Megosztott linkek megjelenítése",
|
||||
"show_slideshow_transition": "Vetítés áttűnési effekt mutatása",
|
||||
"show_supporter_badge": "Támogató jelvény",
|
||||
"show_supporter_badge_description": "Támogató jelvény mutatása",
|
||||
@@ -1274,6 +1281,7 @@
|
||||
"unfavorite": "Kedvenc közül kivesz",
|
||||
"unhide_person": "Nem rejtett személy",
|
||||
"unknown": "Ismeretlen",
|
||||
"unknown_country": "Ismeretlen ország",
|
||||
"unknown_year": "Ismeretlen Év",
|
||||
"unlimited": "Korlátlan",
|
||||
"unlink_motion_video": "Mozgókép leválasztása",
|
||||
|
||||
21
i18n/id.json
21
i18n/id.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Tambahkan partner",
|
||||
"add_path": "Tambahkan jalur",
|
||||
"add_photos": "Tambahkan foto",
|
||||
"add_to": "Tambahkan ke...",
|
||||
"add_to": "Tambahkan ke…",
|
||||
"add_to_album": "Tambahkan ke album",
|
||||
"add_to_shared_album": "Tambahkan ke album terbagi",
|
||||
"add_url": "Tambahkan URL",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Atur ulang pengaturan ke bawaan",
|
||||
"reset_settings_to_recent_saved": "Atur ulang pengaturan ke pengaturan tersimpan terkini",
|
||||
"scanning_library": "Memindai pustaka",
|
||||
"search_jobs": "Mencari tugas...",
|
||||
"search_jobs": "Mencari tugas…",
|
||||
"send_welcome_email": "Kirim surel selamat datang",
|
||||
"server_external_domain_settings": "Domain eksternal",
|
||||
"server_external_domain_settings_description": "Domain untuk tautan terbagi publik, termasuk http(s)://",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Apakah ini adalah orang yang sama?",
|
||||
"are_you_sure_to_do_this": "Apakah Anda yakin ingin melakukan ini?",
|
||||
"asset_added_to_album": "Telah ditambahkan ke album",
|
||||
"asset_adding_to_album": "Menambahkan ke album...",
|
||||
"asset_adding_to_album": "Menambahkan ke album…",
|
||||
"asset_description_updated": "Deskripsi aset telah diperbarui",
|
||||
"asset_filename_is_offline": "Aset {filename} sedang luring",
|
||||
"asset_has_unassigned_faces": "Aset memiliki wajah yang belum ditetapkan",
|
||||
"asset_hashing": "Memilah...",
|
||||
"asset_hashing": "Memilah…",
|
||||
"asset_offline": "Aset Luring",
|
||||
"asset_offline_description": "Aset eksternal ini tidak ada lagi di diska. Silakan hubungi administrator Immich Anda untuk bantuan.",
|
||||
"asset_skipped": "Dilewati",
|
||||
"asset_skipped_in_trash": "Dalam sampah",
|
||||
"asset_uploaded": "Sudah diunggah",
|
||||
"asset_uploading": "Mengunggah...",
|
||||
"asset_uploading": "Mengunggah…",
|
||||
"assets": "Aset",
|
||||
"assets_added_count": "{count, plural, one {# aset} other {# aset}} ditambahkan",
|
||||
"assets_added_to_album_count": "Ditambahkan {count, plural, one {# aset} other {# aset}} ke album",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Pergi ke folder",
|
||||
"go_to_search": "Pergi ke pencarian",
|
||||
"group_albums_by": "Kelompokkan album berdasarkan...",
|
||||
"group_country": "Kelompokkan berdasarkan negara",
|
||||
"group_no": "Tidak ada pengelompokan",
|
||||
"group_owner": "Kelompokkan berdasarkan pemilik",
|
||||
"group_places_by": "Kelompokkan tempat berdasarkan…",
|
||||
"group_year": "Kelompokkan berdasarkan tahun",
|
||||
"has_quota": "Memiliki kuota",
|
||||
"hi_user": "Hai {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Termasuk album terbagi",
|
||||
"include_shared_partner_assets": "Termasuk aset terbagi dengan partner",
|
||||
"individual_share": "Bagikan individu",
|
||||
"individual_shares": "Pembagian individu",
|
||||
"info": "Info",
|
||||
"interval": {
|
||||
"day_at_onepm": "Setiap hari pada 13.00",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Versi Terkini",
|
||||
"latitude": "Lintang",
|
||||
"leave": "Tinggalkan",
|
||||
"lens_model": "Model lensa",
|
||||
"let_others_respond": "Biarkan orang lain merespons",
|
||||
"level": "Tingkat",
|
||||
"library": "Pustaka",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Pilih lokasi",
|
||||
"place": "Tempat",
|
||||
"places": "Tempat",
|
||||
"places_count": "{count, plural, one {{count, number} Tempat} other {{count, number} Tempat}}",
|
||||
"play": "Putar",
|
||||
"play_memories": "Putar kenangan",
|
||||
"play_motion_photo": "Putar Foto Gerak",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Cari",
|
||||
"search_albums": "Cari album",
|
||||
"search_by_context": "Cari berdasarkan konteks",
|
||||
"search_by_description": "Cari berdasarkan deskripsi",
|
||||
"search_by_description_example": "Hari mendaki di Sapa",
|
||||
"search_by_filename": "Cari berdasarkan nama berkas atau ekstensi",
|
||||
"search_by_filename_example": "mis. IMG_1234.JPG atau PNG",
|
||||
"search_camera_make": "Cari merek kamera...",
|
||||
"search_camera_model": "Cari model kamera...",
|
||||
"search_city": "Cari kota...",
|
||||
"search_country": "Cari negara...",
|
||||
"search_for": "Cari",
|
||||
"search_for_existing_person": "Cari orang yang sudah ada",
|
||||
"search_no_people": "Tidak ada orang",
|
||||
"search_no_people_named": "Tidak ada orang bernama \"{name}\"",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Foto dari {partner}",
|
||||
"shared_link_options": "Pilihan tautan bersama",
|
||||
"shared_links": "Tautan terbagi",
|
||||
"shared_links_description": "Bagikan foto dan video dengan tautan",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# foto & video terbagi.}}",
|
||||
"shared_with_partner": "Dibagikan dengan {partner}",
|
||||
"sharing": "Pembagian",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Tampilkan opsi orang",
|
||||
"show_progress_bar": "Tampilkan Bilah Progres",
|
||||
"show_search_options": "Tampilkan opsi pencarian",
|
||||
"show_shared_links": "Tampilkan tautan terbagi",
|
||||
"show_slideshow_transition": "Tampilkan transisi salindia",
|
||||
"show_supporter_badge": "Lencana suporter",
|
||||
"show_supporter_badge_description": "Tampilkan lencana suporter",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Hapus favorit",
|
||||
"unhide_person": "Munculkan orang",
|
||||
"unknown": "Tidak diketahui",
|
||||
"unknown_country": "Negara Tidak Diketahui",
|
||||
"unknown_year": "Tahun Tidak Diketahui",
|
||||
"unlimited": "Tidak terbatas",
|
||||
"unlink_motion_video": "Membatalkan tautan video gerak",
|
||||
|
||||
69
i18n/it.json
69
i18n/it.json
@@ -1,44 +1,44 @@
|
||||
{
|
||||
"about": "Informazioni su",
|
||||
"about": "Informazioni",
|
||||
"account": "Profilo",
|
||||
"account_settings": "Impostazioni Account",
|
||||
"acknowledge": "Acconsento",
|
||||
"account_settings": "Impostazioni Profilo",
|
||||
"acknowledge": "Ho capito",
|
||||
"action": "Azione",
|
||||
"actions": "Azioni",
|
||||
"active": "Attivi",
|
||||
"active": "Attivo",
|
||||
"activity": "Attività",
|
||||
"activity_changed": "L'attività è {enabled, select, true {abilitata} other {disabilitata}}",
|
||||
"add": "Aggiungi",
|
||||
"add_a_description": "Aggiungi una descrizione",
|
||||
"add_a_location": "Aggiungi un luogo",
|
||||
"add_a_location": "Aggiungi una posizione",
|
||||
"add_a_name": "Aggiungi un nome",
|
||||
"add_a_title": "Aggiungi un titolo",
|
||||
"add_exclusion_pattern": "Aggiungi un pattern di esclusione",
|
||||
"add_import_path": "Aggiungi un percorso di importazione",
|
||||
"add_location": "Aggiungi posizione",
|
||||
"add_more_users": "Aggiungi altri utenti",
|
||||
"add_partner": "Aggiungi un partner",
|
||||
"add_partner": "Aggiungi partner",
|
||||
"add_path": "Aggiungi percorso",
|
||||
"add_photos": "Aggiungi foto",
|
||||
"add_to": "Aggiungi a...",
|
||||
"add_to": "Aggiungi a…",
|
||||
"add_to_album": "Aggiungi all'album",
|
||||
"add_to_shared_album": "Aggiungi all'album condiviso",
|
||||
"add_to_shared_album": "Aggiungi ad album condiviso",
|
||||
"add_url": "Aggiungi URL",
|
||||
"added_to_archive": "Aggiunto all'archivio",
|
||||
"added_to_favorites": "Aggiunto ai preferiti",
|
||||
"added_to_favorites_count": "Aggiunti {count, number} ai preferiti",
|
||||
"added_to_favorites_count": "Aggiunto {count, number} ai preferiti",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "Aggiungi modelli di esclusione. È supportato il globbing utilizzando *, ** e ?. Per ignorare tutti i file in qualsiasi directory denominata \"Raw\", usa \"**/Raw/**\". Per ignorare tutti i file con estensione \".tif\", usa \"**/*.tif\". Per ignorare un percorso assoluto, usa \"/percorso/da/ignorare/**\".",
|
||||
"asset_offline_description": "Questa risorsa della libreria esterna non si trova più sul disco ed è stata spostata nel cestino. Se il file è stato spostato all'interno della libreria, controlla la timeline per la nuova risorsa corrispondente. Per ripristinare questa risorsa, assicurati che Immich possa accedere al percorso del file seguente ed esegui la scansione della libreria.",
|
||||
"authentication_settings": "Autenticazione",
|
||||
"asset_offline_description": "Questa risorsa della libreria esterna non si trova più sul disco ed è stata spostata nel cestino. Se il file è stato spostato all'interno della libreria, controlla la timeline per la nuova risorsa corrispondente. Per ripristinare questa risorsa, assicurati che Immich possa accedere al percorso del file ed esegui la scansione della libreria.",
|
||||
"authentication_settings": "Impostazioni di Autenticazione",
|
||||
"authentication_settings_description": "Gestisci password, OAuth e altre impostazioni di autenticazione",
|
||||
"authentication_settings_disable_all": "Sei sicuro di voler disabilitare tutte le modalità di accesso? Il login verrà disabilitato completamente.",
|
||||
"authentication_settings_reenable": "Per riabilitare, utilizza un <link>Comando Server</link>.",
|
||||
"authentication_settings_reenable": "Per ri-abilitare, utilizza un <link>Comando Server</link>.",
|
||||
"background_task_job": "Attività in Background",
|
||||
"backup_database": "Backup Database",
|
||||
"backup_database": "Database di Backup",
|
||||
"backup_database_enable_description": "Abilita i backup del database",
|
||||
"backup_keep_last_amount": "Quantità di backup precedenti da mantenere",
|
||||
"backup_settings": "Impostazioni backup",
|
||||
"backup_settings": "Impostazioni di backup",
|
||||
"backup_settings_description": "Gestisci le impostazioni dei backup",
|
||||
"check_all": "Controlla Tutto",
|
||||
"cleared_jobs": "Cancellati i processi per: {job}",
|
||||
@@ -48,7 +48,7 @@
|
||||
"confirm_email_below": "Per confermare, scrivi \"{email}\" qui sotto",
|
||||
"confirm_reprocess_all_faces": "Sei sicuro di voler riprocessare tutti i volti? Questo cancellerà tutte le persone nominate.",
|
||||
"confirm_user_password_reset": "Sei sicuro di voler resettare la password di {user}?",
|
||||
"create_job": "creare lavoro",
|
||||
"create_job": "Crea un lavoro",
|
||||
"cron_expression": "Espressione Cron",
|
||||
"cron_expression_description": "Imposta il tempo di scansione utilizzando il formato Cron. Per ulteriori informazioni fare riferimento a <link>Crontab Guru</link>",
|
||||
"cron_expression_presets": "Espressione Cron preimpostata",
|
||||
@@ -63,7 +63,7 @@
|
||||
"failed_job_command": "Il comando {command} è fallito per il processo: {job}",
|
||||
"force_delete_user_warning": "ATTENZIONE: Questo rimuoverà immediatamente l'utente e tutti i suoi assets. Non è possibile tornare indietro e i file non potranno essere recuperati.",
|
||||
"forcing_refresh_library_files": "Forzando l'aggiornamento completo della libreria",
|
||||
"image_format": "formato",
|
||||
"image_format": "Formato",
|
||||
"image_format_description": "WebP produce file più piccoli rispetto a JPEG, ma l'encoding è più lento.",
|
||||
"image_prefer_embedded_preview": "Preferisci l'anteprima integrata",
|
||||
"image_prefer_embedded_preview_setting_description": "Usa l'anteprima integrata nelle foto RAW come input per l'elaborazione delle immagini, se disponibile. Questo permette un miglioramento dei colori per alcune immagini, ma la qualità delle anteprime dipende dalla macchina fotografica. Inoltre le immagini potrebbero presentare artefatti di compressione.",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Ripristina impostazioni predefinite",
|
||||
"reset_settings_to_recent_saved": "Ripristina impostazioni alle impostazioni salvate di recente",
|
||||
"scanning_library": "Scansione della libreria",
|
||||
"search_jobs": "Cerca Jobs...",
|
||||
"search_jobs": "Cerca Attività…",
|
||||
"send_welcome_email": "Invia email di benvenuto",
|
||||
"server_external_domain_settings": "Dominio esterno",
|
||||
"server_external_domain_settings_description": "Dominio per link condivisi pubblicamente, incluso http(s)://",
|
||||
@@ -374,11 +374,11 @@
|
||||
"album_name": "Nome Album",
|
||||
"album_options": "Impostazioni Album",
|
||||
"album_remove_user": "Rimuovi l'utente?",
|
||||
"album_remove_user_confirmation": "Sicuro di voler cancellare l'utente {user}?",
|
||||
"album_remove_user_confirmation": "Sicuro di voler rimuovere l'utente {user}?",
|
||||
"album_share_no_users": "Sembra che tu abbia condiviso questo album con tutti gli utenti oppure non hai nessun utente con cui condividere.",
|
||||
"album_updated": "Album aggiornato",
|
||||
"album_updated_setting_description": "Ricevi una notifica email quando un album condiviso ha nuovi asset",
|
||||
"album_user_left": "Abbandona {album}",
|
||||
"album_updated_setting_description": "Ricevi una notifica email quando un album condiviso ha nuovi media",
|
||||
"album_user_left": "{album} abbandonato",
|
||||
"album_user_removed": "Utente {user} rimosso",
|
||||
"album_with_link_access": "Permetti a chiunque possieda il link di visualizzare le foto e le persone dell'album.",
|
||||
"albums": "Album",
|
||||
@@ -391,10 +391,10 @@
|
||||
"allow_edits": "Permetti Modifiche",
|
||||
"allow_public_user_to_download": "Permetti agli utenti pubblici di scaricare",
|
||||
"allow_public_user_to_upload": "Permetti agli utenti pubblici di caricare",
|
||||
"anti_clockwise": "Senso Anti-Orario",
|
||||
"anti_clockwise": "Senso anti-orario",
|
||||
"api_key": "Chiave API",
|
||||
"api_key_description": "Il campo verrà mostrato solo una volta. Abbi cura di copiarlo prima di chiudere la finestra.",
|
||||
"api_key_empty": "Il Nome dell'API Key non può essere vuoto",
|
||||
"api_key_description": "Il valore verrà mostrato solo una volta. Assicurati di copiarlo prima di chiudere la finestra.",
|
||||
"api_key_empty": "Il nome della chiave API non può essere vuoto",
|
||||
"api_keys": "Chiavi API",
|
||||
"app_settings": "Impostazioni Applicazione",
|
||||
"appears_in": "Compare in",
|
||||
@@ -407,16 +407,16 @@
|
||||
"are_you_sure_to_do_this": "Sei sicuro di voler procedere?",
|
||||
"asset_added_to_album": "Aggiunto all'album",
|
||||
"asset_adding_to_album": "In aggiunta all'album...",
|
||||
"asset_description_updated": "La descrizione del media non è stata aggiornata",
|
||||
"asset_description_updated": "La descrizione del media è stata aggiornata",
|
||||
"asset_filename_is_offline": "Il media {filename} è offline",
|
||||
"asset_has_unassigned_faces": "Il media ha dei volti non categorizzati",
|
||||
"asset_hashing": "Hashing in corso ...",
|
||||
"asset_hashing": "Hashing in corso …",
|
||||
"asset_offline": "Risorsa Offline",
|
||||
"asset_offline_description": "Questo media non è stato trovato nel disco. Contatta il tuo amministratore di Immich per assistenza.",
|
||||
"asset_skipped": "Saltato",
|
||||
"asset_skipped_in_trash": "In cestino",
|
||||
"asset_skipped_in_trash": "Nel cestino",
|
||||
"asset_uploaded": "Caricato",
|
||||
"asset_uploading": "Caricamento...",
|
||||
"asset_uploading": "Caricamento…",
|
||||
"assets": "Risorse",
|
||||
"assets_added_count": "{count, plural, one {# asset aggiunto} other {# asset aggiunti}}",
|
||||
"assets_added_to_album_count": "{count, plural, one {# asset aggiunto} other {# asset aggiunti}} all'album",
|
||||
@@ -434,7 +434,7 @@
|
||||
"back_close_deselect": "Indietro, chiudi o deseleziona",
|
||||
"backward": "Indietro",
|
||||
"birthdate_saved": "Data di nascita salvata con successo",
|
||||
"birthdate_set_description": "La data di nascita è usata per calcolare l'età di questa persona nel momento dello scatto della foto.",
|
||||
"birthdate_set_description": "La data di nascita è usata per calcolare l'età di questa persona al momento dello scatto della foto.",
|
||||
"blurred_background": "Sfondo sfocato",
|
||||
"bugs_and_feature_requests": "Bug & Richieste di nuove funzionalità",
|
||||
"build": "Compilazione",
|
||||
@@ -442,7 +442,7 @@
|
||||
"bulk_delete_duplicates_confirmation": "Sei sicuro di voler cancellare {count, plural, one {# asset duplicato} other {# assets duplicati}}? Questa operazione manterrà l'asset più pesante di ogni gruppo e cancellerà permanentemente tutti gli altri duplicati. Non puoi annullare questa operazione!",
|
||||
"bulk_keep_duplicates_confirmation": "Sei sicuro di voler tenere {count, plural, one {# asset duplicato} other {# assets duplicati}}? Questa operazione risolverà tutti i gruppi duplicati senza cancellare nulla.",
|
||||
"bulk_trash_duplicates_confirmation": "Sei davvero sicuro di voler cancellare {count, plural, one {# asset duplicato} other {# assets duplicati}}? Questa operazione manterrà l'asset più pesante di ogni gruppo e cancellerà permanentemente tutti gli altri duplicati.",
|
||||
"buy": "Acquistare Immich",
|
||||
"buy": "Acquista Immich",
|
||||
"camera": "Fotocamera",
|
||||
"camera_brand": "Marca fotocamera",
|
||||
"camera_model": "Modello fotocamera",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Vai alla cartella",
|
||||
"go_to_search": "Vai alla ricerca",
|
||||
"group_albums_by": "Raggruppa album in base a...",
|
||||
"group_country": "Raggruppa per paese",
|
||||
"group_no": "Nessun raggruppamento",
|
||||
"group_owner": "Raggruppa in base al proprietario",
|
||||
"group_places_by": "Raggruppa posti per",
|
||||
"group_year": "Raggruppa per anno",
|
||||
"has_quota": "Ha limite",
|
||||
"hi_user": "Ciao {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Includi album condivisi",
|
||||
"include_shared_partner_assets": "Includi asset condivisi del compagno",
|
||||
"individual_share": "Condivisione individuale",
|
||||
"individual_shares": "Condivisioni individuali",
|
||||
"info": "Info",
|
||||
"interval": {
|
||||
"day_at_onepm": "Ogni giorno alle 13",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Ultima Versione",
|
||||
"latitude": "Latitudine",
|
||||
"leave": "Esci",
|
||||
"lens_model": "Modello lenti",
|
||||
"let_others_respond": "Permetti agli altri di rispondere",
|
||||
"level": "Livello",
|
||||
"library": "Libreria",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Scegli una posizione",
|
||||
"place": "Posizione",
|
||||
"places": "Luoghi",
|
||||
"places_count": "{count, plural, one {{count, number} Luogo} altro {{count, number} Luoghi}}",
|
||||
"play": "Avvia",
|
||||
"play_memories": "Avvia ricordi",
|
||||
"play_motion_photo": "Avvia Foto in movimento",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Cerca",
|
||||
"search_albums": "Cerca album",
|
||||
"search_by_context": "Cerca con contesto",
|
||||
"search_by_description": "Ricerca per descrizione",
|
||||
"search_by_description_example": "Giornata di escursioni a Sapa",
|
||||
"search_by_filename": "Cerca per nome del file o estensione",
|
||||
"search_by_filename_example": "es. IMG_1234.JPG o PNG",
|
||||
"search_camera_make": "Cerca produttore fotocamera...",
|
||||
"search_camera_model": "Cerca modello fotocamera...",
|
||||
"search_city": "Cerca città...",
|
||||
"search_country": "Cerca paese...",
|
||||
"search_for": "Cerca per",
|
||||
"search_for_existing_person": "Cerca per persona esistente",
|
||||
"search_no_people": "Nessuna persona",
|
||||
"search_no_people_named": "Nessuna persona chiamate \"{name}\"",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Foto da {partner}",
|
||||
"shared_link_options": "Opzioni link condiviso",
|
||||
"shared_links": "Link condivisi",
|
||||
"shared_links_description": "Condividi foto e video con un link",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# foto & video condivisi.}}",
|
||||
"shared_with_partner": "Condiviso con {partner}",
|
||||
"sharing": "Condivisione",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Mostra opzioni persona",
|
||||
"show_progress_bar": "Mostra Barra Avanzamento",
|
||||
"show_search_options": "Mostra impostazioni di ricerca",
|
||||
"show_shared_links": "Mostra link condivisi",
|
||||
"show_slideshow_transition": "Mostra la transizione della presentazione",
|
||||
"show_supporter_badge": "Medaglia di Contributore",
|
||||
"show_supporter_badge_description": "Mostra la medaglia di contributore",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Rimuovi preferito",
|
||||
"unhide_person": "Mostra persona",
|
||||
"unknown": "Sconosciuto",
|
||||
"unknown_country": "Paese sconosciuto",
|
||||
"unknown_year": "Anno sconosciuto",
|
||||
"unlimited": "Illimitato",
|
||||
"unlink_motion_video": "Scollega video in movimento",
|
||||
|
||||
25
i18n/ko.json
25
i18n/ko.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "파트너 추가",
|
||||
"add_path": "경로 추가",
|
||||
"add_photos": "사진 추가",
|
||||
"add_to": "앨범에 추가...",
|
||||
"add_to": "앨범에 추가…",
|
||||
"add_to_album": "앨범에 추가",
|
||||
"add_to_shared_album": "공유 앨범에 추가",
|
||||
"add_url": "URL 추가",
|
||||
@@ -131,7 +131,7 @@
|
||||
"machine_learning_smart_search_description": "CLIP 임베딩으로 자연어를 사용하여 이미지 검색",
|
||||
"machine_learning_smart_search_enabled": "스마트 검색 활성화",
|
||||
"machine_learning_smart_search_enabled_description": "비활성화된 경우 스마트 검색을 위한 이미지 처리를 진행하지 않습니다.",
|
||||
"machine_learning_url_description": "기계 학습 서버 URL",
|
||||
"machine_learning_url_description": "기계 학습 서버의 URL을 입럭합니다. 여러 개의 URL이 입력된 경우 모든 서버에 응답을 보낸 뒤 응답에 성공한 서버가 사용됩니다.",
|
||||
"manage_concurrency": "동시성 관리",
|
||||
"manage_log_settings": "로그 설정 관리",
|
||||
"map_dark_style": "다크 스타일",
|
||||
@@ -219,11 +219,11 @@
|
||||
"reset_settings_to_default": "설정을 기본값으로 복원",
|
||||
"reset_settings_to_recent_saved": "마지막으로 저장된 설정으로 복원",
|
||||
"scanning_library": "라이브러리 스캔 중",
|
||||
"search_jobs": "작업 검색...",
|
||||
"search_jobs": "작업 검색…",
|
||||
"send_welcome_email": "환영 이메일 전송",
|
||||
"server_external_domain_settings": "외부 도메인",
|
||||
"server_external_domain_settings_description": "공개 공유 링크에 사용할 도메인 (http(s):// 포함)",
|
||||
"server_public_users": "공공 사용자",
|
||||
"server_public_users": "모든 사용자",
|
||||
"server_public_users_description": "공유 앨범에 사용자를 추가할 경우 모든 사용자(이름, 이메일)가 나열됩니다. 비활성화 할 경우, 관리자만이 사용자 목록을 사용할 수 있습니다.",
|
||||
"server_settings": "서버 설정",
|
||||
"server_settings_description": "서버 설정 관리",
|
||||
@@ -250,6 +250,10 @@
|
||||
"storage_template_user_label": "사용자의 스토리지 레이블: <code>{label}</code>",
|
||||
"system_settings": "시스템 설정",
|
||||
"tag_cleanup_job": "태그 정리",
|
||||
"template_email_if_empty": "비어 있는 경우 기본 템플릿이 사용됩니다.",
|
||||
"template_email_preview": "미리보기",
|
||||
"template_email_settings": "이메일 템플릿",
|
||||
"template_email_settings_description": "사용자 정의 이메일 템플릿 관리",
|
||||
"theme_custom_css_settings": "사용자 정의 CSS",
|
||||
"theme_custom_css_settings_description": "Immich에 적용할 사용자 정의 CSS(Cascading Style Sheets) 설정",
|
||||
"theme_settings": "테마 설정",
|
||||
@@ -392,17 +396,17 @@
|
||||
"are_these_the_same_person": "동일한 인물인가요?",
|
||||
"are_you_sure_to_do_this": "계속 진행하시겠습니까?",
|
||||
"asset_added_to_album": "앨범에 추가되었습니다.",
|
||||
"asset_adding_to_album": "앨범에 추가 중...",
|
||||
"asset_adding_to_album": "앨범에 추가 중…",
|
||||
"asset_description_updated": "항목의 설명이 업데이트되었습니다.",
|
||||
"asset_filename_is_offline": "{filename} 항목 누락됨",
|
||||
"asset_has_unassigned_faces": "항목에 할당되지 않은 얼굴이 있음",
|
||||
"asset_hashing": "해시 확인 중...",
|
||||
"asset_hashing": "해싱 중…",
|
||||
"asset_offline": "누락된 항목",
|
||||
"asset_offline_description": "디스크에서 항목을 더이상 찾을 수 없습니다. 서버 관리자에게 연락하여 도움을 받으세요.",
|
||||
"asset_skipped": "건너뜀",
|
||||
"asset_skipped_in_trash": "휴지통의 항목",
|
||||
"asset_uploaded": "업로드 완료",
|
||||
"asset_uploading": "업로드 중...",
|
||||
"asset_uploading": "업로드 중…",
|
||||
"assets": "항목",
|
||||
"assets_added_count": "항목 {count, plural, one {#개} other {#개}}가 추가되었습니다.",
|
||||
"assets_added_to_album_count": "앨범에 항목 {count, plural, one {#개} other {#개}} 추가됨",
|
||||
@@ -1080,6 +1084,8 @@
|
||||
"search": "검색",
|
||||
"search_albums": "앨범 검색",
|
||||
"search_by_context": "내용 검색",
|
||||
"search_by_description": "설명으로 검색",
|
||||
"search_by_description_example": "사파에서 즐기는 하이킹",
|
||||
"search_by_filename": "파일명 또는 확장자로 검색",
|
||||
"search_by_filename_example": "예시: IMG_1234.JPG or PNG",
|
||||
"search_camera_make": "카메라 제조사 검색...",
|
||||
@@ -1221,6 +1227,7 @@
|
||||
"they_will_be_merged_together": "선택한 인물들이 병합됩니다.",
|
||||
"third_party_resources": "서드 파티 리소스",
|
||||
"time_based_memories": "시간 기준 추억",
|
||||
"timeline": "타임라인",
|
||||
"timezone": "시간대",
|
||||
"to_archive": "보관함으로 이동",
|
||||
"to_change_password": "비밀번호 변경",
|
||||
@@ -1243,6 +1250,7 @@
|
||||
"unfavorite": "즐겨찾기 해제",
|
||||
"unhide_person": "인물 숨김 해제",
|
||||
"unknown": "알 수 없음",
|
||||
"unknown_country": "알 수 없는 지역",
|
||||
"unknown_year": "알 수 없는 연도",
|
||||
"unlimited": "무제한",
|
||||
"unlink_motion_video": "모션 비디오 링크 해제",
|
||||
@@ -1279,6 +1287,7 @@
|
||||
"user_purchase_settings_description": "구매 및 제품 키 관리",
|
||||
"user_role_set": "{user}님에게 {role} 역할을 설정했습니다.",
|
||||
"user_usage_detail": "사용자 사용량 상세",
|
||||
"user_usage_stats_description": "계정 사용량 통계 보기",
|
||||
"username": "계정명",
|
||||
"users": "사용자",
|
||||
"utilities": "도구",
|
||||
@@ -1286,7 +1295,7 @@
|
||||
"variables": "변수",
|
||||
"version": "버전",
|
||||
"version_announcement_closing": "당신의 친구, Alex가",
|
||||
"version_announcement_message": "안녕하세요, 새 버전의 Immich를 사용할 수 있습니다. 자세한 내용은 <link>릴리스 노트</link>를 참조하세요. WatchTower 등의 자동 업데이트 기능을 사용하는 경우 의도하지 않은 동작을 방지하기 위해 <code>docker-compose.yml</code> 및 <code>.env</code> 구성이 최신인지 확인하세요.",
|
||||
"version_announcement_message": "안녕하세요! 새 버전의 Immich를 사용할 수 있습니다. 잘못된 구성을 방지하고 Immich를 최신 상태로 유지하기 위해 잠시 시간을 내어 <link>릴리스 노트</link>를 읽어보는 것을 권장합니다. 특히 WatchTower 등의 자동 업데이트 기능을 사용하는 경우 의도하지 않은 동작을 방지하기 위해 더더욱 권장됩니다.",
|
||||
"version_history": "버전 기록",
|
||||
"version_history_item": "{date} 버전 {version} 설치",
|
||||
"video": "동영상",
|
||||
|
||||
@@ -932,6 +932,7 @@
|
||||
"search": "Ieškoti",
|
||||
"search_albums": "",
|
||||
"search_by_context": "Ieškoti pagal kontekstą",
|
||||
"search_by_description_example": "Žygio diena Sapoje",
|
||||
"search_by_filename": "Ieškoti pagal failo pavadinimą arba plėtinį",
|
||||
"search_by_filename_example": "pvz. IMG_1234.JPG arba PNG",
|
||||
"search_camera_make": "",
|
||||
|
||||
14
i18n/lv.json
14
i18n/lv.json
@@ -841,13 +841,14 @@
|
||||
"toggle_theme": "",
|
||||
"total_usage": "Kopējais lietojums",
|
||||
"trash": "Atkritne",
|
||||
"trash_all": "",
|
||||
"trash_all": "Dzēst Visu",
|
||||
"trash_no_results_message": "",
|
||||
"type": "",
|
||||
"unarchive": "Atarhivēt",
|
||||
"unfavorite": "Noņemt no izlases",
|
||||
"unhide_person": "Atcelt personas slēpšanu",
|
||||
"unknown": "",
|
||||
"unknown_country": "Nezināma Valsts",
|
||||
"unknown_year": "Nezināms gads",
|
||||
"unlimited": "Neierobežots",
|
||||
"unlink_oauth": "",
|
||||
@@ -857,7 +858,7 @@
|
||||
"unselect_all": "",
|
||||
"unstack": "At-Stekot",
|
||||
"up_next": "",
|
||||
"updated_password": "",
|
||||
"updated_password": "Parole ir atjaunināta",
|
||||
"upload": "Augšupielādēt",
|
||||
"upload_concurrency": "",
|
||||
"upload_status_duplicates": "Dublikāti",
|
||||
@@ -868,7 +869,7 @@
|
||||
"user": "Lietotājs",
|
||||
"user_id": "Lietotāja ID",
|
||||
"user_usage_detail": "Informācija par lietotāju lietojumu",
|
||||
"username": "",
|
||||
"username": "Lietotājvārds",
|
||||
"users": "Lietotāji",
|
||||
"utilities": "Rīki",
|
||||
"validate": "",
|
||||
@@ -879,15 +880,16 @@
|
||||
"video": "Videoklips",
|
||||
"video_hover_setting_description": "",
|
||||
"videos": "Videoklipi",
|
||||
"view_album": "Skatīt Albumu",
|
||||
"view_all": "Apskatīt visu",
|
||||
"view_all_users": "",
|
||||
"view_all_users": "Skatīt visus lietotājus",
|
||||
"view_links": "",
|
||||
"view_next_asset": "",
|
||||
"view_previous_asset": "",
|
||||
"waiting": "Gaida",
|
||||
"week": "",
|
||||
"week": "Nedēļa",
|
||||
"welcome_to_immich": "",
|
||||
"year": "",
|
||||
"year": "Gads",
|
||||
"years_ago": "Pirms {years, plural, one {# gada} other {# gadiem}}",
|
||||
"yes": "Jā",
|
||||
"zoom_image": "Pietuvināt attēlu"
|
||||
|
||||
305
i18n/mk.json
305
i18n/mk.json
@@ -1,28 +1,295 @@
|
||||
{
|
||||
"about": "Освежи",
|
||||
"about": "За Immich",
|
||||
"account": "Профил",
|
||||
"account_settings": "Поставки за профилот",
|
||||
"acknowledge": "Означи како прочитано",
|
||||
"acknowledge": "Прочитано",
|
||||
"action": "Акција",
|
||||
"actions": "Акции",
|
||||
"active": "Активни",
|
||||
"activity": "Активности",
|
||||
"add": "Додај",
|
||||
"add_a_description": "Додај опис",
|
||||
"add_a_location": "Додај локација",
|
||||
"add_a_name": "Додај име",
|
||||
"add_a_title": "Додај наслов",
|
||||
"add_exclusion_pattern": "Додај патерн за игнотирање",
|
||||
"add_import_path": "Додај патека за импортирање",
|
||||
"add_location": "Додај локација",
|
||||
"add_more_users": "Додај уште корисници",
|
||||
"add_partner": "Додај партнер",
|
||||
"add_path": "Додај патека",
|
||||
"add_photos": "Додај слики",
|
||||
"add_to": "Додај во...",
|
||||
"add_to_album": "Додај во албум",
|
||||
"add_to_shared_album": "Додај во споделен албум",
|
||||
"activity": "Активност",
|
||||
"activity_changed": "Активноста е {enabled, select, true {овозможена} other {неовозможена}}",
|
||||
"add": "Додади",
|
||||
"add_a_description": "Додади опис",
|
||||
"add_a_location": "Додади локација",
|
||||
"add_a_name": "Додади име",
|
||||
"add_a_title": "Додади наслов",
|
||||
"add_exclusion_pattern": "Додади шаблон за исклучување",
|
||||
"add_import_path": "Додади патека за импортирање",
|
||||
"add_location": "Додади локација",
|
||||
"add_more_users": "Додади уште корисници",
|
||||
"add_partner": "Додади партнер",
|
||||
"add_path": "Додади патека",
|
||||
"add_photos": "Додади слики",
|
||||
"add_to": "Додади во…",
|
||||
"add_to_album": "Додади во албум",
|
||||
"add_to_shared_album": "Додади во споделен албум",
|
||||
"add_url": "Додади URL",
|
||||
"added_to_archive": "Додадено во архива",
|
||||
"added_to_favorites": "Додадено во омилени",
|
||||
"added_to_favorites_count": "Додадени {count, number} во омилени"
|
||||
"added_to_favorites_count": "Додадени {count, number} во омилени",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "Додади шаблони за исклучување. Поддржано е користење на glob со *, **, и ?. За да се игнорираат сите датотеки во кој било директориум именуван \"Raw\", користи \"**/Raw/**\". За да се игнорираат сите датотеки што завршуваат со \".tif\", користи \"**/*.tif\". За да се игнорира апсолутна патека, користи \"/path/to/ignore/**\".",
|
||||
"asset_offline_description": "Ова средство од екстерна библиотека веќе не е пронајдено на дискот и е преместено во ѓубре. Ако датотеката била преместена во рамките на библиотеката, проверете ја вашата временска линија за новото соодветно средство. За да го вратите ова средство, осигурајте се дека долунаведената патека може да биде пристапена од Immich и скенирајте ја библиотеката.",
|
||||
"authentication_settings": "Поставки за автентикација",
|
||||
"authentication_settings_description": "Управувај со лозинки, OAuth, и други поставки за автентикација",
|
||||
"authentication_settings_disable_all": "Дали сте сигурни дека сакате да ги исклучите сите методи за најава? Целосно ќе биде оневозможено најавување.",
|
||||
"authentication_settings_reenable": "За повторно да овозможите, искористете <link>Сервер команда</link>.",
|
||||
"background_task_job": "Позадински задачи",
|
||||
"backup_database": "Резервна копија од базата на податоци",
|
||||
"backup_database_enable_description": "Овозможи резервни копии од базата на податоци",
|
||||
"backup_keep_last_amount": "Количина на претходни резервни копии за чување",
|
||||
"backup_settings": "Поставки за резервни копии",
|
||||
"backup_settings_description": "Управувај со поставки за резервни копии на базата на податоци",
|
||||
"check_all": "Провери сѐ",
|
||||
"cleared_jobs": "Исчистени задачи за: {job}",
|
||||
"config_set_by_file": "Конгигурацијата е моментално поставена од конфигурациска датотека",
|
||||
"confirm_delete_library": "Дали сте сигурни дека сакате да ја избришете библиотеката {library}?",
|
||||
"confirm_delete_library_assets": "Дали сте сигурни дека сакате да ја избришете оваа библиотека? Ова ќе {count, plural, one {избрише # содржано средство} other {ги избрише сите # содржани средства}} од Immich и нема да може да се {count, plural, one {врати} other {вратат}} назад. Датотеките ќе останат на диск.",
|
||||
"confirm_email_below": "За да потврдите, внесете \"{email}\" доле",
|
||||
"confirm_reprocess_all_faces": "Дали сте сигурни дека сакате да се обработат одново сите лица? Ова ќе ги избрише и сите именувани луѓе.",
|
||||
"confirm_user_password_reset": "Дали сте сигурни дека сакате да се поништи лозинката на {user}?",
|
||||
"create_job": "Создади задача",
|
||||
"cron_expression": "Cron израз",
|
||||
"cron_expression_description": "Подеси го интервалот на скенирање користејќи го cron форматот. За повеќе информации погледнете на пр. <link>Crontab Guru</link>",
|
||||
"cron_expression_presets": "Предефинирани Cron изрази",
|
||||
"disable_login": "Оневозможи најава",
|
||||
"duplicate_detection_job_description": "Пушти машинско учење на средствата за да се откријат слични слики. Се потпира на Smart Search",
|
||||
"force_delete_user_warning": "ПРЕДУПРЕДУВАЊЕ: Ова веднаш ќе го отстрани корисникот и сите средства. Оваа акција не може да се поништи и датотеките нема да може да се вратат назад.",
|
||||
"image_format": "Формат",
|
||||
"image_quality": "Квалитет",
|
||||
"image_resolution": "Резолуција",
|
||||
"image_settings": "Поставки за слики",
|
||||
"library_scanning": "Периодично скенирање",
|
||||
"library_settings": "Екстерна библиотека",
|
||||
"logging_enable_description": "Вклучи евидентирање",
|
||||
"logging_settings": "Евидентирање",
|
||||
"map_dark_style": "Темен стил",
|
||||
"map_light_style": "Светол стил",
|
||||
"map_settings": "Карта",
|
||||
"metadata_extraction_job": "Извлечи метаподатоци",
|
||||
"migration_job": "Миграција",
|
||||
"oauth_auto_launch": "Автоматско започнување",
|
||||
"oauth_auto_register": "Автоматска регистрација",
|
||||
"oauth_button_text": "Текст на копче",
|
||||
"oauth_client_id": "Клиентски ID",
|
||||
"oauth_client_secret": "Клиентска тајна",
|
||||
"oauth_issuer_url": "URL на издавач",
|
||||
"oauth_scope": "Опсег",
|
||||
"oauth_settings": "OAuth",
|
||||
"oauth_signing_algorithm": "Алгоритам за потпишување",
|
||||
"offline_paths": "Офлајн патеки",
|
||||
"password_settings": "Најава со лозинка",
|
||||
"repair_all": "Поправи ги сите",
|
||||
"sidecar_job": "Sidecar метаподатоци",
|
||||
"storage_template_settings": "Шаблон за складирање",
|
||||
"system_settings": "Системски поставки",
|
||||
"thumbnail_generation_job": "Генерирај сликички",
|
||||
"transcoding_acceleration_vaapi": "VAAPI",
|
||||
"transcoding_threads": "Нишки",
|
||||
"untracked_files": "Неследени датотеки"
|
||||
},
|
||||
"admin_email": "Администрациска Е-пошта",
|
||||
"admin_password": "Администрациска лозинка",
|
||||
"administration": "Администрација",
|
||||
"advanced": "Напредно",
|
||||
"albums": "Албуми",
|
||||
"all": "Сите",
|
||||
"all_people": "Сите луѓе",
|
||||
"anti_clockwise": "Спротивно од стрелките на часовникот",
|
||||
"appears_in": "Се појавува во",
|
||||
"archive": "Архива",
|
||||
"archive_size": "Големина на архива",
|
||||
"asset_hashing": "Хеширање…",
|
||||
"asset_offline": "Средството е офлајн",
|
||||
"asset_skipped": "Пропуштено",
|
||||
"assets": "Средства",
|
||||
"authorized_devices": "Авторизирани уреди",
|
||||
"back": "Назад",
|
||||
"backward": "Наназад",
|
||||
"blurred_background": "Заматена позадина",
|
||||
"camera": "Камера",
|
||||
"camera_brand": "Марка на камера",
|
||||
"camera_model": "Модел на камера",
|
||||
"cancel": "Откажи",
|
||||
"cancel_search": "Откажи пребарување",
|
||||
"change_password": "Промени лозинка",
|
||||
"city": "Град",
|
||||
"clear": "Исчисти",
|
||||
"clear_all": "Исчисти сѐ",
|
||||
"clockwise": "Во насока на стрелките на часовникот",
|
||||
"close": "Затвори",
|
||||
"collapse": "Колапс",
|
||||
"collapse_all": "Колапсирај сѐ",
|
||||
"color": "Боја",
|
||||
"comment_options": "Опции за коментар",
|
||||
"confirm": "Потврди",
|
||||
"confirm_password": "Потврди лозинка",
|
||||
"contain": "Во рамки на прозорецот",
|
||||
"context": "Контекст",
|
||||
"continue": "Продолжи",
|
||||
"copy_image": "Копирај слика",
|
||||
"copy_link": "Копирај линк",
|
||||
"country": "Држава",
|
||||
"cover": "Покриј го прозорецот",
|
||||
"covers": "Насловни",
|
||||
"create": "Создади",
|
||||
"create_album": "Создади албум",
|
||||
"create_link": "Создади линк",
|
||||
"created": "Создадено",
|
||||
"current_device": "Тековен уред",
|
||||
"dark": "Темно",
|
||||
"day": "Ден",
|
||||
"delete": "Избриши",
|
||||
"delete_link": "Избриши линк",
|
||||
"description": "Опис",
|
||||
"details": "Детали",
|
||||
"direction": "Насока",
|
||||
"disabled": "Оневозможено",
|
||||
"discord": "Дискорд",
|
||||
"discover": "Откриј",
|
||||
"display_options": "Опции за приказ",
|
||||
"documentation": "Документација",
|
||||
"done": "Готово",
|
||||
"download": "Превземи",
|
||||
"download_settings": "Превземање",
|
||||
"downloading": "Се превземува",
|
||||
"duplicates": "Дупликати",
|
||||
"duration": "Времетраење",
|
||||
"edit": "Уреди",
|
||||
"edit_date": "Датум на уредување",
|
||||
"edit_faces": "Уреди лица",
|
||||
"edit_link": "Уреди линк",
|
||||
"edit_location": "Уреди локација",
|
||||
"edit_people": "Уреди луѓе",
|
||||
"edit_user": "Уреди корисник",
|
||||
"edited": "Уредено",
|
||||
"editor": "Уредувач",
|
||||
"editor_crop_tool_h2_rotation": "Ротација",
|
||||
"email": "Е-пошта",
|
||||
"empty_trash": "Испразни го ѓубрето",
|
||||
"enable": "Овозможи",
|
||||
"enabled": "Овозможено",
|
||||
"end_date": "Краен датум",
|
||||
"error": "Грешка",
|
||||
"exif": "Exif",
|
||||
"expand_all": "Прошири ги сите",
|
||||
"expire_after": "Да истече после",
|
||||
"expired": "Истечено",
|
||||
"explore": "Истражи",
|
||||
"export": "Извези",
|
||||
"extension": "Екстензија",
|
||||
"external": "Екстерно",
|
||||
"external_libraries": "Екстерни библиотеки",
|
||||
"face_unassigned": "Недоделено",
|
||||
"favorite": "Омилено",
|
||||
"favorites": "Омилени",
|
||||
"features": "Функии",
|
||||
"file_name": "Име на датотека",
|
||||
"filename": "Име на датотека",
|
||||
"filetype": "Тип на датотека",
|
||||
"filter_people": "Филтрирај луѓе",
|
||||
"folders": "Папки",
|
||||
"forward": "Нанапред",
|
||||
"general": "Генерално",
|
||||
"get_help": "Побарај помош",
|
||||
"go_back": "Врати се назад",
|
||||
"hide_password": "Скриј лозинка",
|
||||
"host": "Хост",
|
||||
"hour": "Час",
|
||||
"image": "Слика",
|
||||
"in_archive": "Во архива",
|
||||
"individual_share": "Индивидуално споделување",
|
||||
"info": "Информации",
|
||||
"jobs": "Задачи",
|
||||
"keep": "Задржи",
|
||||
"language": "Јазик",
|
||||
"last_seen": "Последно видено",
|
||||
"latitude": "Географска ширина",
|
||||
"leave": "Напушти",
|
||||
"level": "Ниво",
|
||||
"library": "Библиотека",
|
||||
"light": "Светло",
|
||||
"link_options": "Опции за линк",
|
||||
"list": "Листа",
|
||||
"loading": "Вчитување",
|
||||
"log_out": "Одјави се",
|
||||
"login": "Најава",
|
||||
"longitude": "Географска должина",
|
||||
"look": "Изглед",
|
||||
"make": "Марка",
|
||||
"map": "Карта",
|
||||
"matches": "Софпаѓања",
|
||||
"media_type": "Тип на медија",
|
||||
"memories": "Мемории",
|
||||
"memory": "Меморија",
|
||||
"menu": "Мени",
|
||||
"merge": "Спој",
|
||||
"minimize": "Минимизирај",
|
||||
"minute": "Минута",
|
||||
"missing": "Недостасувачки",
|
||||
"model": "Модел",
|
||||
"month": "Месец",
|
||||
"more": "Уште",
|
||||
"name": "Име",
|
||||
"never": "Никогаш",
|
||||
"new_password": "Нова лозинка",
|
||||
"new_person": "Нова личност",
|
||||
"next": "Следно",
|
||||
"no": "Не",
|
||||
"no_name": "Без име",
|
||||
"no_results": "Нема резултати",
|
||||
"notes": "Белешки",
|
||||
"notifications": "Нотификации",
|
||||
"oauth": "OAuth",
|
||||
"offline": "Офлајн",
|
||||
"ok": "Ок",
|
||||
"online": "Онлајн",
|
||||
"options": "Опции",
|
||||
"or": "или",
|
||||
"original": "оригинално",
|
||||
"other": "Друго",
|
||||
"other_devices": "Други уреди",
|
||||
"other_variables": "Други променливи",
|
||||
"password": "Лозинка",
|
||||
"people": "Луѓе",
|
||||
"permanently_delete": "Трајни избриши",
|
||||
"photos": "Слики",
|
||||
"place": "Место",
|
||||
"preset": "Претходно поставено",
|
||||
"preview": "Преглед",
|
||||
"reaction_options": "Опции за реакција",
|
||||
"read_changelog": "Прочитај дневник на промени",
|
||||
"refresh": "Освежи",
|
||||
"refreshed": "Освежено",
|
||||
"remove": "Отстрани",
|
||||
"repair": "Поправи",
|
||||
"require_password": "Потребно лозинка",
|
||||
"reset": "Ресетирај",
|
||||
"restore": "Поврати",
|
||||
"role": "Улога",
|
||||
"save": "Зачувај",
|
||||
"search": "Пребарај",
|
||||
"second": "Секунда",
|
||||
"selected": "Избрано",
|
||||
"settings": "Поставки",
|
||||
"share": "Сподели",
|
||||
"sharing": "Споделување",
|
||||
"slideshow": "Слајдшоу",
|
||||
"state": "Регион",
|
||||
"suggestions": "Предлози",
|
||||
"sync": "Синхронизација",
|
||||
"template": "Шаблон",
|
||||
"to_archive": "Архива",
|
||||
"to_favorite": "Додади во омилени",
|
||||
"trash": "Ѓубре",
|
||||
"unarchive": "Извади од архива",
|
||||
"unfavorite": "Извади од омилени",
|
||||
"unknown": "Непознато",
|
||||
"users": "Korisnici",
|
||||
"utilities": "Алатки",
|
||||
"variables": "Променливи",
|
||||
"video": "Видео",
|
||||
"waiting": "Во исчекување",
|
||||
"week": "Недела",
|
||||
"year": "Година"
|
||||
}
|
||||
|
||||
88
i18n/ms.json
88
i18n/ms.json
@@ -20,13 +20,13 @@
|
||||
"add_partner": "Tambah rakan",
|
||||
"add_path": "Tambah laluan",
|
||||
"add_photos": "Tambah gambar",
|
||||
"add_to": "Tambah ke...",
|
||||
"add_to": "Tambah ke…",
|
||||
"add_to_album": "Tambah ke album",
|
||||
"add_to_shared_album": "Tambah ke album yang dikongsi",
|
||||
"add_url": "Tambah URL",
|
||||
"added_to_archive": "Tambah ke arkib",
|
||||
"added_to_favorites": "Ditambah pada favorit",
|
||||
"added_to_favorites_count": "Menambahkan {count, number} ke favorit",
|
||||
"added_to_favorites": "Ditambah ke kegemaran",
|
||||
"added_to_favorites_count": "Menambahkan {count, number} ke kegemaran",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "Tambahkan corak pengecualian. Globbing menggunakan *, **, dan ? disokong. Untuk mengabaikan semua fail dalam mana-mana direktori bernama \"Raw\", gunakan \"**/Raw/**\". Untuk mengabaikan semua fail yang berakhir dengan \".tif\", gunakan \"**/*.tif\". Untuk mengabaikan laluan mutlak, gunakan \"/path/to/ignore/**\".",
|
||||
"asset_offline_description": "Aset pustaka luaran ini tidak lagi ditemui pada cakera dan telah dialihkan ke sampah. Jika fail telah dialihkan dalam pustaka, semak garis masa anda untuk aset baharu yang sepadan. Untuk memulihkan aset ini, sila pastikan bahawa laluan fail di bawah boleh diakses oleh Immich dan mengimbas pustaka.",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Tetapkan semula tetapan kepada lalai",
|
||||
"reset_settings_to_recent_saved": "Tetapkan semula tetapan kepada tetapan yang disimpan baru-baru ini",
|
||||
"scanning_library": "Mengimbas perpustakaan",
|
||||
"search_jobs": "Cari kerja...",
|
||||
"search_jobs": "Cari kerja…",
|
||||
"send_welcome_email": "Hantar e-mel alu-aluan",
|
||||
"server_external_domain_settings": "Domain luaran",
|
||||
"server_external_domain_settings_description": "Domain untuk pautan kongsi awam, termasuk http(s)://",
|
||||
@@ -230,6 +230,7 @@
|
||||
"server_welcome_message": "Mesej alu-aluan",
|
||||
"server_welcome_message_description": "Mesej yang dipaparkan pada halaman log masuk.",
|
||||
"sidecar_job": "Metadata kereta sisi",
|
||||
"sidecar_job_description": "Temui atau segerakkan metadata sampingan daripada sistem fail",
|
||||
"slideshow_duration_description": "Bilangan saat untuk memaparkan setiap imej",
|
||||
"smart_search_job_description": "Jalankan pembelajaran mesin pada aset-aset untuk menyokong carian pintar",
|
||||
"storage_template_date_time_description": "Cap masa penciptaan aset digunakan untuk maklumat masa dan tarikh",
|
||||
@@ -242,10 +243,85 @@
|
||||
"storage_template_migration_info": "Perubahan templat hanya akan digunakan pada aset baharu. Untuk menggunakan templat secara retroaktif pada aset-aset yang dimuat naik sebelum ini, jalankan <link>{job}</link>.",
|
||||
"storage_template_migration_job": "Kerja Migrasi Templat Storan",
|
||||
"storage_template_more_details": "Untuk butiran lanjut tentang ciri ini, rujuk kepada <template-link>Templat Storan</template-link> dan <implications-link>implikasi</implications-link>",
|
||||
"storage_template_onboarding_description": "Apabila didayakan, ciri ini akan menyusun fail secara automatik berdasarkan templat yang ditentukan pengguna. Disebabkan isu kestabilan, ciri ini telah dimatikan secara umum. Untuk mendapatkan maklumat lanjut, sila lihat <link>dokumentasi</link>.",
|
||||
"storage_template_path_length": "Anggaran kepanjangan laluan: <b>{length, number}</b>/{limit, number}",
|
||||
"storage_template_settings": "Templat Storan",
|
||||
"storage_template_settings_description": "Urus struktur folder dan nama fail aset dimuat naik",
|
||||
"storage_template_user_label": "<code>{label}</code> ialah Label Storan pengguna",
|
||||
"system_settings": "Tetapan Sistem",
|
||||
"tag_cleanup_job": "Pembersihan tag",
|
||||
"template_email_available_tags": "Anda boleh menggunakan pembolehubah berikut dalam templat anda: {tags}",
|
||||
"template_email_if_empty": "Jika templat kosong, e-mel yang terpilih sebelum ini akan digunakan.",
|
||||
"template_email_invite_album": "Templat Jemputan Album",
|
||||
"template_email_preview": "Previu",
|
||||
"template_email_settings": "Templat E-mel",
|
||||
"template_email_settings_description": "Templat urus pemberitahuan dengan e-mel tersuai",
|
||||
"template_email_update_album": "Templat Kemas kini Album",
|
||||
"template_email_welcome": "Templat e-mel alu-aluan",
|
||||
"template_settings": "Templat Pemberitahuan",
|
||||
"template_settings_description": "Urus templat tersuai untuk pemberitahuan.",
|
||||
"theme_custom_css_settings": "CSS tersuai",
|
||||
"theme_custom_css_settings_description": "Lembaran Gaya Lata membolehkan reka bentuk Immich disuaikan.",
|
||||
"theme_settings": "Tetapan Tema",
|
||||
"theme_settings_description": "Urus penyesuaian antara muka web Immich",
|
||||
"these_files_matched_by_checksum": "Fail ini dipadankan dengan semakan mereka",
|
||||
"thumbnail_generation_job": "Jana Imej Kenit",
|
||||
"thumbnail_generation_job_description": "Janakan imej kenit yang besar, kecil, dan kabur untuk setiap aset, serta imej kenit untuk setiap orang"
|
||||
"thumbnail_generation_job_description": "Janakan imej kenit yang besar, kecil, dan kabur untuk setiap aset, serta imej kenit untuk setiap orang",
|
||||
"transcoding_acceleration_api": "API Pecutan",
|
||||
"transcoding_acceleration_api_description": "API yang akan berinteraksi dengan peranti anda untuk mempercepatkan transcoding. Tetapan ini adalah 'usaha terbaik': ia akan berundur kepada transkod perisian apabila gagal. VP9 mungkin berfungsi atau tidak bergantung pada perkakasan anda.",
|
||||
"transcoding_acceleration_nvenc": "NVENC (memerlukan GPU NVIDIA)",
|
||||
"transcoding_acceleration_qsv": "Pensegerakan Pantas (memerlukan CPU Intel generasi ke-7 atau lebih baru)",
|
||||
"transcoding_acceleration_rkmpp": "RKMPP (hanya pada SOC Rockchip)",
|
||||
"transcoding_acceleration_vaapi": "VAAPI",
|
||||
"transcoding_accepted_audio_codecs": "Codec audio yang diterima",
|
||||
"transcoding_accepted_audio_codecs_description": "Pilih codec audio yang tidak perlu ditranskodkan. Hanya digunakan untuk dasar transkod tertentu.",
|
||||
"transcoding_accepted_containers": "Bekas yang diterima",
|
||||
"transcoding_accepted_containers_description": "Pilih format bekas yang tidak perlu ditukar semula kepada MP4. Hanya digunakan untuk dasar transkod tertentu.",
|
||||
"transcoding_accepted_video_codecs": "Codec video yang diterima",
|
||||
"transcoding_accepted_video_codecs_description": "Pilih codec video yang tidak perlu ditranskodkan. Hanya digunakan untuk dasar transkod tertentu.",
|
||||
"transcoding_advanced_options_description": "Pilihan yang tidak perlu diubah untuk kebanyakan pengguna",
|
||||
"transcoding_audio_codec": "Codec audio",
|
||||
"transcoding_audio_codec_description": "Opus ialah pilihan kualiti tertinggi, tetapi mempunyai keserasian yang lebih rendah dengan peranti atau perisian lama.",
|
||||
"transcoding_bitrate_description": "Video yang lebih tinggi daripada kadar bit maksimum atau tidak dalam format yang diterima",
|
||||
"transcoding_codecs_learn_more": "Untuk mengetahui lebih lanjut tentang istilah yang digunakan di sini, rujuk dokumentasi FFmpeg untuk <h264-link>codec H.264</h264-link>, <hevc-link>codec HEVC</hevc-link> dan <vp9-link>codec VP9</vp9-link>.",
|
||||
"transcoding_constant_quality_mode": "Mod kualiti berterusan",
|
||||
"transcoding_constant_quality_mode_description": "ICQ lebih baik daripada CQP, tetapi ada beberapa peranti pecutan perkakasan tidak menyokong mod ini. Menetapkan pilihan ini akan memilih mod yang ditentukan apabila menggunakan pengekodan berasaskan kualiti. Diabaikan oleh NVENC kerana ia tidak menyokong ICQ.",
|
||||
"transcoding_constant_rate_factor": "Faktor kadar malar (-crf)",
|
||||
"transcoding_constant_rate_factor_description": "Tahap kualiti video. Nilai biasa ialah 23 untuk H.264, 28 untuk HEVC, 31 untuk VP9 dan 35 untuk AV1. Lebih rendah adalah lebih baik, tetapi menghasilkan fail yang lebih besar.",
|
||||
"transcoding_disabled_description": "Jangan transcode mana-mana video, boleh memecahkan main balik pada sesetengah pelanggan",
|
||||
"transcoding_encoding_options": "Pilihan Pengekodan",
|
||||
"transcoding_encoding_options_description": "Tetapkan codec, resolusi, kualiti dan pilihan lain untuk video yang dikodkan",
|
||||
"transcoding_hardware_acceleration": "Pecutan Perkakasan",
|
||||
"transcoding_hardware_acceleration_description": "Eksperimen; lebih pantas, tetapi akan mempunyai kualiti yang lebih rendah pada kadar bit yang sama",
|
||||
"transcoding_hardware_decoding": "Penyahkodan perkakasan",
|
||||
"transcoding_hardware_decoding_setting_description": "Mendayakan pecutan hujung ke hujung dan bukannya hanya mempercepatkan pengekodan. Mungkin tidak berfungsi pada semua video.",
|
||||
"transcoding_hevc_codec": "Codec HEVC",
|
||||
"transcoding_max_b_frames": "Bingkai-B maksimum",
|
||||
"transcoding_max_b_frames_description": "Nilai yang lebih tinggi meningkatkan kecekapan mampatan, tetapi memperlahankan pengekodan. Mungkin tidak serasi dengan pecutan perkakasan pada peranti lama. 0 melumpuhkan bingkai B, manakala -1 menetapkan nilai ini secara automatik.",
|
||||
"transcoding_max_bitrate": "Kadar bit maksimum",
|
||||
"transcoding_max_bitrate_description": "Menetapkan kadar bit maksima boleh menjadikan saiz fail lebih boleh diramal dengan kekurangan yang kecil kepada kualiti. Pada 720p, nilai biasa ialah 2600k untuk VP9 atau HEVC, atau 4500k untuk H.264. Dilumpuhkan jika ditetapkan kepada 0.",
|
||||
"transcoding_max_keyframe_interval": "Selangan keyframe maksimum",
|
||||
"transcoding_max_keyframe_interval_description": "Menetapkan jarak bingkai maksimum antara keyframes. Nilai yang lebih rendah memburukkan kecekapan mampatan, tetapi menambah baik masa carian dan mungkin meningkatkan kualiti dalam adegan dengan pergerakan pantas. 0 menetapkan nilai ini secara automatik.",
|
||||
"transcoding_optimal_description": "Video yang lebih tinggi daripada resolusi sasaran atau tidak dalam format yang diterima",
|
||||
"transcoding_policy": "Dasar Transkod",
|
||||
"transcoding_policy_description": "Tetapkan masa bila video akan ditranskodkan",
|
||||
"transcoding_preferred_hardware_device": "Pilihan peranti perkakasan",
|
||||
"transcoding_preferred_hardware_device_description": "Terpakai hanya untuk VAAPI dan QSV. Menetapkan nod dri yang digunakan untuk transkod perkakasan.",
|
||||
"transcoding_preset_preset": "Pratetap (-preset)",
|
||||
"transcoding_preset_preset_description": "Kelajuan mampatan. Pratetap yang lebih perlahan menghasilkan fail yang lebih kecil dan meningkatkan kualiti apabila pada kadar bit tertentu. VP9 mengabaikan kelajuan di atas 'lebih cepat'.",
|
||||
"transcoding_reference_frames": "Bingkai rujukan",
|
||||
"transcoding_reference_frames_description": "Bilangan bingkai untuk dirujuk semasa memampatkan bingkai yang diberikan. Nilai yang lebih tinggi meningkatkan kecekapan mampatan, tetapi memperlahankan pengekodan. 0 menetapkan nilai ini secara automatik.",
|
||||
"transcoding_required_description": "Hanya untuk video yang tidak dalam format yang diterima",
|
||||
"transcoding_settings": "Tetapan Transkod Video",
|
||||
"transcoding_settings_description": "Urus video yang hendak ditranskod dan cara memprosesnya",
|
||||
"transcoding_target_resolution": "Resolusi sasaran",
|
||||
"transcoding_target_resolution_description": "Peleraian yang lebih tinggi boleh mengekalkan lebih banyak butiran tetapi mengambil masa lebih lama untuk mengekod, mempunyai saiz fail yang lebih besar dan boleh mengurangkan responsif app.",
|
||||
"transcoding_temporal_aq": "AQ sementara",
|
||||
"transcoding_temporal_aq_description": "Terpakai hanya untuk NVEC. Meningkatkan kualiti adegan yang berperinci tinggi dan berpunya rendah gerakan. Mungkin tidak serasi dengan peranti lama.",
|
||||
"transcoding_threads": "Benang",
|
||||
"transcoding_threads_description": "Nilai yang lebih tinggi membawa kepada pengekodan yang lebih pantas, tetapi meninggalkan lebih sedikit ruang untuk pemproses tugas lain semasa aktif. Nilai ini tidak boleh lebih daripada bilangan teras CPU. Memaksimumkan penggunaan jika ditetapkan kepada 0.",
|
||||
"transcoding_tone_mapping": "Pemetaan nada",
|
||||
"transcoding_tone_mapping_description": "Percubaan untuk mengekalkan penampilan video HDR apabila ditukar kepada SDR. Setiap algoritma membuat pertukaran yang berbeza untuk warna, perincian dan kecerahan. Hable mengekalkan perincian, Mobius mengekalkan warna, dan Reinhard mengekalkan kecerahan."
|
||||
},
|
||||
"deduplication_criteria_1": "Saiz imej dalam bait",
|
||||
"deduplication_criteria_2": "Kiraan data EXIF",
|
||||
@@ -286,6 +362,8 @@
|
||||
"download_settings": "Muat Turun",
|
||||
"download_settings_description": "Urus tetapan yang berkaitan dengan muat turun aset",
|
||||
"downloading": "Memuat turun",
|
||||
"search_by_description": "Carian secara huraian",
|
||||
"search_by_description_example": "Hari mendaki di Sapa",
|
||||
"timeline": "Garis masa",
|
||||
"total": "Jumlah",
|
||||
"user_usage_stats": "Statistik penggunaan akaun",
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
"add_a_name": "Legg til navn",
|
||||
"add_a_title": "Legg til tittel",
|
||||
"add_exclusion_pattern": "Legg til ekskluderingsmønster",
|
||||
"add_import_path": "Legg til importbane",
|
||||
"add_import_path": "Legg til importsti",
|
||||
"add_location": "Legg til sted",
|
||||
"add_more_users": "Legg til flere brukere",
|
||||
"add_partner": "Legg til partner",
|
||||
"add_path": "Legg til bane",
|
||||
"add_path": "Legg til sti",
|
||||
"add_photos": "Legg til bilder",
|
||||
"add_to": "Legg til...",
|
||||
"add_to": "Legg til…",
|
||||
"add_to_album": "Legg til album",
|
||||
"add_to_shared_album": "Legg til delt album",
|
||||
"add_url": "Legg til URL",
|
||||
@@ -28,9 +28,9 @@
|
||||
"added_to_favorites": "Lagt til i favoritter",
|
||||
"added_to_favorites_count": "Lagt til {count, number} i favoritter",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "Legg til ekskluderingsmønstre. Globbing med *, ** og ? støttes. For å ignorere alle filer i en hvilken som helst mappe som heter \"Raw\", bruk \"**/Raw/**\". For å ignorere alle filer som slutter på \".tif\", bruk \"**/*.tif\". For å ignorere en absolutt filplassering, bruk \"/filbane/til/ignorer/**\".",
|
||||
"add_exclusion_pattern_description": "Legg til ekskluderingsmønstre. Globbing med *, ** og ? støttes. For å ignorere alle filer i en hvilken som helst mappe som heter \"Raw\", bruk \"**/Raw/**\". For å ignorere alle filer som slutter på \".tif\", bruk \"**/*.tif\". For å ignorere en absolutt filplassering, bruk \"/filsti/til/ignorer/**\".",
|
||||
"asset_offline_description": "Denne eksterne bibliotekressursen finnes ikke lenger på disk og har blitt flyttet til papirkurven. Hvis filen ble flyttet innad i biblioteket, sjekk tidslinjen din for den tilsvarende ressursen. For å gjenopprette ressursen, vennligst sørg for at filstien under er tilgjengelig for Immich og skan biblioteket.",
|
||||
"authentication_settings": "Autentiserings innstillinger",
|
||||
"authentication_settings": "Godkjenningsinnstillinger",
|
||||
"authentication_settings_description": "Administrer passord, OAuth, og andre innstillinger for autentisering",
|
||||
"authentication_settings_disable_all": "Er du sikker på at du ønsker å deaktivere alle innloggingsmetoder? Innlogging vil bli fullstendig deaktivert.",
|
||||
"authentication_settings_reenable": "For å aktivere på nytt, bruk en <link>Server Command</link>.",
|
||||
@@ -58,10 +58,10 @@
|
||||
"external_library_created_at": "Ekstern bibliotek (opprettet {date})",
|
||||
"external_library_management": "Administrasjon av eksterne biblioteker",
|
||||
"face_detection": "Ansiktsgjenkjennelse",
|
||||
"face_detection_description": "Oppdag ansikter i filer ved hjelp av maskinlæring. For videoer vurderes bare miniatyrbildet. \"All\" (om-)behandler alle ressurser. \"Missing\" stiller opp ressurser som ikke har blitt behandlet ennå. Oppdagede ansikter vil bli stilt opp for ansiktsgjenkjenning etter at ansiktsgjenkjenning er fullført, og de grupperes i eksisterende eller nye personer.",
|
||||
"facial_recognition_job_description": "Grupper oppdagede ansikter i personer. Denne trinn utføres etter at ansiktsgjenkjenning er fullført. \"All\" (om-)grupperer alle ansikter på nytt. \"Missing\" stiller opp ansikter som ikke har blitt tilordnet en person ennå.",
|
||||
"failed_job_command": "Kommandoen {command} feilet for jobben: {job}",
|
||||
"force_delete_user_warning": "ADVARSEL: Dette vil umiddelbart fjerne brukeren og alle eiendeler. Dette kan ikke angres, og filene kan ikke gjenopprettes.",
|
||||
"face_detection_description": "Finn ansikter i bilder ved hjelp av maskinlæring. For videoer brukes bare miniatyrbildet. \"Alle\" går gjennom alle bilder (igjen). \"Tilbakestill\" fjerner all gjeldende ansiktsdata. \"Manglende\" legger til filer som ikke har blitt behandlet enda i køen. Oppdagede ansikter vil blir sendt til ansiktsgjenkjenning, og koblet til eksisterende eller nye personer.",
|
||||
"facial_recognition_job_description": "Kobler oppdagede ansikt til personer. Dette utføres etter at ansiktssøk er fullført. \"Tilbakestill\" (om-)grupperer alle ansikt på nytt. \"Missing\" stiller opp ansikt som ikke har blitt tilordnet en person ennå.",
|
||||
"failed_job_command": "Kommandoen {command} feilet for jobb: {job}",
|
||||
"force_delete_user_warning": "ADVARSEL: Dette vil umiddelbart fjerne brukeren og alle data. Dette kan ikke angres, og filene kan ikke gjenopprettes.",
|
||||
"forcing_refresh_library_files": "Tvinger oppdatering av alle bibliotekfiler",
|
||||
"image_format": "Format",
|
||||
"image_format_description": "WebP gir mindre filer enn JPEG, men er tregere å lage.",
|
||||
@@ -102,7 +102,7 @@
|
||||
"library_watching_settings_description": "Se automatisk etter endrede filer",
|
||||
"logging_enable_description": "Aktiver logging",
|
||||
"logging_level_description": "Hvis aktivert, hvilket loggnivå som skal brukes.",
|
||||
"logging_settings": "Logging",
|
||||
"logging_settings": "Logger",
|
||||
"machine_learning_clip_model": "Clip-modell",
|
||||
"machine_learning_clip_model_description": "Navnet på en CLIP-modell finnes <link>her</link>. Merk at du må kjøre 'Smart Søk'-jobben på nytt for alle bilder etter at du har endret modell.",
|
||||
"machine_learning_duplicate_detection": "Duplikat-deteksjon",
|
||||
@@ -155,7 +155,7 @@
|
||||
"metadata_settings_description": "Administrer metadatainnstillinger",
|
||||
"migration_job": "Migrering",
|
||||
"migration_job_description": "Migrer miniatyrbilder for filer og ansikter til den nyeste mappestrukturen",
|
||||
"no_paths_added": "Ingen filbaner lagt til",
|
||||
"no_paths_added": "Ingen filstier lagt til",
|
||||
"no_pattern_added": "Ingen mønster lagt til",
|
||||
"note_apply_storage_label_previous_assets": "Merk: For å bruke lagringsetiketten på tidligere opplastede filer, kjør",
|
||||
"note_cannot_be_changed_later": "MERK: Dette kan ikke endres senere!",
|
||||
@@ -201,12 +201,12 @@
|
||||
"oauth_storage_quota_claim_description": "Sett automatisk brukerens lagringskvote til verdien av dette kravet.",
|
||||
"oauth_storage_quota_default": "Standard lagringskvote (GiB)",
|
||||
"oauth_storage_quota_default_description": "Kvote i GiB som skal brukes når ingen krav er oppgitt (Skriv 0 for ubegrenset kvote).",
|
||||
"offline_paths": "Frakoblede filbaner",
|
||||
"offline_paths": "Frakoblede filstier",
|
||||
"offline_paths_description": "Disse resultatene kan skyldes manuell sletting av filer som ikke er en del av et eksternt bibliotek.",
|
||||
"password_enable_description": "Logg inn med e-post og passord",
|
||||
"password_settings": "Passordinnlogging",
|
||||
"password_settings_description": "Administrer innstillinger for passordinnlogging",
|
||||
"paths_validated_successfully": "Alle filbaner validert uten problemer",
|
||||
"paths_validated_successfully": "Alle filstier validert uten problemer",
|
||||
"person_cleanup_job": "Person opprydding",
|
||||
"quota_size_gib": "Kvotestørrelse (GiB)",
|
||||
"refreshing_all_libraries": "Oppdaterer alle biblioteker",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Tilbakestill innstillinger til standard",
|
||||
"reset_settings_to_recent_saved": "Tilbakestill innstillingene til de nylig lagrede innstillingene",
|
||||
"scanning_library": "Søk biblioteket",
|
||||
"search_jobs": "Søk etter jobber...",
|
||||
"search_jobs": "Søk etter jobber…",
|
||||
"send_welcome_email": "Send velkomst-e-post",
|
||||
"server_external_domain_settings": "Eksternt domene",
|
||||
"server_external_domain_settings_description": "Domene for offentlige delingslenker, inkludert http(s)://",
|
||||
@@ -362,7 +362,7 @@
|
||||
"advanced": "Avansert",
|
||||
"age_months": "Alder {months, plural, one {# måned} other {# måneder}}",
|
||||
"age_year_months": "Alder 1 år, {months, plural, one {# måned} other {# måneder}}",
|
||||
"age_years": "{years, plural, other {Age #}}",
|
||||
"age_years": "{years, plural, other {Alder #}}",
|
||||
"album_added": "Album lagt til",
|
||||
"album_added_notification_setting_description": "Motta en e-postvarsling når du legges til i et delt album",
|
||||
"album_cover_updated": "Albumomslag oppdatert",
|
||||
@@ -406,22 +406,22 @@
|
||||
"are_these_the_same_person": "Er disse samme person?",
|
||||
"are_you_sure_to_do_this": "Er du sikker på at du vil gjøre dette?",
|
||||
"asset_added_to_album": "Lagt til i album",
|
||||
"asset_adding_to_album": "Legger til i album...",
|
||||
"asset_adding_to_album": "Legger til i album…",
|
||||
"asset_description_updated": "Elementbeskrivelse har blitt oppdatert",
|
||||
"asset_filename_is_offline": "Element {filename} er offline",
|
||||
"asset_has_unassigned_faces": "Element har ikke-tilordnede ansikter",
|
||||
"asset_hashing": "Hasher...",
|
||||
"asset_hashing": "Hasher…",
|
||||
"asset_offline": "Fil utilgjengelig",
|
||||
"asset_offline_description": "Dette elementet er offline. Immich kan ikke aksessere dets lokasjon. Vennlist påse at elementet er tilgijengelig og skann så biblioteket på nytt.",
|
||||
"asset_skipped": "Hoppet over",
|
||||
"asset_skipped_in_trash": "I søppelbøtten",
|
||||
"asset_uploaded": "Lastet opp",
|
||||
"asset_uploading": "Laster opp...",
|
||||
"asset_uploading": "Laster opp…",
|
||||
"assets": "Filer",
|
||||
"assets_added_count": "Lagt til {count, plural, one {# element} other {# elementer}}",
|
||||
"assets_added_to_album_count": "Lagt til {count, plural, one {# asset} other {# assets}} i album",
|
||||
"assets_added_to_name_count": "Lagt til {count, plural, one {# asset} other {# assets}} i {hasName, select, true {<b>{name}</b>} other {new album}}",
|
||||
"assets_count": "{count, plural, one {# asset} other {# assets}}",
|
||||
"assets_count": "{count, plural, one {# fil} other {# filer}}",
|
||||
"assets_moved_to_trash_count": "Flyttet {count, plural, one {# asset} other {# assets}} til søppel",
|
||||
"assets_permanently_deleted_count": "Permanent slettet {count, plural, one {# asset} other {# assets}}",
|
||||
"assets_removed_count": "Slettet {count, plural, one {# asset} other {# assets}}",
|
||||
@@ -509,7 +509,7 @@
|
||||
"create_new_person_hint": "Tildel valgte eiendeler til en ny person",
|
||||
"create_new_user": "Opprett ny bruker",
|
||||
"create_tag": "Lag tag",
|
||||
"create_tag_description": "Lag en ny tag. For undertag, vennligst fullfør hele banen til taggen, inkludert forovervendt skråstrek.",
|
||||
"create_tag_description": "Lag en ny tag. For undertag, vennligst fullfør hele stien til taggen, inkludert forovervendt skråstrek.",
|
||||
"create_user": "Opprett Bruker",
|
||||
"created": "Opprettet",
|
||||
"current_device": "Nåværende enhet",
|
||||
@@ -809,7 +809,7 @@
|
||||
},
|
||||
"invite_people": "Inviter Personer",
|
||||
"invite_to_album": "Inviter til album",
|
||||
"items_count": "{count, plural, one {# item} other {# items}}",
|
||||
"items_count": "{count, plural, one {# gjenstand} other {# gjenstander}}",
|
||||
"jobs": "Oppgaver",
|
||||
"keep": "Behold",
|
||||
"keep_all": "Behold alle",
|
||||
@@ -822,6 +822,7 @@
|
||||
"latest_version": "Siste versjon",
|
||||
"latitude": "Breddegrad",
|
||||
"leave": "Forlat",
|
||||
"lens_model": "Objektiv",
|
||||
"let_others_respond": "La andre respondere",
|
||||
"level": "Nivå",
|
||||
"library": "Bibliotek",
|
||||
@@ -975,7 +976,7 @@
|
||||
"permanently_deleted_asset": "Filen har blitt permanent slettet",
|
||||
"permanently_deleted_assets_count": "Permanent slett {count, plural, one {# asset} other {# assets}}",
|
||||
"person": "Person",
|
||||
"person_hidden": "{name}{hidden, select, true { (hidden)} other {}}",
|
||||
"person_hidden": "{name}{hidden, select, true { (skjult)} other {}}",
|
||||
"photo_shared_all_users": "Det ser ut som om du deler bildene med alle brukere eller det er ingen brukere å dele med.",
|
||||
"photos": "Bilder",
|
||||
"photos_and_videos": "Bilder & Videoer",
|
||||
@@ -1034,7 +1035,7 @@
|
||||
"purchase_settings_server_activated": "Produktnøkkel for server er administrert av administratoren",
|
||||
"rating": "Stjernevurdering",
|
||||
"rating_clear": "Slett vurdering",
|
||||
"rating_count": "{count, plural, one {# star} other {# stars}}",
|
||||
"rating_count": "{count, plural, one {# sjerne} other {# stjerner}}",
|
||||
"rating_description": "Hvis EXIF vurdering i informasjons panelet",
|
||||
"reaction_options": "Reaksjonsalternativer",
|
||||
"read_changelog": "Les endringslogg",
|
||||
@@ -1113,6 +1114,7 @@
|
||||
"search_camera_model": "Søk etter kamera modell...",
|
||||
"search_city": "Søk etter by...",
|
||||
"search_country": "Søk etter land...",
|
||||
"search_for": "Søk etter",
|
||||
"search_for_existing_person": "Søk etter eksisterende person",
|
||||
"search_no_people": "Ingen personer",
|
||||
"search_no_people_named": "Ingen personer med navnet \"{name}\"",
|
||||
@@ -1141,7 +1143,7 @@
|
||||
"select_photos": "Velg bilder",
|
||||
"select_trash_all": "Velg å flytte alt til papirkurven",
|
||||
"selected": "Valgt",
|
||||
"selected_count": "{count, plural, other {# selected}}",
|
||||
"selected_count": "{count, plural, other {# valgt}}",
|
||||
"send_message": "Send melding",
|
||||
"send_welcome_email": "Send velkomstmelding",
|
||||
"server_offline": "Server frakoblet",
|
||||
@@ -1270,7 +1272,7 @@
|
||||
"trashed_items_will_be_permanently_deleted_after": "Elementer i papirkurven vil bli permanent slettet etter {days, plural, one {# dag} other {# dager}}.",
|
||||
"type": "Type",
|
||||
"unarchive": "Fjern fra arkiv",
|
||||
"unarchived_count": "{count, plural, other {Unarchived #}}",
|
||||
"unarchived_count": "{count, plural, other {uarkivert #}}",
|
||||
"unfavorite": "Fjern favoritt",
|
||||
"unhide_person": "Vis person",
|
||||
"unknown": "Ukjent",
|
||||
|
||||
21
i18n/nl.json
21
i18n/nl.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Partner toevoegen",
|
||||
"add_path": "Pad toevoegen",
|
||||
"add_photos": "Foto's toevoegen",
|
||||
"add_to": "Toevoegen aan...",
|
||||
"add_to": "Toevoegen aan…",
|
||||
"add_to_album": "Aan album toevoegen",
|
||||
"add_to_shared_album": "Aan gedeeld album toevoegen",
|
||||
"add_url": "URL toevoegen",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Instellingen teruggezet naar standaard",
|
||||
"reset_settings_to_recent_saved": "Instellingen zijn gereset naar de recent opgeslagen instellingen",
|
||||
"scanning_library": "Bibliotheek scannen",
|
||||
"search_jobs": "Taak zoeken...",
|
||||
"search_jobs": "Taak zoeken…",
|
||||
"send_welcome_email": "Stuur een welkomstmail",
|
||||
"server_external_domain_settings": "Extern domein",
|
||||
"server_external_domain_settings_description": "Domein voor openbaar gedeelde links, inclusief http(s)://",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Zijn dit dezelfde personen?",
|
||||
"are_you_sure_to_do_this": "Weet je zeker dat je dit wilt doen?",
|
||||
"asset_added_to_album": "Toegevoegd aan album",
|
||||
"asset_adding_to_album": "Toevoegen aan album...",
|
||||
"asset_adding_to_album": "Toevoegen aan album…",
|
||||
"asset_description_updated": "Asset beschrijving is bijgewerkt",
|
||||
"asset_filename_is_offline": "Asset {filename} is offline",
|
||||
"asset_has_unassigned_faces": "Asset heeft niet-toegewezen gezichten",
|
||||
"asset_hashing": "Hashen...",
|
||||
"asset_hashing": "Hashen…",
|
||||
"asset_offline": "Asset offline",
|
||||
"asset_offline_description": "Deze externe asset is niet meer op de schijf te vinden. Neem contact op met de Immich beheerder voor hulp.",
|
||||
"asset_skipped": "Overgeslagen",
|
||||
"asset_skipped_in_trash": "In prullenbak",
|
||||
"asset_uploaded": "Geüpload",
|
||||
"asset_uploading": "Uploaden...",
|
||||
"asset_uploading": "Uploaden…",
|
||||
"assets": "Assets",
|
||||
"assets_added_count": "{count, plural, one {# asset} other {# assets}} toegevoegd",
|
||||
"assets_added_to_album_count": "{count, plural, one {# asset} other {# assets}} aan het album toegevoegd",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Ga naar map",
|
||||
"go_to_search": "Ga naar zoeken",
|
||||
"group_albums_by": "Groepeer albums op...",
|
||||
"group_country": "Groepeer op land",
|
||||
"group_no": "Niet groeperen",
|
||||
"group_owner": "Groeperen op eigenaar",
|
||||
"group_places_by": "Groepeer plaatsen op...",
|
||||
"group_year": "Groeperen op jaar",
|
||||
"has_quota": "Heeft limiet",
|
||||
"hi_user": "Hallo {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Toon gedeelde albums",
|
||||
"include_shared_partner_assets": "Toon assets van gedeelde partner",
|
||||
"individual_share": "Individuele deellink",
|
||||
"individual_shares": "Individuele deellinks",
|
||||
"info": "Info",
|
||||
"interval": {
|
||||
"day_at_onepm": "Iedere dag om 13 uur",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Nieuwste versie",
|
||||
"latitude": "Breedtegraad",
|
||||
"leave": "Verlaten",
|
||||
"lens_model": "Lens model",
|
||||
"let_others_respond": "Laat anderen reageren",
|
||||
"level": "Niveau",
|
||||
"library": "Bibliotheek",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Kies een locatie",
|
||||
"place": "Plaats",
|
||||
"places": "Plaatsen",
|
||||
"places_count": "{count, plural, one {{count, number} Plaats} other {{count, number} Plaatsen}}",
|
||||
"play": "Afspelen",
|
||||
"play_memories": "Herinneringen afspelen",
|
||||
"play_motion_photo": "Bewegingsfoto afspelen",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Zoeken",
|
||||
"search_albums": "Zoek albums",
|
||||
"search_by_context": "Zoeken op context",
|
||||
"search_by_description": "Zoeken op beschrijving",
|
||||
"search_by_description_example": "Wandelen in Sapa",
|
||||
"search_by_filename": "Zoeken op bestandsnaam of -extensie",
|
||||
"search_by_filename_example": "b.v. IMG_1234.JPG of PNG",
|
||||
"search_camera_make": "Zoek cameramerk...",
|
||||
"search_camera_model": "Zoek cameramodel...",
|
||||
"search_city": "Zoek stad...",
|
||||
"search_country": "Zoek land...",
|
||||
"search_for": "Zoeken naar",
|
||||
"search_for_existing_person": "Zoek naar bestaande persoon",
|
||||
"search_no_people": "Geen mensen",
|
||||
"search_no_people_named": "Geen mensen genaamd \"{name}\"",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Foto's van {partner}",
|
||||
"shared_link_options": "Opties voor gedeelde links",
|
||||
"shared_links": "Gedeelde links",
|
||||
"shared_links_description": "Deel foto's en video's via een link",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# gedeelde foto's & video's.}}",
|
||||
"shared_with_partner": "Gedeeld met {partner}",
|
||||
"sharing": "Delen",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Toon persoonopties",
|
||||
"show_progress_bar": "Toon voortgangsbalk",
|
||||
"show_search_options": "Zoekopties weergeven",
|
||||
"show_shared_links": "Toon gedeelde links",
|
||||
"show_slideshow_transition": "Diavoorstellingsovergang tonen",
|
||||
"show_supporter_badge": "Supporter badge",
|
||||
"show_supporter_badge_description": "Toon een supporterbadge",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Verwijderen uit favorieten",
|
||||
"unhide_person": "Persoon zichtbaar maken",
|
||||
"unknown": "Onbekend",
|
||||
"unknown_country": "Onbekend Land",
|
||||
"unknown_year": "Onbekend jaar",
|
||||
"unlimited": "Onbeperkt",
|
||||
"unlink_motion_video": "Maak bewegende video los",
|
||||
|
||||
130
i18n/nn.json
130
i18n/nn.json
@@ -2,10 +2,10 @@
|
||||
"about": "Om",
|
||||
"account": "Konto",
|
||||
"account_settings": "Kontoinnstillingar",
|
||||
"acknowledge": "Godkjenn",
|
||||
"acknowledge": "Bekreft",
|
||||
"action": "Handling",
|
||||
"actions": "Handlingar",
|
||||
"active": "Aktiv",
|
||||
"active": "Aktive",
|
||||
"activity": "Aktivitet",
|
||||
"activity_changed": "Aktivitet er {enabled, select, true {aktivert} other {deaktivert}}",
|
||||
"add": "Legg til",
|
||||
@@ -13,14 +13,14 @@
|
||||
"add_a_location": "Legg til ein stad",
|
||||
"add_a_name": "Legg til eit namn",
|
||||
"add_a_title": "Legg til ein tittel",
|
||||
"add_exclusion_pattern": "Legg til ekskluderingsmønster",
|
||||
"add_exclusion_pattern": "Legg til unnlatingsmønster",
|
||||
"add_import_path": "Legg til sti for importering",
|
||||
"add_location": "Legg til stad",
|
||||
"add_more_users": "Legg til fleire brukarar",
|
||||
"add_partner": "Legg til partnar",
|
||||
"add_path": "Legg til sti",
|
||||
"add_photos": "Legg til bilete",
|
||||
"add_to": "Legg til...",
|
||||
"add_to": "Legg til…",
|
||||
"add_to_album": "Legg til album",
|
||||
"add_to_shared_album": "Legg til delt album",
|
||||
"add_url": "Legg til URL",
|
||||
@@ -28,27 +28,98 @@
|
||||
"added_to_favorites": "Lagt til favorittar",
|
||||
"added_to_favorites_count": "Lagt {count, number} til favorittar",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "Legg til utelatingsmønstre. Du kan bruke jokerteikna *, **, og ? for å finne filer som passar mønsteret. For å ignorere alle filer i ei mappe kalla \"Raw\", bruk \"Raw\", bruk \"**/Raw/**\". For å ignorere alle filer som sluttar på \".tif\", bruk \"**/*.tif\". For å ignorere ein absolutt sti, bruk \"/path/to/ignore/**\".",
|
||||
"asset_offline_description": "Denne eksterne bibliotekressursen finst ikkje lenger på disk og har blitt flytta til papirkurven. Om fila blei flytta innad i biblioteket, sjekk tidslinja di for den tilsvarande ressursen. For å gjenopprette ressursen, vennligst sørg for at filstien under er tilgjengeleg for Immich og skann biblioteket.",
|
||||
"backup_settings": "Backupinnstillingar",
|
||||
"authentication_settings": "Godkjenningsinnstillingar",
|
||||
"authentication_settings_description": "Handsam passord, OAuth, og godkjenningsinnstillingar",
|
||||
"authentication_settings_disable_all": "Er du sikker at du ynskjer å gjera alle innloggingsmetodar uverksame? Innlogging vil bli heilt uverksam.",
|
||||
"authentication_settings_reenable": "For å aktivere på nytt, bruk ein <link>Server Command</link>.",
|
||||
"background_task_job": "Bakgrunnsjobbar",
|
||||
"backup_database": "Sikkerheistkopier database",
|
||||
"backup_database_enable_description": "Aktiver sikkerheitskopiering av database",
|
||||
"backup_keep_last_amount": "Antal sikkerheitskopiar å behalde",
|
||||
"backup_settings": "Sikkerheitskopi-innstillingar",
|
||||
"backup_settings_description": "Handsam innstillingar for sikkerheitskopiering av database",
|
||||
"check_all": "Sjekk alle",
|
||||
"confirm_delete_library": "Er du sikker på at du vil slette biblioteket {library}?",
|
||||
"cleared_jobs": "Rydda jobbar for: {job}",
|
||||
"config_set_by_file": "Oppsettet blir sett av ei oppsettfil",
|
||||
"confirm_delete_library": "Er du sikker at du vil slette biblioteket {library}?",
|
||||
"confirm_delete_library_assets": "Er du sikker at du vil slette dette biblioteket? Det kjem til å slette {count, plural, one {# contained asset} other {all # contained assets}} frå Immich og kan ikkje gjerast om. Filane blir verande på disken.",
|
||||
"confirm_email_below": "For å bekrefte, skriv \"{email}\" under",
|
||||
"confirm_reprocess_all_faces": "Er du sikker på at du vil behandle alle ansikt på nytt? Det vil òg fjerne namngjevne personar.",
|
||||
"confirm_user_password_reset": "Er du sikker at du vil tilbakestille passordet til {user}?",
|
||||
"create_job": "Lag jobb",
|
||||
"cron_expression": "Cron uttrykk",
|
||||
"cron_expression_description": "Set inn skanningsintervall med cron-formatet. For meir informasjon sjå t.d. <link>Crontab Guru</link>",
|
||||
"cron_expression_presets": "Førehandsinstillingar for Cron-uttrykk",
|
||||
"disable_login": "Deaktiver innlogging",
|
||||
"face_detection": "Ansiktsdeteksjon",
|
||||
"duplicate_detection_job_description": "Kjør maskinlæring på filer for å oppdage liknande bilete. Krev bruk av Smart Search",
|
||||
"exclusion_pattern_description": "Utelatingsmønster let deg utelate filer og mapper når du skannar biblioteket ditt. Det er nyttig om du har mapper som inneheld filer du ikkje ynskjer å importere, til dømes RAW-filer.",
|
||||
"external_library_created_at": "Eksterne bibliotek (oppretta {date})",
|
||||
"external_library_management": "Handsaming av eksterne bibliotek",
|
||||
"face_detection": "Ansiktssøk",
|
||||
"face_detection_description": "Finn ansikt i bilete ved hjelp av maskinlæring. For videoar vert berre miniatyrbilete bruka. \"Alle\" søkjer (opp att) gjennom alle bilete. \"Tilbakestill\" fjernar all gjeldande ansiktsdata. \"Manglande\" legg filer som ikkje vert behandla til i køa for ansiktssøk. Oppdaga ansikt vert lagt i køa for ansiktsattkjenning, og kopla til eksisterande eller nye personar.",
|
||||
"facial_recognition_job_description": "Koplar attkjende ansikt til personar. Det skjer fyrst når anskiktssøkjet er ferdig. \"Tilbakestill\" fjernar alle koplingar til personar, og tilbakestiller ansiktsgrupper. \"Manglande\" legg ansikt som ikkje er oppkopla til i køa.",
|
||||
"failed_job_command": "Kommandoen {command} feila for jobb: {job}",
|
||||
"force_delete_user_warning": "ÅTVARING: Handlinga fjernar brukaren og all data. Du kan ikkje angre, og filane kan ikkje gjenopprettast.",
|
||||
"forcing_refresh_library_files": "Tvingar lasting av alle filer i bibliotek",
|
||||
"image_format": "Format",
|
||||
"image_preview_title": "Forhandsvis innstillingar",
|
||||
"image_format_description": "WebP gjev mindre filstorleik enn JPEG, men er treigare å lage.",
|
||||
"image_prefer_embedded_preview": "Bruk helst innebygd førehandsvisning",
|
||||
"image_prefer_embedded_preview_setting_description": "Når mogleg bruk innebygd førehandsvisning av RAW bilete som inndata til biletehandsaming. For noko bilete kan det gje meir nøyaktige farger, men kvaliteten kjem an på kamera og det kan oppstå komprimeringsartefakt i bilete.",
|
||||
"image_prefer_wide_gamut": "Bruk helst breitt fargespektrum",
|
||||
"image_prefer_wide_gamut_setting_description": "Bruk Display P3 for miniatyrbilete. For bilete med eit breitt fargerom tek det betre vare på ljosstyrke, men på einingar med gamal nettlesarversjon kan bilete sjå usamde ut. Beheld sRGB bilete som sRGB for å unnga fargeforskuvingar.",
|
||||
"image_preview_description": "Mellomstore bilete utan metadata, bruka ved vising av ei enkelt fil og til maskinlæring",
|
||||
"image_preview_quality_description": "Kvalitet på førehandsvising frå 1-100. Høgare tal gjev betre kvalitet, men gjev større filstorleik og kan senkje farta på systemet. Ved låge tal kan det påverkje kvaliteten på maskinlæringa.",
|
||||
"image_preview_title": "Innstillingar for førehandsvisning",
|
||||
"image_quality": "Kvalitet",
|
||||
"image_resolution": "Oppløysing",
|
||||
"image_resolution_description": "Høgare oppløysing inneheld meir detalj, men tek lengre tid å kode, gjev større filstorleik, og kan senkje appresponsen.",
|
||||
"image_settings": "Innstillingar for bilete",
|
||||
"image_settings_description": "Handsam kvalitet og oppløysing på framstilte bilete",
|
||||
"image_thumbnail_description": "Lite miniatyrbilete med fjerna metadata, brukt når ein ser på grupper av bilete som hovudtidslinja",
|
||||
"image_thumbnail_quality_description": "Kvalitet på miniatyrbilete frå 1-100. Høgare er betre, men gjev større filstorleik, og kan senkje appresposen.",
|
||||
"image_thumbnail_title": "Innstillingar for miniatyrbilete",
|
||||
"job_concurrency": "{job} samstundes utføring",
|
||||
"job_created": "Jobb laga",
|
||||
"job_not_concurrency_safe": "Kan ikke trygt utføre jobben samstundes.",
|
||||
"job_settings": "Jobbinnstillingar",
|
||||
"job_settings_description": "Handsam samstundes utføring av jobber",
|
||||
"job_status": "Jobbstatus",
|
||||
"jobs_delayed": "{jobCount, plural, other {# forsinka}}",
|
||||
"jobs_failed": "{jobCount, plural, other {# mislykkast}}",
|
||||
"library_created": "Opprett bibliotek: {library}",
|
||||
"library_deleted": "Bibliotek sletta",
|
||||
"library_scanning": "Periodisk skanning",
|
||||
"library_import_path_description": "Angje ei mappe å importere. Mappa, inkludert undermapper, bli skanna for bilete og videoar.",
|
||||
"library_scanning": "Regelbunden skanning",
|
||||
"library_scanning_description": "Sett opp regelbunden skanning av biblioteket",
|
||||
"library_scanning_enable_description": "Aktiver regelbunden skanning av biblioteket",
|
||||
"library_settings": "Eksternt Bibliotek",
|
||||
"library_settings_description": "Handsam eksterne biblioteksinnstillingar",
|
||||
"library_tasks_description": "Utfør bibliotekstoppgåver",
|
||||
"library_watching_enable_description": "Sjekk eksterne bibliotek for forandringar",
|
||||
"library_watching_settings": "Biblioteksovervåking (EKSPERIMENTELL)",
|
||||
"library_watching_settings_description": "Sjekk automatisk for forandringar",
|
||||
"logging_enable_description": "Aktiver loggføring",
|
||||
"logging_level_description": "Når aktivert, kva loggnivå å bruke.",
|
||||
"logging_settings": "Logging",
|
||||
"machine_learning_clip_model": "CLIP modell",
|
||||
"machine_learning_clip_model_description": "Namnet på ein CLIP modell finst <link>her</link>. Merk at du må køyre 'Smart Søk'-jobben på nytt for alle bilete etter du har forandra modell.",
|
||||
"machine_learning_duplicate_detection": "Duplikatdeteksjon",
|
||||
"machine_learning_duplicate_detection_enabled": "Aktiver duplikatattkjenning",
|
||||
"machine_learning_duplicate_detection_enabled_description": "Om uverksam, vil identiske filer framleis bli fjerna som duplikat.",
|
||||
"machine_learning_duplicate_detection_setting_description": "Bruk CLIP-innkapslingar for å finne moglege duplikat",
|
||||
"machine_learning_enabled": "Aktiver maskinlæring",
|
||||
"machine_learning_enabled_description": "Om uverksam blir alle ML-funksjonar uverksame uavhengig av instillingane under.",
|
||||
"machine_learning_facial_recognition": "Ansiktsgjenkjenning",
|
||||
"machine_learning_facial_recognition_description": "Finn, kjenn att, og kople ansikt i bilete",
|
||||
"machine_learning_facial_recognition_model": "Ansiktsattkjenningsmodell",
|
||||
"machine_learning_facial_recognition_model_description": "Modellane er oppført i søkkjande rekkjefølge etter storleik. Større modellar er treigare og brukar meir minne, men gjev betre resultat. Om du forandrar modell lyt du køyre ansiktsattkjenning om att på alle bilete.",
|
||||
"machine_learning_facial_recognition_setting": "Aktiver ansiktsattkjenning",
|
||||
"machine_learning_facial_recognition_setting_description": "Om uverksam blir ikkje bilete koda for ansiktsattkjenning og dukkar ikkje opp i \"Personar\" i Utforsk-sida.",
|
||||
"machine_learning_max_detection_distance": "Maksimal oppdagingsverdi",
|
||||
"machine_learning_max_detection_distance_description": "Den største skilnaden mellom to bilete for å rekne dei som duplikat, frå 0.001-0.1. Større verdiar finn fleire duplikat, men kan gje falske treff.",
|
||||
"machine_learning_max_recognition_distance": "Maksimal attkjenningsverdi",
|
||||
"machine_learning_smart_search": "Smart Søk",
|
||||
"map_dark_style": "Mørk modus",
|
||||
"map_light_style": "Lys modus",
|
||||
@@ -60,18 +131,20 @@
|
||||
"notification_settings": "Varselinnstillingar",
|
||||
"oauth_auto_launch": "Autostart",
|
||||
"oauth_button_text": "Tekst på knapp",
|
||||
"password_settings": "Passord innlogging",
|
||||
"password_enable_description": "Logg inn med e-post og passord",
|
||||
"password_settings": "Passordinnlogging",
|
||||
"person_cleanup_job": "Personopprydding",
|
||||
"refreshing_all_libraries": "Laster alle bibliotek opp att",
|
||||
"registration": "Administrator registrering",
|
||||
"registration_description": "Sidan du er den første brukaren på systemet, vil du bli utnevnt til administrator og ha ansvar for administrative oppgåver. Du vil òg opprette eventuelle nye brukarar.",
|
||||
"repair_all": "Reparer alle",
|
||||
"repair_matched_items": "Samsvarte med {count, plural, one {# element} other {# elementer}}",
|
||||
"repaired_items": "Reparerte {count, plural, one {# item} other {# items}}",
|
||||
"repair_matched_items": "Samsvarte med {count, plural, one {# element} other {# element}}",
|
||||
"repaired_items": "Reparerte {count, plural, one {# element} other {# element}}",
|
||||
"require_password_change_on_login": "Krev at brukaren endrar passord ved første pålogging",
|
||||
"reset_settings_to_default": "Tilbakestill innstillingar til standard",
|
||||
"reset_settings_to_recent_saved": "Tilbakestill innstillingane til de nyleg lagra innstillingane",
|
||||
"scanning_library": "Skann bibliotek",
|
||||
"search_jobs": "Søk etter jobbar",
|
||||
"search_jobs": "Søk etter jobbar…",
|
||||
"send_welcome_email": "Send velkomst-e-post",
|
||||
"server_external_domain_settings": "Eksternt domene",
|
||||
"server_external_domain_settings_description": "Domene for offentlege delingslenkjer, inkludert http(s)://",
|
||||
@@ -81,8 +154,26 @@
|
||||
"server_settings_description": "Administrer serverinnstillingar",
|
||||
"server_welcome_message": "Velkomstmelding",
|
||||
"server_welcome_message_description": "Ei melding som synast på innloggingssida.",
|
||||
"template_email_preview": "Førehandsvisning"
|
||||
"system_settings": "Systeminnstillingar",
|
||||
"template_email_preview": "Førehandsvisning",
|
||||
"transcoding_acceleration_nvenc": "NVENC (Krev NVIDIA GPU)",
|
||||
"transcoding_acceleration_qsv": "Quick Sync (Krev 7. generasjons Intel CPU eller nyare)",
|
||||
"transcoding_acceleration_rkmpp": "RKMPP (Berre på Rockchip SOCer)",
|
||||
"transcoding_acceleration_vaapi": "VAAPI",
|
||||
"transcoding_accepted_audio_codecs": "Tillatne lydkodekar",
|
||||
"transcoding_accepted_audio_codecs_description": "Vel kva for lydkodekar som ikkje må omkodast. Blir berre bruka for noko omkodingsval.",
|
||||
"transcoding_accepted_containers": "Tillatne behaldarar",
|
||||
"transcoding_accepted_containers_description": "Vel kva for behaldarar som ikkje må omkodast til MP4. Blir berre bruka for nokon omkodingsval.",
|
||||
"transcoding_accepted_video_codecs": "Tillatne videokodekar",
|
||||
"transcoding_accepted_video_codecs_description": "Vel kva for videokodekar som ikkje må omkodast. Berre bruka for nokon omkodingsval.",
|
||||
"transcoding_advanced_options_description": "Innstillingar dei fleste brukarar ikkje treng forandre på",
|
||||
"transcoding_audio_codec": "Lydkodek",
|
||||
"transcoding_audio_codec_description": "Opus er det valet med høgast lydkvalitet, men mindre kompabilitet med gamlare einingar og programvare.",
|
||||
"transcoding_bitrate_description": "Videoar med bitrate over høgste tillatte verdi, eller i eit format som ikkje er tillate",
|
||||
"transcoding_codecs_learn_more": "For å lære meir om nytta begrep, sjå FFmpeg dokumentasjon for <h264-link>H.264 codec</h264-link>, <hevc-link>HEVC codec</hevc-link> and <vp9-link>VP9 codec</vp9-link>."
|
||||
},
|
||||
"admin_email": "Adminisrator E-post",
|
||||
"admin_password": "Administratorpassord",
|
||||
"administration": "Administrasjon",
|
||||
"advanced": "Avansert",
|
||||
"album_with_link_access": "Lat kven som helst med lenka sjå bilete og folk i dette albumet.",
|
||||
@@ -92,7 +183,7 @@
|
||||
"archive": "Arkiv",
|
||||
"asset_skipped": "Hoppa over",
|
||||
"asset_uploaded": "Opplasta",
|
||||
"asset_uploading": "Lastar opp...",
|
||||
"asset_uploading": "Lastar opp…",
|
||||
"back": "Tilbake",
|
||||
"backward": "Bakover",
|
||||
"camera": "Kamera",
|
||||
@@ -166,7 +257,7 @@
|
||||
"never": "Aldri",
|
||||
"next": "Neste",
|
||||
"no": "Nei",
|
||||
"no_albums_message": "Lag eit album for å organisere bileta og videoane dine.",
|
||||
"no_albums_message": "Lag eit album for å organisere bileta og videoane dine",
|
||||
"no_archived_assets_message": "Arkiver bilder og videoar for å skjule dei frå bileta dine",
|
||||
"no_explore_results_message": "Last opp fleire bilete for å utforske samlinga di.",
|
||||
"no_libraries_message": "Lag eit eksternt bibliotek for å sjå bileta og videoane dine",
|
||||
@@ -232,7 +323,7 @@
|
||||
"shared_from_partner": "Bilete frå {partner}",
|
||||
"sharing": "Deling",
|
||||
"show_in_timeline_setting_description": "Vis bilete og videoar frå denne brukaren i tidslinja di",
|
||||
"sidebar": "Sidebar",
|
||||
"sidebar": "Sidefelt",
|
||||
"size": "Størrelse",
|
||||
"slideshow": "Lysbildeframvisning",
|
||||
"sort_title": "Tittel",
|
||||
@@ -282,10 +373,13 @@
|
||||
"version": "Versjon",
|
||||
"video": "Video",
|
||||
"videos": "Videoar",
|
||||
"visibility_changed": "Synlegheit forandra for {count, plural, one {# person} other {# personar}}",
|
||||
"waiting": "Ventar",
|
||||
"warning": "Advarsel",
|
||||
"week": "Veke",
|
||||
"welcome": "Velkomen",
|
||||
"year": "År",
|
||||
"yes": "Ja"
|
||||
"years_ago": "{years, plural, one {# År} other {# År}} sidan",
|
||||
"yes": "Ja",
|
||||
"zoom_image": "Forstørr bilete"
|
||||
}
|
||||
|
||||
27
i18n/pl.json
27
i18n/pl.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Dodaj partnera",
|
||||
"add_path": "Dodaj ścieżkę",
|
||||
"add_photos": "Dodaj zdjęcia",
|
||||
"add_to": "Dodaj do...",
|
||||
"add_to": "Dodaj do…",
|
||||
"add_to_album": "Dodaj do albumu",
|
||||
"add_to_shared_album": "Dodaj do udostępnionego albumu",
|
||||
"add_url": "Dodaj URL",
|
||||
@@ -39,7 +39,7 @@
|
||||
"backup_database_enable_description": "Włącz kopię zapasową bazy danych",
|
||||
"backup_keep_last_amount": "Ile poprzednich kopii zapasowych przechowywać",
|
||||
"backup_settings": "Ustawienia kopii zapasowej",
|
||||
"backup_settings_description": "Zarządzaj ustawieniami kopii zapasowej bazy dnaych",
|
||||
"backup_settings_description": "Zarządzaj ustawieniami kopii zapasowej bazy danych",
|
||||
"check_all": "Zaznacz Wszystko",
|
||||
"cleared_jobs": "Usunięto zadania dla: {job}",
|
||||
"config_set_by_file": "Konfiguracja pochodzi z pliku konfiguracyjnego",
|
||||
@@ -50,7 +50,7 @@
|
||||
"confirm_user_password_reset": "Czy na pewno chcesz zresetować hasło użytkownika {user}?",
|
||||
"create_job": "Utwórz zadanie",
|
||||
"cron_expression": "Wyrażenie Cron",
|
||||
"cron_expression_description": "Ustaw intwerwał skanowania przy pomocy formatu Cron'a. Po więcej informacji na temat formatu Cron zobacz . <link>Crontab Guru</link>",
|
||||
"cron_expression_description": "Ustaw interwał skanowania przy pomocy formatu Cron'a. Po więcej informacji na temat formatu Cron zobacz . <link>Crontab Guru</link>",
|
||||
"cron_expression_presets": "Predefiniowane wyrażenia Cron'a",
|
||||
"disable_login": "Wyłącz logowanie",
|
||||
"duplicate_detection_job_description": "Włącz uczenie maszynowe na zasobie aby wykrywać podobne obrazy. Ta funkcja opiera się na inteligentnym wyszukiwaniu",
|
||||
@@ -196,7 +196,7 @@
|
||||
"oauth_settings_more_details": "Więcej informacji o tej funkcji znajdziesz w <link>dokumentacji</link>.",
|
||||
"oauth_signing_algorithm": "Algorytm podpisywania",
|
||||
"oauth_storage_label_claim": "Roszczenie dotyczące etykiety przechowywania",
|
||||
"oauth_storage_label_claim_description": "Automatycznie ustaw ilość miejsca w magazynie użytkownikowi na podaną niżej wartość.",
|
||||
"oauth_storage_label_claim_description": "Automatycznie ustaw etykietę przechowywania użytkownika na podaną niżej wartość.",
|
||||
"oauth_storage_quota_claim": "Ilość miejsca w magazynie",
|
||||
"oauth_storage_quota_claim_description": "Automatycznie ustaw ilość miejsca w magazynie na podaną niżej wartość.",
|
||||
"oauth_storage_quota_default": "Domyślna ilość miejsca w magazynie (GiB)",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Przywróć ustawienia fabryczne",
|
||||
"reset_settings_to_recent_saved": "Przywróć ustawienia do ostatnio zapisanych",
|
||||
"scanning_library": "Skanowanie biblioteki",
|
||||
"search_jobs": "Zadania przeszukiwania...",
|
||||
"search_jobs": "Zadania przeszukiwania…",
|
||||
"send_welcome_email": "Wyślij powitalny e-mail",
|
||||
"server_external_domain_settings": "Domena zewnętrzna",
|
||||
"server_external_domain_settings_description": "Domena dla publicznie udostępnionych linków, wraz z http(s)://",
|
||||
@@ -250,7 +250,7 @@
|
||||
"storage_template_user_label": "<code>{label}</code> to jest etykieta przechowywania użytkownika",
|
||||
"system_settings": "Ustawienia Systemowe",
|
||||
"tag_cleanup_job": "Porządkowanie etykiet",
|
||||
"template_email_available_tags": "Możesz uzyć tych zmiennych w swoim szablonie: {tags}",
|
||||
"template_email_available_tags": "Możesz użyć tych zmiennych w swoim szablonie: {tags}",
|
||||
"template_email_if_empty": "Zostaw puste, aby użyć domyślny adres e-mail.",
|
||||
"template_email_invite_album": "Szablon zaproszenia do albumu",
|
||||
"template_email_preview": "Podgląd",
|
||||
@@ -261,7 +261,7 @@
|
||||
"template_settings": "Szablony Powiadomień",
|
||||
"template_settings_description": "Zarządzaj niestandardowymi szablonami powiadomień e-mail.",
|
||||
"theme_custom_css_settings": "Własny CSS",
|
||||
"theme_custom_css_settings_description": "Właśny CSS pozwala na zmianę wyglądu aplikacji Immich.",
|
||||
"theme_custom_css_settings_description": "Własny CSS pozwala na zmianę wyglądu aplikacji Immich.",
|
||||
"theme_settings": "Ustawienia Motywu",
|
||||
"theme_settings_description": "Zarządzaj wyglądem aplikacji Immich w przeglądarce",
|
||||
"these_files_matched_by_checksum": "Pliki te są powiązane na podstawie ich sum kontrolnych",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Czy to jedna i ta sama osoba?",
|
||||
"are_you_sure_to_do_this": "Czy aby na pewno chcesz to zrobić?",
|
||||
"asset_added_to_album": "Dodano do albumu",
|
||||
"asset_adding_to_album": "Dodawanie do albumu...",
|
||||
"asset_adding_to_album": "Dodawanie do albumu…",
|
||||
"asset_description_updated": "Zaktualizowano opis zasobu",
|
||||
"asset_filename_is_offline": "Zasób {filename} jest offline",
|
||||
"asset_has_unassigned_faces": "Zasób ma nieprzypisane twarze",
|
||||
"asset_hashing": "Hashowanie...",
|
||||
"asset_hashing": "Hashowanie…",
|
||||
"asset_offline": "Zasób niedostępny",
|
||||
"asset_offline_description": "Ten zewnętrzny zasób nie jest już dostępny na dysku. Aby uzyskać pomoc, skontaktuj się z administratorem Immich.",
|
||||
"asset_skipped": "Pominięto",
|
||||
"asset_skipped_in_trash": "W koszu",
|
||||
"asset_uploaded": "Przesłano",
|
||||
"asset_uploading": "Przesyłanie...",
|
||||
"asset_uploading": "Przesyłanie…",
|
||||
"assets": "Zasoby",
|
||||
"assets_added_count": "Dodano {count, plural, one {# zasób} few {# zasoby} many {# zasobów} other {# zasobów}}",
|
||||
"assets_added_to_album_count": "Dodano {count, plural, one {# zasób} few {# zasoby} many {# zasobów} other {# zasobów}} do albumu",
|
||||
@@ -822,6 +822,7 @@
|
||||
"latest_version": "Ostatnia Wersja",
|
||||
"latitude": "Szerokość geograficzna",
|
||||
"leave": "Opuść",
|
||||
"lens_model": "Model obiektywu",
|
||||
"let_others_respond": "Pozwól innym reagować",
|
||||
"level": "Poziom",
|
||||
"library": "Biblioteka",
|
||||
@@ -862,7 +863,7 @@
|
||||
"map_settings": "Ustawienia mapy",
|
||||
"matches": "Powiązania",
|
||||
"media_type": "Typ zasobu",
|
||||
"memories": "Wspomienia",
|
||||
"memories": "Wspomnienia",
|
||||
"memories_setting_description": "Zarządzaj wspomnieniami",
|
||||
"memory": "Pamięć",
|
||||
"memory_lane_title": "Aleja Wspomnień {title}",
|
||||
@@ -902,7 +903,7 @@
|
||||
"no_duplicates_found": "Nie znaleziono duplikatów.",
|
||||
"no_exif_info_available": "Nie znaleziono informacji exif",
|
||||
"no_explore_results_message": "Prześlij więcej zdjęć, aby przeglądać swój zbiór.",
|
||||
"no_favorites_message": "Dodaj ulubione aby szybko znaleść swoje najlepsze zdjęcia i filmy",
|
||||
"no_favorites_message": "Dodaj ulubione aby szybko znaleźć swoje najlepsze zdjęcia i filmy",
|
||||
"no_libraries_message": "Stwórz bibliotekę zewnętrzną, aby przeglądać swoje zdjęcia i filmy",
|
||||
"no_name": "Brak Nazwy",
|
||||
"no_places": "Brak miejsc",
|
||||
@@ -1107,12 +1108,14 @@
|
||||
"search": "Szukaj",
|
||||
"search_albums": "Przeszukaj albumy",
|
||||
"search_by_context": "Wyszukaj według treści",
|
||||
"search_by_description": "Wyszukaj według opisu",
|
||||
"search_by_filename": "Szukaj według nazwy pliku lub rozszerzenia",
|
||||
"search_by_filename_example": "np. IMG_1234.JPG lub PNG",
|
||||
"search_camera_make": "Wyszukaj markę aparatu...",
|
||||
"search_camera_model": "Wyszukaj model aparatu...",
|
||||
"search_city": "Wyszukaj miasto...",
|
||||
"search_country": "Wyszukaj kraj...",
|
||||
"search_for": "Szukaj wśród",
|
||||
"search_for_existing_person": "Wyszukaj istniejącą osobę",
|
||||
"search_no_people": "Brak osób",
|
||||
"search_no_people_named": "Brak osób nazwanych \"{name}\"",
|
||||
|
||||
23
i18n/pt.json
23
i18n/pt.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Adicionar parceiro",
|
||||
"add_path": "Adicionar caminho",
|
||||
"add_photos": "Adicionar fotos",
|
||||
"add_to": "Adicionar a...",
|
||||
"add_to": "Adicionar a…",
|
||||
"add_to_album": "Adicionar ao álbum",
|
||||
"add_to_shared_album": "Adicionar ao álbum partilhado",
|
||||
"add_url": "Adicionar URL",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Redefinir as definições para o padrão",
|
||||
"reset_settings_to_recent_saved": "Redefinir as definições para as guardadas mais recentemente",
|
||||
"scanning_library": "A analisar biblioteca",
|
||||
"search_jobs": "Pesquisar tarefas...",
|
||||
"search_jobs": "Pesquisar tarefas…",
|
||||
"send_welcome_email": "Enviar e-mail de boas-vindas",
|
||||
"server_external_domain_settings": "Domínio externo",
|
||||
"server_external_domain_settings_description": "Domínio para links públicos partilhados, incluindo http(s)://",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Estas pessoas são a mesma pessoa?",
|
||||
"are_you_sure_to_do_this": "Tem a certeza de que quer fazer isto?",
|
||||
"asset_added_to_album": "Adicionado ao álbum",
|
||||
"asset_adding_to_album": "A adicionar ao álbum...",
|
||||
"asset_adding_to_album": "A adicionar ao álbum…",
|
||||
"asset_description_updated": "A descrição do ficheiro foi atualizada",
|
||||
"asset_filename_is_offline": "O ficheiro {filename} não está disponível",
|
||||
"asset_has_unassigned_faces": "O ficheiro tem rostos não atribuídas",
|
||||
"asset_hashing": "A criar hash...",
|
||||
"asset_hashing": "A criar hash…",
|
||||
"asset_offline": "Ficheiro Indisponível",
|
||||
"asset_offline_description": "Este ficheiro externo deixou de estar disponível no disco. Contacte o seu administrador do Immich para obter ajuda.",
|
||||
"asset_skipped": "Ignorado",
|
||||
"asset_skipped_in_trash": "Na reciclagem",
|
||||
"asset_uploaded": "Enviado",
|
||||
"asset_uploading": "A enviar...",
|
||||
"asset_uploading": "A enviar…",
|
||||
"assets": "Ficheiros",
|
||||
"assets_added_count": "{count, plural, one {# ficheiro adicionado} other {# ficheiros adicionados}}",
|
||||
"assets_added_to_album_count": "{count, plural, one {# ficheiro adicionado} other {# ficheiros adicionados}} ao álbum",
|
||||
@@ -526,7 +526,7 @@
|
||||
"deduplication_criteria_1": "Tamanho da imagem em bytes",
|
||||
"deduplication_criteria_2": "Quantidade de dados EXIF",
|
||||
"deduplication_info": "Informações sobre remoção de duplicados",
|
||||
"deduplication_info_description": "Para selecionar automaticamente itens e remover duplicados em massa, vemos o seguinte:",
|
||||
"deduplication_info_description": "Para selecionar automaticamente itens e remover duplicados em massa, iremos ver o seguinte:",
|
||||
"default_locale": "Localização Padrão",
|
||||
"default_locale_description": "Formatar datas e números baseados na linguagem do seu navegador",
|
||||
"delete": "Eliminar",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Ir para a pasta",
|
||||
"go_to_search": "Ir para a pesquisa",
|
||||
"group_albums_by": "Agrupar álbuns por...",
|
||||
"group_country": "Agrupar por país",
|
||||
"group_no": "Sem agrupamento",
|
||||
"group_owner": "Agrupar por dono",
|
||||
"group_places_by": "Agrupar lugares por...",
|
||||
"group_year": "Agrupar por ano",
|
||||
"has_quota": "Tem quota",
|
||||
"hi_user": "Olá {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Incluir álbuns partilhados",
|
||||
"include_shared_partner_assets": "Incluir ficheiros partilhados por parceiros",
|
||||
"individual_share": "Partilha individual",
|
||||
"individual_shares": "Partilhas individuais",
|
||||
"info": "Informações",
|
||||
"interval": {
|
||||
"day_at_onepm": "Todos os dias, às 13:00",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Versão mais recente",
|
||||
"latitude": "Latitude",
|
||||
"leave": "Sair",
|
||||
"lens_model": "Modelo de lente",
|
||||
"let_others_respond": "Permitir respostas",
|
||||
"level": "Nível",
|
||||
"library": "Biblioteca",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Selecione uma localização",
|
||||
"place": "Lugar",
|
||||
"places": "Lugares",
|
||||
"places_count": "{count, plural, one {{count, number} Lugar} other {{count, number} Lugares}}",
|
||||
"play": "Reproduzir",
|
||||
"play_memories": "Reproduzir memórias",
|
||||
"play_motion_photo": "Reproduzir foto em movimento",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Pesquisar",
|
||||
"search_albums": "Pesquisar álbuns",
|
||||
"search_by_context": "Pesquisar por contexto",
|
||||
"search_by_description": "Pesquisar por descrição",
|
||||
"search_by_description_example": "Dia de caminhada em Leiria",
|
||||
"search_by_filename": "Pesquisar por nome de ficheiro ou extensão",
|
||||
"search_by_filename_example": "por exemplo, IMG_1234.JPG ou PNG",
|
||||
"search_camera_make": "Pesquisar por marca da câmara...",
|
||||
"search_camera_model": "Pesquisar por modelo da câmara...",
|
||||
"search_city": "Pesquisar cidade...",
|
||||
"search_country": "Pesquisar país...",
|
||||
"search_for": "Pesquisar por",
|
||||
"search_for_existing_person": "Pesquisar por pessoas existentes",
|
||||
"search_no_people": "Sem pessoas",
|
||||
"search_no_people_named": "Nenhuma pessoa chamada \"{name}\"",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Fotos de {partner}",
|
||||
"shared_link_options": "Opções de link partilhado",
|
||||
"shared_links": "Links partilhados",
|
||||
"shared_links_description": "Partilhar fotos e videos com um link",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# Fotos & videos partilhados.}}",
|
||||
"shared_with_partner": "Partilhado com {partner}",
|
||||
"sharing": "Partilha",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Exibir opções da pessoa",
|
||||
"show_progress_bar": "Exibir barra de progresso",
|
||||
"show_search_options": "Exibir opções de pesquisa",
|
||||
"show_shared_links": "Mostrar links partilhados",
|
||||
"show_slideshow_transition": "Mostrar transições no Modo de Apresentação",
|
||||
"show_supporter_badge": "Emblema de apoiante",
|
||||
"show_supporter_badge_description": "Mostrar um emblema de apoiante",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Remover favorito",
|
||||
"unhide_person": "Exibir pessoa",
|
||||
"unknown": "Desconhecido",
|
||||
"unknown_country": "País desconhecido",
|
||||
"unknown_year": "Ano desconhecido",
|
||||
"unlimited": "Ilimitado",
|
||||
"unlink_motion_video": "Remover relação com video animado",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Adicionar parceiro",
|
||||
"add_path": "Adicionar caminho",
|
||||
"add_photos": "Adicionar fotos",
|
||||
"add_to": "Adicionar a...",
|
||||
"add_to": "Adicionar a…",
|
||||
"add_to_album": "Adicionar ao álbum",
|
||||
"add_to_shared_album": "Adicionar ao álbum compartilhado",
|
||||
"add_url": "Adicionar URL",
|
||||
@@ -39,7 +39,7 @@
|
||||
"backup_database_enable_description": "Ativar backup do banco de dados",
|
||||
"backup_keep_last_amount": "Quantidade de backups anteriores para manter salvo",
|
||||
"backup_settings": "Configurações de backup",
|
||||
"backup_settings_description": "Gerenciar configurações de backup",
|
||||
"backup_settings_description": "Gerenciar configurações de backup do banco de dados",
|
||||
"check_all": "Selecionar Tudo",
|
||||
"cleared_jobs": "Tarefas removidas de: {job}",
|
||||
"config_set_by_file": "A configuração está atualmente definida por um arquivo de configuração",
|
||||
@@ -53,7 +53,7 @@
|
||||
"cron_expression_description": "Defina o intervalo de análise no formato Cron. Para mais informações, por favor veja o <link>Crontab Guru</link>",
|
||||
"cron_expression_presets": "Sugestões de expressão Cron",
|
||||
"disable_login": "Desabilitar login",
|
||||
"duplicate_detection_job_description": "Execute a inteligência artificial em arquivos para detectar imagens semelhantes. Depende da Pesquisa Inteligente",
|
||||
"duplicate_detection_job_description": "Execute o aprendizado de máquina em arquivos para detectar imagens semelhantes. Depende da Pesquisa Inteligente",
|
||||
"exclusion_pattern_description": "Os padrões de exclusão permitem ignorar arquivos e pastas ao escanear sua biblioteca. Isso é útil se você tiver pastas que contenham arquivos que não deseja importar, como arquivos RAW.",
|
||||
"external_library_created_at": "Biblioteca externa (criada em {date})",
|
||||
"external_library_management": "Gerenciamento de bibliotecas externas",
|
||||
@@ -69,8 +69,8 @@
|
||||
"image_prefer_embedded_preview_setting_description": "Use visualizações incorporadas em fotos RAW como entrada para processamento de imagem, quando disponível. Isso pode produzir cores mais precisas para algumas imagens, mas a qualidade da visualização depende da câmera e a imagem pode ter mais artefatos de compactação.",
|
||||
"image_prefer_wide_gamut": "Prefira ampla gama",
|
||||
"image_prefer_wide_gamut_setting_description": "Use o Display P3 para miniaturas. Isso preserva melhor a vibração das imagens com espaços de cores amplos, mas as imagens podem aparecer de maneira diferente em dispositivos antigos com uma versão antiga do navegador. As imagens sRGB são mantidas como sRGB para evitar mudanças de cores.",
|
||||
"image_preview_description": "Imagem de tamanho médio sem os metadados, utilizado quando visualizar um único arquivo e também pela inteligência artificial",
|
||||
"image_preview_quality_description": "Qualidade da pré-visualização, de 1-100. Maior é melhor, mas produz arquivos maiores e pode reduzir a velocidade do aplicativo. Definir um valor muito baixo pode afetar a qualidade da inteligência artificial.",
|
||||
"image_preview_description": "Imagem de tamanho médio sem os metadados, utilizado quando visualizando um único arquivo e também pelo aprendizado de máquina",
|
||||
"image_preview_quality_description": "Qualidade da pré-visualização, de 1-100. Maior é melhor, mas produz arquivos maiores e pode reduzir a velocidade do aplicativo. Definir um valor muito baixo pode afetar a qualidade do aprendizado de máquina.",
|
||||
"image_preview_title": "Configurações de pré-visualização",
|
||||
"image_quality": "Qualidade",
|
||||
"image_resolution": "Resolução",
|
||||
@@ -108,13 +108,13 @@
|
||||
"machine_learning_duplicate_detection": "Detecção de duplicidade",
|
||||
"machine_learning_duplicate_detection_enabled": "Habilitar detecção de duplicidade",
|
||||
"machine_learning_duplicate_detection_enabled_description": "Se desativado, arquivos exatamente idênticos ainda serão desduplicados.",
|
||||
"machine_learning_duplicate_detection_setting_description": "Use embeddings CLIP para encontrar prováveis duplicidades",
|
||||
"machine_learning_enabled": "Habilitar a inteligência artificial",
|
||||
"machine_learning_enabled_description": "Se desativado, todos os recursos de ML serão desativados, independentemente das configurações abaixo.",
|
||||
"machine_learning_duplicate_detection_setting_description": "Usar CLIP integrado para encontrar prováveis duplicidades",
|
||||
"machine_learning_enabled": "Habilitar aprendizado de máquina",
|
||||
"machine_learning_enabled_description": "Se desativado, todos os recursos de AM serão desativados, independentemente das configurações abaixo.",
|
||||
"machine_learning_facial_recognition": "Reconhecimento Facial",
|
||||
"machine_learning_facial_recognition_description": "Detectar, reconhecer e agrupar rostos em imagens",
|
||||
"machine_learning_facial_recognition_model": "Modelo de reconhecimento facial",
|
||||
"machine_learning_facial_recognition_model_description": "Os modelos estão listados em ordem decrescente de tamanho. Modelos maiores são mais lentos e utilizam mais memória, mas produzem melhores resultados. Observe que ao alterar um modelo, você deve executar novamente a tarefa de Detecção de Rostos para todas as imagens.",
|
||||
"machine_learning_facial_recognition_model_description": "Os modelos estão listados em ordem decrescente de tamanho. Modelos maiores são mais lentos e utilizam mais memória, mas produzem resultados melhores. Observe que ao alterar um modelo, você deve executar novamente a tarefa de Detecção de Rostos para todas as imagens.",
|
||||
"machine_learning_facial_recognition_setting": "Ativar reconhecimento facial",
|
||||
"machine_learning_facial_recognition_setting_description": "Se desativado, as imagens não serão codificadas para reconhecimento facial e não preencherão a seção Pessoas na página Explorar.",
|
||||
"machine_learning_max_detection_distance": "Distância máxima de detecção",
|
||||
@@ -124,14 +124,14 @@
|
||||
"machine_learning_min_detection_score": "Pontuação mínima de detecção",
|
||||
"machine_learning_min_detection_score_description": "Pontuação mínima de confiança para um rosto ser detectado, de 0 a 1. Valores mais baixos detectam mais rostos, mas poderão resultar em falsos positivos.",
|
||||
"machine_learning_min_recognized_faces": "Mínimo de rostos reconhecidos",
|
||||
"machine_learning_min_recognized_faces_description": "O número mínimo de rostos reconhecidos para uma pessoa ser criada na lista. Aumentar isso torna o Reconhecimento Facial mais preciso, ao custo de aumentar a chance de um rosto não ser atribuído a uma pessoa.",
|
||||
"machine_learning_settings": "Configurações de inteligência artificial",
|
||||
"machine_learning_settings_description": "Gerenciar recursos e configurações da inteligência artificial",
|
||||
"machine_learning_min_recognized_faces_description": "O número mínimo de rostos reconhecidos para uma pessoa ser criada. Aumentar isso torna o Reconhecimento Facial mais preciso, ao custo de aumentar a chance de um rosto não ser atribuído a uma pessoa.",
|
||||
"machine_learning_settings": "Configurações de aprendizado de máquina",
|
||||
"machine_learning_settings_description": "Gerenciar recursos e configurações do aprendizado de máquina",
|
||||
"machine_learning_smart_search": "Pesquisa Inteligente",
|
||||
"machine_learning_smart_search_description": "Buscar imagens semanticamente usando embeddings CLIP",
|
||||
"machine_learning_smart_search_description": "Buscar imagens semanticamente usando integrações CLIP",
|
||||
"machine_learning_smart_search_enabled": "Habilitar a Pesquisa Inteligente",
|
||||
"machine_learning_smart_search_enabled_description": "Se desativado, as imagens não serão codificadas para pesquisa inteligente.",
|
||||
"machine_learning_url_description": "A URL do servidor de inteligência artificial. Se mais de uma URL for configurada, o servidor irá tentar uma de cada vez até que uma delas responda com sucesso, em ordem sequencial igual a configurada.",
|
||||
"machine_learning_url_description": "A URL do servidor de aprendizado de máquina. Se mais de uma URL for fornecida, elas serão tentadas, uma de cada vez e na ordem indicada, até que uma responda com sucesso.",
|
||||
"manage_concurrency": "Gerenciar simultaneidade",
|
||||
"manage_log_settings": "Gerenciar configurações de registro",
|
||||
"map_dark_style": "Tema Escuro",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Redefinir as configurações para o padrão",
|
||||
"reset_settings_to_recent_saved": "Redefinir as configurações para as configurações salvas recentemente",
|
||||
"scanning_library": "Analisando a biblioteca",
|
||||
"search_jobs": "Pesquisar tarefas...",
|
||||
"search_jobs": "Pesquisar tarefas…",
|
||||
"send_welcome_email": "Enviar e-mail de boas-vindas",
|
||||
"server_external_domain_settings": "Domínio externo",
|
||||
"server_external_domain_settings_description": "Domínio para links públicos compartilhados, incluindo http(s)://",
|
||||
@@ -232,7 +232,7 @@
|
||||
"sidecar_job": "Metadados secundários",
|
||||
"sidecar_job_description": "Descubra ou sincronize metadados secundários do sistema de arquivos",
|
||||
"slideshow_duration_description": "Tempo em segundos para exibir cada imagem",
|
||||
"smart_search_job_description": "Execute a inteligência artificial em arquivos para oferecer suporte à pesquisa inteligente",
|
||||
"smart_search_job_description": "Execute aprendizado de máquina em arquivos para oferecer suporte à pesquisa inteligente",
|
||||
"storage_template_date_time_description": "A data e hora da criação do ativo é usado para a informações de data e hora",
|
||||
"storage_template_date_time_sample": "Exemplo {date}",
|
||||
"storage_template_enable_description": "Habilitar mecanismo de modelo de armazenamento",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Essas pessoas são a mesma pessoa?",
|
||||
"are_you_sure_to_do_this": "Tem certeza de que deseja fazer isso?",
|
||||
"asset_added_to_album": "Adicionado ao álbum",
|
||||
"asset_adding_to_album": "Adicionando ao álbum...",
|
||||
"asset_adding_to_album": "Adicionando ao álbum…",
|
||||
"asset_description_updated": "A descrição do ativo foi atualizada",
|
||||
"asset_filename_is_offline": "O arquivo {filename} não está disponível",
|
||||
"asset_has_unassigned_faces": "O arquivo tem rostos sem nomes",
|
||||
"asset_hashing": "Processando...",
|
||||
"asset_hashing": "Processando…",
|
||||
"asset_offline": "Arquivo indisponível",
|
||||
"asset_offline_description": "Este arquivo externo não está mais disponível. Contate seu administrador do Immich para obter ajuda.",
|
||||
"asset_skipped": "Ignorado",
|
||||
"asset_skipped_in_trash": "Na lixeira",
|
||||
"asset_uploaded": "Carregado",
|
||||
"asset_uploading": "Carregando...",
|
||||
"asset_uploading": "Carregando…",
|
||||
"assets": "Arquivos",
|
||||
"assets_added_count": "{count, plural, one {# arquivo adicionado} other {# arquivos adicionados}}",
|
||||
"assets_added_to_album_count": "{count, plural, one {# arquivo adicionado} other {# arquivos adicionados}} ao álbum",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Ir para a pasta",
|
||||
"go_to_search": "Ir para a pesquisa",
|
||||
"group_albums_by": "Agrupar álbuns por...",
|
||||
"group_country": "Agrupar por país",
|
||||
"group_no": "Sem agrupamento",
|
||||
"group_owner": "Agrupar por dono",
|
||||
"group_places_by": "Agrupar lugares por...",
|
||||
"group_year": "Agrupar por ano",
|
||||
"has_quota": "Há cota",
|
||||
"hi_user": "Olá {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Incluir álbuns compartilhados",
|
||||
"include_shared_partner_assets": "Incluir arquivos compartilhados por parceiros",
|
||||
"individual_share": "Compartilhamento único",
|
||||
"individual_shares": "Compartilhamentos individuais",
|
||||
"info": "Informações",
|
||||
"interval": {
|
||||
"day_at_onepm": "Todo dia, 1pm",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Versão mais recente",
|
||||
"latitude": "Latitude",
|
||||
"leave": "Sair",
|
||||
"lens_model": "Modelo da lente",
|
||||
"let_others_respond": "Permitir respostas",
|
||||
"level": "Nível",
|
||||
"library": "Biblioteca",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Selecione uma localização",
|
||||
"place": "Lugar",
|
||||
"places": "Lugares",
|
||||
"places_count": "{count, plural, one {{count, number} Lugar} other {{count, number} Lugares}}",
|
||||
"play": "Reproduzir",
|
||||
"play_memories": "Reproduzir memórias",
|
||||
"play_motion_photo": "Reproduzir foto em movimento",
|
||||
@@ -1095,7 +1100,7 @@
|
||||
"role": "Função",
|
||||
"role_editor": "Editor",
|
||||
"role_viewer": "Visualizador",
|
||||
"save": "Guardar",
|
||||
"save": "Salvar",
|
||||
"saved_api_key": "Chave de API salva",
|
||||
"saved_profile": "Perfil Salvo",
|
||||
"saved_settings": "Configurações salvas",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Pesquisar",
|
||||
"search_albums": "Pesquisar álbuns",
|
||||
"search_by_context": "Pesquisar por contexto",
|
||||
"search_by_description": "Pesquisar por descrição",
|
||||
"search_by_description_example": "Dia de caminhada no Ibirapuera",
|
||||
"search_by_filename": "Pesquisa por nome de arquivo ou extensão",
|
||||
"search_by_filename_example": "Por exemplo, IMG_1234.JPG ou PNG",
|
||||
"search_camera_make": "Pesquisar câmeras da marca...",
|
||||
"search_camera_model": "Pesquisar câmera do modelo...",
|
||||
"search_city": "Pesquisar cidade...",
|
||||
"search_country": "Pesquisar país...",
|
||||
"search_for": "Pesquisar por",
|
||||
"search_for_existing_person": "Pesquisar por pessoas",
|
||||
"search_no_people": "Nenhuma pessoa",
|
||||
"search_no_people_named": "Nenhuma pessoa chamada \"{name}\"",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Fotos de {partner}",
|
||||
"shared_link_options": "Opções do link compartilhado",
|
||||
"shared_links": "Links compartilhados",
|
||||
"shared_links_description": "Compartilhar fotos e videos com um link",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, one {# arquivo compartilhado.} other {# arquivos compartilhados.}}",
|
||||
"shared_with_partner": "Compartilhado com {partner}",
|
||||
"sharing": "Compartilhar",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Exibir opções da pessoa",
|
||||
"show_progress_bar": "Exibir barra de progresso",
|
||||
"show_search_options": "Exibir opções de pesquisa",
|
||||
"show_shared_links": "Mostrar links compartilhados",
|
||||
"show_slideshow_transition": "Usar transições no modo de apresentação",
|
||||
"show_supporter_badge": "Insígnia de Contribuidor",
|
||||
"show_supporter_badge_description": "Mostrar a insígnia de contribuidor",
|
||||
@@ -1215,7 +1225,7 @@
|
||||
"stack_select_one_photo": "Selecione uma foto principal para a pilha",
|
||||
"stack_selected_photos": "Empilhar fotos selecionadas",
|
||||
"stacked_assets_count": "{count, plural, one {# arquivo empilhado} other {# arquivos empilhados}}",
|
||||
"stacktrace": "Stacktrace",
|
||||
"stacktrace": "Rastreamento de pilha",
|
||||
"start": "Início",
|
||||
"start_date": "Data inicial",
|
||||
"state": "Estado",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Remover favorito",
|
||||
"unhide_person": "Exibir pessoa",
|
||||
"unknown": "Desconhecido",
|
||||
"unknown_country": "País desconhecido",
|
||||
"unknown_year": "Ano desconhecido",
|
||||
"unlimited": "Ilimitado",
|
||||
"unlink_motion_video": "Remover relação com video animado",
|
||||
|
||||
10
i18n/ro.json
10
i18n/ro.json
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Accesați folderul",
|
||||
"go_to_search": "Spre căutare",
|
||||
"group_albums_by": "Grupați albume de...",
|
||||
"group_country": "Grupare după țară",
|
||||
"group_no": "Fără grupare",
|
||||
"group_owner": "Grupați după proprietar",
|
||||
"group_places_by": "Grupare locuri după...",
|
||||
"group_year": "Grupați după an",
|
||||
"has_quota": "Are spațiu de stocare",
|
||||
"hi_user": "Bună {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Include albumele partajate",
|
||||
"include_shared_partner_assets": "Include resursele partenerilor partajați",
|
||||
"individual_share": "Cota individuală",
|
||||
"individual_shares": "Partajări individuale",
|
||||
"info": "Informație",
|
||||
"interval": {
|
||||
"day_at_onepm": "În fiecare zi la ora 13.00",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Ultima Versiune",
|
||||
"latitude": "Latitudine",
|
||||
"leave": "Părăsiți",
|
||||
"lens_model": "Model obiectiv",
|
||||
"let_others_respond": "Permite altora să răspundă",
|
||||
"level": "Nivel",
|
||||
"library": "Librărie",
|
||||
@@ -1107,12 +1111,15 @@
|
||||
"search": "Căutați",
|
||||
"search_albums": "Căutați albume",
|
||||
"search_by_context": "Căutați după context",
|
||||
"search_by_description": "Căutare după descriere",
|
||||
"search_by_description_example": "Zi de drumeție în Sapa",
|
||||
"search_by_filename": "Căutați după numele fișierului sau extensie",
|
||||
"search_by_filename_example": "i.e. IMG_1234.JPG sau PNG",
|
||||
"search_camera_make": "Se caută marca camerei...",
|
||||
"search_camera_model": "Se caută modelul camerei...",
|
||||
"search_city": "Se caută orașul...",
|
||||
"search_country": "Se caută țara...",
|
||||
"search_for": "Căutare după",
|
||||
"search_for_existing_person": "Se caută o persoană existentă",
|
||||
"search_no_people": "Fără persoane",
|
||||
"search_no_people_named": "Nicio persoană numită \"{name}\"",
|
||||
@@ -1165,6 +1172,7 @@
|
||||
"shared_from_partner": "Fotografii de la {partner}",
|
||||
"shared_link_options": "Opțiuni de link partajat",
|
||||
"shared_links": "Link-uri distribuite",
|
||||
"shared_links_description": "Partajare imagini și clipuri printr-un link",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# fotografii și videoclipuri partajate.}}",
|
||||
"shared_with_partner": "Partajat cu {partner}",
|
||||
"sharing": "Distribuire",
|
||||
@@ -1187,6 +1195,7 @@
|
||||
"show_person_options": "Afișați opțiunile persoanelor",
|
||||
"show_progress_bar": "Afișați Bara de Progres",
|
||||
"show_search_options": "Afișați opțiunile de căutare",
|
||||
"show_shared_links": "Afișare linkuri partajate",
|
||||
"show_slideshow_transition": "Afișați tranziția de prezentare",
|
||||
"show_supporter_badge": "Insigna suporterului",
|
||||
"show_supporter_badge_description": "Arată o insignă de suporter",
|
||||
@@ -1274,6 +1283,7 @@
|
||||
"unfavorite": "Ștergeți din favorite",
|
||||
"unhide_person": "Dezvăluie persoana",
|
||||
"unknown": "Necunoscut",
|
||||
"unknown_country": "Țară necunoscută",
|
||||
"unknown_year": "An Necunoscut",
|
||||
"unlimited": "Nelimitat",
|
||||
"unlink_motion_video": "Deconectați videoclipul în mișcare",
|
||||
|
||||
37
i18n/ru.json
37
i18n/ru.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Добавить партнёра",
|
||||
"add_path": "Добавить путь",
|
||||
"add_photos": "Добавить фото",
|
||||
"add_to": "Добавить в...",
|
||||
"add_to": "Добавить в…",
|
||||
"add_to_album": "Добавить в альбом",
|
||||
"add_to_shared_album": "Добавить в общий альбом",
|
||||
"add_url": "Добавить URL",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Сброс настроек до значений по умолчанию",
|
||||
"reset_settings_to_recent_saved": "Сбросьте настройки к последним сохраненным настройкам",
|
||||
"scanning_library": "Сканирование библиотеки",
|
||||
"search_jobs": "Поиск заданий...",
|
||||
"search_jobs": "Поиск заданий…",
|
||||
"send_welcome_email": "Отправить приветственное письмо",
|
||||
"server_external_domain_settings": "Внешний домен",
|
||||
"server_external_domain_settings_description": "Домен для публичных ссылок, включая http(s)://",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Это один и тот же человек?",
|
||||
"are_you_sure_to_do_this": "Вы уверены, что хотите это сделать?",
|
||||
"asset_added_to_album": "Добавлено в альбом",
|
||||
"asset_adding_to_album": "Добавление в альбом...",
|
||||
"asset_adding_to_album": "Добавление в альбом…",
|
||||
"asset_description_updated": "Описание обновлено",
|
||||
"asset_filename_is_offline": "Объект {filename} находится в офлайн-режиме",
|
||||
"asset_has_unassigned_faces": "Есть не распознанные лица",
|
||||
"asset_hashing": "Хеширование...",
|
||||
"asset_hashing": "Хеширование…",
|
||||
"asset_offline": "Объект отключён",
|
||||
"asset_offline_description": "Этот внешний файл не найден на диске. Пожалуйста, свяжитесь с администратором Immich для получения помощи.",
|
||||
"asset_skipped": "Пропущено",
|
||||
"asset_skipped_in_trash": "В корзине",
|
||||
"asset_uploaded": "Загружено",
|
||||
"asset_uploading": "Загрузка...",
|
||||
"asset_uploading": "Загрузка…",
|
||||
"assets": "Объекты",
|
||||
"assets_added_count": "Добавлено {count, plural, one {# объект} few {# объекта} other {# объектов}}",
|
||||
"assets_added_to_album_count": "В альбом добавлено {count, plural, one {# объект} few {# объекта} other {# объектов}}",
|
||||
@@ -482,7 +482,7 @@
|
||||
"confirm": "Подтвердить",
|
||||
"confirm_admin_password": "Подтвердите пароль Администратора",
|
||||
"confirm_delete_shared_link": "Вы уверены, что хотите удалить эту публичную ссылку?",
|
||||
"confirm_keep_this_delete_others": "Все остальные объекты в серии будут удалены, кроме этого объекта. Вы уверены, что хотите продолжить?",
|
||||
"confirm_keep_this_delete_others": "Все остальные объекты в группе будут удалены, кроме этого объекта. Вы уверены, что хотите продолжить?",
|
||||
"confirm_password": "Подтвердите пароль",
|
||||
"contain": "Вместить",
|
||||
"context": "Контекст",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Перейти в папку",
|
||||
"go_to_search": "Перейти к поиску",
|
||||
"group_albums_by": "Группировать альбомы по...",
|
||||
"group_country": "Группировать по странам",
|
||||
"group_no": "Без группировки",
|
||||
"group_owner": "Группировать по владельцу",
|
||||
"group_places_by": "Группировать места по...",
|
||||
"group_year": "Группировать по годам",
|
||||
"has_quota": "Квота",
|
||||
"hi_user": "Привет {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Включать общие альбомы",
|
||||
"include_shared_partner_assets": "Включать общие ресурсы партнера",
|
||||
"individual_share": "Персональный доступ",
|
||||
"individual_shares": "Индивидуальный доступ",
|
||||
"info": "Информация",
|
||||
"interval": {
|
||||
"day_at_onepm": "Каждый день в 13:00",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Последняя Версия",
|
||||
"latitude": "Широта",
|
||||
"leave": "Покинуть",
|
||||
"lens_model": "Модель объектива",
|
||||
"let_others_respond": "Позволять другим откликаться",
|
||||
"level": "Уровень",
|
||||
"library": "Библиотека",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Выбрать местоположение",
|
||||
"place": "Места",
|
||||
"places": "Места",
|
||||
"places_count": "{count, plural, one {{count, number} Место} other {{count, number} Мест}}",
|
||||
"play": "Воспроизвести",
|
||||
"play_memories": "Воспроизвести воспоминания",
|
||||
"play_motion_photo": "Воспроизводить движущиеся фото",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Поиск",
|
||||
"search_albums": "Поиск альбомов",
|
||||
"search_by_context": "Поиск по контексту",
|
||||
"search_by_description": "Поиск по описанию",
|
||||
"search_by_description_example": "День пешего туризма в Сапе",
|
||||
"search_by_filename": "Искать по имени файла или расширению",
|
||||
"search_by_filename_example": "например, IMG_1234.JPG или PNG",
|
||||
"search_camera_make": "Поиск производителя камеры...",
|
||||
"search_camera_model": "Поиск модели камеры...",
|
||||
"search_city": "Поиск города...",
|
||||
"search_country": "Поиск страны...",
|
||||
"search_for": "Поиск по",
|
||||
"search_for_existing_person": "Поиск существующего человека",
|
||||
"search_no_people": "Нет людей",
|
||||
"search_no_people_named": "Нет людей с именем \"{name}\"",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Фото от {partner}",
|
||||
"shared_link_options": "Параметры публичных ссылок",
|
||||
"shared_links": "Публичные ссылки",
|
||||
"shared_links_description": "Делитесь фотографиями и видео по ссылке",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# фото и видео.}}",
|
||||
"shared_with_partner": "Совместно с {partner}",
|
||||
"sharing": "Общие",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Показать опции персоны",
|
||||
"show_progress_bar": "Показать Индикатор Выполнения",
|
||||
"show_search_options": "Показать параметры поиска",
|
||||
"show_shared_links": "Показать публичные ссылки",
|
||||
"show_slideshow_transition": "Показать слайд-шоу переход",
|
||||
"show_supporter_badge": "Значок поддержки",
|
||||
"show_supporter_badge_description": "Показать значок поддержки",
|
||||
@@ -1210,11 +1220,11 @@
|
||||
"sort_recent": "Недавние фото",
|
||||
"sort_title": "Заголовок",
|
||||
"source": "Исходный код",
|
||||
"stack": "Превратить в серию",
|
||||
"stack_duplicates": "Превратить дубликаты в серию",
|
||||
"stack_select_one_photo": "Выберите главную фотографию для серии",
|
||||
"stack_selected_photos": "Объединить выбранные объекты в серию",
|
||||
"stacked_assets_count": "{count, plural, one {# объект добавлен} few {# объекта добавлено} other {# объектов добавлено}} в серию",
|
||||
"stack": "Группировать",
|
||||
"stack_duplicates": "Группировать дубликаты",
|
||||
"stack_select_one_photo": "Выберите главную фотографию для группы",
|
||||
"stack_selected_photos": "Группировать выбранные объекты",
|
||||
"stacked_assets_count": "{count, plural, one {# объект добавлен} few {# объекта добавлено} other {# объектов добавлено}} в группу",
|
||||
"stacktrace": "Трассировка стека",
|
||||
"start": "Старт",
|
||||
"start_date": "Дата начала",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Удалить из избранного",
|
||||
"unhide_person": "Показать персону",
|
||||
"unknown": "Неизвестно",
|
||||
"unknown_country": "Неизвестная страна",
|
||||
"unknown_year": "Неизвестный Год",
|
||||
"unlimited": "Не ограничено",
|
||||
"unlink_motion_video": "Отсоединить движущееся видео",
|
||||
@@ -1285,8 +1296,8 @@
|
||||
"unsaved_change": "Не сохраненное изменение",
|
||||
"unselect_all": "Снять всё",
|
||||
"unselect_all_duplicates": "Отменить выбор всех дубликатов",
|
||||
"unstack": "Разгруппировать серию",
|
||||
"unstacked_assets_count": "{count, plural, one {# объект извлечен} few {# объекта извлечено} other {# объектов извлечено}} из серии",
|
||||
"unstack": "Разгруппировать",
|
||||
"unstacked_assets_count": "{count, plural, one {# объект извлечен} few {# объекта извлечено} other {# объектов извлечено}} из группы",
|
||||
"untracked_files": "НЕОТСЛЕЖИВАЕМЫЕ ФАЙЛЫ",
|
||||
"untracked_files_decription": "Приложение не отслеживает эти файлы. Они могут быть результатом неудачных перемещений, прерванных загрузок или пропущены из-за ошибки",
|
||||
"up_next": "Следующее",
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"add_a_title": "Pridať názov",
|
||||
"add_exclusion_pattern": "Pridať vzor vylúčenia",
|
||||
"add_import_path": "Pridať cestu pre import",
|
||||
"add_location": "Pridať lokáciu",
|
||||
"add_location": "Pridať polohu",
|
||||
"add_more_users": "Pridať viac používateľov",
|
||||
"add_partner": "Pridať partnera",
|
||||
"add_path": "Pridať cestu",
|
||||
@@ -822,6 +822,7 @@
|
||||
"latest_version": "Najnovšia verzia",
|
||||
"latitude": "Zemepisná šírka",
|
||||
"leave": "Opustiť",
|
||||
"lens_model": "Model objektívu",
|
||||
"let_others_respond": "Nechajte ostatných reagovať",
|
||||
"level": "Level",
|
||||
"library": "Knižnica",
|
||||
@@ -1113,6 +1114,7 @@
|
||||
"search_camera_model": "Hľadať model fotoaparátu...",
|
||||
"search_city": "Hľadať mesto...",
|
||||
"search_country": "Hľadať krajinu...",
|
||||
"search_for": "Vyhľadať",
|
||||
"search_for_existing_person": "Hľadať existujúcu osobu",
|
||||
"search_no_people": "Žiadne osoby",
|
||||
"search_no_people_named": "Žiadne osoby menom \"{name}\"",
|
||||
|
||||
21
i18n/sl.json
21
i18n/sl.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Dodaj partnerja",
|
||||
"add_path": "Dodaj pot",
|
||||
"add_photos": "Dodaj fotografije",
|
||||
"add_to": "Dodaj v...",
|
||||
"add_to": "Dodaj v…",
|
||||
"add_to_album": "Dodaj v album",
|
||||
"add_to_shared_album": "Dodaj k deljenemu albumu",
|
||||
"add_url": "Dodaj URL",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Ponastavi nastavitve na privzete",
|
||||
"reset_settings_to_recent_saved": "Ponastavite nastavitve na nedavno shranjene nastavitve",
|
||||
"scanning_library": "Pregledovanje knjižnice",
|
||||
"search_jobs": "Iskalna opravila...",
|
||||
"search_jobs": "Iskanje opravil…",
|
||||
"send_welcome_email": "Pošlji pozdravno e-pošto",
|
||||
"server_external_domain_settings": "Zunanja domena",
|
||||
"server_external_domain_settings_description": "Domena za javne skupne povezave, vključno s http(s)://",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Ali je to ista oseba?",
|
||||
"are_you_sure_to_do_this": "Ste prepričani, da želite to narediti?",
|
||||
"asset_added_to_album": "Dodano v album",
|
||||
"asset_adding_to_album": "Dodajanje v album ...",
|
||||
"asset_adding_to_album": "Dodajanje v album…",
|
||||
"asset_description_updated": "Opis sredstva je posodobljen",
|
||||
"asset_filename_is_offline": "Sredstvo {filename} je brez povezave",
|
||||
"asset_has_unassigned_faces": "Sredstvo ima nedodeljene obraze",
|
||||
"asset_hashing": "Zgoščevanje ...",
|
||||
"asset_hashing": "Zgoščevanje…",
|
||||
"asset_offline": "Sredstvo brez povezave",
|
||||
"asset_offline_description": "Tega zunanjega sredstva ni več mogoče najti na disku. Za pomoč kontaktirajte Immich skrbnika.",
|
||||
"asset_skipped": "Preskočeno",
|
||||
"asset_skipped_in_trash": "V smetnjak",
|
||||
"asset_uploaded": "Naloženo",
|
||||
"asset_uploading": "Nalaganje ...",
|
||||
"asset_uploading": "Nalaganje…",
|
||||
"assets": "Sredstva",
|
||||
"assets_added_count": "Dodano{count, plural, one {# sredstvo} other {# sredstev}}",
|
||||
"assets_added_to_album_count": "Dodano{count, plural, one {# sredstvo} other {# sredstev}} v album",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Pojdi na mapo",
|
||||
"go_to_search": "Pojdi na iskanje",
|
||||
"group_albums_by": "Združi albume po ...",
|
||||
"group_country": "Združi po državah",
|
||||
"group_no": "Brez združevanja",
|
||||
"group_owner": "Združi po lastniku",
|
||||
"group_places_by": "Združi kraje po...",
|
||||
"group_year": "Združi po letih",
|
||||
"has_quota": "Ima kvoto",
|
||||
"hi_user": "Živijo {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Vključite skupne albume",
|
||||
"include_shared_partner_assets": "Vključite partnerjeva skupna sredstva",
|
||||
"individual_share": "Samostojna delitev",
|
||||
"individual_shares": "Posamezne delitve",
|
||||
"info": "Info",
|
||||
"interval": {
|
||||
"day_at_onepm": "Vsak dan ob 13h",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Najnovejša različica",
|
||||
"latitude": "Zemljepisna širina",
|
||||
"leave": "Zapusti",
|
||||
"lens_model": "Model leč",
|
||||
"let_others_respond": "Naj drugi odgovorijo",
|
||||
"level": "Raven",
|
||||
"library": "Knjižnica",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Izberi lokacijo",
|
||||
"place": "Lokacija",
|
||||
"places": "Lokacije",
|
||||
"places_count": "{count, plural, one {{count, number} kraj} other {{count, number} krajev}}",
|
||||
"play": "Predvajaj",
|
||||
"play_memories": "Predvajaj spomine",
|
||||
"play_motion_photo": "Predvajaj premikajočo fotografijo",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Iskanje",
|
||||
"search_albums": "Iskanje albumov",
|
||||
"search_by_context": "Iskanje po kontekstu",
|
||||
"search_by_description": "Iskanje po opisu",
|
||||
"search_by_description_example": "Pohodniški dan v Sapi",
|
||||
"search_by_filename": "Iskanje po imenu datoteke ali priponi",
|
||||
"search_by_filename_example": "na primer IMG_1234.JPG ali PNG",
|
||||
"search_camera_make": "Iskanje proizvajalca kamere...",
|
||||
"search_camera_model": "Išči model kamere...",
|
||||
"search_city": "Iskanje mesta...",
|
||||
"search_country": "Iskanje države...",
|
||||
"search_for": "Poišči za",
|
||||
"search_for_existing_person": "Iskanje obstoječe osebe",
|
||||
"search_no_people": "Brez oseb",
|
||||
"search_no_people_named": "Ni oseb z imenom \"{name}\"",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Fotografije od {partner}",
|
||||
"shared_link_options": "Možnosti skupne povezave",
|
||||
"shared_links": "Povezave v skupni rabi",
|
||||
"shared_links_description": "Deli fotografije in videoposnetke s povezavo",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# deljenih fotografij & videoposnetkov.}}",
|
||||
"shared_with_partner": "V skupni rabi s/z {partner}",
|
||||
"sharing": "Skupna raba",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Prikaži možnosti osebe",
|
||||
"show_progress_bar": "Prikaži vrstico napredka",
|
||||
"show_search_options": "Prikaži možnosti iskanja",
|
||||
"show_shared_links": "Pokaži povezave v skupni rabi",
|
||||
"show_slideshow_transition": "Prikaži prehod diaprojekcije",
|
||||
"show_supporter_badge": "Značka podpornika",
|
||||
"show_supporter_badge_description": "Prikaži značko podpornika",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Odznači priljubljeno",
|
||||
"unhide_person": "Prikaži osebo",
|
||||
"unknown": "Neznano",
|
||||
"unknown_country": "Neznana država",
|
||||
"unknown_year": "Neznano leto",
|
||||
"unlimited": "Neomejeno",
|
||||
"unlink_motion_video": "Prekini povezavo videoposnetka gibanja",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Додај партнер",
|
||||
"add_path": "Додај путању",
|
||||
"add_photos": "Додај фотографије",
|
||||
"add_to": "Додај у...",
|
||||
"add_to": "Додај у…",
|
||||
"add_to_album": "Додај у албум",
|
||||
"add_to_shared_album": "Додај у дељен албум",
|
||||
"add_url": "Додај URL",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Ресетујте подешавања на подразумеване вредности",
|
||||
"reset_settings_to_recent_saved": "Ресетујте подешавања на недавно сачувана подешавања",
|
||||
"scanning_library": "Скенирање библиотеке",
|
||||
"search_jobs": "Тражи послове...",
|
||||
"search_jobs": "Тражи послове…",
|
||||
"send_welcome_email": "Пошаљите е-пошту добродошлице",
|
||||
"server_external_domain_settings": "Екстерни домаин",
|
||||
"server_external_domain_settings_description": "Домаин за јавне дељене везе, укључујући http(s)://",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Да ли су ово иста особа?",
|
||||
"are_you_sure_to_do_this": "Јесте ли сигурни да желите ово да урадите?",
|
||||
"asset_added_to_album": "Додато у албум",
|
||||
"asset_adding_to_album": "Додаје се у албум...",
|
||||
"asset_adding_to_album": "Додаје се у албум…",
|
||||
"asset_description_updated": "Опис датотеке је ажуриран",
|
||||
"asset_filename_is_offline": "Датотека {filename} је ван мреже (offline)",
|
||||
"asset_has_unassigned_faces": "Датотека има недодељена лица",
|
||||
"asset_hashing": "Хеширање...",
|
||||
"asset_hashing": "Хеширање…",
|
||||
"asset_offline": "Датотека одсутна (offline)",
|
||||
"asset_offline_description": "Ова вањска датотека се више не налази на диску. Молимо контактирајте свог Имич администратора за помоћ.",
|
||||
"asset_skipped": "Прескочено",
|
||||
"asset_skipped_in_trash": "У отпад",
|
||||
"asset_uploaded": "Отпремљено (Уплоадед)",
|
||||
"asset_uploading": "Отпремање...",
|
||||
"asset_uploading": "Отпремање…",
|
||||
"assets": "Записи",
|
||||
"assets_added_count": "Додато {count, plural, one {# датотека} other {# датотека}}",
|
||||
"assets_added_to_album_count": "Додато је {count, plural, one {# датотека} other {# датотека}} у албум",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Иди у фасциклу",
|
||||
"go_to_search": "Иди на претрагу",
|
||||
"group_albums_by": "Групни албуми по...",
|
||||
"group_country": "Група по држава",
|
||||
"group_no": "Без груписања",
|
||||
"group_owner": "Групирајте по власнику",
|
||||
"group_places_by": "Групирајте места по...",
|
||||
"group_year": "Групирајте по години",
|
||||
"has_quota": "Има квоту",
|
||||
"hi_user": "Здраво {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Обухвати дељене албуме",
|
||||
"include_shared_partner_assets": "Обухвати заједничке датотеке партнера",
|
||||
"individual_share": "Индивидуални удео",
|
||||
"individual_shares": "Појединачне акције",
|
||||
"info": "Информација",
|
||||
"interval": {
|
||||
"day_at_onepm": "Сваки дан у 1пм",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Најновија верзија",
|
||||
"latitude": "Географска ширина",
|
||||
"leave": "Напусти",
|
||||
"lens_model": "Модел сочива",
|
||||
"let_others_respond": "Дозволи да други коментаришу",
|
||||
"level": "Ниво",
|
||||
"library": "Библиотека",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Одабери локацију",
|
||||
"place": "Место",
|
||||
"places": "Места",
|
||||
"places_count": "{count, plural, one {{count, number} Место} other {{count, number} Местa}}",
|
||||
"play": "Покрени",
|
||||
"play_memories": "Покрени сећања",
|
||||
"play_motion_photo": "Покрени покретну фотографију",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Претрага",
|
||||
"search_albums": "Претражи албуме",
|
||||
"search_by_context": "Претражујте по контексту",
|
||||
"search_by_description": "Тражи по опису",
|
||||
"search_by_description_example": "Дан пешачења у Сапи",
|
||||
"search_by_filename": "Претражите по имену датотеке или екстензији",
|
||||
"search_by_filename_example": "нпр. IMG_1234.JPG или PNG",
|
||||
"search_camera_make": "Претрага произвођача камере...",
|
||||
"search_camera_model": "Претражи модел камере...",
|
||||
"search_city": "Претражи град...",
|
||||
"search_country": "Тражи земљу...",
|
||||
"search_for": "Тражи",
|
||||
"search_for_existing_person": "Потражите постојећу особу",
|
||||
"search_no_people": "Без особа",
|
||||
"search_no_people_named": "Нема особа са именом „{name}“",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Слике од {partner}",
|
||||
"shared_link_options": "Опције дељене везе",
|
||||
"shared_links": "Дељене везе",
|
||||
"shared_links_description": "Делите фотографије и видео записе помоћу линка",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# дељене фотографије и видео записе.}}",
|
||||
"shared_with_partner": "Дели се са {partner}",
|
||||
"sharing": "Дељење",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Прикажи опције особе",
|
||||
"show_progress_bar": "Прикажи траку напретка",
|
||||
"show_search_options": "Прикажи опције претраге",
|
||||
"show_shared_links": "Прикажи дељене везе",
|
||||
"show_slideshow_transition": "Прикажи прелаз пројекције слајдова",
|
||||
"show_supporter_badge": "Значка подршке",
|
||||
"show_supporter_badge_description": "Покажите значку подршке",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Избаци из омиљених (унфаворите)",
|
||||
"unhide_person": "Откриј особу",
|
||||
"unknown": "Непознат",
|
||||
"unknown_country": "Непозната земља",
|
||||
"unknown_year": "Непозната Година",
|
||||
"unlimited": "Неограничено",
|
||||
"unlink_motion_video": "Прекините везу са видео снимком",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Dodaj partner",
|
||||
"add_path": "Dodaj putanju",
|
||||
"add_photos": "Dodaj fotografije",
|
||||
"add_to": "Dodaj u...",
|
||||
"add_to": "Dodaj u…",
|
||||
"add_to_album": "Dodaj u album",
|
||||
"add_to_shared_album": "Dodaj u deljen album",
|
||||
"add_url": "Dodaj URL",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Resetujte podešavanja na podrazumevane vrednosti",
|
||||
"reset_settings_to_recent_saved": "Resetujte podešavanja na nedavno sačuvana podešavanja",
|
||||
"scanning_library": "Skeniranje biblioteke",
|
||||
"search_jobs": "Traži poslove...",
|
||||
"search_jobs": "Traži poslove…",
|
||||
"send_welcome_email": "Pošaljite e-poštu dobrodošlice",
|
||||
"server_external_domain_settings": "Eksterni domain",
|
||||
"server_external_domain_settings_description": "Domain za javne deljene veze, uključujući http(s)://",
|
||||
@@ -406,17 +406,17 @@
|
||||
"are_these_the_same_person": "Da li su ovo ista osoba?",
|
||||
"are_you_sure_to_do_this": "Jeste li sigurni da želite ovo da uradite?",
|
||||
"asset_added_to_album": "Dodato u album",
|
||||
"asset_adding_to_album": "Dodaje se u album...",
|
||||
"asset_adding_to_album": "Dodaje se u album…",
|
||||
"asset_description_updated": "Opis datoteke je ažuriran",
|
||||
"asset_filename_is_offline": "Datoteka {filename} je van mreže (offline)",
|
||||
"asset_has_unassigned_faces": "Datoteka ima nedodeljena lica",
|
||||
"asset_hashing": "Heširanje...",
|
||||
"asset_hashing": "Heširanje…",
|
||||
"asset_offline": "Datoteka odsutna",
|
||||
"asset_offline_description": "Ova vanjska datoteka se više ne nalazi na disku. Molimo kontaktirajte svog Immich administratora za pomoć.",
|
||||
"asset_skipped": "Preskočeno",
|
||||
"asset_skipped_in_trash": "U otpad",
|
||||
"asset_uploaded": "Otpremljeno (Uploaded)",
|
||||
"asset_uploading": "Otpremanje...",
|
||||
"asset_uploading": "Otpremanje…",
|
||||
"assets": "Zapisi",
|
||||
"assets_added_count": "Dodato {count, plural, one {# datoteka} other {# datoteka}}",
|
||||
"assets_added_to_album_count": "Dodato je {count, plural, one {# datoteka} other {# datoteka}} u album",
|
||||
@@ -766,8 +766,10 @@
|
||||
"go_to_folder": "Idi u fasciklu",
|
||||
"go_to_search": "Idi na pretragu",
|
||||
"group_albums_by": "Grupni albumi po...",
|
||||
"group_country": "Grupa po država",
|
||||
"group_no": "Bez grupisanja",
|
||||
"group_owner": "Grupirajte po vlasniku",
|
||||
"group_places_by": "Grupirajte mesta po...",
|
||||
"group_year": "Grupirajte po godini",
|
||||
"has_quota": "Ima kvotu",
|
||||
"hi_user": "Zdravo {name} ({email})",
|
||||
@@ -800,6 +802,7 @@
|
||||
"include_shared_albums": "Obuhvati deljene albume",
|
||||
"include_shared_partner_assets": "Obuhvati zajedničke datoteke partnera",
|
||||
"individual_share": "Individualni udeo",
|
||||
"individual_shares": "Pojedinačne akcije",
|
||||
"info": "Informacija",
|
||||
"interval": {
|
||||
"day_at_onepm": "Svaki dan u 1pm",
|
||||
@@ -822,6 +825,7 @@
|
||||
"latest_version": "Najnovija verzija",
|
||||
"latitude": "Geografska širina",
|
||||
"leave": "Napusti",
|
||||
"lens_model": "Model sočiva",
|
||||
"let_others_respond": "Dozvoli da drugi komentarišu",
|
||||
"level": "Nivo",
|
||||
"library": "Biblioteka",
|
||||
@@ -984,6 +988,7 @@
|
||||
"pick_a_location": "Odaberi lokaciju",
|
||||
"place": "Mesto",
|
||||
"places": "Mesta",
|
||||
"places_count": "{count, plural, one {{count, number} Mesto} other {{count, number} Mesta}}",
|
||||
"play": "Pokreni",
|
||||
"play_memories": "Pokreni sećanja",
|
||||
"play_motion_photo": "Pokreni pokretnu fotografiju",
|
||||
@@ -1107,12 +1112,15 @@
|
||||
"search": "Pretraga",
|
||||
"search_albums": "Pretraži albume",
|
||||
"search_by_context": "Pretražujte po kontekstu",
|
||||
"search_by_description": "Traži po opisu",
|
||||
"search_by_description_example": "Dan pešačenja u Sapi",
|
||||
"search_by_filename": "Pretražite po imenu datoteke ili ekstenziji",
|
||||
"search_by_filename_example": "npr. IMG_1234.JPG ili PNG",
|
||||
"search_camera_make": "Pretraga proizvođača kamere...",
|
||||
"search_camera_model": "Pretraži model kamere...",
|
||||
"search_city": "Pretraži grad...",
|
||||
"search_country": "Traži zemlju...",
|
||||
"search_for": "Traži",
|
||||
"search_for_existing_person": "Potražite postojeću osobu",
|
||||
"search_no_people": "Bez osoba",
|
||||
"search_no_people_named": "Nema osoba sa imenom „{name}“",
|
||||
@@ -1165,6 +1173,7 @@
|
||||
"shared_from_partner": "Slike od {partner}",
|
||||
"shared_link_options": "Opcije deljene veze",
|
||||
"shared_links": "Deljene veze",
|
||||
"shared_links_description": "Delite fotografije i video zapise pomoću linka",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# deljene fotografije i video zapise.}}",
|
||||
"shared_with_partner": "Deli se sa {partner}",
|
||||
"sharing": "Deljenje",
|
||||
@@ -1187,6 +1196,7 @@
|
||||
"show_person_options": "Prikaži opcije osobe",
|
||||
"show_progress_bar": "Prikaži traku napretka",
|
||||
"show_search_options": "Prikaži opcije pretrage",
|
||||
"show_shared_links": "Prikaži deljene veze",
|
||||
"show_slideshow_transition": "Prikaži prelaz projekcije slajdova",
|
||||
"show_supporter_badge": "Značka podrške",
|
||||
"show_supporter_badge_description": "Pokažite značku podrške",
|
||||
@@ -1274,6 +1284,7 @@
|
||||
"unfavorite": "Izbaci iz omiljenih (unfavorite)",
|
||||
"unhide_person": "Otkrij osobu",
|
||||
"unknown": "Nepoznat",
|
||||
"unknown_country": "Nepoznata zemlja",
|
||||
"unknown_year": "Nepoznata Godina",
|
||||
"unlimited": "Neograničeno",
|
||||
"unlink_motion_video": "Odveži video od slike",
|
||||
|
||||
332
i18n/sv.json
332
i18n/sv.json
@@ -20,7 +20,7 @@
|
||||
"add_partner": "Lägg till partner",
|
||||
"add_path": "Lägg till sökväg",
|
||||
"add_photos": "Lägg till foton",
|
||||
"add_to": "Lägg till...",
|
||||
"add_to": "Lägg till i...…",
|
||||
"add_to_album": "Lägg till i album",
|
||||
"add_to_shared_album": "Lägg till i delat album",
|
||||
"add_url": "Lägg till URL",
|
||||
@@ -59,7 +59,7 @@
|
||||
"external_library_management": "Hantera externa bibliotek",
|
||||
"face_detection": "Ansiktsdetektering",
|
||||
"face_detection_description": "Identifiera ansikten i foton med hjälp av maskininlärning. För videor används endast miniatyrbilden. \"Alla\" gör om sökningen för alla objekt. \"Saknade\" letar i de objekt som ännu inte sökts igenom. Alla ansikten som identifierats läggs sedan i jobbkön för ansiktsigenkänning där de mappas till nya eller befintliga personer.",
|
||||
"facial_recognition_job_description": "Gruppera upptäckta ansikten till personer. Det här steget körs efter att ansiktsigenkänning är klar. \"Alla\" (åter-) grupperar alla ansikten. \"Saknade\" köer ansikten som inte har en person tilldelad.",
|
||||
"facial_recognition_job_description": "Gruppera upptäckta ansikten till personer. Det här steget körs efter att ansiktsdetektering är klar. \"Alla\" (åter-) grupperar alla ansikten. \"Saknade\" köer ansikten som inte har en person tilldelad.",
|
||||
"failed_job_command": "Kommando {command} misslyckades för jobb: {job}",
|
||||
"force_delete_user_warning": "VARNING: Detta tar omedelbart bort användaren och alla mediafiler. Detta kan inte ångras och filerna kan inte återställas.",
|
||||
"forcing_refresh_library_files": "Tvingar uppdatering av alla biblioteksfiler",
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Återställ inställningar till standard",
|
||||
"reset_settings_to_recent_saved": "Återställ inställningar till de senaste sparade",
|
||||
"scanning_library": "Skanna bibliotek",
|
||||
"search_jobs": "Sök Jobb...",
|
||||
"search_jobs": "Sökjobb…",
|
||||
"send_welcome_email": "Skicka välkomstmail",
|
||||
"server_external_domain_settings": "Extern domän",
|
||||
"server_external_domain_settings_description": "Domän för publikt delade länkar, inklusive http(s)://",
|
||||
@@ -291,8 +291,8 @@
|
||||
"transcoding_disabled_description": "Omkoda inte videofiler, detta kan störa uppspelning på vissa klienter",
|
||||
"transcoding_encoding_options": "Kodningsval",
|
||||
"transcoding_encoding_options_description": "Välj codec, upplösning, kvalitet och andra val för kodade videor",
|
||||
"transcoding_hardware_acceleration": "Hardvaruacceleration",
|
||||
"transcoding_hardware_acceleration_description": "Forskningsmässig; betydligt snabbare men med lägre kvalitet vid samma biträtta",
|
||||
"transcoding_hardware_acceleration": "Hårdvaruacceleration",
|
||||
"transcoding_hardware_acceleration_description": "Experimentell; betydligt snabbare men med lägre kvalitet vid samma bittakt",
|
||||
"transcoding_hardware_decoding": "Hårdvaruavkodning",
|
||||
"transcoding_hardware_decoding_setting_description": "Tillämpas enbart på NVENC, QSV och RKMPP. Aktiverar end-to-end accelerering i stället för endast kodningsacceleration. Fungerar inte med alla videor.",
|
||||
"transcoding_hevc_codec": "HEVC-codec",
|
||||
@@ -362,7 +362,7 @@
|
||||
"advanced": "Avancerat",
|
||||
"age_months": "Ålder {months, plural, one {# month} other {# months}}",
|
||||
"age_year_months": "Ålder 1 år, {months, plural, one {# month} other {# months}}",
|
||||
"age_years": "{years, plural, other {Age #}}",
|
||||
"age_years": "{years, plural, other {Ålder #}}",
|
||||
"album_added": "Albumet har lagts till",
|
||||
"album_added_notification_setting_description": "Få ett e-postmeddelande när du läggs till i ett delat album",
|
||||
"album_cover_updated": "Albumomslaget uppdaterat",
|
||||
@@ -382,7 +382,7 @@
|
||||
"album_user_removed": "Tog bort {user}",
|
||||
"album_with_link_access": "Låt alla med länken se foton och personer i det här albumet.",
|
||||
"albums": "Album",
|
||||
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albums}}",
|
||||
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Album}}",
|
||||
"all": "Allt",
|
||||
"all_albums": "Alla album",
|
||||
"all_people": "Alla personer",
|
||||
@@ -402,26 +402,26 @@
|
||||
"archive_or_unarchive_photo": "Arkivera eller oarkivera fotot",
|
||||
"archive_size": "Arkivstorlek",
|
||||
"archive_size_description": "Konfigurera arkivstorleken för nedladdningar (i GiB)",
|
||||
"archived_count": "{count, plural, other {Archived #}}",
|
||||
"archived_count": "{count, plural, other {Arkiverade #}}",
|
||||
"are_these_the_same_person": "Är det samma person?",
|
||||
"are_you_sure_to_do_this": "Är du säker på att du vill göra det här?",
|
||||
"asset_added_to_album": "Lades till i album",
|
||||
"asset_adding_to_album": "Lägger till i album...",
|
||||
"asset_adding_to_album": "Lägger till i album...…",
|
||||
"asset_description_updated": "Tillgångens beskrivning har uppdaterats",
|
||||
"asset_filename_is_offline": "Tillgången {filename} är offline",
|
||||
"asset_has_unassigned_faces": "Tillgången har otilldelade ansikten",
|
||||
"asset_hashing": "Hashing...",
|
||||
"asset_hashing": "Hashing...…",
|
||||
"asset_offline": "Tillgång offline",
|
||||
"asset_offline_description": "Denna externa tillgång finns inte längre på disken. Kontakta din Immich-administratör för hjälp.",
|
||||
"asset_skipped": "Överhoppad",
|
||||
"asset_skipped_in_trash": "I papperskorgen",
|
||||
"asset_uploaded": "Uppladdad",
|
||||
"asset_uploading": "Laddar upp...",
|
||||
"asset_uploading": "Laddar upp...…",
|
||||
"assets": "Objekt",
|
||||
"assets_added_count": "La till {count, plural, one {# asset} other {# assets}}",
|
||||
"assets_added_to_album_count": "Lade till {count, plural, one {# asset} other {# assets}} i albumet",
|
||||
"assets_added_to_name_count": "Lade till {count, plural, one {# asset} other {# assets}} till {hasName, select, true {<b>{name}</b>} other {new album}}",
|
||||
"assets_count": "{count, plural, one {# asset} other {# assets}}",
|
||||
"assets_count": "{count, plural, one {# objekt} other {# objekt}}",
|
||||
"assets_moved_to_trash_count": "Flyttade {count, plural, one {# asset} other {# assets}} till papperskorgen",
|
||||
"assets_permanently_deleted_count": "Raderad permanent {count, plural, one {# asset} other {# assets}}",
|
||||
"assets_removed_count": "Tog bort {count, plural, one {# asset} other {# assets}}",
|
||||
@@ -526,6 +526,7 @@
|
||||
"deduplication_criteria_1": "Bildstorlek i bytes",
|
||||
"deduplication_criteria_2": "Räkning av EXIF-data",
|
||||
"deduplication_info": "Dedupliceringsinformation",
|
||||
"deduplication_info_description": "För att automatiskt välja filer och ta bort dubletter i bulk analyserar vi:",
|
||||
"default_locale": "Standardplats",
|
||||
"default_locale_description": "Formatera datum och siffror baserat på din webbläsares språkversion",
|
||||
"delete": "Radera",
|
||||
@@ -765,8 +766,10 @@
|
||||
"go_to_folder": "Gå till mapp",
|
||||
"go_to_search": "Gå till sök",
|
||||
"group_albums_by": "Gruppera album efter...",
|
||||
"group_country": "Gruppera per land",
|
||||
"group_no": "Ingen gruppering",
|
||||
"group_owner": "Grupper efter ägare",
|
||||
"group_places_by": "Gruppera platser efter…",
|
||||
"group_year": "Gruppera efter årtal",
|
||||
"has_quota": "Har kvot",
|
||||
"hi_user": "Hej {name} ({email})",
|
||||
@@ -799,6 +802,7 @@
|
||||
"include_shared_albums": "Inkludera delade album",
|
||||
"include_shared_partner_assets": "Inkludera delade partners tillgångar",
|
||||
"individual_share": "Enskild delning",
|
||||
"individual_shares": "Individuella delningar",
|
||||
"info": "Information",
|
||||
"interval": {
|
||||
"day_at_onepm": "Alla dagar vid kl 13.00",
|
||||
@@ -821,6 +825,7 @@
|
||||
"latest_version": "Senaste versionen",
|
||||
"latitude": "Latitud",
|
||||
"leave": "Lämna",
|
||||
"lens_model": "Objektiv",
|
||||
"let_others_respond": "Låt andra svara",
|
||||
"level": "Nivå",
|
||||
"library": "Bibliotek",
|
||||
@@ -970,8 +975,12 @@
|
||||
"permanent_deletion_warning_setting_description": "Visa en varning när tillgångar raderas permanent",
|
||||
"permanently_delete": "Radera permanent",
|
||||
"permanently_delete_assets_count": "Radera {count, plural, one {asset} other {assets}} permanent",
|
||||
"permanently_delete_assets_prompt": "Är du säker på att du permanent vill ta bort {count, plural, one {denna fil?} other{these <b>#</b> filer?}} Detta kommer också ta bort {count, plural, one {dem från } other{them from their}} album.",
|
||||
"permanently_deleted_asset": "Permanent raderad tillgång",
|
||||
"permanently_deleted_assets_count": "Permanent borttagning av {count, plural, one {# asset} other {# assets}}",
|
||||
"person": "Person",
|
||||
"person_hidden": "{name}{hidden, select, true { (dold)} other {}}",
|
||||
"photo_shared_all_users": "Du har antingen delat dina foton med alla användare eller så har du inga användare att dela dem med.",
|
||||
"photos": "Foton",
|
||||
"photos_and_videos": "Foton & videor",
|
||||
"photos_count": "{count, plural, one {{count, number} Foto} other {{count, number} Foton}}",
|
||||
@@ -979,6 +988,7 @@
|
||||
"pick_a_location": "Välj en plats",
|
||||
"place": "Plats",
|
||||
"places": "Platser",
|
||||
"places_count": "{count, plural, one {{count, number} Plats} other {{count, number} Platser}}",
|
||||
"play": "Spela upp",
|
||||
"play_memories": "Spela upp minnen",
|
||||
"play_motion_photo": "Spela upp rörligt foto",
|
||||
@@ -990,10 +1000,11 @@
|
||||
"previous_memory": "Föregående minne",
|
||||
"previous_or_next_photo": "Föregående eller nästa foto",
|
||||
"primary": "Primär",
|
||||
"privacy": "Sekretess",
|
||||
"profile_image_of_user": "{user} profilbild",
|
||||
"profile_picture_set": "Profilbild vald.",
|
||||
"public_album": "Publikt album",
|
||||
"public_share": "",
|
||||
"public_share": "Offentlig delning",
|
||||
"purchase_account_info": "Supporter",
|
||||
"purchase_activated_subtitle": "Tack för att du stödjer Immich och open source-mjukvara",
|
||||
"purchase_activated_time": "Aktiverad {date, date}",
|
||||
@@ -1016,129 +1027,232 @@
|
||||
"purchase_panel_info_1": "Att bygga Immich kräver mycket tid och engagemang och våra tekniker jobbar heltid för att göra det så bra som vi möjligt kan. Vårt mål är att open source-mjukvara och etiska affärsmetoder ska bli en hållbar inkomstkälla för utvecklare och att skapa ett ekosystem som repekterar personlig integritet med verkliga alternativ till exploaterande molntjänster.",
|
||||
"purchase_panel_info_2": "Då vi åtagit oss att inte ha betalväggar kommer detta köp inte att ge dig några utökade funktioner i Immich. Vi sätter vår tillit till användare som du som stödjer Immichs fortsatta utveckling.",
|
||||
"purchase_panel_title": "Stöd projektet",
|
||||
"purchase_per_server": "Per server",
|
||||
"purchase_per_user": "Per användare",
|
||||
"purchase_remove_product_key": "Ta bort produktnyckel",
|
||||
"purchase_remove_product_key_prompt": "Vill du verkligen ta bort produktnyckeln?",
|
||||
"purchase_remove_server_product_key": "Ta bort serverns produktnyckel",
|
||||
"purchase_remove_server_product_key_prompt": "Är du säker på att du vill ta bort serverns produktnyckel?",
|
||||
"purchase_server_description_1": "För hela servern",
|
||||
"purchase_server_description_2": "Supporterstatus",
|
||||
"purchase_server_title": "Server",
|
||||
"purchase_settings_server_activated": "Produktnyckeln för servern hanteras av administratören",
|
||||
"reaction_options": "",
|
||||
"rating": "Antal stjärnor",
|
||||
"rating_clear": "Ta bort betyg",
|
||||
"rating_count": "{count, plural, one {# stjärna} other {# stjärnor}}",
|
||||
"rating_description": "Visa EXIF betyget i informationspanelen",
|
||||
"reaction_options": "Hovringstext för knappen som visar åtgärder man kan utföra på en reaktion.",
|
||||
"read_changelog": "Läs ändringslogg",
|
||||
"recent": "",
|
||||
"recent_searches": "",
|
||||
"reassign": "Omfördela",
|
||||
"reassigned_assets_to_existing_person": "Tilldelade om {count, plural, one {# objekt} other {# objekt}} till {name, select, null {an existing person} other {{name}}}",
|
||||
"reassigned_assets_to_new_person": "Tilldelade om {count, plural, one {# objekt} other {# objekt}} till en ny persson",
|
||||
"reassing_hint": "Tilldela valda tillgångar till en befintlig person",
|
||||
"recent": "Nyligen",
|
||||
"recent-albums": "Senaste album",
|
||||
"recent_searches": "Senaste sökningar",
|
||||
"refresh": "Ladda om",
|
||||
"refresh_encoded_videos": "Ladda om kodade videor",
|
||||
"refresh_faces": "Ladda om ansikten",
|
||||
"refresh_metadata": "Ladda om metadata",
|
||||
"refresh_thumbnails": "Uppdatera miniatyrer",
|
||||
"refreshed": "Omladdad",
|
||||
"refreshes_every_file": "Läser in alla existerande och nya filer på nytt",
|
||||
"refreshing_encoded_video": "Återladdar kodad video",
|
||||
"refreshing_faces": "Återladdar ansikten",
|
||||
"refreshing_metadata": "Återladdar metadata",
|
||||
"regenerating_thumbnails": "Uppdaterar miniatyrer",
|
||||
"remove": "Ta bort",
|
||||
"remove_assets_album_confirmation": "Är du säker på att du vill ta bort {count, plural, one {# asset} other {# assets}} från albumet?",
|
||||
"remove_assets_shared_link_confirmation": "Är du säker på att du vill ta bort {count, plural, one {# asset} other {# assets}} från denna delade länk?",
|
||||
"remove_assets_title": "Ta bort filer?",
|
||||
"remove_deleted_assets": "",
|
||||
"remove_custom_date_range": "Ta bort anpassat datumintervall",
|
||||
"remove_deleted_assets": "Ta bort borttagna tillgångar",
|
||||
"remove_from_album": "Ta bort från album",
|
||||
"remove_from_favorites": "",
|
||||
"remove_from_shared_link": "",
|
||||
"repair": "",
|
||||
"repair_no_results_message": "",
|
||||
"replace_with_upload": "",
|
||||
"require_password": "",
|
||||
"reset": "",
|
||||
"reset_password": "",
|
||||
"reset_people_visibility": "",
|
||||
"remove_from_favorites": "Ta bort från favoriter",
|
||||
"remove_from_shared_link": "Ta bort från delad länk",
|
||||
"remove_url": "Ta bort URL",
|
||||
"remove_user": "Ta bort användare",
|
||||
"removed_api_key": "Tog bort API nyckel: {name}",
|
||||
"removed_from_archive": "Borttagen från arkivet",
|
||||
"removed_from_favorites": "Borttagen från favoriter",
|
||||
"removed_from_favorites_count": "{count, plural, other {Tog bort #}} från favoriter",
|
||||
"removed_tagged_assets": "Tog bort tagg från {count, plural, one {# objekt} other {# objekt}}",
|
||||
"rename": "Döp om",
|
||||
"repair": "Reparera",
|
||||
"repair_no_results_message": "Ospårade och saknade filer kommer att dyka upp här",
|
||||
"replace_with_upload": "Ersätt med uppladdning",
|
||||
"repository": "Förvar",
|
||||
"require_password": "Kräver lösenord",
|
||||
"require_user_to_change_password_on_first_login": "Kräv att användaren ändrar lösenord vid första inloggning",
|
||||
"reset": "Återställ",
|
||||
"reset_password": "Nollställ lösenord",
|
||||
"reset_people_visibility": "Återställ personers synlighet",
|
||||
"reset_to_default": "Återställ till standard",
|
||||
"resolve_duplicates": "Lös dubletter",
|
||||
"resolved_all_duplicates": "Lös alla dubletter",
|
||||
"restore": "Återställ",
|
||||
"restore_user": "",
|
||||
"retry_upload": "",
|
||||
"restore_all": "Återställ alla",
|
||||
"restore_user": "Återställ användare",
|
||||
"restored_asset": "Återställ tillgång",
|
||||
"resume": "Återuppta",
|
||||
"retry_upload": "Ladda upp igen",
|
||||
"review_duplicates": "Granska dubbletter",
|
||||
"role": "",
|
||||
"role": "Roll",
|
||||
"role_editor": "Redigerare",
|
||||
"role_viewer": "Visare",
|
||||
"save": "Spara",
|
||||
"saved_profile": "",
|
||||
"saved_settings": "",
|
||||
"saved_api_key": "Sparad API-nyckel",
|
||||
"saved_profile": "Sparade profil",
|
||||
"saved_settings": "Sparade inställningar",
|
||||
"say_something": "Säg något",
|
||||
"scan_all_libraries": "Skanna alla bibliotek",
|
||||
"scan_settings": "",
|
||||
"scan_library": "Skanna",
|
||||
"scan_settings": "Skanningsinställningar",
|
||||
"scanning_for_album": "Söker efter album...",
|
||||
"search": "Sök",
|
||||
"search_albums": "",
|
||||
"search_albums": "Sök album",
|
||||
"search_by_context": "Sök efter sammanhang",
|
||||
"search_camera_make": "",
|
||||
"search_camera_model": "",
|
||||
"search_city": "",
|
||||
"search_country": "",
|
||||
"search_for_existing_person": "",
|
||||
"search_people": "",
|
||||
"search_places": "",
|
||||
"search_state": "",
|
||||
"search_timezone": "",
|
||||
"search_by_description": "Sök via beskrivning",
|
||||
"search_by_description_example": "Vandringsdag i Sapa",
|
||||
"search_by_filename": "Sök efter filnamn eller filändelse",
|
||||
"search_by_filename_example": "t.ex. IMG_1234.JPG eller PNG",
|
||||
"search_camera_make": "Sök efter kameratillverkare...",
|
||||
"search_camera_model": "Sök efter kameramodell...",
|
||||
"search_city": "Sök efter stad...",
|
||||
"search_country": "Sök efter land...",
|
||||
"search_for": "Sök efter",
|
||||
"search_for_existing_person": "Sök efter befintlig person",
|
||||
"search_no_people": "Inga personer",
|
||||
"search_no_people_named": "Inga personer med namnet \"{name}\"",
|
||||
"search_options": "Sökinställningar",
|
||||
"search_people": "Sök personer",
|
||||
"search_places": "Sök platser",
|
||||
"search_settings": "Sök inställningar",
|
||||
"search_state": "Sök stat...",
|
||||
"search_tags": "Sök taggar...",
|
||||
"search_timezone": "Sök tidszon...",
|
||||
"search_type": "Söktyp",
|
||||
"search_your_photos": "Sök bland dina foton",
|
||||
"searching_locales": "",
|
||||
"second": "",
|
||||
"searching_locales": "Söker efter språk...",
|
||||
"second": "Sekund",
|
||||
"see_all_people": "Se alla personer",
|
||||
"select_album_cover": "",
|
||||
"select_all": "",
|
||||
"select_avatar_color": "",
|
||||
"select_face": "",
|
||||
"select_featured_photo": "",
|
||||
"select_library_owner": "",
|
||||
"select_new_face": "",
|
||||
"select_album_cover": "Välj albumomslag",
|
||||
"select_all": "Välj alla",
|
||||
"select_all_duplicates": "Välj alla dubletter",
|
||||
"select_avatar_color": "Välj färg för avatar",
|
||||
"select_face": "Välj person",
|
||||
"select_featured_photo": "Välj utvald bild",
|
||||
"select_from_computer": "Välj från datorn",
|
||||
"select_keep_all": "Spara alla",
|
||||
"select_library_owner": "Välj biblioteksägare",
|
||||
"select_new_face": "Välj nytt ansikte",
|
||||
"select_photos": "Välj foton",
|
||||
"selected": "",
|
||||
"send_message": "",
|
||||
"select_trash_all": "Släng alla",
|
||||
"selected": "Valda",
|
||||
"selected_count": "{count, plural, other {# selected}}",
|
||||
"send_message": "Skicka meddelande",
|
||||
"send_welcome_email": "Skicka välkomstmejl",
|
||||
"server_offline": "Servern offline",
|
||||
"server_online": "Server online",
|
||||
"server_stats": "Serverstatistik",
|
||||
"set": "",
|
||||
"set_as_album_cover": "",
|
||||
"server_version": "Serverversion",
|
||||
"set": "Välj",
|
||||
"set_as_album_cover": "Ange som albumomslag",
|
||||
"set_as_featured_photo": "Ställ in som utvalt foto",
|
||||
"set_as_profile_picture": "Ange som profilbild",
|
||||
"set_date_of_birth": "",
|
||||
"set_profile_picture": "",
|
||||
"set_slideshow_to_fullscreen": "",
|
||||
"set_date_of_birth": "Ange födelsedatum",
|
||||
"set_profile_picture": "Ange som profilbild",
|
||||
"set_slideshow_to_fullscreen": "Ställ in bildspel på helskärm",
|
||||
"settings": "Inställningar",
|
||||
"settings_saved": "",
|
||||
"settings_saved": "Inställningar sparade",
|
||||
"share": "Dela",
|
||||
"shared": "Delad",
|
||||
"shared_by": "",
|
||||
"shared_by_you": "",
|
||||
"shared_by": "Delad av",
|
||||
"shared_by_user": "Delad av {user}",
|
||||
"shared_by_you": "Delad av dig",
|
||||
"shared_from_partner": "Foton från {partner}",
|
||||
"shared_link_options": "Alternativ för delad länk",
|
||||
"shared_links": "Delade Länkar",
|
||||
"shared_links_description": "Dela foton och videor med en länk",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# delade foton och videor.}}",
|
||||
"shared_with_partner": "Delad med {partner}",
|
||||
"sharing": "Delning",
|
||||
"sharing_sidebar_description": "",
|
||||
"show_album_options": "",
|
||||
"show_file_location": "",
|
||||
"show_gallery": "",
|
||||
"show_hidden_people": "",
|
||||
"show_in_timeline": "",
|
||||
"show_in_timeline_setting_description": "",
|
||||
"show_keyboard_shortcuts": "",
|
||||
"sharing_enter_password": "Ange lösenord för att visa denna sidan.",
|
||||
"sharing_sidebar_description": "Visa en länk till Delning i sidopanelen",
|
||||
"shift_to_permanent_delete": "tryck på ⇧ för att permanent radera tillgången",
|
||||
"show_album_options": "Visa albumalternativ",
|
||||
"show_albums": "Visa album",
|
||||
"show_all_people": "Visa alla personer",
|
||||
"show_and_hide_people": "Visa & göm personer",
|
||||
"show_file_location": "Visa sökväg",
|
||||
"show_gallery": "Visa galleri",
|
||||
"show_hidden_people": "Visa gömda personer",
|
||||
"show_in_timeline": "Visa på tidslinje",
|
||||
"show_in_timeline_setting_description": "Visa foton och videor från denna användaren på din tidslinje",
|
||||
"show_keyboard_shortcuts": "Visa kortkommandon",
|
||||
"show_metadata": "Visa metadata",
|
||||
"show_or_hide_info": "",
|
||||
"show_password": "",
|
||||
"show_person_options": "",
|
||||
"show_progress_bar": "",
|
||||
"show_search_options": "",
|
||||
"shuffle": "",
|
||||
"show_or_hide_info": "Visa eller göm information",
|
||||
"show_password": "Visa lösenord",
|
||||
"show_person_options": "Visa alternativ för person",
|
||||
"show_progress_bar": "Visa förloppsindikator",
|
||||
"show_search_options": "Visa sökalternativ",
|
||||
"show_shared_links": "Visa delade länkar",
|
||||
"show_slideshow_transition": "Visa bildspelsövergång",
|
||||
"show_supporter_badge": "Supporteremblem",
|
||||
"show_supporter_badge_description": "Visa supporteremblem",
|
||||
"shuffle": "Blanda",
|
||||
"sidebar": "Sidopanel",
|
||||
"sidebar_display_description": "Visa en länk till vyn i sidofältet",
|
||||
"sign_out": "Logga ut",
|
||||
"sign_up": "",
|
||||
"size": "",
|
||||
"skip_to_content": "",
|
||||
"slideshow": "",
|
||||
"slideshow_settings": "",
|
||||
"sort_albums_by": "",
|
||||
"sign_up": "Registrera dig",
|
||||
"size": "Storlek",
|
||||
"skip_to_content": "Hoppa till innehåll",
|
||||
"skip_to_folders": "Hoppa till mapp",
|
||||
"skip_to_tags": "Hoppa till taggar",
|
||||
"slideshow": "Bildspel",
|
||||
"slideshow_settings": "Bildspelsinställningar",
|
||||
"sort_albums_by": "Sortera album efter...",
|
||||
"sort_created": "Skapat datum",
|
||||
"sort_items": "Antal artiklar",
|
||||
"sort_modified": "Datum ändrat",
|
||||
"sort_oldest": "Äldsta foto",
|
||||
"sort_people_by_similarity": "Sortera människor efter likhet",
|
||||
"sort_recent": "Senaste fotot",
|
||||
"sort_title": "Rubrik",
|
||||
"source": "Källa",
|
||||
"stack": "Stapel",
|
||||
"stack_selected_photos": "",
|
||||
"stacktrace": "",
|
||||
"stack_duplicates": "Stapla dubletter",
|
||||
"stack_select_one_photo": "Välj ett huvudfoto för stapeln",
|
||||
"stack_selected_photos": "Stapla valda foton",
|
||||
"stacked_assets_count": "Staplade {count, plural, one {# asset} other {# assets}}",
|
||||
"stacktrace": "Stapelspårning",
|
||||
"start": "Starta",
|
||||
"start_date": "Startdatum",
|
||||
"state": "Stat",
|
||||
"status": "Status",
|
||||
"stop_motion_photo": "",
|
||||
"stop_motion_photo": "Stanna rörligt foto",
|
||||
"stop_photo_sharing": "Sluta dela dina foton?",
|
||||
"stop_photo_sharing_description": "{partner} kommer inte länga ha tillgång till dina foton.",
|
||||
"stop_sharing_photos_with_user": "Sluta dela dina bilder med denna användaren",
|
||||
"storage": "Lagring",
|
||||
"storage_label": "",
|
||||
"storage_label": "Förvaringsetikett",
|
||||
"storage_usage": "{used} av {available} används",
|
||||
"submit": "",
|
||||
"submit": "Skicka",
|
||||
"suggestions": "Förslag",
|
||||
"sunrise_on_the_beach": "Soluppgång på stranden",
|
||||
"swap_merge_direction": "",
|
||||
"support": "Support",
|
||||
"support_and_feedback": "Support & Feedback",
|
||||
"support_third_party_description": "Din Immich-installation paketerades av en tredje part. Problem som du upplever kan orsakas av det paketet, så vänligen ta upp problem med dem i första hand med hjälp av länkarna nedan.",
|
||||
"swap_merge_direction": "Byt sammanfogningsriktning",
|
||||
"sync": "Synka",
|
||||
"tag": "Tagg",
|
||||
"tag_assets": "Tagga tillgångar",
|
||||
"tag_created": "Skapade tagg: {tag}",
|
||||
"tag_feature_description": "Bläddra bland foton och videor grupperade efter logiska taggar",
|
||||
"tag_not_found_question": "Kan du inte hitta en tagg? <link>Skapa en ny tagg.</link>",
|
||||
"tag_updated": "Uppdaterade tagg: {tag}",
|
||||
"tagged_assets": "Taggade {count, plural, one {# objekt} other {# objekt}}",
|
||||
"tags": "Taggar",
|
||||
"template": "Mall",
|
||||
"theme": "Tema",
|
||||
"theme_selection": "Val av tema",
|
||||
@@ -1146,44 +1260,67 @@
|
||||
"they_will_be_merged_together": "De kommer att slås samman",
|
||||
"third_party_resources": "Tredjepartsresurser",
|
||||
"time_based_memories": "Tidsbaserade minnen",
|
||||
"timeline": "Tidslinje",
|
||||
"timezone": "Tidszon",
|
||||
"to_archive": "Arkivera",
|
||||
"to_change_password": "Ändra lösenord",
|
||||
"to_favorite": "Favorit",
|
||||
"to_login": "Logga in",
|
||||
"to_parent": "Gå till förälder",
|
||||
"to_trash": "Papperskorg",
|
||||
"toggle_settings": "",
|
||||
"toggle_settings": "Växla inställningar",
|
||||
"toggle_theme": "Växla tema",
|
||||
"total": "Total",
|
||||
"total_usage": "Total användning",
|
||||
"trash": "Papperskorg",
|
||||
"trash_all": "Kasta alla",
|
||||
"trash_count": "Papperskorg {count, number}",
|
||||
"trash_delete_asset": "Papperskorgen/Ta bort tillgång",
|
||||
"trash_no_results_message": "Borttagna foton och videor kommer att visas här.",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Objekt i papperskorgen raderas permanent efter {days, plural, one {# dag} other {# dagar}}.",
|
||||
"type": "Typ",
|
||||
"unarchive": "Ångra arkivering",
|
||||
"unarchived_count": "{count, plural, other {Unarchived #}}",
|
||||
"unfavorite": "Avfavorisera",
|
||||
"unhide_person": "",
|
||||
"unhide_person": "Visa person",
|
||||
"unknown": "Okänd",
|
||||
"unknown_country": "Okänt Land",
|
||||
"unknown_year": "Okänt år",
|
||||
"unlimited": "Obegränsat",
|
||||
"unlink_motion_video": "Ta bort länken till rörlig video",
|
||||
"unlink_oauth": "Ta bort länken till OAuth",
|
||||
"unlinked_oauth_account": "",
|
||||
"unlinked_oauth_account": "Olänkat OAuth-konto",
|
||||
"unnamed_album": "Namnlöst Album",
|
||||
"unnamed_album_delete_confirmation": "Är du säker på att du vill ta bort detta album?",
|
||||
"unnamed_share": "Namnlös delning",
|
||||
"unsaved_change": "Osparade ändringar",
|
||||
"unselect_all": "",
|
||||
"unselect_all": "Avmarkera alla",
|
||||
"unselect_all_duplicates": "Avmarkera alla dubletter",
|
||||
"unstack": "Stapla Av",
|
||||
"unstacked_assets_count": "Avstaplade {count, plural, one {# asset} other {# assets}}",
|
||||
"untracked_files": "Ospårade filer",
|
||||
"untracked_files_decription": "Dessa filer spåras inte av applikationen. Det kan bero på misslyckad flytt, avbruten uppladdning eller att de lämnats kvar på grund av en bugg",
|
||||
"up_next": "Nästa",
|
||||
"updated_password": "Lösenordet har uppdaterats",
|
||||
"upload": "Ladda upp",
|
||||
"upload_concurrency": "",
|
||||
"upload_concurrency": "Uppladdning samtidighet",
|
||||
"upload_errors": "Uppladdning klar med {count, plural, one {# fel} other {# fel}}, ladda om sidan för att se nya objekt.",
|
||||
"upload_progress": "Återstående {remaining, number} - Bearbetade {processed, number}/{total, number}",
|
||||
"upload_skipped_duplicates": "Hoppade över {count, plural, one {# dublett} other {# dubletter}}",
|
||||
"upload_status_duplicates": "Dubbletter",
|
||||
"upload_status_errors": "Fel",
|
||||
"upload_status_uploaded": "Uppladdad",
|
||||
"upload_success": "Uppladdning lyckades, ladda om sidan för att se nya objekt.",
|
||||
"url": "URL",
|
||||
"usage": "Användning",
|
||||
"use_custom_date_range": "Använd anpassat datumintervall istället",
|
||||
"user": "Användare",
|
||||
"user_id": "Användar-ID",
|
||||
"user_liked": "{user} gillade {type, select, photo {detta fotot} video {denna filmen} asset {detta objekt} other {detta}}",
|
||||
"user_purchase_settings": "Köp",
|
||||
"user_purchase_settings_description": "Hantera dina köp",
|
||||
"user_usage_detail": "",
|
||||
"user_role_set": "Sätt {user} som {role}",
|
||||
"user_usage_detail": "Användaranvändningsdetaljer",
|
||||
"user_usage_stats": "Kontoinformation - statistik",
|
||||
"user_usage_stats_description": "Se statistik - kontoanvändande",
|
||||
"username": "Användarnamn",
|
||||
@@ -1193,8 +1330,12 @@
|
||||
"variables": "Variabler",
|
||||
"version": "Version",
|
||||
"version_announcement_closing": "Din vän, Alex",
|
||||
"version_announcement_message": "Hej där! En ny version av Immich är tillgänglig. Ta dig tid att läsa <link> versionsfakta </link> för att säkerställa att dina inställningar är uppdaterade för att förhindra eventuella felkonfigurationer, särskilt om du använder WatchTower eller någon mekanism som hanterar uppdatering av din Immich instans automatiskt.",
|
||||
"version_history": "Versionshistorik",
|
||||
"version_history_item": "Version {version} installerad {date}",
|
||||
"video": "Video",
|
||||
"video_hover_setting_description": "",
|
||||
"video_hover_setting": "Spela upp videotumnagel när muspekaren är över den",
|
||||
"video_hover_setting_description": "Spela upp videotumnagel när muspekaren är över den. Även när den är deaktiverad kan uppspelning startas när muspekaren är över play-ikonen.",
|
||||
"videos": "Videor",
|
||||
"videos_count": "{count, plural, one {# Video} other {# Videor}}",
|
||||
"view": "Visa",
|
||||
@@ -1203,8 +1344,11 @@
|
||||
"view_all_users": "Visa alla användare",
|
||||
"view_in_timeline": "Visa i tidslinjen",
|
||||
"view_links": "Visa länkar",
|
||||
"view_name": "Visa",
|
||||
"view_next_asset": "Visa nästa objekt",
|
||||
"view_previous_asset": "Visa föregående objekt",
|
||||
"view_stack": "Visa Stapel",
|
||||
"visibility_changed": "Synlighet ändrad för {count, plural, one {# person} other {# personer}}",
|
||||
"waiting": "Väntar",
|
||||
"warning": "Varning",
|
||||
"week": "Vecka",
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
"add_to": "జోడించండి...",
|
||||
"add_to_album": "ఆల్బమ్కు జోడించండి",
|
||||
"add_to_shared_album": "భాగస్వామ్య ఆల్బమ్కు జోడించండి",
|
||||
"add_url": "URLని జోడించండి",
|
||||
"added_to_archive": "ఆర్కైవ్కి జోడించబడింది",
|
||||
"added_to_favorites": "ఇష్టమైన వాటికి జోడించబడింది",
|
||||
"added_to_favorites_count": "ఇష్టమైన వాటికి {count, number} జోడించబడింది",
|
||||
@@ -213,6 +214,7 @@
|
||||
"notifications": "నోటిఫికేషన్లు",
|
||||
"notifications_setting_description": "నోటిఫికేషన్లను నిర్వహించండి",
|
||||
"oauth": "OAuth",
|
||||
"search_by_description": "వివరణ ద్వారా శోధించండి",
|
||||
"unsaved_change": "సేవ్ చేయని మార్పు",
|
||||
"unselect_all": "ఎంచుకున్నవన్నీ తొలగించు",
|
||||
"unselect_all_duplicates": "అన్ని నకిలీల ఎంపికను తీసివేయండి",
|
||||
|
||||
671
i18n/th.json
671
i18n/th.json
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user