mirror of
https://github.com/immich-app/immich.git
synced 2026-03-01 11:20:12 +03:00
Compare commits
134 Commits
v2.5.6
...
feat/crawl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4a213f3d81 | ||
|
|
5ead92bb12 | ||
|
|
a1839b3676 | ||
|
|
ee2c3e14c3 | ||
|
|
7461479f60 | ||
|
|
01050a3d54 | ||
|
|
e8bedfdb7a | ||
|
|
7b4cabc2c6 | ||
|
|
5c7c07a09f | ||
|
|
e6ac48f4b5 | ||
|
|
3d4dec0cca | ||
|
|
1d11106dd0 | ||
|
|
8eec3c810e | ||
|
|
a43680c8b1 | ||
|
|
b2a510efee | ||
|
|
a0077a0f51 | ||
|
|
aa02310d63 | ||
|
|
7394fa1491 | ||
|
|
99f7eb4ce6 | ||
|
|
ffd54d0431 | ||
|
|
7005e9fc50 | ||
|
|
4f2e6e3f15 | ||
|
|
8b5fc3d8bc | ||
|
|
0fa385c465 | ||
|
|
db4e7abf6d | ||
|
|
dadd20acfc | ||
|
|
f04efbb714 | ||
|
|
208c07af1f | ||
|
|
72a5ccaa53 | ||
|
|
fd0338f89c | ||
|
|
d0ed76dc37 | ||
|
|
e0bb5f70ec | ||
|
|
f965daa8d2 | ||
|
|
316f86d25e | ||
|
|
e520fc3b63 | ||
|
|
b3b9834c00 | ||
|
|
84f7fb63ee | ||
|
|
1f8359ead4 | ||
|
|
ea30c9d2ba | ||
|
|
d1abdea420 | ||
|
|
ae8dad68fc | ||
|
|
f812c5846a | ||
|
|
227ff70b6e | ||
|
|
ee7ac09450 | ||
|
|
2e59dbdc12 | ||
|
|
c4c7f94317 | ||
|
|
d004d7e21b | ||
|
|
5f95aab437 | ||
|
|
dd632f38de | ||
|
|
6f7fc94710 | ||
|
|
85cb515cae | ||
|
|
65e1bb83b7 | ||
|
|
d9b1b69827 | ||
|
|
b2050583f5 | ||
|
|
1bdc24c730 | ||
|
|
5adb75c272 | ||
|
|
8f9ea6a171 | ||
|
|
3f41916ad7 | ||
|
|
5c6433b4ca | ||
|
|
06d487782e | ||
|
|
455afbb119 | ||
|
|
0767ae0c8a | ||
|
|
a16a00ebd4 | ||
|
|
398b750ef7 | ||
|
|
18bbb5b4db | ||
|
|
b3c37905f7 | ||
|
|
90ef6c4e28 | ||
|
|
ceef65154d | ||
|
|
de7b42eb23 | ||
|
|
75bdd6a644 | ||
|
|
0da74569f2 | ||
|
|
cc9c261fd0 | ||
|
|
4dccc2082b | ||
|
|
9211013996 | ||
|
|
156e3479fa | ||
|
|
19ef196150 | ||
|
|
d2682f160e | ||
|
|
c9dd8e0a79 | ||
|
|
f6e10afe2b | ||
|
|
5f87047490 | ||
|
|
75e3b0467a | ||
|
|
df4c25e567 | ||
|
|
3f93169301 | ||
|
|
ff7dca35f5 | ||
|
|
49ba833e4c | ||
|
|
9ab887d5d2 | ||
|
|
d264e78d3f | ||
|
|
2c9d69865c | ||
|
|
72cefcabaf | ||
|
|
8937fe0133 | ||
|
|
2fb9f84b56 | ||
|
|
434ded92f5 | ||
|
|
bc7a1c838c | ||
|
|
7cb355279e | ||
|
|
ecb09501a5 | ||
|
|
34eb2e1410 | ||
|
|
2d6580acd8 | ||
|
|
9aa3fe82c1 | ||
|
|
66733eb4c0 | ||
|
|
e5156df4f1 | ||
|
|
8ef4e4d452 | ||
|
|
7413356a2f | ||
|
|
5bf4e9595c | ||
|
|
6c0c4b3dda | ||
|
|
206a208410 | ||
|
|
72cef8b94b | ||
|
|
81c93101a0 | ||
|
|
b06c21325e | ||
|
|
730b770e67 | ||
|
|
b85f6f3fce | ||
|
|
81f592ca52 | ||
|
|
a62e8ed179 | ||
|
|
1cf3a80840 | ||
|
|
9f6dbf710c | ||
|
|
f207f99e86 | ||
|
|
0d35231dfd | ||
|
|
675bbf3ac3 | ||
|
|
c45450b6ac | ||
|
|
fea6e8d9f3 | ||
|
|
27ebbab1d9 | ||
|
|
4647ecf2ea | ||
|
|
78c8f1d5a9 | ||
|
|
ec4de54ea2 | ||
|
|
420cd5193b | ||
|
|
7e0356e227 | ||
|
|
0a055d0fc7 | ||
|
|
334ebbfe7d | ||
|
|
913904f418 | ||
|
|
e54678e0d6 | ||
|
|
222c90b7b7 | ||
|
|
57dd127162 | ||
|
|
1c1a000c78 | ||
|
|
458d5f0f8f | ||
|
|
4c948647fc |
2
.github/.nvmrc
vendored
2
.github/.nvmrc
vendored
@@ -1 +1 @@
|
||||
24.13.0
|
||||
24.13.1
|
||||
|
||||
1
.github/pull_request_template.md
vendored
1
.github/pull_request_template.md
vendored
@@ -26,6 +26,7 @@ The `/api/something` endpoint is now `/api/something-else`
|
||||
|
||||
## Checklist:
|
||||
|
||||
- [ ] I have carefully read CONTRIBUTING.md
|
||||
- [ ] 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.
|
||||
|
||||
16
.github/workflows/build-mobile.yml
vendored
16
.github/workflows/build-mobile.yml
vendored
@@ -51,14 +51,14 @@ jobs:
|
||||
should_run: ${{ steps.check.outputs.should_run }}
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Check what should run
|
||||
id: check
|
||||
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
|
||||
uses: immich-app/devtools/actions/pre-job@eed0f8b8165ffcb951f2ba854b2dd031935e1d73 # pre-job-action-v2.0.2
|
||||
with:
|
||||
github-token: ${{ steps.token.outputs.token }}
|
||||
filters: |
|
||||
@@ -79,12 +79,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
ref: ${{ inputs.ref || github.sha }}
|
||||
persist-credentials: false
|
||||
@@ -96,14 +96,14 @@ jobs:
|
||||
working-directory: ./mobile
|
||||
run: printf "%s" $KEY_JKS | base64 -d > android/key.jks
|
||||
|
||||
- uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5.1.0
|
||||
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
java-version: '17'
|
||||
|
||||
- name: Restore Gradle Cache
|
||||
id: cache-gradle-restore
|
||||
uses: actions/cache/restore@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
|
||||
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
@@ -160,7 +160,7 @@ jobs:
|
||||
|
||||
- name: Save Gradle Cache
|
||||
id: cache-gradle-save
|
||||
uses: actions/cache/save@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
|
||||
uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
|
||||
if: github.ref == 'refs/heads/main'
|
||||
with:
|
||||
path: |
|
||||
@@ -185,7 +185,7 @@ jobs:
|
||||
run: sudo xcode-select -s /Applications/Xcode_26.2.app/Contents/Developer
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
with:
|
||||
ref: ${{ inputs.ref || github.sha }}
|
||||
persist-credentials: false
|
||||
|
||||
4
.github/workflows/cache-cleanup.yml
vendored
4
.github/workflows/cache-cleanup.yml
vendored
@@ -19,13 +19,13 @@ jobs:
|
||||
actions: write
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Check out code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
|
||||
32
.github/workflows/check-openapi.yml
vendored
Normal file
32
.github/workflows/check-openapi.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
name: Check OpenAPI
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'open-api/**'
|
||||
- '.github/workflows/check-openapi.yml'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
check-openapi:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Check for breaking API changes
|
||||
# sha is pinning to a commit instead of a tag since the action does not tag versions
|
||||
uses: oasdiff/oasdiff-action/breaking@ccb863950ce437a50f8f1a40d2a1112117e06ce4
|
||||
with:
|
||||
base: https://raw.githubusercontent.com/${{ github.repository }}/main/open-api/immich-openapi-specs.json
|
||||
revision: open-api/immich-openapi-specs.json
|
||||
fail-on: ERR
|
||||
14
.github/workflows/cli.yml
vendored
14
.github/workflows/cli.yml
vendored
@@ -31,12 +31,12 @@ jobs:
|
||||
working-directory: ./cli
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
@@ -45,7 +45,7 @@ jobs:
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './cli/.nvmrc'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
@@ -71,13 +71,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
@@ -89,7 +89,7 @@ jobs:
|
||||
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
if: ${{ !github.event.pull_request.head.repo.fork }}
|
||||
with:
|
||||
registry: ghcr.io
|
||||
@@ -115,7 +115,7 @@ jobs:
|
||||
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
|
||||
|
||||
- name: Build and push image
|
||||
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
||||
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
|
||||
with:
|
||||
file: cli/Dockerfile
|
||||
platforms: linux/amd64,linux/arm64
|
||||
|
||||
2
.github/workflows/close-duplicates.yml
vendored
2
.github/workflows/close-duplicates.yml
vendored
@@ -35,7 +35,7 @@ jobs:
|
||||
needs: [get_body, should_run]
|
||||
if: ${{ needs.should_run.outputs.should_run == 'true' }}
|
||||
container:
|
||||
image: ghcr.io/immich-app/mdq:main@sha256:ab9f163cd5d5cec42704a26ca2769ecf3f10aa8e7bae847f1d527cdf075946e6
|
||||
image: ghcr.io/immich-app/mdq:main@sha256:4f9860d04c88f7f87861f8ee84bfeedaec15ed7ca5ca87bc7db44b036f81645f
|
||||
outputs:
|
||||
checked: ${{ steps.get_checkbox.outputs.checked }}
|
||||
steps:
|
||||
|
||||
38
.github/workflows/close-llm-pr.yml
vendored
Normal file
38
.github/workflows/close-llm-pr.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
name: Close LLM-generated PRs
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [labeled]
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
comment_and_close:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.label.name == 'llm-generated' }}
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Comment and close
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
NODE_ID: ${{ github.event.pull_request.node_id }}
|
||||
run: |
|
||||
gh api graphql \
|
||||
-f prId="$NODE_ID" \
|
||||
-f body="Thank you for your interest in contributing to Immich! Unfortunately this PR looks like it was generated using an LLM. As noted in our [CONTRIBUTING.md](https://github.com/immich-app/immich/blob/main/CONTRIBUTING.md#use-of-generative-ai), we request that you don't use LLMs to generate PRs as those are not a good use of maintainer time." \
|
||||
-f query='
|
||||
mutation CommentAndClosePR($prId: ID!, $body: String!) {
|
||||
addComment(input: {
|
||||
subjectId: $prId,
|
||||
body: $body
|
||||
}) {
|
||||
__typename
|
||||
}
|
||||
|
||||
closePullRequest(input: {
|
||||
pullRequestId: $prId
|
||||
}) {
|
||||
__typename
|
||||
}
|
||||
}'
|
||||
10
.github/workflows/codeql-analysis.yml
vendored
10
.github/workflows/codeql-analysis.yml
vendored
@@ -44,20 +44,20 @@ jobs:
|
||||
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
|
||||
uses: github/codeql-action/init@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
|
||||
uses: github/codeql-action/autobuild@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||
@@ -83,6 +83,6 @@ jobs:
|
||||
# ./location_of_script_within_repo/buildscript.sh
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
|
||||
uses: github/codeql-action/analyze@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
|
||||
with:
|
||||
category: '/language:${{matrix.language}}'
|
||||
|
||||
12
.github/workflows/docker.yml
vendored
12
.github/workflows/docker.yml
vendored
@@ -23,14 +23,14 @@ jobs:
|
||||
should_run: ${{ steps.check.outputs.should_run }}
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Check what should run
|
||||
id: check
|
||||
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
|
||||
uses: immich-app/devtools/actions/pre-job@eed0f8b8165ffcb951f2ba854b2dd031935e1d73 # pre-job-action-v2.0.2
|
||||
with:
|
||||
github-token: ${{ steps.token.outputs.token }}
|
||||
filters: |
|
||||
@@ -60,7 +60,7 @@ jobs:
|
||||
suffix: ['', '-cuda', '-rocm', '-openvino', '-armnn', '-rknn']
|
||||
steps:
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
@@ -90,7 +90,7 @@ jobs:
|
||||
suffix: ['']
|
||||
steps:
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
@@ -132,7 +132,7 @@ jobs:
|
||||
suffixes: '-rocm'
|
||||
platforms: linux/amd64
|
||||
runner-mapping: '{"linux/amd64": "pokedex-giant"}'
|
||||
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@0477486d82313fba68f7c82c034120a4b8981297 # multi-runner-build-workflow-v2.1.0
|
||||
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@bd49ed7a5a6022149f79b6564df48177476a822b # multi-runner-build-workflow-v2.2.1
|
||||
permissions:
|
||||
contents: read
|
||||
actions: read
|
||||
@@ -155,7 +155,7 @@ jobs:
|
||||
name: Build and Push Server
|
||||
needs: pre-job
|
||||
if: ${{ fromJSON(needs.pre-job.outputs.should_run).server == true }}
|
||||
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@0477486d82313fba68f7c82c034120a4b8981297 # multi-runner-build-workflow-v2.1.0
|
||||
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@bd49ed7a5a6022149f79b6564df48177476a822b # multi-runner-build-workflow-v2.2.1
|
||||
permissions:
|
||||
contents: read
|
||||
actions: read
|
||||
|
||||
10
.github/workflows/docs-build.yml
vendored
10
.github/workflows/docs-build.yml
vendored
@@ -21,14 +21,14 @@ jobs:
|
||||
should_run: ${{ steps.check.outputs.should_run }}
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Check what should run
|
||||
id: check
|
||||
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
|
||||
uses: immich-app/devtools/actions/pre-job@eed0f8b8165ffcb951f2ba854b2dd031935e1d73 # pre-job-action-v2.0.2
|
||||
with:
|
||||
github-token: ${{ steps.token.outputs.token }}
|
||||
filters: |
|
||||
@@ -54,13 +54,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './docs/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
|
||||
25
.github/workflows/docs-deploy.yml
vendored
25
.github/workflows/docs-deploy.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
||||
artifact: ${{ steps.get-artifact.outputs.result }}
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
@@ -119,19 +119,19 @@ jobs:
|
||||
if: ${{ fromJson(needs.checks.outputs.artifact).found && fromJson(needs.checks.outputs.parameters).shouldDeploy }}
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
|
||||
- name: Setup Mise
|
||||
uses: immich-app/devtools/actions/use-mise@cd24790a7f5f6439ac32cc94f5523cb2de8bfa8c # use-mise-action-v1.1.0
|
||||
uses: immich-app/devtools/actions/use-mise@dab18118da6476e8237ac94080fd937983fecd42 # use-mise-action-v1.1.2
|
||||
|
||||
- name: Load parameters
|
||||
id: parameters
|
||||
@@ -192,16 +192,13 @@ jobs:
|
||||
' >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Publish to Cloudflare Pages
|
||||
# TODO: Action is deprecated
|
||||
uses: cloudflare/pages-action@f0a1cd58cd66095dee69bfa18fa5efd1dde93bca # v1.5.0
|
||||
with:
|
||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN_PAGES_UPLOAD }}
|
||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
projectName: ${{ steps.docs-output.outputs.projectName }}
|
||||
workingDirectory: 'docs'
|
||||
directory: 'build'
|
||||
branch: ${{ steps.parameters.outputs.name }}
|
||||
wranglerVersion: '3'
|
||||
working-directory: docs
|
||||
env:
|
||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN_PAGES_UPLOAD }}
|
||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
PROJECT_NAME: ${{ steps.docs-output.outputs.projectName }}
|
||||
BRANCH_NAME: ${{ steps.parameters.outputs.name }}
|
||||
run: mise run //docs:deploy
|
||||
|
||||
- name: Deploy Docs Release Domain
|
||||
if: ${{ steps.parameters.outputs.event == 'release' }}
|
||||
|
||||
6
.github/workflows/docs-destroy.yml
vendored
6
.github/workflows/docs-destroy.yml
vendored
@@ -17,19 +17,19 @@ jobs:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
|
||||
- name: Setup Mise
|
||||
uses: immich-app/devtools/actions/use-mise@cd24790a7f5f6439ac32cc94f5523cb2de8bfa8c # use-mise-action-v1.1.0
|
||||
uses: immich-app/devtools/actions/use-mise@dab18118da6476e8237ac94080fd937983fecd42 # use-mise-action-v1.1.2
|
||||
|
||||
- name: Destroy Docs Subdomain
|
||||
env:
|
||||
|
||||
6
.github/workflows/fix-format.yml
vendored
6
.github/workflows/fix-format.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: 'Checkout'
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.ref }}
|
||||
token: ${{ steps.generate-token.outputs.token }}
|
||||
@@ -32,14 +32,14 @@ jobs:
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
cache-dependency-path: '**/pnpm-lock.yaml'
|
||||
|
||||
- name: Fix formatting
|
||||
run: pnpm --recursive install && pnpm run --recursive --parallel fix:format
|
||||
run: pnpm --recursive install && pnpm run --recursive --if-present --parallel format:fix
|
||||
|
||||
- name: Commit and push
|
||||
uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9.1.4
|
||||
|
||||
2
.github/workflows/pr-label-validation.yml
vendored
2
.github/workflows/pr-label-validation.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
2
.github/workflows/pr-labeler.yml
vendored
2
.github/workflows/pr-labeler.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
8
.github/workflows/prepare-release.yml
vendored
8
.github/workflows/prepare-release.yml
vendored
@@ -56,20 +56,20 @@ jobs:
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
token: ${{ steps.generate-token.outputs.token }}
|
||||
persist-credentials: true
|
||||
ref: main
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
|
||||
uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
|
||||
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -130,7 +130,7 @@ jobs:
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
token: ${{ steps.generate-token.outputs.token }}
|
||||
persist-credentials: false
|
||||
|
||||
4
.github/workflows/preview-label.yaml
vendored
4
.github/workflows/preview-label.yaml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
8
.github/workflows/release-pr.yml
vendored
8
.github/workflows/release-pr.yml
vendored
@@ -23,20 +23,20 @@ jobs:
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
token: ${{ steps.generate-token.outputs.token }}
|
||||
persist-credentials: true
|
||||
ref: main
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
|
||||
uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
|
||||
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -159,7 +159,7 @@ jobs:
|
||||
|
||||
- name: Create PR
|
||||
id: create-pr
|
||||
uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725 # v8.0.0
|
||||
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
|
||||
with:
|
||||
token: ${{ steps.generate-token.outputs.token }}
|
||||
commit-message: 'chore: release ${{ steps.bump-type.outputs.next }}'
|
||||
|
||||
3
.github/workflows/release.yml
vendored
3
.github/workflows/release.yml
vendored
@@ -58,7 +58,7 @@ jobs:
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
token: ${{ steps.generate-token.outputs.token }}
|
||||
persist-credentials: false
|
||||
@@ -88,6 +88,7 @@ jobs:
|
||||
draft: true
|
||||
files: |
|
||||
docker/docker-compose.yml
|
||||
docker/docker-compose.rootless.yml
|
||||
docker/example.env
|
||||
docker/hwaccel.ml.yml
|
||||
docker/hwaccel.transcoding.yml
|
||||
|
||||
6
.github/workflows/sdk.yml
vendored
6
.github/workflows/sdk.yml
vendored
@@ -19,12 +19,12 @@ jobs:
|
||||
working-directory: ./open-api/typescript-sdk
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
@@ -33,7 +33,7 @@ jobs:
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
|
||||
# Setup .npmrc file to publish to npm
|
||||
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './open-api/typescript-sdk/.nvmrc'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
|
||||
16
.github/workflows/static_analysis.yml
vendored
16
.github/workflows/static_analysis.yml
vendored
@@ -20,14 +20,14 @@ jobs:
|
||||
should_run: ${{ steps.check.outputs.should_run }}
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Check what should run
|
||||
id: check
|
||||
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
|
||||
uses: immich-app/devtools/actions/pre-job@eed0f8b8165ffcb951f2ba854b2dd031935e1d73 # pre-job-action-v2.0.2
|
||||
with:
|
||||
github-token: ${{ steps.token.outputs.token }}
|
||||
filters: |
|
||||
@@ -49,13 +49,13 @@ jobs:
|
||||
working-directory: ./mobile
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
@@ -69,6 +69,14 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: dart pub get
|
||||
|
||||
- name: Install dependencies for UI package
|
||||
run: dart pub get
|
||||
working-directory: ./mobile/packages/ui
|
||||
|
||||
- name: Install dependencies for UI Showcase
|
||||
run: dart pub get
|
||||
working-directory: ./mobile/packages/ui/showcase
|
||||
|
||||
- name: Install DCM
|
||||
uses: CQLabs/setup-dcm@8697ae0790c0852e964a6ef1d768d62a6675481a # v2.0.1
|
||||
with:
|
||||
|
||||
128
.github/workflows/test.yml
vendored
128
.github/workflows/test.yml
vendored
@@ -17,14 +17,14 @@ jobs:
|
||||
should_run: ${{ steps.check.outputs.should_run }}
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Check what should run
|
||||
id: check
|
||||
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
|
||||
uses: immich-app/devtools/actions/pre-job@eed0f8b8165ffcb951f2ba854b2dd031935e1d73 # pre-job-action-v2.0.2
|
||||
with:
|
||||
github-token: ${{ steps.token.outputs.token }}
|
||||
filters: |
|
||||
@@ -63,13 +63,13 @@ jobs:
|
||||
working-directory: ./server
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
@@ -77,7 +77,7 @@ jobs:
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -108,20 +108,20 @@ jobs:
|
||||
working-directory: ./cli
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './cli/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -155,20 +155,20 @@ jobs:
|
||||
working-directory: ./cli
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './cli/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -197,20 +197,20 @@ jobs:
|
||||
working-directory: ./web
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './web/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -241,20 +241,20 @@ jobs:
|
||||
working-directory: ./web
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './web/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -279,20 +279,20 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './web/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -327,20 +327,20 @@ jobs:
|
||||
working-directory: ./e2e
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './e2e/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -373,13 +373,13 @@ jobs:
|
||||
working-directory: ./server
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: 'recursive'
|
||||
@@ -387,7 +387,7 @@ jobs:
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -412,13 +412,13 @@ jobs:
|
||||
runner: [ubuntu-latest, ubuntu-24.04-arm]
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: 'recursive'
|
||||
@@ -426,7 +426,7 @@ jobs:
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './e2e/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -446,12 +446,29 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
if: ${{ !cancelled() }}
|
||||
- name: Docker build
|
||||
run: docker compose build
|
||||
- name: Start Docker Compose
|
||||
run: docker compose up -d --build --renew-anon-volumes --force-recreate --remove-orphans --wait --wait-timeout 300
|
||||
if: ${{ !cancelled() }}
|
||||
- name: Run e2e tests (api & cli)
|
||||
env:
|
||||
VITEST_DISABLE_DOCKER_SETUP: true
|
||||
run: pnpm test
|
||||
if: ${{ !cancelled() }}
|
||||
- name: Run e2e tests (maintenance)
|
||||
env:
|
||||
VITEST_DISABLE_DOCKER_SETUP: true
|
||||
run: pnpm test:maintenance
|
||||
if: ${{ !cancelled() }}
|
||||
- name: Capture Docker logs
|
||||
if: always()
|
||||
run: docker compose logs --no-color > docker-compose-logs.txt
|
||||
working-directory: ./e2e
|
||||
- name: Archive Docker logs
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
if: always()
|
||||
with:
|
||||
name: e2e-server-docker-logs-${{ matrix.runner }}
|
||||
path: e2e/docker-compose-logs.txt
|
||||
e2e-tests-web:
|
||||
name: End-to-End Tests (Web)
|
||||
needs: pre-job
|
||||
@@ -467,13 +484,13 @@ jobs:
|
||||
runner: [ubuntu-latest, ubuntu-24.04-arm]
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: 'recursive'
|
||||
@@ -481,7 +498,7 @@ jobs:
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './e2e/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -501,9 +518,8 @@ jobs:
|
||||
if: ${{ !cancelled() }}
|
||||
- name: Run e2e tests (web)
|
||||
env:
|
||||
CI: true
|
||||
PLAYWRIGHT_DISABLE_WEBSERVER: true
|
||||
run: npx playwright test --project=web
|
||||
run: pnpm test:web
|
||||
if: ${{ !cancelled() }}
|
||||
- name: Archive e2e test (web) results
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
@@ -513,9 +529,8 @@ jobs:
|
||||
path: e2e/playwright-report/
|
||||
- name: Run ui tests (web)
|
||||
env:
|
||||
CI: true
|
||||
PLAYWRIGHT_DISABLE_WEBSERVER: true
|
||||
run: npx playwright test --project=ui
|
||||
run: pnpm test:web:ui
|
||||
if: ${{ !cancelled() }}
|
||||
- name: Archive ui test (web) results
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
@@ -525,9 +540,8 @@ jobs:
|
||||
path: e2e/playwright-report/
|
||||
- name: Run maintenance tests
|
||||
env:
|
||||
CI: true
|
||||
PLAYWRIGHT_DISABLE_WEBSERVER: true
|
||||
run: npx playwright test --project=maintenance
|
||||
run: pnpm test:web:maintenance
|
||||
if: ${{ !cancelled() }}
|
||||
- name: Archive maintenance tests (web) results
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
@@ -543,7 +557,7 @@ jobs:
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||
if: always()
|
||||
with:
|
||||
name: docker-compose-logs-${{ matrix.runner }}
|
||||
name: e2e-web-docker-logs-${{ matrix.runner }}
|
||||
path: e2e/docker-compose-logs.txt
|
||||
success-check-e2e:
|
||||
name: End-to-End Tests Success
|
||||
@@ -564,12 +578,12 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
@@ -596,17 +610,17 @@ jobs:
|
||||
working-directory: ./machine-learning
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
|
||||
uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
|
||||
with:
|
||||
python-version: 3.11
|
||||
- name: Install dependencies
|
||||
@@ -636,20 +650,20 @@ jobs:
|
||||
working-directory: ./.github
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './.github/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -666,12 +680,12 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
@@ -687,20 +701,20 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
@@ -749,20 +763,20 @@ jobs:
|
||||
working-directory: ./server
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
token: ${{ steps.token.outputs.token }}
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version-file: './server/.nvmrc'
|
||||
cache: 'pnpm'
|
||||
|
||||
6
.github/workflows/weblate-lock.yml
vendored
6
.github/workflows/weblate-lock.yml
vendored
@@ -24,14 +24,14 @@ jobs:
|
||||
should_run: ${{ steps.check.outputs.should_run }}
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
- name: Check what should run
|
||||
id: check
|
||||
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
|
||||
uses: immich-app/devtools/actions/pre-job@eed0f8b8165ffcb951f2ba854b2dd031935e1d73 # pre-job-action-v2.0.2
|
||||
with:
|
||||
github-token: ${{ steps.token.outputs.token }}
|
||||
filters: |
|
||||
@@ -47,7 +47,7 @@ jobs:
|
||||
if: ${{ fromJSON(needs.pre-job.outputs.should_run).i18n == true }}
|
||||
steps:
|
||||
- id: token
|
||||
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
|
||||
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
@@ -17,7 +17,7 @@ If you are looking for something to work on, there are discussions and issues wi
|
||||
|
||||
## Use of generative AI
|
||||
|
||||
We generally discourage PRs entirely generated by an LLM. For any part generated by an LLM, please put extra effort into your self-review. By using generative AI without proper self-review, the time you save ends up being more work we need to put in for proper reviews and code cleanup. Please keep that in mind when submitting code by an LLM. Clearly state the use of LLMs/(generative) AI in your pull request as requested by the template.
|
||||
We ask you not to open PRs generated with an LLM. We find that code generated like this tends to need a large amount of back-and-forth, which is a very inefficient use of our time. If we want LLM-generated code, it's much faster for us to use an LLM ourselves than to go through an intermediary via a pull request.
|
||||
|
||||
## Feature freezes
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
24.13.0
|
||||
24.13.1
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
],
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.8.0",
|
||||
"@immich/sdk": "file:../open-api/typescript-sdk",
|
||||
"@immich/sdk": "workspace:*",
|
||||
"@types/byte-size": "^8.1.0",
|
||||
"@types/cli-progress": "^3.11.0",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/micromatch": "^4.0.9",
|
||||
"@types/mock-fs": "^4.13.1",
|
||||
"@types/node": "^24.10.11",
|
||||
"@types/node": "^24.10.13",
|
||||
"@vitest/coverage-v8": "^3.0.0",
|
||||
"byte-size": "^9.0.0",
|
||||
"cli-progress": "^3.12.0",
|
||||
@@ -69,6 +69,6 @@
|
||||
"micromatch": "^4.0.8"
|
||||
},
|
||||
"volta": {
|
||||
"node": "24.13.0"
|
||||
"node": "24.13.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
AssetBulkUploadCheckResult,
|
||||
AssetMediaResponseDto,
|
||||
AssetMediaStatus,
|
||||
Permission,
|
||||
addAssetsToAlbum,
|
||||
checkBulkUpload,
|
||||
createAlbum,
|
||||
@@ -20,13 +21,11 @@ import { Stats, createReadStream } from 'node:fs';
|
||||
import { stat, unlink } from 'node:fs/promises';
|
||||
import path, { basename } from 'node:path';
|
||||
import { Queue } from 'src/queue';
|
||||
import { BaseOptions, Batcher, authenticate, crawl, sha1 } from 'src/utils';
|
||||
import { BaseOptions, Batcher, authenticate, crawl, requirePermissions, s, sha1 } from 'src/utils';
|
||||
|
||||
const UPLOAD_WATCH_BATCH_SIZE = 100;
|
||||
const UPLOAD_WATCH_DEBOUNCE_TIME_MS = 10_000;
|
||||
|
||||
const s = (count: number) => (count === 1 ? '' : 's');
|
||||
|
||||
// TODO figure out why `id` is missing
|
||||
type AssetBulkUploadCheckResults = Array<AssetBulkUploadCheckResult & { id: string }>;
|
||||
type Asset = { id: string; filepath: string };
|
||||
@@ -136,6 +135,7 @@ export const startWatch = async (
|
||||
|
||||
export const upload = async (paths: string[], baseOptions: BaseOptions, options: UploadOptionsDto) => {
|
||||
await authenticate(baseOptions);
|
||||
await requirePermissions([Permission.AssetUpload]);
|
||||
|
||||
const scanFiles = await scan(paths, options);
|
||||
|
||||
@@ -180,18 +180,49 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
|
||||
}
|
||||
|
||||
let multiBar: MultiBar | undefined;
|
||||
let totalSize = 0;
|
||||
const statsMap = new Map<string, Stats>();
|
||||
|
||||
// Calculate total size first
|
||||
for (const filepath of files) {
|
||||
const stats = await stat(filepath);
|
||||
statsMap.set(filepath, stats);
|
||||
totalSize += stats.size;
|
||||
}
|
||||
|
||||
if (progress) {
|
||||
multiBar = new MultiBar(
|
||||
{ format: '{message} | {bar} | {percentage}% | ETA: {eta}s | {value}/{total} assets' },
|
||||
{
|
||||
format: '{message} | {bar} | {percentage}% | ETA: {eta_formatted} | {value}/{total}',
|
||||
formatValue: (v: number, options, type) => {
|
||||
// Don't format percentage
|
||||
if (type === 'percentage') {
|
||||
return v.toString();
|
||||
}
|
||||
return byteSize(v).toString();
|
||||
},
|
||||
etaBuffer: 100, // Increase samples for ETA calculation
|
||||
},
|
||||
Presets.shades_classic,
|
||||
);
|
||||
|
||||
// Ensure we restore cursor on interrupt
|
||||
process.on('SIGINT', () => {
|
||||
if (multiBar) {
|
||||
multiBar.stop();
|
||||
}
|
||||
process.exit(0);
|
||||
});
|
||||
} else {
|
||||
console.log(`Received ${files.length} files, hashing...`);
|
||||
console.log(`Received ${files.length} files (${byteSize(totalSize)}), hashing...`);
|
||||
}
|
||||
|
||||
const hashProgressBar = multiBar?.create(files.length, 0, { message: 'Hashing files ' });
|
||||
const checkProgressBar = multiBar?.create(files.length, 0, { message: 'Checking for duplicates' });
|
||||
const hashProgressBar = multiBar?.create(totalSize, 0, {
|
||||
message: 'Hashing files ',
|
||||
});
|
||||
const checkProgressBar = multiBar?.create(totalSize, 0, {
|
||||
message: 'Checking for duplicates',
|
||||
});
|
||||
|
||||
const newFiles: string[] = [];
|
||||
const duplicates: Asset[] = [];
|
||||
@@ -211,7 +242,13 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
|
||||
}
|
||||
}
|
||||
|
||||
checkProgressBar?.increment(assets.length);
|
||||
// Update progress based on total size of processed files
|
||||
let processedSize = 0;
|
||||
for (const asset of assets) {
|
||||
const stats = statsMap.get(asset.id);
|
||||
processedSize += stats?.size || 0;
|
||||
}
|
||||
checkProgressBar?.increment(processedSize);
|
||||
},
|
||||
{ concurrency, retry: 3 },
|
||||
);
|
||||
@@ -221,6 +258,10 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
|
||||
|
||||
const queue = new Queue<string, AssetBulkUploadCheckItem[]>(
|
||||
async (filepath: string): Promise<AssetBulkUploadCheckItem[]> => {
|
||||
const stats = statsMap.get(filepath);
|
||||
if (!stats) {
|
||||
throw new Error(`Stats not found for ${filepath}`);
|
||||
}
|
||||
const dto = { id: filepath, checksum: await sha1(filepath) };
|
||||
|
||||
results.push(dto);
|
||||
@@ -231,7 +272,7 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
|
||||
void checkBulkUploadQueue.push(batch);
|
||||
}
|
||||
|
||||
hashProgressBar?.increment();
|
||||
hashProgressBar?.increment(stats.size);
|
||||
return results;
|
||||
},
|
||||
{ concurrency, retry: 3 },
|
||||
|
||||
@@ -1,7 +1,15 @@
|
||||
import { getMyUser } from '@immich/sdk';
|
||||
import { getMyUser, Permission } from '@immich/sdk';
|
||||
import { existsSync } from 'node:fs';
|
||||
import { mkdir, unlink } from 'node:fs/promises';
|
||||
import { BaseOptions, connect, getAuthFilePath, logError, withError, writeAuthFile } from 'src/utils';
|
||||
import {
|
||||
BaseOptions,
|
||||
connect,
|
||||
getAuthFilePath,
|
||||
logError,
|
||||
requirePermissions,
|
||||
withError,
|
||||
writeAuthFile,
|
||||
} from 'src/utils';
|
||||
|
||||
export const login = async (url: string, key: string, options: BaseOptions) => {
|
||||
console.log(`Logging in to ${url}`);
|
||||
@@ -9,6 +17,7 @@ export const login = async (url: string, key: string, options: BaseOptions) => {
|
||||
const { configDirectory: configDir } = options;
|
||||
|
||||
await connect(url, key);
|
||||
await requirePermissions([Permission.UserRead]);
|
||||
|
||||
const [error, user] = await withError(getMyUser());
|
||||
if (error) {
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { getAssetStatistics, getMyUser, getServerVersion, getSupportedMediaTypes } from '@immich/sdk';
|
||||
import { BaseOptions, authenticate } from 'src/utils';
|
||||
import { getAssetStatistics, getMyUser, getServerVersion, getSupportedMediaTypes, Permission } from '@immich/sdk';
|
||||
import { authenticate, BaseOptions, requirePermissions } from 'src/utils';
|
||||
|
||||
export const serverInfo = async (options: BaseOptions) => {
|
||||
const { url } = await authenticate(options);
|
||||
await requirePermissions([Permission.ServerAbout, Permission.AssetStatistics, Permission.UserRead]);
|
||||
|
||||
const [versionInfo, mediaTypes, stats, userInfo] = await Promise.all([
|
||||
getServerVersion(),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { getMyUser, init, isHttpError } from '@immich/sdk';
|
||||
import { ApiKeyResponseDto, getMyApiKey, getMyUser, init, isHttpError, Permission } from '@immich/sdk';
|
||||
import { convertPathToPattern, glob } from 'fast-glob';
|
||||
import { createHash } from 'node:crypto';
|
||||
import { createReadStream } from 'node:fs';
|
||||
@@ -34,6 +34,36 @@ export const authenticate = async (options: BaseOptions): Promise<AuthDto> => {
|
||||
return auth;
|
||||
};
|
||||
|
||||
export const s = (count: number) => (count === 1 ? '' : 's');
|
||||
|
||||
let _apiKey: ApiKeyResponseDto;
|
||||
export const requirePermissions = async (permissions: Permission[]) => {
|
||||
if (!_apiKey) {
|
||||
_apiKey = await getMyApiKey();
|
||||
}
|
||||
|
||||
if (_apiKey.permissions.includes(Permission.All)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const missing: Permission[] = [];
|
||||
|
||||
for (const permission of permissions) {
|
||||
if (!_apiKey.permissions.includes(permission)) {
|
||||
missing.push(permission);
|
||||
}
|
||||
}
|
||||
|
||||
if (missing.length > 0) {
|
||||
const combined = missing.map((permission) => `"${permission}"`).join(', ');
|
||||
console.log(
|
||||
`Missing required permission${s(missing.length)}: ${combined}.
|
||||
Please make sure your API key has the correct permissions.`,
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
export const connect = async (url: string, key: string) => {
|
||||
const wellKnownUrl = new URL('.well-known/immich', url);
|
||||
try {
|
||||
|
||||
@@ -14,33 +14,65 @@
|
||||
name: immich-dev
|
||||
|
||||
services:
|
||||
immich-app-base:
|
||||
profiles: ['_base']
|
||||
tmpfs:
|
||||
- /tmp
|
||||
volumes:
|
||||
- ..:/usr/src/app
|
||||
- pnpm_cache:/buildcache/pnpm_cache
|
||||
- server_node_modules:/usr/src/app/server/node_modules
|
||||
- web_node_modules:/usr/src/app/web/node_modules
|
||||
- github_node_modules:/usr/src/app/.github/node_modules
|
||||
- cli_node_modules:/usr/src/app/cli/node_modules
|
||||
- docs_node_modules:/usr/src/app/docs/node_modules
|
||||
- e2e_node_modules:/usr/src/app/e2e/node_modules
|
||||
- sdk_node_modules:/usr/src/app/open-api/typescript-sdk/node_modules
|
||||
- app_node_modules:/usr/src/app/node_modules
|
||||
- sveltekit:/usr/src/app/web/.svelte-kit
|
||||
- coverage:/usr/src/app/web/coverage
|
||||
|
||||
immich-init:
|
||||
extends:
|
||||
service: immich-app-base
|
||||
profiles: !reset []
|
||||
container_name: immich_init
|
||||
image: immich-server-dev:latest
|
||||
build:
|
||||
context: ../
|
||||
dockerfile: server/Dockerfile.dev
|
||||
target: dev
|
||||
command:
|
||||
- |
|
||||
pnpm install
|
||||
touch /tmp/init-complete
|
||||
exec tail -f /dev/null
|
||||
volumes:
|
||||
- pnpm_store_server:/buildcache/pnpm-store
|
||||
restart: 'no'
|
||||
healthcheck:
|
||||
test: ['CMD', 'test', '-f', '/tmp/init-complete']
|
||||
interval: 2s
|
||||
timeout: 3s
|
||||
retries: 300
|
||||
start_period: 300s
|
||||
|
||||
immich-server:
|
||||
extends:
|
||||
service: immich-app-base
|
||||
profiles: !reset []
|
||||
container_name: immich_server
|
||||
command: ['immich-dev']
|
||||
image: immich-server-dev:latest
|
||||
# extends:
|
||||
# file: hwaccel.transcoding.yml
|
||||
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
|
||||
build:
|
||||
context: ../
|
||||
dockerfile: server/Dockerfile.dev
|
||||
target: dev
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ..:/usr/src/app
|
||||
- ${UPLOAD_LOCATION}/photos:/data
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- pnpm-store:/usr/src/app/.pnpm-store
|
||||
- server-node_modules:/usr/src/app/server/node_modules
|
||||
- web-node_modules:/usr/src/app/web/node_modules
|
||||
- github-node_modules:/usr/src/app/.github/node_modules
|
||||
- cli-node_modules:/usr/src/app/cli/node_modules
|
||||
- docs-node_modules:/usr/src/app/docs/node_modules
|
||||
- e2e-node_modules:/usr/src/app/e2e/node_modules
|
||||
- sdk-node_modules:/usr/src/app/open-api/typescript-sdk/node_modules
|
||||
- app-node_modules:/usr/src/app/node_modules
|
||||
- sveltekit:/usr/src/app/web/.svelte-kit
|
||||
- coverage:/usr/src/app/web/coverage
|
||||
- pnpm_store_server:/buildcache/pnpm-store
|
||||
- ../plugins:/build/corePlugin
|
||||
env_file:
|
||||
- .env
|
||||
@@ -63,6 +95,8 @@ services:
|
||||
- 9231:9231
|
||||
- 2283:2283
|
||||
depends_on:
|
||||
immich-init:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
database:
|
||||
@@ -71,6 +105,9 @@ services:
|
||||
disable: false
|
||||
|
||||
immich-web:
|
||||
extends:
|
||||
service: immich-app-base
|
||||
profiles: !reset []
|
||||
container_name: immich_web
|
||||
image: immich-web-dev:latest
|
||||
build:
|
||||
@@ -84,20 +121,11 @@ services:
|
||||
- 3000:3000
|
||||
- 24678:24678
|
||||
volumes:
|
||||
- ..:/usr/src/app
|
||||
- pnpm-store:/usr/src/app/.pnpm-store
|
||||
- server-node_modules:/usr/src/app/server/node_modules
|
||||
- web-node_modules:/usr/src/app/web/node_modules
|
||||
- github-node_modules:/usr/src/app/.github/node_modules
|
||||
- cli-node_modules:/usr/src/app/cli/node_modules
|
||||
- docs-node_modules:/usr/src/app/docs/node_modules
|
||||
- e2e-node_modules:/usr/src/app/e2e/node_modules
|
||||
- sdk-node_modules:/usr/src/app/open-api/typescript-sdk/node_modules
|
||||
- app-node_modules:/usr/src/app/node_modules
|
||||
- sveltekit:/usr/src/app/web/.svelte-kit
|
||||
- coverage:/usr/src/app/web/coverage
|
||||
- pnpm_store_web:/buildcache/pnpm-store
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
immich-init:
|
||||
condition: service_healthy
|
||||
immich-server:
|
||||
condition: service_started
|
||||
|
||||
@@ -116,7 +144,7 @@ services:
|
||||
- 3003:3003
|
||||
volumes:
|
||||
- ../machine-learning/immich_ml:/usr/src/immich_ml
|
||||
- model-cache:/cache
|
||||
- model_cache:/cache
|
||||
env_file:
|
||||
- .env
|
||||
depends_on:
|
||||
@@ -127,7 +155,7 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/valkey/valkey:9@sha256:546304417feac0874c3dd576e0952c6bb8f06bb4093ea0c9ca303c73cf458f63
|
||||
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
|
||||
@@ -156,7 +184,7 @@ services:
|
||||
# image: prom/prometheus
|
||||
# volumes:
|
||||
# - ./prometheus.yml:/etc/prometheus/prometheus.yml
|
||||
# - prometheus-data:/prometheus
|
||||
# - prometheus_data:/prometheus
|
||||
|
||||
# first login uses admin/admin
|
||||
# add data source for http://immich-prometheus:9090 to get started
|
||||
@@ -167,20 +195,22 @@ services:
|
||||
# - 3000:3000
|
||||
# image: grafana/grafana:10.3.3-ubuntu
|
||||
# volumes:
|
||||
# - grafana-data:/var/lib/grafana
|
||||
# - grafana_data:/var/lib/grafana
|
||||
|
||||
volumes:
|
||||
model-cache:
|
||||
prometheus-data:
|
||||
grafana-data:
|
||||
pnpm-store:
|
||||
server-node_modules:
|
||||
web-node_modules:
|
||||
github-node_modules:
|
||||
cli-node_modules:
|
||||
docs-node_modules:
|
||||
e2e-node_modules:
|
||||
sdk-node_modules:
|
||||
app-node_modules:
|
||||
model_cache:
|
||||
prometheus_data:
|
||||
grafana_data:
|
||||
pnpm_cache:
|
||||
pnpm_store_server:
|
||||
pnpm_store_web:
|
||||
server_node_modules:
|
||||
web_node_modules:
|
||||
github_node_modules:
|
||||
cli_node_modules:
|
||||
docs_node_modules:
|
||||
e2e_node_modules:
|
||||
sdk_node_modules:
|
||||
app_node_modules:
|
||||
sveltekit:
|
||||
coverage:
|
||||
|
||||
@@ -56,7 +56,7 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/valkey/valkey:9@sha256:546304417feac0874c3dd576e0952c6bb8f06bb4093ea0c9ca303c73cf458f63
|
||||
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
|
||||
@@ -61,7 +61,7 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/valkey/valkey:9@sha256:546304417feac0874c3dd576e0952c6bb8f06bb4093ea0c9ca303c73cf458f63
|
||||
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||
user: '1000:1000'
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
|
||||
@@ -49,7 +49,7 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/valkey/valkey:9@sha256:546304417feac0874c3dd576e0952c6bb8f06bb4093ea0c9ca303c73cf458f63
|
||||
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
|
||||
@@ -1 +1 @@
|
||||
24.13.0
|
||||
24.13.1
|
||||
|
||||
@@ -44,7 +44,7 @@ While this guide focuses on VS Code, you have many options for Dev Container dev
|
||||
**Self-Hostable Options:**
|
||||
|
||||
- [Coder](https://coder.com) - Enterprise-focused, requires Terraform knowledge, self-managed
|
||||
- [DevPod](https://devpod.sh) - Client-only tool with excellent devcontainer.json support, works with any provider (local, cloud, or on-premise)
|
||||
- [DevPod](https://devpod.sh) - Client-only tool with excellent devcontainer.json support, works with any provider (local, cloud, or on-premise). Check [quick-start guide](#quick-start-guide-for-devpod-with-docker)
|
||||
:::
|
||||
|
||||
## Dev Container Services
|
||||
@@ -408,7 +408,27 @@ If you encounter issues:
|
||||
1. Check container logs: View → Output → Select "Dev Containers"
|
||||
2. Rebuild without cache: "Dev Containers: Rebuild Container Without Cache"
|
||||
3. Review [common Docker issues](https://docs.docker.com/desktop/troubleshoot/)
|
||||
4. Ask in [Discord](https://discord.immich.app) `#help-desk-support` channel
|
||||
4. Ask in [Discord](https://discord.immich.app) `#contributing` channel
|
||||
|
||||
### Quick-start guide for DevPod with docker
|
||||
|
||||
You will need DevPod CLI (check [DevPod CLI installation guide](https://devpod.sh/docs/getting-started/install)) and Docker Desktop.
|
||||
|
||||
```sh
|
||||
# Step 1: Clone the Repository
|
||||
git clone https://github.com/immich-app/immich.git
|
||||
cd immich
|
||||
|
||||
# Step 2: Prepare DevPod (if you haven't already)
|
||||
devpod provider add docker
|
||||
devpod provider use docker
|
||||
|
||||
# Step 3: Build 'immich-server-dev' docker image first manually
|
||||
docker build -f server/Dockerfile.dev -t immich-server-dev .
|
||||
|
||||
# Step 4: Now you can start devcontainer
|
||||
devpod up .
|
||||
```
|
||||
|
||||
## Mobile Development
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ For the full list, refer to the [Immich source code](https://github.com/immich-a
|
||||
| `MP2T` | `.mts` `.m2ts` `.m2t` | :white_check_mark: | |
|
||||
| `MP4` | `.mp4` `.insv` | :white_check_mark: | |
|
||||
| `MPEG` | `.mpg` `.mpe` `.mpeg` | :white_check_mark: | |
|
||||
| `MXF` | `.mxf` | :white_check_mark: | |
|
||||
| `QUICKTIME` | `.mov` | :white_check_mark: | |
|
||||
| `WEBM` | `.webm` | :white_check_mark: | |
|
||||
| `WMV` | `.wmv` | :white_check_mark: | |
|
||||
|
||||
@@ -8,7 +8,8 @@ A config file can be provided as an alternative to the UI configuration.
|
||||
|
||||
### Step 1 - Create a new config file
|
||||
|
||||
In JSON format, create a new config file (e.g. `immich.json`) and put it in a location that can be accessed by Immich.
|
||||
In JSON format, create a new config file (e.g. `immich.json`) and put it in a location mounted in the container that can be accessed by Immich.
|
||||
YAML-formatted config files are also supported.
|
||||
The default configuration looks like this:
|
||||
|
||||
<details>
|
||||
@@ -251,6 +252,15 @@ So you can just grab it from there, paste it into a file and you're pretty much
|
||||
In your `.env` file, set the variable `IMMICH_CONFIG_FILE` to the path of your config.
|
||||
For more information, refer to the [Environment Variables](/install/environment-variables.md) section.
|
||||
|
||||
:::tip
|
||||
YAML-formatted config files are also supported.
|
||||
:::
|
||||
:::info Docker Compose
|
||||
In your `.env` file, the variables `UPLOAD_LOCATION` and `DB_DATA_LOCATION` concern the location on the host.
|
||||
However, the variable `IMMICH_CONFIG_FILE` concerns the location inside the container, and informs the `immich-server` container that a configuration file is present.
|
||||
|
||||
It is recommended to reuse this variable in your `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
- ./configuration.yml:${IMMICH_CONFIG_FILE}
|
||||
```
|
||||
|
||||
::
|
||||
|
||||
@@ -8,8 +8,6 @@ sidebar_position: 85
|
||||
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.
|
||||
|
||||
@@ -23,3 +23,9 @@ run = "prettier --check ."
|
||||
[tasks."format-fix"]
|
||||
env._.path = "./node_modules/.bin"
|
||||
run = "prettier --write ."
|
||||
|
||||
[tasks.deploy]
|
||||
run = "wrangler pages deploy build --project-name=${PROJECT_NAME} --branch=${BRANCH_NAME}"
|
||||
|
||||
[tools]
|
||||
wrangler = "4.66.0"
|
||||
|
||||
@@ -58,6 +58,6 @@
|
||||
"node": ">=20"
|
||||
},
|
||||
"volta": {
|
||||
"node": "24.13.0"
|
||||
"node": "24.13.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,3 +32,7 @@ If you would like to migrate from one media location to another, simply successf
|
||||
4. Start up Immich
|
||||
|
||||
After version `1.136.0`, Immich can detect when a media location has moved and will automatically update the database paths to keep them in sync.
|
||||
|
||||
## Schema drift
|
||||
|
||||
Schema drift is when the database schema is out of sync with the code. This could be the result of manual database tinkering, issues during a database restore, or something else. Schema drift can lead to data corruption, application bugs, and other unpredictable behavior. Please reconcile the differences as soon as possible. Specifically, missing `CONSTRAINT`s can result in duplicate assets being uploaded, since the server relies on a checksum `CONSTRAINT` to prevent duplicates.
|
||||
|
||||
@@ -1 +1 @@
|
||||
24.13.0
|
||||
24.13.1
|
||||
|
||||
@@ -1,86 +1,77 @@
|
||||
name: immich-e2e
|
||||
|
||||
services:
|
||||
immich-app-base:
|
||||
extends:
|
||||
file: ../docker/docker-compose.dev.yml
|
||||
service: immich-app-base
|
||||
|
||||
immich-init:
|
||||
extends:
|
||||
file: ../docker/docker-compose.dev.yml
|
||||
service: immich-init
|
||||
container_name: immich-e2e-init
|
||||
|
||||
immich-server:
|
||||
extends:
|
||||
file: ../docker/docker-compose.dev.yml
|
||||
service: immich-server
|
||||
container_name: immich-e2e-server
|
||||
command: ['immich-dev']
|
||||
image: immich-server-dev:latest
|
||||
build:
|
||||
context: ../
|
||||
dockerfile: server/Dockerfile.dev
|
||||
target: dev
|
||||
ports: !reset []
|
||||
env_file: !reset []
|
||||
environment:
|
||||
- DB_HOSTNAME=database
|
||||
- DB_USERNAME=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- DB_DATABASE_NAME=immich
|
||||
- IMMICH_MACHINE_LEARNING_ENABLED=false
|
||||
- IMMICH_TELEMETRY_INCLUDE=all
|
||||
- IMMICH_ENV=testing
|
||||
- IMMICH_PORT=2285
|
||||
- IMMICH_IGNORE_MOUNT_CHECK_ERRORS=true
|
||||
DB_HOSTNAME: database
|
||||
DB_USERNAME: postgres
|
||||
DB_PASSWORD: postgres
|
||||
DB_DATABASE_NAME: immich
|
||||
IMMICH_MACHINE_LEARNING_ENABLED: 'false'
|
||||
IMMICH_TELEMETRY_INCLUDE: all
|
||||
IMMICH_ENV: testing
|
||||
IMMICH_PORT: '2285'
|
||||
IMMICH_IGNORE_MOUNT_CHECK_ERRORS: 'true'
|
||||
volumes:
|
||||
- ./test-assets:/test-assets
|
||||
- ..:/usr/src/app
|
||||
- ${UPLOAD_LOCATION}/photos:/data
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- pnpm-store:/usr/src/app/.pnpm-store
|
||||
- server-node_modules:/usr/src/app/server/node_modules
|
||||
- web-node_modules:/usr/src/app/web/node_modules
|
||||
- github-node_modules:/usr/src/app/.github/node_modules
|
||||
- cli-node_modules:/usr/src/app/cli/node_modules
|
||||
- docs-node_modules:/usr/src/app/docs/node_modules
|
||||
- e2e-node_modules:/usr/src/app/e2e/node_modules
|
||||
- sdk-node_modules:/usr/src/app/open-api/typescript-sdk/node_modules
|
||||
- app-node_modules:/usr/src/app/node_modules
|
||||
- sveltekit:/usr/src/app/web/.svelte-kit
|
||||
- coverage:/usr/src/app/web/coverage
|
||||
- ../plugins:/build/corePlugin
|
||||
depends_on:
|
||||
immich-init:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
database:
|
||||
condition: service_healthy
|
||||
|
||||
immich-web:
|
||||
extends:
|
||||
file: ../docker/docker-compose.dev.yml
|
||||
service: immich-web
|
||||
container_name: immich-e2e-web
|
||||
image: immich-web-dev:latest
|
||||
build:
|
||||
context: ../
|
||||
dockerfile: server/Dockerfile.dev
|
||||
target: dev
|
||||
command: ['immich-web']
|
||||
ports:
|
||||
ports: !override
|
||||
- 2285:3000
|
||||
environment:
|
||||
- IMMICH_SERVER_URL=http://immich-server:2285/
|
||||
volumes:
|
||||
- ..:/usr/src/app
|
||||
- pnpm-store:/usr/src/app/.pnpm-store
|
||||
- server-node_modules:/usr/src/app/server/node_modules
|
||||
- web-node_modules:/usr/src/app/web/node_modules
|
||||
- github-node_modules:/usr/src/app/.github/node_modules
|
||||
- cli-node_modules:/usr/src/app/cli/node_modules
|
||||
- docs-node_modules:/usr/src/app/docs/node_modules
|
||||
- e2e-node_modules:/usr/src/app/e2e/node_modules
|
||||
- sdk-node_modules:/usr/src/app/open-api/typescript-sdk/node_modules
|
||||
- app-node_modules:/usr/src/app/node_modules
|
||||
- sveltekit:/usr/src/app/web/.svelte-kit
|
||||
- coverage:/usr/src/app/web/coverage
|
||||
IMMICH_SERVER_URL: http://immich-server:2285/
|
||||
depends_on:
|
||||
immich-init:
|
||||
condition: service_healthy
|
||||
restart: unless-stopped
|
||||
|
||||
redis:
|
||||
image: redis:6.2-alpine@sha256:46884be93652d02a96a176ccf173d1040bef365c5706aa7b6a1931caec8bfeef
|
||||
extends:
|
||||
file: ../docker/docker-compose.dev.yml
|
||||
service: redis
|
||||
container_name: immich-e2e-redis
|
||||
|
||||
database:
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0@sha256:6f3e9d2c2177af16c2988ff71425d79d89ca630ec2f9c8db03209ab716542338
|
||||
extends:
|
||||
file: ../docker/docker-compose.dev.yml
|
||||
service: database
|
||||
container_name: immich-e2e-postgres
|
||||
command: -c fsync=off -c shared_preload_libraries=vchord.so -c config_file=/var/lib/postgresql/data/postgresql.conf
|
||||
env_file: !reset []
|
||||
ports: !override
|
||||
- 5435:5432
|
||||
environment:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_DB: immich
|
||||
ports:
|
||||
- 5435:5432
|
||||
healthcheck:
|
||||
test: ['CMD-SHELL', 'pg_isready -U postgres -d immich']
|
||||
interval: 1s
|
||||
@@ -89,17 +80,19 @@ services:
|
||||
start_period: 10s
|
||||
|
||||
volumes:
|
||||
model-cache:
|
||||
prometheus-data:
|
||||
grafana-data:
|
||||
pnpm-store:
|
||||
server-node_modules:
|
||||
web-node_modules:
|
||||
github-node_modules:
|
||||
cli-node_modules:
|
||||
docs-node_modules:
|
||||
e2e-node_modules:
|
||||
sdk-node_modules:
|
||||
app-node_modules:
|
||||
model_cache:
|
||||
prometheus_data:
|
||||
grafana_data:
|
||||
pnpm_cache:
|
||||
pnpm_store_server:
|
||||
pnpm_store_web:
|
||||
server_node_modules:
|
||||
web_node_modules:
|
||||
github_node_modules:
|
||||
cli_node_modules:
|
||||
docs_node_modules:
|
||||
e2e_node_modules:
|
||||
sdk_node_modules:
|
||||
app_node_modules:
|
||||
sveltekit:
|
||||
coverage:
|
||||
|
||||
@@ -2,6 +2,7 @@ name: immich-e2e
|
||||
|
||||
services:
|
||||
e2e-auth-server:
|
||||
container_name: immich-e2e-auth-server
|
||||
build:
|
||||
context: ../e2e-auth-server
|
||||
ports:
|
||||
@@ -22,15 +23,15 @@ services:
|
||||
- BUILD_SOURCE_REF=e2e
|
||||
- BUILD_SOURCE_COMMIT=e2eeeeeeeeeeeeeeeeee
|
||||
environment:
|
||||
- DB_HOSTNAME=database
|
||||
- DB_USERNAME=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- DB_DATABASE_NAME=immich
|
||||
- IMMICH_MACHINE_LEARNING_ENABLED=false
|
||||
- IMMICH_TELEMETRY_INCLUDE=all
|
||||
- IMMICH_ENV=testing
|
||||
- IMMICH_PORT=2285
|
||||
- IMMICH_IGNORE_MOUNT_CHECK_ERRORS=true
|
||||
DB_HOSTNAME: database
|
||||
DB_USERNAME: postgres
|
||||
DB_PASSWORD: postgres
|
||||
DB_DATABASE_NAME: immich
|
||||
IMMICH_MACHINE_LEARNING_ENABLED: 'false'
|
||||
IMMICH_TELEMETRY_INCLUDE: all
|
||||
IMMICH_ENV: testing
|
||||
IMMICH_PORT: '2285'
|
||||
IMMICH_IGNORE_MOUNT_CHECK_ERRORS: 'true'
|
||||
volumes:
|
||||
- ./test-assets:/test-assets
|
||||
depends_on:
|
||||
@@ -42,10 +43,14 @@ services:
|
||||
- 2285:2285
|
||||
|
||||
redis:
|
||||
image: redis:6.2-alpine@sha256:46884be93652d02a96a176ccf173d1040bef365c5706aa7b6a1931caec8bfeef
|
||||
container_name: immich-e2e-redis
|
||||
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
|
||||
database:
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0@sha256:6f3e9d2c2177af16c2988ff71425d79d89ca630ec2f9c8db03209ab716542338
|
||||
container_name: immich-e2e-postgres
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
|
||||
command: -c fsync=off -c shared_preload_libraries=vchord.so -c config_file=/var/lib/postgresql/data/postgresql.conf
|
||||
environment:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
@@ -53,6 +58,7 @@ services:
|
||||
POSTGRES_DB: immich
|
||||
ports:
|
||||
- 5435:5432
|
||||
shm_size: 128mb
|
||||
healthcheck:
|
||||
test: ['CMD-SHELL', 'pg_isready -U postgres -d immich']
|
||||
interval: 1s
|
||||
|
||||
@@ -7,8 +7,13 @@
|
||||
"scripts": {
|
||||
"test": "vitest --run",
|
||||
"test:watch": "vitest",
|
||||
"test:web": "npx playwright test",
|
||||
"start:web": "npx playwright test --ui",
|
||||
"test:maintenance": "vitest --run --config vitest.maintenance.config.ts",
|
||||
"test:web": "npx playwright test --project=web",
|
||||
"test:web:maintenance": "npx playwright test --project=maintenance",
|
||||
"test:web:ui": "npx playwright test --project=ui",
|
||||
"start:web": "npx playwright test --ui --project=web",
|
||||
"start:web:maintenance": "npx playwright test --ui --project=maintenance",
|
||||
"start:web:ui": "npx playwright test --ui --project=ui",
|
||||
"format": "prettier --check .",
|
||||
"format:fix": "prettier --write .",
|
||||
"lint": "eslint \"src/**/*.ts\" --max-warnings 0",
|
||||
@@ -21,13 +26,13 @@
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.8.0",
|
||||
"@faker-js/faker": "^10.1.0",
|
||||
"@immich/cli": "file:../cli",
|
||||
"@immich/e2e-auth-server": "file:../e2e-auth-server",
|
||||
"@immich/sdk": "file:../open-api/typescript-sdk",
|
||||
"@immich/cli": "workspace:*",
|
||||
"@immich/e2e-auth-server": "workspace:*",
|
||||
"@immich/sdk": "workspace:*",
|
||||
"@playwright/test": "^1.44.1",
|
||||
"@socket.io/component-emitter": "^3.1.2",
|
||||
"@types/luxon": "^3.4.2",
|
||||
"@types/node": "^24.10.11",
|
||||
"@types/node": "^24.10.13",
|
||||
"@types/pg": "^8.15.1",
|
||||
"@types/pngjs": "^6.0.4",
|
||||
"@types/supertest": "^6.0.2",
|
||||
@@ -52,6 +57,6 @@
|
||||
"vitest": "^3.0.0"
|
||||
},
|
||||
"volta": {
|
||||
"node": "24.13.0"
|
||||
"node": "24.13.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import dotenv from 'dotenv';
|
||||
import { cpus } from 'node:os';
|
||||
import { resolve } from 'node:path';
|
||||
|
||||
dotenv.config({ path: resolve(import.meta.dirname, '.env') });
|
||||
dotenv.config({ quiet: true, path: resolve(import.meta.dirname, '.env') });
|
||||
|
||||
export const playwrightHost = process.env.PLAYWRIGHT_HOST ?? '127.0.0.1';
|
||||
export const playwrightDbHost = process.env.PLAYWRIGHT_DB_HOST ?? '127.0.0.1';
|
||||
@@ -48,7 +48,7 @@ const config: PlaywrightTestConfig = {
|
||||
{
|
||||
name: 'maintenance',
|
||||
use: { ...devices['Desktop Chrome'] },
|
||||
testDir: './src/specs/maintenance',
|
||||
testDir: './src/specs/maintenance/web',
|
||||
workers: 1,
|
||||
},
|
||||
],
|
||||
|
||||
@@ -43,10 +43,10 @@ export const errorDto = {
|
||||
message: 'Invalid share key',
|
||||
correlationId: expect.any(String),
|
||||
},
|
||||
invalidSharePassword: {
|
||||
passwordRequired: {
|
||||
error: 'Unauthorized',
|
||||
statusCode: 401,
|
||||
message: 'Invalid password',
|
||||
message: 'Password required',
|
||||
correlationId: expect.any(String),
|
||||
},
|
||||
badRequest: (message: any = null) => ({
|
||||
|
||||
@@ -239,7 +239,7 @@ describe('/shared-links', () => {
|
||||
const { status, body } = await request(app).get('/shared-links/me').query({ key: linkWithPassword.key });
|
||||
|
||||
expect(status).toBe(401);
|
||||
expect(body).toEqual(errorDto.invalidSharePassword);
|
||||
expect(body).toEqual(errorDto.passwordRequired);
|
||||
});
|
||||
|
||||
it('should get data for correct password protected link', async () => {
|
||||
|
||||
@@ -1,15 +1,20 @@
|
||||
import { defineConfig } from 'vitest/config';
|
||||
|
||||
// skip `docker compose up` if `make e2e` was already run
|
||||
const skipDockerSetup = process.env.VITEST_DISABLE_DOCKER_SETUP === 'true';
|
||||
|
||||
// skip `docker compose up` if `make e2e` was already run or if VITEST_DISABLE_DOCKER_SETUP is set
|
||||
const globalSetup: string[] = [];
|
||||
try {
|
||||
await fetch('http://127.0.0.1:2285/api/server/ping');
|
||||
} catch {
|
||||
globalSetup.push('src/docker-compose.ts');
|
||||
if (!skipDockerSetup) {
|
||||
try {
|
||||
await fetch('http://127.0.0.1:2285/api/server/ping');
|
||||
} catch {
|
||||
globalSetup.push('src/docker-compose.ts');
|
||||
}
|
||||
}
|
||||
|
||||
export default defineConfig({
|
||||
test: {
|
||||
retry: process.env.CI ? 4 : 0,
|
||||
include: ['src/specs/server/**/*.e2e-spec.ts'],
|
||||
globalSetup,
|
||||
testTimeout: 15_000,
|
||||
|
||||
28
e2e/vitest.maintenance.config.ts
Normal file
28
e2e/vitest.maintenance.config.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { defineConfig } from 'vitest/config';
|
||||
|
||||
const skipDockerSetup = process.env.VITEST_DISABLE_DOCKER_SETUP === 'true';
|
||||
|
||||
// skip `docker compose up` if `make e2e` was already run or if VITEST_DISABLE_DOCKER_SETUP is set
|
||||
const globalSetup: string[] = [];
|
||||
if (!skipDockerSetup) {
|
||||
try {
|
||||
await fetch('http://127.0.0.1:2285/api/server/ping');
|
||||
} catch {
|
||||
globalSetup.push('src/docker-compose.ts');
|
||||
}
|
||||
}
|
||||
|
||||
export default defineConfig({
|
||||
test: {
|
||||
retry: process.env.CI ? 4 : 0,
|
||||
include: ['src/specs/maintenance/server/**/*.e2e-spec.ts'],
|
||||
globalSetup,
|
||||
testTimeout: 15_000,
|
||||
pool: 'threads',
|
||||
poolOptions: {
|
||||
threads: {
|
||||
singleThread: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -1613,7 +1613,6 @@
|
||||
"not_available": "غير متاح",
|
||||
"not_in_any_album": "ليست في أي ألبوم",
|
||||
"not_selected": "لم يختار",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "ملاحظة: لتطبيق سمة التخزين على المحتويات التي تم رفعها مسبقًا، قم بتشغيل",
|
||||
"notes": "ملاحظات",
|
||||
"nothing_here_yet": "لا يوجد شيء هنا بعد",
|
||||
"notification_permission_dialog_content": "لتمكين الإخطارات ، انتقل إلى الإعدادات و اختار السماح.",
|
||||
@@ -1815,7 +1814,7 @@
|
||||
"reassigned_assets_to_new_person": "تمت إعادة تعيين {count, plural, one {# المحتوى} other {# المحتويات}} إلى شخص جديد",
|
||||
"reassing_hint": "تعيين المحتويات المحددة لشخص موجود",
|
||||
"recent": "حديث",
|
||||
"recent-albums": "ألبومات الحديثة",
|
||||
"recent_albums": "ألبومات الحديثة",
|
||||
"recent_searches": "عمليات البحث الأخيرة",
|
||||
"recently_added": "اضيف مؤخرا",
|
||||
"recently_added_page_title": "أضيف مؤخرا",
|
||||
|
||||
@@ -457,7 +457,7 @@
|
||||
"reassign": "Перапрызначыць",
|
||||
"reassing_hint": "Прыпісаць выбраныя актывы існуючай асобе",
|
||||
"recent": "Нядаўні",
|
||||
"recent-albums": "Нядаўнія альбомы",
|
||||
"recent_albums": "Нядаўнія альбомы",
|
||||
"recent_searches": "Нядаўнія пошукі",
|
||||
"recently_added": "Нядаўна дададзена",
|
||||
"refresh_faces": "Абнавіць твары",
|
||||
|
||||
@@ -1613,7 +1613,6 @@
|
||||
"not_available": "Неналично",
|
||||
"not_in_any_album": "Не е в никой албум",
|
||||
"not_selected": "Не е избрано",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Забележка: За да приложите етикета за съхранение към предварително качени активи, стартирайте",
|
||||
"notes": "Бележки",
|
||||
"nothing_here_yet": "Засега тук няма нищо",
|
||||
"notification_permission_dialog_content": "За да включиш известията, отиди в Настройки и избери Разреши.",
|
||||
@@ -1815,7 +1814,7 @@
|
||||
"reassigned_assets_to_new_person": "Преназначени {count, plural, one {# елемент} other {# елемента}} на нов човек",
|
||||
"reassing_hint": "Назначи избраните елементи на съществуващо лице",
|
||||
"recent": "Скорошни",
|
||||
"recent-albums": "Скорошни Албуми",
|
||||
"recent_albums": "Скорошни Албуми",
|
||||
"recent_searches": "Скорошни търсения",
|
||||
"recently_added": "Наскоро добавено",
|
||||
"recently_added_page_title": "Наскоро добавено",
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
"readonly_mode_enabled": "Mod blo yu no save janjem i on",
|
||||
"reassigned_assets_to_new_person": "Janjem{count, plural, one {# asset} other {# assets}} blo nu man",
|
||||
"reassing_hint": "janjem ol sumtin yu bin joos i go blo wan man",
|
||||
"recent-albums": "album i no old tu mas",
|
||||
"recent_albums": "album i no old tu mas",
|
||||
"recent_searches": "lukabout wea i no old tu mas",
|
||||
"time_based_memories_duration": "hao mus second blo wan wan imij i stap lo scrin.",
|
||||
"timezone": "taemzon",
|
||||
|
||||
15
i18n/ca.json
15
i18n/ca.json
@@ -311,7 +311,7 @@
|
||||
"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)://",
|
||||
"server_external_domain_settings_description": "Domini utilitzat per a enllaços externs",
|
||||
"server_public_users": "Usuaris públics",
|
||||
"server_public_users_description": "Tots els usuaris (nom i correu electrònic) apareixen a la llista a l'afegir un usuari als àlbums compartits. Si es desactiva, la llista només serà disponible pels usuaris administradors.",
|
||||
"server_settings": "Configuració del servidor",
|
||||
@@ -794,6 +794,11 @@
|
||||
"color": "Color",
|
||||
"color_theme": "Tema de color",
|
||||
"command": "Ordre",
|
||||
"command_palette_prompt": "Trobar ràpidament pàgines, accions o comandes",
|
||||
"command_palette_to_close": "per a tancar",
|
||||
"command_palette_to_navigate": "per a introduir",
|
||||
"command_palette_to_select": "per a seleccionar",
|
||||
"command_palette_to_show_all": "per a mostrar-ho tot",
|
||||
"comment_deleted": "Comentari esborrat",
|
||||
"comment_options": "Opcions de comentari",
|
||||
"comments_and_likes": "Comentaris i agradaments",
|
||||
@@ -1168,6 +1173,7 @@
|
||||
"exif_bottom_sheet_people": "PERSONES",
|
||||
"exif_bottom_sheet_person_add_person": "Afegir nom",
|
||||
"exit_slideshow": "Surt de la presentació de diapositives",
|
||||
"expand": "Ampliar-ho",
|
||||
"expand_all": "Ampliar-ho tot",
|
||||
"experimental_settings_new_asset_list_subtitle": "Treball en curs",
|
||||
"experimental_settings_new_asset_list_title": "Habilita la graella de fotos experimental",
|
||||
@@ -1532,7 +1538,7 @@
|
||||
"mobile_app_download_onboarding_note": "Descarregar la App de mòbil fent servir les seguents opcions",
|
||||
"model": "Model",
|
||||
"month": "Mes",
|
||||
"monthly_title_text_date_format": "MMMM y",
|
||||
"monthly_title_text_date_format": "MMMM a",
|
||||
"more": "Més",
|
||||
"move": "Moure",
|
||||
"move_down": "Moure cap avall",
|
||||
@@ -1613,7 +1619,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "En cap àlbum",
|
||||
"not_selected": "No seleccionat",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: per aplicar l'etiqueta d'emmagatzematge als actius penjats anteriorment, executeu el",
|
||||
"notes": "Notes",
|
||||
"nothing_here_yet": "No hi ha res encara",
|
||||
"notification_permission_dialog_content": "Per activar les notificacions, aneu a Configuració i seleccioneu permet.",
|
||||
@@ -1643,6 +1648,7 @@
|
||||
"online": "En línia",
|
||||
"only_favorites": "Només preferits",
|
||||
"open": "Obrir",
|
||||
"open_calendar": "Obrir el calendari",
|
||||
"open_in_map_view": "Obrir a la vista del mapa",
|
||||
"open_in_openstreetmap": "Obre a OpenStreetMap",
|
||||
"open_the_search_filters": "Obriu els filtres de cerca",
|
||||
@@ -1815,7 +1821,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {S'ha reassignat # recurs} other {S'han reassignat # recursos}} a una persona nova",
|
||||
"reassing_hint": "Assignar els elements seleccionats a una persona existent",
|
||||
"recent": "Recent",
|
||||
"recent-albums": "Àlbums recents",
|
||||
"recent_albums": "Àlbums recents",
|
||||
"recent_searches": "Cerques recents",
|
||||
"recently_added": "Afegit recentment",
|
||||
"recently_added_page_title": "Afegit recentment",
|
||||
@@ -2184,6 +2190,7 @@
|
||||
"support": "Suport",
|
||||
"support_and_feedback": "Suport i comentaris",
|
||||
"support_third_party_description": "La vostra instal·lació immich la va empaquetar un tercer. Els problemes que experimenteu poden ser causats per aquest paquet així que, si us plau, plantegeu els poblemes amb ells en primer lloc mitjançant els enllaços següents.",
|
||||
"supporter": "Contribuïdor",
|
||||
"swap_merge_direction": "Canvia la direcció d'unió",
|
||||
"sync": "Sincronitza",
|
||||
"sync_albums": "Sincronitzar àlbums",
|
||||
|
||||
13
i18n/cs.json
13
i18n/cs.json
@@ -311,7 +311,7 @@
|
||||
"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)://",
|
||||
"server_external_domain_settings_description": "Doména používaná pro externí odkazy",
|
||||
"server_public_users": "Veřejní uživatelé",
|
||||
"server_public_users_description": "Všichni uživatelé (jméno a e-mail) jsou uvedeni při přidávání uživatele do sdílených alb. Pokud je tato funkce vypnuta, bude seznam uživatelů dostupný pouze uživatelům z řad správců.",
|
||||
"server_settings": "Server",
|
||||
@@ -794,6 +794,11 @@
|
||||
"color": "Barva",
|
||||
"color_theme": "Barevný motiv",
|
||||
"command": "Příkaz",
|
||||
"command_palette_prompt": "Rychlé vyhledávání stránek, akcí nebo příkazů",
|
||||
"command_palette_to_close": "zavřít",
|
||||
"command_palette_to_navigate": "vstoupit",
|
||||
"command_palette_to_select": "vybrat",
|
||||
"command_palette_to_show_all": "zobrazit vše",
|
||||
"comment_deleted": "Komentář odstraněn",
|
||||
"comment_options": "Možnosti komentáře",
|
||||
"comments_and_likes": "Komentáře a lajky",
|
||||
@@ -1168,6 +1173,7 @@
|
||||
"exif_bottom_sheet_people": "LIDÉ",
|
||||
"exif_bottom_sheet_person_add_person": "Přidat jméno",
|
||||
"exit_slideshow": "Ukončit prezentaci",
|
||||
"expand": "Rozbalit",
|
||||
"expand_all": "Rozbalit vše",
|
||||
"experimental_settings_new_asset_list_subtitle": "Zpracovávám",
|
||||
"experimental_settings_new_asset_list_title": "Povolení experimentální mřížky fotografií",
|
||||
@@ -1613,7 +1619,6 @@
|
||||
"not_available": "Není k dispozici",
|
||||
"not_in_any_album": "Bez alba",
|
||||
"not_selected": "Není vybráno",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Upozornění: Chcete-li použít štítek úložiště na dříve nahrané položky, spusťte příkaz",
|
||||
"notes": "Poznámky",
|
||||
"nothing_here_yet": "Zatím zde nic není",
|
||||
"notification_permission_dialog_content": "Chcete-li povolit oznámení, přejděte do nastavení a vyberte možnost povolit.",
|
||||
@@ -1643,6 +1648,7 @@
|
||||
"online": "Online",
|
||||
"only_favorites": "Pouze oblíbené",
|
||||
"open": "Otevřít",
|
||||
"open_calendar": "Otevřít kalendář",
|
||||
"open_in_map_view": "Otevřít v zobrazení mapy",
|
||||
"open_in_openstreetmap": "Otevřít v OpenStreetMap",
|
||||
"open_the_search_filters": "Otevřít vyhledávací filtry",
|
||||
@@ -1815,7 +1821,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {Přeřazena # položka} few {Přeřazeny # položky} other {Přeřazeno # položek}} na novou osobu",
|
||||
"reassing_hint": "Přiřazení vybraných položek existující osobě",
|
||||
"recent": "Nedávné",
|
||||
"recent-albums": "Nedávná alba",
|
||||
"recent_albums": "Nedávná alba",
|
||||
"recent_searches": "Nedávná vyhledávání",
|
||||
"recently_added": "Nedávno přidané",
|
||||
"recently_added_page_title": "Nedávno přidané",
|
||||
@@ -2184,6 +2190,7 @@
|
||||
"support": "Podpora",
|
||||
"support_and_feedback": "Podpora a zpětná vazba",
|
||||
"support_third_party_description": "Vaše Immich instalace byla připravena třetí stranou. Problémy, které se u vás vyskytly, mohou být způsobeny tímto balíčkem, proto se na ně obraťte v první řadě pomocí níže uvedených odkazů.",
|
||||
"supporter": "Podporovatel",
|
||||
"swap_merge_direction": "Obrátit směr sloučení",
|
||||
"sync": "Synchronizovat",
|
||||
"sync_albums": "Synchronizovat alba",
|
||||
|
||||
@@ -1613,7 +1613,6 @@
|
||||
"not_available": "ikke tilgængelig",
|
||||
"not_in_any_album": "Ikke i noget album",
|
||||
"not_selected": "Ikke valgt",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Bemærk: For at anvende Lagringsmærkat på tidligere uploadede medier, kør opgaven igen",
|
||||
"notes": "Noter",
|
||||
"nothing_here_yet": "Intet her endnu",
|
||||
"notification_permission_dialog_content": "Gå til indstillinger for at slå notifikationer til.",
|
||||
@@ -1815,7 +1814,7 @@
|
||||
"reassigned_assets_to_new_person": "Gentildelt {count, plural, one {# aktiv} other {# aktiver}} til en ny person",
|
||||
"reassing_hint": "Tildel valgte mediefiler til en eksisterende person",
|
||||
"recent": "For nylig",
|
||||
"recent-albums": "Seneste albums",
|
||||
"recent_albums": "Seneste albums",
|
||||
"recent_searches": "Seneste søgninger",
|
||||
"recently_added": "Senest tilføjet",
|
||||
"recently_added_page_title": "Nyligt tilføjet",
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"about": "Über",
|
||||
"about": "Über Immich",
|
||||
"account": "Konto",
|
||||
"account_settings": "Kontoeinstellungen",
|
||||
"acknowledge": "Bestätigen",
|
||||
"acknowledge": "Verstanden",
|
||||
"action": "Aktion",
|
||||
"action_common_update": "Aktualisieren",
|
||||
"action_description": "Eine Reihe von Aktionen, die an den gefilterten Assets ausgeführt werden sollen",
|
||||
@@ -1613,7 +1613,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "In keinem Album",
|
||||
"not_selected": "Nicht ausgewählt",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Hinweis: Um eine Speicherpfadbezeichnung anzuwenden, starte den",
|
||||
"notes": "Notizen",
|
||||
"nothing_here_yet": "Noch nichts hier",
|
||||
"notification_permission_dialog_content": "Um Benachrichtigungen zu aktivieren, navigiere zu Einstellungen und klicke \"Erlauben\".",
|
||||
@@ -1815,7 +1814,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} einer neuen Person zugewiesen",
|
||||
"reassing_hint": "Markierte Dateien einer vorhandenen Person zuweisen",
|
||||
"recent": "Neueste",
|
||||
"recent-albums": "Neueste Alben",
|
||||
"recent_albums": "Neueste Alben",
|
||||
"recent_searches": "Letzte Suchen",
|
||||
"recently_added": "Kürzlich hinzugefügt",
|
||||
"recently_added_page_title": "Zuletzt hinzugefügt",
|
||||
|
||||
@@ -1613,7 +1613,6 @@
|
||||
"not_available": "Μ/Δ (Μη Διαθέσιμο)",
|
||||
"not_in_any_album": "Σε κανένα άλμπουμ",
|
||||
"not_selected": "Δεν επιλέχθηκε",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Σημείωση: Για να εφαρμόσετε την Ετικέτα Αποθήκευσης σε στοιχεία που έχουν μεταφορτωθεί προηγουμένως, εκτελέστε το",
|
||||
"notes": "Σημειώσεις",
|
||||
"nothing_here_yet": "Τίποτα εδώ ακόμα",
|
||||
"notification_permission_dialog_content": "Για να ενεργοποιήσετε τις ειδοποιήσεις, μεταβείτε στις Ρυθμίσεις και επιλέξτε να επιτρέπεται.",
|
||||
@@ -1815,7 +1814,7 @@
|
||||
"reassigned_assets_to_new_person": "Η ανάθεση {count, plural, one {# αρχείου} other {# αρχείων}} σε νέο άτομο",
|
||||
"reassing_hint": "Ανάθεση των επιλεγμένων στοιχείων σε υπάρχον άτομο",
|
||||
"recent": "Πρόσφατα",
|
||||
"recent-albums": "Πρόσφατα άλμπουμ",
|
||||
"recent_albums": "Πρόσφατα άλμπουμ",
|
||||
"recent_searches": "Πρόσφατες αναζητήσεις",
|
||||
"recently_added": "Προστέθηκαν πρόσφατα",
|
||||
"recently_added_page_title": "Προστέθηκαν Πρόσφατα",
|
||||
|
||||
15
i18n/en.json
15
i18n/en.json
@@ -311,7 +311,7 @@
|
||||
"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)://",
|
||||
"server_external_domain_settings_description": "Domain used for external links",
|
||||
"server_public_users": "Public Users",
|
||||
"server_public_users_description": "All users (name and email) are listed when adding a user to shared albums. When disabled, the user list will only be available to admin users.",
|
||||
"server_settings": "Server Settings",
|
||||
@@ -794,6 +794,11 @@
|
||||
"color": "Color",
|
||||
"color_theme": "Color theme",
|
||||
"command": "Command",
|
||||
"command_palette_prompt": "Quickly find pages, actions, or commands",
|
||||
"command_palette_to_close": "to close",
|
||||
"command_palette_to_navigate": "to enter",
|
||||
"command_palette_to_select": "to select",
|
||||
"command_palette_to_show_all": "to show all",
|
||||
"comment_deleted": "Comment deleted",
|
||||
"comment_options": "Comment options",
|
||||
"comments_and_likes": "Comments & likes",
|
||||
@@ -1168,6 +1173,7 @@
|
||||
"exif_bottom_sheet_people": "PEOPLE",
|
||||
"exif_bottom_sheet_person_add_person": "Add name",
|
||||
"exit_slideshow": "Exit Slideshow",
|
||||
"expand": "Expand",
|
||||
"expand_all": "Expand all",
|
||||
"experimental_settings_new_asset_list_subtitle": "Work in progress",
|
||||
"experimental_settings_new_asset_list_title": "Enable experimental photo grid",
|
||||
@@ -1212,6 +1218,7 @@
|
||||
"filter_description": "Conditions to filter the target assets",
|
||||
"filter_people": "Filter people",
|
||||
"filter_places": "Filter places",
|
||||
"filter_tags": "Filter tags",
|
||||
"filters": "Filters",
|
||||
"find_them_fast": "Find them fast by name with search",
|
||||
"first": "First",
|
||||
@@ -1613,7 +1620,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "Not in any album",
|
||||
"not_selected": "Not selected",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Note: To apply the Storage Label to previously uploaded assets, run the",
|
||||
"notes": "Notes",
|
||||
"nothing_here_yet": "Nothing here yet",
|
||||
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
||||
@@ -1643,6 +1649,7 @@
|
||||
"online": "Online",
|
||||
"only_favorites": "Only favorites",
|
||||
"open": "Open",
|
||||
"open_calendar": "Open calendar",
|
||||
"open_in_map_view": "Open in map view",
|
||||
"open_in_openstreetmap": "Open in OpenStreetMap",
|
||||
"open_the_search_filters": "Open the search filters",
|
||||
@@ -1815,7 +1822,7 @@
|
||||
"reassigned_assets_to_new_person": "Re-assigned {count, plural, one {# asset} other {# assets}} to a new person",
|
||||
"reassing_hint": "Assign selected assets to an existing person",
|
||||
"recent": "Recent",
|
||||
"recent-albums": "Recent albums",
|
||||
"recent_albums": "Recent albums",
|
||||
"recent_searches": "Recent searches",
|
||||
"recently_added": "Recently added",
|
||||
"recently_added_page_title": "Recently Added",
|
||||
@@ -1939,6 +1946,7 @@
|
||||
"search_filter_ocr": "Search by OCR",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_filter_star_rating": "Star Rating",
|
||||
"search_filter_tags_title": "Select tags",
|
||||
"search_for": "Search for",
|
||||
"search_for_existing_person": "Search for existing person",
|
||||
"search_no_more_result": "No more results",
|
||||
@@ -2184,6 +2192,7 @@
|
||||
"support": "Support",
|
||||
"support_and_feedback": "Support & Feedback",
|
||||
"support_third_party_description": "Your Immich installation was packaged by a third-party. Issues you experience may be caused by that package, so please raise issues with them in the first instance using the links below.",
|
||||
"supporter": "Supporter",
|
||||
"swap_merge_direction": "Swap merge direction",
|
||||
"sync": "Sync",
|
||||
"sync_albums": "Sync albums",
|
||||
|
||||
19
i18n/es.json
19
i18n/es.json
@@ -311,7 +311,7 @@
|
||||
"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)://",
|
||||
"server_external_domain_settings_description": "Dominio usado para enlaces externos",
|
||||
"server_public_users": "Usuarios públicos",
|
||||
"server_public_users_description": "Cuando se añade un usuario a los álbumes compartidos, todos los usuarios aparecen en una lista con su nombre y su correo electrónico. Si deshabilita esta opción, solo los administradores podrán ver la lista de usuarios.",
|
||||
"server_settings": "Configuración del servidor",
|
||||
@@ -794,6 +794,11 @@
|
||||
"color": "Color",
|
||||
"color_theme": "Color del tema",
|
||||
"command": "Comando",
|
||||
"command_palette_prompt": "Encuentra rápidamente páginas, acciones o comandos",
|
||||
"command_palette_to_close": "para cerrar",
|
||||
"command_palette_to_navigate": "para entrar",
|
||||
"command_palette_to_select": "para seleccionar",
|
||||
"command_palette_to_show_all": "para mostrar todo",
|
||||
"comment_deleted": "Comentario borrado",
|
||||
"comment_options": "Opciones de comentarios",
|
||||
"comments_and_likes": "Comentarios y me gusta",
|
||||
@@ -1168,6 +1173,7 @@
|
||||
"exif_bottom_sheet_people": "PERSONAS",
|
||||
"exif_bottom_sheet_person_add_person": "Añadir nombre",
|
||||
"exit_slideshow": "Salir de la presentación",
|
||||
"expand": "Expandir",
|
||||
"expand_all": "Expandir todo",
|
||||
"experimental_settings_new_asset_list_subtitle": "Trabajo en progreso",
|
||||
"experimental_settings_new_asset_list_title": "Habilitar cuadrícula fotográfica experimental",
|
||||
@@ -1613,7 +1619,6 @@
|
||||
"not_available": "N/D",
|
||||
"not_in_any_album": "Sin álbum",
|
||||
"not_selected": "No seleccionado",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar la etiqueta de almacenamiento a los recursos que ya se subieron, ejecute la",
|
||||
"notes": "Notas",
|
||||
"nothing_here_yet": "Sin nada aún",
|
||||
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
|
||||
@@ -1643,6 +1648,7 @@
|
||||
"online": "En línea",
|
||||
"only_favorites": "Solo favoritos",
|
||||
"open": "Abierto",
|
||||
"open_calendar": "Abrir calendario",
|
||||
"open_in_map_view": "Abrir en la vista del mapa",
|
||||
"open_in_openstreetmap": "Abrir en OpenStreetMap",
|
||||
"open_the_search_filters": "Abre los filtros de búsqueda",
|
||||
@@ -1765,7 +1771,7 @@
|
||||
"profile_picture_set": "Conjunto de imágenes de perfil.",
|
||||
"public_album": "Álbum público",
|
||||
"public_share": "Compartir públicamente",
|
||||
"purchase_account_info": "Seguidor",
|
||||
"purchase_account_info": "Colaborador",
|
||||
"purchase_activated_subtitle": "Gracias por apoyar a Immich y al software de código abierto",
|
||||
"purchase_activated_time": "Activado el {date}",
|
||||
"purchase_activated_title": "Su clave ha sido activada correctamente",
|
||||
@@ -1778,7 +1784,7 @@
|
||||
"purchase_button_select": "Seleccionar",
|
||||
"purchase_failed_activation": "¡Error al activar! ¡Por favor, revisa tu correo electrónico para obtener la clave del producto correcta!",
|
||||
"purchase_individual_description_1": "Para un usuario",
|
||||
"purchase_individual_description_2": "Estado de soporte",
|
||||
"purchase_individual_description_2": "Estatus de colaborador",
|
||||
"purchase_individual_title": "Individual",
|
||||
"purchase_input_suggestion": "¿Tiene una clave de producto? Introdúzcala a continuación",
|
||||
"purchase_license_subtitle": "Compre Immich para apoyar el desarrollo continuo del servicio",
|
||||
@@ -1794,7 +1800,7 @@
|
||||
"purchase_remove_server_product_key": "Eliminar la clave de producto del servidor",
|
||||
"purchase_remove_server_product_key_prompt": "¿Está seguro de que desea eliminar la clave de producto del servidor?",
|
||||
"purchase_server_description_1": "Para todo el servidor",
|
||||
"purchase_server_description_2": "Estado del soporte",
|
||||
"purchase_server_description_2": "Estatus de colaborador",
|
||||
"purchase_server_title": "Servidor",
|
||||
"purchase_settings_server_activated": "La clave del producto del servidor la administra el administrador",
|
||||
"query_asset_id": "Consultar ID de recurso",
|
||||
@@ -1815,7 +1821,7 @@
|
||||
"reassigned_assets_to_new_person": "Reasignado {count, plural, one {# recurso} other {# recursos}} a un nuevo usuario",
|
||||
"reassing_hint": "Asignar recursos seleccionados a una persona existente",
|
||||
"recent": "Reciente",
|
||||
"recent-albums": "Últimos álbumes",
|
||||
"recent_albums": "Últimos álbumes",
|
||||
"recent_searches": "Búsquedas recientes",
|
||||
"recently_added": "Añadidos recientemente",
|
||||
"recently_added_page_title": "Recién añadidos",
|
||||
@@ -2184,6 +2190,7 @@
|
||||
"support": "Soporte",
|
||||
"support_and_feedback": "Soporte y comentarios",
|
||||
"support_third_party_description": "Esta instalación de Immich fue empaquetada por un tercero. Los problemas actuales pueden ser ocasionados por ese paquete; por favor, discuta sus inconvenientes con el empaquetador antes de usar los enlaces de abajo.",
|
||||
"supporter": "Colaborador",
|
||||
"swap_merge_direction": "Alternar dirección de mezcla",
|
||||
"sync": "Sincronizar",
|
||||
"sync_albums": "Sincronizar álbumes",
|
||||
|
||||
13
i18n/et.json
13
i18n/et.json
@@ -311,7 +311,7 @@
|
||||
"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)://",
|
||||
"server_external_domain_settings_description": "Domeen väliste linkide jaoks",
|
||||
"server_public_users": "Avalikud kasutajad",
|
||||
"server_public_users_description": "Kasutaja jagatud albumisse lisamisel kuvatakse kõiki kasutajaid (nime ja e-posti aadressiga). Kui keelatud, kuvatakse kasutajate nimekirja ainult administraatoritele.",
|
||||
"server_settings": "Serveri seaded",
|
||||
@@ -794,6 +794,11 @@
|
||||
"color": "Värv",
|
||||
"color_theme": "Värviteema",
|
||||
"command": "Käsk",
|
||||
"command_palette_prompt": "Leia kiirelt lehti, tegevusi või käske",
|
||||
"command_palette_to_close": "sulge",
|
||||
"command_palette_to_navigate": "sisene",
|
||||
"command_palette_to_select": "vali",
|
||||
"command_palette_to_show_all": "näita kõiki",
|
||||
"comment_deleted": "Kommentaar kustutatud",
|
||||
"comment_options": "Kommentaari valikud",
|
||||
"comments_and_likes": "Kommentaarid ja meeldimised",
|
||||
@@ -1168,6 +1173,7 @@
|
||||
"exif_bottom_sheet_people": "ISIKUD",
|
||||
"exif_bottom_sheet_person_add_person": "Lisa nimi",
|
||||
"exit_slideshow": "Sulge slaidiesitlus",
|
||||
"expand": "Laienda",
|
||||
"expand_all": "Näita kõik",
|
||||
"experimental_settings_new_asset_list_subtitle": "Töös",
|
||||
"experimental_settings_new_asset_list_title": "Luba eksperimentaalne fotoruudistik",
|
||||
@@ -1613,7 +1619,6 @@
|
||||
"not_available": "Pole saadaval",
|
||||
"not_in_any_album": "Pole üheski albumis",
|
||||
"not_selected": "Ei ole valitud",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Märkus: Et rakendada talletussilt varem üleslaaditud üksustele, käivita",
|
||||
"notes": "Märkused",
|
||||
"nothing_here_yet": "Siin pole veel midagi",
|
||||
"notification_permission_dialog_content": "Teavituste lubamiseks mine Seadetesse ja vali lubamine.",
|
||||
@@ -1643,6 +1648,7 @@
|
||||
"online": "Ühendatud",
|
||||
"only_favorites": "Ainult lemmikud",
|
||||
"open": "Ava",
|
||||
"open_calendar": "Ava kalender",
|
||||
"open_in_map_view": "Ava kaardi vaates",
|
||||
"open_in_openstreetmap": "Ava OpenStreetMap",
|
||||
"open_the_search_filters": "Ava otsingufiltrid",
|
||||
@@ -1815,7 +1821,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {# üksus} other {# üksust}} seostatud uue isikuga",
|
||||
"reassing_hint": "Seosta valitud üksused olemasoleva isikuga",
|
||||
"recent": "Hiljutine",
|
||||
"recent-albums": "Hiljutised albumid",
|
||||
"recent_albums": "Hiljutised albumid",
|
||||
"recent_searches": "Hiljutised otsingud",
|
||||
"recently_added": "Hiljuti lisatud",
|
||||
"recently_added_page_title": "Hiljuti lisatud",
|
||||
@@ -2184,6 +2190,7 @@
|
||||
"support": "Tugi",
|
||||
"support_and_feedback": "Tugi ja tagasiside",
|
||||
"support_third_party_description": "Sinu Immich'i install on kolmanda osapoole pakendatud. Probleemid, mida täheldad, võivad olla põhjustatud selle pakendamise poolt, seega võta esmajärjekorras nendega ühendust, kasutades allolevaid linke.",
|
||||
"supporter": "Toetaja",
|
||||
"swap_merge_direction": "Muuda ühendamise suunda",
|
||||
"sync": "Sünkrooni",
|
||||
"sync_albums": "Sünkrooni albumid",
|
||||
|
||||
@@ -1568,7 +1568,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "Ei yhdessäkään albumissa",
|
||||
"not_selected": "Ei valittu",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Huom: Jotta voit soveltaa tallennustunnistetta aiemmin ladattuihin kohteisiin, suorita",
|
||||
"notes": "Muistiinpanot",
|
||||
"nothing_here_yet": "Ei vielä mitään",
|
||||
"notification_permission_dialog_content": "Ottaaksesi ilmoitukset käyttöön, siirry asetuksiin ja valitse 'salli'.",
|
||||
@@ -1767,7 +1766,7 @@
|
||||
"reassigned_assets_to_new_person": "Määritetty {count, plural, one {# media} other {# mediaa}} uudelle henkilölle",
|
||||
"reassing_hint": "Määritä valitut mediat käyttäjälle",
|
||||
"recent": "Viimeisin",
|
||||
"recent-albums": "Viimeisimmät albumit",
|
||||
"recent_albums": "Viimeisimmät albumit",
|
||||
"recent_searches": "Edelliset haut",
|
||||
"recently_added": "Viimeksi lisätty",
|
||||
"recently_added_page_title": "Viimeksi lisätyt",
|
||||
|
||||
13
i18n/fr.json
13
i18n/fr.json
@@ -311,7 +311,7 @@
|
||||
"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)://",
|
||||
"server_external_domain_settings_description": "Nom de domaine utilisé pour les liens externes",
|
||||
"server_public_users": "Utilisateurs publics",
|
||||
"server_public_users_description": "Tous les utilisateurs (nom et courriel) sont listés lors de l'ajout d'un utilisateur à des albums partagés. Quand cela est désactivé, la liste des utilisateurs est uniquement disponible pour les comptes administrateurs.",
|
||||
"server_settings": "Paramètres du serveur",
|
||||
@@ -794,6 +794,11 @@
|
||||
"color": "Couleur",
|
||||
"color_theme": "Thème de couleur",
|
||||
"command": "Commande",
|
||||
"command_palette_prompt": "Trouver rapidement des pages, actions ou commandes",
|
||||
"command_palette_to_close": "pour fermer",
|
||||
"command_palette_to_navigate": "pour entrer",
|
||||
"command_palette_to_select": "pour sélectionner",
|
||||
"command_palette_to_show_all": "pour tout afficher",
|
||||
"comment_deleted": "Commentaire supprimé",
|
||||
"comment_options": "Options des commentaires",
|
||||
"comments_and_likes": "Commentaires et \"J'aime\"",
|
||||
@@ -1168,6 +1173,7 @@
|
||||
"exif_bottom_sheet_people": "PERSONNES",
|
||||
"exif_bottom_sheet_person_add_person": "Ajouter un nom",
|
||||
"exit_slideshow": "Quitter le diaporama",
|
||||
"expand": "Développer",
|
||||
"expand_all": "Tout développer",
|
||||
"experimental_settings_new_asset_list_subtitle": "En cours de développement",
|
||||
"experimental_settings_new_asset_list_title": "Activer la grille de photos expérimentale",
|
||||
@@ -1613,7 +1619,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "Dans aucun album",
|
||||
"not_selected": "Non sélectionné",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Note : Pour appliquer l'étiquette de stockage aux médias précédemment envoyés, exécutez",
|
||||
"notes": "Notes",
|
||||
"nothing_here_yet": "Rien pour le moment",
|
||||
"notification_permission_dialog_content": "Pour activer les notifications, allez dans Paramètres et sélectionnez Autoriser.",
|
||||
@@ -1643,6 +1648,7 @@
|
||||
"online": "En ligne",
|
||||
"only_favorites": "Uniquement les favoris",
|
||||
"open": "Ouvrir",
|
||||
"open_calendar": "Ouvrir le calendrier",
|
||||
"open_in_map_view": "Montrer sur la carte",
|
||||
"open_in_openstreetmap": "Ouvrir dans OpenStreetMap",
|
||||
"open_the_search_filters": "Ouvrir les filtres de recherche",
|
||||
@@ -1815,7 +1821,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {# média réattribué} other {# médias réattribués}} à une nouvelle personne",
|
||||
"reassing_hint": "Attribuer ces médias à une personne existante",
|
||||
"recent": "Récent",
|
||||
"recent-albums": "Albums récents",
|
||||
"recent_albums": "Albums récents",
|
||||
"recent_searches": "Recherches récentes",
|
||||
"recently_added": "Récemment ajouté",
|
||||
"recently_added_page_title": "Récemment ajouté",
|
||||
@@ -2184,6 +2190,7 @@
|
||||
"support": "Soutenir",
|
||||
"support_and_feedback": "Support & Retours",
|
||||
"support_third_party_description": "Votre installation d'Immich est packagée via une application tierce. Si vous rencontrez des anomalies, elles peuvent venir de ce packaging tiers, merci de créer les anomalies avec ces tiers en premier lieu en utilisant les liens ci-dessous.",
|
||||
"supporter": "Contributeur",
|
||||
"swap_merge_direction": "Inverser la direction de fusion",
|
||||
"sync": "Synchroniser",
|
||||
"sync_albums": "Synchroniser dans des albums",
|
||||
|
||||
13
i18n/ga.json
13
i18n/ga.json
@@ -311,7 +311,7 @@
|
||||
"search_jobs": "Cuardaigh poist…",
|
||||
"send_welcome_email": "Seol ríomhphost fáilte",
|
||||
"server_external_domain_settings": "Fearann seachtrach",
|
||||
"server_external_domain_settings_description": "Fearann le haghaidh naisc chomhroinnte poiblí, lena n-áirítear http(s)://",
|
||||
"server_external_domain_settings_description": "Fearann a úsáidtear le haghaidh naisc sheachtracha",
|
||||
"server_public_users": "Úsáideoirí Poiblí",
|
||||
"server_public_users_description": "Liostaítear gach úsáideoir (ainm agus ríomhphost) nuair a chuirtear úsáideoir le halbaim chomhroinnte. Nuair a bhíonn sé díchumasaithe, ní bheidh an liosta úsáideoirí ar fáil ach d’úsáideoirí riarthóra.",
|
||||
"server_settings": "Socruithe Freastalaí",
|
||||
@@ -794,6 +794,11 @@
|
||||
"color": "Dath",
|
||||
"color_theme": "Téama datha",
|
||||
"command": "Ordú",
|
||||
"command_palette_prompt": "Aimsigh leathanaigh, gníomhartha nó orduithe go tapa",
|
||||
"command_palette_to_close": "a dhúnadh",
|
||||
"command_palette_to_navigate": "dul isteach",
|
||||
"command_palette_to_select": "a roghnú",
|
||||
"command_palette_to_show_all": "chun gach rud a thaispeáint",
|
||||
"comment_deleted": "Trácht scriosta",
|
||||
"comment_options": "Roghanna tráchta",
|
||||
"comments_and_likes": "Tráchtanna & Is maith liom",
|
||||
@@ -1168,6 +1173,7 @@
|
||||
"exif_bottom_sheet_people": "DAOINE",
|
||||
"exif_bottom_sheet_person_add_person": "Cuir ainm leis",
|
||||
"exit_slideshow": "Scoir an Taispeántais Sleamhnán",
|
||||
"expand": "Leathnaigh",
|
||||
"expand_all": "Leathnaigh gach rud",
|
||||
"experimental_settings_new_asset_list_subtitle": "Obair ar siúl",
|
||||
"experimental_settings_new_asset_list_title": "Cumasaigh eangach grianghraf turgnamhach",
|
||||
@@ -1613,7 +1619,6 @@
|
||||
"not_available": "N/B",
|
||||
"not_in_any_album": "Ní in aon albam",
|
||||
"not_selected": "Níor roghnaíodh",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Nóta: Chun an Lipéad Stórála a chur i bhfeidhm ar shócmhainní a uaslódáileadh roimhe seo, rith an",
|
||||
"notes": "Nótaí",
|
||||
"nothing_here_yet": "Níl aon rud anseo fós",
|
||||
"notification_permission_dialog_content": "Chun fógraí a chumasú, téigh go Socruithe agus roghnaigh ceadaigh.",
|
||||
@@ -1643,6 +1648,7 @@
|
||||
"online": "Ar líne",
|
||||
"only_favorites": "Is fearr leat amháin",
|
||||
"open": "Oscail",
|
||||
"open_calendar": "Oscail an féilire",
|
||||
"open_in_map_view": "Oscail i radharc léarscáile",
|
||||
"open_in_openstreetmap": "Oscail in OpenStreetMap",
|
||||
"open_the_search_filters": "Oscail na scagairí cuardaigh",
|
||||
@@ -1815,7 +1821,7 @@
|
||||
"reassigned_assets_to_new_person": "Athshannadh {count, plural, one {# sócmhainn} other {# sócmhainní}} do dhuine nua",
|
||||
"reassing_hint": "Sannadh sócmhainní roghnaithe do dhuine atá ann cheana féin",
|
||||
"recent": "Le déanaí",
|
||||
"recent-albums": "Albaim le déanaí",
|
||||
"recent_albums": "Albaim le déanaí",
|
||||
"recent_searches": "Cuardaigh le déanaí",
|
||||
"recently_added": "Cuireadh leis le déanaí",
|
||||
"recently_added_page_title": "Curtha leis le Déanaí",
|
||||
@@ -2184,6 +2190,7 @@
|
||||
"support": "Tacaíocht",
|
||||
"support_and_feedback": "Tacaíocht & Aiseolas",
|
||||
"support_third_party_description": "Rinne tríú páirtí pacáiste de do shuiteáil Immich. D’fhéadfadh sé gur an pacáiste sin ba chúis le fadhbanna a bhíonn agat, mar sin tabhair ceisteanna dóibh ar dtús trí na naisc thíos a úsáid.",
|
||||
"supporter": "Tacaíochtaí",
|
||||
"swap_merge_direction": "Malartaigh treo an chumaisc",
|
||||
"sync": "Sioncrónaigh",
|
||||
"sync_albums": "Sioncrónaigh albaim",
|
||||
|
||||
@@ -1613,7 +1613,6 @@
|
||||
"not_available": "Non dispoñible",
|
||||
"not_in_any_album": "Non está en ningún álbum",
|
||||
"not_selected": "Non seleccionado",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar a Etiqueta de Almacenamento a activos cargados previamente, execute o",
|
||||
"notes": "Notas",
|
||||
"nothing_here_yet": "Aínda nada por aquí",
|
||||
"notification_permission_dialog_content": "Para activar as notificacións, vaia a Axustes e seleccione permitir.",
|
||||
@@ -1815,7 +1814,7 @@
|
||||
"reassigned_assets_to_new_person": "Reasignados {count, plural, one {# activo} other {# activos}} a unha nova persoa",
|
||||
"reassing_hint": "Asignar activos seleccionados a unha persoa existente",
|
||||
"recent": "Recente",
|
||||
"recent-albums": "Álbums recentes",
|
||||
"recent_albums": "Álbums recentes",
|
||||
"recent_searches": "Buscas recentes",
|
||||
"recently_added": "Engadido recentemente",
|
||||
"recently_added_page_title": "Engadido Recentemente",
|
||||
|
||||
@@ -1491,7 +1491,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "I keinem Album",
|
||||
"not_selected": "Nöd usgwählt",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Hiwiis: Zum e Spycherpfad-Bezeichnig aawehde, start de",
|
||||
"notes": "Notize",
|
||||
"nothing_here_yet": "No nüt do",
|
||||
"notification_permission_dialog_content": "Zum Benachrichtige aktiviere, navigier zu Iistellige und drück \"Erlaube\".",
|
||||
|
||||
@@ -1491,7 +1491,6 @@
|
||||
"not_available": "לא רלוונטי",
|
||||
"not_in_any_album": "לא בשום אלבום",
|
||||
"not_selected": "לא נבחרו",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "הערה: כדי להחיל את תווית האחסון על תמונות שהועלו בעבר, הפעל את",
|
||||
"notes": "הערות",
|
||||
"nothing_here_yet": "אין כאן כלום עדיין",
|
||||
"notification_permission_dialog_content": "כדי לאפשר התראות, לך להגדרות המכשיר ובחר אפשר.",
|
||||
@@ -1687,7 +1686,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {תמונה # הוקצתה} other {# תמונות הוקצו}} מחדש לאדם חדש",
|
||||
"reassing_hint": "הקצאת תמונות שנבחרו לאדם קיים",
|
||||
"recent": "חדש",
|
||||
"recent-albums": "אלבומים אחרונים",
|
||||
"recent_albums": "אלבומים אחרונים",
|
||||
"recent_searches": "חיפושים אחרונים",
|
||||
"recently_added": "נוסף לאחרונה",
|
||||
"recently_added_page_title": "נוסף לאחרונה",
|
||||
|
||||
96
i18n/hi.json
96
i18n/hi.json
@@ -56,7 +56,7 @@
|
||||
"authentication_settings_reenable": "पुनः सक्षम करने के लिए, <link>Server Command</link> का प्रयोग करे।",
|
||||
"background_task_job": "पृष्ठभूमि कार्य",
|
||||
"backup_database": "डेटाबेस डंप बनाएं",
|
||||
"backup_database_enable_description": "Enable database dumps",
|
||||
"backup_database_enable_description": "डेटाबेस डंप चालू करें",
|
||||
"backup_keep_last_amount": "रखने के लिए पिछले डंप की मात्रा",
|
||||
"backup_onboarding_1_description": "क्लाउड में या किसी अन्य भौतिक स्थान पर ऑफसाइट प्रतिलिपि।",
|
||||
"backup_onboarding_2_description": "विभिन्न उपकरणों पर स्थानीय प्रतियाँ। इसमें मुख्य फ़ाइलें और उन फ़ाइलों का स्थानीय बैकअप शामिल है।",
|
||||
@@ -104,6 +104,8 @@
|
||||
"image_preview_description": "मेटाडेटा रहित मध्यम आकार की छवि, जिसका उपयोग एकल संपत्ति देखने और मशीन लर्निंग के लिए होता है",
|
||||
"image_preview_quality_description": "पूर्वावलोकन की गुणवत्ता (1 से 100 तक)। अधिक मान बेहतर गुणवत्ता देता है, लेकिन इससे फ़ाइल का आकार बढ़ता है और ऐप की प्रतिक्रिया क्षमता कम हो सकती है। बहुत कम मान मशीन लर्निंग की गुणवत्ता को प्रभावित कर सकता है।",
|
||||
"image_preview_title": "पूर्वदर्शन सेटिंग्स",
|
||||
"image_progressive": "प्रगतिशील",
|
||||
"image_progressive_description": "JPEG छवियों को क्रमिक रूप से लोड करने के लिए उन्हें प्रोग्रेसिवली एनकोड करें। इसका WebP छवियों पर कोई प्रभाव नहीं पड़ता है।",
|
||||
"image_quality": "गुणवत्ता",
|
||||
"image_resolution": "रिज़ॉल्यूशन",
|
||||
"image_resolution_description": "उच्चतर रिज़ॉल्यूशन अधिक विवरण सुरक्षित रख सकता है, लेकिन एन्कोड करने में अधिक समय लेता है, फ़ाइल आकार बड़ा होता है और ऐप की प्रतिक्रियाशीलता कम हो सकती है।",
|
||||
@@ -188,11 +190,23 @@
|
||||
"machine_learning_smart_search_enabled": "स्मार्ट खोज सक्षम करें",
|
||||
"machine_learning_smart_search_enabled_description": "यदि अक्षम किया गया है, तो स्मार्ट खोज के लिए छवियों को एन्कोड नहीं किया जाएगा।",
|
||||
"machine_learning_url_description": "मशीन लर्निंग सर्वर का URL। यदि एक से अधिक URL दिए गए हैं, तो प्रत्येक सर्वर को एक-एक करके कोशिश किया जाएगा, पहले से आखिरी तक, जब तक कोई सफलतापूर्वक प्रतिक्रिया न दे। जो सर्वर प्रतिक्रिया नहीं देते, उन्हें अस्थायी रूप से नजरअंदाज किया जाएगा जब तक वे फिर से ऑनलाइन न हों।",
|
||||
"maintenance_delete_backup": "बैकअप डिलीट करें",
|
||||
"maintenance_delete_backup_description": "यह फ़ाइल स्थायी रूप से मिटा दी जाएगी। इसे वापस नहीं लाया जा सकेगा।",
|
||||
"maintenance_delete_error": "बैकअप मिटाया नहीं जा सका।",
|
||||
"maintenance_restore_backup": "बैकअप वापस लाएँ",
|
||||
"maintenance_restore_backup_description": "Immich का सारा डेटा पूरी तरह मिटा दिया जाएगा और चुने गए बैकअप से डेटा वापस लाया जाएगा। आगे बढ़ने से पहले एक नया बैकअप बनाया जाएगा।",
|
||||
"maintenance_restore_backup_different_version": "यह बैकअप Immich के किसी अलग version में बनाया गया था!",
|
||||
"maintenance_restore_backup_unknown_version": "बैकअप का version निर्धारित नहीं किया जा सका।",
|
||||
"maintenance_restore_database_backup": "डेटाबेस बैकअप वापस लाएँ",
|
||||
"maintenance_restore_database_backup_description": "बैकअप फ़ाइल का उपयोग करके डेटाबेस को पहले की स्थिति में वापस लाएँ",
|
||||
"maintenance_settings": "रखरखाव",
|
||||
"maintenance_settings_description": "Immich को मेंटेनेंस मोड में रखें।",
|
||||
"maintenance_start": "रखरखाव मोड शुरू करें",
|
||||
"maintenance_start": "रखरखाव मोड पर स्विच करें",
|
||||
"maintenance_start_error": "मेंटेनेंस मोड शुरू नहीं हो सका।",
|
||||
"maintenance_upload_backup": "डेटाबेस की बैकअप फ़ाइल अपलोड करें",
|
||||
"maintenance_upload_backup_error": "बैकअप अपलोड नहीं किया जा सका। क्या यह .sql या .sql.gz फ़ाइल है?",
|
||||
"manage_concurrency": "समवर्तीता प्रबंधित करें",
|
||||
"manage_concurrency_description": "एक साथ चलने वाले जॉब्स का प्रबंधन करने के लिए जॉब्स पेज पर जाएँ",
|
||||
"manage_log_settings": "लॉग सेटिंग प्रबंधित करें",
|
||||
"map_dark_style": "डार्क शैली",
|
||||
"map_enable_description": "मानचित्र सुविधाएँ सक्षम करें",
|
||||
@@ -258,7 +272,7 @@
|
||||
"oauth_auto_register": "ऑटो रजिस्टर",
|
||||
"oauth_auto_register_description": "OAuth के साथ साइन इन करने के बाद स्वचालित रूप से नए उपयोगकर्ताओं को पंजीकृत करें",
|
||||
"oauth_button_text": "टेक्स्ट बटन",
|
||||
"oauth_client_secret_description": "यदि PKCE (कोड एक्सचेंज के लिए प्रूफ़ कुंजी) OAuth प्रदाता द्वारा समर्थित नहीं है तो यह आवश्यक है",
|
||||
"oauth_client_secret_description": "यह Confidential (गोपनीय) क्लाइंट के लिए आवश्यक है, या यदि Public क्लाइंट में PKCE (Proof Key for Code Exchange) समर्थित नहीं है।",
|
||||
"oauth_enable_description": "OAuth से लॉगिन करें",
|
||||
"oauth_mobile_redirect_uri": "मोबाइल रीडायरेक्ट यूआरआई",
|
||||
"oauth_mobile_redirect_uri_override": "मोबाइल रीडायरेक्ट यूआरआई ओवरराइड",
|
||||
@@ -282,10 +296,14 @@
|
||||
"password_settings_description": "पासवर्ड लॉगिन सेटिंग प्रबंधित करें",
|
||||
"paths_validated_successfully": "सभी पथ सफलतापूर्वक मान्य किए गए",
|
||||
"person_cleanup_job": "व्यक्ति सफ़ाई",
|
||||
"queue_details": "प्रक्रिया कतार का विवरण",
|
||||
"queues": "कार्य कतार",
|
||||
"queues_page_description": "प्रशासक कार्य कतार पेज",
|
||||
"quota_size_gib": "कोटा आकार (GiB)",
|
||||
"refreshing_all_libraries": "सभी पुस्तकालयों को ताज़ा किया जा रहा है",
|
||||
"registration": "व्यवस्थापक पंजीकरण",
|
||||
"registration": "प्रशासक पंजीकरण",
|
||||
"registration_description": "चूंकि आप सिस्टम पर पहले उपयोगकर्ता हैं, इसलिए आपको व्यवस्थापक के रूप में नियुक्त किया जाएगा और आप प्रशासनिक कार्यों के लिए जिम्मेदार होंगे, और अतिरिक्त उपयोगकर्ता आपके द्वारा बनाए जाएंगे।",
|
||||
"remove_failed_jobs": "असफल कार्य हटाएँ",
|
||||
"require_password_change_on_login": "उपयोगकर्ता को पहले लॉगिन पर पासवर्ड बदलने की आवश्यकता है",
|
||||
"reset_settings_to_default": "सेटिंग्स को डिफ़ॉल्ट पर रीसेट करें",
|
||||
"reset_settings_to_recent_saved": "सेटिंग्स को हाल ही में सहेजी गई सेटिंग्स पर रीसेट करें",
|
||||
@@ -298,8 +316,10 @@
|
||||
"server_public_users_description": "साझा एल्बम में उपयोगकर्ता जोड़ते समय सभी उपयोगकर्ताओं (नाम और ईमेल) की सूची दिखाई जाती है। यदि यह विकल्प अक्षम किया गया है, तो उपयोगकर्ता सूची केवल व्यवस्थापक (एडमिन) उपयोगकर्ताओं के लिए उपलब्ध होगी।",
|
||||
"server_settings": "सर्वर सेटिंग्स",
|
||||
"server_settings_description": "सर्वर सेटिंग्स प्रबंधित करें",
|
||||
"server_stats_page_description": "प्रशासक (Admin) सर्वर आँकड़े पेज",
|
||||
"server_welcome_message": "स्वागत संदेश",
|
||||
"server_welcome_message_description": "एक संदेश जो लॉगिन पृष्ठ पर प्रदर्शित होता है।",
|
||||
"settings_page_description": "प्रशासक (Admin) सेटिंग्स पेज",
|
||||
"sidecar_job": "साइडकार मेटाडेटा",
|
||||
"sidecar_job_description": "फ़ाइल सिस्टम से साइडकार मेटाडेटा खोजें या सिंक्रनाइज़ करें",
|
||||
"slideshow_duration_description": "प्रत्येक छवि को प्रदर्शित करने के लिए सेकंड की संख्या",
|
||||
@@ -418,6 +438,8 @@
|
||||
"user_restore_scheduled_removal": "उपयोगकर्ता को पुनर्स्थापित करें - {date, date, long} पर हटाया जाना निर्धारित है",
|
||||
"user_settings": "उपयोगकर्ता सेटिंग",
|
||||
"user_settings_description": "उपयोगकर्ता सेटिंग प्रबंधित करें",
|
||||
"user_successfully_removed": "उपयोगकर्ता {email} को सफलतापूर्वक हटा दिया गया है।",
|
||||
"users_page_description": "प्रशासक (Admin) उपयोगकर्ता पेज",
|
||||
"version_check_enabled_description": "नई रिलीज़ की जाँच के लिए GitHub पर आवधिक अनुरोध सक्षम करें",
|
||||
"version_check_implications": "संस्करण जाँच सुविधा github.com के साथ आवधिक संचार पर निर्भर करती है",
|
||||
"version_check_settings": "संस्करण चेक",
|
||||
@@ -429,6 +451,9 @@
|
||||
"admin_password": "व्यवस्थापक पासवर्ड",
|
||||
"administration": "प्रशासन",
|
||||
"advanced": "विकसित",
|
||||
"advanced_settings_clear_image_cache": "इमेज कैश (cache) साफ़ करें",
|
||||
"advanced_settings_clear_image_cache_error": "इमेज कैश (cache) साफ़ नहीं किया जा सका",
|
||||
"advanced_settings_clear_image_cache_success": "{size} सफलतापूर्वक साफ़ किया गया",
|
||||
"advanced_settings_enable_alternate_media_filter_subtitle": "सिंक के दौरान वैकल्पिक मानदंडों के आधार पर मीडिया को फ़िल्टर करने के लिए इस विकल्प का उपयोग करें। इसे केवल तभी आज़माएँ जब आपको ऐप द्वारा सभी एल्बमों का पता लगाने में समस्या हो।",
|
||||
"advanced_settings_enable_alternate_media_filter_title": "[प्रयोगात्मक] वैकल्पिक डिवाइस एल्बम सिंक फ़िल्टर का उपयोग करें",
|
||||
"advanced_settings_log_level_title": "लॉग स्तर:{level}",
|
||||
@@ -465,10 +490,12 @@
|
||||
"album_remove_user": "उपयोगकर्ता हटाएं?",
|
||||
"album_remove_user_confirmation": "क्या आप वाकई {user} को हटाना चाहते हैं?",
|
||||
"album_search_not_found": "आपकी खोज से मेल खाता कोई एल्बम नहीं मिला",
|
||||
"album_selected": "एल्बम चुना गया",
|
||||
"album_share_no_users": "ऐसा लगता है कि आपने यह एल्बम सभी उपयोगकर्ताओं के साथ साझा कर दिया है या आपके पास साझा करने के लिए कोई उपयोगकर्ता नहीं है।",
|
||||
"album_summary": "एल्बम सारांश",
|
||||
"album_updated": "एल्बम अपडेट किया गया",
|
||||
"album_updated_setting_description": "जब किसी साझा एल्बम में नई संपत्तियाँ हों तो एक ईमेल सूचना प्राप्त करें",
|
||||
"album_upload_assets": "अपने कंप्यूटर से मीडिया फ़ाइलें अपलोड करें और उन्हें एल्बम में जोड़ें",
|
||||
"album_user_left": "बायाँ {album}",
|
||||
"album_user_removed": "{user} को हटाया गया",
|
||||
"album_viewer_appbar_delete_confirm": "क्या आप वाकई इस एल्बम को अपने खाते से हटाना चाहते हैं?",
|
||||
@@ -481,14 +508,16 @@
|
||||
"album_viewer_page_share_add_users": "उपयोगकर्ता जोड़ें",
|
||||
"album_with_link_access": "लिंक वाले किसी भी व्यक्ति को इस एल्बम में फ़ोटो और लोगों को देखने दें।",
|
||||
"albums": "एलबम",
|
||||
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albums}}",
|
||||
"albums_count": "{count, plural, one {{count, number} एल्बम} other {{count, number} एल्बम}}",
|
||||
"albums_default_sort_order": "डिफ़ॉल्ट एल्बम सॉर्ट क्रम",
|
||||
"albums_default_sort_order_description": "नये एल्बम बनाते समय आरंभिक परिसंपत्ति सॉर्ट क्रम।",
|
||||
"albums_feature_description": "परिसंपत्तियों का संग्रह जिसे अन्य उपयोगकर्ताओं के साथ साझा किया जा सकता है।",
|
||||
"albums_on_device_count": "डिवाइस पर एल्बम ({count})",
|
||||
"albums_selected": "{count, plural, one {# एल्बम चुना गया} other {# एल्बम चुने गए}}",
|
||||
"all": "सभी",
|
||||
"all_albums": "सभी एलबम",
|
||||
"all_people": "सभी लोग",
|
||||
"all_photos": "सभी फ़ोटो",
|
||||
"all_videos": "सभी वीडियो",
|
||||
"allow_dark_mode": "डार्क मोड की अनुमति दें",
|
||||
"allow_edits": "संपादन की अनुमति दें",
|
||||
@@ -496,6 +525,9 @@
|
||||
"allow_public_user_to_upload": "सार्वजनिक उपयोगकर्ता को अपलोड करने की अनुमति दें",
|
||||
"allowed": "अनुमत",
|
||||
"alt_text_qr_code": "क्यूआर कोड छवि",
|
||||
"always_keep": "हमेशा रखें",
|
||||
"always_keep_photos_hint": "“फ्री अप स्पेस” का उपयोग करने पर इस डिवाइस की सभी फ़ोटो बनी रहेंगी।",
|
||||
"always_keep_videos_hint": "“फ्री अप स्पेस” का उपयोग करने पर इस डिवाइस की सभी वीडियो बनी रहेंगी।",
|
||||
"anti_clockwise": "वामावर्त",
|
||||
"api_key": "एपीआई की",
|
||||
"api_key_description": "यह की केवल एक बार दिखाई जाएगी। विंडो बंद करने से पहले कृपया इसे कॉपी करना सुनिश्चित करें।।",
|
||||
@@ -522,10 +554,12 @@
|
||||
"archived_count": "{count, plural, other {# संग्रहीत किए गए}}",
|
||||
"are_these_the_same_person": "क्या ये वही व्यक्ति हैं?",
|
||||
"are_you_sure_to_do_this": "क्या आप वास्तव में इसे करना चाहते हैं?",
|
||||
"array_field_not_fully_supported": "Array फ़ील्ड के लिए JSON को मैन्युअल रूप से संपादित करना आवश्यक है",
|
||||
"asset_action_delete_err_read_only": "केवल पढ़ने योग्य परिसंपत्ति(ओं) को हटाया नहीं जा सकता, छोड़ा जा सकता है",
|
||||
"asset_action_share_err_offline": "ऑफ़लाइन परिसंपत्ति(एँ) प्राप्त नहीं की जा सकती, छोड़ी जा रही है",
|
||||
"asset_added_to_album": "एल्बम में डाला गया",
|
||||
"asset_adding_to_album": "एल्बम में डाला जा रहा है…",
|
||||
"asset_created": "एसेट बनाया गया",
|
||||
"asset_description_updated": "संपत्ति विवरण अद्यतन कर दिया गया है",
|
||||
"asset_filename_is_offline": "एसेट {filename} ऑफ़लाइन है",
|
||||
"asset_has_unassigned_faces": "एसेट में अनिर्धारित चेहरे हैं",
|
||||
@@ -538,6 +572,9 @@
|
||||
"asset_list_layout_sub_title": "लेआउट",
|
||||
"asset_list_settings_subtitle": "फ़ोटो ग्रिड लेआउट सेटिंग्स",
|
||||
"asset_list_settings_title": "चित्र की जाली",
|
||||
"asset_not_found_on_device_android": "डिवाइस पर एसेट नहीं मिला",
|
||||
"asset_not_found_on_device_ios": "डिवाइस पर एसेट नहीं मिला। यदि आप iCloud का उपयोग कर रहे हैं, तो iCloud में खराब फ़ाइल होने के कारण एसेट तक पहुँचा नहीं जा सकता",
|
||||
"asset_not_found_on_icloud": "iCloud पर एसेट नहीं मिला। iCloud में खराब फ़ाइल होने के कारण एसेट तक पहुँचा नहीं जा सकता",
|
||||
"asset_offline": "संपत्ति ऑफ़लाइन",
|
||||
"asset_offline_description": "यह संपत्ति ऑफ़लाइन है।",
|
||||
"asset_restored_successfully": "संपत्ति(याँ) सफलतापूर्वक पुनर्स्थापित की गईं",
|
||||
@@ -589,7 +626,7 @@
|
||||
"backup_album_selection_page_select_albums": "एल्बम चुनें",
|
||||
"backup_album_selection_page_selection_info": "चयन जानकारी",
|
||||
"backup_album_selection_page_total_assets": "कुल अद्वितीय संपत्तियाँ",
|
||||
"backup_albums_sync": "बैकअप एल्बम का तुल्यकालन",
|
||||
"backup_albums_sync": "बैकअप एल्बम का सिंक्रोनाइज़ेशन",
|
||||
"backup_all": "सभी",
|
||||
"backup_background_service_backup_failed_message": "संपत्तियों का बैकअप लेने में विफल. पुनः प्रयास किया जा रहा है…",
|
||||
"backup_background_service_complete_notification": "एसेट का बैकअप पूरा हुआ",
|
||||
@@ -650,6 +687,7 @@
|
||||
"backup_options_page_title": "बैकअप विकल्प",
|
||||
"backup_setting_subtitle": "पृष्ठभूमि और अग्रभूमि अपलोड सेटिंग प्रबंधित करें",
|
||||
"backup_settings_subtitle": "अपलोड सेटिंग्स संभालें",
|
||||
"backup_upload_details_page_more_details": "अधिक जानकारी के लिए टैप करें",
|
||||
"backward": "पिछला",
|
||||
"biometric_auth_enabled": "बायोमेट्रिक प्रमाणीकरण सक्षम",
|
||||
"biometric_locked_out": "आप बायोमेट्रिक प्रमाणीकरण से बाहर हैं",
|
||||
@@ -708,6 +746,8 @@
|
||||
"change_password_form_password_mismatch": "सांकेतिक शब्द मेल नहीं खाते",
|
||||
"change_password_form_reenter_new_password": "नया पासवर्ड पुनः दर्ज करें",
|
||||
"change_pin_code": "पिन कोड बदलें",
|
||||
"change_trigger": "ट्रिगर बदलें",
|
||||
"change_trigger_prompt": "क्या आप वाकई ट्रिगर बदलना चाहते हैं? इससे सभी मौजूदा एक्शन और फ़िल्टर हटा दिए जाएँगे।",
|
||||
"change_your_password": "अपना पासवर्ड बदलें",
|
||||
"changed_visibility_successfully": "दृश्यता सफलतापूर्वक परिवर्तित",
|
||||
"charging": "चार्जिंग",
|
||||
@@ -716,8 +756,21 @@
|
||||
"check_corrupt_asset_backup_button": "जाँच करें",
|
||||
"check_corrupt_asset_backup_description": "यह जाँच केवल वाई-फ़ाई पर ही करें और सभी संपत्तियों का बैकअप लेने के बाद ही करें। इस प्रक्रिया में कुछ मिनट लग सकते हैं।",
|
||||
"check_logs": "लॉग जांचें",
|
||||
"checksum": "चेकसम (checksum)",
|
||||
"choose_matching_people_to_merge": "मर्ज करने के लिए मिलते-जुलते लोगों को चुनें",
|
||||
"city": "शहर",
|
||||
"cleanup_confirm_description": "Immich ने {date} से पहले बनाए गए {count} एसेट सर्वर पर सुरक्षित रूप से बैकअप किए हुए पाए हैं। क्या इस डिवाइस से उनकी स्थानीय प्रतियाँ हटाई जाएँ?",
|
||||
"cleanup_confirm_prompt_title": "क्या इस डिवाइस से हटाएँ?",
|
||||
"cleanup_deleted_assets": "डिवाइस के ट्रैश में {count} एसेट भेज दिए गए",
|
||||
"cleanup_deleting": "ट्रैश में भेजा जा रहा है…",
|
||||
"cleanup_found_assets": "{count} बैकअप किए गए ऐसेट मिले",
|
||||
"cleanup_found_assets_with_size": "{count} बैकअप किए गए ऐसेट मिले ({size})",
|
||||
"cleanup_icloud_shared_albums_excluded": "iCloud के शेयर किए गए एल्बम स्कैन में शामिल नहीं हैं",
|
||||
"cleanup_no_assets_found": "ऊपर दिए गए मानदंडों से मेल खाने वाले कोई ऐसेट नहीं मिले। ‘फ्री उप स्पेस’ केवल उन्हीं ऐसेट को हटा सकता है जिनका बैकअप सर्वर पर लिया गया है",
|
||||
"cleanup_preview_title": "हटाए जाने वाले ऐसेट ({count})",
|
||||
"cleanup_step3_description": "तिथि और सुरक्षित रखने की सेटिंग के अनुसार बैकअप ऐसेट स्कैन करें।",
|
||||
"cleanup_step4_summary": "आपके स्थानीय डिवाइस से हटाने के लिए {date} से पहले बनाए गए {count} ऐसेट। फ़ोटो Immich ऐप में देखे जा सकेंगे।",
|
||||
"cleanup_trash_hint": "स्टोरेज स्पेस पूरी तरह वापस पाने के लिए, सिस्टम गैलरी ऐप खोलें और ट्रैश खाली करें",
|
||||
"clear": "स्पष्ट",
|
||||
"clear_all": "सभी साफ करें",
|
||||
"clear_all_recent_searches": "सभी हालिया खोजें साफ़ करें",
|
||||
@@ -729,8 +782,10 @@
|
||||
"client_cert_import": "आयात",
|
||||
"client_cert_import_success_msg": "क्लाइंट प्रमाणपत्र आयात किया गया है",
|
||||
"client_cert_invalid_msg": "अमान्य प्रमाणपत्र फ़ाइल या गलत पासवर्ड",
|
||||
"client_cert_password_message": "इस प्रमाणपत्र के लिए पासवर्ड दर्ज करें",
|
||||
"client_cert_password_title": "प्रमाणपत्र पासवर्ड",
|
||||
"client_cert_remove_msg": "क्लाइंट प्रमाणपत्र हटा दिया गया है",
|
||||
"client_cert_subtitle": "केवल PKCS12 (.p12, .pfx) प्रारूप का समर्थन करता है। प्रमाणपत्र आयात/निकालना केवल लॉगिन से पहले ही उपलब्ध है।",
|
||||
"client_cert_subtitle": "केवल PKCS12 (.p12, .pfx) प्रारूप का समर्थन करता है। प्रमाणपत्र आयात/निकालना केवल लॉगिन से पहले ही उपलब्ध है",
|
||||
"client_cert_title": "SSL क्लाइंट प्रमाणपत्र [प्रायोगिक]",
|
||||
"clockwise": "दक्षिणावर्त",
|
||||
"close": "बंद करें",
|
||||
@@ -738,6 +793,7 @@
|
||||
"collapse_all": "सभी को संकुचित करें",
|
||||
"color": "रंग",
|
||||
"color_theme": "रंग थीम",
|
||||
"command": "आदेश",
|
||||
"comment_deleted": "टिप्पणी हटा दी गई",
|
||||
"comment_options": "टिप्पणी विकल्प",
|
||||
"comments_and_likes": "टिप्पणियाँ और पसंद",
|
||||
@@ -782,6 +838,7 @@
|
||||
"create_album": "एल्बम बनाओ",
|
||||
"create_album_page_untitled": "शीर्षकहीन",
|
||||
"create_api_key": "ऐ.पी.आई. चाभी बनाएं",
|
||||
"create_first_workflow": "पहला वर्कफ़्लो बनाएं",
|
||||
"create_library": "लाइब्रेरी बनाएं",
|
||||
"create_link": "लिंक बनाएं",
|
||||
"create_link_to_share": "शेयर करने के लिए लिंक बनाएं",
|
||||
@@ -796,14 +853,18 @@
|
||||
"create_tag": "टैग बनाएँ",
|
||||
"create_tag_description": "एक नया टैग बनाएँ। नेस्टेड टैग के लिए, कृपया फ़ॉरवर्ड स्लैश सहित टैग का पूरा पथ दर्ज करें।",
|
||||
"create_user": "उपयोगकर्ता बनाइये",
|
||||
"create_workflow": "वर्कफ़्लो बनाएं",
|
||||
"created": "बनाया",
|
||||
"created_at": "बनाया था",
|
||||
"creating_linked_albums": "जुड़े हुए एल्बम बनाए जा रहे हैं..।",
|
||||
"crop": "छाँटें",
|
||||
"crop_aspect_ratio_free": "स्वतंत्र",
|
||||
"crop_aspect_ratio_original": "मूल अनुपात",
|
||||
"curated_object_page_title": "चीज़ें",
|
||||
"current_device": "वर्तमान उपकरण",
|
||||
"current_pin_code": "वर्तमान पिन कोड",
|
||||
"current_server_address": "वर्तमान सर्वर पता",
|
||||
"custom_date": "मनचाही तिथि",
|
||||
"custom_locale": "कस्टम लोकेल",
|
||||
"custom_locale_description": "भाषा और क्षेत्र के आधार पर दिनांक और संख्याएँ प्रारूपित करें",
|
||||
"custom_url": "कस्टम URL",
|
||||
@@ -1178,7 +1239,7 @@
|
||||
"home_page_delete_remote_err_local": "दूरस्थ चयन को हटाने, छोड़ने में स्थानीय संपत्तियाँ",
|
||||
"home_page_favorite_err_local": "स्थानीय संपत्तियों को अभी तक पसंदीदा नहीं बनाया जा सका, छोड़ा जा रहा है",
|
||||
"home_page_favorite_err_partner": "अब तक पार्टनर एसेट्स को फेवरेट नहीं कर सकते, स्किप कर रहे हैं",
|
||||
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
||||
"home_page_first_time_notice": "यदि आप पहली बार इस ऐप का उपयोग कर रहे हैं, तो कृपया एक बैकअप एल्बम चुनें, ताकि टाइमलाइन में फ़ोटो और वीडियो दिखाई दे सकें",
|
||||
"home_page_locked_error_local": "स्थानीय संपत्तियों को लॉक किए गए फ़ोल्डर में नहीं ले जाया जा सकता, छोड़ा जा सकता है",
|
||||
"home_page_locked_error_partner": "साझेदार संपत्तियों को लॉक किए गए फ़ोल्डर में नहीं ले जाया जा सकता, छोड़ें",
|
||||
"home_page_share_err_local": "लोकल एसेट्स को लिंक के जरिए शेयर नहीं कर सकते, स्किप कर रहे हैं",
|
||||
@@ -1447,7 +1508,7 @@
|
||||
"no_albums_with_name_yet": "ऐसा लगता है कि आपके पास अभी तक इस नाम का कोई एल्बम नहीं है।",
|
||||
"no_albums_yet": "ऐसा लगता है कि आपके पास अभी तक कोई एल्बम नहीं है।",
|
||||
"no_archived_assets_message": "फ़ोटो और वीडियो को अपने फ़ोटो दृश्य से छिपाने के लिए उन्हें संग्रहीत करें",
|
||||
"no_assets_message": "अपना पहला फोटो अपलोड करने के लिए क्लिक करें",
|
||||
"no_assets_message": "अपनी पहली फ़ोटो अपलोड करने के लिए क्लिक करें",
|
||||
"no_assets_to_show": "दिखाने के लिए कोई संपत्ति नहीं",
|
||||
"no_cast_devices_found": "कोई कास्ट डिवाइस नहीं मिला",
|
||||
"no_checksum_local": "कोई चेकसम उपलब्ध नहीं है - स्थानीय संपत्तियां प्राप्त नहीं की जा सकतीं",
|
||||
@@ -1474,7 +1535,6 @@
|
||||
"not_available": "लागू नहीं",
|
||||
"not_in_any_album": "किसी एलबम में नहीं",
|
||||
"not_selected": "चयनित नहीं",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "नोट: पहले अपलोड की गई संपत्तियों पर स्टोरेज लेबल लागू करने के लिए, चलाएँ",
|
||||
"notes": "टिप्पणियाँ",
|
||||
"nothing_here_yet": "यहाँ अभी तक कुछ नहीं",
|
||||
"notification_permission_dialog_content": "सूचनाएं सक्षम करने के लिए सेटिंग्स में जाएं और अनुमति दें चुनें।",
|
||||
@@ -1665,11 +1725,11 @@
|
||||
"readonly_mode_enabled": "केवल-पढ़ने के लिए मोड सक्षम",
|
||||
"ready_for_upload": "अपलोड के लिए तैयार",
|
||||
"reassign": "पुनः असाइन",
|
||||
"reassigned_assets_to_existing_person": "{count, plural, one {# asset} other {# assets}} को {name, select, null {an existing person} other {{name}}}को फिर से असाइन किया गया",
|
||||
"reassigned_assets_to_existing_person": "{count, plural, one {# asset} other {# assets}} को {name, select, null {an existing person} other {{name}}}को फिर से असाइन किया गया",
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {# asset} other {# assets}} को एक नए व्यक्ति को फिर से असाइन किया गया",
|
||||
"reassing_hint": "चयनित संपत्तियों को किसी मौजूदा व्यक्ति को सौंपें",
|
||||
"recent": "हाल ही का",
|
||||
"recent-albums": "हाल के एल्बम",
|
||||
"recent_albums": "हाल के एल्बम",
|
||||
"recent_searches": "हाल की खोजें",
|
||||
"recently_added": "हाल ही में डाला गया",
|
||||
"recently_added_page_title": "हाल ही में डाला गया",
|
||||
@@ -1874,7 +1934,7 @@
|
||||
"setting_notifications_notify_failures_grace_period": "बैकग्राउंड बैकअप फेलियर की सूचना दें: {duration}",
|
||||
"setting_notifications_notify_hours": "{count} घंटे",
|
||||
"setting_notifications_notify_immediately": "तुरंत",
|
||||
"setting_notifications_notify_minutes": "{count} मिनट",
|
||||
"setting_notifications_notify_minutes": "{count} मिनट",
|
||||
"setting_notifications_notify_never": "कभी नहीं",
|
||||
"setting_notifications_notify_seconds": "{count} सेकंड",
|
||||
"setting_notifications_single_progress_subtitle": "हर एसेट के लिए अपलोड प्रोग्रेस की पूरी जानकारी",
|
||||
@@ -1917,7 +1977,7 @@
|
||||
"shared_link_custom_url_description": "कस्टम URL से इस शेयर्ड लिंक को एक्सेस करें",
|
||||
"shared_link_edit_description_hint": "शेयर विवरण दर्ज करें",
|
||||
"shared_link_edit_expire_after_option_day": "1 दिन",
|
||||
"shared_link_edit_expire_after_option_days": "{count} दिन",
|
||||
"shared_link_edit_expire_after_option_days": "{count} दिन",
|
||||
"shared_link_edit_expire_after_option_hour": "1 घंटा",
|
||||
"shared_link_edit_expire_after_option_hours": "{count} घंटे",
|
||||
"shared_link_edit_expire_after_option_minute": "1 मिनट",
|
||||
@@ -1926,8 +1986,8 @@
|
||||
"shared_link_edit_expire_after_option_year": "{count} वर्ष",
|
||||
"shared_link_edit_password_hint": "शेयर पासवर्ड दर्ज करें",
|
||||
"shared_link_edit_submit_button": "अपडेट लिंक",
|
||||
"shared_link_error_server_url_fetch": "सर्वर URL नहीं मिल रहा है",
|
||||
"shared_link_expires_day": "{count} दिन में समाप्त हो रहा है",
|
||||
"shared_link_error_server_url_fetch": "सर्वर URL प्राप्त नहीं किया जा सका",
|
||||
"shared_link_expires_day": "{count} दिन में इसकी वैधता समाप्त हो जाएगी",
|
||||
"shared_link_expires_days": "{count} दिनों में समाप्त हो जाएगा",
|
||||
"shared_link_expires_hour": "{count} घंटे में समाप्त हो जाएगा",
|
||||
"shared_link_expires_hours": "{count} घंटे में समाप्त हो जाएगा",
|
||||
@@ -2052,11 +2112,11 @@
|
||||
"theme_selection_description": "आपके ब्राउज़र की सिस्टम प्राथमिकता के आधार पर थीम को स्वचालित रूप से प्रकाश या अंधेरे पर सेट करें",
|
||||
"theme_setting_asset_list_storage_indicator_title": "एसेट टाइल्स पर स्टोरेज इंडिकेटर दिखाएं",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "प्रति पंक्ति एसेट की संख्या ({count})",
|
||||
"theme_setting_colorful_interface_subtitle": "प्राथमिक रंग को पृष्ठभूमि सतहों पर लागू करें",
|
||||
"theme_setting_colorful_interface_subtitle": "प्राथमिक रंग को पृष्ठभूमि सतहों पर लागू करें।",
|
||||
"theme_setting_colorful_interface_title": "रंगीन इंटरफ़ेस",
|
||||
"theme_setting_image_viewer_quality_subtitle": "डिटेल इमेज व्यूअर की क्वालिटी एडजस्ट करें",
|
||||
"theme_setting_image_viewer_quality_title": "छवि दर्शक गुणवत्ता",
|
||||
"theme_setting_primary_color_subtitle": "प्राथमिक क्रियाओं और उच्चारणों के लिए एक रंग चुनें",
|
||||
"theme_setting_primary_color_subtitle": "प्राथमिक क्रियाओं और उच्चारणों के लिए एक रंग चुनें।",
|
||||
"theme_setting_primary_color_title": "प्राथमिक रंग",
|
||||
"theme_setting_system_primary_color_title": "सिस्टम रंग का उपयोग करें",
|
||||
"theme_setting_system_theme_switch": "ऑटोमैटिक (सिस्टम सेटिंग फ़ॉलो करें)",
|
||||
|
||||
@@ -1459,7 +1459,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "Ni u jednom albumu",
|
||||
"not_selected": "Nije odabrano",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Napomena: Da biste primijenili oznaku pohrane na prethodno prenesene stavke, pokrenite",
|
||||
"notes": "Bilješke",
|
||||
"nothing_here_yet": "Ovdje još nema ničega",
|
||||
"notification_permission_dialog_content": "Da biste omogućili obavijesti, idite u Postavke i odaberite dopusti.",
|
||||
@@ -1646,7 +1645,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {# stavka ponovno dodijeljena} few {# stavke ponovno dodijeljene} other {# stavki ponovno dodijeljeno}} novoj osobi",
|
||||
"reassing_hint": "Dodijelite odabrane stavke postojećoj osobi",
|
||||
"recent": "Nedavno",
|
||||
"recent-albums": "Nedavni albumi",
|
||||
"recent_albums": "Nedavni albumi",
|
||||
"recent_searches": "Nedavne pretrage",
|
||||
"recently_added": "Nedavno dodano",
|
||||
"recently_added_page_title": "Nedavno dodano",
|
||||
|
||||
@@ -1604,7 +1604,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "Nincs albumban",
|
||||
"not_selected": "Nincs kiválasztva",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Megjegyzés: a korábban feltöltött elemek tárhely címkézéséhez futtasd a(z)",
|
||||
"notes": "Megjegyzések",
|
||||
"nothing_here_yet": "Még semmi sincs itt",
|
||||
"notification_permission_dialog_content": "Az értesítések bekapcsolásához a Beállítások menüben válaszd ki az Engedélyezés-t.",
|
||||
@@ -1806,7 +1805,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, other {# elem}} hozzárendelve egy új személyhez",
|
||||
"reassing_hint": "Kijelölt elemek létező személyhez rendelése",
|
||||
"recent": "Friss",
|
||||
"recent-albums": "Legutóbbi albumok",
|
||||
"recent_albums": "Legutóbbi albumok",
|
||||
"recent_searches": "Legutóbbi keresések",
|
||||
"recently_added": "Nemrég hozzáadott",
|
||||
"recently_added_page_title": "Nemrég hozzáadott",
|
||||
|
||||
@@ -1613,7 +1613,6 @@
|
||||
"not_available": "T/T",
|
||||
"not_in_any_album": "Tidak ada dalam album apa pun",
|
||||
"not_selected": "Belum dipilih",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Catatan: Untuk menerapkan Label Penyimpanan pada aset yang sebelumnya telah diunggah, jalankan",
|
||||
"notes": "Catatan",
|
||||
"nothing_here_yet": "Masih kosong",
|
||||
"notification_permission_dialog_content": "Untuk mengaktifkan notifikasi, buka Pengaturan lalu berikan izin.",
|
||||
@@ -1815,7 +1814,7 @@
|
||||
"reassigned_assets_to_new_person": "Menetapkan ulang {count, plural, one {# aset} other {# aset}} kepada orang baru",
|
||||
"reassing_hint": "Tetapkan aset yang dipilih ke orang yang sudah ada",
|
||||
"recent": "Terkini",
|
||||
"recent-albums": "Album terkini",
|
||||
"recent_albums": "Album terkini",
|
||||
"recent_searches": "Pencarian terkini",
|
||||
"recently_added": "Barusaja ditambahkan",
|
||||
"recently_added_page_title": "Baru Ditambahkan",
|
||||
|
||||
13
i18n/it.json
13
i18n/it.json
@@ -311,7 +311,7 @@
|
||||
"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)://",
|
||||
"server_external_domain_settings_description": "Dominio utilizzato per i link esterni",
|
||||
"server_public_users": "Utenti Pubblici",
|
||||
"server_public_users_description": "Tutti gli utenti (nome ed e-mail) sono elencati quando si aggiunge un utente agli album condivisi. Quando disabilitato, l'elenco degli utenti sarà disponibile solo per gli utenti amministratori.",
|
||||
"server_settings": "Impostazioni Server",
|
||||
@@ -794,6 +794,11 @@
|
||||
"color": "Colore",
|
||||
"color_theme": "Colore Tema",
|
||||
"command": "Comando",
|
||||
"command_palette_prompt": "Trova rapidamente pagine, azioni o comandi",
|
||||
"command_palette_to_close": "per chiudere",
|
||||
"command_palette_to_navigate": "per entrare",
|
||||
"command_palette_to_select": "per selezionare",
|
||||
"command_palette_to_show_all": "per mostrare tutto",
|
||||
"comment_deleted": "Commento eliminato",
|
||||
"comment_options": "Opzioni per i commenti",
|
||||
"comments_and_likes": "Commenti & mi piace",
|
||||
@@ -1168,6 +1173,7 @@
|
||||
"exif_bottom_sheet_people": "PERSONE",
|
||||
"exif_bottom_sheet_person_add_person": "Aggiungi nome",
|
||||
"exit_slideshow": "Esci dalla presentazione",
|
||||
"expand": "Espandi",
|
||||
"expand_all": "Espandi tutto",
|
||||
"experimental_settings_new_asset_list_subtitle": "Lavori in corso",
|
||||
"experimental_settings_new_asset_list_title": "Attiva griglia foto sperimentale",
|
||||
@@ -1613,7 +1619,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "In nessun album",
|
||||
"not_selected": "Non selezionato",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Per aggiungere l'etichetta dell'archiviazione alle risorse caricate in precedenza, esegui",
|
||||
"notes": "Note",
|
||||
"nothing_here_yet": "Ancora nulla qui",
|
||||
"notification_permission_dialog_content": "Per attivare le notifiche, vai alle Impostazioni e seleziona concedi.",
|
||||
@@ -1643,6 +1648,7 @@
|
||||
"online": "Online",
|
||||
"only_favorites": "Solo preferiti",
|
||||
"open": "Apri",
|
||||
"open_calendar": "Apri il calendario",
|
||||
"open_in_map_view": "Apri nella visualizzazione mappa",
|
||||
"open_in_openstreetmap": "Apri su OpenStreetMap",
|
||||
"open_the_search_filters": "Apri filtri di ricerca",
|
||||
@@ -1815,7 +1821,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {Riassegnata # risorsa} other {Riassegnate # risorse}} ad una nuova persona",
|
||||
"reassing_hint": "Assegna le risorse selezionate ad una persona esistente",
|
||||
"recent": "Recenti",
|
||||
"recent-albums": "Album recenti",
|
||||
"recent_albums": "Album recenti",
|
||||
"recent_searches": "Ricerche recenti",
|
||||
"recently_added": "Aggiunti recentemente",
|
||||
"recently_added_page_title": "Aggiunti di recente",
|
||||
@@ -2184,6 +2190,7 @@
|
||||
"support": "Supporto",
|
||||
"support_and_feedback": "Supporto & Feedback",
|
||||
"support_third_party_description": "La tua installazione di Immich è stata costruita da terze parti. I problemi che riscontri potrebbero essere causati da altri pacchetti, quindi ti preghiamo di sollevare il problema in prima istanza utilizzando i link sottostanti.",
|
||||
"supporter": "Sostenitore",
|
||||
"swap_merge_direction": "Scambia direzione di unione",
|
||||
"sync": "Sincronizza",
|
||||
"sync_albums": "Sincronizza album",
|
||||
|
||||
@@ -1613,7 +1613,6 @@
|
||||
"not_available": "適用なし",
|
||||
"not_in_any_album": "どのアルバムにも入っていない",
|
||||
"not_selected": "選択なし",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "注意: 以前にアップロードしたアセットにストレージラベルを適用するには以下を実行してください",
|
||||
"notes": "注意",
|
||||
"nothing_here_yet": "まだ何も無いようです",
|
||||
"notification_permission_dialog_content": "通知を許可するには設定を開いてオンにしてください",
|
||||
@@ -1815,7 +1814,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {#個} other {#個}}の写真/動画を新しい人物に割り当てました",
|
||||
"reassing_hint": "選択された写真/動画を既存の人物に割り当て",
|
||||
"recent": "最近",
|
||||
"recent-albums": "最近のアルバム",
|
||||
"recent_albums": "最近のアルバム",
|
||||
"recent_searches": "最近の検索",
|
||||
"recently_added": "最近追加された項目",
|
||||
"recently_added_page_title": "最近",
|
||||
|
||||
@@ -1581,7 +1581,6 @@
|
||||
"not_available": "없음",
|
||||
"not_in_any_album": "앨범에 없음",
|
||||
"not_selected": "선택되지 않음",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "참고: 이전에 업로드한 항목에도 스토리지 레이블을 적용하려면 다음을 실행합니다,",
|
||||
"notes": "참고",
|
||||
"nothing_here_yet": "아직 아무것도 없음",
|
||||
"notification_permission_dialog_content": "알림을 활성화하려면 설정에서 알림 권한을 허용하세요.",
|
||||
@@ -1780,7 +1779,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {항목 #개} other {항목 #개}}를 새 인물에게 재지정했습니다.",
|
||||
"reassing_hint": "기존 인물에 선택한 항목 할당",
|
||||
"recent": "최근",
|
||||
"recent-albums": "최근 앨범",
|
||||
"recent_albums": "최근 앨범",
|
||||
"recent_searches": "최근 검색",
|
||||
"recently_added": "최근 추가",
|
||||
"recently_added_page_title": "최근 추가",
|
||||
|
||||
89
i18n/lt.json
89
i18n/lt.json
@@ -1579,7 +1579,6 @@
|
||||
"not_available": "Nepasiekiamas",
|
||||
"not_in_any_album": "Nė viename albume",
|
||||
"not_selected": "Nepasirinkta",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Pastaba: Priskirti Saugyklos Žymą prie anksčiau įkeltų ištekliu, paleiskite šį",
|
||||
"notes": "Pastabos",
|
||||
"nothing_here_yet": "Kol kas tuščia",
|
||||
"notification_permission_dialog_content": "Pranešimų įgalinimui eikite į Nustatymus ir pasirinkite Leisti.",
|
||||
@@ -1774,7 +1773,7 @@
|
||||
"read_changelog": "Skaityti pakeitimų sąrašą",
|
||||
"ready_for_upload": "Paruošta įkėlimui",
|
||||
"recent": "Naujausi",
|
||||
"recent-albums": "Naujausi albumai",
|
||||
"recent_albums": "Naujausi albumai",
|
||||
"recent_searches": "Naujausios paieškos",
|
||||
"recently_added": "Neseniai pridėta",
|
||||
"recently_added_page_title": "Neseniai pridėta",
|
||||
@@ -1824,12 +1823,18 @@
|
||||
"replace_with_upload": "Pakeisti naujai įkeltu failu",
|
||||
"repository": "Repozitoriumas",
|
||||
"require_password": "Reikalauti slaptažodžio",
|
||||
"require_user_to_change_password_on_first_login": "Reikalauti, kad vartotojas pakeistų slaptažodį pirmą kartą prisijungdamas",
|
||||
"rescan": "Perskenuoti",
|
||||
"reset": "Atstatyti",
|
||||
"reset_password": "Atstayti slaptažodį",
|
||||
"reset_password": "Atstatyti slaptažodį",
|
||||
"reset_people_visibility": "Atstatyti žmonių matomumą",
|
||||
"reset_pin_code": "Atsatyti PIN kodą",
|
||||
"reset_pin_code_description": "Jei pamiršote PIN kodą, galite susisiekti su serverio administratoriumi, kad jis jį atstatytų",
|
||||
"reset_pin_code_success": "Sėkmingai atstatytas PIN kodas",
|
||||
"reset_pin_code_with_password": "PIN kodą visada galite atkurti naudodami savo slaptažodį",
|
||||
"reset_sqlite": "Atstatyti SQLite duomenų bazę",
|
||||
"reset_sqlite_confirmation": "Ar tikrai norite atstatyti SQLite duomenų bazę? Turėsite atsijungti ir vėl prisijungti, kad iš naujo sinchronizuotumėte duomenis",
|
||||
"reset_sqlite_success": "Sėkmingai atstatyta SQLite duomenų bazė",
|
||||
"reset_to_default": "Atkurti numatytuosius",
|
||||
"resolution": "Rezoliucija",
|
||||
"resolve_duplicates": "Sutvarkyti dublikatus",
|
||||
@@ -1839,7 +1844,15 @@
|
||||
"restore_trash_action_prompt": "{count} atstatyta iš šiukšliadėžės",
|
||||
"restore_user": "Atkurti naudotoją",
|
||||
"restored_asset": "Atkurti elementą",
|
||||
"resume": "Tęsti",
|
||||
"resume_paused_jobs": "Tęsti {count, plural, one {# pristabdytą darbą} other {# pristabdytus darbus}}",
|
||||
"retry_upload": "Bandyti išsiųsti dar kartą",
|
||||
"review_duplicates": "Peržiūrėti dublikatus",
|
||||
"review_large_files": "Peržiūrėti didelius failus",
|
||||
"role": "Rolė",
|
||||
"role_editor": "Redaktorius",
|
||||
"role_viewer": "Stebėtojas",
|
||||
"running": "Vykdoma",
|
||||
"save": "Išsaugoti",
|
||||
"save_to_gallery": "Išsaugoti galerijoje",
|
||||
"saved": "Išsaugota",
|
||||
@@ -1863,6 +1876,7 @@
|
||||
"search_by_filename_example": "pvz. IMG_1234.JPG arba PNG",
|
||||
"search_by_ocr": "Ieškoti pagal OCR",
|
||||
"search_by_ocr_example": "Latte",
|
||||
"search_camera_lens_model": "Ieškoti objektyvo modelio...",
|
||||
"search_camera_make": "Ieškoti pagal kameros gamintoją...",
|
||||
"search_camera_model": "Ieškoti kameros modelį...",
|
||||
"search_city": "Ieškoti miesto...",
|
||||
@@ -1883,12 +1897,15 @@
|
||||
"search_filter_people_title": "Pasirinkti asmenis",
|
||||
"search_filter_star_rating": "Įvertinimas",
|
||||
"search_for": "Ieškoti ko",
|
||||
"search_for_existing_person": "Ieškoti įvardinto asmens",
|
||||
"search_no_more_result": "Nėra daugiau rezultatų",
|
||||
"search_no_people": "Be asmenų",
|
||||
"search_no_people_named": "Nėra žmonių vardu „{name}“",
|
||||
"search_no_result": "Rezultatų nerasta, pabandykite kitą paieškos terminą ar derinį",
|
||||
"search_options": "Paieškos parinktys",
|
||||
"search_page_categories": "Kategorijos",
|
||||
"search_page_motion_photos": "Judanti Foto",
|
||||
"search_page_no_objects": "Objekto info nepasiekiama",
|
||||
"search_page_no_places": "Vietovės info nepasiekiama",
|
||||
"search_page_screenshots": "Ekrano nuotraukos",
|
||||
"search_page_search_photos_videos": "Ieškokite nuotraukų ir vaizdo įrašų",
|
||||
@@ -1902,22 +1919,35 @@
|
||||
"search_rating": "Ieškoti pagal įvertinimą...",
|
||||
"search_result_page_new_search_hint": "Nauja Paieška",
|
||||
"search_settings": "Ieškoti nustatymų",
|
||||
"search_state": "Ieškoti valstijos/apskrities...",
|
||||
"search_suggestion_list_smart_search_hint_1": "Išmanioji paieška įjungta pagal numatytuosius nustatymus, metaduomenų paieškai naudokite sintaksę ",
|
||||
"search_suggestion_list_smart_search_hint_2": "Paieška",
|
||||
"search_tags": "Ieškoti žymų...",
|
||||
"search_timezone": "Ieškoti laiko zonos...",
|
||||
"search_type": "Paieškos tipas",
|
||||
"search_your_photos": "Ieškoti nuotraukų",
|
||||
"searching_locales": "Ieškoma vietovių...",
|
||||
"second": "Sekundė",
|
||||
"see_all_people": "Pamatyti visus asmenis",
|
||||
"select": "Pasirinkti",
|
||||
"select_album": "Rinktis albumą",
|
||||
"select_album_cover": "Rinktis albumo viršelį",
|
||||
"select_albums": "Rinktis albumus",
|
||||
"select_all": "Pasirinkti visus",
|
||||
"select_all_duplicates": "Pasirinkti visus dublikatus",
|
||||
"select_all_in": "Pažymėti visus esančius {group}",
|
||||
"select_avatar_color": "Pasirinkti avataro spalvą",
|
||||
"select_count": "{count, plural, one {Pasirinkti #} other {Pasirinkti #}}",
|
||||
"select_cutoff_date": "Pasirinkite galutinę datą",
|
||||
"select_face": "Pasirinkti veidą",
|
||||
"select_featured_photo": "Pasirinkti rodomą nuotrauką",
|
||||
"select_from_computer": "Pasirinkti iš kompiuterio",
|
||||
"select_keep_all": "Visus pažymėti \"Palikti\"",
|
||||
"select_library_owner": "Pasirinkti bibliotekos savininką",
|
||||
"select_new_face": "Pasirinkti naują veidą",
|
||||
"select_people": "Pasirinkti asmenis",
|
||||
"select_person": "Pasirinkti asmenį",
|
||||
"select_person_to_tag": "Pasirinkti asmenį žymai",
|
||||
"select_photos": "Pasirinkti nuotraukas",
|
||||
"select_trash_all": "Visus pažymėti \"Išmesti\"",
|
||||
"select_user_for_sharing_page_err_album": "Nepavyko sukurti albumo",
|
||||
@@ -1926,22 +1956,29 @@
|
||||
"selected_gps_coordinates": "Pasirinkti GPS Koordinates",
|
||||
"send_message": "Siųsti žinutę",
|
||||
"send_welcome_email": "Siųsti sveikinimo el. laišką",
|
||||
"server_info_box_app_version": "Programėlės versija",
|
||||
"server_endpoint": "Serverio Galinis Taškas",
|
||||
"server_info_box_app_version": "Programos versija",
|
||||
"server_info_box_server_url": "Serverio URL",
|
||||
"server_offline": "Serveris nepasiekiamas",
|
||||
"server_online": "Serveris pasiekiamas",
|
||||
"server_privacy": "Serverio Privatumas",
|
||||
"server_restarting_description": "Šis puslapis atsinaujins neužilgo.",
|
||||
"server_restarting_title": "Serveris restartuoja",
|
||||
"server_stats": "Serverio statistika",
|
||||
"server_update_available": "Yra Serverio atnaujinimas",
|
||||
"server_version": "Serverio versija",
|
||||
"set": "Nustatyti",
|
||||
"set_as_album_cover": "Naudoti kaip albumo viršelį",
|
||||
"set_as_featured_photo": "Naudoti foto asmens profiliui",
|
||||
"set_as_profile_picture": "Nustatyti kaip profilio nuotrauką",
|
||||
"set_date_of_birth": "Nustatyti gimimo datą",
|
||||
"set_profile_picture": "Nustatyti profilio nuotrauką",
|
||||
"set_slideshow_to_fullscreen": "Nustatyti skaidrių peržiūrą per visą ekraną",
|
||||
"set_stack_primary_asset": "Nustatyti kaip pagrindinį elementą",
|
||||
"setting_image_viewer_help": "Detali peržiūra pirmiausia įkelia mažą miniatiūrą, tada įkelia vidutinio dydžio versiją (jei įjungta) ir galiausiai įkelia originalą (jei įjungta).",
|
||||
"setting_image_viewer_original_subtitle": "Įjunkite, kad įkeltumėte originalų pilnos raiškos vaizdą (didelį!). Išjunkite, kad sumažintumėte duomenų naudojimą (tiek tinkle, tiek įrenginio talpykloje).",
|
||||
"setting_image_viewer_original_title": "Užkrauti originalią nuotrauką",
|
||||
"setting_image_viewer_preview_subtitle": "Įjunkite, jei norite įkelti vidutinės raiškos vaizdą. Išjunkite, jei norite tiesiogiai įkelti originalą ar naudoti tik miniatiūrą.",
|
||||
"setting_image_viewer_preview_title": "Užkrauti peržiūros nuotrauką",
|
||||
"setting_image_viewer_title": "Nuotraukos",
|
||||
"setting_languages_apply": "Pritaikyti",
|
||||
@@ -1976,7 +2013,11 @@
|
||||
"shared_album_activities_input_disable": "Komentarai išjungti",
|
||||
"shared_album_activity_remove_content": "Ar norite ištrinti šią veiklą?",
|
||||
"shared_album_activity_remove_title": "Ištrinti veiklą",
|
||||
"shared_album_section_people_action_error": "Klaida išeinant/šalinant iš albumo",
|
||||
"shared_album_section_people_action_leave": "Pašalinti naudotoją iš albumo",
|
||||
"shared_album_section_people_action_remove_user": "Pašalinti naudotoją iš albumo",
|
||||
"shared_album_section_people_title": "ASMENYS",
|
||||
"shared_by": "Bendrina",
|
||||
"shared_by_user": "Bendrina {user}",
|
||||
"shared_by_you": "Bendrinama jūsų",
|
||||
"shared_from_partner": "Nuotraukos iš {partner}",
|
||||
@@ -1984,6 +2025,9 @@
|
||||
"shared_link_app_bar_title": "Dalinimosi Nuorodos",
|
||||
"shared_link_clipboard_copied_massage": "Nukopijuota į iškarpinę",
|
||||
"shared_link_clipboard_text": "Nuoroda: {link}\nSlaptažodis: {password}",
|
||||
"shared_link_create_error": "Klaida kuriant bendrinimo nuorodą",
|
||||
"shared_link_custom_url_description": "Pasiekite šią bendrinimo nuorodą naudodami tinkintą URL",
|
||||
"shared_link_edit_description_hint": "Įveskite bendrinimo aprašymą",
|
||||
"shared_link_edit_expire_after_option_day": "1 diena",
|
||||
"shared_link_edit_expire_after_option_days": "{count} dienų",
|
||||
"shared_link_edit_expire_after_option_hour": "1 valanda",
|
||||
@@ -1992,23 +2036,32 @@
|
||||
"shared_link_edit_expire_after_option_minutes": "{count} minučių",
|
||||
"shared_link_edit_expire_after_option_months": "{count} mėnesių",
|
||||
"shared_link_edit_expire_after_option_year": "{count} metų",
|
||||
"shared_link_edit_submit_button": "Dalinimosi Nuorodos",
|
||||
"shared_link_edit_password_hint": "Įveskite bendrinimo slaptažodį",
|
||||
"shared_link_edit_submit_button": "Atnaujinti nuorodą",
|
||||
"shared_link_error_server_url_fetch": "Nepavyksta gauti serverio url",
|
||||
"shared_link_expires_day": "Galiojimas baigsis už {count} dienos",
|
||||
"shared_link_expires_days": "Galiojimas baigsis už {count} dienų",
|
||||
"shared_link_expires_hour": "Galiojimas baigsis už {count} valandos",
|
||||
"shared_link_expires_hours": "Galiojimas baigsis už {count} valandų",
|
||||
"shared_link_expires_minute": "Galiojimas baigsis už {count} minutės",
|
||||
"shared_link_expires_minutes": "Galiojimas baigsis už {count} minučių",
|
||||
"shared_link_expires_never": "Galiojimas baigiasi ∞",
|
||||
"shared_link_expires_second": "Galiojimas baigsis už {count} sekundės",
|
||||
"shared_link_expires_seconds": "Galiojimas baigsis už {count} sekundžių",
|
||||
"shared_link_individual_shared": "Asmuo pasidalintas",
|
||||
"shared_link_info_chip_metadata": "EXIF",
|
||||
"shared_link_manage_links": "Valdyti Bendrinimo nuorodas",
|
||||
"shared_link_options": "Bendrinimo nuorodos parametrai",
|
||||
"shared_link_password_description": "Bendrinimo nuorodos prieigai reikalingas slaptažodis",
|
||||
"shared_links": "Bendrinimo nuorodos",
|
||||
"shared_links_description": "Dalintis foto ir video su nuoroda",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, one {# bendrinama nuotrauka ir vaizdo įrašas} few {# bendrinamos nuotraukos ir vaizdo įrašai} other {# bendrinamų nuotraukų ir vaizdo įrašų}}",
|
||||
"shared_with_me": "Bendrinama su manimi",
|
||||
"shared_with_partner": "Pasidalinta su {partner}",
|
||||
"sharing": "Dalijimasis",
|
||||
"sharing_enter_password": "Norėdami peržiūrėti šį puslapį, įveskite slaptažodį.",
|
||||
"sharing_page_album": "Bendrinami albumai",
|
||||
"sharing_page_description": "Kurkite bendrinamus albumus, kad galėtumėte dalintis foto ir video su žmonėmis savo tinkle.",
|
||||
"sharing_page_empty_list": "TUŠČIAS SĄRAŠAS",
|
||||
"sharing_sidebar_description": "Rodyti bendrinimo rodinio nuorodą šoninėje juostoje",
|
||||
"sharing_silver_appbar_create_shared_album": "Naujas bendrinamas albumas",
|
||||
@@ -2027,11 +2080,17 @@
|
||||
"show_metadata": "Rodyti metaduomenis",
|
||||
"show_or_hide_info": "Rodyti arba slėpti informaciją",
|
||||
"show_password": "Rodyti slaptažodį",
|
||||
"show_person_options": "Rodyti asmens parinktis",
|
||||
"show_progress_bar": "Rodyti progreso juostą",
|
||||
"show_schema": "Rodyti schemą",
|
||||
"show_search_options": "Rodyti paieškos parinktis",
|
||||
"show_shared_links": "Rodyti bendrinamas nuorodas",
|
||||
"show_slideshow_transition": "Rodyti perėjimą tarp skaidrių",
|
||||
"show_supporter_badge": "Rėmėjo ženklelis",
|
||||
"show_supporter_badge_description": "Rodyti rėmėjo ženklelį",
|
||||
"show_text_recognition": "Rodyti teksto atpažinimą",
|
||||
"show_text_search_menu": "Rodyti teksto paieškos meniu",
|
||||
"shuffle": "Išmaišyti",
|
||||
"sidebar": "Šoninė juosta",
|
||||
"sidebar_display_description": "Rodyti rodinio nuorodą šoninėje juostoje",
|
||||
"sign_out": "Atsijungti",
|
||||
@@ -2041,6 +2100,8 @@
|
||||
"skip_to_folders": "Praleisti iki aplankų",
|
||||
"skip_to_tags": "Praleisti iki žymių",
|
||||
"slideshow": "Skaidrių peržiūra",
|
||||
"slideshow_repeat": "Kartoti skaidres",
|
||||
"slideshow_repeat_description": "Pradėti iš pradžių, kai skaidrės baigiasi",
|
||||
"slideshow_settings": "Skaidrių peržiūros nustatymai",
|
||||
"sort_albums_by": "Rikiuoti albumus pagal...",
|
||||
"sort_created": "Sukūrimo data",
|
||||
@@ -2062,7 +2123,7 @@
|
||||
"start": "Pradėti",
|
||||
"start_date": "Pradžios data",
|
||||
"start_date_before_end_date": "Pradžios data turi būti ankstesnė už pabaigos datą",
|
||||
"state": "Valstija",
|
||||
"state": "Valstija/Apskritis",
|
||||
"status": "Statusas",
|
||||
"stop_casting": "Nutraukti transliavimą",
|
||||
"stop_motion_photo": "Sustabdyti Judančią Foto",
|
||||
@@ -2104,21 +2165,34 @@
|
||||
"theme": "Tema",
|
||||
"theme_selection": "Temos pasirinkimas",
|
||||
"theme_selection_description": "Automatiškai nustatykite šviesią arba tamsią temą pagal naršyklės sistemos nustatymus",
|
||||
"theme_setting_asset_list_storage_indicator_title": "Rodyti saugyklos indikatorių elementų plytelėse",
|
||||
"theme_setting_asset_list_tiles_per_row_title": "Elementų per eilutę ({count})",
|
||||
"theme_setting_colorful_interface_subtitle": "Fono paviršiams užtepkite pagrindinę spalvą.",
|
||||
"theme_setting_colorful_interface_title": "Spalvinga sąsaja",
|
||||
"theme_setting_image_viewer_quality_subtitle": "Koreguoti detalių vaizdų peržiūros kokybę",
|
||||
"theme_setting_image_viewer_quality_title": "Vaizdo peržiūros priemonės kokybė",
|
||||
"theme_setting_primary_color_subtitle": "Pasirinkite spalvą pagrindiniams veiksmams ir akcentams.",
|
||||
"theme_setting_primary_color_title": "Pagrindinė spalva",
|
||||
"theme_setting_system_primary_color_title": "Naudoti sistemos spalvą",
|
||||
"theme_setting_system_theme_switch": "Automatinė (Naudoti sistemos nustatymus)",
|
||||
"theme_setting_theme_subtitle": "Pasirinkite programos temos nustatymą",
|
||||
"theme_setting_three_stage_loading_subtitle": "Trijų etapų įkėlimas gali padidinti įkėlimo našumą, tačiau sukelia žymiai didesnę tinklo apkrovą",
|
||||
"theme_setting_three_stage_loading_title": "Įjungti trijų etapų įkėlimą",
|
||||
"then": "Tada",
|
||||
"they_will_be_merged_together": "Jie bus sujungti kartu",
|
||||
"third_party_resources": "Trečios Šalies Ištekliai",
|
||||
"time": "Laikas",
|
||||
"time_based_memories": "Atsiminimai pagal laiką",
|
||||
"time_based_memories_duration": "Kiekvieno vaizdo rodymo laikas sekundėmis.",
|
||||
"timeline": "Laiko skalė",
|
||||
"timezone": "Laiko juosta",
|
||||
"to_archive": "Archyvuoti",
|
||||
"to_change_password": "Pakeisti slaptažodį",
|
||||
"to_favorite": "Įtraukti prie mėgstamiausių",
|
||||
"to_login": "Prisijungti",
|
||||
"to_multi_select": "pasirinkti kelis elementus",
|
||||
"to_parent": "Persikelti į viršų",
|
||||
"to_select": "į pasirinkimą",
|
||||
"to_trash": "Išmesti",
|
||||
"toggle_settings": "Įjungti nustatymus",
|
||||
"toggle_theme_description": "Įjungti temą",
|
||||
@@ -2139,6 +2213,9 @@
|
||||
"trash_page_select_assets_btn": "Pasirinkti elementus",
|
||||
"trash_page_title": "Šiukšlių ({count})",
|
||||
"trashed_items_will_be_permanently_deleted_after": "Į šiukšliadėžę perkelti elementai bus visam laikui ištrinti po {days, plural, one {# dienos} other {# dienų}}.",
|
||||
"trigger_asset_uploaded": "Elementas Išsiųstas",
|
||||
"trigger_person_recognized": "Asmuo Atpažintas",
|
||||
"troubleshoot": "Šalinti triktis",
|
||||
"type": "Tipas",
|
||||
"unable_to_change_pin_code": "Negalima pakeisti PIN kodo",
|
||||
"unable_to_check_version": "Nepavyko patvirtinti programos/serverio versijos",
|
||||
|
||||
@@ -1235,7 +1235,6 @@
|
||||
"not_available": "Nav pieejams",
|
||||
"not_in_any_album": "Nav nevienā albumā",
|
||||
"not_selected": "Nav izvēlēts",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Piezīme: Lai piemērotu glabātuves nosaukumu iepriekš augšupielādētiem failiem, izpildiet",
|
||||
"notes": "Piezīmes",
|
||||
"nothing_here_yet": "Šeit vēl nekā nav",
|
||||
"notification_permission_dialog_content": "Lai iespējotu paziņojumus, atveriet Iestatījumi un atlasiet Atļaut.",
|
||||
|
||||
@@ -1468,7 +1468,6 @@
|
||||
"not_available": "ലഭ്യമല്ല",
|
||||
"not_in_any_album": "ഒരു ആൽബത്തിലുമില്ല",
|
||||
"not_selected": "തിരഞ്ഞെടുത്തിട്ടില്ല",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "കുറിപ്പ്: മുമ്പ് അപ്ലോഡ് ചെയ്ത അസറ്റുകളിൽ സ്റ്റോറേജ് ലേബൽ പ്രയോഗിക്കാൻ, ഇത് പ്രവർത്തിപ്പിക്കുക",
|
||||
"notes": "കുറിപ്പുകൾ",
|
||||
"nothing_here_yet": "ഇവിടെ ഇതുവരെ ഒന്നുമില്ല",
|
||||
"notification_permission_dialog_content": "അറിയിപ്പുകൾ പ്രവർത്തനക്ഷമമാക്കാൻ, ക്രമീകരണങ്ങളിലേക്ക് പോയി 'അനുവദിക്കുക' തിരഞ്ഞെടുക്കുക.",
|
||||
@@ -1663,7 +1662,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} ഒരു പുതിയ വ്യക്തിക്ക് വീണ്ടും നൽകി",
|
||||
"reassing_hint": "തിരഞ്ഞെടുത്ത അസറ്റുകൾ നിലവിലുള്ള ഒരു വ്യക്തിക്ക് നൽകുക",
|
||||
"recent": "സമീപകാലം",
|
||||
"recent-albums": "സമീപകാല ആൽബങ്ങൾ",
|
||||
"recent_albums": "സമീപകാല ആൽബങ്ങൾ",
|
||||
"recent_searches": "സമീപകാല തിരയലുകൾ",
|
||||
"recently_added": "അടുത്തിടെ ചേർത്തത്",
|
||||
"recently_added_page_title": "അടുത്തിടെ ചേർത്തത്",
|
||||
|
||||
@@ -1463,7 +1463,6 @@
|
||||
"not_available": "उपलब्ध नाही",
|
||||
"not_in_any_album": "कोणत्याही अल्बममध्ये नाही",
|
||||
"not_selected": "निवडलेले नाही",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "नोट: आधी अपलोड केलेल्या अॅसेट्सवर स्टोरेज लेबल लागू करण्यासाठी हा आदेश चालवा",
|
||||
"notes": "नोट्स",
|
||||
"nothing_here_yet": "इथे अजून काही नाही",
|
||||
"notification_permission_dialog_content": "सूचना सक्षम करण्यासाठी सेटिंग्जमध्ये जा आणि अनुमती द्या.",
|
||||
@@ -1658,7 +1657,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {# आयटम} other {# आयटम}} नव्या व्यक्तीकडे पुन्हा नियुक्त केले",
|
||||
"reassing_hint": "निवडलेले आयटम विद्यमान व्यक्तीकडे नियुक्त करा",
|
||||
"recent": "अलीकडील",
|
||||
"recent-albums": "अलीकडील अल्बम",
|
||||
"recent_albums": "अलीकडील अल्बम",
|
||||
"recent_searches": "अलीकडील शोध",
|
||||
"recently_added": "नुकतेच जोडलेले",
|
||||
"recently_added_page_title": "नुकतेच जोडलेले",
|
||||
|
||||
@@ -1604,7 +1604,6 @@
|
||||
"not_available": "Ikke tilgjengelig",
|
||||
"not_in_any_album": "Ikke i noe album",
|
||||
"not_selected": "Ikke valgt",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Merk: For å bruke lagringsetiketten på tidligere opplastede filer, kjør",
|
||||
"notes": "Notater",
|
||||
"nothing_here_yet": "Ingenting her enda",
|
||||
"notification_permission_dialog_content": "For å aktivere notifikasjoner, gå til Innstillinger og velg tillat.",
|
||||
@@ -1806,7 +1805,7 @@
|
||||
"reassigned_assets_to_new_person": "Flyttet {count, plural, one {# element} other {# elementer}} til en ny person",
|
||||
"reassing_hint": "Tilordne valgte eiendeler til en eksisterende person",
|
||||
"recent": "Nylig",
|
||||
"recent-albums": "Nylige album",
|
||||
"recent_albums": "Nylige album",
|
||||
"recent_searches": "Nylige søk",
|
||||
"recently_added": "Nylig lagt til",
|
||||
"recently_added_page_title": "Nylig oppført",
|
||||
|
||||
17
i18n/nl.json
17
i18n/nl.json
@@ -311,7 +311,7 @@
|
||||
"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)://",
|
||||
"server_external_domain_settings_description": "Domein voor externe links",
|
||||
"server_public_users": "Openbare gebruikerslijst",
|
||||
"server_public_users_description": "Alle gebruikers (met naam en e-mailadres) worden weergegeven wanneer een gebruiker wordt toegevoegd aan gedeelde albums. Wanneer uitgeschakeld, is de gebruikerslijst alleen beschikbaar voor beheerders.",
|
||||
"server_settings": "Serverinstellingen",
|
||||
@@ -793,7 +793,12 @@
|
||||
"collapse_all": "Alles inklappen",
|
||||
"color": "Kleur",
|
||||
"color_theme": "Kleurenthema",
|
||||
"command": "Opdracht",
|
||||
"command": "Commando",
|
||||
"command_palette_prompt": "Vind snel pagina's, acties of commando's",
|
||||
"command_palette_to_close": "om te sluiten",
|
||||
"command_palette_to_navigate": "om te navigeren",
|
||||
"command_palette_to_select": "om te selecteren",
|
||||
"command_palette_to_show_all": "om alles te tonen",
|
||||
"comment_deleted": "Opmerking verwijderd",
|
||||
"comment_options": "Opties voor opmerkingen",
|
||||
"comments_and_likes": "Opmerkingen & likes",
|
||||
@@ -1168,6 +1173,7 @@
|
||||
"exif_bottom_sheet_people": "MENSEN",
|
||||
"exif_bottom_sheet_person_add_person": "Naam toevoegen",
|
||||
"exit_slideshow": "Diavoorstelling sluiten",
|
||||
"expand": "Uitklappen",
|
||||
"expand_all": "Alles uitvouwen",
|
||||
"experimental_settings_new_asset_list_subtitle": "Werk in uitvoering",
|
||||
"experimental_settings_new_asset_list_title": "Experimenteel fotoraster inschakelen",
|
||||
@@ -1613,7 +1619,6 @@
|
||||
"not_available": "n.v.t.",
|
||||
"not_in_any_album": "Niet in een album",
|
||||
"not_selected": "Niet geselecteerd",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Opmerking: om het opslaglabel toe te passen op eerder geüploade items, voer de volgende taak uit",
|
||||
"notes": "Opmerkingen",
|
||||
"nothing_here_yet": "Hier staan nog geen items",
|
||||
"notification_permission_dialog_content": "Om meldingen in te schakelen, ga naar Instellingen en selecteer toestaan.",
|
||||
@@ -1643,6 +1648,7 @@
|
||||
"online": "Online",
|
||||
"only_favorites": "Alleen favorieten",
|
||||
"open": "Openen",
|
||||
"open_calendar": "Open kalender",
|
||||
"open_in_map_view": "Openen in kaartweergave",
|
||||
"open_in_openstreetmap": "Openen in OpenStreetMap",
|
||||
"open_the_search_filters": "Open de zoekfilters",
|
||||
@@ -1815,7 +1821,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {# item} other {# items}} opnieuw toegewezen aan een nieuw persoon",
|
||||
"reassing_hint": "Geselecteerde items toewijzen aan een bestaand persoon",
|
||||
"recent": "Recent",
|
||||
"recent-albums": "Recente albums",
|
||||
"recent_albums": "Recente albums",
|
||||
"recent_searches": "Recente zoekopdrachten",
|
||||
"recently_added": "Onlangs toegevoegd",
|
||||
"recently_added_page_title": "Recent toegevoegd",
|
||||
@@ -2184,6 +2190,7 @@
|
||||
"support": "Ondersteuning",
|
||||
"support_and_feedback": "Ondersteuning & feedback",
|
||||
"support_third_party_description": "Je Immich installatie is door een derde partij samengesteld. Problemen die je ervaart, kunnen door dat pakket veroorzaakt zijn. Meld problemen in eerste instantie bij hen via de onderstaande links.",
|
||||
"supporter": "Supporter",
|
||||
"swap_merge_direction": "Wissel richting voor samenvoegen om",
|
||||
"sync": "Synchroniseren",
|
||||
"sync_albums": "Albums synchroniseren",
|
||||
@@ -2295,7 +2302,7 @@
|
||||
"unstack_action_prompt": "{count} item(s) ontstapeld",
|
||||
"unstacked_assets_count": "{count, plural, one {# item} other {# items}} ontstapeld",
|
||||
"unsupported_field_type": "Veldtype niet ondersteund",
|
||||
"untagged": "Ongemarkeerd",
|
||||
"untagged": "Zonder tags",
|
||||
"untitled_workflow": "Naamloze werkstroom",
|
||||
"up_next": "Volgende",
|
||||
"update_location_action_prompt": "Werk de locatie bij van {count} geselecteerde items met:",
|
||||
|
||||
@@ -1613,7 +1613,6 @@
|
||||
"not_available": "Nie dotyczy",
|
||||
"not_in_any_album": "Bez albumu",
|
||||
"not_selected": "Nie wybrano",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Uwaga: Aby przypisać etykietę magazynowania do wcześniej przesłanych zasobów, uruchom",
|
||||
"notes": "Uwagi",
|
||||
"nothing_here_yet": "Nic tu jeszcze nie ma",
|
||||
"notification_permission_dialog_content": "Aby włączyć powiadomienia, przejdź do Ustawień i wybierz opcję Zezwalaj.",
|
||||
@@ -1815,7 +1814,7 @@
|
||||
"reassigned_assets_to_new_person": "Przypisano ponownie {count, plural, one {# zasób} other {# zasobów}} do nowej osoby",
|
||||
"reassing_hint": "Przypisz wybrane zasoby do istniejącej osoby",
|
||||
"recent": "Ostatnie",
|
||||
"recent-albums": "Ostatnie albumy",
|
||||
"recent_albums": "Ostatnie albumy",
|
||||
"recent_searches": "Ostatnie wyszukiwania",
|
||||
"recently_added": "Ostatnio dodane",
|
||||
"recently_added_page_title": "Ostatnio Dodane",
|
||||
@@ -2065,7 +2064,7 @@
|
||||
"shared_by_you": "Udostępnione przez ciebie",
|
||||
"shared_from_partner": "Zdjęcia od {partner}",
|
||||
"shared_intent_upload_button_progress_text": "{current} / {total} Przesłano",
|
||||
"shared_link_app_bar_title": "Udostępnione linki",
|
||||
"shared_link_app_bar_title": "Udostępnione",
|
||||
"shared_link_clipboard_copied_massage": "Skopiowane do schowka",
|
||||
"shared_link_clipboard_text": "Link: {link}\nHasło: {password}",
|
||||
"shared_link_create_error": "Błąd podczas tworzenia linka do udostępnienia",
|
||||
|
||||
@@ -1613,7 +1613,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "Não está em nenhum álbum",
|
||||
"not_selected": "Não selecionado",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar o Rótulo de Armazenamento a ficheiros carregados anteriormente, execute o",
|
||||
"notes": "Notas",
|
||||
"nothing_here_yet": "Ainda não existe nada aqui",
|
||||
"notification_permission_dialog_content": "Para ativar as notificações, vá em Configurações e selecione permitir.",
|
||||
@@ -1815,7 +1814,7 @@
|
||||
"reassigned_assets_to_new_person": "Reatribuído {count, plural, one {# ficheiro} other {# ficheiros}} a uma nova pessoa",
|
||||
"reassing_hint": "Atribuir ficheiros selecionados a uma pessoa existente",
|
||||
"recent": "Recentes",
|
||||
"recent-albums": "Álbuns recentes",
|
||||
"recent_albums": "Álbuns recentes",
|
||||
"recent_searches": "Pesquisas recentes",
|
||||
"recently_added": "Adicionados Recentemente",
|
||||
"recently_added_page_title": "Adicionado recentemente",
|
||||
|
||||
@@ -1613,7 +1613,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "Fora de álbum",
|
||||
"not_selected": "Não selecionado",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar o rótulo de armazenamento a arquivos enviados anteriormente, execute o",
|
||||
"notes": "Notas",
|
||||
"nothing_here_yet": "Ainda não existe nada aqui",
|
||||
"notification_permission_dialog_content": "Para ativar as notificações, vá em Configurações e selecione permitir.",
|
||||
@@ -1815,7 +1814,7 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {# arquivo reatribuído} other {# arquivos reatribuídos}} a uma nova pessoa",
|
||||
"reassing_hint": "Atribuir arquivos selecionados a uma pessoa existente",
|
||||
"recent": "Recente",
|
||||
"recent-albums": "Álbuns recentes",
|
||||
"recent_albums": "Álbuns recentes",
|
||||
"recent_searches": "Pesquisas recentes",
|
||||
"recently_added": "Adicionado recentemente",
|
||||
"recently_added_page_title": "Adicionados recentemente",
|
||||
|
||||
38
i18n/ro.json
38
i18n/ro.json
@@ -272,7 +272,7 @@
|
||||
"oauth_auto_register": "Auto înregistrare",
|
||||
"oauth_auto_register_description": "Înregistrează automat utilizatori noi după autentificarea cu OAuth",
|
||||
"oauth_button_text": "Text buton",
|
||||
"oauth_client_secret_description": "Necesar dacă PKCE (Proof Key for Code Exchange) nu este suportat de furnizorul OAuth",
|
||||
"oauth_client_secret_description": "Necesar pentru un client confidențial sau dacă PKCE (Proof Key for Code Exchange) nu este suportat pentru un client public.",
|
||||
"oauth_enable_description": "Autentifică-te cu OAuth",
|
||||
"oauth_mobile_redirect_uri": "URI de redirecționare mobilă",
|
||||
"oauth_mobile_redirect_uri_override": "Înlocuire URI de redirecționare mobilă",
|
||||
@@ -513,7 +513,7 @@
|
||||
"albums_default_sort_order_description": "Ordinea inițială de sortare a pozelor la crearea de albume noi.",
|
||||
"albums_feature_description": "Colecții de date care pot fi partajate cu alți utilizatori.",
|
||||
"albums_on_device_count": "{count} albume pe dispozitiv",
|
||||
"albums_selected": "{număra, plural, unul {# album selectat} altele {# albumuri selectate}}",
|
||||
"albums_selected": "{număr, plural, unul {# album selectat} altele {# albumuri selectate}}",
|
||||
"all": "Toate",
|
||||
"all_albums": "Toate albumele",
|
||||
"all_people": "Toți oamenii",
|
||||
@@ -626,7 +626,7 @@
|
||||
"backup_album_selection_page_select_albums": "Selectează albume",
|
||||
"backup_album_selection_page_selection_info": "Informații selecție",
|
||||
"backup_album_selection_page_total_assets": "Total resurse unice",
|
||||
"backup_albums_sync": "Sincronizarea albumelor de backup",
|
||||
"backup_albums_sync": "Sincronizarea albumelor de rezervă",
|
||||
"backup_all": "Toate",
|
||||
"backup_background_service_backup_failed_message": "Eșuare backup resurse. Reîncercare…",
|
||||
"backup_background_service_complete_notification": "Backup resurse finalizat",
|
||||
@@ -766,9 +766,9 @@
|
||||
"cleanup_found_assets": "Am găsit {count} materiale in copia de rezerva",
|
||||
"cleanup_found_assets_with_size": "{count} obiecte găsite ({size})",
|
||||
"cleanup_icloud_shared_albums_excluded": "Albumele partajate iCLoud sunt excluse de la cautare",
|
||||
"cleanup_no_assets_found": "Nici un material in copia de rezerva găsit după criteriu",
|
||||
"cleanup_no_assets_found": "Nu au fost găsite fișiere care să corespundă criteriilor de mai sus. „Eliberare spațiu” poate șterge doar fișierele care au fost deja salvate pe server.",
|
||||
"cleanup_preview_title": "Materiale sa fie șterse ({count})",
|
||||
"cleanup_step3_description": "Scanați pentru fotografii și videoclipuri pentru care au fost făcute copii de rezervă pe server cu data limită selectată și opțiunile de filtrare",
|
||||
"cleanup_step3_description": "Scanează fișierele salvate pe server care corespund setărilor tale de dată și păstrare.",
|
||||
"cleanup_step4_summary": "{count} elemente create înainte de {date} sunt puse în coadă pentru a fi eliminate de pe dispozitiv",
|
||||
"cleanup_trash_hint": "Pentru a recupera complet spațiu de stocare, deschideți aplicația Galerie și goliți coșul de gunoi",
|
||||
"clear": "Curățați",
|
||||
@@ -782,6 +782,8 @@
|
||||
"client_cert_import": "Importă",
|
||||
"client_cert_import_success_msg": "Certificatul de client este importat",
|
||||
"client_cert_invalid_msg": "Fisier cu certificat invalid sau parola este greșită",
|
||||
"client_cert_password_message": "Introduceți parola pentru acest certificat",
|
||||
"client_cert_password_title": "Parola certificatului",
|
||||
"client_cert_remove_msg": "Certificatul de client este șters",
|
||||
"client_cert_subtitle": "Este suportat doar formatul PKCS12 (.p12, .pfx). Importul/ștergerea certificatului este disponibil(ă) doar înainte de autentificare",
|
||||
"client_cert_title": "Certificat SSL pentru client [EXPERIMENTAL]",
|
||||
@@ -867,8 +869,8 @@
|
||||
"custom_locale": "Setare Regională Personalizată",
|
||||
"custom_locale_description": "Formatați datele și numerele în funcție de limbă și regiune",
|
||||
"custom_url": "URL personalizat",
|
||||
"cutoff_date_description": "Eliminați fotografiile și videoclipurile mai vechi de",
|
||||
"cutoff_day": "{count, plural, o {day} mai multe {days}}",
|
||||
"cutoff_date_description": "Păstrează fotografiile din ultimele…",
|
||||
"cutoff_day": "{număr, plural, o {day} mai multe {days}}",
|
||||
"cutoff_year": "{count, plural, =0 {0 ani} one {# an} few {# ani} other {# de ani}}",
|
||||
"daily_title_text_date": "E, LLL zz",
|
||||
"daily_title_text_date_year": "E, LLL zz, aaaa",
|
||||
@@ -995,6 +997,11 @@
|
||||
"editor_close_without_save_prompt": "Schimbările nu vor fi salvate",
|
||||
"editor_close_without_save_title": "Închideți editorul?",
|
||||
"editor_confirm_reset_all_changes": "Sigur vrei să resetezi toate modificările?",
|
||||
"editor_discard_edits_confirm": "Renunță modificările",
|
||||
"editor_discard_edits_prompt": "Ai modificări nesalvate. Ești sigur că vrei să le renunți?",
|
||||
"editor_discard_edits_title": "Renunți la modificări?",
|
||||
"editor_edits_applied_error": "Nu s-au putut aplica modificările",
|
||||
"editor_edits_applied_success": "Modificările au fost aplicate cu succes",
|
||||
"editor_flip_horizontal": "Întoarceți orizontal",
|
||||
"editor_flip_vertical": "Întoarceți vertical",
|
||||
"editor_orientation": "Orientare",
|
||||
@@ -1196,6 +1203,8 @@
|
||||
"features_in_development": "Funcții în dezvoltare",
|
||||
"features_setting_description": "Gestionați funcțiile aplicației",
|
||||
"file_name_or_extension": "Numele sau extensia fișierului",
|
||||
"file_name_text": "Nume fișier",
|
||||
"file_name_with_value": "Nume fișier: {file_name}",
|
||||
"file_size": "Mărime fișier",
|
||||
"filename": "Numele fișierului",
|
||||
"filetype": "Tipul fișierului",
|
||||
@@ -1214,7 +1223,7 @@
|
||||
"forgot_pin_code_question": "Ai uitat codul PIN?",
|
||||
"forward": "Redirecționare",
|
||||
"free_up_space": "Eliberați spațiu",
|
||||
"free_up_space_description": "Mută fotografiile și videoclipurile salvate în coșul de gunoi al dispozitivului pentru a elibera spațiu. Copiile tale de pe server rămân în siguranță",
|
||||
"free_up_space_description": "Mută fotografiile și videoclipurile salvate în coșul de gunoi al dispozitivului pentru a elibera spațiu. Copiile tale de pe server rămân în siguranță.",
|
||||
"free_up_space_settings_subtitle": "Eliberați spațiul de stocare al dispozitivului",
|
||||
"full_path": "Calea completă: {path}",
|
||||
"gcast_enabled": "Google Cast",
|
||||
@@ -1574,7 +1583,7 @@
|
||||
"no_albums_with_name_yet": "Se pare că nu aveți încă niciun album cu acest nume.",
|
||||
"no_albums_yet": "Se pare că nu aveți încă niciun album.",
|
||||
"no_archived_assets_message": "Arhivați fotografii și videoclipuri pentru a le ascunde din vizualizarea fotografii",
|
||||
"no_assets_message": "CLICK PENTRU A ÎNCĂRCA PRIMA TA FOTOGRAFIE",
|
||||
"no_assets_message": "Apasă pentru a încărca prima ta fotografie.",
|
||||
"no_assets_to_show": "Nicio resursă de afișat",
|
||||
"no_cast_devices_found": "Nu s-au găsit dispozitive de difuzare",
|
||||
"no_checksum_local": "Nu există checksum – nu se pot prelua resursele locale",
|
||||
@@ -1604,7 +1613,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "Nu există în niciun album",
|
||||
"not_selected": "Neselectat",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Notă: Pentru a aplica eticheta de stocare la resursele încărcate anterior, rulați",
|
||||
"notes": "Note",
|
||||
"nothing_here_yet": "Nimic aici încă",
|
||||
"notification_permission_dialog_content": "Pentru a activa notificările, mergi în Setări > Immich și selectează permite.",
|
||||
@@ -1806,7 +1814,7 @@
|
||||
"reassigned_assets_to_new_person": "Re-alocat {count, plural, one {# resursă} other {# resurse}} unei noi persoane",
|
||||
"reassing_hint": "Atribuiți resursele selectate unei persoane existente",
|
||||
"recent": "Recent",
|
||||
"recent-albums": "Albume recente",
|
||||
"recent_albums": "Albume recente",
|
||||
"recent_searches": "Căutări recente",
|
||||
"recently_added": "Adăugate recent",
|
||||
"recently_added_page_title": "Adăugate recent",
|
||||
@@ -2251,7 +2259,7 @@
|
||||
"trigger_asset_uploaded": "Fișier încărcat",
|
||||
"trigger_asset_uploaded_description": "Declanșează cand un fișier este încarcat",
|
||||
"trigger_description": "Un eveniment care declanșează fluxul de lucru",
|
||||
"trigger_person_recognized": "Persoana Recunoscută",
|
||||
"trigger_person_recognized": "Persoană Recunoscută",
|
||||
"trigger_person_recognized_description": "Declanșat atunci când este detectată o persoană",
|
||||
"trigger_type": "Tip de declanșare",
|
||||
"troubleshoot": "Depanați",
|
||||
@@ -2287,7 +2295,7 @@
|
||||
"unstacked_assets_count": "Nestivuit {count, plural, one {# resursă} other {# resurse}}",
|
||||
"unsupported_field_type": "Tip de câmp neacceptat",
|
||||
"untagged": "Neetichetat",
|
||||
"untitled_workflow": "Flux fara titlu",
|
||||
"untitled_workflow": "Flux de lucru fără titlu",
|
||||
"up_next": "Mai departe",
|
||||
"update_location_action_prompt": "Actualizează locația pentru {count} resurse selectate cu:",
|
||||
"updated_at": "Actualizat",
|
||||
@@ -2297,7 +2305,7 @@
|
||||
"upload_details": "Detalii încărcare",
|
||||
"upload_dialog_info": "Vrei să backup resursele selectate pe server?",
|
||||
"upload_dialog_title": "Încarcă resursă",
|
||||
"upload_error_with_count": "Eroare la încărcare pentru {count, plural, one {# fișier} other {# fișiere}}",
|
||||
"upload_error_with_count": "Eroare la încărcare pentru {număr, plural, un {# fișier} alte {# fișiere}}",
|
||||
"upload_errors": "Încărcare finalizată cu {count, plural, one {# eroare} other {# erori}}, reîmprospătați pagina pentru a reîncărca noile resurse.",
|
||||
"upload_finished": "Încărcarea s-a finalizat",
|
||||
"upload_progress": "Rămas {remaining, number} - Procesat {processed, number}/{total, number}",
|
||||
@@ -2312,7 +2320,7 @@
|
||||
"url": "URL",
|
||||
"usage": "Utilizare",
|
||||
"use_biometric": "Folosește biometrice",
|
||||
"use_current_connection": "folosește conexiunea curentă",
|
||||
"use_current_connection": "Folosește conexiunea curentă",
|
||||
"use_custom_date_range": "Utilizați în schimb un interval de date personalizat",
|
||||
"user": "Utilizator",
|
||||
"user_has_been_deleted": "Acest utilizator a fost șters.",
|
||||
|
||||
15
i18n/ru.json
15
i18n/ru.json
@@ -311,7 +311,7 @@
|
||||
"search_jobs": "Поиск задач…",
|
||||
"send_welcome_email": "Отправить приветственное письмо",
|
||||
"server_external_domain_settings": "Внешний домен",
|
||||
"server_external_domain_settings_description": "Домен для публичных ссылок, включая http(s)://",
|
||||
"server_external_domain_settings_description": "Домен для публичных ссылок",
|
||||
"server_public_users": "Публичные пользователи",
|
||||
"server_public_users_description": "Выводить список пользователей (имена и email) в общих альбомах. Когда отключено, список доступен только администраторам, пользователи смогут делиться только ссылкой.",
|
||||
"server_settings": "Настройки сервера",
|
||||
@@ -794,6 +794,11 @@
|
||||
"color": "Цвет",
|
||||
"color_theme": "Цветовая тема",
|
||||
"command": "Команда",
|
||||
"command_palette_prompt": "Быстрый поиск страниц, действий или команд",
|
||||
"command_palette_to_close": "закрыть",
|
||||
"command_palette_to_navigate": "навигация",
|
||||
"command_palette_to_select": "выбрать",
|
||||
"command_palette_to_show_all": "показать все",
|
||||
"comment_deleted": "Комментарий удалён",
|
||||
"comment_options": "Действия с комментарием",
|
||||
"comments_and_likes": "Комментарии и отметки \"нравится\"",
|
||||
@@ -1168,6 +1173,7 @@
|
||||
"exif_bottom_sheet_people": "ЛЮДИ",
|
||||
"exif_bottom_sheet_person_add_person": "Добавить имя",
|
||||
"exit_slideshow": "Выйти из слайд-шоу",
|
||||
"expand": "Развернуть",
|
||||
"expand_all": "Развернуть всё",
|
||||
"experimental_settings_new_asset_list_subtitle": "В разработке",
|
||||
"experimental_settings_new_asset_list_title": "Включить экспериментальную сетку фотографий",
|
||||
@@ -1613,7 +1619,6 @@
|
||||
"not_available": "Нет данных",
|
||||
"not_in_any_album": "Ни в одном альбоме",
|
||||
"not_selected": "Не выбрано",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Примечание: Чтобы применить метку хранилища к ранее загруженным объектам, запустите",
|
||||
"notes": "Примечание",
|
||||
"nothing_here_yet": "Здесь пока ничего нет",
|
||||
"notification_permission_dialog_content": "Чтобы включить уведомления, перейдите в «Настройки» и выберите «Разрешить».",
|
||||
@@ -1643,6 +1648,7 @@
|
||||
"online": "Доступен",
|
||||
"only_favorites": "Только избранное",
|
||||
"open": "Открыть",
|
||||
"open_calendar": "Открыть календарь",
|
||||
"open_in_map_view": "Открыть в режиме просмотра карты",
|
||||
"open_in_openstreetmap": "Открыть в OpenStreetMap",
|
||||
"open_the_search_filters": "Открыть фильтры поиска",
|
||||
@@ -1815,7 +1821,7 @@
|
||||
"reassigned_assets_to_new_person": "Лица на {count, plural, one {# объекте} other {# объектах}} переназначены на нового человека",
|
||||
"reassing_hint": "Назначить выбранные объекты указанному человеку",
|
||||
"recent": "Недавние",
|
||||
"recent-albums": "Недавние альбомы",
|
||||
"recent_albums": "Недавние альбомы",
|
||||
"recent_searches": "Недавние поисковые запросы",
|
||||
"recently_added": "Недавно добавленные",
|
||||
"recently_added_page_title": "Недавно добавленные",
|
||||
@@ -2129,7 +2135,7 @@
|
||||
"show_search_options": "Показать параметры поиска",
|
||||
"show_shared_links": "Показать публичные ссылки",
|
||||
"show_slideshow_transition": "Плавный переход",
|
||||
"show_supporter_badge": "Значок поддержки",
|
||||
"show_supporter_badge": "Значок спонсорства",
|
||||
"show_supporter_badge_description": "Показать значок поддержки",
|
||||
"show_text_recognition": "Показать распознанный текст",
|
||||
"show_text_search_menu": "Показать меню текстового поиска",
|
||||
@@ -2184,6 +2190,7 @@
|
||||
"support": "Поддержка",
|
||||
"support_and_feedback": "Поддержка и обратная связь",
|
||||
"support_third_party_description": "Ваша установка immich была упакована сторонним разработчиком. Проблемы, с которыми вы столкнулись, могут быть вызваны этим пакетом, поэтому, пожалуйста, в первую очередь обращайтесь к ним, используя ссылки ниже.",
|
||||
"supporter": "Спонсор Immich",
|
||||
"swap_merge_direction": "Изменить направление слияния",
|
||||
"sync": "Синхр.",
|
||||
"sync_albums": "Синхронизировать альбомы",
|
||||
|
||||
13
i18n/sk.json
13
i18n/sk.json
@@ -311,7 +311,7 @@
|
||||
"search_jobs": "Vyhľadať úlohy…",
|
||||
"send_welcome_email": "Odoslať uvítací e-mail",
|
||||
"server_external_domain_settings": "Externá doména",
|
||||
"server_external_domain_settings_description": "Verejná doména pre zdieľané odkazy, vrátane http(s)://",
|
||||
"server_external_domain_settings_description": "Doména používaná pre externé odkazy",
|
||||
"server_public_users": "Verejní používatelia",
|
||||
"server_public_users_description": "Všetci používatelia (meno a email) sú uvedení pri pridávaní používateľa do zdieľaných albumov. Ak je táto funkcia vypnutá, zoznam používateľov bude dostupný iba správcom.",
|
||||
"server_settings": "Server",
|
||||
@@ -794,6 +794,11 @@
|
||||
"color": "Farba",
|
||||
"color_theme": "Farba témy",
|
||||
"command": "Príkaz",
|
||||
"command_palette_prompt": "Rýchlo vyhľadajte stránky, akcie alebo príkazy ako",
|
||||
"command_palette_to_close": "zatvoriť",
|
||||
"command_palette_to_navigate": "vložiť",
|
||||
"command_palette_to_select": "vybrať",
|
||||
"command_palette_to_show_all": "zobraziť všetko",
|
||||
"comment_deleted": "Komentár bol odstránený",
|
||||
"comment_options": "Možnosti komentára",
|
||||
"comments_and_likes": "Komentáre a páči sa mi to",
|
||||
@@ -1168,6 +1173,7 @@
|
||||
"exif_bottom_sheet_people": "ĽUDIA",
|
||||
"exif_bottom_sheet_person_add_person": "Pridať meno",
|
||||
"exit_slideshow": "Opustiť prezentáciu",
|
||||
"expand": "Rozbaliť",
|
||||
"expand_all": "Rozbaliť všetko",
|
||||
"experimental_settings_new_asset_list_subtitle": "Prebiehajúca práca",
|
||||
"experimental_settings_new_asset_list_title": "Povolenie experimentálnej mriežky fotografií",
|
||||
@@ -1613,7 +1619,6 @@
|
||||
"not_available": "Nedostupné",
|
||||
"not_in_any_album": "Nie je v žiadnom albume",
|
||||
"not_selected": "Nevybrané",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Poznámka: Ak chcete použiť Štítok úložiska na predtým nahrané médiá, spustite príkaz",
|
||||
"notes": "Poznámky",
|
||||
"nothing_here_yet": "Zatiaľ tu nič nie je",
|
||||
"notification_permission_dialog_content": "Ak chcete povoliť upozornenia, prejdite do Nastavenia a vyberte možnosť Povoliť.",
|
||||
@@ -1643,6 +1648,7 @@
|
||||
"online": "Online",
|
||||
"only_favorites": "Len obľúbené",
|
||||
"open": "Otvoriť",
|
||||
"open_calendar": "Otvoriť kalendár",
|
||||
"open_in_map_view": "Otvoriť v mape",
|
||||
"open_in_openstreetmap": "Otvoriť v OpenStreetMap",
|
||||
"open_the_search_filters": "Otvoriť vyhľadávacie filtre",
|
||||
@@ -1815,7 +1821,7 @@
|
||||
"reassigned_assets_to_new_person": "Opätovne {count, plural, one {priradená # položka} few {priradené # položky} other {priradených # položiek}} novej osobe",
|
||||
"reassing_hint": "Priradí zvolenú položku k existujúcej osobe",
|
||||
"recent": "Nedávne",
|
||||
"recent-albums": "Posledné albumy",
|
||||
"recent_albums": "Posledné albumy",
|
||||
"recent_searches": "Posledné vyhľadávania",
|
||||
"recently_added": "Nedávno pridané",
|
||||
"recently_added_page_title": "Nedávno pridané",
|
||||
@@ -2184,6 +2190,7 @@
|
||||
"support": "Podpora",
|
||||
"support_and_feedback": "Podpora a spätná väzba",
|
||||
"support_third_party_description": "Vaša inštalácia Immich bola pripravená treťou stranou. Problémy, ktoré sa vyskytli, môžu byť spôsobené týmto balíčkom, preto sa na nich obráťte v prvom rade cez nasledujúce odkazy.",
|
||||
"supporter": "Podporovateľ",
|
||||
"swap_merge_direction": "Vymeniť smer zlúčenia",
|
||||
"sync": "Synchronizovať",
|
||||
"sync_albums": "Synchronizovať albumy",
|
||||
|
||||
13
i18n/sl.json
13
i18n/sl.json
@@ -311,7 +311,7 @@
|
||||
"search_jobs": "Išči opravila…",
|
||||
"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)://",
|
||||
"server_external_domain_settings_description": "Domena, uporabljena za zunanje povezave",
|
||||
"server_public_users": "Javni uporabniki",
|
||||
"server_public_users_description": "Vsi uporabniki (ime in e-pošta) so navedeni pri dodajanju uporabnika v albume v skupni rabi. Ko je onemogočen, bo seznam uporabnikov na voljo samo skrbniškim uporabnikom.",
|
||||
"server_settings": "Nastavitve strežnika",
|
||||
@@ -794,6 +794,11 @@
|
||||
"color": "Barva",
|
||||
"color_theme": "Barva teme",
|
||||
"command": "Ukaz",
|
||||
"command_palette_prompt": "Hitro iskanje strani, dejanj ali ukazov",
|
||||
"command_palette_to_close": "zapreti",
|
||||
"command_palette_to_navigate": "vstopiti",
|
||||
"command_palette_to_select": "izbrati",
|
||||
"command_palette_to_show_all": "prikazati vse",
|
||||
"comment_deleted": "Komentar izbrisan",
|
||||
"comment_options": "Možnosti komentiranja",
|
||||
"comments_and_likes": "Komentarji in všečki",
|
||||
@@ -1168,6 +1173,7 @@
|
||||
"exif_bottom_sheet_people": "OSEBE",
|
||||
"exif_bottom_sheet_person_add_person": "Dodaj ime",
|
||||
"exit_slideshow": "Zapustite diaprojekcijo",
|
||||
"expand": "Razširi",
|
||||
"expand_all": "Razširi vse",
|
||||
"experimental_settings_new_asset_list_subtitle": "Delo v teku",
|
||||
"experimental_settings_new_asset_list_title": "Omogoči eksperimentalno mrežo fotografij",
|
||||
@@ -1613,7 +1619,6 @@
|
||||
"not_available": "Ni na voljo",
|
||||
"not_in_any_album": "Ni v nobenem albumu",
|
||||
"not_selected": "Ni izbrano",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Opomba: Če želite oznako za shranjevanje uporabiti za predhodno naložena sredstva, zaženite",
|
||||
"notes": "Opombe",
|
||||
"nothing_here_yet": "Tukaj še ni ničesar",
|
||||
"notification_permission_dialog_content": "Če želite omogočiti obvestila, pojdite v Nastavitve in izberite Dovoli.",
|
||||
@@ -1643,6 +1648,7 @@
|
||||
"online": "Povezano",
|
||||
"only_favorites": "Samo priljubljene",
|
||||
"open": "Odpri",
|
||||
"open_calendar": "Odpri koledar",
|
||||
"open_in_map_view": "Odpri v pogledu zemljevida",
|
||||
"open_in_openstreetmap": "Odpri v OpenStreetMap",
|
||||
"open_the_search_filters": "Odpri iskalne filtre",
|
||||
@@ -1815,7 +1821,7 @@
|
||||
"reassigned_assets_to_new_person": "Ponovno dodeljeno {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}} za novo osebo",
|
||||
"reassing_hint": "Dodeli izbrana sredstva obstoječi osebi",
|
||||
"recent": "Nedavno",
|
||||
"recent-albums": "Zadnji albumi",
|
||||
"recent_albums": "Zadnji albumi",
|
||||
"recent_searches": "Nedavna iskanja",
|
||||
"recently_added": "Nedavno dodano",
|
||||
"recently_added_page_title": "Nedavno dodano",
|
||||
@@ -2184,6 +2190,7 @@
|
||||
"support": "Podpora",
|
||||
"support_and_feedback": "Podpora in povratne informacije",
|
||||
"support_third_party_description": "Vašo namestitev Immich je pakirala tretja oseba. Težave, ki jih imate, lahko povzroči ta paket, zato prosimo, da težave najprej izpostavite njim, tako da uporabite spodnje povezave.",
|
||||
"supporter": "Podpornik",
|
||||
"swap_merge_direction": "Zamenjaj smer združevanja",
|
||||
"sync": "Sinhronizacija",
|
||||
"sync_albums": "Sinhronizacija albumov",
|
||||
|
||||
@@ -1280,7 +1280,6 @@
|
||||
"not_available": "Недоступно",
|
||||
"not_in_any_album": "Нема ни у једном албуму",
|
||||
"not_selected": "Није изабрано",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Напомена: Да бисте применили ознаку за складиштење на претходно уплоадиране датотеке, покрените",
|
||||
"notes": "Напомене",
|
||||
"notification_permission_dialog_content": "Да би укљуцили нотификације, идите у Опције и одаберите Дозволи.",
|
||||
"notification_permission_list_tile_content": "Дајте дозволу за омогућавање обавештења.",
|
||||
@@ -1448,7 +1447,7 @@
|
||||
"reassigned_assets_to_new_person": "Поново додељено {count, plural, one {# датотека} other {# датотеке}} новој особи",
|
||||
"reassing_hint": "Доделите изабрана средства постојећој особи",
|
||||
"recent": "Скорашњи",
|
||||
"recent-albums": "Недавни албуми",
|
||||
"recent_albums": "Недавни албуми",
|
||||
"recent_searches": "Скорашње претраге",
|
||||
"recently_added": "Недавно додато",
|
||||
"recently_added_page_title": "Недавно Додато",
|
||||
|
||||
@@ -1241,7 +1241,6 @@
|
||||
"no_shared_albums_message": "Napravite album da biste delili fotografije i video zapise sa ljudima u vašoj mreži",
|
||||
"not_in_any_album": "Nema ni u jednom albumu",
|
||||
"not_selected": "Nije izabrano",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Napomena: Da biste primenili oznaku za skladištenje na prethodno uploadirane datoteke, pokrenite",
|
||||
"notes": "Napomene",
|
||||
"notification_permission_dialog_content": "Da bi ukljucili notifikacije, idite u Opcije i odaberite Dozvoli.",
|
||||
"notification_permission_list_tile_content": "Dajte dozvolu za omogućavanje obaveštenja.",
|
||||
@@ -1399,7 +1398,7 @@
|
||||
"reassigned_assets_to_new_person": "Ponovo dodeljeno {count, plural, one {# datoteka} other {# datoteke}} novoj osobi",
|
||||
"reassing_hint": "Dodelite izabrana sredstva postojećoj osobi",
|
||||
"recent": "Skorašnji",
|
||||
"recent-albums": "Nedavni albumi",
|
||||
"recent_albums": "Nedavni albumi",
|
||||
"recent_searches": "Skorašnje pretrage",
|
||||
"recently_added": "Nedavno dodato",
|
||||
"recently_added_page_title": "Nedavno Dodato",
|
||||
|
||||
@@ -443,7 +443,7 @@
|
||||
"version_check_enabled_description": "Aktivera versionskontroll",
|
||||
"version_check_implications": "Funktionen för versionskontroll är beroende av periodisk kommunikation med github.com",
|
||||
"version_check_settings": "Versionskontroll",
|
||||
"version_check_settings_description": "Aktivera/inaktivera meddelandet om ny versionen",
|
||||
"version_check_settings_description": "Aktivera/inaktivera notis om ny version",
|
||||
"video_conversion_job": "Omkoda videor",
|
||||
"video_conversion_job_description": "Koda om videor för bredare kompatibilitet med webbläsare och enheter"
|
||||
},
|
||||
@@ -1613,7 +1613,6 @@
|
||||
"not_available": "N/A",
|
||||
"not_in_any_album": "Inte i något album",
|
||||
"not_selected": "Ej vald",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Obs: Om du vill använda lagringsetiketten på tidigare uppladdade tillgångar kör du",
|
||||
"notes": "Notera",
|
||||
"nothing_here_yet": "Inget här ännu",
|
||||
"notification_permission_dialog_content": "För att aktivera notiser, gå till Inställningar och välj tillåt.",
|
||||
@@ -1815,7 +1814,7 @@
|
||||
"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_albums": "Senaste album",
|
||||
"recent_searches": "Senaste sökningar",
|
||||
"recently_added": "Nyligen tillagda",
|
||||
"recently_added_page_title": "Nyligen tillagda",
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
"add_a_title": "தலைப்பு சேர்க்கவும்",
|
||||
"add_action": "செயலைச் சேர்",
|
||||
"add_action_description": "செய்ய வேண்டிய செயலைச் சேர்க்க கிளிக் செய்யவும்",
|
||||
"add_assets": "ஊடங்களை சேர்க்கவும்",
|
||||
"add_birthday": "பிறந்தநாளைச் சேர்க்கவும்",
|
||||
"add_endpoint": "சேவை நிரலை சேர்",
|
||||
"add_exclusion_pattern": "விலக்கு வடிவத்தைச் சேர்க்கவும்",
|
||||
@@ -187,6 +188,7 @@
|
||||
"machine_learning_smart_search_enabled": "ஸ்மார்ட் தேடலை இயக்கு",
|
||||
"machine_learning_smart_search_enabled_description": "முடக்கப்பட்டிருந்தால், ஸ்மார்ட் தேடலுக்காக படங்கள் குறியாக்கம் செய்யப்படாது.",
|
||||
"machine_learning_url_description": "இயந்திர கற்றல் சேவையகத்தின் முகவரி. ஒன்றுக்கு மேற்பட்ட முகவரி வழங்கப்பட்டால், ஒவ்வொரு சேவையகமும் ஒவ்வொன்றாக வெற்றிகரமாக பதிலளிக்கும் வரை, முதலில் இருந்து கடைசி வரை முயற்சிக்கப்படும். பதிலளிக்காத சேவையகங்கள் மீண்டும் ஆன்லைனில் வரும் வரை தற்காலிகமாகப் புறக்கணிக்கப்படும்.",
|
||||
"maintenance_delete_backup": "காப்புக்களை நீக்கவும்",
|
||||
"maintenance_settings": "பராமரிப்பு",
|
||||
"maintenance_settings_description": "இம்மிச்சை பராமரிப்பு முறையில் வைக்கவும்.",
|
||||
"maintenance_start": "பராமரிப்பு பயன்முறையைத் தொடங்கு",
|
||||
@@ -1480,7 +1482,6 @@
|
||||
"not_available": "இதற்கில்லை",
|
||||
"not_in_any_album": "எந்த ஆல்பத்திலும் இல்லை",
|
||||
"not_selected": "தேர்ந்தெடுக்கப்படவில்லை",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "குறிப்பு: முன்னர் பதிவேற்றப்பட்ட சொத்துக்களுக்கு சேமிப்பக லேபிளை பயன்படுத்த, இயக்கவும்",
|
||||
"notes": "குறிப்புகள்",
|
||||
"nothing_here_yet": "இன்னும் இங்கே எதுவும் இல்லை",
|
||||
"notification_permission_dialog_content": "அறிவிப்புகளை இயக்க, அமைப்புகளுக்குச் சென்று இசைவு என்பதைத் தேர்ந்தெடுக்கவும்.",
|
||||
@@ -1676,7 +1677,7 @@
|
||||
"reassigned_assets_to_new_person": "புதிய நபருக்கு {count, plural, one {# சொத்து} other {# சொத்துகள்}} மீண்டும் ஒதுக்கப்பட்டது",
|
||||
"reassing_hint": "தேர்ந்தெடுக்கப்பட்ட சொத்துக்களை ஏற்கனவே இருக்கும் நபருக்கு ஒதுக்குங்கள்",
|
||||
"recent": "அண்மைக் கால",
|
||||
"recent-albums": "அண்மைக் கால ஆல்பங்கள்",
|
||||
"recent_albums": "அண்மைக் கால ஆல்பங்கள்",
|
||||
"recent_searches": "அண்மைக் கால தேடல்கள்",
|
||||
"recently_added": "அண்மைக் காலத்தில் சேர்க்கப்பட்டது",
|
||||
"recently_added_page_title": "அண்மைக் காலத்தில் சேர்க்கப்பட்டது",
|
||||
|
||||
@@ -895,7 +895,6 @@
|
||||
"no_results_description": "పర్యాయపదం లేదా మరింత సాధారణ కీవర్డ్ని ప్రయత్నించండి",
|
||||
"no_shared_albums_message": "మీ నెట్వర్క్లోని వ్యక్తులతో ఫోటోలు మరియు వీడియోలను భాగస్వామ్యం చేయడానికి ఆల్బమ్ను సృష్టించండి",
|
||||
"not_in_any_album": "ఏ ఆల్బమ్లోనూ లేదు",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "గమనిక: గతంలో అప్లోడ్ చేసిన ఆస్తులకు నిల్వ లేబుల్ను వర్తింపజేయడానికి,",
|
||||
"notes": "గమనికలు",
|
||||
"notification_toggle_setting_description": "ఇమెయిల్ నోటిఫికేషన్లను ప్రారంభించండి",
|
||||
"notifications": "నోటిఫికేషన్లు",
|
||||
@@ -1021,7 +1020,7 @@
|
||||
"reassign": "తిరిగి కేటాయించు",
|
||||
"reassing_hint": "ఎంచుకున్న ఆస్తులను ఇప్పటికే ఉన్న వ్యక్తికి కేటాయించండి",
|
||||
"recent": "ఇటీవలి",
|
||||
"recent-albums": "ఇటీవలి ఆల్బమ్లు",
|
||||
"recent_albums": "ఇటీవలి ఆల్బమ్లు",
|
||||
"recent_searches": "ఇటీవలి శోధనలు",
|
||||
"refresh": "రిఫ్రెష్ చేయి",
|
||||
"refresh_encoded_videos": "ఎన్కోడ్ చేసిన వీడియోలను రిఫ్రెష్ చేయండి",
|
||||
|
||||
99
i18n/th.json
99
i18n/th.json
@@ -6,8 +6,8 @@
|
||||
"action": "ดำเนินการ",
|
||||
"action_common_update": "อัปเดต",
|
||||
"actions": "การดำเนินการ",
|
||||
"active": "ใช้งานอยู่",
|
||||
"active_count": "ใช้งานอยู่: {count}",
|
||||
"active": "กำลังทำงาน",
|
||||
"active_count": "กำลังทำงาน: {count}",
|
||||
"activity": "กิจกรรม",
|
||||
"activity_changed": "กิจกรรม{enabled, select, true {เปิด} other {ปิด}}อยู่",
|
||||
"add": "เพิ่ม",
|
||||
@@ -16,6 +16,7 @@
|
||||
"add_a_name": "เพิ่มชื่อ",
|
||||
"add_a_title": "เพิ่มหัวข้อ",
|
||||
"add_action": "เพิ่มการดำเนินการ",
|
||||
"add_assets": "เพิ่มสื่อ",
|
||||
"add_birthday": "เพิ่มวันเกิด",
|
||||
"add_endpoint": "เพิ่มปลายทาง",
|
||||
"add_exclusion_pattern": "เพิ่มข้อยกเว้น",
|
||||
@@ -26,7 +27,7 @@
|
||||
"add_path": "เพิ่มพาทที่ตั้ง",
|
||||
"add_photos": "เพิ่มรูปภาพ",
|
||||
"add_tag": "เพิ่มแท็ก",
|
||||
"add_to": "เพิ่มไปยัง …",
|
||||
"add_to": "เพิ่มไปยัง…",
|
||||
"add_to_album": "เพิ่มไปยังอัลบั้ม",
|
||||
"add_to_album_bottom_sheet_added": "เพิ่มไปยัง {album} แล้ว",
|
||||
"add_to_album_bottom_sheet_already_exists": "อยู่ใน {album} อยู่แล้ว",
|
||||
@@ -53,7 +54,7 @@
|
||||
"backup_database_enable_description": "เปิดใช้งานสำรองฐานข้อมูล",
|
||||
"backup_keep_last_amount": "จำนวนข้อมูลสำรองก่อนหน้าที่ต้องเก็บไว้",
|
||||
"backup_onboarding_1_description": "สำเนานอกสถานที่บนคลาวด์หรือที่ตั้งอื่น",
|
||||
"backup_onboarding_2_description": "สำเนาที่อยู่บนเครื่องต่างกัน ซึ่งรวมถึงไฟล์หลักและไฟล์สำรองบนเครื่อง",
|
||||
"backup_onboarding_2_description": "สำเนาที่อยู่บนอุปกรณ์ที่ต่างกัน ซึ่งรวมถึงไฟล์หลักและไฟล์สำรองบนเครื่อง",
|
||||
"backup_onboarding_3_description": "จำนวนชุดของข้อมูลทั้งหมด รวมถึงไฟล์เดิม ซึ่งรวมถึง 1 ชุดที่ตั้งอยู่คนละถิ่น และสำเนาบนเครื่อง 2 ชุด",
|
||||
"backup_onboarding_description": "แนะนำให้ใช้ <backblaze-link>การสำรองข้อมูลแบบ 3-2-1</backblaze-link>เพื่อปกป้องข้อมูล ควรเก็บสำเนาของรูปภาพ/วิดีโอที่อัปโหลดและฐานข้อมูลของ Immich เพื่อสำรองข้อมูลได้อย่างทั่วถึง",
|
||||
"backup_onboarding_footer": "สำหรับข้อมูลเพิ่มเติมที่เกี่ยวกับการสำรองข้อมูลของ Immich โปรดดูที่ <link>documentation</link>",
|
||||
@@ -64,7 +65,7 @@
|
||||
"cleared_jobs": "เคลียร์งานสำหรับ: {job}",
|
||||
"config_set_by_file": "การตั้งค่าคอนฟิกกำลังถูกกำหนดโดยไฟล์คอนฟิก",
|
||||
"confirm_delete_library": "คุณแน่ใจว่าอยากลบคลังภาพ {library} หรือไม่?",
|
||||
"confirm_delete_library_assets": "คุณแน่ใจว่าอยากลบคลังภาพนี้หรือไม่? สี่อทั้งหมด {count, plural, one {# สื่อ} other {all # สื่อ}} สี่อในคลังจะถูกลบออกจาก Immich โดยถาวร ไฟล์จะยังคงอยู่บนดิสก์",
|
||||
"confirm_delete_library_assets": "คุณแน่ใจว่าต้องการลบคลังภาพนี้หรือไม่? สี่อทั้งหมด {count, plural, one {# สื่อ} other {all # สื่อ}} สี่อในคลังจะถูกลบออกจาก Immich โดยถาวร ไฟล์จะยังคงอยู่บนดิสก์",
|
||||
"confirm_email_below": "โปรดยืนยัน โดยการพิมพ์ \"{email}\" ข้างล่าง",
|
||||
"confirm_reprocess_all_faces": "คุณแน่ใจว่าคุณต้องการประมวลผลใบหน้าทั้งหมดใหม่? ชื่อคนจะถูกลบไปด้วย",
|
||||
"confirm_user_password_reset": "คุณแน่ใจว่าต้องการรีเซ็ตรหัสผ่านของ {user} หรือไม่?",
|
||||
@@ -131,6 +132,10 @@
|
||||
"logging_level_description": "เมื่อเปิดใช้งาน ใช้ระดับการบันทึกอะไร",
|
||||
"logging_settings": "การบันทึก",
|
||||
"machine_learning_availability_checks_description": "ตรวจจับและเลือกใช้เซิร์ฟเวอร์ machine learning โดยอัตโนมัติ",
|
||||
"machine_learning_availability_checks_interval": "ระยะเวลาตรวจสอบ",
|
||||
"machine_learning_availability_checks_interval_description": "ระยะเวลาเป็นมิลลิวินาทีระหว่างการตรวจสอบความพร้อมแต่ละครั้ง",
|
||||
"machine_learning_availability_checks_timeout": "คำขอหมดเวลา",
|
||||
"machine_learning_availability_checks_timeout_description": "จำนวนมิลลิวินาทีที่จะนับว่าหมดเวลาสำหรับการตรวจสอบความพร้อม",
|
||||
"machine_learning_clip_model": "โมเดล Clip",
|
||||
"machine_learning_clip_model_description": "ชื่อของโมเดล CLIP ที่ระบุ<link>ตรงนี้</link> โปรดทราบว่าจำเป็นต้องดำเนินงาน 'ค้นหาอัจฉริยะ' ใหม่สำหรับทุกรูปเมื่อเปลี่ยนโมเดล",
|
||||
"machine_learning_duplicate_detection": "ตรวจจับการซ้ำกัน",
|
||||
@@ -169,6 +174,8 @@
|
||||
"machine_learning_smart_search_enabled": "เปิดใช้งานการค้นหาอัจฉริยะ",
|
||||
"machine_learning_smart_search_enabled_description": "หากปิดใช้งาน ภาพจะไม่ถูกใช้สําหรับการค้นหาอัจฉริยะ",
|
||||
"machine_learning_url_description": "URL ของเซิร์ฟเวอร์ machine learning กรณีมี URL มากกว่าหนึ่ง URL จะทำการทดลองส่งข้อมูลเรียงไปทีละอันตามลำดับจนกว่าจะพบ URL ที่ตอบสนอง และจะเลิกส่งข้อมูลชั่วคราวในส่วนของ URL ที่ไม่ตอบสนอง",
|
||||
"maintenance_delete_backup": "ลบการสำรองข้อมูล",
|
||||
"maintenance_delete_backup_description": "ไฟล์นี้จะถูกลบและไม่สามารถย้อนกลับได้",
|
||||
"manage_concurrency": "จัดการการทำงานพร้อมกัน",
|
||||
"manage_log_settings": "จัดการการตั้งค่าจดบันทึก",
|
||||
"map_dark_style": "แบบมืด",
|
||||
@@ -193,9 +200,14 @@
|
||||
"metadata_settings": "การตั้งค่า Metadata",
|
||||
"metadata_settings_description": "จัดการการตั้งค่า Metadata",
|
||||
"migration_job": "การโยกย้าย",
|
||||
"migration_job_description": "ย้ายภาพตัวอย่างสื่อและใบหน้าไปยังโครงสร้างโฟลเดอร์ล่าสุด",
|
||||
"migration_job_description": "ย้ายภาพตัวอย่างสำหรับสื่อและใบหน้าไปยังโครงสร้างโฟลเดอร์ล่าสุด",
|
||||
"nightly_tasks_cluster_new_faces_setting": "คลัสเตอร์ใบหน้าใหม่",
|
||||
"nightly_tasks_generate_memories_setting": "สร้างความทรงจำ",
|
||||
"nightly_tasks_generate_memories_setting_description": "สร้างความทรงจำใหม่จากสื่อ",
|
||||
"nightly_tasks_missing_thumbnails_setting": "สร้างภาพขนาดย่อที่ขาดหายไป",
|
||||
"nightly_tasks_missing_thumbnails_setting_description": "เพิ่มสื่อที่ไม่มีภาพขนาดย่อไปยังคิวเพื่อสร้างภาพขนาดย่อ",
|
||||
"nightly_tasks_start_time_setting": "เวลาเริ่มต้น",
|
||||
"nightly_tasks_start_time_setting_description": "เวลาที่เซิร์ฟเวอร์จะเริ่มงานประจำคืน",
|
||||
"no_paths_added": "ไม่ได้เพิ่มพาธ",
|
||||
"no_pattern_added": "ไม่ได้เพิ่มรูปแบบ",
|
||||
"note_apply_storage_label_previous_assets": "หากต้องการใช้ Storage Label กับไฟล์ที่อัปโหลดก่อนหน้านี้ ให้รันคำสั่งนี้",
|
||||
@@ -327,7 +339,7 @@
|
||||
"transcoding_max_b_frames": "B-frames สูงสุด",
|
||||
"transcoding_max_b_frames_description": "ค่าที่สูงขึ้นจะช่วยเพิ่มประสิทธิภาพในการบีบอัด แต่จะทำให้การเข้ารหัสช้าลง อาจไม่สามารถใช้งานร่วมกับการเร่งความเร็วฮาร์ดแวร์บนอุปกรณ์เก่าได้ ค่าที่เป็น 0 จะปิดการใช้งาน B-frame ในขณะที่ค่า -1 จะตั้งค่าค่านี้โดยอัตโนมัติ",
|
||||
"transcoding_max_bitrate": "bitrate สูงสุด",
|
||||
"transcoding_max_bitrate_description": "การตั้งค่า bitrate สูงสุดจะสามารถคาดเดาขนาดไฟล์ได้มากขึ้นโดยไม่กระทบคุณภาพ สำหรับความคมชัด 720p ค่าทั่วไปคือ 2600 kbit/s สําหรับ VP9 หรือ HEVC, 4500 kbit/s สําหรับ H.264 ปิดการตั้งค่าเมี่อตั้งค่าเป็น 0",
|
||||
"transcoding_max_bitrate_description": "การตั้งค่า bitrate สูงสุดจะสามารถคาดเดาขนาดไฟล์ได้ง่ายขึ้นโดยกระทบคุณภาพเล็กน้อย ค่าทั่วไปสำหรับความคมชัด 720p คือ 2600 kbit/s สําหรับ VP9 หรือ HEVC, หรือ 4500 kbit/s สําหรับ H.264 ปิดการตั้งค่าเมี่อตั้งค่าเป็น 0 หากไม่ระบุหน่วยระบบจะถือว่าใช้หน่วย k (kbit/s) ดังนั้นค่า 5000, 5000k และ 5M (Mbit/s) ถือว่าเทียบเท่ากัน",
|
||||
"transcoding_max_keyframe_interval": "ช่วงเวลาสูงสุดระหว่างกราฟฟ์เคลื่อนไหว",
|
||||
"transcoding_max_keyframe_interval_description": "ตั้งค่าระยะห่างสูงสุดระหว่างคีย์เฟรม (keyframes) ค่าที่ต่ำลงจะทำให้ประสิทธิภาพการบีบอัดแย่ลง แต่จะช่วยปรับปรุงเวลาในการค้นหาภาพ (seek times) และอาจช่วยปรับปรุงคุณภาพในฉากที่มีการเคลื่อนไหวเร็ว ค่า 0 จะตั้งค่านี้โดยอัตโนมัติ",
|
||||
"transcoding_optimal_description": "วีดิโอมีความคมชัดสูงกว่าเป้าหมายหรืออยู่ในรูปแบบที่รับไม่ได้",
|
||||
@@ -395,7 +407,7 @@
|
||||
"advanced_settings_proxy_headers_title": "พ็อกซี่ เฮดเดอร์",
|
||||
"advanced_settings_self_signed_ssl_subtitle": "ข้ามการตรวจสอบใบรับรอง SSL จำเป็นสำหรับใบรับรองแบบ self-signed",
|
||||
"advanced_settings_self_signed_ssl_title": "อนุญาตใบรับรอง SSL แบบ self-signed",
|
||||
"advanced_settings_sync_remote_deletions_subtitle": "บหรือกู้คืนไฟล์บนอุปกรณ์นี้โดยอัตโนมัติเมื่อดำเนินการดังกล่าวผ่านเว็บ",
|
||||
"advanced_settings_sync_remote_deletions_subtitle": "ลบหรือกู้คืนไฟล์บนอุปกรณ์นี้โดยอัตโนมัติเมื่อดำเนินการดังกล่าวผ่านเว็บ",
|
||||
"advanced_settings_sync_remote_deletions_title": "ซิงก์การลบจากระยะไกล [คุณสมบัติทดลอง]",
|
||||
"advanced_settings_tile_subtitle": "ตั้งค่าผู้ใช้งานขั้นสูง",
|
||||
"advanced_settings_troubleshooting_subtitle": "เปิดฟีเจอร์เพิ่มเติมเพื่อแก้ไขปัญหา",
|
||||
@@ -403,11 +415,13 @@
|
||||
"age_months": "อายุ {months, plural, one {# เดือน} other {# เดือน}}",
|
||||
"age_year_months": "อายุ 1 ปี {months, plural, one {# เดือน} other {# เดือน}}",
|
||||
"age_years": "{years, plural, other {อายุ #}}",
|
||||
"album": "อัลบั้ม",
|
||||
"album_added": "เพิ่มอัลบั้มแล้ว",
|
||||
"album_added_notification_setting_description": "แจ้งเตือนอีเมลเมื่อคุณถูกเพิ่มไปในอัลบั้มที่แชร์กัน",
|
||||
"album_cover_updated": "อัพเดทหน้าปกอัลบั้มแล้ว",
|
||||
"album_delete_confirmation": "คุณแน่ใจที่จะลบอัลบั้ม {album} นี้ ?",
|
||||
"album_delete_confirmation_description": "หากแชร์อัลบั้มนี้ ผู้ใช้รายอื่นจะไม่สามารถเข้าถึงได้อีก",
|
||||
"album_deleted": "ลบอัลบั้มแล้ว",
|
||||
"album_info_card_backup_album_excluded": "ถูกยกเว้น",
|
||||
"album_info_card_backup_album_included": "รวม",
|
||||
"album_info_updated": "อัปเดทข้อมูลอัลบั้มแล้ว",
|
||||
@@ -417,9 +431,13 @@
|
||||
"album_options": "ตัวเลือกอัลบั้ม",
|
||||
"album_remove_user": "ลบผู้ใช้ ?",
|
||||
"album_remove_user_confirmation": "คุณต้องการที่จะลบผู้ใช้ {user} ?",
|
||||
"album_search_not_found": "ไม่พบอัลบั้มที่ตรงตามการค้นหาของคุณ",
|
||||
"album_selected": "เลือกอัลบั้มแล้ว",
|
||||
"album_share_no_users": "ดูเหมือนว่าคุณได้แชร์อัลบั้มนี้กับผู้ใช้ทั้งหมดแล้ว",
|
||||
"album_summary": "สรุปอัลบั้ม",
|
||||
"album_updated": "อัปเดทอัลบั้มแล้ว",
|
||||
"album_updated_setting_description": "แจ้งเตือนอีเมลเมื่ออัลบั้มที่แชร์กันมีสื่อใหม่",
|
||||
"album_upload_assets": "อัปโหลดสื่อจากคอมพิวเตอร์เพื่อเพิ่มไปยังอัลบั้ม",
|
||||
"album_user_left": "ออกจาก {album}",
|
||||
"album_user_removed": "ลบผู้ใช้ {user} แล้ว",
|
||||
"album_viewer_appbar_delete_confirm": "คุณแน่ใจว่าอยากลบอัลบั้มนี้จากบัญชีคุณหรือไม่",
|
||||
@@ -436,15 +454,20 @@
|
||||
"albums_default_sort_order": "การจัดเรียงอัลบั้มเริ่มต้น",
|
||||
"albums_default_sort_order_description": "การจัดเรียงแอสเซ็ตเริ่มต้นเมื่อสร้างอัลบั้มใหม่",
|
||||
"albums_feature_description": "กลุ่มของแอสเซ็ตที่สามารถส่งให้ผู้ใช้อื่นได้",
|
||||
"albums_on_device_count": "อัลบั้มบนอุปกรณ์ ({count})",
|
||||
"albums_selected": "{count, plural, one {เลือก # อัลบั้ม} other {เลือก # อัลบั้ม}}",
|
||||
"all": "ทั้งหมด",
|
||||
"all_albums": "อัลบั้มทั้งหมด",
|
||||
"all_people": "ทุกคน",
|
||||
"all_photos": "รูปภาพทั้งหมด",
|
||||
"all_videos": "วิดีโอทั้งหมด",
|
||||
"allow_dark_mode": "อนุญาตโหมดมืด",
|
||||
"allow_edits": "อนุญาตให้แก้ไขได้",
|
||||
"allow_public_user_to_download": "อนุญาตให้ผู้ใช้สาธารณะดาวน์โหลดได้",
|
||||
"allow_public_user_to_upload": "อนุญาตให้ผู้ใช้สาธารณะอัปโหลดได้",
|
||||
"allowed": "อนุญาต",
|
||||
"alt_text_qr_code": "รูปภาพ QR code",
|
||||
"always_keep": "เก็บเสมอ",
|
||||
"always_keep_photos_hint": "\"เพิ่มพื้นที่ว่าง\" จะเก็บรูปภาพทั้งหมดบนอุปกรณ์นี้",
|
||||
"always_keep_videos_hint": "\"เพิ่มพื้นที่ว่าง\" จะเก็บวิดีโอทั้งหมดบนอุปกรณ์นี้",
|
||||
"anti_clockwise": "ทวนเข็มนาฬิกา",
|
||||
@@ -455,9 +478,13 @@
|
||||
"app_bar_signout_dialog_content": "คุณแน่ใจว่าอยากออกจากระบบ",
|
||||
"app_bar_signout_dialog_ok": "ใช่",
|
||||
"app_bar_signout_dialog_title": "ออกจากระบบ",
|
||||
"app_download_links": "ลิงก์ดาวน์โหลดแอป",
|
||||
"app_settings": "การตั้งค่าแอป",
|
||||
"app_stores": "ร้านค้าแอป",
|
||||
"app_update_available": "มีอัปเดตแอป",
|
||||
"appears_in": "อยู่ใน",
|
||||
"archive": "เก็บถาวร",
|
||||
"archive_action_prompt": "เพิ่ม {count} รายการไปยังเก็บถาวรแล้ว",
|
||||
"archive_or_unarchive_photo": "เก็บ/ไม่เก็บภาพถาวร",
|
||||
"archive_page_no_archived_assets": "ไม่พบทรัพยากรในที่เก็บถาวร",
|
||||
"archive_page_title": "เก็บถาวร ({count})",
|
||||
@@ -471,6 +498,7 @@
|
||||
"asset_action_share_err_offline": "ไม่สามารถดึงข้อมูลทรัพยากรออฟไลน์ กำลังข้าม",
|
||||
"asset_added_to_album": "เพิ่มไปยังอัลบั้มแล้ว",
|
||||
"asset_adding_to_album": "กำลังเพิ่มไปยังอัลบั้ม…",
|
||||
"asset_created": "สร้างสื่อแล้ว",
|
||||
"asset_description_updated": "อัปเดตรายละเอียดสำเร็จ",
|
||||
"asset_filename_is_offline": "สื่อ {filename} ออฟไลน์อยู่",
|
||||
"asset_has_unassigned_faces": "สื่อไม่ได้ระบุใบหน้า",
|
||||
@@ -483,28 +511,35 @@
|
||||
"asset_list_layout_sub_title": "การจัดวาง",
|
||||
"asset_list_settings_subtitle": "ตั้งค่าการจัดวางตารางรูปภาพ",
|
||||
"asset_list_settings_title": "ตารางรูปภาพ",
|
||||
"asset_not_found_on_device_android": "ไม่พบสื่อบนอุปกรณ์",
|
||||
"asset_not_found_on_device_ios": "ไม่พบสื่อบนอุปกรณ์ หากคุณใช้ iCloud สื่ออาจจะเข้าถึงไม่ได้เนื่องจาก iCloud เก็บไฟล์ที่ไม่ดีไว้",
|
||||
"asset_not_found_on_icloud": "ไม่พบสื่อบน iCloud สื่ออาจจะเข้าถึงไม่ได้เนื่องจาก iCloud เก็บไฟล์ที่ไม่ดีไว้",
|
||||
"asset_offline": "สื่อออฟไลน์",
|
||||
"asset_offline_description": "ไม่พบทรัพยากรภายนอกนี้ในดิสก์อีกต่อไป โปรดติดต่อผู้ดูแลระบบ Immich ของคุณเพื่อขอความช่วยเหลือ",
|
||||
"asset_restored_successfully": "กู้คืนสื่อสำเร็จ",
|
||||
"asset_skipped": "ข้ามแล้ว",
|
||||
"asset_skipped_in_trash": "ในถังขยะ",
|
||||
"asset_trashed": "ย้ายสื่อไปยังถังขยะแล้ว",
|
||||
"asset_troubleshoot": "แก้ปัญหาสื่อ",
|
||||
"asset_uploaded": "อัปโหลดแล้ว",
|
||||
"asset_uploading": "กำลังอัปโหลด…",
|
||||
"asset_viewer_settings_subtitle": "ตั้งค่าการแสดงแกลเลอรี",
|
||||
"asset_viewer_settings_title": "ตัวดูทรัพยากร",
|
||||
"assets": "สื่อ",
|
||||
"assets_added_count": "เพิ่ม {count, plural, one{# สื่อ} other {# สื่อ}} แล้ว",
|
||||
"assets_added_count": "เพิ่มสื่อ {count, plural, one{# รายการ} other {# รายการ}}แล้ว",
|
||||
"assets_added_to_album_count": "เพิ่ม {count, plural, one {# asset} other {# assets}} ไปยังอัลบั้ม",
|
||||
"assets_added_to_albums_count": "เพิ่มสื่อ {assetTotal, plural, one {# รายการ} other {# รายการ}} ไปยังอัลบั้ม {albumTotal, plural, one {# รายการ} other {# รายการ}}แล้ว",
|
||||
"assets_cannot_be_added_to_album_count": "ไม่สามารถเพิ่ม {count, plural, one {สื่อ} other {สื่อ}} ไปยังอัลบั้ม",
|
||||
"assets_count": "{count, plural, one { สื่อ} other { สื่อ}}",
|
||||
"assets_cannot_be_added_to_albums": "ไม่สามารถเพิ่ม{count, plural, one {สื่อ} other {สื่อ}}ไปยังอัลบั้มใด ๆ ได้",
|
||||
"assets_count": "สื่อ {count, plural, one {# รายการ} other {# รายการ}}",
|
||||
"assets_deleted_permanently": "{count} สื่อถูกลบอย่างถาวร",
|
||||
"assets_deleted_permanently_from_server": "ลบ {count} สื่อออกจาก Immich อย่างถาวร",
|
||||
"assets_deleted_permanently_from_server": "ลบสื่อ {count} รายการออกจากเซิร์ฟเวอร์ Immich อย่างถาวรแล้ว",
|
||||
"assets_downloaded_failed": "ดาวน์โหลด {count, plural, one {ไฟล์} other {ไฟล์}} ไม่สำเร็จ - {error}",
|
||||
"assets_downloaded_successfully": "ดาวน์โหลด {count, plural, one {ไฟล์} other {ไฟล์}} สำเร็จ",
|
||||
"assets_moved_to_trash_count": "ย้าย {count, plural, one {# asset} other {# assets}} ไปยังถังขยะแล้ว",
|
||||
"assets_permanently_deleted_count": "ลบ {count, plural, one {# asset} other {# assets}} ทิ้งถาวร",
|
||||
"assets_removed_count": "{count, plural, one {# asset} other {# assets}} ถูกลบแล้ว",
|
||||
"assets_removed_permanently_from_device": "นำ {count} สื่อออกจากอุปกรณ์อย่างถาวร",
|
||||
"assets_removed_permanently_from_device": "ลบสื่อ {count} รายการออกจากอุปกรณ์ของคุณอย่างถาวรแล้ว",
|
||||
"assets_restore_confirmation": "คุณแน่ใจหรือไม่ว่าต้องการกู้คืนสื่อที่ทิ้งทั้งหมด? คุณไม่สามารถย้อนกลับการดำเนินการนี้ได้! โปรดทราบว่าสื่อออฟไลน์ใดๆ ไม่สามารถกู้คืนได้ด้วยวิธีนี้",
|
||||
"assets_restored_count": "{count, plural, one {# asset} other {# assets}} คืนค่า",
|
||||
"assets_restored_successfully": "กู้คืน {count} สื่อสำเร็จ",
|
||||
@@ -512,14 +547,17 @@
|
||||
"assets_trashed_count": "{count, plural, one {# asset} other {# assets}} ถูกลบ",
|
||||
"assets_trashed_from_server": "ย้าย {count} สื่อจาก Immich ไปยังถังขยะ",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} อยู่ในอัลบั้มอยู่แล้ว",
|
||||
"assets_were_part_of_albums_count": "{count, plural, one {สื่อ} other {สื่อ}}เป็นส่วนหนึ่งของอัลบั้มอยู่แล้ว",
|
||||
"authorized_devices": "อุปกรณ์ที่ได้รับอนุญาต",
|
||||
"automatic_endpoint_switching_subtitle": "เชื่อมต่อด้วย LAN ภายในวง Wi-Fi ที่ระบุไว้ และเชื่อมต่อด้วยวิธีอื่นเมื่ออยู่นอก Wi-Fi ที่ระบุไว้",
|
||||
"automatic_endpoint_switching_title": "สลับ URL อัตโนมัติ",
|
||||
"autoplay_slideshow": "เล่นสไลด์โชว์",
|
||||
"back": "กลับ",
|
||||
"back_close_deselect": "ย้อนกลับ, ปิด, หรือยกเลิกการเลือก",
|
||||
"background_backup_running_error": "การสำรองข้อมูลเบื้องหลังทำงานอยู่ ไม่สามารถเริ่มสำรองข้อมูลด้วยตนเองได้",
|
||||
"background_location_permission": "การอนุญาตระบุตำแหน่งพื้นหลัง",
|
||||
"background_location_permission_content": "เพื่อที่จะสลับการเชื่อมต่อขณะที่รันในพื้นหลัง Immich ต้องรู้ตำแหน่งที่แม่ยำตลอดเวลา เพื่อจะสามารถอ่านชื่อ Wi-Fi",
|
||||
"background_options": "ตัวเลือกการทำงานเบื้องหลัง",
|
||||
"backup": "สำรองข้อมูล",
|
||||
"backup_album_selection_page_albums_device": "อัลบั้มบนเครื่อง ({count})",
|
||||
"backup_album_selection_page_albums_tap": "กดเพื่อรวม กดสองครั้งเพื่อยกเว้น",
|
||||
@@ -581,8 +619,11 @@
|
||||
"backup_manual_in_progress": "อัปโหลดกำลังดำเนินการอยู่ โปรดลองใหม่ในสักพัก",
|
||||
"backup_manual_success": "สำเร็จ",
|
||||
"backup_manual_title": "สถานะอัพโหลด",
|
||||
"backup_options": "ตัวเลือกการสำรองข้อมูล",
|
||||
"backup_options_page_title": "ตัวเลือกการสำรองข้อมูล",
|
||||
"backup_setting_subtitle": "ตั้งค่าการอัพโหลดในฉากหน้า และพื้นหลัง",
|
||||
"backup_settings_subtitle": "จัดการการตั้งค่าอัปโหลด",
|
||||
"backup_upload_details_page_more_details": "แตะเพื่อดูข้อมูลเพิ่มเติม",
|
||||
"backward": "กลับหลัง",
|
||||
"biometric_auth_enabled": "การพิสูจน์อัตลักษณ์เพื่อยืนยันตัวบุคคลถูกเปิด",
|
||||
"biometric_locked_out": "การพิสูจน์อัตลักษณ์เพื่อยืนยันตัวบุคคลถูกล็อค",
|
||||
@@ -618,6 +659,7 @@
|
||||
"cancel": "ยกเลิก",
|
||||
"cancel_search": "ยกเลิกการค้นหา",
|
||||
"canceled": "ยกเลิก",
|
||||
"canceling": "กำลังยกเลิก",
|
||||
"cannot_merge_people": "ไม่สามารถรวมกลุ่มคนได้",
|
||||
"cannot_undo_this_action": "การกระทำนี้ไม่สามารถย้อนกลับได้!",
|
||||
"cannot_update_the_description": "ไม่สามารถอัพเดทรายละเอียดได้",
|
||||
@@ -634,18 +676,31 @@
|
||||
"change_password_description": "การเข้าสู่ระบบครั้งแรก จำเป็นจต้องเปลี่ยนรหัสผ่านของคุณเพื่อความปลอดภัย โปรดป้อนรหัสผ่านใหม่ด้านล่าง",
|
||||
"change_password_form_confirm_password": "ยืนยันรหัสผ่าน",
|
||||
"change_password_form_description": "สวัสดี {name},\n\nครั้งนี้อาจจะเป็นครั้งแรกที่คุณเข้าสู่ระบบ หรือมีคำขอเพื่อที่จะเปลี่ยนรหัสผ่านของคุI กรุณาเพิ่มรหัสผ่านใหม่ข้างล่าง",
|
||||
"change_password_form_log_out": "ออกจากระบบอุปกรณ์อื่นทั้งหมด",
|
||||
"change_password_form_log_out_description": "แนะนำให้ออกจากระบบอุปกรณ์อื่นทั้งหมดด้วย",
|
||||
"change_password_form_new_password": "รหัสผ่านใหม่",
|
||||
"change_password_form_password_mismatch": "รหัสผ่านไม่ตรงกัน",
|
||||
"change_password_form_reenter_new_password": "กรอกรหัสผ่านใหม่",
|
||||
"change_pin_code": "เปลี่ยนรหัสประจำตัว (PIN)",
|
||||
"change_your_password": "เปลี่ยนรหัสผ่านของคุณ",
|
||||
"changed_visibility_successfully": "เปลี่ยนการมองเห็นเรียบร้อยแล้ว",
|
||||
"charging": "กำลังชาร์จ",
|
||||
"charging_requirement_mobile_backup": "การสำรองข้อมูลในเบื้องหลังจะทำงานเฉพาะเมื่ออุปกรณ์กำลังชาร์จอยู่",
|
||||
"check_corrupt_asset_backup": "ตรวจสอบสำรองสื่อที่ผิดปกติ",
|
||||
"check_corrupt_asset_backup_button": "ตรวจสอบ",
|
||||
"check_corrupt_asset_backup_description": "ตรวจสอบเมื่อเชื่อมต่อ Wi-Fi และสื่อทั้งหมดถูกสำรองข้อมูลแล้วเท่านั้น การตรวจสอบอาจใช้เวลาหลายนาที",
|
||||
"check_logs": "ตรวจสอบบันทึก",
|
||||
"choose_matching_people_to_merge": "เลือกคนที่ตรงกันเพื่อรวมเข้าด้วยกัน",
|
||||
"city": "เมือง",
|
||||
"cleanup_confirm_description": "Immich พบสื่อ {count} รายการ (สร้างขึ้นก่อน {date}) ที่ถูกสำรองข้อมูลบนเซิร์ฟเวอร์อย่างปลอดภัยแล้ว ลบสำเนาต้นทางจากอุปกรณ์นี้หรือไม่?",
|
||||
"cleanup_confirm_prompt_title": "ลบออกจากอุปกรณ์นี้หรือไม่?",
|
||||
"cleanup_deleted_assets": "ย้ายสื่อ {count} รายการไปยังถังขยะของอุปกรณ์แล้ว",
|
||||
"cleanup_deleting": "กำลังย้ายไปถังขยะ...",
|
||||
"cleanup_found_assets": "พบสื่อ {count} รายการที่สำรองข้อมูลแล้ว",
|
||||
"cleanup_found_assets_with_size": "พบสื่อ {count} รายการที่สำรองข้อมูลแล้ว ({size})",
|
||||
"cleanup_icloud_shared_albums_excluded": "อัลบั้มที่แชร์บน iCloud ไม่นับรวมในการค้นหา",
|
||||
"cleanup_no_assets_found": "ไม่พบสื่อที่ตรงตามเงื่อนไขด้านบน \"เพิ่มพื้นที่ว่าง\" สามารถลบได้เฉพาะสื่อที่สำรองข้อมูลบนเซิร์ฟเวอร์เรียบร้อยแล้วเท่านั้น",
|
||||
"cleanup_preview_title": "สื่อที่จะลบ ({count})",
|
||||
"clear": "ล้าง",
|
||||
"clear_all": "ล้างทั้งหมด",
|
||||
"clear_all_recent_searches": "ล้างประวัติการค้นหา",
|
||||
@@ -788,7 +843,7 @@
|
||||
"display_original_photos_setting_description": "การตั้งค่าแสดงผลรูปภาพต้นฉบับ เมื่อเปิดรูปภาพ การตั้งค่านี้อาจจะทำให้การแสดงภาพได้ช้าลง",
|
||||
"do_not_show_again": "ไม่แสดงข้อความนี้อีก",
|
||||
"documentation": "เอกสาร",
|
||||
"done": "ดำเนินการสำเร็จ",
|
||||
"done": "เสร็จสิ้น",
|
||||
"download": "ดาวน์โหลด",
|
||||
"download_action_prompt": "กำลังดาวน์โหลด {count} ชิ้น",
|
||||
"download_canceled": "การดาวน์โหลดยกเลิก",
|
||||
@@ -1009,7 +1064,7 @@
|
||||
"export_as_json": "ส่งออกเป็นไฟล์ JSON",
|
||||
"extension": "ส่วนต่อขยาย",
|
||||
"external": "ภายนอก",
|
||||
"external_libraries": "ภายนอกคลังภาพ",
|
||||
"external_libraries": "คลังภาพภายนอก",
|
||||
"external_network": "การเชื่อมต่อภายนอก",
|
||||
"external_network_sheet_info": "เมื่อไม่ได้เชื่อมต่อ Wi-Fi ที่เลือกไว้ แอพจะเชื่อมต่อเซิร์ฟเวอร์ผ่าน URL ด้านล่างตามลำดับ",
|
||||
"face_unassigned": "ไม่กำหนดมอบหมาย",
|
||||
@@ -1140,6 +1195,7 @@
|
||||
"keep": "เก็บ",
|
||||
"keep_all": "เก็บทั้งหมด",
|
||||
"keep_description": "เลือกสิ่งที่จะเก็บไว้บนอุปกรณ์ของคุณขณะเพิ่มพื้นที่ว่าง",
|
||||
"keep_on_device_hint": "เลือกรายการที่จะเก็บไว้บนอุปกรณ์นี้",
|
||||
"keep_this_delete_others": "เก็บสิ่งนี้ไว้ ลบอันอื่นออก",
|
||||
"kept_this_deleted_others": "เก็บเนื้อหานี้และลบ {count, plural, one {# Asset} other {# Asset}}",
|
||||
"keyboard_shortcuts": "ปุ่มพิมพ์ลัด",
|
||||
@@ -1213,7 +1269,7 @@
|
||||
"login_password_changed_error": "เกิดข้อผิดพลาดขณะเปลี่ยนรหัสผ่าน",
|
||||
"login_password_changed_success": "เปลี่ยนรหัสผ่านสำเร็จ",
|
||||
"logout_all_device_confirmation": "คุณต้องการออกจากระบบทุกอุปกรณ์ ใช่หรือไม่ ?",
|
||||
"logout_this_device_confirmation": "คุณต้องการออกจากระบบใช่หรือไม่ ?",
|
||||
"logout_this_device_confirmation": "คุณต้องการออกจากระบบบนอุปกรณ์นี้หรือไม่?",
|
||||
"longitude": "ลองจิจูด",
|
||||
"look": "ดู",
|
||||
"loop_videos": "วนวิดีโอ",
|
||||
@@ -1315,7 +1371,6 @@
|
||||
"no_results_description": "ลองใช้คำพ้องหรือคำหลักที่กว้างกว่านี้",
|
||||
"no_shared_albums_message": "สร้างอัลบั้มเพื่อแชร์รูปภาพและวิดีโอกับคนในเครือข่ายของคุณ",
|
||||
"not_in_any_album": "ไม่อยู่ในอัลบั้มใด ๆ",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "หมายเหตุ: หากต้องการใช้ป้ายกำกับพื้นที่เก็บข้อมูลกับเนื้อหาที่อัปโหลดก่อนหน้านี้ ให้เรียกใช้",
|
||||
"notes": "หมายเหตุ",
|
||||
"notification_permission_dialog_content": "เพื่อเปิดการแจ้งเตือน เข้าตั้งค่าแล้วกดอนุญาต",
|
||||
"notification_permission_list_tile_content": "อนุญาตการแจ้งเตือน",
|
||||
@@ -1328,6 +1383,7 @@
|
||||
"offline": "ออฟไลน์",
|
||||
"ok": "ตกลง",
|
||||
"oldest_first": "เรียงเก่าสุดก่อน",
|
||||
"on_this_device": "บนอุปกรณ์นี้",
|
||||
"onboarding": "การเริ่มต้นใช้งาน",
|
||||
"onboarding_privacy_description": "ฟีเจอร์ (ตัวเลือก) ต่อไปนี้ต้องอาศัยบริการภายนอก และสามารถปิดใช้งานได้ตลอดเวลาในการตั้งค่าการ",
|
||||
"onboarding_theme_description": "เลือกธีมสี คุณสามารถเปลี่ยนแปลงได้ในภายหลังในการตั้งค่าของคุณ",
|
||||
@@ -1395,7 +1451,8 @@
|
||||
"permission_onboarding_permission_limited": "สิทธ์จำกัด เพื่อให้ Immich สำรองข้อมูลและจัดการคลังภาพได้ ตั้งค่าสิทธิเข้าถึงรูปภาพและวิดีโอ",
|
||||
"permission_onboarding_request": "Immich จำเป็นจะต้องได้รับสิทธิ์ดูรูปภาพและวิดีโอ",
|
||||
"person": "บุคคล",
|
||||
"person_birthdate": "เกิดวัน{date}",
|
||||
"person_age_years": "อายุ {years, plural, other {# ปี}}",
|
||||
"person_birthdate": "เกิดเมื่อ {date}",
|
||||
"photo_shared_all_users": "ดูเหมือนว่าคุณได้แชร์รูปภาพของคุณกับผู้ใช้ทั้งหมด หรือคุณไม่มีผู้ใช้ใดที่จะแชร์ด้วย",
|
||||
"photos": "รูปภาพ",
|
||||
"photos_and_videos": "รูปภาพ และ วิดีโอ",
|
||||
@@ -1469,7 +1526,7 @@
|
||||
"reassigned_assets_to_new_person": "มอบหมาย {count, plural, one {# สื่อ} other {# สื่อ}} ให้กับบุคคลใหม่",
|
||||
"reassing_hint": "มอบหมายสื่อที่เลือกให้กับบุคคลที่มีอยู่แล้ว",
|
||||
"recent": "ล่าสุด",
|
||||
"recent-albums": "อัลบั้มล่าสุด",
|
||||
"recent_albums": "อัลบั้มล่าสุด",
|
||||
"recent_searches": "การค้นหาล่าสุด",
|
||||
"recently_added_page_title": "เพิ่มล่าสุด",
|
||||
"refresh": "รีเฟรช",
|
||||
@@ -1603,8 +1660,8 @@
|
||||
"server_endpoint": "ปลายทางเซิร์ฟเวอร์",
|
||||
"server_info_box_app_version": "เวอร์ชันแอพ",
|
||||
"server_info_box_server_url": "URL เซิร์ฟเวอร์",
|
||||
"server_offline": "Server ออฟไลน์",
|
||||
"server_online": "Server ออนไลน์",
|
||||
"server_offline": "เซิร์ฟเวอร์ออฟไลน์",
|
||||
"server_online": "เซิร์ฟเวอร์ออนไลน์",
|
||||
"server_privacy": "ความเป็นส่วนตัวเซิร์ฟเวอร์",
|
||||
"server_stats": "สถิติเซิร์ฟเวอร์",
|
||||
"server_version": "เวอร์ชันของเซิร์ฟเวอร์",
|
||||
@@ -1631,7 +1688,7 @@
|
||||
"setting_notifications_single_progress_subtitle": "ข้อมูลความคืบหน้าการอัปโหลดโดยละเอียดต่อทรัพยากร",
|
||||
"setting_notifications_single_progress_title": "แสดงรายละเอียดสถานะการสำรองข้อมูลในเบื้องหลัง",
|
||||
"setting_notifications_subtitle": "ตั้งค่าการแจ้งเตือน",
|
||||
"setting_notifications_total_progress_subtitle": "ความคืบหน้าการอัปโหลดโดยรวม (เสร็จสิ้น/ทรัพยากรทั้งหมด)",
|
||||
"setting_notifications_total_progress_subtitle": "ความคืบหน้าการอัปโหลดโดยรวม (เสร็จสิ้น/สื่อทั้งหมด)",
|
||||
"setting_notifications_total_progress_title": "แสดงสถานะการสำรองข้อมูลในเบื้องหลังทั้งหมด",
|
||||
"setting_video_viewer_looping_title": "วนลูป",
|
||||
"settings": "ตั้งค่า",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user